From fd040377f0d0169bcc8ff68969096134dff50bbf Mon Sep 17 00:00:00 2001 From: Sylvain Baubeau Date: Thu, 10 Dec 2020 11:38:42 +0100 Subject: [PATCH] Move alerts and workflows API to graffiti --- .mk/api.mk | 3 + .mk/bindata.mk | 4 + analyzer/server.go | 97 +- analyzer/server_easyjson.go | 116 +- api/server/capture.go | 8 +- api/server/edgerule.go | 9 +- api/server/noderule.go | 9 +- api/server/packet_injector_common.go | 9 +- api/server/workflow.go | 124 - api/server/workflow_call.go | 163 - api/types/types.go | 83 - api/types/types_easyjson.go | 587 +- cmd/client/alert.go | 2 +- cmd/client/shell.go | 2 +- cmd/client/workflow.go | 2 +- go.mod | 4 +- {alert => graffiti/alert}/server.go | 6 +- {api => graffiti/api}/server/alert.go | 15 +- graffiti/api/server/edge.go | 8 +- graffiti/api/server/node.go | 8 +- graffiti/api/server/server.go | 5 +- graffiti/api/server/workflow.go | 223 + .../api}/server/workflow_runtime.go | 6 +- graffiti/api/types/types.go | 90 +- graffiti/api/types/types_easyjson.go | 575 +- graffiti/go.mod | 2 + graffiti/hub/hub.go | 27 + graffiti/js/api.js | 1034 + graffiti/js/api.ts | 737 + {js => graffiti/js}/completion.go | 0 {js => graffiti/js}/otto.js | 0 graffiti/js/package-lock.json | 1176 + graffiti/js/package.json | 29 + {js => graffiti/js}/promise-7.0.4.min.js | 0 {js => graffiti/js}/promise-done-7.0.4.min.js | 0 graffiti/js/pure-uuid.js | 914 + {js => graffiti/js}/runtime.go | 13 +- {js => graffiti/js}/test.ts | 0 js/api.js | 1380 +- js/api.ts | 884 +- js/browser.js | 52 +- js/browser.ts | 45 +- js/package.json | 57 +- statics/bindata.go | 79 +- statics/js/bundle.js | 27408 ++++++++-------- tests/alert_test.go | 7 +- tests/api_test.go | 9 +- tests/workflow_test.go | 4 +- 48 files changed, 19085 insertions(+), 16930 deletions(-) delete mode 100644 api/server/workflow.go delete mode 100644 api/server/workflow_call.go rename {alert => graffiti/alert}/server.go (98%) rename {api => graffiti/api}/server/alert.go (76%) create mode 100644 graffiti/api/server/workflow.go rename {api => graffiti/api}/server/workflow_runtime.go (96%) create mode 100644 graffiti/js/api.js create mode 100644 graffiti/js/api.ts rename {js => graffiti/js}/completion.go (100%) rename {js => graffiti/js}/otto.js (100%) create mode 100644 graffiti/js/package-lock.json create mode 100644 graffiti/js/package.json rename {js => graffiti/js}/promise-7.0.4.min.js (100%) rename {js => graffiti/js}/promise-done-7.0.4.min.js (100%) create mode 100644 graffiti/js/pure-uuid.js rename {js => graffiti/js}/runtime.go (95%) rename {js => graffiti/js}/test.ts (100%) diff --git a/.mk/api.mk b/.mk/api.mk index 632ae8d51d..1213764879 100644 --- a/.mk/api.mk +++ b/.mk/api.mk @@ -1,5 +1,8 @@ .typescript: statics/js/bundle.js js/browser.js js/api.js +graffiti/js/api.js: graffiti/js/api.ts + cd graffiti/js && npm ci && PATH=`npm bin`:$$PATH tsc --module commonjs --target ES5 api.ts + js/api.js: js/api.ts cd js && npm ci && PATH=`npm bin`:$$PATH tsc --module commonjs --target ES5 api.ts diff --git a/.mk/bindata.mk b/.mk/bindata.mk index c7473f93b1..ad6ed1d5f5 100644 --- a/.mk/bindata.mk +++ b/.mk/bindata.mk @@ -28,3 +28,7 @@ ebpf/statics/bindata.go: $(EBPF_PROBES) statics/bindata.go: statics/js/bundle.js $(STATIC_FILES) go run ${GO_BINDATA_GITHUB} ${GO_BINDATA_FLAGS} -nometadata -o statics/bindata.go -pkg=statics -ignore=bindata.go $(BINDATA_DIRS) gofmt -w -s statics/bindata.go + +graffiti/js/bindata.go: graffiti/js/*.js + go run ${GO_BINDATA_GITHUB} ${GO_BINDATA_FLAGS} -prefix graffiti/js/ -nometadata -o graffiti/js/bindata.go -pkg=js graffiti/js/*.js + gofmt -w -s graffiti/js/bindata.go diff --git a/analyzer/server.go b/analyzer/server.go index 5e31cb3d33..6ff4a2f93b 100644 --- a/analyzer/server.go +++ b/analyzer/server.go @@ -21,13 +21,14 @@ package analyzer import ( "crypto/tls" - "errors" "fmt" "net/http" "time" + "github.com/pkg/errors" + yaml "gopkg.in/yaml.v2" + "github.com/skydive-project/dede/dede" - "github.com/skydive-project/skydive/alert" api "github.com/skydive-project/skydive/api/server" "github.com/skydive-project/skydive/api/types" "github.com/skydive-project/skydive/config" @@ -37,6 +38,7 @@ import ( "github.com/skydive-project/skydive/flow/storage" "github.com/skydive-project/skydive/graffiti/api/rest" gapi "github.com/skydive-project/skydive/graffiti/api/server" + gtypes "github.com/skydive-project/skydive/graffiti/api/types" etcdclient "github.com/skydive-project/skydive/graffiti/etcd/client" etcdserver "github.com/skydive-project/skydive/graffiti/etcd/server" "github.com/skydive-project/skydive/graffiti/graph" @@ -49,6 +51,7 @@ import ( "github.com/skydive-project/skydive/packetinjector" "github.com/skydive-project/skydive/probe" "github.com/skydive-project/skydive/sflow" + "github.com/skydive-project/skydive/statics" "github.com/skydive-project/skydive/topology" usertopology "github.com/skydive-project/skydive/topology/enhancers" "github.com/skydive-project/skydive/topology/probes/blockdev" @@ -56,12 +59,7 @@ import ( "github.com/skydive-project/skydive/validator" ) -// ElectionStatus describes the status of an election -// -// easyjson:json -type ElectionStatus struct { - IsMaster bool -} +const workflowAssetDir = "statics/workflows" // Status analyzer object // @@ -74,8 +72,8 @@ type Status struct { Peers hub.PeersStatus Publishers map[string]ws.ConnStatus Subscribers map[string]ws.ConnStatus - Alerts ElectionStatus - Captures ElectionStatus + Alerts hub.ElectionStatus + Captures hub.ElectionStatus Probes map[string]interface{} } @@ -83,7 +81,6 @@ type Status struct { type Server struct { uiServer *ui.Server hub *hub.Hub - alertServer *alert.Server onDemandClient *client.OnDemandClient piClient *client.OnDemandClient topologyManager *usertopology.TopologyManager @@ -103,8 +100,8 @@ func (s *Server) GetStatus() interface{} { Peers: hubStatus.Peers, Publishers: hubStatus.Publishers, Subscribers: hubStatus.Subscribers, - Alerts: ElectionStatus{IsMaster: s.alertServer.IsMaster()}, - Captures: ElectionStatus{IsMaster: s.onDemandClient.IsMaster()}, + Alerts: hubStatus.Alerts, + Captures: hub.ElectionStatus{IsMaster: s.onDemandClient.IsMaster()}, Probes: s.probeBundle.GetStatus(), } } @@ -129,6 +126,27 @@ func (s *Server) createStartupCapture() error { return nil } +func (s *Server) loadStaticWorkflows() error { + assets, err := statics.AssetDir(workflowAssetDir) + if err == nil { + for _, asset := range assets { + yml, err := statics.Asset(workflowAssetDir + "/" + asset) + if err != nil { + return err + } + + var workflow gtypes.Workflow + if err := yaml.Unmarshal([]byte(yml), &workflow); err != nil { + return errors.Wrapf(err, "failed to load workflow %s", asset) + } + + gapi.StaticWorkflows = append(gapi.StaticWorkflows, &workflow) + } + } + + return nil +} + // Start the analyzer server func (s *Server) Start() error { if err := s.hub.Start(); err != nil { @@ -147,7 +165,6 @@ func (s *Server) Start() error { s.onDemandClient.Start() s.piClient.Start() - s.alertServer.Start() s.topologyManager.Start() s.flowServer.Start() @@ -165,7 +182,6 @@ func (s *Server) Stop() { s.probeBundle.Stop() s.onDemandClient.Stop() s.piClient.Stop() - s.alertServer.Stop() s.topologyManager.Stop() s.etcdClient.Stop() @@ -322,48 +338,15 @@ func NewServerFromConfig() (*Server, error) { apiServer := hub.APIServer() - captureAPIHandler, err := api.RegisterCaptureAPI(apiServer, g, apiAuthBackend) - if err != nil { - return nil, err - } - - piAPIHandler, err := api.RegisterPacketInjectorAPI(g, apiServer, apiAuthBackend) - if err != nil { - return nil, err - } + captureAPIHandler := api.RegisterCaptureAPI(apiServer, g, apiAuthBackend) + piAPIHandler := api.RegisterPacketInjectorAPI(g, apiServer, apiAuthBackend) s.piClient = packetinjector.NewOnDemandInjectionClient(g, piAPIHandler, hub.PodServer(), hub.SubscriberServer(), etcdClient) - _, err = gapi.RegisterNodeAPI(apiServer, g, apiAuthBackend) - if err != nil { - return nil, err - } - - nodeRuleAPIHandler, err := api.RegisterNodeRuleAPI(apiServer, g, apiAuthBackend) - if err != nil { - return nil, err - } - - _, err = gapi.RegisterEdgeAPI(apiServer, g, apiAuthBackend) - if err != nil { - return nil, err - } - - edgeRuleAPIHandler, err := api.RegisterEdgeRuleAPI(apiServer, g, apiAuthBackend) - if err != nil { - return nil, err - } - + nodeRuleAPIHandler := api.RegisterNodeRuleAPI(apiServer, g, apiAuthBackend) + edgeRuleAPIHandler := api.RegisterEdgeRuleAPI(apiServer, g, apiAuthBackend) s.topologyManager = usertopology.NewTopologyManager(etcdClient, nodeRuleAPIHandler, edgeRuleAPIHandler, g) - if _, err = api.RegisterAlertAPI(apiServer, apiAuthBackend); err != nil { - return nil, err - } - - if _, err := api.RegisterWorkflowAPI(apiServer, apiAuthBackend); err != nil { - return nil, err - } - s.onDemandClient = ondemand.NewOnDemandFlowProbeClient(g, captureAPIHandler, hub.PodServer(), hub.SubscriberServer(), etcdClient) s.flowServer, err = server.NewFlowServer(hub.HTTPServer(), g, s.flowStorage, flowSubscriberEndpoint, probeBundle, clusterAuthBackend) @@ -371,15 +354,13 @@ func NewServerFromConfig() (*Server, error) { return nil, err } - s.alertServer, err = alert.NewServer(apiServer, hub.SubscriberServer(), g, tr, etcdClient) - if err != nil { - return nil, err - } - httpServer := hub.HTTPServer() api.RegisterPcapAPI(httpServer, s.flowStorage, apiAuthBackend) api.RegisterConfigAPI(httpServer, apiAuthBackend) - api.RegisterWorkflowCallAPI(httpServer, apiAuthBackend, apiServer, g, tr) + + if err := s.loadStaticWorkflows(); err != nil { + return nil, err + } if config.GetBool("analyzer.ssh_enabled") { if err := dede.RegisterHandler("terminal", "/dede", httpServer.Router); err != nil { diff --git a/analyzer/server_easyjson.go b/analyzer/server_easyjson.go index cd3ec42a4c..bd29ad03f8 100644 --- a/analyzer/server_easyjson.go +++ b/analyzer/server_easyjson.go @@ -90,9 +90,9 @@ func easyjson22b57fa5DecodeGithubComSkydiveProjectSkydiveAnalyzer(in *jlexer.Lex in.Delim('}') } case "Alerts": - (out.Alerts).UnmarshalEasyJSON(in) + easyjson22b57fa5DecodeGithubComSkydiveProjectSkydiveGraffitiHub1(in, &out.Alerts) case "Captures": - (out.Captures).UnmarshalEasyJSON(in) + easyjson22b57fa5DecodeGithubComSkydiveProjectSkydiveGraffitiHub1(in, &out.Captures) case "Probes": if in.IsNull() { in.Skip() @@ -200,12 +200,12 @@ func easyjson22b57fa5EncodeGithubComSkydiveProjectSkydiveAnalyzer(out *jwriter.W { const prefix string = ",\"Alerts\":" out.RawString(prefix) - (in.Alerts).MarshalEasyJSON(out) + easyjson22b57fa5EncodeGithubComSkydiveProjectSkydiveGraffitiHub1(out, in.Alerts) } { const prefix string = ",\"Captures\":" out.RawString(prefix) - (in.Captures).MarshalEasyJSON(out) + easyjson22b57fa5EncodeGithubComSkydiveProjectSkydiveGraffitiHub1(out, in.Captures) } { const prefix string = ",\"Probes\":" @@ -260,6 +260,48 @@ func (v *Status) UnmarshalJSON(data []byte) error { func (v *Status) UnmarshalEasyJSON(l *jlexer.Lexer) { easyjson22b57fa5DecodeGithubComSkydiveProjectSkydiveAnalyzer(l, v) } +func easyjson22b57fa5DecodeGithubComSkydiveProjectSkydiveGraffitiHub1(in *jlexer.Lexer, out *hub.ElectionStatus) { + isTopLevel := in.IsStart() + if in.IsNull() { + if isTopLevel { + in.Consumed() + } + in.Skip() + return + } + in.Delim('{') + for !in.IsDelim('}') { + key := in.UnsafeFieldName(false) + in.WantColon() + if in.IsNull() { + in.Skip() + in.WantComma() + continue + } + switch key { + case "IsMaster": + out.IsMaster = bool(in.Bool()) + default: + in.SkipRecursive() + } + in.WantComma() + } + in.Delim('}') + if isTopLevel { + in.Consumed() + } +} +func easyjson22b57fa5EncodeGithubComSkydiveProjectSkydiveGraffitiHub1(out *jwriter.Writer, in hub.ElectionStatus) { + out.RawByte('{') + first := true + _ = first + { + const prefix string = ",\"IsMaster\":" + out.RawString(prefix[1:]) + out.Bool(bool(in.IsMaster)) + } + out.RawByte('}') +} func easyjson22b57fa5DecodeGithubComSkydiveProjectSkydiveGraffitiHub(in *jlexer.Lexer, out *hub.PeersStatus) { isTopLevel := in.IsStart() if in.IsNull() { @@ -476,69 +518,3 @@ func easyjson22b57fa5EncodeGithubComSkydiveProjectSkydiveGraffitiWebsocket(out * } out.RawByte('}') } -func easyjson22b57fa5DecodeGithubComSkydiveProjectSkydiveAnalyzer1(in *jlexer.Lexer, out *ElectionStatus) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeFieldName(false) - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "IsMaster": - out.IsMaster = bool(in.Bool()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjson22b57fa5EncodeGithubComSkydiveProjectSkydiveAnalyzer1(out *jwriter.Writer, in ElectionStatus) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"IsMaster\":" - out.RawString(prefix[1:]) - out.Bool(bool(in.IsMaster)) - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v ElectionStatus) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjson22b57fa5EncodeGithubComSkydiveProjectSkydiveAnalyzer1(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v ElectionStatus) MarshalEasyJSON(w *jwriter.Writer) { - easyjson22b57fa5EncodeGithubComSkydiveProjectSkydiveAnalyzer1(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *ElectionStatus) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjson22b57fa5DecodeGithubComSkydiveProjectSkydiveAnalyzer1(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *ElectionStatus) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson22b57fa5DecodeGithubComSkydiveProjectSkydiveAnalyzer1(l, v) -} diff --git a/api/server/capture.go b/api/server/capture.go index c4ef3a06d5..bc7d88a193 100644 --- a/api/server/capture.go +++ b/api/server/capture.go @@ -151,7 +151,7 @@ func (c *CaptureAPIHandler) Update(id string, resource rest.Resource) (rest.Reso } // RegisterCaptureAPI registers an new resource, capture -func RegisterCaptureAPI(apiServer *api.Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) (*CaptureAPIHandler, error) { +func RegisterCaptureAPI(apiServer *api.Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) *CaptureAPIHandler { captureAPIHandler := &CaptureAPIHandler{ BasicAPIHandler: rest.BasicAPIHandler{ ResourceHandler: &CaptureResourceHandler{}, @@ -159,8 +159,6 @@ func RegisterCaptureAPI(apiServer *api.Server, g *graph.Graph, authBackend shttp }, Graph: g, } - if err := apiServer.RegisterAPIHandler(captureAPIHandler, authBackend); err != nil { - return nil, err - } - return captureAPIHandler, nil + apiServer.RegisterAPIHandler(captureAPIHandler, authBackend) + return captureAPIHandler } diff --git a/api/server/edgerule.go b/api/server/edgerule.go index edb3739e5f..e336b8a51e 100644 --- a/api/server/edgerule.go +++ b/api/server/edgerule.go @@ -55,7 +55,7 @@ func (a *EdgeRuleAPI) Update(id string, resource rest.Resource) (rest.Resource, } // RegisterEdgeRuleAPI registers an EdgeRule's API to a designated API Server -func RegisterEdgeRuleAPI(apiServer *api.Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) (*EdgeRuleAPI, error) { +func RegisterEdgeRuleAPI(apiServer *api.Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) *EdgeRuleAPI { era := &EdgeRuleAPI{ BasicAPIHandler: rest.BasicAPIHandler{ ResourceHandler: &EdgeRuleResourceHandler{}, @@ -63,9 +63,6 @@ func RegisterEdgeRuleAPI(apiServer *api.Server, g *graph.Graph, authBackend shtt }, Graph: g, } - if err := apiServer.RegisterAPIHandler(era, authBackend); err != nil { - return nil, err - } - - return era, nil + apiServer.RegisterAPIHandler(era, authBackend) + return era } diff --git a/api/server/noderule.go b/api/server/noderule.go index 319c594fc7..8b4db4b34f 100644 --- a/api/server/noderule.go +++ b/api/server/noderule.go @@ -55,7 +55,7 @@ func (a *NodeRuleAPI) Update(id string, resource rest.Resource) (rest.Resource, } // RegisterNodeRuleAPI register a new node rule api handler -func RegisterNodeRuleAPI(apiServer *api.Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) (*NodeRuleAPI, error) { +func RegisterNodeRuleAPI(apiServer *api.Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) *NodeRuleAPI { nra := &NodeRuleAPI{ BasicAPIHandler: rest.BasicAPIHandler{ ResourceHandler: &NodeRuleResourceHandler{}, @@ -63,9 +63,6 @@ func RegisterNodeRuleAPI(apiServer *api.Server, g *graph.Graph, authBackend shtt }, Graph: g, } - if err := apiServer.RegisterAPIHandler(nra, authBackend); err != nil { - return nil, err - } - - return nra, nil + apiServer.RegisterAPIHandler(nra, authBackend) + return nra } diff --git a/api/server/packet_injector_common.go b/api/server/packet_injector_common.go index be3a155720..7904f8173f 100644 --- a/api/server/packet_injector_common.go +++ b/api/server/packet_injector_common.go @@ -81,7 +81,7 @@ func (pi *PacketInjectorAPI) getNode(gremlinQuery string) *graph.Node { } // RegisterPacketInjectorAPI registers a new packet injector resource in the API -func RegisterPacketInjectorAPI(g *graph.Graph, apiServer *api.Server, authBackend shttp.AuthenticationBackend) (*PacketInjectorAPI, error) { +func RegisterPacketInjectorAPI(g *graph.Graph, apiServer *api.Server, authBackend shttp.AuthenticationBackend) *PacketInjectorAPI { pia := &PacketInjectorAPI{ BasicAPIHandler: rest.BasicAPIHandler{ ResourceHandler: &packetInjectorResourceHandler{}, @@ -89,9 +89,6 @@ func RegisterPacketInjectorAPI(g *graph.Graph, apiServer *api.Server, authBacken }, Graph: g, } - if err := apiServer.RegisterAPIHandler(pia, authBackend); err != nil { - return nil, err - } - - return pia, nil + apiServer.RegisterAPIHandler(pia, authBackend) + return pia } diff --git a/api/server/workflow.go b/api/server/workflow.go deleted file mode 100644 index 86c133629a..0000000000 --- a/api/server/workflow.go +++ /dev/null @@ -1,124 +0,0 @@ -//go:generate sh -c "go run github.com/gomatic/renderizer --name=workflow --resource=workflow --type=Workflow --title=Workflow --article=a swagger_operations.tmpl > workflow_swagger.go" -//go:generate sh -c "go run github.com/gomatic/renderizer --name=workflow --resource=workflow --type=Workflow --title=Workflow --article=a swagger_definitions.tmpl > workflow_swagger.json" - -/* - * Copyright (C) 2018 Red Hat, 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 ofthe 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 specificlanguage governing permissions and - * limitations under the License. - * - */ - -package server - -import ( - "fmt" - - yaml "gopkg.in/yaml.v2" - - "github.com/skydive-project/skydive/api/types" - "github.com/skydive-project/skydive/graffiti/api/rest" - api "github.com/skydive-project/skydive/graffiti/api/server" - shttp "github.com/skydive-project/skydive/graffiti/http" - "github.com/skydive-project/skydive/graffiti/logging" - "github.com/skydive-project/skydive/statics" -) - -const workflowAssetDir = "statics/workflows" - -// WorkflowResourceHandler describes a workflow resource handler -type WorkflowResourceHandler struct { -} - -// WorkflowAPIHandler based on BasicAPIHandler -type WorkflowAPIHandler struct { - rest.BasicAPIHandler -} - -// New creates a new workflow resource -func (w *WorkflowResourceHandler) New() rest.Resource { - return &types.Workflow{} -} - -// Name return "workflow" -func (w *WorkflowResourceHandler) Name() string { - return "workflow" -} - -// Create tests whether the resource is a duplicate or is unique -func (w *WorkflowAPIHandler) Create(r rest.Resource, opts *rest.CreateOptions) error { - workflow := r.(*types.Workflow) - - for _, resource := range w.Index() { - w := resource.(*types.Workflow) - if w.Name == workflow.Name { - return fmt.Errorf("Duplicate workflow, name=%s", w.Name) - } - } - - return w.BasicAPIHandler.Create(workflow, opts) -} - -func (w *WorkflowAPIHandler) loadWorkflowAsset(name string) (*types.Workflow, error) { - yml, err := statics.Asset(name) - if err != nil { - return nil, err - } - - var workflow types.Workflow - if err := yaml.Unmarshal([]byte(yml), &workflow); err != nil { - return nil, err - } - - return &workflow, nil -} - -// Get retrieves a workflow based on its id -func (w *WorkflowAPIHandler) Get(id string) (rest.Resource, bool) { - workflows := w.Index() - workflow, found := workflows[id] - if !found { - return nil, false - } - return workflow.(*types.Workflow), true -} - -// Index returns a map of workflows indexed by id -func (w *WorkflowAPIHandler) Index() map[string]rest.Resource { - resources := w.BasicAPIHandler.Index() - assets, err := statics.AssetDir(workflowAssetDir) - if err == nil { - for _, asset := range assets { - workflow, err := w.loadWorkflowAsset(workflowAssetDir + "/" + asset) - if err != nil { - logging.GetLogger().Errorf("Failed to load worklow asset %s: %s", asset, err) - continue - } - resources[workflow.GetID()] = workflow - } - } - return resources -} - -// RegisterWorkflowAPI registers a new workflow api handler -func RegisterWorkflowAPI(apiServer *api.Server, authBackend shttp.AuthenticationBackend) (*WorkflowAPIHandler, error) { - workflowAPIHandler := &WorkflowAPIHandler{ - BasicAPIHandler: rest.BasicAPIHandler{ - ResourceHandler: &WorkflowResourceHandler{}, - EtcdClient: apiServer.EtcdClient, - }, - } - if err := apiServer.RegisterAPIHandler(workflowAPIHandler, authBackend); err != nil { - return nil, err - } - return workflowAPIHandler, nil -} diff --git a/api/server/workflow_call.go b/api/server/workflow_call.go deleted file mode 100644 index 5c1602e42d..0000000000 --- a/api/server/workflow_call.go +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (C) 2019 Red Hat, 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 ofthe 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 specificlanguage governing permissions and - * limitations under the License. - * - */ - -package server - -import ( - "encoding/json" - "fmt" - "net/http" - - auth "github.com/abbot/go-http-auth" - "github.com/gorilla/mux" - - "github.com/skydive-project/skydive/api/types" - api "github.com/skydive-project/skydive/graffiti/api/server" - "github.com/skydive-project/skydive/graffiti/graph" - "github.com/skydive-project/skydive/graffiti/graph/traversal" - shttp "github.com/skydive-project/skydive/graffiti/http" - "github.com/skydive-project/skydive/graffiti/rbac" - "github.com/skydive-project/skydive/js" -) - -// WorkflowCallAPIHandler based on BasicAPIHandler -type WorkflowCallAPIHandler struct { - apiServer *api.Server - graph *graph.Graph - parser *traversal.GremlinTraversalParser - runtime *js.Runtime -} - -func (wc *WorkflowCallAPIHandler) executeWorkflow(w http.ResponseWriter, r *auth.AuthenticatedRequest) { - if !rbac.Enforce(r.Username, "workflow.call", "write") { - w.WriteHeader(http.StatusMethodNotAllowed) - return - } - - decoder := json.NewDecoder(r.Body) - var wfCall types.WorkflowCall - if err := decoder.Decode(&wfCall); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - vars := mux.Vars(&r.Request) - - workflow, err := wc.getWorkflow(vars["ID"]) - if err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - ottoResult, err := wc.runtime.ExecFunction(workflow.Source, wfCall.Params...) - if err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - result, err := ottoResult.Export() - if err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - w.Header().Set("Content-Type", "application/json; charset=UTF-8") - w.WriteHeader(http.StatusOK) - if err := json.NewEncoder(w).Encode(result); err != nil { - panic(err) - } -} - -func (wc *WorkflowCallAPIHandler) getWorkflow(id string) (*types.Workflow, error) { - handler := wc.apiServer.GetHandler("workflow") - workflow, ok := handler.Get(id) - if !ok { - return nil, fmt.Errorf("No workflow found with ID: %s", id) - } - return workflow.(*types.Workflow), nil -} - -func (wc *WorkflowCallAPIHandler) registerEndPoints(s *shttp.Server, authBackend shttp.AuthenticationBackend) { - // swagger:operation POST /workflow/{id}/call callWorkflow - // - // Call workflow - // - // --- - // summary: Call workflow - // - // tags: - // - Workflows - // - // consumes: - // - application/json - // - // produces: - // - application/json - // - // schemes: - // - http - // - https - // - // parameters: - // - name: id - // in: path - // required: true - // type: string - // - // - name: params - // in: body - // required: true - // schema: - // $ref: '#/definitions/WorkflowCall' - // - // responses: - // 202: - // description: Request accepted - // schema: - // $ref: '#/definitions/AnyValue' - // - // 400: - // description: Invalid PCAP - - routes := []shttp.Route{ - { - Name: "WorkflowCall", - Method: "POST", - Path: "/api/workflow/{ID}/call", - HandlerFunc: wc.executeWorkflow, - }, - } - - s.RegisterRoutes(routes, authBackend) -} - -// RegisterWorkflowCallAPI registers a new workflow call api handler -func RegisterWorkflowCallAPI(s *shttp.Server, authBackend shttp.AuthenticationBackend, apiServer *api.Server, g *graph.Graph, tr *traversal.GremlinTraversalParser) error { - runtime, err := NewWorkflowRuntime(g, tr, apiServer) - if err != nil { - return err - } - - workflowCallAPIHandler := &WorkflowCallAPIHandler{ - apiServer: apiServer, - graph: g, - parser: tr, - runtime: runtime, - } - workflowCallAPIHandler.registerEndPoints(s, authBackend) - - return nil -} diff --git a/api/types/types.go b/api/types/types.go index f6f5358c02..c52d29cc1a 100644 --- a/api/types/types.go +++ b/api/types/types.go @@ -35,42 +35,6 @@ import ( // SchemaValidator validates resources against JSON schemas var SchemaValidator schema.Validator -// Alert object -// -// Alerts provide a way to be notified when a Gremlin expression -// is evaluated to true. -// -// easyjson:json -// swagger:model Alert -type Alert struct { - // swagger:allOf - rest.BasicResource `yaml:",inline"` - // Alert name - Name string `json:",omitempty" yaml:"Name"` - // Alert description - Description string `json:",omitempty" yaml:"Description"` - // Gremlin or JavaScript expression evaluated to trigger the alarm - Expression string `json:",omitempty" valid:"nonzero" yaml:"Expression"` - // Action to execute when the alert is triggered. - // Can be either an empty string, or a URL (use 'file://' for local scripts) - Action string `json:",omitempty" valid:"regexp=^(|http://|https://|file://).*$" yaml:"Action"` - // Event that triggers the alert evaluation - Trigger string `json:",omitempty" valid:"regexp=^(graph|duration:.+|)$" yaml:"Trigger"` - CreateTime time.Time -} - -// GetName returns the resource name -func (a *Alert) GetName() string { - return "Alert" -} - -// NewAlert creates a New empty Alert, only CreateTime is set. -func NewAlert() *Alert { - return &Alert{ - CreateTime: time.Now().UTC(), - } -} - // Capture object // // Captures provide a way to capture network traffic on the nodes @@ -289,53 +253,6 @@ func (pi *PacketInjection) Validate() error { return nil } -// WorkflowChoice describes one value within a choice -// easyjson:json -// swagger:model -type WorkflowChoice struct { - Value string `yaml:"Value"` - Description string `yaml:"Description"` -} - -// WorkflowParam describes a workflow parameter -// easyjson:json -// swagger:model -type WorkflowParam struct { - Name string `yaml:"Name"` - Description string `yaml:"Description"` - Type string `yaml:"Type"` - Default interface{} `yaml:"Default"` - Values []WorkflowChoice `yaml:"Values"` -} - -// Workflow object -// -// Workflow allows to automate actions using JavaScript. -// -// easyjson:json -// swagger:model -type Workflow struct { - // swagger:allOf - rest.BasicResource `yaml:",inline"` - // Workflow name - Name string `yaml:"Name" valid:"nonzero"` - // Workflow title - Title string `yaml:"Title"` - // Workflow abstract - Abstract string `yaml:"Abstract"` - // Workflow description - Description string `yaml:"Description"` - // Workflow parameters - Parameters []WorkflowParam `yaml:"Parameters"` - Source string `valid:"isValidWorkflow" yaml:"Source"` -} - -// WorkflowCall describes workflow call -// swagger:model -type WorkflowCall struct { - Params []interface{} -} - func init() { SchemaValidator = schema.NewJSONValidator() } diff --git a/api/types/types_easyjson.go b/api/types/types_easyjson.go index dc255d852e..f931e27db7 100644 --- a/api/types/types_easyjson.go +++ b/api/types/types_easyjson.go @@ -18,358 +18,7 @@ var ( _ easyjson.Marshaler ) -func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes(in *jlexer.Lexer, out *WorkflowParam) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeFieldName(false) - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "Name": - out.Name = string(in.String()) - case "Description": - out.Description = string(in.String()) - case "Type": - out.Type = string(in.String()) - case "Default": - if m, ok := out.Default.(easyjson.Unmarshaler); ok { - m.UnmarshalEasyJSON(in) - } else if m, ok := out.Default.(json.Unmarshaler); ok { - _ = m.UnmarshalJSON(in.Raw()) - } else { - out.Default = in.Interface() - } - case "Values": - if in.IsNull() { - in.Skip() - out.Values = nil - } else { - in.Delim('[') - if out.Values == nil { - if !in.IsDelim(']') { - out.Values = make([]WorkflowChoice, 0, 2) - } else { - out.Values = []WorkflowChoice{} - } - } else { - out.Values = (out.Values)[:0] - } - for !in.IsDelim(']') { - var v1 WorkflowChoice - (v1).UnmarshalEasyJSON(in) - out.Values = append(out.Values, v1) - in.WantComma() - } - in.Delim(']') - } - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes(out *jwriter.Writer, in WorkflowParam) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"Name\":" - out.RawString(prefix[1:]) - out.String(string(in.Name)) - } - { - const prefix string = ",\"Description\":" - out.RawString(prefix) - out.String(string(in.Description)) - } - { - const prefix string = ",\"Type\":" - out.RawString(prefix) - out.String(string(in.Type)) - } - { - const prefix string = ",\"Default\":" - out.RawString(prefix) - if m, ok := in.Default.(easyjson.Marshaler); ok { - m.MarshalEasyJSON(out) - } else if m, ok := in.Default.(json.Marshaler); ok { - out.Raw(m.MarshalJSON()) - } else { - out.Raw(json.Marshal(in.Default)) - } - } - { - const prefix string = ",\"Values\":" - out.RawString(prefix) - if in.Values == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 { - out.RawString("null") - } else { - out.RawByte('[') - for v2, v3 := range in.Values { - if v2 > 0 { - out.RawByte(',') - } - (v3).MarshalEasyJSON(out) - } - out.RawByte(']') - } - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v WorkflowParam) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v WorkflowParam) MarshalEasyJSON(w *jwriter.Writer) { - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *WorkflowParam) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *WorkflowParam) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes(l, v) -} -func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes1(in *jlexer.Lexer, out *WorkflowChoice) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeFieldName(false) - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "Value": - out.Value = string(in.String()) - case "Description": - out.Description = string(in.String()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes1(out *jwriter.Writer, in WorkflowChoice) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"Value\":" - out.RawString(prefix[1:]) - out.String(string(in.Value)) - } - { - const prefix string = ",\"Description\":" - out.RawString(prefix) - out.String(string(in.Description)) - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v WorkflowChoice) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes1(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v WorkflowChoice) MarshalEasyJSON(w *jwriter.Writer) { - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes1(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *WorkflowChoice) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes1(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *WorkflowChoice) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes1(l, v) -} -func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes2(in *jlexer.Lexer, out *Workflow) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeFieldName(false) - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "Name": - out.Name = string(in.String()) - case "Title": - out.Title = string(in.String()) - case "Abstract": - out.Abstract = string(in.String()) - case "Description": - out.Description = string(in.String()) - case "Parameters": - if in.IsNull() { - in.Skip() - out.Parameters = nil - } else { - in.Delim('[') - if out.Parameters == nil { - if !in.IsDelim(']') { - out.Parameters = make([]WorkflowParam, 0, 0) - } else { - out.Parameters = []WorkflowParam{} - } - } else { - out.Parameters = (out.Parameters)[:0] - } - for !in.IsDelim(']') { - var v4 WorkflowParam - (v4).UnmarshalEasyJSON(in) - out.Parameters = append(out.Parameters, v4) - in.WantComma() - } - in.Delim(']') - } - case "Source": - out.Source = string(in.String()) - case "UUID": - out.UUID = string(in.String()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes2(out *jwriter.Writer, in Workflow) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"Name\":" - out.RawString(prefix[1:]) - out.String(string(in.Name)) - } - { - const prefix string = ",\"Title\":" - out.RawString(prefix) - out.String(string(in.Title)) - } - { - const prefix string = ",\"Abstract\":" - out.RawString(prefix) - out.String(string(in.Abstract)) - } - { - const prefix string = ",\"Description\":" - out.RawString(prefix) - out.String(string(in.Description)) - } - { - const prefix string = ",\"Parameters\":" - out.RawString(prefix) - if in.Parameters == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 { - out.RawString("null") - } else { - out.RawByte('[') - for v5, v6 := range in.Parameters { - if v5 > 0 { - out.RawByte(',') - } - (v6).MarshalEasyJSON(out) - } - out.RawByte(']') - } - } - { - const prefix string = ",\"Source\":" - out.RawString(prefix) - out.String(string(in.Source)) - } - { - const prefix string = ",\"UUID\":" - out.RawString(prefix) - out.String(string(in.UUID)) - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v Workflow) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes2(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v Workflow) MarshalEasyJSON(w *jwriter.Writer) { - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes2(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *Workflow) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes2(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *Workflow) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes2(l, v) -} -func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes3(in *jlexer.Lexer, out *PacketInjection) { +func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes(in *jlexer.Lexer, out *PacketInjection) { isTopLevel := in.IsStart() if in.IsNull() { if isTopLevel { @@ -443,7 +92,7 @@ func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes3(in *jlexer.Le in.Consumed() } } -func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes3(out *jwriter.Writer, in PacketInjection) { +func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes(out *jwriter.Writer, in PacketInjection) { out.RawByte('{') first := true _ = first @@ -548,27 +197,27 @@ func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes3(out *jwriter. // MarshalJSON supports json.Marshaler interface func (v PacketInjection) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes3(&w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes(&w, v) return w.Buffer.BuildBytes(), w.Error } // MarshalEasyJSON supports easyjson.Marshaler interface func (v PacketInjection) MarshalEasyJSON(w *jwriter.Writer) { - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes3(w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes(w, v) } // UnmarshalJSON supports json.Unmarshaler interface func (v *PacketInjection) UnmarshalJSON(data []byte) error { r := jlexer.Lexer{Data: data} - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes3(&r, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes(&r, v) return r.Error() } // UnmarshalEasyJSON supports easyjson.Unmarshaler interface func (v *PacketInjection) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes3(l, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes(l, v) } -func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes4(in *jlexer.Lexer, out *NodeRule) { +func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes1(in *jlexer.Lexer, out *NodeRule) { isTopLevel := in.IsStart() if in.IsNull() { if isTopLevel { @@ -600,15 +249,15 @@ func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes4(in *jlexer.Le for !in.IsDelim('}') { key := string(in.String()) in.WantColon() - var v10 interface{} - if m, ok := v10.(easyjson.Unmarshaler); ok { + var v4 interface{} + if m, ok := v4.(easyjson.Unmarshaler); ok { m.UnmarshalEasyJSON(in) - } else if m, ok := v10.(json.Unmarshaler); ok { + } else if m, ok := v4.(json.Unmarshaler); ok { _ = m.UnmarshalJSON(in.Raw()) } else { - v10 = in.Interface() + v4 = in.Interface() } - (out.Metadata)[key] = v10 + (out.Metadata)[key] = v4 in.WantComma() } in.Delim('}') @@ -629,7 +278,7 @@ func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes4(in *jlexer.Le in.Consumed() } } -func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes4(out *jwriter.Writer, in NodeRule) { +func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes1(out *jwriter.Writer, in NodeRule) { out.RawByte('{') first := true _ = first @@ -650,21 +299,21 @@ func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes4(out *jwriter. out.RawString(`null`) } else { out.RawByte('{') - v11First := true - for v11Name, v11Value := range in.Metadata { - if v11First { - v11First = false + v5First := true + for v5Name, v5Value := range in.Metadata { + if v5First { + v5First = false } else { out.RawByte(',') } - out.String(string(v11Name)) + out.String(string(v5Name)) out.RawByte(':') - if m, ok := v11Value.(easyjson.Marshaler); ok { + if m, ok := v5Value.(easyjson.Marshaler); ok { m.MarshalEasyJSON(out) - } else if m, ok := v11Value.(json.Marshaler); ok { + } else if m, ok := v5Value.(json.Marshaler); ok { out.Raw(m.MarshalJSON()) } else { - out.Raw(json.Marshal(v11Value)) + out.Raw(json.Marshal(v5Value)) } } out.RawByte('}') @@ -691,27 +340,27 @@ func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes4(out *jwriter. // MarshalJSON supports json.Marshaler interface func (v NodeRule) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes4(&w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes1(&w, v) return w.Buffer.BuildBytes(), w.Error } // MarshalEasyJSON supports easyjson.Marshaler interface func (v NodeRule) MarshalEasyJSON(w *jwriter.Writer) { - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes4(w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes1(w, v) } // UnmarshalJSON supports json.Unmarshaler interface func (v *NodeRule) UnmarshalJSON(data []byte) error { r := jlexer.Lexer{Data: data} - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes4(&r, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes1(&r, v) return r.Error() } // UnmarshalEasyJSON supports easyjson.Unmarshaler interface func (v *NodeRule) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes4(l, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes1(l, v) } -func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes5(in *jlexer.Lexer, out *EdgeRule) { +func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes2(in *jlexer.Lexer, out *EdgeRule) { isTopLevel := in.IsStart() if in.IsNull() { if isTopLevel { @@ -747,15 +396,15 @@ func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes5(in *jlexer.Le for !in.IsDelim('}') { key := string(in.String()) in.WantColon() - var v12 interface{} - if m, ok := v12.(easyjson.Unmarshaler); ok { + var v6 interface{} + if m, ok := v6.(easyjson.Unmarshaler); ok { m.UnmarshalEasyJSON(in) - } else if m, ok := v12.(json.Unmarshaler); ok { + } else if m, ok := v6.(json.Unmarshaler); ok { _ = m.UnmarshalJSON(in.Raw()) } else { - v12 = in.Interface() + v6 = in.Interface() } - (out.Metadata)[key] = v12 + (out.Metadata)[key] = v6 in.WantComma() } in.Delim('}') @@ -772,7 +421,7 @@ func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes5(in *jlexer.Le in.Consumed() } } -func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes5(out *jwriter.Writer, in EdgeRule) { +func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes2(out *jwriter.Writer, in EdgeRule) { out.RawByte('{') first := true _ = first @@ -803,21 +452,21 @@ func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes5(out *jwriter. out.RawString(`null`) } else { out.RawByte('{') - v13First := true - for v13Name, v13Value := range in.Metadata { - if v13First { - v13First = false + v7First := true + for v7Name, v7Value := range in.Metadata { + if v7First { + v7First = false } else { out.RawByte(',') } - out.String(string(v13Name)) + out.String(string(v7Name)) out.RawByte(':') - if m, ok := v13Value.(easyjson.Marshaler); ok { + if m, ok := v7Value.(easyjson.Marshaler); ok { m.MarshalEasyJSON(out) - } else if m, ok := v13Value.(json.Marshaler); ok { + } else if m, ok := v7Value.(json.Marshaler); ok { out.Raw(m.MarshalJSON()) } else { - out.Raw(json.Marshal(v13Value)) + out.Raw(json.Marshal(v7Value)) } } out.RawByte('}') @@ -834,27 +483,27 @@ func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes5(out *jwriter. // MarshalJSON supports json.Marshaler interface func (v EdgeRule) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes5(&w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes2(&w, v) return w.Buffer.BuildBytes(), w.Error } // MarshalEasyJSON supports easyjson.Marshaler interface func (v EdgeRule) MarshalEasyJSON(w *jwriter.Writer) { - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes5(w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes2(w, v) } // UnmarshalJSON supports json.Unmarshaler interface func (v *EdgeRule) UnmarshalJSON(data []byte) error { r := jlexer.Lexer{Data: data} - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes5(&r, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes2(&r, v) return r.Error() } // UnmarshalEasyJSON supports easyjson.Unmarshaler interface func (v *EdgeRule) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes5(l, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes2(l, v) } -func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes6(in *jlexer.Lexer, out *Capture) { +func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes3(in *jlexer.Lexer, out *Capture) { isTopLevel := in.IsStart() if in.IsNull() { if isTopLevel { @@ -921,7 +570,7 @@ func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes6(in *jlexer.Le in.Consumed() } } -func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes6(out *jwriter.Writer, in Capture) { +func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes3(out *jwriter.Writer, in Capture) { out.RawByte('{') first := true _ = first @@ -1052,159 +701,23 @@ func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes6(out *jwriter. // MarshalJSON supports json.Marshaler interface func (v Capture) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes6(&w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes3(&w, v) return w.Buffer.BuildBytes(), w.Error } // MarshalEasyJSON supports easyjson.Marshaler interface func (v Capture) MarshalEasyJSON(w *jwriter.Writer) { - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes6(w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes3(w, v) } // UnmarshalJSON supports json.Unmarshaler interface func (v *Capture) UnmarshalJSON(data []byte) error { r := jlexer.Lexer{Data: data} - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes6(&r, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes3(&r, v) return r.Error() } // UnmarshalEasyJSON supports easyjson.Unmarshaler interface func (v *Capture) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes6(l, v) -} -func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes7(in *jlexer.Lexer, out *Alert) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeFieldName(false) - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "Name": - out.Name = string(in.String()) - case "Description": - out.Description = string(in.String()) - case "Expression": - out.Expression = string(in.String()) - case "Action": - out.Action = string(in.String()) - case "Trigger": - out.Trigger = string(in.String()) - case "CreateTime": - if data := in.Raw(); in.Ok() { - in.AddError((out.CreateTime).UnmarshalJSON(data)) - } - case "UUID": - out.UUID = string(in.String()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes7(out *jwriter.Writer, in Alert) { - out.RawByte('{') - first := true - _ = first - if in.Name != "" { - const prefix string = ",\"Name\":" - first = false - out.RawString(prefix[1:]) - out.String(string(in.Name)) - } - if in.Description != "" { - const prefix string = ",\"Description\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Description)) - } - if in.Expression != "" { - const prefix string = ",\"Expression\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Expression)) - } - if in.Action != "" { - const prefix string = ",\"Action\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Action)) - } - if in.Trigger != "" { - const prefix string = ",\"Trigger\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Trigger)) - } - { - const prefix string = ",\"CreateTime\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.Raw((in.CreateTime).MarshalJSON()) - } - { - const prefix string = ",\"UUID\":" - out.RawString(prefix) - out.String(string(in.UUID)) - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v Alert) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes7(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v Alert) MarshalEasyJSON(w *jwriter.Writer) { - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveApiTypes7(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *Alert) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes7(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *Alert) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes7(l, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveApiTypes3(l, v) } diff --git a/cmd/client/alert.go b/cmd/client/alert.go index 3d55ae38ad..5f8216996e 100644 --- a/cmd/client/alert.go +++ b/cmd/client/alert.go @@ -20,8 +20,8 @@ package client import ( "os" - "github.com/skydive-project/skydive/api/types" gapi "github.com/skydive-project/skydive/graffiti/api/client" + "github.com/skydive-project/skydive/graffiti/api/types" "github.com/skydive-project/skydive/graffiti/logging" "github.com/skydive-project/skydive/validator" diff --git a/cmd/client/shell.go b/cmd/client/shell.go index e79c00ce43..8d8c40b9f6 100644 --- a/cmd/client/shell.go +++ b/cmd/client/shell.go @@ -27,8 +27,8 @@ import ( homedir "github.com/mitchellh/go-homedir" "github.com/spf13/cobra" + "github.com/skydive-project/skydive/graffiti/js" "github.com/skydive-project/skydive/graffiti/logging" - "github.com/skydive-project/skydive/js" ) var ( diff --git a/cmd/client/workflow.go b/cmd/client/workflow.go index a1d7fcab57..3b8eace1e4 100644 --- a/cmd/client/workflow.go +++ b/cmd/client/workflow.go @@ -25,7 +25,7 @@ import ( "gopkg.in/yaml.v2" - "github.com/skydive-project/skydive/api/types" + "github.com/skydive-project/skydive/graffiti/api/types" "github.com/skydive-project/skydive/graffiti/logging" "github.com/skydive-project/skydive/validator" diff --git a/go.mod b/go.mod index 1869d9b225..ba3997fe27 100644 --- a/go.mod +++ b/go.mod @@ -65,8 +65,9 @@ require ( github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 // indirect github.com/peterh/liner v0.0.0-20160615113019-8975875355a8 github.com/pierrec/xxHash v0.1.5 + github.com/pkg/errors v0.9.1 github.com/pmylund/go-cache v2.1.0+incompatible - github.com/robertkrimen/otto v0.0.0-20161004124959-bf1c3795ba07 + github.com/robertkrimen/otto v0.0.0-20200922221731-ef014fd054ac github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8 github.com/safchain/insanelock v0.0.0-20200217234559-cfbf166e05b3 github.com/shirou/gopsutil v2.18.12+incompatible @@ -97,7 +98,6 @@ require ( gopkg.in/mcuadros/go-syslog.v2 v2.3.0 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect gopkg.in/robfig/cron.v2 v2.0.0-20150107220207-be2e0b0deed5 // indirect - gopkg.in/sourcemap.v1 v1.0.0-20160602085544-eef8f47ab679 // indirect gopkg.in/urfave/cli.v2 v2.0.0-20170928224240-b2bf3c5abeb9 // indirect gopkg.in/validator.v2 v2.0.0-20160201165114-3e4f037f12a1 gopkg.in/yaml.v2 v2.3.0 diff --git a/alert/server.go b/graffiti/alert/server.go similarity index 98% rename from alert/server.go rename to graffiti/alert/server.go index bd3d0d5ebc..c3b5e0d64c 100644 --- a/alert/server.go +++ b/graffiti/alert/server.go @@ -30,16 +30,16 @@ import ( "github.com/safchain/insanelock" - "github.com/skydive-project/skydive/api/server" - "github.com/skydive-project/skydive/api/types" "github.com/skydive-project/skydive/graffiti/api/rest" + "github.com/skydive-project/skydive/graffiti/api/server" api "github.com/skydive-project/skydive/graffiti/api/server" + "github.com/skydive-project/skydive/graffiti/api/types" etcd "github.com/skydive-project/skydive/graffiti/etcd/client" "github.com/skydive-project/skydive/graffiti/graph" "github.com/skydive-project/skydive/graffiti/graph/traversal" + "github.com/skydive-project/skydive/graffiti/js" "github.com/skydive-project/skydive/graffiti/logging" ws "github.com/skydive-project/skydive/graffiti/websocket" - "github.com/skydive-project/skydive/js" ) const ( diff --git a/api/server/alert.go b/graffiti/api/server/alert.go similarity index 76% rename from api/server/alert.go rename to graffiti/api/server/alert.go index ef0869269c..6e4b636cf0 100644 --- a/api/server/alert.go +++ b/graffiti/api/server/alert.go @@ -1,5 +1,5 @@ -//go:generate sh -c "go run github.com/gomatic/renderizer --name=alert --resource=alert --type=Alert --title=Alert --article=an swagger_operations.tmpl > alert_swagger.go" -//go:generate sh -c "go run github.com/gomatic/renderizer --name=alert --resource=alert --type=Alert --title=Alert swagger_definitions.tmpl > alert_swagger.json" +//go:generate sh -c "go run github.com/gomatic/renderizer --name=alert --resource=alert --type=Alert --title=Alert --article=an ../../../api/server/swagger_operations.tmpl > alert_swagger.go" +//go:generate sh -c "go run github.com/gomatic/renderizer --name=alert --resource=alert --type=Alert --title=Alert ../../../api/server/swagger_definitions.tmpl > alert_swagger.json" /* * Copyright (C) 2016 Red Hat, Inc. @@ -23,9 +23,8 @@ package server import ( "time" - "github.com/skydive-project/skydive/api/types" "github.com/skydive-project/skydive/graffiti/api/rest" - api "github.com/skydive-project/skydive/graffiti/api/server" + "github.com/skydive-project/skydive/graffiti/api/types" shttp "github.com/skydive-project/skydive/graffiti/http" ) @@ -52,15 +51,13 @@ func (a *AlertResourceHandler) Name() string { } // RegisterAlertAPI registers an Alert's API to a designated API Server -func RegisterAlertAPI(apiServer *api.Server, authBackend shttp.AuthenticationBackend) (*AlertAPIHandler, error) { +func RegisterAlertAPI(apiServer *Server, authBackend shttp.AuthenticationBackend) *AlertAPIHandler { alertAPIHandler := &AlertAPIHandler{ BasicAPIHandler: rest.BasicAPIHandler{ ResourceHandler: &AlertResourceHandler{}, EtcdClient: apiServer.EtcdClient, }, } - if err := apiServer.RegisterAPIHandler(alertAPIHandler, authBackend); err != nil { - return nil, err - } - return alertAPIHandler, nil + apiServer.RegisterAPIHandler(alertAPIHandler, authBackend) + return alertAPIHandler } diff --git a/graffiti/api/server/edge.go b/graffiti/api/server/edge.go index ac8bc2b046..39a113aeb4 100644 --- a/graffiti/api/server/edge.go +++ b/graffiti/api/server/edge.go @@ -137,12 +137,10 @@ func (h *EdgeAPIHandler) Update(id string, resource rest.Resource) (rest.Resourc } // RegisterEdgeAPI registers the edge API -func RegisterEdgeAPI(apiServer *Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) (*EdgeAPIHandler, error) { +func RegisterEdgeAPI(apiServer *Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) *EdgeAPIHandler { edgeAPIHandler := &EdgeAPIHandler{ g: g, } - if err := apiServer.RegisterAPIHandler(edgeAPIHandler, authBackend); err != nil { - return nil, err - } - return edgeAPIHandler, nil + apiServer.RegisterAPIHandler(edgeAPIHandler, authBackend) + return edgeAPIHandler } diff --git a/graffiti/api/server/node.go b/graffiti/api/server/node.go index eedc38899a..b9de48f808 100644 --- a/graffiti/api/server/node.go +++ b/graffiti/api/server/node.go @@ -150,12 +150,10 @@ func (h *NodeAPIHandler) Update(id string, resource rest.Resource) (rest.Resourc } // RegisterNodeAPI registers the node API -func RegisterNodeAPI(apiServer *Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) (*NodeAPIHandler, error) { +func RegisterNodeAPI(apiServer *Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) *NodeAPIHandler { nodeAPIHandler := &NodeAPIHandler{ g: g, } - if err := apiServer.RegisterAPIHandler(nodeAPIHandler, authBackend); err != nil { - return nil, err - } - return nodeAPIHandler, nil + apiServer.RegisterAPIHandler(nodeAPIHandler, authBackend) + return nodeAPIHandler } diff --git a/graffiti/api/server/server.go b/graffiti/api/server/server.go index bf4e6de87c..44c04197d4 100644 --- a/graffiti/api/server/server.go +++ b/graffiti/api/server/server.go @@ -92,7 +92,7 @@ func (r ResourceNotFound) Error() string { } // RegisterAPIHandler registers a new handler for an API -func (a *Server) RegisterAPIHandler(handler rest.Handler, authBackend shttp.AuthenticationBackend) error { +func (a *Server) RegisterAPIHandler(handler rest.Handler, authBackend shttp.AuthenticationBackend) { name := handler.Name() title := strings.Title(name) @@ -297,10 +297,7 @@ func (a *Server) RegisterAPIHandler(handler rest.Handler, authBackend shttp.Auth } a.HTTPServer.RegisterRoutes(routes, authBackend) - a.handlers[handler.Name()] = handler - - return nil } func (a *Server) addAPIRootRoute(version, hostID string, kind service.Type, authBackend shttp.AuthenticationBackend) { diff --git a/graffiti/api/server/workflow.go b/graffiti/api/server/workflow.go new file mode 100644 index 0000000000..edf469cb3b --- /dev/null +++ b/graffiti/api/server/workflow.go @@ -0,0 +1,223 @@ +//go:generate sh -c "go run github.com/gomatic/renderizer --name=workflow --resource=workflow --type=Workflow --title=Workflow --article=a ../../../api/server/swagger_operations.tmpl > workflow_swagger.go" +//go:generate sh -c "go run github.com/gomatic/renderizer --name=workflow --resource=workflow --type=Workflow --title=Workflow --article=a ../../../api/server/swagger_definitions.tmpl > workflow_swagger.json" + +/* + * Copyright (C) 2018 Red Hat, 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 ofthe 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 specificlanguage governing permissions and + * limitations under the License. + * + */ + +package server + +import ( + "encoding/json" + "fmt" + "net/http" + + auth "github.com/abbot/go-http-auth" + "github.com/gorilla/mux" + "github.com/skydive-project/skydive/graffiti/api/rest" + "github.com/skydive-project/skydive/graffiti/api/types" + "github.com/skydive-project/skydive/graffiti/assets" + "github.com/skydive-project/skydive/graffiti/graph" + "github.com/skydive-project/skydive/graffiti/graph/traversal" + shttp "github.com/skydive-project/skydive/graffiti/http" + "github.com/skydive-project/skydive/graffiti/js" + "github.com/skydive-project/skydive/graffiti/rbac" +) + +// StaticWorkflows holds a list of hardcoded workflows +var StaticWorkflows []*types.Workflow + +// WorkflowResourceHandler describes a workflow resource handler +type WorkflowResourceHandler struct { +} + +// WorkflowAPIHandler based on BasicAPIHandler +type WorkflowAPIHandler struct { + rest.BasicAPIHandler + apiServer *Server + graph *graph.Graph + parser *traversal.GremlinTraversalParser + runtime *js.Runtime +} + +// New creates a new workflow resource +func (w *WorkflowResourceHandler) New() rest.Resource { + return &types.Workflow{} +} + +// Name return "workflow" +func (w *WorkflowResourceHandler) Name() string { + return "workflow" +} + +// Create tests whether the resource is a duplicate or is unique +func (w *WorkflowAPIHandler) Create(r rest.Resource, opts *rest.CreateOptions) error { + workflow := r.(*types.Workflow) + + for _, resource := range w.Index() { + w := resource.(*types.Workflow) + if w.Name == workflow.Name { + return fmt.Errorf("Duplicate workflow, name=%s", w.Name) + } + } + + return w.BasicAPIHandler.Create(workflow, opts) +} + +// Get retrieves a workflow based on its id +func (w *WorkflowAPIHandler) Get(id string) (rest.Resource, bool) { + workflows := w.Index() + workflow, found := workflows[id] + if !found { + return nil, false + } + return workflow.(*types.Workflow), true +} + +// Index returns a map of workflows indexed by id +func (w *WorkflowAPIHandler) Index() map[string]rest.Resource { + resources := w.BasicAPIHandler.Index() + for _, workflow := range StaticWorkflows { + resources[workflow.GetID()] = workflow + } + return resources +} + +func (w *WorkflowAPIHandler) getWorkflow(id string) (*types.Workflow, error) { + handler := w.apiServer.GetHandler("workflow") + workflow, ok := handler.Get(id) + if !ok { + return nil, fmt.Errorf("No workflow found with ID: %s", id) + } + return workflow.(*types.Workflow), nil +} + +func (w *WorkflowAPIHandler) executeWorkflow(resp http.ResponseWriter, r *auth.AuthenticatedRequest) { + if !rbac.Enforce(r.Username, "workflow.call", "write") { + resp.WriteHeader(http.StatusMethodNotAllowed) + return + } + + decoder := json.NewDecoder(r.Body) + var wfCall types.WorkflowCall + if err := decoder.Decode(&wfCall); err != nil { + http.Error(resp, err.Error(), http.StatusBadRequest) + return + } + + vars := mux.Vars(&r.Request) + + workflow, err := w.getWorkflow(vars["ID"]) + if err != nil { + http.Error(resp, err.Error(), http.StatusBadRequest) + return + } + + ottoResult, err := w.runtime.ExecFunction(workflow.Source, wfCall.Params...) + if err != nil { + http.Error(resp, err.Error(), http.StatusBadRequest) + return + } + + result, err := ottoResult.Export() + if err != nil { + http.Error(resp, err.Error(), http.StatusBadRequest) + return + } + resp.Header().Set("Content-Type", "application/json; charset=UTF-8") + resp.WriteHeader(http.StatusOK) + if err := json.NewEncoder(resp).Encode(result); err != nil { + panic(err) + } +} + +func (w *WorkflowAPIHandler) registerEndPoints(s *shttp.Server, authBackend shttp.AuthenticationBackend) { + // swagger:operation POST /workflow/{id}/call callWorkflow + // + // Call workflow + // + // --- + // summary: Call workflow + // + // tags: + // - Workflows + // + // consumes: + // - application/json + // + // produces: + // - application/json + // + // schemes: + // - http + // - https + // + // parameters: + // - name: id + // in: path + // required: true + // type: string + // + // - name: params + // in: body + // required: true + // schema: + // $ref: '#/definitions/WorkflowCall' + // + // responses: + // 202: + // description: Request accepted + // schema: + // $ref: '#/definitions/AnyValue' + // + // 400: + // description: Invalid PCAP + + routes := []shttp.Route{ + { + Name: "WorkflowCall", + Method: "POST", + Path: "/api/workflow/{ID}/call", + HandlerFunc: w.executeWorkflow, + }, + } + + s.RegisterRoutes(routes, authBackend) +} + +// RegisterWorkflowAPI registers a new workflow api handler +func RegisterWorkflowAPI(apiServer *Server, g *graph.Graph, parser *traversal.GremlinTraversalParser, assets assets.Assets, authBackend shttp.AuthenticationBackend) (*WorkflowAPIHandler, error) { + runtime, err := NewWorkflowRuntime(g, parser, apiServer, assets) + if err != nil { + return nil, err + } + + workflowAPIHandler := &WorkflowAPIHandler{ + BasicAPIHandler: rest.BasicAPIHandler{ + ResourceHandler: &WorkflowResourceHandler{}, + EtcdClient: apiServer.EtcdClient, + }, + apiServer: apiServer, + graph: g, + parser: parser, + runtime: runtime, + } + + apiServer.RegisterAPIHandler(workflowAPIHandler, authBackend) + workflowAPIHandler.registerEndPoints(apiServer.HTTPServer, authBackend) + + return workflowAPIHandler, nil +} diff --git a/api/server/workflow_runtime.go b/graffiti/api/server/workflow_runtime.go similarity index 96% rename from api/server/workflow_runtime.go rename to graffiti/api/server/workflow_runtime.go index 668b941964..0e108faeef 100644 --- a/api/server/workflow_runtime.go +++ b/graffiti/api/server/workflow_runtime.go @@ -22,17 +22,15 @@ import ( "fmt" "strings" - "github.com/skydive-project/skydive/js" - "github.com/robertkrimen/otto" - api "github.com/skydive-project/skydive/graffiti/api/server" "github.com/skydive-project/skydive/graffiti/api/types" "github.com/skydive-project/skydive/graffiti/graph" "github.com/skydive-project/skydive/graffiti/graph/traversal" + "github.com/skydive-project/skydive/graffiti/js" ) // NewWorkflowRuntime returns a new Workflow runtime -func NewWorkflowRuntime(g *graph.Graph, tr *traversal.GremlinTraversalParser, server *api.Server) (*js.Runtime, error) { +func NewWorkflowRuntime(g *graph.Graph, tr *traversal.GremlinTraversalParser, server *Server) (*js.Runtime, error) { runtime, err := js.NewRuntime() if err != nil { return nil, err diff --git a/graffiti/api/types/types.go b/graffiti/api/types/types.go index bf15d2c7cf..92db42d5e6 100644 --- a/graffiti/api/types/types.go +++ b/graffiti/api/types/types.go @@ -19,7 +19,48 @@ package types -import "github.com/skydive-project/skydive/graffiti/graph" +import ( + "time" + + "github.com/skydive-project/skydive/graffiti/api/rest" + "github.com/skydive-project/skydive/graffiti/graph" +) + +// Alert object +// +// Alerts provide a way to be notified when a Gremlin expression +// is evaluated to true. +// +// easyjson:json +// swagger:model Alert +type Alert struct { + // swagger:allOf + rest.BasicResource `yaml:",inline"` + // Alert name + Name string `json:",omitempty" yaml:"Name"` + // Alert description + Description string `json:",omitempty" yaml:"Description"` + // Gremlin or JavaScript expression evaluated to trigger the alarm + Expression string `json:",omitempty" valid:"nonzero" yaml:"Expression"` + // Action to execute when the alert is triggered. + // Can be either an empty string, or a URL (use 'file://' for local scripts) + Action string `json:",omitempty" valid:"regexp=^(|http://|https://|file://).*$" yaml:"Action"` + // Event that triggers the alert evaluation + Trigger string `json:",omitempty" valid:"regexp=^(graph|duration:.+|)$" yaml:"Trigger"` + CreateTime time.Time +} + +// GetName returns the resource name +func (a *Alert) GetName() string { + return "Alert" +} + +// NewAlert creates a New empty Alert, only CreateTime is set. +func NewAlert() *Alert { + return &Alert{ + CreateTime: time.Now().UTC(), + } +} // Edge object // easyjson:json @@ -77,3 +118,50 @@ func (n *Node) Validate() error { type TopologyParams struct { GremlinQuery string `json:"GremlinQuery,omitempty" valid:"isGremlinExpr" yaml:"GremlinQuery"` } + +// WorkflowChoice describes one value within a choice +// easyjson:json +// swagger:model +type WorkflowChoice struct { + Value string `yaml:"Value"` + Description string `yaml:"Description"` +} + +// WorkflowParam describes a workflow parameter +// easyjson:json +// swagger:model +type WorkflowParam struct { + Name string `yaml:"Name"` + Description string `yaml:"Description"` + Type string `yaml:"Type"` + Default interface{} `yaml:"Default"` + Values []WorkflowChoice `yaml:"Values"` +} + +// Workflow object +// +// Workflow allows to automate actions using JavaScript. +// +// easyjson:json +// swagger:model +type Workflow struct { + // swagger:allOf + rest.BasicResource `yaml:",inline"` + // Workflow name + Name string `yaml:"Name" valid:"nonzero"` + // Workflow title + Title string `yaml:"Title"` + // Workflow abstract + Abstract string `yaml:"Abstract"` + // Workflow description + Description string `yaml:"Description"` + // Workflow parameters + Parameters []WorkflowParam `yaml:"Parameters"` + Source string `valid:"isValidWorkflow" yaml:"Source"` +} + +// WorkflowCall describes workflow call +// swagger:model +type WorkflowCall struct { + Params []interface{} +} diff --git a/graffiti/api/types/types_easyjson.go b/graffiti/api/types/types_easyjson.go index 0379abec50..d744dc5ddd 100644 --- a/graffiti/api/types/types_easyjson.go +++ b/graffiti/api/types/types_easyjson.go @@ -18,7 +18,358 @@ var ( _ easyjson.Marshaler ) -func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(in *jlexer.Lexer, out *TopologyParams) { +func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(in *jlexer.Lexer, out *WorkflowParam) { + isTopLevel := in.IsStart() + if in.IsNull() { + if isTopLevel { + in.Consumed() + } + in.Skip() + return + } + in.Delim('{') + for !in.IsDelim('}') { + key := in.UnsafeFieldName(false) + in.WantColon() + if in.IsNull() { + in.Skip() + in.WantComma() + continue + } + switch key { + case "Name": + out.Name = string(in.String()) + case "Description": + out.Description = string(in.String()) + case "Type": + out.Type = string(in.String()) + case "Default": + if m, ok := out.Default.(easyjson.Unmarshaler); ok { + m.UnmarshalEasyJSON(in) + } else if m, ok := out.Default.(json.Unmarshaler); ok { + _ = m.UnmarshalJSON(in.Raw()) + } else { + out.Default = in.Interface() + } + case "Values": + if in.IsNull() { + in.Skip() + out.Values = nil + } else { + in.Delim('[') + if out.Values == nil { + if !in.IsDelim(']') { + out.Values = make([]WorkflowChoice, 0, 2) + } else { + out.Values = []WorkflowChoice{} + } + } else { + out.Values = (out.Values)[:0] + } + for !in.IsDelim(']') { + var v1 WorkflowChoice + (v1).UnmarshalEasyJSON(in) + out.Values = append(out.Values, v1) + in.WantComma() + } + in.Delim(']') + } + default: + in.SkipRecursive() + } + in.WantComma() + } + in.Delim('}') + if isTopLevel { + in.Consumed() + } +} +func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(out *jwriter.Writer, in WorkflowParam) { + out.RawByte('{') + first := true + _ = first + { + const prefix string = ",\"Name\":" + out.RawString(prefix[1:]) + out.String(string(in.Name)) + } + { + const prefix string = ",\"Description\":" + out.RawString(prefix) + out.String(string(in.Description)) + } + { + const prefix string = ",\"Type\":" + out.RawString(prefix) + out.String(string(in.Type)) + } + { + const prefix string = ",\"Default\":" + out.RawString(prefix) + if m, ok := in.Default.(easyjson.Marshaler); ok { + m.MarshalEasyJSON(out) + } else if m, ok := in.Default.(json.Marshaler); ok { + out.Raw(m.MarshalJSON()) + } else { + out.Raw(json.Marshal(in.Default)) + } + } + { + const prefix string = ",\"Values\":" + out.RawString(prefix) + if in.Values == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 { + out.RawString("null") + } else { + out.RawByte('[') + for v2, v3 := range in.Values { + if v2 > 0 { + out.RawByte(',') + } + (v3).MarshalEasyJSON(out) + } + out.RawByte(']') + } + } + out.RawByte('}') +} + +// MarshalJSON supports json.Marshaler interface +func (v WorkflowParam) MarshalJSON() ([]byte, error) { + w := jwriter.Writer{} + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(&w, v) + return w.Buffer.BuildBytes(), w.Error +} + +// MarshalEasyJSON supports easyjson.Marshaler interface +func (v WorkflowParam) MarshalEasyJSON(w *jwriter.Writer) { + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(w, v) +} + +// UnmarshalJSON supports json.Unmarshaler interface +func (v *WorkflowParam) UnmarshalJSON(data []byte) error { + r := jlexer.Lexer{Data: data} + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(&r, v) + return r.Error() +} + +// UnmarshalEasyJSON supports easyjson.Unmarshaler interface +func (v *WorkflowParam) UnmarshalEasyJSON(l *jlexer.Lexer) { + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(l, v) +} +func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(in *jlexer.Lexer, out *WorkflowChoice) { + isTopLevel := in.IsStart() + if in.IsNull() { + if isTopLevel { + in.Consumed() + } + in.Skip() + return + } + in.Delim('{') + for !in.IsDelim('}') { + key := in.UnsafeFieldName(false) + in.WantColon() + if in.IsNull() { + in.Skip() + in.WantComma() + continue + } + switch key { + case "Value": + out.Value = string(in.String()) + case "Description": + out.Description = string(in.String()) + default: + in.SkipRecursive() + } + in.WantComma() + } + in.Delim('}') + if isTopLevel { + in.Consumed() + } +} +func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(out *jwriter.Writer, in WorkflowChoice) { + out.RawByte('{') + first := true + _ = first + { + const prefix string = ",\"Value\":" + out.RawString(prefix[1:]) + out.String(string(in.Value)) + } + { + const prefix string = ",\"Description\":" + out.RawString(prefix) + out.String(string(in.Description)) + } + out.RawByte('}') +} + +// MarshalJSON supports json.Marshaler interface +func (v WorkflowChoice) MarshalJSON() ([]byte, error) { + w := jwriter.Writer{} + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(&w, v) + return w.Buffer.BuildBytes(), w.Error +} + +// MarshalEasyJSON supports easyjson.Marshaler interface +func (v WorkflowChoice) MarshalEasyJSON(w *jwriter.Writer) { + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(w, v) +} + +// UnmarshalJSON supports json.Unmarshaler interface +func (v *WorkflowChoice) UnmarshalJSON(data []byte) error { + r := jlexer.Lexer{Data: data} + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(&r, v) + return r.Error() +} + +// UnmarshalEasyJSON supports easyjson.Unmarshaler interface +func (v *WorkflowChoice) UnmarshalEasyJSON(l *jlexer.Lexer) { + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(l, v) +} +func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(in *jlexer.Lexer, out *Workflow) { + isTopLevel := in.IsStart() + if in.IsNull() { + if isTopLevel { + in.Consumed() + } + in.Skip() + return + } + in.Delim('{') + for !in.IsDelim('}') { + key := in.UnsafeFieldName(false) + in.WantColon() + if in.IsNull() { + in.Skip() + in.WantComma() + continue + } + switch key { + case "Name": + out.Name = string(in.String()) + case "Title": + out.Title = string(in.String()) + case "Abstract": + out.Abstract = string(in.String()) + case "Description": + out.Description = string(in.String()) + case "Parameters": + if in.IsNull() { + in.Skip() + out.Parameters = nil + } else { + in.Delim('[') + if out.Parameters == nil { + if !in.IsDelim(']') { + out.Parameters = make([]WorkflowParam, 0, 0) + } else { + out.Parameters = []WorkflowParam{} + } + } else { + out.Parameters = (out.Parameters)[:0] + } + for !in.IsDelim(']') { + var v4 WorkflowParam + (v4).UnmarshalEasyJSON(in) + out.Parameters = append(out.Parameters, v4) + in.WantComma() + } + in.Delim(']') + } + case "Source": + out.Source = string(in.String()) + case "UUID": + out.UUID = string(in.String()) + default: + in.SkipRecursive() + } + in.WantComma() + } + in.Delim('}') + if isTopLevel { + in.Consumed() + } +} +func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(out *jwriter.Writer, in Workflow) { + out.RawByte('{') + first := true + _ = first + { + const prefix string = ",\"Name\":" + out.RawString(prefix[1:]) + out.String(string(in.Name)) + } + { + const prefix string = ",\"Title\":" + out.RawString(prefix) + out.String(string(in.Title)) + } + { + const prefix string = ",\"Abstract\":" + out.RawString(prefix) + out.String(string(in.Abstract)) + } + { + const prefix string = ",\"Description\":" + out.RawString(prefix) + out.String(string(in.Description)) + } + { + const prefix string = ",\"Parameters\":" + out.RawString(prefix) + if in.Parameters == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 { + out.RawString("null") + } else { + out.RawByte('[') + for v5, v6 := range in.Parameters { + if v5 > 0 { + out.RawByte(',') + } + (v6).MarshalEasyJSON(out) + } + out.RawByte(']') + } + } + { + const prefix string = ",\"Source\":" + out.RawString(prefix) + out.String(string(in.Source)) + } + { + const prefix string = ",\"UUID\":" + out.RawString(prefix) + out.String(string(in.UUID)) + } + out.RawByte('}') +} + +// MarshalJSON supports json.Marshaler interface +func (v Workflow) MarshalJSON() ([]byte, error) { + w := jwriter.Writer{} + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(&w, v) + return w.Buffer.BuildBytes(), w.Error +} + +// MarshalEasyJSON supports easyjson.Marshaler interface +func (v Workflow) MarshalEasyJSON(w *jwriter.Writer) { + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(w, v) +} + +// UnmarshalJSON supports json.Unmarshaler interface +func (v *Workflow) UnmarshalJSON(data []byte) error { + r := jlexer.Lexer{Data: data} + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(&r, v) + return r.Error() +} + +// UnmarshalEasyJSON supports easyjson.Unmarshaler interface +func (v *Workflow) UnmarshalEasyJSON(l *jlexer.Lexer) { + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(l, v) +} +func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes3(in *jlexer.Lexer, out *TopologyParams) { isTopLevel := in.IsStart() if in.IsNull() { if isTopLevel { @@ -49,7 +400,7 @@ func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(in *jl in.Consumed() } } -func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(out *jwriter.Writer, in TopologyParams) { +func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes3(out *jwriter.Writer, in TopologyParams) { out.RawByte('{') first := true _ = first @@ -65,27 +416,27 @@ func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(out *j // MarshalJSON supports json.Marshaler interface func (v TopologyParams) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(&w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes3(&w, v) return w.Buffer.BuildBytes(), w.Error } // MarshalEasyJSON supports easyjson.Marshaler interface func (v TopologyParams) MarshalEasyJSON(w *jwriter.Writer) { - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes3(w, v) } // UnmarshalJSON supports json.Unmarshaler interface func (v *TopologyParams) UnmarshalJSON(data []byte) error { r := jlexer.Lexer{Data: data} - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(&r, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes3(&r, v) return r.Error() } // UnmarshalEasyJSON supports easyjson.Unmarshaler interface func (v *TopologyParams) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes(l, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes3(l, v) } -func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(in *jlexer.Lexer, out *Node) { +func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes4(in *jlexer.Lexer, out *Node) { isTopLevel := in.IsStart() if in.IsNull() { if isTopLevel { @@ -115,15 +466,15 @@ func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(in *j for !in.IsDelim('}') { key := string(in.String()) in.WantColon() - var v1 interface{} - if m, ok := v1.(easyjson.Unmarshaler); ok { + var v7 interface{} + if m, ok := v7.(easyjson.Unmarshaler); ok { m.UnmarshalEasyJSON(in) - } else if m, ok := v1.(json.Unmarshaler); ok { + } else if m, ok := v7.(json.Unmarshaler); ok { _ = m.UnmarshalJSON(in.Raw()) } else { - v1 = in.Interface() + v7 = in.Interface() } - (out.Metadata)[key] = v1 + (out.Metadata)[key] = v7 in.WantComma() } in.Delim('}') @@ -156,7 +507,7 @@ func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(in *j in.Consumed() } } -func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(out *jwriter.Writer, in Node) { +func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes4(out *jwriter.Writer, in Node) { out.RawByte('{') first := true _ = first @@ -172,21 +523,21 @@ func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(out * out.RawString(`null`) } else { out.RawByte('{') - v2First := true - for v2Name, v2Value := range in.Metadata { - if v2First { - v2First = false + v8First := true + for v8Name, v8Value := range in.Metadata { + if v8First { + v8First = false } else { out.RawByte(',') } - out.String(string(v2Name)) + out.String(string(v8Name)) out.RawByte(':') - if m, ok := v2Value.(easyjson.Marshaler); ok { + if m, ok := v8Value.(easyjson.Marshaler); ok { m.MarshalEasyJSON(out) - } else if m, ok := v2Value.(json.Marshaler); ok { + } else if m, ok := v8Value.(json.Marshaler); ok { out.Raw(m.MarshalJSON()) } else { - out.Raw(json.Marshal(v2Value)) + out.Raw(json.Marshal(v8Value)) } } out.RawByte('}') @@ -228,27 +579,27 @@ func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(out * // MarshalJSON supports json.Marshaler interface func (v Node) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(&w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes4(&w, v) return w.Buffer.BuildBytes(), w.Error } // MarshalEasyJSON supports easyjson.Marshaler interface func (v Node) MarshalEasyJSON(w *jwriter.Writer) { - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes4(w, v) } // UnmarshalJSON supports json.Unmarshaler interface func (v *Node) UnmarshalJSON(data []byte) error { r := jlexer.Lexer{Data: data} - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(&r, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes4(&r, v) return r.Error() } // UnmarshalEasyJSON supports easyjson.Unmarshaler interface func (v *Node) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes1(l, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes4(l, v) } -func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(in *jlexer.Lexer, out *Edge) { +func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes5(in *jlexer.Lexer, out *Edge) { isTopLevel := in.IsStart() if in.IsNull() { if isTopLevel { @@ -282,15 +633,15 @@ func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(in *j for !in.IsDelim('}') { key := string(in.String()) in.WantColon() - var v3 interface{} - if m, ok := v3.(easyjson.Unmarshaler); ok { + var v9 interface{} + if m, ok := v9.(easyjson.Unmarshaler); ok { m.UnmarshalEasyJSON(in) - } else if m, ok := v3.(json.Unmarshaler); ok { + } else if m, ok := v9.(json.Unmarshaler); ok { _ = m.UnmarshalJSON(in.Raw()) } else { - v3 = in.Interface() + v9 = in.Interface() } - (out.Metadata)[key] = v3 + (out.Metadata)[key] = v9 in.WantComma() } in.Delim('}') @@ -323,7 +674,7 @@ func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(in *j in.Consumed() } } -func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(out *jwriter.Writer, in Edge) { +func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes5(out *jwriter.Writer, in Edge) { out.RawByte('{') first := true _ = first @@ -349,21 +700,21 @@ func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(out * out.RawString(`null`) } else { out.RawByte('{') - v4First := true - for v4Name, v4Value := range in.Metadata { - if v4First { - v4First = false + v10First := true + for v10Name, v10Value := range in.Metadata { + if v10First { + v10First = false } else { out.RawByte(',') } - out.String(string(v4Name)) + out.String(string(v10Name)) out.RawByte(':') - if m, ok := v4Value.(easyjson.Marshaler); ok { + if m, ok := v10Value.(easyjson.Marshaler); ok { m.MarshalEasyJSON(out) - } else if m, ok := v4Value.(json.Marshaler); ok { + } else if m, ok := v10Value.(json.Marshaler); ok { out.Raw(m.MarshalJSON()) } else { - out.Raw(json.Marshal(v4Value)) + out.Raw(json.Marshal(v10Value)) } } out.RawByte('}') @@ -405,23 +756,159 @@ func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(out * // MarshalJSON supports json.Marshaler interface func (v Edge) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(&w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes5(&w, v) return w.Buffer.BuildBytes(), w.Error } // MarshalEasyJSON supports easyjson.Marshaler interface func (v Edge) MarshalEasyJSON(w *jwriter.Writer) { - easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(w, v) + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes5(w, v) } // UnmarshalJSON supports json.Unmarshaler interface func (v *Edge) UnmarshalJSON(data []byte) error { r := jlexer.Lexer{Data: data} - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(&r, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes5(&r, v) return r.Error() } // UnmarshalEasyJSON supports easyjson.Unmarshaler interface func (v *Edge) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes2(l, v) + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes5(l, v) +} +func easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes6(in *jlexer.Lexer, out *Alert) { + isTopLevel := in.IsStart() + if in.IsNull() { + if isTopLevel { + in.Consumed() + } + in.Skip() + return + } + in.Delim('{') + for !in.IsDelim('}') { + key := in.UnsafeFieldName(false) + in.WantColon() + if in.IsNull() { + in.Skip() + in.WantComma() + continue + } + switch key { + case "Name": + out.Name = string(in.String()) + case "Description": + out.Description = string(in.String()) + case "Expression": + out.Expression = string(in.String()) + case "Action": + out.Action = string(in.String()) + case "Trigger": + out.Trigger = string(in.String()) + case "CreateTime": + if data := in.Raw(); in.Ok() { + in.AddError((out.CreateTime).UnmarshalJSON(data)) + } + case "UUID": + out.UUID = string(in.String()) + default: + in.SkipRecursive() + } + in.WantComma() + } + in.Delim('}') + if isTopLevel { + in.Consumed() + } +} +func easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes6(out *jwriter.Writer, in Alert) { + out.RawByte('{') + first := true + _ = first + if in.Name != "" { + const prefix string = ",\"Name\":" + first = false + out.RawString(prefix[1:]) + out.String(string(in.Name)) + } + if in.Description != "" { + const prefix string = ",\"Description\":" + if first { + first = false + out.RawString(prefix[1:]) + } else { + out.RawString(prefix) + } + out.String(string(in.Description)) + } + if in.Expression != "" { + const prefix string = ",\"Expression\":" + if first { + first = false + out.RawString(prefix[1:]) + } else { + out.RawString(prefix) + } + out.String(string(in.Expression)) + } + if in.Action != "" { + const prefix string = ",\"Action\":" + if first { + first = false + out.RawString(prefix[1:]) + } else { + out.RawString(prefix) + } + out.String(string(in.Action)) + } + if in.Trigger != "" { + const prefix string = ",\"Trigger\":" + if first { + first = false + out.RawString(prefix[1:]) + } else { + out.RawString(prefix) + } + out.String(string(in.Trigger)) + } + { + const prefix string = ",\"CreateTime\":" + if first { + first = false + out.RawString(prefix[1:]) + } else { + out.RawString(prefix) + } + out.Raw((in.CreateTime).MarshalJSON()) + } + { + const prefix string = ",\"UUID\":" + out.RawString(prefix) + out.String(string(in.UUID)) + } + out.RawByte('}') +} + +// MarshalJSON supports json.Marshaler interface +func (v Alert) MarshalJSON() ([]byte, error) { + w := jwriter.Writer{} + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes6(&w, v) + return w.Buffer.BuildBytes(), w.Error +} + +// MarshalEasyJSON supports easyjson.Marshaler interface +func (v Alert) MarshalEasyJSON(w *jwriter.Writer) { + easyjson6601e8cdEncodeGithubComSkydiveProjectSkydiveGraffitiApiTypes6(w, v) +} + +// UnmarshalJSON supports json.Unmarshaler interface +func (v *Alert) UnmarshalJSON(data []byte) error { + r := jlexer.Lexer{Data: data} + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes6(&r, v) + return r.Error() +} + +// UnmarshalEasyJSON supports easyjson.Unmarshaler interface +func (v *Alert) UnmarshalEasyJSON(l *jlexer.Lexer) { + easyjson6601e8cdDecodeGithubComSkydiveProjectSkydiveGraffitiApiTypes6(l, v) } diff --git a/graffiti/go.mod b/graffiti/go.mod index 3e9f6e35d2..38d2fcc7c5 100644 --- a/graffiti/go.mod +++ b/graffiti/go.mod @@ -33,6 +33,7 @@ require ( github.com/pierrec/xxHash v0.1.5 github.com/pkg/errors v0.9.1 github.com/pmylund/go-cache v2.1.0+incompatible + github.com/robertkrimen/otto v0.0.0-20200922221731-ef014fd054ac github.com/safchain/insanelock v0.0.0-20200217234559-cfbf166e05b3 github.com/skydive-project/go-debouncer v1.0.0 github.com/spf13/cast v1.3.1 @@ -42,6 +43,7 @@ require ( go.uber.org/zap v1.16.0 golang.org/x/net v0.0.0-20200202094626-16171245cfb2 golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc + gopkg.in/sourcemap.v1 v1.0.5 // indirect gopkg.in/yaml.v2 v2.3.0 sigs.k8s.io/yaml v1.2.0 // indirect ) diff --git a/graffiti/hub/hub.go b/graffiti/hub/hub.go index 051197033a..0a638bc2e8 100644 --- a/graffiti/hub/hub.go +++ b/graffiti/hub/hub.go @@ -27,6 +27,7 @@ import ( etcd "github.com/coreos/etcd/client" + "github.com/skydive-project/skydive/graffiti/alert" api "github.com/skydive-project/skydive/graffiti/api/server" gc "github.com/skydive-project/skydive/graffiti/common" etcdclient "github.com/skydive-project/skydive/graffiti/etcd/client" @@ -75,6 +76,7 @@ type Hub struct { cached *graph.CachedBackend httpServer *shttp.Server apiServer *api.Server + alertServer *alert.Server embeddedEtcd *etcdserver.EmbeddedServer etcdClient *etcdclient.Client podWSServer *websocket.StructServer @@ -88,6 +90,11 @@ type Hub struct { masterElection etcdclient.MasterElection } +// ElectionStatus describes the status of an election +type ElectionStatus struct { + IsMaster bool +} + // PeersStatus describes the state of a peer type PeersStatus struct { Incomers map[string]websocket.ConnStatus @@ -96,6 +103,7 @@ type PeersStatus struct { // Status describes the status of a hub type Status struct { + Alerts ElectionStatus Pods map[string]websocket.ConnStatus Peers PeersStatus Publishers map[string]websocket.ConnStatus @@ -122,6 +130,7 @@ func (h *Hub) GetStatus() interface{} { Peers: peersStatus, Publishers: h.publisherWSServer.GetStatus(), Subscribers: h.subscriberWSServer.GetStatus(), + Alerts: ElectionStatus{IsMaster: h.alertServer.IsMaster()}, } } @@ -134,6 +143,7 @@ func (h *Hub) OnStarted() { return } + h.alertServer.Start() h.podWSServer.Start() h.replicationWSServer.Start() h.replicationEndpoint.ConnectPeers() @@ -165,6 +175,7 @@ func (h *Hub) Stop() { h.replicationWSServer.Stop() h.publisherWSServer.Stop() h.subscriberWSServer.Stop() + h.alertServer.Stop() h.cached.Stop() h.masterElection.Stop() if h.embeddedEtcd != nil { @@ -312,8 +323,14 @@ func NewHub(id string, serviceType service.Type, listen string, g *graph.Graph, return nil, err } + alertServer, err := alert.NewServer(apiServer, subscriberWSServer, g, tr, opts.EtcdClient) + if err != nil { + return nil, err + } + hub.httpServer = httpServer hub.apiServer = apiServer + hub.alertServer = alertServer hub.podWSServer = podWSServer hub.replicationEndpoint = replicationEndpoint hub.replicationWSServer = replicationWSServer @@ -333,6 +350,16 @@ func NewHub(id string, serviceType service.Type, listen string, g *graph.Graph, api.RegisterTopologyAPI(httpServer, g, tr, opts.APIAuthBackend, opts.TopologyMarshallers) api.RegisterNodeAPI(apiServer, g, opts.APIAuthBackend) api.RegisterEdgeAPI(apiServer, g, opts.APIAuthBackend) + api.RegisterAlertAPI(apiServer, opts.APIAuthBackend) + + if _, err := api.RegisterWorkflowAPI(apiServer, g, tr, opts.Assets, opts.APIAuthBackend); err != nil { + return nil, err + } + + hub.alertServer, err = alert.NewServer(apiServer, subscriberWSServer, g, tr, opts.EtcdClient, opts.Assets) + if err != nil { + return nil, err + } return hub, nil } diff --git a/graffiti/js/api.js b/graffiti/js/api.js new file mode 100644 index 0000000000..4840e7f797 --- /dev/null +++ b/graffiti/js/api.js @@ -0,0 +1,1034 @@ +"use strict"; +/* + * Copyright (C) 2018 Red Hat, 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 ofthe 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 specificlanguage governing permissions and + * limitations under the License. + * + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var makeRequest = null; +var Unauthorized = "Unauthorized"; +var jsEnv = require("browser-or-node"); +if (jsEnv) { + var querystring = require('qs'); + var defaultsDeep = require('lodash.defaultsdeep'); + // When using node, we use najax for $.ajax calls + if (jsEnv.isNode && !jsEnv.isBrowser) { + var najax = require('najax'); + global.$ = { "ajax": najax }; + } + makeRequest = function (client, url, method, data, opts) { + return new Promise(function (resolve, reject) { + return $.ajax(defaultsDeep(opts, { + dataType: "json", + url: client.baseURL + url, + data: data, + contentType: "application/json; charset=utf-8", + method: method + })) + .fail(function (jqXHR) { + if (jqXHR.status == 401) { + reject(Unauthorized); + } + else { + reject(jqXHR); + } + }) + .done(function (data, statusText, jqXHR) { + if (jqXHR.status >= 200 && jqXHR.status < 400) { + var cookie = jqXHR.getResponseHeader("Set-Cookie"); + if (cookie) { + client.cookie = cookie; + } + resolve(data, jqXHR); + } + else { + reject(jqXHR); + } + }); + }); + }; +} +else { + // We're running inside Otto. We use the 'request' method + // exported by Skydive that makes use of the REST client + // so we get support for authentication + makeRequest = function (client, url, method, body, opts) { + var data; + var output = request(url, method, body); + if (output && output.length > 0) { + data = JSON.parse(output); + } + else { + data = null; + } + return { 'then': function () { return data; } }; + }; +} +function paramsString(params) { + var s = ""; + for (var param in params) { + if (param !== "0") { + s += ", "; + } + switch (typeof params[param]) { + case "string": + s += '"' + params[param] + '"'; + break; + default: + s += params[param]; + break; + } + } + return s; +} +// Returns a string of the invocation of 'method' with its parameters 'params' +// like MyMethod(1, 2, "s") +function callString(method) { + var params = []; + for (var _i = 1; _i < arguments.length; _i++) { + params[_i - 1] = arguments[_i]; + } + var s = method + "("; + s += paramsString(params); + s += ")"; + return s; +} +var SerializationHelper = /** @class */ (function () { + function SerializationHelper() { + } + SerializationHelper.toInstance = function (obj, jsonObj) { + if (typeof obj["fromJSON"] === "function") { + obj["fromJSON"](jsonObj); + } + else { + for (var propName in jsonObj) { + obj[propName] = jsonObj[propName]; + } + } + return obj; + }; + SerializationHelper.unmarshalArray = function (data, c) { + var items = []; + for (var obj in data) { + var newT = SerializationHelper.toInstance(new c(), data[obj]); + items.push(newT); + } + return items; + }; + SerializationHelper.unmarshalMapArray = function (data, c) { + var items = {}; + for (var key in data) { + items[key] = this.unmarshalArray(data[key], c); + } + return items; + }; + SerializationHelper.unmarshalMap = function (data, c) { + var items = {}; + for (var obj in data) { + var newT = SerializationHelper.toInstance(new c(), data[obj]); + items[obj] = newT; + } + return items; + }; + return SerializationHelper; +}()); +exports.SerializationHelper = SerializationHelper; +var APIObject = /** @class */ (function (_super) { + __extends(APIObject, _super); + function APIObject() { + return _super !== null && _super.apply(this, arguments) || this; + } + return APIObject; +}(Object)); +exports.APIObject = APIObject; +var Alert = /** @class */ (function (_super) { + __extends(Alert, _super); + function Alert() { + return _super !== null && _super.apply(this, arguments) || this; + } + return Alert; +}(APIObject)); +exports.Alert = Alert; +var Workflow = /** @class */ (function (_super) { + __extends(Workflow, _super); + function Workflow() { + return _super !== null && _super.apply(this, arguments) || this; + } + return Workflow; +}(APIObject)); +exports.Workflow = Workflow; +var API = /** @class */ (function () { + function API(client, resource, c) { + this.client = client; + this.Resource = resource; + this.Factory = c; + } + API.prototype.create = function (obj) { + var resource = this.Resource; + return this.client.request("/api/" + resource, "POST", JSON.stringify(obj), {}) + .then(function (data) { + return SerializationHelper.toInstance(new obj.constructor(), data); + }); + }; + API.prototype.list = function () { + var resource = this.Resource; + var factory = this.Factory; + return this.client.request('/api/' + resource, "GET", "", {}) + .then(function (data) { + var resources = {}; + for (var obj in data) { + var resource_1 = SerializationHelper.toInstance(new factory(), data[obj]); + resources[obj] = resource_1; + } + return resources; + }); + }; + API.prototype.get = function (id) { + var resource = this.Resource; + var factory = this.Factory; + return this.client.request('/api/' + resource + "/" + id, "GET", "", {}) + .then(function (data) { + return SerializationHelper.toInstance(new factory(), data); + }); + }; + API.prototype.delete = function (id) { + var resource = this.Resource; + return this.client.request('/api/' + resource + "/" + id, "DELETE", "", { "dataType": "" }); + }; + return API; +}()); +exports.API = API; +var GraphElement = /** @class */ (function () { + function GraphElement() { + } + return GraphElement; +}()); +exports.GraphElement = GraphElement; +var GraphNode = /** @class */ (function (_super) { + __extends(GraphNode, _super); + function GraphNode() { + return _super !== null && _super.apply(this, arguments) || this; + } + return GraphNode; +}(GraphElement)); +exports.GraphNode = GraphNode; +var GraphEdge = /** @class */ (function (_super) { + __extends(GraphEdge, _super); + function GraphEdge() { + return _super !== null && _super.apply(this, arguments) || this; + } + return GraphEdge; +}(GraphElement)); +exports.GraphEdge = GraphEdge; +var Graph = /** @class */ (function () { + function Graph(nodes, edges) { + this.nodes = nodes || {}; + this.edges = edges || {}; + } + return Graph; +}()); +exports.Graph = Graph; +var GremlinAPI = /** @class */ (function () { + function GremlinAPI(client) { + this.client = client; + } + GremlinAPI.prototype.query = function (s) { + return this.client.request('/api/topology', "POST", JSON.stringify({ 'GremlinQuery': s }), {}) + .then(function (data) { + if (data === null) + return []; + // Result can be [Node] or [[Node, Node]] + if (data.length > 0 && data[0] instanceof Array) + data = data[0]; + return data; + }); + }; + GremlinAPI.prototype.G = function () { + return new G(this); + }; + return GremlinAPI; +}()); +exports.GremlinAPI = GremlinAPI; +var _Metadata = /** @class */ (function () { + function _Metadata() { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + this.params = params; + } + _Metadata.prototype.toString = function () { + return "Metadata(" + paramsString(this.params) + ")"; + }; + return _Metadata; +}()); +exports._Metadata = _Metadata; +function Metadata() { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (_Metadata.bind.apply(_Metadata, [void 0].concat(params)))(); +} +exports.Metadata = Metadata; +var Step = /** @class */ (function () { + function Step(api, previous) { + if (previous === void 0) { previous = null; } + var params = []; + for (var _i = 2; _i < arguments.length; _i++) { + params[_i - 2] = arguments[_i]; + } + this.api = api; + this.previous = previous; + this.params = params; + } + Step.prototype.name = function () { return "InvalidStep"; }; + Step.prototype.toString = function () { + if (this.previous !== null) { + var gremlin = this.previous.toString() + "."; + return gremlin + callString.apply(void 0, [this.name()].concat(this.params)); + } + else { + return this.name(); + } + }; + Step.prototype.serialize = function (data) { + return this.previous.serialize(data); + }; + Step.prototype.result = function () { + var data = this.api.query(this.toString()); + return this.serialize(data); + }; + return Step; +}()); +exports.Step = Step; +var G = /** @class */ (function (_super) { + __extends(G, _super); + function G(api) { + return _super.call(this, api) || this; + } + G.prototype.name = function () { return "G"; }; + G.prototype.serialize = function (data) { + return { + "Nodes": SerializationHelper.unmarshalArray(data[0].Nodes, GraphNode), + "Edges": SerializationHelper.unmarshalArray(data[0].Edges, GraphEdge), + }; + }; + G.prototype.Context = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new Context(this.api); + }; + G.prototype.V = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (V.bind.apply(V, [void 0, this.api, this].concat(params)))(); + }; + G.prototype.E = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (E.bind.apply(E, [void 0, this.api, this].concat(params)))(); + }; + return G; +}(Step)); +exports.G = G; +var Context = /** @class */ (function (_super) { + __extends(Context, _super); + function Context(api, previous) { + if (previous === void 0) { previous = null; } + var params = []; + for (var _i = 2; _i < arguments.length; _i++) { + params[_i - 2] = arguments[_i]; + } + var _this = _super.call(this, api) || this; + _this.previous = previous; + _this.params = params; + return _this; + } + Context.prototype.name = function () { return "Context"; }; + return Context; +}(G)); +exports.Context = Context; +var Subgraph = /** @class */ (function (_super) { + __extends(Subgraph, _super); + function Subgraph(api, previous) { + if (previous === void 0) { previous = null; } + var _this = _super.call(this, api) || this; + _this.previous = previous; + return _this; + } + Subgraph.prototype.name = function () { return "Subgraph"; }; + return Subgraph; +}(G)); +exports.Subgraph = Subgraph; +function MixinStep(Base, name) { + return /** @class */ (function (_super) { + __extends(class_1, _super); + function class_1() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return _super.apply(this, args) || this; + } + class_1.prototype.name = function () { return name; }; + return class_1; + }(Base)); +} +var V = /** @class */ (function (_super) { + __extends(V, _super); + function V() { + return _super !== null && _super.apply(this, arguments) || this; + } + V.prototype.name = function () { return "V"; }; + V.prototype.serialize = function (data) { + return SerializationHelper.unmarshalArray(data, GraphNode); + }; + V.prototype.Has = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (HasV.bind.apply(HasV, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.HasEither = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (HasEitherV.bind.apply(HasEitherV, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.HasKey = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (HasKeyV.bind.apply(HasKeyV, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.HasNot = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (HasNotV.bind.apply(HasNotV, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.Dedup = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (DedupV.bind.apply(DedupV, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.In = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (In.bind.apply(In, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.Out = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Out.bind.apply(Out, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.Both = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Both.bind.apply(Both, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.Range = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (RangeV.bind.apply(RangeV, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.Limit = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (LimitV.bind.apply(LimitV, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.InE = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (InE.bind.apply(InE, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.OutE = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (OutE.bind.apply(OutE, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.BothE = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (BothE.bind.apply(BothE, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.ShortestPathTo = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (ShortestPath.bind.apply(ShortestPath, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.Subgraph = function () { + return new Subgraph(this.api, this); + }; + V.prototype.Count = function () { + return new Count(this.api, this); + }; + V.prototype.Values = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Values.bind.apply(Values, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.Keys = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Keys.bind.apply(Keys, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.Sum = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Keys.bind.apply(Keys, [void 0, this.api, this].concat(params)))(); + }; + V.prototype.Sort = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (SortV.bind.apply(SortV, [void 0, this.api, this].concat(params)))(); + }; + return V; +}(Step)); +exports.V = V; +var E = /** @class */ (function (_super) { + __extends(E, _super); + function E() { + return _super !== null && _super.apply(this, arguments) || this; + } + E.prototype.name = function () { return "E"; }; + E.prototype.serialize = function (data) { + return SerializationHelper.unmarshalArray(data, GraphEdge); + }; + E.prototype.Has = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (HasE.bind.apply(HasE, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.HasEither = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (HasEitherE.bind.apply(HasEitherE, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.HasKey = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (HasKeyE.bind.apply(HasKeyE, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.HasNot = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (HasNotE.bind.apply(HasNotE, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.Dedup = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (DedupE.bind.apply(DedupE, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.Range = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (RangeE.bind.apply(RangeE, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.Limit = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (LimitE.bind.apply(LimitE, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.InV = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (InV.bind.apply(InV, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.OutV = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (OutV.bind.apply(OutV, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.BothV = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (BothV.bind.apply(BothV, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.Subgraph = function () { + return new Subgraph(this.api, this); + }; + E.prototype.Count = function () { + return new Count(this.api, this); + }; + E.prototype.Values = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Values.bind.apply(Values, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.Keys = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Keys.bind.apply(Keys, [void 0, this.api, this].concat(params)))(); + }; + E.prototype.Sort = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (SortE.bind.apply(SortE, [void 0, this.api, this].concat(params)))(); + }; + return E; +}(Step)); +exports.E = E; +var HasV = /** @class */ (function (_super) { + __extends(HasV, _super); + function HasV() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HasV; +}(MixinStep(V, "Has"))); +var HasE = /** @class */ (function (_super) { + __extends(HasE, _super); + function HasE() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HasE; +}(MixinStep(E, "Has"))); +var HasEitherV = /** @class */ (function (_super) { + __extends(HasEitherV, _super); + function HasEitherV() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HasEitherV; +}(MixinStep(V, "HasEither"))); +var HasEitherE = /** @class */ (function (_super) { + __extends(HasEitherE, _super); + function HasEitherE() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HasEitherE; +}(MixinStep(E, "HasEither"))); +var HasKeyV = /** @class */ (function (_super) { + __extends(HasKeyV, _super); + function HasKeyV() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HasKeyV; +}(MixinStep(V, "HasKey"))); +var HasKeyE = /** @class */ (function (_super) { + __extends(HasKeyE, _super); + function HasKeyE() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HasKeyE; +}(MixinStep(E, "HasKey"))); +var HasNotV = /** @class */ (function (_super) { + __extends(HasNotV, _super); + function HasNotV() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HasNotV; +}(MixinStep(V, "HasNot"))); +var HasNotE = /** @class */ (function (_super) { + __extends(HasNotE, _super); + function HasNotE() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HasNotE; +}(MixinStep(E, "HasNot"))); +var DedupV = /** @class */ (function (_super) { + __extends(DedupV, _super); + function DedupV() { + return _super !== null && _super.apply(this, arguments) || this; + } + return DedupV; +}(MixinStep(V, "Dedup"))); +var DedupE = /** @class */ (function (_super) { + __extends(DedupE, _super); + function DedupE() { + return _super !== null && _super.apply(this, arguments) || this; + } + return DedupE; +}(MixinStep(E, "Dedup"))); +var RangeV = /** @class */ (function (_super) { + __extends(RangeV, _super); + function RangeV() { + return _super !== null && _super.apply(this, arguments) || this; + } + return RangeV; +}(MixinStep(V, "Range"))); +var RangeE = /** @class */ (function (_super) { + __extends(RangeE, _super); + function RangeE() { + return _super !== null && _super.apply(this, arguments) || this; + } + return RangeE; +}(MixinStep(E, "Range"))); +var LimitV = /** @class */ (function (_super) { + __extends(LimitV, _super); + function LimitV() { + return _super !== null && _super.apply(this, arguments) || this; + } + return LimitV; +}(MixinStep(V, "Limit"))); +var LimitE = /** @class */ (function (_super) { + __extends(LimitE, _super); + function LimitE() { + return _super !== null && _super.apply(this, arguments) || this; + } + return LimitE; +}(MixinStep(E, "Limit"))); +var SortV = /** @class */ (function (_super) { + __extends(SortV, _super); + function SortV() { + return _super !== null && _super.apply(this, arguments) || this; + } + return SortV; +}(MixinStep(V, "Sort"))); +var SortE = /** @class */ (function (_super) { + __extends(SortE, _super); + function SortE() { + return _super !== null && _super.apply(this, arguments) || this; + } + return SortE; +}(MixinStep(E, "Sort"))); +var Out = /** @class */ (function (_super) { + __extends(Out, _super); + function Out() { + return _super !== null && _super.apply(this, arguments) || this; + } + Out.prototype.name = function () { return "Out"; }; + return Out; +}(V)); +exports.Out = Out; +var In = /** @class */ (function (_super) { + __extends(In, _super); + function In() { + return _super !== null && _super.apply(this, arguments) || this; + } + In.prototype.name = function () { return "In"; }; + return In; +}(V)); +exports.In = In; +var Both = /** @class */ (function (_super) { + __extends(Both, _super); + function Both() { + return _super !== null && _super.apply(this, arguments) || this; + } + Both.prototype.name = function () { return "Both"; }; + return Both; +}(V)); +exports.Both = Both; +var OutV = /** @class */ (function (_super) { + __extends(OutV, _super); + function OutV() { + return _super !== null && _super.apply(this, arguments) || this; + } + OutV.prototype.name = function () { return "OutV"; }; + return OutV; +}(V)); +exports.OutV = OutV; +var InV = /** @class */ (function (_super) { + __extends(InV, _super); + function InV() { + return _super !== null && _super.apply(this, arguments) || this; + } + InV.prototype.name = function () { return "InV"; }; + return InV; +}(V)); +exports.InV = InV; +var OutE = /** @class */ (function (_super) { + __extends(OutE, _super); + function OutE() { + return _super !== null && _super.apply(this, arguments) || this; + } + OutE.prototype.name = function () { return "OutE"; }; + return OutE; +}(E)); +exports.OutE = OutE; +var InE = /** @class */ (function (_super) { + __extends(InE, _super); + function InE() { + return _super !== null && _super.apply(this, arguments) || this; + } + InE.prototype.name = function () { return "InE"; }; + return InE; +}(E)); +exports.InE = InE; +var BothE = /** @class */ (function (_super) { + __extends(BothE, _super); + function BothE() { + return _super !== null && _super.apply(this, arguments) || this; + } + BothE.prototype.name = function () { return "BothE"; }; + return BothE; +}(E)); +exports.BothE = BothE; +var BothV = /** @class */ (function (_super) { + __extends(BothV, _super); + function BothV() { + return _super !== null && _super.apply(this, arguments) || this; + } + BothV.prototype.name = function () { return "BothV"; }; + return BothV; +}(V)); +exports.BothV = BothV; +var ShortestPath = /** @class */ (function (_super) { + __extends(ShortestPath, _super); + function ShortestPath() { + return _super !== null && _super.apply(this, arguments) || this; + } + ShortestPath.prototype.name = function () { return "ShortestPathTo"; }; + ShortestPath.prototype.toString = function () { + if (this.previous !== null) { + var gremlin = this.previous.toString() + "."; + return gremlin + callString.apply(void 0, [this.name()].concat(this.params)); + } + else { + return this.name(); + } + }; + ShortestPath.prototype.serialize = function (data) { + var items = []; + for (var obj in data) { + items.push(SerializationHelper.unmarshalArray(data[obj], GraphNode)); + } + return items; + }; + return ShortestPath; +}(Step)); +exports.ShortestPath = ShortestPath; +var Predicate = /** @class */ (function () { + function Predicate(name) { + var params = []; + for (var _i = 1; _i < arguments.length; _i++) { + params[_i - 1] = arguments[_i]; + } + this.name = name; + this.params = params; + } + Predicate.prototype.toString = function () { + return callString.apply(void 0, [this.name].concat(this.params)); + }; + return Predicate; +}()); +function NE(param) { + return new Predicate("NE", param); +} +exports.NE = NE; +function GT(param) { + return new Predicate("GT", param); +} +exports.GT = GT; +function LT(param) { + return new Predicate("LT", param); +} +exports.LT = LT; +function GTE(param) { + return new Predicate("GTE", param); +} +exports.GTE = GTE; +function LTE(param) { + return new Predicate("LTE", param); +} +exports.LTE = LTE; +function IPV4RANGE(param) { + return new Predicate("IPV4RANGE", param); +} +exports.IPV4RANGE = IPV4RANGE; +function REGEX(param) { + return new Predicate("REGEX", param); +} +exports.REGEX = REGEX; +function WITHIN() { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Predicate.bind.apply(Predicate, [void 0, "WITHIN"].concat(params)))(); +} +exports.WITHIN = WITHIN; +function WITHOUT() { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Predicate.bind.apply(Predicate, [void 0, "WITHOUT"].concat(params)))(); +} +exports.WITHOUT = WITHOUT; +function INSIDE(from, to) { + return new Predicate("INSIDE", from, to); +} +exports.INSIDE = INSIDE; +function OUTSIDE(from, to) { + return new Predicate("OUTSIDE", from, to); +} +exports.OUTSIDE = OUTSIDE; +function BETWEEN(from, to) { + return new Predicate("BETWEEN", from, to); +} +exports.BETWEEN = BETWEEN; +exports.FOREVER = new Predicate("FOREVER"); +exports.NOW = new Predicate("NOW"); +exports.DESC = new Predicate("DESC"); +exports.ASC = new Predicate("ASC"); +var Nodes = /** @class */ (function (_super) { + __extends(Nodes, _super); + function Nodes() { + return _super !== null && _super.apply(this, arguments) || this; + } + Nodes.prototype.name = function () { return "Nodes"; }; + return Nodes; +}(V)); +exports.Nodes = Nodes; +var Value = /** @class */ (function (_super) { + __extends(Value, _super); + function Value() { + return _super !== null && _super.apply(this, arguments) || this; + } + Value.prototype.serialize = function (data) { + return data; + }; + return Value; +}(Step)); +exports.Value = Value; +var Count = /** @class */ (function (_super) { + __extends(Count, _super); + function Count() { + return _super !== null && _super.apply(this, arguments) || this; + } + Count.prototype.name = function () { return "Count"; }; + return Count; +}(Value)); +exports.Count = Count; +var Values = /** @class */ (function (_super) { + __extends(Values, _super); + function Values() { + return _super !== null && _super.apply(this, arguments) || this; + } + Values.prototype.name = function () { return "Values"; }; + return Values; +}(Value)); +exports.Values = Values; +var Keys = /** @class */ (function (_super) { + __extends(Keys, _super); + function Keys() { + return _super !== null && _super.apply(this, arguments) || this; + } + Keys.prototype.name = function () { return "Keys"; }; + return Keys; +}(Value)); +exports.Keys = Keys; +var Sum = /** @class */ (function (_super) { + __extends(Sum, _super); + function Sum() { + return _super !== null && _super.apply(this, arguments) || this; + } + Sum.prototype.name = function () { return "Sum"; }; + return Sum; +}(Value)); +exports.Sum = Sum; +var Client = /** @class */ (function () { + function Client(options) { + options = options || {}; + this.baseURL = options["baseURL"] || ""; + this.username = options["username"] || ""; + this.password = options["password"] || ""; + this.cookie = options["cookie"] || ""; + this.alerts = new API(this, "alert", Alert); + this.workflows = new API(this, "workflow", Workflow); + this.gremlin = new GremlinAPI(this); + this.G = this.gremlin.G(); + } + Client.prototype.login = function () { + var self = this; + if (this.username && this.password) { + return makeRequest(this, "/login", "POST", querystring.stringify({ "username": this.username, "password": this.password }), { "contentType": "application/x-www-form-urlencoded", + "dataType": "" }); + } + return Promise.resolve(); + }; + Client.prototype.request = function (url, method, data, opts) { + if (this.cookie) { + opts["headers"] = { "Cookie": this.cookie }; + } + return makeRequest(this, url, method, data, opts); + }; + return Client; +}()); +exports.Client = Client; diff --git a/graffiti/js/api.ts b/graffiti/js/api.ts new file mode 100644 index 0000000000..c0378ff2d0 --- /dev/null +++ b/graffiti/js/api.ts @@ -0,0 +1,737 @@ +/* + * Copyright (C) 2018 Red Hat, 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 ofthe 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 specificlanguage governing permissions and + * limitations under the License. + * + */ + +declare var require: any +declare var Promise: any; +declare var $: any; +declare var global: any; +declare var Gremlin: any; +declare var request: any; +var makeRequest = null; + +const Unauthorized = "Unauthorized"; + +import jsEnv = require('browser-or-node'); +if (jsEnv) { + var querystring = require('qs') + var defaultsDeep = require('lodash.defaultsdeep') + + // When using node, we use najax for $.ajax calls + if (jsEnv.isNode && !jsEnv.isBrowser) { + var najax = require('najax'); + global.$ = { "ajax": najax }; + } + + makeRequest = function (client: Client, url: string, method: string, data: string, opts: Object) : any { + return new Promise(function (resolve, reject) { + return $.ajax(defaultsDeep(opts, { + dataType: "json", + url: client.baseURL + url, + data: data, + contentType: "application/json; charset=utf-8", + method: method + })) + .fail(function (jqXHR) { + if (jqXHR.status == 401) { + reject(Unauthorized) + } else { + reject(jqXHR) + } + }) + .done(function (data, statusText, jqXHR) { + if (jqXHR.status >= 200 && jqXHR.status < 400) { + var cookie = jqXHR.getResponseHeader("Set-Cookie"); + if (cookie) { + client.cookie = cookie; + } + resolve(data, jqXHR); + } else { + reject(jqXHR); + } + }); + }) + } +} else { + // We're running inside Otto. We use the 'request' method + // exported by Skydive that makes use of the REST client + // so we get support for authentication + makeRequest = function (client: Client, url: string, method: string, body: string, opts: Object) : any { + var data: any + var output = request(url, method, body) + if (output && output.length > 0) { + data = JSON.parse(output) + } else { + data = null + } + return {'then': function() { return data; } } + } +} + +function paramsString(params: any[]): string { + var s = "" + for (let param in params) { + if (param !== "0") { + s += ", " + } + switch (typeof params[param]) { + case "string": + s += '"' + params[param] + '"'; + break; + default: + s += params[param]; + break; + } + } + return s +} + +// Returns a string of the invocation of 'method' with its parameters 'params' +// like MyMethod(1, 2, "s") +function callString(method: string, ...params: any[]): string { + let s = method + "(" + s += paramsString(params) + s += ")" + return s +} + +export class SerializationHelper { + static toInstance(obj: T, jsonObj: Object) : T { + if (typeof obj["fromJSON"] === "function") { + obj["fromJSON"](jsonObj); + } + else { + for (var propName in jsonObj) { + obj[propName] = jsonObj[propName] + } + } + + return obj; + } + + static unmarshalArray(data, c: new () => T): T[] { + var items: T[] = []; + for (var obj in data) { + let newT: T = SerializationHelper.toInstance(new c(), data[obj]); + items.push(newT); + } + return items + } + + static unmarshalMapArray(data, c: new () => T): { [key: string]: T[]; } { + var items: { [key: string]: T[]; } = {}; + for (var key in data) { + items[key] = this.unmarshalArray(data[key], c); + } + return items + } + + static unmarshalMap(data, c: new () => T): { [key: string]: T; } { + var items: { [key: string]: T; } = {}; + for (var obj in data) { + let newT: T = SerializationHelper.toInstance(new c(), data[obj]); + items[obj] = newT; + } + return items + } +} + +export class APIObject extends Object { +} + +export class Alert extends APIObject { +} + +export class Workflow extends APIObject { +} + +export class API { + Resource: string + Factory: new () => T + client: Client + + constructor(client: Client, resource: string, c: new () => T) { + this.client = client; + this.Resource = resource; + this.Factory = c; + } + + create(obj: T) { + let resource = this.Resource; + return this.client.request("/api/" + resource, "POST", JSON.stringify(obj), {}) + .then(function (data) { + return SerializationHelper.toInstance(new (obj.constructor)(), data); + }) + } + + list() { + let resource = this.Resource; + let factory = this.Factory; + + return this.client.request('/api/' + resource, "GET", "", {}) + .then(function (data) { + let resources = {}; + for (var obj in data) { + let resource = SerializationHelper.toInstance(new factory(), data[obj]); + resources[obj] = resource + } + return resources + }); + } + + get(id) { + let resource = this.Resource; + let factory = this.Factory; + return this.client.request('/api/' + resource + "/" + id, "GET", "", {}) + .then(function (data) { + return SerializationHelper.toInstance(new factory(), data) + }) + } + + delete(id: string) { + let resource = this.Resource; + return this.client.request('/api/' + resource + "/" + id, "DELETE", "", { "dataType": "" }) + } +} + +export class GraphElement { +} + +export class GraphNode extends GraphElement { +} + +export class GraphEdge extends GraphElement { +} + +type NodeMap = { [key: string]: GraphNode; }; +type EdgeMap = { [key: string]: GraphEdge; }; + +export class Graph { + nodes: NodeMap; + edges: EdgeMap; + + constructor(nodes: NodeMap, edges: EdgeMap) { + this.nodes = nodes || {} + this.edges = edges || {} + } +} + +export class GremlinAPI { + client: Client + + constructor(client: Client) { + this.client = client; + } + + query(s: string) { + return this.client.request('/api/topology', "POST", JSON.stringify({'GremlinQuery': s}), {}) + .then(function (data) { + if (data === null) + return []; + // Result can be [Node] or [[Node, Node]] + if (data.length > 0 && data[0] instanceof Array) + data = data[0]; + return data + }); + } + + G() : G { + return new G(this) + } +} + +export class _Metadata { + params: any[] + + constructor(...params: any[]) { + this.params = params + } + + public toString(): string { + return "Metadata(" + paramsString(this.params) + ")" + } +} + +export function Metadata(...params: any[]) : _Metadata { + return new _Metadata(...params) +} + +export interface Step { + name(): string + serialize(data): any +} + +export class Step implements Step { + api: GremlinAPI + gremlin: string + previous: Step + params: any[] + + name() { return "InvalidStep"; } + + constructor(api: GremlinAPI, previous: Step = null, ...params: any[]) { + this.api = api + this.previous = previous + this.params = params + } + + public toString(): string { + if (this.previous !== null) { + let gremlin = this.previous.toString() + "."; + return gremlin + callString(this.name(), ...this.params) + } else { + return this.name() + } + } + + serialize(data) { + return this.previous.serialize(data); + } + + result() { + let data = this.api.query(this.toString()) + return this.serialize(data) + } +} + +export class G extends Step { + name() { return "G" } + + constructor(api: GremlinAPI) { + super(api) + } + + serialize(data) { + return { + "Nodes": SerializationHelper.unmarshalArray(data[0].Nodes, GraphNode), + "Edges": SerializationHelper.unmarshalArray(data[0].Edges, GraphEdge), + }; + } + + Context(...params: any[]): G { + return new Context(this.api); + } + + V(...params: any[]): V { + return new V(this.api, this, ...params); + } + + E(...params: any[]): E { + return new E(this.api, this, ...params); + } +} + +export class Context extends G { + name() { return "Context" } + + constructor(api: GremlinAPI, previous: Step = null, ...params: any[]) { + super(api) + this.previous = previous + this.params = params + } +} + +export class Subgraph extends G { + name() { return "Subgraph" } + + constructor(api: GremlinAPI, previous: Step = null) { + super(api) + this.previous = previous + } +} + +export type Constructor = new(...args: any[]) => T; + +function MixinStep>(Base: T, name: string) { + return class extends Base { + name() { return name } + constructor(...args: any[]) { + super(...args); + } + } +} + +export class V extends Step { + name() { return "V" } + + serialize(data) { + return SerializationHelper.unmarshalArray(data, GraphNode); + } + + Has(...params: any[]): V { + return new HasV(this.api, this, ...params); + } + + HasEither(...params: any[]): V { + return new HasEitherV(this.api, this, ...params); + } + + HasKey(...params: any[]): V { + return new HasKeyV(this.api, this, ...params); + } + + HasNot(...params: any[]): V { + return new HasNotV(this.api, this, ...params); + } + + Dedup(...params: any[]): V { + return new DedupV(this.api, this, ...params); + } + + In(...params: any[]): V { + return new In(this.api, this, ...params); + } + + Out(...params: any[]): V { + return new Out(this.api, this, ...params); + } + + Both(...params: any[]): V { + return new Both(this.api, this, ...params); + } + + Range(...params: any[]): V { + return new RangeV(this.api, this, ...params); + } + + Limit(...params: any[]): V { + return new LimitV(this.api, this, ...params); + } + + InE(...params: any[]): E { + return new InE(this.api, this, ...params); + } + + OutE(...params: any[]): E { + return new OutE(this.api, this, ...params); + } + + BothE(...params: any[]): E { + return new BothE(this.api, this, ...params); + } + + ShortestPathTo(...params: any[]): ShortestPath { + return new ShortestPath(this.api, this, ...params); + } + + Subgraph(): G { + return new Subgraph(this.api, this); + } + + Count(): Value { + return new Count(this.api, this); + } + + Values(...params: any[]): Value { + return new Values(this.api, this, ...params); + } + + Keys(...params: any[]): Value { + return new Keys(this.api, this, ...params); + } + + Sum(...params: any[]): Value { + return new Keys(this.api, this, ...params); + } + + Sort(...params: any[]): V { + return new SortV(this.api, this, ...params); + } +} + +export class E extends Step { + name() { return "E" } + + serialize(data) { + return SerializationHelper.unmarshalArray(data, GraphEdge); + } + + Has(...params: any[]): E { + return new HasE(this.api, this, ...params); + } + + HasEither(...params: any[]): E { + return new HasEitherE(this.api, this, ...params); + } + + HasKey(...params: any[]): E { + return new HasKeyE(this.api, this, ...params); + } + + HasNot(...params: any[]): E { + return new HasNotE(this.api, this, ...params); + } + + Dedup(...params: any[]): E { + return new DedupE(this.api, this, ...params); + } + + Range(...params: any[]): E { + return new RangeE(this.api, this, ...params); + } + + Limit(...params: any[]): E { + return new LimitE(this.api, this, ...params); + } + + InV(...params: any[]): V { + return new InV(this.api, this, ...params); + } + + OutV(...params: any[]): V { + return new OutV(this.api, this, ...params); + } + + BothV(...params: any[]): V { + return new BothV(this.api, this, ...params); + } + + Subgraph(): G { + return new Subgraph(this.api, this); + } + + Count(): Value { + return new Count(this.api, this); + } + + Values(...params: any[]): Value { + return new Values(this.api, this, ...params); + } + + Keys(...params: any[]): Value { + return new Keys(this.api, this, ...params); + } + + Sort(...params: any[]): E { + return new SortE(this.api, this, ...params); + } +} + +class HasV extends MixinStep(V, "Has") { } +class HasE extends MixinStep(E, "Has") { } + +class HasEitherV extends MixinStep(V, "HasEither") { } +class HasEitherE extends MixinStep(E, "HasEither") { } + +class HasKeyV extends MixinStep(V, "HasKey") { } +class HasKeyE extends MixinStep(E, "HasKey") { } + +class HasNotV extends MixinStep(V, "HasNot") { } +class HasNotE extends MixinStep(E, "HasNot") { } + +class DedupV extends MixinStep(V, "Dedup") { } +class DedupE extends MixinStep(E, "Dedup") { } + +class RangeV extends MixinStep(V, "Range") { } +class RangeE extends MixinStep(E, "Range") { } + +class LimitV extends MixinStep(V, "Limit") { } +class LimitE extends MixinStep(E, "Limit") { } + +class SortV extends MixinStep(V, "Sort") { } +class SortE extends MixinStep(E, "Sort") { } + +export class Out extends V { + name() { return "Out" } +} + +export class In extends V { + name() { return "In" } +} + +export class Both extends V { + name() { return "Both" } +} + +export class OutV extends V { + name() { return "OutV" } +} + +export class InV extends V { + name() { return "InV" } +} + +export class OutE extends E { + name() { return "OutE" } +} + +export class InE extends E { + name() { return "InE" } +} + +export class BothE extends E { + name() { return "BothE" } +} + +export class BothV extends V { + name() { return "BothV" } +} + +export class ShortestPath extends Step { + name() { return "ShortestPathTo" } + + public toString(): string { + if (this.previous !== null) { + let gremlin = this.previous.toString() + "."; + return gremlin + callString(this.name(), ...this.params) + } else { + return this.name() + } + } + + serialize(data) { + var items: GraphNode[][] = []; + for (var obj in data) { + items.push(SerializationHelper.unmarshalArray(data[obj], GraphNode)); + } + return items; + } +} + +class Predicate { + name: string + params: any + + constructor(name: string, ...params: any[]) { + this.name = name + this.params = params + } + + public toString(): string { + return callString(this.name, ...this.params) + } +} + +export function NE(param: any): Predicate { + return new Predicate("NE", param) +} + +export function GT(param: any): Predicate { + return new Predicate("GT", param) +} + +export function LT(param: any): Predicate { + return new Predicate("LT", param) +} + +export function GTE(param: any): Predicate { + return new Predicate("GTE", param) +} + +export function LTE(param: any): Predicate { + return new Predicate("LTE", param) +} + +export function IPV4RANGE(param: any): Predicate { + return new Predicate("IPV4RANGE", param) +} + +export function REGEX(param: any): Predicate { + return new Predicate("REGEX", param) +} + +export function WITHIN(...params: any[]): Predicate { + return new Predicate("WITHIN", ...params) +} + +export function WITHOUT(...params: any[]): Predicate { + return new Predicate("WITHOUT", ...params) +} + +export function INSIDE(from, to: any): Predicate { + return new Predicate("INSIDE", from, to) +} + +export function OUTSIDE(from, to: any): Predicate { + return new Predicate("OUTSIDE", from, to) +} + +export function BETWEEN(from, to: any): Predicate { + return new Predicate("BETWEEN", from, to) +} + +export var FOREVER = new Predicate("FOREVER") +export var NOW = new Predicate("NOW") +export var DESC = new Predicate("DESC") +export var ASC = new Predicate("ASC") + +export class Nodes extends V { + name() { return "Nodes" } +} + +export class Value extends Step { + serialize(data) { + return data; + } +} + +export class Count extends Value { + name() { return "Count" } +} + +export class Values extends Value { + name() { return "Values" } +} + +export class Keys extends Value { + name() { return "Keys" } +} + +export class Sum extends Value { + name() { return "Sum" } +} + +export class Client { + baseURL: string + username: string + password: string + cookie: string + alerts: API + workflows: API + gremlin: GremlinAPI + G: G + + constructor(options: Object) { + options = options || {}; + this.baseURL = options["baseURL"] || ""; + this.username = options["username"] || ""; + this.password = options["password"] || ""; + this.cookie = options["cookie"] || ""; + + this.alerts = new API(this, "alert", Alert); + this.workflows = new API(this, "workflow", Workflow); + this.gremlin = new GremlinAPI(this); + this.G = this.gremlin.G(); + } + + login() { + var self = this; + if (this.username && this.password) { + return makeRequest(this, "/login", "POST", + querystring.stringify({"username": this.username, "password": this.password}), + { "contentType": "application/x-www-form-urlencoded", + "dataType": "" }) + } + return Promise.resolve(); + } + + request(url: string, method: string, data: any, opts: Object): any { + if (this.cookie) { + opts["headers"] = { "Cookie": this.cookie } + } + return makeRequest(this, url, method, data, opts); + } +} diff --git a/js/completion.go b/graffiti/js/completion.go similarity index 100% rename from js/completion.go rename to graffiti/js/completion.go diff --git a/js/otto.js b/graffiti/js/otto.js similarity index 100% rename from js/otto.js rename to graffiti/js/otto.js diff --git a/graffiti/js/package-lock.json b/graffiti/js/package-lock.json new file mode 100644 index 0000000000..0072ab0ee9 --- /dev/null +++ b/graffiti/js/package-lock.json @@ -0,0 +1,1176 @@ +{ + "name": "skydive-api", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@formschema/native": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@formschema/native/-/native-1.1.1.tgz", + "integrity": "sha1-UrabfqXGwo4wg/oimu8vQvWvIfk=" + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha1-MgjB8I06TZkmGrZPkjArwV4RHKA=", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha1-fSWuBbuK0fm2mRCOEJTs14hK3B8=" + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha1-SCIQFAWCo2uDw+NC4c/ryqkkCUg=" + }, + "acorn-node": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.6.2.tgz", + "integrity": "sha1-t9fOym8i5kF6+TOmLK1N4BBI1dI=", + "requires": { + "acorn": "^6.0.2", + "acorn-dynamic-import": "^4.0.0", + "acorn-walk": "^6.1.0", + "xtend": "^4.0.1" + } + }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha1-02O2b1+sXwGP+cOh57b44xDMORM=" + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM=" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-or-node": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-1.0.2.tgz", + "integrity": "sha1-0gU+YefndKqYP8q3a068LPZQSnI=" + }, + "browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha1-w0uhDQuc4WK1ryJ8cTHJLC7NV3Q=", + "requires": { + "JSONStream": "^1.0.3", + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + } + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha1-m3y7PQ9RDky4a9vXlhJNKLWJCvY=", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "browserify": { + "version": "16.2.3", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.2.3.tgz", + "integrity": "sha1-fubmVLpPkrzmqzWZw0hbHMegrQs=", + "requires": { + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^1.11.0", + "browserify-zlib": "~0.2.0", + "buffer": "^5.0.2", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^2.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.0.0", + "labeled-stream-splicer": "^2.0.0", + "mkdirp": "^0.5.0", + "module-deps": "^6.0.0", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^2.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.10.1", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", + "requires": { + "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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", + "requires": { + "pako": "~1.0.5" + } + }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha1-3Vf6DxCaxZxgJHkETcp7iz0LcdY=", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "cached-path-relative": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", + "integrity": "sha1-oT30GW0md2IgzDNW6xR6Utuixts=" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "requires": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", + "requires": { + "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": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", + "requires": { + "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" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", + "requires": { + "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" + } + }, + "dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha1-EgKbpfsviqbwqGF5WyPBtLbCfTc=" + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "deps-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", + "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", + "requires": { + "JSONStream": "^1.0.3", + "shasum": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + } + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha1-/rKnfoW5BOzepFmtiXzJCpm9Kns=", + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha1-wtC3d2kRuGcixjLDwGxg8vgZk5o=", + "requires": { + "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" + } + }, + "events": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", + "integrity": "sha1-KpoeGOYQbg6BKqnr1KgZs8KcC6U=" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" + }, + "get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha1-bb9BHeZIy6+NkWnrsNLVdhkeL/E=" + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=", + "requires": { + "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" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "requires": { + "function-bind": "^1.1.1" + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=" + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "requires": { + "source-map": "~0.5.3" + } + }, + "insert-module-globals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", + "integrity": "sha1-7IfltCcoR54ye9XFxxYR3ftHUro=", + "requires": { + "JSONStream": "^1.0.3", + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "jquery-deferred": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/jquery-deferred/-/jquery-deferred-0.3.1.tgz", + "integrity": "sha1-WW7KHKr/VPYbEQlisjyv6nTDU1U=" + }, + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "requires": { + "jsonify": "~0.0.0" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "labeled-stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz", + "integrity": "sha1-nP+jL9meFhL9HYao25YkFtUpKSY=", + "requires": { + "inherits": "^2.0.1", + "isarray": "^2.0.4", + "stream-splicer": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz", + "integrity": "sha1-OOe8uw87obeTPIa6GJTd/DeBu7c=" + } + } + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==" + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "module-deps": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.0.tgz", + "integrity": "sha1-1BoueQJFzjGRceTnxNjHOZO6PNU=", + "requires": { + "JSONStream": "^1.0.3", + "browser-resolve": "^1.7.0", + "cached-path-relative": "^1.0.0", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.0.2", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "najax": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/najax/-/najax-1.0.3.tgz", + "integrity": "sha1-ERRfTZEERupmHYq3/O9T9q0WSuU=", + "requires": { + "jquery-deferred": "^0.3.0", + "lodash.defaultsdeep": "^4.6.0", + "qs": "^6.2.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI=" + }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "requires": { + "path-platform": "~0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha1-N/Zij4I/vesic7TVQENKIvPvH8w=", + "requires": { + "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" + } + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" + }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=" + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=", + "requires": { + "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" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "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" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha1-O9qur0XMB/N1ZW39LlTtCBCxAbo=", + "requires": { + "path-parse": "^1.0.6" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "requires": { + "json-stable-stringify": "~0.0.0", + "sha.js": "~2.4.4" + } + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", + "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha1-/obnOLGVRK/nBGkkOyoe6SQOro0=", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "requires": { + "minimist": "^1.1.0" + } + }, + "syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha1-LZ1P9cBkrLcRWUo+O5UFStUdkHw=", + "requires": { + "acorn-node": "^1.2.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "requires": { + "process": "~0.11.0" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha1-PwUlHuF5BN/QZ3VGZw25ZRaCuBE=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typescript": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha1-HL9h0F1rliaSROtqO85L2RTg8Aw=" + }, + "umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha1-qp/mU8QrkJdnhInAEACstp8LJs8=" + }, + "undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha1-klTB03vawKwrUt5LZyJ5LSqR4w8=", + "requires": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha1-OqASW/5mikZy3liFfTrOJ+y3aQE=", + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "vm-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "integrity": "sha1-vXbWojMj4sqP+hICjcBFWcdfkBk=" + }, + "vue-form-generator": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-form-generator/-/vue-form-generator-2.3.4.tgz", + "integrity": "sha1-qgQ+pRY6tcbMPMmrg+e3DdXgEKk=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + } + } +} diff --git a/graffiti/js/package.json b/graffiti/js/package.json new file mode 100644 index 0000000000..b200bdd94b --- /dev/null +++ b/graffiti/js/package.json @@ -0,0 +1,29 @@ +{ + "name": "graffiti-api", + "version": "0.0.1", + "description": "Graffiti API", + "main": "api.js", + "dependencies": { + "@formschema/native": "^1.1.1", + "browser-or-node": "1.0.2", + "browserify": "^16.2.3", + "lodash.defaultsdeep": "^4.6.1", + "najax": "1.0.3", + "qs": "^6.9.1", + "typescript": "^2.9.2", + "vue-form-generator": "^2.3.4" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Sylvain Baubeau", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git+https://github.com/skydive-project/skydive.git" + }, + "bugs": { + "url": "https://github.com/skydive-project/skydive/issues" + }, + "homepage": "https://github.com/skydive-project/skydive#readme" +} diff --git a/js/promise-7.0.4.min.js b/graffiti/js/promise-7.0.4.min.js similarity index 100% rename from js/promise-7.0.4.min.js rename to graffiti/js/promise-7.0.4.min.js diff --git a/js/promise-done-7.0.4.min.js b/graffiti/js/promise-done-7.0.4.min.js similarity index 100% rename from js/promise-done-7.0.4.min.js rename to graffiti/js/promise-done-7.0.4.min.js diff --git a/graffiti/js/pure-uuid.js b/graffiti/js/pure-uuid.js new file mode 100644 index 0000000000..21322057dc --- /dev/null +++ b/graffiti/js/pure-uuid.js @@ -0,0 +1,914 @@ +/*! +** Pure-UUID -- Pure JavaScript Based Universally Unique Identifier (UUID) +** Copyright (c) 2004-2018 Ralf S. Engelschall +** +** Permission is hereby granted, free of charge, to any person obtaining +** a copy of this software and associated documentation files (the +** "Software"), to deal in the Software without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Software, and to +** permit persons to whom the Software is furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* Universal Module Definition (UMD) */ +(function (root, name, factory) { + /* global define: false */ + /* global module: false */ + if (typeof define === "function" && typeof define.amd !== "undefined") + /* AMD environment */ + define(function () { return factory(root); }); + else if (typeof module === "object" && typeof module.exports === "object") { + /* CommonJS environment */ + module.exports = factory(root); + module.exports["default"] = module.exports; + } + else + /* Browser environment */ + root[name] = factory(root); +}(this, "UUID", function (/* root */) { + + /* array to hex-string conversion */ + var a2hs = function (bytes, begin, end, uppercase, str, pos) { + var mkNum = function (num, uppercase) { + var base16 = num.toString(16); + if (base16.length < 2) + base16 = "0" + base16; + if (uppercase) + base16 = base16.toUpperCase(); + return base16; + }; + for (var i = begin; i <= end; i++) + str[pos++] = mkNum(bytes[i], uppercase); + return str; + }; + + /* hex-string to array conversion */ + var hs2a = function (str, begin, end, bytes, pos) { + for (var i = begin; i <= end; i += 2) + bytes[pos++] = parseInt(str.substr(i, 2), 16); + }; + + /* This library provides Z85: ZeroMQ's Base-85 encoding/decoding + (see http://rfc.zeromq.org/spec:32 for details) */ + + var z85_encoder = ( + "0123456789" + + "abcdefghijklmnopqrstuvwxyz" + + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + ".-:+=^!/*?&<>()[]{}@%$#" + ).split(""); + var z85_decoder = [ + 0x00, 0x44, 0x00, 0x54, 0x53, 0x52, 0x48, 0x00, + 0x4B, 0x4C, 0x46, 0x41, 0x00, 0x3F, 0x3E, 0x45, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x40, 0x00, 0x49, 0x42, 0x4A, 0x47, + 0x51, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, + 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, + 0x3B, 0x3C, 0x3D, 0x4D, 0x00, 0x4E, 0x43, 0x00, + 0x00, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, + 0x21, 0x22, 0x23, 0x4F, 0x00, 0x50, 0x00, 0x00 + ]; + var z85_encode = function (data, size) { + if ((size % 4) !== 0) + throw new Error("z85_encode: invalid input length (multiple of 4 expected)"); + var str = "", i = 0, value = 0; + while (i < size) { + value = (value * 256) + data[i++]; + if ((i % 4) === 0) { + var divisor = 85 * 85 * 85 * 85; + while (divisor >= 1) { + var idx = Math.floor(value / divisor) % 85; + str += z85_encoder[idx]; + divisor /= 85; + } + value = 0; + } + } + return str; + }; + var z85_decode = function (str, dest) { + var l = str.length; + if ((l % 5) !== 0) + throw new Error("z85_decode: invalid input length (multiple of 5 expected)"); + if (typeof dest === "undefined") + dest = new Array(l * 4 / 5); + var i = 0, j = 0, value = 0; + while (i < l) { + var idx = str.charCodeAt(i++) - 32; + if (idx < 0 || idx >= z85_decoder.length) + break; + value = (value * 85) + z85_decoder[idx]; + if ((i % 5) === 0) { + var divisor = 256 * 256 * 256; + while (divisor >= 1) { + dest[j++] = Math.trunc((value / divisor) % 256); + divisor /= 256; + } + value = 0; + } + } + return dest; + }; + + /* This library provides conversions between 8/16/32-bit character + strings and 8/16/32-bit big/little-endian word arrays. */ + + /* string to array conversion */ + var s2a = function (s, _options) { + /* determine options */ + var options = { ibits: 8, obits: 8, obigendian: true }; + for (var opt in _options) + if (typeof options[opt] !== "undefined") + options[opt] = _options[opt]; + + /* convert string to array */ + var a = []; + var i = 0; + var c, C; + var ck = 0; + var w; + var wk = 0; + var sl = s.length; + for (;;) { + /* fetch next octet from string */ + if (ck === 0) + C = s.charCodeAt(i++); + c = (C >> (options.ibits - (ck + 8))) & 0xFF; + ck = (ck + 8) % options.ibits; + + /* place next word into array */ + if (options.obigendian) { + if (wk === 0) w = (c << (options.obits - 8)); + else w |= (c << ((options.obits - 8) - wk)); + } + else { + if (wk === 0) w = c; + else w |= (c << wk); + } + wk = (wk + 8) % options.obits; + if (wk === 0) { + a.push(w); + if (i >= sl) + break; + } + } + return a; + }; + + /* array to string conversion */ + var a2s = function (a, _options) { + /* determine options */ + var options = { ibits: 32, ibigendian: true }; + for (var opt in _options) + if (typeof options[opt] !== "undefined") + options[opt] = _options[opt]; + + /* convert array to string */ + var s = ""; + var imask = 0xFFFFFFFF; + if (options.ibits < 32) + imask = (1 << options.ibits) - 1; + var al = a.length; + for (var i = 0; i < al; i++) { + /* fetch next word from array */ + var w = a[i] & imask; + + /* place next octet into string */ + for (var j = 0; j < options.ibits; j += 8) { + if (options.ibigendian) + s += String.fromCharCode((w >> ((options.ibits - 8) - j)) & 0xFF); + else + s += String.fromCharCode((w >> j) & 0xFF); + } + } + return s; + }; + + /* this is just a really minimal UI64 functionality, + just sufficient enough for the UUID v1 generator and PCG PRNG! */ + + /* UI64 constants */ + var UI64_DIGITS = 8; /* number of digits */ + var UI64_DIGIT_BITS = 8; /* number of bits in a digit */ + var UI64_DIGIT_BASE = 256; /* the numerical base of a digit */ + + /* convert between individual digits and the UI64 representation */ + var ui64_d2i = function (d7, d6, d5, d4, d3, d2, d1, d0) { + return [ d0, d1, d2, d3, d4, d5, d6, d7 ]; + }; + + /* the zero represented as an UI64 */ + var ui64_zero = function () { + return ui64_d2i(0, 0, 0, 0, 0, 0, 0, 0); + }; + + /* clone the UI64 */ + var ui64_clone = function (x) { + return x.slice(0); + }; + + /* convert between number and UI64 representation */ + var ui64_n2i = function (n) { + var ui64 = ui64_zero(); + for (var i = 0; i < UI64_DIGITS; i++) { + ui64[i] = Math.floor(n % UI64_DIGIT_BASE); + n /= UI64_DIGIT_BASE; + } + return ui64; + }; + + /* convert between UI64 representation and number */ + var ui64_i2n = function (x) { + var n = 0; + for (var i = UI64_DIGITS - 1; i >= 0; i--) { + n *= UI64_DIGIT_BASE; + n += x[i]; + } + return Math.floor(n); + }; + + /* add UI64 (y) to UI64 (x) and return overflow/carry as number */ + var ui64_add = function (x, y) { + var carry = 0; + for (var i = 0; i < UI64_DIGITS; i++) { + carry += x[i] + y[i]; + x[i] = Math.floor(carry % UI64_DIGIT_BASE); + carry = Math.floor(carry / UI64_DIGIT_BASE); + } + return carry; + }; + + /* multiply number (n) to UI64 (x) and return overflow/carry as number */ + var ui64_muln = function (x, n) { + var carry = 0; + for (var i = 0; i < UI64_DIGITS; i++) { + carry += x[i] * n; + x[i] = Math.floor(carry % UI64_DIGIT_BASE); + carry = Math.floor(carry / UI64_DIGIT_BASE); + } + return carry; + }; + + /* multiply UI64 (y) to UI64 (x) and return overflow/carry as UI64 */ + var ui64_mul = function (x, y) { + var i, j; + + /* clear temporary result buffer zx */ + var zx = new Array(UI64_DIGITS + UI64_DIGITS); + for (i = 0; i < (UI64_DIGITS + UI64_DIGITS); i++) + zx[i] = 0; + + /* perform multiplication operation */ + var carry; + for (i = 0; i < UI64_DIGITS; i++) { + /* calculate partial product and immediately add to zx */ + carry = 0; + for (j = 0; j < UI64_DIGITS; j++) { + carry += (x[i] * y[j]) + zx[i + j]; + zx[i + j] = (carry % UI64_DIGIT_BASE); + carry /= UI64_DIGIT_BASE; + } + + /* add carry to remaining digits in zx */ + for ( ; j < UI64_DIGITS + UI64_DIGITS - i; j++) { + carry += zx[i + j]; + zx[i + j] = (carry % UI64_DIGIT_BASE); + carry /= UI64_DIGIT_BASE; + } + } + + /* provide result by splitting zx into x and ov */ + for (i = 0; i < UI64_DIGITS; i++) + x[i] = zx[i]; + return zx.slice(UI64_DIGITS, UI64_DIGITS); + }; + + /* AND operation: UI64 (x) &= UI64 (y) */ + var ui64_and = function (x, y) { + for (var i = 0; i < UI64_DIGITS; i++) + x[i] &= y[i]; + return x; + }; + + /* OR operation: UI64 (x) |= UI64 (y) */ + var ui64_or = function (x, y) { + for (var i = 0; i < UI64_DIGITS; i++) + x[i] |= y[i]; + return x; + }; + + /* rotate right UI64 (x) by a "s" bits and return overflow/carry as number */ + var ui64_rorn = function (x, s) { + var ov = ui64_zero(); + if ((s % UI64_DIGIT_BITS) !== 0) + throw new Error("ui64_rorn: only bit rotations supported with a multiple of digit bits"); + var k = Math.floor(s / UI64_DIGIT_BITS); + for (var i = 0; i < k; i++) { + for (var j = UI64_DIGITS - 1 - 1; j >= 0; j--) + ov[j + 1] = ov[j]; + ov[0] = x[0]; + for (j = 0; j < UI64_DIGITS - 1; j++) + x[j] = x[j + 1]; + x[j] = 0; + } + return ui64_i2n(ov); + }; + + /* rotate right UI64 (x) by a "s" bits and return overflow/carry as number */ + var ui64_ror = function (x, s) { + /* sanity check shifting */ + if (s > (UI64_DIGITS * UI64_DIGIT_BITS)) + throw new Error("ui64_ror: invalid number of bits to shift"); + + /* prepare temporary buffer zx */ + var zx = new Array(UI64_DIGITS + UI64_DIGITS); + var i; + for (i = 0; i < UI64_DIGITS; i++) { + zx[i + UI64_DIGITS] = x[i]; + zx[i] = 0; + } + + /* shift bits inside zx */ + var k1 = Math.floor(s / UI64_DIGIT_BITS); + var k2 = s % UI64_DIGIT_BITS; + for (i = k1; i < UI64_DIGITS + UI64_DIGITS - 1; i++) { + zx[i - k1] = + ((zx[i] >>> k2) | + (zx[i + 1] << (UI64_DIGIT_BITS - k2))) & + ((1 << UI64_DIGIT_BITS) - 1); + } + zx[UI64_DIGITS + UI64_DIGITS - 1 - k1] = + (zx[UI64_DIGITS + UI64_DIGITS - 1] >>> k2) & + ((1 << UI64_DIGIT_BITS) - 1); + for (i = UI64_DIGITS + UI64_DIGITS - 1 - k1 + 1; i < UI64_DIGITS + UI64_DIGITS; i++) + zx[i] = 0; + + /* provide result by splitting zx into x and ov */ + for (i = 0; i < UI64_DIGITS; i++) + x[i] = zx[i + UI64_DIGITS]; + return zx.slice(0, UI64_DIGITS); + }; + + /* rotate left UI64 (x) by a "s" bits and return overflow/carry as UI64 */ + var ui64_rol = function (x, s) { + /* sanity check shifting */ + if (s > (UI64_DIGITS * UI64_DIGIT_BITS)) + throw new Error("ui64_rol: invalid number of bits to shift"); + + /* prepare temporary buffer zx */ + var zx = new Array(UI64_DIGITS + UI64_DIGITS); + var i; + for (i = 0; i < UI64_DIGITS; i++) { + zx[i + UI64_DIGITS] = 0; + zx[i] = x[i]; + } + + /* shift bits inside zx */ + var k1 = Math.floor(s / UI64_DIGIT_BITS); + var k2 = s % UI64_DIGIT_BITS; + for (i = UI64_DIGITS - 1 - k1; i > 0; i--) { + zx[i + k1] = + ((zx[i] << k2) | + (zx[i - 1] >>> (UI64_DIGIT_BITS - k2))) & + ((1 << UI64_DIGIT_BITS) - 1); + } + zx[0 + k1] = (zx[0] << k2) & ((1 << UI64_DIGIT_BITS) - 1); + for (i = 0 + k1 - 1; i >= 0; i--) + zx[i] = 0; + + /* provide result by splitting zx into x and ov */ + for (i = 0; i < UI64_DIGITS; i++) + x[i] = zx[i]; + return zx.slice(UI64_DIGITS, UI64_DIGITS); + }; + + /* XOR UI64 (y) onto UI64 (x) and return x */ + var ui64_xor = function (x, y) { + for (var i = 0; i < UI64_DIGITS; i++) + x[i] ^= y[i]; + return; + }; + + /* this is just a really minimal UI32 functionality, + just sufficient enough for the MD5 and SHA1 digests! */ + + /* safely add two integers (with wrapping at 2^32) */ + var ui32_add = function (x, y) { + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); + }; + + /* bitwise rotate 32-bit number to the left */ + var ui32_rol = function (num, cnt) { + return ( + ((num << cnt ) & 0xFFFFFFFF) + | ((num >>> (32 - cnt)) & 0xFFFFFFFF) + ); + }; + + /* calculate the SHA-1 of an array of big-endian words, and a bit length */ + var sha1_core = function (x, len) { + /* perform the appropriate triplet combination function for the current iteration */ + function sha1_ft (t, b, c, d) { + if (t < 20) return (b & c) | ((~b) & d); + if (t < 40) return b ^ c ^ d; + if (t < 60) return (b & c) | (b & d) | (c & d); + return b ^ c ^ d; + } + + /* determine the appropriate additive constant for the current iteration */ + function sha1_kt (t) { + return (t < 20) ? 1518500249 : + (t < 40) ? 1859775393 : + (t < 60) ? -1894007588 : + -899497514; + } + + /* append padding */ + x[len >> 5] |= 0x80 << (24 - len % 32); + x[((len + 64 >> 9) << 4) + 15] = len; + + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + + for (var i = 0; i < x.length; i += 16) { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + for (var j = 0; j < 80; j++) { + if (j < 16) + w[j] = x[i + j]; + else + w[j] = ui32_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); + var t = ui32_add( + ui32_add(ui32_rol(a, 5), sha1_ft(j, b, c, d)), + ui32_add(ui32_add(e, w[j]), sha1_kt(j)) + ); + e = d; + d = c; + c = ui32_rol(b, 30); + b = a; + a = t; + } + a = ui32_add(a, olda); + b = ui32_add(b, oldb); + c = ui32_add(c, oldc); + d = ui32_add(d, oldd); + e = ui32_add(e, olde); + } + return [ a, b, c, d, e ]; + }; + + /* calculate the SHA-1 of an octet string */ + var sha1 = function (s) { + return a2s( + sha1_core( + s2a(s, { ibits: 8, obits: 32, obigendian: true }), + s.length * 8), + { ibits: 32, ibigendian: true }); + }; + + /* calculate the MD5 of an array of little-endian words, and a bit length */ + var md5_core = function (x, len) { + /* basic operations the algorithm uses */ + function md5_cmn (q, a, b, x, s, t) { + return ui32_add(ui32_rol(ui32_add(ui32_add(a, q), ui32_add(x, t)), s), b); + } + function md5_ff (a, b, c, d, x, s, t) { + return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); + } + function md5_gg (a, b, c, d, x, s, t) { + return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); + } + function md5_hh (a, b, c, d, x, s, t) { + return md5_cmn(b ^ c ^ d, a, b, x, s, t); + } + function md5_ii (a, b, c, d, x, s, t) { + return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); + } + + /* append padding */ + x[len >> 5] |= 0x80 << ((len) % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (var i = 0; i < x.length; i += 16) { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + + a = md5_ff(a, b, c, d, x[i+ 0], 7, -680876936); + d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); + c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); + b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); + a = md5_ff(a, b, c, d, x[i+ 4], 7, -176418897); + d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); + c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); + b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); + a = md5_ff(a, b, c, d, x[i+ 8], 7, 1770035416); + d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); + c = md5_ff(c, d, a, b, x[i+10], 17, -42063); + b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); + a = md5_ff(a, b, c, d, x[i+12], 7, 1804603682); + d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); + c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); + b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); + + a = md5_gg(a, b, c, d, x[i+ 1], 5, -165796510); + d = md5_gg(d, a, b, c, x[i+ 6], 9, -1069501632); + c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); + b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); + a = md5_gg(a, b, c, d, x[i+ 5], 5, -701558691); + d = md5_gg(d, a, b, c, x[i+10], 9, 38016083); + c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); + b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); + a = md5_gg(a, b, c, d, x[i+ 9], 5, 568446438); + d = md5_gg(d, a, b, c, x[i+14], 9, -1019803690); + c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); + b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); + a = md5_gg(a, b, c, d, x[i+13], 5, -1444681467); + d = md5_gg(d, a, b, c, x[i+ 2], 9, -51403784); + c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); + b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); + + a = md5_hh(a, b, c, d, x[i+ 5], 4, -378558); + d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); + c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); + b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); + a = md5_hh(a, b, c, d, x[i+ 1], 4, -1530992060); + d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); + c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); + b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); + a = md5_hh(a, b, c, d, x[i+13], 4, 681279174); + d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); + c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); + b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); + a = md5_hh(a, b, c, d, x[i+ 9], 4, -640364487); + d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); + c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); + b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); + + a = md5_ii(a, b, c, d, x[i+ 0], 6, -198630844); + d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); + c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); + b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); + a = md5_ii(a, b, c, d, x[i+12], 6, 1700485571); + d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); + c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); + b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); + a = md5_ii(a, b, c, d, x[i+ 8], 6, 1873313359); + d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); + c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); + b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); + a = md5_ii(a, b, c, d, x[i+ 4], 6, -145523070); + d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); + c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); + b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); + + a = ui32_add(a, olda); + b = ui32_add(b, oldb); + c = ui32_add(c, oldc); + d = ui32_add(d, oldd); + } + return [ a, b, c, d ]; + }; + + /* calculate the MD5 of an octet string */ + var md5 = function (s) { + return a2s( + md5_core( + s2a(s, { ibits: 8, obits: 32, obigendian: false }), + s.length * 8), + { ibits: 32, ibigendian: false }); + }; + + /* PCG Pseudo-Random-Number-Generator (PRNG) + http://www.pcg-random.org/pdf/hmc-cs-2014-0905.pdf + This is the PCG-XSH-RR variant ("xorshift high (bits), random rotation"), + based on 32-bit output, 64-bit internal state and the formulas: + state = state * MUL + INC + output = rotate32((state ^ (state >> 18)) >> 27, state >> 59) */ + + var PCG = function (seed) { + /* pre-load some "magic" constants */ + this.mul = ui64_d2i(0x58, 0x51, 0xf4, 0x2d, 0x4c, 0x95, 0x7f, 0x2d); + this.inc = ui64_d2i(0x14, 0x05, 0x7b, 0x7e, 0xf7, 0x67, 0x81, 0x4f); + this.mask = ui64_d2i(0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff); + + /* generate an initial internal state */ + this.state = ui64_clone(this.inc); + this.next(); + ui64_and(this.state, this.mask); + seed = ui64_n2i(seed !== undefined ? + (seed >>> 0) : ((Math.random() * 0xffffffff) >>> 0)); + ui64_or(this.state, seed); + this.next(); + }; + PCG.prototype.next = function () { + /* save current state */ + var state = ui64_clone(this.state); + + /* advance internal state */ + ui64_mul(this.state, this.mul); + ui64_add(this.state, this.inc); + + /* calculate: (state ^ (state >> 18)) >> 27 */ + var output = ui64_clone(state); + ui64_ror(output, 18); + ui64_xor(output, state); + ui64_ror(output, 27); + + /* calculate: state >> 59 */ + var rot = ui64_clone(state); + ui64_ror(rot, 59); + + /* calculate: rotate32(xorshifted, rot) */ + ui64_and(output, this.mask); + var k = ui64_i2n(rot); + var output2 = ui64_clone(output); + ui64_rol(output2, 32 - k); + ui64_ror(output, k); + ui64_xor(output, output2); + + /* return pseudo-random number */ + return ui64_i2n(output); + }; + var pcg = new PCG(); + + /* utility function: simple Pseudo Random Number Generator (PRNG) */ + var prng = function (len, radix) { + var bytes = []; + for (var i = 0; i < len; i++) + bytes[i] = (pcg.next() % radix); + return bytes; + }; + + /* internal state */ + var time_last = 0; + var time_seq = 0; + + /* the API constructor */ + var UUID = function () { + if (arguments.length === 1 && typeof arguments[0] === "string") + this.parse.apply(this, arguments); + else if (arguments.length >= 1 && typeof arguments[0] === "number") + this.make.apply(this, arguments); + else if (arguments.length >= 1) + throw new Error("UUID: constructor: invalid arguments"); + else + for (var i = 0; i < 16; i++) + this[i] = 0x00; + }; + + /* inherit from a standard class which provides the + best UUID representation in the particular environment */ + /* global Uint8Array: false */ + /* global Buffer: false */ + if (typeof Uint8Array !== "undefined") + /* HTML5 TypedArray (browser environments: IE10, FF, CH, SF, OP) + (http://caniuse.com/#feat=typedarrays) */ + UUID.prototype = new Uint8Array(16); + else if (typeof Buffer !== "undefined") + /* Node Buffer (server environments: Node.js, IO.js) */ + UUID.prototype = new Buffer(16); + else + /* JavaScript (any environment) */ + UUID.prototype = new Array(16); + UUID.prototype.constructor = UUID; + + /* API method: generate a particular UUID */ + UUID.prototype.make = function (version) { + var i; + var uuid = this; + if (version === 1) { + /* generate UUID version 1 (time and node based) */ + + /* determine current time and time sequence counter */ + var date = new Date(); + var time_now = date.getTime(); + if (time_now !== time_last) + time_seq = 0; + else + time_seq++; + time_last = time_now; + + /* convert time to 100*nsec */ + var t = ui64_n2i(time_now); + ui64_muln(t, 1000 * 10); + + /* adjust for offset between UUID and Unix Epoch time */ + ui64_add(t, ui64_d2i(0x01, 0xB2, 0x1D, 0xD2, 0x13, 0x81, 0x40, 0x00)); + + /* compensate for low resolution system clock by adding + the time/tick sequence counter */ + if (time_seq > 0) + ui64_add(t, ui64_n2i(time_seq)); + + /* store the 60 LSB of the time in the UUID */ + var ov; + ov = ui64_rorn(t, 8); uuid[3] = (ov & 0xFF); + ov = ui64_rorn(t, 8); uuid[2] = (ov & 0xFF); + ov = ui64_rorn(t, 8); uuid[1] = (ov & 0xFF); + ov = ui64_rorn(t, 8); uuid[0] = (ov & 0xFF); + ov = ui64_rorn(t, 8); uuid[5] = (ov & 0xFF); + ov = ui64_rorn(t, 8); uuid[4] = (ov & 0xFF); + ov = ui64_rorn(t, 8); uuid[7] = (ov & 0xFF); + ov = ui64_rorn(t, 8); uuid[6] = (ov & 0x0F); + + /* generate a random clock sequence */ + var clock = prng(2, 255); + uuid[8] = clock[0]; + uuid[9] = clock[1]; + + /* generate a random local multicast node address */ + var node = prng(6, 255); + node[0] |= 0x01; + node[0] |= 0x02; + for (i = 0; i < 6; i++) + uuid[10 + i] = node[i]; + } + else if (version === 4) { + /* generate UUID version 4 (random data based) */ + var data = prng(16, 255); + for (i = 0; i < 16; i++) + this[i] = data[i]; + } + else if (version === 3 || version === 5) { + /* generate UUID version 3/5 (MD5/SHA-1 based) */ + var input = ""; + var nsUUID = ( + typeof arguments[1] === "object" && arguments[1] instanceof UUID ? + arguments[1] : new UUID().parse(arguments[1]) + ); + for (i = 0; i < 16; i++) + input += String.fromCharCode(nsUUID[i]); + input += arguments[2]; + var s = version === 3 ? md5(input) : sha1(input); + for (i = 0; i < 16; i++) + uuid[i] = s.charCodeAt(i); + } + else + throw new Error("UUID: make: invalid version"); + + /* brand with particular UUID version */ + uuid[6] &= 0x0F; + uuid[6] |= (version << 4); + + /* brand as UUID variant 2 (DCE 1.1) */ + uuid[8] &= 0x3F; + uuid[8] |= (0x02 << 6); + + return uuid; + }; + + /* API method: format UUID into usual textual representation */ + UUID.prototype.format = function (type) { + var str, arr; + if (type === "z85") + str = z85_encode(this, 16); + else if (type === "b16") { + arr = Array(32); + a2hs(this, 0, 15, true, arr, 0); + str = arr.join(""); + } + else if (type === undefined || type === "std") { + arr = new Array(36); + a2hs(this, 0, 3, false, arr, 0); arr[ 8] = "-"; + a2hs(this, 4, 5, false, arr, 9); arr[13] = "-"; + a2hs(this, 6, 7, false, arr, 14); arr[18] = "-"; + a2hs(this, 8, 9, false, arr, 19); arr[23] = "-"; + a2hs(this, 10, 15, false, arr, 24); + str = arr.join(""); + } + return str; + }; + + /* API method: format UUID into usual textual representation */ + UUID.prototype.toString = function (type) { + return this.format(type); + }; + + /* API method: parse UUID from usual textual representation */ + UUID.prototype.parse = function (str, type) { + if (typeof str !== "string") + throw new Error("UUID: parse: invalid argument (type string expected)"); + if (type === "z85") + z85_decode(str, this); + else if (type === "b16") + hs2a(str, 0, 35, this, 0); + else if (type === undefined || type === "std") { + var map = { + "nil": "00000000-0000-0000-0000-000000000000", + "ns:DNS": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", + "ns:URL": "6ba7b811-9dad-11d1-80b4-00c04fd430c8", + "ns:OID": "6ba7b812-9dad-11d1-80b4-00c04fd430c8", + "ns:X500": "6ba7b814-9dad-11d1-80b4-00c04fd430c8" + }; + if (map[str] !== undefined) + str = map[str]; + else if (!str.match(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/)) + throw new Error("UUID: parse: invalid string representation " + + "(expected \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\")"); + hs2a(str, 0, 7, this, 0); + hs2a(str, 9, 12, this, 4); + hs2a(str, 14, 17, this, 6); + hs2a(str, 19, 22, this, 8); + hs2a(str, 24, 35, this, 10); + } + return this; + }; + + /* API method: export UUID into standard array of numbers */ + UUID.prototype.export = function () { + var arr = Array(16); + for (var i = 0; i < 16; i++) + arr[i] = this[i]; + return arr; + }; + + /* API method: import UUID from standard array of numbers */ + UUID.prototype.import = function (arr) { + if (!(typeof arr === "object" && arr instanceof Array)) + throw new Error("UUID: import: invalid argument (type Array expected)"); + if (arr.length !== 16) + throw new Error("UUID: import: invalid argument (Array of length 16 expected)"); + for (var i = 0; i < 16; i++) { + if (typeof arr[i] !== "number") + throw new Error("UUID: import: invalid array element #" + i + + " (type Number expected)"); + if (!(isFinite(arr[i]) && Math.floor(arr[i]) === arr[i])) + throw new Error("UUID: import: invalid array element #" + i + + " (Number with integer value expected)"); + if (!(arr[i] >= 0 && arr[i] <= 255)) + throw new Error("UUID: import: invalid array element #" + i + + " (Number with integer value in range 0...255 expected)"); + this[i] = arr[i]; + } + return this; + }; + + /* API method: compare UUID against another one */ + UUID.prototype.compare = function (other) { + if (typeof other !== "object") + throw new Error("UUID: compare: invalid argument (type UUID expected)"); + if (!(other instanceof UUID)) + throw new Error("UUID: compare: invalid argument (type UUID expected)"); + for (var i = 0; i < 16; i++) { + if (this[i] < other[i]) + return -1; + else if (this[i] > other[i]) + return +1; + } + return 0; + }; + + /* API method: hash UUID by XOR-folding it k times */ + UUID.prototype.fold = function (k) { + if (typeof k === "undefined") + throw new Error("UUID: fold: invalid argument (number of fold operations expected)"); + if (k < 1 || k > 4) + throw new Error("UUID: fold: invalid argument (1-4 fold operations expected)"); + var n = 16 / Math.pow(2, k); + var hash = new Array(n); + for (var i = 0; i < n; i++) { + var h = 0; + for (var j = 0; i + j < 16; j += n) + h ^= this[i + j]; + hash[i] = h; + } + return hash; + }; + + UUID.PCG = PCG; + + /* export API */ + return UUID; +})); + diff --git a/js/runtime.go b/graffiti/js/runtime.go similarity index 95% rename from js/runtime.go rename to graffiti/js/runtime.go index f1127be930..953fa75d13 100644 --- a/js/runtime.go +++ b/graffiti/js/runtime.go @@ -32,7 +32,6 @@ import ( shttp "github.com/skydive-project/skydive/graffiti/http" "github.com/skydive-project/skydive/graffiti/logging" - "github.com/skydive-project/skydive/statics" ) type evalReq struct { @@ -112,7 +111,7 @@ func (r *Runtime) RunScript(path string) otto.Value { } func (r *Runtime) runEmbededScript(path string) error { - content, err := statics.Asset(path) + content, err := Asset(path) if err != nil { return fmt.Errorf("Failed to load %s asset: %s)", path, err) } @@ -367,23 +366,23 @@ func NewRuntime() (*Runtime, error) { rnd := rand.New(src) r.SetRandomSource(rnd.Float64) - if err := r.runEmbededScript("js/promise-7.0.4.min.js"); err != nil { + if err := r.runEmbededScript("promise-7.0.4.min.js"); err != nil { return nil, err } - if err := r.runEmbededScript("js/promise-done-7.0.4.min.js"); err != nil { + if err := r.runEmbededScript("promise-done-7.0.4.min.js"); err != nil { return nil, err } - if err := r.runEmbededScript("js/api.js"); err != nil { + if err := r.runEmbededScript("api.js"); err != nil { return nil, err } - if err := r.runEmbededScript("js/otto.js"); err != nil { + if err := r.runEmbededScript("otto.js"); err != nil { return nil, err } - if err := r.runEmbededScript("statics/js/vendor/pure-uuid.js"); err != nil { + if err := r.runEmbededScript("pure-uuid.js"); err != nil { return nil, err } diff --git a/js/test.ts b/graffiti/js/test.ts similarity index 100% rename from js/test.ts rename to graffiti/js/test.ts diff --git a/js/api.js b/js/api.js index 57106dc3ba..3ed90d1e18 100644 --- a/js/api.js +++ b/js/api.js @@ -26,407 +26,150 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var makeRequest = null; -var Unauthorized = "Unauthorized"; -var jsEnv = require("browser-or-node"); -if (jsEnv) { - var querystring = require('qs'); - var defaultsDeep = require('lodash.defaultsdeep'); - // When using node, we use najax for $.ajax calls - if (jsEnv.isNode && !jsEnv.isBrowser) { - var najax = require('najax'); - global.$ = { "ajax": najax }; - } - makeRequest = function (client, url, method, data, opts) { - return new Promise(function (resolve, reject) { - return $.ajax(defaultsDeep(opts, { - dataType: "json", - url: client.baseURL + url, - data: data, - contentType: "application/json; charset=utf-8", - method: method - })) - .fail(function (jqXHR) { - if (jqXHR.status == 401) { - reject(Unauthorized); - } - else { - reject(jqXHR); - } - }) - .done(function (data, statusText, jqXHR) { - if (jqXHR.status >= 200 && jqXHR.status < 400) { - var cookie = jqXHR.getResponseHeader("Set-Cookie"); - if (cookie) { - client.cookie = cookie; - } - resolve(data, jqXHR); - } - else { - reject(jqXHR); - } - }); - }); - }; -} -else { - // We're running inside Otto. We use the 'request' method - // exported by Skydive that makes use of the REST client - // so we get support for authentication - makeRequest = function (client, url, method, body, opts) { - var data; - var output = request(url, method, body); - if (output && output.length > 0) { - data = JSON.parse(output); - } - else { - data = null; - } - return { 'then': function () { return data; } }; - }; -} -function paramsString(params) { - var s = ""; - for (var param in params) { - if (param !== "0") { - s += ", "; - } - switch (typeof params[param]) { - case "string": - s += '"' + params[param] + '"'; - break; - default: - s += params[param]; - break; - } - } - return s; -} -// Returns a string of the invocation of 'method' with its parameters 'params' -// like MyMethod(1, 2, "s") -function callString(method) { - var params = []; - for (var _i = 1; _i < arguments.length; _i++) { - params[_i - 1] = arguments[_i]; - } - var s = method + "("; - s += paramsString(params); - s += ")"; - return s; -} -var SerializationHelper = /** @class */ (function () { - function SerializationHelper() { - } - SerializationHelper.toInstance = function (obj, jsonObj) { - if (typeof obj["fromJSON"] === "function") { - obj["fromJSON"](jsonObj); - } - else { - for (var propName in jsonObj) { - obj[propName] = jsonObj[propName]; - } - } - return obj; - }; - SerializationHelper.unmarshalArray = function (data, c) { - var items = []; - for (var obj in data) { - var newT = SerializationHelper.toInstance(new c(), data[obj]); - items.push(newT); - } - return items; - }; - SerializationHelper.unmarshalMapArray = function (data, c) { - var items = {}; - for (var key in data) { - items[key] = this.unmarshalArray(data[key], c); - } - return items; - }; - SerializationHelper.unmarshalMap = function (data, c) { - var items = {}; - for (var obj in data) { - var newT = SerializationHelper.toInstance(new c(), data[obj]); - items[obj] = newT; - } - return items; - }; - return SerializationHelper; -}()); -exports.SerializationHelper = SerializationHelper; -var APIObject = /** @class */ (function (_super) { - __extends(APIObject, _super); - function APIObject() { - return _super !== null && _super.apply(this, arguments) || this; - } - return APIObject; -}(Object)); -exports.APIObject = APIObject; -var Alert = /** @class */ (function (_super) { - __extends(Alert, _super); - function Alert() { - return _super !== null && _super.apply(this, arguments) || this; - } - return Alert; -}(APIObject)); -exports.Alert = Alert; +var graffiti = require("../graffiti/js/api"); var Capture = /** @class */ (function (_super) { __extends(Capture, _super); function Capture() { return _super !== null && _super.apply(this, arguments) || this; } return Capture; -}(APIObject)); +}(graffiti.APIObject)); exports.Capture = Capture; -var EdgeRule = /** @class */ (function (_super) { - __extends(EdgeRule, _super); - function EdgeRule() { - return _super !== null && _super.apply(this, arguments) || this; - } - return EdgeRule; -}(APIObject)); -exports.EdgeRule = EdgeRule; -var NodeRule = /** @class */ (function (_super) { - __extends(NodeRule, _super); - function NodeRule() { - return _super !== null && _super.apply(this, arguments) || this; - } - return NodeRule; -}(APIObject)); -exports.NodeRule = NodeRule; var PacketInjection = /** @class */ (function (_super) { __extends(PacketInjection, _super); function PacketInjection() { return _super !== null && _super.apply(this, arguments) || this; } return PacketInjection; -}(APIObject)); +}(graffiti.APIObject)); exports.PacketInjection = PacketInjection; -var Workflow = /** @class */ (function (_super) { - __extends(Workflow, _super); - function Workflow() { - return _super !== null && _super.apply(this, arguments) || this; - } - return Workflow; -}(APIObject)); -exports.Workflow = Workflow; -var API = /** @class */ (function () { - function API(client, resource, c) { - this.client = client; - this.Resource = resource; - this.Factory = c; +var Metric = /** @class */ (function () { + function Metric() { } - API.prototype.create = function (obj) { - var resource = this.Resource; - return this.client.request("/api/" + resource, "POST", JSON.stringify(obj), {}) - .then(function (data) { - return SerializationHelper.toInstance(new obj.constructor(), data); - }); - }; - API.prototype.list = function () { - var resource = this.Resource; - var factory = this.Factory; - return this.client.request('/api/' + resource, "GET", "", {}) - .then(function (data) { - var resources = {}; - for (var obj in data) { - var resource_1 = SerializationHelper.toInstance(new factory(), data[obj]); - resources[obj] = resource_1; - } - return resources; - }); - }; - API.prototype.get = function (id) { - var resource = this.Resource; - var factory = this.Factory; - return this.client.request('/api/' + resource + "/" + id, "GET", "", {}) - .then(function (data) { - return SerializationHelper.toInstance(new factory(), data); - }); - }; - API.prototype.delete = function (id) { - var resource = this.Resource; - return this.client.request('/api/' + resource + "/" + id, "DELETE", "", { "dataType": "" }); - }; - return API; + return Metric; }()); -exports.API = API; -var GraphElement = /** @class */ (function () { - function GraphElement() { +exports.Metric = Metric; +var FlowLayer = /** @class */ (function () { + function FlowLayer() { } - return GraphElement; + return FlowLayer; }()); -exports.GraphElement = GraphElement; -var GraphNode = /** @class */ (function (_super) { - __extends(GraphNode, _super); - function GraphNode() { - return _super !== null && _super.apply(this, arguments) || this; +exports.FlowLayer = FlowLayer; +var ICMPLayer = /** @class */ (function () { + function ICMPLayer() { } - return GraphNode; -}(GraphElement)); -exports.GraphNode = GraphNode; -var GraphEdge = /** @class */ (function (_super) { - __extends(GraphEdge, _super); - function GraphEdge() { - return _super !== null && _super.apply(this, arguments) || this; + return ICMPLayer; +}()); +exports.ICMPLayer = ICMPLayer; +var FlowMetric = /** @class */ (function () { + function FlowMetric() { } - return GraphEdge; -}(GraphElement)); -exports.GraphEdge = GraphEdge; -var Graph = /** @class */ (function () { - function Graph(nodes, edges) { - this.nodes = nodes || {}; - this.edges = edges || {}; + return FlowMetric; +}()); +exports.FlowMetric = FlowMetric; +var RawPacket = /** @class */ (function () { + function RawPacket() { } - return Graph; + return RawPacket; }()); -exports.Graph = Graph; -var GremlinAPI = /** @class */ (function () { - function GremlinAPI(client) { - this.client = client; +exports.RawPacket = RawPacket; +var TCPMetric = /** @class */ (function () { + function TCPMetric() { } - GremlinAPI.prototype.query = function (s) { - return this.client.request('/api/topology', "POST", JSON.stringify({ 'GremlinQuery': s }), {}) - .then(function (data) { - if (data === null) - return []; - // Result can be [Node] or [[Node, Node]] - if (data.length > 0 && data[0] instanceof Array) - data = data[0]; - return data; - }); - }; - GremlinAPI.prototype.G = function () { - return new G(this); - }; - return GremlinAPI; + return TCPMetric; }()); -exports.GremlinAPI = GremlinAPI; -var _Metadata = /** @class */ (function () { - function _Metadata() { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - this.params = params; +exports.TCPMetric = TCPMetric; +var Flow = /** @class */ (function () { + function Flow() { } - _Metadata.prototype.toString = function () { - return "Metadata(" + paramsString(this.params) + ")"; - }; - return _Metadata; + return Flow; }()); -exports._Metadata = _Metadata; -function Metadata() { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; +exports.Flow = Flow; +var Hops = /** @class */ (function (_super) { + __extends(Hops, _super); + function Hops() { + return _super !== null && _super.apply(this, arguments) || this; } - return new (_Metadata.bind.apply(_Metadata, [void 0].concat(params)))(); -} -exports.Metadata = Metadata; -var Step = /** @class */ (function () { - function Step(api, previous) { - if (previous === void 0) { previous = null; } - var params = []; - for (var _i = 2; _i < arguments.length; _i++) { - params[_i - 2] = arguments[_i]; - } - this.api = api; - this.previous = previous; - this.params = params; + Hops.prototype.name = function () { return "Hops"; }; + return Hops; +}(graffiti.V)); +exports.Hops = Hops; +var CaptureNode = /** @class */ (function (_super) { + __extends(CaptureNode, _super); + function CaptureNode() { + return _super !== null && _super.apply(this, arguments) || this; } - Step.prototype.name = function () { return "InvalidStep"; }; - Step.prototype.toString = function () { - if (this.previous !== null) { - var gremlin = this.previous.toString() + "."; - return gremlin + callString.apply(void 0, [this.name()].concat(this.params)); - } - else { - return this.name(); - } - }; - Step.prototype.serialize = function (data) { - return this.previous.serialize(data); - }; - Step.prototype.result = function () { - var data = this.api.query(this.toString()); - return this.serialize(data); - }; - return Step; -}()); -exports.Step = Step; -var G = /** @class */ (function (_super) { - __extends(G, _super); - function G(api) { - return _super.call(this, api) || this; + CaptureNode.prototype.name = function () { return "CaptureNode"; }; + return CaptureNode; +}(graffiti.V)); +exports.CaptureNode = CaptureNode; +var Metrics = /** @class */ (function (_super) { + __extends(Metrics, _super); + function Metrics() { + return _super !== null && _super.apply(this, arguments) || this; } - G.prototype.name = function () { return "G"; }; - G.prototype.serialize = function (data) { - return { - "Nodes": SerializationHelper.unmarshalArray(data[0].Nodes, GraphNode), - "Edges": SerializationHelper.unmarshalArray(data[0].Edges, GraphEdge), - }; + Metrics.prototype.name = function () { return "Metrics"; }; + Metrics.prototype.serialize = function (data) { + return graffiti.SerializationHelper.unmarshalMapArray(data[0], Metric); }; - G.prototype.Context = function () { + Metrics.prototype.Sum = function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new Context(this.api); + var _a; + return new ((_a = graffiti.Sum).bind.apply(_a, [void 0, this.api, this].concat(params)))(); }; - G.prototype.V = function () { + Metrics.prototype.Aggregates = function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new (V.bind.apply(V, [void 0, this.api, this].concat(params)))(); + return new (Aggregates.bind.apply(Aggregates, [void 0, this.api, this].concat(params)))(); }; - G.prototype.E = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (E.bind.apply(E, [void 0, this.api, this].concat(params)))(); + Metrics.prototype.Count = function () { + return new graffiti.Count(this.api, this); }; - G.prototype.Flows = function () { + return Metrics; +}(graffiti.Step)); +exports.Metrics = Metrics; +var Aggregates = /** @class */ (function (_super) { + __extends(Aggregates, _super); + function Aggregates() { + return _super !== null && _super.apply(this, arguments) || this; + } + Aggregates.prototype.name = function () { return "Aggregates"; }; + return Aggregates; +}(Metrics)); +exports.Aggregates = Aggregates; +var RawPackets = /** @class */ (function (_super) { + __extends(RawPackets, _super); + function RawPackets() { + return _super !== null && _super.apply(this, arguments) || this; + } + RawPackets.prototype.name = function () { return "RawPackets"; }; + RawPackets.prototype.serialize = function (data) { + return graffiti.SerializationHelper.unmarshalMapArray(data[0], RawPacket); + }; + RawPackets.prototype.BPF = function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new (Flows.bind.apply(Flows, [void 0, this.api, this].concat(params)))(); + return new (BPF.bind.apply(BPF, [void 0, this.api, this].concat(params)))(); }; - return G; -}(Step)); -exports.G = G; -var Context = /** @class */ (function (_super) { - __extends(Context, _super); - function Context(api, previous) { - if (previous === void 0) { previous = null; } - var params = []; - for (var _i = 2; _i < arguments.length; _i++) { - params[_i - 2] = arguments[_i]; - } - var _this = _super.call(this, api) || this; - _this.previous = previous; - _this.params = params; - return _this; - } - Context.prototype.name = function () { return "Context"; }; - return Context; -}(G)); -exports.Context = Context; -var Subgraph = /** @class */ (function (_super) { - __extends(Subgraph, _super); - function Subgraph(api, previous) { - if (previous === void 0) { previous = null; } - var _this = _super.call(this, api) || this; - _this.previous = previous; - return _this; + return RawPackets; +}(graffiti.Step)); +exports.RawPackets = RawPackets; +var BPF = /** @class */ (function (_super) { + __extends(BPF, _super); + function BPF() { + return _super !== null && _super.apply(this, arguments) || this; } - Subgraph.prototype.name = function () { return "Subgraph"; }; - return Subgraph; -}(G)); -exports.Subgraph = Subgraph; + BPF.prototype.name = function () { return "BPF"; }; + return BPF; +}(RawPackets)); +exports.BPF = BPF; function MixinStep(Base, name) { return /** @class */ (function (_super) { __extends(class_1, _super); @@ -437,618 +180,49 @@ function MixinStep(Base, name) { } return _super.apply(this, args) || this; } - class_1.prototype.name = function () { return name; }; - return class_1; - }(Base)); -} -var V = /** @class */ (function (_super) { - __extends(V, _super); - function V() { - return _super !== null && _super.apply(this, arguments) || this; - } - V.prototype.name = function () { return "V"; }; - V.prototype.serialize = function (data) { - return SerializationHelper.unmarshalArray(data, GraphNode); - }; - V.prototype.Has = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasV.bind.apply(HasV, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.HasEither = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasEitherV.bind.apply(HasEitherV, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.HasKey = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasKeyV.bind.apply(HasKeyV, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.HasNot = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasNotV.bind.apply(HasNotV, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Dedup = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (DedupV.bind.apply(DedupV, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.In = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (In.bind.apply(In, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Out = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Out.bind.apply(Out, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Both = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Both.bind.apply(Both, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Range = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (RangeV.bind.apply(RangeV, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Limit = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (LimitV.bind.apply(LimitV, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.InE = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (InE.bind.apply(InE, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.OutE = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (OutE.bind.apply(OutE, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.BothE = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (BothE.bind.apply(BothE, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.ShortestPathTo = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (ShortestPath.bind.apply(ShortestPath, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Subgraph = function () { - return new Subgraph(this.api, this); - }; - V.prototype.Count = function () { - return new Count(this.api, this); - }; - V.prototype.Values = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Values.bind.apply(Values, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Keys = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Keys.bind.apply(Keys, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Sum = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Keys.bind.apply(Keys, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Sort = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (SortV.bind.apply(SortV, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Metrics = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Metrics.bind.apply(Metrics, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Sockets = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Sockets.bind.apply(Sockets, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Flows = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Flows.bind.apply(Flows, [void 0, this.api, this].concat(params)))(); - }; - return V; -}(Step)); -exports.V = V; -var E = /** @class */ (function (_super) { - __extends(E, _super); - function E() { - return _super !== null && _super.apply(this, arguments) || this; - } - E.prototype.name = function () { return "E"; }; - E.prototype.serialize = function (data) { - return SerializationHelper.unmarshalArray(data, GraphEdge); - }; - E.prototype.Has = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasE.bind.apply(HasE, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.HasEither = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasEitherE.bind.apply(HasEitherE, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.HasKey = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasKeyE.bind.apply(HasKeyE, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.HasNot = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasNotE.bind.apply(HasNotE, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.Dedup = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (DedupE.bind.apply(DedupE, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.Range = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (RangeE.bind.apply(RangeE, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.Limit = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (LimitE.bind.apply(LimitE, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.InV = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (InV.bind.apply(InV, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.OutV = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (OutV.bind.apply(OutV, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.BothV = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (BothV.bind.apply(BothV, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.Subgraph = function () { - return new Subgraph(this.api, this); - }; - E.prototype.Count = function () { - return new Count(this.api, this); - }; - E.prototype.Values = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Values.bind.apply(Values, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.Keys = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Keys.bind.apply(Keys, [void 0, this.api, this].concat(params)))(); - }; - E.prototype.Sort = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (SortE.bind.apply(SortE, [void 0, this.api, this].concat(params)))(); - }; - return E; -}(Step)); -exports.E = E; -var HasV = /** @class */ (function (_super) { - __extends(HasV, _super); - function HasV() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HasV; -}(MixinStep(V, "Has"))); -var HasE = /** @class */ (function (_super) { - __extends(HasE, _super); - function HasE() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HasE; -}(MixinStep(E, "Has"))); -var HasEitherV = /** @class */ (function (_super) { - __extends(HasEitherV, _super); - function HasEitherV() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HasEitherV; -}(MixinStep(V, "HasEither"))); -var HasEitherE = /** @class */ (function (_super) { - __extends(HasEitherE, _super); - function HasEitherE() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HasEitherE; -}(MixinStep(E, "HasEither"))); -var HasKeyV = /** @class */ (function (_super) { - __extends(HasKeyV, _super); - function HasKeyV() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HasKeyV; -}(MixinStep(V, "HasKey"))); -var HasKeyE = /** @class */ (function (_super) { - __extends(HasKeyE, _super); - function HasKeyE() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HasKeyE; -}(MixinStep(E, "HasKey"))); -var HasNotV = /** @class */ (function (_super) { - __extends(HasNotV, _super); - function HasNotV() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HasNotV; -}(MixinStep(V, "HasNot"))); -var HasNotE = /** @class */ (function (_super) { - __extends(HasNotE, _super); - function HasNotE() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HasNotE; -}(MixinStep(E, "HasNot"))); -var DedupV = /** @class */ (function (_super) { - __extends(DedupV, _super); - function DedupV() { - return _super !== null && _super.apply(this, arguments) || this; - } - return DedupV; -}(MixinStep(V, "Dedup"))); -var DedupE = /** @class */ (function (_super) { - __extends(DedupE, _super); - function DedupE() { - return _super !== null && _super.apply(this, arguments) || this; - } - return DedupE; -}(MixinStep(E, "Dedup"))); -var RangeV = /** @class */ (function (_super) { - __extends(RangeV, _super); - function RangeV() { - return _super !== null && _super.apply(this, arguments) || this; - } - return RangeV; -}(MixinStep(V, "Range"))); -var RangeE = /** @class */ (function (_super) { - __extends(RangeE, _super); - function RangeE() { - return _super !== null && _super.apply(this, arguments) || this; - } - return RangeE; -}(MixinStep(E, "Range"))); -var LimitV = /** @class */ (function (_super) { - __extends(LimitV, _super); - function LimitV() { - return _super !== null && _super.apply(this, arguments) || this; - } - return LimitV; -}(MixinStep(V, "Limit"))); -var LimitE = /** @class */ (function (_super) { - __extends(LimitE, _super); - function LimitE() { - return _super !== null && _super.apply(this, arguments) || this; - } - return LimitE; -}(MixinStep(E, "Limit"))); -var SortV = /** @class */ (function (_super) { - __extends(SortV, _super); - function SortV() { - return _super !== null && _super.apply(this, arguments) || this; - } - return SortV; -}(MixinStep(V, "Sort"))); -var SortE = /** @class */ (function (_super) { - __extends(SortE, _super); - function SortE() { - return _super !== null && _super.apply(this, arguments) || this; - } - return SortE; -}(MixinStep(E, "Sort"))); -var Out = /** @class */ (function (_super) { - __extends(Out, _super); - function Out() { - return _super !== null && _super.apply(this, arguments) || this; - } - Out.prototype.name = function () { return "Out"; }; - return Out; -}(V)); -exports.Out = Out; -var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - return _super !== null && _super.apply(this, arguments) || this; - } - In.prototype.name = function () { return "In"; }; - return In; -}(V)); -exports.In = In; -var Both = /** @class */ (function (_super) { - __extends(Both, _super); - function Both() { - return _super !== null && _super.apply(this, arguments) || this; - } - Both.prototype.name = function () { return "Both"; }; - return Both; -}(V)); -exports.Both = Both; -var OutV = /** @class */ (function (_super) { - __extends(OutV, _super); - function OutV() { - return _super !== null && _super.apply(this, arguments) || this; - } - OutV.prototype.name = function () { return "OutV"; }; - return OutV; -}(V)); -exports.OutV = OutV; -var InV = /** @class */ (function (_super) { - __extends(InV, _super); - function InV() { - return _super !== null && _super.apply(this, arguments) || this; - } - InV.prototype.name = function () { return "InV"; }; - return InV; -}(V)); -exports.InV = InV; -var OutE = /** @class */ (function (_super) { - __extends(OutE, _super); - function OutE() { - return _super !== null && _super.apply(this, arguments) || this; - } - OutE.prototype.name = function () { return "OutE"; }; - return OutE; -}(E)); -exports.OutE = OutE; -var InE = /** @class */ (function (_super) { - __extends(InE, _super); - function InE() { - return _super !== null && _super.apply(this, arguments) || this; - } - InE.prototype.name = function () { return "InE"; }; - return InE; -}(E)); -exports.InE = InE; -var BothE = /** @class */ (function (_super) { - __extends(BothE, _super); - function BothE() { - return _super !== null && _super.apply(this, arguments) || this; - } - BothE.prototype.name = function () { return "BothE"; }; - return BothE; -}(E)); -exports.BothE = BothE; -var BothV = /** @class */ (function (_super) { - __extends(BothV, _super); - function BothV() { - return _super !== null && _super.apply(this, arguments) || this; + class_1.prototype.name = function () { return name; }; + return class_1; + }(Base)); +} +var Socket = /** @class */ (function () { + function Socket() { } - BothV.prototype.name = function () { return "BothV"; }; - return BothV; -}(V)); -exports.BothV = BothV; -var ShortestPath = /** @class */ (function (_super) { - __extends(ShortestPath, _super); - function ShortestPath() { + return Socket; +}()); +var Sockets = /** @class */ (function (_super) { + __extends(Sockets, _super); + function Sockets() { return _super !== null && _super.apply(this, arguments) || this; } - ShortestPath.prototype.name = function () { return "ShortestPathTo"; }; - ShortestPath.prototype.toString = function () { - if (this.previous !== null) { - var gremlin = this.previous.toString() + "."; - return gremlin + callString.apply(void 0, [this.name()].concat(this.params)); - } - else { - return this.name(); - } + Sockets.prototype.name = function () { return "Sockets"; }; + Sockets.prototype.serialize = function (data) { + return graffiti.SerializationHelper.unmarshalMapArray(data[0], Socket); }; - ShortestPath.prototype.serialize = function (data) { - var items = []; - for (var obj in data) { - items.push(SerializationHelper.unmarshalArray(data[obj], GraphNode)); + Sockets.prototype.Values = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; } - return items; + var _a; + return new ((_a = graffiti.Values).bind.apply(_a, [void 0, this.api, this].concat(params)))(); }; - return ShortestPath; -}(Step)); -exports.ShortestPath = ShortestPath; -var Predicate = /** @class */ (function () { - function Predicate(name) { + Sockets.prototype.Has = function () { var params = []; - for (var _i = 1; _i < arguments.length; _i++) { - params[_i - 1] = arguments[_i]; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; } - this.name = name; - this.params = params; - } - Predicate.prototype.toString = function () { - return callString.apply(void 0, [this.name].concat(this.params)); + return new (HasSockets.bind.apply(HasSockets, [void 0, this.api, this].concat(params)))(); }; - return Predicate; -}()); -function NE(param) { - return new Predicate("NE", param); -} -exports.NE = NE; -function GT(param) { - return new Predicate("GT", param); -} -exports.GT = GT; -function LT(param) { - return new Predicate("LT", param); -} -exports.LT = LT; -function GTE(param) { - return new Predicate("GTE", param); -} -exports.GTE = GTE; -function LTE(param) { - return new Predicate("LTE", param); -} -exports.LTE = LTE; -function IPV4RANGE(param) { - return new Predicate("IPV4RANGE", param); -} -exports.IPV4RANGE = IPV4RANGE; -function REGEX(param) { - return new Predicate("REGEX", param); -} -exports.REGEX = REGEX; -function WITHIN() { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Predicate.bind.apply(Predicate, [void 0, "WITHIN"].concat(params)))(); -} -exports.WITHIN = WITHIN; -function WITHOUT() { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Predicate.bind.apply(Predicate, [void 0, "WITHOUT"].concat(params)))(); -} -exports.WITHOUT = WITHOUT; -function INSIDE(from, to) { - return new Predicate("INSIDE", from, to); -} -exports.INSIDE = INSIDE; -function OUTSIDE(from, to) { - return new Predicate("OUTSIDE", from, to); -} -exports.OUTSIDE = OUTSIDE; -function BETWEEN(from, to) { - return new Predicate("BETWEEN", from, to); -} -exports.BETWEEN = BETWEEN; -exports.FOREVER = new Predicate("FOREVER"); -exports.NOW = new Predicate("NOW"); -exports.DESC = new Predicate("DESC"); -exports.ASC = new Predicate("ASC"); -var Metric = /** @class */ (function () { - function Metric() { - } - return Metric; -}()); -exports.Metric = Metric; -var FlowLayer = /** @class */ (function () { - function FlowLayer() { - } - return FlowLayer; -}()); -exports.FlowLayer = FlowLayer; -var ICMPLayer = /** @class */ (function () { - function ICMPLayer() { - } - return ICMPLayer; -}()); -exports.ICMPLayer = ICMPLayer; -var FlowMetric = /** @class */ (function () { - function FlowMetric() { - } - return FlowMetric; -}()); -exports.FlowMetric = FlowMetric; -var RawPacket = /** @class */ (function () { - function RawPacket() { - } - return RawPacket; -}()); -exports.RawPacket = RawPacket; -var TCPMetric = /** @class */ (function () { - function TCPMetric() { - } - return TCPMetric; -}()); -exports.TCPMetric = TCPMetric; -var Flow = /** @class */ (function () { - function Flow() { + return Sockets; +}(graffiti.Step)); +exports.Sockets = Sockets; +var HasSockets = /** @class */ (function (_super) { + __extends(HasSockets, _super); + function HasSockets() { + return _super !== null && _super.apply(this, arguments) || this; } - return Flow; -}()); -exports.Flow = Flow; + return HasSockets; +}(MixinStep(Sockets, "Has"))); var Flows = /** @class */ (function (_super) { __extends(Flows, _super); function Flows() { @@ -1056,7 +230,7 @@ var Flows = /** @class */ (function (_super) { } Flows.prototype.name = function () { return "Flows"; }; Flows.prototype.serialize = function (data) { - return SerializationHelper.unmarshalArray(data, Flow); + return graffiti.SerializationHelper.unmarshalArray(data, Flow); }; Flows.prototype.Has = function () { var params = []; @@ -1077,28 +251,31 @@ var Flows = /** @class */ (function (_super) { for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new Count(this.api, this); + return new graffiti.Count(this.api, this); }; Flows.prototype.Values = function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new (Values.bind.apply(Values, [void 0, this.api, this].concat(params)))(); + var _a; + return new ((_a = graffiti.Values).bind.apply(_a, [void 0, this.api, this].concat(params)))(); }; Flows.prototype.Keys = function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new (Keys.bind.apply(Keys, [void 0, this.api, this].concat(params)))(); + var _a; + return new ((_a = graffiti.Keys).bind.apply(_a, [void 0, this.api, this].concat(params)))(); }; Flows.prototype.Sum = function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new (Keys.bind.apply(Keys, [void 0, this.api, this].concat(params)))(); + var _a; + return new ((_a = graffiti.Keys).bind.apply(_a, [void 0, this.api, this].concat(params)))(); }; Flows.prototype.Sort = function () { var params = []; @@ -1112,28 +289,32 @@ var Flows = /** @class */ (function (_super) { for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new (Out.bind.apply(Out, [void 0, this.api, this].concat(params)))(); + var _a; + return new ((_a = graffiti.Out).bind.apply(_a, [void 0, this.api, this].concat(params)))(); }; Flows.prototype.In = function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new (In.bind.apply(In, [void 0, this.api, this].concat(params)))(); + var _a; + return new ((_a = graffiti.In).bind.apply(_a, [void 0, this.api, this].concat(params)))(); }; Flows.prototype.Both = function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new (Both.bind.apply(Both, [void 0, this.api, this].concat(params)))(); + var _a; + return new ((_a = graffiti.Both).bind.apply(_a, [void 0, this.api, this].concat(params)))(); }; Flows.prototype.Nodes = function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new (Nodes.bind.apply(Nodes, [void 0, this.api, this].concat(params)))(); + var _a; + return new ((_a = graffiti.Nodes).bind.apply(_a, [void 0, this.api, this].concat(params)))(); }; Flows.prototype.Hops = function () { var params = []; @@ -1185,27 +366,8 @@ var Flows = /** @class */ (function (_super) { return new (GroupFlows.bind.apply(GroupFlows, [void 0, this.api, this].concat(params)))(); }; return Flows; -}(Step)); +}(graffiti.Step)); exports.Flows = Flows; -var GroupFlows = /** @class */ (function (_super) { - __extends(GroupFlows, _super); - function GroupFlows() { - return _super !== null && _super.apply(this, arguments) || this; - } - GroupFlows.prototype.name = function () { return "Group"; }; - GroupFlows.prototype.serialize = function (data) { - return SerializationHelper.unmarshalMapArray(data[0], Flow); - }; - GroupFlows.prototype.MoreThan = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (GroupFlows.bind.apply(GroupFlows, [void 0, this.api, this].concat(params)))(); - }; - return GroupFlows; -}(Step)); -exports.GroupFlows = GroupFlows; var HasFlows = /** @class */ (function (_super) { __extends(HasFlows, _super); function HasFlows() { @@ -1234,214 +396,78 @@ var DedupFlows = /** @class */ (function (_super) { } return DedupFlows; }(MixinStep(Flows, "Dedup"))); -var Nodes = /** @class */ (function (_super) { - __extends(Nodes, _super); - function Nodes() { - return _super !== null && _super.apply(this, arguments) || this; - } - Nodes.prototype.name = function () { return "Nodes"; }; - return Nodes; -}(V)); -exports.Nodes = Nodes; -var Hops = /** @class */ (function (_super) { - __extends(Hops, _super); - function Hops() { - return _super !== null && _super.apply(this, arguments) || this; - } - Hops.prototype.name = function () { return "Hops"; }; - return Hops; -}(V)); -exports.Hops = Hops; -var CaptureNode = /** @class */ (function (_super) { - __extends(CaptureNode, _super); - function CaptureNode() { - return _super !== null && _super.apply(this, arguments) || this; - } - CaptureNode.prototype.name = function () { return "CaptureNode"; }; - return CaptureNode; -}(V)); -exports.CaptureNode = CaptureNode; -var Value = /** @class */ (function (_super) { - __extends(Value, _super); - function Value() { - return _super !== null && _super.apply(this, arguments) || this; - } - Value.prototype.serialize = function (data) { - return data; - }; - return Value; -}(Step)); -exports.Value = Value; -var Count = /** @class */ (function (_super) { - __extends(Count, _super); - function Count() { - return _super !== null && _super.apply(this, arguments) || this; - } - Count.prototype.name = function () { return "Count"; }; - return Count; -}(Value)); -exports.Count = Count; -var Values = /** @class */ (function (_super) { - __extends(Values, _super); - function Values() { - return _super !== null && _super.apply(this, arguments) || this; - } - Values.prototype.name = function () { return "Values"; }; - return Values; -}(Value)); -exports.Values = Values; -var Keys = /** @class */ (function (_super) { - __extends(Keys, _super); - function Keys() { - return _super !== null && _super.apply(this, arguments) || this; - } - Keys.prototype.name = function () { return "Keys"; }; - return Keys; -}(Value)); -exports.Keys = Keys; -var Sum = /** @class */ (function (_super) { - __extends(Sum, _super); - function Sum() { - return _super !== null && _super.apply(this, arguments) || this; - } - Sum.prototype.name = function () { return "Sum"; }; - return Sum; -}(Value)); -exports.Sum = Sum; -var Metrics = /** @class */ (function (_super) { - __extends(Metrics, _super); - function Metrics() { +var GroupFlows = /** @class */ (function (_super) { + __extends(GroupFlows, _super); + function GroupFlows() { return _super !== null && _super.apply(this, arguments) || this; } - Metrics.prototype.name = function () { return "Metrics"; }; - Metrics.prototype.serialize = function (data) { - return SerializationHelper.unmarshalMapArray(data[0], Metric); - }; - Metrics.prototype.Sum = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Sum.bind.apply(Sum, [void 0, this.api, this].concat(params)))(); + GroupFlows.prototype.name = function () { return "Group"; }; + GroupFlows.prototype.serialize = function (data) { + return graffiti.SerializationHelper.unmarshalMapArray(data[0], Flow); }; - Metrics.prototype.Aggregates = function () { + GroupFlows.prototype.MoreThan = function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - return new (Aggregates.bind.apply(Aggregates, [void 0, this.api, this].concat(params)))(); - }; - Metrics.prototype.Count = function () { - return new Count(this.api, this); + return new (GroupFlows.bind.apply(GroupFlows, [void 0, this.api, this].concat(params)))(); }; - return Metrics; -}(Step)); -exports.Metrics = Metrics; -var Aggregates = /** @class */ (function (_super) { - __extends(Aggregates, _super); - function Aggregates() { - return _super !== null && _super.apply(this, arguments) || this; + return GroupFlows; +}(graffiti.Step)); +exports.GroupFlows = GroupFlows; +graffiti.G.prototype.Flows = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; } - Aggregates.prototype.name = function () { return "Aggregates"; }; - return Aggregates; -}(Metrics)); -exports.Aggregates = Aggregates; -var RawPackets = /** @class */ (function (_super) { - __extends(RawPackets, _super); - function RawPackets() { - return _super !== null && _super.apply(this, arguments) || this; + return new (Flows.bind.apply(Flows, [void 0, this.api, this].concat(params)))(); +}; +graffiti.V.prototype.Metrics = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; } - RawPackets.prototype.name = function () { return "RawPackets"; }; - RawPackets.prototype.serialize = function (data) { - return SerializationHelper.unmarshalMapArray(data[0], RawPacket); - }; - RawPackets.prototype.BPF = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (BPF.bind.apply(BPF, [void 0, this.api, this].concat(params)))(); - }; - return RawPackets; -}(Step)); -exports.RawPackets = RawPackets; -var BPF = /** @class */ (function (_super) { - __extends(BPF, _super); - function BPF() { - return _super !== null && _super.apply(this, arguments) || this; + return new (Metrics.bind.apply(Metrics, [void 0, this.api, this].concat(params)))(); +}; +graffiti.V.prototype.Sockets = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; } - BPF.prototype.name = function () { return "BPF"; }; - return BPF; -}(RawPackets)); -exports.BPF = BPF; -var Socket = /** @class */ (function () { - function Socket() { + return new (Sockets.bind.apply(Sockets, [void 0, this.api, this].concat(params)))(); +}; +graffiti.V.prototype.Flows = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; } - return Socket; -}()); -var Sockets = /** @class */ (function (_super) { - __extends(Sockets, _super); - function Sockets() { + return new (Flows.bind.apply(Flows, [void 0, this.api, this].concat(params)))(); +}; +var EdgeRule = /** @class */ (function (_super) { + __extends(EdgeRule, _super); + function EdgeRule() { return _super !== null && _super.apply(this, arguments) || this; } - Sockets.prototype.name = function () { return "Sockets"; }; - Sockets.prototype.serialize = function (data) { - return SerializationHelper.unmarshalMapArray(data[0], Socket); - }; - Sockets.prototype.Values = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Values.bind.apply(Values, [void 0, this.api, this].concat(params)))(); - }; - Sockets.prototype.Has = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasSockets.bind.apply(HasSockets, [void 0, this.api, this].concat(params)))(); - }; - return Sockets; -}(Step)); -exports.Sockets = Sockets; -var HasSockets = /** @class */ (function (_super) { - __extends(HasSockets, _super); - function HasSockets() { + return EdgeRule; +}(graffiti.APIObject)); +exports.EdgeRule = EdgeRule; +var NodeRule = /** @class */ (function (_super) { + __extends(NodeRule, _super); + function NodeRule() { return _super !== null && _super.apply(this, arguments) || this; } - return HasSockets; -}(MixinStep(Sockets, "Has"))); -var Client = /** @class */ (function () { + return NodeRule; +}(graffiti.APIObject)); +exports.NodeRule = NodeRule; +var Client = /** @class */ (function (_super) { + __extends(Client, _super); function Client(options) { - options = options || {}; - this.baseURL = options["baseURL"] || ""; - this.username = options["username"] || ""; - this.password = options["password"] || ""; - this.cookie = options["cookie"] || ""; - this.alerts = new API(this, "alert", Alert); - this.captures = new API(this, "capture", Capture); - this.packetInjections = new API(this, "injectpacket", PacketInjection); - this.nodeRules = new API(this, "noderule", NodeRule); - this.edgeRules = new API(this, "edgerule", EdgeRule); - this.workflows = new API(this, "workflow", Workflow); - this.gremlin = new GremlinAPI(this); - this.G = this.gremlin.G(); + var _this = _super.call(this, options) || this; + _this.captures = new graffiti.API(_this, "capture", Capture); + _this.edgeRules = new graffiti.API(_this, "edgerule", EdgeRule); + _this.nodeRules = new graffiti.API(_this, "noderule", NodeRule); + _this.packetInjections = new graffiti.API(_this, "injectpacket", PacketInjection); + return _this; } - Client.prototype.login = function () { - var self = this; - if (this.username && this.password) { - return makeRequest(this, "/login", "POST", querystring.stringify({ "username": this.username, "password": this.password }), { "contentType": "application/x-www-form-urlencoded", - "dataType": "" }); - } - return Promise.resolve(); - }; - Client.prototype.request = function (url, method, data, opts) { - if (this.cookie) { - opts["headers"] = { "Cookie": this.cookie }; - } - return makeRequest(this, url, method, data, opts); - }; return Client; -}()); -exports.Client = Client; +}(graffiti.Client)); diff --git a/js/api.ts b/js/api.ts index 761386aba3..e6cc4f6528 100644 --- a/js/api.ts +++ b/js/api.ts @@ -15,363 +15,84 @@ * */ -declare var require: any -declare var Promise: any; -declare var $: any; -declare var global: any; -declare var Gremlin: any; -declare var request: any; -var makeRequest = null; - -const Unauthorized = "Unauthorized"; - -import jsEnv = require('browser-or-node'); -if (jsEnv) { - var querystring = require('qs') - var defaultsDeep = require('lodash.defaultsdeep') - - // When using node, we use najax for $.ajax calls - if (jsEnv.isNode && !jsEnv.isBrowser) { - var najax = require('najax'); - global.$ = { "ajax": najax }; - } - - makeRequest = function (client: Client, url: string, method: string, data: string, opts: Object) : any { - return new Promise(function (resolve, reject) { - return $.ajax(defaultsDeep(opts, { - dataType: "json", - url: client.baseURL + url, - data: data, - contentType: "application/json; charset=utf-8", - method: method - })) - .fail(function (jqXHR) { - if (jqXHR.status == 401) { - reject(Unauthorized) - } else { - reject(jqXHR) - } - }) - .done(function (data, statusText, jqXHR) { - if (jqXHR.status >= 200 && jqXHR.status < 400) { - var cookie = jqXHR.getResponseHeader("Set-Cookie"); - if (cookie) { - client.cookie = cookie; - } - resolve(data, jqXHR); - } else { - reject(jqXHR); - } - }); - }) - } -} else { - // We're running inside Otto. We use the 'request' method - // exported by Skydive that makes use of the REST client - // so we get support for authentication - makeRequest = function (client: Client, url: string, method: string, body: string, opts: Object) : any { - var data: any - var output = request(url, method, body) - if (output && output.length > 0) { - data = JSON.parse(output) - } else { - data = null - } - return {'then': function() { return data; } } - } -} +import * as graffiti from "../graffiti/js/api"; -function paramsString(params: any[]): string { - var s = "" - for (let param in params) { - if (param !== "0") { - s += ", " - } - switch (typeof params[param]) { - case "string": - s += '"' + params[param] + '"'; - break; - default: - s += params[param]; - break; - } - } - return s +export class Capture extends graffiti.APIObject { } -// Returns a string of the invocation of 'method' with its parameters 'params' -// like MyMethod(1, 2, "s") -function callString(method: string, ...params: any[]): string { - let s = method + "(" - s += paramsString(params) - s += ")" - return s +export class PacketInjection extends graffiti.APIObject { } -export class SerializationHelper { - static toInstance(obj: T, jsonObj: Object) : T { - if (typeof obj["fromJSON"] === "function") { - obj["fromJSON"](jsonObj); - } - else { - for (var propName in jsonObj) { - obj[propName] = jsonObj[propName] - } - } - - return obj; - } - - static unmarshalArray(data, c: new () => T): T[] { - var items: T[] = []; - for (var obj in data) { - let newT: T = SerializationHelper.toInstance(new c(), data[obj]); - items.push(newT); - } - return items - } - - static unmarshalMapArray(data, c: new () => T): { [key: string]: T[]; } { - var items: { [key: string]: T[]; } = {}; - for (var key in data) { - items[key] = this.unmarshalArray(data[key], c); - } - return items - } - - static unmarshalMap(data, c: new () => T): { [key: string]: T; } { - var items: { [key: string]: T; } = {}; - for (var obj in data) { - let newT: T = SerializationHelper.toInstance(new c(), data[obj]); - items[obj] = newT; - } - return items - } -} - -export class APIObject extends Object { -} - -export class Alert extends APIObject { -} - -export class Capture extends APIObject { -} - -export class EdgeRule extends APIObject { +export class Metric { } -export class NodeRule extends APIObject { +export class FlowLayer { } -export class PacketInjection extends APIObject { +export class ICMPLayer { } -export class Workflow extends APIObject { +export class FlowMetric { } -export class API { - Resource: string - Factory: new () => T - client: Client - - constructor(client: Client, resource: string, c: new () => T) { - this.client = client; - this.Resource = resource; - this.Factory = c; - } - - create(obj: T) { - let resource = this.Resource; - return this.client.request("/api/" + resource, "POST", JSON.stringify(obj), {}) - .then(function (data) { - return SerializationHelper.toInstance(new (obj.constructor)(), data); - }) - } - - list() { - let resource = this.Resource; - let factory = this.Factory; - - return this.client.request('/api/' + resource, "GET", "", {}) - .then(function (data) { - let resources = {}; - for (var obj in data) { - let resource = SerializationHelper.toInstance(new factory(), data[obj]); - resources[obj] = resource - } - return resources - }); - } - - get(id) { - let resource = this.Resource; - let factory = this.Factory; - return this.client.request('/api/' + resource + "/" + id, "GET", "", {}) - .then(function (data) { - return SerializationHelper.toInstance(new factory(), data) - }) - } - - delete(id: string) { - let resource = this.Resource; - return this.client.request('/api/' + resource + "/" + id, "DELETE", "", { "dataType": "" }) - } +export class RawPacket { } -export class GraphElement { +export class TCPMetric { } -export class GraphNode extends GraphElement { +export class Flow { } -export class GraphEdge extends GraphElement { +export class Hops extends graffiti.V { + name() { return "Hops" } } -type NodeMap = { [key: string]: GraphNode; }; -type EdgeMap = { [key: string]: GraphEdge; }; - -export class Graph { - nodes: NodeMap; - edges: EdgeMap; - - constructor(nodes: NodeMap, edges: EdgeMap) { - this.nodes = nodes || {} - this.edges = edges || {} - } +export class CaptureNode extends graffiti.V { + name() { return "CaptureNode" } } -export class GremlinAPI { - client: Client - - constructor(client: Client) { - this.client = client; - } +export class Metrics extends graffiti.Step { + name() { return "Metrics" } - query(s: string) { - return this.client.request('/api/topology', "POST", JSON.stringify({'GremlinQuery': s}), {}) - .then(function (data) { - if (data === null) - return []; - // Result can be [Node] or [[Node, Node]] - if (data.length > 0 && data[0] instanceof Array) - data = data[0]; - return data - }); + serialize(data) { + return graffiti.SerializationHelper.unmarshalMapArray(data[0], Metric); } - G() : G { - return new G(this) + Sum(...params: any[]): graffiti.Value { + return new graffiti.Sum(this.api, this, ...params); } -} -export class _Metadata { - params: any[] - - constructor(...params: any[]) { - this.params = params + Aggregates(...params: any[]): Metrics { + return new Aggregates(this.api, this, ...params); } - public toString(): string { - return "Metadata(" + paramsString(this.params) + ")" + Count(): graffiti.Value { + return new graffiti.Count(this.api, this); } } -export function Metadata(...params: any[]) : _Metadata { - return new _Metadata(...params) -} - -export interface Step { - name(): string - serialize(data): any -} - -export class Step implements Step { - api: GremlinAPI - gremlin: string - previous: Step - params: any[] - - name() { return "InvalidStep"; } - - constructor(api: GremlinAPI, previous: Step = null, ...params: any[]) { - this.api = api - this.previous = previous - this.params = params - } - - public toString(): string { - if (this.previous !== null) { - let gremlin = this.previous.toString() + "."; - return gremlin + callString(this.name(), ...this.params) - } else { - return this.name() - } - } - - serialize(data) { - return this.previous.serialize(data); - } - - result() { - let data = this.api.query(this.toString()) - return this.serialize(data) - } +export class Aggregates extends Metrics { + name() { return "Aggregates" } } -export class G extends Step { - name() { return "G" } - - constructor(api: GremlinAPI) { - super(api) - } +export class RawPackets extends graffiti.Step { + name() { return "RawPackets" } serialize(data) { - return { - "Nodes": SerializationHelper.unmarshalArray(data[0].Nodes, GraphNode), - "Edges": SerializationHelper.unmarshalArray(data[0].Edges, GraphEdge), - }; - } - - Context(...params: any[]): G { - return new Context(this.api); - } - - V(...params: any[]): V { - return new V(this.api, this, ...params); - } - - E(...params: any[]): E { - return new E(this.api, this, ...params); - } - - Flows(...params: any[]): Flows { - return new Flows(this.api, this, ...params); + return graffiti.SerializationHelper.unmarshalMapArray(data[0], RawPacket); } -} - -export class Context extends G { - name() { return "Context" } - constructor(api: GremlinAPI, previous: Step = null, ...params: any[]) { - super(api) - this.previous = previous - this.params = params + BPF(...params: any[]): RawPackets { + return new BPF(this.api, this, ...params); } } -export class Subgraph extends G { - name() { return "Subgraph" } - - constructor(api: GremlinAPI, previous: Step = null) { - super(api) - this.previous = previous - } +export class BPF extends RawPackets { + name() { return "BPF" } } -type Constructor = new(...args: any[]) => T; - -function MixinStep>(Base: T, name: string) { +function MixinStep>(Base: T, name: string) { return class extends Base { name() { return name } constructor(...args: any[]) { @@ -380,348 +101,32 @@ function MixinStep>(Base: T, name: string) { } } -export class V extends Step { - name() { return "V" } - - serialize(data) { - return SerializationHelper.unmarshalArray(data, GraphNode); - } - - Has(...params: any[]): V { - return new HasV(this.api, this, ...params); - } - - HasEither(...params: any[]): V { - return new HasEitherV(this.api, this, ...params); - } - - HasKey(...params: any[]): V { - return new HasKeyV(this.api, this, ...params); - } - - HasNot(...params: any[]): V { - return new HasNotV(this.api, this, ...params); - } - - Dedup(...params: any[]): V { - return new DedupV(this.api, this, ...params); - } - - In(...params: any[]): V { - return new In(this.api, this, ...params); - } - - Out(...params: any[]): V { - return new Out(this.api, this, ...params); - } - - Both(...params: any[]): V { - return new Both(this.api, this, ...params); - } - - Range(...params: any[]): V { - return new RangeV(this.api, this, ...params); - } - - Limit(...params: any[]): V { - return new LimitV(this.api, this, ...params); - } - - InE(...params: any[]): E { - return new InE(this.api, this, ...params); - } - - OutE(...params: any[]): E { - return new OutE(this.api, this, ...params); - } - - BothE(...params: any[]): E { - return new BothE(this.api, this, ...params); - } - - ShortestPathTo(...params: any[]): ShortestPath { - return new ShortestPath(this.api, this, ...params); - } - - Subgraph(): G { - return new Subgraph(this.api, this); - } - - Count(): Value { - return new Count(this.api, this); - } - - Values(...params: any[]): Value { - return new Values(this.api, this, ...params); - } - - Keys(...params: any[]): Value { - return new Keys(this.api, this, ...params); - } - - Sum(...params: any[]): Value { - return new Keys(this.api, this, ...params); - } - - Sort(...params: any[]): V { - return new SortV(this.api, this, ...params); - } - - Metrics(...params: any[]): Metrics { - return new Metrics(this.api, this, ...params); - } - - Sockets(...params: any[]): Sockets { - return new Sockets(this.api, this, ...params); - } - - Flows(...params: any[]): Flows { - return new Flows(this.api, this, ...params) - } -} - -export class E extends Step { - name() { return "E" } - - serialize(data) { - return SerializationHelper.unmarshalArray(data, GraphEdge); - } - - Has(...params: any[]): E { - return new HasE(this.api, this, ...params); - } - - HasEither(...params: any[]): E { - return new HasEitherE(this.api, this, ...params); - } - - HasKey(...params: any[]): E { - return new HasKeyE(this.api, this, ...params); - } - - HasNot(...params: any[]): E { - return new HasNotE(this.api, this, ...params); - } - - Dedup(...params: any[]): E { - return new DedupE(this.api, this, ...params); - } - - Range(...params: any[]): E { - return new RangeE(this.api, this, ...params); - } - - Limit(...params: any[]): E { - return new LimitE(this.api, this, ...params); - } - - InV(...params: any[]): V { - return new InV(this.api, this, ...params); - } - - OutV(...params: any[]): V { - return new OutV(this.api, this, ...params); - } - - BothV(...params: any[]): V { - return new BothV(this.api, this, ...params); - } - - Subgraph(): G { - return new Subgraph(this.api, this); - } - - Count(): Value { - return new Count(this.api, this); - } - - Values(...params: any[]): Value { - return new Values(this.api, this, ...params); - } - - Keys(...params: any[]): Value { - return new Keys(this.api, this, ...params); - } - - Sort(...params: any[]): E { - return new SortE(this.api, this, ...params); - } -} - -class HasV extends MixinStep(V, "Has") { } -class HasE extends MixinStep(E, "Has") { } - -class HasEitherV extends MixinStep(V, "HasEither") { } -class HasEitherE extends MixinStep(E, "HasEither") { } - -class HasKeyV extends MixinStep(V, "HasKey") { } -class HasKeyE extends MixinStep(E, "HasKey") { } - -class HasNotV extends MixinStep(V, "HasNot") { } -class HasNotE extends MixinStep(E, "HasNot") { } - -class DedupV extends MixinStep(V, "Dedup") { } -class DedupE extends MixinStep(E, "Dedup") { } - -class RangeV extends MixinStep(V, "Range") { } -class RangeE extends MixinStep(E, "Range") { } - -class LimitV extends MixinStep(V, "Limit") { } -class LimitE extends MixinStep(E, "Limit") { } - -class SortV extends MixinStep(V, "Sort") { } -class SortE extends MixinStep(E, "Sort") { } - -export class Out extends V { - name() { return "Out" } -} - -export class In extends V { - name() { return "In" } -} - -export class Both extends V { - name() { return "Both" } -} - -export class OutV extends V { - name() { return "OutV" } -} - -export class InV extends V { - name() { return "InV" } -} - -export class OutE extends E { - name() { return "OutE" } -} - -export class InE extends E { - name() { return "InE" } -} - -export class BothE extends E { - name() { return "BothE" } -} - -export class BothV extends V { - name() { return "BothV" } +class Socket { } -export class ShortestPath extends Step { - name() { return "ShortestPathTo" } - - public toString(): string { - if (this.previous !== null) { - let gremlin = this.previous.toString() + "."; - return gremlin + callString(this.name(), ...this.params) - } else { - return this.name() - } - } +export class Sockets extends graffiti.Step { + name() { return "Sockets" } serialize(data) { - var items: GraphNode[][] = []; - for (var obj in data) { - items.push(SerializationHelper.unmarshalArray(data[obj], GraphNode)); - } - return items; + return graffiti.SerializationHelper.unmarshalMapArray(data[0], Socket); } -} - -class Predicate { - name: string - params: any - constructor(name: string, ...params: any[]) { - this.name = name - this.params = params + Values(...params: any[]): graffiti.Value { + return new graffiti.Values(this.api, this, ...params); } - public toString(): string { - return callString(this.name, ...this.params) + Has(...params: any[]): Sockets { + return new HasSockets(this.api, this, ...params); } } -export function NE(param: any): Predicate { - return new Predicate("NE", param) -} - -export function GT(param: any): Predicate { - return new Predicate("GT", param) -} - -export function LT(param: any): Predicate { - return new Predicate("LT", param) -} - -export function GTE(param: any): Predicate { - return new Predicate("GTE", param) -} - -export function LTE(param: any): Predicate { - return new Predicate("LTE", param) -} - -export function IPV4RANGE(param: any): Predicate { - return new Predicate("IPV4RANGE", param) -} - -export function REGEX(param: any): Predicate { - return new Predicate("REGEX", param) -} - -export function WITHIN(...params: any[]): Predicate { - return new Predicate("WITHIN", ...params) -} - -export function WITHOUT(...params: any[]): Predicate { - return new Predicate("WITHOUT", ...params) -} - -export function INSIDE(from, to: any): Predicate { - return new Predicate("INSIDE", from, to) -} - -export function OUTSIDE(from, to: any): Predicate { - return new Predicate("OUTSIDE", from, to) -} - -export function BETWEEN(from, to: any): Predicate { - return new Predicate("BETWEEN", from, to) -} - -export var FOREVER = new Predicate("FOREVER") -export var NOW = new Predicate("NOW") -export var DESC = new Predicate("DESC") -export var ASC = new Predicate("ASC") - -export class Metric { -} - -export class FlowLayer { -} - -export class ICMPLayer { -} - -export class FlowMetric { -} - -export class RawPacket { -} - -export class TCPMetric { -} - -export class Flow { -} +class HasSockets extends MixinStep(Sockets, "Has") { } -export class Flows extends Step { +export class Flows extends graffiti.Step { name() { return "Flows" } serialize(data) { - return SerializationHelper.unmarshalArray(data, Flow); + return graffiti.SerializationHelper.unmarshalArray(data, Flow); } Has(...params: any[]): Flows { @@ -732,47 +137,47 @@ export class Flows extends Step { return new HasEitherFlows(this.api, this, ...params); } - Count(...params: any[]): Value { - return new Count(this.api, this); + Count(...params: any[]): graffiti.Value { + return new graffiti.Count(this.api, this); } - Values(...params: any[]): Value { - return new Values(this.api, this, ...params); + Values(...params: any[]): graffiti.Value { + return new graffiti.Values(this.api, this, ...params); } - Keys(...params: any[]): Value { - return new Keys(this.api, this, ...params); + Keys(...params: any[]): graffiti.Value { + return new graffiti.Keys(this.api, this, ...params); } - Sum(...params: any[]): Value { - return new Keys(this.api, this, ...params); + Sum(...params: any[]): graffiti.Value { + return new graffiti.Keys(this.api, this, ...params); } Sort(...params: any[]): Flows { return new SortFlows(this.api, this, ...params); } - Out(...params: any[]): V { - return new Out(this.api, this, ...params); + Out(...params: any[]): graffiti.V { + return new graffiti.Out(this.api, this, ...params); } - In(...params: any[]): V { - return new In(this.api, this, ...params); + In(...params: any[]): graffiti.V { + return new graffiti.In(this.api, this, ...params); } - Both(...params: any[]): V { - return new Both(this.api, this, ...params); + Both(...params: any[]): graffiti.V { + return new graffiti.Both(this.api, this, ...params); } - Nodes(...params: any[]): V { - return new Nodes(this.api, this, ...params); + Nodes(...params: any[]): graffiti.V { + return new graffiti.Nodes(this.api, this, ...params); } - Hops(...params: any[]): V { + Hops(...params: any[]): graffiti.V { return new Hops(this.api, this, ...params); } - CaptureNode(...params: any[]): V { + CaptureNode(...params: any[]): graffiti.V { return new CaptureNode(this.api, this, ...params); } @@ -797,164 +202,69 @@ export class Flows extends Step { } } -export class GroupFlows extends Step { - name() { return "Group" } - - serialize(data) { - return SerializationHelper.unmarshalMapArray(data[0], Flow); - } - - MoreThan(...params: any[]): GroupFlows { - return new GroupFlows(this.api, this, ...params); - } -} - class HasFlows extends MixinStep(Flows, "Has") { } class HasEitherFlows extends MixinStep(Flows, "HasEither") { } class SortFlows extends MixinStep(Flows, "Sort") { } class DedupFlows extends MixinStep(Flows, "Dedup") { } -export class Nodes extends V { - name() { return "Nodes" } -} - -export class Hops extends V { - name() { return "Hops" } -} - -export class CaptureNode extends V { - name() { return "CaptureNode" } -} - -export class Value extends Step { - serialize(data) { - return data; - } -} - -export class Count extends Value { - name() { return "Count" } -} - -export class Values extends Value { - name() { return "Values" } -} - -export class Keys extends Value { - name() { return "Keys" } -} - -export class Sum extends Value { - name() { return "Sum" } -} - -export class Metrics extends Step { - name() { return "Metrics" } +export class GroupFlows extends graffiti.Step { + name() { return "Group" } serialize(data) { - return SerializationHelper.unmarshalMapArray(data[0], Metric); + return graffiti.SerializationHelper.unmarshalMapArray(data[0], Flow); } - Sum(...params: any[]): Value { - return new Sum(this.api, this, ...params); + MoreThan(...params: any[]): GroupFlows { + return new GroupFlows(this.api, this, ...params); } +} - Aggregates(...params: any[]): Metrics { - return new Aggregates(this.api, this, ...params); +declare module "../graffiti/js/api" { + interface G { + Flows(...params: any[]); } - Count(): Value { - return new Count(this.api, this); + interface V { + Metrics(...params: any[]); + Sockets(...params: any[]); + Flows(...params: any[]); } } -export class Aggregates extends Metrics { - name() { return "Aggregates" } +graffiti.G.prototype.Flows = function(...params: any[]) { + return new Flows(this.api, this, ...params); } -export class RawPackets extends Step { - name() { return "RawPackets" } - - serialize(data) { - return SerializationHelper.unmarshalMapArray(data[0], RawPacket); - } - - BPF(...params: any[]): RawPackets { - return new BPF(this.api, this, ...params); - } +graffiti.V.prototype.Metrics = function(...params: any[]): Metrics { + return new Metrics(this.api, this, ...params); } -export class BPF extends RawPackets { - name() { return "BPF" } +graffiti.V.prototype.Sockets = function(...params: any[]): Sockets { + return new Sockets(this.api, this, ...params); } -class Socket { +graffiti.V.prototype.Flows = function(...params: any[]): Flows { + return new Flows(this.api, this, ...params) } -export class Sockets extends Step { - name() { return "Sockets" } - - serialize(data) { - return SerializationHelper.unmarshalMapArray(data[0], Socket); - } - - Values(...params: any[]): Value { - return new Values(this.api, this, ...params); - } - - Has(...params: any[]): Sockets { - return new HasSockets(this.api, this, ...params); - } +export class EdgeRule extends graffiti.APIObject { } -class HasSockets extends MixinStep(Sockets, "Has") { } +export class NodeRule extends graffiti.APIObject { +} -export class Client { - baseURL: string - username: string - password: string - cookie: string - alerts: API - captures: API - edgeRules: API - nodeRules: API - packetInjections: API - workflows: API - gremlin: GremlinAPI - G: G +class Client extends graffiti.Client { + captures: graffiti.API + edgeRules: graffiti.API + nodeRules: graffiti.API + packetInjections: graffiti.API constructor(options: Object) { - options = options || {}; - this.baseURL = options["baseURL"] || ""; - this.username = options["username"] || ""; - this.password = options["password"] || ""; - this.cookie = options["cookie"] || ""; - - this.alerts = new API(this, "alert", Alert); - this.captures = new API(this, "capture", Capture); - this.packetInjections = new API(this, "injectpacket", PacketInjection); - this.nodeRules = new API(this, "noderule", NodeRule); - this.edgeRules = new API(this, "edgerule", EdgeRule); - this.workflows = new API(this, "workflow", Workflow); - this.gremlin = new GremlinAPI(this); - this.G = this.gremlin.G(); - } - - login() { - var self = this; - if (this.username && this.password) { - return makeRequest(this, "/login", "POST", - querystring.stringify({"username": this.username, "password": this.password}), - { "contentType": "application/x-www-form-urlencoded", - "dataType": "" }) - } - return Promise.resolve(); - } + super(options); - request(url: string, method: string, data: any, opts: Object): any { - if (this.cookie) { - opts["headers"] = { "Cookie": this.cookie } - } - return makeRequest(this, url, method, data, opts); + this.captures = new graffiti.API(this, "capture", Capture); + this.edgeRules = new graffiti.API(this, "edgerule", EdgeRule); + this.nodeRules = new graffiti.API(this, "noderule", NodeRule); + this.packetInjections = new graffiti.API(this, "injectpacket", PacketInjection); } } diff --git a/js/browser.js b/js/browser.js index d82443085b..cbf4febda0 100644 --- a/js/browser.js +++ b/js/browser.js @@ -15,25 +15,35 @@ * limitations under the License. * */ +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; Object.defineProperty(exports, "__esModule", { value: true }); -var apiLib = require("./api"); -window.api = apiLib; -window.Metadata = apiLib.Metadata; -window.NE = apiLib.NE; -window.GT = apiLib.GT; -window.LT = apiLib.LT; -window.GTE = apiLib.GTE; -window.LTE = apiLib.LTE; -window.IPV4RANGE = apiLib.IPV4RANGE; -window.REGEX = apiLib.REGEX; -window.WITHIN = apiLib.WITHIN; -window.WITHOUT = apiLib.WITHOUT; -window.INSIDE = apiLib.INSIDE; -window.OUTSIDE = apiLib.OUTSIDE; -window.BETWEEN = apiLib.BETWEEN; -window.Alert = apiLib.Alert; -window.Capture = apiLib.Capture; -window.EdgeRule = apiLib.EdgeRule; -window.NodeRule = apiLib.NodeRule; -window.PacketInjection = apiLib.PacketInjection; -window.Workflow = apiLib.Workflow; +var gapi = require("../graffiti/js/api"); +var sapi = require("./api"); +var api = __assign({}, gapi, sapi); +window.api = api; +window.Metadata = gapi.Metadata; +window.NE = gapi.NE; +window.GT = gapi.GT; +window.LT = gapi.LT; +window.GTE = gapi.GTE; +window.LTE = gapi.LTE; +window.IPV4RANGE = gapi.IPV4RANGE; +window.REGEX = gapi.REGEX; +window.WITHIN = gapi.WITHIN; +window.WITHOUT = gapi.WITHOUT; +window.INSIDE = gapi.INSIDE; +window.OUTSIDE = gapi.OUTSIDE; +window.BETWEEN = gapi.BETWEEN; +window.Alert = gapi.Alert; +window.Workflow = gapi.Workflow; +window.Capture = api.Capture; +window.EdgeRule = api.EdgeRule; +window.NodeRule = api.NodeRule; +window.PacketInjection = api.PacketInjection; diff --git a/js/browser.ts b/js/browser.ts index bc1abff064..06dbb695b7 100644 --- a/js/browser.ts +++ b/js/browser.ts @@ -16,24 +16,27 @@ */ declare var window: any; -import apiLib = require('./api'); -window.api = apiLib -window.Metadata = apiLib.Metadata -window.NE = apiLib.NE -window.GT = apiLib.GT -window.LT = apiLib.LT -window.GTE = apiLib.GTE -window.LTE = apiLib.LTE -window.IPV4RANGE = apiLib.IPV4RANGE -window.REGEX = apiLib.REGEX -window.WITHIN = apiLib.WITHIN -window.WITHOUT = apiLib.WITHOUT -window.INSIDE = apiLib.INSIDE -window.OUTSIDE = apiLib.OUTSIDE -window.BETWEEN = apiLib.BETWEEN -window.Alert = apiLib.Alert -window.Capture = apiLib.Capture -window.EdgeRule = apiLib.EdgeRule -window.NodeRule = apiLib.NodeRule -window.PacketInjection = apiLib.PacketInjection -window.Workflow = apiLib.Workflow +import gapi = require('../graffiti/js/api'); +import sapi = require('./api'); +var api = {...gapi, ...sapi}; +window.api = api +window.Metadata = gapi.Metadata +window.NE = gapi.NE +window.GT = gapi.GT +window.LT = gapi.LT +window.GTE = gapi.GTE +window.LTE = gapi.LTE +window.IPV4RANGE = gapi.IPV4RANGE +window.REGEX = gapi.REGEX +window.WITHIN = gapi.WITHIN +window.WITHOUT = gapi.WITHOUT +window.INSIDE = gapi.INSIDE +window.OUTSIDE = gapi.OUTSIDE +window.BETWEEN = gapi.BETWEEN +window.Alert = gapi.Alert +window.Workflow = gapi.Workflow + +window.Capture = api.Capture +window.EdgeRule = api.EdgeRule +window.NodeRule = api.NodeRule +window.PacketInjection = api.PacketInjection diff --git a/js/package.json b/js/package.json index 867a37bb4a..dc716b98e0 100644 --- a/js/package.json +++ b/js/package.json @@ -1,29 +1,30 @@ { - "name": "skydive-api", - "version": "0.0.1", - "description": "Skydive API", - "main": "api.js", - "dependencies": { - "@formschema/native": "^1.1.1", - "browser-or-node": "1.0.2", - "browserify": "^16.2.3", - "lodash.defaultsdeep": "^4.6.1", - "najax": "1.0.3", - "qs": "^6.9.1", - "typescript": "^2.9.2", - "vue-form-generator": "^2.3.4" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "Sylvain Baubeau", - "license": "Apache-2.0", - "repository": { - "type": "git", - "url": "git+https://github.com/skydive-project/skydive.git" - }, - "bugs": { - "url": "https://github.com/skydive-project/skydive/issues" - }, - "homepage": "https://github.com/skydive-project/skydive#readme" -} + "name": "skydive-api", + "version": "0.0.1", + "description": "Skydive API", + "main": "api.js", + "dependencies": { + "@formschema/native": "^1.1.1", + "browser-or-node": "1.0.2", + "browserify": "^16.2.3", + "lodash.defaultsdeep": "^4.6.1", + "najax": "1.0.3", + "qs": "^6.9.1", + "typescript": "^2.9.2", + "vue-form-generator": "^2.3.4" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Sylvain Baubeau", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git+https://github.com/skydive-project/skydive.git" + }, + "bugs": { + "url": "https://github.com/skydive-project/skydive/issues" + }, + "homepage": "https://github.com/skydive-project/skydive#readme" + } + \ No newline at end of file diff --git a/statics/bindata.go b/statics/bindata.go index 46c6993375..2766c116df 100644 --- a/statics/bindata.go +++ b/statics/bindata.go @@ -2,9 +2,6 @@ // sources: // js/api.js // js/browser.js -// js/otto.js -// js/promise-7.0.4.min.js -// js/promise-done-7.0.4.min.js // rbac/policy.csv // statics/index.html // statics/css/bootstrap.3.3.7.min.css @@ -223,7 +220,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _jsApiJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5d\x5b\x73\xdb\x3a\x92\x7e\xcf\xaf\xe8\x61\x4d\xc5\xd2\x89\x22\x27\xa9\xf3\x30\x65\x8f\x66\xd7\x71\x18\x47\x1b\xc7\xf2\xda\x8a\x33\x53\x2e\x97\x8b\x92\x20\x89\x36\x45\x30\xbc\xd8\xd1\x38\xfe\xef\x5b\x0d\x80\x24\x00\x82\x32\xc5\x88\xd9\xa3\xc9\xc9\x4b\x64\xa0\x1b\xdd\xfd\x75\xe3\x7e\xa1\x95\x44\x04\xa2\x38\x74\xc7\xb1\xb5\xff\x6c\xf7\xb7\x67\xf0\x1b\x1c\xd2\x60\x19\xba\xb3\x79\x0c\xad\xc3\x36\xbc\x79\xf5\xfa\x6f\x70\x46\x26\xf0\xc1\x89\x3b\xd0\xf7\xc7\xdd\x67\xc0\xc8\x8e\xdd\x31\xf1\x23\x32\x81\xc4\x9f\x90\x10\xe2\x39\x81\x83\xc0\x19\xcf\x49\x9a\xd3\x81\x0b\x12\x46\x2e\xf5\xe1\x4d\xf7\x15\xb4\x90\xc0\x12\x59\x56\x7b\x1f\x8b\x58\xd2\x04\x16\xce\x12\x7c\x1a\x03\x2a\x12\xcf\xdd\x08\xa6\xae\x47\x80\x7c\x1b\x93\x20\x06\xd7\x87\x31\x5d\x04\x9e\xeb\xf8\x63\x02\xf7\x6e\x3c\x67\x72\x44\x29\xa8\x09\xfc\x4b\x94\x41\x47\xb1\xe3\xfa\xe0\xc0\x98\x06\x4b\xa0\x53\x89\x0e\x9c\x58\xe8\x8c\xff\xe6\x71\x1c\xec\xed\xee\xde\xdf\xdf\x77\x1d\xa6\x6f\x97\x86\xb3\x5d\x8f\x93\x46\xbb\xc7\xfd\x43\xfb\xe4\xdc\x7e\xf9\xa6\xfb\x4a\x30\x7d\xf6\x3d\x12\x45\x10\x92\xaf\x89\x1b\x92\x09\x8c\x96\xe0\x04\x81\xe7\x8e\x9d\x91\x47\xc0\x73\xee\x81\x86\xe0\xcc\x42\x42\x26\x10\x53\xd4\xf9\x3e\x74\x63\xd7\x9f\x75\x20\xa2\xd3\xf8\xde\x09\x09\x16\x33\x71\x11\xe7\x51\x12\x2b\x90\xa5\x2a\xba\x91\x42\x40\x7d\x70\x7c\xb0\x0e\xce\xa1\x7f\x6e\xc1\xdb\x83\xf3\xfe\x79\x07\x0b\xf9\xd2\x1f\x7e\x18\x7c\x1e\xc2\x97\x83\xb3\xb3\x83\x93\x61\xdf\x3e\x87\xc1\x19\x1c\x0e\x4e\xde\xf5\x87\xfd\xc1\xc9\x39\x0c\xde\xc3\xc1\xc9\xbf\xe0\x63\xff\xe4\x5d\x07\x88\x1b\xcf\x49\x08\xe4\x5b\x10\xa2\x05\x34\x04\x17\xc1\x24\x13\x86\xdc\x39\x21\x8a\x0a\x53\xca\x55\x8a\x02\x32\x76\xa7\xee\xd8\x73\xfc\x59\xe2\xcc\x08\xcc\xe8\x1d\x09\x7d\xd7\x9f\x41\x40\xc2\x85\x1b\xa1\x4f\x23\x70\xfc\x09\x96\xe2\xb9\x0b\x37\x76\x62\x96\x54\x30\x4b\xc4\xca\xee\xb3\x3b\x27\x84\xeb\x6b\xf2\x2d\x26\xfe\x24\x82\x1e\x46\x83\x1b\xc1\xf3\xe7\xcc\xe5\xdd\x2c\xa7\x0d\xdf\xbf\x43\x6b\x9a\xf8\x63\x2c\x10\x5a\x6d\x78\x78\x86\x3e\x43\x76\x4e\x72\x8e\xb2\xc6\x58\xc4\x60\x74\x43\xc6\x71\x37\x22\xf1\x69\x48\x63\x1a\x2f\x03\x32\x98\xc2\xf7\xef\x8c\x01\xff\xb5\x1e\xe0\xfa\x3a\xc0\xbc\xeb\xeb\x3d\xb8\xbc\x82\x47\x70\xfd\x28\xc6\x50\xa2\x53\x38\x08\x43\x67\x89\x1a\xe4\xd2\x26\x1d\x18\xb5\xe1\x01\x26\xdd\x8c\x0f\x7a\x30\xda\x87\xc7\xb6\x5c\x6e\x91\x01\x91\x6b\xa1\x8e\x01\x7a\x7f\xd4\x06\x77\x0a\xad\x51\x77\xee\x44\x83\x7b\xff\x34\xa4\x01\x09\xe3\x65\x2b\x68\xb7\x61\x72\x19\x5c\x61\x99\x97\xc1\xd5\x3e\x3c\xee\xb3\x32\x43\x12\x27\xa1\x5f\x2c\x36\x13\xa8\x58\xce\x73\xf7\x8b\xda\x5c\x5f\x23\x5c\x1c\xd0\x31\xf5\xa3\x38\x4c\xc6\x31\x0d\xa1\x07\x93\x7d\x78\xcc\xe8\x27\xdd\x20\x85\x0b\x15\x81\x5e\xaf\x07\x7e\xe2\x79\xf0\x5f\x29\xa2\xe3\x90\x38\x31\x69\x8d\xda\xb0\x07\xad\xeb\x6b\x95\x3e\xff\xab\x03\x3e\xb9\x67\x52\x85\x36\x8f\xfb\xcf\x1e\xdb\xad\xf6\xfe\x33\x51\xce\x84\x4c\x5d\x9f\x64\xe6\x93\x6f\x01\x0d\xe3\xa8\x03\xd6\xf5\x35\x89\x3e\xd1\x49\xe2\x11\xab\x03\x0f\x70\xe7\x78\x09\xd9\x83\x38\x4c\x08\x3c\xb6\xf7\x59\xac\x2c\x9c\x5b\x72\x46\xbe\x26\x24\x8a\x81\xeb\xc7\xd3\x3f\xfb\x4e\x12\xcf\x69\xe8\xfe\x9b\x4c\xa0\x07\x96\xfc\xb7\xc5\x49\x6e\x22\xdb\xbf\x83\x5e\x5a\x5f\x5b\xd6\x28\xa4\xf7\x11\x09\x5f\xd2\xf0\xa5\x4f\x27\xac\xed\x41\xff\x30\x3a\x39\xc0\xbe\x26\x24\x5c\x62\x15\xf4\x67\x12\xfb\xce\xd7\x68\x47\x18\x88\x44\x13\x32\x75\x12\x2f\x8e\xde\x11\x12\xc8\x54\x1e\x9d\x38\xd1\xbc\x9b\x66\x4f\x08\x09\x52\xb6\xdd\x5d\xf8\x32\x27\x3e\x24\x11\x96\x8c\x2a\x74\xe0\x9e\xb0\x06\xcf\x77\x6e\x9c\x6f\x2c\x7c\xfe\xda\x65\x3f\xc7\x8e\xe7\x45\x8c\x2b\x53\xb1\xeb\x46\x27\x74\x42\x30\x54\xff\x92\x26\xbc\xe5\x26\xc9\x41\x82\xca\xf1\xe2\x24\xad\x58\xc2\x8e\x14\x2d\x33\x8f\x8e\x1c\xaf\xfb\x57\xe8\xc1\x03\x58\x98\x6b\xed\x09\x36\x11\x8d\x3c\x52\x54\xfc\xf3\xd0\x1c\x7b\x2e\xf1\xe3\x0e\x24\xa1\xd7\x81\x05\x89\xe7\x74\xd2\x81\x89\x13\x3b\x1d\xa0\x41\x1c\xc9\x0a\x89\xb0\xc6\x20\x39\x0d\xe9\xc2\x8d\x88\x54\xb1\x43\x12\x51\xef\x8e\x74\x20\x24\x18\x2b\x32\x9f\xc4\xcb\x41\x69\xc9\x98\xb7\x50\x4c\x47\x23\x67\x71\xed\xc4\xce\x70\x19\x90\x3d\xb0\x6e\x22\xea\x5b\x9d\x02\x45\x12\x7a\x7b\xc0\x0d\xe8\x8e\x9c\x88\x7c\x3e\x3b\x86\x17\xcc\x12\x63\x61\x7b\xdc\xae\x42\xde\x98\xfa\x31\xf1\x63\x21\x4b\xf4\x04\x68\xd5\x2e\xca\xdd\x87\xf1\xdc\x09\x23\x12\xf7\x92\x78\xfa\xf2\x6f\x06\x35\x38\x6a\x7b\xe2\x7f\x25\xfb\xb1\xdd\x2e\x90\x77\xa7\x8e\xeb\x49\xc8\xdd\x7c\xfd\xe7\x87\x33\x1d\xaf\x2c\x60\x30\xb3\x1b\xc5\x4e\x9c\x44\xd0\xeb\xc1\xef\xaf\x5e\x9b\x48\x39\xc4\x08\x7c\x4b\xae\x40\x52\x9c\x64\x1a\x15\x52\x88\x17\x91\xd5\x45\x72\x0d\x9f\x2a\xeb\xd1\x60\xea\x84\xfa\x72\x90\xf0\xb8\xe2\xd6\x0c\xc9\xb7\xb8\x03\xd5\x8d\xff\x47\x0f\xde\xbc\x7a\x85\x95\x46\x49\xfe\x3b\xfc\xfe\xea\x55\x19\x24\x58\x85\xc6\x94\xde\xba\xd8\xd2\x71\xb6\x19\x89\xcf\x48\x14\x50\x3f\x22\x1f\x88\x33\x21\x61\xcb\x3a\x27\xf1\xcb\x43\x46\x65\x19\x8c\x4c\x95\xe1\xe5\x94\x49\xc2\x7f\x22\x12\x33\x81\xfc\x87\xb9\xc4\xa2\x1b\x80\xe1\xcd\x2a\x91\xc0\xa9\x1a\xec\xb0\x51\x17\xe6\x14\x8f\x52\x27\xf0\x4c\x12\x80\x8d\x1f\xd9\x09\x09\x84\x89\xcf\x86\x10\xae\x1f\xb9\x13\x02\x83\x38\xa6\x5d\xf8\x42\xc4\xb8\x8f\xc0\x4e\xc8\x9b\x9b\x1d\xb9\x62\xec\xee\x02\xef\x36\xf8\xb0\xeb\xfc\x76\x39\x71\xef\x90\xde\x89\x59\x13\x15\x31\x76\x3a\x65\x25\x9c\xd9\xe7\x43\x81\x6a\xca\x1c\x51\x6c\x69\x67\x24\x86\x28\x09\xb0\x1c\xd6\xd6\x62\xc4\x13\x3f\x16\xd5\x76\xfd\xf6\x6e\x44\x27\xcb\x62\x7b\xc7\x7a\x07\x27\x76\xf6\x95\x14\x9a\xc4\x41\x12\x8b\x36\x99\x44\x71\xab\x50\x92\x04\x22\x06\x8e\x60\x78\xfe\x5c\xb0\x76\x3d\xe2\xcf\xe2\x39\xfc\x03\x0a\x71\x8b\xd2\xa0\x07\xff\x73\x3e\x38\xe9\x06\xd8\xe8\x08\x66\xd9\x2d\xcf\x56\x38\x5d\xf0\xf3\xde\xb5\xc8\x21\x1a\xe1\x07\xd8\x41\xb8\x76\xf6\x40\x19\x97\xa5\xd9\xcc\x64\x78\xcc\xba\x0f\xf4\x7f\x46\x18\x38\xa1\xb3\x88\xce\x59\x9f\xda\xe2\x7f\xc8\x3d\x2e\x0e\xe3\x2c\x8b\x33\xe6\x63\x28\x24\xc3\x71\x94\x4a\x9f\xe2\xc3\xb3\xff\xd2\xeb\x81\xf5\xca\xd2\x11\x89\xe0\x45\x0f\xac\x0e\x58\x26\x7b\xa2\x7b\x37\x1e\xcf\xa1\x85\x83\x17\x3a\x15\xc5\x5f\xb2\xff\xae\xf4\x82\xc6\x4e\x44\xc0\xe2\x83\x01\x6b\xaf\x50\x0f\x98\x9c\x1d\x6b\x07\x5e\xa8\xc5\xc0\x0b\x4c\x2d\xd6\x9b\x51\x48\x9c\x5b\x35\x59\x74\x6a\x25\x65\x2b\xa5\x3e\x59\xde\xa3\xd4\x73\x0b\xb7\x44\xe8\x87\xdd\x5d\x38\x63\x7f\x46\xe0\x80\x18\xd9\x88\xca\xe2\xfa\x77\x94\xc7\x3f\xa6\xec\xf0\x80\xdc\xe1\x53\x2c\x37\x8e\xb8\x02\x24\x26\x61\x04\x3b\x5c\x99\x1d\x2c\xce\x73\x6f\x09\x7c\x5a\x7e\x62\xe4\xad\xd7\x1d\x78\xd3\x01\x2b\xb2\xda\xb9\xcb\x71\x04\x23\x1c\xce\x0b\x95\x1d\xce\x4b\x82\x1e\x5c\x5e\x69\x5e\xbf\x76\xa1\x07\xaf\xf7\xf1\xff\xbf\x83\x13\xce\x92\x05\xf1\xe3\x48\x04\x3f\x26\xbf\x78\x21\xfb\x48\xe0\x73\xed\xc2\x4b\x78\x8d\x23\xea\x8c\xe5\xf2\xda\xbd\x92\x47\x32\x69\x9c\x71\x65\xe0\x05\x58\x2d\x11\x1d\x12\xd0\x6a\x84\x4a\xd9\x56\xdb\xda\x2f\xc0\x8a\x45\x9e\x93\xd0\x75\x3c\xf7\xdf\x0c\xc2\x0f\xc4\x0b\x08\x8e\xb4\x77\x7f\xfb\x0d\xfe\x7b\xec\x39\x51\x04\xbf\xed\x9a\x26\x32\x59\x8a\x81\x3f\x23\xe2\x8a\x1b\x28\xba\x31\xed\x8b\x19\x8c\xd2\x4a\xd1\xd1\x4d\x07\x70\xf4\x31\x18\xdd\xe8\xf5\x45\x44\x3b\x1d\xdd\x5c\x5a\xd3\x90\x2e\xb0\xb5\xb0\xae\xd8\xb0\xdf\x4a\x4b\x28\xd4\x23\x8d\xba\x95\x96\x5d\xb1\x61\xc9\xeb\x72\x48\x83\x13\x67\x81\xe1\x66\xd2\x4f\x16\x97\x92\xa2\x33\x05\x69\x9e\xa6\xd6\x80\xc7\xf2\xc6\x8a\x8e\x6e\xb2\x76\xa8\x0c\xc4\xc4\x5f\x38\x61\x34\x77\x3c\x3e\x05\x94\x81\xe4\x3d\xe9\x58\x6f\xd6\xdd\x98\x28\x51\xab\xd8\x48\x47\x37\x68\x1e\xb2\xea\xb6\xb1\x31\x39\xb9\x1f\x42\xef\x09\x6f\xb6\x70\x94\x3c\x6e\xb5\xf9\x58\xfa\x92\x8e\x6e\xae\xb4\xde\x97\xa9\xd0\x0d\x92\x68\x8e\xb4\x43\xa3\x27\x04\x06\x8c\xb4\x3a\x0a\x9f\x9c\x60\x6d\x20\x1e\x1e\x0d\x40\xdc\x92\x65\x19\x10\x8c\xef\xf2\x96\x2c\xd1\xbb\x6c\x86\xaa\x3a\x81\xc9\x63\xf9\x28\x74\xa3\xb6\xfd\xb0\x59\x3f\xd1\xbf\x2c\x03\x7b\x64\x72\x3f\x5c\x0b\x04\x91\x61\x50\x62\xff\xd9\x23\x9b\xa0\x8b\xd9\x77\xd7\xdc\x6e\x19\x19\xd1\xba\x83\xd3\x3e\x9f\xcd\xaf\x6a\xdc\xae\xa3\x24\xc8\x27\xa3\xd9\x62\x4e\x2b\x63\xee\x80\x20\xd9\x57\x1b\xc1\x8c\xa0\x65\x98\x38\x72\x16\xd6\xd3\xb3\xf5\x89\xe7\xcf\x45\x52\x17\xe7\x5c\x4b\xb6\x82\xd4\xc9\xdb\x7d\xb6\x74\x84\x69\xfb\xc5\xce\x30\x93\x83\x68\xf0\x5f\x32\x26\xb2\x91\x12\x29\xb3\xdf\x23\x61\x3d\xdb\x91\xb1\xd4\x6e\xcc\x6c\xda\x66\x94\x81\xf6\x66\x16\x29\x26\x0b\xbb\x04\x15\x9a\x7a\xe8\x04\x71\x12\x92\x3a\xc6\x0a\xd6\x32\x73\x45\x76\xc3\x06\x0b\x29\xa5\x26\xe7\xf6\x65\x94\x68\xb6\x3d\x99\x91\xb3\xc4\xab\x65\x77\xca\x5b\x66\x78\x9a\xdf\xb0\xe5\xa9\x98\x52\xd3\x25\x1b\x73\x5a\x34\xfe\x84\x4e\x6a\x1b\x9f\xf2\x96\x19\x9f\xe6\x37\x6c\x7c\x2a\xa6\xd4\x78\xc9\xc6\x9c\x16\x8d\x3f\x75\xc6\xb7\x24\xee\xfb\xc8\x80\x0a\xd7\xc0\x40\x2b\xa2\x0c\x0a\x8d\xac\x61\x44\x34\x69\xa5\xc0\x14\xed\x2f\x70\x22\x4c\x5f\x68\x78\x3b\xf5\xe8\x7d\x1d\x7c\x52\xde\x32\x60\xd2\xfc\x86\x11\x49\xc5\x94\x42\x21\xd9\x98\xd3\x8a\xfe\x6f\xad\x61\xfd\xc1\x69\x3f\x5b\x33\x08\x49\x44\x93\x70\x4c\xb4\x01\x07\x5f\xa0\x67\x34\xd0\x13\xeb\x15\xfb\x6a\xee\x99\xe0\x64\xcb\x06\xfc\xa7\x46\xf1\xde\x19\xc7\x34\xc4\x31\xdb\x58\xb6\xf7\xe0\xb4\x9f\x2f\xd0\x8b\x85\x7c\x7d\xa6\xa0\x0f\x7e\xc2\x5c\x98\x22\x7c\x5f\x77\x88\xa4\x78\x37\x5d\xcd\xb0\x76\x9d\xc0\xdd\xb5\xe0\x85\x64\xad\x75\x3a\x38\x1f\x5a\x1d\xbe\x2e\xc1\x67\x9d\xee\x74\xc9\x44\x77\xe0\x41\x5b\xf7\xeb\xc6\x73\xe2\x6b\x6b\x7e\x25\xab\xc1\x15\x86\x58\x74\x74\x23\xef\x7d\xa4\x03\x2e\xf3\x3a\x55\x11\x30\xcf\xd5\x96\x7f\xd6\xc7\x0a\xa9\xa6\x99\x73\x64\x5f\x55\xc2\x73\x87\xe1\xb9\xa3\xe2\x79\x64\x23\x9c\x96\x55\x0f\x3d\x59\x6f\x7d\x90\x0b\x15\x07\xba\x7a\x39\xd7\xaf\xab\x0d\x79\x05\x12\xab\x06\xbe\x20\x16\x32\x99\x7a\xe9\x00\x38\x97\x53\x36\xf3\x93\x70\xcc\xb8\x2b\x7a\x79\x46\x54\x27\xbb\x93\x3f\x80\x9b\xe1\x05\x58\xac\x1e\xb9\x93\x1f\xf6\x78\xf5\xfa\xa2\xf9\xa7\x6a\x3d\x99\x10\x8f\x68\x0d\x4b\x1d\x10\x7f\x00\xa0\x77\xf6\xb1\x3d\xb4\x53\x8c\xc0\x4a\x77\x7f\xac\x3d\xb0\x2c\x5d\xf9\x7c\x16\xa0\xcf\x86\x78\xf3\xce\x32\x50\xe5\xa3\xd0\x09\xe6\xb6\x47\x16\xbc\x6d\xae\xde\xec\xcb\x8c\xda\x32\x8e\x10\x2e\x53\xe8\x5a\x68\x62\x55\xd2\x4c\x2f\xb6\x09\x58\xa3\x0f\xce\x98\xcb\x3a\xe1\x8c\xa0\xe1\x5e\x38\x93\x83\xf6\xcb\x46\x16\xb0\x10\xa6\x4a\x0c\xb9\x77\x26\xb3\xfa\x28\x20\xf3\x4a\x14\x90\xe0\x67\xa0\x80\x72\x9e\x44\x41\x98\x2a\x31\x64\x28\xac\x1f\x9c\x2d\x9f\x4e\x48\xd4\x01\x32\x99\x91\xa8\x30\x1c\x61\x99\xd0\x03\xfe\xff\xf7\xef\x4a\x27\xc1\x28\x18\x1f\xf4\x38\xbf\x4c\x51\x34\xce\x18\xde\xa9\x21\xa9\x11\x64\xe1\xb9\xfe\xba\xa3\xab\x9c\x4d\x0c\xb2\xaa\x8d\xab\xb8\x8a\x39\xb3\xd4\x92\xb1\x3d\x7f\xa5\x21\x33\xed\x61\x97\xb7\x50\x31\x0d\xa8\x47\x67\xcb\x9d\xd2\x61\xcf\x03\xec\x08\xc9\xff\x8b\xb2\x76\xf6\x20\x82\xc7\x9a\x03\x21\x77\xca\xd3\xb3\x43\x1b\xc5\x3d\x54\xa1\xf1\xa5\xb6\x64\xca\x76\x02\xa2\xc4\x8b\x61\xec\xf8\x30\x22\x70\x89\xf5\xea\x0a\x68\x08\x97\x97\xbc\x71\x60\x09\x57\x46\x79\xd2\x1e\x14\x86\x3e\xeb\xca\x5f\x5d\x15\x4e\xd3\x14\xb5\x11\x3b\x4c\x82\x61\xdf\xd4\x4b\xa9\x5b\x66\x5a\xcb\x6d\xf4\xd9\x51\xe9\x10\x4d\x3a\x72\x70\xc4\xea\xa4\xb1\x1f\xc8\x0b\x2d\x46\xaa\x14\x96\x32\x19\xdb\xa1\xf8\x44\x62\x47\x18\x54\x3d\x64\x33\xae\xc2\x58\xb2\xb0\x17\x02\x85\xfd\x90\x57\x95\xf7\x43\x40\xde\x13\x29\xd9\x0f\x01\x65\x00\xc5\x62\x3a\xd3\x81\xff\x90\xab\x4b\xa6\xb8\x84\x7c\x4c\xcf\xd3\xe3\x31\x2b\x1d\x60\x65\x46\x5b\xd9\x0e\x99\xd8\x62\x91\xc4\xb6\xb1\x4b\x4f\xf7\x57\x54\x17\x65\xc2\x75\x0f\xc9\x4e\x90\x88\x32\x6d\x0a\x68\x57\xd8\x75\xaa\x8e\xf2\x53\x08\x2b\x6d\x21\x46\x61\x2b\x47\x71\xe4\xfa\x13\xd1\x5b\x64\x89\x1d\xb8\xbc\xa3\xee\x04\x5e\x5d\xe1\xac\x65\xec\xc4\xe9\x0e\x54\x9b\x9d\xa3\x7a\xcc\xcc\x96\xac\xce\x8d\x66\xdb\x50\x31\x3b\x86\xb4\xc6\xbe\x53\x4c\x82\x96\x13\xb8\x1d\x08\x42\x72\xe7\xd2\xa4\xb8\xc1\x2a\xd2\x59\x23\xc3\xd5\x6b\xc3\x03\xe4\xc9\x7c\xc3\x58\x0a\xa5\x8a\xd1\xfc\xa6\x5e\x34\xc3\x4b\x78\x53\x3d\xa2\x9d\x00\x45\x39\x81\xab\xf5\x5f\x92\xfa\xe9\x4f\x9d\xa2\xbc\x2e\x20\x68\x52\x35\xf0\x9d\x05\xd1\xab\x40\x16\xfa\x7d\xff\xce\xf1\xdc\x09\xb2\x58\xd9\x11\x3f\xad\x80\x27\xeb\x11\xdb\xb8\x53\xd4\x4e\x87\x1e\xa6\xd9\xdd\x8c\xb7\x54\xe9\x40\x3b\xe5\xc9\xc4\xb4\x58\x4d\xeb\x5a\xc6\xf6\x37\x65\x7e\x21\xed\xdc\x8a\x38\xe5\xce\xef\xc0\x25\x1f\x23\x38\x0b\xd2\x6a\x67\x91\x2a\x57\xe4\xaa\xfb\x82\x72\x77\xca\x8b\x2b\xec\x61\x1b\xf1\x8a\xc4\x4c\x86\x14\x36\x73\xca\x3a\xeb\x0c\x83\x8c\xb5\x25\x4d\x70\xcc\x52\x42\xde\x41\xae\x9a\xff\x8b\x3a\x98\x46\x1a\x1f\x3e\x70\x28\x72\xb0\xdb\xe6\x19\xce\x2a\x4d\xd2\x19\x5b\x4c\x82\xc2\x86\x0d\xaf\xe1\x3c\x8b\x8d\x9d\x6a\x0d\x7f\x4b\x87\xbd\xd8\x18\x94\x8e\x78\xbb\x18\x13\xe9\xe8\x16\xe9\x0c\xe3\xda\xa3\xaa\x35\xe3\x28\xaf\x0f\x47\x75\x9d\xab\xc6\x93\x85\x63\x96\xc8\xda\xab\xb0\xcd\xdb\x12\x63\x10\xb6\x1c\x1c\x75\xf2\xb9\x45\x5b\x3d\xa1\x67\xe1\x48\x7b\xcd\x22\x19\x4b\x27\x1f\xa8\x4b\x45\x3e\xaa\xc3\x19\xc9\xec\x43\xea\xc7\xe4\xdb\xea\x70\xfb\x7f\x1e\x22\x48\x1d\x99\xd0\xb6\x95\x46\x7e\xbb\xd4\xae\x8b\x2d\xb1\xa8\x75\x21\x77\xc9\x17\x59\x57\xdc\xc9\x6a\x37\xff\x65\xee\x9a\x4b\x8c\xb7\xb7\xc5\x78\x5b\x36\xde\xde\x8c\xf1\xef\x3d\x7a\x1f\x6d\x0b\x00\x4c\x59\x19\x04\x96\x50\x1f\x88\x74\x6e\x81\xcd\x37\xb6\xd5\xca\xb4\x02\x67\x13\x62\x93\x35\xab\xf5\xeb\x6f\xb2\x72\xd6\xd2\x4d\x56\x51\x43\xff\x33\xc7\x76\x4c\x10\xbb\x33\xd2\xab\xd4\x35\x31\xe8\x9e\x1e\xf8\x5d\x97\x8f\xfc\x24\xa7\x5e\xeb\x5d\x9e\xc0\xba\x6a\xc7\x27\xc8\x2d\xfd\xc6\x87\x48\x67\x0b\x41\xca\x4e\x75\x16\x24\x19\x05\x1b\xeb\x27\xa3\xd9\x53\x8b\x3f\x65\xc1\x93\xf2\x96\x45\x4f\x9a\xdf\x44\xf8\x34\xe0\xb7\x32\xc7\xa4\x66\x54\xf5\x4c\x4a\x5f\x70\x4d\x9a\x51\xf0\x8d\xe4\x84\x9c\x26\x9f\x7e\xba\xdf\x5c\x9f\x4d\xb1\xde\x3a\x11\xe9\x00\x0a\x4f\x41\x14\x25\x57\x74\x9d\xea\x3e\x46\x7f\xfd\x5a\xf3\x9e\xe2\x41\x41\xd2\x32\x4d\x10\x9c\x70\xa6\x57\xdf\x62\x15\x5e\xaf\xe5\xc5\x7f\x58\xec\xea\xb6\x17\xca\xf6\x6c\xcc\xab\xa7\xfa\xc2\xa9\xca\x2e\x2c\xac\xe8\x5b\xcc\xcb\xbc\x2a\x49\x16\xa5\x88\xa8\x61\x7e\x6a\xb7\xd3\x53\x9d\x17\x75\xea\xd6\x45\x59\xa5\xba\x68\x6a\x29\xf9\xa2\x6a\x7c\x5f\xe4\x81\x7d\x51\x77\xc8\x5d\x71\x20\x2c\x0f\xa9\x95\x9e\x51\x16\xfc\xc1\xd9\x9a\x01\xc2\x07\x27\x52\x46\x88\xf8\x77\xfd\xe1\x81\x06\x82\xcd\x2f\x66\x6e\x0f\x14\x5c\x61\x1d\x10\x91\xba\x31\x58\x3e\x92\xe5\x16\x61\xf2\x91\x2c\x75\x40\x30\x69\x63\x68\x9c\xd0\x6d\x99\x1d\xb6\xb8\xb6\x3a\x1a\x98\xb4\x19\x34\xde\x91\x49\x12\x6c\x0b\x18\x4c\x59\x05\x0b\x9e\xb2\x19\x28\xfa\xfe\xb6\xe0\xd0\xf7\x65\x0c\xfa\xfe\x66\xec\x1f\x24\x5b\x53\x2b\x06\x49\x2c\x23\x30\x48\xe2\xcd\x40\xf0\x96\xc6\xf3\x6d\xc1\x00\x75\x95\x41\xc0\xbf\x37\x83\xc2\x99\xe3\xcf\x0a\x23\x9f\x3f\x2a\x0c\x4c\x59\xa5\x4d\xe0\x29\x9b\x81\xe2\xd8\x5d\xb8\x5b\x53\x2b\x98\xb2\x0a\x14\x3c\x65\x53\xcd\xe3\xd6\xac\xc1\xf5\x7d\x5b\x6d\x20\x7f\x60\x1d\x4e\x6b\x21\xb7\x06\x03\xd4\x55\x6b\x23\x37\x84\x02\x36\x34\x5b\x03\x03\x53\x56\x6f\x26\x37\x04\xc4\xf9\x9c\x86\x31\x89\xe2\x53\x27\x9e\x0f\xe9\xb6\x20\x22\x6b\x2d\x03\x23\xa7\x6f\x08\x9f\x7c\x45\xe7\xc9\x53\x25\xd9\x32\x99\x2a\xaf\xbc\xf0\x43\x9a\xf8\xe5\x2d\xb3\xb2\xc1\x92\xf8\x71\xe5\x62\x2f\x1c\x2f\x21\x5b\x33\x95\xe6\xda\x2a\xdb\x2d\x2c\x65\x33\xfe\xfb\x48\x96\x5b\x83\x04\xea\x2a\xe3\x80\x7f\x6f\x2a\x8a\x17\x7f\x82\x70\x4e\xc3\xad\x19\x06\xa1\xae\xca\x28\x88\x25\x6c\x06\x87\x4f\x24\x0e\xf9\x23\x59\x5b\x01\x85\x50\x57\x06\x43\x24\x6d\x2a\x2c\xc6\xb7\x24\xde\x1a\x38\x84\xba\x6a\x6c\xb0\xa4\xcd\xc0\xf1\xe7\x3e\xad\x0f\x17\xa6\x7d\xda\x0b\xe8\x61\x06\xbb\x15\x5a\xeb\x3a\x68\xe9\x3d\xd0\xa6\x36\x02\xec\xaa\x1b\x01\x76\xbe\x11\x60\xff\x9c\x8d\x00\x76\x10\x46\x81\xde\xde\xda\x8d\x00\x5b\x5f\xf7\xae\x1f\x7f\xf6\x7f\xc4\x46\x40\x01\x10\x9e\xba\x31\x58\xb6\x6e\x23\x40\x07\x04\x93\x36\x86\xc6\xd6\x6d\x04\xe8\x68\x60\xd2\x66\xd0\xd8\xbe\x8d\x00\xbb\xb0\x11\xb0\x21\x28\xb6\x6f\xfd\xd3\x2e\xac\x7f\x6e\x08\x8a\xed\x5b\xff\xb4\x0b\xeb\x9f\x1b\x82\xa2\xef\x6f\xcd\x01\xcc\xbe\x7f\xa1\xae\x7f\xfe\xc0\xec\xc7\x56\xd7\x3f\xb7\x06\x03\xd4\x55\x5b\xff\xdc\x10\x0a\x6f\x69\x3c\xdf\x1a\x18\x98\xb2\xfa\xfa\xe7\x86\x80\xd8\xf8\xfa\x9e\xdd\xcc\xfa\x9e\xfd\xe7\xfa\x9e\x11\x8b\x5f\x77\x7d\xcf\xde\xe2\xa5\x2d\x5b\x5f\xda\xfa\x81\xfe\x2d\x7d\xe6\xc8\x34\x67\xc7\x89\xba\xcd\xe7\xec\x1f\x9c\xa8\xd6\xf9\x3d\x7e\xb2\xcb\x3c\x73\xc7\xbc\x86\x2f\x84\xa3\x08\xb4\x2c\x3f\x3b\x7a\xd1\x01\xeb\x83\x13\x59\xed\x76\x3b\xb3\xac\xd6\x82\x04\x9f\xaa\x96\x5a\xd6\xd8\xb2\x44\x6e\x99\xad\x5a\x66\x9b\x2c\xe3\x87\xc8\xea\xda\x97\x1e\x41\x2b\xb7\x92\x53\xfc\x04\x5b\xb9\x20\xa3\x2f\x79\x9e\xc1\xee\xda\x7e\x4d\x67\xdc\x4f\xd8\xfd\x33\x7c\xcc\x05\x19\x3d\x6d\xb0\xfb\x23\x59\xd6\x75\x36\x3f\x5e\x57\x6a\x31\x66\x37\x6f\x2e\x4a\x31\xfa\xf8\x23\x59\xea\x86\xd6\xf5\x2e\x5f\x3e\x58\x65\xe8\x4f\xf0\x2b\x4a\x31\x3a\x55\x37\xf4\x84\xc6\x75\x3d\xca\x8f\x08\x96\x1a\x8a\xd9\xcd\x1b\x8a\x52\x8c\x1e\x3d\xa1\xb1\x6e\x68\x5d\x8f\xf2\x25\x90\x55\x86\xfe\x04\x8f\xa2\x14\xa3\x47\x15\x43\xf9\x69\xc5\x3a\x76\xa6\xe7\x1c\xcd\x66\xf2\xdc\x86\xad\xe4\x42\x8a\xde\x64\xe9\x9a\x8d\xb5\x7c\x99\x2e\xe1\xac\xb0\xb1\x69\x4f\x72\x21\x45\x47\x6a\x36\xf2\x13\x66\x75\x6c\x4c\xcf\xa6\x99\x6d\xe4\xb9\x0d\xdb\xc8\x85\x14\xfd\xc8\xd2\x35\x1b\x6b\xf9\x31\x5d\x7f\x5a\x61\x63\xd3\x7e\xe4\x42\x8a\x7e\xd4\x6c\xe4\xc7\xe3\xea\xd8\x98\x1e\xac\x33\xdb\xc8\x73\x1b\xb6\x91\x0b\x29\xfa\x91\xa5\x6b\x36\xd6\xf2\x63\xba\x78\xb6\xc2\xc6\xa6\xfd\xc8\x85\x14\xfd\xa8\xd9\xc8\x36\xf8\x6b\x5d\xde\xe3\x27\x03\x4a\x6e\xee\x61\x66\xc3\x06\x32\x19\x45\x1f\x62\xb2\x6a\x5e\x2d\x0f\x8a\xd9\x61\xb9\x79\x4d\xfb\x8f\xc9\x28\xba\x4f\x35\x8f\x9f\x3b\x5f\xdb\x38\x76\xe8\xdb\x6c\xda\x20\x69\xec\x0d\xe8\x41\x52\xf9\x72\xea\x20\x29\x5e\x4c\x1d\x24\xec\x52\xea\x85\x3c\xd1\xe6\xf6\xb3\x1c\x84\xa3\x5f\xeb\xbd\xdc\x7e\xe9\x13\xb9\xfd\xc6\x5e\xc5\xed\xfb\xd5\x9f\x6e\x29\x20\xd1\xf7\x0b\x40\x30\xcb\xfb\xe2\x71\x5c\x71\x14\x7f\x6d\x20\xf8\x31\x78\x33\x14\x98\xd7\x14\x18\xec\x38\x7e\x45\x38\x90\xb6\x00\x08\x26\x16\x20\x11\x28\xf0\x3c\x51\x59\x6a\xb5\x74\x7c\xf9\xbb\xb4\xba\x34\xd6\xce\xb1\x65\xf8\xea\x15\xe6\xc2\x54\x63\x2e\x4c\x55\xe6\x82\xd7\x99\x8b\xb4\xd2\xd4\x42\x85\xed\x8c\x94\x55\x9b\xc6\x30\xe9\xfb\x95\x21\xe9\xfb\x45\x44\xfa\x7e\x11\x10\x6e\x3f\xcb\x11\x51\x52\xab\xc3\xe0\x87\xc4\x4b\xa3\xa4\xb1\xee\x82\x1d\x56\xaf\x1e\x25\xb6\x29\x4a\x58\x3f\x63\x6b\x51\x62\xf3\x28\xb1\xd3\x28\xa9\x85\x0a\xbb\x3f\x50\x16\x25\x8d\x61\xd2\xf7\x2b\x43\xd2\xf7\x8b\x88\xf4\xfd\x22\x20\xdc\x7e\x96\x93\x36\xb1\xb5\x00\x11\x67\xe8\xcb\x1b\xd9\xc6\x40\xe1\xc7\xf9\xd7\x68\x66\x8b\xc0\xb0\xd4\x02\x34\x29\x16\x22\x37\x85\xa7\x56\xab\x22\xb6\xd8\xca\xe1\x69\xac\x65\xe1\xbb\x7d\x6b\xc0\x53\x6c\x5d\x58\xaa\xb1\x1f\xba\x10\xf0\x88\x36\x46\xbe\x2f\x50\x6b\x70\xaa\xdc\x37\x28\x19\xa3\x4a\x34\x4d\x61\xa6\xdc\x87\xa8\xfa\xba\x85\x72\xf3\x43\x7a\x8d\xce\x5c\xd6\x9f\xaf\xd2\x3d\xf5\x2a\x9d\x19\xb7\x6a\x87\x28\xef\x7e\xe0\x3b\x52\xd2\xc7\x9f\xaa\x3e\x4b\x46\x47\x37\x57\xf2\x93\x0c\xeb\x7d\x54\x29\x9d\x18\x49\x06\x9b\x36\xdf\xb4\xca\xa5\x92\xa3\x4d\xa7\x21\x99\xb8\x63\xfe\x11\x82\xea\x6f\x54\x66\x5c\x2d\xf9\xfd\x14\xa8\xbe\xd1\x59\xfd\x3b\x72\x50\xf1\x5b\x72\x2a\x6e\x59\xa8\x40\x8f\xbf\x33\xa2\xe6\xac\x78\x49\x32\x33\xad\xc6\xab\xaa\x15\x6a\xc2\xaa\x7a\xa0\xba\x36\x53\x24\x7d\x6f\x30\x13\x7d\x62\xf3\x8d\xd8\x54\x03\x69\x67\x37\x77\x8c\x75\x62\x5b\x1d\x6e\x9f\xf2\x50\xe9\x09\xf6\x4e\x27\xb6\x54\xdc\xd1\xb0\x4a\x71\x47\x43\x63\x71\x47\x43\xe8\xc1\xd1\x50\x2a\xee\xb8\x52\x71\xc7\xe6\xe2\x8e\xb1\xb8\xe3\xa1\xa2\x5d\x25\x6b\x8f\x86\x66\x73\x8f\x86\x36\x53\xd0\x56\x34\xac\x54\xe4\x71\x49\x91\xc7\xac\xc8\x63\xa5\xc8\xfe\xe9\xc5\xef\x67\x07\x27\x47\x95\x0a\xce\x88\x8d\xc5\x67\xb9\x38\xc4\x4a\x7f\x4b\xa2\xce\xec\x23\xfb\x9f\x55\xc4\x30\x42\xa3\x08\x96\x03\x3d\x5e\x94\x54\xf4\x97\xfe\xf0\x43\xff\xe4\x8f\xf2\x32\x6f\x5e\x13\xa5\x83\x0a\x59\xa2\x74\x58\xc1\xe2\x7a\x5b\x4f\xbd\xd1\xcb\xc9\xa0\x27\xec\xd4\x0c\x1f\x7c\x1e\x6e\xa7\xe5\x83\xcf\xc3\x4a\xa6\x0f\x3e\x0f\x85\xed\x83\xcf\x72\x0d\xeb\x9f\x9c\xf7\xdf\xd9\xad\x69\x48\x17\x1d\x88\xe9\x13\xb1\xcb\x88\xad\x0e\x64\xe4\x4a\xec\xb2\x5c\x0c\x5c\xf6\x43\x12\x32\xf8\x3c\x5c\x43\x8a\xa0\x2e\x13\x23\xb2\x71\x4e\xc6\x7f\x49\x82\xde\xda\xc3\x2f\xb6\x7d\x52\x51\x90\xa0\x2e\x13\x24\xb2\x71\xc0\xca\x7f\xe5\x3d\xeb\xfb\xc1\x99\x7d\x61\x9f\xf1\x6f\x01\xca\x45\x8a\x0c\x4b\xfe\xc0\xd5\xe0\x4b\x91\xee\x64\xf0\x45\xa6\x79\x67\x9f\x1f\x16\x89\x30\x55\xa6\x3a\x30\x11\x1d\x70\x1a\x0c\x4d\x7e\x2b\x6b\xad\xbe\x9c\xb3\x98\xbf\x89\xc1\xf3\xf4\x07\x6f\x33\x21\x69\x36\x4a\x7e\xef\xd1\xfb\x63\x67\xb9\xe6\x47\x56\x33\x2e\xb3\xfc\x2c\x5b\x57\x41\x96\x26\x11\xb1\xc9\xf9\xe1\xa7\xd3\xf5\x15\xc9\xb8\xcc\x8a\x64\xd9\xba\x22\xb2\x34\x89\x28\x45\xa4\x86\x3f\x72\xb6\x72\x4c\xcc\x7e\x51\x04\xca\x64\x7c\x1f\xee\x9e\x7f\x3c\x6c\x2d\x65\x32\x2e\xb3\x2e\x59\xb6\xae\x8a\x2c\x4d\x22\x42\x45\x86\x87\xa7\x35\x50\xc9\xb8\xcc\x8a\x64\xd9\xba\x22\xb2\x34\x89\x28\xf5\xcf\xda\x9e\x29\xf7\x89\xc9\x1b\xc2\x0f\xb9\xbc\xa8\xce\x0c\x57\x5c\xa8\x33\x4f\x6d\x59\x66\x53\x73\x5a\x7e\xb7\xaf\xe2\x64\x96\x11\xe7\x73\x58\x9d\xb7\x99\x9b\x6c\x28\x45\x1d\x3e\xeb\x72\xb7\xeb\x22\x5b\xe1\x36\x65\x9a\x56\xff\x70\xa6\x01\x90\x2d\xbd\xd4\x66\x02\x47\xca\xd9\x1c\x44\xab\x0f\x8d\xff\xb1\xe0\x79\xfa\xdc\xba\x6e\xdd\xaf\x7e\x76\x5d\xc7\xe3\xd7\x3d\xbf\xae\x23\xf1\xcb\xbe\x51\x51\x00\x62\xcb\x0e\xf3\x17\x5a\xc6\x2c\x71\x73\x98\xfc\xa2\xef\xfa\xe9\x30\xfc\x8a\xcf\x3b\xea\x18\xfc\xba\xef\x1b\xea\x48\x9c\x88\xef\xf2\x6d\x05\x14\x4c\x59\x19\x0b\xf1\xa9\x95\x8d\x8d\x2c\x69\xb0\x35\x58\xa0\xae\xca\x50\x92\x06\x9b\x1c\x40\xf2\x0f\xd8\x8b\xcf\x64\x6e\x05\x20\x92\xca\x32\x2e\x52\xf2\xe6\xe0\xf9\xf3\xf9\xa3\x02\x24\xd9\x2a\xc9\xd6\xa0\x92\x6b\xac\xbe\x1a\x90\xa6\x6e\x72\x34\xb6\x55\xc0\x34\xf1\x3c\x94\x0e\xc9\xf6\x3d\xb3\x51\x18\xa2\xe6\xa9\x9b\x83\xe5\x28\xa4\xdb\x03\x0b\x53\xb6\x00\x4b\x9e\xfa\xc3\xf7\x71\x59\x29\xa6\x63\x01\xe9\x52\xa4\x20\xb8\x63\x1f\xfc\x4d\xc5\xd6\xfb\x78\x73\xae\x74\xc9\x67\xec\x32\x8a\xa6\x16\x2b\x25\x38\xab\x7e\xef\x0e\x39\xa4\x6f\xde\x99\x0a\xd8\xdc\xb2\xe5\x27\x27\x50\xbe\x4a\x67\x5a\xbc\x34\xaa\xf0\x89\x86\x64\x38\x77\xb6\x66\xde\xd1\x78\x5c\xe7\x45\x19\x3f\xe6\x25\x47\xb2\x4c\x2a\xee\x08\xd6\x0e\xf2\x7c\x29\xb6\xf4\x96\x60\xa3\x01\x9e\x5f\x13\xcc\x6c\xcf\xef\x43\x08\xcd\x4a\x2e\x6f\xff\x88\xcd\xca\x0a\xeb\x13\x97\x99\x7f\x92\xfd\x92\xb0\x52\x14\xf4\x8b\xcd\xd9\x8a\x48\xdd\x1b\x30\x2b\x11\xc8\x08\x7e\xc2\x4d\x98\x15\x76\xab\x37\x62\xf2\x1e\xb6\xf6\x3d\xca\x95\x46\xe7\x14\x3f\xe3\x3e\xe5\x0a\xb3\xb5\x7b\x95\xe9\xa4\x7c\x6d\x93\xc5\x7c\xd8\x6c\x2d\xcb\x6c\xca\x50\x3e\x35\xaf\xd8\x6f\xf1\x8f\xaa\xea\x27\x6e\x59\x6a\xe1\xc4\x6d\x8a\x85\xc8\x65\xad\x02\x9f\xa6\xaf\xdf\x16\xb0\x29\x72\x49\x0b\x40\x83\xc6\xb0\x61\x53\xf5\x8a\xd0\x20\x6d\x01\x19\x4c\x2c\x00\x23\x50\xe0\x79\x08\x8b\x3a\x67\x5f\xff\xeb\x8f\xf2\x44\xd9\x0c\x92\x44\xd2\x14\x56\xf2\x2c\xbe\xea\xc7\x0f\x73\x96\xe2\x07\x10\xf3\xbc\x02\x80\x2a\x5e\x0a\x25\xc2\xc9\x76\x69\x6a\x7d\xad\x0d\x19\x4b\xbf\xd8\x86\x99\x4d\x81\xc7\x0a\xaf\x3b\xf6\xe3\x9f\x7c\x2f\x0e\x56\x58\xa1\xc6\xc7\x6c\x05\x40\x82\x80\x85\xa0\xd8\x77\xac\xf1\xe9\xd1\xc4\x5f\xf1\xe1\xd1\xc4\x6f\xec\x22\x23\x2b\xbc\xfa\x77\x36\x13\xdf\xf4\x95\xcd\xc4\xe7\xd7\x19\x11\x09\xf5\x3b\x9b\x1c\x0f\x41\x91\x85\x55\xad\xe6\x2b\xdd\x36\x5c\x11\x58\x8d\x35\x61\x62\x13\xb3\xea\x47\x01\x19\x75\x01\x27\x9e\x6c\x04\x2a\x43\x25\xa5\x41\xa8\xc4\xbe\xe6\xda\x40\xf1\xad\x34\x33\x4c\x98\xd7\x14\x48\x6c\x4b\xaf\x22\x44\x48\x5b\x00\x08\x13\x8d\xf0\x08\x24\x78\x3e\x1b\x0c\xb2\x8d\xce\x1a\x1f\x69\x5d\x94\x7f\x9f\x75\xd1\xd8\xcd\x92\x64\x51\xfd\x73\xa9\x0b\xc3\x97\x52\x17\x46\x50\x38\x06\x2c\x37\x3f\x3a\x58\x2b\x60\xb2\xc5\x50\x33\x34\x22\xbb\x29\x78\xd2\xd5\xd9\x8a\x10\x09\xf2\x1c\xa6\x22\x7f\x93\x73\x7e\x2e\x4d\x9d\xd6\x16\x35\xd8\xa2\x8d\x78\x8c\x4e\x79\xa5\x13\xab\x48\xdd\xf9\x7d\x11\x88\x83\xd9\x2c\x24\x33\x27\xde\x9e\x4d\xb6\x5c\x63\x19\x96\x3c\x75\x93\xe8\x6c\xf0\x71\x4b\xe5\xc4\xaf\x71\x5d\x25\x6f\x20\x32\x22\x04\x57\xf1\xd0\xda\x4d\x87\x8c\x8b\xb9\xf5\xc8\x29\x9a\x6a\x40\x24\x8f\x55\x6c\x43\x72\x8e\x42\x6b\x9b\x67\xb1\xa9\x2a\x47\x4a\x86\x51\xc1\x4b\xa6\x56\x4e\xe9\xd6\x02\x53\xde\x7b\x29\x7b\x35\x27\xa5\x68\x0a\x4c\x69\x57\xa8\x22\x98\x39\x47\x0e\xa6\xb1\x94\x26\x9b\xe5\x4c\xa0\x5a\x2b\x8c\x7a\xbc\x3d\x7d\xbf\x2d\x8d\xd1\xdb\xd3\xf7\xca\xd9\x87\xd3\xf7\x3f\xbc\xf8\x9a\x43\x62\x6a\x24\x94\x00\x96\x49\xd9\x4d\x68\x06\xdc\xfa\xf7\xa0\x51\xeb\x92\x5b\xd0\xa7\xef\x1b\xbb\x03\x7d\xfa\xbe\xf2\x0d\xe8\xd3\xf7\xc5\xfb\xcf\xa7\xef\x11\x9f\x1c\x02\xe5\x1a\x34\x03\x82\x91\xf0\xa5\xc9\xb5\x0f\xe6\x73\x16\xf3\x69\x74\x9e\x97\x9e\x47\xcf\x05\xd4\x5c\xf9\x5c\xd9\xa0\x88\xec\xc6\x86\xbe\x74\xad\xa6\x44\x90\x4b\x17\xa9\x0b\xfc\x4d\x36\x22\x5c\x9a\x5a\x6b\x8a\x1a\xfc\xea\xc7\x6f\x8b\x88\x6c\xd7\x11\x7d\xc3\xf6\x7e\x9e\xfa\xc3\xcd\xab\x28\xc7\x78\x99\x3b\xab\xc5\x19\x91\xd8\xe4\xf9\x81\xfa\x2d\xab\x5e\xba\xb9\xd3\x70\x2d\xcf\x37\x76\x24\xeb\xf3\x55\xfe\x4c\x3f\x75\x73\xeb\xd0\x73\xc9\xea\xd5\xb2\x42\xab\xc9\x59\x5a\x34\xc0\xbf\x22\xd9\x1a\x91\x04\xbd\xec\xd7\xf7\xef\xf0\xf0\x98\x87\x03\xf3\xe6\xc8\x89\xc8\xe7\xb3\xe3\x9c\xea\xd2\x12\x49\xd6\x15\x32\x58\x96\xc6\x90\x44\x24\x14\x2d\x56\xc6\x91\xa6\x95\xb0\x04\x4e\x14\xdd\xd3\x70\x22\xb3\xa4\x69\x25\x2c\x63\x4a\x6f\x5d\x45\x06\x4f\x29\x21\x77\x3c\x12\xb2\x60\xc1\x88\x3e\x38\xed\x0b\x1f\x59\x2c\xdd\xea\xc0\x01\xfe\xdf\xd6\x65\xf0\xf5\x5d\x03\x9b\xc8\xb1\x3a\xe9\x1a\xb0\xce\x1a\xb0\x0e\xb0\xef\xdf\x90\x71\x0a\xb2\x56\x84\xcb\xf2\x38\x9d\xd5\x81\x53\x95\x41\x2f\xcf\xa7\x13\x72\x96\x78\x26\x5d\x30\x2b\x4c\x3c\x54\xe6\x44\x50\xe9\xdc\x64\x32\x2b\xe3\xc6\x2c\xc1\x6d\x0b\x2a\x9d\xfb\x9e\x86\xb7\x53\xb1\xa3\xa6\x71\xa7\x59\x56\x07\xbe\x88\x9f\x3a\x77\xfe\xe2\x06\xf2\x1e\xf1\xbf\xd2\x22\x74\xe2\xa3\xf4\x61\x0e\xc1\xd5\x3d\xca\x5a\x0c\xbe\xf2\xca\x82\x59\x6a\x46\x3d\x3a\x73\x57\x1f\x12\x88\x88\x37\x15\xa5\xe6\xc2\xb2\x47\x43\xb2\x60\x7d\xfe\x5c\x0d\x45\xbd\xf9\x14\xf5\x75\xe1\xdc\x92\x33\xf2\x35\x21\x51\x9c\x62\xb0\xcb\x74\xb0\x3a\x60\x9d\x0e\xce\x87\x56\x07\xbe\x26\x24\x5c\x46\xfc\x4d\x04\xfe\x9f\x3b\x5d\xb6\x1e\x20\xaf\x05\x7b\x6a\x4d\xe9\x40\x1e\xed\x7b\x5a\x8d\x78\x6c\x77\xe0\x01\xac\x31\xf5\x63\xe2\xc7\xc3\x65\x80\xdc\x16\xb6\x33\xee\x98\x75\xd1\xbb\xdf\x5e\xde\xdf\xdf\xbf\x9c\xd2\x70\xf1\x32\x09\x3d\xe2\x8f\xe9\x84\x4c\xac\x8e\xa2\x3d\xfe\xb3\xb0\xcf\x4e\x0b\xb0\xe0\x71\xd5\xe3\x1b\xa7\x21\x5d\xb8\x11\xe9\x86\x24\xa2\xde\x1d\xd1\x9a\xed\x82\x17\x42\x8e\x88\xe2\x87\x24\xf4\x3a\xb0\x20\xf1\x9c\x4e\x3a\xc0\x2f\xae\xd1\x20\x56\x1a\xa0\xcc\x0b\xbc\xea\xea\x90\x23\xf9\xa5\x35\x27\xce\x84\x84\x91\x85\xdd\xd6\x03\x58\x87\xbc\x96\xef\x29\xad\xc0\xe3\x0a\x53\x8a\x1e\x2b\xd3\xcc\xd4\x35\x71\x53\xf5\x7b\x8e\x59\x33\x9c\x66\xff\x5f\x00\x00\x00\xff\xff\x1e\xf9\xc8\x59\xb2\xc0\x00\x00") +var _jsApiJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x9b\x5d\x6f\xdb\x38\xd6\x80\xef\xf3\x2b\xce\xeb\x8b\x42\xee\xf8\xb5\x33\xbd\x5a\xd4\x1b\xec\x26\x69\x33\x31\xa6\x4d\x8c\x38\xd3\xc1\x20\x08\x04\x5a\xa2\x6d\xce\x2a\x92\x96\xa2\xea\x7a\x5b\xff\xf7\xc5\xa1\x28\x91\xd4\x87\xeb\x38\x56\x27\x0e\x36\x37\x33\x15\xcf\xe7\xc3\xa3\x43\x8a\xb2\x3a\x69\x42\x21\x11\x9c\x79\xa2\x33\x3c\x1a\xbc\x3e\x82\xd7\x70\x1e\xc5\x2b\xce\xe6\x0b\x01\xce\x79\x17\xde\x1c\xff\xfc\x37\xb8\xa1\x3e\x5c\x12\xd1\x83\x51\xe8\xf5\x8f\x40\x8a\x7d\x60\x1e\x0d\x13\xea\x43\x1a\xfa\x94\x83\x58\x50\x38\x8d\x89\xb7\xa0\xf9\x48\x0f\x3e\x51\x9e\xb0\x28\x84\x37\xfd\x63\x70\x50\xa0\xa3\x86\x3a\xdd\x21\x9a\x58\x45\x29\x3c\x90\x15\x84\x91\x00\x0c\x44\x2c\x58\x02\x33\x16\x50\xa0\x5f\x3c\x1a\x0b\x60\x21\x78\xd1\x43\x1c\x30\x12\x7a\x14\x96\x4c\x2c\xa4\x1f\x65\x05\x23\x81\x3f\x94\x8d\x68\x2a\x08\x0b\x81\x80\x17\xc5\x2b\x88\x66\x86\x1c\x10\xa1\x62\xc6\xbf\x85\x10\xf1\xdb\xc1\x60\xb9\x5c\xf6\x89\x8c\xb7\x1f\xf1\xf9\x20\xc8\x44\x93\xc1\x87\xd1\xf9\xfb\xab\xc9\xfb\xff\x7f\xd3\x3f\x56\x4a\xbf\x85\x01\x4d\x12\xe0\xf4\xdf\x29\xe3\xd4\x87\xe9\x0a\x48\x1c\x07\xcc\x23\xd3\x80\x42\x40\x96\x10\x71\x20\x73\x4e\xa9\x0f\x22\xc2\x98\x97\x9c\x09\x16\xce\x7b\x90\x44\x33\xb1\x24\x9c\xa2\x19\x9f\x21\xe7\x69\x2a\x2c\x64\x79\x88\x2c\xb1\x04\xa2\x10\x48\x08\x9d\xd3\x09\x8c\x26\x1d\x38\x3b\x9d\x8c\x26\x3d\x34\xf2\xfb\xe8\xf6\xf2\xfa\xb7\x5b\xf8\xfd\xf4\xe6\xe6\xf4\xea\x76\xf4\x7e\x02\xd7\x37\x70\x7e\x7d\xf5\x6e\x74\x3b\xba\xbe\x9a\xc0\xf5\x05\x9c\x5e\xfd\x01\xbf\x8e\xae\xde\xf5\x80\x32\xb1\xa0\x1c\xe8\x97\x98\x63\x06\x11\x07\x86\x30\xa9\x2f\xc9\x4d\x28\xb5\x42\x98\x45\x59\x48\x49\x4c\x3d\x36\x63\x5e\x40\xc2\x79\x4a\xe6\x14\xe6\xd1\x67\xca\x43\x16\xce\x21\xa6\xfc\x81\x25\x38\xa7\x09\x90\xd0\x47\x2b\x01\x7b\x60\x82\x08\x79\xa9\x92\x96\xaa\x95\xc1\xd1\x67\xc2\xc1\x75\xe9\x17\x41\x43\x3f\x81\x13\xac\x06\x96\xc0\xab\x57\x72\xca\xfb\xc5\x48\x17\xbe\x7d\x03\x67\x96\x86\x1e\x1a\x04\xa7\x0b\x5f\x8f\x70\xce\x50\x3d\x13\x99\xa0\x2f\x0f\x4d\x5c\x4f\xff\xa4\x9e\xe8\x27\x54\x8c\x79\x24\x22\xb1\x8a\xe9\xf5\x0c\xbe\x7d\x93\x0a\xf8\xe7\x7c\x05\xd7\x8d\x71\xcc\x75\xdf\xc2\xdd\x3d\xac\x81\x85\x89\xc0\x52\x8a\x66\x70\xca\x39\x59\x61\x04\xda\x9b\xdf\x83\x69\x17\xbe\x82\xdf\x2f\xf4\xe0\x04\xa6\x43\x58\x77\x4d\xbb\x55\x05\x24\xe7\x60\x8c\x31\xce\xfe\xb4\x0b\x6c\x06\xce\xb4\xbf\x20\xc9\xf5\x32\x1c\xf3\x28\xa6\x5c\xac\x9c\xb8\xdb\x05\xff\x2e\xbe\x47\x9b\x77\xf1\xfd\x10\xd6\x43\x69\x93\x53\x91\xf2\xb0\x6a\xb6\x70\x68\x65\x9e\x8d\x0e\xab\xd1\xb8\x2e\xe2\xca\x80\x7a\x51\x98\x08\x9e\x7a\x22\xe2\x70\x02\xfe\x10\xd6\x85\xbc\xdf\x8f\x73\x5c\x18\x08\x9c\x9c\x9c\x40\x98\x06\x01\xfc\x23\x27\xea\x71\x4a\x04\x75\xa6\x5d\x78\x0b\x8e\xeb\xda\xf2\xfa\x5f\x3d\x08\xe9\x52\x7a\x55\xd1\xac\x87\x47\xeb\xae\xd3\x1d\x1e\x29\x3b\x3e\x9d\xb1\x90\x16\xe9\xd3\x2f\x71\xc4\x45\xd2\x83\x8e\xeb\xd2\xe4\x63\xe4\xa7\x01\xed\xf4\xe0\x2b\x7c\x26\x41\x4a\xdf\x82\xe0\x29\x85\x75\x77\x28\x6b\x65\xce\xc9\x6c\xc6\x04\x83\x93\xfc\xbe\x73\x3a\xfd\xfe\x20\xbf\x3c\xf8\x33\x19\x90\x98\x75\x94\xf4\x39\x89\x45\xca\x31\xbe\xc1\xeb\xd7\xf0\x4f\x2f\x20\x49\x02\xaf\x07\x66\x25\xb9\x49\x1a\x53\x9e\x53\x2d\x0a\xce\x51\xaa\x3d\x50\x02\x59\x2a\x85\x9e\x1a\x76\xcc\xe9\x50\xf3\x95\x29\xc0\xff\xe5\xfc\x5e\xbd\x52\x97\xfa\xd8\x1d\x56\xb2\xc2\x7b\x40\xf8\x3c\x7d\xa0\xa1\xc8\x4a\x1b\xaf\x29\x58\xe6\xd4\x2b\x2f\xc3\xa3\xb5\x93\x67\xd8\x3f\x1d\x8f\x32\x8e\x88\x57\xb1\xeb\xeb\x44\x0b\x15\xcc\x7f\x4c\xbc\x7f\x51\x31\x0a\x51\x1c\xa3\xde\x81\x43\xc9\x44\x13\x8f\x92\x58\xcb\x5c\x4a\xde\xbe\xcf\xa7\x0a\xa2\x62\x02\x79\x7d\xa4\xb8\xe2\x6d\xc2\x94\xe7\x55\x5c\xc9\x54\x8a\xeb\x56\x98\xd9\x18\x46\x67\xc6\x52\x38\xc9\x87\xd1\xf3\x45\x10\x2d\x3f\x90\x15\xe5\x8f\x72\x5e\x68\xd5\xfb\x2f\x86\xcb\x21\x98\xde\x0c\x21\x0c\x64\x74\xfe\x71\xfc\xf8\x40\x0a\xad\xfa\x40\x8a\xe1\x72\x20\xa6\x37\x43\x28\x27\xb2\xc3\x7c\x68\xb5\x66\x26\xf5\xf3\x62\x39\x34\xc5\x30\x9a\x1b\xb2\xcc\x2a\xe6\x51\xc1\x14\x5a\xf5\xb1\x14\xc3\xe5\x50\x4c\x6f\x86\x10\x06\x72\x7b\x3e\xde\x81\x4a\xa1\x55\x1f\x48\x31\x5c\x0e\xc4\xf4\x66\x08\xe5\xf3\xf3\xe8\x99\x69\x9e\x93\xba\xd9\x50\xf3\x90\xf9\xbb\x8c\xe2\x64\x97\x06\x86\x7a\x4d\x5d\x0b\xc7\xda\x6a\x55\x68\x5b\x2f\x8a\xfd\x90\x3c\x60\x7b\xb6\xf8\xe4\xee\x3a\x28\xdb\x29\xaf\xfb\x78\xd1\xea\x6c\x9f\x4c\x3e\x0a\x47\x26\x64\xac\x75\x57\x91\xff\x94\xf5\x0e\xd5\xbf\xb3\xe6\xa1\x48\x5b\xd0\x0c\x17\xdb\xb2\x33\x54\x2a\x08\x8d\xb1\x66\x92\x36\x38\x4b\x45\xaf\x09\x3b\x95\x9e\x52\x6d\xe2\xa9\x86\xdb\x62\xa9\xcc\x6f\xcb\x51\x89\x6b\x86\x55\xfd\x84\x72\x46\x02\xf6\x1f\xdb\x88\x4f\x04\xa9\x49\xa1\x80\x3d\x51\x5a\xf2\x59\xe0\x92\x06\x98\x45\x1a\x3e\x10\x9e\x2c\x48\xf0\x91\xc4\x72\xc3\x2d\xad\xdc\x1d\xdf\xf7\x94\x5b\xbd\x75\xac\x0f\x65\x92\x3e\x94\x33\x29\x02\x90\x1b\x6e\xc2\xc9\x03\x4e\xda\xdd\xbd\xb1\x25\xce\xb7\xe3\x2e\xee\x1f\x8f\x87\xf8\xdf\xbf\x6b\x8a\xfd\x80\x86\x73\xb1\xc0\xcb\x3f\xfd\x64\x1a\xc4\xbf\xcc\xe0\x9d\xcb\x70\x9b\x5e\xa8\xe0\xbf\xb5\xfd\xb5\x15\x82\x4b\x86\x65\x26\xb8\x31\x76\x1c\x97\xc0\x89\x81\x27\x7d\xe8\xf6\xa7\x2c\xf4\xd5\xd4\xba\xa4\x07\x77\x9f\x23\xe6\xc3\x71\x2f\xdb\xb4\x93\x98\x65\xff\x77\x8f\xfb\x77\x8f\x08\x27\x0b\xa6\xdb\x95\xbb\xea\x8d\x9c\x4e\xe7\x73\x4e\xe7\x44\xd0\xe4\x39\xe3\x32\xf1\xe8\x88\x4d\x2a\xfa\xea\x3e\xe9\x9c\x47\x69\x28\x1a\xc1\x18\x51\x15\xb3\x25\x35\x1c\xdb\xb1\xed\xc5\xda\xfb\xd9\x0d\x7c\x22\x68\x5c\xdd\x09\x26\xc5\x56\x50\x75\x72\x6b\xce\x1e\xdd\x74\x4c\x52\xf5\x7d\x47\x4b\xb4\xd5\x7a\x8c\x39\xdc\xb2\xfb\x68\x8d\x4a\x13\xd7\x43\x08\x53\x91\x32\x31\x5a\xbc\x4c\x69\x6b\xe3\xb6\x13\x4c\xad\xdd\x04\x53\x4b\xb4\x05\x53\x7b\xd8\x16\xa6\xd6\xd0\x30\x6b\xad\xfc\x90\x86\x5e\x78\xb6\xef\x93\xda\x80\xce\xc6\x17\x87\xd2\xa7\xce\xc6\x17\x66\x83\x3a\x1b\x5f\xec\xde\x99\xca\xcf\x03\x9b\xdb\x86\x55\xd2\xa6\x0e\x32\xc8\x08\x3e\xba\xd0\x65\xf8\xf5\x15\x7e\x36\xbe\x68\xab\xb4\x91\xe1\x96\x35\x7d\x36\xbe\xa8\x74\x86\xb3\xf1\x05\x82\xd2\x08\x4c\x4a\x19\x08\x29\xa2\x77\x5c\xec\x0b\x0b\x11\xa7\x73\x46\x12\xda\x03\xf4\x98\xa7\xa6\x6c\x6e\x49\xce\xa6\x27\xe5\xdd\x9f\x4b\x04\x2d\x8a\x4a\xc4\x29\x17\x20\xce\x19\xe1\xf3\x72\x4d\x3f\xb5\xae\xf1\x0f\xcd\x6e\xae\x6c\xbb\xba\x2b\x93\x5b\x9e\xc9\xf2\x24\xda\xea\x2a\xc3\x2d\x27\x14\xc7\x8a\xf9\x34\x3c\x2b\x2b\xaa\x4a\xe4\x3c\xe1\xac\xae\x65\x71\x4f\xa2\x47\x3f\x82\x67\x2a\xf5\xcf\x9d\xd9\x58\xfe\xe4\xa9\x1d\xec\xb4\x54\x28\xd5\xa6\xbb\x48\x0d\xb7\x75\x27\x29\xf3\xdb\xde\x4d\x4a\x5c\xdf\x51\x55\xfd\x1f\xb2\x36\x64\x6e\xed\x66\x58\x0d\xe5\x13\x09\xd2\xe7\xbd\x81\x7d\xc4\x7e\x3f\x4b\x66\x6f\x5b\xfe\x2a\xad\x4b\xf2\xac\x51\x99\x68\x2e\x49\x92\xc7\x6f\xe0\xd0\x57\x9f\xbc\xa2\x2a\x3b\x1b\x97\x53\x7d\xcf\x17\xd2\xf2\xbc\xa9\x88\x62\xa7\x53\x27\x23\x87\x86\xb3\xa7\x42\xa2\xe5\xc3\x72\xed\x48\xee\x9f\x8b\x25\xb0\x88\xaf\x73\x49\x92\x4e\x37\x6f\x81\x17\x41\xb4\xdc\x29\x65\xa9\xd8\x94\xad\x1c\x6c\x2b\x51\x69\x7c\xdb\xd6\x27\x85\x75\xe3\x2b\xeb\xb6\xd0\xf6\x74\xcf\xeb\x49\x77\x76\xa5\x96\x03\x38\xac\xdb\x37\x8b\xde\xbe\x79\x55\x21\xec\x7a\xeb\xd6\x00\x79\x9f\xbd\xaf\x3e\x1c\x2c\x59\xc0\x75\x70\x8c\x91\xfd\x21\xda\x7c\x8e\xf1\xbc\xf0\x3c\xe2\x28\xa5\x9c\xe6\xff\xf6\x01\xdb\x97\xc4\xaf\x74\xf5\x52\x48\x61\x2a\xad\x71\x7a\x39\x07\xc9\xed\x62\x8a\xf8\xa1\x34\x18\x07\x63\xad\xb4\xde\xe2\xe2\xfe\x98\x5c\xa7\xcf\x1a\xc9\x23\x4a\xe7\x3a\x15\xad\x55\xce\x28\x7c\x21\x90\x46\x61\x6b\x8c\xce\x22\xb1\x78\x21\x94\x30\x95\xd6\x38\x5d\x45\xfe\x8b\x59\xff\x65\x2e\xad\x91\x52\x3f\x0f\x78\xb6\xa0\xac\xfd\x72\x14\xdb\xbb\x64\xf9\x8b\x8d\xbd\xed\x8d\xad\xd7\xfb\x07\x01\xc4\xfc\x15\x84\xc1\xc5\xfa\x89\xc6\xbe\xf0\xe8\x77\x90\x07\x81\x26\x7f\x87\x6b\x60\x29\x7e\x65\xb1\x2f\x24\xd6\xfb\x95\x83\xa0\x62\xbc\x4b\x33\xc0\x98\x2f\x2f\xf7\xb7\x0f\x3c\x28\x30\x35\xa7\x8b\x4f\x3e\x5a\x2c\x23\x79\x47\xfd\x34\x3e\x14\x20\x32\xd8\xca\xe6\x58\x5f\xdd\x1f\x96\x5f\x78\x74\x38\x58\x64\xb0\x15\x2c\xfa\xea\x93\x0f\xa2\xa5\x95\x8d\xc7\xd0\xf9\xb9\xab\x92\x54\x47\xd0\x3b\x9f\xc6\xea\x73\xb8\xc6\xe3\xe7\x56\xcf\x64\xf5\xe1\x73\x91\xba\x3e\x7a\x56\x91\xd9\x07\xcf\xf6\xe1\xd8\x8e\x39\x5b\xc7\x6b\x8d\x99\x1b\x52\xed\xe7\x6f\x38\x6b\xa4\x90\xc9\x68\x16\xc5\xd3\xea\x6e\x6f\x22\x8b\x47\xdd\xa6\x77\x91\x4a\xa0\xe5\xe4\x0b\x3f\xf5\x79\xe3\xb0\x4e\x59\xf7\xa0\x5d\x72\x36\x3b\x58\x7d\xd2\x5a\xa2\xe5\xac\xb5\xa3\xfa\xb4\xe5\xb8\xce\x5b\x37\x99\x5d\xf2\x36\x5b\x54\x7d\xde\x5a\xa2\xad\xbc\x8d\xe6\xb9\xe5\x3b\x18\xa9\xa1\xdf\xc1\xd4\x1a\xf8\x21\xef\x9f\xab\xaf\x63\x6a\x63\xf9\x18\x71\x7a\xbb\x20\xcf\xfa\x24\xe3\x87\x2e\x67\xda\xd4\xc6\x35\xcd\xaa\x6d\x53\xa7\xd0\xf8\xc5\xa0\x9c\x0b\xd6\x7f\xe6\x57\xc1\xbb\x2b\xda\xef\x61\xb5\x6e\x66\x89\xb3\x42\x72\x17\x88\x6b\x23\xeb\x4f\x5b\x3e\x80\xfd\xc5\x79\xef\xed\x61\xab\x29\xf7\x4d\x4f\x13\x7f\x71\xee\x7b\x7b\x72\x68\xca\xfd\xc5\x57\x3b\x06\xfb\xde\x9f\xd3\x9b\x34\xd8\xe9\x8b\x94\x5c\xb7\x69\x61\xcb\xc7\x5b\x5e\xce\x73\x37\xdf\xff\xc8\xd0\x48\x56\x2b\x21\x85\xab\xc8\xdf\x99\x42\xae\xdb\x44\x21\x1f\x6f\x99\x42\xee\xe6\xfb\x14\x8c\x64\xb5\x92\xfc\x40\x29\x60\x34\xdc\xf8\xe3\xbd\xc6\x6f\x93\xa4\x66\xe3\x67\x49\x72\xd4\x89\x62\xf9\xad\x79\x79\x55\x76\xe5\x07\xe5\x27\x79\xe2\x1e\x09\x02\x95\x77\xa1\x50\xf9\x4d\xa3\x9b\x7d\x2b\x9d\x1d\xb7\xa1\xb2\xf5\xde\xfa\x74\x3c\x72\xdc\xcc\x44\x47\xc9\x74\x7a\xf9\x77\x43\xdd\xb2\x15\xaa\x2a\x61\xa3\x19\x14\xe2\xd9\x67\xcf\x79\xe5\x54\x0c\x85\x0a\xe6\x46\x43\x28\xa4\x0c\xe5\xf0\x2b\x86\x62\xfb\xcb\xd7\x8d\xf6\x98\x94\xca\x34\x3a\xbd\xf2\x47\xb3\xdd\xca\x41\xb7\xdb\xf4\x21\xb3\x9c\x23\xab\x78\xb2\x4b\x58\x39\xff\x0d\x00\x00\xff\xff\xc2\x09\xe3\x7b\x6c\x42\x00\x00") func jsApiJsBytes() ([]byte, error) { return bindataRead( @@ -243,7 +240,7 @@ func jsApiJs() (*asset, error) { return a, nil } -var _jsBrowserJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\x94\xc1\x6f\xb3\x46\x10\xc5\xef\xfe\x2b\x9e\x38\x39\x91\x6b\xa7\x51\x0f\x55\xac\x1c\x88\x43\x1d\x54\x07\x22\x83\x93\xe6\x14\xad\x61\x8c\xb7\xc1\xbb\xdb\x65\x09\xb1\xaa\xef\x7f\xff\xb4\x04\x2f\x38\x9f\x6f\xf3\xde\x8f\xe1\x31\x33\xb2\x57\x57\x84\xca\x68\x9e\x19\x6f\x3e\x9a\x5d\x8e\x70\x89\x85\x54\x47\xcd\x8b\xbd\xc1\x78\x71\x81\xeb\xab\xdf\xff\xc4\x9a\x72\x3c\x30\x33\x41\x28\xb2\xe9\x08\x2d\xb6\xe2\x19\x89\x8a\x72\xd4\x22\x27\x0d\xb3\x27\xf8\x8a\x65\x7b\x3a\x39\x13\x3c\x93\xae\xb8\x14\xb8\x9e\x5e\x61\x6c\x01\xaf\xb3\xbc\x8b\xb9\x6d\x71\x94\x35\x0e\xec\x08\x21\x0d\x6c\x10\xb3\xe7\x15\x76\xbc\x24\xd0\x67\x46\xca\x80\x0b\x64\xf2\xa0\x4a\xce\x44\x46\x68\xb8\xd9\xb7\xef\xe9\xba\xd8\x24\x78\xed\x7a\xc8\xad\x61\x5c\x80\x21\x93\xea\x08\xb9\x1b\x70\x60\xa6\xcb\x6c\x7f\x7b\x63\xd4\xcd\x6c\xd6\x34\xcd\x94\xb5\x79\xa7\x52\x17\xb3\xf2\x0b\xad\x66\xab\x70\x11\x44\x49\xf0\xdb\xf5\xf4\xaa\x7b\x68\x23\x4a\xaa\x2a\x68\xfa\xaf\xe6\x9a\x72\x6c\x8f\x60\x4a\x95\x3c\x63\xdb\x92\x50\xb2\x06\x52\x83\x15\x9a\x28\x87\x91\x36\x73\xa3\xb9\xe1\xa2\x98\xa0\x92\x3b\xd3\x30\x4d\xb6\x4d\xce\xed\x9c\xb7\xb5\x39\x1b\xd9\x29\x22\xaf\xce\x00\x29\xc0\x04\x3c\x3f\x41\x98\x78\xb8\xf3\x93\x30\x99\xd8\x26\x2f\x61\xfa\x10\x6f\x52\xbc\xf8\xeb\xb5\x1f\xa5\x61\x90\x20\x5e\x63\x11\x47\xf7\x61\x1a\xc6\x51\x82\xf8\x2f\xf8\xd1\x2b\xfe\x0e\xa3\xfb\x09\x88\x9b\x3d\x69\xd0\xa7\xd2\xf6\x0b\xa4\x06\xb7\xc3\xa4\xbc\x9d\x5c\x42\x74\x16\x61\x27\xbf\x22\x55\x8a\x32\xbe\xe3\x59\xc9\x44\x51\xb3\x82\x50\xc8\x0f\xd2\x82\x8b\x02\x8a\xf4\x81\x57\x76\xa7\x15\x98\xc8\x6d\x97\x92\x1f\xb8\x61\xa6\x95\x7e\xf9\xac\xee\x56\x66\xa3\x78\xfb\x2f\x65\x66\x9a\xd3\x8e\x0b\x7a\xd2\x52\x91\x36\xc7\x31\x7d\x2a\xa9\x4d\x35\x81\xf7\xf6\x46\xd5\xa3\xcc\xeb\x92\xbc\x09\xfe\xc7\x07\x2b\x6b\xba\x81\xd1\x35\xe1\xc7\xc5\x7c\xf4\xc1\x34\x98\xe2\x2b\xbe\xc5\xed\x69\x11\x63\x6f\x3a\x63\x8a\xdb\x53\x6a\xb8\xc8\xa5\x5d\x27\xc7\x6d\xc7\x39\xf1\x91\x0c\xcb\x99\x61\xce\x71\x8a\x43\xa2\xa0\x37\xa3\xc0\xc9\xcb\xb4\x97\x97\xa9\x93\x57\x03\x79\x95\x0e\xe8\x60\x88\x07\x03\x3e\x18\x3e\xd0\x1b\xe1\xd3\xf3\x1f\x6b\x3f\x5a\x0e\x6c\x27\x39\x68\x1d\x2c\x83\x7f\x7a\xa0\x2d\x9d\x69\xaf\x21\x8c\x7a\xf7\xab\x3e\xb3\xed\xb1\x9c\xf9\xf1\xa6\xcf\x1c\x46\x49\x78\x3f\x7c\x7d\x5b\x3b\x3b\xde\xa4\xe7\x7e\x27\x38\xe0\x2e\x48\x5f\x82\x60\x10\xa0\x13\x1c\xe0\x97\xa4\x4d\x6f\xb7\xa5\x33\x17\x4c\x99\x5a\x53\x6f\x77\x82\x03\x82\xbc\xa0\x75\x5d\x0e\x88\x93\xd2\xaf\x4e\xe6\xdf\x90\x93\xe2\x90\x27\x96\xbd\x93\x09\x85\x3d\x40\xfb\x67\xe4\xc8\x6f\x46\x3f\x36\xa9\xdf\x77\xa5\x6c\x06\x73\xeb\x94\xf9\xe8\x67\x00\x00\x00\xff\xff\x11\x00\xb6\x81\x30\x05\x00\x00") +var _jsBrowserJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\x54\xc1\x6e\xdb\x38\x14\xbc\xfb\x2b\x06\x3a\x14\x76\xab\x95\xdb\x60\x0f\x8b\x6a\x73\x70\x1d\x6d\x2a\x6c\x2a\x07\xb6\xd3\x6c\x11\x14\x01\x2d\x3d\xc9\x6c\x65\x92\x4b\x52\x51\x8c\x24\xff\xbe\xa0\x2c\xd1\x4e\x97\x07\x03\xf3\x66\x38\x1c\xbd\x47\x3a\x68\x0c\xc1\x58\xcd\x73\x1b\xc4\xa3\xe9\xdb\x11\xde\x62\x2e\xd5\x5e\xf3\x6a\x6b\x31\x9e\x4f\x70\xf6\xfe\xc3\x1f\x58\x52\x81\xcf\xcc\x86\x48\x45\x1e\x8d\xd0\xc9\xae\x78\x4e\xc2\x50\x81\x46\x14\xa4\x61\xb7\x84\x99\x62\xf9\x96\x06\x26\xc4\x57\xd2\x86\x4b\x81\xb3\xe8\x3d\xc6\x4e\x10\xf4\x54\x30\x89\x9d\xc5\x5e\x36\xd8\xb1\x3d\x84\xb4\x70\x41\xec\x96\x1b\x94\xbc\x26\xd0\x63\x4e\xca\x82\x0b\xe4\x72\xa7\x6a\xce\x44\x4e\x68\xb9\xdd\x76\xe7\xf4\x2e\x2e\x09\xbe\xf5\x1e\x72\x63\x19\x17\x60\xc8\xa5\xda\x43\x96\x27\x3a\x30\xdb\x67\x76\x6b\x6b\xad\xfa\x38\x9d\xb6\x6d\x1b\xb1\x2e\x6f\x24\x75\x35\xad\x0f\x52\x33\xbd\x4a\xe7\x49\xb6\x4a\x7e\x3b\x8b\xde\xf7\x9b\x6e\x44\x4d\xc6\x40\xd3\xbf\x0d\xd7\x54\x60\xb3\x07\x53\xaa\xe6\x39\xdb\xd4\x84\x9a\xb5\x90\x1a\xac\xd2\x44\x05\xac\x74\x99\x5b\xcd\x2d\x17\x55\x08\x23\x4b\xdb\x32\x4d\xce\xa6\xe0\xae\xcf\x9b\xc6\xbe\x6a\xd9\x10\x91\x9b\x57\x02\x29\xc0\x04\x82\xd9\x0a\xe9\x2a\xc0\xa7\xd9\x2a\x5d\x85\xce\xe4\x36\x5d\x7f\x5e\xdc\xac\x71\x3b\x5b\x2e\x67\xd9\x3a\x4d\x56\x58\x2c\x31\x5f\x64\x17\xe9\x3a\x5d\x64\x2b\x2c\xfe\xc2\x2c\xfb\x86\xbf\xd3\xec\x22\x04\x71\xbb\x25\x0d\x7a\x54\xda\x7d\x81\xd4\xe0\xae\x99\x54\x74\x9d\x5b\x11\xbd\x8a\x50\xca\x43\x24\xa3\x28\xe7\x25\xcf\x6b\x26\xaa\x86\x55\x84\x4a\x3e\x90\x16\x5c\x54\x50\xa4\x77\xdc\xb8\x99\x1a\x30\x51\x38\x97\x9a\xef\xb8\x65\xb6\x2b\xfd\xef\xb3\xfa\xbb\x32\x1d\x3d\x30\x8d\xfb\x7b\x66\x0c\xaf\x04\xce\xdd\x65\xe0\x06\x6f\xde\x74\x13\x8f\x06\x62\x82\xe7\x67\x2c\x36\x3f\x28\xb7\x51\x2f\x7d\x7e\x46\xd9\x88\xdc\xd9\x8f\xed\x04\x4f\x23\x37\x41\x17\x74\xec\x1c\x4d\x08\x8e\x73\x7c\x08\xe1\x4c\x99\xae\x9a\x1d\x09\x6b\xa2\x9a\x44\x65\xb7\x31\x38\xfe\x84\x88\xc1\xdf\xbd\x1b\xb6\xba\x65\x4e\xb5\x77\xfc\x7b\xec\x19\x6f\xac\xdc\x14\xcd\x04\xbc\xc4\xb8\x0f\xa4\xb4\xb4\xd2\xee\x15\x45\x5b\x66\x16\xad\xb8\xd6\x52\x91\xb6\xfb\x28\x67\x75\x3d\x36\x21\xd4\x64\xe2\x8d\xdc\xb2\x77\xea\x3b\xce\x61\xee\x54\x7f\xc2\x4b\xf7\xab\xc9\x36\x5a\xc0\xc6\xa3\x97\x78\xd4\x7b\x17\x54\x72\x41\x83\xe3\x98\x1e\x95\xd4\xd6\x84\x08\xee\xef\xc9\x7c\x91\x45\x53\x53\x10\xe2\x09\x0f\xac\x6e\xe8\x23\xac\x6e\x08\x2f\x93\xb8\xeb\x6a\xc5\x94\xeb\x41\x7f\x3b\xc7\x41\x14\x4d\x2b\xcd\xca\x92\x5b\x3e\xfd\x61\xa6\x4c\xf1\xa0\x57\x9a\x5f\x95\xa7\xe4\x81\x1b\x26\x31\x7e\x7a\x09\x3b\xe7\xb0\xdb\x35\x89\x47\x2d\x17\x85\x74\x2f\xc6\xc9\x98\xe2\xbe\xf2\x85\x2c\x2b\x98\x65\x38\xef\x36\x78\xec\x05\x59\x32\x50\x59\xe2\x8b\x97\xeb\xa1\x78\xb9\xf6\xc5\x2b\x5f\xbc\x5a\x9f\x28\x93\xa3\x34\x39\xd1\x26\x47\xf1\xb1\x9c\x5e\x7f\xfd\x7d\x39\xcb\x2e\x3d\xe9\x0b\x5e\xb2\x4c\x2e\x93\x7f\x06\xba\x03\x9e\x72\xaf\x2b\xcd\x06\xee\x80\x5e\x91\xee\xe9\x9d\xb0\x8b\x9b\x63\xce\x34\x5b\xa5\x17\xc7\x63\x3b\xe4\xc9\xc5\xcd\xfa\x94\xed\xa1\xa7\x3f\x25\xeb\xdb\x24\xf1\x07\xf7\xd0\xd3\xb3\x9a\xb4\x1d\xc8\x0e\x1c\x43\x49\xfd\xb3\xac\x65\xeb\x53\xf5\xd8\x0b\xe6\x4c\xd9\x46\xd3\x61\x68\x03\xf2\x6c\x52\x54\xb4\x6c\xea\x81\x1e\xe0\x71\x76\xb2\x38\xe5\x07\xe8\xf9\x6b\x96\xff\x24\x9b\x0a\x77\x8b\xdd\x1f\xfd\x41\xf6\x4b\x35\x1e\xfd\x17\x00\x00\xff\xff\xd1\x30\xa0\xde\x66\x06\x00\x00") func jsBrowserJsBytes() ([]byte, error) { return bindataRead( @@ -263,66 +260,6 @@ func jsBrowserJs() (*asset, error) { return a, nil } -var _jsOttoJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x52\x4d\x8f\xa3\x46\x10\xbd\xf3\x2b\x9e\x7c\x82\x95\x83\x27\x73\x8a\x62\x71\x70\xbc\x13\x2d\xca\xca\x8e\x86\xd9\xac\x56\xab\x3d\xb4\xa1\x80\xca\x36\xdd\xa4\xbb\x31\x8b\x46\xfe\xef\x51\x63\xf0\x47\xe6\x18\x2e\x56\x57\xbd\x7a\xf5\xde\x2b\xaf\xde\x05\x78\x87\xad\x6e\x07\xc3\x55\xed\x10\x6e\x23\x3c\x3e\xfc\xfc\x0b\x9e\xa9\xc0\x07\xe1\x96\x48\x55\x1e\x07\x18\x61\x1f\x39\x27\x65\xa9\x40\xa7\x0a\x32\x70\x35\x61\xd3\x8a\xbc\xa6\xb9\xb3\xc4\x5f\x64\x2c\x6b\x85\xc7\xf8\x01\xa1\x07\x2c\xa6\xd6\x22\x5a\x7b\x8a\x41\x77\x68\xc4\x00\xa5\x1d\x3a\x4b\x70\x35\x5b\x94\x2c\x09\xf4\x23\xa7\xd6\x81\x15\x72\xdd\xb4\x92\x85\xca\x09\x3d\xbb\x7a\xdc\x33\xb1\x78\x25\xf8\x32\x71\xe8\x83\x13\xac\x20\x90\xeb\x76\x80\x2e\x6f\x70\x10\x6e\xd2\xec\xbf\xda\xb9\xf6\xd7\xd5\xaa\xef\xfb\x58\x8c\x7a\x63\x6d\xaa\x95\x3c\x43\xed\xea\x63\xba\x7d\xda\x65\x4f\x3f\x3d\xc6\x0f\xd3\xd0\x27\x25\xc9\x5a\x18\xfa\xa7\x63\x43\x05\x0e\x03\x44\xdb\x4a\xce\xc5\x41\x12\xa4\xe8\xa1\x0d\x44\x65\x88\x0a\x38\xed\x35\xf7\x86\x1d\xab\x6a\x09\xab\x4b\xd7\x0b\x43\x9e\xa6\x60\xeb\x0c\x1f\x3a\x77\x17\xd9\x2c\x91\xed\x1d\x40\x2b\x08\x85\xc5\x26\x43\x9a\x2d\xf0\xdb\x26\x4b\xb3\xa5\x27\xf9\x9c\xbe\x7c\xd8\x7f\x7a\xc1\xe7\xcd\xf3\xf3\x66\xf7\x92\x3e\x65\xd8\x3f\x63\xbb\xdf\xbd\x4f\x5f\xd2\xfd\x2e\xc3\xfe\x77\x6c\x76\x5f\xf0\x47\xba\x7b\xbf\x04\xb1\xab\xc9\x80\x7e\xb4\xc6\x3b\xd0\x06\xec\xc3\xa4\x62\x4c\x2e\x23\xba\x93\x50\xea\xb3\x24\xdb\x52\xce\x25\xe7\x52\xa8\xaa\x13\x15\xa1\xd2\x47\x32\x8a\x55\x85\x96\x4c\xc3\xd6\xdf\xd4\x42\xa8\xc2\xb3\x48\x6e\xd8\x09\x37\x96\xde\xd8\x9a\xfe\x2b\xab\x20\x38\x0a\x83\x4a\xea\x83\x90\x16\xc9\x78\xe8\xf5\x58\xcb\x25\x93\x72\x48\xa0\xa8\xc7\x76\x7c\x84\xd1\x3a\x08\xca\x4e\xe5\x9e\x74\x8e\x3d\x6c\x22\xbc\x06\xfe\x7e\x5c\x22\x6c\x90\x24\x09\x16\xf1\x4a\xb4\xbc\x98\x1b\xfe\xf3\x94\x8d\x2e\x3a\x49\x48\xf0\x7a\xba\xab\x7f\xa7\xc1\xef\xde\x1f\xfe\xa6\xdc\xc5\xfe\x15\x4e\x8a\xa2\x0b\xce\x67\x10\x7a\x30\xfb\x3b\x7a\xcc\x2d\xfb\x0d\x13\x92\xb1\xfb\x95\xbf\xdd\x75\xcf\xbb\xbf\x7e\xa7\xe1\x1b\x92\xd9\xf0\xf8\xbc\xc0\xae\xa2\x0c\xb9\xce\xa8\x69\x66\x1d\x5c\x9b\x53\xe3\xf5\x14\x9c\xce\xc9\x89\x96\x91\x5c\xa2\x98\x7d\xaf\x83\xe0\x4f\xa3\x1b\xb6\x14\xb7\x46\x3b\xed\x86\x96\xe2\x92\x95\x90\xd2\xeb\xbb\x44\x18\x96\xb3\x89\x89\xd8\xc7\x1f\xbb\x9a\x54\x78\xc5\x1c\x85\xec\xe8\x6a\x76\x42\xce\xfc\x86\xac\x96\x47\x0a\xcb\x30\x8a\xfe\x3b\x79\x9b\xd0\x34\x36\x92\xad\xa7\xea\x29\x9a\xbc\x2d\x6f\x24\x91\x31\xff\x7b\x99\xab\x8d\xee\x41\xc6\xbc\xd9\x34\xfe\x9e\xd6\xc1\xbf\x01\x00\x00\xff\xff\x46\x24\x1d\xc7\xd1\x04\x00\x00") - -func jsOttoJsBytes() ([]byte, error) { - return bindataRead( - _jsOttoJs, - "js/otto.js", - ) -} - -func jsOttoJs() (*asset, error) { - bytes, err := jsOttoJsBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "js/otto.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _jsPromise704MinJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x57\x51\x6f\xdb\x38\x12\x7e\xbf\x5f\x21\xeb\x00\x2f\x89\x30\x8a\x9d\xb4\xbb\xa8\x54\xae\xb1\xd8\xb6\xc0\xe1\xb6\xed\xa1\x68\x71\x0f\x86\x51\x28\xd2\xb0\x66\x57\x21\xbd\x24\x15\x37\xb0\xf5\xdf\x0f\x43\x4a\x94\x9c\xb8\x8b\xde\x8b\x2d\x71\x66\xc8\xe1\xcc\x37\xdf\x8c\x66\xa2\x55\x95\x93\x5a\x25\x8a\x38\x06\xcc\xd0\x43\x5c\xd1\xa4\x65\x82\x1e\xa4\x20\x33\x58\xb7\x9b\xf0\xe4\xfc\xd3\x7d\x69\x92\x8a\xa7\x83\x6a\xca\xb9\x7b\xd8\x81\x16\x89\x81\xbf\x5a\x69\x60\x3e\xef\x1f\x0a\xb4\x11\xf3\x79\x45\x0d\xb8\xd6\xa8\xa4\x22\x2d\x9b\x2d\x28\xae\xcb\x61\x4d\xf6\x6b\xb8\xab\xe5\x0a\xf6\xc9\x6b\x63\xb4\x21\xe9\xef\xa5\x52\xda\x25\x42\xaa\x3a\xb9\xd3\x75\xdb\x40\xf2\x53\x7a\xd1\x5e\xa4\x3f\xa5\xb4\x70\x5b\xa3\xf7\x89\xcd\x2a\x5d\x03\x4f\xdf\xbe\x7f\xf5\xe9\x8f\xd7\x9f\xdf\xbd\xff\xf8\xf9\xcd\xfb\x4f\xef\x5e\xa5\xcc\x76\xb8\x5f\xc3\xd1\x77\x7e\x80\x6f\x3b\x6d\x9c\xcd\x0f\x5d\x57\xe0\x1d\xd6\x8b\x4d\x56\x95\x4d\x43\x9a\xac\x17\xb1\xe1\x36\x44\x85\x0b\x02\xf7\x8a\xcb\xcd\x5a\x6d\x8a\xde\x55\x4d\x60\x05\xb9\xa2\x1d\x6b\xd8\x68\xa9\x58\x88\x5d\xd7\x6b\xe1\x91\x83\xb0\x13\xda\x10\xdc\x4e\xfe\x48\xbc\x58\xcb\x17\x45\xfb\xd2\x64\x0d\xa8\x2f\x6e\x5b\xb4\x17\x17\x54\x13\x83\x41\x8f\x2e\x74\xe4\xb0\xcc\xd7\xa3\xb7\x78\x38\x3d\xa4\xad\x85\xc4\x3a\x23\x2b\x97\x16\x31\x87\x86\xd0\x43\x37\xc9\xa8\xa2\x07\x67\x1e\x0e\xfd\x56\x2a\x73\x5b\x50\x5d\x55\xba\x6a\x4b\x1c\x1d\x96\x6b\xee\xd8\xbe\x1b\xcd\x24\x9e\x71\x6a\x48\x1c\xed\xcd\x60\x62\x06\x27\x66\xed\xe0\x1a\x1a\x7a\x78\x0d\x36\x66\x62\x63\x4e\x6c\x04\x7a\x28\x05\x49\xf5\xed\x57\xa8\x5c\x3a\x1b\x02\xe5\xb6\xd2\xd2\x90\x72\x04\xc8\xc7\x87\x1d\xf4\x20\xf9\x8f\xd1\x77\xd2\x82\x4d\xee\x5a\xeb\x92\x5b\x48\x2a\xad\xac\x33\x6d\xe5\xa0\x4e\xee\x65\x89\xfa\xa9\x07\xdc\x18\xff\xb8\xad\x3a\xbf\x27\xa2\xae\x4c\xa2\x3a\x82\x4d\xda\xec\xf3\xcd\x2f\x7c\xc1\xc2\xe3\xf2\x9a\xab\xb6\x69\xfa\xb7\xe7\x2f\xf8\x7a\xc3\xd4\x8c\x73\x33\x9f\xdf\xe3\xbd\xd1\xdd\xf1\x5a\xd5\x10\x8a\x21\x7e\xb0\x4f\x54\x16\x1d\xd5\x86\xc4\x74\x6a\x26\x03\xfc\x5a\x5f\x09\x82\x18\x5a\xb4\x3e\x4f\x5e\xc4\x2c\x51\x0c\x05\x3b\x5f\xaf\x2d\xa5\xdd\xe4\x1c\x1b\x32\x85\x90\x2b\x6e\x38\xe7\x0a\x7d\x2e\xa8\xc2\x87\xe5\xf5\x80\xa0\xc5\x20\x59\xdd\x6b\x59\x27\x0a\xfd\xcf\x76\xad\x45\x0c\xe4\x7e\xe9\x61\xf4\x67\xa8\x85\x65\x34\x72\x99\x56\x6f\xda\x46\xc8\xa6\x81\x3a\xc7\xb7\x0f\x80\xc9\x82\x1a\x83\x8c\x51\xe1\x9c\xc3\x50\xdc\xb8\x1f\x19\x8d\x1b\xe2\xb2\x5d\xc8\x18\xf3\x4e\xd1\xbc\x7c\xb2\x14\xa8\xc0\x70\x49\x86\x95\xc2\x70\xce\xf7\xab\xa9\x6a\x4d\xf3\xe9\x66\xe6\x24\x10\x4d\x08\x84\x14\xc4\xe1\xd1\x83\x33\x65\x1f\xbc\x49\xaa\x7f\x4b\xfa\x1d\x92\x2a\xb0\xcd\x2d\x24\x06\xac\x6e\xee\xa1\x4e\xf6\xd2\x6d\x13\xe9\x2c\x34\x22\x4b\xa9\x07\x91\x9b\xcf\x23\x3a\x63\x19\xbb\xe3\xf1\x4c\x71\x3b\x3a\x04\x4f\x13\xe7\x8d\x01\x6f\x31\x75\xa6\x8e\xcb\xa1\x16\xe7\x73\x97\x48\x65\x5d\xa9\x2a\xdc\x41\xd0\x58\xa9\x08\xbe\x9b\x10\x0d\xee\x98\xcf\xd2\x96\xa8\x47\xb8\x8e\x47\x9f\x84\x3f\xb9\x27\x90\xdd\x4a\x55\x13\x47\x99\xa2\x5d\xd8\x6c\x19\x37\xc3\x7d\xc6\xd0\x95\x21\x74\x41\xe9\xfa\x3b\x4a\xf8\x76\x18\x98\xcd\xf1\x45\xe1\x5e\x06\x18\xf5\xbc\xe5\x2e\x2e\xa8\x47\x2a\x2e\xae\xdd\x86\x16\xfe\xc9\xd7\xcc\xb8\xcb\x2e\x32\x04\x56\xd1\x04\x55\xe7\xa8\x52\xad\x54\x3e\x96\xdc\x08\xba\x73\xba\x6e\xe5\x26\xba\x7d\x82\x39\x8c\x27\xdf\x87\x4b\x86\xec\xcc\x96\xcc\x70\x64\xab\x69\x07\x80\xe3\x91\x00\x9f\x2d\x58\x43\x1c\x53\x94\x76\xe7\xa5\x65\x2f\xa5\x05\x1c\x8f\x66\xc6\xf9\x7e\x2a\xa9\x29\xf5\x5d\xe8\x81\x2b\x92\x96\xb6\xdc\x5d\x99\x72\x9f\x52\x56\x07\xf2\xd8\xf3\x43\x57\xb8\xa1\x53\x70\xc1\x44\xf6\xf9\xc5\x0b\x6e\x98\x40\x9f\x9d\xc6\xdb\x78\x58\xf0\x29\xdb\x07\x58\xe3\xc5\x26\x04\x32\xe3\x5c\x8c\x3d\x16\xa5\xd8\x95\x42\x21\xc1\xc8\x24\xbd\x86\xed\x35\x3c\x8f\x84\x1c\x50\x06\x5d\xc7\x0e\xa3\x97\xf9\xb3\x6e\xc3\xae\x7f\xbc\xd1\xf4\x5d\xd3\xf9\xc3\x34\xd1\x78\x95\x78\xa0\xeb\x21\xe7\x02\x73\x32\xe7\xc3\xa2\x31\x2c\xd9\x55\xa5\x0d\x64\x5f\x2d\xd2\x6c\x8c\x85\x2e\x42\xcf\x34\x64\xb6\xa0\xac\xc5\xff\x25\x65\x82\x1b\x4f\x30\x94\x55\xdc\x10\x8f\xed\x05\x65\x96\x1b\xb2\xa0\xac\xe1\x86\xa4\x29\x2d\x74\xd6\xd7\x2f\x9f\x66\x0c\xa9\x69\x5a\x5a\x3a\x96\xd6\x84\xb5\x22\x51\x08\x5c\x0c\xfb\x4f\x97\x2b\xaf\xcb\x39\x9f\x2d\xe2\xf0\x12\x97\x96\xc3\x52\x8b\x4b\x27\x76\xd6\x97\x69\x3a\x5d\x6a\x8a\x49\x9b\x1b\x41\x7e\x96\x48\x14\xc5\x16\xda\x47\xd7\x03\xe2\x3b\x65\xef\xe8\xa4\xc1\x68\xe2\x42\xd5\x23\x3e\x1f\x37\xeb\xa0\x70\x0a\x2b\x47\x00\x49\xb4\xd7\xc0\x8c\x76\x4c\x67\x65\xd3\xf0\xc7\xa3\x91\xe3\xbf\x19\x53\x3e\x4c\x50\x6a\x1b\x59\x41\x98\xa8\x54\xcc\xfa\x93\x43\x60\x32\x5e\x9a\x38\x5e\x8a\x73\x94\x2a\xce\x46\x42\xd0\x60\x71\x92\xc9\xf9\x5c\x84\x2a\xe1\x5c\x3f\x2a\x9c\x49\x2f\x14\xa1\x17\x0a\x7c\x18\x7b\xe1\x72\x90\xac\xbc\x3f\xa1\x23\x91\xeb\x61\x75\x3e\x07\x12\x16\x03\xe5\x86\x83\xc8\x34\x1e\x68\x87\x91\x82\xbe\xd6\x2b\x2e\xfe\x2e\x45\x55\x88\xa0\xed\xcb\xa4\x0a\x29\x12\x34\x06\xcd\x9f\x63\xff\xee\x9c\xae\xc3\xc1\x94\x0b\x86\x18\xbb\xbc\x94\xf3\xb9\x9f\xc7\x7a\xd0\xb9\x9e\x83\x23\x14\xc8\x7a\x43\x8b\x71\x0a\x1d\xe4\xfd\xa8\xe9\xa6\xa3\x26\x9e\xe1\x27\xfc\xce\xa7\xde\x78\x8a\x3d\xc9\xfe\xf9\xcc\x7a\x62\x00\x04\x4c\xb0\x2b\x2b\xf8\x51\x2b\x95\x09\x6d\x5e\x97\xd5\xf6\xe4\xb2\xb1\x86\x89\xa2\x21\x14\x7e\x7c\xec\xf7\x8f\x39\x5e\xa7\x1e\xd7\xe9\xe6\xdc\x69\x9e\x22\xbd\xad\x27\x5b\x45\x3d\xbf\x8d\x74\x93\x2f\xbb\x0d\xbb\xf9\x7f\x26\x69\x29\x48\x35\x44\x37\xcc\x8d\x55\x66\xb7\x52\x38\x42\x1f\x0d\xd9\xbe\x48\x0a\xc7\x45\xaf\xbe\x12\xd9\x4e\xef\x08\xcd\x31\x04\x92\xb9\xcc\x95\xf6\x4f\xae\x58\x8b\x89\x9b\x0c\xda\x7d\x2b\x0c\x52\xec\x95\xfd\x24\x88\x34\x19\x5a\x87\xc0\x49\xb3\xc2\x1f\xcb\xdb\xec\xae\xfc\x13\x3e\xc0\x5f\x2d\x58\xf7\x7b\xd9\x34\x6f\x8c\xbe\xfb\x28\xef\xc0\x20\xd7\x4f\xc8\x94\xc9\x49\x5d\x54\x27\x15\x1d\xc6\xf3\x78\x6a\x28\xe1\x81\x2f\x7c\x26\xb4\x02\x1c\x95\x56\xf1\x89\x28\x9a\x93\x2a\x4c\x8c\x0a\x27\x52\x4a\x3b\x21\x55\xd9\x34\x0f\x8f\xdc\x67\x62\x3d\x44\x60\xc3\x51\xd4\xf5\x39\x88\x0d\xe6\xd9\xd3\xf8\x9f\x00\xe1\x7c\x32\xc0\x8f\x1f\xfd\xce\xc7\x23\x69\x09\x76\x04\xec\x14\xd3\x03\x55\x77\x92\x3d\xcf\x04\xf6\xe5\x20\x2f\x42\x96\x14\xf7\xe4\x6c\x2f\xf8\x92\x89\xb5\xea\xbf\x0a\x29\xb3\xbf\x36\x27\x13\x0e\x83\x98\xcc\x4b\x5b\xc0\xaf\xce\xcf\x38\x62\xed\x36\x5c\xac\xdd\x85\xdd\x14\x51\xcc\x2d\xb3\x7c\xd1\x75\xc3\x02\x5f\xe0\x3b\x3a\xb8\x3c\x07\x13\xbe\x64\xa1\x43\x97\x18\x4d\xc3\x6b\x5d\xb5\x77\xa0\x5c\x56\x19\x28\x1d\x7c\x84\x6f\xee\x9d\xae\xc1\xf7\xb6\xe1\x03\x33\xd3\xb7\x16\xcc\x3d\x10\xc3\x0e\xd5\xb6\x34\x65\xe5\xc0\xbc\x2a\x5d\x99\xcf\x16\x1d\x65\xd3\xec\xf2\x4b\xc7\x4c\x56\x97\xae\xe4\xee\xf4\xa3\x2e\x56\xca\x44\x3d\xca\x1d\xa1\x87\xaa\x81\xd2\x20\x9e\x74\x8b\xbd\x81\xf9\xf7\x7f\x29\x07\xe6\xbe\x6c\x88\xa1\x4c\x91\xc0\x79\xc0\x2d\xb8\x41\xd1\xb1\x05\x5e\xc3\x82\x8b\xaa\x8e\x3d\x5f\x20\x6d\x45\x44\x82\x6f\xef\xed\x80\xe6\xd9\xd2\x47\xa8\xe1\xcb\xc5\xf5\x33\x56\x72\x95\xbd\x6d\x5d\x89\x7e\xbc\x0f\xf7\x34\xc7\xa3\xca\xfe\x0b\xb7\xff\x96\xee\xb1\xa4\x68\xcf\x4d\x80\xe5\x4a\x13\x43\x73\x89\x5e\x42\x66\x42\x89\xbc\x69\x5a\xbb\xe5\x2d\x83\xef\xd6\x0d\x97\x1d\x0d\x08\xf0\x03\x52\xda\xaa\x1a\x84\x54\x50\x8f\x9f\x8c\x5f\x1a\x7d\x5b\x36\xab\xf0\x97\x9f\xd3\xc0\xcf\x85\x15\xfe\x9c\x95\xee\xa5\xaa\xf5\x7e\x15\xfe\xf2\x03\x32\xda\xa1\xdb\xb0\xe7\x67\x88\xe8\xe9\xf7\x6a\xff\xb1\x3b\xa9\xe6\x5a\x2b\x98\xcf\xc9\x79\xc1\xa3\xb9\x31\xa4\xaa\x34\x5f\x3c\xbe\xec\xc0\x4d\x91\x28\xb3\x72\xb7\x6b\x1e\xc2\xd5\xa3\x16\xcd\xf1\xbd\x80\x09\x95\x4e\x0b\x74\x92\xf8\x29\xea\xc2\x57\x75\xc7\x16\x3d\x69\xe3\x15\x7f\x7e\x7a\xc5\x7e\x2c\x4e\x69\x31\x09\x15\x7f\x74\xdb\xf1\x7a\x81\x08\x1b\x79\x3b\xce\x8c\x2c\x2e\x81\xfd\xf9\x12\xbe\x39\x50\x56\x6a\x65\xbd\xb0\x97\xee\x74\xf3\x80\x1f\x16\x97\x18\x13\x2f\x08\x2c\x34\xdd\x28\x5f\xb2\xef\xee\x93\x5f\xb3\x73\xbb\xe4\xcf\x19\x3a\x9f\xdf\x74\x1b\xbc\x20\x5b\xff\xbc\xa1\xc5\x3f\xae\xae\xfe\x99\x58\xdd\x9a\x0a\xde\x96\xbb\x9d\x54\x5f\x3e\x7d\xf8\x83\x47\x63\x7b\xd5\x7f\x8d\x5c\xfe\x92\x2d\xb2\x67\xd9\x9d\x54\xd9\x57\x9b\xdd\x95\xbb\xff\x05\x00\x00\xff\xff\x2b\xa7\x63\xcc\x8b\x13\x00\x00") - -func jsPromise704MinJsBytes() ([]byte, error) { - return bindataRead( - _jsPromise704MinJs, - "js/promise-7.0.4.min.js", - ) -} - -func jsPromise704MinJs() (*asset, error) { - bytes, err := jsPromise704MinJsBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "js/promise-7.0.4.min.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _jsPromiseDone704MinJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8e\x5f\x4a\xc4\x30\x10\x87\xdf\x3d\x45\x5d\x61\x49\xa0\x3b\xdd\x07\x41\x70\x29\x5e\x40\x41\x44\x0f\x10\xd6\x69\x1b\x49\x66\x86\x64\xa2\x94\xd2\xbb\x4b\x14\xeb\xcb\x3e\xfe\xfe\xf0\xf1\xed\x86\x42\x67\xf5\x4c\xbb\xeb\x5e\x67\x41\x1e\x9a\xe7\xc4\xd1\x67\x04\x49\xac\x5c\x3b\x78\x67\xc2\xfd\xde\x5c\x1e\xfa\x3f\x82\xd1\x96\xec\xf2\xe9\x52\xc3\xbd\x4b\x63\x89\x48\x9a\x21\x20\x8d\x3a\x3d\xe8\xe4\x33\xe8\x84\x04\x4e\x24\xcc\xa6\xe6\x76\x7b\xd9\xfb\x9a\x4f\xfc\xf3\x30\x54\x42\x68\xff\xa9\x76\xc9\xa8\xaf\x3e\x22\x17\x35\x5b\x6d\x17\x9d\x12\x7f\x35\xba\xb6\x47\xbb\xda\xd5\x9e\xae\xba\xee\xa6\xc9\x5c\xd2\x19\x9f\x9c\x88\xa7\xf1\xed\xe5\xb1\xef\x84\xc3\x3c\xf8\x10\x72\x27\xbf\xfe\x87\x6a\x7d\xb8\x83\x23\xdc\x42\xf4\x04\x1f\x19\xa2\x93\xef\x00\x00\x00\xff\xff\x38\x68\xbc\x00\x09\x01\x00\x00") - -func jsPromiseDone704MinJsBytes() ([]byte, error) { - return bindataRead( - _jsPromiseDone704MinJs, - "js/promise-done-7.0.4.min.js", - ) -} - -func jsPromiseDone704MinJs() (*asset, error) { - bytes, err := jsPromiseDone704MinJsBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "js/promise-done-7.0.4.min.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - var _rbacPolicyCsv = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x93\x51\x6e\xc3\x20\x0c\x86\xdf\x77\x8a\x1c\x20\x5a\xce\xe4\x10\x37\x63\x65\x80\xc0\x08\xf5\xf6\x53\x44\xb6\x36\x26\x26\xf4\xb1\xfa\xbe\xdf\xb6\x52\x7e\x3f\x0e\xb0\xfc\x68\x3b\x0e\x60\x30\xd0\x38\x04\x84\x65\xfb\x61\x5c\xfe\xa8\x60\x0e\x9a\xb0\xa6\x0a\x3c\xa5\x80\x52\xf8\x1f\x5f\xc6\x21\x7b\x50\x77\xa4\x78\x22\x39\x7b\xd3\xab\xb4\x42\xdb\x6f\x54\x54\xc2\x7d\x8e\x70\x8b\x57\xe0\x45\x18\x09\x28\x45\x69\x3e\x39\xef\x8c\x5b\x1f\x12\xcf\x2e\xdc\x6f\xc6\xe5\x6b\x2e\xac\xcf\x38\x47\x57\xae\x9f\x72\x9c\x60\x45\x4b\xd3\x73\x6b\x97\x5e\x16\x5c\xa8\x31\xcd\x51\x05\x3d\x63\xe8\xf3\x7d\x9a\x8d\x8e\x5f\x18\x2e\xcd\x80\xde\x68\x05\xa4\x9d\x7d\xe3\x8a\x5a\xb5\x6e\x11\x9f\x5b\x61\xc2\x37\xdc\x60\x48\xa6\x19\x2e\x5c\x18\x80\xcb\x2a\x86\x0b\x6b\x04\x5b\x9b\x9f\x5c\xfa\xfb\xf7\xf7\xf1\xa9\xc0\x18\x66\x6d\xda\x9a\x30\x12\xeb\xf1\x82\xf6\x51\xb3\x3d\xca\x20\x6b\xb1\x44\xaf\xc2\x2f\x1d\xe6\xce\xa1\xc2\x0c\x9e\x35\xb8\xa9\x9c\xdf\x71\xe8\x2f\x63\x42\x7d\x77\x2a\xd6\x77\xe7\xbc\xbe\x6c\x78\xd5\x5e\xce\xdb\xe5\xed\xb1\xcb\xf8\xb6\x59\x55\xb7\xad\xbf\x34\xb7\x2d\x1e\x8a\xdb\x7b\xc2\xdf\x47\xfc\x0d\x00\x00\xff\xff\xaa\xc1\x4c\x14\x65\x06\x00\x00") func rbacPolicyCsvBytes() ([]byte, error) { @@ -2143,7 +2080,7 @@ func staticsJsAppJs() (*asset, error) { return a, nil } -var _staticsJsBundleJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7f\x5f\xdb\xb8\xd2\x28\xfe\x3f\xaf\x62\x9a\xef\xb3\x4d\x52\xdc\x04\x68\xb7\xa7\x0b\x9b\xdd\x4b\x69\xda\xe6\x2c\x85\x5e\x7e\x74\xcf\x1e\x96\xcb\x51\x6c\x25\x71\x71\xec\xac\xed\x40\xb3\x2d\xf7\xb5\x7f\x3f\x33\xfa\x6d\x3b\x21\x50\xd8\xe7\x70\xcf\xd3\x3f\x0a\x48\xa3\xd1\x68\x34\x1a\x8d\x46\xa3\x71\x63\x30\x8d\xfd\x3c\x4c\xe2\x46\xf3\x8b\xfa\x15\xd2\x06\xf7\x62\x2f\xb7\x4a\x92\x46\xe8\x0d\x9a\x5f\xc2\x41\xe3\x51\x7c\x12\x9e\x8a\xdf\x38\xfd\x76\xc1\x52\xf0\x3b\x35\x05\x5a\xeb\x74\xf2\xd9\x84\x27\x03\x48\xf9\x1f\xd3\x30\xe5\x8f\x1f\xcb\x5f\xb6\xb0\xcd\xe0\xf1\x63\xbf\x99\xf2\x7c\x9a\xc6\xe0\x37\x42\xef\xd1\x5a\x13\xcb\xa7\xaa\x6c\x2a\xcb\x10\x2b\xeb\xc4\xfc\x12\xba\x69\x9a\xa4\x8d\xda\x0e\x8b\xe3\x24\x87\x41\x18\x07\x30\x4e\x82\x69\xc4\xa1\x5e\x5b\x0d\x57\x6b\xf5\x5a\x73\x2b\x1f\xa5\xc9\x25\xb0\x96\x9f\x04\xbc\x53\x7b\xbf\xff\xfa\x78\xb7\x7b\xb6\xb7\x7f\x74\xf6\x66\xff\x78\xef\x75\xcd\x63\x57\x88\x6f\xd2\x41\xda\x3b\x5f\xf8\xe7\x49\x92\xe6\xd9\xe6\x97\xab\xab\x2d\x1c\xc3\xc9\xda\x69\xcb\x67\x51\xd4\x98\xb4\x64\x95\xa7\xb9\x92\x8a\x01\xc6\x1d\x02\x5c\x3f\x3d\x49\x4f\xb7\x24\xa9\x49\x23\xfe\xfa\x35\x6d\x5e\x79\x13\xcf\x34\x4c\x3d\xc1\xba\x2b\x09\x84\x3d\xaa\xca\xab\x41\x92\x36\x10\xdb\x74\x19\x76\x79\x61\x67\x6d\x2b\xfc\x31\x6f\x45\x3c\x1e\xe6\xa3\xad\x70\x75\xb5\x99\x34\x72\xe4\xb9\xa6\x40\xf5\x92\x5e\x35\x1b\xcd\xc6\x97\xf5\xcd\x13\x43\xb8\xc4\x22\x78\xe5\x49\x12\x9a\x5f\x56\xf4\x8c\x43\x63\x18\x25\x7d\x16\x35\xbf\xac\xd4\xa6\x19\x87\x2c\x4f\x43\x3f\xaf\x6d\xad\xb4\x9f\xac\xc0\x13\xd8\x49\x26\xb3\x34\x1c\x8e\x72\x68\xec\x34\x61\x63\x6d\xfd\x25\x1c\xf0\x00\xde\xb1\xdc\x83\x5e\xec\xb7\x56\x80\xc0\x76\x43\x9f\xc7\x19\x0f\x60\x1a\x07\x3c\x85\x7c\xc4\x61\x7b\xc2\xfc\x11\x57\x35\x1e\x7c\xe4\x69\x86\xfd\x6d\xb4\xd6\xa0\x81\x00\x35\x59\x55\x6b\x6e\x21\x8a\x59\x32\x85\x31\x9b\x01\xce\x2f\x12\x92\x8f\xc2\x0c\x06\x61\xc4\x81\x7f\xf6\xf9\x24\x87\x30\x06\x3f\x19\x4f\xa2\x90\xc5\x3e\x87\xcb\x30\x1f\x51\x3f\x12\x0b\x52\x02\xbf\x49\x1c\x49\x3f\x67\x61\x0c\x0c\xfc\x64\x32\x83\x64\x60\xc1\x01\xcb\x25\xcd\xf8\x6f\x94\xe7\x93\xcd\x76\xfb\xf2\xf2\xb2\xc5\x88\xde\x56\x92\x0e\xdb\x91\x00\xcd\xda\xbb\xbd\x9d\xee\xde\x61\xf7\xe9\x46\x6b\x4d\x36\x3a\x8e\x23\x9e\x65\x6a\x9a\x02\xe8\xcf\x80\x4d\x26\x51\xe8\xb3\x7e\xc4\x21\x62\x97\x90\xa4\xc0\x86\x29\xe7\x01\xe4\x09\xd2\x7c\x99\x86\x79\x18\x0f\x3d\xc8\x92\x41\x7e\xc9\x52\x8e\x68\x82\x10\xf9\xdc\x9f\xe6\x0e\xcb\x14\x89\x61\xe6\x00\x24\x31\xb0\x18\x6a\xdb\x87\xd0\x3b\xac\xc1\xab\xed\xc3\xde\xa1\x87\x48\x7e\xed\x1d\xbd\xdb\x3f\x3e\x82\x5f\xb7\x0f\x0e\xb6\xf7\x8e\x7a\xdd\x43\xd8\x3f\x80\x9d\xfd\xbd\xd7\xbd\xa3\xde\xfe\xde\x21\xec\xbf\x81\xed\xbd\xdf\xe0\x97\xde\xde\x6b\x0f\x78\x98\x8f\x78\x0a\xfc\xf3\x24\xc5\x11\x24\x29\x84\xc8\x4c\x1e\x10\xe7\x0e\x39\x77\x48\x18\x24\x82\xa4\x6c\xc2\xfd\x70\x10\xfa\x11\x8b\x87\x53\x36\xe4\x30\x4c\x2e\x78\x1a\x87\xf1\x10\x26\x3c\x1d\x87\x19\xce\x69\x06\x2c\x0e\x10\x4b\x14\x8e\xc3\x9c\xe5\x54\x54\x1a\x96\x94\x95\xf6\x0a\x0a\xff\xd9\x19\xff\x9c\xf3\x38\xc8\xa0\x83\xd2\x10\x66\xf0\xf8\x31\x4d\x79\x4b\xd7\x34\xe1\xeb\x57\xb0\xe4\xb4\x09\x5f\x56\x70\xce\xb0\xb9\x00\x39\xc4\xbe\x7c\x44\xb1\xdf\xff\xc4\xfd\xbc\x95\xf1\xfc\x43\x9a\xe4\x09\x2e\xa6\xfd\x01\x7c\xfd\x4a\x0d\xf0\x5f\xe3\x0b\x9c\x9d\x4d\xb0\xee\xec\x6c\x13\x4e\x4e\xe1\x0a\xc2\x38\xcb\x51\x94\x92\x01\x6c\xa7\x29\x9b\x21\x05\xa6\xb7\xc0\x83\x7e\x13\xbe\x40\xd0\xd2\xed\xa0\x03\xfd\x2d\xb8\x6a\xda\x78\xcb\x0d\x90\x73\xb4\xbe\x27\x38\xfb\xfd\x26\x84\x03\x68\xf4\x5b\x23\x96\xed\x5f\xc6\x1f\xd2\x64\xc2\xd3\x7c\xd6\x98\x34\x9b\x10\x9c\x4c\x4e\x11\xe7\xc9\xe4\x74\x0b\xae\xb6\x08\xa7\x5c\xca\x25\xb4\xba\x43\x67\xe4\xa2\x76\xab\x4c\xcd\xd9\x19\xb2\x4b\x30\xd4\x4f\xe2\x2c\x4f\xa7\x7e\x9e\xa4\xd0\x81\x60\x0b\xae\x34\x7c\xd0\x9a\x28\x76\x21\x21\xd0\xe9\x74\x20\x9e\x46\x11\xfc\xac\x38\xea\xa7\x9c\xe5\xbc\xd1\x6f\xc2\x26\x34\xce\xce\x5c\x78\xf3\x97\x07\xa8\xa4\xb1\x57\x49\xcd\xd5\xd6\x0a\x6a\xa3\xad\x15\x89\x27\xe0\x83\x30\xe6\x7a\xf8\x4a\x51\x42\xed\xec\x8c\x67\xef\x49\x3b\xd5\x3c\xf8\x02\x17\x2c\x9a\xf2\x4d\xc8\xd3\x29\x87\xab\xe6\x16\xc9\xca\x98\x9d\xf3\x03\xfe\xc7\x94\x67\x39\x08\xfa\x44\xf9\x71\xcc\xa6\xf9\x28\x49\xc3\x3f\x79\x00\x1d\xa8\xd9\x7f\xd7\x04\xc8\xa7\xac\x1b\x5f\x40\x47\xad\xd7\x46\xad\x9f\x26\x97\x19\x4f\x9f\x26\xe9\xd3\x38\x09\x48\xf7\xe0\xfc\x10\x9c\x2d\x60\x7f\x4c\x79\x3a\xc3\x25\x18\x0f\xad\xe6\xf5\x3f\xb2\xba\x1c\x20\x02\x05\x7c\xc0\xa6\x51\x9e\xbd\xe6\x7c\x62\x43\x45\x49\xc0\xb2\x51\x4b\x55\x07\x9c\x4f\x54\xb3\x76\x1b\x7e\x1d\xf1\x18\xa6\x19\x62\x46\x12\x3c\xb8\xe4\xa4\xf0\x62\xf6\x89\x7d\x26\xf1\xf9\xaf\x16\xfd\x8a\xbb\x51\x46\xad\x34\x89\xad\x30\xdb\x4b\x02\x8e\xa2\xfa\x48\x15\xbc\x12\x43\xb2\x85\x84\x36\x2b\xc2\x61\x51\x45\x05\x75\x4b\x5a\x84\xe2\x6f\xfd\x17\x74\xe0\x0b\xd4\xb0\xb6\xb6\x29\x9b\x49\x69\x14\x92\xe2\xf2\xdf\x88\xa6\x1f\x85\x3c\xce\x3d\x98\xa6\x91\x07\x63\x9e\x8f\x92\xc0\x83\x80\xe5\xcc\x83\x64\x92\x67\x36\x41\x6a\x1f\xe4\x97\xf0\x21\x4d\xc6\x61\xc6\xad\x85\x9d\xf2\x2c\x89\x2e\xb8\x07\x29\x47\x59\xb1\xdb\x59\x6d\x05\x53\x1a\x36\xcf\x1b\xd8\x8d\x57\x00\x27\xb9\x66\x39\x3b\x9a\x4d\xf8\x26\xd4\x3e\x65\x49\x5c\xf3\x4a\x10\xd3\x34\xda\x04\x31\x80\x56\x9f\x65\xfc\xf8\x60\x17\x56\x69\x24\x95\xc8\x36\xc5\xb8\x4a\x75\x7e\x12\xe7\x3c\xce\x65\x5f\x72\x27\xc0\x51\xb5\xb1\xdf\x2d\xf0\x47\x2c\xcd\x78\xde\x99\xe6\x83\xa7\x2f\x2b\xc8\x10\x5c\xdb\x94\x3f\x9d\xea\xab\x66\xb3\x04\xde\x1a\xb0\x30\xb2\x38\xf7\xe9\x8f\x7f\xbc\x3b\x28\xf2\x4b\x0b\x0c\x56\xb6\xb2\x9c\xe5\xd3\x0c\x3a\x1d\x78\xbe\xb6\x5e\x05\x2a\x58\x8c\x8c\x6f\xd8\x0b\xc8\x92\x13\x4d\x51\xa9\x84\x47\x19\x5f\x8c\x52\x50\x78\x1d\xae\xab\x8a\xa1\x06\x49\x6c\x0b\x89\x90\x2b\x31\x9a\x23\xfe\x39\xf7\x60\xf9\xc1\xff\xd4\x81\x8d\xb5\x35\x5c\x34\x4e\xf1\x8f\xf0\x7c\x6d\x6d\x1e\x4b\xc8\xa0\x4d\x92\xf3\x10\x35\x9d\x68\x36\xe4\xf9\x01\xcf\x26\x49\x9c\xf1\x77\x9c\x05\x3c\x6d\xd4\x0e\x79\xfe\x74\x87\xa0\x6a\x15\x83\x54\xc4\x08\x3c\xf3\x7a\xc2\x7f\x52\x12\x75\x87\xe2\x97\x6a\x8c\xe5\x69\x00\xe2\x37\x2d\x22\xc9\xa7\xe5\xd8\x0e\x77\x3a\x85\x06\xe2\xca\xda\x04\x56\xac\x0e\x50\xf9\xf1\x7a\xca\x21\x9d\xc6\x64\x42\x84\x71\x16\x06\x1c\xf6\xf3\x3c\x69\xc1\xaf\x5c\xda\x7d\x1c\xea\xa9\x50\x37\x75\x7b\x61\xb4\xdb\x20\xb6\x0d\x61\x76\x1d\x9e\xcf\x82\xf0\x02\xe1\x59\x4e\x2a\x2a\xa3\xe6\xc9\x80\x30\x1c\x74\x0f\x8f\x24\x57\x55\xe3\x2c\x41\x4d\x3b\xe4\x39\x64\xd3\x09\xe2\x21\x5d\x8b\x12\xcf\xe3\x5c\x2e\xdb\x9b\xeb\xbb\x7e\x12\xcc\xca\xfa\x8e\x76\x07\x96\xb3\x2d\xa7\x24\x99\xe6\x93\x69\x2e\x75\x32\xcf\xf2\x46\x09\x93\xc5\x44\x14\x1c\xd9\xe0\xf1\x63\xd9\x54\x9e\x02\xe0\x27\x28\xc9\x2d\xf6\x06\x1d\xf8\xfb\xe1\xfe\x5e\x6b\x82\x4a\x47\x36\xb6\xa7\x65\x65\xc1\xa4\xcb\xf6\x62\x77\x2d\xb7\x90\x4a\xf8\x0b\xd4\x91\x5d\xf5\x4d\x70\xec\x32\x55\x4d\x43\x86\x2b\xbd\x7d\xe0\xfc\x6b\xc0\x09\x4b\xd9\x38\x3b\xa4\x3d\xb5\x21\xfe\xb0\x77\x5c\x34\xe3\x6a\x35\xd1\xd0\xd8\x50\x08\x86\x76\x94\x0b\xaf\xf8\x23\xaa\x1f\x75\x3a\x50\x5b\xab\x15\x39\x92\xc1\x6a\x07\x6a\x1e\xd4\xaa\xc6\x93\x5d\x86\xb9\x3f\x82\x86\x3c\x76\x09\xf4\x27\xf4\xe3\xb4\x88\xc8\x67\x19\x87\x9a\x30\x06\x6a\x9b\xa5\x75\x40\xfd\xd4\x6b\x75\x58\x75\xd1\xc0\x2a\x96\x96\xd7\x4d\x3f\xe5\xec\xdc\x2d\x96\x9b\xda\x1c\xdc\x0e\xd6\x6b\xf1\x5d\x59\x3b\xb7\x9c\x96\x0c\xe7\xa1\xdd\x86\x03\xfa\x33\x03\x06\xd2\xb2\x91\x8b\x25\x8c\x2f\x12\x21\xff\x58\x52\x17\x02\x59\x17\x47\xac\x30\xcf\x04\x01\x3c\xe7\x69\x06\x75\x41\x4c\x1d\xd1\x45\xe1\x39\x87\xf7\xb3\xf7\x04\xde\x58\xf7\x60\xc3\x83\x5a\x56\x6b\x9a\x29\x47\x0b\x46\x4e\xb8\x40\x6a\x4f\xb8\xc0\x04\x1d\x38\x39\x2d\xcc\xfa\x59\x08\x1d\x58\xdf\xc2\x9f\x3f\x02\x4b\x87\xd3\x31\x8f\xf3\x4c\x1d\x81\xe1\x0c\x0f\xc1\xd6\x1c\x49\xfe\x9c\x85\xf0\x14\xd6\xd1\xa2\xd6\x4d\x4e\xce\xc2\x53\xdb\x92\x51\x72\x26\x88\x81\x55\xa8\x35\xa4\x74\x58\x8c\x76\x25\xd4\xaa\xae\x35\x6b\x5b\x25\xb6\x22\xca\x43\x9e\x86\x2c\x0a\xff\x24\x16\xbe\xe3\xd1\x84\xa3\xa5\xdd\x7e\xf2\x04\xfe\x97\x1f\xb1\x2c\x83\x27\xed\xaa\x83\x8c\x2e\xa9\x68\xaf\x81\x04\xe1\x15\x10\xad\x3c\xe9\xc9\x13\x8c\xa3\xa5\x92\xfe\x27\x0f\xd0\xfa\xd8\xef\x7f\x2a\xae\x17\x29\xed\x49\xff\xd3\x49\x6d\x90\x26\x63\xd4\x16\xb5\x53\x32\xfb\x8d\x2f\xa2\x28\xfe\x05\xe8\x86\xc2\xbd\xa4\x62\x31\x6b\x39\x4d\x26\x7b\x6c\x8c\xe2\x56\x45\x9f\xdd\x9d\x02\xc5\xc9\x94\xa0\xa6\xcc\x5d\x01\x57\xf3\x95\x55\xd2\xff\xa4\xf5\xd0\x3c\x26\x4e\xe3\x31\x4b\xb3\x11\x8b\xc4\x11\xd0\x66\xa4\xd8\x49\xfd\xa2\x5a\x0f\x73\xee\x48\xad\x33\xc6\xa4\xff\x09\x87\x87\x4d\x8b\x63\x23\x9b\x9c\x5f\x1e\x41\xe7\x9a\xd9\x6c\xa0\x95\xec\x37\x9a\xc2\x96\x3e\x49\xfa\x9f\x4e\x0b\xbb\x2f\x91\xd0\x9a\x4c\xb3\x11\xc2\x1e\x55\xce\x84\xe4\x01\x81\x2e\xcf\x85\xf7\x6c\x72\x63\x46\x7c\xb9\xaa\x60\xc4\x39\x9f\xcd\x63\x04\xb5\x3b\x39\xe7\x33\x9c\x5d\x3a\xa1\xba\x93\x40\xfd\x51\x3d\x76\x7a\xa7\x63\xfb\xe6\x61\xfd\x85\xf3\x4b\x15\xb8\x23\xf3\xcb\xa3\x1b\x31\x41\x56\x54\x10\xb1\xb5\x72\x45\x07\x74\x79\xfa\x6e\x55\xeb\xad\xca\x86\x38\xba\xed\x0f\x3d\x71\x9a\x5f\xa4\xdc\xce\xb2\xe9\xc4\x1c\x46\xb5\x33\xa7\xa1\x1b\x7b\x20\x41\xb6\x5c\x25\xa8\x01\x1a\x15\x07\x47\xd1\x84\x76\x7a\xf2\x4f\x3c\x7e\x2c\x8b\x5a\x78\xe6\x9a\x91\x07\xc9\x33\x7a\x9f\x5c\x47\x58\xb6\x55\xde\x0c\x75\x3f\xc8\x0d\xf1\x9b\xcd\x13\x7b\x90\x16\x28\x8d\x3f\xe2\xe9\xed\xc6\x8e\x0d\xe7\x8e\x1b\x2b\xef\x7b\xcc\xd8\x07\x8e\x57\x8f\xc8\x19\xb2\x1c\x97\x84\xc2\xa1\xee\xb0\x49\x3e\x4d\xf9\x6d\x06\x2b\x9b\xce\x1b\xae\xac\xbe\xe7\x01\xcb\x5e\xe6\x0e\xd9\x8c\x4f\x43\xe2\xb0\xbb\xc1\x90\x1f\x4c\xa3\x5b\x8d\x5b\xb5\x9d\x37\x70\x55\x7f\xcf\x23\x57\xdd\xcc\x1d\xba\x35\x46\x03\x8b\x83\xdf\x4b\x82\x5b\x0f\x5e\xb5\x9d\x37\x78\x55\x7f\xcf\x83\x57\xdd\xcc\x1d\xbc\x35\x46\x03\x8b\x83\xff\xc0\xfc\x73\x9e\xf7\x62\x6c\x80\x04\xdf\x82\x07\x05\x14\xf3\x58\x51\x00\xbb\x67\x8e\x14\x7a\x9b\xcb\x98\xf2\xf8\x4b\x2d\x91\x4d\xbf\x26\xe9\xf9\x20\x4a\x2e\x6f\xc3\x1f\xd5\x76\x1e\x63\x54\xfd\x3d\x73\x44\x75\x33\x97\x15\xd6\x18\x0d\xac\xdc\xff\x6e\x64\xd6\x6f\x7f\xe8\x69\x9f\x41\xca\xb3\x64\x9a\xfa\xbc\x60\x70\x08\x07\x3d\xc1\x40\x47\xfa\x2b\xb6\xdc\xda\x03\xd9\x92\xdc\x06\xe2\xd7\x02\xc4\x1b\xe6\xe7\x49\x8a\x36\x9b\x6f\x8f\x77\xfb\x43\xcf\x38\xe8\xa5\x23\xbf\x78\x52\x28\x1a\x3f\xa9\xe9\xcc\xe9\x7c\xab\x38\x21\x16\xe1\x2d\xe5\xcd\xa8\xb5\xd9\x24\x6c\xd7\x60\xd5\x1a\x6d\xed\xc3\xfe\xe1\x51\xcd\x13\x7e\x09\x71\xea\x0c\x07\x33\xea\xda\x83\x2f\x05\xbf\x5f\x2b\x1f\xf1\xb8\xe0\xf3\x9b\xe3\x0d\x5e\xc2\xc4\x4a\xfa\x9f\xec\xbb\x0f\x65\x70\x55\xfb\xa9\xca\x0c\x8b\xc2\x82\xfb\xe7\xe6\xbc\x42\xa8\x81\x9e\x1c\x7b\xae\x96\xe2\x67\x9d\xf8\x59\x77\xf9\xf9\xb6\x8b\xec\xac\xd5\x6e\xc7\x3d\x9b\xee\xa2\x91\x0b\x4b\x1a\xba\x45\x3c\x67\xeb\xcb\x99\xbc\x92\x13\x8b\x0c\x5f\x90\x8e\x4c\x22\x4f\x19\xc0\xa6\x9f\x79\x27\x3f\x8b\x8f\xba\xf5\x92\xb3\x3c\xe4\xee\x24\x87\xc1\xbf\xc1\x34\xc3\x2a\xd4\x68\x1d\x85\xc1\x37\xcf\xf8\xf2\xeb\xa5\x30\x3f\xcb\xae\x93\x80\x47\xbc\xa0\x58\x6e\xc3\xc4\x6f\x60\xd0\xeb\xee\x6e\xf7\xa8\xab\x78\x04\x35\x75\xfb\x53\xdb\x84\x5a\xad\x48\xbc\x39\x05\x14\x4f\x43\x42\xbd\x53\x05\x92\xfc\x36\x65\x93\x51\x37\xe2\x63\xa1\x9b\x97\x57\xfb\x76\xc3\x82\x1b\x47\x76\x6e\x43\x14\xa9\x28\x74\xeb\x82\x6a\xba\xe8\x12\xf0\x16\x7b\xb0\x6e\x3c\x6f\x13\xd6\x00\xf7\xbc\x0b\xeb\x7e\x70\xfc\xf6\x20\x4b\xbc\x90\x43\xb5\x1a\x98\xd9\x09\x86\xb7\xe7\x02\x36\x5e\xc8\x05\x04\xf8\x2b\xb8\x80\xfd\x5c\xcb\x05\x39\x54\xab\x81\xe6\xc2\xcd\x85\xb3\x11\x27\x01\xcf\x3c\xe0\xc1\x90\x67\x25\x73\x84\x2a\xa1\x03\xe2\xe7\xd7\xaf\xce\x26\x41\x10\xd4\x0e\x3a\xa2\xbd\x0d\x51\x1e\x5c\xa5\x78\xab\x81\xa8\x41\xf0\x71\x14\xc6\x37\xb5\xae\x4c\x33\x69\x64\x2d\x67\x57\x09\x12\x4d\x63\x4b\x93\xd1\x9d\xbf\xa3\xc8\xaa\xee\xb0\xe7\x6b\xa8\x3c\x99\x24\x51\x32\x9c\xd5\xe7\x9a\x3d\x5f\xa0\x2e\x7b\xfe\xdf\xd8\x57\x7d\x13\x32\xb8\xba\xa5\x21\x14\x0e\x44\xb9\x0e\xda\x28\xdf\xa1\x4a\x8a\x4f\x0a\x2e\x53\xba\x09\xc8\xa6\x51\x0e\x3e\x8b\xa1\xcf\xe1\x04\xd7\xd5\x29\x24\x29\x9c\x9c\x08\xe5\x40\x05\xa7\x95\xfd\x59\x77\x50\x28\xfa\xb4\x95\xaf\x9d\x96\xa2\x69\xca\xd4\xc8\x1b\x26\xd9\x60\xab\x6a\x97\x72\xaf\xcc\x0a\x9a\xbb\x72\xce\xde\xce\x35\xd1\xac\x90\x83\xb7\xb4\x26\x2b\xf7\x01\x83\xb4\x2c\xa9\x96\x58\xda\x60\x74\x43\xf1\x9e\xe7\x4c\x0e\x68\x79\x91\xd5\xad\x4a\xb6\x64\xe9\x2e\x04\x4a\xf7\x21\x6b\x4b\xdf\x87\x80\x7d\x27\x32\xe7\x3e\x04\x1c\x03\x8a\x64\x5a\xd3\x20\x7e\xb1\x97\x8b\x26\xdc\xe2\x7c\x9e\x1c\xaa\xf0\x98\x85\x13\x50\xd3\x83\xae\xe9\x1b\x32\x79\xc5\x62\x75\xdb\xc4\x2d\x5d\xdd\xaf\xb8\x53\xa4\x3b\x2f\xce\x90\x3d\x09\x16\x90\xa6\xa6\xc4\xed\x25\x6e\x9d\x96\xe7\xf2\x75\x1c\x76\x74\x21\x4a\x61\xc3\x70\xb1\x1f\xc6\x81\xdc\x2d\x74\xa1\x07\x27\x17\x49\x18\xc0\xda\x29\x9e\x5a\x7c\x96\xab\x1b\xa8\x26\xc5\x51\x5d\xe9\x61\x5b\xa3\x36\x83\xa6\x6b\xa8\x9c\xc2\x90\x6e\x70\xef\x94\xf3\x49\x83\x4d\x42\x0f\x26\x29\xbf\x08\x93\x69\xf9\x82\x55\x96\x93\x92\x11\xe4\x35\xe1\x0b\x98\x62\x71\x61\x6c\x89\xd2\x92\xd2\xbc\x71\x3b\x69\x86\xa7\xb0\xb1\xbc\x44\xb3\x09\x76\xc5\x26\x61\x61\xff\xb2\xc8\x57\xbf\x16\x21\xe6\xaf\x05\x64\x9a\xb5\x0c\x62\x36\xe6\xc5\x25\xa0\x45\xbf\x17\x5f\xb0\x28\x0c\xb0\x49\x4d\x87\xf8\x15\x10\x5c\xbb\x8e\xe8\xe2\xce\x21\x5b\x99\x1e\x55\xa7\xbb\xa1\xd0\x54\xca\xd0\x56\x6d\x74\x37\x0d\x5a\x69\xad\x5a\xa5\xfe\x55\x8d\x57\xad\x9b\x5b\x29\xa7\x62\xf2\x3d\x38\x11\x36\x02\x1b\xf3\x46\x53\x4b\xaa\xbd\x90\x97\xbd\x17\xb4\xb7\x53\x81\xae\x74\x87\x5d\xc9\xaf\x4c\x9e\x64\x78\xe9\x32\x67\xde\x66\xad\x79\xa0\x9b\x36\xac\x03\x4e\x75\x2f\xa9\xd8\x20\x17\x9d\xff\xe5\x1a\x54\x92\x26\xcc\x07\xc1\x0a\xc3\xec\x66\xf5\x09\x67\x11\x25\xea\xc4\x96\xf3\x49\xe9\xc2\x46\xac\x70\x51\x45\xb6\xd3\xad\xcc\xdf\xb9\x66\x2f\x2a\x83\xb9\x16\xaf\x88\x8e\x97\xd6\x2d\xc2\x55\xd8\xb5\x6f\x97\x5d\x19\x6f\xcd\x7a\x78\x7b\xdb\xc9\x75\xe5\xa9\x86\x36\x4b\x56\xdb\x5c\xe2\x9a\xb7\x21\x6d\x10\x72\x07\x67\x9e\x39\x5b\x34\xdd\x08\xbd\x1a\x5a\xda\x37\x44\x49\x4d\x3c\x63\xa8\x5b\x28\xaf\x5c\x73\xc6\x1a\xf6\x4e\x12\xe7\xfc\xf3\x62\x71\xfb\x6f\x36\x11\xac\x8d\x4c\x52\xdb\x50\x92\xdf\x9c\x3b\xae\x8f\x0f\x64\x44\x8d\x8f\xf6\x96\xfc\x51\x6f\xc5\x9e\x5e\xdd\xe2\xb7\xea\xad\x79\xce\xe0\xbb\x0f\x65\xf0\x5d\x7b\xf0\xdd\xbb\x19\xfc\x9b\x28\xb9\xcc\x1e\x0a\x03\x88\x58\x9b\x09\x54\x70\x7b\x46\xa8\xb3\x05\xaa\x6f\xd4\xd5\xce\xb1\x02\x4f\x13\xf2\x92\x55\xaf\xfa\x9b\x5f\xb2\x8a\xa6\x73\x2f\x59\xe5\x0a\xfd\x7f\xd3\xb6\xa3\x8e\xe8\xcd\x48\x67\xa9\xad\x89\x58\x77\xbd\xe1\x77\x36\xdf\xf2\xb3\x26\xf5\xac\xb8\xe5\x49\x5e\x2f\xbb\xf1\x49\xf0\x5a\xf1\xc5\x87\x2c\x27\x47\x90\x73\x53\xad\x85\x44\x43\x90\xad\x3f\xed\x0f\xaf\x73\xfe\xcc\x13\x1e\xd5\x76\x9e\xf4\xa8\xfa\xfb\x10\x9f\x7b\x98\xb7\x79\x13\xa3\x86\xb1\xec\xcc\x28\xf8\xd2\xd4\xa8\x8a\xd2\xdc\x58\x93\x60\x60\xcc\xf1\x33\xfc\x1c\xc6\x74\xc4\x7a\xc5\x32\xee\x01\x76\xae\x98\x28\x31\x2f\x39\x75\xee\xf4\x11\xfc\xd9\x7a\x61\xf6\x9c\x19\x94\x20\x8d\xaa\x03\x02\x4b\x87\xc5\xe5\x5b\x5e\xc2\x37\xd3\xbc\xf8\x0f\xd1\x2e\xd6\xbd\x30\xef\xce\xa6\xda\x7b\x5a\x74\x9c\xba\xcd\xe5\x08\x97\x9c\x5b\xac\xd3\xb3\x6a\xf5\x2c\xb1\x48\xa9\xa1\x79\x6a\x36\x55\x54\xe7\xc7\xdb\xac\xad\x8f\xf3\x16\xd5\xc7\xfb\x72\x25\x7f\x5c\x56\xbe\x3f\x1a\xc1\xfe\x78\x5b\x93\x7b\x49\x43\xd8\x36\xa9\x9d\x9d\xd1\xee\xf8\x1d\x7b\x30\x06\xc2\x3b\x96\x39\x16\x22\xfe\x7d\x7b\xf3\xa0\xc0\x84\xae\x78\x98\xf9\x70\x58\x21\x08\x2e\x32\x44\x96\xde\x19\x5b\x7e\xe1\xb3\x07\xc4\x93\x5f\xf8\xac\xc8\x10\x2c\xba\x33\x6e\xec\x25\x0f\xe5\x74\xd8\x10\xd4\x16\xb9\x81\x45\x77\xc3\x8d\xd7\x3c\x98\x4e\x1e\x0a\x33\x88\x58\x87\x17\xa2\xe4\x6e\x58\xd1\x8b\x1f\x0a\x1f\x7a\xb1\xcd\x83\x5e\x7c\x37\xe3\xdf\x9f\x3e\x98\x55\xb1\x3f\xcd\x6d\x0e\xec\x4f\xf3\xbb\x61\xc1\xab\x24\x1f\x3d\x14\x1e\x20\xad\x36\x13\xf0\xef\xbb\xe1\xc2\x01\x8b\x87\x25\xcb\xe7\xdf\x95\x0d\x44\xac\xa3\x13\x44\xc9\xdd\xb0\x62\x37\x1c\x87\x0f\x66\x55\x10\xb1\x0e\x2b\x44\xc9\x5d\xa9\xc7\x07\xe3\x83\xeb\xc5\x5d\x57\x41\x7e\x83\x1f\xae\xa0\x21\x1f\x0c\x0f\x90\xd6\x82\x8e\xbc\x23\x2e\xa0\xa2\x79\x30\x6c\x20\x62\x8b\x6a\xf2\x8e\x18\x71\x38\x4a\xd2\x9c\x67\xf9\x07\x96\x8f\x8e\x92\x87\xc2\x11\x9b\x6a\x9b\x31\x76\xf9\x1d\xf1\xc7\x78\x74\xae\x8d\x2a\xd1\x6e\x32\xb7\xbf\xf9\xc8\x77\x92\x69\x3c\x5f\x33\x3b\x17\x2c\xd3\x38\x5f\x1a\xed\x47\x16\x4d\xf9\x83\x39\x4a\x0b\x6a\x9d\xeb\x16\x2a\xb9\x9b\xf9\xfb\x85\xcf\x1e\x0c\x27\x90\x56\x9b\x0f\xf8\xf7\x5d\x49\xf1\xf8\x7f\x98\x70\x98\xa4\x0f\xc6\x0c\x42\x5a\x1d\x2b\x88\x0a\xee\x86\x0f\xef\x79\x9e\x8a\x24\x59\x0f\x82\x15\x92\x5c\x9b\x19\xb2\xe8\xae\xc4\xc2\x3f\xe7\xf9\x83\x61\x87\x24\xd7\x95\x0d\x2a\xba\x1b\x76\xfc\xcf\x3d\x6d\x0c\x1f\xab\xee\x69\x3f\x42\x07\x2b\xe8\x55\xe8\xad\x9e\x83\xce\x7d\x07\x7a\x5f\x17\x01\xdd\x65\x2f\x02\xba\xe6\x22\xa0\xfb\xd7\x5c\x04\x50\x20\x8c\xc3\xfa\xee\x83\xbd\x08\xe8\x16\xfd\xde\xb7\x97\xbf\xee\xff\x13\x17\x01\x25\x86\x88\xd2\x3b\x63\xcb\x83\xbb\x08\x28\x32\x04\x8b\xee\x8c\x1b\x0f\xee\x22\xa0\xc8\x0d\x2c\xba\x1b\x6e\x3c\xbc\x8b\x80\x6e\xe9\x22\xe0\x8e\x58\xf1\xf0\xfc\x9f\xdd\x92\xff\xf3\x8e\x58\xf1\xf0\xfc\x9f\xdd\x92\xff\xf3\x8e\x58\xd1\x8b\x1f\x4c\x00\x66\x2f\xfe\xe8\xfa\x3f\xbf\xe1\xf4\xd3\x75\xfd\x9f\x0f\x86\x07\x48\x6b\xc1\xff\x79\x47\x5c\x78\x95\xe4\xa3\x07\xc3\x06\x22\xb6\xe8\xff\xbc\x23\x46\xdc\xb9\x7f\xaf\x7b\x3f\xfe\xbd\xee\xff\xf8\xf7\x2a\x79\xf1\x9f\xeb\xdf\xeb\x3e\x60\xd7\x56\xb7\xe8\xda\xfa\x86\xfd\x4d\xa5\x39\xaa\x3a\xb3\xe3\x41\xbd\x2b\xce\xec\xef\x58\x76\xab\xf8\x3d\x11\xd9\x55\x7d\x72\xc7\xba\x7b\x7e\x10\x8e\x5d\xe0\xc8\x4c\xec\xe8\x47\x0f\x6a\xef\x58\x56\x6b\x36\x9b\x7a\x64\xb7\x72\x48\x88\xa3\xea\xdc\x91\xdd\x9b\x5b\xc2\x8c\xac\xeb\x8e\xac\x5b\x35\x32\x11\x44\x76\xdb\xf1\xa9\x10\xb4\xf9\xa3\x14\x10\x7f\xc1\x58\x45\x47\x95\x73\x29\xea\x2a\xc6\x7d\xeb\x79\x55\x27\xee\x6b\xc6\xfd\x57\xcc\xb1\xe8\xa8\x72\xa6\x2b\xc6\xfd\x0b\x9f\xdd\x76\xb2\x45\x78\xdd\xdc\x11\x63\xf5\xfd\x0f\x17\x7b\xa9\x9c\xe3\x5f\xf8\xac\x38\xd0\xdb\xce\xae\x70\x1f\x2c\x1a\xe8\x5f\x30\xaf\xd8\x4b\xe5\xa4\x16\x07\xba\x97\xe4\xb7\x9d\x51\x11\x22\x38\x77\xa0\x58\x7d\xff\x03\xc5\x5e\x2a\x67\x74\x2f\xc9\x8b\x03\xbd\xed\x8c\x0a\x17\xc8\xa2\x81\xfe\x05\x33\x8a\xbd\x54\xce\xa8\x33\x50\x11\xad\x78\x9b\x71\xaa\x38\xc7\xea\x61\x8a\xda\x7b\x1e\xa5\xe8\xa4\x3c\x9b\x54\x5e\x18\xe3\xad\xe6\x52\xb9\x70\x16\x8c\xf1\xbe\x67\x52\x74\x52\x9e\xc8\xc2\x18\x45\x84\xd9\x6d\xc6\xa8\x62\xd3\xaa\xc7\x28\x6a\xef\x79\x8c\xa2\x93\xf2\x3c\x52\x79\x61\x8c\xb7\x9a\x47\xe5\x7f\x5a\x30\xc6\xfb\x9e\x47\xd1\x49\x79\x1e\x0b\x63\x14\xe1\x71\xb7\x19\xa3\x0a\xac\xab\x1e\xa3\xa8\xbd\xe7\x31\x8a\x4e\xca\xf3\x48\xe5\x85\x31\xde\x6a\x1e\x95\xf3\x6c\xc1\x18\xef\x7b\x1e\x45\x27\xe5\x79\x2c\x8c\x91\x2e\xf8\x6f\xf5\x78\x4f\x44\x06\xcc\x79\xb9\x87\x95\xf7\x3c\x40\xea\xa3\x3c\x87\x58\xec\x0e\xef\x56\x33\x28\x4f\x87\xf3\x87\x77\xdf\xf3\x47\x7d\x94\xa7\xcf\x1d\x9e\x88\x3b\xbf\xf1\xe0\x28\xe8\xbb\x7a\x68\xfb\xd3\x7b\xcb\x01\xbd\x3f\x5d\xfa\x71\xea\xfe\xb4\xfc\x30\x75\x7f\x4a\x8f\x52\x3f\xda\x07\x6d\x31\x7e\xaa\x41\x76\xf4\x6e\x95\x2f\xb7\x37\x37\x45\x6e\xef\xde\xb2\xe2\xf6\xe2\xe5\x53\xb7\x94\x38\xd1\x8b\x4b\x8c\xa0\x91\xf7\x64\x72\x5c\x19\x8a\x7f\x63\x46\x88\x30\xf8\x6a\x56\x60\xdd\x7d\x31\x83\xc2\xf1\x97\x64\x07\xc2\x96\x18\x82\x85\x25\x96\x48\x2e\x88\x3a\xb9\x58\x6e\xa5\xe9\x84\xfb\x7b\xee\x72\xb9\x37\x3d\x47\x6e\xf8\xe5\x17\xcc\xc7\xaa\x15\xf3\xb1\x6a\xc9\x7c\x14\x6b\xe6\xa3\x5a\x34\xb7\xe2\x0a\xdd\x8c\xcc\x5b\x36\xf7\xc6\x93\x5e\xbc\x34\x4b\x7a\x71\x99\x23\xbd\xb8\xcc\x10\x31\x7e\xaa\x91\x52\x72\xab\x0d\x43\x04\x89\xcf\x95\x92\x7b\xdb\x2e\x28\x58\x7d\x79\x29\xe9\x56\x49\x09\xed\x33\xdd\x82\x94\x74\x85\x94\x74\x95\x94\xdc\x8a\x2b\xf4\x7e\x60\x9e\x94\xdc\x1b\x4f\x7a\xf1\xd2\x2c\xe9\xc5\x65\x8e\xf4\xe2\x32\x43\xc4\xf8\xa9\x46\xa9\xd8\x5b\x31\x44\xc6\xd0\xcf\x57\xb2\xf7\xc6\x14\x11\xce\x7f\x03\x35\x5b\x66\x0c\x95\x96\x58\xa3\x78\x21\x6b\x15\x7b\x6e\xa5\x55\xe4\x15\xdb\x7c\xf6\xdc\x9b\x66\x11\xb7\x7d\x37\x60\x4f\x59\xbb\x50\x69\xe5\x3e\xf4\x51\xb2\x47\xea\x18\xfb\xbd\xc0\xad\x8c\x53\xe7\xbd\xc1\x1c\x1b\xd5\x82\xb9\x2f\x9e\x39\xef\x21\x96\xcd\x6e\xe1\xbc\xfc\xb0\xb2\xd1\x55\xe3\xfa\x9f\xac\x74\xd7\x65\xa5\xab\xe6\xdb\x72\x41\x94\x17\xdf\xf0\x1d\x29\xeb\xe3\x4f\xcb\xa6\x25\x4b\xfa\x9f\x4e\xed\x94\x0c\x37\xfb\xa8\x92\x3a\x18\x59\x03\xae\xba\x7c\x2b\x2c\x2e\x17\x1c\xc7\xf4\x21\xe5\x41\xe8\x8b\x8f\x10\x2c\x9f\xa3\x52\xb7\x6a\xd8\xf9\x53\x60\xf9\x8b\xce\xe5\xbf\x23\x07\x4b\x7e\x4b\xce\xe5\x9b\x16\x15\xe8\x88\x3c\x23\x6e\xcd\x82\x4c\x92\x7a\x68\xb7\xc8\xaa\xba\xc4\x4a\x58\xb4\x0e\xdc\xa9\xd5\x84\xa8\x7c\x83\xba\xeb\xbd\xae\xb8\x88\x55\x14\x58\x37\xbb\x66\x62\x6a\x7b\xdd\x9a\x27\xc6\xe7\x24\x2a\xdd\xc3\xdd\x69\xaf\x6b\xa1\x7b\x7b\xb4\x0c\xba\xb7\x47\x95\xe8\xde\x1e\x41\x07\xde\x1e\x59\xe8\x76\x97\x42\xb7\x5b\x8d\x6e\x17\xd1\xed\x1e\x39\xd4\x2d\x35\xda\xb7\x47\xd5\xc3\x7d\x7b\xd4\x25\x02\xbb\x0e\x85\x4b\xa1\xdc\x9d\x83\x72\x97\x50\xee\x3a\x28\x7b\x1f\x3e\x3e\x3f\xd8\xde\x7b\xbb\x14\x62\x0d\x5c\x89\x5e\xd7\xa2\x89\xa5\x7e\xb7\xba\x3a\xe8\xbe\xed\xfe\x63\x99\x6e\x08\xb0\xb2\x0b\xaa\x81\x8e\x40\x65\xa1\xfe\xb5\x77\xf4\xae\xb7\xf7\xef\x92\x99\xd7\xac\x44\x2b\x50\x41\x17\x5a\xc1\x0a\x35\x41\x77\xed\xba\x1c\xbd\x02\x0c\x3a\x72\x9c\x85\x81\xef\x1f\x1f\x3d\xcc\x91\xef\x1f\x1f\x2d\x35\xf4\xfd\xe3\x23\x39\xf6\xfd\x63\x7b\x85\xf5\xf6\x0e\x7b\xaf\xbb\x8d\x41\x9a\x8c\x3d\xc8\x93\x6b\x64\x97\x80\x6b\x1e\x68\x70\x47\x76\xa9\x16\x05\x97\x7e\xb1\x3a\xd9\x3f\x3e\xba\x41\x2f\x12\x7a\x5e\x37\xb2\x1a\xcf\x64\xe2\x37\xab\xa3\x57\xdd\xa3\x5f\xbb\xdd\xbd\x25\x3b\x92\xd0\xf3\x3a\x92\xd5\x68\xb0\x8a\xdf\xcc\xce\xfa\x66\xff\xa0\xfb\xb1\x7b\x20\xbe\x05\x68\xa3\x94\x15\x35\xfb\x03\x57\xfb\xbf\x96\xe1\xf6\xf6\x7f\xb5\x61\x5e\x77\x0f\x77\xca\x40\x58\x6a\x43\x6d\x57\x01\x6d\x0b\x18\x14\x4d\xf1\x2a\xeb\x46\x7b\xb9\x68\x52\xfd\x4d\x0c\x51\x57\x4c\x78\xab\x3b\x51\xd5\xd8\xf3\x9b\x28\xb9\xdc\x65\xb3\x1b\x7e\x64\x55\xb7\xaa\xee\x5f\x57\x17\x49\xb0\x7b\xb3\x80\xe8\x70\xbe\xf3\xfe\xc3\xcd\x09\xd1\xad\xaa\x09\xd1\xd5\x45\x42\xec\xde\x2c\x20\xc5\x91\x5b\xcc\x87\x69\x36\x9f\x27\xd5\xf3\xe2\x74\x68\x83\x89\x7b\xb8\x4b\xf1\xf1\xb0\x1b\x11\xa3\x5b\x55\xd3\xa2\xab\x8b\xa4\xd8\xbd\x59\x40\x48\xc8\xd1\xce\x87\x5b\x70\x45\xb7\xaa\x26\x44\x57\x17\x09\xb1\x7b\xb3\x80\xd4\xfc\xdc\x78\x66\xe6\xcf\x49\xd5\x6c\xc8\x79\x30\xfd\x65\xb7\x39\xe1\xca\x07\x75\xd5\x47\x5b\xaa\xbc\xaf\x33\xad\x78\xdb\xb7\xe4\x61\x96\x80\xcd\x19\xb6\xd8\xf6\x7e\x5e\xb2\x61\x2f\xae\xf9\x5c\xec\xf7\x61\x3d\x64\x2b\xbd\xa6\x54\x65\xb7\x0f\xce\xac\x60\xc8\x03\x7d\xd4\x56\xc5\x1c\xab\xe6\xee\x58\xb4\x38\x68\xfc\xdf\x8b\x3d\xd7\xc7\xad\x17\x47\xf7\x9f\x1e\xbb\x5e\xe4\xc7\x7f\x6e\xfc\x7a\x91\x13\xff\xb1\x39\x2a\x4a\x8c\x78\x60\xc1\xfc\x25\xcd\xa8\x0b\xef\x8e\x27\xff\xa1\x79\xfd\x8a\x6c\xf8\x4f\x4c\xef\x58\xe4\xc1\x7f\x6e\x7e\xc3\x22\x27\xf6\xe4\x77\xf9\x1e\x04\x2b\x88\x58\x9b\x17\xf2\x53\x2b\x77\x66\x59\x26\x93\x07\xc3\x0b\xa4\xd5\x31\x25\x93\xc9\x5d\x1a\x90\xe2\x03\xf6\xf2\x33\x99\x0f\x82\x21\x16\xc9\x36\x5f\xac\xe2\xbb\x63\xcf\xff\xa4\x3f\x2a\xb1\x44\x7b\x49\x1e\x0c\x57\x0c\xc5\x6e\xd6\x00\x55\x7a\x97\xd6\xd8\x83\x62\xcc\x7d\xa4\x87\x2a\xb2\xe4\xe1\xa5\xd9\x28\x99\xa8\xa6\xf4\xee\xd8\xf2\x36\x4d\x1e\x0e\x5b\x88\xd8\x12\x5b\x4c\xe9\x37\xbf\xc7\x25\x2c\x55\x61\x01\xca\x15\x29\x01\x2e\xe8\x83\xbf\xaa\xdb\xdb\x7d\xbc\xd9\x10\x3d\xe7\x33\x76\x1a\xe2\xbe\x9c\x95\x16\x3b\x97\xfd\xde\x1d\xb6\xb0\xbe\x79\x57\x85\xe0\xee\xdc\x96\xef\xd9\xc4\xf9\x2a\x5d\x95\xf3\xb2\x92\x84\xf7\x49\xca\x8f\x46\xec\xc1\x9c\x3b\xee\x5d\xae\x0d\xaa\xca\x8f\x79\xd9\x92\x6c\x83\xca\x37\x82\xb7\x16\x72\xe3\x8a\x9d\xfb\x4a\xf0\x5e\x05\xdc\x3c\x13\xd4\x63\x37\xef\x21\x24\x65\x73\x1e\x6f\x7f\xcb\x98\x1d\x0f\xeb\x35\x8f\x99\xff\xa2\xf1\x5b\x9d\xcd\xe5\x42\xf1\x61\xb3\xf6\x88\xdc\xf6\x05\xcc\x42\x0e\x68\x80\xbf\xe0\x25\xcc\x82\x71\xbb\x2f\x62\xcc\x0e\x7b\xeb\x77\x94\x0b\x07\x6d\x20\xfe\x8a\xf7\x94\x0b\x86\x5d\x78\x57\xa9\x0e\xe5\x37\x1e\xb2\x3c\x0f\x57\x8f\x96\x2a\xef\x6b\xa0\xe2\x68\xbe\xe4\xbe\x25\x3e\xaa\x5a\x8c\xb8\xa5\xd2\x52\xc4\xad\xe2\x85\xac\x25\xad\x20\x8e\xe9\x37\xd7\x05\x74\x44\x9e\xa3\x01\x92\xc9\xbd\xf1\x86\x8e\xea\x4b\xb2\x06\x61\x4b\x9c\xc1\xc2\x12\x63\x24\x17\x44\x1d\xb2\xc5\x3d\xb3\xdf\xfc\xeb\x8f\xf6\x41\xb9\x9a\x49\x16\xc8\x7d\xf1\xca\x3e\xc5\x2f\xfb\xf1\x43\xd3\xa4\xfc\x01\x44\x53\x57\x62\xa0\xcb\x2f\x07\x12\xd9\x49\xb7\x34\xb7\xfa\x5a\x1b\x36\x9c\xfb\xc5\x36\xac\xbc\x2f\xe6\x11\xf2\xdb\xda\x7e\xe2\x93\xef\x65\x63\x85\x90\x56\x26\xb3\x95\x0c\x92\x00\x24\x82\xf2\xde\xf1\x16\x9f\x1e\x9d\xc6\x0b\x3e\x3c\x3a\x8d\xef\xed\x21\x23\x21\x5f\xfe\x3b\x9b\xd3\xb8\xea\x2b\x9b\xd3\x58\x3c\x67\x44\x4e\xb8\xdf\xd9\x14\xfc\x90\x10\x5a\xac\x6e\xa5\xbe\xd4\xb5\xe1\x02\xc1\xba\x37\x15\x26\x2f\x31\x97\xfd\x28\x20\x41\x97\xf8\x24\x8a\x2b\x19\xa5\xb9\xa2\x60\x90\x55\xf2\x5e\xf3\xc6\x8c\x12\x57\x69\xd5\x6c\xc2\xba\xfb\x62\x12\x5d\xe9\x2d\xc9\x22\x84\x2d\x31\x08\x0b\x2b\xd9\x23\x39\x21\xea\xc9\x18\xa4\x8b\xce\x5b\x7c\xa4\x75\x3c\xff\xfb\xac\xe3\x7b\x7b\x59\x32\x1d\x2f\xff\xb9\xd4\x71\xc5\x97\x52\xc7\x95\x4c\x11\x3c\xa0\x5a\x13\x3a\x78\x2b\x81\xd1\xce\xd0\x6a\xd6\xc8\xea\xfb\x62\x8f\xf2\xce\x2e\xc9\x22\x09\x6e\xd8\x54\x6e\x7f\x9f\x67\x7e\xd1\x9b\x7b\xac\x2d\x53\xf0\x80\x2e\xe2\x51\x3a\x6d\x4f\x27\x2e\x91\xdb\x9e\xef\xcb\x8c\xd8\x1e\x0e\x53\x3e\x64\xf9\xc3\xb9\x64\x33\x14\xdb\x6c\x31\xa5\x77\xc9\x9d\x3b\x4c\x6e\xe9\x44\xfc\x56\xfa\x55\x8c\x82\xd0\x40\xc8\x5c\x67\x86\x6e\xac\x3a\x6c\xbe\x54\x6b\x0f\x03\x71\x5f\x0a\xc4\x9a\xb1\x25\x75\x88\x69\x51\xd2\xb6\xa6\x8a\x8e\xaa\x82\x53\x36\x1b\x1d\x7e\xd9\xd0\x4e\x94\xee\xad\x98\x69\xdf\xbd\xcc\xcb\x9a\xa3\x20\xee\x8b\x99\xd6\xad\xd0\x92\xcc\x34\x2d\x0c\x33\x2b\xb1\xdc\xa7\x5a\xd6\x1d\xba\xab\xa2\x92\x8e\x57\x1f\xde\x3c\x14\x65\xf4\xea\xc3\x1b\x27\xf6\xe1\xc3\x9b\x6f\x76\xbe\x1a\x96\x54\x29\x09\x47\x80\x6d\x50\x7a\x09\x4d\x8c\xbb\xf9\x3b\x68\xa4\x7a\xce\x2b\xe8\x0f\x6f\xee\xed\x0d\xf4\x87\x37\x4b\xbf\x80\xfe\xf0\xa6\xfc\xfe\xf9\xc3\x1b\xe4\x8f\x61\x81\xf3\x0c\x9a\x18\x41\x20\xc2\x35\x79\xe3\xc0\x7c\xd1\xa4\x3a\x1a\x5d\xd4\xa9\x78\x74\xd3\xc1\x2d\x3d\x9f\x0b\x15\x8a\xac\xbe\x37\xd3\x37\xb9\x91\x2a\x91\xe0\xd6\x43\xea\x52\xfb\xfb\x54\x22\xa2\x37\x77\xd5\x94\x29\xf8\x4f\x0f\xbf\x2d\x73\xe4\x61\x85\xe8\x57\x5c\xef\x9b\xd2\x6f\x56\xaf\x12\x4f\xe5\x63\x6e\xbd\x8a\x35\x90\xbc\xe4\xf9\x86\xf5\x6d\x93\x3e\xf7\x72\xe7\x9e\x57\xb9\xb9\xd8\xb1\x46\x6f\xbc\xfc\x9a\x3e\xf7\x72\x6b\x27\x0a\xf9\x62\x6f\x59\x49\x6b\x8a\x26\x8d\x64\x82\x7f\x65\xf6\x68\x64\x11\x74\xf4\x6f\x5f\xbf\xc2\x97\x2b\x23\x0e\x34\x9b\x7d\x96\xf1\xe3\x83\x5d\x03\x75\x52\x93\x45\xb5\x53\x6c\x50\xab\x15\x1a\x4c\x33\x9e\x4a\x8d\xa5\x5b\xa8\xb2\x39\x4d\x26\x2c\xcb\x2e\x93\x34\xb0\x9b\xa8\xb2\x39\x4d\xfc\x24\x39\x0f\x9d\x3e\x44\xc9\x1c\x70\x16\xf1\x94\x84\x05\x25\x7a\xfb\x43\x4f\xce\x51\x8d\xca\x6b\x1e\x6c\xe3\xcf\x66\xb1\x0f\xe1\xdf\xad\x68\x26\x6b\x6a\x9e\xf2\x01\x17\x9b\x4e\x68\x03\xec\xc5\x9f\xb8\xaf\x98\x5c\x40\x11\x52\x9d\x80\xab\x79\xf0\xc1\x6d\x50\xc4\x17\x27\x01\x3f\x98\x46\x55\xb4\x60\x55\x3a\x8d\x90\x98\x3d\x09\x55\x6c\xcd\x83\xe1\xbc\xd6\x58\x25\x5b\x77\x25\x54\xb1\xf5\x65\x92\x9e\x0f\xe4\x8d\x5a\xa1\xb5\xaa\xaa\x79\xf0\xab\xfc\xb5\xd8\xda\x64\xdc\xc0\xb6\x6f\xc5\x5f\x0a\x45\x11\xf8\xad\x4a\xcc\x21\x5b\xb5\xde\x6a\x8d\x21\x3c\xaf\x24\xcc\x96\x1a\x8d\x92\x61\xb8\x38\x48\x20\xe3\xd1\x40\x62\x35\x9d\xe9\xa4\x21\x5a\x58\x1f\x3f\x76\x45\xb1\xa8\x3e\xe5\x7a\x1d\xb3\x73\x7e\xc0\xff\x98\xf2\x2c\x57\x3c\x68\x13\x0d\x35\x0f\x6a\x1f\xf6\x0f\x8f\x6a\x1e\xfc\x31\xe5\xe9\x2c\x13\x39\x11\xc4\x8f\x70\x30\x6b\x7c\x01\xb3\x0a\x36\xdd\x95\xe2\x81\x91\xf6\xcd\xc2\x8a\xb8\x6a\x7a\xf0\x05\x6a\x7e\x12\xe7\x3c\xce\x8f\x66\x13\x6c\x5d\x43\x3d\x13\xfa\xb4\x45\xb7\x3f\x3f\xbd\xbc\xbc\x7c\x3a\x48\xd2\xf1\xd3\x69\x1a\xf1\xd8\x4f\x02\x1e\xd4\x3c\x87\x7a\xfc\x57\xc3\x3d\x5b\x21\xa8\xc1\xd5\xa2\xe4\x1b\x1f\xd2\x64\x1c\x66\xbc\x95\xf2\x2c\x89\x2e\x78\x41\x6d\x97\x66\x21\x15\x1c\x71\xe6\x61\x9a\x46\x1e\x8c\x79\x3e\x4a\x02\x0f\xc4\xc3\xb5\x64\x92\x3b\x0a\x48\xcf\x82\x58\xba\x45\x96\x23\xf8\x49\x6d\xc4\x59\xc0\xd3\xac\x86\xdb\xd6\x17\xa8\xed\x88\x55\xbe\xe9\x68\x81\xab\x05\x43\x29\xcf\xd8\x3c\xca\xaa\xb6\x26\x31\xd4\xe2\x3b\x47\xad\x86\x55\xf5\xca\x55\xb3\xe5\xb3\x28\x12\x3d\x20\x4f\x92\x01\x0c\xa3\xa4\xcf\x22\xda\x26\x6a\xd3\x38\xe0\x83\x30\xe6\x41\x0d\x7e\x56\x15\x9b\x20\x01\x49\x44\xcb\x60\x54\xac\x81\x2e\xc3\x38\x48\x2e\x2b\xc0\x64\xc5\x26\x7c\xb9\x6a\xae\x5c\x79\x5f\x6a\xfd\x34\xb9\xcc\x78\xfa\x34\x49\x9f\xa2\x6e\xa8\x6d\xbe\xf4\x6a\x51\x12\xb0\x6c\xd4\x0a\xf8\x80\x4d\xa3\x3c\x0b\x38\x9f\xd4\x36\x37\xbe\xf7\x6a\x31\xfb\xc4\x3e\xd7\x36\x37\x5e\x78\xb5\x3f\xb2\xda\xe6\xf3\x67\x57\xa7\xde\xc6\xe6\x89\x9a\xc7\x06\x4e\x6d\x98\x72\x6f\x9c\x04\xd3\x88\x7b\x92\x03\xcd\x2f\x2b\x28\xcd\x80\xe2\xed\xe7\xb5\xad\x95\xf6\x93\x15\x78\x02\x3b\xc9\x64\x96\x86\xc3\x51\x0e\x8d\x9d\x26\x6c\xac\xad\xbf\x84\x03\x1e\xc0\x3b\x96\x7b\xd0\x8b\xfd\xd6\x0a\x10\xd8\x6e\xe8\xf3\x38\xe3\x01\xe0\x38\x52\xc8\x47\x1c\xb6\x27\xcc\x1f\x71\x55\xe3\xc1\x47\x9e\x66\x28\x46\x1b\xad\x35\x94\x11\x0e\x35\x59\x55\xc3\x69\x7a\x02\xb3\x64\x0a\x63\x36\x83\x38\xc9\x01\x09\x41\xbe\xc3\x20\x8c\x38\xf0\xcf\x3e\x9f\xe4\x10\xc6\xe0\x27\xe3\x49\x14\xb2\xd8\xe7\x70\x19\xe6\x23\xea\x47\x62\x41\x4a\xe0\x37\x89\x23\xe9\xe7\x2c\x8c\x81\x81\x9f\x4c\x66\x90\x0c\x2c\x38\x60\xb9\xa4\x19\xff\x8d\xf2\x7c\xb2\xd9\x6e\x5f\x5e\x5e\xb6\x18\xd1\xdb\x4a\xd2\x61\x3b\x12\xa0\x59\x7b\xb7\xb7\xd3\xdd\x3b\xec\x3e\xdd\x68\xad\xc9\x46\xc7\x71\xc4\xb3\x0c\x24\x0f\x03\xe8\xcf\x40\xae\xdc\x7e\xc4\x21\x62\x97\x90\xa4\xc0\x86\x29\xe7\x01\xe4\x09\xd2\x7c\x99\x86\x79\x18\x0f\x3d\xc8\x92\x41\x7e\xc9\x52\x8e\x68\x82\x10\xf9\xdc\x9f\xe6\x0e\xcb\x14\x89\x61\xe6\x00\x24\x31\xb0\x18\x6a\xdb\x87\xd0\x3b\xac\xc1\xab\xed\xc3\xde\xa1\x87\x48\x54\x3a\x84\x5f\xb7\x0f\x0e\xb6\xf7\x8e\x7a\xdd\x43\xd8\x3f\x80\x9d\xfd\xbd\xd7\xbd\xa3\xde\xfe\xde\x21\xec\xbf\x81\xed\xbd\xdf\xe0\x97\xde\xde\x6b\x0f\xb8\x78\x2d\xc9\x3f\x4f\x52\x1c\x41\x92\x42\x88\xcc\xe4\x01\x71\xee\x90\x73\x87\x04\xb4\x4b\xf1\xef\x6c\xc2\xfd\x70\x10\xfa\x11\x8b\x87\x53\x36\xe4\x30\x4c\x2e\x78\x1a\x87\xf1\x10\x26\x3c\x1d\x87\x59\x46\x7b\x21\x8b\x03\xc4\x12\x85\xe3\x30\x67\x62\x7b\x2c\x0d\x4b\xca\x4a\x7b\x65\xbf\x8f\x5b\x62\x4b\x08\xfc\x87\x34\x99\xf0\x34\x9f\x35\xa4\x1c\x7a\x50\x3b\x3b\xe3\xd9\x7b\x12\xce\x1a\x6a\xca\x0b\xb4\xd4\x37\x21\x4f\xa7\x9c\x54\x1c\x6e\x01\x6c\x12\xee\x86\x7d\xe8\xa8\x89\x68\xd4\x5a\x6d\x36\x09\x51\x94\xc4\xe2\x41\x93\x15\xad\x62\x82\xd3\x85\xef\x79\xce\x50\x3d\xe8\x1a\x5d\xa2\x41\x28\xb3\x8c\xac\xdc\xeb\xea\x62\xca\x10\x23\x8b\xdf\x1e\xe9\xe2\x5d\xab\x78\xf7\xc8\x82\xee\xda\xe0\x5d\x0b\xbe\x6b\x37\x30\x15\x76\xbe\x14\x59\x6d\xa5\x4d\x91\x40\x2a\xe3\x89\x04\x90\x89\x4f\x64\xa5\xce\x0b\x22\x6b\x55\x7a\x10\xab\x5a\xe4\xce\xb0\xea\x29\x85\x86\xa2\x40\x65\xbd\x50\xdd\xcb\xe4\x17\xb2\xda\x64\xab\x90\xf5\x3a\x69\x85\x04\x30\x59\x26\x24\x80\x4e\x36\x21\x01\xc8\x20\x33\xd5\xf4\xa7\xae\x94\x46\x97\xa9\x96\x05\x1a\x40\x99\x32\x06\x42\x95\x98\xa9\x93\xb6\x92\x35\x81\xb2\x44\x83\x14\x6c\x32\x03\x59\xa8\x30\x6c\x93\x36\x90\xc5\x37\x59\x82\x5b\x84\xf7\x45\xca\xdd\xe6\xfa\xd5\xa9\xf7\x6c\x19\x25\x6b\x19\xf6\x62\xd3\x68\x7e\x59\xa9\x1b\xc5\x5b\xdf\x5a\x59\x69\xb7\x49\xd1\xb1\x94\xe3\xba\x82\x30\x7b\x35\x1d\x0c\x70\x2d\xb1\x73\x1e\x53\x8a\x0f\xd2\x5b\xd9\x66\xbb\x3d\x0c\xf3\xd1\xb4\xdf\xf2\x93\x71\x7b\xc0\xd3\x24\xcb\xda\x7d\x82\x6d\xf7\xa3\xa4\xdf\x7e\xf1\x72\x8d\xff\xc0\xbf\xe7\xcf\x5f\xbe\x1c\x6c\x6c\x30\xe6\x6f\xfc\xed\xfb\x1f\x7e\x60\xdf\xff\x2d\xf0\x5f\x3e\x7f\xce\x5e\x3c\x5b\xff\xfe\x87\x8d\x97\x41\xd0\x0e\xe3\x80\x7f\x6e\x7d\xca\xb0\xeb\x24\x0d\x87\x61\xcc\x22\x54\xc4\xa1\xcf\x37\x57\x56\xda\x4f\x1e\xe1\xe2\x3e\x1a\x71\x10\xd8\x41\x8c\x4a\x90\x82\x1b\x52\xeb\x53\xe6\x69\x95\x21\x37\x2b\xb5\x35\xfc\x2f\x36\xcd\x47\x49\x0a\x00\x6f\x88\x42\xd8\xee\x27\xd3\xf3\x11\x0b\xc2\x4f\x7c\x04\x3f\x0a\xb2\xff\x97\xf8\x81\xda\xf7\x27\xf8\x51\x6a\x65\xab\x8c\x10\x49\xb5\x0c\xf0\xbe\x77\x44\x8a\x44\xb3\x52\xb2\xab\xc1\x3c\xe8\x0b\x9b\x03\x0d\x11\x06\x9d\x4e\x47\x15\xe8\xfd\x7f\x0d\xad\x81\xab\x95\x15\x61\x4b\x7e\xc6\x89\x55\xa7\x6c\x59\x36\x83\x0e\xf4\x75\xd9\x8a\x75\x48\xa7\x33\xba\x07\x11\x47\xc9\x79\xcf\xf2\x51\x6b\x1c\xc6\x8d\xcf\x1e\xcc\x9a\x5b\x80\x07\xf7\x88\xc7\x5b\xb0\xba\x1a\xaa\x3e\x89\x8c\x93\xf0\x94\x36\xf9\xfe\x49\x78\x6a\x2c\x22\xea\xf9\xc4\x9c\xd5\xa9\x57\xeb\xef\x7e\xca\xd9\xb9\xb1\x94\x89\x62\x44\xf7\x19\x7e\x84\x59\x61\x4c\x4f\xd7\xc5\xa0\x04\xc4\x0c\x7e\x84\xcf\x05\x08\x0d\x60\xb8\x70\x65\xf8\xa7\x44\xac\x61\x71\x4f\x48\x67\x4b\xca\x1e\x1a\xd3\xb6\x0d\x24\xcb\x5b\x5a\x38\x91\xd5\x75\x85\xb0\x5e\xe8\xbd\xba\x4d\xa3\xdf\x2c\x50\xf5\xe8\x51\xa3\x0f\x8f\xcc\x19\xbc\xdf\x3a\x53\xc0\x94\xd1\x06\xe5\x13\x8f\xaa\xb4\x27\xa2\xe0\x01\xcb\x32\x9e\xe6\x5e\x95\xd4\xb6\xf5\xee\x1e\x9e\x87\xb8\x44\xc6\x49\xfc\x89\xc4\x89\x4a\xda\xc7\x71\x98\x9f\x1d\xf1\x0c\x77\xe7\xf6\x7a\x6b\x6d\xa5\xdd\xc6\x46\x47\xef\x7a\xb8\xd1\xc2\xde\xfe\x11\x1c\x75\x0f\x8f\xba\xaf\x61\x6f\xff\x00\x76\x7b\xbf\x74\x77\x7f\x83\xa3\x7d\xf8\x75\xff\xe0\x17\x95\xb2\x07\x3e\xbe\x7c\x24\xdb\xed\x4b\x0a\xa2\x99\x5c\x17\x2c\xbd\x1c\xb1\xa8\xf5\x29\x83\x86\x24\x44\x16\x09\x22\x9a\xd8\xc8\x32\xaf\x7c\x34\xaf\xd6\x7e\x80\xa3\x51\x32\x66\x19\x1c\x24\xfd\x30\xce\x92\x18\x7e\xdc\x78\xb9\x16\x27\x69\x3e\xc2\x21\xfc\x24\x3b\xfb\xa0\xf7\x5e\x34\x16\x46\x3c\xe5\xfd\x19\x0c\x53\x16\xe7\x3c\xf0\x60\x90\x72\x0e\xc9\x00\xfc\x11\x4b\x87\xdc\x43\x43\x84\xc5\x33\xdc\xb0\x11\xa1\x30\x8e\x70\x07\x17\xf6\x11\x2d\xfa\x81\xb0\xb7\x94\x8d\x42\x8a\x87\x65\x59\xe2\x87\x0c\x4d\x90\x20\xf1\xc9\xf3\x41\x7b\x3b\x59\x65\x99\x30\xe2\xea\x87\xb2\x45\xbd\x89\xfd\x20\xae\x80\xb3\x08\x0d\x1f\xac\x56\xb5\x64\xae\x25\xd3\x1c\x52\x2e\xf4\x5c\x98\xc4\x1e\x84\xb1\x1f\x4d\x03\xa4\x44\x55\x1b\x03\x02\x9b\x23\x36\xe2\x4e\x86\x43\x98\xa2\x15\x89\x04\x7b\xa8\x7f\xc2\x01\xfe\xe4\x34\xbe\xc9\xb4\x1f\x85\xd9\xc8\xb3\xac\x26\x0f\x32\x2c\x94\xb6\x27\x8b\x83\x76\x92\x22\xba\x8c\x47\x11\x22\x09\x79\x26\x06\x6d\x68\x24\x30\xec\x88\x0c\x9b\x5c\xb2\x8b\xba\xbe\x1c\x25\x63\x77\x3c\x21\xe9\xca\xc1\x34\x8d\xc3\x6c\x24\x6c\xbd\x20\x81\x2c\xa1\x7e\x71\x13\xc1\x12\x6c\x31\x48\xa2\x28\xb9\xc4\x31\xfa\x49\x1c\x84\x64\x1b\x6d\x2a\x51\x1b\x71\x60\xfd\xe4\x82\xd3\xb0\x84\x1c\x08\xf9\x15\xa4\xe0\x8c\x18\x2b\x4b\x55\x65\x23\x16\x45\xd0\xe7\x92\x7d\x3c\x80\x30\x46\x6c\xcc\x1a\x59\x8a\x64\x64\x39\x8b\xf3\x90\x45\x80\x7b\x0f\xd9\x64\x85\x11\xb7\xb4\xc8\x77\xe1\x70\xff\xcd\xd1\xaf\xdb\x07\x5d\x14\xfd\x0f\x07\xfb\x1f\x7b\xaf\xbb\xaf\xa1\x4e\x36\x67\xdd\x2b\x9a\x9a\xbf\xb9\xa6\x65\xf7\x1f\x1f\x0e\xba\x87\x68\x7d\x22\xb6\xde\xfb\x0f\xbb\xbd\xee\x6b\x0f\x7a\x7b\x3b\xbb\xc7\xaf\x7b\x7b\x6f\xe1\xd5\xf1\x11\xad\xa7\xdd\xde\xfb\x1e\x2e\xa8\xa3\x7d\xea\xd3\x36\x5c\xdf\xc0\xfb\xee\xc1\xce\xbb\xed\xbd\xa3\xed\x57\xbd\xdd\xde\xd1\x6f\x1e\xe2\x7a\xd3\x3b\xda\x43\xcc\x6f\xf6\x0f\x60\x1b\x3e\x6c\x1f\x1c\xf5\x76\x8e\x77\xb7\x0f\xe0\xc3\xf1\xc1\x87\xfd\xc3\x2e\x6c\xef\xe1\xf2\xdc\xeb\xed\xbd\x39\xe8\xed\xbd\xed\xbe\xef\xee\x1d\xb5\xa0\xb7\x07\x7b\xfb\xd0\xfd\xd8\xdd\x3b\x82\xc3\x77\xdb\xbb\xbb\xd8\x1b\xa2\xdb\x3e\x3e\x7a\xb7\x7f\x70\x08\xaf\xba\xb0\xdb\xdb\x7e\xb5\xdb\x15\x88\xf7\x7e\x83\x9d\xdd\xed\xde\x7b\x0f\x5e\x6f\xbf\xdf\x7e\x2b\xec\xe8\xfd\xa3\x77\xdd\x03\x02\x13\xe4\xc0\xaf\xef\xba\x54\xd4\xdb\x83\xed\x3d\xc2\xb6\x83\x66\x36\x92\xbe\xb3\xbf\x77\x74\xb0\xbd\x73\xe4\xc1\xd1\xfe\xc1\x91\x6e\xfd\x6b\xef\xb0\xeb\xc1\xf6\x41\xef\x10\x99\xf0\xe6\x60\xff\xbd\x87\x8a\x03\x5b\xec\x13\x9e\x9d\xfd\xbd\xbd\x2e\x61\x41\x7c\xc8\x64\x77\x2e\xf6\x0f\xe8\xef\xe3\xc3\xae\xa1\xe8\x75\x77\x7b\xb7\xb7\xf7\xf6\x10\xdb\xdb\xc0\xad\x15\xb2\x8c\xa7\x79\x18\x59\x76\x71\x1d\xff\x6e\xd7\xa5\xd9\x3c\x62\xd9\xfe\x25\xee\x5d\xd2\x04\x37\xe7\x7d\x51\xa3\x8c\x71\x01\x3d\x39\xc4\x05\x04\x1d\xa0\x0b\x02\xfb\xf6\x01\xcb\x05\x8c\xd2\xf8\xd9\x3b\x76\xc1\xf7\xd8\x98\x1c\x52\x25\xe7\xa5\x54\xef\xba\x78\x90\x24\x58\x73\x25\xef\x41\x68\xeb\x48\x92\x7a\x29\x47\xe4\xe4\x48\xe5\xac\x6c\x24\xfd\x4f\x0e\xae\xd2\x08\x54\x7a\x4b\x71\x6a\x47\xf0\xc2\x16\xf7\x31\xe4\x97\x0d\x96\xa6\xfd\xe9\xc0\xec\x72\x7a\x2f\x92\x15\x85\x8d\x6b\xc0\xa2\x8c\xdb\x7b\xab\xbb\x09\x12\x63\xe4\x06\xf8\x68\xd1\x06\x38\x0f\x8f\x85\xa0\x25\x28\x5c\xbc\x91\x96\xe1\x15\xe1\x36\xf2\x47\xf6\x28\xe7\xd3\x20\xa0\x20\x8c\x51\x51\xf8\x48\xce\x6b\x96\x33\x44\x5a\x68\x89\x47\xaf\x72\xc3\x56\x5f\x9b\x06\x6e\x81\x85\xd0\xa2\x77\x01\x4e\x97\xc0\x2b\x5c\x0b\xeb\x2d\xa1\x1d\x69\x7b\x57\xf6\xe6\x24\x4d\x2e\xc2\x80\x67\x46\xea\x20\x1f\xb1\x1c\xf2\x51\x9a\x5c\xd2\x8a\x24\xf0\x30\x89\xbb\x69\x9a\xa4\xf5\x0c\x2e\x47\x3c\x86\x09\x4b\xf3\xd0\x9f\x46\x2c\xb5\x74\x30\xa0\x16\x8f\x93\x1c\xc6\x3c\xa7\xbe\x48\x85\x3a\xdd\x8d\xa7\x59\x8e\x2d\x06\x49\x3a\x2e\xab\xf3\x30\xce\x79\x3a\x60\x3e\x97\x0b\x4f\xb6\xed\xc8\xd6\x2d\x69\xf2\x43\x07\x92\x73\x61\xd4\x6f\x88\x31\xb9\x44\xd2\x61\x5f\xb8\x7e\x70\xd3\x14\x58\x50\x31\x93\x73\x55\xfe\xe9\x36\x69\x7c\x81\x31\xcf\x32\x36\xe4\x9b\xea\x17\x52\x96\x8b\xfe\x31\x3f\x9f\xb2\x68\x53\xfe\xbc\x16\x9c\x7f\x9e\x70\x3f\xe7\xc1\xa6\xfe\x0d\xae\x9a\x62\x9c\x29\x1f\x72\xb4\x5d\xdb\xbf\x67\x4f\xd4\x3c\xfc\x9e\xad\x36\x4e\xfe\xcf\xef\x8d\xdf\xb3\xd3\x27\xcd\xdf\xb3\x27\xed\x2d\xc7\x52\xab\x38\xad\x44\x9f\x46\x2c\xed\xb7\x15\x82\xc2\xd5\xa8\x38\xbe\xb0\x80\x73\xce\xfd\x97\xfd\x81\xef\xbf\x58\x7b\xf1\xb2\xbf\xfe\xf2\x6f\xc1\xdf\x82\x1f\x06\xfd\x67\xc1\xf7\xfd\xfe\x7a\xf0\x8c\x3d\x5b\x7b\xf9\xc3\x0f\xed\x70\x3c\x89\xb8\x36\x4f\xf0\x1c\xa3\x97\xfd\x90\xe7\xa8\x95\x48\x23\x99\x55\xff\x08\xb5\x62\x2b\xcc\xde\xa8\xe3\x1a\x55\xbb\x12\x6a\x0b\x7c\x59\xcb\x15\xd7\xd6\x34\xf6\x5b\x2a\x45\xef\x95\x3c\x47\x64\xb9\x4a\x4e\x65\x25\xa3\x56\x87\x8c\x31\xcb\xfd\x11\x74\x10\xa8\x45\xbf\x37\x88\xb1\x54\xaf\xfd\x9c\x08\xf2\xf8\xb1\xf8\xe5\x64\xfd\x14\xd7\x46\xa5\x44\xd8\x6e\xda\x82\xac\x38\xb7\x44\x76\x42\xe1\x7a\x61\xb1\x6c\xa9\x7a\x21\x22\xe6\x1e\x46\x16\xe8\x7a\x2d\x11\x06\x42\x15\x69\x18\xdc\x46\x58\x4e\x84\x29\x18\x55\xb4\x25\x79\xaa\xca\xa5\x04\x2b\x86\x52\x73\x59\x66\xb5\x96\x25\x5b\x06\x66\xc8\x63\x44\xc8\x83\xf7\x1a\xd8\x68\x38\x3b\xff\x76\x01\xe3\x90\xe7\xb2\x85\x7d\x5f\x31\x0f\xa5\xad\xa6\xc4\x9c\x32\xff\xfc\x30\x67\x69\xae\x64\xc7\x22\xb2\xa2\xf2\xeb\x57\x18\xb0\x30\x52\x83\x26\x56\xab\x5b\xa8\x43\x04\x3f\x4a\x99\xaf\x07\x3f\xa7\x5a\x7a\xb9\xcb\xe8\x9b\xa5\xc1\xa2\xde\x48\x62\xb8\x78\xa9\x8e\xe1\x68\xd3\xc3\x25\x07\x9f\xc5\x30\x62\x17\x1c\x98\xc0\x93\x23\x62\x6a\x82\xc3\xe2\x69\x2a\xaf\x73\x84\xd4\x48\xae\x20\xc9\x3c\x4d\xc5\xc0\xcc\xd1\x95\xd2\x88\x53\x1e\x1d\x5d\x49\xe7\x64\x49\x40\x9e\xce\x50\x5d\xa2\x29\x3e\x41\xab\x9d\x3c\xa6\x83\x14\x97\x8d\x85\x60\x10\x9f\x49\x49\x54\x6b\x74\xce\xf8\x54\x83\x30\x40\xb5\x93\x4c\xf3\x16\xb9\x2b\xf6\x07\x8d\xfa\xef\x71\x1d\x56\x15\x26\x0d\x4c\xfb\x7a\xf0\x19\x7e\xea\xc0\x9a\x7d\x03\x81\xe7\x1c\x72\x1d\x73\xc1\x89\x28\xf1\xe9\x70\x43\x7a\x5d\x9b\x26\x48\xa7\xdd\xe4\x92\x43\x2c\xbd\xb9\x62\x44\x38\x72\x7e\xc1\xd3\x59\x3e\xc2\x7d\xa0\xcf\x07\x09\x1e\x08\x72\x68\x90\xb7\x26\xcf\x20\x0a\x63\xde\x74\xae\xac\x62\xfe\x39\x3f\xc3\xe2\x8a\x11\x78\x34\xb2\x55\x58\xb7\xae\x6f\x04\x77\x11\x92\xec\x78\x52\x1d\x06\x87\x0d\x7b\xa5\x18\x4f\x12\x4c\x2c\x14\x2d\x6d\xd7\xc1\x95\xd8\x80\xaa\x75\x87\xb5\x5d\x53\xc1\x8a\x50\x8e\xf1\x88\xa7\x61\x9e\x35\x2a\x1b\x79\x02\xb4\xb9\xb5\x62\x54\x6d\x9e\x4e\x63\x4a\xe5\x9a\x79\x10\x1b\x5d\xab\x6e\x44\x84\x61\x23\xc6\x52\x34\x6b\x54\x9c\x03\xfc\x08\x31\xfc\x0c\x19\x6c\x42\x26\xac\xcc\xc6\x1a\x22\x2b\x89\xb9\x6a\x27\x96\xa6\x6d\xe6\xc5\x19\xaa\xa2\x46\x96\x8c\x39\xcd\x8f\x21\xa4\xc2\x54\xfd\xfa\x15\x4a\x5b\x81\x69\x59\x20\x52\xb2\xa5\x88\xdf\xd6\x0e\x29\xbb\x2c\xca\xb4\x03\x47\xa2\x20\x00\x14\xe8\xcf\x50\xdf\x04\x94\x62\x55\xb0\x09\xf5\xba\xb5\x09\xd4\x4f\x14\x65\x08\x24\x5a\xaf\x42\xfd\xb4\xee\x58\xb7\x96\x52\xcb\x78\x34\x70\x2c\x65\x3d\x2f\x9a\x76\x1e\x0d\xa4\x52\x6f\x7a\xb0\xbe\xf1\xb2\x89\x18\x91\x08\x73\x59\x47\x30\x5a\x8b\x97\xaa\xab\x71\xaa\x6d\x40\x62\x55\x1e\x9b\xed\x1c\x26\x29\xcf\x78\x9c\x43\x12\x47\x33\x5a\x6f\xf9\x28\xe5\x1c\xce\xf9\x2c\x03\xdc\xb8\xc3\x04\xed\x1f\x71\x16\x46\xc3\x6c\x8a\x96\x03\x8b\x03\x6c\x4e\x17\x09\x59\x9e\x24\x74\xdb\xa2\x2e\x25\x5a\xd0\x73\x76\x7d\x75\xe8\x95\xe6\x57\x46\x0a\x6f\xc2\x32\xe1\xd3\xa4\xab\x0f\xea\x4d\xda\x71\x25\x4b\xd1\x4f\xe2\x2c\x4f\xa7\x3e\x0e\xf7\x29\x82\xcc\xe0\x32\xa4\x73\x36\x22\x08\x87\x71\x92\xf2\xa0\x45\xe3\x79\xd6\x82\xed\x28\x52\x87\x69\x63\x11\x1a\xab\x94\x2c\x47\xb2\x4a\x81\x15\x77\x64\xc4\x40\x66\x29\x03\x3f\x49\x53\x9e\x4d\xd0\x26\xb5\xfd\x03\x68\x12\x4a\xcb\xd4\x13\xf7\x5c\x4c\xd9\x79\x64\xef\x22\x86\x31\x9b\x41\x9f\x83\xbe\x36\x44\x09\xc7\x36\xd2\x44\x0e\x5a\x40\x34\x32\xd5\xb5\xbc\x1d\xcd\x14\x00\xd9\x67\x89\xbc\x42\x93\x3b\x3e\xaa\x2f\xbd\xb9\x5f\x88\xf8\x2e\xc9\x2e\x83\x87\x93\xce\x18\x88\x71\x04\x61\x36\x89\xd8\x0c\x26\xd3\x74\x92\x64\x3c\x6b\x59\xea\x00\xb7\xbd\x86\x34\x37\x35\x5a\x4f\x1b\xac\xa0\x84\xab\x72\x5f\x93\xd6\x0a\x32\x70\x81\x19\x4c\xf2\x58\x36\x85\xab\xec\xdd\x6a\xa3\x56\x94\x2b\x4a\x36\x0d\x4d\x54\x5e\xa6\x6b\xb3\xa2\x0c\x97\xbf\x16\xf5\xee\x3f\x8e\xba\x7b\x87\xbd\xfd\xbd\x47\xc0\x22\x0a\xb0\x18\x24\x29\x5c\x72\x12\x24\xdc\x74\x02\xc1\x40\x63\xf3\xa3\x52\xbb\x1c\xf1\x94\xb7\x94\x69\x87\x8c\x23\x63\x06\xcd\x06\x44\xfa\xbc\x05\x1f\xa6\xa9\x3d\x09\x39\xcf\x72\x3a\xdc\x90\x5c\x33\x31\x59\x28\x36\x79\x3a\xcd\x47\x33\x0f\x18\x76\x90\xf3\x74\x8c\x7d\xd0\x5c\xcf\xe0\xd1\xa3\xe1\x94\xa5\x41\xcb\xda\x09\x92\xf3\x06\x95\xe9\x69\x39\x4b\x26\x79\x73\x4b\xf8\xa6\xc2\x0c\x47\x9b\xd3\x12\x43\xdc\xfc\x8f\x69\x78\xc1\x22\xfc\x2b\x4f\x14\x06\xfe\xc7\x94\x45\x0d\xb4\x92\x3c\xd5\x01\x1d\x2e\x1c\x7c\x2d\x38\x4a\x88\x66\x79\xc9\x11\xcd\xf4\x65\x81\xa0\x5c\xb4\x9f\x66\xd6\x21\xac\x25\x40\xbb\x16\xfe\x2a\x52\x6d\x89\x4b\xce\x1b\x17\xe2\xd5\xa5\x63\x53\x92\xc1\x4f\x15\x4d\x21\x94\x12\x48\x20\xd5\xf2\x58\xef\x74\xea\x9e\x61\x4c\xd3\x32\xb6\x93\x73\xeb\x14\xf7\xbd\x38\xc5\xd1\xc0\xc3\x7c\x56\x9a\x15\x72\xcf\x25\x97\x1e\xf8\x09\x4f\xfd\xf0\xc2\x02\xc5\xb5\x8c\x28\x3a\x1d\x7b\x12\x04\x0b\xe7\xae\x14\x39\x25\x2b\x36\xb4\x6d\xef\x5f\xd3\xdc\xba\x0e\x11\xab\xfc\x51\x47\x03\x35\xaf\x5d\xa4\x0e\x53\xa8\x27\xe4\x8b\x60\xc4\x0b\xc1\x88\x38\x89\x9f\xce\x65\x06\x49\xbf\x14\xd3\xfc\x32\x81\x84\xbc\x36\xe6\xf0\x4d\x0d\x49\x23\xa2\x9a\x7b\xd4\x51\x5d\xc5\x89\x9c\xf9\x65\xd9\xa2\x1a\xd8\x9c\xb9\x1e\x49\x89\x39\x1d\x9b\x39\x32\xec\xee\x3a\x16\x3d\xb2\x58\xa4\xba\x94\x56\x81\xe4\xd4\xdf\xb4\xc8\x88\x05\xe4\x97\xd7\x32\x83\x80\xf3\x89\x11\x95\x94\x47\xe2\x30\x6b\x09\x0a\x42\xdc\x8c\x2b\xba\x85\xcd\x96\x25\xd0\x58\x0b\xe7\x6c\x11\x38\x1d\xb8\x9a\x4b\x73\x4a\xa3\x32\x0c\xd3\x45\x16\xc7\xac\xaa\x43\xa3\x04\x8a\x43\xb0\xaa\xbe\x7d\x20\xa8\x0b\x6e\x36\x0e\xab\x7b\x77\x34\x56\x85\x35\x26\x4d\xfa\x42\x32\x84\xce\xc3\xae\xc6\x89\x3c\xb2\x93\xf8\xac\x0b\x8b\x23\x0c\xd0\x54\xf2\x59\xa4\x76\x67\x5c\x46\x46\x2d\x17\xd4\x3e\xea\xfc\x0e\xaa\x9a\x82\x84\x97\x45\xbc\xe8\x92\x13\x96\xb6\xeb\x1e\x15\xe6\x22\x3c\x7e\x6c\x2e\x0b\x35\x9a\x02\x1e\x7d\x1b\x5b\x18\x5f\x93\x3a\x5f\xa3\xa3\x22\x0d\x6b\xa3\x05\x3d\x61\x44\xb9\x66\x07\xee\x36\x0c\x5e\xb3\x9c\x4b\x85\xe1\xd9\x66\x8a\x02\x11\x58\xac\x5d\x29\x1c\xe0\x29\x0c\xdb\x46\x59\xe2\x22\x10\x7e\xc2\x94\x0f\xf0\x40\x2c\x6d\x9a\x0c\x4d\xe9\x3c\x1c\xf3\x96\x3b\x66\x79\x20\xc0\xd6\xf6\xb0\xed\xe2\x79\x23\x17\xe0\xad\x21\xcf\x8f\xc2\x31\x6f\x34\x1d\x6e\x9b\x62\xc3\x81\x67\x8b\x18\x70\xc0\x87\xdd\xcf\x93\x6f\x62\x81\x83\xc2\xc4\x4c\xd1\xd0\xb3\x64\x9a\x8a\x9b\x26\x81\x66\x22\x9c\xff\x21\xcf\xa0\xf1\x2f\xe1\xe0\xfe\x97\x07\xff\x1a\x4f\xa3\x3c\xc4\x63\x27\xfe\x11\xb1\x2c\xef\xe1\xd9\x15\xff\x10\x46\xf1\x0e\xcb\xf8\xbf\x9a\xd5\x3c\x14\xdd\x57\x70\x51\x56\x5c\xc3\x47\x49\xa1\xc3\x44\x59\xf6\xf8\xf1\x4a\xc9\xbb\xd9\x92\x51\x78\x2e\xd3\x45\x59\x25\xbc\x1e\x9a\xdb\xc4\x14\x57\xb6\xd2\x3c\x70\x5b\x99\xe2\xca\x56\x86\x59\x6e\x33\x53\x6e\xa4\xe2\x79\x0b\xf6\x69\xcb\x9c\xb0\x30\x95\x3e\xee\x20\xa1\x0d\x93\x6c\x76\x3c\xd6\xa8\xeb\x78\x21\x0a\x78\xb4\x16\x93\x5c\xf7\x0a\x42\xe1\x8b\x78\xb2\x82\x5a\x28\xcc\x97\xad\x1d\xe8\xf2\xfd\xeb\x57\xd5\x81\x36\x1b\x4c\x17\xcd\xc2\x10\x01\x1a\xc6\x29\x58\xc6\xa0\xeb\x1c\x1c\x45\x17\x00\xa9\x3e\xf8\x19\x2a\xf4\x14\x6c\x42\x79\x7f\x56\xec\xea\x0d\x04\x53\x2c\x95\xa8\x3c\x1a\xe2\xc2\x73\x36\xc1\xb3\x64\x9a\xb2\x59\xe6\xc1\x65\xca\x26\xb8\x04\xc2\x54\x9c\x2b\xa3\x59\x18\x0f\x05\x22\xeb\xae\x22\x23\x57\x3c\xc8\x9b\x1d\xce\xfc\x91\x08\xe6\xf3\x53\x8e\x13\x38\xe1\xe9\x20\x49\xc7\xd8\x85\x68\x4a\xc6\x72\x32\xc9\xc3\xb1\x7c\x65\xa3\xee\xdf\x32\xb1\x6a\xa9\x73\x44\x41\x7e\x27\xa3\x7c\x66\x13\xb4\x04\xc0\x1f\x71\xff\x9c\x66\x46\xa0\x9b\x7b\xb7\x05\x0d\x76\xce\xcc\xad\x58\xb3\x05\x7b\xfc\x02\xe5\x44\x10\x04\xfd\x30\x66\xa9\x44\x22\xb4\x70\x48\x57\xd8\x68\x86\xbd\x89\x12\x96\x3f\xd9\x96\x7c\xc8\x47\xc9\x74\x38\xf2\x20\x0b\x51\x40\x78\x6b\xd8\x82\xd5\x35\x62\xfa\xd3\x35\xe8\x4f\x73\xc1\x23\x81\xa9\x1f\xe6\x30\x61\x79\xce\x53\xeb\xda\x44\xef\x45\xad\xe2\x8e\x21\x6e\xa5\xec\xfd\x82\x4a\xcc\x2e\x50\x14\x1e\x3d\x1e\xdd\x0a\xe9\x30\xa5\xf3\x5b\x3e\x52\x72\x6b\xf9\xb0\x68\x9c\xcf\x36\x68\xa0\xf0\xf5\x6b\x31\x68\x7a\x4e\x83\x17\xcf\xa9\xc1\xbc\xad\x0c\x0f\xa1\xc7\x61\x9c\xbf\x14\x6f\xa5\xe4\x9a\x16\xf7\x5d\xcd\x72\x60\x36\x00\x14\x5a\xe8\xf5\x2e\xdb\x94\xf6\xc2\xef\xe1\x4d\x92\xd2\x1d\xbe\x70\x56\x08\x19\x10\x1a\xc0\x8e\x94\x10\xe3\x92\x76\xb4\x57\x58\xe6\x02\x99\xbb\xd6\x47\xec\x02\xdb\x69\xa1\x8b\xa7\xe3\x3e\x4f\x71\x65\x24\x97\x08\x62\xab\x7d\x96\xc1\x05\x4f\xc3\x41\xc8\xe5\x9e\x40\x3b\xc6\x35\x97\xc5\x74\xe1\xda\xf4\xac\x8d\x85\xe7\x88\xfe\x9c\xcf\x24\x41\x0d\x16\x09\x79\x23\xc9\x89\xb9\x8f\x96\x54\x1a\x4a\x57\x10\xb5\x49\xd2\x00\x39\x69\xef\x65\x72\x41\xa3\xec\x92\xbb\x55\x89\xb5\xed\x33\x39\xe7\x33\x11\xb6\xc1\x62\xcb\x3a\xaa\x6b\x52\xeb\x6a\x78\xb3\x16\xec\x25\x39\x17\x41\xe6\x02\x13\xf3\xfd\x64\x1a\xcb\x43\x0a\xa9\x90\x98\x8d\x85\xdb\x09\xc8\x3f\xeb\x32\x27\x91\xb7\xaf\x59\x49\xe0\x0b\x26\x12\x6a\xb9\x6b\x6d\xa4\xea\xab\x0a\xb2\xfb\xa0\x23\x7f\x7e\xfd\x0a\x5f\x94\x1f\xe3\xe4\xd4\xb3\xfc\x17\x27\xa7\x57\xd2\xe1\x4e\x37\x8f\x04\x23\xb7\x24\xd1\xb6\xa5\x76\x1d\xe9\x67\x96\xb4\x19\xaf\xbe\xdd\x06\x09\x7e\xba\x6e\x3c\xe5\xc5\x7a\x94\x54\x81\xd5\xec\x5a\x12\x6f\x69\x78\x15\xe6\x24\x98\xef\x9b\xae\x98\x51\x2a\x0a\xe9\x6b\xa3\x0e\x79\x85\xae\x08\x40\xf7\x23\x87\x2d\xbb\x48\xfa\x9f\xba\x28\x30\xd7\x9a\xd2\xca\x4f\x6c\xc7\x03\x6c\xab\xd7\x5c\x0d\xb1\x9a\x6e\x18\x5e\x40\x2d\x70\x43\x3b\x91\xd6\x95\xc6\x27\x7c\xb3\x96\x5f\x42\x53\xe9\x41\xdf\x50\x26\x68\xfe\x18\x66\x61\xce\x03\xd1\x5f\x56\x0c\x5e\x54\x3b\xa9\xf8\xcb\x78\xfb\xbe\x7e\x85\xbe\x03\xd0\x77\x01\x9a\x95\xb2\xd6\x6e\x23\xea\x24\x96\xf6\xe5\x24\x0d\xc7\x61\x1e\x5e\x70\xb1\x76\x85\xde\x21\xd7\x65\x5f\xac\x4a\x49\x8a\xb4\xd9\x3e\x28\xf0\x06\xa3\xf7\x6f\xa5\xe2\x7e\xd3\xe9\x56\x86\x5f\xaa\xab\x2f\xb9\xc1\x3f\x7e\xac\x78\x3b\xe4\xf9\x07\xc5\x5e\x14\x51\xb1\x72\xaa\x2b\x0b\xa8\xf5\x88\x48\xfc\x7b\x38\x95\xb8\x6c\xec\x39\x65\xda\xe1\xde\xaf\xac\x17\xb1\x87\xc2\xf6\x91\x00\x8f\x1f\xc3\x23\x09\x4c\x03\x6c\x3c\xb2\x6a\x54\x45\x35\x1d\x34\x63\xaa\xa9\x58\x09\x0c\x3a\x32\x82\x46\x88\x0c\x93\xe2\xdd\x2f\x94\xf7\x9b\xce\xf3\x14\xfb\x7c\x68\x89\x8b\x73\xcd\x70\x8e\xb8\x85\xd4\x51\x26\x23\x33\xd6\xf3\xbe\x5b\xd3\x37\x35\xa8\x29\x43\x29\x05\x37\xd9\x13\xc8\x6b\x1e\xc6\x7e\x92\x4e\x92\x94\xe5\x3c\x53\x28\xec\x3d\xa0\x29\x79\x70\xae\x62\x69\x69\x2e\xcf\x55\x14\xed\x3c\x71\xac\xda\x32\x6e\xb0\x5b\xac\x00\x9c\xb3\x56\x96\xa4\xb9\xb8\xb0\x3c\xef\x5b\x7f\xb4\xdb\xff\xf7\xff\xfe\x5f\x7f\xc4\xd9\x04\xd1\x92\x9b\x45\x85\xf2\x86\xd0\x01\x43\xe9\x53\x58\xdf\x82\x90\x6e\x0b\xb7\x20\x7c\xfa\xd4\x8e\xdd\x3d\xd7\xc1\xbb\xe7\x14\xbd\xbb\xe2\x68\x38\x27\xa2\xa6\xdd\x5e\xb0\x77\xcd\xd9\xb6\x14\x99\x93\x24\xcb\xc2\x7e\x34\x23\xfd\x15\x67\xe1\x05\x17\xee\xa0\x9b\x13\x8d\x43\x45\x38\x1d\x48\x5c\xf2\x7d\x9c\x9c\xf3\xd9\xa9\x07\x7d\xf9\x73\xa1\x36\x5a\x34\x5e\x47\xcb\x0b\xef\xf7\x4b\xc7\x23\x38\xd7\xd7\x85\xc3\x61\xf1\x4c\x0c\x31\x8c\x95\xcf\xcb\x76\x75\xc5\x49\xfe\xfa\xc6\xde\x2e\xbb\x51\xc1\x0f\xb8\x04\x32\xa3\x7a\xef\xd2\xe5\x65\xf7\xed\xb8\x09\x5f\xcf\x77\x7c\xc9\x5a\xd7\xf7\x55\x2e\xb4\xe2\xe4\xca\x95\xdf\x3c\xce\x9b\x79\xc4\xca\x04\xd4\xbd\x0a\xaa\xcc\x3e\x8c\x73\xfd\x83\x10\x17\xb9\x31\xcc\x77\xa8\xbb\xf5\xf3\xbc\x5c\xd5\x37\x07\xcb\xca\x4e\x56\xed\x68\x5c\x0a\x55\x85\x8b\xfd\x16\x6e\xe4\x8e\xed\x6a\xcf\x2a\x9d\x88\xed\x36\xac\xaf\x39\x4c\xbb\xd6\xf9\x2e\xe1\xcc\x2a\xc3\x2e\x56\x4a\x87\x84\x47\x9d\x4e\x0b\x2c\xe9\x5c\x4a\x92\xca\xcb\x6f\x8e\xbb\x76\x59\x84\x15\xee\xf8\x5b\xf9\xe3\x5d\x87\xfc\x35\x0e\x59\x85\xa2\x4b\xaf\x0c\xc3\x24\xae\xf0\x5b\x6a\x27\xb2\xa4\xeb\xeb\x57\x78\x34\xc7\x89\x6a\xe9\x48\xd9\xe8\x1a\x53\xd2\xf6\x8e\x1a\x63\x52\x38\xc8\x4e\x8b\x81\x12\xda\x2a\xc6\x19\xb6\xcd\x66\xea\x2d\x4f\x67\xf6\xbb\x93\xd2\x49\xb7\x48\x72\x85\xa9\x4e\xf1\x22\xe0\x53\xe4\x59\x43\xc7\x25\xb5\xdb\xd0\x23\x3f\x55\x0b\x48\xfa\x2c\x9c\xe4\xbb\x80\x20\xe1\x59\x5c\xcf\xe1\x32\x49\xcf\x85\x7e\x4f\xd3\xe4\xd2\xdc\x88\xb7\x6c\x86\x88\x28\x27\xb4\x1c\x8d\x81\x77\xfd\x39\x69\x65\xa5\xcc\x05\x62\xe0\x97\x2b\xb5\x7b\x89\x43\xb5\xde\x91\x8c\xcf\x3d\x4f\x67\xaf\xa2\xc4\x3f\x6f\xf4\xf1\x7f\xd1\x85\x0c\x7b\x12\x01\x69\x86\x73\x04\xd1\x90\x11\x27\x45\x3e\x70\x19\x6c\x57\xdc\x04\x25\x1e\xb7\xcf\x51\x9a\x5c\x66\x8d\x6c\x94\x4c\xa3\xe0\x08\xff\xf0\x04\xf2\xb9\x82\x6f\xce\x72\x5b\x2b\x6e\xf0\x0c\xb5\x9b\x13\x61\x6c\x6e\xc9\x8f\x66\x13\x2e\x6e\xc6\xeb\x35\x6a\x51\xd3\x19\x2b\xb4\x59\xcf\xc0\x20\x70\xa4\xb4\xe8\xab\xab\x8a\xd6\x31\x41\x74\x76\xc0\x1f\x58\x8d\xe8\x3c\xa2\xf1\xea\x48\xc2\xe2\x04\xd0\xf8\x0c\x36\xe3\x3d\x7c\xfc\xd8\x4c\xae\x0a\x8f\x81\x46\x1d\x56\x0b\xc5\xab\x50\x6f\xb6\xea\xb0\x09\xf5\x56\xbd\x69\x07\xa6\x00\x40\x43\x21\xfe\x59\x44\xad\xe8\x8e\x04\xb4\xe6\xad\x35\x33\x64\xfa\x2b\x19\x5a\xa8\x66\xea\xef\xc3\x2c\x43\x13\x4e\x93\xcc\x95\xde\xb0\xba\x6a\x3a\x6f\xcc\xa6\x19\x4f\x3f\xc8\xb8\x0c\x2b\xb2\x50\x30\x5c\x73\xc1\xe2\xb7\xb2\xd9\xc3\xec\x38\xbe\xa4\x37\x3d\x5a\x39\x41\x07\x1e\x15\x08\x97\xe7\x30\x31\xf3\x96\x4a\x50\x18\x4a\x0a\xae\x02\x87\x9c\x29\x64\x83\xe3\x5f\xa5\xf3\x51\x15\x19\xda\x13\x57\x35\x38\x5d\xb9\x84\x6e\x6d\x1a\x1f\x5d\x25\xb1\xd7\xcd\xc7\xdb\x24\x87\xa9\x24\xef\x9a\xb9\xa0\xc1\xcc\x1d\xb8\x25\x83\x92\x9e\x47\x4b\x92\x0f\x8d\x6a\x76\x36\xdd\x25\x6a\xc2\x68\xaf\xa4\xbd\xbc\xbe\xde\x82\xae\xea\x96\x6e\xa5\x64\xc4\x10\xe9\x93\x4d\xcb\xa4\x91\xca\x44\xea\x0f\x9a\x6a\xdc\x7d\xe7\x6d\xc5\x02\xdc\xda\x82\x55\xcb\xf6\x13\x11\xab\xca\xa2\x27\x6d\x2e\x02\xf9\xec\x22\x47\x1d\x29\x0d\x26\xe2\x24\x94\xea\x12\x8d\x0c\x6f\xa5\x5d\x62\x05\xbe\x90\x33\x3c\xcc\x80\xc5\x71\x32\xa3\x63\x66\x42\x8f\xe0\x39\x24\xd3\x3c\x0b\x03\xf9\xb4\x5f\x86\xc9\xeb\xdb\xde\x84\x67\x7b\x49\x2e\x58\x78\x37\x84\xd3\xde\xb1\x98\x72\xd9\x79\x38\x28\x86\x51\x37\x78\x9a\x36\xe1\x8b\x8a\x80\x6d\xca\xb9\xe1\x69\x4a\x59\xb9\x28\x12\xde\x9c\xb3\xcd\x8b\x1a\x3a\xc1\x7e\xfd\x6a\x65\xcd\xd0\x0f\x57\xe4\x29\xdc\x64\x80\xd2\xcf\x4a\xf1\xd0\x16\x92\x9f\xc8\x3e\x7b\x8a\x13\xb6\xf6\x37\x79\x08\xd6\x6c\x12\x0a\xe1\x14\xc3\xbf\x0b\x1b\xd1\xb9\xc8\x1d\xfc\x6f\x96\xbe\x82\xde\x20\xd5\x36\x5f\x5c\x9d\x7a\xcf\x97\x79\x23\x6d\xed\x47\x92\xad\x7e\xca\x59\xce\x2b\xdf\xc6\xb4\xdb\xe0\xc6\xff\x8b\xe7\x97\x68\xa0\x04\x2c\x0d\xd4\xfb\x64\xa0\x97\x50\x75\x29\x76\xb8\xfd\x14\x9f\x69\x58\x31\xa4\x32\xf4\xd5\x17\xe1\x69\xd3\x09\x4f\x77\xf2\x44\xbf\x60\xc1\xe2\x16\x95\x9e\x41\xc7\x54\x9b\x3a\x6d\xea\x19\xb9\x10\x03\x68\x68\x60\x03\xe3\x69\x63\xcc\x0a\x41\xdc\x74\x52\xde\x50\xfe\x03\x5f\xc7\xa5\x91\x66\x8d\xa7\x63\x9e\xb2\x7e\xc4\x37\x85\x8d\x64\xaa\x70\xad\x89\x0a\x5a\xb9\xba\xdc\x4f\xe2\x41\x38\x9c\xa6\xa6\xce\x75\xce\x0a\x59\xda\x5a\xb1\x3c\xd2\xed\x36\x24\x51\x00\x99\x3f\x4a\x92\x08\xb2\x51\x38\x26\xa1\xc5\x32\x15\x5e\x7e\x6f\x9c\xa4\xaf\xec\xf3\xf1\x64\x27\x4f\x4a\xdf\xf8\x16\x14\xab\x5a\x87\xdf\x15\x1c\xae\x9e\x18\xb2\x98\x24\x86\x46\xb3\x02\xa6\x65\x87\x84\x76\xa8\x52\xe9\xee\x2b\xef\xcb\xd5\xa9\xf7\xfd\x32\xb2\xbc\x80\x39\xe6\xe9\xd9\xd0\xf1\x3d\xb3\x74\x68\xbd\xb7\xc6\xbf\x3a\xd6\xc5\x29\x51\xea\x54\xb7\x28\xcb\x89\xbb\x36\x2a\xa0\x06\x61\x14\x5d\x0f\x95\x72\x16\x1c\xf7\xe2\xfc\x65\x01\x14\xad\x5b\x31\xec\x17\x37\x4c\x73\x30\x49\x13\x9f\x67\x99\xa7\xd3\x1d\x38\xef\x9e\xff\x9e\xcc\x28\x74\xa5\x17\xfb\x2d\xba\x7a\x11\x6e\x68\xfa\x1e\x83\x9f\xc4\xe2\x39\x6f\x92\x66\xad\xbb\x7d\xf9\x2c\x92\x2c\x50\x72\x98\xdb\xbd\x7c\x46\x04\x35\xf5\x90\xb6\x46\x8f\x9f\x6f\xf3\xf2\x59\xc5\xbe\x95\x1f\x3f\xdf\xe8\xe5\xb3\x0c\xc6\x5d\xf0\xf8\xf9\x06\x2f\x9f\x11\xd9\x35\x8f\x9f\x97\x78\xf9\x4c\xef\xa3\xef\xff\xf1\x33\x45\x67\xc7\xf7\xf1\xf8\x59\x26\xdc\x59\xf2\xf1\x33\xa5\x00\x38\xb8\xed\xe3\x67\x6c\x5d\x7c\xff\x7c\xeb\xc7\xcf\x88\xac\xfc\xfe\x59\x3f\x7e\xa6\x1c\x41\x1f\x7e\x3b\xe8\xbd\x7d\x77\x04\xef\xf6\x77\x5f\x77\x17\xbc\x88\x46\x5c\x4b\x3f\x8a\x5e\xf4\x22\x9a\xf8\x73\xc3\x47\xd1\x73\x5f\x44\x23\xb2\x9b\x3c\x8a\xa6\x68\x8d\x5c\x06\x43\x75\xa0\xfd\xdd\x49\x16\x7c\xfa\xee\xb4\x3d\x34\x09\xc0\x04\x88\x6d\x01\x5a\xaf\x84\x1f\x85\x99\x8c\x45\x30\x2f\x84\x8d\x05\x68\xe7\xf4\x74\x53\x85\x88\xa4\x20\xe5\x6c\x9e\x4e\x32\x4f\x89\x44\xd8\x74\xea\x3d\x85\x49\xe7\x19\x9e\x36\x9b\x15\x69\x26\x55\xab\x4f\x49\x18\x37\xea\x50\x77\x8f\x9c\xd8\xfb\xba\xbe\x20\x13\xb7\x5f\x1a\xa5\x2a\x17\x69\x4c\xb0\xb6\x90\x00\x45\x3c\x5c\xd4\x23\x6e\xa5\x7c\x12\x31\x9f\x37\x6c\x36\x7a\x86\x51\x9f\x6d\xab\x55\x5c\x17\xd7\xbf\xfb\xae\xde\xd4\x4f\x58\xbe\xab\x9b\xbb\x08\xba\xb3\x88\x78\xac\x6b\x3f\x8b\xba\xec\x32\x24\x5f\xcb\x67\xc3\x18\x9f\x65\x1c\xea\xdf\x65\xf5\x4d\x9d\x56\x54\x86\x89\xa4\xc3\xec\x24\x5c\x5d\x3d\xd5\xaf\xa0\x24\x68\x60\x40\xf7\xe8\x4a\x6b\x3e\xe8\xa7\xfa\xa6\xb6\x8c\x8c\xf7\xc7\xf1\x8a\xfd\xfd\x70\x7f\xcf\x4a\xf7\x57\x46\x65\xb9\x88\xce\x9a\x55\x18\xea\x27\x3b\x61\x4a\x2f\x8f\x4f\xeb\xe5\x84\x76\x32\x75\xdb\x66\xf1\xe2\xfc\xb3\xe5\x8a\x6b\x3a\x07\x85\xcf\x72\xbe\x4e\xc2\x53\x2b\xdf\x8c\x2e\x5d\x5d\x35\x09\x66\x44\x68\xc2\xde\x34\x8a\x90\xa5\x5f\xbf\xc2\xa3\x30\x13\xb6\x68\xe3\xb3\x75\x5b\x8f\x53\xbd\xda\x91\x8e\x12\xd5\xb1\x1d\x92\x50\x00\x51\xf2\xf9\xb9\x69\xbf\x2f\xb3\xa3\xb8\xc4\xf1\x83\x14\x1a\x4b\xcf\x45\xf0\x1a\x93\xcf\x4f\x40\x9c\x93\x45\x24\x9b\x78\xe5\x43\x8e\xfb\x03\x6a\x9d\x21\x1c\xee\x6f\x21\x0f\x8c\x99\x74\x39\x0a\xfd\x11\x5c\x32\xac\xa7\xe7\x7b\xfd\x99\xe2\x1c\xb5\xed\x0d\xe0\xe9\xd3\x38\x79\x1a\xf0\x49\xca\x45\x02\x45\xdc\xa0\x32\x2e\x42\x26\x63\x15\x10\x09\x71\xf2\x34\x99\xb4\xf4\x82\x57\xf0\xdc\x59\xf3\xb1\x07\xe3\x6c\xa8\x4f\x16\xdb\xb8\x7f\x11\xff\x35\x7a\xba\x37\x0d\xe3\x61\xa6\x76\x7a\x69\xdf\xe0\xfe\x92\xe5\x2c\x25\x88\xe9\xa4\xa5\x13\x0c\x1c\xab\xb3\x91\x4a\xa9\x23\x1b\x94\x5c\x9d\x8a\x88\x92\x7b\xb6\x44\xb2\xa6\x73\x4e\x7a\x5a\x2b\xef\xa1\xf6\x7c\xc8\x5e\x5b\x71\xf2\xda\xe2\x94\x72\x98\x16\x69\x89\x1d\x75\x82\xdc\x27\xf7\x9e\x76\xc7\x5a\xa1\xd8\x92\xa6\xa0\x61\x8b\xde\x23\xd1\xc4\x0d\x2a\x51\x24\xd0\x59\xda\xa2\xc2\x5e\x3b\xc6\x9d\x29\x1c\x5a\x38\x4a\x1d\x45\x62\xa2\x6e\x34\xaa\x94\xf9\x7c\x0e\x2a\xb4\xdf\x93\x88\x0b\x98\x2a\x44\x65\x50\x5e\xee\x53\xfe\xd4\x2c\x70\x7d\xe5\x16\xc7\x16\xcc\x85\xed\xbc\x36\x0c\x93\x2b\x05\x19\x1c\xf0\xfe\x94\x94\xf4\x97\xab\x2d\x53\xd0\x8d\x2f\xc2\x34\x89\xb7\x2c\x99\xed\x4f\x87\x51\x32\xb4\x45\x36\xe3\xb9\x9d\xce\xc2\x48\x9b\x8d\x42\xde\xe4\xda\x45\xd0\x51\x92\xdb\xe2\xf1\x45\x6b\x6f\xff\x75\xf7\xec\x75\xf7\xd5\xf1\x5b\x54\x16\xe2\x09\x62\x46\xe9\xdc\x33\x9e\xb7\xf2\xe4\x78\x82\xe7\x2a\x96\xc9\xcc\xa1\x34\xc7\x82\xea\x93\x8c\xe7\x8e\xda\xc1\xc9\x93\x01\xbe\xf5\xdf\x7f\xef\xa3\xda\x40\x4c\xab\x40\x7f\x79\x50\x0f\xeb\x4d\x71\x81\xe1\x92\xe8\xbc\x2f\x9e\x84\x81\x45\xe1\x24\x0c\xb6\xb4\xd6\xd4\x9d\xda\x6c\x28\x26\x89\x1d\x67\x43\xe1\xa7\xb6\x76\x77\x39\x43\x3a\xd3\x60\x71\xc1\x94\x25\xa1\xfe\x5d\x06\xdf\x05\x9b\xf0\x5d\x56\xf7\x84\x4a\x99\x84\x81\x58\x7a\x5a\x40\x2a\x95\xe6\x7c\x2a\xaf\x2a\x15\xa7\x05\xaf\x14\xe8\x13\x4a\x9f\xd6\xf5\x47\x49\x66\x3d\x95\xc2\x63\x9a\xf8\xb5\x05\x47\xa9\x88\x2a\x9d\xa4\x61\x9c\xdb\x30\xd3\x1c\x9b\x4a\xfd\xd4\xe7\x59\x0e\x97\x6c\x06\x32\xca\x80\xc3\x30\xbc\xe0\xa2\x2e\x08\xf1\x04\x4a\x4f\xba\x66\x13\x9e\xe9\x9c\x6d\x94\xde\x1b\xbe\x88\x0d\xe3\x0a\x8d\x0d\xb2\xd7\x13\x6d\xe0\x8b\x2e\x93\x69\xde\xaa\x84\x9f\xe4\x19\xec\x4b\xef\x9c\xce\x45\x6d\x87\xe2\xb3\x28\xa7\x50\xfc\x11\x51\x3b\x11\x78\xda\x2b\xed\x27\x10\xf1\x21\xf3\x67\x9b\x40\x2e\xaf\x6c\x94\x5c\xbe\x0b\x83\x80\xc7\x1e\x2e\x9c\x7c\x84\xe7\xa0\x28\x49\x33\x3b\xfb\x9b\xda\x93\xa8\x85\xc9\x48\x4b\x97\x9c\xb4\x4f\x28\x0a\xa4\x36\xf3\x73\xdc\x31\xc5\x4c\x65\x9c\xc7\x14\x5d\x27\xfe\xca\x67\x51\xf8\x27\xdf\x54\xbf\xec\x25\x3b\xd8\xdb\x8a\x9c\xe5\x76\x5b\x52\xd7\x6a\xe9\x57\x15\x05\xdb\x0e\xad\x9b\x67\x4d\xec\xa2\x45\xf4\x3a\x99\xd9\x37\x4e\xb7\x16\x34\x7b\x2e\x9a\x89\xf1\x39\xed\x9e\xe9\x76\x61\xf6\x2a\x49\x22\xce\xe2\x06\x8d\xd3\xba\x9f\xb3\x09\x03\x42\x64\x78\x27\x52\x14\x64\x85\xb7\x1d\x76\xee\xde\x76\x1b\x86\x49\x4e\x69\x46\x25\xaf\x6a\x72\xba\xd4\x05\x0f\x2d\x23\x99\x6f\xbd\xe1\xe7\x9f\xad\x0c\xbb\x22\xfa\x85\xd6\x78\x99\xe1\x45\xad\xe4\x52\xd6\x6c\x96\x49\x75\x82\xaa\x8a\x4d\x89\xa9\x4d\x97\xc1\x1b\xf3\x80\x05\x2b\x9b\x05\xbe\x2e\xc4\xef\x4f\xb3\x3c\x19\xf7\x84\x44\xa9\x96\x76\x99\xb5\x03\x60\x7b\xab\x1b\x31\x12\x21\x38\x94\xd8\x83\x7e\xfb\x35\xcc\x47\x24\x44\xd6\x9b\x6e\xa1\x8d\xc4\x47\x20\x05\x2b\x51\x72\xcd\xf0\xb6\x56\xae\xb4\xca\x0f\x75\xb7\xf2\x37\x69\x5c\xc9\x94\x72\x3c\x6e\x5d\x86\xe7\xe1\x84\x07\x21\x33\xa9\xed\xb6\xf7\x0e\x7b\x67\x3c\xf3\xd9\x84\x9f\xf9\x49\xc0\xff\xbf\x61\xca\x26\xa3\xd0\xcf\x56\x24\x12\xc3\x0d\x9c\xff\x7a\x3f\x89\x82\x3a\x6c\xc2\xc9\xba\x07\x1b\x1b\xb4\x18\xea\x61\xce\xa2\xd0\xa7\xd2\x67\x1e\x6c\x3c\x13\xa5\x22\x68\x3e\x8c\x39\x55\x3c\xf7\x60\xe3\xb9\x04\x8f\x2f\x78\x9a\x89\xe2\xbf\x79\xb0\xf1\x37\x51\x7c\x39\x0a\x73\x51\xf8\xec\x6f\x1e\x3c\xfb\x41\x94\x0e\x53\x3e\xa3\xc2\x1f\xd6\x4c\x61\x3f\x62\xfe\xb9\x00\x75\x4a\xa7\xb2\xfd\x73\x53\xe8\xcf\x58\x2c\x0a\x5f\x38\x48\xb9\x2c\xdd\x30\xa5\x63\x36\xe4\x71\xce\x44\xf9\xf7\xa6\x3c\xe5\x62\xc4\xcf\xd6\x4d\xd9\x8c\xa3\xb9\x27\x8a\x9f\x51\xb1\xba\xde\x78\x9d\xc4\x75\x91\x96\x58\x12\x84\x16\xec\x45\x28\xd4\x69\x12\x83\x3f\x0e\x5a\xfc\x33\xd7\xec\xc5\xc9\xe7\x9a\xbd\x94\x44\x97\x45\xf5\x4d\x49\x39\x75\x26\x62\xee\xb0\x4c\x76\x2b\x86\x2b\x96\x77\xb1\x58\xfb\xd7\xb1\x82\xb8\x27\x71\x44\x84\x95\xe6\x8f\x4a\xe4\x0d\xe2\xa6\x62\x07\x15\x06\x2c\xe7\x58\xa4\x78\x21\x9f\x88\xd4\x64\xe6\xf2\x90\x12\x91\x93\xae\x8e\x44\xfe\x65\x92\x5d\x7a\x17\x51\xa7\xac\x34\x13\x6c\x8d\x1c\x13\x5b\x93\x15\x1e\xe3\xca\x78\x23\xcb\xe9\x3d\xf7\x2c\xe2\x47\xb3\x89\x75\xad\x4d\x45\x46\x86\x25\x7f\x4e\x34\xe4\xa9\xb9\x95\xc5\xa2\x82\x35\x5a\xff\x7d\xba\xb6\xb6\xde\x3f\xb1\x0e\x20\x52\x80\x05\x86\xd3\x93\xb5\x53\x34\x2f\xc6\x64\x6a\xe0\x71\xc5\xbe\x10\xbe\xbe\xf5\xba\x6c\x3d\x37\xcd\x44\x9e\x9a\xc0\xa5\xe2\xe0\xe5\x1e\x51\x39\x74\xe7\x54\x64\xb7\xa5\x17\x21\x47\xc9\x3b\x96\x8d\x1a\xf4\xbb\x61\xd5\x88\x65\x23\x69\x08\xae\x80\x00\x44\xf3\xa5\xcb\xfc\x91\x76\xaa\x36\x2e\x58\x44\x69\x43\x14\xa3\xb0\xd1\xc9\x05\x8b\x4e\xed\x94\x35\xe2\xaa\x5b\xd2\x80\x10\x05\x22\x4a\x6a\x48\x3e\x8c\x4e\xb9\x3f\x4d\x33\x7e\x14\xea\x3c\x47\xed\x36\xc8\x3b\x5e\x60\x30\x4a\x12\x11\xe3\x31\xcd\x78\xfa\x54\x26\x88\xa6\xec\x55\x42\x53\x39\x41\x1f\xed\x36\xec\x50\x84\x08\xed\xfa\xe6\x71\x5b\xec\xbc\x49\x63\x71\xa9\x35\xae\xaa\x30\xb7\xb5\xac\xa3\x85\xf5\x25\xad\x40\xa9\xff\xb4\x12\x79\x08\x23\x49\xe2\xb5\xde\x8e\xb4\xdb\xf0\x26\x44\xf3\x83\xb2\xac\xa0\x05\x42\x39\xf3\xa4\x0b\x1b\xc2\xbc\x9e\x95\xa9\xc1\x13\xa5\x58\xc5\x76\xbf\x5a\x3b\xcb\x88\x2f\x47\x63\xdb\x1d\x6e\x47\x59\x02\x03\xd3\x2b\x39\xa5\xf5\x65\x84\x72\x23\x4d\x33\x15\x95\xeb\x4b\xb7\x81\x08\xaf\x69\xa9\x0b\x69\x39\x26\xfb\x62\xe2\xf1\x63\x28\x15\xda\xf7\x1c\x9d\x8e\xa8\x77\xfc\x56\x29\x19\xf6\xce\x10\x1a\xf6\xac\xd3\x66\x64\xbd\x16\x30\xfe\xaf\x94\xe7\x4d\xe7\x7c\x8a\x1b\x6a\x51\x8e\x52\x34\x94\x1d\x29\xaa\x38\x30\xa5\x3c\xd7\x47\x23\x92\x2f\x19\x46\x2e\x2c\x51\xf0\x59\x8c\x9a\x88\x1e\x4c\x99\x70\x64\xb9\x46\x74\xe4\xba\xee\xdd\x44\xa1\x1b\x49\xd6\x07\x15\x0d\x5e\xd0\x2b\xba\xdc\x26\x64\x17\xc5\x7b\x4a\x8f\xc4\xc4\x75\xad\xf4\x1b\x8b\x49\x6a\xb9\x17\xb9\xd6\xad\x6f\xc3\xf4\x89\x00\x72\x73\x90\xb7\xc3\xf6\x7a\x47\x60\x13\x85\x52\xb0\x87\x4c\x18\xaf\x85\x7e\xc8\x73\x2b\xd6\x9a\x52\xd7\x58\xbd\x29\xc2\x7b\x5d\x1d\x86\x35\x66\xe7\x5c\x65\xea\x08\x79\x14\x64\x22\x50\x50\xdf\x19\xca\x10\x6e\x61\x42\x8c\xb3\x20\x6e\x8d\x43\x3f\x4d\xb2\x64\x90\x53\x76\x36\x1e\x3f\x9d\x66\xed\x28\xec\xa7\x2c\x9d\xb5\x43\xde\x0e\x2e\x2f\xbf\xdf\xc8\xfa\x79\xe3\xa2\x73\x91\xb5\x7e\x78\xde\x6c\xb1\x6c\xf2\x59\xdb\x50\xe2\xa8\x2e\x48\x92\xa2\xf1\xf8\xb1\x08\x1d\x37\xa9\x8e\xe4\xcd\x7b\xbd\x49\x51\xcb\x78\xca\x74\xeb\x03\x9e\xf9\x69\x38\x91\x57\xbb\x94\xbc\xa9\xe8\x95\xa0\xa9\xb6\x3b\xb3\xc7\x7f\x98\xa8\x27\x75\xc9\xc0\xd6\x2e\xb8\xde\xac\x80\x76\x9f\xc5\xf4\xbe\x61\x94\xa4\xb9\x3f\xcd\x73\x4a\x80\x2f\x82\xbd\x91\x1c\x69\x8f\xd3\xeb\x2c\xd7\x97\xe6\x2a\x96\xc2\x71\x55\x66\xf5\x11\x4b\xca\x4d\xec\x63\x95\xa9\xdc\x3e\xd6\x98\x2c\xa3\xb1\xe1\xe6\xfa\x31\xa9\x7e\x3c\x63\x42\x38\x2b\x49\xd0\x25\x8f\xda\x45\xaa\x2a\xf0\x0b\xc8\xb9\x91\x88\x02\x83\xa7\xf7\xfc\x8a\xbe\xe8\xf5\xf3\x12\x3d\x21\xdc\xf5\xfd\x90\x5d\x52\xd1\x8b\x3d\xc3\xa5\x6e\xaa\x85\xc0\x4a\x92\x4d\x6f\x3e\xe8\x9d\x2d\xd4\xeb\x9e\x58\x7a\xca\xec\xf7\xa0\x9f\x32\x9f\x2c\xb3\x93\xfa\x17\x64\xec\x55\xfd\x54\x3d\xc2\x7b\x8f\xab\x46\xbc\xaf\xcb\xd8\x4c\xa5\x96\xe4\x33\x7a\xf3\x48\xe5\x5a\xe0\xc5\xa3\x3e\x97\x42\xd5\x91\x71\x10\x59\x7d\x9d\x60\x5f\xa7\xf5\x53\x5b\x60\xa9\x3f\x93\x34\xa8\xdc\xa7\xae\x5b\xb9\x46\x06\x49\x02\x6f\x22\x7e\x8a\x3f\xe0\x4a\x9c\xca\x2c\x55\xa0\x51\xc8\x4d\x15\x85\xb2\x66\x65\xa1\x2c\xea\xce\xb0\x8f\xa5\x64\xb0\x44\x41\x40\x5f\x1a\x25\x5b\xc1\x5a\xca\x83\x30\xcd\x72\x49\x95\x80\x59\x59\x20\xa8\x0e\x19\x25\x01\x3d\x3e\xda\x59\x82\x0e\xa1\x53\x89\x0e\x15\xb8\xe7\x12\x41\x00\x95\x7a\xb1\x92\x8c\x05\x1a\xad\x52\x23\x91\x5a\x7d\xc4\xe4\xdb\x56\x39\xb7\x1a\xa0\xac\x31\x85\x04\x0a\xf3\x98\x3a\x5e\x55\x45\xeb\xa7\x4e\x4f\xf6\x6e\x0d\x3f\x16\x55\xdf\xbd\xab\x18\xd7\x79\x56\xa9\x1a\xc5\x5e\x38\x4f\x19\xd2\x40\xa8\x01\xe7\xb1\xb8\x4a\x53\xfc\x5c\xd1\x09\x0b\x27\x22\x2b\x9e\x4c\x61\xcb\x74\x16\x7d\x51\xa5\x6d\x09\xb1\xb8\xe7\x59\xc4\x9e\xbd\xb5\x53\x50\x56\x56\xce\x4f\xa7\x31\xd2\x0c\x8e\xd9\xc4\x98\xee\xe7\x7c\x36\x47\xa7\xe9\x4f\xa1\x2c\xdf\xb5\x54\x6f\x8a\x11\x46\x7a\x0c\x2b\x92\x49\xc3\x39\x08\xa4\x3c\x98\xfa\xfc\x28\x39\x0c\xe3\x61\xc4\xa5\x59\x27\xe8\xf5\x48\x46\x94\x8e\x6c\x56\x1e\x17\x2a\x0d\xad\x4a\xff\xb3\x94\x96\x95\x79\x33\x6a\xce\xb4\x9e\x7d\xc0\x6d\x1a\xd7\x8c\x24\xae\xac\xeb\x32\x8a\xf8\xc2\x55\xf4\x7b\x1d\x97\x51\xe1\xa6\x4e\x34\xd0\xd7\x96\xed\xff\x53\xfb\x5a\xfb\xaf\xf6\xd0\x83\x7a\xbd\x69\x9f\x0c\xaf\xff\x67\x70\xd4\xb1\x7d\xed\xf7\xdf\xeb\xb5\x5b\xa3\xf8\xfd\xf7\x1a\x11\x51\xab\x53\xc2\xbd\xdf\x95\x32\xae\x60\x8e\x18\xa0\x67\x22\xb0\xb7\xac\x6c\xb4\x61\x26\x2f\x37\xaf\xe3\xb0\x56\xff\x9e\x76\x37\x34\xcb\x9e\xc4\x9b\x60\x51\xee\x09\xf9\xc2\x8e\xde\xac\x67\x68\x77\xa5\x9c\x65\x49\xac\x02\x89\xe8\x55\x6a\x98\x41\x4d\x98\x61\x35\x0f\xb2\x44\x9d\x9f\xc4\x05\xac\xc8\x78\xe6\x5c\x53\x5e\x47\x07\x39\x3b\x3c\xe9\xf4\xa8\x16\x4e\x5b\x91\xda\x07\xf0\x3a\x1d\xfe\xc5\xbb\x83\xc5\xaa\xc9\xe4\x56\x2c\x21\xbf\xb9\x5a\xd0\x67\x7a\xad\x0e\x0a\x81\x9f\xea\x7b\x22\x7a\xeb\xd6\x01\x02\xf0\x23\x44\xa5\x2f\x89\xb8\x6f\x2e\x55\x1e\x33\xb9\x4a\xc2\xa6\xa5\x99\xa5\x4f\x9d\xf4\xe0\xad\x94\x8b\x25\xe3\x1a\xbf\x7a\x14\x56\xa9\xb3\xed\x1e\xeb\xf5\xc2\xed\x30\x69\xc1\x92\x13\xc3\xd2\x84\x74\xc8\x3c\xe7\x33\x99\x0a\xb9\xfd\x7f\x7e\x0f\x56\xff\xab\x7d\x4f\x03\x22\xbd\xe9\x0c\x45\xdf\xb4\xab\xe0\x0a\xb9\x57\x54\xea\xbf\x5b\x2b\x69\x2d\x0e\xe2\x0b\x81\xe4\x30\xc2\x43\x0f\x76\x8c\x3f\xe7\x1d\xf8\x5e\xcb\x83\x91\x12\x6d\x11\x09\x4c\xe9\x01\x54\x70\x28\xfd\xa0\x17\x9d\xe2\xa6\x02\xf9\x89\x28\x11\x93\xcd\x63\x2a\xcb\x4c\x19\xc8\x58\x0f\x77\xab\x7d\xcb\xf3\x9c\xa7\xed\x43\xfa\x51\xb9\xe3\x96\x23\x04\xaa\x71\xcc\xdd\xae\x6d\x04\xcb\x13\xb6\x80\x22\x3b\xfd\x7d\x71\x9d\x14\xe6\x43\x8b\x95\xca\x84\x4d\xda\xe1\x9c\xcf\x6c\xf3\x57\xa2\xca\xf2\xd4\xe6\x9f\xde\x56\xd5\xa9\x95\xe8\x96\xaa\xe3\x47\x3b\xdd\xb0\xa5\xd8\x1c\x4f\x88\x7d\x4f\x29\x13\x84\x17\xdd\x27\x06\xa7\x47\x9a\x74\xfe\xb5\xf5\x12\x08\x1c\xc3\xee\xa9\x93\x38\xd8\x10\x9a\xe5\xa9\x93\x92\xb8\x09\x3f\x39\x19\x21\x2a\x6c\x26\x9b\x00\x6c\x9e\x4d\xa2\x30\x17\x8d\x5d\x7b\x87\x92\x21\x3b\x8d\x8c\x5a\x06\x32\x82\x11\x62\xcb\xaa\xbf\x6a\xca\xa8\x26\x42\x26\x12\x20\x37\x36\x9c\xa8\x9b\x02\x1f\x14\x21\x32\x21\xf4\x37\xd0\x73\x3d\x41\xe5\x38\x9e\xab\x65\xd7\x84\x09\x06\x5a\x2c\xc0\xb6\x15\x45\x99\xad\x6d\x11\x14\xc6\xff\xe3\xc7\xb0\x48\x5d\xba\x8e\x6b\x45\xa2\x94\xf7\x82\xb5\x54\x97\xd2\x6f\xf9\xfb\x10\x50\xe3\xae\x35\x4e\xd8\xd3\x3f\xb7\x9f\xfe\xf3\xec\x54\xfd\xb2\xf6\xf4\x87\xd3\x27\xcd\x9a\xd3\xa5\x44\x4e\x4d\xe5\x9c\xad\x7b\xe2\x4f\xfd\x66\xdd\x4c\xa2\x84\xb6\xf9\x23\xb4\x62\x1d\x7f\xcc\xd1\x33\x76\x17\xcb\x19\x66\x95\xc6\xd7\x22\xb0\x06\xd9\x8a\x4d\xc2\x59\xaf\x2d\x41\xae\x6d\xa0\x59\x47\x11\xf5\xb5\x6d\xe9\xc3\x11\x47\xf1\xf2\x3d\xc0\xf2\xc6\xb8\xd9\x3c\xa6\xe3\xdd\x30\xe6\x59\x97\xbe\xce\xba\x66\x05\xf3\xd1\x21\x50\xed\x94\x02\xb3\x11\xfb\x49\xca\x2f\x3c\xf0\xa7\x5a\x9d\x59\x78\x56\x57\xcd\xd4\xfb\xd3\x92\x2a\x20\x4f\x58\x05\xb8\xf6\xa2\xf2\x0b\x58\x45\xd4\x16\xb7\xe9\xca\xe5\xf7\x93\xdf\x83\xdf\x83\x9f\xc7\xd2\xf4\x56\x72\xb0\x2a\xbf\x46\xe6\xc1\x9a\xf1\x83\xaa\x7b\x70\x78\xb1\x36\xff\x0c\x6b\xcf\x5c\xa3\xaf\x72\xa9\xd5\xeb\xf0\x33\xfe\xb7\xa9\x8e\xb8\xf5\xdf\x63\x28\x3e\x0b\x2c\x24\xb0\xd6\x16\x85\x58\xd8\xde\xef\x31\x5c\xdf\xa4\x7c\x74\x9e\x7f\xcc\x16\xe7\x7b\xb7\x13\xa8\xeb\x4c\xdb\x36\x2e\xf9\x1c\x7e\x6f\xff\xa8\xbb\x09\x47\x23\x9e\x49\x37\x26\xf9\xfe\xdd\xc4\xd2\xee\x55\x5d\xa0\x6f\x25\xff\x65\x5e\xe4\xfe\x8b\xd2\xfd\x72\x9f\x61\xb9\x88\x7d\x1b\xa4\x6c\x18\x46\x22\xae\x5a\xba\x3f\x39\xcb\xc2\x68\x06\x03\x76\xce\x03\xe1\xcf\xf8\x97\xfb\x52\xa5\xf9\xaf\x96\x9b\x2c\x87\xf2\x5e\xa5\x8e\x59\x2d\xbe\x0b\x64\x55\x3a\x17\xd7\xa2\x58\xa6\x5d\x49\xd9\x6c\xcb\xc9\xbe\xa3\x4e\x1f\xc5\xc7\x0f\xc5\x57\x0f\xea\xc4\xe1\xa2\x96\xad\x09\xb9\xfc\xdd\x45\x4f\x1b\x6f\xd5\xc3\x0a\x95\x34\xc7\xc5\x87\xe0\x84\x6c\x8f\xaa\x8a\x98\xf6\x53\xa3\x90\xab\x91\xce\xc1\x69\x35\xd4\xe8\xad\xb2\x62\x4f\x2a\x64\x75\x21\x47\xe4\x49\xae\xd8\x19\x65\x70\xe9\x68\x34\x2e\x6a\x13\x38\xbb\x10\xb5\x7e\x7f\x6a\xa3\x96\xa9\xe7\x3a\x1a\x4d\x01\xf5\x6c\xdc\x4f\xca\xbc\x2e\xa1\x26\xb0\x22\x6a\x2a\x14\xa8\xe9\x57\x17\xf5\x75\x4c\xef\xc0\x45\x12\x06\xe2\x5b\x86\x06\xa9\xcb\xf1\x39\xbc\x96\x1e\xad\xd4\x3d\x27\xea\x10\x59\x2c\x7f\xfc\x58\xde\x22\xe8\x44\x74\x58\xda\xa9\x7a\xa5\xef\x12\xa0\xe3\xcc\xd5\xaf\x6e\xd7\xb2\x8b\xeb\x18\x26\x9f\xfb\x88\xcf\x2b\x0d\xe9\x86\xb1\x2c\x63\x32\x4b\x5c\x47\xa3\x75\xbb\x22\x2f\x68\x50\x3d\xc4\xa0\x6a\x84\x41\x61\x80\x88\xa0\x38\xbc\xd7\x22\x66\x56\xfc\xe2\xf6\x27\xce\xdf\x73\x78\xca\xad\x3b\xd8\x46\xa1\xdf\x22\x63\x09\xd1\x69\x1d\xcf\x38\xbc\xf4\x81\x8a\x82\x9a\x51\x4f\x37\xe5\x6f\x2e\x45\xda\x61\x7e\x1d\xbb\x9d\x87\x4e\x06\xb9\xf5\x95\x17\xf3\x87\xdb\x85\x95\x17\x6b\x81\xbe\x71\x52\x11\xce\x53\x72\x0b\x81\xe4\xba\x5f\x08\x23\x17\xf0\x62\x18\xb1\x12\x91\xb7\xd0\x6e\x43\xf7\xf0\x05\x88\xa2\xf9\x4d\x8c\x77\xce\xe5\xce\x07\xeb\x1e\xd6\xfa\x6b\x6b\xc5\x56\xd5\xf2\xfb\xa0\xe6\x93\x74\xad\x76\x36\x9d\x60\x75\x5b\xd5\xd6\x9d\x0f\x89\x14\x64\x23\xb9\x51\x62\xb6\xa2\x63\x68\xc2\x82\x46\xec\x60\x88\xe1\x47\x58\x5f\x43\x93\x61\x8d\x2e\x3d\xcc\xc7\x99\xd6\xd7\x9a\xb0\x59\x28\x10\xe8\x28\xa2\x34\x89\xf3\x91\xb8\xcd\xf9\x3b\x8b\x71\x37\x7f\xc3\x29\x9c\xf5\x3d\x4b\xf1\xc7\xf6\x24\x15\x7f\xcd\xf0\xc7\xdf\xa7\xb1\xf8\x41\x3e\xab\xed\xe9\x10\x7f\x1c\xf2\x49\xbd\x98\x2d\xb2\xbe\xef\xe7\x58\xb7\x97\x5c\xe0\x8f\xd7\xdc\xa7\x1b\xa9\x76\x1b\x36\x5e\xc0\x1b\xde\x87\xf5\x17\x9b\xeb\x3f\x6c\x3e\x7b\x6e\x7d\x69\x05\x0f\x73\x39\x1b\x4f\x1a\xc6\x2c\x0c\xe4\x93\x46\x5a\xf2\xfa\x16\x1a\x21\x91\x62\xe4\x02\x25\x20\x7e\x97\x4c\xd3\xac\xd1\x2c\xe5\xac\xd4\x00\xef\xc3\x78\x9a\xf3\x85\x20\x87\xdc\x4f\xe2\x00\x41\x4e\xa5\x65\xb3\x59\xb7\xbd\x27\x27\x04\x25\x08\xf1\x24\xdb\x44\xd9\x7b\xfc\xbd\xd1\x3c\xf5\x88\xb0\x53\xfb\xf1\x8a\x34\x82\xa2\x64\x88\x16\xcb\xa7\x69\x96\x03\xa3\x40\x7b\x4a\xd9\x3a\xe1\x29\xe4\x89\x0e\xce\x45\x28\xba\x88\x9a\xa4\x7c\xc2\xe3\x20\x43\x58\xc5\x14\x2d\x7b\x85\x40\x69\xc1\x2b\x0b\x05\x45\xf7\x3e\x15\xb1\xbd\x16\x4b\xbd\xa5\xa3\x86\x9b\x6e\xa8\x6e\x4f\xbc\x76\x55\x8f\x02\x64\x04\x86\xfa\xf0\x06\xbd\x4a\x4e\x62\xee\x7c\x69\x24\x8c\xe9\x85\x22\xbd\x79\x54\xc1\xb7\x47\x23\x0e\x6f\xca\xdf\x45\x53\x6f\x69\x05\xa2\x88\xc5\xc3\xd6\xa7\x0c\x52\x7e\x99\x86\x79\xce\x63\x60\x99\xf8\xb4\x53\x1c\xb0\x28\x89\xe9\x2b\xf3\xe6\x0d\x66\x9c\xe4\x90\xc4\x15\x68\x9b\x2d\x69\x77\xf6\x06\xd6\x17\xf7\x43\x0a\x2b\xee\x73\x88\x12\x16\x70\xfa\xb4\x7b\x30\x25\x2b\xa0\x9f\x24\x79\x96\xe3\x8c\xc8\x87\x10\x99\x95\xe6\x87\xf3\x40\x35\x34\x74\x89\xa0\x16\x72\x12\xc7\x0c\xb5\x83\x4d\x59\x86\x64\x1b\x5e\x65\x3c\x9f\x4e\x64\x8b\x18\x99\x1f\xc1\xdf\xd9\x05\x3b\x24\xf7\x17\x45\x37\x50\x78\x1a\x65\x99\x61\x19\x22\xd2\x59\x1b\x2a\xe9\x6b\x64\x9c\xc3\x38\x24\xbf\xef\x27\x7a\xb0\x91\xae\xaf\x3f\xff\x61\xed\x59\xb3\x18\xe9\xac\x08\xba\xa2\x77\xbe\xb0\x63\xcd\x51\xe1\x25\x8a\x1e\x65\x68\xa6\x1b\x31\xd1\x12\xd1\xb3\x55\x8d\x5b\x3f\x4e\xae\xee\xc0\x42\x6a\x78\x82\xd3\x2d\x82\xa3\x4d\x80\x91\x94\x04\x4b\xa7\xaa\x32\xd2\xa4\x85\x70\x5d\x7b\x11\x88\xef\x24\x7b\xc0\x82\x40\x87\x76\x89\xe0\xc6\x80\x9e\xca\x8a\x6f\x5a\x85\x03\x04\x80\x90\x82\x49\x74\xac\x96\x4e\x82\x14\x04\xee\x83\x22\x44\xa6\xdf\x73\x89\x1e\xf4\xb5\x5b\x45\xa0\x0c\x82\x6f\x59\x0f\xd5\xac\x5b\x4e\x2c\xbe\x1c\xa1\x08\x36\xac\xa4\x76\x02\xe5\x09\xc2\x9d\x84\xa7\xa7\xd0\x41\xea\xf4\x9f\x85\x14\x08\xaa\x7f\x27\xc9\x53\xc1\x23\x48\xf1\xb6\x93\x34\x99\x2c\xde\x5a\x2a\xf2\xdc\x5a\x4d\x49\x67\x39\x69\x16\xf4\x6c\x9c\xc9\x77\x0b\xf5\xe6\x7f\x77\xea\x85\xf2\x5e\x5b\xdb\xfc\xde\xab\x29\x02\x6b\x9b\xcf\xd7\xbc\x9a\x12\x9e\xda\xe6\xf3\xab\x53\xef\x6f\xcb\xbc\xef\xb6\x3f\x59\x6f\x04\xae\x3f\xcb\xf9\xae\x72\x44\x98\x3f\x74\x7d\x9e\xbc\x9a\xe5\x5c\x9d\x0b\xad\xbf\xcc\x33\xcc\x34\x19\xdb\x30\xce\xdf\x62\x1f\x8e\x92\xe4\x7c\x3a\xa1\xcb\x14\xf9\x41\xca\x8b\xdd\x42\xd1\x36\x7d\xce\x4e\x32\xcb\x64\x61\x16\x19\x94\x8c\x31\x03\x3f\xdb\x95\x9b\x60\x75\xe2\x27\x81\xf8\x48\xe2\xab\x9d\xd7\xdd\x37\x6f\xdf\xf5\xfe\xfe\xcb\xee\xfb\xbd\xfd\x0f\xff\xfb\xe0\xf0\xe8\xf8\xe3\xaf\xff\xf8\xed\x9f\xac\xef\x07\x7c\x30\x1c\x85\x9f\xce\xa3\x71\x9c\x4c\xfe\x48\xb3\x7c\x7a\x71\xf9\x79\xf6\xe7\xda\xfa\xc6\xb3\xe7\xdf\xbf\xf8\xdb\xcb\x1f\x56\xdb\xf5\x95\xea\x8f\xc7\x23\x7e\xf7\xb6\xc7\xf9\x72\xbc\x18\xe3\x49\x78\x2a\x41\x4f\xc2\x53\x92\x53\x39\xd2\x13\x6a\xee\x8f\x58\xba\x93\x04\x7c\x3b\x6f\x84\x4d\x84\x0c\x65\x5e\x99\x43\x31\xe5\x10\x70\x3f\xa1\x7c\x93\xc7\x07\xbb\x4f\x33\x36\xe0\xe4\x9c\x78\xf1\x1c\x84\x99\x98\x51\x2a\xbd\x3d\x99\x1f\x03\xb5\x2b\x3d\xa8\x3b\xe4\x7c\x53\x7f\xb2\xb3\x3a\xbe\xfc\x15\xa1\xf9\xff\x8e\x0f\x76\xcf\x70\x73\x0c\xc5\xdb\xab\x6c\xc5\x10\x58\x7f\x5a\xb7\xe9\x5b\x23\xfa\x5e\x6c\xd8\x10\x67\x55\x10\xcf\x56\x9c\x8f\x9a\xed\xf2\x38\x83\x46\xff\xc5\x73\x63\xe8\x08\xfe\xf5\x5f\x3c\x97\xec\xb3\x1c\x48\xf0\x1d\x3c\x87\x9f\x8c\x17\xbe\xf8\x96\xac\xde\x8b\x2f\x58\x14\x06\x72\xfc\x2d\x90\xb2\x6a\x92\x63\x51\xea\xff\x49\x44\x21\x64\xcf\xc9\x53\xa8\xc2\x3f\x8e\xd2\x70\x0c\xc9\x60\x00\xfc\x73\x9e\x32\x12\xee\x0c\xd8\x20\xe7\x29\x90\xcf\x6b\x94\x44\x01\x4f\x55\x79\xca\x61\x90\x4c\xd5\x97\x15\x1c\x8e\x5a\x1f\x41\xed\x73\x96\x0f\xd9\x78\x1c\xe6\x6d\x31\x31\x4f\x3f\x65\xed\x30\xcb\xa6\x3c\x6b\x3f\xdf\x50\x81\x84\x48\xf1\xae\x1e\xb4\xf6\xcd\x75\xea\x2a\xe9\xaa\x81\x90\x89\x9c\xad\x26\x11\x8f\x95\x26\x26\x32\xdf\x11\x99\x99\xa8\x74\x1a\x22\x24\x32\xed\x67\x58\xa3\x9f\x9b\xf0\x1c\x9e\x5a\xc8\xbf\x83\xe7\x4d\xcb\xe5\x75\xa2\x2a\xbc\x22\xe2\x53\xeb\x43\xfd\x2f\x9e\xa3\x2d\xf1\xbc\xfd\x0c\x56\x29\xa6\x32\xa1\xaf\x00\xe1\xb4\x33\x9f\x1e\x00\xa9\xe0\x4a\xf5\xf9\xfe\x80\xe5\xcc\x48\x80\xa5\x4f\x4a\x42\x90\x89\xaf\xec\xa1\x84\x50\x5d\x99\x5d\x08\x74\xb2\x76\x3a\x77\xf8\x54\xbf\x7e\x6a\xc6\xd4\x30\xa3\x5d\x2d\xc2\x37\xe1\x09\x3c\x83\x36\x3c\x6f\xc2\xd3\x62\x9d\x9b\xf8\xad\x40\xb4\x07\x73\x39\xe5\xec\x3e\x77\xd2\xb9\xad\x60\x5d\x8e\xe5\xe3\xc9\x7d\xf0\x4e\x3f\x31\x57\xdf\x0f\xdd\x4e\xd3\x86\xc5\x82\xeb\x38\xd0\x54\x18\xfc\x69\x8a\xa4\xa3\x8e\x5c\xd1\xa9\xaa\xd1\x2c\x16\x1f\x04\xb4\xd6\x58\xe6\x89\xcf\x08\x0e\x79\xae\x64\x6a\xc4\x21\x62\xf4\xb1\xe6\xf1\x24\xe2\x39\x87\xe7\x24\x63\x99\xa3\x32\x8a\x83\xf8\x49\x0a\xfa\xcf\x66\xdc\x4f\xe1\xb9\x94\x7d\x55\xb4\x52\xba\xae\xb7\xd4\x75\x08\xab\xf4\x6c\x4b\x6a\x9b\xf1\x04\x3a\xca\xbf\x61\xf4\x1c\x2e\xda\x82\xa6\xfe\xf1\x47\x58\x7f\xd9\x84\xaf\xd7\x03\xd3\xa7\x3e\x45\x83\x8d\x65\x1b\x6c\x88\x06\x2f\x0c\xfc\x42\xf0\x67\xcd\x53\x15\xbe\x78\x22\x27\x61\x75\x15\x75\x71\x03\x07\xf4\xd3\x4f\xb0\xfe\xa2\x09\x8f\x61\xed\xf3\x9b\x37\x8b\xe1\x5e\x2e\x06\x43\x28\x5d\x6f\x5e\x25\x17\x25\xab\xd3\x81\x8d\x5b\x71\x74\x69\xfe\x20\x43\x7f\xfa\x09\x9e\x37\xbf\x95\xce\xf5\xdb\xcd\xfc\xda\x0d\x67\xfe\xf9\x4d\x26\xfe\xa7\x9f\x60\x63\xce\xc0\x6e\x3d\x4f\xda\x9b\x95\xba\xba\x26\xc5\x9d\x32\x3f\x4a\x84\x35\x00\x8d\x78\x3a\x76\x34\x9a\x34\x62\xe2\xe9\x98\xc4\xe8\x25\xa1\x7d\xf6\x46\xdd\xe3\x14\xaa\x37\x16\x56\xbf\x98\x5f\x2b\x2b\x1c\xda\x78\x8c\x16\xd2\xce\x68\x1a\x9f\x43\x63\x8a\x36\x9e\x27\x1e\xe7\x7b\xc0\xe3\xa0\x4a\x2b\x5a\x21\x3a\xc5\x25\x4f\x0d\xc5\xb2\xe7\x71\x20\x97\xfd\xb3\xca\xc9\x17\x7d\xa1\xdd\x86\x33\xad\x17\xce\xda\xda\xda\x9a\xb9\x5c\xd2\x50\x38\xc7\x04\xf9\xd2\x00\x5a\x60\x06\x6a\xe3\x54\xd6\x37\xad\xe8\x42\x11\x0c\x53\x98\x05\x9c\xe4\x66\xb3\x70\x22\xb2\x2f\xa1\xea\x4d\x87\x51\xae\xbd\x2d\xba\x9c\xb3\x69\x40\x07\xa8\x5a\xd9\x5d\x32\x85\x2a\x9a\x43\xaf\xc8\xea\xa1\x5d\x01\xbe\xc3\x9d\x8a\xb4\xb7\xfa\xce\xf2\x3a\xed\xe3\x10\xf1\x41\xee\xc1\x84\x05\xb0\x21\xcc\x24\xb5\xb9\xb0\x54\xa6\x50\xd1\x9f\x46\xff\x4c\x33\xa7\x4f\x12\xeb\x2f\x9e\xbd\x24\xa4\xca\x50\xb3\xcd\xb4\x67\x72\xbb\x18\x8a\xfc\x89\xd3\xe1\xc8\x7c\x73\x47\x26\x5f\x17\x1f\x9b\xa5\x3e\x3d\xb8\xe4\xf5\x28\x12\xa9\x9a\xc4\xf7\xb0\x52\x16\x46\xe4\xa2\xc8\xa7\x83\x01\x44\x2c\xe7\x69\x55\x8c\x16\x8f\x37\xe4\x08\x9f\x5a\x83\xd6\xbb\xc1\x86\x94\x0b\x97\x78\x25\x24\x34\x46\xf9\x29\x0b\x23\x9a\x0d\x39\xd3\x52\x40\x43\x0f\x68\x1d\x17\x51\xfc\x24\x3a\xff\x59\xfc\xd8\xac\x04\x22\x4c\x4d\xdb\x60\x45\x46\x53\x44\x72\x2c\x2f\xf8\xfe\xe4\x69\x92\x79\xf4\x71\x1f\x7a\x1f\x92\x4d\x53\x8e\xbb\x67\x9c\xe4\x38\x5a\xdc\x4e\xc5\x97\xc8\xb4\x7d\x2b\x75\x9f\x3d\xc5\x25\xb5\x27\x88\x3f\x11\x7c\x59\x3f\x2d\x8e\x56\x8e\x50\x2e\x57\xa9\x81\x36\xcc\x55\xae\xac\x20\xdd\x24\x74\x9d\xbb\xce\x81\x3e\x41\x29\x46\xe7\x3e\x5f\x2e\x50\xe5\x6e\x1a\x6a\xf1\x08\xb2\x36\xd4\x22\x5b\xbd\x0d\xb5\xeb\x6b\xd5\xe4\xd2\x1e\x52\x22\xb7\x30\xa0\x8d\xaa\x01\x59\xe3\xb1\xf4\xab\xa0\xc3\x5e\xa5\x22\xdf\xda\xcb\x9b\x9e\xc7\xb7\x56\x56\xa4\x2b\x43\x1c\x74\xb5\xdb\x43\xbb\x30\x6b\x67\x67\x3c\x7b\x4f\x38\x6a\x9e\x5c\xed\x14\x47\x46\x59\x01\xaf\x9a\x5b\x2b\xed\x27\xca\x33\x21\x5d\x0a\x4f\xda\xe2\x60\x1c\x66\xaf\x44\xe6\x3f\x73\xc0\xb6\xbc\x11\xf6\xe1\xda\xe4\x95\x13\x00\x2d\x95\x4a\xad\x08\xb9\xa5\x30\xef\x89\x43\xb7\xca\x8c\x4b\xf4\x2d\x40\x5b\x48\xad\x57\xc6\x6a\x5d\x42\x68\x9a\xf5\xef\x5b\xf6\xed\xa9\xe8\x58\xfc\xb2\x25\xf9\xfe\xc3\x32\x7c\x97\xb0\xeb\x6b\xb7\x4c\x8a\x27\x7c\x32\xa5\x09\x6c\x3f\x01\x9e\x45\x61\x9c\x83\xcf\xc6\x3c\xf2\x59\xc6\x37\xa1\x96\x0c\x06\x35\x3d\x11\x22\x75\xa9\xed\x03\x14\x25\xe4\x01\x44\x80\x7f\x66\x79\xca\xd9\xd8\x86\x98\xb0\xf3\xa4\x1d\x85\xfd\xf6\x9f\xf4\x9f\x00\xc0\x06\x08\x8f\x65\x67\x01\x1f\x44\xe2\x7e\x6f\x4e\x23\x09\xd0\xfa\x94\x39\xed\xc2\xf8\x9a\x76\x12\xc0\x6a\x47\x7e\x70\x16\xbb\x7e\x4c\xb7\x91\x06\x11\x17\x44\x85\x7c\xa9\xba\x56\x2c\x7d\xc9\x67\x11\x05\xd9\x31\xb5\x54\xa0\x3e\x51\x81\x68\x51\x70\x78\xa6\xa7\x7f\x6f\x7f\xaf\x2b\x22\x69\x54\xc9\xeb\xee\x9b\xdd\xed\xa3\xae\xc8\xa1\xa5\x0a\x7b\x7b\xaa\x70\xc3\x14\xbe\xfd\x67\xef\x03\x74\xe0\x99\x55\x72\xbc\x27\xca\x9e\x97\xf0\x1d\x6c\xff\x0a\x1d\xf8\xbe\x84\x52\x94\xbf\x30\xe5\x0a\xc5\xdf\xe4\x4c\x62\x2f\x67\xef\xba\xdb\xaf\xbb\x07\x67\xbd\xd7\xeb\x48\xec\xe7\xf5\xc1\x56\x45\xdd\x06\xd5\xbd\xec\x6f\x99\xfc\x21\xe3\x29\x4d\x0c\x4a\x76\x3d\x13\xe3\xdf\x59\x5d\x85\x88\xcd\x78\xaa\x9e\xf1\xaa\x0f\xab\xff\xfd\x50\x96\x87\xb1\xf8\x04\x56\xeb\x53\x46\xae\x67\x2d\xb8\xff\x8c\xc2\x7e\x03\xf9\x67\x62\xfe\xcd\x6a\x94\x8b\xd5\x5c\x54\x8a\xc2\x1f\xa1\xc8\x58\x55\xf3\x13\x38\x43\x5e\x98\xd2\xfc\x15\x0b\xf4\xd5\x8b\x95\xed\x2c\x1f\x85\x59\x2b\x10\x79\x15\x59\x3a\xb3\x52\x90\x53\x0d\xa7\x83\xe9\x9a\xfe\x7b\x10\x4d\xe9\x79\xb5\x29\x09\xe3\x30\x3f\x0b\x92\x98\xdb\xa9\x21\xa8\x26\xe2\x17\x3c\x72\x60\xc7\x7c\xbc\x5b\x2e\x14\xca\x63\x4c\xaa\x43\x96\x65\x79\xca\x72\x3e\x9c\x39\x80\x42\x0d\xbe\x12\x9e\x7b\xab\x38\x0d\x73\x7e\x16\xc6\x67\x93\x34\x19\xa6\x3c\xcb\x4a\x84\x4c\x38\x7d\x36\xe6\xcc\x8f\x92\xac\x4c\xe6\xf0\xcf\x70\x72\x16\x06\x74\xe8\xce\xce\x52\xce\x02\x81\xfe\x6a\x65\x05\x67\xcb\x4e\x68\xaa\xda\xdb\xb9\x54\xd5\x2c\x56\x92\x62\x66\xa4\x82\x0c\xf3\xd0\x4d\xec\x60\xee\x9c\xcc\x21\x7a\x45\x7d\x66\xa2\xe1\x72\xdf\x83\xba\x80\xec\xf3\x41\x42\xdf\x70\x0c\xe5\x34\xdb\xe0\x42\x9e\x3a\x05\xb1\x31\xe9\xf2\xcd\x7c\x58\x0f\xb2\x2d\xa9\xab\x06\xa0\x55\x3c\xb7\xd6\xac\x5e\xc5\x0d\x5b\x53\xb6\xe4\xcf\x6e\x1c\x34\xd4\xd4\x8f\x9b\x85\x54\x2b\xd5\x88\x95\x46\x99\x4f\x97\x50\x04\x73\xeb\x2d\xfd\x31\x17\xc6\x59\x58\xb6\xaa\x6e\xc9\x9f\x15\x84\xaf\x14\x44\xdb\xd6\x94\x5b\x8b\x16\xdd\xd5\x56\x49\xe6\x44\xe6\x6f\x5b\xe6\x68\x09\x7a\x10\xc6\x14\xe4\x18\xc6\x67\xc9\x60\x40\x3f\x23\x1e\x7b\x78\x58\xa1\xff\x44\x29\xfe\x12\x15\x1c\x65\xd4\xf9\x19\xe1\x95\xb9\xc9\x6f\x83\x71\x3e\xb1\x87\xb3\xd8\xbf\x37\x82\xe5\x2b\xd4\x3b\xa3\xf8\xac\xcc\x5f\x96\xcd\x62\xff\x76\x5d\x10\xd5\xee\x67\xe9\x0b\x89\x8a\x3c\x78\xd9\x5c\xb8\x88\x05\x3d\xd7\x2f\x62\x3b\x63\x02\xca\x95\x07\x75\x16\xa1\xf2\x9a\xc1\x20\x8c\x59\x14\xfe\xa9\xde\x82\x39\xf4\x48\xfe\x55\x6b\x2b\xdd\xbd\xc2\x14\xc6\xa0\xea\xae\xc1\xe5\x68\x2b\xad\x8b\x28\x05\x2d\x55\xc8\xef\x46\xcc\x55\xd8\x42\x17\xce\xe9\x41\x6e\x3a\xf6\x07\xfa\x3c\xa8\xd3\x61\x76\x22\xd3\x6a\x08\x10\xb2\xc2\x97\xee\x0a\x35\x8b\x68\x67\x33\xf3\x9f\x67\x7b\xfb\x67\x6f\x76\x8f\x0f\xdf\xa1\xa9\x5c\x55\x4f\x99\x64\xb7\x77\x17\x03\x1d\xfe\xb6\xb7\xb3\x18\xe2\xcd\xf1\xee\x35\x38\xde\xf4\xf6\x7a\xf3\x6b\x5f\xed\xee\xef\xfc\x72\xed\x55\x4d\x81\x31\x96\x4b\x8e\x24\x5b\x85\x5e\xea\x08\x79\x51\x28\x3f\xdd\xdb\x62\x51\x94\xf8\x8d\x35\x15\xda\x4e\xc2\xaf\x36\x5f\x90\x8b\x42\xfd\x6d\xd4\x1e\x6a\xc2\x16\xbb\x60\x61\x74\x16\x52\xe4\x17\xb5\xdb\x72\xaa\x55\x47\xf4\xd3\xad\x8a\xf9\xe7\x5c\x37\x4c\x06\x83\xad\x0a\xbc\x09\x35\x96\xeb\xce\x05\xd0\x9e\xa8\xa4\x12\xb1\x69\x69\xa3\x56\x76\x0d\xfd\xd4\xd2\xf1\x88\x74\x81\x95\xe4\x0b\xff\x84\x0b\x9e\x66\x61\x12\x9b\x8d\x5d\xdd\x06\x37\xd4\xe7\x35\xf5\x9e\x75\x46\x31\xc8\x62\x4a\xca\xcf\x0b\x04\x08\x5d\x82\xa1\xd2\x6c\x54\xa4\xf9\xb0\x5f\x50\xb3\x42\xef\xf4\x92\x93\x47\x38\x01\x88\x09\x41\x75\x92\x4a\xfe\x39\x3f\x0a\xfd\xf3\x46\xd1\x54\x01\x6a\xe1\x50\x6c\x0a\x89\x12\xf9\xed\x1e\xe7\xcd\xab\x40\x5f\xa5\x3e\x35\xf1\x15\x66\x11\x9d\xb2\xac\xd9\xaa\x98\xc3\x2d\x07\x8c\xe6\xbc\x2c\x41\x8b\x97\xb3\xb1\x8b\xd4\xcd\x9a\x6a\xe7\x99\xde\x4f\xab\xa9\x57\xa9\x47\xab\x69\x27\x71\x51\x01\x32\x67\x23\xce\x02\x9e\x92\x95\xa8\xf7\x6b\xfd\x05\x6d\xf2\x98\xe9\xa1\x86\x19\x39\xeb\x80\xe5\xb0\x66\x92\xa8\x8e\x39\x8b\xe5\xc7\xc8\xc3\x1c\x52\x16\x8b\x3c\x83\xf4\x91\x80\x01\xa4\x49\x32\x6e\x81\xc4\x95\x72\xb8\x64\x99\x85\x91\xd0\x25\x17\x3c\x2d\xa0\x13\xcd\x65\x46\xc0\x48\xdd\x06\x8a\xb5\x85\x18\xf0\x10\x37\x1d\x8b\x14\x1d\x2a\x43\xb0\xde\x43\x94\x44\xd0\x83\xd2\x82\xb5\xb6\x59\xae\x41\x2b\xaf\xa2\xd8\x98\x77\x2a\x11\xaf\x75\x70\xa8\xb2\xf4\x8c\xb5\xe4\x59\x6b\x4f\x3f\x15\xe9\xa7\x9c\x9d\x6f\x95\xfb\x21\x43\x6c\xd3\x7a\x74\x55\xa1\x6a\x7e\xb2\x5f\x90\xc1\xc2\x09\x2c\xa9\x1b\xf3\xae\x4b\xbd\x40\xb2\xf9\x55\x3e\x24\x38\x99\x52\x91\xd0\xb5\x4d\x2b\xe0\x4f\xe4\xf1\x9c\xdb\x7d\x41\xeb\xaa\x7f\xd6\xd8\x0b\xc4\x94\x07\x4d\x93\x7c\x32\xb7\x8f\x53\xea\xa4\x70\xf2\x2d\xf6\x37\xff\xfc\xb3\xbe\xe5\x00\xce\xed\x66\x75\x75\x6b\xc5\x81\x9c\x33\x33\x8e\xe3\xd3\xfc\x93\x79\xec\xe9\x3e\x92\x60\x59\x3f\x12\x9e\x66\xb1\x00\xa4\x1d\x82\xff\xb7\x0a\x4d\x4b\xbc\x32\x0f\xca\xa0\xfa\x8d\x5b\xb5\x51\x2e\x0f\x01\x5b\x4b\x4f\x44\xbb\x8d\x3a\x27\x92\xce\x72\x57\x06\xd6\xff\xed\x65\x60\x63\x79\x19\xd8\xd8\xba\x96\x79\xe2\x84\xb5\x75\x1d\xdf\xc5\x34\x8b\x2f\x1f\xc4\x89\xfa\x68\x94\x4a\x9e\xea\xa3\xbd\x9b\x5f\x72\x1e\x83\x3a\xd2\xb1\x38\x00\x73\x3a\x2b\xe2\x6a\x88\xb8\x11\xb4\x8e\x43\xb4\x74\x45\xe6\xe2\xd6\x6d\xa6\xda\x61\x6e\x81\xf5\xa5\xfc\xe2\x15\x66\x56\x28\xcd\x2c\xf3\x05\x60\x64\x25\x8c\xd9\x30\xf4\x55\xa1\x88\x69\x41\xa6\xd6\x9b\x05\x2d\x53\x21\x4b\x8e\xd2\x93\x14\x57\x69\x63\x4b\x1f\x56\x35\x59\xa0\x8f\x0b\x07\xd8\x6a\x7d\xac\xf8\x22\xf6\xb7\x80\xe5\x8c\x56\xa4\xb8\x7d\x91\x37\x22\xe6\x04\x2b\x81\x9b\x5b\x5a\x3e\xa9\x3f\xd7\xac\xee\x76\x5f\x9f\xbd\xee\xed\x1c\x91\x0b\xda\x3d\x01\xdb\x42\x49\x39\xc4\x58\x20\xb2\xd7\x2d\x35\x82\x43\x9e\xbf\xd6\xa8\x4a\xc3\xb1\x7a\x31\x73\xbb\x80\xce\xfd\x5f\xdc\x25\xd2\x6e\xc3\x76\x1c\x50\x92\x7b\xfa\x46\x09\x85\xb6\xb1\x21\x0b\xe3\x95\x82\xb8\xdd\x94\xc7\xe5\x27\xb9\x0b\xc8\x7a\xbd\x7d\xb4\x7d\xd6\x3d\x38\xd8\x3f\x28\x91\xf7\x2a\xc9\x47\x50\xc9\x8b\xa6\xfc\x1a\xbf\x20\x42\xc7\x98\xda\xd8\x5a\x2e\x2e\x4a\xd3\x13\xe6\x26\xd9\xf1\x20\x49\x61\x5b\x18\x86\x14\x2b\xc2\xa3\x08\x18\xf4\x59\x60\x4d\xbf\x88\xa9\xee\xb3\xc0\xc5\x45\xea\xa9\x55\xcd\xa5\x0a\xb9\x98\xf7\x32\x58\x87\xb4\x56\xef\xf8\x5a\x9c\xe6\xf9\x7f\x54\x7d\x99\xa7\x87\x47\x07\xdd\xed\xf7\x67\xdd\xbd\xd7\x1a\xc8\x36\x09\x4e\xd6\xc4\xb7\xab\xd7\x3e\xaf\xad\x15\x24\xf4\x95\x5c\xd3\x63\x46\xae\x5e\x69\x72\xf5\xc5\xa9\x09\x3e\xf0\x74\xc4\x26\x99\x88\xef\xa6\x74\x8d\xe2\xab\x3c\x7e\x32\x9e\xa0\xd9\xca\x03\x1b\xd7\x98\x93\x9a\x90\xe9\xa6\xe9\x03\xdd\x2c\xf5\x47\xf4\x61\xf9\x24\x15\xb1\xfc\xfa\x96\x75\xc8\xd2\x3e\x1b\xf2\x96\x8d\xe0\x48\x55\xfe\xc9\xd3\xc4\x0a\xa1\x4b\xce\xd9\x0c\xe5\x0d\x75\x8b\x07\x59\x88\x9a\xd6\x24\xc7\x4a\xf9\x1f\x53\x1e\xe7\xd1\xcc\x46\x35\xcd\x78\x40\x53\x3e\x61\x01\x9e\xdb\x5b\x2b\xee\x22\x4c\x79\xc6\xf3\x86\x25\xb8\xdf\x26\xf8\x57\x65\xa3\xaf\xa0\x75\x4b\x1a\xf7\x38\x3e\x8f\x93\xcb\x58\x38\xc0\xeb\xb0\x6a\xe6\xde\xfa\x3a\x6d\xd1\xd0\x37\xc7\xb0\x0a\x5b\x1f\x17\xb8\xef\xf3\x09\x7d\xf5\x4b\xa6\xa8\xca\x72\xca\x98\x15\xd0\xf3\x08\x90\x5f\x14\x52\xc9\xf1\xe8\x12\x40\x5c\xfe\x94\x0c\x6b\xf1\xdd\xbb\xb2\x5a\x46\xbd\x52\xa1\xad\xff\x79\xf6\xea\xf8\x8d\x58\x88\x8b\x6c\x5b\x3c\x03\x3c\x52\x09\xac\xec\x03\x6b\x85\xbf\xc0\x96\x54\x71\xc2\x94\xb9\xd8\xa7\xb1\xf9\xe8\x26\x0e\x6a\x40\x8f\x15\xec\x17\xf9\xc5\x8f\xc6\xce\x99\xa2\xc2\x08\xcc\x2a\xda\x34\x9b\x86\x7c\x7e\x80\x7c\x9c\x66\x3c\xf3\xc4\x35\x39\xcb\x75\x02\xd0\xf9\xf8\xb4\x42\x28\x71\xc4\x76\x99\x96\xad\x27\x67\xb0\xea\x3b\xa3\xa6\x49\x7d\x7e\x1e\x08\xa7\xe5\x2b\x47\xb5\xd5\x4b\xb2\x5a\x66\x52\x41\x64\xdb\x6d\x7a\xae\x21\x9e\x02\x60\x4f\xad\x95\x8a\x6e\x50\x44\x85\xb0\x99\x2e\x16\x7d\xb4\x57\x7e\x96\x77\xde\x19\x7c\xce\xb5\xc4\xa3\xf9\x6e\x88\x82\x83\xe1\xaf\x3e\xad\xb7\xdb\xe0\xe3\x99\x15\x17\x96\xf0\xed\x36\xc1\xef\xab\xb6\x58\xd5\x67\xfe\x79\xa3\xe2\x30\x5f\xb8\xaf\x70\x5c\x8f\xce\x85\x0b\x95\x34\x16\xa8\x05\x5e\xd2\x08\xa5\x2f\x69\x9b\x01\xea\xef\x9a\xd8\x9f\xde\x75\xaa\xd5\x4b\x0a\x2a\x4c\x62\xf9\x31\x0c\xf5\x61\x6d\xa5\x1e\xe4\xe0\xe3\x04\x46\x89\xd0\x27\x29\xcf\xfc\x29\x49\x49\x73\xeb\xfa\x2b\xad\x3b\x18\x38\x5a\xce\xce\xb0\xcd\xd5\x9a\x07\x74\x6d\xe7\x81\xba\xab\xa3\x44\x3b\x74\x19\xe7\x41\xd1\x60\x93\x5e\xe9\x52\x36\x7e\x54\x4b\xcf\xe1\xeb\xd7\xd2\xa7\x9b\xa8\xe6\x7b\x0f\xea\x48\xc1\xb2\xbd\x9e\x98\x6e\x4f\x9b\x75\xc7\x7d\x6e\x5d\x09\xfe\xd4\x81\x97\xa8\x1d\xad\xa2\x1f\x3b\xb0\x2e\x3a\x13\x46\xba\xa9\x72\x9c\xea\xe2\x9e\xf2\xa7\x0e\x3c\x5d\x47\x04\xe2\xcf\x1f\x3b\xf0\x83\xd5\x54\xed\xdc\xc8\x2d\x02\x70\xe9\xd0\x17\x9b\x3f\x75\x80\x90\xe8\x82\x02\x9e\x31\x1f\x57\x34\x37\xd7\x9d\x05\x7d\xbe\x7b\xd4\x3d\xe8\xbe\x46\x4e\xce\x01\x79\x77\xfc\xe6\xcd\xfb\xed\xbd\xb3\xfd\xbd\xdd\xdf\x16\x80\x1d\xec\x76\x17\xd4\xbe\xe9\xfd\x63\x61\x27\xaf\xbb\x6f\xb6\x8f\x77\x8f\x50\xd1\x6f\x1f\x75\xdf\xfe\x66\x8d\x47\xb5\xb0\x9d\xee\x67\x34\xb9\x72\x42\xed\x39\xbe\x46\xa4\xb4\x33\xf6\x2c\x73\x8d\xd8\x4a\xb5\x47\x8f\xc3\xaa\x5c\x77\x25\x8b\x41\xfa\x9d\x3e\x88\x06\x7b\x49\x0e\xf2\x4d\x8f\xb8\x21\xa9\xc0\x4d\x56\x4e\x25\x6a\xa4\xce\xb2\x81\x96\x27\xf7\xac\xb4\xe6\x6e\xce\x20\x43\x83\xba\x5a\xa7\x9f\xd5\x17\xe4\xe6\x8f\xaa\xeb\x77\xf5\x6b\xd5\x8d\xbb\xfa\xd5\xcc\xa8\xf2\x8e\x97\xef\x48\x0c\x4c\xd1\xac\xdf\xff\xe5\x9a\x6b\xe5\xc5\xb7\xc6\x6f\x0b\x11\x0d\xee\xf0\x56\x3b\xb0\xfe\xc2\xb9\xcd\x58\xe2\xf6\xb6\x02\xc9\xb3\x8d\x25\x90\x58\xe1\x27\x4b\x5c\x25\xcf\xeb\x8d\xd4\xcb\x93\x62\x71\xf9\xe2\x44\xbe\x03\x90\xd1\x47\xf2\x4a\xe1\xdf\xc5\x77\xdb\x8b\xc3\x7c\xa3\x64\xd3\x4b\x49\x76\x14\x06\xe2\x7d\xed\x15\x87\xeb\xb9\x82\xe8\xb9\xb2\x77\xad\x0f\xf8\x0e\xdc\x21\xf3\x7d\xca\xd7\x9c\x64\xaa\x87\x6e\x86\x56\x45\xfc\x37\x9f\x65\x56\x0a\x9e\x8a\x47\x73\x3c\x15\x8e\x65\x89\x94\xda\x96\xe5\x9c\x38\x1f\xf3\xc7\x52\x26\x5b\x45\xb8\xcf\x7c\x93\xd4\xd1\x88\x8b\x22\x66\xe6\x5b\xf4\x55\x31\x31\x73\x74\xcc\xb7\xae\x8e\x1b\x2f\x83\x1b\x3b\x9c\xe6\xcb\x84\xae\xb9\xe5\x64\xbf\x61\x61\x24\xbe\x22\x4b\xdf\x0f\x2a\x9c\x5b\xaa\xcd\xde\x85\xdb\xdb\x5f\xc4\xe3\x39\xea\xe9\x5a\xd6\x1f\xd0\xe6\xab\x59\xfe\x0d\x2a\x63\xa1\x66\x78\x7b\x13\xd5\xb0\x04\x4d\xf7\x36\xeb\x62\x2e\x4d\x24\xaa\x9a\x73\x8d\x02\x8f\x99\x1d\x8a\x3b\xdc\xba\xfe\xb5\xb5\x2a\xab\x09\x4f\x56\xad\xd9\x92\x01\xb6\xf4\x18\xda\x7d\xf5\x2c\x6c\xd7\xda\xe6\x33\x4f\x41\x6f\xae\x6f\x78\xb5\x39\x11\xa8\xb5\xcd\x67\x6b\xc5\x4a\x13\x0b\x5b\xdb\x7c\x56\x6a\x6a\x22\x5e\x6b\x9b\xcf\x9e\x17\x6b\x65\xf0\x6d\x6d\xf3\xd9\xcb\xab\x53\x6f\x7d\xfd\x76\xf1\xc3\xe5\xc8\x6f\x3c\xdf\x96\x53\xae\xf4\x65\x9a\x15\xc9\x0e\x11\x3a\x7a\x94\xb2\x38\x1b\x24\xa9\x13\x22\xac\x66\xa2\xa5\x6b\x05\x70\x3f\xa4\xc3\x9a\x9b\xc7\x45\x16\xaa\x88\x5e\xfa\x8e\x8a\x05\x40\x5f\xdc\x97\x75\xf3\xc3\x95\x5b\xc9\xb9\x00\x39\x7f\xcf\x3e\xeb\x37\x1f\x65\xd2\x4d\xb5\x04\x3f\x60\xf1\x50\x44\x87\xbe\xd7\xe7\xd9\xfa\x8e\xf8\x6e\x88\xc8\x62\x26\x42\x89\x54\x30\x08\xf4\x72\xb8\xa4\xef\x8f\xf6\x39\x44\x2c\x1d\xf2\x94\x36\xad\x7a\x3e\x62\x31\xac\x7d\xa6\x3c\x88\xba\x13\x2b\x0b\xcc\x0b\x91\xb6\x8d\x1c\x93\xf5\x2d\x13\x47\xac\x3e\xb7\xa1\x82\x78\xf2\x11\xcf\x38\xe5\x3a\x3e\x8f\xa6\xc1\x90\x0a\xc6\x10\xc6\xd6\x77\xb0\x95\x87\x54\x7c\x7f\x3c\xce\x72\x88\xd9\x98\x5e\x9f\xf8\x23\x3e\xe6\x02\xef\x34\xe3\x59\x6b\x45\x32\xb7\xf5\xcf\xb3\xf7\xbd\xbd\xb3\x5f\x7b\x7b\xaf\xf7\x7f\x7d\xd5\x3b\x3a\x84\x0e\xbc\xdc\xb2\x6b\xb7\xff\xe1\xd6\xae\x7f\x6f\x57\xab\xc3\x4f\x09\x84\x3e\xd0\xcd\x2f\x79\x0a\x34\xfe\x17\xcf\xa5\xe7\x75\xc2\x53\xf0\xe9\xe5\x54\x98\x41\x96\x4f\x27\xa1\xf8\x48\x6b\xce\xfd\x51\x1c\xfa\x94\x79\x2e\xcc\xc1\x27\x4e\x52\x2a\x0e\xf1\x0d\x9f\x0c\xb1\xe1\x8f\x97\xe2\x91\x09\xbf\xe0\x06\x2b\x7d\xa6\x3b\x03\xd6\xcf\xa6\x69\x10\xcd\x20\x4a\x2e\x5b\x00\xc7\xd9\x94\xd0\x31\x78\xff\x0a\x92\x14\xc6\x89\xb8\x63\xeb\xf3\x2c\x2f\x32\x60\xe7\xdd\xf1\xde\x2f\xd0\x81\x17\xcf\x8b\x83\x57\x35\xbd\x78\x80\xbb\xfb\xac\x6a\xf4\x0a\x66\xfd\x05\x3c\x81\xf5\xb5\x8d\xe7\x5b\x2b\x05\xfc\xef\xbb\xef\x77\xbb\x1f\xbb\xbb\xe2\xf2\xd8\xed\xc1\xaa\xfb\xa1\x0a\xbb\x55\xff\xb2\x84\x58\xd5\x3c\x2d\xa1\x5d\x88\x53\x55\x56\x8c\x65\xff\x3d\x7d\x72\xbc\xb7\xbf\x27\x66\x11\x35\x44\xc6\x41\x79\xa3\x48\x86\xb4\xe2\x12\xab\xb7\x22\x0d\x87\x44\xdc\xdc\x32\x81\xf5\xfd\x73\xf1\xc2\xb5\x7f\x0e\x3f\x8a\x36\x3a\x47\x41\xff\x5c\x7d\xb3\x5a\xe1\x43\xda\x28\x07\x47\xff\x5c\x7f\x9f\xb0\x6f\x27\x25\xfd\xa7\x49\x0f\x7a\xcd\x7b\x94\x3e\x65\x49\x56\xfe\x4c\xf3\x9d\x1a\xf1\x20\xc5\x53\xaf\x53\x24\xc5\x27\x08\x7e\xea\x91\xd7\x4d\x40\x91\x89\x47\xad\x55\x0a\x7c\x11\xed\x9f\xa3\x0e\x8b\xe4\x27\xf5\x99\xba\x0d\x52\xc9\xc5\x93\x00\x97\x99\xca\xf6\xa0\xbe\xd6\x46\x8e\x6e\x8b\xeb\xfb\xbf\x78\x54\x6a\x79\x89\xad\x5a\x53\x2a\xa0\x8c\xef\xd7\x02\xd2\x85\x02\xa6\x7b\x70\xb0\xb7\x6f\xd7\x53\x81\xdb\x0b\x39\xd4\x2b\xfa\xc1\x72\x01\x69\x6e\xc0\x6c\x38\x53\x2a\xa0\xde\x77\x2b\x90\xe9\x42\x01\x63\x3c\xf8\x16\x8c\x2e\x14\x30\x1f\xbb\x07\x28\x6f\x65\x38\xa7\x82\x76\x6e\x62\x68\x85\xbc\x11\x93\x6d\x69\xf3\xa5\xb4\xf9\x28\x6d\xbe\x23\x6d\xbe\x23\x6d\xbe\x90\x36\x02\x39\xf1\x85\xb4\x11\xb6\x13\xf9\x3f\xca\xc3\xa9\x84\xa0\xc0\xf7\x6b\xe4\xad\x4e\xed\xea\x42\xe4\xe6\x8a\x9b\x44\x32\x48\x39\xff\x93\x4b\xf2\xcb\x52\x77\x65\x67\xdc\x79\xad\x9f\xcf\xc8\xdf\xac\xc7\x1e\xfa\x85\x8c\xfc\xcd\x7a\x33\xf2\x67\x38\x81\x0e\xe0\x0f\xab\x70\x1a\xcb\x62\xfa\x65\xab\xd8\xc7\x01\xbb\x34\xdd\x1c\xb0\xcb\x52\x4f\x02\xc0\xfc\x61\xbd\x2f\x91\x98\x8f\x05\x62\x5d\x2e\x36\x4d\x33\x06\x63\x6e\xb8\x39\xd8\x28\xcf\x98\x0c\x86\x4a\xa4\xbb\xc8\xc5\x61\x06\xbb\x08\x87\x84\x9a\x83\xc3\x19\xe7\x12\xa4\x1c\xb0\xcb\xc5\xd4\x5c\x8f\xc9\x00\xce\xc1\x24\x67\x6a\x11\x0e\x04\x99\xd7\x5a\x4d\xe9\xc2\xf6\x04\x34\x07\xc3\xf1\x12\x08\x8e\x9d\xf6\xed\x36\xec\x24\xf1\x05\x8f\x43\x0a\x54\x91\xd9\xc8\x5a\xc2\xfe\x10\x3e\xe1\x76\xc0\xd5\xaf\x94\x42\x8c\x12\x69\x25\xa9\xbc\x0d\x46\xfb\x05\x8f\xcb\x59\xce\x9d\xaf\xa7\x97\x27\x58\xc0\x8b\x0f\xc3\x7a\xa0\x6e\x40\x4a\x0f\x85\xe8\xe3\xc0\x6e\xce\x45\x73\x16\x13\x6d\xac\x0f\xd6\x82\x84\x97\x1f\x4e\xb6\x9e\x35\xe3\x36\x27\x2c\xbb\x86\x23\x90\x93\x1c\x97\xa9\x22\x46\x93\xe1\xb2\x53\x1d\x84\x8b\x91\x9f\xf6\x18\x1c\xce\x9a\xde\x28\xd4\x75\x6e\x8f\x85\x7e\x86\xc5\xf9\xfa\xef\x65\x92\x10\xce\xa5\x38\x84\x94\x7f\x13\x7b\xca\x7d\x55\xcf\x41\x71\x59\xfe\x5b\x88\x11\xa9\x80\x9b\x48\xd2\x01\xbb\xbc\x0b\x61\x2a\xf5\x5b\xe8\xad\xac\x41\xfe\x7b\xd9\x25\x95\xcd\x52\x9c\x22\xda\xbf\x89\x49\x15\xbd\x15\xfa\x08\x2b\x36\x9e\xff\x5e\x0e\xe9\x4d\x6e\x29\x1e\xa9\x28\xa8\x6f\xe1\x52\x65\x8f\xc5\xd5\xfd\xef\x26\x48\x6a\xdb\x5b\x4e\x37\x7d\xbb\x28\x55\xf5\x57\x3d\x17\xff\x5e\xfa\xc9\x36\x51\x6e\x22\x51\xdf\xaa\x9f\xe6\xf5\xdb\x2c\x64\x5a\xb4\xc8\xe5\xf1\x30\x8c\x79\x05\x81\xe6\x18\x49\x35\x99\xfe\x30\x12\xbd\x5a\x30\x2f\x58\xc9\x38\x47\x1c\xad\x24\x6e\xd4\xc5\x8d\x80\x07\x49\xac\xb2\x40\xbb\xd5\x71\x20\x2a\xe3\xa0\x69\x37\xe5\x71\xd0\xd0\xa4\x02\x0c\xa2\xe4\x52\x5e\x4a\x99\x24\x28\x54\x26\x27\x87\x0e\x1c\xa3\x69\x2c\x1d\x9f\x32\x74\x8f\x52\x38\x3f\xea\x74\xa0\x21\x5c\x23\x1d\x85\x1e\xa9\x6d\xd8\x9f\x5e\x92\x63\x12\x09\x25\x08\xd8\x7c\x45\x82\x86\xb6\xda\x11\xf8\xad\x94\x97\x2a\x38\x47\x0f\xc7\xe7\x8d\x3a\x02\xe3\x41\xa3\xee\x11\x81\xe6\x2a\xc4\xfa\x44\xb2\x4c\xb8\x6d\x62\xb6\x34\x55\xe3\xe4\x82\xef\x86\x59\xce\x63\x9e\x16\x99\xb3\x00\xb0\xaa\x53\x23\xb0\xd4\x53\x25\x1d\x71\xe0\x30\xb0\x3f\x1d\x6c\xe9\x3f\x84\xe3\x59\xbf\x38\x91\x81\xe5\xc4\x8b\x9f\x3a\x96\xc7\xcd\xf0\x90\xeb\x74\x62\xc6\xc7\xd7\x28\xfb\xfb\xaa\xbf\x12\xd2\x9f\x0e\xcc\x03\x30\x3f\x89\x7d\x96\x4b\x01\xc8\x3c\x31\x05\xfa\x9d\xd2\x8a\x35\x61\x5a\x08\x35\x6f\xac\x28\x14\x97\x05\x24\xd2\xc6\xd1\x50\x21\xfb\xb4\x6c\x5c\xf9\x2f\x29\x08\x69\x5e\xdb\x79\xbb\x9b\xba\x50\xd1\x3f\x48\x93\xb1\x11\x5f\x15\x14\x25\x2b\x55\x4a\x4f\x05\xd0\xac\x7e\x39\xbf\x97\xe4\x15\x76\x7d\xdd\x7c\x1a\x91\xae\xc7\xdf\x44\x6c\x68\xc4\xfa\x6c\x10\xc6\x21\x16\xca\x1a\xfb\x81\x92\x02\x91\x3e\x68\x91\xca\x46\x2d\x72\x8d\xab\xa9\x52\x2e\x0c\x51\xb2\x42\x9f\xb8\x83\x7f\x8f\xc3\x38\x1c\xb3\x08\x36\x9e\xd2\x3b\x02\x11\xef\x6f\x98\xe8\x58\xd5\x26\x0e\xac\x21\x62\x51\x4d\x2a\x78\x09\x67\x12\xcf\x96\x4c\x72\x9c\x20\xba\x3a\x32\x77\x06\x52\x69\x2b\xf7\x85\xbc\xd4\x11\xa4\x6a\x0a\x9c\xfd\x73\x01\x05\x12\xce\xa5\xc0\x69\x7c\x3d\x05\xf2\x12\xc7\x30\x0b\x77\xe5\xa7\xd0\x0f\x87\x43\x9e\x4a\xde\x78\x22\xa6\x56\x1d\xb9\xac\x50\x1e\x43\xb3\x31\xb6\x17\x10\x8c\x40\x2e\xb5\xa6\xd9\xf5\xa4\xbe\x15\x4f\xed\x6d\x4e\xd9\x9b\xe8\xa2\x7e\x09\xac\xd0\xb3\xd5\x74\x89\xbe\xd5\x43\x7f\xc1\xa5\x94\x5d\xc2\x53\x8a\x40\xab\x16\x1e\xbd\x4b\x5d\x2f\x3f\x07\xec\xb2\x52\x84\x34\x8a\xa5\xa5\xe8\x60\xfb\xd7\x6a\x41\x5a\x86\x1a\x03\x5a\x29\x4e\x37\xa0\xc6\x8a\xe4\x50\xec\x62\xd3\x3c\x79\x1a\xf0\x9c\xfb\xb9\xe4\x98\xf5\x6d\x97\xe3\xa5\xa6\xf0\xb8\x3c\x83\xc7\x37\x99\x40\x6b\xfe\xac\x4f\x27\x7c\x64\x51\x18\x68\x1d\xd3\x18\xa0\xda\xb0\xed\x90\x01\xe9\xa4\x8e\xed\x04\xd7\x8f\x9b\xbf\x7e\xad\xaa\x76\xdf\x36\x57\xc3\x58\x4f\x9b\xab\x01\xac\x97\xcd\x73\x00\xc4\xc3\xe6\xea\x4a\x7a\xd7\xac\x58\x9f\x8f\x38\x71\x06\xfc\x88\x65\x99\x8c\x5e\x8f\x22\x9d\xe7\x1b\xf5\xfb\x0a\x3d\x2f\x0a\x29\xdc\x3e\x1e\xc2\x98\xc5\x6c\xc8\x09\x16\xfe\x98\xf2\xa9\x0c\xb1\xfc\x63\xca\x33\x4a\x3f\x1f\x07\x92\x3d\x99\x70\x71\x23\x40\x2a\x9c\x91\x26\x67\x26\x05\xed\xab\x6c\xde\xb1\x85\xeb\x72\xc4\x63\x6c\x37\x4b\xa6\x26\x7e\xb5\xa5\x02\x58\x85\x7b\xa8\xb5\x52\x48\xf8\x22\xe6\xd2\xdc\x9a\xe3\xa6\x71\x46\x22\xa2\x9e\xee\xea\x58\x32\x69\xc6\xda\x3f\xbe\x7e\x95\x56\xad\x8a\xe5\x9d\xc6\xe7\x87\xe1\x9f\x5c\xd6\xb7\x4c\xc1\xd7\xaf\x15\x51\x7b\x74\x75\x43\x3d\xe8\x2b\xc9\xa2\x9c\x99\xad\x91\x10\x8a\x70\xaf\xc7\x8f\xe1\x51\x49\xc4\x4c\x7d\x73\xc9\xa7\xe7\x38\xc3\xe2\xf3\x5d\x56\xdb\x2d\xeb\x6b\x6d\xa2\xd8\x6c\x97\x8b\x3a\x36\x50\xb7\xed\xde\xc2\xe0\xc6\x96\x9c\xd9\xbb\xb8\xc5\x86\xaf\x5f\x2b\x56\x8f\x99\x8d\xc2\x3e\x6f\xd2\x6f\x95\x86\x55\x4e\x9e\x5d\x02\xd9\x2c\xad\x11\x77\x62\xf4\x4c\xeb\xe7\xfa\xa5\x1a\x2b\x5b\x90\x7d\xef\xf7\xf5\x6b\x51\x56\x7e\xb2\xe1\xd4\x2d\xa0\x31\x21\xe7\xb2\x55\xd8\xef\x59\xf8\x27\xb7\xd8\x6a\x08\x33\xe6\xf8\x95\x43\xba\x15\x28\x55\xa4\xdd\x8e\xd8\x2d\x10\x6f\x5d\xba\xaa\x11\xd8\x21\xbf\x85\x21\x18\xe8\x25\xc6\x61\xf0\x58\xe3\x28\x85\x73\x95\x07\x42\xc1\x6e\xa5\x31\xc8\xa0\xe1\x02\xf9\xe2\x0e\x52\x51\x2e\xe3\x8c\x0b\x44\x13\xcc\x32\x7c\x2f\x46\x20\x5b\x64\x0b\x9a\xe6\x51\xac\xa2\xed\x4a\x44\x9b\x20\xe5\x02\xdd\xfa\x3e\x56\x91\x6e\xe2\x9b\x0b\xd4\x2b\xc8\x25\x06\xa0\x70\x58\x74\x6b\xca\xe6\x91\xae\x23\x03\x8b\xa4\xeb\x70\xd5\x47\x95\x01\xd3\x8f\x1f\xc3\x02\x30\x27\x68\x7a\x31\xe8\xc1\x6e\xf7\x1a\x08\x11\x3c\xbd\x18\xa6\x18\x40\xbd\x04\xb7\x14\x22\x8b\x5b\x85\x30\xc9\x32\xb7\xca\xef\x29\x2b\x4f\x3b\x45\xd8\x25\xa8\x31\xd0\x9b\x10\xe6\x90\x8d\x54\x18\x08\x53\xc1\x32\xca\xd6\x29\x7d\xc9\x51\xa8\xc9\x11\x8b\x03\xfa\xe2\x38\x22\xd7\x4a\x4e\x27\x43\xd3\x47\xa9\x42\x3e\x0b\xd5\x38\xd0\x6f\xb7\x9c\x60\x44\x89\x56\xbd\xb5\xa8\x7a\xc9\xe1\xe1\x61\x38\x4e\xac\x1c\x1e\xb9\xf5\x12\xf9\x92\xd1\xa3\x4e\x3f\xe2\x2c\x8e\x66\x90\x72\x3f\xb9\xa0\x2f\xc9\x08\x50\x3f\x89\xf3\x30\x9e\xd2\xb9\x0f\xeb\x93\x7e\xe6\x4f\x53\x4e\x9f\x5c\xe9\x47\x7c\x9c\x09\x48\xf1\x02\xa3\x81\xb4\x3b\xf9\x34\x2c\xba\x75\xd2\x19\x7d\xa4\x4f\xd4\x11\xbd\x6b\x3f\x13\x51\xde\x05\xfa\xe4\x0a\x51\x8e\x67\x4a\xfc\x69\x57\xf8\xee\xbb\x66\x71\x8b\x4b\x50\xa7\x56\xff\x7c\x1c\xe6\xc6\xed\xc3\xb5\xd3\xe7\x4a\x73\x5b\x85\x91\x57\x18\x0d\x76\x8c\x44\xc9\x2f\xa7\xe2\xcf\xad\x6c\x75\x4d\x8d\xcc\x00\x98\x59\x35\xc1\xe5\xf3\x17\x45\x55\x3f\xce\x83\x04\xd3\x95\x85\xcf\x01\xdb\x2a\x0a\x1c\x85\xab\x96\x76\x99\x4a\x33\xc9\x6c\x1e\xfa\x31\x8a\xab\xfa\x2a\x5b\x29\xfd\x67\x47\xec\x17\xd7\x97\x45\x55\xd1\x3d\x41\xf9\x75\x8e\xe3\x8c\x0d\x78\xa3\x60\xdd\x59\xef\x0b\x92\xc1\x40\x04\x6c\x9a\xa4\x77\x67\xd5\x2f\x00\xce\x16\x86\xf1\x0b\xbf\x98\xf0\x65\x99\x77\x42\x82\xbe\xea\x1b\x7f\x61\x22\xd6\x85\x80\x07\x75\x15\x63\x32\xe4\xf9\x66\x29\x7a\xd4\x04\xed\xc2\xa3\x33\x7b\x12\xa4\x42\x10\xdf\xc3\xf2\x93\x78\x10\x0e\xa7\x76\xbc\xc0\x4a\x55\xd0\x8a\xcc\x41\x73\xb5\xb2\x32\xcd\xc3\x48\x7f\xb3\xa7\x81\x3a\xc3\x33\x96\x6c\x73\xa9\x87\x21\x51\xf1\x51\x45\xd9\xeb\x7c\xcd\x06\xbe\xc4\xde\x6d\x94\xa7\xe5\x74\xbb\x6e\xfb\x36\x3b\xb7\x32\x87\xaf\xdf\xd9\x96\xdb\xd4\x16\xee\x67\xd7\x6c\x65\x37\xdb\xc5\x2a\x9d\x66\xd5\xfb\x98\xb3\x85\xb9\xb1\xaf\x52\xa2\x1f\x75\xa4\x4c\xeb\xb7\x16\x67\x16\x35\x46\xaa\x6d\x6f\x69\x61\xd3\xb0\x1f\xad\x34\xaa\x8e\xad\x5e\xa5\xec\xaa\xb7\x58\x52\x75\xa3\xe4\x7a\x50\xa7\x60\x30\x15\xbc\x29\x97\x81\x76\x48\xdb\xb0\x52\xee\x8a\xb2\xa6\x61\xc5\xe7\xd0\x9d\x7d\xc1\x7e\xbc\x2a\x6a\x4a\xab\xda\xae\xac\x5c\xdb\x0a\x84\xbe\x3d\xac\xa5\x5a\x7b\x5b\x0b\xaf\x57\xaf\xec\xcc\x8a\xa2\xf3\x52\xca\x28\xeb\x1e\x64\x4e\x00\xf9\xbc\xf8\x71\x3b\x49\xdd\x12\x1c\x74\xb2\x60\x49\x26\xea\xb7\x55\x32\xf6\xe2\x48\xbe\xa0\xc7\x53\xf6\x99\x3c\xd1\xa9\x5e\x91\x50\x1e\xa8\xdc\xab\xb9\x8e\xc6\x25\x57\x81\x47\x11\x93\x71\xce\x53\xfa\xd6\xaf\x47\x07\x77\xeb\x4b\x17\x74\x8a\x19\xb1\x0c\xfa\x9c\xc7\x20\x3f\xb6\xd6\x2a\x85\xca\xeb\xbc\x60\x7a\xa8\xae\xea\x10\xc4\xeb\xbe\x1b\x85\xbc\x69\x1e\xd4\xeb\xa5\x9b\xa5\x42\x1f\xe5\x2e\xce\xc3\x38\xa8\xba\xee\x21\xad\xba\x61\xfb\x0c\xb0\xf4\x52\x79\x11\x44\x32\x43\x54\xa1\x87\xb9\xf8\xb4\xa8\xb3\xa1\x22\xd6\xc2\x85\x1a\xae\x31\x5d\xac\x8f\xa6\x74\x00\x77\x7b\x77\xee\xdc\xb0\x85\x10\x2b\xd1\xb6\xd2\xf3\xe3\x2c\xf0\xcb\xac\xc5\xe3\x80\x07\xb6\x59\x6a\x3a\xb8\x46\x02\x4d\x66\x0c\x81\x26\x8c\x87\xd5\x78\x4a\x7b\xdc\x02\x3c\x31\xe7\xc1\xeb\x94\x85\x71\x35\xaa\x2f\x76\xe0\xbf\x40\x19\x20\x74\xbd\x5a\x75\x68\x59\x16\x33\x24\x55\x4f\x61\x1a\xf5\x4a\xb4\x2d\x64\x7b\x25\x96\xdd\x10\x86\xd3\xe6\x75\xce\xb5\x22\x36\x67\xd1\x96\x93\xd7\xba\xc3\x95\x46\xac\xd8\xf1\x1d\x74\xa5\xf9\x41\xc3\x72\x07\xa1\xf7\x8e\x84\x21\x51\xbc\xc4\x94\xb8\xd4\x05\x4e\x79\xb7\x5d\x6e\xf2\xc5\x43\xe9\x1d\x5c\xe6\x29\x8c\xd9\x0c\xc2\xf8\x22\x39\xe7\x20\xc7\x22\xde\xbd\x33\x11\xaf\x2b\x2c\xea\x86\xf8\xc6\xe0\x65\x18\x45\xe2\xab\xb1\x52\xaf\x50\x72\x20\xd2\xc0\xea\xf2\x45\x96\xeb\x67\x46\xe6\xc2\x53\xa9\x22\xeb\xfa\xca\xad\x31\xe9\x5a\xed\x2f\x66\x18\x9e\x88\x83\x00\x8d\xd5\xb2\xc3\x09\x9d\xfc\x52\x67\x51\xcb\xe4\xd6\x4b\x02\x6b\x7e\x50\x47\x79\x22\xe5\x4e\x18\x0f\x3d\xf0\xfb\x46\x17\x0c\xcc\xcd\xd2\x75\x6a\x40\x1e\x39\xd4\xfb\x03\xbd\x8a\x70\xf5\xab\x95\xa9\xa0\x48\x39\x76\x14\xf0\xe3\xc7\xd0\x78\x24\x54\xa5\x80\xb5\x5e\x71\xdb\x77\xb0\xc6\x7f\x28\x80\xd5\xc7\x96\x49\x93\x14\x8f\x9f\xe2\x4e\x57\xbb\xc2\xfd\x7e\xa3\x22\x9f\x12\xe5\x53\xa9\x37\xad\x3b\x3b\x7b\x9b\x98\xd3\xb8\x72\xa7\x69\x5a\x69\xfa\xc2\xbc\x9e\x15\xf6\x00\x4a\xb1\xc2\xe4\x43\x07\x99\xf3\xf5\x92\x53\x52\x6f\xf2\x3d\x2b\x5f\xb5\xf1\x26\x0a\x6c\x8d\x24\x85\xcb\x11\xcb\xf9\x05\x4f\x85\x17\xfb\x52\x7c\x8a\xf3\x22\x0c\x78\x20\xbf\xc1\x59\x72\x39\xb6\x5c\x52\xf8\xe7\x49\x14\xfa\x61\x1e\xcd\x04\x7e\x6c\xc3\x72\xf1\xb1\x4f\x91\x31\x26\x0f\xc7\x5c\xe6\xfc\x13\x54\x09\x04\xb6\xa6\x6d\xc1\x3e\x82\x5e\x86\x19\xf7\x88\x6e\xcb\xc9\x3f\x48\xe8\x73\x20\xe1\x78\x3a\x76\xee\xbd\xe4\x17\x3f\x92\x20\xc6\xb5\xa7\x4c\x60\x96\xe5\x4d\xe7\x32\xb3\xd2\xc5\xb9\x65\xa9\xac\x0a\x60\x5b\x2e\x45\x72\xc3\xd8\xe7\x70\xc9\xeb\x17\x32\x4b\x2b\x0f\xcc\x14\xc8\x84\x85\xe4\x5a\x47\x9b\x29\x99\x58\x8c\x88\x03\x85\x62\x98\x00\xed\x3d\xf2\x5b\x55\x32\xb7\x48\x9f\x8f\xd8\x45\x98\xc8\xe3\xba\x96\x3e\x25\xa4\x3f\x75\x8c\xc4\x16\x34\xfa\x59\x99\xee\x65\x3c\xbe\x25\xaf\x86\x73\x83\x2b\xc5\x49\xa3\xa6\xf5\xba\x30\xef\xe4\x8e\x0c\x85\x28\x2d\x79\x17\x87\x5e\xf3\x94\x01\xa3\x17\xbf\x12\xc9\x81\xe5\x12\xc4\x35\x56\x8c\x87\xd0\xc0\xfb\xd3\x5c\x43\x17\x6f\x0f\x9e\x3a\xa7\xcb\xff\x9f\xbd\xbf\xef\x6a\x23\x47\x16\xc7\xf1\xbf\xf1\xab\xa8\x70\x77\x63\x3b\xf8\x39\x09\x61\x20\x24\x97\x10\x98\x61\x37\x81\xfc\x80\xec\xdc\xfd\x30\x6c\x90\x6d\x19\x77\x68\x77\x7b\xbb\xdb\x3c\xcc\x84\xfb\xda\x7f\x47\x55\x7a\x6e\xd9\x38\x33\x99\xd9\x39\xe7\x7b\xe7\xde\xb3\xc1\x2d\xa9\x54\x2a\x95\x4a\xa5\x52\xa9\x4a\x35\x8b\x92\x23\x15\xd2\x35\x64\x92\x51\xc0\x73\xf2\x85\x91\xaa\xc5\xa0\x5f\x4a\x02\x1e\x8c\xa0\x1a\xf2\x59\x09\x79\xad\x58\x46\x12\x6b\xfb\xb3\x9d\x58\x0c\xc9\x78\xe6\xf8\x3d\xa0\x59\x85\xcb\x66\xf7\x2a\x20\xeb\x57\x6a\xa6\x00\xc3\x54\x03\xa5\x1c\x99\x46\xba\xca\xed\x41\xc7\xba\xae\xd9\xb3\x45\xf3\x87\xaa\xa7\xd2\xfb\x05\x41\xe5\x27\x41\x6b\x75\xda\xb0\xe7\x52\x15\xab\x1c\x82\xae\xb9\x00\x4b\x29\x56\xa8\x29\xa2\x59\x13\x45\x32\x94\xad\x0d\x57\x4f\x7b\x7d\x4b\xb6\xd5\xa0\xef\x95\x47\xce\x23\xcf\xb6\x26\xd8\x48\x9d\x1a\x32\x9e\x9f\x75\xce\x1b\x62\xd8\x67\xdd\xf3\x7a\x39\xac\x6d\xf9\x04\x43\x87\x40\x6b\xca\xee\x97\xf4\x55\xb1\xf4\x0e\xad\x22\x05\x8f\xd2\xf3\xfd\x57\x2a\x36\x73\x2d\xe7\xbb\xe2\xf6\x5a\xb1\x54\x38\xe9\x7a\x73\xef\x07\xe9\x5e\x82\x6d\x88\x53\xfe\x1d\xe4\x94\x05\x5c\x12\xe0\x90\x05\xdc\x31\x87\x33\xe6\x73\xc5\x22\x8e\xc0\x53\xd8\xbf\x5b\xda\x2c\xa5\x1d\xb7\xc4\x57\x4b\xe5\x57\x7f\xba\x7e\x5f\x6e\x90\x9e\x83\x04\xc3\xc4\x35\x74\x87\xf8\xd3\x32\xbc\xfe\xa8\x4e\x60\x1a\x70\x94\x53\xc0\xb1\x28\x01\x96\x48\xa1\x82\xd4\x6a\x38\xf5\xaa\xb9\x6d\x90\xe5\xb7\x85\x3a\x11\x5e\x64\xfc\xdf\x17\x32\xbb\x32\x45\xc1\xc5\xa0\xb7\xe8\xea\x3f\x6c\x61\x68\x51\x31\x1f\x3a\xfd\x32\x45\xa5\x23\xb7\x42\x77\x52\x59\x32\x44\x00\xd5\x1c\x6e\xc6\x77\xb4\x3b\x47\x93\x69\x9a\x15\x2c\x29\x30\xcb\xd3\x2c\x8e\xf5\x8e\x36\xa3\x54\x4f\xf8\xce\x45\x65\x31\xd5\x81\xd5\xf0\x71\x7c\x9f\x0b\xe6\x10\x83\x6b\xc1\x85\xdd\xd5\x85\x1e\x0a\x4b\x20\x2f\x50\xa9\x85\x09\x9f\xa4\xd9\x1d\xc4\x69\x72\xa9\x9e\x13\x3a\x74\x12\xd8\xc9\x39\x12\x3d\x88\xc3\x0b\x1f\xb6\x9c\x35\xe9\xed\x70\x7a\x46\x55\x36\x0f\x5d\x62\xcd\xaa\x29\xb3\x16\xab\x6f\xa2\xb0\x14\x64\xe2\x70\xcc\x49\xb6\xed\xef\x2f\x4d\x77\xda\xb7\x6c\xb1\x8b\x2d\x5e\x61\x1a\xb0\x2a\xfe\x2d\xef\x0f\x92\xb4\x10\x5b\xfb\x30\xbd\x49\xaa\xb6\x8c\xa1\xfa\x76\x2c\x5f\x99\x61\x0e\xb6\xa5\x29\x44\x06\xda\xcb\xe3\x68\xc0\x25\xc6\x8a\xf5\xed\x5f\xb0\x86\xd8\x7a\xf6\x1a\x55\xb6\x8d\x85\xaa\xac\xdd\x86\x9c\x67\x02\x39\xd4\xbe\x28\x88\xb8\x54\x38\x64\x18\xe5\xac\x65\xd9\x72\x9c\x8d\x4d\x03\x47\xaf\x45\x8a\x51\x25\x4f\x7b\x7e\xac\x31\xc7\xbf\xd1\xae\x69\xf9\x37\xa6\xb3\xc2\xf1\x6e\xd4\xe6\x1b\x1d\x35\x94\xdf\x8e\xd9\x2c\x2f\xa4\x2e\x25\xb1\xd5\xfe\xa8\x19\x2d\x2b\xe5\x9e\x40\xc1\x09\xe5\x93\x5e\x86\x72\x35\x4d\xb8\xe1\x1f\x67\xe6\x70\x71\x74\x30\x1a\x90\x4d\xad\x57\x8a\xf4\xa5\x3b\x68\x5f\xc2\x40\xa9\x66\x90\xfc\x3a\x8a\x3c\x38\x73\x1a\xb6\x8d\xfb\x5d\x97\xb8\x36\x30\x04\x83\x5f\xbb\x8d\x51\x7f\x28\xec\x6c\x7c\x87\x2b\xb4\x05\x70\xc8\xd5\x13\x7a\x75\x08\x35\xf5\x77\xe2\x3c\x6d\xc0\x6c\x3a\x14\x24\xd3\xd1\xbd\xb5\xee\x25\xf9\xc2\x96\x7b\x24\x0d\x1a\x16\x37\xa5\x32\xd8\xb7\xc9\xe4\x57\xa4\x30\x8e\x30\xfc\x37\x13\x8b\x31\x1b\x42\x6d\x94\xce\xb2\x62\xdc\x00\x5e\x0c\x5a\x75\x52\xf7\x0d\x88\xa8\xa8\xc6\xb1\x6c\x8a\x6c\x98\x65\x42\xd2\xa1\xdf\xdf\x20\x9d\x25\x85\x46\x99\xd4\xb6\xb5\x6d\x0f\xcf\xa6\x83\xe2\x56\x48\xf7\x80\x6d\xaf\x8e\x6d\xaf\x94\x4c\xee\x84\xa0\xb3\x96\x64\xc2\x6f\x8e\x71\xbf\x73\x0c\xa1\xf3\xf6\x3b\xb9\xcf\x79\x7b\x9b\x3d\xf9\xee\xea\x6d\x94\x38\x4e\x3b\x02\x63\xbf\xc1\x0d\x8a\x6e\xf8\xa2\x9c\x7c\xfe\xd4\x56\xe5\xb6\x2b\x6f\x77\xe0\x04\x1c\x71\x38\xcb\xa3\x81\x09\x60\x47\xd1\x7b\xf1\x6c\xa4\x02\xe2\xe2\x24\xa1\x2e\x4e\x36\xb3\xbe\x1d\x83\xcd\xbd\xc7\x90\x6e\x72\x0d\x74\x10\xaa\x6f\x79\xa5\xd2\x6d\x6d\x4e\xe9\xf7\x3f\x47\xd3\x79\x45\xe8\x16\x38\xa7\xd0\xb8\xe6\x2d\xee\x76\x7e\x85\x8f\x0e\xf4\x87\xc2\x49\xa8\x14\xfa\x52\x57\x5a\xdd\xec\x76\xfc\xd4\xf9\x73\x82\x48\xa8\xe0\x0e\xeb\xcf\x1b\xab\x02\x83\xd5\xcd\x17\xeb\xf7\xe7\x8d\x6e\xef\x2b\xc3\x3c\xe8\xf4\x70\xed\x27\x8f\x2a\xf0\x04\x35\x02\x39\xfb\x32\x3d\x1e\x46\xae\x4d\x28\x87\x7b\x03\xcf\xcb\x62\x12\xfb\x94\xe3\xae\x55\x01\x4c\x02\xf6\xdf\x6c\x56\x8c\xd3\x0c\x00\xf6\x79\x96\xe6\x39\xec\xf4\xd3\xd9\xd5\x98\x0d\xa3\xcf\x7c\x0c\x2f\x55\x6a\xf2\x11\x16\xb6\xd2\xec\xf2\x15\xb6\x12\xbb\x53\x92\x73\x80\xf7\x07\xa7\x98\x06\x4c\xa7\xa5\x6b\x0e\xa3\x1c\xdf\x53\x27\x69\x13\xcf\x85\x98\x96\xce\x0e\x45\x41\xef\x80\x65\x0e\x70\x3b\x9c\x83\x4a\x74\x5e\xad\x53\xd6\x3f\xce\xf9\x8b\xe7\x4e\x15\xf9\xa9\x5a\x37\x8f\x18\xde\xb8\xb2\x55\x7f\x3f\x89\xd3\x1b\x5d\x66\x7e\x58\x19\xd6\x4e\x3e\xec\xed\x9e\xe2\x65\xd7\x9b\x7f\x9e\xee\x9d\xc0\x36\x3c\xef\x10\x6e\x7f\x97\x57\x60\x87\xdf\x9f\xfe\x80\x69\xd3\x5e\x8c\xe8\x3f\xdd\xda\x09\x48\x61\x57\xd7\xd9\xd5\x0e\x46\x70\x21\xc5\xfd\xe9\x3f\x3f\xec\xbd\xfd\xb4\x73\x7c\xbc\xf3\xcf\x4f\x27\x1f\x3f\x7c\x38\x3a\x3e\xbd\xd8\x14\x75\x80\xd4\xb5\x6c\xc6\xc5\x9a\xfa\x98\x73\xf8\x18\x25\xc5\x06\x65\x5c\x8d\x26\xd3\x98\x4f\x78\x52\x30\x99\x6b\x88\xe5\x05\xcf\x8b\xba\x69\x48\x8e\x7d\x00\x1f\xb2\x28\x11\xfa\x61\x96\x48\xe3\x02\xde\xf6\x4f\x26\x3c\x51\xd6\x9a\x0b\xe2\x8c\x0b\xb8\x7e\xd6\xba\x05\xb2\x24\x8e\x59\x2e\x54\xd3\x23\xa9\x41\x3e\x01\xf7\x3f\xbf\xfb\x49\x2a\xb3\x68\xb3\x22\xea\x0b\xbd\x12\x83\x38\x1c\xec\xad\xd7\x25\x27\xc9\xe4\x89\x32\x0f\x84\x8c\x43\x87\xc7\xe8\x21\xa5\x5c\xa5\xc8\xbd\x07\x7b\xd0\xed\xac\x35\x60\x3f\xca\xf8\x28\xbd\x85\x67\x6b\x0d\xd8\x1d\x67\x42\x33\x79\xb1\xd6\x80\x13\x36\x62\x59\x04\xcf\x5b\xdd\xb5\x86\x80\x7a\x34\xe5\x19\x83\x6e\xb7\xb5\xbe\xd6\x80\xe8\xe8\x04\x9e\xb5\x7a\x6b\x8a\x79\x7f\x14\x4a\x30\x75\x23\xfa\xb4\xd8\x1b\x03\x70\xa0\x16\x16\x44\x24\x92\x79\x2d\x84\xc6\x89\x75\xfa\x78\xb3\x22\xf8\x56\xc0\x25\xa2\x7d\xfa\x84\xfc\xfb\xe9\x53\xcb\x20\xdb\xec\x7d\x07\x31\x1b\x5c\xe5\x1a\xae\x58\x57\x14\x50\x18\xb5\x8f\x29\xdd\x2f\x47\x3c\x17\x5b\xe2\x85\x99\xcf\x0b\x01\xb8\xe6\xe4\xfb\xef\xcf\x2e\x7f\x8e\xe2\x98\xb5\x26\x29\xfd\x9b\x66\x97\xed\x7c\x9c\xde\x7c\xea\xcf\x2e\x5b\x83\xcb\xe8\x75\x34\xdc\x5e\xff\xee\xf9\xb3\xa7\x1b\xf5\x16\x11\xce\xed\x5c\x80\x14\xfd\x6b\x4c\x71\xf2\x71\x62\xa1\x3f\xbb\xbc\xbc\xb3\x47\xed\xcd\x68\x0b\x97\xed\x7c\x0e\x95\x26\x90\x21\x22\x7f\x42\xfd\xd5\xea\x95\x8a\xed\x77\x13\x6a\x66\x92\x70\x0a\xd5\x32\x0d\xa6\xe9\x24\xc3\x87\x53\xab\x25\x0d\x1c\x81\x57\x51\x4e\x0d\x4a\xc4\x5a\xc5\xcb\x33\x35\xd7\x44\x13\x7b\xa8\x35\x43\xf7\xba\x9e\x29\x62\xfb\x28\x57\xe2\x04\xef\xd7\xaa\x32\xf9\x6a\xd5\x2c\x91\xe7\xad\xdb\x16\x2e\x46\x77\xd5\x44\x23\xf4\x8c\x95\x8d\x21\x8d\x87\x1a\x01\xd9\x43\xab\x5a\x01\x70\x93\x28\x97\x48\x68\x45\x66\xde\x65\x89\x3b\x3f\xd2\xcf\x28\xc7\x03\x54\x9f\x03\x9b\x5d\x8a\xe9\xe2\xc3\xd7\xe2\x14\x9c\xdd\x59\xa6\x26\x93\x55\xdf\x8c\xb4\xd6\xd5\xe9\xbd\x5b\x86\x23\xb6\xe1\x17\xc3\x1f\x9b\x56\x75\x63\xb5\x13\x9b\x43\xea\x79\x3d\x28\xa5\xe0\x59\x0f\xee\x9d\xb4\x3d\x08\x7e\x94\xa6\xb5\x3a\xc5\x42\xed\xe1\x5d\xcf\x80\x61\x08\x2d\xee\x86\x38\xd3\xd1\x37\xee\xe7\x47\x5e\x90\xac\x64\x21\x53\x9d\xb2\x8c\x27\xc5\xbc\x18\x0c\x95\xb9\x4e\x1a\x41\x97\x30\x3c\x41\x6a\x1d\x47\xb3\xa1\x8d\xa5\x75\xac\x24\x5c\xeb\x5f\x81\x2c\x29\x74\x7f\x34\xb2\x77\x05\x3f\xc2\x8e\x35\xc2\xc6\x74\x81\x87\x21\xb9\xf5\xd5\x6c\x23\x31\x39\x83\x90\x05\xd9\xd9\xb4\x16\xfb\x79\x9c\x2a\x7b\x00\xac\x92\x5f\x07\x42\x58\x83\xea\x2a\xe0\x4b\x00\xe9\x93\x9c\x66\x90\x4e\x11\x83\xd5\x3c\xfa\x99\xaf\x56\x55\xae\xf1\x76\x1b\x8e\x25\xeb\x24\x86\xa7\x1d\xd9\xa8\x79\xbf\x62\x1b\xbb\x3c\xf6\x8e\x75\x3e\xeb\xfe\x6c\xe4\x70\xb8\x3f\x2d\x15\xdb\xe4\x85\xee\xf6\xb4\x27\x8b\x91\x48\xc2\x60\x10\x9c\x6c\x36\x28\x74\xd4\x97\xdc\x5a\x80\xe9\xc8\x45\x0f\xb7\x17\x75\x58\x89\x32\x01\x4b\x77\x06\x83\xb1\x20\x16\x9e\xb7\x2e\x7c\x4c\x2e\x5a\xb0\x2f\x4e\x41\x3c\x9b\xe0\x91\x40\x56\xb8\x40\x2f\x7c\xbd\xef\x40\x3a\x12\x20\xed\x2e\x1b\x74\xc8\xe2\x12\x39\xb4\x24\x29\xec\xf0\x0e\x10\xb1\x51\xc7\x60\xa1\xe5\x19\xd8\x32\x92\x83\x00\x49\xc6\x1f\xee\x8e\x46\x45\x7a\x80\x93\x7f\xcf\xc4\x16\xd8\xcf\xd8\xe0\x8a\x17\x62\x2b\xa4\xcd\xfe\x26\xcd\xae\x72\x60\x78\x8b\x43\x51\xd5\x9b\x4d\x4c\x5a\xf1\x44\xd3\x8a\x81\xd8\x23\x63\x0e\xe9\xa0\xe0\x85\xda\x90\x4f\xfd\xae\x0c\x95\x28\xa1\x40\x0e\xb3\x64\x92\x0e\xa3\x51\x84\x56\x1e\xa1\x1a\x6a\xc6\x55\x2c\xcb\xb2\x4b\x73\x35\x78\x94\x1d\xc9\x13\x93\xcd\xc9\x18\xba\x62\x32\x41\x43\x1d\x05\x21\xb7\xbc\x01\x58\x76\xe9\x39\xd5\x99\x15\x27\xab\xf8\xd0\xbd\xa7\x76\x65\xa7\x51\xe3\xfe\xa3\x4d\x1a\xb8\x2e\x56\xa9\xcd\xaa\x0e\x07\xad\x13\xd1\xa7\x23\x0a\xaa\x4f\x15\x5a\x70\xcc\x07\x3c\xba\x16\x6c\x22\xbe\x4a\xd4\x24\xb0\x7a\x05\xbc\xe4\x68\x60\x9b\x08\x58\x76\xe9\xe5\xed\xc7\xb7\x7f\x8b\xe9\x24\x5f\x99\xec\x47\xb7\x82\xcd\x70\x87\xa9\xd5\x21\x4a\x60\xef\xa4\xd7\xe9\xae\xb7\xc0\x51\x45\x2e\xa3\x62\x3c\xeb\xb7\x06\xe9\x44\xaa\xfa\x6d\x92\x87\xed\xe9\x2c\x8e\xdb\xdf\xbd\xa8\x58\xc4\x3b\xb9\x9b\xf4\xd3\x38\x94\x7d\x9b\x4a\x5a\xf9\x94\x0f\x84\x02\xf4\x48\x5f\x95\xe2\xc8\x68\x7e\xcf\xdc\x4a\x94\xc8\xe7\x8d\xf5\x0e\x72\x91\xe4\x6d\x78\x5d\x34\xf4\x96\x88\x61\x79\x44\x6f\xcb\xfb\xe2\x51\x0a\x46\xfc\x5c\x8e\x17\x75\x8f\x04\x54\xcb\x39\x4d\x63\xf9\x2c\x65\xa3\xfb\x5d\x8f\x62\x9c\x17\x64\x89\x42\x1f\x9d\x28\xf7\xb4\x2b\x8b\xad\xf1\x18\x56\x23\x13\xca\x03\x6c\x6d\x11\x99\x04\x6e\x88\x2d\x2d\x16\x90\x51\xe8\xe6\xc0\xae\xdb\x7e\x2a\xb8\x1e\xf5\x76\xf3\x8f\x88\xdf\x50\xb3\x7a\x00\x2c\xd6\x7d\x17\x5d\x71\x59\xc5\x86\xa3\xf0\x72\x02\x9a\xd2\x3a\x29\xad\x11\x5c\x21\xa3\x28\xcb\x8b\xc0\xf2\x48\xfc\x25\xd2\x00\x35\xc7\x16\xae\xf2\x47\x43\xeb\x69\x00\xd5\x34\xa3\x8f\xcd\x38\xba\xe2\x8a\x5d\xbc\xf5\x25\x36\x2a\x87\x94\xb4\xc4\x9c\xa1\x44\xf9\x81\x14\xa9\x8a\x82\x56\xc7\x75\xf8\xf2\x45\x76\x28\xc7\xfc\xf8\x31\xf8\x2d\x5a\xfd\x32\xc6\xf5\xb9\x14\x95\x7b\xfc\x43\x9c\xe0\xb8\x0f\x96\x98\xc1\x93\x69\x0b\x24\x14\xc9\x27\x6c\xea\x8b\x27\xc1\xbc\x96\x88\x22\x98\x8b\x44\x54\xdd\x4e\xa5\x80\x20\x8f\xc4\x06\x4d\x44\x50\xbf\x1f\x3f\x76\x3f\xd4\xea\x36\xcf\x1c\x8d\x2c\x79\x00\xe6\x93\x84\xe2\x11\xcd\x7e\xe3\x2c\xeb\x2e\x41\x32\x54\x1d\x60\x1b\x49\x4e\x7c\x61\x38\x18\x63\xd0\x69\xd5\xaa\xef\x51\xf8\x41\x99\x56\xa4\x1f\xb2\x68\x12\x15\xd1\x35\xf7\xe5\x9a\x3e\xca\x60\x5f\x67\xe5\x06\xe7\x73\x82\x3d\x04\xc6\xaa\x2d\x90\x73\x20\xd5\xb4\x34\x98\x4f\x0e\x77\xc6\xe6\x72\xc8\xef\xb1\x3a\x7f\xfd\xda\xac\x5b\x6a\xda\xbe\x24\x14\x5a\xb4\xc5\x71\xeb\x9a\xc5\x9c\xee\xaa\xe4\x1a\x72\xb6\xbe\x3a\xc6\x94\xc4\x71\x0a\xbd\x44\x0f\x53\x80\x8a\xd4\xe2\x41\x7d\x4b\x32\x3a\x5a\x2b\x2c\xa2\xe7\x45\x76\x66\xc0\x9d\xd7\xfd\x72\xdc\x3c\x4b\x5f\xe5\xcb\xfa\x60\x65\xb9\xd5\x35\xc0\x28\xea\x67\x6a\x7a\xce\xb1\x03\x73\xf6\xc6\xfd\xc1\xf6\x94\x58\x6a\xab\xb0\x15\x81\x07\x25\x0a\xa9\x02\x87\x69\xc1\x37\x61\x17\xb5\x55\x4b\x31\x7b\x82\x97\x7c\xce\x20\x04\xb5\x94\xc7\x64\x91\xa2\x3a\xc8\xb2\x74\x96\x0c\x95\xa5\xa6\x3f\xbb\xdc\x14\x20\x97\x53\x1f\xba\xcf\x36\x2a\xbe\x62\xec\xe8\xef\xa1\x43\xa9\x6a\x11\xae\x67\xed\xaf\x64\x67\xc5\xed\xb9\x96\xeb\xcb\x1b\x6b\x6d\x8b\x8f\xb4\xb2\x97\x10\x9e\x55\x3a\xbc\xcc\xd7\xe7\x14\x0c\xd7\xef\x32\xa7\xf7\x89\x9d\xaf\x3a\x49\x61\xa3\x65\xcf\x51\xb6\x55\x01\x95\x43\xea\xb4\x01\xa3\x28\x8e\xed\xc5\x60\xdc\x95\x05\x4d\x88\x24\xca\x01\x1f\xb1\xb4\x2e\x90\x94\xaf\x99\x75\x64\xd4\x0d\x94\xd7\xbe\x80\x8f\xe4\xd3\x72\xd1\xba\xf8\x3e\x4a\xe2\x3b\x98\xb2\x3b\x60\x45\xc1\x13\x32\x79\xa4\x1a\x19\xd1\x1e\xef\x9b\x99\x56\x83\x4f\xc7\x91\xbe\xf2\x9e\x66\xfc\x9a\x27\x45\x0e\x6c\x30\x88\x86\x42\x75\x12\x0b\x3e\x97\x1e\x7a\x51\xa2\x57\xac\xbc\x00\x4f\x67\xb1\xf6\x9b\xea\x73\x72\x81\x9e\x66\xbc\x10\x07\x14\x46\x9d\xb0\xac\x00\x3a\x91\xb7\x9c\x43\xb3\xab\xf6\x3b\x7a\x95\x14\xb9\xaf\x03\x54\x68\x89\xb1\xd7\x3c\x02\xcb\xfa\x9b\x0b\xeb\x7b\xfa\x7a\x80\xc0\x46\xdc\xed\x62\x61\x2e\xaf\x2f\x45\x6b\x3e\xf4\xdf\x9e\xa1\xcc\x22\xbf\x58\xd1\xfc\x8c\xa6\xdd\x96\x5a\x9e\x54\x21\x16\xb1\xc5\xca\x7c\x6e\xb1\x8f\x1c\xe1\x6a\x65\xee\xa3\xa3\x89\xbd\xe2\x02\x3c\x37\x6f\xf4\x62\xa5\xc0\x6b\xe8\x08\x22\x8e\xf9\xe0\x8a\x0f\x25\x9c\x2f\xd0\xb1\x29\xb3\x17\x92\xfd\xc9\x6c\x52\x17\x82\x55\x05\x1e\x97\xe0\x91\x7e\x69\xd2\xfc\x99\x67\x69\x73\x01\x11\x3d\x12\xc9\x71\xf8\x84\x2a\x13\x46\x5d\xd7\xca\xc9\x0b\x62\x68\xae\x19\x7e\x23\x96\x21\x1c\x05\xf0\xaf\xc7\xd3\x3d\x87\xd0\x81\x01\x5f\xe2\xe0\x9e\xee\xf2\x41\xe0\x80\x4c\x72\x53\xae\x14\x7c\x27\xe6\x2c\xa1\xaa\x09\x2e\xa4\x3e\x43\x75\x56\x8c\x36\xaa\xb6\x16\x6b\xcc\x5c\x7b\xb2\x5a\x4d\x77\xbc\x50\x16\xab\x24\x12\xaa\x36\xbd\xb4\xb1\x57\xe2\xbd\x79\xef\x27\x2f\x63\xc4\x8e\x4b\x37\x33\x81\x51\x7e\x81\x8e\x63\x61\x72\x38\x53\xed\x96\xca\x11\x90\x52\xb9\x6e\xa3\xb5\x89\x2e\x7e\x4b\x00\xd5\x08\x65\x5d\x7a\xe1\x63\x3b\x81\xb5\xdb\xf0\x63\x16\x15\x78\x2f\x03\x63\x7e\xab\xb5\x29\x21\xe6\xf9\x2d\x13\x87\xc6\x06\x89\xb7\x41\x9a\x14\x68\x21\xd1\x89\x99\xc6\x2c\x63\x83\x82\x67\x64\xf1\x31\xde\x35\xb3\x9c\x03\xbf\xe6\x99\x0c\xe2\xa0\x9d\x74\xa4\x36\x57\x6a\x2f\x58\x53\xc8\xcb\xcb\x24\xcd\xf8\xb0\x05\x35\xde\xba\xd4\x0f\x41\xab\xac\x7f\x7b\x3b\x18\x56\xc9\xaa\xd4\xe7\x50\x90\x8f\x91\x90\xa8\x55\xd6\xaf\x92\xbc\x23\x72\x09\x4a\x90\x63\x4a\xa7\x21\xe9\x53\xf7\x72\xb9\x49\x83\x9b\xc3\x75\xfa\x3c\x09\x52\x95\xd2\x6e\x9f\x7a\xd6\xf0\xbb\x72\x6f\x2d\x4b\x07\xbb\x78\xc9\x59\x04\xd0\xd1\x84\x23\x0a\x26\x1c\xc1\x4b\x50\x51\x84\x23\xcc\xb3\xa3\x66\xa9\x3f\x1b\x9d\x45\xe7\x0a\x0d\xf1\xe7\x63\xe8\x3d\x7f\xee\xca\xf0\xb9\x23\x33\x76\x2b\xd4\x85\x8d\xca\x57\x3e\xdc\x9b\x32\x1c\x24\xa6\x11\x13\x23\x33\x4c\x0b\x2f\x2d\x00\x8b\xb5\x89\x55\xda\xe8\x50\x7b\x48\x67\x45\x1e\x0d\x51\x4b\x91\x97\xc0\x7d\xa1\xaf\xe5\x55\xe7\x38\xb9\xb0\x33\xa1\x95\xcb\x09\xf8\x22\xe4\xf0\x03\x9d\x53\xd5\x25\x3b\x97\x73\x55\xa6\x42\xe9\x75\x8e\xe5\x86\x5f\xd2\x37\x82\x56\x61\xa5\x9c\xdb\xda\xd8\xaf\x03\x62\x4f\x5d\xdd\x7f\xc1\xb2\x5c\xb3\xd2\x89\xf4\x2b\x6d\xdf\x5f\x6d\xd8\x76\xb8\x91\x8e\x5b\x50\x4b\xfb\x9f\x0d\xcb\x95\x9e\xc8\xf7\x3f\xd7\x6d\xa7\xe5\x98\x27\xe8\x2e\x42\x0b\x2d\xed\x7f\xf6\x96\xd9\xa2\x85\x56\x37\xbe\x24\x02\x73\x8b\xec\x9d\xd2\xc3\x59\x9a\x7e\xed\x7f\x22\x3a\x1a\xa4\xd3\x3b\xd1\xb0\x01\x1d\xfc\x7f\x84\x58\x6a\x62\x02\x01\x68\xdc\xc2\xea\xa8\xfd\xc2\xda\xad\xaa\x14\x7f\xc1\xd8\xf4\xe7\x41\x7e\xc8\x0e\xed\xd1\x96\xf0\x75\xc6\xda\x09\x58\x68\x5d\x4b\x99\x20\xab\x8f\x2c\x9e\x17\x70\x9f\x24\x30\x68\x4f\xa0\x63\x4e\x94\x13\x07\x89\x6a\x43\x56\xb0\xc5\x66\x38\x5d\xab\x74\x12\x90\xf3\xe6\xde\xf3\xe8\xb3\xde\x80\x32\x5e\x88\xfd\xe2\x42\xcb\x56\xfb\xe2\xe7\x02\x30\x62\x40\x9f\xd3\xa6\x82\xfb\xd0\x88\x45\x71\x4e\xc1\x80\x10\x94\x6c\x18\xe5\x70\xc8\x0e\xd5\x33\x24\xb1\xea\xd5\xd3\x0c\x18\xa4\x3c\x1b\xd0\x51\x51\xe8\x35\xad\xba\x77\xd7\xb4\xfd\x15\x97\x4d\x3b\x45\xc1\x27\x53\xd4\xa6\x50\x9d\x61\x85\xbe\xb2\x91\x79\x39\xd0\x87\x54\xbd\xfc\x30\x66\xc1\xc0\x7f\x55\x0a\xe5\x42\xe9\x3b\x6c\x14\xe6\x25\xf0\xf0\xb4\x76\x25\x0d\xa1\xe3\xd0\xdc\xf2\x2c\x29\x5d\xaf\xad\x69\xae\x33\xb2\x1f\x9d\x1a\x1d\xdf\x98\x66\x1c\x25\x1c\xf8\xbf\xc5\xff\x21\xfa\x7a\x1f\xec\xb8\x18\x38\x0f\xe2\xd6\xac\xe3\xbc\xb7\xaa\x6d\xbd\x50\x7f\xab\xf5\x1d\xed\xb0\x6f\xdb\xdf\xfa\xad\x4f\xa6\xad\xf2\x41\x91\xf6\xac\x3e\xae\x19\x5f\xf4\x48\xbf\x3f\x5f\x9c\xf8\xd5\xea\x5a\x8f\x90\x31\xf0\x35\xae\xe8\x3b\x92\x39\xaa\xb6\xfa\x54\x63\x0d\xe8\x1b\x22\x5a\x66\x56\xd6\xb0\xe4\x6d\xbd\x0e\xcc\x8b\x7f\xc8\x1a\xc0\x5a\xca\xa7\x8e\x59\x5b\x5b\xbd\x0c\xab\xef\xc1\xea\xfb\xb1\x14\x1b\xd0\xd7\xb0\xfa\x01\x58\xa5\xeb\x5a\x56\x17\x12\xa5\x1c\x73\x71\xa1\x56\xeb\x98\x67\xfb\xb3\x51\x77\xb5\x81\xff\xf6\x8c\xd1\x21\x0f\x1a\xe2\xe4\x74\xa5\x99\x35\x8c\x6a\xd9\xac\xcd\x28\xe8\x98\x36\x75\x76\xd4\x06\x7c\x2b\x14\x9c\x96\xb6\x11\x8a\x4f\x98\xa9\x43\x7d\x2a\xa9\x4c\x0d\xb9\x39\xbc\x67\xc5\xb8\x35\x89\x92\xda\x6d\x03\xee\xea\x5a\x91\xda\x82\xb5\xb5\xc8\x16\xbe\x4c\x68\x4e\x82\x77\xfa\x67\xd1\xb9\x11\xa8\xd8\xef\x59\x74\x2e\x7f\x62\x9f\xe6\x27\xe6\x8b\xd2\xd2\x55\x8f\xe2\x16\x5e\xc2\x9d\x1e\x43\xb3\x2b\x3f\xdf\xc1\x4b\xb8\xd5\x9f\xbb\x86\xbb\x3b\xce\xaa\xd8\x33\xc7\x11\x6b\x5d\xe8\xaf\x35\xf7\xdc\xa3\x12\x80\x49\x99\xa0\x0b\x5b\x45\xfa\x2e\xbd\xe1\xd9\x2e\xcb\xb9\x49\x2e\x8c\xc9\xb4\xaa\x63\x7e\x5b\xb5\x92\x6b\xd1\xa1\xc7\xfb\xd0\x74\xbf\xb0\x7c\x10\x45\xce\x97\x98\x15\x51\xd2\x75\x3e\xf5\x23\x4c\x71\xe6\x7c\x42\xbf\x38\x17\xf8\x20\xef\xf9\x1f\x9a\x3d\xbf\xff\xee\x7a\xcc\x4b\x38\x59\x1f\x9d\x04\xcc\xf8\xc5\xcb\xe5\x15\xf2\xe2\x70\x5e\xa0\xb8\x8b\x19\xbf\xd4\xe2\x28\x0f\x68\xbe\x8f\xdc\x7d\x4f\x54\x5a\x7c\xf6\x5b\x15\x55\x02\x76\x38\x96\xd0\x16\x2a\x96\x05\xe1\xe2\x29\xb9\xa2\x5d\x50\x15\x09\xc9\xd4\x8e\xa3\xa2\x46\xee\xc6\x15\xd4\x1f\x1d\x51\x2d\x57\x8c\x7d\xc0\x30\xbd\x3b\xeb\x43\x37\x5c\xdb\xc6\x3a\x67\xd1\x79\xcb\x32\xd7\xdf\x7b\x9a\xf2\x5c\x77\x71\xa3\x5f\x8a\x9a\xd3\x34\x97\x98\x2c\x8b\x87\x51\xe6\x24\x16\x7a\xf5\xda\x92\x52\xe8\x64\x8e\xac\x54\x83\x70\x5e\x21\x29\x33\xb8\xad\x1c\xcd\x0b\x42\x1b\x0c\xc5\xf4\x1b\xa6\x5b\xf5\x27\xf4\x4e\xa5\x47\xe2\x8d\xc4\x34\xcd\xa9\x5c\xd0\x66\x8d\xce\xac\x9a\xd0\xee\x71\x6e\xc4\x33\x67\x63\xb7\x0e\x46\x0b\x2c\x24\xfe\xe0\xa8\xa6\xaf\xc0\x49\x7b\xa7\xd3\xf3\x9c\x7b\x58\x09\x40\x6c\x25\xd6\x1c\x28\x04\x9c\xab\xc5\x60\x1f\x06\x6d\xab\x1f\x65\xfb\x26\x83\xcf\xa3\xc0\x3d\xf2\x83\x7b\xd3\x7c\xd7\x86\x05\xb7\x43\xea\x02\x48\x0e\xd1\xbe\xb7\x2d\xdf\x02\x39\x48\x96\x2f\x1a\x69\xf7\xf1\x29\x29\x4a\x04\x26\xef\xd1\xe5\x6c\x1b\xca\x39\xba\x5f\x41\x4f\xe8\x38\xfa\xfb\x59\xef\x5c\x2b\x39\x7a\x2f\x37\x20\xe8\xd4\xa9\x64\x85\xbd\x6b\xb6\xdb\xe8\x07\xc8\x70\x75\xc5\x69\x3a\x45\xb5\xf4\x3a\x8d\xd0\xc3\x76\x96\xc9\x07\xc7\x88\xab\xd8\x28\xf8\x50\x6c\x15\x2a\x96\x97\x5a\x95\x5b\x5b\x8a\xe4\x6a\xa3\x71\x99\x2a\xbc\x43\x04\xf7\x88\xe0\x2e\x61\x71\x84\x79\x65\x59\xda\x95\x42\xfb\x92\xd5\x52\xd4\x3c\x4d\xdf\x08\x35\x58\x31\xa4\x2d\x9f\x02\x1b\x4f\x68\xeb\x09\x6f\x3e\x73\xb7\x1f\x1b\x6f\x78\x02\x3d\xa7\xb6\xd9\x61\xbd\x8a\xaf\x5e\xbd\xc2\x9d\x7f\xce\x0e\x69\xd5\xa6\xef\x0b\x87\xe5\xed\x78\x52\xfe\x9b\xc9\xb4\x9f\x41\x69\xb8\x86\x77\x5e\x43\xb3\x0b\x9b\x0b\xa8\x27\x78\x88\xe5\xf9\x6c\xc2\xb1\x92\x86\x75\xaf\xff\xb2\x4c\xa7\xb5\xaa\x63\xdf\x74\xf5\x0f\xdd\xc0\x65\x35\xbd\x77\xdf\xcb\x1d\x5a\xae\x3c\x4b\x98\xd9\x46\x51\x4b\xdc\xe5\x71\x7a\x73\x9a\x2a\x93\xb0\x89\xc5\x80\xb7\x28\x42\xf2\x0d\x2d\x43\x5d\x80\xbd\xd5\x49\x13\x1f\xed\x89\x95\x71\xcd\xb3\x68\x74\x47\xa7\xc8\x55\x99\x3e\x99\x0e\x9d\xdb\x20\x0e\x5f\x1f\x0f\x0e\x4f\x9f\xf6\x56\x21\x8f\x92\x01\x57\x17\x43\x19\x67\xc3\x66\x9a\xc4\x77\x15\x79\x27\x44\x0e\x3f\x42\xc0\x30\xdb\x3d\xb6\x25\xfb\x23\xcf\x5f\x3e\x66\xd7\x3c\x87\x84\x47\x18\x4b\x00\x6f\x9b\xe5\x48\x12\x47\x41\xa6\x10\xb7\xac\x80\x1b\x0e\x94\x4e\x94\x65\x45\x9b\xe3\x03\xfc\x76\x5b\xbe\x76\x8a\x32\x98\x4d\xa7\x3c\x6b\xe3\x30\xa5\xf5\x4a\x39\x89\xd3\x85\xdd\x94\xe5\xf8\x9c\x13\xad\x5d\x18\x76\x57\x1c\x5a\x65\xd0\x03\x63\xc1\x8a\x72\xa0\xa7\x42\x43\x40\x17\x25\xca\x61\x48\x99\x13\xf7\x76\xdf\xef\x34\x7b\xeb\x3d\x58\x2f\xc6\xb0\x37\x8c\xc4\x24\x34\x08\xc0\x09\xa7\x29\xe9\x3e\x6d\x89\xff\x7b\x01\xc7\xb3\xa4\x88\x26\x1c\x4e\xf8\x84\x25\x45\x34\xc8\x37\xe1\xef\xfc\x8e\x0f\xdf\xd0\x7b\x93\x83\x24\x2a\x22\x16\x47\x3f\x2b\x57\x6e\x19\x5f\x8b\x65\xbe\x49\x0d\x53\xdf\x8b\xcf\xd6\xe5\xa4\xac\xa7\x0f\x9b\xc6\x48\xc5\x59\x16\xdf\x09\x58\x54\xe5\x15\x58\xb3\xd8\x82\xb7\x42\xf0\xa3\xc1\xa0\x48\xd5\xe5\x1d\x4c\x53\xbc\xf8\x63\x31\xcc\xa2\xa4\x78\xda\xab\xc8\xd7\xac\x3c\x1b\xa0\x5d\x8a\x45\xe2\x34\x18\xa7\x37\x2e\x96\x0e\x68\x6f\x5f\xab\x3a\xb7\x07\xbc\x14\xc4\x07\xaf\x21\x86\x61\x10\x58\xdb\x2e\xf0\x41\x05\xae\x3f\x4d\x7f\xed\x36\xec\xa7\xd9\x80\x4c\x1a\xb9\xbc\xcd\xa4\x71\xd1\xd5\x25\x9d\x6e\x59\x9c\xa7\xd2\xea\x41\x6b\xe1\xae\x7d\xc8\x0e\xd5\xa3\xd9\x22\x85\x4e\xab\x42\xa8\xbc\x7a\xf5\x8a\xe8\x2c\x47\x4d\x3f\x5d\x74\xb0\x68\x21\x09\x1e\x99\x0d\xa3\x7c\xd1\x52\xd1\x99\x28\x70\x7f\x5b\x72\xab\x09\x4a\xd7\x31\xbf\x3d\x41\xf3\x3e\x85\xca\xb1\x04\x41\xe5\x37\x6c\x2b\x4b\x81\x74\xb7\x3e\x73\xa5\x25\x3e\x2f\x05\xe0\xeb\xf6\x49\xac\xbc\x14\xdc\xc5\x7b\xcb\x72\xe4\xfa\x7d\x36\x4d\x59\xff\x01\x14\x1e\xde\xe0\x7e\xe5\xd5\x5b\x79\xf7\xd2\x7f\xaf\x41\xb5\xfa\x2b\x77\x2f\x1d\x19\x4d\x6f\x04\xea\x25\x7d\xff\x4e\xbb\x57\x2b\xdd\xfb\x02\x6a\xda\xc1\x39\xca\x9b\xea\xb9\x46\x32\x9d\xc0\x94\x0d\xae\xd8\x25\xaf\x57\x48\xc8\xcb\x10\xf7\xa5\x98\xae\x2d\x38\x10\xdb\x50\x92\x0a\x41\x96\xe7\x51\x3f\x46\xe1\x86\x16\x53\x2b\xc6\xbd\xec\x0e\x13\x0c\xf0\x38\x62\xfd\xf8\x8e\xfc\x13\xe4\x0b\x10\xb1\xed\xa9\x07\xfc\xc6\x98\x2a\x24\xe5\x40\x85\x93\x9d\xcc\xe2\x22\x9a\xc6\x1c\x86\x91\x80\xc5\x93\x82\x12\xed\x4d\x23\xf2\x37\x17\x83\x50\x19\x8d\x15\xf6\xa2\x8f\x59\xce\xa5\xe8\x21\xb7\x6d\xe9\x9c\x8d\xaf\xaf\x84\x7a\x29\x9f\xb5\x61\x1c\x05\xe5\x20\x2e\x37\x3c\xd1\xbd\xbc\xcc\x43\xaf\x1e\x96\x50\xe4\x1d\x71\x5e\x52\x5d\xea\x37\x2e\xb2\x4b\x4c\xff\xb7\x9c\x6b\x70\x94\xe7\x33\x9e\xb7\xbb\xcf\x9f\x05\xbc\x7b\x2c\xcb\x24\xce\xb1\xa5\x76\xdc\xb0\x29\xd4\xfa\x0d\x48\x1a\x30\x31\x1a\x46\x84\x66\xa1\x44\x9c\x47\xc5\x3f\xf8\x6b\x42\xbf\x26\xe2\x57\x64\xfb\xe3\xea\x7e\x04\xb0\xee\xba\x6d\x86\x90\x5f\x6a\xce\x25\x63\x69\x4b\x90\xa7\x7c\xf8\x2b\xf4\xf0\x70\xf4\x80\xe3\x8e\x1c\x0b\xfa\x2e\xe8\x93\xa9\x99\xd2\x74\x04\xdd\xf5\x66\x3f\x2a\x8c\x09\x79\xce\xe5\xa3\xbc\x79\xec\x19\x31\xcd\xa6\x72\xed\x46\x0d\x51\x06\x5d\xcf\x08\x2d\x0a\xe7\x0e\xfd\x69\xcf\x1f\xfa\xd3\xde\xf2\x43\x7f\xf6\x6d\x86\xfe\xb4\xf7\x35\x43\x7f\x36\x7f\xe8\x4f\xeb\xa5\x02\x41\x10\xfa\xa7\xf7\x35\x74\xc1\x87\xa5\x0e\x5d\xd6\x9f\x2d\x4f\x97\x8d\x6f\x43\x97\xf5\x67\x5f\x43\x97\x8d\xf9\x74\x79\xb1\x88\x2e\xeb\xc1\xc2\x1e\xfd\xf3\x3c\x58\xf8\x94\xfe\x79\xb6\x2c\x45\xd5\x6d\x89\x4d\x53\xfd\xad\x16\xb8\xcd\x0f\x12\xd6\xb2\xc7\xd9\x4a\x0e\xdd\x4b\x7b\x27\x78\xb7\x9e\xaf\x44\x74\xec\x6b\x56\x65\x0b\xb1\x0e\x33\x2d\x36\x9d\xc6\x2a\xc2\xaf\x86\x5d\x9f\x33\xb6\x77\xe9\x80\xc5\x5c\x8f\x70\xee\xe8\x03\x8d\xf9\xbf\x67\x2c\x76\xe2\xf1\xca\x2f\x35\xeb\x36\x23\x78\x3d\x10\xdc\x73\x77\x4a\xc6\x2f\x89\x4d\xb5\x6e\x85\x93\xf5\xcc\xfb\x72\x07\x75\x8d\x9b\xf2\x62\x45\x92\xa0\x4f\x4f\xf5\x3a\x41\x02\x44\x89\x38\xa8\x38\x96\x5c\xf5\xc9\x9a\xda\xbc\x10\x92\x1c\x27\x0c\xed\x2f\xec\xd6\x0a\x78\x5d\x7a\x4a\x8d\xfa\x6e\xa6\x18\x41\x5f\xb6\xa1\xd2\x89\xd3\x37\x61\xb7\xf5\x56\xc6\xa7\x31\x1b\xf0\x5a\xbb\xd6\xfa\xa5\x77\x5f\x6f\x5f\x36\xa0\xfa\x97\x2e\x08\xcd\x21\x8b\x26\x35\x7b\xcc\xc6\xb2\x23\x5a\x22\xf0\xb5\x6d\xa8\x42\xab\xd5\x82\xaa\x19\x7d\xf5\xa5\x5c\x95\x32\x20\xaf\x50\x44\x5e\x55\x83\xc3\x5e\x74\x1b\x55\xb0\xec\x12\x63\x34\x68\x6d\x8a\x62\x41\x9e\xd0\x6f\xf1\xe7\x9e\x3a\x1c\x7b\x96\x53\xd5\x34\x60\x3c\xa5\x22\xcf\x7a\xaa\xea\xd3\xbf\xfa\xf6\x49\xfe\x74\xaf\xa0\xee\xe7\x31\x14\xd5\x5e\xfe\xd2\x89\xea\x3f\x60\xd8\x0b\xdd\x36\x3d\x60\xce\x53\x46\x47\x89\x4f\xf9\x6a\x2a\x70\x40\x9d\x77\x26\x0d\x9e\xfc\xbc\x43\x1e\x11\xf4\xb5\xa2\x96\xe4\x91\x4d\x07\x86\x9e\xb7\x30\x24\xab\xb8\xd4\x6c\x6f\x5e\xf7\xba\x70\xde\x39\x53\x9f\xb8\xad\xa3\xaa\x83\xa3\x0c\x00\x7d\x62\xd7\x53\x50\x83\xc7\xda\xf0\x1e\x64\x9b\x22\x20\x4a\x86\xfc\xd6\xbd\x0a\x31\x7d\xbc\xda\xd6\xf0\x31\x08\xb6\xfc\xa6\x6d\x3c\xd6\x3d\x5a\x88\x76\xa6\xb9\x57\x1d\x2f\xe6\xee\xdd\x93\x7d\x08\x6c\x57\xa1\xe5\x9c\x83\xbd\x33\xb2\xd5\x9f\xfd\x69\xcf\xd4\xf1\xc5\xa0\xe4\xb4\xe0\x55\xa7\x6a\xda\x34\x70\xad\x5b\x4f\x8e\x25\xb9\xf5\x35\x74\xd7\xa9\xe0\x09\x08\xbb\x42\x6b\x96\x53\x9e\xeb\xdd\xc8\x93\x09\xaa\x3e\xe2\xa5\x5a\xd0\xd4\xcb\x88\x4e\xee\x09\x6d\xae\x4e\xe0\x5d\xad\x2a\x04\xd4\x0d\xab\xe9\xa0\x74\xd5\x6a\x55\xb5\x6e\x5c\x9d\x06\xbf\xc3\xd5\x2b\x3e\x35\x4c\x86\x39\x48\x8b\x9c\xed\x8e\x38\xe4\xb7\xf8\xa2\xf6\x9a\xc5\x17\xe2\x48\xa3\xcf\x1c\x4c\x39\x6b\x0b\xa6\xb9\x30\x6e\x54\x17\x18\xe2\xfa\xe8\xd8\x44\xd3\x5c\x0a\xc8\x4b\x17\x88\x38\xca\x08\x38\x6a\x5b\xcd\xf1\xc9\x42\x53\x5d\xaf\x35\xcd\x69\xb0\x48\x21\xe7\x2c\x1b\x8c\xa9\xc2\x35\x8b\xb1\x34\x70\xb7\x41\xde\x43\x12\x8e\x71\x63\x6b\x02\x4b\x24\x8e\x51\x52\xa4\x1a\xb9\x2d\xed\x0d\x31\x88\xd9\x64\x4a\x66\x52\xac\x5a\x3c\xed\x11\x14\x7d\x68\x46\x18\xe4\xf9\xcf\x62\x2b\x34\x6e\xc6\x63\x7e\xcd\x12\x8c\x0c\x27\x30\x8b\x8c\x3b\x3d\x41\x18\x46\x62\x30\xe8\xc1\x21\xd8\x09\xd1\x38\x1a\x35\x64\x78\x10\xbc\xba\x60\x79\x71\x40\x9f\xad\xdb\xae\x68\x18\x65\x5c\x3e\xb4\x91\xa5\x26\xf1\xeb\x35\x8b\x5d\xc7\x36\x83\xd0\x30\xca\xb4\x9f\xd1\xde\x64\x5a\xdc\xe9\xb8\x33\x9c\x25\x98\x7b\x64\xc2\x8a\x81\xd2\xfc\x64\x3c\xb3\xa0\x62\xd7\xec\x6a\x23\x72\x36\x61\xb1\x50\xa5\x9d\x97\xed\xd6\x45\x96\xe7\x33\xe8\x5f\x66\x59\x66\x08\x07\x02\x38\x0d\x49\xba\x19\x3f\x41\xab\xec\x95\x15\xe5\x45\xbb\x0a\x3a\x4d\x4d\x10\x98\x79\x30\x5e\x42\xb3\x73\xbb\xd1\xa1\xff\x82\x40\xac\x72\x29\x37\x9d\xe2\x35\xeb\x17\x3e\x71\x46\x0b\x63\x91\xc2\xa1\x7a\xb8\x44\x41\x27\x2d\x17\x36\xcb\x65\xd1\xf2\x39\x36\x5f\x31\xa9\x0d\x9a\xda\xf5\x36\xd6\xa0\x77\xb2\x70\xc8\x0e\x1b\xb0\x3a\x4a\xd3\x55\x8c\xd1\xd5\x90\x6b\x00\x6e\xc6\x69\xac\x62\x09\x95\x87\x20\xb8\x8d\x9c\x73\xbd\xa9\x6d\xaa\xa3\xeb\xfc\x29\xdd\x84\x84\x5f\x32\x7c\x43\x47\x4b\x36\x97\xfb\x01\x9a\x27\xc4\x62\x17\x62\x59\x5a\x26\x34\x02\x65\xc7\xd9\xba\x8b\x92\x8b\xc7\x5a\x99\x87\xec\x79\xf6\xaa\xdb\x42\x16\x19\xdb\x16\x7b\x40\xd3\xbc\xa0\xb3\x26\xed\x6c\x73\xd8\xa1\x53\x82\x5e\xe2\x46\xd9\x85\xbb\x9d\xfa\x14\xbc\x66\x71\xe9\x41\x68\x70\x19\xe0\x77\xff\xf1\x64\xa3\xec\x31\x4f\xd2\x9a\xb2\x07\xc8\x59\x97\x72\x3b\x52\x82\x20\x1a\xe1\x54\x47\x39\x5d\x9b\x82\x27\x46\xc2\x77\xe1\xd7\x2c\xb6\xd9\xf0\x84\xae\x40\xd0\x92\xb9\x09\x71\x9a\x5e\x89\x25\x8a\xae\xef\x28\x37\x08\xfb\xb6\x8a\xff\x18\xdf\xb0\xbb\x9c\xfc\x0f\x35\xd5\xae\x59\xbc\xd8\xaf\x54\x4e\x94\x1f\xa2\x84\xdd\x49\x4c\x97\x95\x68\xee\x34\xfa\x74\xf6\x5e\x8e\x11\x9d\xc5\xff\x3e\x86\xce\xed\xfe\x3e\xdd\xe1\x20\x1d\x31\x1e\x10\xc5\xb1\xa3\x9b\xa3\xb3\x4e\xb3\xf7\xfc\xb9\xf1\xb3\x90\xa0\x43\x6f\xde\x5a\x8a\xfa\xe1\xf7\xa2\x16\x1f\xfd\xe2\x1b\x83\x17\x81\xa3\x50\x66\x73\xe8\xa0\x2c\xb3\xa5\x68\x8e\x8b\x00\x5b\x9c\xb0\x1c\xf0\x25\xe7\xe8\x0c\x69\x7a\xfe\xd0\x3c\xcd\x7b\xd7\x5a\x15\xad\xd5\x61\x46\xed\xde\xf2\x09\x99\x36\x95\x56\xbd\xd7\x4c\x16\x1e\xe8\x21\xbf\xdc\xde\x47\x01\xa5\x87\xfc\x56\xc6\x05\xe8\x56\x74\x60\x9e\x77\xd6\xa3\x06\xd7\x6d\xe1\x9a\xc5\xba\xd0\x30\xb6\xb9\x0e\xb2\xde\xdc\x04\xce\x3c\x7a\x87\x5b\xec\xa7\xa6\x19\xcd\x7d\xaa\x83\x97\x10\xe5\x17\x3c\x74\x11\x61\x1e\xbb\x83\x5f\x2e\x2f\x25\x02\x2d\xd5\xc5\x84\xcb\x9e\x66\xd0\xf0\x12\x7a\xa2\x99\xb5\x84\x5f\x1a\xcb\x67\x79\x09\x9b\x4b\x71\x9b\xb0\xca\x29\xc0\x10\xb6\x6d\x3e\x1a\x82\x5a\x1f\xed\x4d\x54\x7d\xbd\x2f\x65\x26\xc7\x80\xa4\xe4\xe9\xe4\x68\xda\x56\xdf\xdb\xd6\x13\x11\xdb\x6f\x48\x69\xd0\xde\x92\x31\x15\x30\xf5\xfb\xc7\x83\xa4\xe8\xae\xbf\xd9\xab\x45\xf0\xc4\x8c\xa8\xee\xa2\x63\x7b\x9d\x59\x0b\x1b\xd3\x20\xa4\xb3\x64\x88\x8c\x29\x14\x07\x22\x91\xf6\xf2\x32\x63\xa4\x33\x83\xa6\xce\x16\x44\x6b\x6b\xee\x8c\x60\x1e\x7a\x64\xec\x88\x0c\x41\xf8\x01\x99\xdc\xee\x63\x5b\xf4\x22\xb7\xf6\x08\x9a\x56\x59\xdd\x9e\x33\x7c\x12\xea\x37\xab\xbb\xd8\x46\x4e\x6d\x17\x18\xac\x41\x17\x5b\xe9\xb9\x33\x01\x28\x4d\x25\x8b\x62\xf3\xe4\x93\x87\xc8\x23\x89\x48\x04\xcd\x6d\x0f\x7f\xdd\x24\x44\x52\x5b\x38\x39\x7d\x78\xbb\xf9\x9a\xc5\x6c\xaf\x0c\xbd\xbd\x2d\xdd\x70\x69\xd3\xd4\x5f\x34\x75\xaf\xe8\xd8\xd7\x6c\x1a\x1a\xeb\xc9\xb7\xef\xc7\xac\xa3\xe2\x67\x3a\x2a\x7e\x86\x97\xa6\x8b\x2d\xf8\x6c\x4f\x7b\x69\xe2\x61\x0d\x3e\xd7\x91\x46\x66\xf2\x3f\xd7\x5d\xe7\x16\xd5\xa7\x72\x5e\x52\xff\x99\x63\xa2\xbd\x46\xef\x2b\xde\x34\xe8\x69\x8c\x5c\x16\x37\x8b\x3c\x6c\x7e\x1c\xc4\xb3\x21\xcf\x5d\xfb\xa3\xfc\x56\x9b\x2b\x89\x1d\xcf\x76\x3c\x92\xcb\xbd\x6e\x51\x13\x62\x91\x39\x68\xc8\x8d\xd7\xc6\x42\xee\x09\xcb\x21\x11\x3a\x4e\x49\xfb\xeb\x82\xfd\x84\x5c\xd2\x42\x18\x59\x5b\xac\x8d\x95\xfd\xf9\x77\xc5\x0c\xb9\xc0\xdd\x2a\xc7\xfc\xf6\xc7\x2c\x2a\xb8\x14\x9b\x6a\x83\x4d\x03\x8f\xdd\x74\x24\x64\x3a\xb9\xd4\x52\xf9\x9e\xed\x8b\x79\xbb\x47\x01\xa1\xe4\x99\xcd\xbc\x1e\x6a\xca\xb6\xca\xd8\xe9\xaa\xe9\xfa\x8a\x41\xb7\xf6\x97\xad\xae\x21\x7b\x36\x37\x05\x5e\x00\x34\x0d\xa1\xe4\xa2\xeb\x42\xf7\xa4\x75\x5e\x88\x15\x5e\xf2\x4b\xf4\xc3\xab\xc9\x6a\x6d\xb3\xe1\x69\xe0\xa6\x68\xf1\xc5\x50\xc8\x75\x77\xca\xb2\x9c\x8b\x45\x8a\x7f\x1c\x24\x85\x74\x37\x6b\xe5\xb3\x7e\x5e\x64\xb8\xd7\xf4\x1a\xd0\xab\x37\xa0\xbb\x6e\x06\x6d\x9f\x18\x09\x44\xdd\x5b\xae\x62\x5b\xd3\x91\xc5\xf1\x2d\x24\xd5\x73\xaf\x88\x22\x87\x1f\x66\xc5\x68\x63\x59\x86\x50\xbc\x18\x47\x85\x3c\x2b\x94\x7d\xe6\x1a\x21\x3e\xa8\xe3\xd7\x12\x50\x57\x87\xcb\x07\x51\xf4\xeb\x31\xc1\xe6\x9e\xfb\xde\x12\xbd\x92\x13\xc9\x57\x76\x6b\x50\x5d\xd8\xc4\xf5\x4b\x46\x57\x93\x5f\x3f\xbe\xa0\x1b\xe4\x12\x03\x14\x2a\xe3\x6f\x9a\x5f\xa1\x1e\xfe\xb6\x29\x2e\x89\x45\x7c\x88\x6d\x0b\x44\xfa\x50\x0b\xe3\xe6\x4b\xc4\x76\x5b\x1e\x02\xfe\xcb\x7e\xd0\xad\x6e\x9a\xd2\xc0\x9b\xd4\x45\x0f\xdc\x61\xde\x8d\xa7\x25\xff\x3a\x73\x7b\xf5\x8e\xe5\x8b\x5f\xaf\x5a\x61\x55\xd3\xa5\xac\x60\xa9\xb1\x80\xfd\x36\x24\x53\x2f\x7a\x8d\x17\x29\xc7\x46\x3c\xca\xf7\xa3\x44\xb4\x4d\x5d\x83\x94\xee\x47\x19\x7b\x5f\xbd\x92\xb6\x0f\xa7\x55\xe9\x25\xa6\x46\x5c\x49\x55\xdd\x2e\x70\xc0\xb1\x66\x2c\x3c\x57\x9e\x02\x69\x55\x72\x1c\x82\x75\xa7\x6e\xf4\xcd\x40\x4a\x3b\x37\xa1\xb4\xba\x16\x93\x1c\x1b\x9e\xe9\x32\x39\xeb\x32\x5d\xb3\x4c\x90\x21\x23\xc9\xf2\x61\x20\xee\x96\xbd\x61\xda\x97\xa2\xde\x8e\x19\x64\x1f\xcc\xf3\x5a\xde\xf8\x02\x1b\x9e\x84\x52\x73\xb6\x37\x78\x05\x1d\x4c\x99\x66\xbd\xd0\xff\xf2\x45\xdb\xdd\xf1\xb5\xb8\xf9\xfd\x15\x37\x58\xd6\x73\x4f\x5a\xc8\xea\x2d\xf9\x82\x57\xec\x0f\x79\x43\x7e\x33\x77\xfc\x79\x3e\x92\x24\xbe\x95\xc7\x5d\x58\x7e\xfb\x3e\x7c\x5f\xe1\x2f\xf9\xd5\xe0\x17\xf9\x4e\x7e\x35\xb0\x5f\xe1\x47\xf9\xd5\x7d\x94\x7c\x2a\xdb\x6d\xf8\x91\xc2\x97\x6f\xc2\x44\x47\x56\x4f\xd2\x02\x0a\x76\xc5\x13\xba\x54\x61\x03\x4c\x0c\x01\x91\xb3\x23\xfa\x28\x59\x45\x5f\x35\x45\xbf\x93\x8f\xa6\xda\x42\x97\xc3\xe5\x0f\x74\xd6\xfc\x16\x4f\x0d\x42\xee\x34\x7f\x3b\x39\x3a\x74\x1d\x85\xf0\x4b\xcd\x51\x13\xa4\x48\xb8\x9b\xf2\x4d\xfd\x38\x9e\x22\x71\x0e\x59\xc1\x36\xc1\xb7\x37\xe2\xdd\xa9\xc9\xc8\xd0\xfa\xc4\xb2\x4c\xdd\x99\x37\xa0\x53\x7e\x17\x6f\x79\xe7\x6a\xe5\xc5\x7d\xd5\xe0\xfa\x23\xa0\x74\x53\xfe\x06\x46\x45\xf1\x6e\xb1\x09\x2a\x1a\xd6\x85\x52\x43\x4f\x19\xe5\x03\x38\x67\x73\x78\xa0\x7e\xf9\x2e\xb8\x3c\x02\xed\xf4\x34\x07\x7f\xf2\x81\xd0\xd7\xd5\x06\x67\x79\xb9\x6c\x67\x77\x3b\x3b\xaf\x58\x5e\x96\xea\xd2\x5b\x7a\x8d\x8b\xd3\x86\x75\x61\x8f\xd6\x87\x28\xcb\x0b\x81\x31\x1d\xcd\x94\xbd\x4b\x14\x0d\xd2\x21\xff\x90\x46\x49\x21\x93\x2c\xe9\x02\x7c\x41\xff\x81\x67\x27\xfc\xdf\x33\x9e\x0c\x44\xd3\x9a\x81\xf3\x0a\x3a\xb7\x7b\xfb\x75\x78\x0d\xcf\x24\x73\x6d\xfa\xc5\x6f\xb1\xf8\xa9\xe6\xbd\x52\x85\x37\x58\xa1\x67\x59\x26\x36\xa1\x6b\x22\x50\x44\xf2\xe6\xc7\x41\xe2\xa5\xe3\x8c\xa0\xb2\xfe\x0d\xd2\x64\x28\xc0\x36\x28\x55\x0d\xfd\x49\xe9\x6a\xe4\x67\x3e\x99\xee\xaa\x91\xaa\xc5\xa9\xb6\x0b\xbf\x13\xdb\x8a\x82\xf2\xa0\xbb\x69\xe1\x48\x21\xd4\xd4\x38\x5e\x42\xe7\x76\xa3\xe3\xda\x5d\xc0\x21\xaa\xae\x6b\xd5\xb8\x9f\x6b\x8d\xc1\xfe\x7a\x76\x7f\x66\x74\x6a\xf2\x60\x0d\xba\xe7\x1e\x46\x35\xab\xda\x63\xe8\xdc\xee\x76\xa4\x8f\x58\x00\x3b\x87\x18\xee\xb4\x8a\xa6\xdd\xfd\x3a\xbc\x14\xe3\x5a\x87\x2f\xe0\xc3\x7d\xba\x5f\x77\x60\xe1\x05\x88\x03\x0f\x2f\x5e\xf7\xfd\x3e\x5d\x9a\xb8\xd3\x61\xd7\xba\x5f\x9e\x4a\x4f\xbf\x8e\x4a\x9a\x33\xac\x0a\xbd\xaf\x21\x23\xea\x4b\x06\xca\x6f\xa4\xb2\x22\xf2\x6e\x98\xc8\xd6\x0c\xb8\x5d\x2e\x3b\x01\xfb\x84\xae\x53\x22\x40\xbe\xdd\xe8\x90\x77\x52\xa9\xcd\xdb\xfd\xfd\xfd\xfa\x1f\x30\x6f\xcf\xbe\xf1\xbc\x99\x75\x6e\xd5\x78\xfa\x0d\x67\x16\x8b\xad\x5e\xbe\xd1\xcc\x77\x7b\x8b\xa6\x7e\x37\x38\xf5\x16\x5b\x78\x08\x2d\xc7\x17\xfb\xfb\xc4\x18\x65\xbe\xe8\x76\x6d\x27\x87\x6f\x31\xfd\x4e\x1e\x38\x81\x8e\x05\xca\x8b\x37\x8d\x0a\xe3\x0d\x87\x61\x24\x33\xed\xf1\x84\x67\x94\x01\x4e\x86\x3e\xd3\x4d\xf3\x14\xa2\x24\xe7\x59\x01\xcc\x34\x95\x9e\xa7\xe8\xfb\x38\x18\xb3\x0c\x6a\x1f\xd7\xf6\xf7\xf7\xdf\xd6\x31\x5e\x3e\x1b\x5e\x33\xb1\x77\xa4\x49\x7c\x07\x5d\xdc\x53\x2a\xe5\xc1\x21\x71\xde\xca\x82\xc0\xe6\xd7\xb5\x0f\x9d\xee\x70\x14\x65\x9d\xe1\xa0\x2a\x46\x8f\x4f\x84\x8e\x09\xb5\x7c\x96\x65\xe9\xa5\x18\xd5\x94\x45\x19\x0c\x05\x4e\xf5\x12\x22\x4d\x81\x49\x57\x3a\x94\x00\xaa\x1e\x32\x01\x9f\xd5\xdf\xab\x57\xd0\xed\xc8\x69\xdf\x87\x2f\x72\x59\x97\x81\x09\x58\x6f\x77\xc5\x82\xb7\x3e\xca\x66\xf6\xec\x94\xfb\x90\xa6\x46\x7c\x70\xef\xd1\xc2\xbb\x07\x18\x72\xd1\x48\xb3\x85\x8c\x07\x91\xf1\x5c\x85\xa9\x7d\xc3\x72\x3e\x84\x34\xc1\x07\x28\x9b\xed\x76\x5e\xb0\xc1\x55\x7a\xcd\xb3\x51\x9c\xde\xe0\x33\x14\xd6\xee\xf5\x5e\x3c\x7b\xd1\x7b\xd1\x6b\xaf\x6f\x74\x5e\x3c\xeb\x35\x9c\xd4\x3f\x37\x51\x81\x8e\x5c\xe8\x3c\x96\xde\xf0\xbc\x80\x38\x9a\x44\xe8\x40\x45\xf1\x6b\x1b\x94\xd3\x4c\x12\x0e\x58\x76\x99\xe3\xbb\x97\x1f\x39\x5c\xa6\xd0\x85\x09\xbb\x4c\xa2\x62\x36\xe4\x10\xf3\x5c\xe6\xce\xca\xd9\x88\x17\x77\x98\x1e\xea\xfd\xce\xff\x7c\xda\x39\xfe\xfe\xe3\xfb\xbd\xc3\xd3\x13\x3b\x4d\x94\x00\x67\xa9\x70\xc1\xa1\x5a\x8c\x90\xfb\x0f\x12\x4c\x49\xf9\x59\x82\x7c\x43\xeb\xf7\xeb\x69\xa8\xd2\x01\x5e\x68\x9c\xbb\x63\x96\x89\xbe\xa5\x37\xfc\x89\x3c\x79\xd8\xbd\xb7\xdb\xf2\x35\x3b\xbf\x2d\x32\x06\xa4\x95\xda\x4e\x22\x6f\x71\x04\xe2\xc4\x85\xb9\xdf\x72\xf3\xfe\x7d\x55\x28\xe3\x80\x73\x43\x6f\x20\xf8\xed\x00\x73\x77\xae\xb6\x1c\xd5\x53\xbb\x8c\x47\xd2\xce\x64\x69\x9d\x31\x4f\x0c\xfa\x18\xac\x61\x3e\xfa\x92\x57\xe5\x28\x7c\xce\x55\x1e\x99\xf4\x60\x62\x0e\xa5\x2c\x8b\x8a\xa6\x57\xc6\xf3\xb2\x25\x79\x91\xda\x4d\x23\x2b\xd4\xc8\x1e\xd2\xc2\x7d\xeb\x3e\x82\x23\x0b\x3f\x4f\x86\x8e\x79\x3f\xa3\xc4\x9d\x01\x12\xd4\x64\x7c\xc2\xc7\xa4\x2a\xf9\x23\x28\x02\x56\xe9\x3f\xe9\x10\x1e\xc0\x5d\xbd\x3f\x5d\x80\x38\x2d\x14\x2b\xa8\x87\x32\x0a\xd1\x59\xce\x7d\xee\x6c\x3b\x95\x4b\xcb\x91\x7e\x3d\xec\x78\x67\x23\x27\x12\x21\x64\xee\x60\x93\x96\x15\x89\xb4\x2c\x05\x44\x93\xb5\x6d\x28\xd2\x1f\xf8\x6d\x78\xcc\xe9\xac\xf0\xcf\x79\xfa\x15\xe7\x82\x71\xa3\x54\x75\x42\x70\xda\x9e\xc4\xa5\x15\x17\xba\x52\x42\x10\x2d\x27\x02\x66\xef\xe1\xf5\x47\xc7\x1d\xc1\x7e\x6b\xa0\xfe\x46\x9d\x0b\x9e\x40\xef\xf9\x7a\x3d\xbc\xa0\xca\xaf\xb2\x70\x7c\xf6\xa3\x2c\x1a\xf0\xfc\x39\x76\xad\xd5\x6a\x2a\xff\xf7\x7f\xd5\xf1\x95\xa6\xab\xfc\x3a\xfc\x35\xb6\xdf\x84\xff\xfd\x5f\x9e\x0c\x4b\x1e\xf9\xee\x7b\x83\xb5\x6d\x1d\x32\xc3\xab\xe5\xbc\x47\xb0\xe2\x7c\xcb\xc7\xeb\x96\xe8\x52\x35\x09\x90\xfb\xd6\xdc\xf4\x27\x7e\x7a\xbd\xe9\x1a\x34\x12\xaf\x27\x8b\x31\xed\x47\x0f\xc1\x5e\xe4\x0b\x72\xaa\x41\xf4\xa9\xe8\x34\xa6\x6f\x66\x23\xed\xb6\xae\x12\xc1\xb8\xbc\xf3\x95\x41\x2a\x09\xe6\x92\x71\x2a\xa9\x32\xc5\x74\xae\xc0\x13\x9d\x99\x76\xc2\xae\x38\xe4\xb3\x4c\x06\x1d\x94\xe6\xde\x28\x4f\xaa\x05\x14\xd9\x5d\x94\x5c\x3a\x36\x61\x8c\x2d\x8a\xb6\x60\x0a\x8f\xec\x06\x40\x94\xee\x17\x35\x65\x55\xe3\xb7\x81\x08\x54\xea\x7a\xe7\xaf\xd0\x25\x57\x00\xdf\x84\x3d\xef\x91\x05\xd5\x88\xe8\x95\xf0\x2c\x4a\x8a\xaa\x77\x61\xb4\x26\x3a\xa4\xc9\xc2\x1e\xe7\x04\x7f\xd7\xa3\x62\x83\x01\xcf\x73\xe8\xf3\xbb\xd4\x64\xbf\xa6\xc6\xd5\xf0\xad\x97\xf2\x27\x7a\xb7\x67\x2f\x21\xeb\xab\x1e\xba\x79\x32\xd4\x80\x24\xdd\xc1\x98\xdc\xde\x95\xbc\x77\x0b\x33\x27\x50\x88\x2e\x47\xc1\x69\x40\x59\x04\x0f\x76\x6a\x9b\xfe\xad\x8c\x21\x92\x05\xe5\x1d\xf3\xb9\x8e\xe3\x13\x5b\xbe\x73\x9e\x8a\xb0\xb6\xa6\xa4\x96\xc4\x48\x9c\xab\x44\x8b\x27\x52\xd7\xaa\xdb\xee\x98\x6b\x4e\x07\x74\x89\xfd\x44\x74\xe0\xe9\x9f\xd7\x2c\x5e\x48\xe2\x37\x41\x12\xbf\xf9\x23\x49\x4c\x83\xfa\x2a\x42\xbb\xe9\x59\xc0\xa7\x45\xb3\x69\x5a\x96\x69\x2f\xe9\x6d\x23\x26\xaf\x7b\x96\xa7\xb6\xd3\xc3\xaf\x22\xfc\x46\x88\xee\x1b\x86\xec\xcb\x91\x7a\x09\x6e\xed\x96\x68\x67\xf9\x11\x69\x06\x5d\x84\x6a\x77\x3d\xbc\x10\xf1\xfb\xb7\x47\xb8\xb7\x0c\xc2\xf2\xfc\x6f\x4d\x49\xf7\x5c\x1c\xff\x37\x16\x4b\x94\xee\x7a\x98\xe1\xf1\xfb\x1f\x38\x94\x9a\x33\x16\xc4\x1b\xbe\x80\x3f\xa0\x85\x43\x79\xda\x0b\xcf\x0a\x7e\xff\xf6\x43\x79\x56\x96\x75\x6a\x2c\xce\x60\xea\xa0\x13\x49\x85\xe7\x67\x5e\x79\x0f\xcb\xbb\xeb\xf5\xba\x7e\x74\xe9\xd5\x78\x2a\x56\x9a\x3c\xc5\x76\x3a\x8b\x27\xfa\x69\x2f\x3c\xd1\xf8\xfd\x0f\xa5\x8e\x33\xd3\x36\xfe\x72\x98\xb5\x20\x9d\xba\xeb\x8a\x50\x41\x32\x69\x32\xfa\x14\x9a\x4f\x95\xe0\x7e\xfa\x7f\xdb\xe9\x32\xdb\x29\x80\x6e\xb8\xd1\xb1\x52\xc3\xc1\xab\x6d\x51\x52\xa7\x27\x74\xf2\x54\x39\x4d\x6f\x6a\xbd\x06\x6c\xc0\x13\xb0\x1f\x34\x2f\xb7\x33\x04\x77\xe4\x3f\x7a\x43\xfe\x35\x93\x14\xb9\x61\xd7\x42\x13\x14\xde\xa9\xf1\xb2\x4d\x5b\x49\x7e\xcd\x4e\xfc\x9f\x9b\xaa\xd2\x1e\xfe\x87\x6d\xe1\xd8\xc8\x15\x2d\x8f\xc9\xda\x5e\x0f\x0a\x1e\x7b\xeb\xa9\x75\x6e\x47\x23\xf9\x4e\x58\xb7\x5e\x13\xc7\x84\x27\xd0\xec\x2e\x14\x20\x21\x4d\xe0\x8f\x54\x04\xc2\xe2\x60\x81\x2e\x60\x46\xad\x5e\x2f\x6d\xa0\xe8\x7d\x8d\x60\xbe\x48\xcb\x34\x9a\x45\x37\x1f\x9a\xed\x90\xee\xf0\x47\xaa\x0e\xf3\xd6\x50\xd7\x27\xc0\xef\x31\xf8\x90\xb6\xf1\x1f\x51\x36\x42\xba\xc6\x62\x4d\x63\x9e\x9e\x11\x2e\x7e\x8a\xc5\xbd\x67\x0b\xd7\x41\x48\xbb\xf8\xcf\x2b\x17\x84\xf7\x22\x9a\x2c\xab\x55\x94\x68\x32\x9f\x1a\xfb\x71\xca\x02\x8a\x85\xfa\xfc\xfb\x53\xc3\x78\x6b\x73\xce\x5f\x3c\x7f\x86\x58\x49\xff\x23\xd5\x06\x33\xe2\x42\xef\x69\x03\x16\xcc\x2b\xa2\x5c\x9e\x57\xf5\xf9\xcf\x31\x12\xca\xe2\xfb\xd0\x50\xde\xa6\xb3\x7e\xcc\xcb\xb3\xa2\xbf\x7f\xfb\xc1\x6c\xfc\xea\x69\x79\x2e\xb6\xe0\x87\xc6\x52\x9e\x17\xfd\xfd\xcf\x31\x16\x39\x31\x66\x30\xae\xcd\xee\x20\x29\xa4\xb9\x5b\xa6\xaf\x74\x8c\x77\x13\x76\xdb\x80\x49\x94\x2c\x0a\xa3\x84\x41\xc5\xc3\xc1\xc4\xc9\xa6\x16\x0a\x27\xee\x07\x00\xac\x3a\x49\x6a\x29\xc0\x90\x7c\xb4\x38\xe3\xf0\x92\x70\x98\x93\x02\xc9\xcf\xad\x6b\x82\xc3\x5a\x6e\xab\x01\x3b\xa1\xed\x5f\x16\x06\x4d\x6f\xd4\xec\xf0\x2e\x73\x0c\x83\x68\x20\x2d\x5b\x06\xed\xcf\x35\x8f\xbe\xf3\xb5\x65\x99\x66\x18\xd6\xf0\x8f\x6f\x6d\xcf\x92\x71\xa3\xde\xc8\x8b\x8c\x05\xfa\xa6\x7c\x55\x0f\x9a\x51\xcc\x6b\xa5\x79\x03\x51\x80\xb5\x33\xe0\xc2\x13\x91\xb3\x49\xc8\x04\xc4\xf2\x25\xf7\xaf\x39\x2f\x95\x0e\x4a\xdb\x8a\x9d\xda\xa4\x62\x6b\xd0\xb6\x3d\x4c\x37\xb0\x4e\x09\x0b\xa7\xf8\x4d\x78\x8a\xdf\xfc\x7f\x7c\x8a\xdd\x83\x96\x04\xec\xce\x7d\x60\x82\xc2\x73\xde\x6c\xd2\x8b\xcc\xff\xf8\x5c\x6f\x04\xa7\x7a\xa3\x34\xd3\xbf\x72\x76\x43\x22\x7f\xee\x24\x74\x1b\x20\x0e\x48\x92\xee\xde\xda\xa9\x19\x42\x8e\x46\xf5\xc0\x88\xc3\xef\x2d\xf5\x90\xfc\x03\x94\x5b\xf0\x9f\x18\x6e\x8f\x86\xbb\xf4\x80\x4b\x6a\xa5\xae\x23\xba\xdf\x08\xd1\xa4\xf7\x10\x4d\xe6\x2c\x75\x3a\x59\xfd\x69\x69\xa2\xc7\x3b\x9f\x24\xf3\xf9\xe4\x01\x9a\xf8\xc7\x2d\xb7\xe0\x3f\x41\x93\x67\x8a\x26\x61\xba\xd0\xc9\xc9\xa1\x4d\xef\x59\xb9\x4e\xcf\xab\x43\xaf\x36\x97\xe0\xa9\xaf\x5d\x87\xcf\x1e\xa2\xef\x1c\x9e\xa3\x23\xdc\x9f\x8f\xbe\x4b\xd0\xd6\xa7\x5b\x88\xb6\x3e\xfd\x03\xfc\xfb\xf4\xb7\xd2\x37\xac\x9e\xfd\x6e\xda\xd9\xdc\xad\x99\xbc\xe0\xdc\x7d\xb9\x16\xd8\x98\xe5\x73\x94\xe5\xb7\x66\x02\xdc\x14\x3b\x45\x13\xff\x2e\x6d\xd0\x9d\xa0\x3e\x96\xcf\xfa\xbf\x8f\x46\x66\x14\xfa\x97\xb4\x99\x63\x4f\xea\x9d\x87\xb7\x87\x0b\xc4\xcf\xdd\x90\xbf\x20\x51\xb3\x63\x0b\x85\x76\x7e\x77\xeb\x17\xf4\x17\x04\x14\x6d\x7f\xbb\x1a\x10\xd6\xf8\x7e\x37\x85\xef\xcf\xc8\x35\x0f\xa8\x75\x73\x59\xe8\xb7\x2a\x79\x5f\xc7\x3e\x6b\x7f\x56\xf6\x29\x2b\x91\xff\x59\x1d\xf2\xc5\xa8\x41\x11\xf0\xdc\x33\x37\xfa\xde\xa8\x6e\xd1\x14\xbf\x26\x7f\xae\xf9\xda\xfb\x6f\xd5\x38\xe7\x29\x9c\xff\x71\x7d\xf3\x05\xee\x71\x32\x3c\xe0\x1f\xaf\x75\xce\x53\x3a\xff\xe3\x3a\xe7\x92\x74\xf9\xbd\x34\xcf\x79\x8a\xe7\x7f\x5c\xef\x7c\xa1\xf5\x22\x3b\xe4\xe4\xb7\xe1\x9b\xaf\x57\x50\xc3\x8a\xee\xd7\x69\x48\x41\x05\xf4\x3f\xae\x7f\xce\xa5\xf3\x02\xf1\x45\xff\x2d\x25\xc4\xfe\x3c\x9a\xab\x67\x9c\xdd\xdb\xdb\x7b\xf1\xfc\xd9\x57\x19\x68\xbf\x8d\x91\xd3\x81\xb5\xc0\x2b\x73\x9e\x85\xd4\xe5\x1f\xbc\xaa\x08\x8f\x22\x8e\x8a\x22\xe6\x7b\xc9\x30\x62\xc9\xb7\x55\x9a\x6c\x0a\x06\xbb\x7e\xd6\x80\xa7\xad\x67\x9d\xde\x46\xef\xe9\xb3\xf5\xf5\xa7\x1b\xcf\x7b\x1b\x1b\xeb\x7c\xed\xe9\x46\x03\x9a\xe1\x02\x1d\xfe\x5d\x9a\xdb\x6f\x4c\x00\x99\x85\xc3\x92\xb7\x22\x5f\xb5\x16\x03\xf7\x57\xce\xf7\xc5\x6b\x51\x76\x64\x5a\x84\x17\x17\x5d\x74\xe8\xa6\x0f\x60\x13\x90\x0c\xfa\x12\xea\x5b\x60\x23\xaf\x2a\x1c\x74\xdc\xee\xe8\x6e\xe5\x4f\xc7\x49\x1b\x0d\xe8\xb6\x5e\x7c\xf7\x62\xfd\xbb\xa7\xdd\xa7\xcf\x36\xd6\x7b\x4f\xbb\xcf\x5f\xec\xad\x3d\xed\x08\x56\x9a\x53\xf2\x6b\x79\x49\x5e\xe4\x94\x79\x69\x63\xfe\xec\x85\xae\xdd\xdc\x82\xe5\xe7\x8f\x9a\xfc\x46\x76\x0a\xdd\x9d\xb9\x05\xdf\x06\xa1\x10\x47\x51\xba\xa7\x3b\x99\xae\x41\x05\x15\xa7\x5f\x18\x46\x7e\xbb\xd3\x80\x3c\x9d\x65\x03\xee\xfd\xdc\x4b\x86\xdb\x6e\xd4\xe2\x50\x42\x0b\x0c\x36\x6f\x65\xb3\x98\xde\x81\x97\x5f\x42\x06\xab\x0f\x85\x42\x98\x9f\x54\x22\x78\xc3\xa6\xef\xbc\xf2\xb1\x4a\x70\x55\x4a\x56\xf2\x48\x3e\x4b\x08\xbe\xc2\x91\xe1\x16\xe4\xb1\x29\x94\xb5\x0f\x5f\xa4\x1a\xb4\x31\x07\x81\x9d\x44\xa1\x6e\x0f\x0a\xbc\x42\xd5\x95\x55\xc5\xaf\xdf\xb1\x9e\x50\xbc\x32\x01\x20\xe6\xbd\xa6\xc0\x78\xdc\xd3\x3b\xe8\xd0\x3b\x9a\x2d\xb8\xe1\xd5\x8c\xc3\x30\x4d\xb8\x97\xae\x42\xb6\xb7\x12\x2a\x98\xa1\x38\xb1\x8c\x55\x04\x8b\x70\x70\x74\x95\x81\x76\x9f\x15\x2c\x06\x2e\xe8\x0e\x83\x34\xa1\xbc\x91\x79\x80\x40\x2f\x1f\x4a\x59\x64\x57\x2e\x5f\x54\xde\x87\x92\x57\xe4\x76\xfa\x87\x5f\xbf\x9f\xeb\xa7\x2e\xe1\x96\x9a\xcb\x4b\x68\x11\x09\x76\x32\x0e\x37\x1c\xd2\xb4\xff\xda\x99\x34\x07\xa9\xc5\x3c\x64\x82\x25\xb9\x24\xb3\xf2\x40\xb8\x0f\x6d\x16\x35\x5b\xd3\x31\x34\xbc\x5c\xc5\x76\x56\x89\x70\xae\x0a\x2b\x90\x57\x30\xb2\xb2\x58\xb6\x3f\x46\xc5\x38\x4a\xe6\x04\x81\x96\x39\x89\xfb\xb3\x28\x2e\x9a\x51\x02\x37\x63\x9e\x00\xbb\x66\x51\xcc\xfa\x31\x17\x3a\x59\x9e\x63\x94\xed\x2c\x9d\xc0\xc1\x5e\xb7\xab\xad\x0f\x16\xec\xda\x3c\x79\xe0\x45\xc1\x2e\xe3\xae\xb8\xc3\x26\x87\x18\x92\x4f\x54\x0b\xdd\x21\xcf\x07\x1c\xd3\x96\x92\x50\x42\xcc\x28\x03\xab\xf7\x50\x4d\x10\xb1\x09\x5d\x13\x17\xb5\xd9\xb4\x12\xa8\x53\x1f\xf8\xfa\xcc\xea\xee\x5c\xb9\x7f\x45\x6a\x5a\xce\x4d\x8c\x1a\x3b\x26\x4b\x90\xdc\x39\x2f\x28\xac\x8c\xd3\x87\x7a\x5f\x3a\xf7\xd1\x54\xc3\xa9\xae\x72\x8b\x58\xf1\xba\xac\x7c\xcc\x24\xf9\x3f\xe6\xec\x92\x63\x02\x0a\x0a\xb6\x88\x01\xda\xa3\x38\x96\xa1\x19\xcf\xac\xc8\x60\x3c\x19\x9e\x9f\xd7\x03\x55\xe9\xef\xa5\xaa\x52\x9c\xa1\x52\x55\x37\x78\x5b\x69\x0f\x11\x4d\xed\x3d\x04\x7f\x53\x94\x51\x3b\x17\x52\x29\xa6\xde\x0f\x98\xf2\x56\x25\x1b\x1f\xb0\x9c\xe7\x9b\xcb\x05\xac\x8f\xec\x54\xe5\x2a\x18\x8f\x5f\xc9\x09\x5c\x94\x6b\x62\xbb\x49\x83\x60\x4e\xf2\xd7\x50\x58\x77\x25\xa9\x17\x76\xa4\x38\x74\x2e\x58\xeb\x21\x5f\x28\x70\xb7\xb5\xd2\x9d\x0a\xe5\x4e\x83\x3b\xac\x6e\x63\x5c\x57\x54\x43\xaf\x7b\xbf\x13\x7b\x64\x02\x09\xb3\xb5\xef\xc9\x2a\x26\xe2\xd9\x03\x48\x2c\x13\x58\xea\xde\x36\x99\xda\x5b\x59\xd7\x0d\xbb\x83\x2f\xc9\x29\xee\xf9\x40\xbe\x2d\xdd\x29\x6a\x3a\x0a\x01\x3e\xd1\x2b\x45\x18\xdf\xc0\x11\x60\xd3\x97\xd0\xed\x6d\xd4\xed\x48\xe5\x7e\xac\x72\x19\xba\xcc\x0e\x4a\x81\xfb\x67\x5e\xc0\x94\x15\xe3\x4d\x38\x50\xf9\x63\x46\x51\x91\xcb\xa0\x62\x20\xa4\x65\x4c\x49\x1e\x1a\x40\x89\x3b\x59\x01\xc9\x6c\xc2\xb3\x68\x40\x7a\x5d\x4b\xc3\x23\x77\x53\x81\x8f\x17\xb5\xe2\xd7\x66\x0f\xe8\x3d\x7f\x6e\xbd\xb7\x3f\x48\x28\x7e\x05\xee\x9e\x39\xb0\x8c\xe3\xa3\x43\xa1\x67\x23\xae\x32\x3e\x98\xd0\x0b\x61\xc0\x12\x99\xf9\x09\x8f\x09\x94\xbb\xb9\x15\xda\xc4\x6d\x1d\x43\xaa\x37\xe5\xcf\x96\xcc\x0e\x6f\xd2\x47\x0f\x24\x9b\x5a\x90\xcd\x58\xf4\xe4\x26\x80\xda\x36\x89\xa0\x74\x1e\xa8\xf0\x63\x5e\x1b\xcb\x4d\x95\x2f\xca\xa4\x82\x7a\x74\xcd\xa4\x0f\xfb\xb6\x49\xff\x14\xcd\x11\x3e\xde\x3c\xe8\x90\xdc\x0b\x1e\x74\x4b\x93\x8a\xba\x4e\x08\x6f\x2d\xf6\x03\xed\x50\x4a\x0c\x09\xe9\xb5\x86\x00\xb0\xb9\x38\x4b\x87\xf3\xd8\xdd\x7a\xb7\xad\xd7\x1a\x16\xb9\x77\x0e\xc1\x15\x7c\xaa\x33\x98\xaf\x56\xc9\x24\xa5\x1f\x13\x01\x54\x57\x21\x12\xeb\x80\x98\x0e\x33\x57\x28\xbd\x5e\x3a\xb7\x39\xc2\x46\xd3\xab\xa3\x69\xa5\xb4\x9d\x20\xcd\xf4\x86\xac\x06\x71\x16\xc1\x5f\xc5\xa0\xac\x1d\xba\x52\xce\x3f\x29\x36\x94\xbd\x77\x1f\xf6\x8e\x61\xff\xe3\xe1\xee\xe9\xc1\xd1\xe1\x89\xf8\xb6\xed\xfd\x57\xc1\x58\x1c\x07\x87\xff\xd8\x79\x77\xf0\xf6\xd3\x9b\x9d\x93\xbd\xf5\x67\x9f\x8e\xc5\xc9\xae\x7d\xf6\xaf\xb5\x76\xa7\xf9\xdd\x4e\xf3\xff\xb1\xe6\xcf\xcd\x4f\xe7\xed\xcb\x52\x68\xb8\x41\xcc\x59\x82\x61\x63\xf5\x2e\x76\x88\xf1\x57\xd8\x15\xcf\x29\x8d\x23\xe4\xd1\x65\x92\x03\xcb\xed\xac\x34\x6f\xb0\xb5\x9e\x2b\x9d\xe9\x30\x2f\xb2\x56\x3e\x8d\xa3\xa2\x56\xdd\xae\xd6\xcf\x3a\xe7\x16\x4c\x21\x8b\xa7\xe4\x1b\xa8\x68\x2d\x24\x20\x1b\x14\x3c\xcb\x29\x77\xfd\x4f\x09\x86\x9e\xf9\xc9\x4a\x85\xa3\x03\xe6\x62\x8f\xcd\xcf\x39\x0c\x53\x8e\x8f\x90\x9d\x4e\x29\x57\xa2\x4e\xa6\x58\xa2\x47\x03\xaa\xd5\xba\x85\xcc\x20\x4d\xae\x79\x86\x99\x77\x04\xfc\x9c\x42\xa1\x58\x19\x1b\x8a\xd4\x24\xe6\x14\x1d\xd8\xa9\x1b\xec\xc4\x9d\x0a\x20\x8b\xe3\xf4\x26\x47\xe6\x48\xd2\xa4\x39\x65\xc3\x21\x1f\x4a\xac\x75\x27\x35\xa5\x96\x16\x19\x8b\x62\x29\xb1\xeb\x73\x06\x27\xef\xe9\xac\xce\x4b\xb9\x6a\xf5\xf8\x61\x0d\xaa\xdb\x55\x37\x06\x41\x5e\x64\x8e\x05\x07\xa3\x31\x40\xcd\xb2\x55\x26\x40\xae\xdf\x6a\x3c\x1d\xb1\x36\x12\x93\xa9\x92\xec\xad\xea\x09\xbb\xfb\xdd\x0f\xd2\x27\x03\x1c\x9b\x10\xc4\xb3\x24\x52\xa1\x5d\xf0\x4f\x8c\x25\x2b\xfe\xfd\xf2\x05\x0e\x92\x51\x94\x44\xc5\x5d\xc5\x8b\xa6\xe7\x67\x50\x75\x83\x8b\xab\x42\x36\x3c\xd1\x41\x81\x74\xf8\x3d\x5b\xf8\x50\xa0\xbf\x25\xe3\x89\xdb\x71\x7f\x64\x7f\xd6\xc6\x1c\xc9\xfb\xdc\x76\x5b\xc8\x08\x13\x8c\x68\x90\x4e\xa6\x69\xc2\x65\x40\xa7\x72\x60\xa3\xb7\x32\x96\xd8\xc0\x09\x17\xb5\xe7\x04\x8b\x6a\xb7\x29\xab\x1b\xc6\x5e\xba\x61\x39\x30\x1c\x9c\xa5\x09\x3c\x72\x06\xeb\xed\xe8\x49\x8a\xd5\xe1\x8e\x9b\xa8\x52\x01\x44\xde\xec\x7b\x61\xe5\xda\x6d\x98\x25\xfc\x76\xca\x07\x05\x1f\x12\x27\x5a\xa5\xa8\x80\xd0\x44\x35\xb7\xe1\x69\x1d\x5e\x61\x3e\x09\x92\xbe\x18\xed\xa8\x73\xbb\xb7\xdf\xc0\x40\x84\xf8\xbf\x6f\xed\x08\x5a\x83\x34\x29\xa2\x64\x66\xa2\xf6\xd9\x71\x91\x75\xce\x0b\x37\xaa\xa4\x85\xd5\x94\x45\x19\x1f\xda\x54\xf8\x3d\x50\xaa\xd8\x54\x24\x41\xe4\xf4\xe8\x73\xd8\xc0\x0f\x81\x58\x02\xaa\x41\xb6\xdb\xd0\xc3\xf6\x39\x25\x46\xcf\xd2\x9b\x4a\x68\x66\x5e\xca\x10\x53\x36\x0d\x7e\xcb\x30\xe7\xa3\xbc\x04\xc6\x44\x02\x37\xd0\x96\x1f\x5a\x08\xb6\xc5\x66\x6b\x77\xd2\x54\x61\xf1\x5e\xbe\x84\xae\x1b\x2b\xab\xa9\x47\xb7\xe6\x84\xe5\x72\xa2\x7b\x07\x19\x5b\x63\xd3\x9f\x4c\x71\x5d\x34\xa0\x3f\x2b\x1e\x5a\x26\xbf\x86\x6a\x92\x00\x41\x69\xa2\x56\xbc\x0c\x46\x26\xc4\x5b\x60\x99\xfb\x41\x2c\x5d\x4c\xba\x75\x99\xa2\xcd\x0a\xe5\x67\x21\xe5\x85\x0c\x0b\x06\x48\xa3\x0e\xe6\xf6\xd0\x5b\xdc\x83\x35\xf3\x26\x02\x9a\x0c\x83\xd7\xb9\xdd\xed\x34\x02\x15\x28\xc8\x19\x56\xd8\x50\xa7\xc9\x07\x10\xf4\x02\xe0\x95\xa6\xe3\xd7\xa0\xb8\x8b\x18\xec\x05\x51\x94\x63\x70\x30\xfd\x56\x43\x59\x38\x96\x67\xbf\x6e\x2c\x18\xaf\xb0\x73\xbb\x3f\x7f\x30\xbb\x0f\x0f\xe6\x9b\x0d\xba\xac\x24\x6b\xab\xa5\x09\x19\x08\xd3\x54\x85\x77\x29\xab\xa7\x38\xe4\x72\xb0\x30\x7b\xfb\x77\xc3\x35\x51\xb8\x37\xdc\x94\xc3\x7b\xb2\x51\x70\x9c\x7d\x59\x2a\x56\xd5\x9c\x70\xca\x39\x9f\x60\xe0\xb5\x3e\x87\x61\x8a\x3a\xd4\x38\xca\x51\x5d\x14\x67\x43\x0a\x0a\xd6\xa2\x23\xaa\xee\x96\xa6\x46\x74\xe0\x6c\xe9\xd2\xaf\xc8\x8b\xd9\xa4\x5b\x85\x02\x53\xd9\xe3\x73\x74\x1b\xd4\x5f\x1a\x30\x8e\x1a\x10\xa7\xdf\x60\xd8\x8b\xd6\x38\xe9\x2b\x52\xe3\x75\x95\x14\x51\x32\x16\xd0\x07\x82\x59\x48\x5c\xc5\x29\xfe\xfe\x2b\xf4\x9e\xaf\x87\xe8\x12\xa7\xf5\xd0\xe7\x71\xe4\xdb\xef\xc2\x94\x71\xf2\x69\x58\x13\xef\x46\x7d\x2e\x52\x2b\xe6\xb3\x39\x73\x60\x75\x2f\xbf\x87\x4e\x9a\x01\xb5\x3c\x1b\x34\x60\x98\x17\xe1\x2c\x1b\x4b\x6a\x76\x48\x4a\xa1\x75\xa8\x4b\xc6\x6d\x01\x52\x5b\xca\xbf\x7c\xc1\x97\xe5\xdb\x90\x67\x83\x96\xce\xba\x60\x96\xf7\x30\x27\x2b\xab\x71\x57\xc8\xb3\x01\x05\x81\xf6\x73\xc1\xa0\x71\x3e\x63\x77\xa1\x6c\xe1\x90\xf6\x3f\xf3\x41\x91\xd3\x91\x26\xc5\xf4\x92\x62\x33\xe6\xb7\x45\x0e\xb5\xa8\xc5\x5b\x10\x8d\x32\x36\xe1\x79\x1d\x86\x29\x32\xf3\x94\xe5\xb9\x0a\xdd\x78\xa1\x9e\x68\xa5\xa3\x0b\x69\xe2\x10\x3b\x62\x31\xe6\x77\xd6\xad\x53\x91\x71\x26\xb4\x39\x96\xd3\x09\x8d\x15\x68\x74\xc3\x70\x8e\x27\x9c\x6f\x62\x14\xc9\x7c\xb3\xdd\xbe\x8c\x8a\xf1\xac\x8f\xf1\x23\x47\x3c\x4b\xf3\x5c\xa6\x9d\x6c\x47\x79\x3e\xe3\x79\xbb\xbb\xbe\x6e\x66\xc4\x64\x74\x87\x5a\xda\xff\xdc\x40\x98\xce\x24\xa7\xfd\xcf\x60\x10\xa4\x1c\xe8\xd2\x34\x25\x5a\xc0\x23\xda\x51\x85\x26\x9c\xf6\x3f\xb7\x06\x69\x92\x17\xd9\x6c\x50\xa4\xd9\x82\xa2\x56\xc2\x26\xdc\x2a\x97\x32\x2b\x58\x0b\xcd\xf2\x62\xa4\xe2\x97\xe0\x27\x8d\xbc\x95\xec\x07\x71\xd1\x07\xdc\xfd\x34\xc3\x1b\x01\x95\x65\xc2\x1d\x8d\x38\x5f\x89\x7f\xc5\xf6\x9f\xc7\x51\x52\x34\x87\x51\xce\xfa\x31\x6f\xc6\x51\xc2\x21\x49\x9b\x39\x8f\x47\x4d\x99\x25\x5f\x4c\xfe\x7d\xdd\x84\x64\x6f\x64\xfc\xdf\xb3\x28\xe3\x35\xf5\xf6\xae\xde\x22\x9e\xa8\x57\xee\x1b\xbf\xac\xea\x73\xde\xea\xe6\x8b\x86\xaa\xb2\xd9\xed\x35\x56\xe5\x35\xf4\xea\x66\xf7\xc5\xfd\x79\xa3\xfb\x74\xf3\x4c\x0d\xa4\x26\x41\x36\x26\xe9\x70\x16\xf3\x06\xbf\x15\x48\xe7\xf5\x5f\x2a\xf4\xa1\x25\x3f\xc0\x36\x0e\x70\xb5\xdb\xe9\xac\x6e\xc2\xea\xae\xd4\xf7\x56\x1b\xf4\xb1\x2b\x3e\x9e\x60\xec\x6e\x21\x3c\x3f\x64\x69\x91\x0e\xd2\x38\x57\xe5\x3d\x51\xfe\x21\x4b\x07\x1c\x4f\xa8\xf4\xb9\x47\xb0\x8e\xfe\xae\x7e\x22\x94\x5d\x62\x36\xf5\x0d\x5b\xee\x0c\x06\x7c\x6a\x7d\x7c\x2a\x3e\x1e\xa6\x49\x73\x67\x56\x8c\xd3\x2c\x2a\x28\xdf\xed\x41\x32\x4a\xb3\x09\x13\xe3\x52\x35\x9f\x51\x4d\x10\x08\xf3\xa4\x50\x9f\x9f\x8b\xcf\xc7\x5c\xac\x5b\xaf\x64\x1d\x31\x65\x59\x11\xb1\xd8\x2f\x7b\x21\xca\xde\xcf\xe2\x22\x6a\x9e\x14\xac\x98\xe5\xaa\x60\x03\x91\x8c\x33\xce\x86\x77\x70\xcc\x29\xbb\x88\x2c\xec\x21\xc4\x83\xf7\xf0\x31\x57\xdf\x9e\xd2\xc0\x11\xd2\x34\xe6\xb0\x3b\x4e\xa3\x01\xcf\x55\x21\x92\xe1\x7d\x7a\xcd\x87\xf0\x81\x67\x13\x26\x0e\x82\xf1\x9d\x2a\x45\x82\xec\xa7\xb3\x44\x03\x43\x6a\x9c\x70\x0e\x47\x62\xf9\xab\xaf\x72\xe4\x05\xbc\x4f\x87\xd1\x28\x32\x7d\xe3\xd8\x3f\xe6\x5c\xcc\xd2\xad\x06\x8b\x63\x3b\xe5\x93\x69\x9a\xb1\x4c\x0c\x82\xf2\x99\xa9\x62\x1c\xa1\xc6\xc6\x2b\x7e\x46\xe3\x79\xc3\x86\x70\xcc\xff\x3d\xe3\xb9\xfe\x8e\x43\xf9\x98\x30\x9a\xa6\x9f\x15\x12\xcf\x24\x43\xb0\xbb\x09\x41\x43\x1e\xd4\x85\x4f\x69\x88\x59\x3f\x1a\x0e\x79\xa2\xbe\xea\x01\x59\x83\x7f\x46\xa3\x79\xcf\x8b\x71\x3a\x04\x51\xb8\x13\xc7\xe9\x8d\x01\xb5\xae\x1a\x11\x0b\x89\xa5\xa6\x8a\x5e\x48\x9e\xbc\xbd\x03\xc1\x46\x3c\x29\xa2\x01\xf2\x4e\x09\x9f\x0d\xe2\x16\x1c\x19\x9c\x46\x13\x9e\xce\xf4\x08\xbf\x93\xcb\x61\x14\x47\x9a\x1c\x5d\x24\xc7\xf7\x69\xa2\xfa\xea\x22\x1d\xa4\x97\xb5\x07\xbd\x2b\xd7\x06\xd7\xf7\xce\xb0\xcf\xa2\xd8\x94\x3f\x95\xa4\x8a\x53\x36\x84\xd3\x34\x85\x77\x2c\xbb\xd4\x90\x91\x2a\x1f\x8f\x0f\xa8\x24\x55\x6b\xeb\x59\x97\xa6\x39\xd1\xc9\x6e\xe0\x3d\x1f\x46\x0c\xcd\x96\xaa\x0a\x12\x07\xcd\xcf\x48\xba\x13\x56\x44\xf9\x28\xb2\x68\xd4\x45\x1a\xed\xe1\x69\x9e\x05\x50\x43\xc2\x1c\x54\x27\xc0\xa0\xe0\x6c\x9a\x2a\x02\xf4\x88\x85\xa3\x9c\xb8\x84\xfb\x7c\xd1\xeb\x11\x72\x53\x92\x08\xa2\x47\xd8\x4b\x8a\xa8\xb8\x53\x15\x70\xd0\xef\xd2\xc1\x95\xee\xac\x87\x23\xa5\xfe\xe1\x2d\x9f\xf2\x64\xc8\x93\x81\x6e\x20\x87\x9b\x66\x43\x2e\x0e\xf9\xbb\x69\x1c\x53\x3a\x3e\x55\x01\x07\xfb\x71\x7a\x99\xb1\x21\xf7\xe7\xa0\xb7\x51\x9a\x03\xbf\x06\xce\xb3\xa0\xf1\x7b\x96\xdc\xa9\xe1\xc8\x25\xfb\xec\x69\xd7\xe6\x90\x1f\x38\x1b\xf2\x0c\xf6\x23\x1e\x0f\xf3\xd2\x8c\x3d\x57\x6b\x42\x5d\x27\xe3\x96\xf1\x8e\x5f\xb2\x18\x8e\x39\xcb\xd3\x44\x42\x7d\x4e\xab\xea\x20\x29\x78\x96\xb0\x18\x4e\x78\x76\xcd\x33\x52\xa9\x55\x8d\xae\x62\xef\x83\xc9\x34\xe6\x14\x53\x52\x95\xf5\xd4\x9a\xfc\x9e\x15\xfc\x86\xdd\xa9\xef\x52\x5c\x64\xd7\xd1\x80\x83\x85\x87\x2a\x47\x3a\xcb\x36\x2e\xb7\x3f\xa7\xd5\xf6\xc3\xe9\xe9\x07\xf8\x07\xcf\x72\x41\x27\x64\x1c\xc5\x63\xaa\x1a\xd2\xfa\x1f\x2c\x8b\x58\x22\x56\x64\x9e\xc2\x21\xbf\x4c\x8b\x88\x15\x5c\x0f\xee\x05\x0d\x2e\x9f\x8d\x46\xd1\x20\x12\x62\xe0\xa4\x48\x33\x76\xa9\xf1\xd8\x20\x16\x48\xa7\xf0\x96\x17\xc8\x45\xaa\xe4\x3b\x1a\x59\x32\xbc\x89\x86\xc5\x18\xde\xe1\x1b\x87\x3d\x15\x1b\x99\x2a\xd1\x1a\x14\xd8\xed\xdd\x16\x82\x57\x74\x01\xd1\x8c\x17\x37\x69\x76\x35\x77\xe5\xe3\xd6\xdb\xf8\x45\xec\x96\xcf\x96\xd9\x2d\x6b\x5a\x33\x90\xf9\xba\xeb\xbf\x54\xa4\x37\x4b\x16\x5d\x8e\x0b\xf8\x5b\x7a\xc7\x93\xa2\x01\x07\xc9\xa0\x85\xe7\x0a\xd2\xd5\x94\xb9\xb8\xc8\xa2\xfe\xac\x48\x33\x8c\x91\x2d\x5a\x0a\x59\x1b\xe5\x39\x29\x4a\x30\xe6\x19\xef\xdf\xc1\x65\xc6\xc4\x0c\x37\x60\x94\x71\x2e\x74\x31\xa1\xa6\x5f\xf2\x06\x5e\x5c\x25\x77\x30\xe5\x59\x9e\x0a\x4d\xa3\x90\x49\xac\x98\x72\x88\x22\xc5\x2d\xca\x21\x4f\x47\xc5\x0d\xcb\x38\x45\x61\xcf\xf3\x74\x10\xa1\x6e\x37\x4c\x07\x78\x29\xc1\xd4\xa5\xb4\xd0\xba\x8b\x31\x17\x00\x56\x4f\x64\xa3\xd5\x3a\x76\x35\xe4\x2c\x86\x28\x41\x0d\x52\x15\xa1\x89\x3b\x9d\x15\x90\xf1\xbc\xc8\x22\xa4\x45\x43\x66\x19\x8d\x92\x4b\x01\x46\xd5\xc0\x77\x28\xd4\x8f\x80\x80\xf4\xc1\xc3\xd7\x2c\xe7\x0d\xc4\xb6\x01\x13\xb1\x69\x89\x7f\x39\x8e\x6f\x3a\xeb\xc7\x51\x3e\x6e\x08\x30\xc3\x28\x27\x6a\xf1\x06\xe4\xe2\xfb\x80\x27\xa2\x21\x4b\x86\xed\x34\x83\x9c\xc7\xb1\x00\x12\xf1\x5c\xdd\x27\x28\x1c\xb1\x8e\xe8\x68\x2a\x88\x5b\x08\x60\x44\x31\xec\xfd\x66\x2c\x2f\x05\xf4\x90\xa2\x1c\x46\xb3\x2c\x89\xf2\x31\xc5\x53\x1d\xa6\x90\xa7\xd8\xa9\xd0\xb9\xc5\x17\x49\xa0\x51\x2a\x76\x1d\x72\xbe\x50\xce\x43\x9b\x72\x22\x4f\xc7\x1c\x58\x3f\xbd\xe6\x38\x32\x62\x86\x24\x2d\xc4\xe2\x43\x6c\xc4\xa4\x4c\xcd\x64\xcb\xa2\x7c\xcc\xe2\x58\xe8\xde\x32\x4f\xeb\x50\x80\x8a\x12\x60\xd6\xe0\xf0\x61\x8e\xd0\x8e\x51\x57\x11\x9c\x28\xfa\xf5\x07\xad\x18\xea\xf4\x87\x3d\x38\x39\xda\x3f\xfd\x71\xe7\x78\x0f\x0e\x4e\xe0\xc3\xf1\xd1\x3f\x0e\xde\xee\xbd\x85\xd5\x9d\x13\x38\x38\x59\x6d\xc0\x8f\x07\xa7\x3f\x1c\x7d\x3c\x85\x1f\x77\x8e\x8f\x77\x0e\x4f\xff\x09\x47\xfb\xb0\x73\xf8\x4f\xf8\xfb\xc1\xe1\xdb\x06\xec\xfd\xcf\x87\xe3\xbd\x13\xbc\x25\x3a\x3a\x86\x83\xf7\x1f\xde\x1d\xec\xbd\x6d\xc0\xc1\xe1\xee\xbb\x8f\x6f\x0f\x0e\xbf\x87\x37\x1f\x4f\xe1\xf0\xe8\x14\xde\x1d\xbc\x3f\x38\xdd\x7b\x0b\xa7\x47\xd8\xa7\x84\x76\xb0\x77\x02\x47\xfb\xa2\xf5\xfb\xbd\xe3\xdd\x1f\x76\x0e\x4f\x77\xde\x1c\xbc\x3b\x38\xfd\x67\x03\xf6\x0f\x4e\x0f\xf7\x4e\x4e\x60\xff\xe8\x18\x76\xe0\xc3\xce\xf1\xe9\xc1\xee\xc7\x77\x3b\xc7\xf0\xe1\xe3\xf1\x87\xa3\x93\x3d\xd8\x39\x7c\x0b\x87\x47\x87\x07\x87\xfb\xc7\x07\x87\xdf\xef\xbd\xdf\x3b\x3c\x6d\xc1\xc1\xa1\x00\x76\x78\x04\x7b\xff\xd8\x3b\x3c\x85\x93\x1f\x76\xde\xbd\xc3\x0e\x77\x3e\x9e\xfe\x70\x74\x7c\x22\xb0\xdc\x3d\xfa\xf0\xcf\xe3\x83\xef\x7f\x38\x85\x1f\x8e\xde\xbd\xdd\x3b\x3e\x81\x37\x7b\xf0\xee\x60\xe7\xcd\xbb\x3d\xea\xed\xf0\x9f\xb0\xfb\x6e\xe7\xe0\x3d\x32\xd6\xdb\x9d\xf7\x3b\xdf\xef\x61\xc3\xa3\xd3\x1f\xf6\x8e\xb1\xa6\xc4\xf1\xc7\x1f\xf6\xf0\xd3\xc1\x21\xec\x1c\xc2\x0e\xde\x98\x09\xfa\xec\x1e\x1d\x9e\x1e\xef\xec\x9e\x36\xe0\xf4\xe8\xf8\x14\x8e\x8e\x91\x3e\xa2\xea\x8f\x07\x27\x7b\x0d\xd8\x39\x3e\x38\x11\xc4\xd9\x3f\x3e\x7a\xdf\x00\x41\xdd\xa3\x7d\xa4\xdf\xa1\x68\x7a\xb8\x47\x80\x04\xe5\xdd\x09\x3a\x3a\x16\xbf\xd1\xa9\xe5\x64\xcf\x60\xf4\x76\x6f\xe7\xdd\xc1\xe1\xf7\x27\xa2\xbd\x5d\xbf\x55\x21\x62\x9c\xee\x6d\x0a\x86\xcb\x39\x1d\x96\xf0\x44\x87\x8e\x4a\x52\x3a\xe1\x85\xbc\x90\x77\x69\xc2\xe2\xf8\x0e\x86\x69\x52\x2d\xf0\x42\xde\x3e\x09\x0a\x58\x7d\x3e\x60\xe2\x3b\x85\xf4\x1f\x65\xec\x32\x8a\x89\x63\x07\x2c\x11\x8c\xc9\x59\x1e\xc5\x77\x30\x62\x57\x7c\x48\xf7\x5b\x17\x47\xb8\x2e\x5a\x03\xd4\xe0\x6b\xf5\x8b\x56\xc5\x3e\xed\xd1\x29\x9d\x65\x97\xe6\x8a\x88\xec\x02\xb2\xc8\xbb\xcf\x76\xca\xb0\xd9\x96\x17\xe4\x1b\x7b\x3b\x55\xd7\x46\x08\x18\x6f\xa0\xcf\xa8\x84\x20\x9c\x57\xb7\x2a\xf7\x15\x29\xa8\x15\x38\xd8\x56\xf8\x6c\x39\x28\xbe\x49\x53\x34\x1f\x68\x24\xd5\xad\x29\xdd\x71\xb3\x4c\x3a\x41\xf4\xa9\x9e\x07\x5a\xb6\x46\xe0\xf2\x6f\x17\xfc\xe1\x2c\x8e\x4b\xb0\x15\x50\x71\x1c\x75\xe1\x89\xea\x08\xec\x10\x8b\x7c\x48\x47\xd9\x47\x75\x85\x3f\x07\xe8\x1c\x98\x56\x43\x0d\xde\xfa\xe6\xf7\x84\x19\x7e\x1f\xa2\x88\xbc\xf5\xf7\x3b\x13\x1f\x65\x1f\xe2\x4f\x17\xb4\x3d\x71\x0b\x40\x4b\x2f\x1b\x17\x34\xb5\x45\xd0\xf4\xa7\x07\xfa\x6e\xd2\x4f\xcb\xb4\x2e\x81\xc6\x6a\x3e\x68\xfc\x48\xa0\xf1\x4f\x17\xf4\x43\x44\xdf\x06\xcc\xdd\xd0\x71\x81\xba\x14\x9f\x43\xeb\x63\x7e\xb9\x77\x3b\xad\x65\x25\x2b\x88\xcd\xe7\xa2\xd4\x61\x73\x6a\xe5\xf3\x39\x7d\xc5\xde\xe8\x4f\xb7\x2b\x5a\xaa\x0f\x12\x88\xba\x40\xff\x20\xf1\xed\x51\x90\xa7\x08\x16\x76\x45\x7f\xba\x5d\xbd\x15\xc2\x60\xb8\x68\x48\x43\x6f\x44\xa2\x85\x3f\x9e\xb7\x74\x83\x42\x7f\xb8\x1d\x90\x91\xd9\x25\x5a\xcd\xeb\xc2\x27\x1a\xb6\x39\xaf\x62\x76\x02\xdb\xc6\x84\xdf\xeb\x6e\xd7\xf8\x0d\xfb\xc6\xbf\xdc\xce\xf7\x95\x6a\xf8\x10\x29\xb5\x93\xa9\x0b\x5c\xb5\x47\xf8\xea\x87\xdb\xc5\x87\x4c\x28\x4c\xd1\x35\x5f\x28\x3b\x1c\xa7\xad\x79\x02\x6b\x61\x25\xb9\x86\x17\xd6\x51\x2e\x6f\x0b\xeb\xd0\xaa\x12\xb4\x85\x76\x1b\xf6\x4e\xd6\x81\x3e\xcd\x6f\xa2\x9d\x91\x3c\xea\xe8\xa1\x23\x79\xf4\xaf\xad\x8a\x2d\x76\xc9\x2c\x5a\xf2\x0a\xb2\x89\xe8\x71\x43\xea\x50\x51\x6e\x5b\x76\x82\x45\x99\xa3\x01\x2d\x6f\x29\xb2\x83\x6b\x88\xfb\x65\x55\xf5\xb2\xba\xa9\x8d\x72\xad\x56\xbb\xd5\x6a\x47\x79\x53\x19\x3d\x93\x21\xbf\x6d\x7d\xce\x57\xeb\xf7\x64\xa0\x9b\x5b\x61\xb3\xfb\x9d\x38\x69\x3c\x5f\xe6\xa4\xf1\x7f\xa7\x8a\xff\x3b\x55\xfc\xdf\xa9\xe2\xff\x4e\x15\x7f\xcc\xa9\x02\x53\xf4\x20\x63\x92\x5d\x1e\xb6\xc1\xd1\xf2\x31\xbd\x87\x55\xfe\x21\x8d\xef\x46\x51\x1c\x5b\x0d\xff\xce\xef\x72\xd3\xec\x4a\xfc\xd2\x8d\x44\x99\xd3\xa4\x1f\xa1\x93\xaa\xda\x08\x2d\xa1\x8c\x25\x5f\xbe\xe8\xa3\xcc\x9b\x28\x19\xea\xa6\x46\xd2\xef\x5d\xf3\xa4\xd8\x9b\x44\x45\xc1\xb3\x9a\xf5\xf4\x0a\x5d\x5c\x3f\x71\x51\x8a\xfd\x3f\x2a\x49\xfd\x31\xcb\x8f\x6e\x92\x0f\x59\x3a\xe5\x59\x71\x67\x09\x7b\xa8\xca\x76\x55\x27\x42\x99\x86\xb6\xed\x50\xa0\x86\x49\xf4\xb6\x4a\xd5\x76\x31\xaf\xf2\xb6\x50\x0c\xe5\xfd\x27\x95\x4e\xd8\xed\xbb\x28\x2f\x78\xc2\xb3\x5c\x79\xc0\xbb\x1f\xbf\x7c\x31\xce\xba\x62\x2b\x2a\xdd\xcc\xd8\x63\xde\x92\xf9\xdd\x06\x57\x37\x2c\x1b\xe6\x74\x95\x54\xd0\x01\x2d\x11\xdb\x42\xa7\xd5\xed\xb4\x6e\x2b\x76\x9b\x96\xfd\xa3\x0c\xcf\xa9\x6a\xe8\x65\x86\x6f\x61\x37\xaf\xae\x37\x4a\xab\x05\xa2\x7b\xa7\xbc\xae\x9d\xbe\x73\xb8\x89\xe2\x18\xa6\x59\x94\x14\xc0\xe0\x86\xb2\x57\x8b\xf9\x9c\xa4\x94\xd4\x26\x81\x6e\x07\x62\x0d\x98\x65\x28\x38\xc9\x3b\xb2\x48\x21\x2a\x5a\x70\x2a\x44\x61\x94\x03\x13\x1b\xc1\x68\x16\xeb\x9e\x6e\xc6\xd1\x60\x0c\x63\x1e\x4f\x73\x18\x45\xf4\x76\x66\xc2\x27\x69\x76\x07\x31\x67\x57\x79\x0b\x19\x52\xd6\x7e\xef\xe2\xdf\xed\x6c\xd1\xda\x18\xb3\xfc\x2d\x8e\x44\xf1\xcd\x56\xa5\xc8\xee\xf4\xdd\x7d\x0a\xdb\xf0\xcb\xfd\x96\x64\x42\xc9\x72\x43\xa7\x41\x1d\x82\x9f\x6b\x69\x03\xaa\xb7\xd5\x06\xfc\x42\xae\xc5\x9b\xd0\x81\x7b\x64\xab\x52\x97\x82\x01\x5b\xb7\xe4\xa9\xbc\x55\xb9\x87\x01\xa3\x8c\xeb\x59\x56\x87\x5f\x82\xd5\xf1\xe5\x24\xdc\x57\x04\x52\xa5\x72\xe2\xf1\x30\x52\xf6\xec\x34\xa0\x1a\x20\x8e\xc0\x18\x79\x9f\xa3\x77\x3f\xeb\xc7\x7c\x93\x9e\x8e\xe2\xd7\x4b\x5e\x6c\xea\x25\x5c\x33\xde\x30\x3a\x71\x61\x09\x20\xad\xa4\x7b\x6a\x9e\x3b\xcd\xb5\x3a\x2c\x3d\x3a\xe8\x02\xfb\x66\xcc\x51\x09\x12\xdb\x55\x94\x4c\x67\x05\xcd\xfe\x34\xcd\x49\x93\x24\x35\x17\x6a\x37\xe3\x34\x57\x7e\xdb\x51\x0e\x3f\xf3\x2c\x85\x34\x33\xd0\x2e\x71\x39\x67\xda\x09\x84\xc1\x21\x3b\xac\xb7\x2c\xf7\x1d\x4b\x8b\x7d\xe4\x2a\xd0\xf8\x4d\xbe\x0c\x50\xc5\x02\x5b\xad\x01\x87\x43\xaa\x06\x86\xbf\x6a\xbd\x4d\xf1\x86\x50\x95\x52\x06\xe6\x30\x29\xcb\x2e\xb7\x8c\x97\x8d\xd0\x62\x8d\x9b\x8e\xb3\x4e\xc3\xcd\x83\x73\x41\xee\x08\x47\xfd\xeb\x28\x9d\xe5\xf1\x1d\x11\x26\x8e\x41\xaf\x58\xe3\x35\x80\x0a\x19\xad\xc3\x6e\x47\xae\x43\xe3\xd6\x83\x0e\xcd\xe4\x86\xc0\x0a\xe9\x79\x13\x25\x62\x53\xc9\xf9\xb0\x05\x27\xf4\x1a\x03\x27\x65\x94\x66\x30\x4b\x24\xb8\xd6\x3c\x11\x93\x73\x7f\x00\x26\x0d\x9a\x5b\x64\x3b\x29\xcb\x29\x4c\x4a\x13\x98\xa8\xe9\x8b\xf2\x43\x76\x58\x4b\xea\xf5\xca\xfc\x79\x4b\x82\x51\x70\x83\xd3\x15\x14\xfa\xc9\x96\xeb\xa1\xbf\x55\xb9\xb7\x4f\x2f\x7f\xb9\xf4\x06\x20\x68\x66\x8d\x61\xcc\x0a\x1f\xa4\xfd\xc0\xa3\x6e\x9b\xd5\x1e\x9a\x78\x07\x13\x1f\x2e\xce\xff\x1c\xfa\x5f\xce\xa7\xbf\x8f\xbe\x73\xfa\x0a\x0c\x2e\xca\xeb\x44\x01\x52\x74\x73\x0e\x42\x1f\x1d\xb2\x38\x4d\x38\xf0\x49\x54\x3c\xb1\x0c\x9a\x42\xa5\x9e\xe5\xc4\x67\xe9\xb4\x88\x26\xd1\xcf\x1c\xc4\xe6\x2d\xe4\x79\x3a\x02\xdc\xa5\x04\xa4\x31\x3e\xa0\xcb\xc8\x8b\x7e\x84\x3e\x9f\x2c\xe7\xb9\xb6\x74\x0a\xc0\xb5\x3a\x44\x45\xce\xe3\x11\xa4\xa3\x82\x27\x42\x78\x62\xbe\xdb\x0c\x6f\x45\x95\xe8\x48\x47\xb8\xcb\xc8\x19\xcf\x6d\xab\xe8\x90\x2b\x1c\x86\x1a\xb0\xf4\x99\x69\xc9\xb1\x58\xa8\xc7\x37\xec\x2e\x87\x31\xbb\xe6\xca\x21\x27\x67\x13\xab\x1b\xaf\x8f\x62\x3c\xcb\x95\x17\xcf\x25\x2f\xec\xce\xf0\xb5\x92\x00\x80\xcf\xa6\x50\xab\xcf\xa3\xa1\xd8\x23\xf9\x04\x71\xe3\xb7\x7c\x30\x2b\x38\x0e\x9c\x67\x2d\xc3\x5c\x62\xd8\x87\x69\xc2\x6b\x92\x3e\x0d\x88\xf2\xfd\xa4\x21\x4e\x3c\x23\xc3\x63\xe2\x9b\xf4\x03\xa3\x6a\xa4\x1f\x61\x25\xc1\x32\xde\x43\x1d\x7a\x54\xa3\xaa\x4a\xef\x29\x53\xea\x08\xa9\x8c\xdd\xed\xc6\x0e\x02\x31\x4f\xa4\x68\x9b\xe3\x8b\x45\x8e\x58\x52\xf8\x69\x68\x67\xd1\xb9\x87\xd5\xbd\xed\xb2\x23\x06\x7a\x14\x1e\x67\x43\x10\xba\xbb\xd4\x68\x65\xd5\x3f\xe5\x98\x2d\xdc\x4a\x23\x3f\xbd\x49\xe7\x8f\x1c\xff\xb7\xf7\x15\xe3\x97\x0d\xfe\xc4\x54\xb0\x30\x2c\xd3\x62\x9c\xf1\x05\x7c\x40\x4d\xf1\x7f\x9f\x7e\x35\x4d\x64\xb3\x3f\x3d\x65\x2c\x3c\xef\x1d\x47\x49\x41\xa0\xf7\x2c\xb9\x9b\x4b\x9f\x7c\x11\x4d\x28\x91\xb0\x55\xf7\xcf\x44\x88\x20\x72\xf7\x0b\xf6\x34\x4e\x51\x19\x1d\xda\xd4\x8c\x9b\xa2\xe8\x5b\xa0\x64\xe3\x46\x90\x1b\x10\x35\x68\xe7\xc1\x0d\x15\x0f\x12\xa9\xb2\x23\x23\x04\xb2\x7b\x62\xc4\x09\xa1\x18\x08\x2a\xa9\xe3\x94\x7d\x6a\x54\x47\x07\xfa\x45\xa3\xb2\x20\xa9\x3f\x1f\x3f\x96\xcd\x5b\x14\xc3\x42\xe5\x72\xd7\xd4\xc7\x33\xb0\xac\xed\xe8\x03\x78\x14\xd8\x52\x4f\x63\xd1\xc8\x43\x36\xaa\x24\x55\xe8\x11\x68\x4d\x4a\x51\x25\x21\x45\x48\xbd\x84\x55\x80\x2d\xd7\x58\xbd\x73\xa9\xe7\x65\xaf\xa0\xab\x26\x05\x0f\x99\xba\xc2\x59\xf7\x7c\x4b\x37\xb3\xb2\x06\x68\x6b\xbc\xe7\x57\xce\xb3\x2d\x0c\xd0\x90\x10\xd9\x87\x2e\x9a\x21\x7f\xf4\x76\x1b\x76\x0a\x71\xa8\xcb\x0b\xb8\x14\x0a\x59\x9e\x4e\x38\x5c\x45\xf4\xe2\x50\xba\xcb\x4a\xc3\x9b\xd0\x25\xd4\x21\x80\xe6\x57\x20\x6b\xf9\xb2\x9b\x7e\x57\xb1\xdf\x55\xea\xb7\x05\x35\x7c\xb6\x8d\x8f\xe5\xea\x46\x35\xe7\x59\xd6\x52\x3d\x6c\x0b\xdc\xbd\xb1\x64\x46\x45\xf7\xe7\x44\x9a\x09\x24\x77\x89\xd6\x38\xc5\x67\x82\x7d\xce\xb7\xf4\xe3\x5c\x59\x3e\x67\x56\x71\x7d\xe4\xfb\x98\xec\x97\x74\x5d\x0d\xcf\xbb\x95\x00\xb9\x30\xfd\x99\x13\x25\x39\xba\x76\xe2\x8b\x58\xe7\xc4\x65\xd4\x28\xf2\x1e\x67\x39\x87\xee\xa6\x1a\xfa\x1c\xcd\x42\x2a\x78\x54\x09\x3d\xa2\xb7\x4c\xeb\x9e\xdd\x3a\xb0\x5d\x93\x45\xc6\x66\x9e\xb9\xa0\x9e\xda\xa0\x02\xfb\x5f\x19\x94\xfd\xab\x37\x1f\xf0\x33\x07\x70\x68\x33\x79\x08\xb4\xfd\xeb\x69\xb0\x23\x24\x6f\x1e\xa7\x37\x92\x1b\xa5\xaa\xae\x7a\x16\x42\x46\xf2\x25\x5d\x90\xcb\xb0\x1e\x1a\x94\x7e\x47\xdc\xb5\x04\x63\xb4\xb6\x66\x8e\xa0\x02\xc4\x99\x0c\xcc\x6b\x2f\xc7\xe8\x7c\xcb\x1a\x5e\x68\x2b\xd0\xa3\x53\x12\xd4\x3a\x33\x64\x33\xee\x9d\x5e\x3e\xb1\xe1\x50\x69\xf7\x26\x56\xd2\xdd\x94\x37\xb4\x48\x69\xc0\x34\x43\x8f\x3e\x23\x57\x27\x4a\x6e\xba\x52\x94\xdf\x46\x79\x41\xd7\xbd\xce\x01\x4e\x0b\xa7\x47\x6e\x40\x97\x05\x87\x36\xd5\x24\x78\x76\x33\x10\x3c\xd9\x4c\x11\x6b\x3c\xe9\xfc\x48\x8a\x67\x65\xfa\x08\xd7\x5e\x64\x28\x74\x2a\xba\xa6\x42\x5b\x96\x89\x03\x51\x0a\x0c\x6f\x98\x33\x3e\x98\x91\x0f\x9e\xbc\x34\x41\xde\xd4\xde\xf9\xb8\xbe\x57\x13\x7e\xa3\x68\xbf\xfa\x08\xde\xf0\x51\x9a\x71\x05\x89\x0d\xd1\xe6\x15\x69\xd1\xa7\x37\xcb\x06\x8c\xa2\x2c\x2f\x90\x01\x5c\x18\x2d\x23\xa9\x69\xbf\xb1\x0a\xfd\x28\x32\xb8\x7d\xd6\xaa\x56\x8d\xaa\x9c\x78\x73\x11\xa8\xfb\x6c\xe9\x19\x7c\x1d\xf8\xb6\xa9\xbf\xd1\x7c\xc8\x11\x1c\xf3\x26\xcb\xf3\xe8\x32\x81\x0b\x42\xe7\x42\x1f\xba\x18\x58\xfd\x6a\x99\x37\x40\xe3\x84\x38\x70\x01\x56\x1b\xe2\x5d\x8b\x86\xe7\x98\x75\xc9\x26\x41\xf0\xe9\x78\x89\x30\xe5\x1c\xaa\x25\x32\x9f\x31\x94\x50\x57\x2c\x5b\x12\xe0\x56\x5c\x87\x47\xaa\x92\xf5\x3e\xe9\x48\x1d\x66\xf5\xdc\xa6\x23\x10\x27\x60\x4d\x1e\x78\x8b\xee\x3b\x09\xa7\x71\x00\xbf\x2d\x32\x46\x4a\x93\xc4\xb2\xb5\x08\x03\xd8\xd6\xa0\x08\xdf\xb5\xb5\x00\x1f\x96\x78\xd0\x0e\x87\xa2\x01\x07\xc3\x28\xd1\xce\x4b\x5c\x86\x87\x5b\xf4\xaf\x05\x4e\x9e\xaa\x0d\x89\x78\x0a\x83\x31\xfa\x20\x0b\x0a\xa3\xd3\x8f\xa2\xed\x3c\xb4\x2d\xf6\x91\x72\x03\x5e\xc3\x99\x11\x26\xaa\xe1\x39\x6c\xc2\x99\xfa\x61\xa4\x8d\x94\x6f\x65\x25\xe1\x60\x04\x37\xbc\x7a\xcd\x81\x49\x57\xfe\xcb\xb4\xc0\x74\xed\x02\xab\x06\x7c\x16\xd2\x81\x4d\x45\x7f\xb6\x15\xd0\x11\x5d\x2e\xe6\xad\x59\x92\x8f\xa3\x51\x51\xb3\xb8\x97\x6a\x78\x9d\x5b\x4d\xe8\xf1\x54\xa9\xbe\x64\x28\xc5\x1c\xbb\x68\xea\x14\x42\x5e\xaf\x91\x58\x3d\x2d\x72\x18\xaa\x75\xc3\xb2\x84\x5b\xd8\x4d\x60\x3b\x60\x73\xa1\x40\x74\x5b\xd6\xb0\x26\x42\xa9\x9c\xe8\xa8\x6d\x0a\x9c\xd6\xe6\x26\xc1\x01\x53\x6f\x62\x3d\xe0\x46\xa0\xca\x85\xe8\xbe\x71\xf5\xa8\x0f\x69\x9e\x47\xe8\xf8\x6d\x5f\x3e\x58\x06\x78\x18\x4a\xb7\xdf\x16\x54\xad\x78\x1a\x4e\x77\x12\x9b\x35\xa8\x52\xe8\x0d\x79\xbf\x4f\x2a\xfa\x1a\x54\x57\xad\xe3\x84\x0f\xa4\x8a\xd7\x04\x2d\x8c\xf4\xc5\xa5\xea\xef\x5b\x0a\xeb\x18\xa9\xc1\x6f\xa8\xec\x94\x64\xe2\x6c\x19\x65\x0f\xe0\x46\x3e\x1c\x82\xaa\x0d\x47\xf9\x26\xff\x48\x37\x18\x55\xbb\x3e\xd7\xd7\x2e\x34\x09\x76\x19\xc9\x71\x94\x99\xf6\xe7\x81\xdc\x1f\x3c\x32\x98\x2a\xd6\x12\x1d\xa4\x49\x9e\xc6\xbc\xe4\xce\x23\xbf\xe3\x84\xb9\x6f\xe5\xed\x92\x5a\xf5\xaf\xf9\x26\xfc\x35\xaf\x36\xe4\xc8\xc4\xbf\x13\x9e\xe7\xec\x92\x5b\xa3\xbe\xf7\xb8\xd4\xd3\x09\xe4\xb8\xe6\x9f\xb3\x2c\x0d\xc1\x3e\x6e\x39\x8a\x83\xa3\x30\x38\x16\x44\x57\xc1\x40\xdd\xc4\x57\x2f\x50\x1f\x96\x46\xc5\x39\x38\xa0\x0b\xce\xc3\xf8\xcd\x07\x20\xe5\x80\x19\x08\x1d\x52\xd5\x60\xbc\xe2\xe0\x80\x00\xbe\x66\x50\x62\x89\xc9\x49\x70\x14\xae\x34\x19\xf0\x1f\x33\x21\xa8\xca\x37\xa0\xa3\x28\xe3\x43\xe7\x16\x53\x8a\xfc\x8c\x4f\xd2\x6b\xee\xf4\xd8\xa2\x0e\xf1\xcf\x9b\x8c\x4d\xf7\x13\xfb\x5a\x13\x21\x39\x0b\x5d\x1d\x12\xfc\x03\x84\x19\x1b\xee\x62\x9d\x4d\xcd\x37\x96\xc9\x5b\xef\xf5\xe6\xe2\xb5\xe5\x49\x25\xf7\x74\xb1\x64\x6b\x5b\xd3\xee\x9c\xbb\xb0\x7a\xbf\x09\xd6\x9c\x53\x88\x7b\xf4\xf8\x06\x90\x1b\x8e\xf0\x09\x1e\x50\xbc\xc3\x01\xc9\xdb\xd2\x11\xa1\x34\x2f\x66\x01\x87\x4c\x29\xa2\xbd\xf3\x86\xb8\xe2\x60\x21\xe3\x35\x85\xce\x0d\xe0\x8d\x96\xec\x2e\xfe\x70\xd5\x19\xf0\xbe\x64\x82\xfa\xa4\x38\x78\xce\x71\xc1\x9c\x12\xf2\x82\x7c\x12\x7e\x01\x64\xc7\x4d\x15\x13\x96\xd8\x75\xd3\xdc\x81\xa8\xe8\xac\x9b\x60\x83\xdc\xf4\x00\x1b\x35\x13\xee\xd5\x89\xe3\x06\x57\x92\xe0\xf4\x7e\x94\x0c\xa5\x4b\x98\x59\x61\x0d\xc2\x01\xc7\x22\xab\x1a\xb5\xd5\x55\xb0\xb0\xa2\x5c\x49\xb0\xad\x6a\x6f\xd9\x11\x6f\xe5\x97\xf9\x92\x52\xf4\x6c\x8b\x48\xf1\x3b\x28\x4a\xfe\xa0\xb3\x91\x9c\xea\x34\x91\x48\x58\x53\x17\x90\x59\xf5\x7a\xf0\xa2\x6b\xb1\x40\x3d\x4a\x06\xfc\x01\xa1\x6a\x57\x99\x2b\x58\x97\xa5\xc8\x37\xa1\x8a\x5e\x04\x61\xb1\xbf\x0c\x99\x3c\xe1\x61\x04\x7d\xbb\x8d\xd7\xad\x39\x30\xa8\xba\x62\x5b\x99\xea\xa2\x11\x39\x03\x26\xf1\x9d\xf8\xdb\x3e\xdb\x61\x8c\x13\x6a\x35\xff\x2e\xd5\x85\xea\x13\xdd\xdf\x2a\xe6\xd0\x5b\x19\x73\x95\x21\xb4\x21\x2f\x44\xd1\x83\xaf\x01\x69\x16\x5d\x46\x09\x8b\xad\x8d\xf5\x0f\x9f\xa7\xd2\x21\xce\xb3\xbc\x02\xb8\xe7\xfb\x90\x50\xd7\x50\x44\xaf\x81\x33\x9e\x86\x21\xca\x17\x43\xc0\xd0\x35\x08\x65\xdb\x48\x0e\xf8\xf2\x05\xff\xb6\xa4\x8a\x55\xea\x87\xf8\x69\x36\x03\x3e\x47\x18\xd4\xcb\x92\xde\x4b\x7a\x2f\x21\x69\xdc\x53\x8a\xd8\x6a\x62\x5e\xf0\xe0\x28\xc1\xb5\x0c\xb8\x6c\x52\x77\x76\x31\xc4\x80\xcc\x03\x1e\x07\xdb\x6b\xa1\xe5\xd3\xc0\x39\x12\x59\x6a\x67\x29\x2a\x24\x52\xf1\xd1\x9c\x43\x29\x68\x46\x84\x6d\x68\x76\xb7\x2a\xee\x36\x18\x49\xb1\x6d\xc2\x12\x5b\xc1\x72\xa3\x66\xd3\xd5\x96\xd5\x9c\xe1\x6e\x18\x98\xb6\xb3\xe8\xfc\xe1\x99\x13\xff\xf9\xeb\x41\x62\x61\xb7\xdf\x72\x1a\x58\x83\x88\xdc\x12\xc7\x8c\x68\x13\xca\x09\x4f\x85\x67\x57\x05\xe3\xa5\xcb\x21\x21\xee\xf4\x5a\x94\xb8\x0a\x69\x46\xc7\x5d\x8f\x81\xac\x4a\xf9\x34\x8e\x06\xfc\x28\xe1\x35\x12\x0d\x0a\x5c\xdd\xeb\xc6\x9e\x00\x8a\x73\x6a\x01\x09\x18\x31\xce\x3a\xe7\x1e\x84\x07\xb9\xf0\x61\x1e\x2c\x4d\x49\x88\x0d\x35\x45\x83\xb2\x7a\xa1\x80\xdd\x89\x63\xcb\x5f\x22\x24\x64\xed\x1a\xd6\xc5\x13\xf8\x77\x65\x46\xc6\x46\xdf\x58\xaa\x61\x28\x38\x75\xf9\x83\x4f\xc9\xd2\xcc\xdb\x01\x1a\x90\xa4\xda\x96\x23\x08\x5a\xee\xc3\x9f\x06\x4f\x6a\x95\x2e\x8b\xbc\xa8\x9b\xf0\x75\x42\x6b\x81\xe3\xa5\x9c\x33\x23\x30\x6c\x5e\x2a\xaf\xec\xa5\xc4\xe9\x57\xe2\xe6\xad\x88\x07\x44\xea\x7d\x78\x76\x3c\xde\x6b\xb7\xc9\x56\xeb\x6d\xdc\x18\x6d\x34\x8e\x2d\x23\x08\xb9\x5e\xc9\xbe\x2a\x5f\x33\x03\x82\xdf\xae\xc8\x95\xd7\xf8\xee\xaa\x7b\xc9\x2d\xbf\xda\x56\x59\xa6\xca\x63\x85\x80\x11\x0a\x4d\x44\xff\x5d\xf1\x3b\xd8\xc6\x3a\xce\x79\x82\x90\xc4\x42\x21\xd4\xbd\xf5\x5a\xd7\xf1\xe7\x4a\x3c\x10\x58\x46\x57\xfc\x2e\xb0\x87\xcc\xaf\x5f\xea\xcd\x3b\xe6\x2c\x37\xef\x0f\x70\xe4\xa2\xc9\xb5\x6f\xc4\x4b\x57\x80\x10\xd6\x98\xf2\xb9\x26\x59\x67\xa0\x73\x94\xb8\xdc\xb7\x53\x2a\x91\x4c\x85\x6e\xa4\xc8\x77\x07\xfb\x47\x80\x71\x17\xc2\xfb\x28\xb6\x59\x6e\x33\x5d\x02\xb3\xb3\xe8\x3c\x68\x78\x5a\x24\x84\xcd\xc1\x32\xf6\x2c\x9e\x4a\xd2\xcf\x12\x71\xf6\xb2\x6e\xf5\xe7\x99\xf5\x2b\x01\xd1\x29\xfb\x3c\x3b\xd7\x17\xae\xfc\xda\x3a\x02\xfa\xeb\x5a\xb6\x8f\x9d\x2d\xc9\x85\x61\x9b\xd8\xaf\x1d\xed\xc1\x57\x82\x65\x3b\xc2\x1f\x5e\xc3\x99\xa9\xef\x68\x4f\xe6\x33\x19\xc5\xaf\x2d\x63\x78\xa5\x0c\x86\xfe\x30\x6b\xc0\x42\x17\x36\x6d\xb7\x0c\x53\xd0\x00\xbb\x6b\x65\x60\x98\x7f\x92\xb5\xb9\x5a\x4f\x50\x1c\xd8\xec\x94\x41\xcc\x2a\xb3\xce\x4c\xd2\x08\xb6\x68\xaf\x65\x37\x41\xaf\x44\xfb\xfb\xd2\xdd\xcd\x35\x24\xaa\xea\x6a\x6d\x6b\x27\x65\xae\xbc\xa5\x4d\x17\xf6\xf4\x86\x9b\x07\xd7\xae\xc4\x2c\xd8\x84\x06\x50\xba\xab\x51\x29\x12\xec\xaa\x64\xc2\x70\xd1\x92\x8e\x30\xf3\x89\xe8\x0f\xcf\xf9\xbd\x55\x29\x4d\xa0\x85\x54\x60\x51\x39\x0a\x89\xeb\xe1\x62\xf9\x09\x2d\x58\x45\x15\x4f\xec\xcd\x5f\x25\xbe\x5d\xb5\xeb\x5c\xfe\x50\xc7\x73\x8d\xb0\x25\x8e\xde\x0a\x1a\xb8\x3b\x8b\xf8\x1c\x11\x3f\x64\x13\xee\x30\x9f\xf9\xea\x7a\xc3\x96\xb7\x89\x57\xd0\x81\xd7\x70\xcc\x47\x31\x1f\x14\xad\xf4\x26\xc1\x7d\xd7\xae\x27\x96\xa4\x10\x1c\xd2\x36\xb0\xd3\x4f\x67\x05\x74\x5b\xcf\x6f\xa5\xb3\x27\x3d\x94\x28\xc6\x1c\x8a\x9b\xb4\xc9\xb2\x4b\xb8\x96\xc1\x5b\xd2\x11\x99\x06\xff\x8b\xd4\xf2\x5a\xdd\xf2\x0b\xf5\x35\x75\x7c\xac\x18\x88\x90\x87\xdf\x1b\x70\x25\xfe\x84\x35\xe8\x36\x20\x71\x0f\x50\x5b\x70\x05\x2f\x21\x11\x62\x7f\x6d\x5b\x94\x5f\xe1\xbf\x24\xbf\xf4\xd1\x89\xfe\xba\x42\x09\x89\x8d\xa7\xe9\xb4\x46\x02\xc4\xdc\x07\x18\xb9\xc3\x32\xa1\x76\x5a\x41\x12\x29\x33\x93\x31\x76\x92\xad\x3a\x64\xd7\xb4\x1d\xc4\x44\x33\x65\xc7\xcc\xa4\xc6\x21\x67\x42\x14\xb9\xdd\xfb\x42\x91\x65\x96\x25\x32\xc3\x84\x63\xb6\xb1\x35\xb3\xcd\xac\x21\x44\x32\x5e\x84\x14\xa1\x8c\x17\x36\x4a\x8e\x18\x37\x58\x5a\x81\x10\x32\x79\xb9\xe2\xbd\x76\x75\x1f\x64\xd5\x90\x23\x0d\xbe\xfb\xb6\x8c\xaa\xcb\x47\x2a\xfb\x86\x6f\x61\x1b\xf0\x6f\x8b\x22\x62\x70\xfb\x5b\xb6\x33\x65\xf9\x11\x97\x89\x85\x67\xe9\x8b\x67\xe7\x0e\x09\xae\x20\xc2\xa6\x75\xfb\x51\xcc\xe2\x77\x58\x18\x1f\xf0\x4a\x3f\xbf\x42\x1d\x12\x2f\x4a\xaf\xfc\xa8\x10\x57\x0e\x82\xa1\xc7\x62\x35\xe9\x8e\x65\xd0\x1c\x25\x52\x28\x59\x83\x35\xf1\x7c\x3c\xf1\x3b\x4a\xa4\x3d\x5b\x82\xb1\x8c\xf5\x84\xcb\x96\x15\x3b\x68\x7d\x99\x17\xbd\xf8\x8e\xa8\x28\xa6\xb0\x0d\xea\x2d\x71\x55\xfc\xae\xd6\xb1\x68\x96\xc5\x76\xc9\x2c\x8b\xab\xf5\x8a\x6e\x24\xe8\xeb\x3e\x08\xab\x54\x0c\xa5\xf9\x9d\xa0\xb5\xa8\x67\x76\x1e\xf1\xcb\x23\x32\xea\xc4\x75\x82\x77\x76\xc5\xef\x04\xf7\x89\x1f\xf8\xb7\x18\x0e\x96\xb4\x32\x19\xe0\xca\x92\x63\xb5\x29\xcb\xd8\x24\x6f\xc0\xa0\x4f\x3d\xd0\x6f\x4a\xe4\x10\x0d\x05\x03\xe2\x07\x59\xcf\x8a\xf8\x8e\x68\x48\x88\xf6\x63\x3b\x0b\xa0\xe9\xf9\x92\x7f\xcb\x5e\x2f\xf9\xa2\x1e\x75\x2f\x2e\x2c\xd5\x69\x69\x0b\x57\x7d\x07\xd2\xce\x68\xb4\x66\x59\xdc\x9a\xb2\x2c\xe7\x16\x46\x2a\x17\xd8\x23\xfa\x44\x2b\x60\x90\xc6\x6e\x63\xfd\x19\xb6\xa1\x4a\x71\x36\xab\x56\x63\xbf\x12\xda\xbc\x64\xb5\x72\xaa\x11\x75\xf5\xae\x6a\xe3\x9d\xb9\x0f\x02\xaf\xcd\x31\x23\x8a\x0a\xeb\xd5\x82\x3d\x15\xd0\x7d\x95\x60\xaf\x56\xbd\xf0\xb6\x04\x44\x72\x3e\x56\x5a\xdd\x5c\x5f\x6f\xac\xce\xb2\x78\x75\xf3\x45\x4f\xac\x85\x17\xcb\xac\x05\xf5\xac\x3f\xe3\x6c\xe8\xcc\x78\x5f\xa6\xf2\x53\x11\x5b\xa3\xfc\xdd\x5e\x03\x26\xef\x78\xd2\x80\x04\x83\xc4\x5a\x8a\x46\x03\x26\xea\xcf\x77\xe8\xd3\x58\xa3\x2a\xf0\x04\x36\xea\xd0\xc4\x66\x56\xb6\x73\xfe\x9e\xdd\x8a\x4a\x5d\x78\xf9\x12\x5b\xd4\xed\xc2\x37\x11\xc3\x93\x97\xa8\xf4\xea\x95\xfe\x9e\xbc\xa1\xb4\x03\xcd\x17\x56\x32\x75\x81\x15\xbc\xd6\xdd\x35\xa1\x2b\x36\x67\x95\x98\x7f\x68\x6a\x34\xbb\xb0\x69\xf2\xab\xc3\xb6\x4c\x2c\x65\x27\x2f\x47\xc5\x48\x6c\x95\x43\xf4\x40\x83\x6d\xc8\xe1\x31\xd4\x08\xcb\x5a\x13\xfb\xaf\xcb\xac\xf0\x00\x39\xbc\x7a\xb5\xad\x3f\x57\x40\xe2\xb7\xb6\x8d\x03\x52\xe2\x77\x4b\x7e\x7e\x25\xf6\x20\x01\xb2\xc6\xe1\x09\xf4\x9e\xaf\xd7\x61\x2d\x80\x42\x43\x22\xd0\x90\xcd\x9a\xdb\x82\x7e\xbf\xa0\xee\x33\x11\x34\x59\x80\x10\x9f\x8b\xd0\x64\x1e\x42\x02\x64\x6d\xf2\x6b\x11\x42\x5d\xce\xb5\x5b\x88\x11\x76\xa1\x49\x73\xe8\xa6\x0f\xa2\x9a\x62\x52\x3d\xf9\x3e\x81\xd7\x70\xc8\x0e\x61\x13\x6a\xb5\x5c\xcf\x54\x1d\x9e\xe8\xbc\x12\x75\x5f\xcb\x16\x78\x4f\x60\xcd\xc9\xde\x2f\x06\x59\xd7\x48\x70\x1b\x09\x2b\x4a\x89\xdb\x81\x18\xba\x0d\x83\x4b\x56\x45\xb1\xa4\x56\x06\xa6\xc5\x0c\x2e\x0d\x2f\x3d\xe6\x43\x2b\xa4\x01\x83\xdf\x7d\x91\x60\x16\xa2\x1a\x42\x12\xe4\xee\x3d\x85\xd7\xce\x08\x9b\xbd\x67\x02\x8c\xf3\xe9\xc5\x0b\x5c\x33\xf5\xf2\xb2\xea\x88\x49\xb1\x96\x56\x79\x59\x09\x52\x36\xed\x65\xa5\xd3\x47\x63\x40\x66\x99\x29\x16\xf3\x42\x3e\x7e\x0c\x5d\x68\x83\x95\x5f\x9a\x9a\xcb\x04\x47\x94\x52\x16\x11\x63\xfd\x9c\x5a\xd6\x2b\xfa\xdd\xc3\x21\x3b\x94\xdf\x04\x60\x03\x57\xf3\x88\xc5\x1a\x4e\x6d\xd5\x89\xe6\x8c\xf7\xec\xd6\xe7\x27\xdd\xf3\x28\x4e\xd3\xac\x86\x7f\xc6\xe9\xa5\x02\xd1\xa6\xc2\x77\x87\xbd\xba\x3e\x07\x11\x06\x4f\xa0\x36\x50\x6d\x15\x39\x79\xbd\x0e\x2f\xed\x3c\x61\xbc\xd9\x54\xae\x0a\xf0\x64\x1b\x7a\x15\x70\x13\xad\xc1\x9a\x9c\xce\x57\x5e\x7a\x31\x4c\xb4\xbd\x2d\xe6\xb4\x8d\xac\x53\xf2\x62\xb3\xab\xb8\x9c\xac\x17\x61\x20\x9d\x19\xe2\x3d\x10\xbd\xf5\x2c\x24\xd7\xd6\x34\x92\x6d\x83\x64\x18\x4b\x7b\x15\x13\xc9\x75\xb2\x3a\x43\x61\x6f\xf5\x87\x07\x89\x12\xc8\x20\x45\xc2\xcc\x1b\x8b\x59\xd9\x6a\x6d\xaf\xe9\xb5\x5d\x22\xc9\x44\xf3\xa0\xb7\xb4\xb1\xf3\x25\xa0\x77\xdc\x13\xa7\x14\x9a\xb8\xa2\x5e\x6d\xc3\xc6\x56\x40\x48\xa2\x34\xa2\x54\xe4\x46\x5e\x4e\x90\x8c\xcf\xd7\x1b\x72\x5d\x5b\x82\x53\xee\x03\x2f\x5f\x52\xe7\xf0\x05\x77\x4f\x14\x0a\x25\x69\x8d\x5f\x51\x58\x07\xfb\xe5\xa5\x7e\xb9\xee\x97\xfb\xfd\x96\x20\x40\x13\x86\xe7\xf0\x45\x6c\x74\x4f\xa0\xdb\xdb\xb0\x14\xe9\x8d\x65\x94\x07\xe3\x8b\xf2\xec\x5c\xfc\x7f\x47\x3d\xf9\x91\x55\x1a\x46\x53\x47\x35\x65\x38\x9b\xae\x6e\x3e\x13\xe0\xbf\x5b\x2a\xf2\xce\x93\x47\x15\x78\x82\xd1\x48\xb3\x49\x94\x70\xba\x66\x97\x87\x20\x7a\x64\x4e\x31\x81\x2a\xf0\x44\x54\xfc\x6f\x0a\x7b\x0c\x00\xfb\x18\x0c\x1d\x4f\xe6\x57\x63\x36\x8c\x3e\xf3\x31\xbc\x54\x41\xd3\x29\x52\x7a\x2b\xcd\x2e\x5f\x61\x2b\x19\x7a\x06\xe0\xfd\xc1\x69\x05\x9e\xb4\xd5\x33\x58\xf8\xa4\x63\x1d\xd1\x43\xf7\x88\x9e\xb2\x9e\xb0\x11\xcb\x22\x78\xde\x7c\xa1\x34\xb6\x86\x15\xbd\xaf\x9a\xab\x6c\xa5\xf4\x70\xdb\x3b\x6c\xd9\x21\xcf\xe1\x18\x2d\xaf\x14\x3c\x06\x4d\x0b\x33\x16\xc7\x77\xe5\x78\x13\x66\xeb\xd1\xa7\x3d\x27\xc6\xb9\x0e\xbd\x5e\xd3\x19\xda\xb0\x22\xbe\xa6\x3e\x89\xd3\x1b\xef\xe3\xa3\x47\x69\xff\x73\x4b\x0f\xcf\xd5\xc2\xf5\xa0\x4b\x9d\x51\x33\x3b\xea\xbb\xc9\x06\xe9\x87\x73\x37\x61\xa2\x1c\xf3\x50\x28\x3e\xbc\x83\xb3\x7c\xf0\xbe\x9f\xca\xa0\x4a\xd7\x9d\x56\xb7\xa3\xe8\x3c\x8f\x62\x2d\x27\x14\x9d\x1e\x6f\x79\x04\x16\xb2\x42\xe1\xd5\x59\xe1\x4b\x38\x5a\x15\x73\xc1\x1f\x81\x2a\x36\xda\x54\xa9\xd6\x69\x40\x87\xd2\x20\xd0\x2a\xea\x75\x96\x3d\x8e\xaa\x08\x58\x18\xbe\x42\xc7\xc3\xda\xaa\x94\x79\xc1\x09\xd3\x68\xc7\x67\x01\x63\x1f\x51\xa3\x75\xc2\x6a\x61\x69\x38\x5c\xe3\x96\x46\xb8\xbb\x0c\xc2\x65\xa4\xf4\x61\xb9\xd5\x8e\xa3\x7e\xfb\xf3\xbf\x67\x3c\xbb\x6b\x0e\xf9\x88\x67\x19\x1f\x56\xeb\x5b\x14\x8e\x2b\x54\xb8\xba\xd9\x13\x12\xa1\xd7\x5b\x96\x54\x9f\xff\x7f\xa2\x7d\xe9\x14\x6e\x61\xb1\xda\x52\x9d\x0c\xd2\x8c\x63\x40\xb0\x46\x65\x45\xfc\xfd\x29\xcb\xa7\x0c\x1d\xba\xda\x3f\xe5\x6b\xed\xad\x4a\xfb\xc9\x93\xca\x13\x05\x72\x97\xc5\x71\x9f\x0d\xae\xf2\x8a\xf8\xb8\x2b\xd8\x6f\x94\xa5\x93\x60\xba\x05\xea\x40\xfd\xd3\x8f\xd3\x7e\x7b\x82\xc6\xbf\x76\x9e\x0d\xda\x03\x05\xa9\xf5\x19\x81\xb5\x2b\xc8\xd5\x72\x8e\x8b\x54\xca\x05\x7c\x3f\x9f\x26\x28\x56\x26\xac\x80\x01\x1b\x8c\x39\x45\xf2\xa1\x82\x5d\xf1\x41\x86\x34\xa1\x40\x64\x98\xe7\x4e\x02\x6a\x52\x33\x71\x4c\x54\x80\x30\xfd\x27\x01\xb7\x4b\x13\x4e\x0f\xda\xf3\x22\xcd\x38\x44\x89\xec\xc9\xe4\x55\x47\xd3\xd5\x11\x01\xa9\x69\x68\x82\x9b\x56\x4c\x60\x21\xd8\x76\xf0\x3a\xd3\xf5\xce\x25\x8a\x2b\x44\xc8\x16\x67\x83\xb1\x86\x22\x33\x08\x82\x4d\xff\x7a\xc3\xd8\xc2\xe0\x53\x03\x46\x31\xbb\xa4\xde\x56\xa8\xab\x33\xfa\x74\xae\xfd\x5d\x57\xee\xeb\x5b\x95\x15\x27\x9c\x21\x05\xc7\x40\xc9\x2f\x63\x25\x31\x50\x84\x27\x87\x94\x59\xae\x5e\x42\x98\xd0\x5e\x78\x70\x16\x3b\x4a\xbe\x49\xdb\xc6\x8a\xc4\x73\x13\xf7\x96\x29\x85\x6a\xa5\xf6\xe9\x08\x10\xdf\x66\xce\x45\x33\x9b\xd0\xf8\xec\x07\xa3\xe5\xc8\xc7\x14\xe3\xf4\x46\x00\x5b\x59\xa1\xd7\x23\x36\x1a\x7d\x3e\x66\xd7\x14\xea\x8b\xc9\x48\x3a\x19\xa3\xf8\x62\x2c\x96\x10\xf5\x2b\x17\x1c\x8f\x15\x9f\xc7\x1f\x13\xf6\xc9\x06\x05\xa5\x58\x64\xd2\xb2\xed\x55\x32\x01\x12\x04\xb4\x55\xf4\xd5\x5c\x85\x89\xca\x7f\x50\x44\x13\x9e\xb7\x64\x5f\xfa\x5d\x80\xa2\x83\x22\x4b\x32\xe0\x9b\x2b\x2b\x2b\xd8\x21\x4f\xf2\x59\xa6\x5e\xc6\xd8\x3d\x89\x5e\xd0\xed\xad\xcf\xc9\x25\x14\x3d\x24\xa1\x46\xd8\xc1\x5b\xb9\xca\xeb\x12\x28\x3d\x37\xd0\x60\xaf\x38\x9f\x0a\x62\x0c\xae\x04\xad\xa7\x19\xc7\x30\x27\xa4\xc0\x11\xc7\x12\x89\x99\x18\x73\x72\x67\xfa\xc6\xa7\x04\x44\xef\x95\x15\x36\x2a\x64\xf8\x19\x44\x69\xcc\x72\xe8\x73\x9e\x48\x7c\x28\x56\x1b\xbb\x61\x77\x14\x94\x09\xeb\xb1\x82\xe7\x05\xac\x22\x3a\x98\x26\x41\xc1\x92\x5d\xcf\xc3\x7f\x96\x44\xff\x9e\x95\xc8\x62\xcd\x91\x4d\x0f\x0a\x8b\x44\xf4\x48\x52\x18\xce\xa6\x71\x34\x10\x7c\x2a\xdf\x8f\x49\x07\x35\x04\x9c\x17\xe9\xf4\x28\xd9\x67\x71\xce\x37\x57\xa2\xa4\xe0\x59\x36\x9b\x16\x2a\xae\x46\x2e\x33\xa2\x9b\x7e\x68\x25\xe4\x74\x3f\x46\x30\xda\x15\xb9\xfc\xb4\x1c\xb3\x4d\xce\xce\xa2\xae\xac\x58\xc2\x44\x0b\xa1\x2c\x9d\x94\x25\x4b\x48\x9e\x44\x23\x74\x3f\xe1\x43\x84\x53\xbb\x51\xd9\x7a\x95\x60\xa1\xd7\x6c\xf5\x8a\x5a\x5a\xe6\x2d\xac\xfe\xb0\xbd\x0d\xab\x64\xbc\x5b\x85\xd7\x95\x95\x95\xda\x5c\xd1\xf2\xe5\xcb\x7c\xf1\x54\x87\xcd\xca\x8a\x96\x3a\x18\x77\xbe\x06\xbf\xdc\x37\x4c\x95\xad\x0a\x49\xb0\x76\x1b\xde\xb1\xbc\x40\x9e\x90\x07\x84\x9a\xca\xee\x39\x4a\xb3\x4b\x5e\x60\xae\x0a\x9c\x93\xbc\x5e\x59\x91\x9c\xda\xa8\xac\x88\x21\xee\x0b\x61\x54\xa4\x70\x95\xa4\x37\x62\xf4\xb4\x12\x59\xae\x1f\x2e\x21\xab\x55\x56\x56\xf0\xdf\x45\x8d\xa2\x1c\x06\xb3\x2c\xc3\x0c\x23\xa2\x95\xd0\x13\xb1\x59\x94\x5c\xaa\x76\xf8\x14\x50\xcf\x74\x91\x12\xd2\x35\x7c\x3e\x17\xc9\xec\x04\x82\xc3\xee\x04\x87\xe1\x2a\x11\x15\x7e\x8c\x8a\x71\x5d\xc3\xa2\x2c\xf8\x04\x70\xcf\x64\x7a\x8d\xd3\x74\x4a\xbc\xe4\xf5\x4d\xb9\x32\x64\x83\x83\x64\xc8\x6f\xf1\xa9\xb6\x87\xaa\xc1\xaa\x36\x91\x59\x4e\x04\x1a\xe4\x41\x60\xd8\xc2\xa0\x81\x90\x24\xd4\x9d\x81\xd0\xd6\x5c\xf9\x51\x59\x59\x91\x6e\x9c\x67\xe7\xb2\xda\x49\x21\xc5\x01\x8e\x5a\xd4\xce\xa5\x0f\xd4\x94\x33\x6b\x92\x2a\x2b\x2b\x39\x56\xdd\x86\x47\x6a\xab\xc1\xb5\xf6\xf8\xb1\x01\xb6\xaf\x60\xd0\xbe\x4e\x13\xe4\x2c\x8b\x21\x2b\x98\xdc\x7a\xe4\x9c\x9b\x6d\xae\x25\x3f\x3c\x7e\x8c\xd5\xb6\x44\x1d\xf7\x19\xc6\x8a\x33\x50\x01\xd8\x50\x5f\x70\x6e\xc7\xaa\x72\xa2\x12\xbb\x5b\xdf\xde\xa9\xdc\xa8\xf6\xfd\x9d\x29\x76\xfa\x11\x07\x42\xd8\x22\x36\x7a\xfc\x18\xec\x7e\x5f\x82\x0d\x6e\xcb\x2e\x5b\x5b\x53\xa3\x5b\x11\x07\x71\xba\xf6\x73\x1a\xab\x43\x1b\x8e\xf1\x0c\x3a\x70\xde\x90\x7f\x76\xe1\x1c\x28\x8e\x2f\x05\x30\x13\xca\xbb\xda\xd4\x8d\xbc\xd2\xf0\x0d\xfd\xe8\x39\xbc\x7c\x3d\x2b\xc4\xba\xd8\xa2\x46\xb3\x8c\xd2\x65\xe1\x94\xd2\xde\xcc\x86\x43\x6a\x2a\x5d\x28\xc5\x9f\xf7\x15\xf5\x3f\x9a\x08\xf2\x79\xbd\x3d\x06\x77\x54\xc4\x09\x1a\x11\xf3\x4d\xf9\xc1\xe8\x22\x9c\x40\x55\x28\xbd\x27\x85\x98\x58\xd1\x5d\xaf\x58\x76\x0b\xf5\x3e\x4e\x37\xd7\xdc\xba\x65\x57\x95\x85\x39\x8f\x47\x2d\x99\x60\xaa\x56\xf7\x46\x73\xef\x2e\x03\x23\xa4\xe5\xce\x4f\xcd\x31\xef\xd3\x0a\x55\x14\x8b\xdb\x2c\x17\xd4\x1e\x06\x3a\xcd\x0a\x2e\x4f\x0d\xc3\x7a\x50\x2c\x5a\xb3\xe1\xd0\x8b\xfa\xb6\x12\xa4\x9d\x16\x37\x0d\xb8\xe1\x90\xb3\x6b\xb9\xc5\xd3\xb2\x97\x59\xd8\x2a\x72\x63\xcc\x74\x9a\x73\x9f\x59\x57\x56\x6a\xf6\x1b\xb2\x1a\x3d\x85\x31\x24\x77\xd4\x42\x0a\xd7\xe1\xa8\x7f\x2c\xbb\xb4\x6a\x63\x57\xf2\x4a\x54\xb6\x14\xbf\x6a\x54\x6d\x4b\xd5\xc2\xd1\x98\x87\xd7\x0a\xe0\xaa\x0d\x89\x2a\x69\xf1\x40\xbb\x37\x9e\x80\x71\xaa\xc6\x2c\x97\x50\x9d\x46\x2b\x74\x1f\x3e\xcb\xc7\x7e\x9f\x92\x41\x3c\x1e\x11\x75\x28\x60\xb7\xe2\x36\x79\x82\xc4\xdb\x21\xbd\xcd\xd9\x5d\xa0\x90\xcd\xa7\x42\xa9\x96\xcf\xca\xaf\x79\x7c\xa7\x8b\x15\x11\xad\xae\x55\xcf\xf7\x9a\x57\xeb\x35\x2b\x5c\x95\xfa\xda\x6e\xc3\xdb\x54\x4c\xa6\xf2\x0f\x15\x5b\x84\xad\xb6\x29\x5e\xd1\xd5\xd5\x64\xcb\xc5\xd6\x67\xc5\x60\xfc\xda\x5a\x46\xf2\xbb\xb3\x80\x16\x49\x2e\x04\x2a\x36\x23\xb9\x76\x1a\x82\x48\x37\xbc\x2a\xd3\xfe\x4b\x70\xc5\x98\x27\xba\xb6\xe0\x3d\x0a\x63\x87\x9a\x9e\xd1\xd8\x2a\x25\x5a\xfb\xeb\xd1\x93\xad\x94\xb7\xdd\x59\xe9\xaa\x85\xbb\xc4\xf1\x7f\x1d\xe7\xb5\x15\xb9\x44\x57\xf0\x9d\x3b\x6e\x68\xd6\xea\xd3\x19\xcc\xd5\x12\xa3\x3d\x6f\xb9\x55\xe6\xf3\x3f\xcd\xd9\xc2\x45\x80\x96\x78\x21\x9e\xd5\x60\x30\x7f\x78\x0d\x6a\xf4\xd5\x2c\x8d\x28\x21\xff\x07\xd1\xbe\x01\x96\xeb\x08\x32\xf5\x2b\x68\x76\x6d\xc6\x23\x9f\x71\x72\x3e\x51\x9e\x24\x5d\x8b\xcb\xda\x6d\xf8\x01\x9f\xee\xab\x79\xc2\x3a\x3c\x77\x16\x5d\x89\x23\xe4\x77\xea\xf6\xe5\xb6\xb3\x19\xb9\x2b\xcb\x2e\x69\x36\x03\xeb\x2a\x08\xe9\x40\x8e\xa7\x04\x08\x0b\x82\x70\xf4\x72\xa9\x38\xab\xe6\x81\x79\xdf\x4d\x93\x22\x4b\x63\x34\x34\x62\xe4\x9a\xc4\x70\x40\x94\xdb\x7a\xbb\x68\x30\x66\xb9\x35\xff\x30\x4a\x34\x8a\xb2\x03\x7f\x8a\x46\x49\x43\x71\xc6\x2b\x7c\x08\x11\xe2\xb9\x38\xb6\xd6\x6a\x89\xed\xf8\x64\x5a\xdc\x05\xb8\xce\xdb\x97\xe6\x8e\xf0\x07\x25\xe3\xb1\x01\xc5\xb6\xc3\x14\x82\x2c\xb9\x13\x47\x53\x51\x4d\xee\x60\xf3\x7b\x51\x7a\x97\xde\xef\xad\xf0\xb2\x0b\x7b\x3f\xc8\x21\x2a\x40\xc2\x1f\xbe\xb6\x3a\x0b\xed\x57\xca\xec\x28\x7a\x75\xe1\xbc\x4b\x85\x62\xac\x46\x11\x25\x10\x15\x5a\xaf\xa6\x67\x7f\xa2\x62\x9c\x0e\xae\x02\x60\x15\xf6\x1e\xd2\xb4\x55\xf8\xf2\x65\xee\x96\xfe\xd0\x20\x63\xcc\xa5\xf6\x5a\xe1\xb1\x70\x80\x88\x91\xc7\x89\x78\xe4\x75\x78\x41\x9f\x5e\x25\x63\xca\x20\x47\x18\x01\x5e\xc9\x14\xa5\xa1\x0a\xf9\x6b\xf3\xa6\xed\x3b\x63\x76\x66\xf9\x62\x15\xff\xf9\xf2\x45\x33\x8f\xfc\x7c\xe6\xb6\x92\x86\xd0\xd7\xd6\x8f\x1a\x39\xa7\x5e\xe6\x70\xbe\xe5\xc9\xbe\xc7\x8f\x05\x35\x49\x59\xfe\xf2\x45\xeb\x67\xae\x86\x56\x12\x24\xa4\x95\xe9\x9d\xd7\x6c\x6b\xae\x9e\x25\x25\xbb\x5b\x63\xa9\xf5\xad\xa8\xea\xee\x88\x1e\x65\x4b\xd4\x0c\x31\x91\xe0\x0b\x45\xe9\x9a\x1f\x7f\x48\x61\x35\x17\x91\x53\x73\x2c\x74\x51\xc1\x50\x29\xea\x54\x89\x56\x0c\x51\xc6\x87\xc0\x54\x40\x2d\x71\xc6\xd1\x07\x91\x05\x4c\x45\xc4\xdf\xd2\xea\xa7\x38\x09\xcb\x32\x81\x3c\x99\x7d\xa5\x5d\xd6\x33\x97\x6e\xf6\x9e\xde\x9f\x37\x7a\x4b\xa5\x2d\x75\x2c\xa8\x02\x80\x8e\x84\x22\xbe\xff\x98\x66\x57\x3c\x23\x02\xcb\x3a\xca\xf0\xfb\xdb\x8d\xac\x84\xad\xb4\xaf\x2e\x36\x0d\xff\x52\x59\x31\xef\x8f\x2b\x2b\x0d\x95\x8e\x68\x53\xfd\x41\xdf\x54\x18\xf4\x4d\xeb\x6f\x2a\xf9\x10\xb3\x28\x21\x43\xc8\xa6\xfb\x53\x94\x8b\x9d\x7d\x13\xff\x17\x7f\xa1\x21\x62\x53\xfe\x2b\xbe\x24\x69\x3a\x75\xa7\x8a\x9c\x7f\x3d\xd3\xff\xdc\xc4\x18\xb2\xea\x20\x66\x79\xde\x93\xaa\xf1\x2f\xf7\x5b\x98\x61\x22\x9d\xce\x62\x56\x48\xc5\xdd\x54\x98\xb0\x69\x65\x55\x65\x48\x92\x89\x81\x64\x47\x3a\x05\x0a\xdd\x21\x60\xa6\x17\x99\xbe\x86\x30\x58\x95\x36\xdb\x55\x58\xad\xb7\x46\x69\xb6\x27\x14\x17\x8d\x3d\xe6\xe6\x15\x14\x35\xbd\x9d\xc1\xaa\xba\x55\x58\x85\x35\xc0\x90\x1c\x6b\xb0\x7a\xbe\x8a\x16\x5c\xf1\xb3\x55\xa4\xef\xd2\x1b\x9e\xed\xb2\x1c\xe5\xa8\xd8\x90\xad\x4b\x27\x52\xf0\xd3\xfe\x67\x12\x06\xd6\xed\x96\xca\xb6\x22\x24\xa9\x8c\x36\x22\xeb\x6d\x0a\xd6\xb6\x71\xf0\xd2\x88\xf4\x3f\xd7\xc9\x7c\xb4\x4a\xa8\xad\x6e\x79\xf7\x5c\xfb\xc6\x36\xe6\x75\x6c\x1f\x3b\x10\x8e\x7b\xc4\xf0\x01\xc9\xed\x7d\x39\x28\xe8\x54\xeb\x81\x90\x06\x73\x44\xb3\xa1\xa5\x81\x2d\xad\xd1\x03\x0a\xe3\x81\xa0\x43\x6b\xa3\xb2\xa2\xde\x0d\xa9\xf5\x16\x2b\x0b\x0e\x66\x05\x12\x8a\xb9\x79\x58\xa4\xb7\x3a\xba\x12\x74\x06\x2e\x26\x0d\xcd\x64\xea\x2c\xa3\xf6\x07\xd2\xc4\x10\x98\x94\x2d\x64\x82\xc0\xd9\x8d\xf4\x3d\xac\xa3\xf7\x2a\xd4\x95\x49\x41\x59\xf3\xb1\xcd\xb9\x1e\x90\x31\x29\x68\xd9\x1f\x32\x00\xd8\x52\x5f\x99\x3f\xec\xec\xe0\x4b\x75\x1d\xad\xad\xfd\x8a\x9e\x2b\xf2\xb0\x0e\xe2\x90\x16\xb1\xb8\x81\xbe\xdd\x0d\x8a\x36\x21\x70\x11\xcb\x6d\x92\xe6\x05\x0c\xd2\xc9\x24\x4d\x40\x06\x1e\x26\x19\x60\x21\xfe\x9b\xa8\x88\x8c\x5c\x22\x22\xf1\x81\xfb\xf5\xf7\x26\xaa\x8b\x49\x24\xd0\x88\x1a\x2e\x8d\xbf\x86\xba\x48\xe0\xf2\x6d\x8e\x9d\x84\xc9\x48\x58\x6b\x65\xb5\xdb\xf0\x5e\xbd\x2c\xd7\x89\x84\x2a\xea\x98\xdf\xff\x2c\xf8\xbb\xb4\xec\xf0\x14\x2e\x65\x80\x44\xcc\x0d\xdb\x28\x10\x72\xe3\xe9\xd9\x6b\x93\xcc\xca\xe6\x2e\x8c\x8c\x09\x6a\x1a\x30\xb7\x3d\x65\xbb\x11\xff\x7b\x40\xc2\xa0\x01\x83\x38\x4d\x78\xa3\xb2\x42\x0f\x9a\x9c\xc0\x1d\x1d\x94\x4a\xbf\x08\x65\x00\x03\x06\xda\x8b\xd9\x7f\x17\xd8\xa8\xac\x0c\x39\x9f\x1a\x1b\x58\xc5\x3a\xa3\x31\xc0\x32\xf4\xc5\xcf\xa3\x62\xc6\x68\xbf\xd2\x96\x91\x74\x04\xaa\x7b\x41\x02\x99\x94\x4a\xd1\x40\xc2\x55\xd1\x82\x56\x42\xa8\x76\x25\xaa\x5b\xb4\x1c\xf2\xab\x68\x8a\x9c\x2f\x41\xc9\x28\xd9\x5c\x02\x11\xec\x0e\xdb\xd0\xdb\xa2\xf9\x35\x88\xe2\xaa\x41\xb3\xb3\xec\x03\x9d\x37\xc8\x30\x82\x19\x70\xd2\x09\xa7\x63\x48\x6d\xaa\xae\xa3\xa2\xc4\x8c\xae\x1e\x1c\x94\x33\xaf\x8f\x1f\xc3\x23\x75\xde\x32\x02\x4e\x46\xb4\x91\x23\xd6\x03\xc4\x01\x49\x14\x69\x7e\x95\xee\x20\xa3\x91\x47\x23\xba\xc5\x49\x13\x6e\x62\x1a\x44\x39\xe6\xf2\xe7\x43\x89\x8d\x25\x60\x23\xbf\x07\xa5\xf2\x35\x9b\x91\xec\x2a\xb4\xd6\x22\x6d\x9d\x6d\xb7\xe1\x48\x74\x88\x49\x99\x64\xf2\x90\xa4\x29\x76\xbe\xb6\x11\xde\x74\x39\xa5\x84\x4a\xcd\xdc\xae\x98\x09\x13\x4b\xb3\xae\x5d\x42\xea\xda\x98\x48\x49\x79\x69\xee\x30\xb4\x9d\x32\x3a\xfa\xe2\xc8\xbe\xfa\x15\x7a\x6e\x36\xd0\x3c\xa2\x64\x0d\xad\x66\xf9\x02\x44\x36\x30\x65\x15\x69\x47\xf8\x20\xcd\xbe\x09\xbf\xe6\x59\x93\x53\xbe\x8f\x38\x4d\xa7\x46\xba\x58\xcc\x89\xd0\xb4\xd0\x30\xcf\x4b\x49\x6e\x28\x98\xc7\x68\x2b\xe3\xc6\xa2\x34\xe1\xd9\x25\xde\xea\x0a\x69\x21\x07\x45\x17\xad\x62\x15\xe6\xa6\x2b\x64\x25\x0c\xc3\x35\xbd\xa3\xc3\x89\x66\x16\x5b\xd2\x20\xb3\xa1\xeb\xa2\xb5\x98\x2d\x63\x8b\xdc\xea\xb1\x5a\xbd\x74\x9e\xb1\xdb\x98\x43\x8d\x0b\xc9\x98\xb2\x51\x7b\x11\x0c\xb6\x2d\x84\x88\x40\xca\xeb\x25\xcf\x06\x75\x78\x8d\x85\xf4\xe0\x28\x78\x16\x9a\x07\xc3\x1e\x96\x03\x89\x56\xb3\xa1\xab\x20\xec\xa1\x98\x24\x40\x03\x84\x7a\x84\xaf\xa8\x29\x45\x19\x46\xb6\xa7\xfa\x2e\x37\x18\xea\xa8\x0b\x38\x41\x6b\x25\x00\xe5\xc4\x6e\x55\x2c\xf3\x64\x52\x2d\xa0\x2f\xad\x4b\x10\xe0\x6e\xd7\xe2\x87\x00\x1e\x39\x4a\x8c\xa6\x6d\x09\x13\x7a\x44\x14\xda\x6c\x90\x7b\xe4\x69\x8c\x83\xbe\xbd\x52\xeb\xc0\x0f\x9d\x26\xb4\x53\xe5\x14\xb3\x54\x42\x6a\xf4\x56\x7b\x02\x9e\x77\x0b\x1e\x71\x64\xbe\xb0\xda\xa0\x0e\xbd\x4e\xb7\x0b\x3f\x60\x9a\x7d\x78\xf9\xf3\xcf\xc3\x31\xfe\xf9\xdf\x97\x13\x16\xc5\xe2\xc8\xf3\xaa\xf2\x04\xde\x1f\x9c\xc2\x3b\xf2\x49\x1b\xe2\xd1\x86\x8e\x58\xef\xa2\x7e\xc6\xb2\x3b\xf5\x96\xac\xb5\xc4\xa9\x27\xe0\x10\x63\x39\xa6\x18\xaf\x18\xe9\xe2\x24\x7d\x8b\xac\x14\x1f\xe2\xfb\x56\xc5\x3d\xe3\x7d\xb3\xf3\x9b\x02\x84\x67\x38\x78\x9b\x0e\x08\xc6\x66\xbb\xcd\xa6\x51\x8b\x1a\x21\x98\x01\x2b\xf8\x65\x9a\xdd\xe9\x16\x4d\x9a\xb5\xb6\x3c\xfa\xb9\xec\xf7\x4b\xa5\xb2\xa2\xae\xed\x1d\xf3\xdc\x2c\x19\x48\xce\xc1\x63\xd7\x6c\x1a\xe3\x13\xc1\x33\x25\x5c\x98\xcc\x76\xc7\x86\x43\x2b\xe8\x9b\x7e\x0d\x46\xa6\xd5\x11\x2e\x0d\x6d\x62\x5a\x39\x83\xd5\x8c\xe7\x69\x7c\xcd\x57\x1b\xb0\x3a\x4c\x13\xf1\xaf\x7f\x0f\x5f\x5b\xc5\x8b\x49\xb2\x2d\xad\xd6\x1b\xba\xcd\x70\x15\xf0\xa6\x52\xc2\xc1\x9d\xac\x01\xab\x23\x16\xc5\x4b\x82\xf9\x4c\x89\xda\x2d\x30\x49\x5a\x44\xa3\x3b\x01\x66\x9a\xa5\x97\x19\xcf\xf3\x20\x28\x05\x05\xce\x45\x43\x6a\xae\xa2\x7b\xad\x4e\x49\x5c\xaf\xe2\xd7\x69\x96\x4e\xa2\x9c\xab\x9b\x29\xaa\x15\x30\x3c\x68\xeb\x42\x81\x19\x43\x57\xb4\xbd\x63\x85\xf2\x6e\x84\x9a\x68\x1e\x10\x94\x73\xee\x33\x5a\x82\x08\xa1\x1b\x0e\xdf\xa6\xa2\x3a\x29\xc6\x3c\xb1\xe7\xbb\xfd\x04\x46\xc9\x5b\x94\x41\xa3\x64\x9f\x45\x42\x85\x4f\x3e\x48\x92\xc0\x93\xb6\x91\x22\xf4\x24\xcd\xd9\x47\xdd\xbe\x24\xf5\x14\x57\x99\xa3\x30\x24\xfc\x06\xbf\xce\xbb\xec\x22\x2e\xb3\x2d\xfd\x51\x83\x3e\xfa\x17\x5e\x4c\x65\x25\xc5\x52\xba\x86\xd5\x66\x6d\x7c\x30\x37\x4a\x68\x7b\xb7\x8d\xf5\x8a\x7e\x67\x20\x08\x08\x5f\x40\x50\x0d\xbe\x80\x9a\x7a\x38\xa7\xec\x2b\x69\x76\xc3\x32\xdc\x81\x99\xcc\x85\x52\xa4\x1a\x79\x05\xcf\x00\x23\x1c\xba\xe7\x70\x6e\xed\x93\xfb\xae\xa5\xfb\xb5\xc1\xae\x34\xad\x6a\x50\x44\x3f\xbc\x2f\xd7\xcf\xf8\xe6\xd9\xca\xcc\x36\xaa\x5b\xd9\xdb\x99\xe9\x5d\x15\xb7\x14\x63\x7a\xb7\x77\x2b\x7e\x85\x5a\xdd\x2a\x5c\x91\xac\xa6\x06\xdf\x92\x4b\x11\xdc\x4a\xc4\x7d\x56\x25\x3a\xa5\x39\x75\x14\x91\xad\x7a\xb4\xf8\x9c\x21\x79\xdb\xb5\xf8\x4f\x55\x3f\x53\xb3\xbe\x06\xab\x3f\x46\xc5\x78\x55\xd0\x1b\x7d\x5b\x85\x4a\xa4\xa6\x03\x5e\x1b\x36\xdb\x94\xd4\x3b\x33\x44\x3a\x77\x7b\xab\x98\x7e\x37\x2b\x73\x3b\x3c\x57\x45\xba\xad\xbe\x57\x5c\xa1\xa5\x40\x69\x87\x65\x91\xa1\xa4\xb3\xe4\xda\x6d\xf8\x9e\x17\xc0\x40\xcd\x04\x1d\x8c\xa3\xdc\x6c\x12\xb2\xda\x01\xfa\xd2\xa2\x06\x9d\xa5\xd7\xd1\x10\x03\x04\x8e\xb9\x6e\xc8\xe8\x2e\x54\x1c\x0b\x54\x2e\x39\x51\x6c\xb4\x54\x25\x85\xec\x15\x9e\x9a\x33\xf5\xca\x4a\xc0\x21\xfa\xb5\xaf\x98\xe0\xab\x56\xc3\x35\x9b\xea\x6f\x5b\x63\xc0\x91\x69\xd2\x4b\xd7\x4b\x1c\xc3\xdf\x85\x0a\x39\x8d\xa6\x34\x4c\x21\x46\x65\xb2\xbf\x8a\xc6\xae\x85\xc5\xdb\x0a\x6e\x4b\xc8\x24\xd5\x7c\x47\x6e\x2b\x4d\xb4\x28\x8c\xa2\x01\x88\x33\x4f\x3a\xcc\x2b\x5f\x2d\x33\x54\x28\x22\x23\x2d\x7a\x4a\x5a\xa0\xf0\xd5\x06\x45\x59\xfa\x54\xe9\xe5\xed\xb6\x42\x6d\x81\xc0\x90\x57\xba\xd2\x35\x43\xd7\x37\x32\xc1\xaa\xa1\xc1\xca\x83\x9e\xde\x18\x95\x07\x86\x46\xc6\xbe\x42\x12\x2d\x6b\x65\xa9\x21\x0e\x98\x72\x07\x12\xfc\x4d\x3b\x24\x7c\x01\xb5\xcb\x29\xae\x55\x95\x2c\xf0\xe6\xd8\x71\x26\xab\x63\x3c\x09\x6c\x8c\x70\xe8\xe7\xb9\xba\xca\xd9\xd2\x03\xfe\x44\xf7\xd7\xe9\xe0\x4a\x72\xb6\xa4\xbf\x10\xb5\xff\x82\x2e\x9c\x23\x71\x55\x3b\x53\xda\x53\x25\xa2\xa9\x5c\x82\xf7\x8a\x1a\x46\x92\x2a\xe9\xa2\x46\x01\x5f\x40\xca\x08\x4d\xc6\x51\x24\xaf\xdd\x3c\xf1\xdb\x39\x77\xeb\x6c\xcd\xa9\x64\x84\x87\x5d\x5b\x7c\x12\x2d\xee\xeb\x8a\x01\xdf\xb3\x2b\xb2\x12\x6b\xee\xd6\x0b\xd7\xe6\x60\xb9\xd2\x4d\x2d\x0d\x00\x6f\x4f\xe8\x8a\x04\x95\x29\x7c\x8e\x71\xa7\x8e\xa3\x96\x7e\x85\x3b\x82\x34\x19\x29\x30\x0d\x07\xa0\x65\x61\x8b\x63\x64\xc5\x47\xc6\x2a\xa3\x2a\x8a\x83\x73\x83\x54\x77\xb5\xf5\x62\xfa\x48\xb1\x63\xdd\x78\xbb\x7d\x3e\xeb\xa7\x62\x83\x13\x9c\xd1\x7e\x02\x0d\x68\xb5\x5a\x0d\xfb\xeb\xa1\xd9\xf2\x75\x58\x00\x5c\x32\x72\x86\xfe\x41\x8e\x9f\xdb\x60\x34\x62\x39\x02\x6b\xa7\xc2\x06\xda\x56\xe3\xb4\xd4\xf6\x1a\xc9\x02\x94\x1b\x6c\x96\xa0\x17\xf1\x2c\x11\x92\x22\xe6\x82\x89\x2d\x9c\x72\xea\x7f\x22\xd3\x3c\x6b\x93\xad\x38\xed\x74\xf1\x14\xea\x8c\x2b\xbc\x1d\x5a\x35\x9c\x1d\xf1\xb5\x82\xb6\x29\x06\x6a\x61\x45\x2a\xb8\x26\x69\x4b\x08\x67\x97\x08\x83\x34\xc9\xa5\xff\x33\x5a\x41\x18\xe4\x51\x72\x19\x73\xdd\x46\xc6\x66\x9f\xc9\xfc\x07\x2d\x4f\x66\x5a\x43\xc2\x91\xbc\x76\x86\xb1\x59\xd2\xa7\xea\x1a\xbf\x8f\xd3\xa1\xa8\x62\xe2\x09\x08\x49\x9b\x16\x63\xbd\x8e\x58\x32\x34\xb2\xca\x9c\x18\x67\xd8\x4e\x10\xc5\x71\xee\x8b\x1a\xea\x0e\x33\x6f\x28\xaf\x62\xef\x9e\xcc\x54\x26\xaf\x50\xc7\x06\x21\x1a\xa2\xce\x65\x59\x74\xb4\x93\xb0\x2a\x08\x65\xde\x81\xd7\x0b\xf9\x08\x36\xa9\xb7\x2d\x65\x3c\xa8\x29\xec\x04\xc1\xd4\xf8\xfe\xe1\x22\x6c\x69\xcb\x24\x42\xe8\xea\xb1\x3c\x40\xf7\xce\x94\x6c\xa3\x35\x68\x36\xcd\xb4\xd4\x43\x40\x25\x89\x1f\x82\x4a\x62\x52\x5d\x67\xca\x2d\xc2\xc2\xb7\xa1\xf1\xdf\xd5\x30\x24\x68\xf5\x41\x09\x14\xfb\xa4\x85\x1a\xa9\x5e\xe6\xf6\x22\xd9\x82\x22\xe3\xac\xa0\x54\xeb\x39\x60\x38\x55\xda\x1b\x94\xe8\xb1\xe8\x2e\xc7\xe5\x91\xd0\x0e\x14\xa2\x6a\xd3\x80\x7c\x5c\x17\x54\xf5\x06\xb1\xa0\xe6\x62\x53\x9f\xd6\x72\xad\x25\x47\xbc\x34\x4f\xdf\xf5\x2b\x86\x34\xdf\xf9\xb5\xb4\xfa\x2b\x35\x5f\xb3\x56\x70\x81\x78\xc3\x6a\x78\xb2\xa0\xae\x95\x5e\xa9\x13\x5b\xfc\xe2\xe8\xc4\x96\x3a\xec\xf5\x50\xe6\x87\x12\x87\xd7\x43\xee\x94\x16\xc7\xce\xb9\x9e\x71\x3c\xcb\x6e\x58\x84\xd9\x2b\xd2\x44\x6c\x4b\x68\x4e\xd6\x83\xb1\x04\x9f\x62\x9a\x47\xf6\x72\xf8\xa5\x32\x77\x25\x3c\x44\x1f\xbd\x99\x79\xbb\x97\xa3\x33\xdf\xd3\x85\xa7\x7b\xdb\x6e\xdb\x62\x36\x7b\xbd\xfb\xf3\x46\xef\xf9\x32\xa6\x26\xe3\x6c\x59\xbb\x8c\xd3\x3e\x8b\xe5\x35\x3c\x3c\x81\x77\xe9\x90\xe5\x63\xa8\xed\xce\xf2\x22\x9d\xc0\x9b\x59\x14\x0f\xeb\xe6\xe9\x63\x8c\xc5\x68\x54\xc1\xb7\x8f\x58\xbe\x09\x17\xf4\x9d\x0c\x48\x2c\x8b\x7e\xe6\x20\x7b\xdb\x5e\x4d\xa6\x93\x55\x68\xa6\xd0\x6a\x5f\xe0\x4b\x1b\x9d\xfd\xfe\x68\xca\x93\xbf\x9d\xc0\x7e\x3a\x4b\x86\x8c\x5c\x3f\x93\x21\x2d\x52\x94\x1e\x98\xdc\x3f\xcd\x72\xd3\x7b\x3a\xe5\xc9\xe7\x7c\xd4\x4a\xb3\x4b\xea\xfe\x98\xc7\x98\x7e\x16\x4d\x7b\x19\x1a\xbe\xd4\x63\xcc\x10\xca\xb2\x8c\x30\xc7\x76\x69\x02\x1f\x45\xd3\x5c\xfa\x02\x40\xb7\xb5\xd1\x7a\x4a\x8d\x37\xdb\x68\x39\xa7\xb2\xcf\xf8\xde\xb3\xfd\xee\x60\x77\xef\xf0\x64\xef\x95\x3b\x92\xbf\xf1\x8c\x4f\xee\x60\x27\x1f\x5f\xf1\x84\xe5\x0d\x78\x9b\x0e\x50\x52\xef\xc6\xe9\x8c\x1c\xec\x0f\x92\x6b\x9e\x17\xd1\x25\xc3\xfc\xb2\xc7\x1c\xe3\x74\x64\x39\x3c\x86\xbd\x61\x24\x46\x29\x1f\x8e\x3e\x79\x02\x1f\x05\x62\x2c\xa7\x04\x2c\x98\x4e\x26\x05\x9e\x90\xdf\x3a\xcb\x2e\xb9\xca\x17\x43\xd9\x66\x18\x79\xa6\x8a\xd6\x42\x2d\x79\xb7\x73\xfc\xfd\xde\xa7\x9d\xe3\xe3\x9d\x7f\x7e\x3a\x39\xf8\x7f\x7b\xb0\x0d\xbd\x4e\x67\xcb\x82\x5c\xa4\x94\x9c\xb5\x19\xd1\xee\x78\xa1\xcd\xa2\x17\x30\x16\x93\x48\xf2\x5a\x43\xfc\x61\xe7\xe4\x87\x4f\x1f\x0f\xdf\xee\xed\x1f\x1c\xee\xbd\x85\x6d\xa8\x7e\xfa\x44\x34\xfd\x24\xaa\x7f\xd2\xcd\x3f\x7d\xaa\x7a\xfd\x50\x3e\x10\x18\xa7\x85\x95\x43\xb5\x7f\x67\xa5\x4b\x25\x57\xee\x9b\x48\x2c\x36\xa1\x25\x4c\x19\xfa\x25\x4f\xa2\x38\x8e\x28\xf9\x8c\x85\xc8\xd1\xe9\xa7\xdd\xa3\x8f\x87\xa7\xb0\x0d\x1b\x9d\x0e\x45\xd9\x17\x1f\x4f\x3e\xec\x1c\xc2\x36\x74\xd7\xb7\x5c\x02\x66\x62\x21\xf1\x64\xc0\xc9\xff\xff\x9a\x65\xf8\x38\xe8\x82\x9c\x19\x2e\x50\x4b\x29\x98\xd8\x77\x55\x17\xef\x77\xfe\xe7\xd3\xc9\xce\xfe\xde\xa7\x83\xc3\xd3\xbd\xef\xf7\x8e\x61\x1b\xbe\xeb\x74\x5e\x74\xbf\xfb\xae\xf7\xfc\xd9\x8b\x67\x9d\xef\xbe\xeb\xca\x3e\x2e\xc8\x30\xfe\x5f\xca\x65\xe0\x42\xac\xea\x59\x5c\x58\x9d\x6a\xa8\x2c\xbb\xcc\x4f\x99\x50\xcf\xac\xa7\x93\x72\x2b\x3f\xaf\xd2\x38\x70\x4e\x4b\x95\xf0\x7d\xa5\xac\x90\xdf\x25\x03\xbf\x82\xf8\xa6\xe4\xbc\xaa\xd8\x4f\xd3\xd8\xab\x27\xbd\x38\x54\x0d\x21\x5b\xbd\x1a\x6f\x59\xc1\x55\x31\x26\xc9\xf3\xca\x31\x0e\x8d\xaa\x20\xe6\xd2\x2b\xf7\x91\xb8\xe4\x89\x57\xe3\x7b\xb1\x47\xb3\x22\xcd\xfc\xaa\x13\x36\xf5\xaa\xbe\x67\x53\x55\x48\x9c\xe2\x95\xd3\xfc\x99\x2a\xb1\x3f\xde\xc3\x59\x1c\xab\x62\xfa\xe4\x55\xa0\xc9\x53\x55\xa6\x59\x7a\xeb\xd3\xfe\x83\xf8\xa6\x2a\x64\xfc\x92\xdf\xfa\x58\x92\xc3\x8b\xaa\x92\x73\xbf\x8f\x13\xae\x3b\xa0\x7b\x4a\xbf\x1c\x3f\xaa\x2a\x7a\x15\x79\xb5\x3e\xaa\xef\xaa\xe2\x0d\x67\x57\xef\x4b\x24\xfb\x91\xbe\x9e\x57\xa5\xa3\x0f\xb2\x13\x3d\x2f\x0e\x31\x15\x95\x58\xfc\xc0\xfe\x11\xf1\x9b\x32\x4f\xe0\x67\x3d\xed\x71\xca\x8a\xa7\x3d\x7f\xe6\xe9\xab\xc3\xab\x58\x73\xfd\x59\xa8\xe6\xfa\x33\xa7\x66\x94\x14\x1b\x5e\xb5\x83\xa4\xd8\xf0\xeb\x74\xd7\xcb\x95\xba\xeb\x7e\xad\x12\x6e\x07\x89\x8f\xd9\x2c\xd0\xe1\xc7\xc8\xef\x11\x6b\xed\xc6\x6c\x32\x2d\xcf\x87\x55\x54\x6a\x53\x42\xf3\x63\x54\xc2\x73\x16\x42\xf4\x63\x64\x61\x2a\xef\x4b\xc0\xc8\xd1\x09\x2b\x06\x63\xb8\x20\x8e\xc3\x5d\xf4\x2c\xbf\x4b\x0a\x76\x0b\x83\x31\xcb\xd8\x40\xec\x24\xe7\x35\xb9\x67\xf1\xc1\x84\x35\xe5\x2b\x2f\x7a\x21\x8a\x3b\x17\x7e\xee\xad\xf7\xda\x2f\x5a\x9d\xf6\x7f\xe5\x7c\xd0\x9c\xb2\x42\x54\xca\xeb\xad\x8a\x92\x54\x19\xa7\x3e\x76\xc7\x2c\x83\x6d\x68\x9f\xfd\xf4\xd3\xbf\xfe\xd2\x7a\xb2\xf6\xba\x56\x3f\xfb\xe9\xfc\x97\xfb\x2f\xe7\xed\xcb\x79\x32\x1e\x3d\x59\xf4\xa3\xfc\x1c\x6a\x14\xe6\xa0\xde\x32\xc0\x0f\xf2\x1f\xd2\xbc\xd8\x2d\x30\x15\x6a\xfb\x5f\x3f\xa9\xe1\xb7\xd6\x5e\xef\x9a\xa6\x3f\x9d\xff\xa5\x1d\xee\x64\x96\xc8\xd4\x6e\x62\x78\x97\x3c\xf3\xb7\x2a\xd1\x83\x20\x25\x42\xaf\xbd\xde\xec\x7c\x39\xeb\x36\xbf\x3b\xff\x69\xf8\xa4\x5e\x02\x19\x0d\x79\x82\x66\x94\x0b\x25\xc2\x4f\xd9\xe5\x85\x3a\xac\xa4\x23\x74\x15\x18\xca\x6b\x60\xdd\x03\x7e\xdc\x91\xb2\x3a\x97\xd6\x3d\xf7\xe3\x99\x59\x27\xe7\xf2\xdd\xa2\x5f\x88\x4b\xe3\x1c\xb6\xfd\x96\x92\x39\x03\xcd\x14\x73\x85\x1b\xcd\xeb\x6c\x66\x00\xfa\xad\x3c\x16\x9f\xd3\x78\x5e\x9f\x33\xa7\x53\xf4\x78\xf1\x6a\xc8\x3d\x2f\x00\x57\xed\x74\x01\xb0\xae\xd4\x0a\xb4\x95\x7b\x5b\xa0\xa9\x25\xc3\x02\xed\xe4\x8e\x17\x68\xa7\x36\xbb\xd0\x54\xd1\x36\x17\x68\x44\x5b\x56\xa0\x89\xde\xae\x02\x8d\xf4\x46\x14\x68\xa7\x37\x98\x40\x3b\xda\x59\x02\x8d\xf4\xae\x12\x68\x64\x76\x89\x73\xcb\xf3\x47\xf0\xff\x5b\x5a\x4a\xa3\x8c\x73\x93\x26\xff\x82\x8e\x01\x17\xf4\x5c\xe0\x30\x1d\x0a\x5d\x58\x33\xbd\xa8\xfb\x3d\x56\x30\xef\x70\x2f\xe5\x6f\x37\x47\x99\xfc\xaa\xff\x6a\xc9\x30\x05\xdb\xdb\xca\x37\xd5\x94\x2d\xc4\x27\xe7\xf1\xe8\xc2\x41\xe0\x84\xde\xb6\xc9\xee\xe9\xa5\x9b\xdb\x39\x7e\x93\xff\x86\x3b\x26\xb7\x65\x47\x47\x64\x46\x61\x53\x77\x06\x72\x10\xd2\x2b\x52\xcb\x96\x34\xc5\x88\x86\x86\x16\x5f\xbe\x18\xc4\xbe\x7c\xd1\x2a\x50\xad\x6a\x5d\x30\x56\xeb\xe2\xf4\xb6\x60\xa0\xf2\x98\xe4\x8e\x75\x4f\x5f\xc0\xeb\xb4\x8d\xf2\x83\x3b\x62\xf5\xf9\xf1\x63\x78\xa4\xa2\x8d\x25\xe9\x90\x9f\xde\x4d\xb9\x55\xbe\x10\x01\x3a\x1c\xba\xfd\xbf\xc7\x6f\x72\xb4\x7b\xa6\x13\x89\xcd\x44\x16\xbb\xc8\xc8\xaf\x02\x17\xe9\x47\x60\xa3\x42\x9f\x5c\x4c\xf0\xfe\x06\xbd\x8f\x33\xd8\x45\x27\xc8\xbf\x9d\x90\x37\x15\xc6\xba\xbd\x70\xdd\x11\x0c\x8a\xf4\xdd\x10\xc9\x42\xf9\xf1\x63\xeb\x97\x71\x64\xd8\x76\x86\xb2\x90\x1e\xd3\x2c\x1d\xf0\x3c\x5f\xb0\x14\x3e\x50\x0d\xed\x2f\x61\x11\xc8\x70\x47\x4b\xc2\xf1\x76\x1d\x36\xc0\xa6\x32\xcc\xaf\x84\x2e\x6d\xd2\xa6\x17\x41\xb8\x8f\x45\x24\x96\x9b\x7b\xcb\x01\x50\x64\x77\x26\xe1\xe8\xc7\x9c\xc3\xc5\xac\x88\x62\xf4\x55\x14\x38\xa7\x06\x68\xb7\xb3\xd6\xd2\x91\x99\xb1\x7c\x11\xa9\xa4\xad\x20\xfc\xb5\x56\x15\x9d\x54\xeb\xd4\x8d\x17\xcc\x39\x2f\x05\x61\x96\xb5\xc0\xc9\x7f\xf9\x8e\x5f\xb2\xc1\x9d\xa6\x6f\xab\x1f\xa1\x87\x80\x02\xed\xe2\xfe\x12\xba\x9d\x96\x13\xc3\xd5\xa2\xbb\x44\xf1\x83\x0b\x68\xce\x67\x05\x9f\x02\x6d\x0f\x50\x91\xaa\x71\xf2\x9f\xaf\xd5\x69\x6d\x7a\xf3\x10\x3a\xc2\x89\x19\x39\xc8\x4f\xb5\x90\x85\x6d\x33\x49\x8f\x1f\xeb\xbf\x5b\x91\x55\xc7\xe8\x71\x3b\x6a\xc2\x59\x2c\xd5\xb2\x6b\x94\x36\x17\x4a\x66\xfc\x17\xde\x6c\x5f\x50\xea\x3e\x63\xbc\x8e\x92\xeb\xf4\x8a\xe7\x70\x21\xbe\xa0\xde\xa7\x1f\x9a\x5c\x88\x9a\x17\xa0\x06\x9f\x8e\xe8\xcb\x4e\x76\x79\xa1\x7d\x2a\x8d\xbd\x58\x14\x8b\x1d\xf9\x42\xc5\xec\xf8\xef\x69\x16\x5d\xb3\x82\xd3\xdf\x2c\x63\x13\xf8\x45\x21\x73\x4f\x37\x31\xa7\x63\xcb\x8c\x2e\x14\x26\x44\xa6\x65\xb7\x78\x72\x0f\xb2\x53\xac\x1d\xc0\x09\x11\x77\xda\x20\x69\xee\xc9\x9b\xfa\xd4\x41\x52\xf7\x21\x9b\xe1\x60\xa9\xad\x0a\x56\x21\x7a\x3c\x96\x7f\x8b\x11\xca\x33\xb7\xd3\x53\xdb\x0a\x3f\x8d\xfe\x02\xe2\x67\x43\x21\x2a\x13\xd9\x21\xcb\x5a\xe9\x0f\xfd\xcc\x87\x32\xef\xa1\x1d\x5b\xd8\x04\xa0\xdd\xc9\x2e\xeb\x56\x72\xf1\xee\xfc\x6a\xd4\x9b\x49\x63\x28\x93\x18\x3e\x5c\x5f\xfe\xd1\x75\x1a\x3e\xfd\x9a\x86\xf2\x0f\x99\x73\xf0\xde\x8d\x93\x6c\x25\xf8\x33\x34\x91\xe1\x70\x90\x3f\x4e\x95\x9b\x67\x34\x99\x52\xf2\x5f\xa6\xde\x8c\x5f\x7c\x6a\x61\xf8\x17\x9a\x9f\x74\xa6\xc3\xce\xe2\x0a\x8e\x0a\x71\xca\xe7\xf8\x1e\x37\x2b\xc6\x2c\x19\xe6\x02\x5e\x9a\xc1\x84\xdd\x4a\xcb\x95\x34\x75\x63\xc8\x8f\x7c\x11\x47\x92\x3a\x75\x0f\x09\xe2\x63\xac\x46\xd8\xbf\xcd\x2f\xaa\x57\x97\xd5\x0c\x43\x6b\xac\x1c\xa6\xa6\xd6\x43\x10\x6b\x9e\x6a\xa0\x5b\x9c\xc3\x70\x92\x5d\x6d\xa6\x93\xe6\xb7\x91\xe4\xbe\xdc\x63\x3a\x41\xb6\x53\x81\x60\x2d\x69\xe8\x8e\x4d\x20\x4f\xf5\xfa\xb6\xd9\x6d\x68\xa9\x89\x4c\xbc\x6d\xc5\x41\xaf\x00\xe0\x73\x5d\xa8\xad\xad\xc9\xa7\xac\x90\x98\xb0\xa7\xa2\xfe\x19\x7e\x17\xda\x9d\xea\xa3\x46\x01\xdf\x4b\xb1\xc6\x45\xed\xe5\xe7\x76\x96\xb0\xec\x2e\x3c\xb7\x79\x91\xe2\x4d\xfc\x84\x17\x4c\xe8\xdb\xbf\x41\x98\x0c\xd8\xd4\x5a\xf9\xa3\x34\xf3\xc8\x6e\x9a\xdb\x94\x4f\xf8\x8d\x68\x29\xce\x65\x0a\x58\x80\xf8\x1f\xc5\x08\x70\xd5\x3b\xc1\xcc\xf4\x46\x2a\x83\x72\xba\x31\xc2\x67\xc9\x40\x16\x98\x90\xe0\x92\x5e\xdf\xf3\x82\xba\xa7\xfb\x3d\x56\xc0\xc5\x15\xbf\xbb\x40\x7a\x91\xfe\xb3\x50\xac\x92\xfa\x79\x0f\xf2\x00\x70\x8e\xb4\x90\x07\xdf\x22\x05\xf2\x52\xb4\x1b\x90\x5e\x7f\x8f\xb1\xc0\x45\x5d\xf1\xaf\x8c\xbe\x32\x95\xe1\xbf\x45\xc3\x4b\x5e\x2c\x16\x8e\xba\x32\xe2\xed\x11\xea\x92\x17\x78\xff\x50\x53\x6f\x86\xae\xf8\x9d\x1f\x18\x90\x14\x68\xe5\x0a\x63\xbc\x67\x37\xd5\xb3\x8d\x2b\x7e\x77\x6e\x53\x8a\xa2\x68\x09\xa5\x1a\xb9\xc8\x9a\xf1\x31\x2b\xbc\xdd\x8c\xb6\x32\x4c\x8a\xa8\xdc\xe3\x8b\x8c\x25\xf9\x28\xcd\x26\x7c\xf8\x1b\x58\xeb\x26\x63\xd3\x39\x62\x40\x77\xe0\xec\x3c\xe6\xf3\xd2\x4c\x38\x87\xfb\xd2\x6b\x9e\xed\x64\x97\x6a\xc7\x51\x60\xc3\x6c\xc8\xb2\xcb\x10\x13\xea\x56\x58\xc1\xe5\x46\x52\x23\xf1\x4a\x7b\x16\xc5\x45\x33\x4a\xa4\x0b\x50\xd8\xea\x9c\xb1\x3b\x0c\x1c\x5e\x76\xcc\x35\x76\x5c\x55\x41\x8d\xd5\xaf\x43\x33\xad\x6a\xf9\xef\x0b\xc3\x66\x1a\x41\x86\x8c\xb3\x01\xbe\xc7\x18\xa4\x19\x6f\x7e\xce\x21\x1f\x47\x13\x83\x9c\xf8\xfa\xb7\xfc\x2d\x2b\x18\x6c\xe3\xd1\xea\xac\xfa\xe9\x93\xac\xfa\x29\x1f\xb3\x0c\xaf\x13\xce\x3d\xf8\xf6\x5d\xdc\x90\x0f\xd2\xc9\x34\x8a\xf9\x10\xf2\x74\x96\x0d\xf0\xf1\x94\xbe\x65\x30\x0a\xbb\x38\xc4\x9b\x07\x92\x7a\xc8\xf6\xcb\x48\xbb\x0b\x8a\x43\xa5\xde\x01\x08\x52\xa7\x37\x89\x5a\x4a\x91\x45\x5e\x37\x1e\xbf\x7e\x45\x47\xc0\xdd\xc2\x30\x95\xa4\xf3\x16\x4c\x58\x2e\x64\x00\x23\xe7\xca\x1c\x48\x3d\x34\x87\x1d\x96\x5f\x9d\x64\x83\xbf\x63\x9a\x2d\xff\x34\x80\xd9\x06\xa2\x21\x9a\xea\xfe\xd5\x3a\x5f\xfb\x4b\xbb\xc5\x6f\xf9\xa0\x66\x91\x17\x9f\x2c\xa8\x5f\x2d\xcc\xef\x50\xfe\xd4\x3a\xd8\xfb\xf4\xe1\xf8\xe8\xf4\x48\x1c\x64\xab\x55\x3b\xe9\xab\x00\xff\x1a\x6a\xd5\x93\xbb\x49\x3f\x8d\xf1\x21\xc0\xa7\x6e\xab\x0a\x6b\xa2\xa4\x0e\x9b\x50\xad\x6e\x19\x55\xda\x31\x5b\x5a\xd3\x85\x36\x4b\xc7\xd2\xf6\xf5\xf6\xca\xb4\xfc\xb8\x95\x44\x65\x1d\x35\x8c\x91\xb2\x06\x6a\x6b\x26\x51\x92\x78\xd6\xe2\x01\x7b\xa2\xe6\x70\x41\x94\x8c\x64\x40\x38\x79\xcf\x73\x01\x4e\xdc\x55\xd9\x81\x4c\xdb\x51\xa4\x99\xc3\x60\xa7\xce\x33\x52\x02\x50\x0f\x33\x01\xc6\x89\x90\x6b\x38\x2a\xcd\x7d\xc6\x0f\xf2\x43\x3a\x2d\x6c\xcb\xfb\x86\x5a\xf5\x5f\x94\xdd\xbe\xdc\x91\xcb\x74\xf5\x56\xc6\xa7\x31\x1b\xf0\x9a\x6d\xd4\x6d\x40\xf5\xa7\x9f\xfe\xf2\x18\x93\x01\xe8\x0a\x6d\xb7\xe5\x17\xcd\x65\xf5\xd6\x93\xd7\xb5\xd7\xdb\x3f\xfd\xf4\x53\xad\xfe\x05\x17\x43\x6b\x4d\x7e\x38\xaf\xb7\x2f\x1b\x50\xfd\x4b\xb7\xf5\xe4\x75\x15\x33\xf7\xff\xa5\x5a\x51\x83\x7c\xa3\xa4\x13\xed\x98\x01\xe1\xa4\x62\xbb\x7a\x47\xe8\xd7\x28\x0b\x5a\xb2\xd4\xce\x06\x8d\xc2\x88\x78\x50\x4a\x8c\x16\xfd\xa2\x12\x63\xc3\x57\xa5\xe6\x8b\xbc\x3f\x8b\xe3\x74\xf0\x31\xc9\xd9\x48\x10\x53\xf6\xf0\x5a\xfe\xd1\xb2\x4b\x4b\xdd\x5e\x72\xe2\x16\xf9\x6e\x5a\x49\x79\x29\x0c\xed\xd2\xa3\x51\x43\xca\xc8\xba\x2d\x3e\x65\x74\x49\x2d\x3f\xff\xff\xec\xbd\x6b\x7b\x1b\x37\x92\x28\xfc\x5d\xbf\x02\xd6\x9e\x35\x49\x89\x17\x51\xbe\xc4\x91\x4c\xfb\xc8\xb6\x1c\x6b\x22\x4b\x79\x25\x79\x32\x13\x1d\xad\xdc\x24\x41\xa9\xe3\x66\x37\xd3\x68\x5a\xa6\x63\x9f\xdf\xfe\x3e\xa8\x2a\x00\x05\x74\xf3\x22\xdb\x93\xcd\x9c\x4d\x9e\xdd\xb1\xd8\x0d\x54\xe3\x52\x28\xd4\xbd\x30\x1d\x9d\x35\x3e\xc1\xaa\x1f\xa8\xfd\x74\x3a\x96\x39\x68\x21\x7c\x24\xad\x6a\x42\x86\xa5\x09\x05\x5e\x38\x62\x4f\xc9\x59\xe8\xfd\x6c\x7c\xe6\xce\x9c\xe8\x99\x15\x7c\x4a\x7f\xb4\xd9\x89\xe4\xf3\x26\x2b\x12\xfe\x62\x34\x6e\xbe\x36\xc2\xd0\x5a\xd1\xd3\xcb\x85\x48\x4b\x2b\xd4\x14\x35\x1f\x90\x29\xc8\x07\xf7\xdd\xef\x9f\x9b\xa2\x56\x6b\x8a\xdf\x3f\xd3\x53\x76\x19\x2e\x14\xda\x9f\xcd\xbd\x02\xc9\x8b\x38\x53\xd2\xc9\xcb\x2a\x1a\x4b\x8c\xf2\x89\x14\xf9\x18\x90\xd3\xc2\x5b\x43\x89\xdb\x3e\xdd\x38\xb0\x09\x88\x4b\xd8\x62\x73\x13\x97\x50\x05\xbb\x62\xe2\x7d\x48\x12\x3e\x8e\x3e\xf0\x37\x47\xd9\x8d\xe8\x81\xb5\xb5\x9d\x66\x37\x4b\x27\x02\x7c\x53\x94\x4b\xf1\x5e\xe6\x18\x6e\x54\x64\xa2\x2f\x43\x3a\xf1\x3a\x9a\x78\xeb\xae\x0f\x40\x53\xd4\x5e\x47\x93\x5a\x83\x7f\xdd\xe2\x61\xc5\x16\x21\x4e\xd6\x18\x19\x5f\x2c\x27\x60\xfb\x6a\x41\x21\x52\x2a\xbe\x4a\xe3\xf4\x4a\x83\x71\x77\xa7\x51\xb0\x62\xd7\xa1\xcd\xf3\xb0\x9c\x77\x06\x9a\x1f\x30\xce\x71\x7a\x2d\xf3\xb8\x00\x3d\x5d\xc0\xb8\x99\x6e\x21\xdb\xe6\x3e\x88\xeb\xa6\x67\x67\xd7\x24\xc4\xed\xa0\x66\x12\xe6\x5c\x28\xb3\x71\xac\x4a\x13\x55\x87\x81\x58\x6d\xdd\x03\x5f\x95\xd4\x63\x58\xb9\x89\xe7\xd4\xe7\x54\xa2\xd4\xdc\xab\x51\x89\x20\x79\xff\xf0\x56\xe4\x65\xa0\x4c\xa1\x2b\x92\x2f\xdd\x12\xec\xce\xeb\xca\x28\x00\x1b\x82\x91\x21\x91\x15\xf5\xee\x7a\xc7\xf2\x83\xef\xc8\x82\x2d\x65\x17\x68\x85\x3e\xe8\x5c\xa6\x45\x1e\x4b\x75\x61\x44\x9e\x16\xde\x1d\x93\x28\x46\xcf\x3e\xc8\x0b\x1a\xf0\xdb\xaf\x22\x75\x5d\xa7\x8e\x8b\x24\x6c\xeb\x70\x4b\x6d\x99\x54\xb3\x25\x76\xcc\x53\x9b\x83\xcc\xd4\xc8\x1f\x24\x32\xca\xb1\x34\x72\x49\x1a\xf7\xd5\x45\x50\x51\x23\x2d\x20\x88\x8e\xa0\x91\x7c\xbe\x4b\x05\x7d\x62\xd5\x56\xb2\x80\xc1\xce\x40\x4d\x83\x7f\x75\x8d\x7a\xc6\x09\x51\x98\xc6\x49\x41\x96\x19\xb7\x0e\x66\xe4\x36\x9f\x93\x5e\xee\xca\x75\x06\x22\x07\x43\x87\x9f\x63\x39\xee\xcb\xfc\x78\x04\x8b\xe5\x2f\x9f\x06\xf1\x1c\xe7\x88\xd4\x1c\x4a\xd4\x5d\x6a\xd1\xfe\xf2\x12\xd2\x6e\x30\xa2\xf1\xd4\xfb\x89\xc5\x52\x29\x16\xd4\xcc\x2f\xfe\x28\x31\x3b\x65\x79\x32\x28\x31\x47\xe9\x10\x24\x3e\x9c\xd2\x8a\x53\xc1\x62\xbb\x95\x73\x29\xd1\x09\xc0\xc1\x33\x02\x09\x96\xf3\x6c\x18\x8f\x56\x16\xaf\x71\x5c\xc0\xb9\xea\x61\x07\x54\x85\x42\xd6\x1d\x59\x79\x5b\xe4\x53\xf9\xd6\xa4\xe0\xc1\xfd\x67\xc5\xfa\x9b\xe8\x8b\xf8\x16\xac\x6f\xa1\x6a\x52\x0f\xf0\x05\xcc\xac\x6e\x25\x6f\xef\xb0\xc2\x92\x5e\x47\x58\xfd\x16\x12\x88\x62\xd1\x61\x6f\x93\x48\x02\xe7\x1b\xd0\xea\x19\x18\x54\xb8\x64\x77\x91\x2e\xc8\xea\x36\x9c\xe7\x17\x3a\x85\xe9\xfd\x9a\xbf\x27\x57\xb2\x58\xbc\x21\xab\x2c\xf2\x52\x05\x06\xae\x68\x95\xf6\x42\x8f\xf6\x07\x59\xf8\x4b\x37\x44\x69\xd2\x5b\x20\x53\xbe\x95\xe3\x2e\x3f\xb4\x76\xb9\x21\x5f\xa9\x59\xcd\x60\xc1\xc0\x7e\x14\xb8\xc1\xf9\xfa\x10\x46\x20\x59\xe5\xb2\x8a\xb2\x78\xfa\x33\xa4\x6b\x79\xea\xbe\xe9\xb3\x5e\x4c\x9f\x02\x1a\x52\x14\x12\xaa\x36\x48\xc8\x0f\xb1\x2a\xaa\x55\xa8\xb0\x4f\xd7\x91\xfa\xe2\x7d\xc2\xd5\x37\x22\xf1\xea\x67\x21\x4a\xa9\x6b\x38\xcc\xa5\xe7\xe1\x95\xc1\xf6\x65\x3b\x6a\xca\x1b\xfa\xf4\xa9\xee\xd6\xd3\x8b\xf6\xd6\x64\x6a\xf1\x5e\xf0\x35\x3f\xf5\x4e\x04\x8e\xbf\xc8\xc4\x5b\x58\xfa\x05\x47\x42\x7d\x8b\x23\xa1\xcc\x91\x70\x06\x16\x7c\x77\x56\xd9\x6a\x21\xc3\x03\xe3\x8f\xc1\xc3\x71\x50\x75\x7e\x4e\xf1\xfc\x90\x7f\xfe\xf2\x45\x77\x24\x66\x33\xa4\x4e\x78\x8d\x42\xa1\x56\xb7\x07\x3d\xff\xd4\x69\x12\xe6\xaa\x2e\xb1\xcd\x79\x1a\x1e\x2d\x1b\xda\x10\x14\x87\xc6\xc2\x1e\x7b\xc3\xa1\x55\x9d\xe8\x7d\xd1\xcb\xfc\xb6\xbd\xa6\xff\xe1\x55\x52\xf4\xb5\x26\x7a\xee\x8a\xdb\x0d\x5a\x9c\xd7\x90\x9e\xd6\x2e\xa8\x15\x12\xe3\xb0\x19\xd5\x31\x24\x7a\x53\x7a\x7b\x0d\x35\xb4\x08\x77\x4b\x6f\x95\xed\x7b\xaa\xfb\x96\x58\xa6\xd4\x64\xc0\x1f\x5c\xcb\x3f\x98\x73\x3a\x8c\x55\x01\x89\xd2\xff\xa7\xb2\x4f\x6e\xe5\x6f\xc5\x44\xd9\x75\xf3\x97\x33\x31\x8f\x17\xb1\x53\xe7\x17\x5f\xcf\x2a\xad\x32\xec\x2a\x86\x89\x8f\xfb\x4f\xc6\x09\xd9\xb5\xab\x62\x87\xaa\x88\x91\x41\x4b\x83\xa8\x91\x52\xd9\x00\x12\xb9\x1e\x8f\x3c\xa2\x6e\x6a\xbf\x11\xce\x6d\x85\xea\x76\xf4\x8a\xc2\x3b\x1b\x22\x62\x23\x55\x98\x34\xec\x60\xdf\x62\x25\xf0\x3d\x58\xbd\x9e\x6b\x6b\x80\x42\x07\x2a\x81\x1c\x14\x15\x43\x8d\x0c\xbf\x74\x4c\xe2\x5c\x6b\xac\x6b\xb5\x2c\x5e\x70\xba\x67\x72\x49\x85\xdc\x1a\xa3\x1b\x5f\xce\xb3\x7d\x31\x4e\x7c\x05\xe3\x66\x37\x7b\x25\xee\xed\x36\x3b\x4d\x4b\x66\x37\x3b\xe0\xd0\xe0\x5e\x42\x9a\x72\xde\xbd\x98\xc7\x64\xcd\x5f\xd7\xdb\xb3\x5a\xb7\x5d\xde\x3f\x96\xdf\xb2\x1b\xe1\x31\x5d\xb4\x88\xde\x3a\xfb\x3b\x82\xbc\x2b\x26\x1f\xae\x60\x9a\xd8\x02\x7e\x05\xeb\xf4\xc5\x98\xf9\x2d\xf9\x27\x36\x95\x39\x5c\x94\x5d\xc3\xdb\xb0\x52\x5f\x4d\xbd\x36\x37\x3d\x52\x61\x28\xcf\x54\x5d\xd7\xcf\xdd\x20\x2e\xca\x64\xc8\x3f\x02\xa6\xcc\x61\x20\xb4\x2c\x62\xb5\xec\xb6\xbc\x6d\xaf\xd9\xbf\x2b\x98\x2e\xff\x36\xdc\xad\x6a\xeb\xb1\x5f\xc1\x0d\x50\xd9\x81\x18\x31\x4e\x3f\xaa\xdb\x21\x4b\xc6\xd1\xbb\xba\x9d\xf2\xe1\x55\x73\x68\x62\x1c\x4d\x3c\xfe\x0c\xa3\xa7\xb2\xbc\xc4\x68\xfd\x51\x8c\xdb\xeb\x68\xf2\x3f\x9a\x6f\x1b\xa3\x71\x7f\x65\x86\xcd\xac\x97\xbf\x8a\x63\x7a\x5a\x62\xd7\x1c\x63\x56\xe6\xdf\x70\xce\x35\xcd\xcf\xd7\x76\x40\x99\xaa\xf9\x7d\x5c\xec\xda\x38\x9a\xd0\xc3\xfa\xeb\x68\x22\x3e\x7d\x72\x44\x8c\x54\xf0\xa6\xd4\xb8\xeb\x1a\x3a\x9a\xac\xc4\x01\x2e\x5c\x80\x2a\xd6\x8f\xad\xc0\x9f\x8c\xf3\x33\xbb\xb0\x50\x0f\x76\x25\x8b\xd7\xd1\xe4\x45\x54\x44\x54\xfc\x5d\x37\x73\xe4\xa3\x8e\xc4\xf2\x1b\x68\xc0\xf4\x51\xff\x72\x66\xea\x4b\x57\xf9\x2b\x78\x29\xb3\x7c\x1e\x2b\x45\xf3\xac\x5c\x35\x4d\x43\xeb\xa1\xbe\x83\xb3\x3f\x15\x4b\x70\x7b\xbe\xe7\x96\x2b\xf1\xc7\xb2\x3d\x66\xcd\xaa\xb8\x9e\xea\x35\x33\x4a\x8e\x4a\x76\x47\x2f\xd8\x57\xf0\x39\x5f\x8a\x34\xdf\x92\xcd\x71\x37\xdc\x1c\x2e\xc7\x2c\xd9\x12\x26\xa7\x72\xf5\xcc\x4d\x44\x64\x15\x38\x15\x64\x5c\x48\x55\x04\xb7\x03\x83\x5a\x52\x34\xd9\x2e\xfa\xf2\x82\x7f\x99\xb2\x69\x05\x9e\xc5\x2c\xf1\xdb\xf6\x9a\xf9\xb3\x82\x63\xf1\xee\x83\xdd\x8a\x96\x1e\xbf\xe2\xd3\xad\xaa\xe6\xc4\xad\xb0\x13\x5a\xd9\x0a\x79\x15\x86\x93\x95\xad\x94\x07\x6b\x0e\xa3\x82\xf5\x11\xfe\x54\xac\x0a\xd4\x61\x2b\xf3\x29\x55\x4c\x31\x19\x27\xcb\x5a\xa9\x50\x63\xc2\x30\xe8\xd6\xac\x03\xd6\x86\xb8\x0d\xf3\x00\x33\xf0\x27\x05\x40\x16\x1a\xcd\xf8\x3c\xbe\x5e\xe1\xb3\x64\xd0\x55\x17\xbe\x19\xf5\x9f\xec\xb6\x87\x99\xdc\x56\xc7\xe3\xdb\x67\xc2\x5b\x7f\x3e\x72\xac\x72\xe1\xe3\x91\xf9\xf2\x2b\xff\x8b\xd6\xf9\x2b\xee\x7b\x18\x6f\xd5\x65\xef\xad\xdc\xd2\x4b\xbe\x72\xda\xb7\xbf\xe6\x6f\x33\xfb\x3f\xf6\x8e\x87\x09\x56\x5d\xf0\xfe\x3a\x2d\xbc\xd8\x71\x91\xbe\xe2\x6a\xff\x22\xe4\xf8\x96\xf7\x3a\xbf\x10\xe6\xdc\xec\xd0\xe4\xb6\x66\xa0\x78\x84\x86\x36\x0b\x34\x63\xfa\x1a\x2e\x18\xe2\xdd\x40\xa7\x92\x43\x20\x37\x19\x12\x93\xea\x78\x27\x91\xac\xfa\xb8\x9c\xc0\xa4\x25\xba\xcc\x87\x06\x5b\x57\x6b\x3b\x9c\xc8\x89\xf4\x60\x73\xd3\xa3\x08\x3c\x42\x0d\x38\x06\xe7\x44\xb3\xe0\x4e\xb2\x02\x37\x7c\xd9\x2a\x6c\x97\x33\x2f\xd5\xf4\x68\x11\xaf\x02\x38\xf3\xb6\xbd\x76\x8a\x45\x8c\x4a\x5c\x8a\xbb\x7b\x76\xc3\x36\x1e\x7f\xc2\x28\x6d\xa9\x21\x71\x26\x86\x96\x94\xdf\x23\x4f\x62\xce\x50\xf9\xbd\x72\xfd\xe7\x59\xb5\x6c\x80\x0c\x9e\x7d\xeb\xd5\x68\x03\x12\xf4\x91\x51\xa6\x01\xb4\x6e\x41\xb9\xe4\x45\xc7\x6c\xe1\x91\x28\x07\x51\x58\xaa\x42\x6e\x62\x72\x28\x4e\x21\x6d\xe6\x8c\x76\x02\xb3\x87\x9b\x77\xfe\xd0\x6e\x11\x03\x54\xee\xc8\xe3\xcf\x74\xab\xc3\xf8\x9d\xfc\x51\xce\x14\x86\x97\x34\xdd\x47\x99\xea\x46\xed\xe5\x7a\x83\x4d\xde\x76\x44\x27\xab\x29\x84\x00\xbb\x9e\xb8\x83\xcd\xee\xde\xc5\x27\x18\x3b\x53\x6a\xfb\x6c\x3a\x1a\x79\x8d\xef\x60\x7f\xe8\x86\x6e\x8b\xa5\x3e\x67\xe8\xfc\x55\xd5\xe7\x0e\x41\x84\xee\x2e\xb6\x31\x00\xa1\xde\xc5\x93\x03\x2c\xf4\x67\xa6\x81\x85\x62\x34\x14\xf8\x03\x80\xc0\x5f\x67\x36\xb6\x80\x5d\xef\x1c\xc0\x53\x16\x42\x85\xf7\x20\x65\x46\xa4\x94\x29\x0d\x48\x66\x5f\x52\x72\x21\x2c\xae\xcd\x82\x2c\x6a\x7a\x7d\x35\xad\x35\xde\xc8\xdc\x55\xaf\xee\x10\xe0\xd3\xa7\x4a\x1f\x01\xda\x33\x7d\x4f\x34\xc4\xdd\xbb\xf4\x4d\x21\xee\xd4\xf9\x88\xef\xde\x15\x75\xfb\x0a\xc3\x5d\x31\xf9\x85\xf8\x1e\x8a\x89\xb3\x33\xf0\x36\x4c\xf6\xf7\x56\x8f\x4c\x5f\x0e\x83\x42\x8c\xb3\xa1\x6c\x73\x40\x7a\xe0\xbd\x9e\xa8\x61\xd3\x9a\xf8\xf4\x29\xf8\x8c\x89\x5c\xdd\x6a\x77\xb7\xc2\x4f\xa5\x59\xda\x42\xbd\x1d\x73\xc1\xcc\x52\xd1\x07\x24\x50\xde\x87\xea\x6e\x9b\xeb\xe6\xa3\xd9\x68\xa4\x64\xa1\x3f\x6a\xc7\x31\x89\x72\x99\x16\xb5\x46\xa3\x3c\x92\x9f\xae\xa3\xb4\xc8\xc6\x7f\x3b\x15\xdb\xab\x0e\xc4\xcb\xb0\x11\x8c\xc6\xc4\x8d\xdb\xd1\xe0\xa8\xbd\xd1\xf4\x67\x85\x3c\xb4\x2b\xe3\x3d\x3e\xc6\xb1\x57\x0d\xf4\xf4\x5d\x3c\x11\xe1\x70\xbc\xcf\xc7\x0a\x36\x16\x49\x3b\x69\x3c\xed\xfb\x86\xe7\xd0\x09\x28\x07\xb7\x91\xd1\x43\xe1\xf5\xb0\x24\x00\xcf\x0b\xf2\x55\x58\x89\xff\x2d\x7a\xcd\x42\x54\x96\xe6\x73\x06\x72\x52\x50\xe0\x54\x21\x86\x99\x54\x69\xad\x20\xcf\x5a\x0d\x84\xa7\xed\x72\x81\x0f\xf3\xc8\xa6\xe1\x10\x48\x34\xf4\x3d\x69\x6f\xe7\x24\xc7\x63\xd0\x70\x38\x2b\xf0\x2c\xae\x21\x27\x8f\xf0\xf0\xb5\xcc\xaf\x64\x29\x16\xcd\xe3\x47\xe0\xac\x22\x2c\xbf\x8e\x03\x24\x3e\xf8\xad\xce\xc2\xd1\x4c\x3f\xb6\xf1\xf5\x0a\xb7\x13\xe8\x59\x27\xba\x80\xdd\xdd\xc6\x6a\xf2\xb3\xe7\x36\xa3\x6a\x58\xa1\xf6\x1a\x9b\x2b\x73\x83\xc1\x75\x1e\x06\x09\x5a\xb1\x49\xb3\xb0\xfa\xfa\xc1\x71\xc5\x0a\x92\x0f\xca\xdf\xa6\xf1\xfb\x28\x91\x29\x30\x92\x58\xdc\xfa\xfc\xed\x69\x34\xc6\xb5\xf9\x45\xe6\xd9\x17\xc4\xcc\xa8\x68\x2c\xe1\x33\x1f\x65\x9e\x41\x9c\x8c\x26\x8a\xf2\xb7\x69\x94\xc4\xc5\x4c\x40\xfa\xe9\x3c\x56\x59\xfa\xef\x8a\x3d\x8b\x11\x87\x82\x74\xfe\x8e\x08\xe0\x87\x2d\x12\x1b\x5a\xaf\x22\xfb\x5e\x50\xe4\xdd\xbb\x02\x71\xec\xef\x78\x19\xfc\xb7\x20\x98\x95\x5a\x91\x72\x45\x85\xb8\xb9\x8e\x07\x94\x0b\x00\x30\x4d\xd3\x94\x6c\x9a\x0e\xf5\x07\xdf\x02\x51\x05\xec\x5b\x45\xf9\x13\x86\xe6\x6b\xde\xe6\xcc\x72\x39\xe0\x6b\x0f\xe9\xd5\xc3\xad\xe2\xfb\x0b\x82\x49\x94\x0f\xae\x2b\xa2\x79\x4d\x1c\x37\xe7\xa0\x70\x1e\x84\x15\x90\xe0\xca\x54\x70\x31\xc2\x5d\xab\x5b\x8a\xe7\xe7\xb6\xd2\x08\xcb\x64\x79\xaa\x04\x56\x05\x2b\x8f\x66\x96\x17\xb0\x86\xac\x84\xea\x06\x73\x26\x40\xfe\x86\xa0\xce\xf1\xe5\x05\x98\xa9\xf0\xc2\x0f\x3c\xf1\x1d\xb8\x12\x91\xf7\xcd\xe1\x8b\x22\x27\x3c\x2a\x1f\xa5\x43\xf3\xc4\x91\x41\x1b\x53\xa1\x41\xe1\xd6\x2d\x0f\x95\xff\x53\x1e\xd1\x15\xf0\xdc\xd2\x77\x73\x7b\x5f\x5e\x82\xac\x71\x79\x59\x43\xa7\x67\x1e\x38\x64\x7d\x6d\xbc\xa7\x3e\x58\xb3\x67\xb5\x41\x96\x8e\xe2\xab\x29\xb0\x20\xb5\x1d\xf0\xa5\x31\x3c\x63\xcd\x31\x27\xe1\x1b\x18\x55\x8d\x5c\x10\xed\xd3\x9b\x3c\x2e\x58\x6b\xc4\x80\xb2\x85\x9d\xd1\x17\xdf\xbc\xbe\x1a\x6a\xe8\xe7\x2f\xb3\xfc\xf8\x26\x7d\x4b\xa7\x9b\x42\xfb\x15\xc4\x9c\xd9\x8b\x64\xcd\x8f\xaa\xb1\x85\x1c\xfa\x33\x20\x05\x90\xf9\x97\x14\x8a\x26\xe4\xda\x26\x48\x40\xfa\x1f\x0d\xae\xed\x36\xc3\xe6\x1e\x98\x04\x09\x2e\x4f\xe7\x38\x9a\xe9\xab\xaa\x70\xa9\x11\x84\x8c\xf2\x64\xa6\x3f\x23\x3f\x4c\x92\x78\x10\x17\x09\x97\xa6\x98\x36\xe6\x8b\xb0\x94\xc6\x08\x73\xfd\x56\x79\x1c\x4a\x10\xcc\xfa\x94\xc2\xc6\xb5\x5c\x5c\xe0\x41\x50\x61\x68\xff\x02\x55\x0b\x6f\xe6\x82\x8a\x5e\x42\x86\x3b\x8c\x73\x7a\x86\xbf\xeb\x2b\x46\x56\x5d\x41\xba\x2f\x17\x57\x35\x72\xa5\xbc\x21\xee\xfb\xea\x6a\x26\x64\xfa\x3e\xce\xb3\x14\xc5\x88\xaf\x11\x96\xed\xb4\x0c\x39\xe0\x14\xda\x0b\xd7\xad\x38\xd9\x3f\xc0\x48\xeb\xc1\x39\x36\x77\xa1\xc0\x08\x11\xcf\xe3\xae\xea\x9e\x7c\xea\xa7\xbe\xdc\x31\xf9\x3c\x03\xbf\x94\x7a\x10\xca\x78\xf7\x6e\x18\xdc\x18\x9b\x72\x8e\x34\x22\x64\xd9\x9f\xea\x8d\x3d\x89\x6e\xdc\x48\xe1\xb1\x49\x61\x60\x00\xd8\xdc\x0f\xab\xa6\xc9\x60\x22\xf8\x17\xe8\x2b\x6e\xa9\x07\x35\x5c\x65\x0c\xea\x15\x27\x42\xbe\x35\x15\x5f\xcb\x9b\x73\x50\x52\x11\x70\x4d\xa8\x09\x51\x3b\x8c\xdf\x49\xf3\xfa\xee\xdd\x8a\x5d\xed\xf5\x4c\xf6\xda\xdb\x2c\x0d\xc6\x16\x3a\x1c\xee\x47\x43\x88\xff\x5f\xe1\x1e\xfb\xe6\xeb\x45\x51\x02\xf6\xac\xeb\xb5\x12\x8b\xd4\xc7\xb8\x7a\x14\x1e\x19\x20\xb7\x8b\xed\xa3\x17\xa0\xd1\x78\x1d\xa9\x77\x72\x68\xd0\x6e\x89\x93\x29\x65\xdd\x04\x35\xc9\xcb\x20\x25\xc9\x53\x1e\xf1\xbd\xe3\x25\xcc\x64\x2a\x44\x82\xd0\x2e\xa4\x2a\xea\x45\x76\x0a\xd9\x0f\xcc\xd7\x6f\xb3\x4d\x4e\x9d\xe3\xb6\xca\x28\x14\xfc\xec\xd2\x7f\xe8\x86\x31\xb5\xc0\x42\x3d\x3f\x6e\x54\x49\x27\xb5\x1c\xcf\x91\xf5\x53\xa8\x3a\xf0\x54\x4c\x70\x0a\xee\xdc\x09\xb3\x4e\x86\xc7\xe2\x62\xf5\x55\xd6\xd7\xc9\x81\xbd\xcf\x8d\x18\x8f\xf5\x08\xd4\x24\xca\x15\x71\xd9\x50\x96\x60\x28\x53\x55\xed\xd8\xbd\xca\xfd\x59\x45\xd7\xbf\x58\x75\xa9\x67\xf4\x23\x8c\x9d\xd8\xab\xaa\x43\x60\xe4\x1a\x1f\xe5\xf1\xc0\xf9\x9d\xf9\x09\x88\x95\x49\x27\x42\x7f\x99\x42\xbb\x2e\x6c\x9e\x69\x06\xa1\x6c\x65\x59\x97\xc7\x07\x65\x24\x39\xc3\x42\x32\x5b\x36\x30\x91\x75\xf3\xc5\x4f\x9f\xc4\x9d\x65\xe2\xde\x37\xd1\xef\x2c\xc2\x88\xb1\x66\xf4\xab\xe3\xa6\xc7\xd3\xa4\x88\x27\x89\xa4\x8c\x26\xb7\x65\xf8\x87\x52\x15\x71\x1a\xb1\xa0\xe5\x76\x55\x0f\x4a\x97\xa2\x7b\x98\xcc\x29\xe5\xc6\x46\x64\x53\x39\x0a\x5c\xd0\xdc\xca\x6c\x6f\xb1\xe3\xbc\x74\x5b\xe7\x03\xa8\x1e\x10\x7f\x94\xf9\x45\x39\xf5\x93\x79\x07\xb5\x57\x6d\xd9\xce\xca\xa1\x9e\x83\x9d\xe1\x42\x9c\xe5\xc0\x01\x15\x79\xf4\x5e\xe6\xca\xa5\x7c\xc1\xae\x26\xe1\x5d\x9c\x13\x48\x20\xf1\x50\x3b\x47\xe6\x93\x28\xaf\x4c\xd1\x05\xf2\x96\xdd\x79\x84\xd7\xb4\xd3\x6d\xba\x61\xe6\x4d\xb4\x76\xb8\x03\x90\xb9\xdc\xa2\xd8\xcf\x3f\x00\x06\xd7\x89\x11\xac\x1b\xd8\x36\x64\x5c\xe5\x83\xbf\x3b\xbd\xb2\x09\x12\x00\x7b\xdd\xa7\x4f\xa2\x8e\x7f\xa1\xf5\x09\xac\x2f\x0d\x67\x35\xb3\x47\xcf\xc0\x60\xd8\x6a\x67\xf5\x42\xca\x49\x69\x66\x20\x1c\xb9\xe9\xd9\xc6\x55\x33\xe5\xa6\x31\x26\xde\xe0\xf1\x4d\xe5\x8d\xd1\xa7\xb8\x9e\x56\x3d\xfa\x94\x3d\xac\xab\x68\x04\xde\x69\xfc\x7c\xc1\x20\x68\xfa\x70\x62\x37\x45\xad\xd6\x68\x8a\xd2\x4e\xc0\x48\x2c\x5c\x3f\x39\x05\xe9\x69\x47\xa2\xee\x46\xe3\x47\x95\xfd\x6e\x7b\xb2\xf1\x9a\x2f\x1b\x6b\xe0\x67\xfa\x77\xb1\x22\xd2\x00\xe0\xc7\x1f\x5e\xa9\x83\xd4\xbb\x6f\x6d\xad\xf7\xf8\xa3\x46\x6b\x2c\xb3\x6a\x25\xbb\xd7\x78\xee\x47\xb6\xb6\x30\x96\xbb\xa0\x4c\x43\x78\x3f\x4c\x64\x3e\xca\xf2\x31\x98\xda\xa1\xe0\x30\xe0\x33\x21\x78\x78\x06\x4c\x57\xa8\x0d\x01\x09\x17\x0d\xac\xb8\xb8\x16\x83\x38\x1f\x4c\x13\xf4\x68\xe1\x19\x25\x20\x7f\x04\x1e\x93\xff\x46\xf2\xb2\x8a\x35\x1c\x06\xf9\xed\x88\x12\x80\xab\x14\xfd\xe0\x4d\x15\x19\xba\x35\x45\x43\x44\xfa\xef\xa5\x69\xab\x9c\x7e\xbb\x16\x73\xe9\x5c\xa0\x39\xad\x3c\xc9\xc6\xf8\x47\xa7\x8a\x35\x63\x9f\x75\xcd\x34\x70\xa8\xee\x85\x3e\x4d\x57\x92\x51\x31\x1b\xee\x40\xad\xcc\x01\x5e\x7c\x32\x4d\xe3\xdd\x0a\xea\xbb\x98\x54\x79\x64\xca\xa9\x76\x6f\x4d\x9a\x42\xb2\x84\xfc\x0d\x26\x33\x46\x12\x5e\x41\x9d\x5c\x6c\x07\xb5\xe4\x6e\x13\xa1\x2d\xd8\x2e\x51\x73\xcd\xd9\xa7\x4a\x46\x5e\x6b\xda\xad\x6c\x0e\x3c\x72\x68\xe0\xad\x34\xeb\xfa\x1b\xb2\x80\x78\xe2\xf0\xad\x9d\xd7\x37\xef\x32\xfa\x6b\xdb\x45\x33\xbb\xce\x8d\x39\xe4\xd9\xbc\x0f\xc9\xb3\xad\x42\x46\x80\x34\x37\xef\x38\xd0\x85\x20\x07\xd9\x64\x16\x7c\x7c\x01\x74\x3d\x0b\x0e\x88\xed\xa4\x95\xe3\xca\x9f\x48\xb2\x54\x06\xab\xdf\x04\x35\xe1\xa2\x4f\x05\xcb\x74\x9b\x6f\x55\x6c\xd7\xa2\xef\x55\xae\xcb\xf9\x85\xdf\x96\xdd\xf5\x38\xbe\xa0\xf8\xfb\xdf\x99\xb8\xeb\x14\x0b\x15\x4c\xc8\x82\xed\x34\x3b\x68\x7a\x2f\xdb\xbb\x22\xe3\x83\x58\xbe\x7f\x9e\x5c\xc2\x07\x6c\xc5\xec\x65\x5f\x8c\xd3\xb8\x78\xae\x97\x38\x9c\xf8\xdc\xc5\xb2\x68\x5e\xb9\x7b\x46\x52\xa8\x3a\xeb\x50\x4e\x7e\x30\xcd\x55\xfc\x5e\x26\x33\xba\x83\xcc\x0d\xae\x89\x3f\x31\x09\x75\x35\x55\x03\x39\x29\xe2\x7e\x82\x92\x75\x94\x24\xc4\x2c\x26\xf1\x38\x2e\xa0\x7c\x87\x21\xaf\xe0\x91\xe4\x90\x22\xe0\x5c\x2c\xd5\xb7\x5c\x13\xa7\x78\x8b\x58\xdf\x5d\xf7\x09\xe6\x84\xe9\x2d\x8f\x9e\xe7\xca\x7c\xd4\xaa\xb2\x52\x2e\x55\x11\xca\xce\xef\xa3\x24\x86\x1a\x8f\x59\x2e\x06\x99\xd4\x57\xa6\xf3\xa9\xf8\xf2\xb4\xa1\x90\x11\x19\xca\x01\xa8\x42\x40\x17\x59\xc8\x5c\x14\x59\x25\x07\xa2\x2f\xf1\xbc\xe8\x41\x2e\x65\x32\x2a\x75\x91\x31\x80\x17\x62\x92\xa9\xd8\xcc\x83\x12\x55\x33\xa8\x5f\x9b\x67\x54\x2f\xd8\x89\x54\x05\x25\x1a\x85\x4f\x7a\x7a\x0f\x25\x9d\x66\x33\x7b\x2f\xf3\xb0\x71\x93\xca\x9f\x14\x9a\x1f\x87\xe5\xd8\xc4\xb4\x8f\xab\x6d\x0c\x03\x5f\x2d\xc8\x5e\x67\x85\x48\xb2\x6c\x82\x59\xa0\xe3\xf4\xea\x2b\x36\xa6\xc2\x78\xe5\x7a\x20\x1f\x49\xd9\xc7\x83\x52\x5c\x4b\x57\x99\xe7\x0c\x37\x9a\xfb\x53\xc9\x53\x45\xde\x09\x32\xe0\x3d\xb5\xeb\x26\x58\xed\x58\xb3\xb0\xe8\x9c\xc4\xb6\x21\xb0\x53\x61\xbb\x9a\x19\x67\xcd\x18\xab\xe6\x9b\xaa\x7c\x43\x15\x50\x16\x7a\x61\xec\x54\xa6\x86\x59\x9d\x3e\x4f\xaf\xcb\x06\xab\xcf\x7a\x77\xab\x22\x07\xe0\x4e\xd1\xdb\x2a\xde\xa2\x8f\xcd\x42\x7d\x36\x5e\x74\x9f\xc9\x89\x08\xb1\x04\xff\xd4\xb4\x49\x83\xaa\x76\xc3\x3b\x8f\x95\x66\x4c\x2f\xac\x17\x5e\x84\x02\x0e\xeb\x62\x77\xca\x7c\x83\x9f\x06\x68\x37\xa4\x6f\x05\xc7\x81\xdf\xc0\xd8\xa0\x29\xf0\x73\x4e\x66\xe7\xbf\xed\xfe\x10\x34\xa8\xb1\x5a\xf7\x74\x54\xd6\x90\x4c\x4d\x4c\x6d\x5e\xa4\xf6\x56\x39\xc5\xd3\x46\x3e\xe5\xbf\xea\x46\x9f\x88\xd1\x7e\x04\x85\x29\xa6\x4c\x03\xe0\xb3\xec\xeb\xc9\xac\x8e\xb0\x1b\x0b\x5d\xd8\x2b\x36\xef\x2d\xab\x9d\xb3\x70\x03\x59\xfd\xaf\xcf\xbc\x4c\x18\x33\xf8\x57\x6e\xa8\xaf\x52\x5c\xb0\x45\x1c\x46\xd5\x46\xb1\xfe\x75\xf6\xfd\x8a\xd0\x3f\xbd\x72\xac\x85\xb7\x7c\xfc\xb9\xf3\x03\x83\x65\xd3\xdd\x5c\xf6\x4f\xb3\xa0\x70\x35\x06\xaf\xf8\xe7\x6f\xbf\xe2\x4e\x4b\xbc\x92\xcd\xd3\x35\x87\xa5\x66\x5a\xee\x6f\x78\x74\xaa\x3c\xc1\x69\x5f\xd8\x07\xab\xb6\x85\x71\x95\x6e\xa4\xfe\x39\x02\x1a\x69\x72\x62\xe2\x0b\x2d\x48\x85\x9b\xea\xba\xb7\xfb\xb4\xb5\x3b\xa2\xf4\x90\xe7\x71\x92\x37\xfc\x3d\xdf\x66\x73\x9c\x79\x77\xeb\xde\xe7\x3d\xb6\xe7\x89\x6d\x5a\x36\x81\xac\x93\xd7\x92\x95\xf5\x32\x5a\x02\x70\xd1\x8a\x96\xee\x1e\x29\xd0\x99\x52\xc3\x6d\x59\x36\x99\x19\xc0\x2e\x09\x65\x10\x38\x05\xad\x7b\xe7\x17\x17\xf3\xfb\x1a\x16\x63\x9e\xd2\x9e\x8d\x92\x6f\x9a\x95\x6c\x8c\x58\x0a\xcd\x56\x8a\x07\xc7\x1e\xdc\x55\x16\x07\xf6\xe9\x93\xc0\x33\x61\x8b\x11\xd0\xaa\xae\x12\x0c\x8e\x4e\x34\xb6\x2a\x01\x7e\x83\x85\x83\x33\x95\x79\x84\xe5\x51\x4a\x3b\xc5\xdd\x43\x83\x9d\xba\x45\xa2\x7d\xb6\x57\xce\x38\x02\x0b\xce\xe0\xcf\xdb\x30\xdd\x04\x0b\x93\x58\xf3\x08\x55\x8a\x8b\xa9\xc4\xb4\x86\x54\xad\xd8\xc1\xaf\xf5\x7e\xff\x1c\xe6\xf8\x0f\x3f\x1e\x30\x95\xb7\x56\x33\x0d\xf4\x72\xf9\x4a\xa6\x15\x1d\x14\x3c\xf4\x31\x52\x0e\xe1\x0f\x4c\xdd\x69\x3b\xdc\x50\xb8\xa3\xfa\x91\xbc\xd1\x7c\x91\x4b\x23\x4a\xb3\xd4\xa8\x63\xf4\xe2\x98\xcb\x77\x39\x1a\xc2\x07\x39\x16\xae\x90\x6e\x00\x6c\x3c\xd8\xd3\xe2\x96\x7d\xb9\x48\x35\x1d\x6a\x7c\x9c\xc3\x28\x61\x2a\xfe\x00\x49\xc5\x57\xf8\x18\x25\x74\x59\x05\xbd\x8a\x02\x9a\x6b\x50\xdc\x87\xc2\x0c\xb0\xb0\xb0\xbe\x2a\x7f\xae\xe3\x54\xa8\x8f\xf6\x25\xd1\xb9\x6e\x91\x55\x6a\xec\xb0\xdc\x43\xf5\x95\xc7\x12\x9e\xbc\x93\x5a\x2c\xc3\x6f\xac\x58\x4c\x88\x74\xa2\x79\x59\xe2\x82\x17\xd5\x58\x3c\x5f\x24\xb2\xe0\xe6\xc8\x46\xe8\x74\xb3\x47\xad\xea\xa6\xb9\xc7\x97\x7b\xf2\x93\xd1\x0c\xb0\x1d\x57\x9e\x42\xae\x84\xc0\x25\x4a\xaa\x02\xfe\x50\x30\x5c\x13\x3d\xe1\x55\xf5\xa7\x1e\xe7\x2e\xb7\xd4\x45\x39\x8d\xb4\xfe\xef\x6a\x1a\xe5\x43\xde\x7b\x9b\xf5\xde\xbe\xa8\x40\x47\xef\xa3\x76\xe6\x6d\x0b\xe0\x1e\xab\xe1\xc6\xdb\xf6\x44\xcd\x2c\x44\xad\x61\x8f\x8b\x75\x96\xf4\x48\xc1\xc2\xb3\x80\x43\x06\x9d\xa2\x71\x28\x7b\x1e\x25\x49\xdd\x8c\x7a\xcb\x9e\x36\xac\x50\x04\xed\x99\x32\xa6\x6a\xd5\x1e\x8b\x7b\x41\x2a\x27\xd7\x6a\x37\xa4\x28\xdd\x72\x66\x64\x9b\x75\x9d\x9b\xa2\x97\x92\x1a\xdc\x7a\xba\x49\xec\x36\x7b\xc9\x4d\x48\x5f\xed\x19\x00\xdd\x01\xb4\x44\xc6\xa9\x8d\xe3\x50\xbb\x52\xa9\x56\x0a\xce\x23\x09\x6e\x15\xa7\x12\x84\x73\x8b\xf6\x60\x3e\xa6\x58\x32\x73\x4c\x47\x59\x7e\x90\x92\x93\x29\xfc\x3a\xbe\x59\x7c\x68\x1d\xcb\xa9\xaf\xc7\x93\xf8\xea\xba\x70\x5c\x27\x79\xd6\xa5\x57\x18\x9c\x8c\x95\xcf\x8b\x4c\x24\x72\xb4\x5c\xd4\x36\xa7\xd7\x1b\x74\xe5\xc9\x35\xee\x72\x76\x04\xd5\xd5\x53\xcc\xe2\x1a\x8f\xc0\xa6\xf5\xec\x5b\x76\x76\xa1\x07\x26\xd9\xf7\x11\xc3\x35\x41\x26\xa0\x67\x41\x96\x5b\xcc\xbf\xc3\xe6\xfa\x1a\x97\xef\x2f\x3b\x45\xf1\xd4\x00\xdc\x11\x84\x91\x1e\x92\xb9\x0a\x4f\x34\x76\x7e\x59\x99\x67\x0d\x2c\x73\x18\x25\xca\x43\xc7\x7e\x2e\xa3\x77\xab\x21\x1a\xc7\x33\xa8\x53\xd1\x9f\x69\xc4\x19\xca\x51\x34\x4d\x0a\xe0\xf7\xdf\xfa\x8c\x48\x5c\x28\xe6\xd2\x30\x55\xce\x6e\x47\x58\xaf\x41\x19\xa5\x66\x9c\x42\xdd\x8b\xd0\x88\xc8\xb2\xdc\x4f\x22\x05\xe5\x31\xae\xf3\xe9\x12\x97\x23\x6b\x9a\x0a\x0d\x93\x36\x70\x9a\xb7\xb6\x16\x2a\x66\x94\x2c\x37\x5c\xd1\x25\xba\x6c\x96\xac\xb0\x95\x62\xa0\x94\x79\x42\xee\xa4\xe8\xdd\xbd\xcc\x68\x5a\xee\x6a\x86\x5f\xdd\xf5\x5b\xda\x13\xe7\x87\xa5\x2f\x76\xf4\x46\x8c\x78\x41\x88\x62\x5d\x2b\x4a\x3a\xe6\x0a\xee\xaa\xe4\x5d\x51\xa1\xc5\x87\x1b\x65\x9e\xe3\xc3\x1f\xa1\x48\x0f\x8c\x0f\x9e\xff\x48\x69\x92\xee\x2e\xaf\x5a\x97\x5b\xaa\xd4\xdd\x29\x25\x5b\x4a\x45\x48\x08\x44\x2f\x43\x88\xfc\x38\x9a\xac\x24\x22\x8d\xa3\x09\xe0\x9a\xfe\x77\xa5\x1a\x64\xae\x48\xee\x3b\x19\xfa\x98\x6d\x94\x13\xca\x98\xea\x70\x7e\xc1\x31\x93\x1f\x66\x1c\x4d\x82\xb8\x0d\x8a\xbf\x1e\x47\x93\xaa\x3c\xcf\xb1\xfa\x51\xce\x34\x89\x03\x27\x2c\xb2\xdf\x42\x42\x08\x62\x66\x8c\xe3\x17\x65\xd8\x12\x4f\xdd\x9f\x3b\x94\xb0\xeb\x82\xcc\xb5\x30\xb2\x71\x34\xa9\x5c\xc8\xc0\x55\xf4\x8b\x4b\xbd\x2d\x73\xcf\x5b\x4e\x70\xa8\x14\xc8\x2a\x09\x23\x9c\x1b\xfc\x48\xc4\x45\xcd\x14\x11\x32\xae\x93\x2e\x4c\xb0\xbc\x21\xe4\xe4\x5a\x2a\x01\xa7\xb7\x84\x7c\xb5\xab\x0b\xc5\xed\xfa\xbc\x74\xe8\x2e\xfb\x94\x7a\xcf\x49\x6b\xbe\xd8\x4f\xe6\x07\xe3\x00\x8f\x11\x10\x57\x69\x96\x4b\x25\xde\x96\x0b\xd6\xac\x12\xf7\xf8\x75\x1e\xf0\x79\x74\xb3\xd0\x0b\x3e\x74\x2d\x67\x72\xf2\xf1\x4d\x8a\xb9\x9f\xe7\x85\x14\xfb\xde\xeb\x96\xb5\x28\xa0\x4c\x0f\xb4\x39\xf7\x9b\xa0\xa0\xcb\x2b\xee\x54\xb4\x29\x97\xf0\x80\x12\x61\xe9\x18\x5c\x94\x6d\xb1\xf6\x52\x59\x9d\x92\xea\xb5\xa2\x74\x16\x1b\x7e\xc3\x84\xcf\x19\xc8\xdc\x11\x13\x26\xcf\xb9\x9e\xea\x71\x16\xe8\xe3\x5f\x12\x60\xa9\xce\xc1\x9c\x25\xa8\x10\x5d\xcb\xda\xda\x83\x34\x2e\x10\xbd\xc0\x61\x9e\xce\xa0\xd5\x97\x7e\xd1\xf1\x5d\x55\xdb\x1a\xdb\x6f\x0f\x5d\x1f\x86\x33\xa1\x8d\x99\x3b\xb2\x9a\x58\x07\x22\x6b\xe4\x37\xc5\xf4\xa1\xbe\xac\x46\x8e\x1c\x25\x1f\x5a\x43\x22\x5d\x79\x9b\x3a\x2f\x52\xe5\x37\xc3\x12\x1e\x55\xa9\x62\x3c\xa7\x6c\xb0\xba\xf2\x5c\x0d\xc0\xa5\x7e\x95\x63\x78\x68\x52\x45\x16\xb8\xf7\x7a\xef\x1f\x97\xa7\x7b\x2f\xf7\x2f\x0f\x8e\xce\xf6\x7f\xd8\x3f\x41\x45\xd8\x74\x32\x91\xb9\xe8\x67\xd3\x74\x08\xca\x41\x33\x22\x3b\x8c\x2f\x70\x34\x67\x10\x16\x3a\x9a\x9b\x78\x70\x3a\xb9\x5c\x52\x34\xb5\xb5\x5d\xa9\x76\x1b\xf5\x65\x45\x04\xf3\x87\x4d\xbe\x19\xce\x50\xec\x08\x26\x40\x10\x12\xdc\xb9\x43\xfd\xc8\x5f\xbd\x8e\x9f\xe9\x89\x1a\x2e\x18\x4b\x06\x80\xaf\xee\xe8\x0b\x10\x88\x24\x20\x46\x2e\x0f\xd4\x9b\x38\x2d\x30\x4c\x80\xa2\x03\xbc\x1c\x06\x14\xaa\xf3\x44\xb4\xba\x2e\x39\xff\x7f\x8a\xae\xfe\xc8\x96\x7b\x62\x45\xe3\x6a\x2c\x81\x8a\xf9\xf1\x7b\x99\xb2\x7a\xae\x9a\x97\x07\x21\x31\x4a\x5d\xc8\x96\xa6\x1e\x2b\xe3\xcb\x24\x2b\x64\xaa\xcf\x91\xeb\x8f\x2f\xcd\x47\x42\x16\x3f\xb6\xfe\x80\x15\x5d\xc9\x45\x10\xa5\xaf\x79\x10\x38\xf7\x5e\x06\x41\x6f\xfd\xce\xab\x26\xca\x5a\x61\x65\x96\x86\xa5\x04\x2a\x15\x9b\x4c\x04\x90\xf7\xb6\x2e\xfa\xa5\xa8\x14\x1f\x87\x01\xaa\x21\xf1\x21\xde\x31\x57\x5f\xee\x90\x65\x09\x19\xaa\x7f\xe0\xc0\x78\xa3\x33\x16\x1a\xee\xd3\xeb\x80\x1b\x7e\x4d\xf7\x86\xdd\x72\x3e\xfe\xd4\x3e\x98\x82\x0b\xfb\x47\x79\xd9\x0f\x9c\x0e\x67\xba\x84\xbe\xa9\x29\x9a\xcb\x81\x8b\xd6\x62\x6c\xa4\xc4\x34\x8d\x7f\x9b\xda\x8d\x27\xb6\xf7\x8f\x8a\x82\x31\x03\x5a\x42\x97\x0c\x5f\x1c\xb0\x1f\x73\x28\x12\xbf\x5e\xbc\x45\xff\xf4\x49\x54\x50\x17\xf7\xcc\x90\x15\xfe\x8c\xe6\x51\x33\x97\x0d\xcb\xcf\xc0\x62\x78\xcd\x1d\xc3\x42\xe4\x21\x2e\x70\xce\x8e\x60\x65\xe0\xeb\x48\x81\x66\x81\x04\x58\xe4\x30\xbe\xc2\x83\xe4\xb6\xdb\x80\xa3\x88\x15\x7d\x79\xc9\x1e\x50\xf4\x57\xa9\xde\xf4\x9d\x3b\xac\x74\xeb\xdd\xbb\xa2\xce\x7e\xc6\xa8\xc9\x9a\xb7\x0c\x0e\x0f\xf4\x55\x0b\x6e\x49\xae\x48\xdb\xf2\xaa\x79\xdf\x3e\x24\xcb\x15\x05\x5e\xbc\x16\x8e\xc7\x08\x30\xf2\x39\x30\x2f\x34\x18\x73\xb5\x70\xce\xc6\xf0\xbf\x13\x0a\x0d\x32\x3c\xd0\xf3\x4a\xae\x47\x3f\x75\x39\xa9\xc0\xcd\x8f\x15\xcc\xe4\xd7\xa8\xc3\x3b\xaa\x8a\xb7\x24\x0d\xcb\x1a\x14\xaa\xa5\x3a\x9d\xef\xe4\x4c\x7d\x79\xa1\x5a\xdd\x1b\x52\x6e\x04\xb9\x5c\xe2\x74\x90\x4c\x87\x52\xb1\xf4\x53\xe5\x24\x59\xf1\x57\xe4\x73\xf9\xa6\x81\x60\x55\xd1\x5c\x65\x57\x8d\x73\x9b\x50\x83\x86\x71\xc7\x0f\x00\x0e\xc3\xb7\xaa\x6f\xa7\x2f\x8e\xb8\x7a\x9e\xa5\xef\x65\x5e\x78\xf9\x57\x22\xe3\x1c\x86\xb9\x54\xde\x86\xb5\xab\xad\x28\xf9\x25\xf1\xbb\xf8\xbd\x15\x44\x48\x6a\x29\x87\x34\x9a\x60\x75\x2b\xa3\x90\x39\x15\x59\x2e\x88\xad\x2a\x57\x9f\x30\x5f\x4a\x5b\x64\x5c\x39\xef\x44\xeb\x19\xf2\x6f\xe3\x40\xb9\xa4\xbe\xbb\x9b\xd5\xb7\xad\xf0\x5e\x76\xa6\x0c\x2a\xbd\xe3\x0c\x7a\xae\x18\x6c\x9d\x9e\x04\x81\xef\x75\x36\x7b\x48\x73\x28\x76\x0c\xc4\x2d\xae\x62\x09\x0a\x93\xe2\xd1\x8b\xf2\x2b\x05\x89\x4e\x88\xb5\x64\x06\x8e\x45\x06\x4b\x37\x26\x0d\xc0\x7d\xdc\x7e\xd7\xf5\xa9\xf4\x04\xf1\x6d\x1c\xf3\xcd\x67\x81\x37\x88\xfe\x18\x6e\xb9\xd8\x14\xdc\xc0\x41\x26\x70\x3b\x64\xa7\xb4\x80\x22\xbd\x7b\x38\x4b\x72\x74\xa1\xfe\xdd\x79\x36\x3c\xe6\x08\xab\xff\xb3\x10\x82\x71\x94\xbf\xef\x5a\x02\x08\x50\x4f\xb0\x3a\xfc\x79\x34\xf3\x8b\x13\x03\xae\x9b\x32\xff\x90\xed\xda\x42\x68\x94\x4c\x29\x56\xbd\x48\x12\x0c\x29\x15\x9b\x62\x9a\x26\x52\x29\x97\xbe\x67\xdd\xf2\x4d\xeb\x5a\x58\x59\x67\xd7\xe3\xfa\x1f\xa3\x76\xe4\x76\x8e\xa5\x8a\x47\xdb\xd8\x9a\x52\x78\x6e\xd1\x8a\x80\xa1\x20\xd7\x4b\x45\xa4\xae\xa7\xf8\xa0\x3c\x2a\xbe\x79\xba\x22\xd2\x72\x6e\x02\x99\x39\x8d\x3d\xc3\x17\x79\x63\x54\xa4\x80\x65\xfe\xc4\xa4\x8d\xcd\x2c\x6f\x08\x09\x93\x01\xca\x5b\xb5\xfc\x0e\xf9\xd3\x38\x38\x2b\xcf\xb9\x19\x7c\xb3\x8f\xa7\x45\x3d\xf0\x7b\xae\xac\xee\xeb\x06\x7c\x1d\x15\xb5\x24\xc1\xde\x22\x9b\x16\x2c\xd1\x8c\x78\x6b\xdc\xa3\xdf\x42\x7a\x58\x19\x81\x99\xc9\xad\xdb\xcd\xb5\x4c\x51\x49\xad\xaf\x30\x39\x14\x6f\x5f\x1d\x9f\x5d\x3e\x3f\x7e\x73\x74\xf6\x56\xa3\xfc\x38\xcb\xa5\x28\xe2\x31\x30\x47\xf8\xf2\xf4\xa7\xbd\x23\xc8\x78\x33\x8e\x93\x24\x56\x72\x90\xa5\xc3\xaf\xf1\xf3\xd7\xb7\x42\x1e\x0f\x56\x37\x59\xc3\x44\x51\x38\xac\xbe\x13\xec\x3a\x3a\x11\x40\x2f\x36\xd8\xd6\x44\x4f\x6c\x59\xbf\xa7\x48\x15\xcf\x71\xda\x90\x09\x7c\x09\x81\x57\x45\x34\x9e\x58\x8a\x7d\x94\xdd\xd4\x19\x6d\xce\xe5\x38\x8a\x53\xdc\x47\xb3\x4a\xa2\x05\xe1\x73\xe3\x89\x68\xb1\x6f\x19\x8a\xed\x7d\x1d\x9a\xb9\x40\x2e\x07\xed\x89\xab\x33\x84\xaf\x36\x37\x71\x1e\x4f\xf0\x3b\xb0\x55\xdc\xbc\x6c\x3d\xfa\xe8\x1a\x3a\xdf\x0a\x23\x8b\x7c\xed\xae\x5d\x95\xdd\xb2\x29\x1a\xae\x43\x24\xad\xcc\x86\x66\x41\x97\x29\xab\x63\xfb\xec\xb1\x64\x72\xe3\x00\xb3\x69\x7e\xb1\xd4\xb8\x32\x8f\x17\x7c\x8f\xa1\x86\xcd\xce\xe1\x50\x43\x2f\x2a\x7c\x2f\xe0\x90\x9d\x62\xdf\x5b\x0f\x9f\xe7\x23\xa1\x11\xd7\xd5\x53\xe0\xcf\x01\x51\xe7\xc1\x1d\x95\xdd\x18\x5f\x5d\xab\xf1\xc5\xfd\x89\x62\x91\x45\x84\x32\xd1\xb7\x4f\x45\xe8\xb2\x0f\x8a\xbe\x2c\x6e\xa4\x4c\x45\x71\x93\x39\xb7\x58\x31\xd4\xbc\xde\x38\x4e\x25\x29\xd2\x66\xa0\x3f\x73\x99\x12\xed\xee\xaa\x22\x2a\xe2\x01\xfc\x69\x33\x70\x5f\xe2\x9b\x38\x1d\x48\x71\xbf\xbd\xd5\xde\x82\xdf\x83\xa8\x90\x57\x59\x3e\x13\x87\x11\x96\xa7\x5f\xc6\xe8\xeb\x21\x96\x1c\x0a\xe0\xb6\xc7\x8b\x16\xfe\xaa\x6e\xbf\xaa\x7a\xd0\x58\xe8\xbd\xb9\x95\x25\x6d\xf1\xbf\xe5\x87\x68\x3c\x49\x24\xcd\x9a\x42\x74\xc9\xe5\x52\xd4\xa2\xda\x8e\xe8\xea\x03\x62\xde\xc1\xd0\xc2\x57\xfa\xed\x65\xdb\x6a\xcf\xac\xee\x10\xba\x75\x3a\xa2\xf7\x84\x22\x46\x2a\x5a\x6a\x80\xbc\x21\x8c\x8d\xb7\xac\x45\xb5\xa6\xfe\xda\x22\x68\xd0\x86\xe4\x3f\xdd\x74\x21\xc0\xa3\xe8\xa8\x29\x8e\xa2\xa3\x0a\x80\xec\x98\xc9\xdf\x8c\x3e\x14\x87\xc8\x05\x28\xa7\x00\xc0\xf5\xf8\xf4\x89\xab\xaa\xac\x42\x02\x5f\xde\x31\xcd\x56\xd7\xcc\x54\xe5\x63\x5a\x19\x2f\xb7\xda\xdd\x2f\xc4\xcb\x6f\x9f\x40\xaa\xac\x7d\x0e\x11\xce\xcb\x7a\x55\xe7\x97\x56\xe9\x1a\xd8\x15\x9f\xeb\x8d\xb9\x58\xc0\xc1\x9c\x77\x9b\x62\xbb\x29\xee\x5d\x54\xe1\x01\xb2\x2d\xac\xb9\xe8\x95\xb2\x5b\xad\x30\x0e\xb2\x85\xb1\x5e\x3c\x7c\x6b\xe5\xf4\x58\x0b\xac\xb9\x35\xe0\x67\x64\xcd\x1a\x58\xee\x18\xee\xf8\x40\xed\x5b\xe5\x4e\x75\x17\x3f\x2e\xab\x0a\xd7\x06\x49\xa4\x54\x3c\x8a\xe5\x50\x44\xb8\x83\x94\xb5\xe9\xdf\x02\xdd\xe6\x64\x72\xaa\xc6\x2e\x2d\xe7\x55\xa2\x44\x09\x81\x74\xcb\x61\x36\x40\x73\x4c\x3f\x1b\xce\xda\x83\xeb\x38\x19\xe6\x32\x9d\x4f\x51\x4c\xbf\x5a\xd4\x1f\xd4\x96\x37\xbb\x6c\xa7\x59\x36\x59\x8c\x98\x4c\x46\x36\xfd\x96\xec\xa6\x33\xa2\xb6\xc5\x9e\x4b\x02\xac\x65\xa1\x78\x28\x73\xe9\x9b\x59\xd1\xa9\x43\x03\x4b\xb3\x82\x33\xe2\x9a\xed\xbe\xd6\xe8\x40\xb0\x6d\x3e\x71\xe0\xd0\x61\xe5\xf5\xb5\x7c\x25\x73\x71\x05\x6c\x7c\xae\xdf\xa4\x02\x0b\xfc\x40\x0a\x60\x88\xac\xd8\x42\x0f\x51\x10\x45\xa9\x01\x7b\x7b\x04\xfa\x9a\x76\x68\xb2\x7c\xfb\x07\x5c\xbd\x5f\x8e\x73\x76\xf9\x6e\x81\x75\x70\xd6\x57\xc6\x3c\x68\xbd\x1c\xfb\xe6\x76\x2d\x21\xe0\xdc\x96\x8b\x70\x90\x29\xaf\x5d\x87\x32\x39\x33\xd7\x1d\xda\x9f\xc1\x3e\x37\x37\xf7\x59\x29\x29\x5d\x49\x63\x4e\xc2\x70\xec\xfc\x8c\xd9\xd7\x4b\x89\xcb\xa3\x44\xd1\x56\xf2\x63\xa0\x81\xc5\xcc\x37\xe3\x4f\x8d\x4d\x29\x3f\x8f\xb7\xbf\x2f\xfd\x84\x15\xb7\xc2\x30\xea\xf3\xe5\x78\x66\xd9\xac\x55\xc8\x1d\xeb\x70\x5b\xa4\xf3\x93\x22\x2e\xbf\x49\xcb\xf8\xba\x82\x0b\x8a\x0b\x29\x5d\x11\x55\xee\xfd\xe1\xa8\x22\x4c\xbc\xe2\x2a\xa8\x41\xe1\x92\xa9\xbc\x11\xf4\xe7\xf6\x22\x96\x89\x35\x67\x21\xac\xdb\x95\xfc\xb3\xb9\x9e\x9e\x99\x68\x4d\x54\x22\x1c\x98\x07\x9f\x3e\x09\x55\x4c\xfb\x2f\xd1\x38\x7e\x1b\xde\x43\xbc\x35\xf4\xe1\xdf\x82\xfb\x70\x69\x3f\x57\xda\x12\x4b\xfb\x2e\x17\x6c\x84\x6d\xd4\x89\xfa\x83\xce\xd2\x43\x12\x26\xf9\x9c\x97\x4b\x74\x91\x8b\x46\xa7\x83\x4e\x50\x0a\x23\x8f\xb1\xdf\x7f\x38\x7d\x60\xf4\x3e\x8b\x87\x4a\xc4\x4a\x69\x41\x12\xf2\x7f\xa1\x0a\x13\xf4\xa9\x6f\x85\x66\x45\x23\x28\xed\xa7\x41\xc5\xa9\x2b\x4f\x82\xf6\x20\xb3\xac\x35\xdc\xd2\x1a\xd8\xeb\x78\x79\x0e\xcc\x55\x06\x32\x12\xd3\xd9\x42\xd9\x0c\x70\x38\x00\xaf\xc5\x52\x9e\x4c\x5e\xf7\x48\xb7\xe8\xa1\x4a\x23\x82\x9a\x30\xf4\xe4\x4a\xa6\xfe\x83\x48\xcd\xc2\x36\x93\x3c\xfb\x30\x0b\x72\xd0\xae\xea\xa7\x86\x97\x9b\x41\xd2\x8d\x8d\xa3\xac\x90\x3b\x1b\xe5\xbb\x2c\xcb\x94\x96\xe7\xf4\x1c\x86\x22\x4b\x51\xe7\x71\x96\xe1\x45\xf9\x05\xea\x8e\x22\xa3\x6b\xf5\x4f\x7d\xb7\xd1\x7a\x99\x02\x3b\xab\x9c\x11\x62\x1d\xee\x2d\x38\x21\xd4\xc4\xf0\x8e\x07\x47\x97\x7f\xdf\x3b\x7c\xb3\xbf\xe8\x06\xa2\x2e\x07\xe9\x28\x4e\xe3\x62\xb6\x42\xd3\xda\xbd\xca\x2b\xcd\x3b\x7b\x9c\xcd\xf1\x4b\xc1\x31\xd7\x18\xcf\xed\x85\xc4\xb7\x15\x5d\xe3\x7a\x25\x5f\xbe\xa5\x28\x5a\x60\xb9\xd7\xf3\x24\x4a\xaf\xa6\xd1\x15\x26\x02\xb0\xe8\x75\x73\x73\xd3\x5e\x19\xc5\xf4\x13\x35\xc8\xe3\x49\xd1\x32\xd0\x5a\x1a\x1a\x7a\x1d\x38\x42\xf1\xb6\x2d\xea\xb2\x7d\xd5\xa6\xb3\xec\x32\x51\xda\x68\x5f\xd5\x14\xb9\xbc\x92\x1f\xa4\x6a\x8a\xb7\xfa\x86\xc1\xad\xab\x6f\x35\xde\x36\x31\x7e\x0c\x93\x51\x82\x91\xba\x56\x6b\xbc\x6d\xfc\x99\x89\x7e\x6a\x43\x4c\x56\xc1\x67\x22\xc2\x10\xb3\x3c\x0f\xa1\x6f\xc1\xbc\xcd\xe5\xa0\xaa\xdb\x91\x37\xd4\x62\x34\x2e\xb3\x57\xcb\xbd\xbc\x4a\x4c\xbf\x73\xfb\x32\x44\x9e\xbb\x73\x39\x0b\xdb\x52\x0c\xc6\xee\x65\x01\x96\x3d\x77\xb1\x08\x59\x21\xde\xea\x11\x00\xcb\xcf\x44\x56\x73\x33\x91\x07\x49\x36\x12\xeb\xd8\x7f\xfd\xcf\x4c\x2f\xd9\x14\x6f\x83\x5c\xc0\xe7\xae\x80\x60\x2b\xcb\xa0\xac\xf9\x7c\x56\xbd\xa2\xf1\x2d\xb0\x6d\x55\x59\xb2\x44\x49\x09\xbb\x56\xb8\xab\x27\x49\x14\xbb\xb3\x8a\x12\xa3\x6a\x72\x8f\x7d\xd0\x5b\x40\x1c\x22\x91\x4d\x43\xd1\x38\x17\x22\xf4\xff\xa5\x12\xd9\x9e\x48\xbc\x3d\x3f\xb7\x6e\x68\x17\x17\x18\xbb\x03\x18\x78\x0b\x46\xf5\xd1\x1f\x7f\x11\xfb\x8b\xb1\x0c\xb7\xec\x76\xbd\xcc\x32\xb4\x1a\x6e\x98\xe2\x97\x11\xc5\x41\x6f\x68\xce\xd1\x22\x01\x4f\xa5\xa7\x69\xf9\xcb\x2c\x5b\x84\x33\xbc\xf9\x42\x0d\x6d\x55\x87\xdf\x45\xed\x43\x6d\x47\x6c\x35\x45\x6d\xa6\xff\x15\x8b\x30\x9f\x77\x24\x17\x2d\xdc\x76\x44\xd6\xc5\x8a\x7f\xbf\xfb\x3c\x06\x9b\xa3\xf2\xa7\x4f\x15\x55\x0e\xee\x98\xd2\x50\x67\xd1\xd5\xd2\xfc\xfd\xe4\xa0\xe8\x45\x54\xf8\x41\x31\xd4\xa4\xba\x06\x86\x0d\xc0\xf1\x3d\x23\xab\x74\xcb\x00\xa7\xe9\x7b\x49\x80\xf8\x0c\x2f\xb8\xf7\xe4\x6e\x89\xb3\x99\xef\x37\xc9\x0b\xb7\xc2\x6f\x62\x79\xca\xd6\x46\xfd\x16\x4a\x40\xe0\xe2\xe8\x9f\xf8\x7a\xe9\xd9\x0e\x85\xc6\x20\xf7\xd0\x4a\xa7\xf0\xde\x7f\x07\x3b\xbc\xb0\xf6\x40\x15\x81\x67\x69\x93\x7c\xc9\x7c\x01\xca\xb3\x3e\xe7\x0b\xcd\x1e\xae\xa1\x16\xe1\xb3\xa1\x57\xee\x80\x8c\x1a\x6f\xd2\x28\x9f\xd5\xc3\x97\x0d\xb1\x53\xaa\x8f\xb0\xbb\xc4\x5d\x92\x53\x20\x31\x4a\xa2\xa2\x90\x41\x95\x54\xe6\xa6\x8a\x76\x70\x0d\xec\x9d\x9c\xb9\x02\xaa\x26\x75\x8f\x83\x9b\xdd\xa4\xc1\x4b\xf0\x1d\x62\xdf\xfa\x03\x30\xa2\xd2\x94\x5f\x99\x2b\xcb\xba\x6b\x86\x23\xbc\x05\x05\xee\x8b\x9e\xd8\xf6\x28\xf0\xcb\x2c\xe3\xf5\x7c\x45\x4f\xdc\x73\xb6\x58\x8c\xa8\xae\x3b\x33\x2d\xe4\x6a\x09\x29\xb4\x79\xdd\x14\xb5\x7e\x6d\x47\x6c\x33\xea\x5e\x01\xe0\xb2\xed\x67\x4f\x35\x00\x17\x41\xd4\x94\xa6\xb6\x23\xee\x01\x64\xcf\x89\x61\x0e\x91\x25\x8a\xc3\x52\x09\x91\x69\x0b\x73\xa3\x57\x97\x24\xa9\xd4\x20\x9b\x14\x03\x25\xf5\x71\xce\x22\xbb\x71\x9a\x94\x1b\x1d\xda\x57\x38\x4b\x57\x0b\xf8\xe3\x69\x01\x7e\x4c\xa5\x20\xde\xe5\x28\xd7\x2d\xe1\x1c\xce\x75\x6d\xb1\x03\xde\x92\x64\xe9\xed\x76\xdb\xc5\xef\x63\x72\x91\x8b\x72\xca\xf4\xdb\xe4\x76\x12\xff\x5b\x49\x29\xdc\x52\x56\xd2\x2b\x9e\xca\xc1\xe0\xcb\xef\x16\xa1\x34\xe2\xf8\x0f\xbb\x0e\x27\xfc\x4b\x3c\xe8\xcb\x9b\x59\xfa\xc5\x3f\x46\xda\x21\x3f\xe9\x4e\x94\x5f\x51\xa6\x1d\xf0\x45\x05\xa7\xef\xc5\xc1\xf3\x5c\xa3\x84\x8e\x42\x10\xee\xff\x73\x5c\x5c\x7b\x71\xf7\x11\x3a\x62\x7e\xae\x72\x65\x0b\xea\x53\x6b\xfa\x84\x1e\x6c\xf3\x9d\xf1\x59\xc5\xea\x10\x83\x1c\xbe\x1d\x65\x29\x79\xfe\x73\x87\x0e\xcc\x50\x0b\x91\xdc\x6c\x4f\xbf\x94\xdc\xad\x84\x7a\xdf\x32\x10\xe0\x8b\xf8\xce\x2f\x23\x83\x44\x34\x2a\x48\xdf\x39\xba\x95\xf4\x6b\x80\x66\x17\x26\x1f\x0a\x1c\xad\x7c\x28\x73\x53\x42\xf5\x6a\x1a\xe5\x51\x5a\x48\x39\x6c\xf8\x14\xec\x5d\x39\x7a\xc1\xda\x27\xca\x01\x6c\x4f\x83\xba\xdd\x56\x40\xc9\x35\xe1\xdb\xa9\x28\x8d\xb3\x02\x85\xa3\x14\x29\xa1\x75\x6c\xa0\x7f\x2a\xf1\xd6\x25\x05\x22\x17\xfd\x35\xb4\x90\x99\xd2\x76\x45\xa6\x37\x67\x38\x1d\x48\x4a\x0f\xc0\x2a\xa7\x18\x4c\xe6\x24\x47\x63\xb4\xcb\xc0\xc2\xc8\xa4\x38\x18\xf9\x5f\x33\x88\xc1\x12\x05\x60\x7d\x00\xb8\xfa\x95\xb8\x8e\xd2\x61\xe2\xc9\x60\x66\x72\xe8\xe0\xd9\x46\xdf\x54\x0e\x92\x8d\x1b\x64\x32\x15\x7f\x70\x1e\x19\x3b\x1a\xc4\x6d\x93\x83\xfc\x8b\xa8\x7b\x85\x06\xe1\x1b\x13\x77\xa2\xed\x73\x49\x7b\xc9\x15\x91\xa5\xc0\xba\x65\x99\x89\x15\x6f\x89\x39\xe7\x79\x61\x39\x04\x7b\xd0\xb5\x74\xe3\xdc\x23\xfc\x74\xea\x1b\xdc\xef\xd0\xbc\xd2\x42\xca\x20\xf2\x33\xa9\x6f\xa0\xdf\xa7\x23\x0b\x55\x8e\x6c\x90\x1f\x0c\x2e\x97\xf3\xed\x8b\xf9\x4e\x6d\xe7\xf7\x6c\xb3\xfb\x17\xdc\xc1\xcd\xde\x0b\xbe\xf7\x5a\x98\x7e\x2b\xb8\xcf\xb4\xa8\xeb\x20\x6e\x37\x85\x06\x6a\x2f\x34\x0b\xd3\xd6\x76\xb4\x69\xe6\xe6\x24\x92\xab\xce\xaa\x8e\x14\xe8\x76\x45\x88\xe6\xdd\x66\xbe\x63\xb6\x3b\xcd\xc8\x80\xaf\x7c\x12\xb6\xdb\xf7\xc3\x93\xf0\xa6\x88\x93\xe5\xac\xb5\x11\x93\xf3\x6c\x5c\x19\x3b\xb3\x92\x8b\xb5\x49\x62\x1d\xf4\x9c\xe7\xee\xa8\x44\x4f\x33\xb8\xf1\x58\xaa\xfa\xb6\xe6\x75\x6d\x12\x6c\xc7\x02\x23\xa7\xbb\x06\x5e\xa6\xa9\xca\x12\xd9\x4e\xb2\x2b\x5a\x69\xe5\x5d\x2e\x9c\x6d\x76\x7f\x5f\xcc\xef\x7d\xbe\x85\x51\x09\xe6\x67\xb7\x4a\x53\xe7\xa5\xda\xa4\xd1\x95\x59\xe7\x92\xe3\x37\xd7\xb2\x95\xdc\x9d\x39\xcd\xcb\x79\x06\x98\x38\x57\x2e\x34\x9d\xd8\x66\x19\xbf\x97\x95\xbc\x46\xa8\x97\x0f\xf0\x61\xf9\xfe\xef\xa5\x33\x9e\x3d\xab\x2a\x3c\x84\xa1\xdf\x2d\xbc\x56\xc3\xf5\xbe\x6c\x9b\x70\x02\x7b\x37\xbb\x75\x5f\xa2\x18\x32\x1d\xe7\x68\x30\x97\x2d\x6b\x58\xcb\x76\xf9\x4d\xd2\x2d\x79\x1b\xd8\x05\x5c\xa0\x85\x58\xa4\x5c\x60\x08\x6e\x8d\xf5\x1e\xe6\x62\x3e\x78\xd4\x1a\x5c\x04\x31\x09\xa6\x43\xdd\xc7\x37\x1b\x0d\x3f\xce\x86\xd3\x44\xb6\xe5\x87\x49\x96\xc3\x81\xe2\xdc\xfa\xee\xda\xda\xe7\x06\xea\x80\x20\xba\x89\x74\x4a\x57\x49\xd6\x8f\x12\x70\x92\x5d\xb7\xdc\xc2\xba\x78\x6a\x5e\xec\x18\xe5\x93\x92\xc9\xa8\xa2\x19\x3c\xb6\x8d\x6e\xe2\x74\x98\xdd\x54\x34\xa3\x17\x3b\xe2\xf7\xcf\x8d\xb5\xcf\xcd\xdf\x3f\x5f\x34\xb7\x1f\xee\x9c\xdb\xb3\x92\xcb\xdf\xa6\x71\x2e\x9b\x38\x85\x26\x4d\xa1\xf1\xfb\x9a\xa5\xc2\xa2\x4e\x49\xbd\x7f\x5f\xeb\x6c\x88\x34\xfa\x35\xfa\xa0\x97\xed\x57\xe0\x87\x85\xfe\xd9\x52\xc5\x4c\x8a\xeb\xa2\x98\x08\x0d\x4e\x2a\xc8\x4f\x07\x3a\x16\xdd\x52\xbf\x50\x3b\x9d\xce\x55\x5c\x5c\x4f\xfb\xed\x41\x36\xee\x44\x49\x94\x0e\x92\x28\x7f\x27\x3b\x06\x60\x67\x0d\xae\x05\x68\x2c\x7a\x82\xc6\x55\xaf\xc1\x83\x5a\xc3\xbe\x0c\xdf\xd1\x2b\x18\x8d\x32\xd1\x38\xb6\xc5\x6f\xa6\xeb\x34\x4f\xf8\xf3\x69\x9e\xd0\x8b\x8f\x49\xdc\xe7\x6f\xf4\x6f\x7a\xf5\xbf\xf8\x73\x9c\x6f\x6b\x28\x47\x32\xcf\xe5\x90\x9a\x04\x62\x99\x6d\x9d\x64\xc3\x48\x5d\x5b\x11\x71\x28\xa5\x19\x28\x94\xa9\x3c\x9e\x80\xc5\x90\xf7\x68\x77\xe0\x4d\x2b\xc3\x57\x01\x7c\x7d\xbc\xd7\x04\x1d\xac\x1d\x51\xfb\x61\xff\xac\xd6\x04\x54\xd4\xc7\xf7\x4d\x1a\x4d\x8b\xeb\x2c\x8f\x3f\xca\xa1\xab\x78\x30\xc9\xb3\x81\x54\xea\x45\x54\x44\xee\xe1\x10\x7e\xd5\xa0\xf3\x20\x4b\x0b\x99\x16\x67\xb3\x89\xdc\x11\x35\x2d\x02\xc6\x03\xe0\xc3\x3a\x1f\x5a\x37\x37\x37\xad\x51\x96\x8f\x5b\xd3\x3c\x91\xe9\x20\x1b\xca\x21\xf4\xb9\x96\xd1\x50\xe6\x4a\xe3\x93\xfe\xa9\x64\x71\x82\x5b\xfe\x0a\x5e\x38\x4f\x60\x51\xd7\x72\x8f\x57\x99\x9c\x44\x19\x02\x71\xae\xdf\xdb\xd2\xde\xae\xb2\xb7\x9d\x26\xc4\x87\x26\x59\x34\x8c\xd3\xab\xa6\x18\x44\xa9\x98\x2a\xb9\xb3\x26\x44\xcb\x62\xef\x34\x4f\x9a\x22\x9b\x14\xaa\x09\x31\x50\x7d\xc8\x7d\x07\x9e\x19\x41\x1b\xfb\xd6\x7b\xa5\x7b\x36\xd6\xfc\x00\xed\x5f\xa3\x0f\xa2\x3e\xcd\x63\x80\x8b\x66\x5d\x07\xda\xa6\x58\x1b\x0d\x29\xa5\xfe\xff\x6a\xbf\x20\x8c\xa8\x37\x4c\xa5\xaf\x80\x00\xd4\x7f\xff\xdc\xf4\xb6\x7d\x1e\xf8\xa6\xed\x66\x40\x69\x9c\x9d\xe6\x49\x1b\x7a\xd7\xb3\xf6\x34\x4f\xcc\x2b\xa5\xf4\xcb\x04\x45\xc0\x41\x96\xb4\x63\x2a\xe5\x6f\x4e\x0c\x90\xf7\xad\x35\xf4\x52\x79\xb1\x77\xb6\x87\x7f\xfd\x24\x73\x73\x76\x87\xd9\x40\x89\x0e\x71\x4a\x3b\x02\xb6\x99\x04\x95\x2c\x4d\xf4\xfb\x54\x92\x93\xcb\x88\x63\x13\x58\xde\xf3\xa9\x14\x75\x8b\x9e\x45\x86\x12\x1d\x36\xa7\xf4\x88\x98\x89\x8e\xe4\xc9\x28\xc9\x65\x34\x9c\xd9\x48\x72\x6c\x59\x41\x1b\x70\x70\xe6\x9f\x7e\x92\xf5\x3b\xe3\x48\x15\x32\xef\xa8\x7c\xd0\xd1\xfb\xd3\xfe\x55\xfd\xc7\xe1\x83\xee\x23\x13\x24\xdf\x86\xef\xdc\xbd\x2b\x40\x20\xb6\xa3\x84\x07\x84\x4a\x10\xf8\xa8\x0f\x8d\xc1\x44\xea\xd4\xe3\x84\xa3\x8d\xff\xc4\xa3\x19\xc1\xd4\x3c\x0c\x88\xaf\x2f\xb3\x7c\x1c\x15\x3b\xa2\xd6\xcf\xa3\xc1\x3b\x59\xa8\x9a\xf8\xdc\x70\x05\xeb\x97\x8c\xc2\x04\x62\x62\x8b\x3b\x41\x86\x16\x3b\xc6\x3b\xe1\x18\xd5\x4d\x0c\xd1\x45\x28\x2b\xdb\xa0\xaf\x48\x49\x01\x06\x0b\x73\x78\xdb\x10\x67\xab\x80\x41\xf7\x8e\xf1\xaf\x2a\x4b\x6b\x8d\x1d\x1b\x5f\x66\x27\xfd\xb7\xd3\xe3\xa3\xd2\x6c\x1b\x7e\x9a\xd3\xdb\x7f\xae\x9a\x6a\x54\x7d\x7f\xd1\xa2\x57\x0f\x83\x30\xad\x02\x96\xa9\xcc\xc3\x3a\x7f\x36\xd1\xa9\x9d\x0d\xbd\x37\x57\xb2\x68\x82\xbb\x17\xbf\x24\x68\xd1\x47\x19\x25\x4c\xdc\xe8\x78\xe8\xc4\x73\xb0\xcd\xc7\x22\x7c\x9f\xb4\x95\x8c\xf2\xc1\x35\x0f\xe5\x33\xcf\xc4\x66\x4f\xd4\xee\xd6\xc4\x26\x0d\xd8\x84\xf3\x85\xe5\xc4\x6c\xfb\x9e\xa8\x3d\x2d\x37\xaf\x8a\xfe\xeb\x6c\x68\xf2\x8b\xa3\xa7\xed\x41\x17\x04\x98\x0a\xae\x11\xd1\x5a\x9b\x9e\xd7\xaa\xb7\xed\x87\x6b\xcf\xb1\x6b\x4b\x6f\x6d\x6d\xc7\xdf\xea\x66\xb9\x19\x7a\x01\xd5\x76\x44\xa9\x5e\x48\xb0\x7f\x9f\x9b\xee\xfb\xc1\xb6\xe0\xa2\xf6\xe5\x28\xcb\xe5\xa9\x4c\x87\x0d\xc1\x7f\xd5\xb3\x86\x6e\x94\xd9\x3b\x12\x07\x7b\x9d\xa9\x62\x47\x24\x6d\xfd\x2f\x5c\x2d\xf0\x74\x12\x15\xd7\xfa\xa9\xfe\x57\x3f\x15\x9b\x6e\x3f\xc4\xa7\x4f\x50\x73\x10\x1a\x9a\xab\xd3\x6c\x26\x75\xcf\xf2\x62\xc7\x38\xe8\x24\x6d\xfd\xb3\x81\x75\x63\x55\x22\x9e\x8a\xfb\xf7\xef\x89\x1d\xf1\xc8\x04\xf2\xdb\xcb\xcf\x4e\xac\x49\x82\x46\xf9\x16\xce\xda\xe5\xa7\x16\x2d\x3b\x62\xef\xcd\xd9\xab\xfd\xa3\xb3\x83\xe7\x7b\x67\x07\xc7\x47\x88\xaa\xd1\x70\x28\x74\x63\xcd\x6d\xe3\x91\xd2\x74\x95\xf3\x55\x0e\x4b\x93\xb6\x6e\x69\xa9\x19\xae\x15\x3c\x83\x5b\x41\xff\x11\xd2\xa7\xa9\x92\x39\x2c\x11\xd2\xa8\x48\xa9\x9b\x2c\x1f\xce\x01\xc1\x9a\x6f\x8a\xda\x0e\x62\xa4\xe9\x13\x42\x5e\x30\x94\xcc\x0e\xc5\x6e\x3c\x6b\xd0\xa0\xf7\xba\x21\x7b\x1c\xb6\xbc\x92\x69\x01\x4d\xf5\x1f\xbc\xad\xfe\x8d\x6b\x07\xe7\x58\xf6\xa7\x57\x57\xc0\x2d\x78\x29\x3f\x2d\x2a\xe9\x7b\x89\x98\x77\x76\xdc\xaf\x64\x01\x8c\x00\x0b\x17\xa6\x47\xa2\x27\xce\x95\x4a\xd8\x5d\x4d\x54\xe7\xd3\x27\xaa\x1f\x25\xb2\xb6\x9a\x0e\x34\xb1\xf7\x9e\xc9\x3c\xcf\x72\xfb\xe4\x82\x4b\xa3\x04\x9a\xa1\xc2\xc9\xfe\xff\xf7\x66\xff\xf4\x6c\x4d\x38\xde\x29\xcd\x8a\x03\x53\x29\x4c\x0e\x91\x95\x0a\x6d\xe9\x96\xcf\x62\x57\x03\xc9\x7b\xf0\xf9\x7a\x0d\x98\x99\x1d\xb3\x16\xbf\xfe\xf6\x8f\x57\x27\xed\x75\xbd\x93\x66\x5b\xd7\xe1\x66\x8e\xdd\x97\x6c\xc6\x7a\x03\xa9\xc8\xa3\x81\xac\x07\xc7\x57\xaf\x10\x40\xb3\x67\x13\xae\xf6\xd3\x22\x2a\xe4\x8e\x09\xd1\xd6\x42\xde\x54\x05\x3f\xcf\xe4\x07\x7d\x8b\xc2\xf8\x6a\x4d\x3d\x79\xac\xff\xb3\x23\xd6\x69\x19\xd7\x9b\x62\x3d\xcd\x0a\x08\xe3\x8f\xe5\x50\xff\x84\xd6\xfa\x0f\x2d\xc3\x65\xd3\x42\xff\x19\xf5\xb3\x5c\xff\x91\xe5\x62\x1d\x98\xa3\x1c\x5b\xe1\xb7\x4a\x4c\xa9\xbf\x9e\xf5\x5a\xd8\xc2\x10\x89\x2b\x59\xec\x25\xc9\x89\x54\x93\x2c\x55\xf2\x95\x39\xee\x61\xf7\xca\x66\x06\x06\xce\xf4\x79\x36\x94\x15\xdf\xb5\xef\x4c\x6b\x98\x48\xb9\x21\x3c\x86\xdd\x60\xe9\x44\x7f\x13\x3d\x43\x98\x50\x4c\xda\x81\x7f\x1b\x6d\xa2\x0e\x75\x8b\xa6\x0e\x39\x72\x57\x7f\x41\x53\x9d\x24\xc9\x6e\xf4\x2c\x21\xf5\xbc\x99\x80\xa0\x19\x38\xc5\xd3\x3f\x5e\x1f\xbe\x3a\x3b\xfb\x89\xd6\x88\x94\x04\x00\x64\x38\x1a\xea\x03\xe3\xcf\x5d\xf4\x08\xbb\xaa\xde\x78\x09\x5e\xfd\x97\x75\xa4\xa2\x8d\x30\xd0\x3a\x97\x4e\x4a\xc0\x7f\xdb\x45\x76\x98\xdd\xc8\xfc\x79\xa4\xa5\xf0\x0b\x16\xee\x4e\x03\x2a\xef\x07\x1f\x54\xe5\x5b\x3e\xb0\x8a\x06\x75\x3f\xd7\xbc\xbb\x49\xcf\x2f\xe8\x71\x98\x87\x89\x0d\x9b\xb3\x02\xf4\xc8\xe6\x61\x02\x82\x2a\xf4\x39\xe4\xf3\x7c\x27\x67\x17\x0d\xef\xba\xb7\xcb\x61\x00\xfc\x9a\xc5\x69\xbd\xf6\x7f\x4c\x9a\xb8\xcf\x6b\xd6\xd5\x04\xa6\xa1\x29\xd3\x2b\x30\x30\xe4\xa2\xce\x79\x18\x41\x0b\x91\xd3\x0c\xf5\x29\xd4\x32\x8a\xe6\x2f\xd8\x0c\x1d\x72\x82\x5c\xaa\xda\xee\x81\xe1\x38\x3a\xf6\x0f\xf1\x82\x87\x93\xd3\xe1\x1d\x4d\x13\xd7\xa0\x3e\x91\xf9\x57\xf0\xf7\x0f\xbf\xfb\xbe\xc1\x06\x17\xab\x53\xa2\xb3\x3d\x3e\xd0\x27\x3d\xb1\xbd\x05\x4e\xc4\xec\xe1\x63\x71\x6f\x6b\x0b\xc3\x32\xdc\x8c\x7a\x3d\x71\x6f\xeb\xbe\xdd\x94\x4e\x47\x9c\xca\x82\x11\xae\x60\xa5\xcc\xe3\xe0\x73\x62\x4b\x73\x05\x62\x47\x6c\x79\xed\xb1\x89\xd7\x96\xd7\x55\xc7\x5b\xe3\x0c\xdd\x43\x7b\xa2\x06\x7c\x39\xe4\x59\xab\x78\x31\xa9\x71\xe4\xe9\x74\x44\x2e\x27\x49\x04\x29\x11\xd2\x22\xcf\x12\x31\xb8\x8e\xf2\x68\x50\xc8\x5c\xd9\x56\x3c\x59\x01\x1c\x0a\xc6\xe6\xa3\xec\x08\xa9\xba\x09\x52\xbd\x73\xfe\x7f\x06\x7b\xad\xff\x33\xf8\xe5\xa2\x73\x15\x37\x35\x8f\xe4\x98\x6e\x2f\xa7\x01\x03\xc9\x27\x4a\x08\x54\x03\xd0\x48\xcc\x59\x4b\x63\xb5\x48\xf7\xe1\x1a\x92\x0c\xb6\xc5\x6f\xb6\x38\x76\x67\xf9\xf7\xaa\xbe\x46\x48\x56\x5b\x73\xc9\x99\xb0\xc6\x35\xdf\xe3\xed\xad\xfb\xb0\xb0\xc4\x21\x70\xc6\xfd\xd5\xfe\xde\x8b\xda\xf2\x49\xa5\x19\x31\xc0\x35\xb6\x26\x96\xd9\x29\xa3\xd4\x2a\x10\xed\x7d\xc6\x60\xae\xf1\x3d\xa6\xb9\x35\xd9\x3d\xd9\x44\x58\xb6\x95\x26\x74\xb9\x54\x59\xf2\x1e\x77\xb3\x59\xfa\x16\x3d\x69\xcc\x93\x31\x3a\x1d\x6c\xe0\x7f\x05\xf6\x8f\xb7\xf9\xf9\x5a\xa6\x22\x4a\x85\xbe\x01\xf0\xad\xc8\x06\x83\x69\xae\xa8\xed\xd9\x75\x9e\xdd\xa4\x56\x2d\x0e\x17\x46\x21\x3f\x14\xd3\x28\x01\x7e\xda\x25\x1a\xe3\x50\x01\x1a\x7e\xb7\xa9\xa7\x7b\x2d\x22\x25\xd6\x8f\xb2\x42\xbc\xcc\xa6\xe9\x10\x93\x34\x1d\xa0\xa3\x7e\x22\x4e\x65\xfe\x5e\xe6\x02\x30\xa8\xbd\xbe\x10\x2d\x02\xfc\x33\x68\x97\xca\x1b\xec\x0e\xd1\x00\xed\xd3\xb3\xbd\xb3\x37\xa7\x97\xcf\x8f\x5f\xec\x9f\x9e\xbb\x4d\xbc\x68\xf8\x34\xf7\xb3\x65\x01\x07\xd7\xd3\xf4\x1d\x23\xf7\x9a\x20\x66\x69\xbd\xa6\x97\xbe\xc6\x6f\x58\x68\xd8\x10\xbf\x53\x0f\x24\xf3\xf4\xf0\x73\xc3\xeb\x2b\xd3\xa1\xd7\xd5\xbf\x61\x6c\x35\x40\x57\xa1\x71\x10\x15\x08\x4a\x71\x5a\x68\x15\x35\x3d\xef\x06\xa9\x11\xde\xb6\xcc\xfb\xda\x05\x3b\x66\xae\x93\x3e\x0b\x57\x1f\x63\x9f\xce\x7c\x4c\xe2\x7e\xfb\x6a\x9a\x7e\x8c\x27\xb6\x4e\xa0\x1b\xa8\xcc\xf3\xa6\xe8\xb3\xd2\x92\xfc\x04\xca\x3c\x78\xe8\x36\x41\xbf\x62\x2f\x4a\x18\x29\x88\x56\xd1\xb5\x45\x5f\xb6\xc9\x04\xeb\x0d\xaf\xb7\x3b\x3b\x01\x8a\x97\xe7\x37\x94\xa3\x24\x2a\x64\x79\x8a\x71\x0a\x2f\xfe\xfd\xe6\xe8\x00\xae\x04\x8c\xd0\x19\x38\xc8\x06\x09\x1a\xfb\x27\x27\xc7\x27\xa0\x34\xfe\x0d\xd1\x91\xd8\x70\x9a\x09\x34\x73\xc9\xf9\xf0\x21\xbb\x07\x96\x91\x0f\x24\x50\xe0\xba\x46\xed\xca\x04\x4a\x36\x98\xe0\x73\xba\x7f\x26\xce\x0e\x5e\xef\x1f\xbf\x39\xb3\xc2\x18\xf1\xf8\x28\xa3\x9a\x1f\x2c\x91\x92\x1e\xbb\x92\xc5\x19\xbe\x71\x1d\xaa\x8f\x95\x6e\x0d\xac\x74\xbd\x51\x71\x5f\x1b\x0a\x42\x20\x0c\x0d\x29\x53\x10\xdb\x82\x96\xf7\xb3\x3f\x8b\xa3\x17\x46\xbf\xea\x69\x8b\xac\x3e\x0f\x27\x83\x1c\x99\x1e\xd1\x4d\x1e\x17\xd2\xaa\x18\x6b\xd3\x62\xd4\x7a\x04\x3c\x9d\x7e\x29\xd3\x61\xdd\x6c\xd8\x8b\xfd\x97\xfb\x27\x27\xfb\x2f\xd6\x70\x71\x87\x59\xaa\xbb\xd1\x5d\xd1\xf0\x9f\x0e\x32\x2d\x3f\x14\xd2\x3c\x1e\x45\x71\x52\x27\x49\x34\x78\x16\x36\x55\x96\xb3\x32\xf0\xe8\x05\x12\xff\x9e\xed\xcb\x8a\x31\x8f\x86\x6b\x9f\xd7\xd6\x40\xc2\x6c\x33\x23\x85\xdd\x04\x30\xef\x1b\x77\x33\x51\x77\x02\xb6\xab\xe6\xec\x14\xe4\xe6\x07\xea\xf2\x1b\x68\x07\x10\xd1\x94\x32\x8c\x41\xea\x85\x7c\xa4\x79\xa0\xab\xec\x8e\x16\xdd\x77\xcf\xd1\x02\x22\x6a\x3f\x1d\x9f\xe2\xbf\x6f\xe0\x9f\x17\xfb\x87\xfb\x67\xfb\xb5\x8b\xf6\x28\xcb\xf7\xa3\xc1\x75\x1d\x3d\x6e\x5e\xc3\x8e\x34\xd6\x9c\xa2\x9f\x3f\x17\x75\xdc\x31\x1c\x20\xcc\xe9\x1c\x9f\x04\x62\x87\x3f\x41\xdd\xc0\xf2\xdb\x8b\x2c\x06\x2c\xff\xe8\xaf\xd1\x87\xba\x37\xf5\xd5\xec\x02\xbf\x5b\xf5\x15\xe1\xd6\xe7\x46\xc3\x58\x4c\x4a\xc6\x47\xb4\xa8\xf9\x46\x47\x63\x66\x5a\x47\x82\xb1\xde\x68\x93\x51\x6f\xed\x73\xf3\xf7\xf5\xc0\xf6\xb4\xbe\xb3\xfd\x5d\xd3\xb4\xdc\xe9\x6e\x37\xd7\xf5\x15\xba\xbe\xf3\xf0\x21\xfe\xa5\xd6\x77\xba\x0f\x9b\xeb\x81\x45\x6c\x7d\x67\xbb\xdb\x5c\xaf\x30\x7c\xad\xef\x6c\x3f\x68\xae\xff\xa6\xd6\x77\xee\xdf\x6b\xae\x4f\xf3\x64\x7d\xe7\xbb\xed\xe6\xba\x26\xc7\xeb\x3b\xdd\xee\xe7\x8b\xe6\xf6\x77\xab\x58\x24\x4b\x13\xb5\x7b\xe1\xd9\xd4\xac\x51\x68\x9e\xf1\x86\x34\x3b\x90\xb0\xcb\xe4\x64\xcf\x46\x68\x21\x64\xba\x79\xa6\xd0\x52\x6d\x34\x1f\x4e\xf3\x64\x2d\x20\xc8\x04\xcc\xd7\xae\xa2\x45\x8a\x8c\x35\xc1\x67\xac\x5a\xb3\x32\x15\x23\x7c\xcc\x9d\x47\x6a\x1c\x7e\x94\x81\x33\xd3\x2b\xc1\x0b\x20\x99\x76\xcb\x06\x4d\x5f\xe4\x04\xce\xd4\xa2\x4f\xe4\x55\x34\x98\x19\xe3\x91\xe1\xb0\xf5\x38\x4c\x8c\x08\x7c\x93\x30\x54\xd3\x3c\xfd\x13\x73\x4a\xb3\xd9\x19\x96\xdc\xbd\x0e\x73\x49\x4e\x0a\xa5\x11\x9b\xac\xd5\x8f\x56\xc1\x8d\xda\x54\xa1\x1b\x3d\x04\x4b\xa1\x29\xf9\xec\x9f\x3f\xed\xbf\xb8\x3c\xfe\x51\xf4\x84\x5d\x2e\x17\x52\x80\xe4\xd9\xda\xca\x6b\x5e\x35\x07\xf3\x1f\xef\xd6\x7d\x78\xfb\x7e\x07\x69\x71\x6f\xbb\xba\xdb\x2e\x23\x46\x97\xd7\x11\x78\x46\xb2\xcc\x9e\xb4\x16\xa5\x3c\xcb\x55\xa1\x2d\xb6\x27\x38\x23\xd0\xa2\xd0\xb6\xf2\x63\xa2\x1b\x8a\xce\xc6\x28\xcf\xc6\xdd\x26\x28\x7b\xb6\xf1\x9f\x7b\x4d\xd1\x6e\xb7\x37\x3a\xee\x8c\x18\x57\x3b\x93\x8c\xc7\x0d\x00\xea\xbb\xe3\x77\x5d\xba\x5c\xca\x22\x4b\x39\x64\xfd\x3a\x9e\x5e\x1a\xc6\xa0\x06\x64\x5b\x5d\xc7\xa3\xa2\xde\x70\xd9\x13\xef\xd8\x1a\x90\x20\xef\xc6\xe9\x54\xee\x1a\x59\x89\xa1\x3d\x01\xba\xc3\x62\xe4\xdc\xad\x5f\x68\x01\x05\xac\xb3\x5a\xb2\xc6\x2b\x9c\x3a\x6c\x8a\xda\x78\xaa\x0a\xd1\x97\x22\xb5\x2e\xc6\x36\x9d\x1f\x29\x54\x8c\x5a\x67\x22\xe2\x54\x84\x35\x29\xc1\x6b\x4f\xef\x97\xad\xf4\xdb\xe0\x9c\x61\xd6\xff\xf5\x7c\xc2\x4a\x36\x4f\xc2\x0c\x8e\xe5\xc4\xa9\x98\xb2\x6a\x0d\x24\x7d\x70\x4a\x25\x41\x40\xc5\x1f\x65\x13\xb3\x11\xa0\xc1\x6a\x0c\xd1\x01\x76\x83\xd5\x75\x1e\xa7\xef\x9e\x4d\x47\xde\x1e\xf7\xa7\xa3\x26\x74\x75\xb1\x5b\xfd\xe9\xa8\x6d\xeb\xa6\xf4\xcc\x4b\x56\xb7\x7f\xd7\x12\x29\xdd\x54\x4d\xfb\xa6\xfa\x35\x6b\x63\x1f\xd7\xb7\x08\x3e\xf6\xe2\xc0\xe1\x39\x2f\x67\x35\x1d\xd1\xe4\xf4\x72\x8e\x52\x08\x9f\x21\xa5\x31\xc0\x3a\x95\x05\xf7\x18\x18\x4a\x55\x80\xc7\x1e\xfc\xcf\x65\x36\x1a\x29\xa8\x10\xd3\x04\x27\x51\xf8\xcd\xed\x72\x2a\x1f\xd8\x51\x69\x7a\xa3\x1b\xf1\xd1\xd3\xc2\xe3\x63\x2c\x41\xe7\x66\xe1\x3e\x60\xfe\x12\x9b\xfa\x5b\x0d\xfe\xb1\x5d\x4f\x11\xc7\xb3\x6c\x76\x3a\xe2\xa5\x21\xbd\x45\x26\xb2\x7c\x18\xa7\x51\x3e\xc3\x69\xf9\x68\x14\x43\x86\x4e\x11\x63\x62\xe7\x5d\x11\x6f\x6e\xfa\x83\x3b\xb7\x1f\x14\x9b\x22\x06\xe4\xc9\x07\xe7\x6c\x58\x31\xaf\xd5\xd4\x44\xaa\xfc\xb7\x2c\x66\xce\xf7\x24\xad\x16\x99\x50\x71\x7a\x95\x48\x1b\x1e\x66\x62\x8f\x9e\x43\x83\x9d\x50\x6e\xf5\x8b\xf3\x36\x45\x42\xeb\x3d\xc9\xf4\xd5\xa9\x5b\x34\x6d\x86\x78\x33\xef\x41\x94\x0c\xa6\x5a\x88\x42\x35\x13\x6e\x3e\xbc\x4c\x64\xea\xb2\x91\xc2\xfc\x61\xee\x4d\xf0\x63\x20\xf1\x98\x8a\xf3\xe0\x72\x04\x8b\xa1\xfb\x6f\x9a\x96\xe7\xf1\x85\x2d\x05\xca\x4e\xa7\x96\x42\xf4\xd4\xb1\x91\x11\xaf\xa9\xd0\x96\x9f\xce\x25\xc1\xbc\x3e\x60\xe6\x53\x5f\x35\x30\x68\x22\xd8\xc8\x1c\x62\x40\xee\x60\x8d\x5d\xb4\x5a\x93\xcc\xa1\x8d\xfe\xac\x99\x4f\xd5\x5c\x82\x14\xfc\xc0\xd0\xed\x9a\xc3\xf2\x26\x2d\xbe\xdd\x71\xf9\xf7\x42\x46\x5a\x97\xf3\x0b\xd2\x81\x50\x1e\xdb\xf3\x0b\xc2\x49\xca\x5e\x6b\xe9\xe6\x7e\x1a\xf5\x13\xd9\x79\x11\x2b\x08\x34\xf1\x72\xad\x4c\xc1\xab\x2f\xcb\x45\x01\x7e\xe6\x57\x6b\x9d\x8e\xa3\xa0\xb2\x30\x24\x89\x5d\x92\xa9\xa3\x9c\x99\x2d\xbd\x66\xba\x3c\x9b\x8e\x1e\x09\xd1\x63\x68\xb6\x1b\xbe\xef\x3e\xa4\xf7\xc4\x31\x94\x1a\xdc\xdb\x16\x3d\xc6\x1a\xf8\xef\x89\x1b\xa3\x9f\x4d\x43\x35\x71\xc6\x9c\x09\x0c\x47\xb4\x60\x30\x0b\x86\xb1\xd2\x08\x08\x15\xd9\xaa\x87\x2b\x58\x37\xcc\x96\xe6\x6b\x88\x71\xfb\xfe\x0b\x18\xb7\x4e\x47\x40\x50\x82\x88\xb4\x58\x75\x6f\x5b\x14\xd1\x3b\xa9\x44\x77\xfb\x3f\x61\x0f\x13\xf9\x5e\x26\x62\x0b\x0c\xb9\xde\xa3\x87\x6d\xdd\xf5\xa0\x10\xb1\x4a\x6b\x85\xb8\xc9\xf2\xe2\x5a\xc4\x10\xb7\x33\x8e\xde\x49\x11\x0d\x87\x31\xa6\xff\x00\xc6\x75\x1c\x7f\x8c\xc8\x24\x0c\xae\x8a\x59\x1e\x5f\xc5\x69\x94\x00\x94\xd3\x31\x14\x33\x85\x92\xbc\x4a\x4c\xa0\x5a\x27\x24\x9c\x84\xe1\xd5\x9f\x37\x44\xf7\xfb\xef\x1f\xb4\xb6\xb7\xba\xf7\xc4\xdf\x64\x94\xb6\x92\x6c\x3a\x11\x3f\x44\x71\x02\x29\x4c\x87\xe2\x75\x94\xbf\x13\x7b\x7a\x02\xa6\xc3\xf6\x56\xf7\xbe\xee\xf0\x9d\xf8\x7b\x5c\x44\xc9\x4c\xfc\x34\xfd\x98\xc7\x18\x59\xb2\x97\x0e\x73\x39\x13\x67\xd3\x49\x5c\xa8\x38\xd5\xf8\x09\x19\x8a\x62\x25\x54\x36\x2a\x6e\xa2\x9c\xc6\x91\xbd\x8f\x87\x72\x28\x6a\x91\x6a\xc5\xaa\xd6\x84\x70\x10\x4c\x19\x3e\xd3\x7b\x97\x6b\x46\x3f\xcb\xc1\x9c\x1b\xcb\xa1\x06\x72\xa3\xcf\x40\x5a\xcc\xda\xe2\x20\x15\x69\x26\xe4\x7b\x99\x16\xe2\x26\x4e\x12\x0c\x55\x02\xc7\x04\xa5\x99\xa1\x6b\x99\x0c\x45\x12\xdb\xb2\x4d\x1a\xe6\x30\x1a\x47\x57\x52\x69\x40\x51\x1e\x2b\x5b\xac\xba\x70\xc9\x93\x0a\x3e\xca\x36\x0d\xfd\x27\x99\x8f\x63\xa5\xa8\x0e\xcc\x15\x44\x11\x81\x29\x3e\x4a\x67\x59\x0a\x8e\xee\x50\xdc\xd8\x9b\xa1\xf9\xe8\x64\x9a\x4f\x32\x25\x9b\x6b\x90\x5a\x69\x90\x4c\x81\xf7\x19\x64\xe3\xb1\xcc\x07\x71\x94\x08\xe6\x70\xa4\x30\x9d\x8a\x86\x9c\x14\x32\x87\x18\x20\xb0\xf0\x0f\x63\x8d\x51\xfd\x69\x21\x45\x5c\x68\x48\xa3\x5c\xca\x64\xd6\x14\x6a\x6a\xc3\xb9\xc0\xd7\x3b\x4b\x92\xec\x46\x7f\xc0\x24\x32\xd7\x50\x77\x68\x1e\x5d\x8c\xc6\x41\xdc\x28\xcd\x56\x00\x1f\x99\x66\xc0\x4b\x8e\x63\x95\x4b\xbd\x03\x60\xbe\xdd\x15\xb3\x6c\x6a\xdf\x6b\x50\x42\x0c\x92\x28\x1e\x63\x58\x81\x7e\x79\x93\x67\x05\x46\x1f\x19\xd4\x73\xcb\x28\x0e\x46\xd0\xa6\xb4\x48\x08\x49\xa3\x0d\xc5\x2f\x15\x90\xdf\x21\x1a\xbc\x4b\xb3\x9b\x44\x0e\xaf\xd0\x63\x3d\x35\x05\x05\x74\x0b\x61\xf2\xdd\xa1\x3f\xc9\x4d\x36\x4d\x86\xa2\x4f\xa0\xa2\xc9\x24\x97\x83\x18\xd3\x42\x4c\x0b\xe3\xaa\x47\x87\x75\x08\xa7\x61\xbb\x2d\xf6\xf4\xea\xb2\x1a\xc8\x58\x0b\x45\x09\xc3\x49\x43\x74\x6f\x32\x13\xe3\x28\x7f\x87\x41\xea\x6a\x3a\xb8\xc6\xcd\x61\xab\x84\xdf\xf4\x97\x4a\x37\xee\x4b\xbd\x03\xd5\x6b\xa1\xfb\xdc\x6b\xe3\x69\x48\xb3\x22\x86\x0a\x56\x33\xb3\xec\xb9\x1c\x67\xef\xe5\x50\x63\x7d\x44\x63\xa4\x7a\x70\x33\x33\x58\x8b\x0a\x10\x08\xe1\x44\x2e\xa2\x2f\x75\xf8\x17\xf4\xbe\x8e\xf3\x61\x62\x50\x17\x8a\xff\x83\x8a\xe7\xae\xd8\xfa\x30\x1a\x8d\x46\x0d\xf1\xc9\x66\xa1\x57\x9a\x84\xd6\xa9\xc1\x93\x27\x4f\x44\xf7\x61\xa3\xb2\x61\x6a\xb3\xd4\xbb\x82\xe6\x20\xbd\x6c\x31\xed\xea\xa9\x2c\xb0\x7a\xb2\xf8\xbf\xa2\xb8\xd1\x73\x75\x79\x44\x1f\x3c\x78\xb0\xdd\xd4\x78\xfb\x4e\xca\x89\xe9\xa0\xb6\xf5\x6e\xdf\xeb\xb6\xfa\xb1\x26\xd4\x7d\x39\x88\x34\xd2\xdc\xc0\x71\x1a\x48\x41\x81\x4d\x71\x0a\x11\x52\xc2\xe4\x2b\xa3\xd4\x63\x91\x92\xe2\x3f\x7b\x48\x0e\x46\x51\x9c\x60\x93\x14\x8b\x2c\x8a\x27\x62\x7b\x6b\x6b\x4b\x3c\xc5\x7f\xa0\xa8\xe2\xae\x65\xf2\x5a\x3d\x91\x12\x43\x38\xcc\x2c\xfb\x80\xab\xa5\xba\x62\x53\xaf\xe7\xf9\x24\x53\x9b\x9b\x17\x7a\x15\x76\xbd\xe5\x52\xdb\x62\x53\xa8\xae\x7b\xf1\xd9\x2c\x4a\xab\x95\x9a\x0c\xfb\xaa\xab\xc7\xf6\xf0\xc1\x83\x6d\xaa\x62\xa2\xb6\xbd\x07\x5c\x86\xd2\x9f\xfc\x04\x70\x1f\x3f\xd6\x3b\x80\x90\x3f\xaf\x55\xe8\xc6\x68\xdb\xed\x25\x75\x6f\xeb\xcb\x2e\xa9\xbf\x6e\x81\xbf\x6e\x81\xbf\x6e\x81\x7f\xd7\x5b\xa0\x44\x16\x7e\x27\x67\x61\xf0\x8f\xd2\xfd\x93\xa9\xba\xa6\x80\xd0\x5d\xa1\xa4\x14\x64\x50\xac\x37\x28\xbe\xdd\xfc\xea\xcb\x24\xbb\x21\xef\xc3\x22\x8a\x13\x85\x9e\x85\xbf\x5c\x1e\x1d\x5f\xbe\x3c\x7c\x73\xfa\x6a\xc7\x2a\x05\xe1\x32\xf8\xe5\xf2\xa7\xbd\x93\xb3\x83\xbd\x43\xf6\xb6\x8b\x2f\x4e\xff\x79\xf4\xdc\xef\xb3\x8d\x2f\x5e\xbe\x39\x3c\xf4\x5f\xdc\xa3\x17\x07\x47\x07\xfc\x0b\x42\xdc\xc7\x17\xcf\x0e\x8f\x9f\xff\xc8\x9f\x8b\x07\xf8\xe2\xec\x64\x7f\xff\xd4\x7b\xf1\xb0\x49\x73\x3f\x31\x09\x28\x86\x52\xa1\xc0\x04\x29\x3c\xc6\x40\x52\xe2\x2c\xed\x0c\x25\xfb\xe5\xd2\xde\xb5\xc5\x91\xbc\xc2\x5a\xef\xb8\x60\x6b\x42\x6c\x60\xfd\x85\x3c\xcf\x72\xd5\xa4\xf2\x63\xef\xbd\xda\x0c\x53\x25\xd1\xf9\x9a\xaa\xac\x01\xe6\xa5\x59\x3e\x8e\x12\x24\x50\x70\x63\xd1\x5a\x1e\xfb\x73\x71\x6b\x79\x7a\x76\xb2\xbf\xf7\xfa\x72\xff\xe8\x85\x69\x40\x6b\x79\xb4\xbf\xff\xe2\xf2\xc5\xc1\xf3\x33\xdb\x91\xd6\x72\xff\xe4\xe4\xe8\x98\x43\x6b\x75\x7d\x50\x27\x27\xc7\x27\xf0\xbe\x45\x3d\x5e\xec\x9d\xed\xb1\xc7\x42\xb4\xee\xa1\xd4\xfb\xcb\xe5\xeb\x7d\xde\x41\xb4\xcc\xea\xbf\x79\xe9\x75\x10\xad\x07\xa6\xc7\xdf\xf7\x4f\x4e\x0f\x8e\x8f\xcc\xeb\x96\x5d\x7d\xbe\xb4\x20\xd2\x70\x44\x7a\x7e\xfc\xfa\xa7\x93\xfd\x53\xdd\xb3\x84\x4e\xcf\xf6\x4f\xcf\x2e\x4f\x7f\xda\xdf\x7f\xe1\xaf\x51\x97\xbd\xae\xe8\xff\x3d\x4d\x6e\xff\xe5\xde\x9b\xc3\x52\x0b\xbd\x28\x6b\x84\x62\x87\x67\xfb\x27\x21\x70\x0b\xfe\xd5\x9b\x97\x2f\x5f\xef\x1d\x5d\x1e\x1f\x1d\xfe\x93\x37\xa1\xb5\x3b\x39\xdc\x0f\x3b\xfa\xf8\xfb\x8f\x32\x64\x87\xc5\x66\x70\xa7\x67\x27\x7b\x67\xfb\x3f\xd8\x0f\x6c\x99\x45\xfb\x29\x53\x2a\xd6\x97\x55\x10\xbb\x1f\x15\xd1\x25\x78\xc2\x8f\x62\x7d\xa3\xd5\xf5\x0d\x79\x75\x0d\xe7\xd8\x9e\xdc\x86\x59\xdf\x67\x07\x47\x7b\x27\xff\x2c\x8f\x82\xd6\xf7\x6c\xff\x1f\x67\x55\x73\xe8\x9a\x2d\xdd\x3b\x7d\x7e\x70\x50\x6a\xd1\x05\xef\xd6\x1e\x01\x10\xf5\xa1\xa6\x76\x03\x4d\x63\x1b\x00\xf6\xcd\xd1\x8f\x47\xc7\x3f\x1f\x95\xfa\x6d\x9b\xb9\x61\x68\x3c\x0c\xd6\x43\x0e\x32\x9f\xd0\xe0\x5f\xec\xbf\x3c\xdc\x3b\x2b\x2f\xe2\x23\x1a\xdc\xd1\x9b\xc3\xc3\xf2\xe8\x21\xdd\x5c\xa7\x23\xde\x28\x29\x5a\x5d\x4d\x38\xe1\x49\x9c\x26\x71\x2a\x9b\x62\x28\x27\x32\x85\x1b\x37\x4b\x6d\x72\x44\x10\xfb\x89\x69\xea\x7e\x8d\x64\x7f\x23\xc5\x20\xd2\x42\xfa\x95\x2c\x80\x43\x8d\x47\xf1\x20\x4a\x0b\x4d\x09\xf4\x0d\x94\x65\xaa\x10\xd7\x92\xc8\xfe\x69\x26\xc0\x5c\x0e\x74\x09\xc4\xf9\x38\x8d\x21\x6e\x1f\x04\xf4\x96\x66\x68\x26\xb9\xbc\x92\x29\xd4\x73\x1e\x0a\xa8\x2e\x85\xec\x4a\x3a\x34\x15\x0b\xb3\x2c\x51\x34\x2d\x99\x0e\x20\xc3\xcd\x5f\x5c\xdc\x5f\x5c\xdc\x5f\x5c\xdc\xbf\x33\x17\x47\x04\xcc\x37\xbd\x34\x05\xc6\x90\x4f\x49\x7b\x3e\x06\xfd\x61\x9a\x31\xba\xe2\x94\x00\xfa\xe5\x19\xd4\xfc\x66\x95\xe6\x9a\x48\x42\xa8\x0e\xef\x1a\xd3\x9d\xa3\x10\x2f\x52\xf1\x58\x6c\x3f\x78\xb8\x2b\x52\xa7\x3b\x1f\x08\x90\x88\x85\xe7\x15\x8e\xcd\xdf\x89\xc7\xe2\xd1\xae\x78\xe7\xd9\x13\x40\x6d\x30\x10\x77\x45\xb7\x21\x9e\x8a\xfa\xd6\x87\xfd\x17\xcf\x1e\x3d\xba\xb7\xbd\x25\xfe\x4b\xd4\x07\xa8\x4a\x68\x34\xc4\x0e\xfb\xc1\xad\x4f\x30\xc2\xf3\xf4\x42\xf4\xc4\x20\x94\x86\xe1\x1d\x86\xe4\x77\x28\xb5\x05\xcd\x48\xb3\x16\x59\x34\x6c\x8b\xbf\xe9\x8d\xdc\x7e\xf0\xc0\x28\x08\x92\x2c\xbd\xd2\x7c\x1c\xd4\x44\x99\xe4\x59\x3f\x91\xe3\x36\x98\x21\x06\xf9\xe0\x8c\x56\x83\x2d\xd6\xee\x1a\xd3\xa4\x0c\xf2\xc1\xbd\xed\xfa\x20\x1f\xcc\xd5\xa2\x14\x90\xe2\x03\x01\x19\x85\x88\x4c\x87\xa2\x87\x06\x12\x54\x2d\xac\x09\xdd\x46\xfc\x17\xd6\x2d\x5d\x0b\x4c\x16\x93\x4c\xa1\xd1\x42\xa6\x43\xcf\x68\xa1\xfb\xf4\x84\xfe\x3c\xac\xd3\xa3\x86\xf8\x2f\x51\x9c\xc3\xef\xff\x02\x2d\x44\x7c\x81\x1a\x99\x97\x2f\x2f\x4a\x7a\x03\x6c\x55\x6f\xe9\xd5\xd5\xf7\xa1\x86\x30\x4f\x73\x00\xd3\x74\x57\xe0\xf6\x5f\x7a\x83\xbf\x6e\x9c\xbf\x6e\x9c\xff\x59\x37\x0e\x24\x92\x28\xb4\x90\x2f\xbc\xd4\x0d\xed\x0e\x3c\xed\x68\x44\xc3\xac\xdf\x40\xf6\x72\x29\xc3\x96\x1d\x78\x68\x5a\x18\x23\x97\xd7\x82\x1e\x9a\x36\x40\x77\x42\x28\xf0\xd0\xb4\x18\xab\x2b\x20\xa9\x5e\x8b\xb1\x54\x4a\x9f\xbf\x1a\xe6\x39\x12\x3f\x4d\xfb\x49\x3c\xb0\xe9\x73\xc0\xff\xec\x0b\xff\xdb\xe8\x68\x80\x5f\xde\xbf\x0a\x20\x8c\xf1\x1b\x69\x5f\xf4\x9a\x38\xfd\x8b\xa0\xb5\xd9\xda\xa5\x17\x9e\xfe\x05\xd3\xec\x75\x3a\xf8\xca\x69\x60\xb0\xcf\xb6\xe9\xe3\x34\x30\xf8\xe2\x9e\x7d\x01\x1a\x18\x23\x57\xf5\xc4\x7d\xf3\x02\x34\x30\xc2\xbd\x78\xe0\xbe\x02\x3a\x18\xf6\xea\xe1\x2e\x4e\xff\x1b\x2a\x60\xbe\x91\xfe\xc5\x2e\xe6\xf1\x8f\x5c\x7c\x64\x8b\xe9\x14\x30\xf8\x82\x2d\xa6\x55\xc1\x08\xbb\x98\xe6\x15\x28\x61\x18\x38\x7d\xe3\xfb\xf0\x4e\x4e\x8e\x4f\xe0\x8d\xdd\x02\xa7\x86\xa1\x3e\xf7\x1c\x3c\xab\x87\x31\xf0\xdc\x36\x18\x55\x8c\x79\xc3\xf6\xc1\xd3\xc5\xe8\x77\x66\x23\xaa\x75\x31\x76\x5e\x9e\x3e\x86\xad\x88\x69\xe0\x34\x32\x7c\xc9\xba\x41\x83\x00\x46\x4f\x7c\x6f\x67\x5a\xd6\xc9\xd0\x1a\xad\x59\xac\x43\xa5\x8c\xbf\x29\x76\x11\xb9\x52\xc6\xbd\xb6\x2b\x79\x72\xb8\x5f\xd2\x08\x78\x28\xfd\x0f\x1f\xb2\x8f\xd8\xa1\x52\xc6\x4e\x7f\xed\x5b\x28\x64\xec\x12\x81\x52\x26\x1c\x04\x5b\x64\xd0\xaa\x94\x46\xc9\x16\x19\xd4\x32\x15\x0d\xb8\x5a\x86\xa6\x44\xba\x98\xa0\xe9\x36\x61\xc3\x72\x45\x8c\x5d\x18\x50\xc5\xe8\xbe\x8f\x60\x39\xbe\x21\x89\x44\x1a\xa9\x3f\xf4\x7a\xef\x1f\x80\xef\x87\xfb\x7f\xdf\x3f\x44\xb4\xe9\x6c\x88\xd7\xd1\x87\x78\x3c\x1d\x53\x52\x31\x7d\xae\xc7\x72\x7c\x08\xae\x11\x71\x6a\x86\x7f\x90\xc6\xc5\xb6\x19\xb0\x86\xf3\xf3\xb3\x83\xb3\x53\xbd\x2a\x0f\x00\xc8\xbd\xed\x1f\xc5\xe1\x2f\xdf\x7d\x67\x92\x46\x51\xcb\x17\xfb\x2f\xbd\x2f\x3e\x32\x88\x78\xb8\x7f\xf4\xc3\xd9\x2b\x8c\xa9\x82\x15\xc3\xb1\x60\xf5\x17\xbd\xf7\xe4\x17\x08\x14\xad\x09\xd7\x2e\x54\xac\x36\x17\xb6\x21\x3d\xfb\x47\x2f\x88\x5e\x82\x92\x87\x3e\x7b\x78\x70\xb6\x7f\xb2\x77\x78\x6a\xf7\xe3\xc1\xc3\x10\x3c\xa4\x2e\x4d\x44\x7f\x56\x48\x25\xb6\xda\x6d\x2d\xd2\x98\xde\x66\x58\xd4\xdb\x42\xdb\x14\x5d\xb1\xe9\x0d\x3d\x80\x7a\x48\x50\xb3\x5c\x1c\x7a\xe3\x77\x0c\xa5\x1e\x7c\xf5\xa0\x5f\x04\x9f\xbd\xb7\x15\x40\xd7\x1c\x45\x94\x52\x81\x6b\x7b\x5d\x3d\xf3\x86\xdb\x13\xdd\x70\x25\xb1\x35\x10\x6d\x48\xb5\x13\xa5\x6a\x24\xf1\x86\xe8\xc7\x05\x2d\xb4\x05\xf7\x6a\x7f\xef\xa7\xcb\xd3\x83\x5f\xf6\xcd\xd2\x89\x0d\xbb\x20\x9b\x70\x48\x36\xc4\x98\x30\xe6\x5a\x46\x13\xd4\xa5\x31\xc4\x00\xbc\x70\x88\xb1\x97\x24\x34\x02\xcb\x90\xc9\x0f\x03\x29\x87\xae\x71\x3f\x2e\x94\x4d\xe2\xf5\xfa\xe0\xe8\xf2\xf5\xde\xd9\xf3\x57\x8e\xae\x00\xda\xd2\xa3\xed\x07\x8f\x76\x6d\xbb\xc3\xe3\xe3\x1f\xf7\x5e\xed\xef\xbd\xd0\x62\x9c\x6b\xb5\xc9\x80\x6c\x82\x7b\x31\xf4\xd0\x04\x71\xff\x0c\xaf\x95\x9e\xd8\xfa\xb0\xbd\x45\x2f\x0e\x8e\x0e\x34\x4d\xda\x3b\xdb\xd7\xc4\x8a\x68\xdd\xfe\x3f\xce\x4e\xf6\xec\xd3\x87\x44\x61\x8f\xf6\x5e\xef\xdb\x87\xdf\xd1\xf8\x9e\x1f\xbf\x7e\xbd\x7f\xe4\x40\x7c\x4f\xd4\xf4\xd5\xf3\x93\xe7\xf6\x61\x77\x8b\x5a\x3f\x7b\x73\xfa\x4f\xf7\xb4\x4b\x4f\x91\x19\x70\xdf\x7b\xf8\x90\x06\xf7\xec\x14\x6f\xc3\xd7\xc7\x27\xfb\x9c\x12\x6d\x88\x7e\x92\x0d\xde\xd1\xc9\xc0\xa0\x9c\x61\x53\xa4\x7a\x65\xa1\x7a\x7f\x9c\x4e\xa6\x85\xad\xe5\x9f\x4d\x0b\xfd\xd3\xe0\xcc\x29\xe2\xdf\xe5\x8b\xe3\x23\xbb\xd1\x0c\x28\x72\x51\x13\x2c\x3c\x2e\x87\xac\x9b\x1b\xe7\x89\xa6\x57\x7a\x8f\x20\x85\x46\x9c\xc6\xea\x5a\x40\x76\x1f\x3b\x0c\x48\x04\xc5\xbf\x1e\x15\x22\x95\x1f\x0a\x4b\x12\x4b\x60\xcd\x70\xf4\x9d\xc1\xc0\x0e\xb3\x54\x36\x29\x47\xaf\x96\x26\xfd\xf9\xb9\xa9\x01\xb4\x63\x8c\xd4\x84\x2d\xde\xba\x07\x34\xfb\x4d\x1a\x7f\x10\x3b\x0d\xd1\x16\x2f\xb2\xb4\x56\x40\x39\xf3\x01\xe5\xf5\x01\x39\x87\x42\x4e\xb8\x93\x87\xcc\xf3\xba\x2a\xf2\x31\x45\xa9\x3d\xcf\x86\xe4\x15\xad\x1f\xb6\x35\xdf\xdc\xd3\xdc\xf3\xb9\x7d\x7b\xc1\x9c\x97\xed\x43\x50\x08\x58\x98\x79\x94\xbe\xab\x8f\x3c\x27\xfd\xba\xfe\xfd\xf8\xb1\xe8\x36\x44\x0b\x7f\x3c\x11\xf7\xc5\x53\xf1\xbd\xd8\x11\x5b\x0d\xbf\xfb\x47\x99\x67\xf5\xfe\x54\x03\xc0\x0c\x5f\xe0\x32\xeb\x9c\xa8\x77\x9d\x2f\x04\x78\x61\xa0\x87\x08\x68\x32\x12\x09\x0a\x9f\xad\x5d\x48\x0c\xbe\xf6\x4d\x99\x70\x48\x28\x0d\x08\x13\xe9\x43\x3e\xd0\x88\x43\x26\x00\xda\x76\xa5\xd9\x48\xb8\xdc\xdb\x40\x0f\x1c\x4b\x4e\x2d\xae\x32\xe4\x3c\x8b\xeb\x1c\x2e\x77\xd8\x14\x97\x43\x31\x13\x2a\x1b\x4b\x4f\x00\x07\x61\xec\x46\x23\x47\xa1\xf1\x61\x18\x8f\x66\x5a\xe2\xd6\x30\x32\xf4\x7b\x17\x51\x92\x64\xba\x75\x7a\x25\x22\x91\x44\xf9\x15\xe8\x53\xc6\xad\x27\xf4\x51\x72\x95\xd7\x52\xc1\x20\x9b\xcc\xb0\xc2\x42\x91\x89\x18\x93\x08\xd7\x4f\xa5\xc4\xaa\xa9\xb9\x8c\x86\x97\xfd\xe9\xa8\xde\x68\xb4\xfd\xec\x8e\x70\x4e\x2e\x69\xba\x80\x2e\xcc\xff\x07\x42\xfa\xf3\x31\x04\x0c\xca\x5d\x0c\x88\xb9\x2c\xf2\x4b\xec\xa4\x89\x5e\x1d\x9d\x51\xdd\x5e\xaa\x36\xc1\x32\x15\x4c\xd0\x9b\x06\xc0\x44\xef\xa3\x38\xb9\xcc\xa6\x85\x51\x5f\x51\x17\xef\xdd\x2e\x0b\x1a\x82\xf7\xe4\x26\x64\xbc\xd0\x51\x87\x05\x12\x67\xdb\xb8\x05\xc3\xb8\xdb\xb8\x28\x4d\x37\x84\x4b\x8c\x06\xb0\x3f\x21\x50\x12\x14\x74\xd0\x5e\x1f\x64\x18\xcd\xae\x39\x13\xe6\x89\xd8\xec\x19\x8f\x1f\xaf\x37\x7f\xae\xdb\x17\x59\x11\x25\x55\x2f\xec\x6c\x44\xab\x0c\x89\x3d\x03\x3f\x7e\xfb\xbc\xc7\x3d\xa2\xfc\x0f\x93\xfb\x36\x84\xbc\x85\x9b\x07\x04\xef\x52\x93\xaa\xba\x6a\x8a\x24\x52\xb4\xbe\x20\x6c\xb7\xd9\x7e\xe9\x76\xba\x49\x5d\xb5\xb1\x0f\x10\x3b\x38\x65\xe2\xa9\xf0\x1f\xee\x88\x56\xb7\xa1\x17\x4f\x15\x39\x3e\x69\xf9\x2d\xe8\x4b\x38\x33\xde\xb3\xc7\x3a\xed\x82\xd7\xb3\x87\x61\x6d\xc0\xb1\x5d\x7f\x22\x93\x69\x71\xa9\xf9\x18\x3d\xba\x3e\x11\x29\xbe\x8b\xe7\xf6\xd7\xe6\xa6\xa6\x02\x7d\xec\xff\xad\x69\xc0\x4f\xfa\xa8\x0b\x75\x9d\xe5\x4e\x15\x44\x7b\x43\xa1\xc6\xc0\x0f\x77\x1f\xb6\x34\xdb\x61\xab\x95\xe9\xa3\x18\xa7\xe2\xf5\xe9\x33\x4c\x22\x0f\x87\xef\xe0\x48\x44\x4a\x49\x48\x08\xb0\x83\x0c\x5f\x91\xcb\x68\x0c\xe1\xc3\x54\xa5\x3b\xcf\xe5\xa0\x30\xf9\x02\x51\x55\x29\x53\x20\x1f\x79\x96\x8d\x45\x0c\xa5\x23\xd9\x32\x04\x67\x77\x32\x2d\x4e\xf5\x58\x5f\x9f\x3e\xb3\x0b\xd7\xe9\x08\x6f\x35\xeb\xcf\x66\x85\x6c\xd4\xfb\x02\xd4\xc3\x8d\xdd\xf9\x0d\xd0\x71\xaf\xd1\xd8\x5d\xb6\xf8\x00\x0c\x94\xcd\xd8\x65\x69\x87\xbe\x6d\xf8\xad\x37\x0d\xb7\xed\x44\x46\x43\x11\x41\xfc\x03\x51\x44\xab\x6b\x1d\x4c\xf3\x1c\x15\x7b\x7a\x93\x70\x07\x9a\x62\x3a\x19\x46\xa4\x42\x24\x7d\xd3\x1a\x95\x94\x83\x13\xcd\x38\x4f\x64\xae\x73\x48\x4e\x1f\x10\x7e\x04\xa9\xe9\xbe\x21\xfa\x48\xff\xbf\x8c\xee\x5b\xa2\x0f\x23\x99\x47\xf7\xf1\x9b\x15\x64\x1f\x26\x5c\x22\xfb\xfe\xd1\x2b\xd1\x7e\x7b\x2b\x20\x97\x80\xd4\x12\xcf\xb6\x0b\xa1\x62\xa4\xdd\x51\xb6\x18\x4d\x16\x8c\xbe\x53\x54\x15\xb5\x8c\x3f\xca\xdd\x45\x54\x1c\xae\xf1\x35\x9f\x5a\xc6\xa9\x25\x8c\x18\x56\xf1\x71\x2c\xc7\x83\xc9\x8c\x62\xba\x60\xfe\x40\xa0\xe3\x14\xa8\x38\x20\x6a\x70\x0f\xd8\xa6\x6d\x58\x29\x4e\xe8\xa9\x17\xcd\xd0\x16\xd8\x72\xf7\x5b\xfb\x26\x8f\x26\x30\xd0\xae\xa5\xc1\x30\x3a\x70\x6f\xb5\xce\x93\x75\xf7\x90\x9b\x7c\x1c\x54\x98\x17\xcb\x98\x52\x86\xbf\x5d\x09\x1f\x2d\x49\x2b\x41\xe7\xb3\xaa\xbe\x93\xd8\x73\xc7\xa9\xc1\xcf\x7f\xcd\x11\x3c\x95\x85\x18\x47\xc5\xe0\x9a\x2e\x01\x32\x12\x24\x59\x7a\x25\x15\xbd\xc2\x59\x00\x52\x17\xf0\xf6\x2a\x7e\x2f\x53\x4a\x88\xaa\xb1\x59\x03\x32\xc5\x34\x0a\x65\xca\xed\x8a\xd7\xba\xb3\x54\x48\x97\x25\xd4\xe8\x93\xbf\x4d\xa3\x04\x2b\x59\xc8\xf7\x97\x24\x68\x47\x39\xa8\xac\x07\x51\x3e\x94\x43\x28\xab\x1e\xa7\x54\x94\x18\xbc\x7d\xf5\x27\x29\x58\x4a\x13\xda\x4a\x10\xe9\xd0\x9b\x46\x0c\x3c\xdd\x55\x94\xf7\xa3\x2b\x59\x22\xeb\x6a\x47\xd3\x97\x4b\x9c\x1c\xd6\x63\x85\x6c\x55\x46\xf1\x73\x1d\xa9\x6b\x31\xb8\x8e\xe2\xd4\x29\x34\x91\x1e\x61\xe5\x02\x9a\x79\xdd\xdc\x96\xa4\xdf\x2d\x94\x93\x93\x63\x65\x2a\xc3\xbe\x38\x38\x3d\x43\xb3\x00\x1f\xf0\x93\x9e\xe8\x6a\x60\xc7\x6f\xce\xc2\xeb\x06\x87\x45\xed\x4c\x59\x13\x30\x88\xe6\xe8\x54\xad\x5a\x4f\x92\x2c\x7b\x17\xe9\x21\x07\x94\x81\xf6\x0d\xa7\xa6\x6f\x09\x3b\x4f\x66\x2a\xd6\x13\xbb\x74\xc1\x8f\xed\x71\xf4\xe1\x92\x3f\xdc\x45\x61\x0f\xa5\x6d\xbe\x18\xd4\x07\x9c\x78\x80\xcf\x1c\x44\xa9\xcf\x36\x80\x4f\x18\x91\x6e\x5a\x25\xdb\x1a\x86\xb1\x5b\xd2\xe1\xb1\x8f\x69\x74\x19\x96\xfa\x41\xc0\xd7\xfc\xff\x3a\x1b\x66\x5c\xd9\xc8\x7e\x1b\xd7\xd0\x82\xe8\xeb\x35\xb1\x7c\xae\xdb\x86\xdd\x12\xa8\xbe\xc3\x7a\x82\xaa\xc9\x71\x94\x3b\x58\x69\x3c\x90\x84\x3a\x1a\x9a\xfb\xb9\x1b\xc2\x52\x45\x36\xd1\xb4\x84\xc0\x65\xe9\x95\xe1\x12\xdc\xdc\xc0\x6f\xbe\x27\xea\x8c\x5f\x7b\xa2\x7f\xdd\x5c\x92\xa3\x90\xa7\x6c\x68\x34\xc4\x53\xe3\x94\xce\x19\xbc\xf9\x1d\xb4\x2c\xd7\xd9\x38\x3a\x38\xdc\xe8\xec\x9a\x94\x7c\x97\x37\x31\xae\x04\x2a\xcc\x40\x4e\x85\x33\x3a\x98\x16\xa6\xcd\xcd\x38\x52\xef\xb0\xd1\xa5\xfe\x73\xd7\x96\x3e\x94\xef\x85\x5d\xc6\x5d\xf2\xfa\x3a\xd5\x33\xbd\xb9\x96\x29\x3b\x57\x7d\x39\xc8\xc6\x12\x8e\x01\xcc\xb2\x2d\xce\x32\xa1\xc0\x50\x3b\x9a\x91\x91\x60\x88\x86\xf5\x0d\x71\x23\x01\xb2\xdd\x3a\x5e\xc1\x9c\xf0\xc1\xa5\x8b\x87\x94\xd1\x62\x0b\x1c\xff\xb5\xe8\x6d\xf2\xc0\xe5\x68\x9d\x67\x2b\xb3\xe9\x14\x38\xbb\x0c\x67\x2f\x65\x3a\xec\xea\x59\xe8\x95\x38\x07\x2c\xde\x74\x38\xd2\x12\xdd\x8b\xb0\xb5\x98\xd7\xfa\x62\x97\x39\xbe\x81\x4a\x2d\x56\x26\x56\x8b\x4c\x15\xaf\xf6\x4e\x5f\xa1\xb6\xe9\x49\x4f\x3c\x42\x63\xb9\x19\x55\x6b\x5b\x8c\xa7\x49\x11\x4f\x12\x30\x2d\x77\x1f\xe2\xa4\x30\x24\x4c\xc8\x48\xcd\x4c\x32\xd0\x3c\x1e\x5a\x73\x2c\x8f\x05\xd3\x08\x96\xca\x81\x54\x2a\x82\x3a\x4f\xe4\x7d\xda\xe9\x88\x3d\x20\x2b\x75\xd5\x7a\xa2\x8f\x30\x48\x7d\x38\x82\xbb\x77\xb9\x5e\x0b\x14\x5b\x4d\xb1\xfe\x1c\x3d\xd5\x32\x31\x48\xe4\x7b\x99\xaf\x37\xcc\xcc\x5e\x64\x40\x82\x6e\x22\x55\x60\x03\x10\xb4\x8b\x78\x0c\x17\xe5\x8d\xb4\x39\xb2\xaf\xa3\xf7\x52\x44\xe2\x2a\xcb\x88\x18\xef\xb8\x7c\xa5\xde\xb1\xd3\xc3\x50\x6d\xdd\x8e\xd3\x26\xe1\x53\xa6\x27\x4f\xb0\x74\x14\x16\xbf\xb7\xc3\xd0\x94\x0f\x35\xc5\x84\x27\x7d\x39\xcb\x28\x71\xb7\xde\x28\x22\xe1\xc0\x46\x90\x0d\x55\xd3\x50\xb3\x42\xb8\xbc\x26\xbe\xce\x68\x83\x86\x94\x15\x30\x56\x45\x3c\x70\x8b\xa8\x07\xce\x8e\xfb\x13\xa1\xda\x96\xf0\x6a\x9e\x28\x20\x05\xf6\xdd\xae\xcb\x97\x8b\x7b\x50\x9f\x26\x57\x0d\xd5\x7a\x62\x11\xf3\x71\x4f\x53\x71\xc4\x67\x38\xb8\x2d\xef\xd8\x36\xc5\x3a\xa8\xb1\x2c\x44\xda\x0d\x1b\xb5\xe2\x40\xbb\x03\xf7\x58\xb0\x2f\x40\x3e\x52\x31\x9a\x16\xd3\x5c\xae\x93\x13\x8e\x19\xa9\xed\x62\x82\xa3\x37\xc4\xe9\xbb\x78\xa2\x57\x05\x74\x64\x74\x2f\x8e\xca\xb7\xd1\x20\x4a\x21\xf5\x6a\x3a\xc8\x65\xa4\x28\x51\xda\x06\x38\x60\x54\xb4\x8e\x15\x8b\x04\xda\x6e\x0b\xf0\xa4\x44\x77\x00\x38\xfe\x58\x35\x14\x8c\xa1\x06\xd2\x08\x6b\x93\x4e\x47\xa3\x78\x10\x6b\x6a\x60\x57\x00\x55\x7a\x90\xd1\x4d\xff\x6f\xa4\x20\x2c\x32\x99\x41\x17\x52\x17\xea\x9b\xd7\x40\xd2\x03\x04\x2b\xa3\x3e\x99\x39\x64\x69\x16\xd3\x34\x4e\xe3\x22\x8e\x12\x38\x9b\x63\x39\xce\xf2\x19\x7a\x86\xf4\x25\xe8\xf8\x94\x82\xca\x71\x9a\xa3\x41\x28\x83\x2c\xb5\x11\x98\xbf\x4e\xc7\x13\x65\x9b\x8f\xa3\x21\xcd\x05\x1d\x34\x05\x94\xdf\xc9\x94\x74\x05\x99\x10\xc4\xab\xec\x46\x9f\x27\x64\xab\xec\x45\xe5\x16\x0b\x0a\x84\x8d\x63\x72\x17\x41\xe6\x8b\xe6\xdc\x14\x2a\x33\x60\xc0\x55\x00\xb5\x47\xd9\xc8\x22\xae\xc9\x52\x3f\x1a\xc9\x81\xab\x92\x1c\x4c\xd4\x1f\x50\xc7\x65\xa5\x00\x82\x86\xa3\x60\x14\x0d\x9a\xdd\xe9\xf5\x18\xf1\xfb\xf4\xc9\x66\x8a\xa8\xec\x03\x34\xd3\xeb\xd3\xad\xee\x73\x11\xde\xde\xba\x8f\xa5\xab\x17\xa5\x4e\x9b\x9b\x55\xdd\xbc\x4e\x62\x53\x74\x2f\xbc\x64\xc2\x98\x7e\xc3\x8b\xbe\x27\xfa\xac\x31\x4e\x33\xb1\x66\xdc\xad\x2e\x14\x68\x60\x5e\x15\x26\x18\x2d\x2e\xbc\x9d\x36\xbb\x10\x5d\x01\x1f\xa4\x79\xb1\xb6\xa8\x03\x75\xb9\x96\xd3\x1c\xe8\x86\x2b\x19\x70\x13\xcd\x94\x88\xf4\x75\xd5\x6e\x98\x9e\x07\xd6\xd3\xc4\xd2\x22\x2c\x4b\x3a\x9e\x68\xfe\x57\xcf\xe4\x7c\xfb\xc2\x31\xb2\xfa\x07\xfa\x04\x16\xd7\x72\x66\xbf\x9f\x4b\x03\x1f\xf9\x60\xb8\x74\x01\x37\x20\x3a\x0e\xc5\x5e\x00\xd0\x24\x36\x5d\xe3\x28\x47\x22\xe0\xe7\xde\xc9\x19\x1a\xd4\x11\x0a\x6a\x32\xa2\x22\xb8\xab\x1c\xca\x00\xc7\x01\x8b\x4d\x44\x99\xa8\xc9\xe6\xe6\x6e\x40\x8f\x36\x90\x29\xec\x89\x0d\x1a\xc5\xba\x99\xce\xd3\xf5\x86\x23\x38\x3f\x9b\xdd\x58\x76\xe2\xf5\xd9\x99\x89\x47\x60\xcf\xd2\x4b\x15\xab\x8c\x3c\x16\x69\x3e\xdb\x0f\x1e\xea\x97\x00\xcc\x3b\x9c\x11\xb0\xa0\x40\x0d\x37\xb7\x1f\x04\x93\x61\xf1\x7f\x9d\x8d\x5f\xd5\x75\x9c\x16\x22\xcd\xe4\x78\x52\xcc\x76\x20\xfb\x35\xb5\xb3\x41\x7e\x84\x8e\x88\xa6\x3d\x83\x80\x16\x3f\xef\xde\x15\x4b\x5b\xf8\xf9\x76\xfe\x07\x02\x04\xd4\x78\x4c\x9c\x5a\xc3\xa5\xe6\x30\x9c\x0a\xbc\x66\x37\xe3\x66\x7d\x9a\xa2\xaf\x67\xa3\x1e\x5c\x97\xdd\x46\x53\xac\xdf\xc4\xc9\x10\x80\x5a\xcc\x42\x1e\xdf\x71\x37\x2d\x10\xd2\x34\x0d\x6b\x41\x43\xba\x09\x8d\xe0\x62\x5e\x31\x2e\xd1\x12\x47\xd4\x8f\x18\x4a\xe1\x08\x8c\x96\x97\x9c\xa0\xe9\xdd\xa6\xd8\x80\x09\x1b\x36\xfa\x94\x81\xec\x31\xb6\x81\xa7\xe0\x81\xb2\x11\x7e\xd6\x1d\x71\x0b\x6e\x95\xb7\x5e\xc4\xad\x1a\xe8\x16\xb1\x19\x07\xd1\x03\x26\xfc\xdc\x3d\xb8\x8b\x72\xc0\x45\x43\x3c\x21\x51\xe5\xee\x5d\xd1\x6a\x79\x7c\x1a\x86\x03\x5b\xb5\x92\x1d\xd8\xe3\x5e\xc0\x2e\xf1\x1c\x19\xa6\x95\xe1\xef\xe8\x31\xe7\xa1\xfe\x45\x0a\x8f\x97\xc6\x11\x94\x84\x09\x4b\x40\x1d\xdd\x31\x92\x0b\x27\x4b\xa0\x43\x78\x03\xea\x47\x65\xc9\x0a\xd0\x4d\x4f\x14\x2f\x2b\x90\x1d\xd8\xc7\xbe\x68\x56\x92\xfe\xd5\x8e\xe0\xfc\xe1\x5c\xe6\x90\xca\x2c\xee\x15\x22\x91\x91\x2a\x20\x17\xbd\xa6\xfb\x9a\xb2\x8b\xbe\x94\xa8\x1f\x84\x24\xf3\x56\x41\xd7\x03\x03\x9c\x7e\x0e\x64\x9f\x40\x38\x2b\x2b\x78\xa2\x1a\x80\xc5\x4d\x46\x17\x89\xf1\x11\x1e\x5a\x3d\xc8\x47\xcd\x27\xe6\x51\xaa\xf4\x1d\x78\x29\xb3\x84\x40\x61\x5e\x35\xd1\x6a\xc1\x15\x47\xb9\xd7\xe4\x10\x3c\xd7\x4b\xa6\xab\x38\x49\x2e\x71\x7a\x75\xe6\x6f\x7d\x49\x22\x2c\x0a\x9d\x26\x27\x13\x08\x9d\x4d\x91\x36\xc5\xb8\x09\xd6\x57\xd0\x0d\x92\xaa\xd1\x89\x38\x73\x97\xb9\x29\xd6\x8d\x7c\x42\xc2\xf7\x5c\xa6\x1a\x6c\xbb\x4e\x2e\x36\x02\x35\x43\x4a\xf8\xe5\x6c\x24\x86\x7e\xfd\xed\x14\x82\xd5\x51\x00\xba\xb7\x2d\xfa\x71\xd1\x24\x73\x36\xba\xfa\xe1\xb5\x2f\x87\x72\x68\xee\xbf\x17\x52\x5f\xde\x5a\xc4\xbd\xf3\xbf\xff\xe3\x7f\xfd\xa7\x78\x78\xff\x47\x3c\x61\x3b\xe6\x86\xea\x74\x40\x6e\x8a\x3f\xca\x6c\x54\x8f\xd3\xa2\xa1\x91\x62\x9b\xc5\xdd\x13\x51\xc1\x51\xf7\x04\xa6\x13\x67\x32\x06\x7b\xe6\x26\x10\xc4\xee\xd3\x7f\x34\xf3\x1b\xb3\xe8\x36\x67\xba\x6e\xc2\xb2\xd5\x9a\x6f\x31\xba\xdc\xea\x36\xca\xf0\x3a\x1b\xe2\xef\xfa\xda\x9e\xa6\x49\xfc\x0e\x9c\x90\xfb\xd3\xc2\x5a\x62\x35\xab\xdc\x7d\x08\x1e\x20\xe3\x68\x70\x8d\xc9\xd8\x03\x08\x62\x43\x94\x26\xe2\xcd\xa2\x2b\xea\xa8\x54\x1f\x6a\xfc\x8f\xf0\x04\x68\xc9\x22\x1e\x53\xea\x6e\x0e\xac\x53\x31\xe1\x56\x6b\x97\x3d\x35\xf9\xb1\x3e\xaf\x59\x1e\xe5\x60\xc4\x09\x45\xac\x44\x94\x8c\x33\x55\x88\xd1\x34\x49\x7c\xe3\x4f\x35\x03\xd3\x34\x6c\x8a\x66\x2d\x91\x2f\x9f\x40\x76\xf9\x28\x19\x39\x5e\xff\x46\xe6\x82\x3c\xc4\x41\x26\x25\x0b\x52\xd0\xde\xe7\x5e\x50\xa2\x76\x1a\xa3\x9e\x3d\x3c\x9b\x9a\x53\x99\xa7\x3b\xfa\xdd\x24\xef\x0e\xad\xb0\x84\xf1\x4d\xe1\xfe\x22\x28\xec\x8f\x2d\x9b\x20\xca\xbf\x02\x5b\xf6\xeb\xbb\x15\xba\xa9\xd2\xcb\x0e\x68\x7b\xd2\xec\x06\x8f\x0b\x9f\x84\x51\x97\xba\x52\x40\xbe\x85\x92\x03\x73\xd0\x4e\x93\x78\x28\x1d\x6b\x8b\x41\x23\xf5\x01\x39\x7d\xa3\x71\xc6\x94\x21\xc6\xc3\xe9\x22\x7e\xe1\x3f\x92\x47\xe5\x87\x89\x4c\xd1\xc5\x9f\x44\xc3\xa9\x8a\xae\x64\xa3\xad\x99\x55\x05\x1f\x91\x9a\xa1\x86\x1b\x03\xf3\xf7\x40\xa9\x32\x82\x42\x49\x2e\xc2\x81\x0c\xb2\x54\xc5\x0a\xaa\x1c\xa1\xb6\x84\xca\x63\x99\x14\x6c\x08\xe8\x89\x83\x63\x84\x8b\x37\x10\x7c\x60\x52\x07\x4d\xa4\x16\x6f\x65\x5a\x24\x33\x2b\x67\xa4\xa8\x08\x8a\x12\x1c\xa8\xc8\x46\x06\xc6\xc7\x24\xee\x6b\xe1\x51\x7f\x6f\x08\x7e\x27\x03\x90\x1c\xfa\xd9\xb4\x40\x15\xd2\x24\x2a\xae\xb3\x24\xbb\x8a\x07\x51\x02\x5a\xf6\xb6\xcd\xe7\x6c\x24\x44\x4c\xaa\xa1\xda\xa0\x3d\xe2\x3b\x38\x71\x51\x43\x1e\x23\x2d\xc4\x18\x3b\xc8\x68\x78\xde\x6a\xb9\x1c\x82\xc2\x3c\x84\x14\x83\xf5\x31\x47\xd8\xa7\x62\x2c\x5a\xf6\xd7\x0e\xc3\xb2\xaa\xfc\x1a\x38\xa6\x00\xa3\x96\x8d\x07\x98\x9a\x70\x3c\xf0\xf0\x56\xe3\x31\x34\x21\x35\x1b\x00\x35\xb6\x67\x4c\x41\xde\x44\xfe\x29\xbd\x80\x18\x10\x34\x3e\x68\xca\xb7\xc6\xa8\x5a\x5c\x28\x32\x40\x83\xb0\x92\x82\x6e\xa0\x8f\x9e\xcd\xed\xb5\x90\x62\xcd\x5b\x05\x20\xc4\x9b\xc1\x4a\x7c\xf6\x69\x03\xb3\xcf\x79\x0e\x0a\x1e\xab\xf9\x39\xa0\x76\xb9\x14\x37\x11\x44\x9e\x69\x8c\x8f\xd3\xab\x1d\x43\xc4\xd0\xee\x61\xd9\x93\x9f\x4f\x0f\x7e\xd9\xdf\x34\x27\xb6\xd5\xf5\x09\xf4\xe3\x5e\xe0\x25\xd7\x12\x5d\x2b\x0e\x6c\xd8\x19\xf4\x3c\x36\x47\xb4\x84\x77\xd3\xd2\xd7\x4c\xa7\xde\x13\xec\xf4\x24\xec\x54\xf7\x3e\xd5\xea\x8a\x4d\x1c\x1d\xa9\x7f\x71\x7c\x8d\xa5\x60\xb6\x37\x4c\xaf\x6d\x2b\xb4\x23\x19\x7e\x76\xf0\xc3\xe5\xeb\xfd\xd7\x9a\xa3\x7a\xfd\x7a\xef\x27\xb4\x4a\xd5\x35\x0a\xcc\x24\x63\x76\x1a\x4d\x37\x3f\x0e\xba\xd7\x43\x75\xa4\xa1\xd0\xfe\xca\x78\xcb\xc2\x34\xd7\x3e\x53\xe3\x81\x60\x53\xf0\x60\x59\x9d\xd3\xb1\xde\xc9\x9b\x58\xc9\x66\x38\x10\x33\x49\x95\x59\x10\xdb\xb6\x9b\x87\x02\xb4\xff\x4d\xdb\x0e\x3a\xb6\xc5\x69\x06\xd1\x38\x09\x92\x0d\xd5\x2c\xc3\x31\x97\x2d\x71\x67\xf6\x7d\x53\xac\xc3\xdf\x8f\xc5\xb6\x51\x49\xa6\x10\xfe\x61\xac\xd9\x6d\xb4\x67\xf3\xeb\x88\x2f\x48\x9b\x29\xc6\x34\x20\x23\xcc\x31\xfe\x6c\xd3\x65\xf8\xd1\x28\x6d\x95\x60\x8e\x2a\xe3\xd9\xd3\xd7\x0f\x28\x3c\x6e\x24\x5d\x43\xd9\x98\x94\xc6\x3b\xfe\x25\xcb\x60\x0b\xd5\x8e\x53\x3d\x25\xb3\xf0\x20\x32\x32\xc9\xb0\xc8\x7d\xf3\x43\xcb\xf6\x70\x37\x63\x9c\xaa\xcb\x6b\xc6\x65\x9e\xab\x22\xbf\xe0\xd7\xd9\x9b\x9f\x5e\xec\x9d\xed\x5f\xbe\xda\x3b\x7d\x55\x57\x4d\x8d\x06\xd0\xa5\xe9\xc4\x62\xdd\x05\xb5\x5e\xbb\xfc\xa6\x34\x90\xeb\x75\xf3\xf7\xe3\xc7\x96\x7c\x5f\xc7\xa3\xa2\x21\xfe\xcb\xfb\x2c\x69\xce\xee\x9a\x46\x68\xe7\xe9\x74\xfe\x23\x1e\x31\x37\xd6\x3b\x3d\x71\x6f\xcd\x71\x4e\xcf\xf5\xce\xa3\x1f\xc6\xa5\xee\x55\x6f\xb8\xb6\xad\x7b\x88\x0c\x50\xb5\x58\x03\x92\xe9\x30\x36\x97\x92\xc9\xb2\x4b\x2b\xe2\x55\x8b\xb9\xc5\xac\xdd\xc7\xfc\xf9\x7f\xe9\x0a\xb8\x89\xb6\xaa\x56\x23\xbc\x31\x74\xa7\xbb\xd6\x2a\x76\xe1\xee\x3b\xfa\x62\xf9\xce\x33\x2f\x50\xdf\xc0\x5e\x17\xb9\xd1\x9e\xd9\xd1\xcb\xbc\x30\x5c\xe9\x12\x0c\x7c\x5c\x85\x80\x22\x54\x23\xf0\xda\x35\xee\x7f\x19\x6b\x7b\x9d\x25\xc6\x9d\x55\x4b\x8f\x4e\x5d\xef\x96\x05\x24\xc1\xa6\xc0\xf5\x74\xf7\x9a\xa5\x75\x7d\xc3\x52\xd0\xad\x18\x8f\x35\x35\x84\xcc\x08\xa0\xbe\x04\x2d\x9e\xef\xf3\x6e\xd4\x74\x72\x1c\x17\x85\xbd\xf6\x90\xef\xf8\xec\x10\x65\xae\x4c\x07\x52\x4d\x70\xc5\x31\x35\x84\x9b\xdf\xcf\x07\x47\x97\x07\x47\x07\x67\xf4\xdd\x68\x54\x90\x22\x9e\x59\x8a\x8c\xc9\x18\xb2\xc2\x02\x2d\x30\x77\xb2\x4c\xd7\xd0\x38\x99\xeb\x61\xa6\x4d\xdd\x1c\x5d\x61\x49\xd3\x8f\x50\x21\x11\xe3\x50\x03\x36\xee\x9f\xc4\x3e\xa2\x4e\x32\x97\x18\x8b\x8b\xdc\xd9\x06\x8f\x24\xf5\xd5\xf4\xf5\x2c\x67\x4f\x14\xc6\x09\xfe\x6d\x9a\xc4\x51\x8a\xc9\x24\x54\x83\xbe\xd8\x9f\x39\x50\xbe\xa7\x46\x9e\x4d\x8b\x38\x95\xaa\x2d\x48\x59\x81\x84\x2f\xbe\xba\x16\x37\xe0\x40\x30\x8e\xf2\x77\x56\x98\x4f\xe5\x87\x82\x20\xc5\x63\x69\x5d\x60\x21\x8b\x85\x70\x8b\x17\x2b\xa8\xd8\x59\x64\x4c\xb1\x66\x55\xd3\xfe\x00\x10\x9a\x19\x05\xf8\x43\xdd\x80\x5a\x2a\x85\x00\x84\x4c\x54\x99\x66\x9b\x22\xbe\x4a\x33\x30\xf2\x72\x65\x8a\xc0\xc8\x1a\x73\x0c\xf4\x24\x2e\x71\x12\x8f\x7d\x19\xdd\xb8\xcf\x91\x7b\xc3\x34\xcf\x43\x2b\xb0\xa7\x57\x72\x4d\xf5\x5a\x9b\xf8\x9c\x35\x27\x51\x07\xdf\xd2\x00\xdd\x27\x30\x83\x4b\x2e\xdf\xc7\xd9\x54\x95\x56\x16\xc5\x7d\x0f\xa5\x5a\x2d\x44\x19\xb3\x9c\x8e\x96\x6e\xd0\x76\xea\x7d\x07\xeb\x1b\x61\xa5\xb9\xfd\xc0\x05\x06\x70\x91\x2c\x69\x6d\xd6\xb7\x63\xff\xa6\x59\x84\x6a\x0b\x3d\x88\x5d\xd7\x68\xa4\xe5\xe5\xb8\x10\x4f\xec\x40\x1a\x8c\xaa\x13\x0c\xf3\xca\xf5\xfb\x38\x96\x63\x70\xfe\xb6\x74\x58\x6c\x02\xe8\x26\x53\x02\xe8\xde\x0d\xd7\x47\xb5\x9e\xb0\x05\xec\xe1\x8e\x6c\xc2\x37\x4c\xa3\xcf\xf4\xaf\x73\xb7\xf2\xfa\x3c\x16\x60\x31\xa5\x8e\x76\xc0\xfe\x26\xbc\x0a\xd6\x3e\x02\x97\xfc\xa8\xaf\x85\x6d\xbe\x03\xa8\x7c\x28\xef\x0c\xdf\x88\x49\x32\x55\x0e\xe1\xcd\x96\x81\xb4\x94\xf9\xdb\xe9\xb5\x6c\xe2\xde\x71\x48\x5f\xbb\x8d\x55\x13\xd7\x8c\x04\x5f\x9f\xca\x6d\xf5\x15\xe4\x61\x97\x8a\xcd\x5e\xdc\x61\x09\x0a\x78\x6d\x57\xc6\x85\xcd\x5e\x05\x16\x7c\x36\xa7\x6f\x65\x63\x79\xa8\xda\x68\x12\xbc\x75\x08\xf1\x61\x8e\xb8\x10\x29\x0a\x45\x75\xd7\xd1\x73\xf9\xdb\xeb\x93\x9f\x67\x93\x99\xcd\x4a\xc0\x03\xed\x4c\x44\x02\x0b\x41\x70\xee\xad\xbe\x5b\x2b\x6a\xbf\xd7\x88\xa2\x1b\x74\x43\x05\x22\xba\x20\xea\x77\x67\x9e\x87\xea\x30\x93\x74\xdf\x22\x43\x90\xca\x1b\xf2\x94\x51\x46\x7b\x34\xc4\xd8\xfe\x28\x9f\x21\xb9\xd6\x40\xa6\xa9\x1d\xa3\x1e\x90\x29\x75\x3e\xc9\xb3\x7e\xd4\x4f\x30\xc8\x7c\xaa\xe4\x68\x9a\xb4\x83\x0f\xc6\x18\xc8\xa5\x81\xc0\x95\x6e\x2e\x11\xd0\x50\xf4\xb6\xbc\xb9\xa3\x36\x18\x46\x7d\x74\x7c\xb6\xbf\x13\x7a\xd7\x5e\x1b\xe5\x8c\xf3\x94\xb1\x97\xa7\xfc\x50\xe4\x91\xe7\x1f\xab\xc1\x10\xe2\x15\xd9\x02\xb7\x6a\x32\x8a\x5f\xaa\x22\xcb\xe5\x50\xb3\x91\xe0\x47\x8b\xfc\x11\x7a\x29\xe5\x72\x88\xeb\x8a\xd6\x4f\x66\x78\xc7\xe4\xa7\x86\xdb\x61\x1f\x61\x06\xfa\x35\x73\xc2\xd9\x6b\x52\x8e\x45\xe9\x50\xc8\x08\x7c\x25\xdd\x47\x80\xa7\x8a\xc4\x03\x52\xcf\x63\x55\xd7\x35\x23\x22\xa1\x4f\xdc\x07\x0a\x03\x20\xd5\x37\x0e\xc3\x5a\x53\x82\xf7\x4f\x7c\x7f\x6d\x73\x18\x1e\x18\x16\xb0\x04\xae\xba\xf9\x2e\x2b\x34\x0e\xf8\x3b\x17\x57\x11\x4f\x8b\x8c\x5c\x0f\x48\x36\x82\x1c\x27\xbb\xbb\x56\xef\x5b\xb6\xaa\x54\x00\x9c\x2b\x57\x3d\x26\xc7\x5d\x23\x02\x31\xad\xbe\x23\x01\x40\x01\x60\x02\x56\xe7\x50\x57\x0d\xe7\x2f\xa0\x09\x80\x6a\x3d\x09\xc2\x23\xea\x9a\x39\x69\xd8\xae\x4d\xb1\x8e\x7a\xbc\x22\xcb\x40\xcf\xb6\xde\xf0\x49\xe9\x1d\xae\x55\x7d\x6c\xed\x10\x62\x73\x91\x87\xdd\xa7\x4f\x8c\xb6\x96\x22\x34\x4c\xbf\x06\xbf\xbd\x4c\xb1\x0f\xe1\x8a\x75\x2d\x18\x99\xad\xb9\xe8\x1b\x4e\xb8\x65\x91\xaf\x67\xcf\xe8\xcb\x31\x94\x4e\xff\x74\x79\x05\xb8\xb0\x40\x46\x37\x1e\xe6\xe7\xec\x8f\x8b\x80\x2f\x35\x5b\x76\x36\xe8\xe3\x65\x7a\x66\xec\xea\x6b\xe1\x5e\x87\x91\x2d\x87\x4d\xb1\x8e\x5d\xae\xb2\x94\xad\x07\x8e\x88\xb7\x7e\xac\x47\xe4\xaa\xa7\xd0\x7a\xfa\x7d\x49\x53\xe0\x78\x42\xdf\x61\xab\xa4\x48\x30\x79\x8f\x61\x2e\xfb\xe3\x18\xe2\x4b\xf8\xd1\x8e\x47\x1e\x91\x30\x22\xcd\x68\x9a\x24\x16\xd3\xcd\x09\x77\xf1\x35\x7c\xd8\x9b\xc1\x71\x65\xb6\x67\x36\x50\xdc\xcd\x4f\x9f\x84\xaf\xef\xb7\x60\x1b\x5e\x61\x7d\xcf\x64\x12\xb3\xd3\x0c\x4a\xeb\x9b\x3c\x9a\x44\x79\x36\x45\x6f\x25\x8a\x86\x31\x26\x18\xa6\x49\xe0\xcb\xe0\xa9\x33\xec\x57\x2b\x34\xfd\xbd\xf2\xdb\xce\xc6\xc6\x86\x00\xb4\xc3\x98\x4f\x4d\x92\xb7\xb4\xd0\xbe\x61\x3f\x56\x15\x09\x05\xfe\x17\x01\x7a\x07\xd1\x59\x25\x34\x5c\x88\xcb\x6e\x34\x1d\xb2\xee\x58\x41\x18\xa3\x07\x51\x33\x3f\x8e\xc8\x87\xb1\x40\xed\xa7\x6c\xa2\x57\xcd\x4d\xac\x65\x3d\xb6\x73\xba\x21\x1a\x89\x8d\x10\x9c\x9a\x54\x16\x64\x16\xc2\x8b\xd5\x20\x85\x46\xc2\x9d\x45\x06\x9c\x56\x99\x6e\x2c\xf2\x01\xfe\xfd\x4f\xbc\xbe\x82\x57\x0b\xb2\xea\x0a\x73\x9c\xf4\xc7\x38\x59\xc2\xe0\x5b\x77\x91\x94\xe7\xd3\xe5\xf3\xa9\x9a\x4d\x91\x4f\x25\xab\xc4\xb4\x6c\x2a\x6e\x22\x7e\x3c\xb1\x57\x25\xc7\x7e\xb0\xd4\xfa\xc5\xf1\xd1\xbe\xbd\x3e\x43\x33\x9c\xbf\x8b\x8b\x66\xb5\xb5\x6c\x56\x7c\x8f\x6e\x37\xad\x60\x7f\xfc\x19\xf1\x3c\x62\x7e\xdb\x7f\x11\x73\x8c\x3c\xe1\xed\x99\xe1\x30\xe8\x62\x45\x66\x98\x3c\x1a\x44\x12\x7d\x9c\x09\xf9\x3e\x4a\xa6\x91\x29\xec\x6b\xfc\x85\x31\x15\x8f\xc6\x4a\x88\x11\x59\xcc\x37\x5b\x4e\x77\x9a\xfa\xe1\x09\x20\xb5\x83\x78\x71\x9d\xe5\x30\x42\x82\xdf\x26\x4f\x3f\x48\x7a\xe0\x31\xca\xa3\x48\x15\x15\x5c\xb2\x9a\xc3\xc5\xea\xe6\x01\x0f\x0b\x05\xdd\x23\x75\x7d\x89\x4e\xc6\xc2\xd2\xfd\x39\xc1\x2b\x2e\xfe\x01\x80\xf0\x00\x05\x7d\x59\x48\x30\x49\xfa\xd7\xb3\x49\x6f\x05\x1d\x30\xfc\xbe\x92\xe1\x7b\x1d\xbd\x93\x42\x4d\x73\x69\xd5\xe8\xe4\x96\x08\x04\x34\xf4\xb4\x68\x42\xe2\x85\x89\x35\xe5\x18\x8b\x6b\xe0\xaf\xad\x19\x1c\x09\xe6\xd6\xd4\x64\x69\x60\x3a\x48\xd3\x99\x6b\xaf\x8c\xab\x23\x48\xe5\x81\xce\x52\x93\x71\x22\x3f\xb6\xa8\xf3\x86\x89\x26\x70\x59\xd0\x7c\x50\x55\x76\xf6\xb9\x7a\x48\x77\xfc\x56\xe3\xcc\x2a\xd4\x98\x5f\xc5\xa3\x55\x7f\x65\x0e\x8b\xb6\x02\x53\xe6\xd4\xc4\xce\x82\x62\xd6\xcf\x2c\x9c\x53\x9e\x23\xd1\x6b\xb7\x99\x97\xe5\x05\x1d\x21\xb3\xd8\xee\x24\xa1\x84\xa4\x51\xce\x22\xb0\x71\x81\xa8\x46\x5e\xff\xbe\x74\x9d\x7a\x2c\x9e\xa5\x6a\xf6\xd5\xa6\x19\xa0\xc1\x07\x47\xa7\xfb\x27\x90\x02\xe8\xe0\xe8\x07\xb0\x32\xb4\x9d\xbb\xbc\xfd\x82\x7f\x7f\xde\xda\xa8\xe0\x05\x9f\x2c\xb6\x2d\xe0\x17\xf8\xd4\x8c\x91\xc1\x01\x59\xc9\xd6\x50\x61\x69\xf0\x22\xb9\xc3\xdb\xd9\x49\x6d\xc4\xad\x78\x3a\xdc\xa6\x09\xc6\xc3\xd3\x91\x29\xa9\x45\x34\x16\xbe\x61\xed\x85\x7b\xc6\x99\x20\x8b\x53\x67\x4a\x23\x42\x80\x2e\x22\xe4\x24\xc8\xcc\x15\xa5\x03\xe6\x16\x00\x74\xf8\xb4\xbb\xfa\x70\xd4\x7d\x1e\xc9\x6d\x91\x1e\xd0\x02\x06\xc9\xe3\x89\x2b\xa3\x8e\x56\x08\x38\x32\xc7\x67\xa3\x1c\x79\x24\xea\x31\x54\x6f\x2d\xe2\xc1\x34\x89\x72\x3b\x73\x97\xff\xc1\x69\xc3\x2d\x08\xef\x0c\x41\x99\x27\x25\x93\x91\x21\x85\x38\xc7\x12\x31\x6c\x58\x97\x00\x86\x91\xde\xca\xf6\xca\x31\x7f\x0c\x95\xdd\x32\xf8\xad\x1a\xfa\x28\x2a\x2f\x64\xd2\x13\xcc\xf0\x54\x79\x1f\x9a\x73\xb0\x3a\x68\xe6\x70\x5f\xe7\x87\xca\x73\x14\x6a\x06\x43\xc7\xe4\xa5\x98\x05\xaf\x3f\xbd\x82\xcb\x72\x8d\x9f\xd7\xcb\x22\xbf\x2c\xa2\x24\x99\x5d\x0e\x63\xbc\x0b\x03\x96\x99\x03\x67\x26\x30\xf6\x5f\x30\x87\x96\x9b\x42\x93\x2e\x45\xff\xb8\xf7\x89\x1e\xb3\x1c\x0c\x30\x82\x25\x1f\x5f\xf0\x1d\xe7\xb3\xe1\xf9\x11\xf6\x82\x2e\xdc\x02\x7c\x30\x57\xa3\xc7\xfc\x8a\x80\xb5\xa8\x88\xba\x71\x38\x47\xf6\x38\xd4\x28\xe4\x57\x92\x14\x7a\x2a\x7a\xaf\xef\xc6\x78\x0c\xae\x29\x62\x28\xaf\xf2\x68\x28\x15\xe7\x4c\xca\x48\x57\x81\x0f\x8f\x4d\xe8\xa8\xe6\xb5\x70\xfb\x3b\x1b\xfa\x37\xde\xb9\xd4\x0c\x0f\xf2\x72\x02\x1d\x6e\x55\xab\xb5\x4b\x02\x2d\xc5\x1d\x3b\x9f\x5b\xf2\xe6\x8c\x29\x67\x30\x37\x01\x7b\xce\x3f\x5c\x3a\xe5\x96\xd6\xaf\xb8\x0d\xfe\x98\x1b\xe1\x1b\xdd\x0a\xab\xde\x0c\xfe\xed\x60\xb1\xd0\x7e\x0c\xcd\xa1\x98\x39\x4b\xa1\x17\x48\x8b\xd9\xee\x54\x46\x4e\x23\xe0\x57\xec\xfe\xdb\x30\x17\x41\xc8\x96\x39\xfb\x9e\x08\xd1\xcc\x73\x77\x0a\xf0\xcd\x18\x78\x17\x6d\x2e\xba\xaa\xd2\x8f\xdf\x2b\x9a\xa2\xde\xc7\x3f\x78\x73\x68\x85\x2d\xbc\x29\xe6\xf8\x6d\x58\xa0\x17\x9e\x87\x58\xe8\xc9\xd0\x36\x8e\x0c\xe5\x8e\x9b\x5f\xed\xc2\xc0\x71\xab\xca\x7b\x61\x89\x33\x87\xf9\x0f\x9c\x3a\xf8\xc0\x57\x75\xea\x30\xc6\xf6\x90\xc7\x35\x76\xdd\xd0\x69\x00\x33\xee\x16\x56\x60\x5b\x63\xe8\x32\x8e\x8a\x02\xea\x07\x43\xfc\xbc\x8b\xbf\xca\x21\x7f\xe8\x14\x12\xe7\x06\x59\xbc\x06\x51\x92\x54\x3a\xcd\xad\x39\x6c\xe0\xbc\xc0\x51\x66\x58\x1c\x93\x1f\xca\xf3\x4c\x70\x00\x3a\x9d\xb3\x3c\x1a\xc8\xf7\xef\xeb\x75\x55\x0c\x65\x9e\x37\xd7\xff\x73\xb0\x5e\xb9\x89\x17\x8d\xc6\x6e\xf5\xad\x95\xc4\x74\x69\x95\xfb\xdc\xfe\xf6\xd9\x9a\xf3\xf1\xaa\xeb\xc5\xf9\x90\x94\x0f\x89\xbb\xdf\xfb\x4c\xb2\x14\x7f\x7a\x6d\x92\xa7\x4c\xaa\xfb\x7a\xfa\xba\x47\x56\x1b\x0d\x48\x8a\x64\xdf\xef\xf8\x54\xd7\x66\x10\xf9\x7f\x44\x0f\x65\x45\xa0\x48\x15\x1a\xe5\xfe\x9c\x6a\x27\xde\xd4\xe5\xff\xfb\x17\xa9\x9d\x4e\xa3\xb1\x14\x91\x42\x5f\x00\xa4\x39\xd1\xe0\x3a\x96\xef\x21\x5c\x1c\xa8\x0c\xe7\x76\xc4\xcf\xe8\x91\x13\x81\xda\x48\x03\x60\x9a\x23\x16\x6a\xbe\x63\xf8\x7a\x4d\xd1\x46\x31\x86\x1f\x47\xc3\x6c\x52\x18\x55\x4f\x3c\xb2\x31\x01\xa0\x5b\xca\xcc\xe7\xb0\x1b\xf1\xfa\x40\xc2\x48\xa2\xc0\x24\xc7\x68\x2b\xad\x32\x65\x26\xd9\xcd\x4a\x4a\x20\x4f\x0d\xb4\x9a\x0a\xe8\xd6\x5a\x20\x63\xce\x30\x2e\x8d\x54\xcd\x28\xcf\x06\xe8\x36\x66\x04\x17\x80\xd1\x9e\x67\x2a\xfc\x4b\x73\xf4\xa7\xd7\x1c\x19\x8d\xd1\xe7\x95\x0c\x79\x7f\xe9\x8a\xfe\xd2\x15\x2d\xd5\x15\x51\x08\xb9\x97\x05\xa4\x9a\x15\xa7\x36\x2e\xad\x06\x13\xb4\x4d\x8b\x80\x51\xf7\xd6\x8e\x99\x51\xe7\x6b\x96\xfc\x81\x3c\x2e\x49\xb2\x3c\x74\xb9\x5a\x07\xb5\x58\x05\xd5\xd9\x60\x5e\x0a\x1b\x9d\xbf\x14\x52\x5f\xa6\x90\x5a\xa8\x7d\x78\xe0\xc5\x97\x23\xab\x12\x15\xf2\x6a\x66\x79\x3a\x4a\x37\xff\xe9\x53\xa9\xbb\x6e\xe1\xb0\xc6\xb8\x13\x57\x2a\x77\xc4\x13\x71\x7f\xeb\xfb\x87\x9d\x8d\xb3\xe3\xe3\xcb\x97\x7b\x27\x1b\x9d\x06\x0f\xa5\x33\x12\x10\x43\x5a\x88\x14\x54\x19\x17\x84\xfc\xdc\x64\x46\x1c\xe2\xd2\x8f\x66\x52\x6e\x28\x28\x08\xdc\x61\xa5\x47\x73\x89\x81\x48\x67\x37\xd1\xac\x4a\xe2\x59\x7e\x2a\x38\xe9\x0f\xfc\xc0\x29\xe2\x23\xf2\xd9\x94\x89\x71\x72\x55\x85\x9c\x58\xc3\xb6\xb5\xc9\x09\x23\xb4\x0d\x6c\x96\x32\x64\x76\xac\x70\xe5\x01\xc1\x84\x40\x15\x77\x64\x90\x17\x28\xd8\x95\xb2\xca\x89\xb5\x77\xc7\xca\xb1\x25\x0b\x5c\x7f\xb9\x5a\x8e\x21\x22\x25\x16\xa2\xee\x4c\xe3\xc6\xb4\x6d\x36\xc9\x50\xac\xda\x0c\x31\x3b\x9d\xb9\xca\xcf\x56\xb7\xe9\x91\xb2\x66\x30\xf4\x5d\xae\xea\x5c\xa2\xe9\xec\x02\x4e\x32\x58\xf3\x94\x9d\x7c\x2d\x2b\x75\x9d\x5f\xa2\xea\x2c\x7d\x7d\xfe\x87\xf8\xf9\x26\x76\xc0\x5f\xc7\x28\x49\xec\x0a\xa3\xcf\x73\xc0\xcd\x71\x56\x8a\x07\x01\xb7\xba\xc8\x14\x58\x2d\x60\x2e\x99\x26\x50\x7f\x49\x0e\xdb\x0e\x9d\x63\x4f\xbb\xb0\x51\xc1\x56\xc2\x55\x66\xa2\xdd\xcd\x90\x34\x54\x87\x0b\x50\x83\xdc\xc1\xf0\x15\xb0\x55\x74\x30\xd0\xef\xfa\x8b\xd4\x75\x37\xb0\xf7\xc2\x26\x54\x09\xd4\x97\xfa\x74\x6c\x6e\x72\x39\xb7\xc7\xd0\xdc\x0f\xfa\xf8\x4b\xa1\xb9\x58\xa1\x69\xa3\x60\xb8\x76\x91\xef\x82\xaf\x5c\x34\x64\x07\xc4\x5e\xaa\x23\xb7\x15\xbe\x5c\x4c\x67\x7d\xc5\x0b\xbb\xc7\x42\xad\xcb\x4a\x7a\x97\x55\x34\x2f\xab\xea\x5e\x16\x4a\x06\x6e\xa9\xfc\x25\x24\x3e\x90\xa5\x02\x28\xad\x91\xc7\xe3\x84\xc1\xa4\xd5\x17\x8b\x11\x7e\x9d\x3a\x8e\x1d\xfc\x38\xbd\x4a\xa4\x51\xcf\xb5\xab\x6f\xaa\x3e\xdd\x32\xde\x2d\xe9\x60\xc4\x0a\xb9\x8c\x1c\xb4\x33\xe9\xc0\xc4\xc3\xf8\x97\x12\x70\x49\xe1\xf7\x4a\xa7\x7b\xae\x46\xd0\xc5\xa7\x39\x7f\xd5\x56\xf7\x4b\xb4\x82\xad\xee\x37\xd3\x0b\xe2\x69\xbc\x25\xe2\x41\xe5\x1d\xc4\xbe\xdb\x23\x9f\x8f\x2d\x55\x87\xc0\x3c\xab\x50\x53\x7e\x23\xad\x61\x59\xe1\x7b\xe6\x6e\x83\x8a\x5d\x37\xc9\xb7\x34\xfb\xdb\x14\x37\x51\x5c\x88\x51\x96\xfb\x14\x1f\x04\x7c\xe0\x80\x8a\x4c\x0c\xe5\x20\x1e\x56\x92\xfe\x32\xc1\x98\x43\x0a\xe6\xae\x82\x51\x73\x1a\x9f\x58\xa3\xa0\xbc\xc3\x05\x7c\x4a\xeb\xa7\x5f\x3c\x5d\x77\xb9\x90\xe7\x9d\xc5\x2f\x45\xda\xaf\x45\xd9\xaf\x44\xd8\xb9\xf4\x37\x50\x03\x7b\x4a\x60\x8f\x0c\x2f\xd4\x00\xff\xa5\x00\xfe\xef\xf6\x3b\x0c\x34\xc0\xff\x8a\x34\x4f\x19\xd5\x0c\x6b\xa2\xb0\x3d\x73\x89\x43\xf3\x69\xaa\x6c\x8a\xf8\xa6\x30\x35\xb8\xad\xd8\x8d\x89\x26\x5d\xcd\x23\x8c\x78\x91\x6d\x61\x24\x85\x71\x14\xa7\x45\x04\x25\x29\x19\x3f\x28\x44\xfd\x80\x1b\xad\x5c\x6d\xef\x98\xd2\xb6\xe6\xd3\x14\xa2\x40\x37\xac\xfd\x0a\x73\x81\x48\x25\xa2\x9b\x68\x86\x0e\x91\x30\xe8\x76\xa3\x5a\x1d\x9c\x27\xb2\x42\x1b\x5c\xa1\xda\xbd\x85\x62\xd7\xe5\xf5\xad\xc8\x86\x4c\x49\x75\x6c\x5a\x6b\x9b\xa8\xc6\x4b\xaf\xac\x06\x11\xd6\xe6\x80\x32\xb7\x76\x00\x83\x28\xc5\x34\xfb\xc8\xe9\x53\xb6\x35\xbd\x05\x2e\x0f\xa6\x5e\x13\xa7\x5d\x0e\x33\x13\xff\x69\x7d\x0f\x8d\x12\x2c\x9f\xa6\xa4\x42\xd6\x2b\x63\xde\x4e\xd3\x3c\x4b\x12\xcc\xdf\x3a\x59\xa2\x17\x66\xd9\xea\x6e\xad\x14\xe6\x99\xee\xfe\x8c\x1a\xe1\x53\x29\xc5\x75\x76\x23\xc6\x51\x3a\x43\xfb\xb1\xcf\x7e\x01\x7a\xe5\x72\x22\x23\xac\xc2\x25\x16\x58\xe1\x17\xe9\x6e\x03\x05\xce\x13\x4e\xa0\x4a\x39\xca\x39\x97\x0e\xd9\xac\x79\x02\x52\xbe\xd4\xf8\xd2\x25\x35\xc4\x2c\x87\x77\xef\x8a\xdb\xbd\xf0\x7c\x5c\x96\xe7\xa8\xc6\xff\x02\x47\x96\x85\x29\x2a\x05\x17\x6c\x6e\x3d\xe8\xb2\x2a\xe1\xff\x19\x10\x61\xba\x49\xfb\xbc\x24\xc1\x2d\xcb\x17\x29\xe6\xb8\xc4\x55\x65\x38\x9c\xf3\x8d\x52\xb4\x91\x28\x65\x67\xe0\xf1\x50\x15\xa9\x30\x0f\xd2\x62\x85\x34\x98\xfe\x09\x84\xc8\x25\x9b\xcf\x19\xe8\x23\xde\x42\xec\xf0\x68\x7a\x4c\x52\x12\xb0\xcf\x52\xf7\x31\x6e\x11\x1e\xd9\x5a\xc9\x1f\x70\xa1\x3b\x20\x3f\x84\x65\x7f\xc0\x25\xde\x7f\xa5\x1e\x5f\xe7\xcf\xb7\x10\xdc\xca\x6e\x7b\xa6\xd1\x72\x0f\xa3\x79\x94\xed\x5f\xe1\xa6\x52\xc5\xdf\xff\xe5\xa8\xf2\xc7\x3b\xaa\x6c\xfd\x25\x6b\xfc\xbf\xee\x6c\x82\x92\x06\x2f\x5e\xdc\xd4\xd7\x77\x55\xad\x82\x65\x22\x04\x14\x81\x5a\x49\x88\x58\x24\x41\xbc\x9a\x8e\x46\xe3\x28\x9d\x27\x43\x5c\x4f\x47\xa3\xd5\x84\x88\x7f\x41\x90\x10\x95\x88\x30\xd4\xac\xc8\x30\xb3\x4d\x7b\x1e\x7b\x1c\x60\xc0\x2d\x02\xa0\x1b\x81\x2a\x7d\x19\x73\xbc\xb2\x5a\x94\x38\x61\xb3\x40\xb7\x0e\xa9\x39\x5e\x44\xd2\xe7\xdd\x11\x5f\x46\xe8\xbf\x8e\xcc\x7f\x19\x91\x9f\x43\xe1\xcb\xf4\xfd\x2f\xca\xfe\x17\x65\xff\xc6\x94\xfd\xef\x58\xbe\x1d\x29\x2e\x77\xe7\x68\x0a\x57\x6c\x86\x4a\x2c\xf8\x25\xaf\x9a\x54\xc5\x03\x0a\x0d\xd9\x4c\x2c\x43\xa9\x20\xf9\xf5\x24\x1a\xbc\xa3\x4c\xac\xf5\xad\x76\xfb\xfb\x06\x96\x93\xa4\x6a\xf1\x58\x66\x01\xf3\x0b\x01\x7d\x83\x1c\xdc\xc5\x34\x85\xc4\x22\xe0\x4e\xf8\x61\x90\x4c\x87\x52\xdc\x64\xb9\x2a\x30\x7b\x24\xab\x58\x82\x15\x4c\x78\x3e\xd6\x51\x9c\xe8\xcb\xe2\x19\xfa\x0e\xd2\x67\x30\xe8\x7c\x0d\x94\x10\x53\xd2\xa3\x40\x29\xf2\x51\x3c\xa0\x1e\x3e\xc1\x7f\x9e\xa5\xa3\xf8\xaa\x0e\x33\x37\xb3\x34\xcb\xd2\xc4\x24\xf4\xfc\x31\x65\x30\xd5\xdd\xa9\x0c\xe9\x75\x4c\x45\x7a\x2c\x35\x62\xbf\x76\x4d\x0b\x03\x92\x12\x00\xe8\x3f\xed\x3b\xf6\x11\xd1\xe3\x9f\xf4\x7a\xa3\xa7\x62\xcf\x8d\xc2\xbe\xd5\x83\x11\x3d\x18\x13\xec\x31\xe4\xf7\x82\x69\x4d\x73\x70\xcf\xbc\x84\x8b\x73\x77\x6d\xad\xe2\xa9\xe8\x89\x73\x74\x51\x84\xff\xa0\x2c\x11\x0c\x54\x8f\x83\xbb\x47\xa6\xf2\xc6\x2c\xd6\x16\x90\x36\xfc\x3f\x3f\x9d\x4c\xa3\xe9\xdd\x8b\x5b\x98\x0d\x02\x95\x85\x21\x94\xfb\x4d\x71\xbf\x29\x1e\xc1\xff\xf2\x70\x5e\x0e\x03\xa0\x74\xa1\xc2\x9a\x9a\x48\x28\x5c\x9d\xe1\xf0\x8c\x1e\xb2\x02\xea\x83\xa6\xe8\x3e\x04\xc8\x73\xc1\x76\x36\xc4\x76\x55\xd7\x87\x4d\x71\x6f\x1b\xff\x7f\x5e\xdf\xce\x86\xb8\x47\x77\x79\x69\x32\xfa\xb3\xfa\xff\xb9\x63\x6a\xd0\xf7\xfe\xe2\xe1\x3f\x42\x00\xe1\x20\x02\x40\x9d\x0d\xf1\x60\x5e\xd7\xee\xf6\x23\xfa\x9f\xca\xce\x9d\x0d\xf1\xb0\xaa\xab\xfe\x1a\xf4\xda\x7e\x30\x6f\x02\x9d\x0d\xf1\x5d\xa9\x2b\xeb\xa7\xbf\xbb\xb5\x7d\xbf\xaa\x77\x67\x43\x3c\xaa\xec\x0a\xbd\xe0\x7f\xee\x6f\x7d\x1f\x7e\xd8\x7c\xf5\x7b\x40\x00\x1e\x14\xbe\xd1\x59\xbb\xd8\xfd\x97\xa8\xc4\x83\x6c\xa8\xeb\x9e\x23\xdf\xba\x4b\xda\x07\xb5\x00\x60\x36\x1f\x93\xb8\x4f\x71\xf9\x41\x99\xc1\xf1\x65\x9c\x6a\x6e\xc2\x94\xfc\xf5\xb2\xcc\x42\xe1\x7e\x97\xc3\x7f\x8d\x2e\x91\xe7\x87\xfb\x7b\x27\x14\x17\xe3\x2e\x10\xcc\x2c\xd6\x26\xd7\x84\x4e\x07\x53\x09\x81\x43\xda\xd1\xc1\xa1\xa8\xf3\xac\x8e\xa7\xb2\x20\xba\x0c\x35\xd3\x7d\x52\x20\x26\x51\x1e\x8d\x65\x21\x73\xe5\x72\x2c\x95\xfc\xfa\x7a\x55\xf4\xe3\x5c\xb5\x81\xba\x5f\xb4\x39\x05\xe3\x15\xca\x96\xf5\x0b\x08\x23\x2f\x0b\xb8\xac\x6b\x40\x15\xcb\xe5\x18\x57\x19\x33\x91\xcd\xb5\x20\x23\xcb\xd6\x6e\x45\x95\x67\x7a\x18\xe4\xba\x29\x33\x37\x15\x2a\x2c\xdf\x7b\xb3\x64\x54\x9b\x6b\xb7\x73\x2e\x26\x5b\x41\x01\xe9\x17\x78\x2a\x4e\x0b\xac\xcd\x6b\xef\x1d\xcd\x2f\xe8\x2b\x63\x9a\x24\xa1\x61\x03\xa2\x8d\x65\x6e\x33\xa8\x83\x58\xc4\x50\x15\x77\x9e\xa0\x44\xc5\x54\x61\xf5\x79\x1f\x48\x84\xaa\xe8\x34\x1a\x4b\x01\xce\x98\x86\x62\x41\x3f\x9e\xd9\xc7\x1b\x44\x67\xc3\xa8\x64\x54\xa1\xf1\xd4\xf0\x0c\x95\x5d\x6d\x4e\xaf\x5d\x14\xa5\xf4\xaf\xcc\x4f\x1b\x54\xee\x67\x8a\x86\xbb\xa1\x82\x05\xda\x96\xb3\x9e\x41\x11\x3e\xeb\x62\x97\x09\x56\xa1\xba\x04\x2d\x9c\xb9\x86\xd6\x77\xe5\x91\x2b\x4b\x65\x33\x28\x58\xf8\x36\x58\x3c\x34\x0c\xc5\x85\xd8\x02\x5e\x15\xc8\x05\xe6\x9b\xd7\x0f\xbb\xee\xe1\xd5\xc7\x78\xc2\x80\x5d\x7d\x24\x64\xf3\xf7\xb4\xb3\x81\x0d\x31\x3b\x9a\x88\x53\x60\x8b\x00\x37\x8c\x74\xe8\x01\x41\x8f\xd7\xf2\xbc\x6e\xd0\xd2\x9f\x62\xfe\xb8\x26\xec\x2c\xa4\x67\x1c\x64\xe3\xb1\x16\xcb\x1c\x90\xb1\x2c\xae\x33\x3d\x92\x5f\x2e\x5f\xec\xbf\x3c\xdc\xd3\xec\x32\x14\x2e\x8d\x52\xbc\xcf\xfb\x52\x98\x17\xac\x1b\x70\xc6\x46\x26\x6a\x75\x77\xf1\xbb\x98\x4f\x3a\x1b\x91\x20\x08\x44\x08\x39\x3a\x63\xe5\xe0\xc1\x6a\x74\xbd\xe2\xea\x06\xf8\x71\xf8\xcb\x77\xdf\x19\xbf\x5e\x78\x53\xbf\xb7\xfd\xa3\xe8\xcf\x0c\xb9\x6b\xf0\x9d\xc1\x72\x8e\xb6\x6f\x92\x5d\x6d\xd7\x4d\x36\x54\x51\x7f\xd4\x6e\x77\x1f\xfa\xed\xa9\x9e\x27\xb5\xb7\x6e\xcb\x5d\x6f\x44\xf8\x71\xda\x22\xa2\xb9\x98\x06\x9c\x06\xd6\x16\x07\x18\xe2\x81\x91\x9c\xb9\x84\xec\xdd\x22\x4e\x0d\x22\xca\x41\x96\x0e\xb1\xc2\x45\xc6\xcb\x67\x50\x9d\x4f\xe0\xbd\x33\xf4\x4c\x86\x9c\x28\xb1\xe6\x88\xa1\x79\x82\x05\x6e\xa9\x8a\x42\xe4\x65\x61\x19\xb9\xe2\x34\x37\xa7\xf1\x47\xb9\xe6\xb2\xa7\xb6\xc5\xcf\xe8\x26\x1d\x2b\x91\xe5\x57\x51\x4a\x75\x31\x9b\x2e\xe1\x8b\x9f\xe8\x2f\x62\xd6\x4c\x4a\xc9\x0b\x30\x5b\x81\xc9\xaf\xe9\x32\x1b\xcb\x54\x4d\x73\x30\x5e\x45\x85\x38\x38\x46\x07\xdf\x9b\x68\xa6\xb0\xbb\x2b\xa3\x03\xd7\x56\x64\xcc\x9b\xbc\xb2\xa7\x9e\x2c\xe5\xb0\x89\x3f\x4a\x56\xba\x94\x2d\xbc\xc3\x07\x5c\xfa\xbd\x41\x31\x8d\x12\x4b\x37\xb0\xd1\x8e\xd8\xde\x80\xf1\x1a\xbb\xa6\xab\x60\x34\x55\x70\x80\x5c\xa5\xf1\x35\xe3\x05\x35\x8c\x73\x39\x28\x92\x19\x66\xa5\x71\xc9\xdd\xcd\xae\x06\xc3\x21\xb3\x18\xc3\x82\xc3\x38\x05\x5a\x9b\x25\xfa\x90\x72\xaf\x71\xa5\x29\x28\xe8\xb0\xe0\x64\x42\x95\x57\x2c\x15\x05\xf8\x40\x63\xd7\x60\x09\x03\xf2\x3c\x82\xca\x77\x0f\xef\xff\xd8\xc4\xe5\x4d\x34\xf0\x58\x59\xa5\x58\x98\x38\x07\xdc\x34\xf5\x59\x20\x37\x4d\xaa\x91\xba\x97\x92\xfb\x3b\x90\x31\xbd\x27\x00\x1a\xea\x39\x4f\xa9\xfe\x9e\xf3\x91\x1f\x67\xc3\x69\x92\x69\x30\xe1\x6c\x03\xb2\xd4\xd9\x10\xaf\xa0\x4e\x52\x29\xcc\x04\x72\xfe\x1c\x1d\x1c\xb6\x79\x6f\x77\xb1\x39\x5a\xe4\x96\x43\x03\xa1\xd5\x2a\x32\x4d\x57\xac\x67\xa9\x3b\x9b\xb6\xbe\x86\x81\xa2\xa9\xb4\x2d\x64\x2f\x13\xa9\xc9\x57\xe8\x90\x1c\x74\x67\xd4\xc0\x92\x03\x0b\xb7\x11\xb6\x66\xb4\xc0\x0c\x97\xcc\x49\xde\xba\x58\xf7\x4f\x86\x93\x47\xae\xc2\xbe\xfe\x64\x7f\x46\x85\xba\x71\x19\x8c\x62\x10\x7a\x61\xbc\x2e\x24\xc5\x04\xa4\x5c\x23\x87\x5e\x39\x81\x1c\x49\xb6\x2d\x54\x93\xd5\x27\x0b\xd3\x73\x3b\xae\x42\x37\x55\xe8\xa9\xab\xf1\x4e\x15\xee\xd8\x83\xb0\x04\x46\x2b\x51\x44\xef\xa4\x82\xe0\x07\x2f\x4b\xc2\x3b\x39\x6b\x22\xd8\x98\xf8\x41\xe3\x84\x8a\x53\xda\x60\x1f\x7a\xd2\x13\x76\x15\x03\xe4\xa8\x60\x9d\x3a\x1b\xe2\x67\x3f\x78\xcf\xf8\x14\xf4\xe5\x55\x8c\x99\xae\x83\xdc\xe2\x74\x5b\x53\x60\xdc\x0f\x92\x3e\xe3\xd2\xc6\xd9\x33\xec\x8a\x0d\x51\x3d\xca\x68\xf0\xee\x26\xca\x87\x2a\xc4\xda\x92\x9e\xd0\x62\x9f\x73\xae\x60\xc5\xac\x19\x6b\xc0\xa3\x6b\xb6\x78\x16\xa9\xc0\x41\x8e\x5d\x98\x15\x5c\x9d\xa7\x1e\x0e\x7a\xca\x0f\xb1\x2a\x94\xc7\x87\x31\x96\xd4\xbb\xb6\x6d\x98\x89\x3b\x25\xc4\x85\x86\x9f\x2f\x01\xe0\xbd\xa1\x89\xee\xcf\x8b\x87\xe3\xad\xed\xb1\xb9\x1e\x27\x64\x51\xf9\x7d\x94\xc4\x43\x9e\x9d\x00\x0a\xd0\xe3\x4e\x04\x64\x31\xd0\xcc\x6a\xd2\xe8\xd5\x74\x65\x4b\x1e\x15\x7e\x08\x85\x2b\x88\x5f\xaa\xe8\xce\xc9\x23\xab\x85\xef\xea\x17\x03\xdd\x26\xf4\x76\x52\x36\x8b\x53\x2d\xa3\x47\x49\x88\x30\x03\x3e\xcb\x50\xe3\x20\xa6\x13\xe2\x4d\xe0\xba\xe4\x74\x0e\xfc\xe0\x21\xed\x03\x66\x4f\x86\xc2\xa8\x36\x02\x02\x47\x6a\xaa\xfc\x8b\x3d\xc8\x82\x2e\x4d\x31\xf3\x78\x3c\xc9\xb3\xf7\x7e\x42\x11\x01\x92\x8b\x9f\x6f\x84\x42\xff\x36\x70\x30\x55\xe3\xf7\xc4\x36\x7b\x29\x16\x85\x1c\x4f\x80\xf3\x1d\xc5\xe9\x50\x44\x7e\x88\x2d\x5c\x1c\xf6\x34\xf9\xd1\x33\x31\x54\xee\x8b\xf5\x45\x48\x5f\x1e\x47\x49\xc2\xf7\x00\xb9\x39\x5a\xf6\xb1\x1c\x5c\x47\x69\xac\xc6\xe5\x74\x6e\x6c\x6a\x66\x31\xde\xcb\x04\xca\x6b\xdf\xf7\x6a\x70\x9f\x5d\x47\x45\x4d\x73\x0b\x71\xa4\xd0\x71\xca\x57\x4b\x62\x71\xa6\xa9\x92\xf6\x8a\x86\x7e\x76\x09\xbc\x5c\x2a\x6c\x15\xbe\x2a\x45\x0c\x8b\x8e\xd8\x28\xe3\xa1\xdd\xd8\x5b\x65\x8b\xd9\x10\xe5\xe1\x2e\x5a\x36\xb3\x62\x8f\x7b\xe2\x5e\xb8\xf7\x54\x5b\xcb\x1c\x57\xcd\x99\x87\x1d\x45\xbd\xdb\x6e\x7f\xdf\xf0\x49\x0c\x05\x7f\x19\x1e\x77\x14\xbd\xcf\x72\x4a\xd3\x37\x90\xc6\x2c\x26\x06\x99\xe6\x7c\xd8\xe7\x3c\x29\xdf\x2c\xf0\x1b\x88\x07\x1f\x45\xaa\xb0\x87\xc0\xa1\x55\x40\xee\xac\x9b\x39\x5b\x44\x06\xdf\x53\x05\x6c\xed\xda\x7a\xf9\x08\x15\x18\x29\xaa\x9c\xcf\x70\xd5\xa4\x5b\x61\xc0\x02\x11\x0c\x96\xb6\x3f\x23\xeb\xcc\x60\x87\x5a\x75\x36\xc4\x8b\x78\x68\xb0\x6a\x50\x5c\x42\x26\xd2\x62\x36\x91\x43\x39\x22\x2d\x75\x91\x41\xd1\x22\xc8\xcc\xa8\x97\x36\xd6\x87\xe0\x26\xca\x53\x22\x9d\x88\xbb\xaa\xc8\xa7\x83\xc2\x80\xb8\x54\x62\x38\x4b\x2f\x13\xfd\xb9\xf3\x57\xfb\x7b\x3f\x5d\x9e\x1e\xfc\xb2\x7f\x61\x18\x0e\xb2\x65\x41\x41\x4c\xdc\x7d\xdd\xd0\x9e\x83\x4a\x58\x43\x80\xb5\xbd\xf1\xe2\xf2\xf9\xf1\x8b\xfd\xd3\xcd\xee\x05\x2c\x8e\x65\xcf\x17\x43\xe8\x27\x97\xd4\xff\xd9\x21\x03\x00\xfc\x1b\x6d\x35\x00\xd0\x88\xa7\x25\x53\x1c\x96\x72\xf3\xd3\x5b\xac\xa9\x1f\xf1\x8d\xd9\x48\xbc\x38\x7e\xf3\xec\x70\x5f\x60\xaa\x68\x8c\x89\x4c\x0b\x99\x27\x32\xd2\x57\xf1\x28\x2a\xa2\x26\x76\x35\x55\xa2\xff\x76\xea\x52\x4f\x52\x19\x28\x21\xa1\x16\x77\xfc\x5e\x9a\xfd\xb7\xcb\x26\x34\x97\x29\x6f\xa8\xfa\xde\xb3\xe9\xa8\xfb\xb0\x6e\x57\x52\x6c\x88\xed\xc6\x2e\xef\x33\x9c\xd7\xa7\xbe\x2d\x36\x04\x2d\x9a\xd8\x14\xdd\x86\xdf\x97\x16\x46\x88\xb9\x7d\xcd\x82\xf9\x9d\x41\x13\xe7\x8f\xb8\xe2\xf9\xb0\xe2\x39\x7d\x11\xf5\x74\x78\x84\x2f\x87\x52\x0d\x70\x04\xa1\xb8\xaf\xdf\xb4\xd1\x0d\xd4\x98\x81\xed\x46\xe3\x67\x56\xea\x5c\x81\x26\x66\x30\xd8\x7d\x61\x6f\x87\x11\xb6\x3f\x6c\xad\x96\xe1\xfb\xc9\xe5\x20\x9b\xa6\xc5\xb9\x96\x08\x9f\x1d\x9c\x01\x62\x31\xf0\xf0\xb2\x62\x6d\x4d\x73\x58\x56\xa2\x23\x8e\xc9\x18\x64\x9a\x6e\x1a\x8e\x98\x7d\x1f\xf4\xad\xae\x96\x9f\x37\x9c\x38\x2d\xc4\xb5\x8c\x26\xe7\xdb\x1b\x1e\x92\x0b\x9b\xf0\x61\x82\x84\x40\x4b\x17\xd3\x38\xc1\x18\x4d\x8e\xff\x9c\x0d\x83\xe6\xe5\x71\x6b\x94\xe0\x18\xb1\x7b\x4b\xd8\x0e\x11\x74\x1f\x86\x05\xfa\x27\x55\x42\x0e\x75\x48\xf3\x85\x1c\x0a\xf3\x9f\x04\xe3\xbe\x1c\x47\x25\xb5\x0f\xc1\xa1\xde\x1a\x10\x24\x3a\x53\x85\x18\xe5\xf2\xb7\xa9\x4c\x07\x64\x9b\xa1\xfa\xef\x2a\x43\xcf\x6f\x58\xd1\xf4\x02\xd8\x1c\x5a\xdd\x14\x4b\xaf\x9b\x5f\x9b\xdd\x8b\x36\xfe\xd8\xba\x30\xd1\xad\xb6\x42\x1f\x01\x03\xc1\x57\x0f\xd4\xca\x9d\xfe\x6a\x45\x49\x42\xc4\x39\xb8\xdf\x86\x72\x82\xf6\xb0\xa5\xfb\xd0\xe9\x68\xe1\x08\xda\xfb\x18\xe0\x1f\x4b\xfd\xde\x20\xdc\x0b\x00\xae\xd7\x14\xaa\x11\x4c\xfb\x80\x4f\x46\xee\x2f\x62\x89\x0e\x0c\x12\xb3\xd7\xe2\x2e\xea\xd6\x50\x07\xde\x2e\x5b\x78\x23\x93\x26\x34\x60\xde\x49\x61\x88\x92\x2e\x3b\xd0\x20\x28\xfb\xf4\x16\xc1\xc4\x85\x06\x14\xa8\x39\x4e\x49\x47\x60\x42\xba\x00\x26\x87\xd6\x21\x50\x6d\x41\xf1\x3c\x7a\xdf\xee\x8b\x5c\x46\xb0\xa1\x14\xb2\xb3\x81\xfc\x27\x54\x11\x62\xdf\x41\x4d\x83\x95\x00\x5b\x76\x8e\xb1\xe6\x62\xb0\xf8\xff\x3b\x39\x01\xe1\x91\x8a\xd2\xc2\xf9\x96\xb9\x72\x7d\xe2\x91\xc7\x82\xc4\x86\xe2\x0f\x06\x52\xa9\xd1\x34\x71\x39\x7e\x41\x9f\x05\x72\x5e\x13\x10\x80\x49\xbe\xfa\x3f\x53\x6f\x03\xb5\xc7\xb1\x27\xf3\x61\xb9\x4e\x3d\x24\x7c\x2b\x2b\xb2\xce\xcb\xf7\xa6\x28\x95\x80\x92\x6a\x32\x25\x85\x0f\x56\xac\x06\xff\x1f\x4d\x16\x87\x51\x3e\xc4\x37\x6d\x21\xea\xc0\xc9\x69\xc0\x10\x96\xde\x97\x58\x33\xd7\xae\x9b\xfe\x4f\x8f\x95\x0a\x63\xc4\x23\x6f\x01\xe3\x0a\x79\xe5\xde\xf6\x8f\x58\x2f\xf4\x16\xcb\x13\x81\x91\xda\xe7\xb9\x41\x07\x84\x93\x76\x43\x81\x22\xab\xfe\xe4\xa1\x67\x9c\xaa\x82\xd2\x7f\x04\xab\x52\x57\xd1\x7b\xbd\xef\x58\x68\x43\x35\xda\x0e\x98\x11\xa0\xa2\xc9\x24\x89\x07\x8e\x2d\x06\xad\x75\x3c\xc1\x2a\x8e\xa0\x80\x26\x35\xb6\xeb\xdc\x12\x03\x3d\x67\x0d\x58\x9f\x54\x9f\xf0\x41\xa5\x34\x42\xa5\x22\x99\x81\x75\x1e\x12\x50\xe7\xd9\xfb\x78\x88\xc9\x9e\xd9\xea\x0e\xa3\x49\x61\x95\xda\x5a\xac\xb8\x72\xea\x77\x2a\x63\xac\x31\x43\xe9\x46\xaa\x88\x07\xaa\x2d\xea\x67\xd1\xbb\x60\x93\xe4\x87\x68\x3c\x49\xa0\xda\x71\x0c\x8a\x51\x58\x17\x60\x54\x26\x59\x96\x27\x33\xe1\x15\x77\xd1\x37\x0e\xa5\xab\x01\x56\x91\x8d\x07\x44\xb6\xb0\xbd\x11\xc1\xc1\x17\xad\x21\x4e\x69\xa7\xe8\x44\x6a\x64\x40\x67\x07\x07\x07\x52\x5a\xb3\xc9\xf5\xa1\x8e\xdc\x7b\x89\xf7\xdd\x34\x57\x68\x6a\xcc\xde\xcb\xdc\x66\x6e\xc9\xa3\x54\x8d\xe3\xa2\xa0\x8c\x16\x08\x08\x17\x15\xf2\xcc\xb9\x45\x65\x3b\x71\xa0\x51\xa4\x46\x47\x93\x6a\x3c\xdd\x0f\x89\x14\x79\xae\xf8\xda\x90\x7c\x8a\x1a\x19\xab\x2a\x4c\x8c\xe1\xc5\xb1\x1b\x86\xb8\x21\x3d\x7a\x16\x52\x35\xc3\x69\xa8\xf6\x9c\xdc\x1d\x08\x01\x78\x5f\xf8\x4b\x2f\xc1\x9a\x8d\x20\x84\x8b\xa2\x7c\xd7\x01\x30\x94\xfc\xf4\xf7\xa0\x72\x34\xd2\xb9\xa6\x66\x07\xb0\x0c\xce\x28\x89\xae\xb8\xde\xf4\xc6\x14\xce\x49\xa5\x3e\x5b\x51\x3e\x0b\x2f\x97\x6c\x52\x84\x57\x2e\xd9\x6b\x9c\x5e\xc8\xf7\x54\x03\xfc\xe1\xdc\x87\x0a\x2c\x68\xf1\xc0\x83\xb8\x0a\x38\xec\x56\x82\x66\x54\xf2\x81\x81\xcb\xae\x0d\x61\xa0\x69\x16\xa7\x55\x4e\x75\x46\xed\x2a\x03\x7d\x52\xc7\xd4\x53\xd3\x3c\x16\x2f\xc1\x25\x12\x39\x2a\x7c\xcd\x92\xd3\xef\xc5\xc1\xee\x93\x7b\x1e\x22\x7d\x1b\xb5\x9c\x51\xce\x14\xb7\xa0\x73\xa2\xa4\xa4\xa0\xf1\xc9\x8a\x22\x1b\x8b\x3a\x98\x27\x48\xaf\x10\x5f\xa5\xf1\x28\x1e\x44\x7a\xe0\x71\x61\x08\x52\x87\x7d\x14\x55\x4e\x55\x7a\x55\x52\x46\xc5\xc8\x0d\xe1\xf8\xda\x42\xec\x69\x02\x0d\x83\xe9\x9b\x6a\xe2\xa0\x17\xb7\xcd\x9d\xfe\x88\xa2\xa1\x34\x83\xc0\xb0\x03\x25\x1e\xf4\x1b\xa2\x75\xa1\x3a\x85\x71\x1a\x17\x58\xe4\x3a\x1a\xc9\x64\x66\xd2\x8f\x60\x34\xac\xf8\xdb\x69\x1b\xd4\x18\x50\x9d\x5c\x91\x30\x86\x85\xb2\x0d\x21\x25\x8b\x2c\xe6\xd6\xf7\x8a\x1f\x16\x59\x96\x00\xff\x43\x3a\x0d\xaf\x2e\x9c\x99\x7b\x58\xc8\x2d\x1b\x8d\x40\xaf\x68\x75\x70\xfa\x1b\xbc\x52\x22\x6e\x73\xab\x65\xf6\x5b\xaf\x88\x39\x6f\x31\x6e\x17\x15\x2c\x84\x32\x6e\x4b\x0a\x34\x92\xe0\xab\xe0\x3a\x25\x4e\xa2\xb2\xa8\xa2\x88\xe0\x42\xa3\xaf\x4e\x20\x79\x84\xa1\xdf\x6d\x77\xd5\x14\x16\x0c\x96\x49\xb5\xc9\xab\xf4\x2d\x12\x14\x0c\x34\xfb\xe3\xd9\xc4\xc9\x60\x78\x22\x95\x2c\x7e\x94\x72\x52\x57\x45\x3e\x76\x9e\xba\xca\x56\xd2\xb8\x03\x56\xf2\x4f\x9f\x04\xfc\x01\x67\xd5\x86\xfe\x92\x9f\x9c\xcc\xf3\x3a\x56\xd5\xfd\xe5\xf2\xf4\xec\x64\x7f\xef\xf5\xe5\xfe\xc9\xc9\xf1\x49\x63\xd7\xd6\xe8\xd0\x5d\x8b\xac\x88\xb0\x52\x34\xff\x6d\x6c\xd1\xa6\x15\x48\xde\xc5\x6c\x22\xc1\x76\xfa\xe6\xe8\xc7\xa3\xe3\x9f\x8f\xd0\xeb\xc0\x74\x84\x31\xa0\xc9\x9f\xdb\xa0\xf9\x03\x07\xd6\x3a\x1d\x82\xa1\xf9\xb1\xf3\x08\xb4\xa6\xe7\x16\xfe\x65\xdc\x59\x21\xf8\x7f\x1c\x0d\xa5\xd3\x9c\xa3\x7d\x54\xaf\x57\xbd\xdd\x6e\x37\x9d\x13\x26\x25\x56\xfd\x4c\x3e\x11\xe4\x08\x60\x3e\xf6\x54\x1c\x1c\x1d\x9c\x5d\x9e\x9e\xed\x9d\xed\x8b\x1d\xf1\xec\xcd\xe9\x3f\xf1\x47\xc3\xce\x36\x1a\x26\x80\xa6\xa6\x4b\xaf\xd7\x13\xdb\x0d\xf1\x14\xc6\xb2\x85\xa9\xaf\xf3\xc1\xbd\xed\xfa\x96\xfe\xea\xd1\x9b\xc3\xc3\xa6\xd8\xd2\x5c\x11\x66\xb9\xe9\x82\x37\x0b\x00\xa9\x68\x13\x98\x93\x9d\x4f\x32\x08\x9a\xd6\xe1\x96\xbc\x6c\x76\x9d\xe3\xe3\x2f\x97\xc7\x3f\xee\xce\xc7\x97\x00\x57\x72\xa9\x97\xba\x1a\xa1\x8c\x03\x2b\xb4\x01\xf7\xd5\xe3\x1f\xcd\x06\x58\x07\x1f\x87\x57\xbb\xbe\x03\x66\x2e\x8b\xea\x61\x9c\xca\xe2\x15\xd8\xf2\x09\xef\x5c\x6c\xd4\x02\x94\x75\xb3\xe3\x48\xba\xeb\xfc\x52\x6d\x63\xdc\x8b\x3b\xb8\x17\x0b\xfb\xb1\x3e\xd6\xf7\xc0\x84\x5f\x2d\x5d\xcc\x83\x34\x2e\xb6\x69\x06\xa0\x71\x6c\x0a\x74\x1b\x30\x15\xb5\x9f\xc5\x85\xd2\xcf\xc6\x87\xf8\xd6\xe8\x1f\x83\xa9\xea\x31\x76\x3a\xc6\xef\xfc\xcd\xe1\x21\x3f\x9c\xc1\xa8\x69\x81\xf5\xbe\x11\xfa\x77\xed\x19\x21\x9d\x68\x8f\x9c\x16\xf6\xde\x1c\x9e\x5d\x3e\x3f\x7e\xfd\xd3\xc9\xfe\xe9\xe9\xc1\xf1\x91\xdd\x37\x52\x9d\x3e\xdc\xe5\x35\x6a\xdc\x88\xe9\x90\x81\xed\xc4\x68\x00\xc1\x75\x46\x7f\x70\x62\x9c\x3f\x84\xb0\x9e\x1f\xf8\xcb\xf5\xef\x89\x96\xfb\x65\x3f\x62\xb3\x82\xb0\x96\x4f\x44\xd7\xd6\xa5\x23\x70\xdb\xa1\xcf\x06\x78\x77\x00\xf7\x6d\xbe\x6f\x98\x7c\x33\x0e\x07\xaf\xd5\x13\x5d\x33\x2d\x53\x1d\x8f\x56\x5f\x3c\x16\x5d\x8d\x53\xf6\xf7\x13\x0c\xe9\xdb\x7f\x7d\x79\xb8\xff\xf7\xfd\x43\x7c\x07\x4e\x1f\x77\x7a\xdc\xed\xc3\xd4\x8f\xf3\x16\xe8\x91\x6e\x1e\x4c\x44\x3f\x4a\xe8\x53\x5b\xee\xc7\x13\xf1\xbd\x01\x61\xf5\xcf\xd4\xc0\xfe\x7e\x02\x24\xe9\x1f\xfb\x2f\x6e\x49\x99\xcb\x7b\xa7\x77\xff\x91\x5d\x52\xbe\x27\xdf\x1b\xdc\xe9\x6c\x88\x69\x5a\xc4\x89\xd8\x7e\xf0\xb0\x05\x86\x52\xba\x42\xfb\xd3\x2b\x31\x8a\x3f\x78\xb9\x3c\x15\xe9\x20\x7c\x1f\xac\xdd\x35\xef\xec\x68\xc2\xbe\x6b\xfc\xca\xc6\x44\xe6\xc9\xd3\x8c\xb6\xd5\x50\xe8\xd0\xc7\x07\xdb\x18\xdb\xb4\x8f\x36\xcc\xfd\xa5\x8b\xd9\x86\xb0\xa1\x79\x47\x26\x6a\x96\x60\xaf\x4b\x1f\xe5\xf6\x6e\xbb\xe1\x9b\xe2\xbb\x5d\xf7\xd6\x07\x6c\x3b\xb0\x16\x16\xbc\x6b\x6f\x7d\xd8\x3c\xbb\xf7\xff\xfd\xbf\xf5\x3a\xff\x66\x90\xf1\xa8\x21\x3a\x61\xcc\x20\x77\xa3\xe1\x0a\x9e\x47\x2e\x5b\xa0\xd1\xb8\x3a\xdf\x83\x40\x13\xc4\xc6\x45\x0d\x8d\x4b\x46\xa9\xe1\x8d\x69\x85\x9c\xd9\x0b\x30\x28\x41\x08\xfb\x58\x8e\xb1\xd4\xeb\x38\xba\x8a\x07\x86\x97\x83\x66\x25\x46\x0c\xf9\xf0\xac\x40\x73\x04\xd6\xbb\x06\x33\x81\x2d\xf9\x3a\x93\x26\x23\x5f\xa8\xc7\x81\x65\xae\xb3\xad\x78\xd8\x00\x3d\x7e\xf7\xe1\x8f\x4e\xb1\xe7\xdc\x98\x2c\x94\x0a\x4f\x39\x1f\xf4\x86\xb8\x4f\xd3\xd2\x02\x64\x12\xcd\xa0\x3c\xae\xba\x1e\x89\x8d\x86\xf8\x65\xef\xf0\xf0\xf8\x39\x9d\x20\xd5\x7a\xc2\x3a\x36\x41\x56\xcd\x46\xba\x6d\x63\x13\x97\xba\xd3\x51\xad\x27\xbe\x5b\x5f\x7d\x3a\x40\x50\x04\x7d\x37\x1c\x55\xd5\x0e\x86\x83\xb6\x0b\x8f\x55\x9f\x88\x75\x05\x3d\xcc\x5b\xaf\xf5\x5b\x51\x37\xea\x94\xb7\xe1\x34\xb7\xdf\x36\xcc\x10\x8d\x30\x6a\x66\xbc\x19\xcc\xad\xc3\xa6\x86\x03\x36\x3d\xba\xe0\x74\xcb\x9a\xd2\xc8\x74\x7f\x6a\x12\x2c\xc1\xa6\xa8\x77\x37\x19\xbc\xc6\x86\xff\x2d\xf2\x13\x35\xcb\xd5\x15\x9b\xfa\xce\xad\xfa\x8a\xb3\xd9\xc1\xbf\x96\x5e\x18\x8b\x9c\xf9\x93\x9c\x44\x8d\xff\x1d\xfe\xb1\xcb\x72\x83\x94\x59\x19\xb8\x9e\xab\x6e\x67\x7e\x39\x23\x51\xf4\x61\x54\xdc\xe0\x8e\xf0\x37\xe1\x82\xf8\xf9\xd9\xc1\xd9\x69\x53\xbc\xd8\x7f\xe9\xee\x8a\x26\xbb\x60\x4f\xcf\x4e\xf6\xce\xf6\x7f\xf8\x67\xa3\x9a\x47\x20\xe0\x41\x20\x5d\x96\x0c\x91\xad\x6b\x22\xe1\x84\xe0\x3a\x79\xd5\xd4\x92\x9a\xad\x78\xc2\x5d\x1e\xf1\x16\x34\xd5\x4f\xe6\x31\x49\xe6\x9e\x41\x8e\x51\x5f\x2a\x10\xff\xa2\x5b\xe1\x23\xc6\x3e\xd3\x42\x00\x94\xa7\xf3\x2f\x1a\xb1\x53\xc9\x81\x54\xb0\xf3\x7c\x5c\x6d\x72\x66\xb1\xa5\x57\xe9\x31\xaa\xb1\xee\xde\x15\x55\x75\xf9\x59\x6b\xc7\x8c\xf7\x7a\xc2\x05\x2d\x9d\xed\xbb\x14\x16\x77\x78\x30\xd5\xdc\x6b\xb3\x5e\x1d\x53\xf4\x54\x2f\xcd\x9b\x97\x38\xa3\xd2\x14\x99\xdc\xe3\x5d\x68\x9a\x60\xfd\x3a\x55\x20\x75\x42\x80\x0e\x30\x20\x76\x2f\x91\x36\x59\x8e\x7d\xb7\xcc\xc1\xd3\x73\xf2\x0f\x82\x2d\x35\x09\x8b\x0d\x5b\x65\x22\xa1\xec\xec\x9d\x08\x62\x13\x8a\x32\x79\xa8\x67\x78\xdc\x4e\x47\xfc\xf0\xcb\xc1\x4f\x04\x8b\xd6\xd1\x13\x51\x80\x80\x77\x48\x1a\x39\xe4\xa2\x86\xcd\x74\x31\x2d\x2e\x35\x3f\x50\x57\x4d\x71\xaf\x5b\xf9\xb8\x7b\xef\xfb\xca\xe7\x8f\xbc\xc8\xba\x3b\xe6\x96\xa7\x91\xa9\xd6\x13\x73\xeb\x7b\x2c\x6e\x08\x85\x97\xee\xf8\x23\x9f\x5b\xd2\xd4\xeb\x89\xef\xc5\x53\xb1\x4d\xe2\x59\xf8\x1f\xcf\x1f\xfb\xa4\x17\x44\xf4\x62\xfd\x55\xc3\x00\x6e\x93\x0c\x58\xfa\xef\xbe\xd8\x11\x5b\x8d\x39\x03\x39\x3e\x05\xf3\x4d\x50\xc1\x84\xc4\x52\x27\x7f\x86\x41\x88\x5e\x6e\x00\x1f\x62\xdd\x6c\x45\xbb\x90\x1f\x0a\xf1\x54\x74\xe1\xfb\x62\x73\xde\x04\xa9\xf5\xf5\x20\x1f\xe0\x4a\x2c\x68\x6d\xf7\xb9\x8d\x9a\xc8\xa7\x62\x4b\xec\x88\xfb\x2b\xb4\x07\x9f\x7a\x6c\xfe\x68\x85\xe6\xc6\x3f\x1b\x7b\x74\x1f\x36\x6c\x87\xb9\x3b\x6a\x66\x1d\x8f\xa5\xb8\x0b\x25\xb3\xe7\x34\xad\xfb\x6d\x9f\x3c\xd1\x23\xba\x65\x8f\xee\xc3\x5b\x77\xd9\xbe\xbf\xa4\xcb\x9f\x06\x29\xed\xd0\x33\x55\x1e\x31\xd2\x22\x0f\x0b\x20\xd1\x0e\x7f\xd2\x0e\x33\xf1\xce\xfd\x02\x6f\x5e\xfe\xd6\xbc\x25\xf5\x7a\xcd\xd9\xbf\xcf\xd5\x23\xd6\x68\x1e\x24\x65\xe1\x34\x13\xa9\xa5\x7b\xd4\xf4\x99\x3f\xf6\xd3\x27\x2e\x9f\xd9\xf9\xe5\xe1\x08\x55\xc7\x7a\xff\x1f\x67\x27\x7b\x55\xe7\x1a\xff\x17\xce\xb6\x66\xda\x91\x2b\xe1\x04\xde\x0c\x1b\xaa\x3d\xe0\x1d\xd2\x13\x75\x26\xb9\x6e\x42\xb6\x56\x92\xae\x5a\x7a\x5d\x1e\x3f\x16\xf7\x1b\xf0\xcf\xa3\x5d\xd6\x1b\x10\xe4\x72\x94\x44\x57\x0a\xe3\x16\xfc\xac\xda\x2b\xe3\x17\x5f\x4a\x1f\xa6\x9d\xbb\x97\x1e\xd4\x74\x7c\x38\xbf\x63\x77\x41\x47\x7d\x34\x16\x74\xdd\x0e\xba\xfe\xff\xec\xfd\xfb\x5b\xe3\x46\xb2\x3f\x8e\xff\xce\x5f\xd1\xe1\x3c\x09\x36\xc8\x36\x36\xc3\x65\xf0\x40\x1e\x66\x20\x1b\x4e\x08\x33\xcf\x40\xce\x6e\x76\x96\x2f\x47\x58\x6d\x50\x46\x96\xbc\x92\xcc\x25\x1b\xbe\x7f\xfb\xe7\xa9\x4b\xdf\xa4\x96\x31\x93\x99\x7d\xef\x9e\xcd\xec\x3b\xe7\x8d\xa5\xee\x56\x5f\xaa\xab\xab\xaa\xab\x5e\xd5\x54\x6e\xa3\xca\x4f\x79\x32\x7f\xdb\x63\x9b\x0a\x97\x7c\x05\x1d\xad\x45\x90\x93\x7f\xe9\x57\x0a\x04\xcb\xd4\x7d\xf7\xfe\xe8\xec\xe8\xfc\xf2\xf0\xf8\xcd\xf9\xb0\xda\xf4\xda\x9e\xd8\xe8\x8b\x8e\x68\xf1\xef\xaf\xe9\xc0\x5d\xaa\x51\x47\x9d\xe9\x4f\x67\xe5\xd9\x4d\x96\x97\x3f\x9e\xbd\x46\xdc\x74\x6c\xc0\xc6\xc5\x11\x67\x21\x1b\xff\xd9\xb0\xa8\xfc\x4e\xa7\x39\x88\xcc\x56\xd0\xc4\x6e\x35\x79\x5b\x6d\x38\x36\x43\xb0\xbf\x6a\xed\x92\x7d\xe2\x7f\xc3\x05\x8a\xd2\xae\xb4\xf6\xe5\xa3\x4f\x50\xa9\x18\x45\x3d\xa2\x0a\xe7\x8e\xc6\xc4\x55\x91\x1c\xa3\xe4\xe3\x93\x9d\xac\xad\xa5\xc6\x52\xe7\x57\xbd\x55\x86\xcf\xfc\xe9\xe4\xc4\x46\xe1\xbf\x92\xd7\x14\xcf\x46\x1b\x7c\xe8\x3a\x13\xeb\x1c\x20\x64\xbf\x07\x4e\x61\xb9\xe0\x31\xd0\x96\xd9\xfc\xaf\x9a\xd8\x95\x9e\x92\x2a\x16\x85\x65\x1b\xdf\xdb\xf3\x68\xc2\x2e\xd7\xaa\x31\x35\x4e\x60\xc0\x4d\xec\xc3\x68\xdc\x1a\x9f\xcc\xe9\x44\x87\x54\x15\x68\xd1\xe6\xcd\x8f\xd6\xdf\x14\xef\xcf\x15\x8c\x25\x59\xfd\xab\x4e\x6d\x6d\x20\xcf\x19\xba\x42\xdb\xf0\x76\xe5\x71\xfe\x89\x86\x4b\xf1\x41\x2f\xd3\x45\xfd\xdc\xd0\xef\xac\x04\x72\x4b\x9f\x36\xe7\x9f\x71\xbe\xab\x5d\xe0\x13\x06\x67\xeb\x89\x93\xf7\xe9\x03\xe9\xf4\xe0\xc7\xa3\x27\xce\xa3\x7f\xd4\x19\x55\xb5\xd6\xa3\x83\x18\x61\x6d\x4a\x53\xd0\xbb\x27\x41\x32\xfc\xac\x5b\x92\xaa\x92\x9b\x1c\xa8\xd7\x6a\x8f\xd6\x80\xd4\xff\xd8\x71\x0b\xef\xb8\xdb\x30\xb1\x8f\x66\xfe\xc6\x22\xdb\xb0\xd7\x13\xff\x7d\xa6\x31\x29\x76\x45\x12\x97\x65\x22\xd9\xfc\x58\x66\x22\x8c\x22\xba\x90\x2d\x65\x3e\x89\xd3\xb0\xcc\xf0\x4a\x96\xef\xea\xdd\x24\x27\x15\xf2\x7f\x25\x1c\x22\xf2\x4a\x9d\xd4\x71\xb7\xdc\xe8\x26\xcc\xdf\x64\x91\x3c\x28\x5b\xd6\x6e\x57\x32\xa4\x25\xd4\x55\xa5\x08\xd5\xdc\xba\x4f\xf0\xb3\xf9\xcd\x6d\x98\x98\xad\xab\x0e\x07\xa8\xab\x20\xe5\xff\xb5\x38\x0a\x8e\xaa\x2a\x00\x3c\xcd\x37\xde\xbc\xfd\xf1\xc7\xa3\xd3\xf3\xe7\xb3\x0e\x4f\xc5\x46\xee\xe1\x94\xf5\x32\x10\xd6\x15\xff\xe0\x21\x7f\xf0\x90\xdf\xc5\x43\x98\x8e\x16\x61\x23\xaa\xe8\x1f\x9c\x64\x31\x4e\xa2\x77\xfe\xf7\x6f\xde\xbf\x79\x3e\xbf\xa8\xd6\x6a\x64\x16\xa6\xa0\x97\x53\xb8\xca\xbf\x4b\xc3\x6b\x62\x80\xd0\xad\xf3\xa8\x78\xce\x7e\x79\x6c\x6c\xf4\xd5\x53\x7b\xc3\x11\x54\xab\xba\x53\xa3\x79\xc9\xd6\xc7\xbc\x06\x90\xaa\x2d\x78\xbe\x29\x78\x21\xc3\xe3\xfc\x55\xaa\xd6\xa2\x55\xd2\xb9\x81\xc9\x08\xfe\x1d\x5a\xc6\xc3\x42\x4c\x66\xa3\x1b\x0d\x32\xa1\x10\x4d\x31\xfb\x07\xf9\x9d\x5a\xc6\x71\x55\xca\xd1\x51\x1b\xd7\x42\x7b\x86\x34\x02\x8b\xa1\x7b\x79\x3a\x92\xc2\x94\x88\x0b\x0b\xdc\x49\x43\x2d\x8e\x42\x04\xec\x0e\xaf\x43\x74\x3b\xb3\xf3\xa8\xa3\x57\xaa\x42\xfd\x98\x86\x23\xce\x28\xca\xdd\x7f\x20\x87\xc7\xab\xac\x34\x63\x0c\xd3\xc8\x54\xd7\x37\x21\xe4\x62\xcf\x4e\x69\x5d\x76\x65\xbf\xc3\xfb\xda\x2b\x29\xc2\xf4\x81\x6e\x5f\xcb\x4c\x44\x59\x60\xea\x6b\x14\x02\x76\xab\x0e\xf1\x0e\x24\xcb\x45\x11\x97\x9c\xa3\xb4\xc8\xd0\x39\x8f\xa0\x16\xef\xa4\xa9\xcb\x77\x26\x6f\x7f\xb0\x9d\xa7\xcd\xe5\x88\x4a\xa7\x8c\xc8\x14\x06\x54\x52\xdb\x22\xed\xd4\x46\x15\xf0\x0b\x7e\xe1\xf8\xd1\x08\x07\xe7\xd0\x06\x7f\xe4\x24\x1c\x45\x36\x91\xd6\x20\xd1\x5d\x90\x1c\xf2\xa2\x19\xba\x67\xc3\xa9\x9c\xa5\x85\x1c\xcd\x38\x80\x8a\x40\xd7\x11\x66\xb2\xe8\x22\xd4\x26\xc1\x85\xc3\x52\xa5\x91\x98\x15\x12\x1d\xb1\x61\x00\x9c\x2f\x4f\xdd\x1b\xa1\x5f\xf9\x47\x29\xa7\x4b\xce\x5c\xc0\xc7\xcd\x8d\xd0\xe9\xa1\x3d\x31\xd6\xbd\x91\x0d\xda\x6e\x1b\xa7\x9c\xab\x2d\xa4\x35\x60\xbe\x79\x98\x7e\x6c\xf1\x35\xe0\xab\x3d\xfa\xa9\xaf\x8e\xda\x0a\x9b\xda\x73\xb7\xd5\xec\x11\xa2\x7b\x62\x2e\xac\x28\x2a\x31\xa7\xc0\x79\xdb\xd7\x1c\x09\x94\xae\xdf\x28\x84\xde\x44\x22\xd0\x77\x76\x1b\xee\x9f\xaa\xb7\x6f\xde\x9b\xbb\x67\x76\xf1\x8c\xd2\x73\xe1\xcd\x39\x39\xed\x62\xe0\x67\x5a\xc6\xe9\xcc\x4d\x69\x97\xa5\xd2\xf8\xc5\xd6\x67\x17\x3f\xcf\x36\x48\x1d\xc3\xad\x1e\x62\x9f\x5a\xf6\x8c\x2a\xff\x39\x85\x05\x8f\x83\xfc\xaa\x32\x48\x6d\x89\xc1\x4b\x59\xe5\xdf\x52\x4f\x1d\x68\x9b\x41\xdb\xe2\xdb\x26\xec\x54\xb5\x51\xea\x0d\xbc\x3f\x39\xb2\xaa\xb9\x69\x1b\x8c\xa9\x7f\x2e\xac\xd3\x78\x96\x8e\x4c\xad\xb6\x95\xd6\x52\x75\x7c\x6f\xaf\x8e\xfb\x08\x13\xe6\x7d\x7f\xf8\xf6\xf4\xa8\xed\xe3\xe5\xf6\xfc\x0c\x2d\xde\x5f\xff\x92\xc6\x66\x6c\xfc\x08\x77\xa2\x72\xf0\x3e\x81\xc4\xd9\xc8\x5c\x08\xa8\x09\xf9\x83\xe1\x59\x9a\x61\x05\xa2\x90\x92\xbd\xa1\x6b\x99\x87\x6a\x7c\x49\x65\xa5\xf2\xe4\xd4\x01\x8a\xb1\xbb\x07\xc7\x83\xce\xfc\x03\x5f\x32\xfc\xd4\x06\xde\xbd\x41\x57\xfc\x19\x87\x38\xa0\x93\xbf\x05\x01\x24\x19\xcc\x46\xf3\x65\xd3\x08\x82\x52\xe0\x16\xc5\xe2\x31\xc5\xe0\x26\xb2\x94\x5d\x71\x86\x31\x40\x14\x15\xae\x32\x78\xaa\x13\xd3\x4a\x45\x87\x49\x00\x78\x7b\x01\x73\x65\x20\x15\x75\x98\x61\x78\x8f\xcd\xdc\x39\x98\x3b\x4c\x8a\xcc\x6a\xc4\x46\xb5\xa1\x08\x9d\x5b\x99\x3f\x50\x84\x8e\x86\xac\x40\x3f\x78\x64\xa6\x14\x92\x53\x8a\x49\x56\x58\x99\xf5\xe0\x53\x56\x77\xaa\xb9\x91\x9a\x68\xc9\x80\x77\xba\xc4\x62\xa3\xa9\xbe\x3b\x78\x7f\x7e\x7c\x70\x52\xc7\xea\x35\xfe\xb1\x61\x12\x5f\xa7\x16\x14\xb0\x73\x6b\x6a\xda\x23\x16\x81\xdf\x64\xef\xc7\xef\x7e\x3a\xe1\x86\x81\x3f\x9d\xfd\x7c\xfa\x86\x7f\xd9\xb1\xd6\xe6\x3b\x14\x6e\x44\x28\xa7\x8c\x7f\xbb\xee\xcb\x81\x85\x47\x54\x28\xc6\xb3\x24\x11\xec\x04\x42\x08\x42\xd6\x82\x19\x74\xe7\x51\x76\x9d\xc6\xbf\xca\xc8\xe8\x0a\x08\x4c\x16\x92\xfe\x13\x26\xe8\x22\x2e\x73\x71\xf5\x20\xe2\x94\xd1\x03\x1f\xd2\x51\xab\xed\xcf\x00\x5a\x43\xa3\xd5\x63\xf4\x64\x0b\xf4\xa0\xf1\x09\xfb\x5f\x0f\x93\x9d\x5c\xcb\x52\xdc\xc4\x30\xfa\x07\xe1\x24\x0d\x5c\x18\xb6\xcf\xee\xdc\x5c\x90\x66\x21\x7c\xe0\x75\xf6\x3b\x0f\x16\x8b\xfd\xda\x45\xaf\x53\xff\xea\x4a\xa6\xfa\xff\xe7\x88\xf8\x9f\xc6\xb6\x7c\xec\xca\xde\x85\x5e\x8e\xe5\xe5\x55\x8f\x8e\xee\x63\xb2\x42\x94\xf9\xa4\xb3\x6f\xfa\xb4\x0f\x44\xb8\x7c\x35\xbb\x1e\x2c\xb3\x93\x9b\xa7\xe3\xaf\xf8\xf2\xaa\xbc\xc9\xb3\x3b\x3c\x96\x8f\x40\x7c\x6c\xa9\x7a\xda\x4b\xd8\x2b\x9f\x38\xbd\xb3\x34\x31\xf2\xd8\xe7\xa6\x6b\xee\xcc\xa7\x87\x43\x2d\x10\x18\x5f\x98\x32\x0f\x11\x69\xc0\x12\x46\x1c\x47\x17\x1c\xf4\x22\x2a\xd2\x33\xd4\xa3\x39\x45\x6b\x17\xfb\x73\xca\xd6\x6e\xf4\x6b\xdd\xd4\x11\x14\x4f\x34\xa9\xcb\x2d\xd4\x59\xbb\xf4\x02\xfd\xb5\x8b\x57\xba\xfc\xc8\x6e\xda\x4b\xc2\x4c\xf4\x22\xb7\x7e\x0b\xde\xf8\xe1\x6a\x37\xec\x28\x3a\x79\x1d\x0d\x0c\xd8\x07\x9d\xb2\x1c\x98\x89\x7a\x0c\x72\x46\x54\x46\xd4\x29\x8b\xfa\xd8\x12\x1d\x9b\x99\x85\xb5\x9e\xcb\xa2\xac\x08\x8f\x44\x4b\x94\xfb\xa7\x1e\x40\xa2\xbc\xa3\xef\x6a\xd4\x48\xe9\xbe\xd2\x91\xfc\x8a\x1a\x53\xce\x73\xae\x2e\x8a\x6e\x65\x6f\x7f\x70\xfc\xc9\x4e\x0f\xbd\xce\x89\x47\x69\x54\x8d\xd8\x41\x59\xcb\x75\xa3\xeb\xad\xee\x19\x13\x66\xc5\xd7\xcf\x79\x57\x91\xc0\x9b\x3c\xf6\x94\x38\x67\x45\x3d\xa8\xcf\x2a\x7e\xa6\x45\x62\x2b\xf4\x85\x75\x13\xeb\xa5\x75\xb1\xea\x79\x6b\x6e\x78\x3c\x2f\x1d\x03\xae\xe7\xbd\xb1\xd9\x78\x5e\x1a\x9b\x82\xe7\xa5\x2d\xa4\x2e\x09\xf1\x69\x41\x4e\x4a\xde\x27\xe7\x74\x6b\xa9\x8d\x46\x64\x75\xc2\x75\x9c\x3c\x3c\x38\x3f\xb0\xdd\x26\x55\xdc\xc8\xe7\x84\xe9\x75\x41\x7a\x0b\x0e\x30\x35\x71\xd5\x16\x22\x22\x3a\x18\xc3\x7b\x06\x1f\x7f\x28\x11\x19\xbc\xa0\xd0\x76\x8a\x09\x86\xad\x36\xcd\xb3\x68\x36\x22\x9b\x84\x89\xf6\x95\x11\x8b\x77\x5d\x6f\x8a\x88\x33\x59\x1e\xea\x4f\xf1\x0c\x98\x6f\x1b\xb2\x86\x67\x27\x0a\x99\xc8\x14\xe8\x2a\x30\x5b\x13\xaf\xa6\xb6\x41\x1e\x88\x74\x68\x85\xb8\xa8\xbf\x91\x37\xa8\x1f\x70\x5e\xaa\xbf\x51\xab\x55\x3f\xca\xc9\x14\xfa\xf5\x65\xf7\x51\x2d\x90\x8d\x19\x89\x0a\x44\x53\x61\x19\xfa\xe0\xc2\xf4\xf2\xfa\x67\xbf\xa6\x7f\xda\x4e\x9e\xae\x36\xbb\x58\x8f\x08\xdb\x34\x15\xb3\x02\x96\xd1\x0e\xd6\x29\x02\x5c\xd1\x59\x29\xc5\x01\x70\xe4\xce\xc6\x80\x91\x47\xd1\x2e\x10\xd9\x04\xa3\xf9\xa4\xe9\xa9\x95\xa8\x43\x39\x64\xb0\x80\x41\x86\x61\x53\x3b\xb0\x96\x5a\xc5\xd5\x55\xac\x8e\x76\x0b\xdd\xb9\x0d\x28\x53\xe4\xa3\x13\x43\xa2\x00\xe5\x48\x7e\xa2\x61\xc1\x78\xf5\xc0\xe2\x14\xa1\x46\xad\xe0\xed\xde\x2a\x0c\xc8\x1a\x23\x05\x47\x8f\x49\x10\x45\xd0\x51\x72\xe9\xcd\xe5\x34\x09\x47\xec\x8f\x6b\x0b\xb3\x30\x1f\x16\x11\xef\x9b\x78\x13\xdb\xa6\xac\x67\x0c\x4f\x16\x57\x44\x56\x29\xc8\x49\xbe\xcf\xca\x1b\x99\xdf\xc5\x85\x9d\xa1\xa9\x19\xf9\x7a\x71\x31\x7a\x9e\x70\xdc\x28\x16\xd7\x05\x62\x9d\xf5\x5f\x29\xad\x65\x18\xeb\x0c\x5f\xbd\x9e\x3d\x95\xce\x7e\x2e\x92\x78\x24\xed\x89\xea\x08\x2b\xee\x04\x2a\xf3\xce\x6c\x0e\x79\xe1\x72\xf4\x06\x43\xd9\xcf\x64\xd9\xe2\x6a\x4d\x94\x62\x7d\x27\xb0\xfe\x52\x33\xe2\x74\x57\xf3\x06\xf5\xe6\xc4\xa0\x56\x2b\x20\x72\x1d\x22\xc5\x13\x63\x35\x80\x00\xb6\x1c\xe9\x82\x38\x30\x61\xc1\x00\x88\xc8\x9a\x14\x53\x50\xc6\xa9\x21\xc2\xbd\xdf\x97\xea\x39\xfc\xcd\x8f\xc9\x0e\xc7\xcf\x35\xfb\xaa\x18\x0e\xad\x1e\xea\xb7\xdc\x86\x13\x70\xab\x1a\x33\x3d\x85\x57\xf5\x2c\x38\xda\x27\xc9\x9f\x1f\x51\x87\xd5\x96\xb9\x27\x61\x7a\xea\x66\xa7\x13\x1d\xd1\x72\x63\x9c\x78\x52\x33\xdb\xaa\xfe\xd3\xbb\xc3\x83\xf3\x23\xa6\x69\x0c\xc0\x41\x04\x50\x27\x23\x4d\x99\xdb\xe1\x52\x9d\xfe\x85\xe1\x1d\x9f\x90\x75\xde\x6d\xcd\x9f\x6e\x5e\xb7\x4d\xf9\xe5\xcb\xfc\xa9\xc4\xf2\xba\x42\x2d\xab\x7c\x99\xeb\x8d\x54\xe6\x3a\x27\x99\xc9\x1f\x9f\xea\x5c\x37\xd6\xae\xd4\xb5\x5c\xdc\x49\x4f\x86\xf8\xfa\x1a\x3e\x2e\xd5\xd3\xc8\x39\x29\x03\xab\x3b\xdd\x5d\x47\x27\x2d\x72\xa5\x9e\x07\xea\xfd\xf3\x41\xbb\xbb\xb4\xab\x0e\x6f\x87\x7c\x1b\xb7\x81\x3e\xf7\x6b\xb1\x84\xb5\x00\x5d\x79\x3f\xcd\xf2\xb2\xe8\x5a\xd1\x3d\x26\xb2\x19\x7e\x0d\x7d\x45\x06\x6e\x99\x41\xad\x10\x46\x1a\x55\x42\xa4\xfd\x85\x7e\x90\x72\xea\x89\xa5\xae\x15\xd6\xf1\xcf\xa6\xb0\x7e\x54\x2b\x6c\xca\xd4\x5e\x1d\x61\xa2\x50\xf3\xc3\xf7\xa1\x43\x87\x63\x7b\x1e\x7b\x26\x65\x9c\x89\x3d\xb1\x32\x0d\x3f\x66\x5a\xcb\x6a\xa1\x38\x79\x9a\x45\x72\x14\x82\xf4\xf0\x8b\x1c\x95\xed\x95\x21\x4a\xb7\xa7\x19\x42\x7a\x52\x1c\x9f\x8c\xaa\xed\xbd\xc6\x5c\x34\xfa\xe3\xf8\xb3\xf6\xd1\x37\xd9\xd4\xea\x20\xfc\xaa\x15\x79\x17\xe6\xe1\xa4\x30\x85\xe8\x77\xbd\x98\xc6\x14\x70\x1f\xd4\x0b\xe6\xf1\xc4\x9a\x5d\xfc\x59\x2b\x74\x3e\x4b\xad\x32\xf0\x6b\xb8\x04\xb2\xc5\x63\xf0\x8f\xe5\x6e\xb7\x87\xa7\x55\x6f\x94\x4d\x26\x59\xba\xbc\x3b\xd8\x09\x96\xbb\x3d\x96\x73\x96\x77\x07\x2f\xe1\x27\xde\xb3\x2e\xef\x6e\xf4\xe1\xc7\x44\x16\x45\x78\x2d\x8b\xe5\xdd\x8d\x2d\xf8\x8d\xe6\xc3\xe5\xdd\x8d\xed\xc7\x8b\x60\x63\x63\xf7\x83\x92\xb3\x5b\xb9\xfc\xfb\x2c\xce\x65\x80\x98\xd4\x32\xe0\x5e\xb5\xff\xb1\xb4\x02\x27\x33\x61\x94\xe2\xf4\xf7\x44\xeb\x4d\x5b\xf4\x5f\xbe\xdc\xec\x0c\xd6\xfb\x1b\xe2\xbf\x65\x98\x76\x92\x6c\x36\x15\x7f\x0a\xe3\x24\x79\xc0\xb3\xea\xc7\x30\xff\x48\x72\x92\xaa\x30\x58\xef\xbf\x80\x0a\xdb\xe2\x7f\xe2\x32\x4c\x1e\xc4\xbb\xd9\xaf\x79\x9c\x62\xe9\x83\x34\xca\xe5\x83\x38\x9f\x4d\xe3\xb2\x88\xd3\xa5\x5e\x6f\x09\x71\x4a\xf1\x7a\x6e\x5c\xde\x85\x74\x55\xa7\x65\xc8\x95\xb0\xe8\xc4\xc5\x4a\xa0\x55\x0a\x50\x24\xe4\x3d\x85\x8e\x67\x39\x27\x4f\x88\xa0\x91\x3b\x38\xd8\xd3\xf2\xa1\x2b\x8e\x53\x91\x66\x08\xe4\xc4\xc9\xec\x50\xd3\x9f\x95\x37\x59\x5e\x88\x2b\x29\x6e\x64\x12\x89\x24\x46\x3e\x42\xf0\x77\x0f\x22\x0a\x27\x30\x79\xd0\x50\x98\xc7\x28\xec\x6a\x2d\x07\xa6\x85\x51\xc4\x75\x2f\xbb\xdc\xf5\x77\x32\x9f\xc4\x1a\x78\xea\x1a\x7a\xc0\x40\xef\xe9\x03\xa7\xab\x26\x79\xc7\x1e\xa1\xfa\xe8\x74\x96\x4f\xb3\x42\x06\xd0\x50\x9c\x8e\x92\x19\x52\x17\xfa\x7c\xe4\x68\x81\xb5\xcc\x13\x88\xcb\x43\x2d\x27\xa5\xcc\x45\x5c\xe2\xef\x5c\x46\x31\x2c\xd9\x15\xc8\xe1\x71\x09\x2d\x8d\x73\x29\x93\x87\x40\x14\xb3\x2b\xd8\x4a\x1a\xec\x1e\xa1\x98\xe0\x03\xb9\xa4\x45\x86\x56\x77\x79\x1c\x7d\x4a\x2a\x95\xe5\xf1\x75\x9c\xd6\x46\x6b\x6e\xfd\xae\xa4\x98\xc4\x45\x2e\xd1\xe3\x1b\xc6\x3a\x14\x0f\xd9\x4c\xbf\x87\xa6\x84\x18\x25\x61\x3c\x21\xcb\x3e\xbc\xbc\xcb\x33\xb6\x7a\x50\xf3\x61\x62\xa6\x51\x1c\x8f\xb1\x4c\x6d\x92\xa8\x25\xcc\x51\x48\x6a\x64\x89\xc0\x44\xe1\xe8\x63\x9a\xdd\x25\x32\xba\xc6\xb0\x1d\x95\x43\x82\x4a\x88\x28\x1b\xcd\xe0\x39\x1b\x74\x18\xae\x88\x9a\x0a\xa7\xd3\x5c\x8e\x62\xbc\xbd\xbd\x22\x3b\x10\x0c\x88\x77\x43\x04\x0b\x2a\x06\x5d\x71\x00\xb3\x2b\x23\x51\x64\xb3\x7c\x24\xc5\xad\xcc\x61\x71\x0b\x0d\x18\x3e\x4d\xc2\x38\x45\xc8\xad\xfc\x23\xa3\xd9\xcf\x46\x37\xb4\x38\xd6\x2c\xd1\x37\xdd\xa9\x82\xc2\x57\x12\x2f\xa0\xbd\x73\x01\x75\x36\xf8\xb2\x24\xcd\xca\x78\x24\x35\xb0\x17\x1a\xec\x09\x93\x1b\x68\x87\xfb\x88\x14\x0a\x84\xc4\x9d\xd5\xa4\x80\xb8\xb8\xd0\xdc\x99\x94\x82\x0c\x0f\x91\x1c\x33\x42\x1b\x1b\xf3\xbb\xbf\x14\x98\xd1\xea\xf5\xc1\xa1\xd8\x13\x1b\x36\x24\xd2\x75\x56\x8a\x90\x30\xc1\xe8\xb2\xbf\xd3\x81\xcf\x87\x71\x8a\xf7\x3d\x1c\xe4\x4f\x3e\xff\xab\x3d\x6c\xe5\xfc\xe7\x77\x47\x62\x4f\xf4\x07\x06\xfb\x2a\xde\x15\x77\x21\x41\xe2\x21\x40\xdd\xc3\x54\x22\x86\x50\x60\xd1\x7a\x12\x16\x65\x67\x9c\x84\xd7\x08\xea\x04\xdc\xaf\xb7\x0a\x12\xca\xa1\x44\xf8\x30\xc6\xe0\x0b\x84\x4a\x15\x06\xb3\xac\xa1\x37\x19\xd3\x32\x8d\x54\x10\xeb\xac\x54\xe6\xb9\x59\xa2\x10\xbe\x6c\x6c\x58\xc6\xf8\x43\x4f\x3c\x1a\x83\x8c\x41\x69\xc2\x29\xe6\xcc\xed\x24\x35\x64\xb9\xba\x82\x22\xc0\x69\x2d\x78\x10\x3a\x56\x1a\x75\xb2\x71\x87\x2e\x54\x30\x43\x03\x83\xf6\xc9\x08\x93\x7e\x38\x73\xe7\xbe\x47\xb3\xe1\x9f\x41\xa3\x46\xb0\x48\xf7\xab\xd0\x47\xe7\xe6\x8b\xd1\x84\x66\x53\xe4\x72\x04\x22\x45\xc1\xbf\xed\x40\x81\xb3\x31\x2c\x5b\x20\x42\x8c\x79\xb7\x33\x30\x90\x8b\x83\xd8\x7a\xf1\x43\xf5\x42\x0d\x2f\xed\x11\x04\xef\xe5\xe6\xd7\x1c\xc5\xb1\x84\xfb\x8d\xce\x64\x79\x8f\x5e\x10\x59\x4a\xe0\xcb\xb0\x2f\xa7\x7a\xbf\xc5\x85\x02\x25\xea\xa2\x08\x7b\x94\x96\xf9\x83\x08\x8b\x62\x36\x99\x32\x53\xb1\x9c\x83\x80\xd4\x26\xb0\x98\xa0\xc4\x9e\x1c\x9d\x5a\xaf\x6c\x71\x6c\x7f\x4f\x6c\xf9\x5e\xe1\x4d\xc3\x9e\x18\x6c\xee\xd8\x6d\xe6\xf8\xd0\x2d\x56\xf9\xe6\x15\xe3\x69\x60\x5f\xde\xa6\x2c\xd3\x05\x76\x8f\x62\x4a\x9c\x9f\x8d\xad\x0e\x9f\x1c\x9d\x22\xb9\x87\x29\xd2\x53\x36\x56\x4b\x64\xfb\xe0\xc0\x22\xf3\x63\x23\x92\x6a\xb0\x45\xfc\x87\x1b\x02\xf7\x4d\x88\x08\xe6\xec\x23\x48\x34\x43\xc0\x6d\x7a\x2d\x69\x61\x4b\x99\x4f\x73\xc9\x37\x36\x58\x4e\x37\x06\x7b\xb4\xd3\x51\x04\x95\x72\x2b\x40\x64\xd8\xf1\xd3\xac\x94\x6a\xd2\x3b\xc8\xc7\x27\xe1\x7d\x3c\x99\x4d\x14\x35\xc0\x54\x28\xc4\x66\x95\x20\xa4\xa7\xf7\xd1\x34\x8c\x91\x4c\xfb\x9b\x54\x92\xe1\x24\xf9\xeb\x2c\x95\x53\x97\xdd\x12\xea\x1d\x27\xbd\xa9\xd4\x77\x37\xaa\xf2\x29\x02\x92\xec\x6f\x34\x14\xa4\xd0\x02\x06\xb3\xc2\xeb\x84\x42\xbc\xd8\x61\xae\x81\x4e\x47\xf7\x9c\x77\x85\x5b\x43\x37\xa6\x31\x7a\xa0\x8c\x3d\x04\x85\x46\xfe\xd4\xb8\x00\x39\xbb\x4d\xe1\x71\x71\x53\x08\xc7\xa5\x98\x55\x65\x55\x59\xf1\x8a\x24\xc1\x77\x77\x7d\x53\xcd\x0e\xbe\x98\x4a\x42\x80\x00\x91\x48\xff\x4c\x8f\x88\xb4\x88\xb9\x58\x84\xcd\x79\x5f\x38\xa3\x45\xc1\xc0\xe9\xd4\xb8\x02\x0b\x86\xd6\x19\x36\x14\x26\x35\xea\xea\x2d\x8b\xf9\xf4\x5a\x6d\xed\x81\x80\xa7\x5a\xe1\xdf\x49\x38\x44\x44\x68\x4d\xb2\x6c\x6a\x80\xc9\xec\x29\xe0\x86\x6c\xaa\x27\x7b\x2d\x89\x8d\x5d\x16\x1b\x39\x3f\x22\xb2\x0a\xa7\x27\x0c\x8d\x01\x5b\xd5\xbd\x8a\x90\xca\xa0\x7a\x19\xa7\x55\x38\x5d\x75\x74\x24\xd9\x08\x0e\x46\xa3\xc5\xa1\xe2\x8e\xf1\x84\x61\x51\xfa\x6a\x61\x22\x91\xdb\x0a\x3f\xa5\x55\x8b\x53\xf1\x8a\xd0\xea\x74\x2b\x30\x17\x0d\xad\x58\x9f\xe6\xb1\xeb\x5a\x57\xf2\xba\xa9\xc3\x7a\x2b\xaf\x14\x0a\x2b\xce\xdf\x86\x4c\xa3\xa6\x36\xa8\xb7\x78\x69\x0a\xc5\x02\x35\x16\xe2\x38\x86\x22\x57\x7b\x26\x3e\xed\xf8\x14\x03\x32\x2f\xcf\xce\xdf\x1f\xbf\x39\x57\x96\xf1\x49\x78\xdf\x30\x3a\x45\x4f\x9a\x22\x51\x22\x40\xb3\xae\xc1\x0a\xd0\x9e\x94\x6c\x2a\x47\xfb\x95\xbf\xcb\x56\xbe\xa8\x2c\x67\xbc\xbb\x31\xe3\x15\x9b\x0c\x3f\x66\xf8\x77\xb0\x48\xfe\xb6\xec\x34\x18\x2e\x34\xad\xa9\x8d\xfa\xfd\xbc\x9e\x90\x20\x40\x1e\xd7\x0a\xbb\xfd\xa7\x42\x8a\xff\x2d\xd8\xdc\xf1\xbf\xda\xe5\xee\x7f\xf9\x41\xa0\xad\xbe\xe9\x38\x89\x47\xa5\x82\x5e\x2f\xca\xdc\x92\x25\x11\x4a\x50\x51\x31\xb7\xe5\x01\x83\x0e\x13\xa0\x1f\x04\x6a\x74\x72\x1c\x05\x30\x2d\x38\x91\xe2\xab\x3d\xb1\x6e\x86\x74\x93\x25\x5e\x82\x70\x29\x11\x4a\x59\x74\x18\x97\xc5\xd3\x75\x90\xc3\x9a\x7d\x03\xec\xc2\x3f\x75\x56\x9d\x04\x24\x95\x48\x9a\x6a\xd1\x42\xd5\x80\x9a\xdc\x7a\x09\x5a\xc4\xbc\xf5\x10\xfc\x08\x18\x10\xf9\x08\x52\xbc\x6d\x36\xb6\xcf\x19\xab\xdf\xd1\xf3\x1b\xaa\xc8\x87\x66\xaa\x65\xee\x1b\x0a\xc2\xb4\xca\x32\x8f\x25\x48\xd7\x94\xbb\x42\xa2\x44\xa3\x6b\x66\x53\xef\x9e\xa5\xdc\x10\x91\x92\x6a\xb3\xa9\xcc\x39\x9b\x09\x85\xab\xeb\x63\xcb\xf1\x5d\x69\x68\x48\x51\xb0\xca\xea\x13\x68\xec\x2c\x15\x38\x32\xca\xa6\x56\x9f\x12\xd9\xc8\x3d\xed\x6c\x1b\x81\x98\xa5\x7c\xf2\x97\xce\xbc\xc6\x8d\x7c\x94\xaa\xeb\x59\xd4\x55\x80\x55\x34\x54\xa1\xf4\x77\xaa\x8f\xd4\x00\x72\x16\xa7\xf2\x25\xa9\x29\xc3\xa5\x25\xfb\x7e\x2d\xe0\x33\x66\x58\x89\xbe\x08\x74\x9e\x03\x95\xb9\x3d\xcd\x34\xd6\x27\xdf\xc0\xe0\xe7\x48\xbf\x29\x33\xa6\xc8\xdb\x30\x47\xd5\x9e\x07\xab\x61\xc4\x9c\x6b\xb5\x5e\x0f\x7b\xbc\xc7\xd2\x20\x92\xc6\x92\x10\x16\x06\xe5\x93\x46\x75\x3c\x51\xf6\xb0\xca\x5a\xd5\x7b\xb4\x23\x36\xd1\xaa\xca\x60\x93\xa6\xc1\x8c\xea\xf2\xa9\xb0\x67\x9f\x11\xf0\x9c\x02\x61\xb0\x56\x07\xef\xcc\x73\xf8\xc3\x3d\xc3\xb1\x61\x89\x66\x2f\x2c\xb8\x56\xf3\xb9\xe9\x88\xc1\xe6\x76\x7b\x38\xe7\x94\x88\x08\xce\x9e\x06\x8f\xc7\x85\xcd\xf4\xef\x14\x1e\x16\x21\x1e\xaa\xeb\x0b\xe4\xdd\xe6\x31\x72\x72\x78\xac\xaf\x22\xf0\xb1\x36\xc1\x5e\x6a\x20\x32\x7e\x43\x3c\x73\x49\x20\xcf\x33\x53\x0f\x0c\x10\x86\x4e\x98\x6a\x46\x76\xc7\x39\xc6\xed\xa5\x9e\x32\x77\x82\x17\x91\xf3\x42\xf1\x1f\xac\xc2\xe0\x6a\x2d\xc2\x5f\x53\x15\x11\x08\x57\x99\x93\x23\x4f\x19\x68\xc3\x2a\xc4\x04\x16\x39\x7a\x68\x61\x65\x18\xd1\x42\x9d\x56\x25\x6d\xa5\x30\xb3\x75\x4a\xda\xfc\x16\xd0\xb6\xd1\x2e\xe9\x6c\x67\x00\xe5\x6c\xba\xbb\x64\xdd\x74\xa0\xdb\x22\x29\x31\x06\xcb\x90\x67\x6f\x8d\xcd\xda\x1f\x2e\xe3\x74\x6d\xed\x02\x86\xa1\xe6\x0c\xfe\x11\x58\xdc\x9e\x81\x62\xf8\x84\x4a\xec\x4b\xcf\xfb\x04\x57\xe2\x03\x36\xf3\x0d\xcd\xb1\xba\xbf\x88\xb2\x44\xa6\xe4\x55\x0c\xcc\xb8\x35\x1c\x2a\xd4\xa0\xac\xcc\x84\x9c\xcc\x28\xc5\x93\x92\x27\xa7\x88\x83\x99\x4b\xf4\xf3\x19\xbc\xe8\xad\xc2\x0f\x5c\xf0\xd5\x9e\xd3\xdb\xfd\xfd\xfd\x3d\xe0\xbc\x76\xef\x3a\xf6\x13\x6c\xaa\xa5\xdb\x32\x0e\x4a\xdc\x66\x36\x35\x2d\xc2\x5c\x66\xfe\x7b\xd4\x1a\x33\x53\x16\x03\x8b\x6b\xf7\x7a\xe7\x79\x38\x92\xb7\xb7\xad\x56\x51\x46\x32\xcf\x03\x1c\x43\xf7\x36\x4c\x40\xa4\x5e\xbf\x1f\xa0\x27\xbe\x7e\xf6\x4a\xac\xdf\x6f\x8f\x2d\x4c\x94\x9e\x76\x6f\x5c\x66\x51\x71\x57\x7f\x52\x7d\x6f\xe5\xeb\xd1\xca\xdf\xd2\x65\xcb\x43\x7b\x91\x5a\xeb\xf7\x5f\xaf\x0f\xee\xff\x96\x2e\x9b\x2e\xd9\x70\x2b\x44\x67\x1f\x80\x2f\xc0\x92\xf3\xdc\x2b\xe7\x29\x9e\xa9\xdb\x30\x31\x53\x55\x73\x62\xcd\xa6\xe2\x1b\x9c\x5d\xff\xb4\x99\x9c\x6f\x57\x61\xe1\xb8\x16\x12\x6c\xf7\x93\x1f\xc4\x95\xfc\x66\x4f\xf4\x37\xfd\xa7\xac\xfe\x8c\x85\x62\xae\xcf\xd7\xaa\x07\x6a\x36\xad\x07\x42\xf2\x26\xaa\xbe\x5a\x6c\x57\xd0\xbf\xda\x86\x12\x95\x08\x47\x18\xeb\xda\x9e\xe0\x0d\xd2\x22\xce\x02\x5f\x34\x57\x98\xd6\x37\x2b\xb4\x2d\xbc\xf4\xed\x06\x26\xd6\x08\xd0\x43\x12\xb4\x0c\x5f\xcf\x90\x1a\x12\x99\xb6\x2b\x70\x3a\x1e\x6e\xf2\x9c\x69\xf0\x4e\xc2\xef\xa8\x6c\x86\xc7\x4c\x26\xb2\x99\x4c\x64\x33\x19\x81\x8c\x06\x58\xae\xd9\x1d\x2e\xb7\xb9\xf6\x71\x1b\xb1\x28\xc7\x79\xee\xca\x2c\xca\x7d\x2a\x94\xf8\xc4\x56\x72\xf2\x4f\x55\x77\x13\x4e\x41\x8c\x32\xc7\x02\x5b\x4a\x2c\xb0\xad\x16\xd8\x52\xe2\xa9\x2d\xf4\x9c\x4d\xd4\x40\x41\x0b\x7c\xe3\x79\x5f\x99\xf3\x9d\xc7\xa5\xe6\x5f\x38\xb9\x73\xf6\x70\xb3\x38\xe5\x8e\x03\xdb\xd9\x47\x19\xab\x3e\x12\x14\xd5\x26\x05\x88\x79\x2b\x71\x4a\x3a\xaf\xc9\x25\x95\x65\x62\x1c\x52\x6e\xf1\x95\x6a\xd7\x6d\x4b\xaa\x78\x7d\x70\x58\x9b\xdb\x5c\x86\x1f\x41\x88\x18\x56\xc6\x68\x49\x76\x95\xf9\xf4\x10\x7b\x13\xb9\x2f\xc8\x82\xf4\x50\x98\x09\xc1\xef\x76\xbb\x46\x96\x5a\xc6\xf5\x99\x54\xc8\x4c\x61\x9a\x8a\xb5\xb9\xcc\x43\x98\x3c\xd9\x48\x34\x9e\x86\x0a\x29\x29\x3f\xcc\x94\xbd\x16\x6d\x93\x42\xad\x53\xd8\x58\xc7\xa3\xee\xb9\xfb\x72\xf4\xd1\xcd\xd0\xe9\x96\xe5\x7d\xbe\x4f\xf2\xb2\x8f\x96\x95\x3f\xac\xec\x16\x61\xea\x2d\xf1\x7b\xe8\x44\x2c\x40\x2b\xa2\x99\x5e\x84\x60\x04\x24\xd1\xfa\xaa\x4d\x86\x58\x7d\xcf\x11\xc5\x05\x68\x56\x98\x0b\x14\x6d\x46\x0c\xaa\x5b\xe0\x0d\x26\xc5\x0d\xc9\x94\xcc\xa6\x25\x27\x3a\x43\xf7\x80\x51\x36\x99\x86\x65\x7c\x15\x27\x71\xf9\x50\xdf\x48\x07\x27\x27\x6f\xff\x7c\x79\x7c\xfa\x3f\x07\x27\xc7\x87\x97\x87\xc7\x67\xe7\x07\xa7\x6f\x8e\x2e\xcf\xdf\xbe\xfd\xee\xe0\xfd\xe5\xc1\xfb\xf7\xef\x97\x7a\x3d\xdf\x2c\xc2\xa9\xfb\x0a\x48\x55\x74\xcc\x74\xd7\x8b\xb2\x50\xed\x7b\xe1\x91\x90\xd6\x87\xde\x92\x96\xf7\x0d\x1c\xad\xfe\x42\x26\xd4\x10\xe6\xb5\x5e\xe2\xd1\xf3\x0c\x06\xd1\xb1\x07\xe1\xab\xd8\x38\x80\xc5\xba\x6f\x75\xde\xa2\x4d\x5f\xc9\x8a\xa4\xec\xfd\x26\xee\x24\xbd\x87\xd1\x94\xf0\xbb\x67\x9d\x1f\x40\xd3\x6b\x6b\x17\x5f\x78\x09\x3c\x0c\xb1\x7a\x1a\xe8\x51\x62\x44\xbb\x93\xcd\xdb\x53\x8e\x4d\x1b\xa0\x91\x5e\x1a\x45\xd7\xfe\x87\xbe\x9c\xa4\x2a\xd7\x95\x90\xde\x2a\x05\xbf\x91\xb7\x87\x05\x01\xeb\xe9\xd1\xda\x1e\x2b\xe8\x9d\x1a\x8b\x16\x66\xfd\x5e\xa1\xfc\x67\x7d\x04\x98\x61\x36\x91\xf3\xb9\xa0\xb0\xc9\xd1\xc7\x34\x1c\x58\x12\xfb\x5f\x6d\x3d\xd5\x3c\x98\x15\xad\x57\x72\xa8\xb2\xed\x2b\xe1\xa1\x34\x36\xd8\x15\x8c\x73\xed\x3f\x1a\x4c\x6d\xb3\x32\xc6\xcc\x52\xe9\xc5\x13\x74\x60\xd2\x0b\xe0\xf2\xbd\xb2\x0f\x1b\x8c\xe9\xc0\x24\x7c\xe8\x89\xd4\x3c\xaf\xee\xd2\xad\xb1\xd5\xc4\xbf\x84\xc0\x09\xf6\x84\xb6\xa4\xb8\xff\x16\x5a\x5f\x37\x01\xd1\xbf\xcd\x32\xaf\xfb\xde\xd9\x33\xaf\xc6\xec\x0c\x56\x43\xec\xcc\x1b\x2e\x9f\xf0\x0d\x93\xfa\xe4\x84\xcc\x99\x92\x4f\x9c\x94\x45\xa6\xa5\x81\xfe\x85\x78\xc6\x1e\x58\x74\x17\xd4\xe9\x7e\xc1\x9d\xd1\xac\xca\x20\x27\xbe\x9e\x65\xb3\x62\x9e\xbc\x64\xed\x8d\x39\x7b\xe2\x0f\xb6\xe6\xd6\xfe\xfd\x6c\x8d\xfb\x08\xf3\xb2\xef\xe2\xab\x36\x0e\xde\xfa\x70\xf3\xf8\xff\x99\xb5\x78\x51\x37\xe6\xab\x79\x5a\x56\xfc\x7c\x83\x54\xc2\xe7\xbe\x09\x64\xf9\x1c\xcd\xce\x5f\x33\xf7\x57\x0d\xe8\x49\xcc\xe3\x17\x42\x98\x0b\x13\x4a\xf6\x3e\x9f\xce\x60\x47\xd4\x47\xa5\xdb\x99\xc4\xa9\xed\x97\x80\xde\x0a\x3a\x11\xf2\x13\x33\x51\x95\xf4\xfe\xf9\x15\x1a\xc9\xa6\xba\x29\x7c\x42\xdc\xa2\x74\xf4\x54\x27\x9e\x4f\x42\x4f\xb5\xb8\x38\xf5\xd8\x7f\x6b\xf1\x86\xac\x53\x5b\x2f\xda\x1e\x09\xb5\xb7\x2a\x06\x78\xf5\x71\x2b\x13\xf7\x82\xb5\xba\xe4\x8e\x29\xaf\xe5\x58\xaa\xda\xb6\xa9\x4a\xac\x89\x96\xdf\xd2\xd2\xae\x0c\x4d\x0b\xf4\x64\x00\x6c\xb2\xc0\x7a\xf6\xc3\x5c\x25\x1a\x3a\x58\x51\x9e\xe7\xab\xcd\x5e\x85\xf9\xd1\x36\xf1\x11\xc6\x1c\xa8\x0b\x98\x02\x47\x1b\x24\x25\x59\x27\x6f\xe3\x50\x2c\xab\xd1\x2c\xd7\xcc\xa0\x35\xc3\xfb\xbc\x05\xa9\x2d\x8a\x75\x7d\x6e\x2f\x89\x73\x7d\xf3\xbb\x97\xc3\x5a\x8a\x44\xa6\xf3\x6f\x0c\x36\x06\x73\x6e\x0c\x9c\xcb\xb2\xf9\x17\x2d\x75\x23\x93\xed\x4a\xf7\xb7\x74\xb9\xed\x60\x91\x59\x2b\x78\xfe\xf3\xbb\x23\xf3\xaa\xb6\x7c\x0d\x39\x0e\x7c\x44\xc3\x97\x2d\x3d\x6b\x92\x57\x1a\x3e\xea\x90\x8d\xe7\x9b\x4b\x9f\x4a\x2a\x88\xc7\xa0\x18\xd4\xa5\x71\x6a\xfa\xe6\x1b\x62\xf7\xe8\x34\xd4\x56\x39\x40\x38\x82\xc5\xb9\xfc\x6f\x65\x29\x79\x36\x04\x42\x39\x47\x06\xa2\xc0\x0c\x95\x04\x04\x76\x9d\x39\xa6\xa5\x36\xad\x0c\x5d\xe3\x60\x8d\xfd\x7d\x62\x9a\x78\xc7\xbd\x27\x98\x06\x94\xc5\x10\xad\x31\xaf\xa8\x04\xd1\x92\xba\x62\xb5\x2f\x56\x29\x06\x90\x40\x30\xe9\x72\x9e\xfc\xd8\xb1\xbf\x7c\x65\xef\x04\xf5\xf0\x2d\xbc\x73\x89\xce\x67\x9c\x2f\xaa\xc7\x9e\x9b\x6f\xc5\x26\x10\x36\xfe\xdd\x81\x86\xda\x62\x57\x6c\x8a\x0e\x15\xea\x60\xa1\x76\xbb\xd2\x0a\x35\xdf\x32\x93\x2a\xbe\x15\x83\xcd\x6d\x68\x08\x7e\x74\xf0\xcb\xd0\x10\x3c\xec\x70\xc1\x0e\xce\x3e\x37\xa5\xee\xb5\x05\x19\x93\xcd\x43\xbe\xe4\x56\x46\x6b\x1a\xf4\x70\xe9\x71\x88\x51\x1f\x8f\x17\xc1\xc6\x8b\x3f\x02\x35\xfe\x08\xd4\xf8\x23\x50\xe3\x3f\x2b\x50\xe3\x36\xcc\x29\x38\x59\x1f\x71\x7b\x6a\xb8\xad\x95\x4a\x28\xd8\x4a\x7b\x88\xe5\x55\x06\x86\x7a\x79\x15\x25\xa6\x4a\x62\x94\x98\xb7\x65\x0a\x20\x53\xe5\x6c\xf7\xdd\x4a\xb9\x38\x1d\xc3\xd3\x6a\xc9\x92\x43\x31\xdd\x92\x18\x78\x06\x45\xb1\xec\x9b\xb7\x87\x47\x67\x64\xdb\x81\x9f\x27\x47\xa7\x67\x04\xce\x0b\xbf\x0e\x8f\xcf\xce\xcf\x28\x9f\xc6\x52\x6f\x55\xbc\x9b\x5d\x25\xf1\x08\x41\x18\xcb\x30\xa5\x9c\x93\x9f\xf8\x6f\xb5\xf7\x59\xc1\x31\xb0\x41\xec\xe3\x01\x27\xb4\x27\x34\x98\xdb\x30\x99\xc9\x62\x88\xf7\x4c\x2a\x2f\x5b\x1b\x49\xcc\x38\xf7\x5f\xc9\x84\xb3\x48\x47\xb2\x0c\x61\x95\xd1\xc7\x16\xc6\x6f\xc1\xc0\xf1\xe2\xa0\xf5\x9e\x5e\x39\x00\x64\x34\x67\xea\x95\x85\x18\x86\xb5\x06\xe6\x95\x05\x2d\x86\xaf\x36\x68\xa6\x15\xa8\x92\x21\x83\x17\xea\x05\x65\x72\x33\x2f\x36\xd5\x8b\xf3\xf7\x47\x47\x67\xd6\x8b\xad\x21\x4d\xc1\x7b\x3a\xab\xc9\xbd\x52\xf9\xf0\x5b\x50\x21\xbd\x48\xda\xc0\x21\xea\x3c\x2b\xba\xe2\x54\xe5\x4d\xa6\x79\x5b\xe2\x94\xe1\x18\xd7\x50\x04\xec\xfb\xa8\x5f\xe3\xbb\x99\xca\x1a\xae\x50\xc9\x80\x25\xa4\x59\x3e\x09\x13\x3a\x39\x0a\x72\x4b\xa7\x2e\xbf\xfd\xc1\x16\x34\x35\xd5\x39\x98\x9b\xf8\xa2\xaf\x5e\x20\xac\xe0\xe1\xf1\x9b\x73\x51\x9b\xca\xa3\xf7\xef\x4f\xdf\x5a\x8d\x75\xfa\xd5\xd6\x10\x64\x0b\xde\x0c\xd4\x1b\x83\xd4\xc2\x75\xf4\xfc\xff\x78\xf4\xa3\x79\x01\x6f\xcc\x02\x68\xbc\x2e\x7e\xb3\x69\xfa\xf0\x3f\x47\xef\xcf\x8e\xdf\x9e\xf2\xfb\x3d\xd1\xd9\xa2\xad\x02\x67\x80\x0a\xa0\xb5\x27\x9b\xb3\x1b\xea\x09\xd1\x19\x7b\x04\xde\x86\x63\x5d\x84\x03\x39\xfb\x2c\x9b\xe3\xcb\x6c\x33\xe8\xba\x10\xe2\xfb\x23\x0c\x4d\xeb\x5b\x91\x69\x95\x98\x32\x02\xe6\x36\x9e\xeb\x5c\xf1\xbb\x93\x83\x3f\x9d\x59\x19\x7f\x3d\x15\x69\x9a\x60\xa3\x52\x06\x9e\xd6\xf5\xaf\xf1\xb4\x6d\xb5\x71\x7e\xfc\xe3\x11\x6e\x9f\xe6\x8f\x67\x11\xa6\xd9\x37\x61\x52\xb5\x46\xde\x9e\xe1\x46\xd3\x34\x54\x6f\x84\xdc\x2e\xa8\x0f\x18\xfe\x45\x4e\xc4\xe9\xb5\x28\x1e\x8a\x52\x4e\xea\x6d\x1e\xfd\xe5\xe4\xe8\x14\xb7\xe9\xfc\x36\x59\x57\xf1\xd4\x3f\x7f\x7f\x80\xbb\x79\x7e\x7d\xd6\x19\xaa\xd5\x4f\x0f\x70\x5e\xb6\x9b\xe7\x85\xd5\xb3\x31\x28\x2a\x98\x8d\xad\xd6\x06\x23\x35\x21\x49\xce\x6d\x43\x65\x67\xab\xb5\xf0\xfd\x9b\xf7\x6f\x30\xf3\x70\x63\x2f\x98\x28\x46\xf9\xa8\x5e\x1b\xb6\xfb\x31\x92\xd6\x7a\xc3\xf7\x2d\x70\x0e\x4a\xd3\x8f\x1c\xa9\xd2\x04\x34\xd0\x37\xb3\x68\xd7\x67\xee\xef\x62\x19\xb5\x09\x5d\xcc\x34\x22\x54\x9c\xd8\x67\x08\x9c\xac\x34\x79\xf8\x16\x1a\xdd\xb0\x86\x57\x84\x13\xc6\x8e\x2e\x3e\xc6\x53\x1e\x16\xe8\x9d\xf7\x71\xa9\xe3\xfe\xb2\xd4\x82\xce\x75\x5b\x3d\x3b\x7f\xfb\xfe\x08\x27\xed\x45\xc3\xa4\x11\x4c\x25\x45\x83\xb4\x98\xfc\x80\xa6\x09\x60\x14\x16\xb2\x5d\x69\xf3\xcd\xdb\x77\x3f\x5f\x0a\xe3\xa3\x04\x6d\xf6\x32\xea\x2b\x08\x61\xf0\x9e\xce\x4f\xea\x39\xa2\xa5\x91\xbb\x3f\xc5\x25\xa6\x9e\x06\x05\xa6\xea\x16\x4e\x83\xee\xda\xb8\x11\x9e\xca\x6d\x9d\xbb\xef\x1b\xfb\xf9\xc1\xeb\x13\x5c\xa5\xed\x61\xc3\x22\x45\x0f\x69\x38\x89\x47\x5c\x9b\x04\x23\x9a\x82\xa2\xd2\xd6\xc9\xd1\xa9\x12\x82\x76\x86\xde\xb6\xc8\xe5\xd8\xb2\xe7\xf8\x1b\x02\xc9\x4a\xb5\xf4\x72\xe8\x6b\x88\x3d\x95\x13\x56\x41\x5c\xbb\x9d\xbf\x51\xee\x21\x2c\xca\x60\xdd\x21\x49\xb5\x26\xc0\x7d\x9e\xb3\x24\xdc\x22\x34\x38\x87\x93\x9b\xae\xf6\x64\x76\xa5\xcd\x58\xf5\x76\x8e\xfe\x02\xfb\x6e\x30\x68\xa0\x41\x3b\x22\x51\x7b\xb3\x55\x5a\x01\xa9\x13\xda\xd8\x68\xdc\x72\x35\x0b\xa7\xa7\x05\xee\xc8\x0b\xff\x1a\xba\x21\x8d\x4d\x3d\x21\x90\x93\x3d\x31\x30\xf4\x5f\x21\x56\xc7\x4f\xdc\x50\x6a\x0e\xef\x3d\xf3\x73\x8c\x7d\xda\xb2\xe6\xf9\x89\xf6\x28\x60\xca\x72\x79\x56\x2c\xfa\xfb\xa3\x37\x3f\x40\x5b\x8d\x14\xbf\x31\xe8\x00\xeb\xf1\xb3\xc7\x93\xa3\xd3\x3f\x9d\xe3\xc8\x9a\x38\x3c\x57\x6f\x3a\xa5\x0e\xdf\x9e\xc2\x86\x1b\xbc\x34\x6b\x34\x8e\xd3\xb8\xb8\x91\x1c\xa6\x18\x10\xce\xf0\xd3\x91\xe9\x1c\x3e\xfb\xfb\x43\xdc\x61\xbd\x8e\x7e\x84\x86\xfa\xd5\x86\x52\x4b\xdc\x9f\xc8\x49\x96\x3f\x3c\xa7\x55\x90\xe6\xa1\x59\xeb\x08\x48\xb2\x4c\xc7\xa2\x16\x0f\xe9\xe8\x26\xcf\xd2\xf8\x57\x12\x35\x74\x40\x50\x2e\xe9\xea\xdb\x7c\x9b\x02\xe8\x3f\xbb\x3c\x86\x1d\x3d\x3a\x7d\xfb\xd3\x9f\xbe\xbf\x64\x8e\xb3\xb3\xc9\x22\x2f\x3f\x56\x9a\xdc\xe6\x4b\x2d\x40\xd3\x1b\xb1\x27\x44\xcb\xaa\xbb\x66\x57\x50\x4a\xa2\x4e\x87\x4d\x67\x01\x8c\x61\x63\xf0\x83\x38\xf9\xeb\xf6\xb6\x75\xa9\x8b\x1a\xe3\xd1\x77\xba\xa4\xae\x35\xb4\xd3\x63\xff\x5a\xdc\x85\xd3\x8d\x41\xeb\xef\x4e\x5a\x6e\xd1\x6a\xb5\xfe\xce\x1e\xc0\x1a\x99\xd4\x49\x0f\xab\xde\x6b\x58\xd4\xf5\xf5\x7a\x01\xf3\xe6\xd5\xab\x6a\x7e\x59\xf3\x1e\xdf\x0e\x5e\xb4\xab\x99\xbb\x8f\x59\x2a\x28\x69\xb5\xa0\x7b\xe5\x4d\x5c\x28\xd3\xf1\xba\xeb\x76\xd8\x5b\xd5\x60\xf5\xea\x78\x9e\x68\xeb\x3e\xd6\xe3\x10\x24\x04\x82\x76\xef\xf9\xca\x7c\x86\xa6\xf8\x69\x9e\x8d\x40\x33\x60\x89\x41\x58\x06\x77\x6c\xc1\xc6\xbf\x73\x3f\x0d\x9b\x73\x9d\xda\x01\x22\xfc\x35\x89\xaf\xd0\x6c\x2c\xfa\xe6\x21\xe6\x11\x37\x8d\xdd\x84\xb7\x32\x22\x20\x36\xbb\x4b\x56\x77\x2c\xb1\x4a\x5b\x0e\x4d\x7d\x93\xd1\xb3\xda\x19\x3b\x61\x79\x5d\x74\x5f\x87\xa6\xa1\x83\x6d\xab\x31\x0e\x71\xf2\x8c\xcc\x8e\x76\x75\x1c\x4d\x5b\xae\x63\xaf\xdd\x1a\x71\x39\x5f\xd7\xa6\x79\x56\xca\x51\x09\x6c\x09\x58\x33\x08\xad\x2e\x47\xe4\x16\x30\x9a\x7d\xc1\x16\x98\x49\x23\x68\x84\x0e\x63\x3d\x7f\x7b\xf8\x76\x17\xed\x4c\x57\x52\xfc\xe3\x51\x4f\x3a\x01\x6b\x21\xaa\xa8\xdb\xae\x0e\xca\x2b\xc2\x5b\xe9\x4c\x61\x9c\x8e\x41\x81\x46\x9a\xd4\x68\x86\x6e\xc0\xaa\x4d\x23\x6c\xb5\xae\xf7\x3c\xc9\xae\xc9\x4d\x1d\x13\x81\xe6\xf2\xef\x33\x59\xc0\x38\xec\xb0\x60\xab\x1d\x0e\x2b\xab\xb7\xf3\xac\x30\x62\x6a\x8b\x63\xd1\xea\x6d\x3d\x11\x46\x4c\xb5\x39\x64\xad\xb1\x27\xb5\x30\x62\xaa\xa6\x02\xda\xdc\xc9\x7e\x2a\xec\x37\x95\x92\xe9\x7c\x49\xef\xac\x70\x34\x9a\xe1\x7d\x8f\x8a\x0e\xa5\xb5\xa4\x3b\x03\x0f\xcd\x6a\x1c\x87\x86\x9a\xfe\x25\x72\x3d\xfc\xb1\x4c\x9c\x8a\xe5\x38\x5d\x36\xbd\x21\xc1\x3d\xe7\xc4\x31\xae\x10\x0c\xf4\xc8\x82\x86\xe2\x38\x0a\xa2\xcd\xfd\x92\x15\x35\x65\x64\xb0\x6c\x4c\xe7\xab\x13\xba\x8a\xad\x64\xe3\x31\xe1\x9e\xd5\x5a\x71\xbd\xac\x2b\xf2\x8e\x8a\x28\x35\x1d\x27\x39\x9b\x74\x8c\xc8\xe0\x33\x58\x9f\x22\xf1\xcb\xb7\xd4\x96\x60\x56\x5d\xa1\x71\x7c\xcf\x29\x5e\x94\x58\x8f\xcd\x97\x56\x58\xa9\x9a\x0d\x8e\x43\xac\x6c\x3f\x95\xf8\x0d\x4d\xc8\xfa\xfa\xc2\xc8\xb8\x38\x53\x56\x78\x32\x71\x2c\x15\x45\xed\x21\x30\x4f\x6b\xbe\x30\x67\xd5\x2b\x1f\x39\x20\x15\x01\x41\x6b\xe8\x0d\x27\xda\x5b\x77\xc1\x53\xb7\x5e\xd5\x8e\xf8\xe6\x48\x49\x9e\x29\xea\xe0\xd5\x2c\x4e\x2a\x2b\xa1\xa6\xaa\xbe\x12\x86\x44\xe7\x69\x3e\xaa\x19\xba\x8e\x9c\x4b\xe9\x4f\xb4\xc0\x51\x34\xf3\x3a\xd2\xa8\x2a\x59\x47\xdd\x53\xbd\x70\xaa\xc6\x29\xfc\x59\x7c\xb8\xb0\x3b\x42\x5c\xa8\xca\xba\xb9\x1d\x78\x69\x40\x1f\x48\x60\x8f\xd9\xea\x4a\xcd\x58\x0b\x5e\x54\xc1\x4f\xfb\x5b\xad\x8d\xc1\x7a\x1b\xb3\x02\x94\x72\x32\xcd\x72\x38\x74\x61\x77\x87\xd7\xb2\xaa\x65\xda\x23\xbb\xcb\xf2\x8f\x9e\xc6\x06\x3b\x3b\xd4\x18\xbe\x0f\x73\x19\x9a\x46\xea\x4b\x8e\x24\xb1\x84\x99\xfd\x74\x08\xb7\x95\x56\x44\x45\x71\xc3\x78\x7e\x29\x30\xbd\x07\x14\x52\xf4\xa8\x74\x55\xda\xd3\xe8\xac\x94\x3c\x40\x6b\x61\xa1\x71\x91\x0a\x2b\x55\x09\xde\xa0\xe3\xbc\x2c\x09\x75\x5c\xd2\xa9\x8d\x3b\xa3\x32\x98\x8d\x01\x8b\xa3\x6d\x4b\x8a\xa7\xe9\x75\x47\x54\xd9\x53\xd1\x43\xda\xb8\x58\x2e\xf1\x37\xee\xf5\x96\x15\xde\xde\xae\x6c\xbb\xa6\xe6\xbd\xad\x57\xf6\x7e\x53\xbb\x45\x98\xfa\xa8\x54\xef\xe9\x31\xc9\x69\x01\x9e\x5f\x77\xa2\x31\xce\xc4\x3a\x67\x42\x9f\x18\xa4\x5b\x44\xfe\x80\x65\x60\x17\x82\xc0\x39\x4b\x59\x04\x95\x91\x6d\x8e\xb0\xe8\x2d\xf4\x1d\x5c\x16\xdf\x21\x30\x15\x73\xa6\x10\xba\xc0\x6a\xcf\x01\xbf\x67\x01\x59\xe3\x62\x7a\x20\xf0\xa5\x8b\xdc\x5d\x01\xeb\xf6\x26\x92\x40\x24\x6c\x82\x46\xf5\xa2\x08\xb8\x59\x0f\xf6\xec\xdf\x2a\xf0\x3f\x2c\xa5\x25\xfa\x2d\xb9\xee\x25\x2b\xb0\xa3\x14\x42\xf8\x92\x1d\x18\x04\x72\xb9\x71\x9f\xe9\x61\xfe\x81\x62\x36\x9d\x66\xa0\xee\x25\x49\x67\x94\xa5\x23\x19\xdf\xca\x48\xfc\x77\x78\x1b\x8a\x52\x16\xa5\x28\x66\x20\xb4\xf8\xe0\xb1\x4d\x9b\xe2\x1b\x8a\x80\xd7\x63\x52\xba\xc7\xf7\x47\xe4\xb7\xc2\x01\xf3\x61\x51\x9a\x0e\xa3\x3b\x83\x91\xed\xad\xa7\x2c\x64\x6f\x0c\xb6\xb7\x76\xac\xb2\x46\x24\x35\xc3\xab\x79\x46\xac\xd7\xdc\x22\xd6\x09\x99\xc1\x09\xf6\xaf\xc5\xf8\xeb\x07\x0e\xec\x00\xee\x03\xab\xff\x95\xca\x66\xfb\x7a\x39\x01\x2a\xa6\x96\xef\x46\xed\x5b\xd6\x06\xf5\x37\xa0\xb5\x59\xd5\x04\x6f\xbd\xbe\x35\x48\xda\x3a\x94\x60\x4a\xf9\x39\xf9\xdc\x9c\xd0\x3c\xa0\xfd\x9a\xaa\x50\xb4\x5e\x92\xff\x67\x91\xbb\xc6\x83\x70\xd7\xcf\x48\xe3\xe6\x91\x16\xb1\xcd\x18\xfc\x9b\x74\xb8\xd4\x38\xac\x01\xa3\x48\x91\x30\xfd\x1a\x9d\x88\xfe\xe1\x01\xf0\x37\xe3\x05\x5d\x51\x12\x0a\x20\x8d\x41\xef\xab\xcf\x34\x0b\x4b\x46\x76\x1c\x95\x14\xfb\xc1\x7a\x8f\xed\x82\x0e\x5d\xb5\x32\x71\x19\xf8\x7b\xf3\xf6\x95\xc9\xe7\xa3\x95\x70\xfa\x65\xca\xec\x89\x8e\xf9\x35\xb4\xd2\xa8\xb8\x15\xed\x66\xf7\xf7\xc5\x8b\xb6\x58\x53\x40\xcf\xb5\x8f\xbe\xd8\x31\xce\xa6\xd6\x0b\x8a\x13\x36\x7e\x66\x4a\x27\x94\xa5\x25\xd0\x28\x40\x1a\xbc\x8a\x18\xe7\x52\x6b\x56\xa8\xd9\xc3\xb9\x2c\x95\xbe\x5a\xf9\xee\x37\xdf\x54\xba\xb1\x03\x2b\x61\x77\x5b\xf4\x37\xdb\x0b\x64\x24\x70\x78\x24\x7d\xfc\xab\x3d\x62\x35\x94\x42\x10\x5f\x20\x3f\x81\xe7\x55\xc2\x11\x0e\x16\x89\x4e\xc6\x61\x06\xec\xf1\x4b\x2b\xa4\x46\x95\xc4\x28\x13\x75\x7a\x59\x4c\xd5\x00\x47\xdb\x1d\xb0\x3f\xdf\xb0\x0b\xd4\x0e\xf0\x6c\x00\x04\x8c\x9e\x43\xff\xb9\x2c\xeb\xe4\xaf\x09\xfd\x09\xca\x06\x26\xab\x8f\x21\xe2\xd0\xf5\x03\x18\x4f\x5f\x8a\x45\xbb\x93\xaa\x35\x9d\xff\x93\xa4\x3c\x9d\xd4\x44\xde\x55\xac\x5b\xb4\x55\x7a\x7a\xb9\x38\x2b\x18\x7c\xaa\x6d\xba\xa6\x2f\xc5\x9f\x62\x8a\x5a\xc3\xd6\x8c\xd1\x49\xaa\x52\xe5\x51\xf6\xfa\xba\x67\x50\x2e\x09\x13\x7c\x2e\x97\x19\xf2\x5c\x42\x61\x4a\x49\xf5\xf6\x07\x0b\xc6\xde\x4d\xe6\xe2\xb6\xff\x68\x56\x1a\x97\xa8\x61\x69\x2d\x8e\xed\xd2\x85\xbd\xee\xda\xd8\xd9\x56\xe9\x5e\x96\x94\xf3\x05\x75\x00\xa1\xca\xac\x9b\x36\x2d\xb9\x69\x4d\x98\x25\x59\xf2\x48\x01\x15\xae\xc0\xe4\x2e\x48\xd4\xd9\x12\x6b\xba\x8e\xf2\xdc\x15\xe2\x14\xdd\x2b\x92\x07\xc6\xfa\xc4\x2f\x16\x5c\x96\x1b\x54\x48\xb2\xf8\xb0\x7b\xd3\x5d\x12\xc7\x63\xf1\xfa\xa7\xe3\x93\xc3\xef\x8e\xff\x72\x74\x88\xd1\xc2\x72\x1c\xa7\x32\x62\x0c\x46\x05\xbb\x66\xc3\x87\x92\xce\x50\x70\x36\x08\x6c\x17\x71\x27\xed\xeb\xa4\x72\xa5\xe0\xf4\xb8\x81\xe5\x28\x0a\x05\xb3\xc2\xae\x65\x57\xc2\x0c\xb8\x08\xfa\x88\x19\x49\x15\xa0\x64\x2e\xa3\xd9\x88\x4b\x93\xad\x69\xcc\xae\x2b\x91\x44\x64\xcc\x2b\x90\xda\x06\x3f\x28\x24\xc6\x38\x5d\x12\xf2\x7e\x74\x13\xa6\xac\x32\x85\x2a\x21\xb8\x0b\x8f\xda\x15\xe2\xfb\xec\x4e\xde\xca\x3c\xb0\xa7\x80\x73\x34\xb2\x9b\x99\x71\x64\x29\x6f\x72\x19\x46\x32\xaa\x38\x0d\x16\x98\x29\x98\x38\xcd\x5d\x4e\x17\x25\xdc\x41\x6b\x11\x6f\xe3\xfc\x1a\xfa\x65\xf9\x9b\x51\x7b\x9d\x22\x1c\x4b\xe3\x0a\x43\xe5\xc4\x1e\x9a\x5e\xd9\xca\x9e\xc8\x74\x1c\xdf\x53\x50\xfe\x38\xbe\x47\xef\xe3\x3f\xd7\xb1\xb5\x60\xd7\xff\xf7\x19\x7a\x06\x7f\x94\x72\xaa\xbe\x5e\x48\x38\xd0\x4a\x69\xd1\x33\x2e\x3e\xbd\x6e\xa9\x03\x95\x6d\x5c\xb0\xb0\x4c\x31\x37\xb3\xf1\x78\x12\xa6\xaa\x1d\xd0\x3a\x70\xa9\xf0\x32\xbc\x55\x1b\x88\x80\x81\xb4\xcd\x31\x42\x23\xb1\x53\xa7\x16\x0f\x13\x46\xd6\xa0\x11\x79\xc4\xb2\xcd\xfe\x40\xe7\xe9\xc0\xc1\x7a\xca\x6c\x0c\x54\x8e\x40\x63\xbe\x52\x1e\xde\x65\xa8\x53\x43\x0b\xf8\x9e\x75\x3c\x73\xb2\x8b\x87\x89\x78\x25\xfa\x2f\x5e\x60\xbe\x2f\x25\x64\x16\x1f\x8a\x87\x09\x05\x6b\xec\x0c\xd9\xc1\xdc\xa9\x30\xd8\xdc\x6a\xaa\xf0\xd2\x5f\x61\x67\xbd\xa9\xc2\x76\x43\x85\x9d\xb9\x5d\x22\xb1\xc0\x76\xe0\x6b\x81\xf4\x1b\x58\xa2\x33\x65\x98\x1c\xec\xec\x04\x9a\x64\x04\x3c\x61\xde\x9a\xe5\x1f\x03\xf1\x0f\x14\x03\x76\xc5\x4b\xf1\x68\xcd\xa2\xd1\x1c\x17\x9b\x3f\x8a\x11\xf0\xf5\x75\xb3\xa1\xaf\x28\x68\x07\xd5\xbe\x6e\x0c\x02\xb3\xd4\x41\x53\x5f\x37\xdd\xbe\x66\xc4\x8b\x30\x49\x4f\xa6\x91\xee\x84\xd9\x3a\x74\x89\x61\xe7\x38\xb3\x35\x0b\x9a\x1a\x47\xe7\xe0\x63\xff\xa5\x57\x93\x50\xbb\xce\x79\xc7\x35\x36\x0d\x7f\xff\x89\x24\x10\xcb\x6e\x8d\x4c\x1e\xd1\x76\x41\x2b\x23\xf1\xbb\x95\x2a\x16\xbd\x31\xf8\xa1\xcd\xe6\x6e\xe0\x1a\xa5\x4c\xc5\x15\x22\xe2\x2e\x99\x9c\xd3\x5d\x01\xdc\x99\x9b\x8b\x32\x49\x0e\xb5\xf2\x3e\x2e\x4a\xf1\x20\xcb\x40\x8c\x72\x19\xa2\x5b\xb2\x62\x95\x88\x8c\x9c\x3c\x30\xe7\x5d\xa2\x1c\x50\xa1\x96\xf7\x0a\x9d\x7a\x28\x4e\x81\xb1\x21\xca\x21\x96\xe1\xab\x8b\x1b\xf4\xa0\x95\xa9\xee\x53\x34\xcb\xc9\x9f\x36\x2e\x96\xf4\x75\x16\xa5\xa5\xbc\x62\xd8\x6e\xf6\xf9\x29\x2d\xcf\xb6\xa2\xcc\x65\x38\xc1\xd6\x88\x47\xc8\x54\x03\x2a\x3f\xc8\x12\x4e\x9d\x52\x70\x6a\x59\x95\x44\xbd\xcc\xd4\x70\x74\x7f\x2b\x1e\x3d\x68\x95\xe6\x11\x99\xc7\x4b\xd0\x50\x92\x01\x67\xee\x2e\x2d\x89\x77\x78\x3f\x65\xe5\x8c\x57\x96\x27\xc4\xed\xce\x09\x3c\x7b\x63\xf0\x83\x03\xca\xad\x78\xbe\xca\x8d\x8d\xb9\x54\x61\xfe\xc2\xe8\x36\x4c\xcb\xf0\x5a\x2a\x3e\x8f\xb3\xab\x17\x15\xda\x31\xf7\x3e\x98\x93\x77\xca\x80\xdf\x78\x58\x39\x97\x0a\x4b\x62\x36\xcd\x14\x9e\xb5\x03\xe9\xde\x6a\xd3\x19\x49\x9f\xc0\x4c\x86\x1a\xa4\xae\x9a\x9b\x9b\x3e\xb9\xa4\xbe\x89\xee\xf7\x63\xa8\xc2\x97\x26\xfc\x1c\xe6\x2a\x10\x93\x10\x6f\xa3\xc9\xf4\x82\x7d\x2b\x44\x81\x79\x39\x08\x63\x7c\x1c\x16\x70\xce\x2e\xa1\x5b\xa2\x1e\xab\xba\xac\x8a\xe4\x54\xa6\x11\x25\xdd\xae\x1d\xbe\x6c\x1e\xca\xf2\x95\x82\x16\x66\x04\xcb\x5b\x54\x72\xc3\x91\x5c\xae\x32\xd6\x10\xb4\x70\x3e\x0a\x08\x27\x77\x94\x4d\x9d\xbc\x70\x85\x2b\x19\x7b\x35\xb8\x18\x05\xf9\x9b\xb0\xa0\x04\xf8\x40\xa1\x98\xb6\x98\xc8\x3a\xd0\xf2\xa6\x65\x19\xac\x5e\x25\xd5\x34\x91\x3d\xd6\x44\x2a\xba\x06\xeb\xcb\x16\xd6\xe0\x9d\x41\x2d\xf2\x68\xcb\x1e\xad\xda\xab\xba\x54\x72\x5d\x99\x8f\x39\x19\xd1\x0d\x44\x66\x67\xff\x4e\xdd\xb0\x61\xda\x7a\x45\xd7\x7c\x55\xc6\xb4\x36\x8a\xf3\xd1\x2c\x01\x05\xbb\x32\x54\x6c\x68\xdf\x41\x85\x54\x03\xad\x24\xd6\xb2\x3b\x6a\xd6\x09\x81\x2c\x75\xd5\xc0\xfd\xa1\xb2\x6a\x2d\x30\x1d\x15\x54\xca\x8a\x4a\xcc\xb6\x7d\x7b\xea\x3b\x55\x68\x4a\x07\x39\xc8\x10\x8f\x55\x7d\x84\x49\x62\x84\xc9\x5a\xd6\xfb\x75\x22\x27\xa3\xe9\x43\x4b\xcd\x24\x4d\xce\x9a\x9e\x59\x68\x5b\x0d\x13\x6a\x33\xf4\xd1\xf0\x59\xf3\x63\x2a\x06\x76\x9f\xb9\x15\x5c\x80\xce\x9e\x30\x41\x90\x6a\x59\x4c\xff\x1b\x3a\xea\x7e\x00\xab\xa8\x88\xb4\xe7\xf5\x8d\xfe\xaf\x95\x15\xce\x59\x2f\x33\x6d\x4f\x2c\x9a\x9a\x57\x27\xf4\xce\x6e\x6b\xcd\x1e\xa6\xb3\xd5\x34\x84\x8a\x4b\x87\x35\xca\xd1\xe1\x7d\x56\x5d\xec\xcc\xab\x86\x9a\xf8\x52\x7d\xb7\x92\x03\x99\x79\xed\xba\x57\x9d\x63\x7e\x44\x99\xf2\xfd\x50\xe7\x15\xa0\x5b\xa3\x62\xf7\xe8\x55\xcf\x3d\x63\xec\x54\x94\x7e\xb3\x38\x0e\x93\x2e\x85\x8f\x4f\x0f\x8f\xfe\x62\x80\x76\xa7\x7e\x64\x73\x5d\x89\xbf\x54\xa9\x05\x83\x07\x69\x6f\x5c\xd6\x6e\x1f\xaa\x50\xf8\x56\x92\x8a\x45\x50\xac\xaf\x62\x9d\x8d\x62\x11\x00\x6b\x75\x49\xed\xab\x76\x19\xa7\x81\x0f\xba\xbd\xb7\x4a\x2e\x0e\xfa\x92\x74\x91\x2e\x23\xad\x36\xcc\x93\xb6\x78\xf1\x6d\x38\x7a\x9a\x9b\xd4\x21\x35\x2c\xe6\x67\x22\x23\x53\x2b\x73\xf0\x91\x0d\x5e\xb5\xef\x6a\xc4\xf2\x0b\x72\xd5\xfc\x2a\x6c\x35\x34\x70\x49\xd6\x3a\xfc\x33\x9b\xf2\x1f\xb7\x61\x82\xca\xdf\x34\xfc\x28\x23\xb1\x0c\xcf\x96\x45\x24\x49\xa6\x8c\x7f\x95\x91\x7b\xa3\x84\xa6\x99\x27\xc0\xf7\xa7\x21\x76\xc8\xdb\x0f\xcc\x54\x4e\xfd\xc0\x3f\xa1\x1f\xf8\x47\xa5\x1f\xf0\xec\x89\x7e\x3c\x81\x7c\xad\xb4\x37\x9e\x6e\x38\xb5\x73\x39\x95\x21\x7c\x1a\x29\xab\xcc\x44\x94\x67\x53\xd3\xb7\x5c\x36\x6e\x97\xdc\x84\xb9\x58\x73\x7a\x35\x1b\xd7\x0f\xdf\x17\x6d\xe5\xe5\xc8\x34\xab\xbd\xa3\x2c\x37\xf4\x51\x98\x8c\x18\x9e\x52\x58\xd0\xe2\x65\xa1\x73\xd5\xa6\x38\x1b\xe6\xba\x16\x09\x23\xcb\x05\xc6\xa8\xbc\x3e\x3e\x3f\x53\x05\xb3\x9c\x32\xbc\xc1\xc4\xcb\x7c\x32\xe3\x38\xba\xea\xa5\x33\x2b\x34\x1f\x44\x7f\x2b\x10\xfd\xed\x40\xf4\x77\x50\x39\xda\x09\xc4\x76\x20\x5e\x06\x02\x1e\xaf\x07\x62\x33\x10\xfd\x7e\x20\x5e\x04\xa2\x3f\x08\xc4\x46\x20\xfa\x1b\x81\x18\x04\xa2\x0f\x4f\x30\xaf\xc7\x05\x21\x22\x37\x19\xd2\xcd\x4f\xde\x66\xbf\xfd\xc6\xdc\x97\x8a\x73\x16\x07\xb4\xd0\xda\xd1\xba\x98\xdc\x7a\x11\xbb\x6f\xe3\x9d\x84\xe1\xee\x3a\xc7\xcc\xf9\xcf\xef\x8e\x0c\x5f\xb7\x62\xc1\x0f\xdf\x0e\xc5\xa3\x62\x18\xc6\x07\x1e\x5d\x1c\x81\xc4\x3b\x9d\x8e\x38\x79\x7b\x70\xd8\x6a\x8b\x4e\xa7\xb3\x84\xd9\xc7\x9f\x83\xde\x0d\xec\x53\x54\xb3\xd2\x0c\x9f\x9b\xac\x53\x9f\x98\x95\x8c\x9f\x8b\xa3\x66\xe3\x48\x96\x34\x9c\xb9\x02\xea\xe6\x3b\x49\x64\xf2\xda\x10\x4a\xf7\x4a\xd8\x99\xf1\x65\x22\xc3\x5b\xb9\xeb\x45\x53\x35\x60\xab\x24\x92\xdd\xc5\xc0\xc9\xac\xa9\x37\x32\x08\x5a\x8c\xbf\x3f\x3a\x38\x34\x50\xad\xee\xc5\xa6\x01\x97\x33\xfb\xcd\xb7\x58\x35\x64\x85\x1a\x64\x02\x8c\x15\x1a\x83\x0d\x02\xfb\xa3\xa5\x13\xc7\x0b\x63\x6a\x50\xa8\xb7\x5b\x75\x64\x60\x9a\x6b\x05\xae\x40\xd1\xfa\x7a\x22\x86\x0e\xbc\x04\x14\xed\x74\xec\x3e\xb9\x90\xa4\xb0\xae\x9f\x02\x7d\x8b\x03\xe8\xb9\x20\xc6\x2d\xe7\xc2\x76\xd0\x46\x6c\x69\x5c\x7e\xe8\xea\xfd\xce\x55\x7f\xac\x60\xb0\x6c\x26\xe3\x20\x71\xf0\xbd\xa8\xf2\x5b\xec\xad\x62\xac\x67\x6b\xfd\x24\x60\x2b\x3c\x88\x71\x2e\x62\x2c\xcd\xe5\x9b\xf7\x6f\x06\x2d\xab\x76\x80\x9f\x76\x31\x8c\xaf\x66\xe3\x0f\xeb\x17\x42\x63\xa5\xae\xdf\x8f\xc7\xb5\x02\xfd\x0b\x44\xc8\x65\xa0\x51\xe3\x57\x3b\x6c\xec\x25\x75\xd1\xfd\xf6\xd5\x6c\x8c\xbc\x68\xbd\x5d\xeb\x6a\xaf\xb7\x54\xeb\xfd\xf1\xe9\xf1\x39\x52\x42\x1d\x74\xb9\x82\x2f\x66\x5f\x3a\x37\x2d\x46\x85\x2e\x31\xae\x6c\x21\xb2\xa4\x6a\x5e\x87\x56\xbc\x3e\x9c\xca\x51\x59\x4d\xbb\x62\x53\x80\xb9\x48\xf7\x6d\x13\x78\xde\x45\x7d\xd5\x32\x52\x55\xbb\x80\xbc\xda\xa5\xa4\x3e\xe6\x00\x27\x09\x02\xa7\x9c\xfd\x66\x55\x27\x42\x8e\x6d\x75\x08\xa9\xd5\x6a\x59\xab\xdc\xee\xad\xe2\xf4\xee\xb4\x57\x7b\xca\x07\x5a\x2f\xb2\xd8\x69\xb7\xc5\xd7\x62\xa3\x5f\xed\xb4\x8d\xa8\x31\xca\x72\x84\x1f\x52\x27\x23\x74\x64\xa5\x4e\x13\x7e\x14\x96\xc6\x09\xc7\x6d\xa3\xfb\xb9\xae\xfb\xf9\x02\xfa\x49\x57\x38\x2a\x14\xb2\xb9\x73\xb3\xf4\x63\x9a\xdd\xa5\x9e\x80\xca\xdf\xdf\x41\x3a\x5e\x0e\xdf\xbf\x7d\xc7\xfd\x82\x33\xc6\x22\x35\x03\xc8\xfb\xc2\xc2\x0f\x61\x64\x0d\xeb\x11\xb6\xd3\xab\x82\xac\x37\x0e\x7d\xcd\xe6\x3a\x16\x1b\x26\xea\x6f\xe2\xc3\xea\x02\xd3\x02\x79\xb1\xc7\xa2\x81\x5e\x08\xbf\xc8\xaa\x33\x6f\xe1\xc9\xb9\xc8\xf2\xf5\xfd\xfd\x93\xea\x78\xa1\xa0\x81\xc5\xe9\xf1\xbc\x0b\x45\xe1\x50\x7e\x56\x07\x92\xa9\xf9\xcf\x28\x2e\xd5\xef\xad\xaa\x7c\xf3\xcd\xdc\xd4\x19\x8e\x5e\x9c\xc1\xfa\xba\xf8\x56\x85\x1f\xee\x56\x00\x6a\x9a\x19\x58\x9d\x7d\xd5\x99\x57\x95\x75\x39\x73\x86\x47\x32\x72\xaf\xdd\x79\x27\xa7\xbd\xf1\xff\x2d\x0f\x4f\x97\xed\x2a\x21\xc9\x74\xb9\x65\x17\x50\xb1\x1a\xff\x0a\xdc\xc1\xec\x4c\xd3\x37\xb9\xbe\x5e\xdb\x9c\xf5\xde\x30\x01\x53\xb5\x42\x96\x9f\xb3\x2f\x73\xcf\x9f\x92\x84\xda\x96\xc5\xfc\xf1\x88\x59\x74\x78\xeb\x83\xea\xf0\xfe\x0d\xe5\x8f\xfa\x50\x3f\xef\x2e\x76\xc5\xe2\xe3\x1f\x6d\x76\xb1\x8a\xf6\x7a\x44\xde\xc3\x3c\x71\x7a\xf3\xe2\x6e\x87\xc2\x8d\x9b\x7d\x63\x30\x6f\xb3\x6f\x0c\xfe\x2d\x36\xfb\xa2\x74\x4a\xa9\xb8\x5d\x66\xf0\xc9\xa4\xf9\xc2\x43\x9a\x5f\x84\x32\xb1\xe0\xc0\x2d\x68\x92\x4c\xd4\x4a\x6e\xb8\x25\x4d\x90\xdb\x27\x50\xfb\x0b\x2f\xb5\xff\x73\x69\xfd\xed\xd9\xc2\x94\xfe\xf6\xff\xf8\xa1\xb6\x20\x9d\xdf\xab\x63\xcf\x11\xd7\xeb\xcb\x8f\x85\xb3\xc2\x22\x17\xb1\xf3\x07\xd3\xfe\x62\x84\x8c\x70\x1d\x0b\xd3\x32\x96\xf6\xd9\x4d\xac\x25\x78\xe1\x5f\x82\x46\xa2\x7f\x8a\xec\x9f\x4d\xf8\x3e\xd2\x7f\x06\xf1\x2f\x90\x4d\xa9\x49\x0f\xd7\xe1\x67\x2e\x37\x9f\xbf\x47\x1c\xc2\x47\xcf\xdd\x4b\xce\x4c\x55\x69\xe4\xd1\xdb\xe0\x3c\xe2\x7f\x06\xf9\x2f\xb0\x01\x9e\xb1\x05\x3e\x7d\x13\xf8\x26\xb7\x36\xf5\x9f\xd9\x8c\xe2\xd1\x1c\x17\x60\x68\x2a\x74\xaf\xee\x63\x59\x6d\xb5\xb2\xe1\xce\xdf\x1f\x3c\x63\xc3\x9d\xbf\x3f\x78\xee\x86\xc3\xcb\x85\x3d\x87\x26\xab\xc4\x48\xb7\xe5\x82\x73\x92\xa8\x1a\x37\xb5\xbd\x54\xbf\xc2\xad\x76\xc4\x47\xd0\x4a\xed\xf7\x12\x76\xa7\xb1\x63\xaa\xe1\xaf\xaa\xf5\x7c\x00\xc4\x9c\x39\x77\x96\x96\x0f\x53\x19\x09\xbc\x21\x66\xdc\xa3\x5c\x8a\x51\x96\xde\xca\x34\x96\x69\xe9\xc6\x98\x97\x32\xaf\xb5\xe4\x5b\x53\x79\x27\x0e\xa0\xc5\x96\x6f\x08\x35\xdc\xe5\x2a\xb2\x71\xe5\xd2\xfa\xc9\x2f\x06\xb5\x12\x74\x23\x5b\x7b\x8c\xd7\xf8\xbe\xa9\x60\x9c\xa6\x58\x26\x11\xfa\x09\xc5\x93\x98\xf1\x23\xb7\x36\x37\x37\xb6\xe8\x4e\xcf\x57\xb1\x23\xd2\x8c\x22\xd4\xd0\x83\x34\x8a\x30\xbb\x6b\x98\x90\x13\x0c\xee\xd5\x5a\x35\xbc\x65\xaf\x37\xb6\x8a\x49\xe6\x04\x93\x56\x6d\xe2\x26\xe1\xbd\xe8\x20\x61\x7c\xeb\x7f\xb9\x4b\x0d\x7b\x30\xba\x13\x99\x56\x9e\xd5\x96\xa0\xe2\x59\x60\x2f\xe7\x1a\xd4\x0f\xbc\x73\x67\xd2\xaf\x3c\xdd\xf7\x6f\x1b\xeb\xce\x19\xea\xae\xeb\xcd\x40\xff\x1e\x1b\xb6\xd2\x7c\x56\xbe\x00\x4f\xe5\x7b\x7c\xf2\x82\xb0\x5c\x33\xfc\x1f\xc6\x23\xb5\xe3\xba\x45\xd0\x3f\xe5\xe3\x50\x7f\xe3\x9c\x73\x9e\xba\xfe\x33\x8a\xca\x3f\x71\x70\x57\xf9\xa5\x15\xcb\xed\xe7\xa4\xa7\x07\xcf\xd0\x37\xa1\xf0\x13\x7c\x74\xa7\x3a\xe7\xcf\x94\x3b\x98\x89\x3a\x47\x4d\x2d\x73\x83\x46\x4a\x18\x88\x2c\x17\x7d\xda\x98\x2e\x69\x11\xef\x34\x72\x0a\xd3\x65\x0d\x53\xbd\xb7\x8a\x61\xa9\x0a\x8e\x92\x36\xbd\x0e\x69\xc5\xd8\x55\x71\x27\x6d\x3f\xef\x69\x2e\xb5\xe3\x18\xe3\xc0\x78\x72\x96\x19\x72\x16\xdf\x7c\x83\xbd\xf9\xe6\x9b\xda\x96\x74\x56\x56\xbc\x62\x36\xd3\x5b\xb5\xf6\x42\x1a\x4e\x24\x6c\x85\xd5\x5e\xbb\x89\x96\x75\x39\xa0\xb6\x33\x0c\xa3\xef\x8e\xf3\x6c\xf2\xe6\x26\xcc\xdf\x64\x91\x6c\xd5\xb9\xad\x83\x13\x6f\x03\xe2\x7f\xf3\x0d\xad\xc0\x2b\xc1\xc9\xa3\x3e\x41\x5c\xfa\x9d\x3b\xac\xaa\x7e\xf9\x76\x48\xd3\xde\x32\xd8\xfd\x8b\x6d\x92\xe7\x88\x2a\x38\xc3\x26\x9a\xa8\xda\xd4\x82\xfb\x8d\x61\xf1\x16\xde\x72\x5c\x7e\xfe\xae\xeb\xd7\xac\x88\x5f\x62\xd7\xfd\x5f\xd9\x52\xa3\x6c\x32\x59\x64\x4b\x29\x60\xc2\x2f\xb0\xab\x7c\x03\xfb\x8f\xdc\x54\x6a\x8e\x9f\xda\x57\x2a\x82\xf9\xcd\xfb\x37\x0b\x6f\x1d\x28\xfc\xc4\x69\xd5\x60\xe9\xf8\xbf\xad\x66\x63\x17\xe1\x0b\x5f\xed\xed\x09\x9b\x88\x4c\xd6\x88\x3a\xf5\x99\x4b\x09\xcb\xdb\x69\x12\x17\xe8\xed\xf6\xfc\x14\x1b\x73\x7b\xfb\xc5\x34\xd3\x05\x89\xf2\x06\xc6\xb6\x57\xb9\x49\xda\xdf\x17\x2f\xab\x97\x1f\xbe\xbb\x7a\x8a\xc5\xaa\x7f\x7b\xce\x65\x63\xd3\x59\xe1\xc9\x6d\xe1\x5c\xf6\xd1\x1d\xe3\xff\xed\x0b\x80\x39\xd3\xa6\x40\xe0\x2a\x66\x98\x2f\x68\xe7\x83\x09\x5f\x98\xfd\x40\x61\x1f\xfb\x31\x28\x0b\xf5\x9b\x79\x72\x20\x78\x7f\x84\x38\xac\xda\x45\xcd\x99\x0b\x2b\x3b\x46\x25\x25\x58\x2d\xbd\x85\xf2\x02\xab\xd7\x8f\x09\xe6\xe0\xbe\xa9\xbe\xe3\x53\xe6\x4e\x45\x25\xe7\x85\xfb\xb2\x92\xfb\xc2\x19\x96\xf5\x5b\x3b\x01\x6a\x60\xee\x67\xee\x98\xe7\x5f\xcf\x57\xae\xe1\x9f\xb8\x57\xfb\xf9\x5d\x45\xcf\x21\x24\x78\x0a\x6f\x26\x2c\xf5\xdf\x7e\x13\xf6\x43\xc4\x51\x7f\x62\xd7\x2c\xf0\xd5\xc3\xb7\x3e\x92\xc1\x14\x26\x1e\x42\x79\xfd\xf3\xf9\x11\x11\x79\xc5\xd1\xc4\x76\x35\xc1\x35\xf9\x46\x6c\xd7\xb6\x60\xc7\xff\xae\xea\x7c\x52\x15\x60\xbf\x3f\x7a\xf3\xc3\x42\x77\xcc\x55\x76\x34\x97\x1b\xfd\x9b\x30\xa3\xd0\x00\xa7\x58\xee\x38\x7d\xe5\x8e\xd3\x77\x08\xb0\xe2\x0e\xd4\x6f\x76\x07\xea\x57\x58\x52\xc7\x79\xa4\x56\xc4\xf4\x83\x3d\x33\xad\x2e\x6c\xa8\x2e\x0c\xda\xab\xbd\x8a\x25\x13\x88\x6b\xdd\xa4\x56\xf2\xfd\x43\xf8\x31\x17\x1a\xd9\x79\x3d\xd7\xc9\x46\x38\x75\xbf\x2e\xfe\x96\x2e\x07\x95\xea\x9e\x19\xfc\x56\x2c\x53\xd6\x9e\xf6\xb2\xd8\x15\xcb\xcb\xd5\x14\xe2\x0e\xd5\x11\x30\xf5\x13\x82\x04\x0e\xb4\xff\xe4\x40\x29\x62\xd9\x3b\xce\x7a\xb0\x73\xd5\xac\x3e\x7f\x1e\x4c\xa8\x7d\xf1\x05\x27\xe3\xe4\xe8\xf4\xb2\x0e\x20\x25\xd1\x2d\xdc\x02\x8a\x33\xff\xaa\x1c\x4c\x31\xab\x8a\xee\x53\xa1\xd7\x41\x9d\xab\x08\x87\x6a\x07\x55\xfb\xa1\xa2\xdd\xda\x8b\x3a\x4f\x11\x3a\x73\x96\xd9\xd3\x8d\xca\x54\xd3\x5a\x0f\x9e\x5c\x6b\x17\xb2\xfb\x99\x54\x6d\x03\x03\x7e\xc9\xf5\x44\xe4\xf1\x45\x68\x7b\x63\xb7\x51\x2a\x57\xae\x77\x8c\x4d\xfe\x30\x5d\x3c\xef\x5d\xa3\xff\x62\x8d\x00\xbc\x4b\xef\x59\xf4\xea\x72\xd7\x45\x57\xda\xcf\xbb\x95\x2f\x57\xcf\x33\xc2\x5e\x16\x65\x86\x16\x3e\x71\x95\xcd\xd2\x28\x74\x8d\x03\xf3\xce\xb9\xe6\x53\xae\xda\xc1\xff\x8b\x92\xb3\xeb\x2d\x8b\x6a\x1d\x69\x7c\xae\xaf\xc9\xff\xcf\xaf\xf3\xf9\x68\xcb\x39\x21\x38\xfe\xe4\x73\xf9\x77\x3a\xb7\xbe\xba\xc7\xf6\x8a\xcd\xdf\xab\xfa\x0c\xe2\x86\xbe\x9e\x39\x1b\xb5\xb6\x49\xc9\x98\xfe\xcf\x51\x1b\x30\x03\xc2\xb0\x51\x9e\xfc\x0c\xa2\x23\x7e\x61\xb7\xf9\xeb\xcf\x30\x37\xbe\xfb\xd9\xb4\x33\xf7\x0e\xd4\x7f\xab\xf9\x29\xf7\xa2\x62\x1f\x55\x15\xab\x2c\x05\x29\x7a\xcb\x2e\xb6\xc9\x88\x9f\xa8\xdb\x2c\xb4\x8c\x51\xf4\x2e\xdd\x24\x55\x14\xab\xca\x55\x23\x45\xfb\x68\x93\x9a\xa9\x18\x80\xca\xd5\x9e\x2f\x2c\x3f\xd7\xba\x86\x01\x45\x9e\xf2\xd3\x99\xb7\xf8\x53\x77\x47\x73\xa4\xf1\x05\x37\x90\x4c\xa3\x67\x26\xdc\x74\x38\x3b\x1e\x66\xcd\xce\x5a\x2f\xe6\x3a\x6b\xbd\xf8\xb7\xe0\xac\x34\x1f\x69\xd5\x2b\xbf\xaf\xbd\xf2\x37\xc9\x2b\x7f\xb0\x59\x3d\x72\xcc\xd9\xba\xd9\x7c\xb6\x6e\xd6\x4f\xb0\xcd\xe6\xa3\x8b\x3b\xc3\x41\xed\x73\x7a\x53\x55\x28\xbe\x5c\x5f\x18\x0c\x65\x4e\xbc\x42\x35\xd6\xe1\x33\xc6\x4c\xf4\x7a\xff\x15\x8f\xd3\x48\x8e\xc5\xbb\x1f\xfe\x7a\xfc\xee\xf2\xf5\x4f\x7f\xba\xfc\xf3\xdb\xf7\x3f\x1c\xbc\x7f\xfb\xd3\xe9\xa1\x47\xb9\x4e\x39\x11\xf4\xce\x16\xe8\xf4\xf6\x74\xee\x8b\x8d\x39\xce\xd9\x65\x96\x89\x49\x98\x3e\x68\xd8\x52\x0b\xb2\xb5\x78\x98\x5c\x65\xc9\xef\x38\x1c\x7b\xbd\xff\x92\x69\x14\x8f\x9f\xb1\x7d\x29\x2c\x97\xa0\xbf\x3c\xa1\x0e\xca\xf4\x34\xc7\xde\xc8\x59\x6b\x16\x3e\x2c\xb8\xfc\x6e\x75\x37\x5b\x1f\x7b\x65\xd3\xc4\x5c\x53\xfb\x86\xc3\x57\xe7\x5a\x07\xfe\x2d\xac\xec\x9a\x51\x17\x1f\x30\x92\xf7\x83\x99\x95\xb5\xb5\x8b\x0b\x77\x7f\x6c\xb7\x87\xbd\x9e\x67\x1a\x2a\x9b\x63\x63\x9e\x9d\x67\xc3\x67\xe0\xd9\x98\x77\x58\x3d\xce\x5d\xb8\xfe\x4b\x9f\x81\x7c\xde\x80\xd6\xfd\xcc\x53\xe3\x8f\x29\x74\x31\x85\x12\xf6\x8d\x8d\x48\xd6\x15\x03\x95\x0a\x0c\xa4\xb8\x38\x05\x95\x0b\xb3\x2a\xa6\x59\xc9\xe8\xed\x5d\xab\x55\xa6\x2b\x2f\x40\xac\x5b\xa6\x0a\x14\xeb\xda\x3d\x7b\x3d\x71\x46\xe6\x14\xce\x0e\xeb\x20\x31\xd7\xa5\x54\x0f\xe6\x6c\x75\x3b\x19\x94\xa8\x6d\xeb\x02\x3d\x9b\xe2\x23\x05\x54\xe5\x16\x7d\x34\x6d\x38\xe0\x85\x8c\x88\x85\x09\x36\x6b\x88\x58\xfd\x97\x81\xdb\xaf\x1a\x2a\x16\x7c\xb3\xc6\x05\x4c\xf7\xe0\x35\x47\x14\x3b\x8c\x31\x97\xe5\xd3\xda\x80\x13\x85\xfe\x59\x82\x52\x9e\xe6\x71\xce\x37\x3f\x8d\xc9\xa9\x8c\x5a\xcf\x10\x89\xa9\xc2\x42\x6c\x8e\x3c\xa0\xac\x43\xc4\x9d\xc7\x4a\x84\xb5\xfa\xc7\x28\x10\xce\x5a\x7e\x70\x33\xb5\x3b\x4b\x47\x49\xdb\x2f\x86\x7c\xa8\xba\xef\x3c\xb9\xfa\x2f\x79\xbd\xf1\x3b\x14\x3a\x30\xac\x17\xca\x10\x67\x56\x97\xf1\x07\x22\x08\x8d\x2e\xa1\xda\x33\xba\x5a\x8d\x45\xb7\xf4\xc7\xdb\xe2\xd5\x1e\x67\x08\xff\x87\xca\x8b\xee\x72\x68\x62\x75\xef\x7e\x3a\x39\x79\xfd\xf3\xf9\x91\xc7\xa2\xfd\x2f\xc2\xf5\x7d\x32\x7f\x55\x51\xd1\x53\xe4\xbb\x21\xae\xf0\x74\x4c\xcf\xcf\x8b\x5a\x1b\xb1\xe1\xee\x7a\x26\x3d\x5d\xec\x34\xbe\xf6\xd9\xdd\x2c\x3e\xee\x70\x70\x5e\x4f\x04\xec\x68\x18\x5b\x25\x8b\x7e\x6d\xb8\xb0\x2e\xf5\x01\xd7\x8e\x7a\x3d\x64\x90\x91\x6b\x4e\x88\xa9\xb0\x86\x03\x25\xaa\x05\x5c\xd9\x20\xf5\xf9\xb5\x3e\x9b\x52\x44\x03\xb5\x88\xe7\x51\x8c\x68\xa6\x9a\xba\x83\x6b\x5d\x66\x10\xcf\x24\x8f\x05\x08\xe4\x49\x12\x69\x32\xce\xba\x17\x96\xbe\xcb\x4a\xfa\xe7\x35\x42\x9a\xa4\x6f\x04\xcd\xb2\x52\x9f\xa6\xf9\x4e\x02\xc2\x67\x03\xf5\x4d\xa2\xed\x23\x5d\xa1\x69\x60\x92\x17\xd5\xfa\x6c\x60\xd8\xd0\x11\xed\x7c\x7b\xa2\xe4\xaf\x3a\x3d\xfe\x73\xad\xe2\xee\xf8\xb4\x2b\x8d\xbb\xc5\xb6\x9f\xb5\xc5\x36\x9e\xdc\x62\x1b\x7f\x6c\xb1\xff\x17\x5b\x4c\x65\xb9\x59\x88\x44\x9b\x54\x04\xcf\x80\x3c\x6a\x82\x68\x56\x15\x44\x93\xba\xd0\xd4\x71\x0f\x89\x3e\x83\x1a\xb7\x9f\xa4\xc6\xed\x3f\xa8\xf1\x5f\x8f\x1a\xfb\x7d\x87\x1c\xb7\xc7\x9a\x1c\xeb\x0b\x5a\x19\xd1\xf6\x53\x23\xa9\x2d\xb8\x1a\x41\xed\xc5\xd3\xe4\x58\x39\xb6\x2a\xd1\x08\x4f\xc9\xe7\xe2\x93\x0f\xb4\xa7\x8e\x33\xcf\x61\xe6\x76\x9c\x89\x1c\xba\xdb\xe9\x34\xf9\xa5\x7a\xa5\x36\x07\x0e\xa3\xda\xb0\xed\xa0\x69\x6b\x3c\x37\x61\x1a\x25\x9c\x95\x9f\x3a\x87\x90\x7c\xd4\x0b\x2f\x50\x8d\xc6\xde\x7a\x7d\x70\xe8\x48\xf1\x76\xb3\xe4\xa0\xc3\xd9\xbd\x3b\xd9\xb8\xa3\x92\xcc\x45\xb0\x81\x65\x59\x4a\xc2\x21\x14\x59\xaa\xf0\xbf\xab\xdf\xc1\x31\x0e\x36\xb7\x2e\xfc\xd0\x25\x0d\x8a\x68\xa7\x23\x26\x31\x05\x28\xd9\x5f\xfe\x74\xa5\xd4\x1e\x15\x21\x9d\xdb\x59\xa3\x3a\x1d\x91\x66\xa0\x97\x46\x19\xda\x27\x18\x40\x1e\xc1\x7e\x59\xbd\x66\x7b\x20\xfc\x6d\xaf\x0e\xe6\x8c\x2c\x48\x75\x6a\xbd\x44\xd8\xc2\xad\x36\xe2\x3f\x67\xb3\x52\xe4\x32\x24\xac\x3f\x84\xac\x47\x6b\x08\xae\x4b\x9c\x8e\xcb\x5c\xca\xa2\x7b\x63\xb7\x85\x19\x82\x10\xfd\x19\x2b\x70\x32\x56\xe5\x78\x5d\x04\xb0\x9c\xa3\x1b\xc6\xe6\x25\x60\xde\xac\x90\xaa\x0b\xab\x35\xc7\x16\x1b\xdd\xfa\xb3\xd8\x2d\x08\x75\xbc\x62\xb6\x30\x5b\xf1\x99\xe6\x8b\x2f\x65\x4a\xb2\xec\x42\x97\x94\x40\x81\x4d\x23\xd8\x38\x3d\x5a\xc8\x88\x52\x6b\xd2\x6f\x7a\x7a\xbe\xad\xc5\x45\xae\xff\x9d\xe6\x96\xca\x48\x2c\x88\xf2\xad\xba\xf1\x4c\x81\x9b\x77\x81\x31\xb5\x2c\x3b\x5b\xfb\x13\x4d\x68\x4d\x79\x97\x86\xf3\x09\x4e\xf7\xf2\x09\x8a\xf3\x60\xc7\xd7\xe9\x2d\xb5\xe1\x77\x55\x87\xfe\x9d\xa8\xcf\x5a\xb3\x79\xe4\xe7\xcd\xa7\xf5\x29\xf4\x67\x20\xc6\xbf\x90\xa1\x6f\xc5\x63\xe8\x23\x0b\xdf\x4a\xe3\x4d\x24\xba\x41\x39\x63\xf9\xcc\xb7\xea\xf0\x81\x86\x4b\xf5\xe7\xc4\xfb\xd7\xa2\xfd\x91\x86\xf6\xf7\xc4\x16\xc5\xb1\x8c\x4b\xf8\x31\xd8\xdc\xf9\x8f\xf4\x05\x56\xdb\x77\x1c\x16\x25\xa3\x2c\x43\x97\x3d\xd7\x20\x0e\x6c\xa7\xfa\xd7\x00\xdf\xa9\xfe\x35\xc1\x78\xaa\x7f\x8d\x70\x9e\xea\x5f\x03\xac\xa7\xe9\xbd\x0f\xde\x53\xfd\x6b\x82\xf9\xd4\xef\x7d\x70\x9f\xea\x9f\x17\xf6\xd3\x9d\x45\xbb\x23\x8d\x18\xa9\x8e\x68\xc8\xad\xd9\x69\xea\xd4\xbf\xc7\x45\x76\xae\x53\xdf\xd2\x15\xbc\x86\xed\x4f\x35\x6b\xc3\x8e\x7a\xca\xb0\xbd\x80\x59\x7b\x71\xa3\xf6\x42\x26\x6d\x6d\x86\x21\x3d\x74\xae\x39\xfb\x49\x63\xf6\xff\x53\xcf\x86\x79\x37\x81\x7a\x94\xd9\x14\x33\xba\xe9\xbf\x61\x4a\xd6\xdb\x3e\x99\x5c\x43\x3f\x8b\x06\x9d\x93\x01\xa1\xd5\xeb\x6c\x5a\x7b\x69\xe6\xbe\x6a\x7e\x7e\xce\x8d\x89\x6e\x6a\xad\xa6\xa3\x0b\x04\xb9\x74\x69\xaf\x65\x3a\xbe\xa6\xfa\xd8\x26\x1a\x54\xee\x0a\xf0\xb4\x6b\x95\xe8\x66\xd3\xf6\x6a\x4f\xec\xef\x9b\x41\xb7\x2f\x3c\xd7\x23\xff\xaf\xee\x5b\xec\x11\xfd\x07\xde\xbd\x54\x0c\x0f\x7a\xf5\xe6\x5d\x9b\xeb\x29\xf3\x5d\x9f\x7b\x5f\x36\x05\x48\x20\x57\x5c\xf3\x56\x6a\x74\xb1\x6d\xb4\xf6\xcc\xb5\xf3\xcc\xb1\xf0\xf8\x5d\x72\x54\xd7\x3c\x15\xaa\xee\x97\xb5\x3d\x68\x73\x04\x6f\xc8\x12\xc9\x72\x96\x30\x87\x83\x02\x8a\xdd\xdf\x43\x3c\x4c\x84\x36\x56\xcf\x5e\xa1\xf5\xc8\x01\x82\x30\xce\x99\xd5\xfb\x5e\xa1\x53\xce\xaf\x7c\x3d\x5a\xf9\x5b\xba\x2c\x76\x9f\x59\x6f\xfd\xfe\xeb\xf5\xc1\xfd\xdf\xd2\x65\xd3\xad\xb6\x27\x82\x4f\x89\x75\xc7\xe7\x0b\x09\xb0\x0e\x97\xac\x39\x04\x7b\xa6\xa4\xde\x41\xce\x84\x84\x56\x8a\xca\x3d\xf6\xdc\x63\x7a\x8e\x33\xde\xc2\x1d\xde\x7a\xf1\x5c\x95\x13\x05\xf2\xcf\xe5\xeb\xab\x00\x62\x4c\x87\xfa\x9b\xcd\x32\xfe\xd1\x5f\x16\x8f\xb9\xa3\xe2\xbe\x10\x2a\x0f\x04\x4e\xc5\x48\x6d\x97\x73\x24\x40\x7d\xce\xe0\x3b\xfb\xd5\x13\x86\xe9\x7f\x09\x9e\xf9\x0c\xc8\xad\x35\xed\x7d\xed\x48\x67\x3c\x75\x70\x2e\x3a\x72\x19\x3d\xaf\xc2\x8b\x3b\xec\xcd\x6d\xa0\x91\x07\x37\x4c\xaf\x62\x73\x0d\xaf\x9f\xe2\xc3\xde\x6a\x75\x25\x74\xee\x2e\x75\xbc\xc9\x1b\x7d\xc7\xd9\x6a\x10\x16\x8d\xce\xd2\x0e\x51\x1f\x1e\x9f\x3d\x27\x8c\xf4\xcc\x22\xe8\xa7\xe5\x6c\xa5\xf3\x7b\x05\x6d\x65\x37\xf0\x3a\x90\xe8\x97\xff\x02\x82\xf6\xe2\x9e\x23\xff\xde\xa2\xf6\xbf\x85\x7c\xad\x49\xea\x0f\x01\xfb\x0f\x01\xfb\x0f\x01\xfb\x99\x02\xf6\xf3\x45\x2f\xed\x46\xfe\x39\x85\xae\x6c\x3c\x2e\xd0\x5e\x5e\xe7\x02\xae\x54\xa6\x3a\xdb\x9e\x27\x97\xc1\xa9\xf4\x1c\xc1\x8c\xcb\xff\x21\x99\x3d\x53\x32\xe3\x55\xfb\xcf\x90\xcc\x30\x74\x23\x92\x63\x71\x7c\x8a\x38\xfd\x97\x67\xe7\xef\x8f\xdf\x9c\x7b\x68\x86\xa7\x45\x5d\xeb\x47\x93\xf0\xfe\x19\xdb\xaa\xcc\x32\x31\x0e\x73\x01\xdd\xf9\x02\x21\x1a\x73\x05\x4a\xdd\x09\x47\xa4\xa4\xf1\x34\xde\x74\xfc\x78\x70\xfe\xe6\xfb\x85\xf7\x1a\x96\x76\x77\x1a\x99\xb9\x17\xa0\x75\xf6\xf6\xc0\x4b\x83\x4e\xe5\xd2\xc0\x33\xfd\x1c\xff\x27\xac\x9e\x51\x52\xb6\x3c\x9b\x38\xc9\x45\x2b\xed\x3b\xcd\x74\xbc\x88\x53\x8e\xdf\xc6\x1d\xc7\x12\xd6\x36\x31\xbd\x2e\xc2\xb4\xf6\xf6\x53\x69\xe0\x29\x3a\xf0\xd0\x82\xa2\x07\xd1\xfa\xaa\x4d\xa9\x95\xc9\xeb\x21\x2e\xe0\x7b\xe1\x55\x22\x23\x11\xa7\x94\x8b\x24\x92\xe3\x70\x96\x94\x45\x00\xe5\xa3\x2c\x5d\x29\x85\x4c\x29\x8d\x61\x89\xc2\xd8\x55\x8c\xf9\x8b\x47\xd9\x64\x1a\x96\xf1\x55\x9c\xc4\xe5\x43\x7d\x67\x1c\x9c\x9c\xbc\xfd\xf3\xe5\xf1\xe9\xff\x1c\x9c\x1c\x1f\x5e\x02\x77\x3d\x38\x7d\x73\x74\x79\xfe\xf6\xed\x77\x07\xef\x2f\x0f\xde\xbf\x7f\xbf\x64\xac\x23\x42\x20\x61\xd6\xc9\xb2\x3b\x52\xf3\xc0\x16\x08\xbb\x8e\x4a\x45\x6a\xad\x80\x5b\xa0\xb6\x4a\x06\xa1\xd2\x17\x38\x4a\x53\xe4\xab\xdd\x10\xfc\x69\x97\x76\xa3\x24\xed\x37\x8e\x06\xeb\x2d\x81\x40\x76\xf6\x03\x75\x2d\xf4\x61\x3a\x2b\xc9\x85\x66\xdd\xad\xa1\xc1\xdb\x3a\x1d\x46\x1e\xad\xf6\xdc\xb5\x9a\xa9\x8d\x55\xbb\x22\xac\x8c\x82\xe9\xa6\xc6\x39\xea\x1e\xe4\x2e\xf5\x23\x9c\x5b\x85\xbe\x2b\xcb\x53\xbd\xc0\x13\xb4\x07\xab\x59\x72\xe7\x41\x8d\x7a\x3c\xf9\xdc\x36\xf0\x2e\x6c\x7e\x1b\xcf\xa7\x09\xf7\x63\x9c\x1e\xd3\x7c\x13\x79\x88\x4f\xaa\xa1\xde\x8a\xb9\xff\x1c\x76\x64\x27\x07\xf5\x7f\xb2\x7e\x3d\xc8\xe3\x9f\x22\x37\xb4\x99\xd6\xb0\x89\xa7\x55\x15\x7f\x57\xdd\x5b\x2c\xda\xd9\x1f\x12\xec\x27\x74\xf5\xb6\x82\xd6\x58\x25\x70\x6b\xa0\x1f\xe0\x6f\x07\xb4\xb1\x4e\xee\x76\x9f\x17\x27\x75\x55\xab\x1e\x14\x7c\x72\x7c\xfe\x89\x07\x52\x75\x20\xfe\x59\x86\xe6\x6c\xf1\xac\xf9\xae\xbe\xde\x37\x04\x34\x6a\x4a\x63\x38\x3f\x64\x71\x30\x2f\x66\x71\xf0\x45\x84\x4e\x46\xec\x5e\xf9\x6d\x45\xc4\x69\x51\xca\x10\xad\xc8\x2b\x6b\x2b\xa2\xcc\xc4\x24\xfc\x28\x45\x31\xcb\xa5\x28\x6f\xc2\x52\xe4\xb2\x98\x25\x98\x6a\xbe\x88\xaf\x53\x19\xd5\xa5\xd7\xdf\xbe\x94\xf4\x4a\x02\x44\x83\xdb\x41\x99\x95\x21\xf9\x25\xac\x91\xa8\x51\x97\xc1\xb0\x88\xef\x35\x4c\x22\xfa\x07\xf8\x10\x0a\xbd\x60\x61\x35\x53\x45\x6f\xf5\xa7\x77\x87\x07\xe7\x47\x2e\x7e\x26\xed\x71\x68\x5a\x39\x20\x78\x30\xb4\x1d\x44\xc0\x6f\x7d\x30\x9c\x0a\x3b\x80\x1a\x32\x8d\xb6\xc5\xae\x50\x90\x65\x8b\x55\x70\xc1\x77\x1f\xab\x93\x5b\x9f\xdb\x5e\x4f\x9c\xbe\xde\xa5\x4e\xa9\x60\xfe\x50\xad\xbd\xd8\x18\x74\xae\xe2\x52\xc4\x69\x19\x28\xe4\x3c\xc6\x61\xd3\x45\xca\x2c\xab\xcc\x74\x65\xbc\x48\x33\xbb\x2e\xf0\x1e\x81\x8a\x58\x43\x9a\x87\x1d\x69\x32\x03\x46\x61\x19\x7a\xf2\x02\xfe\xcb\x81\x47\x3e\x15\x95\x48\x44\x86\x28\x98\xb2\x10\x65\x1e\xc6\x89\xcc\x2b\xf7\x39\x0d\x60\xa6\x27\x47\xa7\x7f\x3a\x5f\x5c\xac\xa7\xe2\x8d\xf9\x56\x31\xef\xae\x5e\xac\x7f\x39\xbe\xf5\xcf\x87\x34\x25\x16\xa2\x8c\x79\x4f\xc2\x9a\x1a\xd2\x54\x37\x5e\xff\xfe\xc4\xc9\x23\xf9\x24\xea\x3c\x7c\x7b\xba\x38\x60\x22\x14\x36\x94\xa9\xb2\x0e\xab\x14\xcf\xa7\x87\x95\xf3\xb7\x8e\xf9\x85\xad\xbc\xb6\xd3\x09\xab\x46\x0e\x0f\xce\x0f\x4c\x96\xe8\xa7\x1b\xf9\xf1\xe8\x47\xa7\x11\x02\x9a\xfc\xf1\xe8\x47\xb7\x11\x42\xa1\xfa\xf9\xd4\x42\x08\x6e\x1e\x23\x2b\x6d\x9e\x76\xab\x59\xac\x69\x3a\x1f\x29\xd7\xb4\xe9\xa1\x78\xd5\x21\xdb\x72\x5c\x88\x5c\x86\x89\x98\x26\xe1\x48\xa2\xbe\xb7\x8c\x69\x98\x75\xc9\xe5\x80\x53\x32\xcb\x48\xdc\xc6\xa1\x58\xae\x8c\x75\x19\x9b\x5e\xa5\x9e\xbc\xa7\x6e\xa0\x94\xca\xcb\xde\x6a\x07\x62\x36\x8d\xc2\x52\x39\x85\xd3\x36\x18\x65\xb3\xb4\x2c\xd0\xdb\x1c\x5d\xcb\x91\x6b\xa1\x1f\x38\xbb\xa2\x1e\x8f\xe1\x45\x2e\xc5\x5d\x58\xa0\x37\x6b\x9e\x5d\xe7\xb2\x28\x44\x34\xcb\x55\x53\xfa\x13\x62\x14\x26\x49\xa0\x66\x21\xe4\x84\xe8\xd4\x10\x46\x14\x74\x85\x78\x13\x26\x09\xf5\x44\x92\x10\xdf\x6a\x63\xce\xf6\x5c\x86\xa5\x84\x8e\xf4\xb2\x9c\xdf\x63\xe3\x2a\x67\x28\xd2\x20\x35\x75\x8a\x1e\xf6\xa1\x82\x04\xa7\x58\x05\x77\xb0\x30\xa1\x69\x96\x76\x72\x39\xca\x6e\x65\x0e\x8a\x34\x56\x5e\xed\x99\x74\xdf\x55\x17\xca\x06\xd7\xc9\x46\x97\xc9\x06\x57\xc9\x26\x17\x49\xaf\x6b\xa4\xd7\x25\x52\x3b\xf1\x59\xac\x1c\xf5\xb4\xdf\x7e\x23\x21\x87\x8f\x56\xa7\x5f\x9a\xcf\xe3\x3e\x7d\x05\x9b\xc6\x87\x83\x4e\xff\x5a\x4e\x51\x94\x74\x0d\x70\x29\xe5\xc4\xfc\xee\xf8\xf4\xf8\xec\xfb\xb6\xe6\x8d\xd0\x17\x67\xd9\xc8\x27\xd3\xf2\x9f\x0c\xdc\x19\x0c\x94\xb5\xc8\xed\xa8\xc5\x6c\x5d\x5b\xd6\xd1\x8f\x6a\x0f\x36\xed\x4e\xda\x42\x94\xda\xbc\xe3\x71\x9f\x54\xc2\x65\xdd\x6b\xd3\x12\x2f\xe3\x14\xc5\x47\xaa\xd1\x2c\x76\x36\x88\x9b\xf5\xc3\xd5\x16\x3a\xe7\x20\xd3\xfa\x85\x4b\x97\xe4\x1a\xc4\xcc\xe7\x0a\x97\xbe\x46\x17\x14\x33\xbd\x55\xf1\x4c\x78\x54\xb3\x05\x02\xda\x65\xf9\x30\x95\x8e\x0f\xaa\x58\xb3\x31\x69\xc5\xb7\x62\xeb\x85\xd8\x05\xa1\xa0\xe1\x46\xd0\xe3\x92\x2a\xbe\x15\xfd\xc1\xce\x73\x6a\x9d\x1c\x9d\x5e\x1a\x6c\x1e\xfd\x18\x41\xcf\xc4\xb7\x62\xb0\xb9\x85\xad\xa9\x75\x6b\xb5\x70\x43\x82\xb0\xa2\x16\x4e\x89\x2e\x15\xd0\x5e\xa6\x7d\x28\x85\xc7\xcd\x1e\xe5\xca\x57\xcb\xac\x8e\xa0\xd7\x3f\x7d\x67\xc8\xf3\x71\x49\x13\x6e\x2e\xcb\xe1\xd2\xe3\xd2\xd2\x78\x96\x8e\xca\x38\x4b\x15\x5b\x3a\x4a\x23\xdc\x35\xd0\xce\x92\xce\xc6\x94\x4f\xe0\xf3\xf8\x47\x17\x47\x22\x7a\xab\x38\xa8\x7c\xd2\xd9\xff\x75\x9c\x4b\x18\x95\x68\xc1\x1f\x97\xd0\x62\x7b\xdd\x00\xb9\x36\x9e\x37\x78\xd2\xdc\x86\x39\xcd\x8d\xf2\x35\xc6\x1f\x15\x32\xc6\xcd\x6c\x08\xd8\x3c\xb3\xb0\xf7\xf5\xe2\xab\xd6\xd4\x0b\xfd\xfd\xb7\x3f\x78\x47\xfc\x27\x59\x7e\x8f\xb0\xf0\xcc\x2d\x0c\xbc\xba\xee\xdb\x90\x0e\x2e\x3e\x7a\xe8\x03\x48\xfa\x4d\xd3\x03\x82\xa6\x7f\xdc\xdc\xcf\xa6\x01\xd7\x32\xeb\x6b\xb9\xb5\xb1\x39\xea\x5a\x01\x27\x35\xc3\xdb\x17\x65\x3e\x1b\x95\xa0\x4a\x63\x27\x99\xa9\x83\xba\xbd\x87\x45\xe0\x63\xde\x14\xed\x4f\x4d\xd5\x99\x2c\x0f\x63\x7c\x12\xe6\x0f\x3c\x5d\x91\x7e\x60\x26\x0d\x9e\x9d\x28\xaf\x3c\x53\x40\x9b\x3e\xdc\xb9\x35\x75\xe2\x48\xfd\x42\xf2\x7c\x72\xd2\x7b\xab\x02\xc9\xfe\xf4\xa7\x93\x13\xb1\xda\xab\xd3\xa8\xf3\xfa\x13\x16\xa5\xce\x4d\xbf\x52\x5b\xd3\xda\xd0\xf0\xec\xf0\xf8\xcd\xf9\x62\x14\xef\x44\x1a\x6a\x95\x52\x4f\x92\x88\x23\x99\x96\xf1\x38\x56\x49\xf7\x3d\xde\xf1\xf6\xc7\x68\xde\xc4\x9e\xe8\x0f\xa1\x69\x0d\x2d\x1e\xe0\x06\x20\x5c\xf1\x25\x16\x11\x75\x59\x55\x8a\x1e\xd8\x8b\x18\x58\x8b\x67\xe0\xee\x9e\x59\xd1\xe4\xf4\x83\xce\x73\xe5\x46\x55\x5b\x4f\x57\x55\x5c\x56\x67\xa9\x32\x85\x5a\x93\x54\x66\x4a\xe8\x9a\x61\xdc\xa4\x2b\xac\xa9\xe0\xc1\xbb\x38\x49\x44\x38\x91\x24\x39\x42\x9b\xf2\x3e\x2e\x50\xbc\xb4\x27\x7c\x2c\xc2\xe9\x34\xcf\xa6\x79\xac\x69\x8c\xd8\xa7\x47\x96\x68\x1a\xb0\x3d\x6b\x4b\xb5\xe8\x24\xbf\x14\xe1\x97\x21\x1e\x97\x6c\x34\x20\x42\xdb\x27\x00\xbc\x5e\x4f\xcc\xd3\x98\xac\x21\x15\xb2\xd4\x9a\x52\x75\x53\xcb\xfb\x69\x96\x97\x45\x97\x6b\xbe\x97\x85\x1d\x8a\x86\x3f\x87\xde\x42\x83\x4a\xa9\x81\xbf\xd8\x0f\x52\x4e\x2b\x25\xe1\x51\xad\xf0\x71\x1a\x5b\xdf\x85\x5f\xde\x22\x03\xb7\x4c\xfd\xa3\xe6\x7d\xed\xd5\x51\x1a\x99\xb7\x47\x69\x54\x2b\xa0\x79\xbf\x29\xa6\x1f\xd5\x0a\x3b\xdc\xcf\x54\x70\x1e\x7b\x86\x30\xce\x40\x45\x9f\x86\x1f\x33\x55\x03\x0e\xca\x6c\x22\x4e\xb3\x48\x8e\x42\xd0\x56\x7e\x91\xa3\xb2\xbd\x32\x5c\x5a\xea\xad\x82\xe2\x20\xe2\xc9\x34\x91\x14\x84\x57\x6d\xef\x0d\x99\xdd\xad\x5f\xbe\x41\xf9\xfa\xf9\xa7\xb9\xfd\xfc\x31\xcc\x3f\x9a\xb2\xf0\xab\x56\xe4\x5d\x4e\x99\xaa\xed\x9f\xf5\x49\x7a\x48\x47\xd6\xdc\x3c\xa4\x23\x6f\x91\x77\x59\x9c\x96\x6e\x39\x7c\x54\x2b\xfc\x53\x1a\xc9\x7c\x12\xa7\xd6\x87\xf5\xa3\xe1\x12\xa8\x4a\x8f\xc1\x3f\x96\xbb\xdd\x1e\xe2\xa0\xf6\x46\xd9\x64\x92\xa5\xcb\xbb\x83\x9d\x60\xb9\xdb\x63\x6e\xb5\xbc\x3b\x78\x09\x3f\x51\x2a\x5d\xde\xdd\xe8\xc3\x8f\x38\x1d\x8f\xc3\xa2\x5c\xde\xdd\xd8\xe0\x9f\x18\xa4\xbc\xbc\xbb\xb1\xf9\x78\x11\x6c\x6c\xee\x7e\x50\xa7\x5f\x2b\x97\x7f\x9f\xc5\xb9\x0c\x26\x59\x34\x4b\x64\xc0\x3d\x6c\xff\x63\x69\x65\x56\x48\x38\x2f\xe2\x51\x89\xab\xd7\x13\xad\x37\x6d\xd1\x7f\xf9\x72\xb3\x33\x58\xef\x6f\x88\xff\x96\x61\xda\x49\xb2\xd9\x54\xfc\x29\x8c\x93\xe4\x01\x75\x58\x9c\xe9\x03\xe8\x99\xaa\x30\x58\xef\xbf\x80\x0a\xdb\xe2\x7f\xe2\x32\x4c\x1e\xc4\xbb\xd9\xaf\x79\x9c\x62\xe9\x83\x34\xca\xe5\x83\x38\x9f\x4d\xe3\xb2\x88\xd3\x25\x44\x89\xa4\x8b\xda\x22\x1b\x97\x77\x21\x29\xe6\xd3\x3c\xbb\x8d\x23\x19\x89\x95\xb0\xe8\xc4\xc5\x4a\xa0\xa3\xb2\xc3\xf4\x41\xc8\xfb\x29\xea\xc3\x59\x8e\xa4\x15\xcb\x08\x1a\xb9\x0b\xf3\x3c\x4c\xcb\x87\xae\x38\x4e\x41\x6d\x96\xb7\x32\x2d\x89\x67\x82\x52\x1b\xce\xca\x9b\x2c\x2f\xc4\x15\xc8\x15\x49\x24\x92\x18\xaf\x7a\x31\x4b\x64\xfa\x20\xa2\x70\x12\x5e\xcb\x02\x1a\x0a\xf3\x18\x99\x30\x52\x35\x54\x85\x69\xc9\x40\x29\xb7\x7a\xd9\xe5\xae\xbf\x83\xb5\x2b\x0a\x94\x2a\x0a\x71\x0d\x3d\xa0\x3c\x95\x61\xfa\x00\xe2\x08\x87\xe1\x3a\x75\xf5\x47\xa7\xb3\x7c\x9a\x15\x12\x2f\xa0\xe3\x74\x94\xcc\x30\xe0\x1c\x23\x56\xf3\x51\x1c\x26\xc0\xc8\x93\x78\x14\xc2\xb2\x15\x01\x99\x0c\x32\x11\x26\xa5\xcc\x45\x5c\xe2\xef\x5c\x46\x31\x2c\xd9\xd5\xac\x94\x22\x2e\xa1\x25\x10\x5b\x93\x87\x40\x14\xb3\x2b\xd8\x89\x50\x05\x46\x31\xce\x92\x24\xbb\x83\x0f\xe4\x92\x16\x19\x5a\xdd\xe5\x71\xf4\xbb\xe2\xfc\x46\x8a\x2c\x8f\xaf\xe3\xb4\x36\x5a\x31\x99\x15\x25\x06\xcd\x5e\x49\x31\x89\x8b\x5c\xc2\x0a\xe0\x8e\x1e\x8a\x87\x6c\xa6\xdf\xd3\x1d\xeb\x28\x09\xe3\x09\x5d\x7c\xc0\xcb\xbb\x3c\x63\xcb\x02\x35\x1f\x26\x66\x1a\xc5\xf1\x18\xcb\xd4\x26\x89\x5a\x02\xb2\x01\x6a\x88\x66\xa3\x12\x26\x40\x84\xa3\x8f\x69\x76\x97\xc8\xe8\x1a\x93\x55\xc5\x29\xb6\xcb\x25\x44\x94\x8d\x66\xf0\x1c\x67\x4c\xdc\x61\x56\xb3\x2b\x6e\x0a\x0e\x45\x39\x8a\xd1\x9c\x73\x35\x2b\xc9\x5c\x51\x0a\xde\x0d\x11\x2c\xa8\x18\x74\xc5\x01\xcc\xae\x8c\x04\x5f\x45\xde\xca\x1c\x16\xb7\xa0\x11\x5e\x49\x31\x4d\xc2\x38\x4d\x1e\xc4\x24\xcc\x3f\xb2\x55\x7f\x36\xba\xa1\xc5\xb1\x66\x89\xbe\xe9\x4e\x15\x14\xbe\x92\xca\x84\x53\x9f\x0b\xa8\xb3\xd1\xa5\xdd\x90\x66\x65\x3c\x92\x62\x12\x3e\xa8\x69\xcf\xe5\x24\xbb\x95\x11\x50\x7d\xc8\x7d\x44\x0a\x05\x42\xe2\xce\x6a\x52\x88\xb3\xb4\xbb\xb4\x04\x92\x27\xf2\x11\xb1\xa7\x86\xd9\x5a\xa9\xf0\x96\x95\xf6\x90\x0a\xfe\x78\xf0\x97\xd7\xc7\xe7\x67\x70\x38\x6f\x0e\xf1\x09\x61\x18\x5c\x9e\x1c\x9d\xc2\xd3\x9d\xcd\x81\xf3\x18\xa3\xbb\xc5\x9e\xd8\x7c\x39\x18\x2e\xf5\x7a\xe6\x8d\xd8\x13\x2d\xab\xea\x9a\x5d\x5e\x7d\x0c\x41\x14\xc9\xa4\x0a\x3f\xf9\x13\x7d\xfa\xa5\x5a\x1e\x70\xe1\xe4\x2a\x2c\x80\x5f\x7e\x00\xc9\xe9\xc4\xc4\x40\x14\x62\xb0\xb9\xdd\xed\x0e\x76\x36\x05\x96\x40\x49\x67\x03\xf3\xe9\x6f\x06\x62\x2b\x10\xdb\x81\xd8\x09\xc4\xcb\x40\xf4\xd7\x03\xd1\xef\x07\xa2\xbf\x11\x88\xfe\x66\x20\xfa\xdb\x84\xd8\x38\xd8\x08\xc4\x60\x3b\x10\x1b\xfd\x00\xaa\x6e\x06\xe2\xc5\x46\x20\x36\xfb\x81\xd8\x7c\x19\x88\x2d\xa8\xbf\x11\x88\x97\xd0\x02\x56\xdb\x80\x36\xb6\xa0\x91\x97\x9b\x81\x18\x40\xd5\xc1\xe6\x0e\x46\xab\xaf\x2f\x5d\xa8\xee\x52\x98\xea\x9c\xde\x92\x7b\x1f\x76\xb7\xbf\x15\xcc\xff\x6f\xbb\xf2\xdf\x8e\xf3\x1f\xb4\xf0\x32\x70\xfe\x1b\xac\x57\xfe\xeb\xbb\xff\x41\xab\xdb\x83\x40\x6c\xef\xe8\x1e\x47\xf6\x04\x1f\xda\x1e\x8f\x85\x58\xef\x76\x07\x2f\xad\xf9\xed\x63\x8e\x6b\x3d\xcb\xdb\x34\xbf\x1b\xd4\xbb\xc1\x66\x20\x36\xe0\x1d\xcc\xde\x66\x20\x5e\x42\x8f\x07\xd8\xb1\x0d\xe8\xeb\x60\x13\x26\x7b\x67\x13\xe6\x78\x23\x10\xdb\x5b\xb8\x36\x50\xab\xbf\xb9\x01\xf5\xd7\xa1\xe6\xc6\xfa\x36\xb4\xb1\x0e\xb5\xb7\xfa\x2f\x36\xa1\xe6\x0e\xb4\x20\xfa\x83\xc1\xce\x4b\x5c\x02\x68\x63\xf0\x62\x73\x7b\xbb\x32\xf9\x91\x35\xf9\xde\x91\xcc\x9b\xfb\xea\x1c\x57\x67\x54\xcd\xe2\x00\xff\x83\xf1\x6c\x30\x0d\xbd\xe0\xff\x36\xf9\xbf\x2d\xfe\x6f\x1b\xff\x83\x92\x3b\x01\xfd\xf7\x92\xfe\xdb\x7a\x01\xff\x61\xb7\xe9\x18\xee\xf2\x31\x0c\xfa\x6b\x45\x4d\x65\x38\x85\xf2\x61\x2a\x03\x41\x38\x0a\xf0\x7f\x09\x8e\x20\xa0\xd1\x05\x84\x7f\xc0\xff\x9f\x7a\x65\x81\x27\x2c\x29\x65\xb6\x09\xab\xa0\xd7\x63\x47\x73\x7c\x03\x7f\xa3\x02\x46\x50\xc6\x32\x2d\x73\xca\x46\x1d\xcd\xf4\x89\xc4\x96\x5d\xa2\x79\x02\x2c\xaa\x58\x8f\x40\x81\x23\xcf\xd9\x42\x5d\x80\xc4\x29\xf5\x00\x57\x00\xb5\xe6\x87\x49\x43\x55\x42\x60\xc8\xc6\x84\xf6\xc2\x38\xce\xa6\xe2\x04\x4d\xbd\xeb\x81\x98\x84\xf7\x95\x16\x7a\xab\xf0\x36\x9e\xcc\x26\xc4\x96\xc3\x7b\xfc\xdb\x81\x2c\xd5\xed\xe4\x59\x56\x7a\x7a\xd0\x5b\x15\xe9\x6c\x72\x25\x73\xe8\x01\x75\x05\x3b\x0e\x93\x80\x55\x68\x66\x74\x33\xa3\x59\x9e\x3f\xb3\x19\xa8\x02\x87\x58\xa5\xa5\x28\x47\x6f\x79\x4f\x4b\x38\x00\xac\x5e\x66\x54\x0c\x9a\x29\x66\x57\x9d\x4a\x13\x1c\x4b\x5f\x9b\xd5\x5a\x8f\xa6\xb9\x1c\xc7\xf7\xbc\x43\xd0\x7e\xeb\x36\x34\x2b\x64\x34\xa7\x2f\x40\x17\xb1\x44\x58\x1c\xea\x01\x96\xd7\xb5\x6f\x66\xe3\xb1\xbf\xf6\xf7\xb3\xf1\x78\x12\xa6\xd4\x8a\x2e\x1f\xa7\xa3\xbc\x5e\x16\xc6\x08\x6f\x50\x85\x20\x01\x29\x92\x01\x4f\xa6\xae\x3b\x8e\x93\xa4\x5e\x97\x0a\xe1\x9a\x49\x26\x5c\x84\x25\xa2\x6e\x9b\xf9\xca\xee\x3c\x04\x98\x64\x77\xf5\xc5\xc2\xb5\xa7\xfd\x60\x48\x31\x2c\x3e\xd6\xbf\x0d\x4f\xb1\x2a\xb4\x83\xd5\x5c\xca\xc7\xdb\x8b\xda\xd2\x00\x03\x33\x0b\x51\x4c\xc3\x91\x34\xd3\xab\xeb\x32\xc7\x46\xa3\xa0\xaa\x8a\xcf\xf0\x22\x89\x4b\xb3\xec\xe9\x54\xd2\xb8\x26\xec\x67\x87\x5b\xf0\x26\x23\x07\x60\x6e\x88\x78\x24\xd1\x99\xb7\x21\x99\x46\x3e\xca\x52\xe9\x66\xb1\x23\xb0\xf1\x38\x8b\x7b\x96\xf3\xee\x15\xfb\x18\x6b\x69\xf6\x4c\x36\xa3\x84\xa3\xf2\x8e\x13\x3f\xbc\x9e\x8d\xfb\x5b\x2d\x25\x8b\xac\x89\x7e\x7b\x28\x7a\xbd\x0f\xfc\x60\xad\x7f\x31\xac\x91\x30\xe3\x93\x8c\x85\x0c\x47\x37\x8a\xcd\xe8\x4f\x64\xe3\x71\xf1\x09\x5f\x80\x4f\x90\x7b\x99\x45\xdc\x88\xa5\xe5\xfb\x88\x4e\xb3\xcf\x36\x5a\xfd\xcc\x9e\x6d\xb5\x27\x54\x58\x42\xa0\x22\x63\x02\x2b\x0e\x40\xdf\x28\xbe\xa3\x2c\xff\x22\x14\x85\x2c\x35\x13\x54\xcc\xcb\xba\xbd\x13\xa3\x30\xcd\xd2\x78\x14\x26\xce\xa6\xea\x0a\x90\xe7\x97\xaa\x40\xcd\x20\xcb\x23\xaa\xd7\x7a\x97\xb0\x83\x3a\xfd\x8b\xae\x10\x47\xd6\xa8\xd0\x86\x57\x4c\xb3\x34\x2a\x58\x75\x80\x56\x14\xfb\x35\xf5\xe8\x0b\xee\x4e\x06\x15\x48\xa6\x32\x27\x21\xfb\x41\x8c\xe3\xbc\x28\x45\x91\xe5\xea\x0e\xd4\x6e\xea\x4a\xe3\xf5\xa3\x1c\x5b\xdc\x64\x39\x2a\x2b\x49\x96\x5e\x07\xac\xdc\x94\x61\xac\x31\xb5\x98\x86\x10\xf1\x7c\x89\xe3\xa5\x68\xf1\x41\x39\x14\xf2\xef\xb3\x30\x51\x03\xa5\xce\xa5\x0c\xde\x05\xc7\x47\x19\xc2\xe9\x8a\x25\xc3\x24\x11\xbf\xca\x3c\x13\x0a\x10\x0c\x5a\x42\x15\x09\xbb\x8b\xe5\x51\x03\x92\xd4\x29\x59\x28\x4f\x84\xc0\x5c\xdb\x12\xc7\x04\x75\x35\x2d\xe5\x35\xf5\x48\x73\xa9\x42\x37\x59\x84\x13\xe9\x54\x86\x0f\x53\xc5\x70\x3a\x95\x69\x44\x6a\x01\xa3\x95\x5d\x97\x37\xba\x9d\xb0\x90\x30\x8c\xef\xb8\xa1\x48\x92\xb1\x65\x9c\xe5\x93\xb0\x0c\xe0\x59\xc1\x87\x01\x34\xa6\x12\x02\x85\xa3\x8f\x77\x61\x1e\xd1\xb0\x58\x81\x8d\x73\x31\xc9\x72\x29\xd2\xb0\x9c\xe5\x61\xa2\x7a\x6c\xba\x4b\x73\x1a\xab\x69\x2f\x32\x71\xc7\x93\xb7\x84\x57\xee\xa3\x8c\x90\xd0\x08\x62\x09\x3e\x77\x35\x8b\x13\xad\x7d\x25\x61\x7e\x2d\x45\x92\x65\x53\x42\x57\x0a\xf8\x8a\x9a\xbe\x82\x33\x05\xed\xd0\x64\xf1\x27\xed\xbe\x76\xd1\xbb\x0a\xd5\x9e\x3c\x9b\x95\x71\x2a\x45\x58\x14\xb3\x09\x88\x35\xa0\xa9\x45\x99\x2c\x18\xda\x0d\x2f\xd0\x50\xb1\x84\x45\xe4\x45\x32\xa7\xd0\x12\x79\x5a\x14\x1f\x2e\xf8\x6b\xf8\x3e\x47\x40\xb8\xf5\x6e\x97\x37\x39\x53\xee\x28\x4c\x12\x99\x93\xd2\x06\xdf\xcb\x49\x03\xc5\x4b\xeb\xbe\x2e\x0c\x34\x8d\x68\x52\xd3\x5c\x96\x6a\xb1\xc2\xd2\xde\x56\x5d\x41\xe4\x34\x91\x61\xca\x6f\xe1\xff\x18\x5a\x37\x23\xc8\x46\xa3\x59\x4e\xfd\x8a\x0b\xda\xa8\x3c\x78\x9b\xa4\x60\xc3\xd0\x06\x1a\x65\x93\xe9\x0c\x37\x4f\xc8\xdc\x52\x73\xbc\x0a\x37\xc2\x04\x4b\xc8\x14\x2c\xdb\x05\xcc\x13\x33\xaf\x6c\x4c\x7b\x00\xde\xc6\x69\x14\x8f\xea\x4d\xf0\x7c\x61\xbf\xa9\x07\x2c\x54\x32\xd1\xa7\x30\xd3\x32\x77\xf7\x23\xf2\x47\xa4\x1f\x35\xdd\x54\x77\x49\xe5\xc1\xe0\xd9\xb6\x5b\x84\x39\x05\xd9\xf4\xc3\x05\x19\x76\xa8\xa7\x74\xd6\x91\x82\xac\x0d\x40\x57\x0f\xd8\x90\x5e\x2e\x33\x5d\x9a\x5d\x91\x3b\x45\xce\xc2\x07\x8c\x29\x2b\x6f\x64\xae\xac\x2b\x05\x2c\xd9\x9d\x4c\x92\x40\xc4\x5d\xd9\x15\x63\x18\x7d\x7a\xad\x9a\xf5\x09\x8a\x56\xa0\x7d\x11\x88\x48\x96\x68\xa0\xc3\x99\x53\xbe\x19\xb8\x81\xd3\x87\x25\x0d\x90\x45\x24\x19\x10\x8d\xe2\x12\x80\xa2\x2e\x38\x5d\x17\xf1\x70\x66\x4e\x34\xa1\x49\x96\x61\xb9\xf0\x46\x86\x38\x5b\x61\x59\x19\x13\x08\x79\xfc\x6d\x69\x49\x79\x94\x57\x04\x77\x28\xa2\x21\x5a\xac\xb5\xb2\x55\x6d\xff\x8b\x55\x11\x8e\x46\x33\xf2\x67\xd1\xc7\x81\x61\xa1\x2d\xde\x71\x7a\xfb\x24\xc0\x27\xac\x4d\xc3\x10\x91\x18\xa4\xaa\xc5\x7d\xf8\xe3\xd5\x9e\xb2\x1d\xe0\xef\xb5\x35\x75\x4b\x80\xa3\xf8\x90\xc8\x54\x27\xa4\x78\x54\x0d\x68\xa1\x1f\xfe\x78\x45\x5d\xc0\x1f\x9e\xda\xc5\x07\xa3\xed\x88\x35\x28\x74\x71\xb1\xb6\x66\xdf\x3f\x61\x32\x3a\xe7\x9c\x0b\xe0\x33\x23\xc9\x82\x7a\x26\xae\x24\xd2\x59\x9c\x7a\x74\x00\x96\xff\x95\x2e\x84\xfd\x23\x95\x42\x0f\x0b\x7e\x62\x6a\x50\xf8\xcb\x40\x82\x92\x1b\x39\x74\x73\x12\xde\x5f\xd0\x5d\x5a\x25\xee\xf4\x51\x5d\x9e\xc0\x47\xf6\x85\x15\x1c\xc5\x9f\x9d\x84\xf7\x43\xab\x1c\x7e\x58\xb5\xd3\x20\x62\xa5\x99\xde\x7a\x20\x07\xc0\x80\x98\x1f\xaa\xab\xb1\x1e\x6d\xbc\x6c\xfa\xa1\x8a\x5e\x07\x4b\xb1\xf5\x62\xa8\xd4\xbd\x2e\xc5\xe5\xa2\x2c\x76\x13\xe6\x6d\x7c\xc5\x82\xb3\x85\xe8\x89\xb6\xae\xbc\xda\x3c\xcc\x98\xf7\x03\xfd\xa1\xd6\x27\x95\x9f\x8d\xf9\x04\x23\x68\xa8\x46\x6e\xc3\xa4\xd6\x86\x0a\x04\x31\xad\x50\x48\x70\x8b\x85\xd5\xbc\x6c\xb3\x2f\x1e\x56\xfa\x50\xab\x4a\x81\x79\x83\x17\x6d\xf1\x9b\x68\x6d\xbd\x80\x1f\xfd\x2d\xf8\x01\x62\xd8\x82\x53\xb4\xe8\x50\x17\x1e\xcd\x27\x77\x58\x30\x10\xa3\x9a\xcb\xbe\x73\xdd\xb6\x3e\xac\xd3\x05\x1d\x9b\x77\x21\xc7\x31\x19\xae\x90\x81\x1a\x04\x62\x16\x39\x70\xe1\x82\xea\x4d\x49\x0a\x35\x10\x79\x9c\x8a\x57\x48\x99\xf0\xa7\xd9\x92\x16\xbd\xc7\xe9\x02\xf4\xfe\x0a\xaa\x57\xe9\x9d\xbc\x80\xea\x57\xc7\x61\x2a\xb2\x5b\x99\x77\x8a\xd9\x55\x31\xca\xe3\x2b\xb2\x74\xc6\x29\x9c\x80\x89\x2c\x65\x85\x87\x52\xdf\x59\xcf\xed\x0f\x5d\xce\xd4\x7f\x82\x33\x61\xb5\x57\xaf\xf4\x54\x9a\x28\x0f\xc5\xb1\xcc\x75\x2f\x95\xb5\x81\x00\x78\xe2\x15\x16\xcc\xa3\xb5\x35\xab\x23\xd0\x13\xac\x5b\xda\xa7\xeb\xf6\x16\xb9\xf3\xec\xed\xb1\x29\xf4\xb7\xdf\x90\xc9\xc0\x94\xf6\xdb\x95\x8b\xf7\x4e\xdf\xab\x6c\xf1\x36\x75\xe6\x87\xbf\x47\x73\xab\x24\x71\x4b\x91\x29\x15\x89\x34\x68\x34\xa8\xaa\xb1\xb4\x8e\x6d\x41\xd5\x0f\x7d\x4d\xc0\x9e\x39\x6e\x98\x62\xac\x48\x10\xcf\x58\x5d\xfd\xbe\x40\x1c\x68\x7b\x9a\xb5\xcb\x07\xd0\x65\x4d\x37\x08\xe0\x4f\x5b\xf2\x57\x8c\xbc\xa6\x88\x2d\x7a\xb0\xd0\x52\xf8\x8e\x15\x4d\xd1\xbc\xd0\x28\xa2\xa8\x8e\xfb\x8f\x21\x8c\x83\x79\x98\x54\xfd\x4d\x51\x85\x7b\xa3\xfd\x2b\xd1\x38\x01\xc7\x69\xf5\x7c\x16\xe2\x98\x45\x41\x90\x9e\x49\x6e\xa6\x95\x41\x31\x08\x85\xf8\x38\xc1\xa0\x45\x94\x30\xc8\x3a\x90\x46\xe2\x26\x2c\xc8\xe2\x64\x4c\x4a\x5d\x23\x45\xb2\x10\x85\xf2\x50\x5c\xa0\x19\x06\x9a\x42\x51\x8b\xa7\x2c\x91\x29\x56\x50\x92\x2c\x4a\xa3\xe9\xad\xcc\xf5\xf5\x95\x6a\xfa\x01\x2d\x4d\x53\xf4\x32\xc8\xb3\xe9\x92\x72\x88\xce\xc6\x63\x25\x80\x5f\x65\x65\x99\x4d\x58\x59\x61\x95\x0c\xa5\x24\x20\x00\x18\x1c\x68\xb2\xe5\x4d\x98\x92\xd1\x6a\x0d\xbb\x1e\x90\x04\x96\x15\x52\x94\xd9\xd4\x7e\x83\xe1\xae\xa9\xd1\x6d\x6c\xa5\x41\x39\x04\xc3\x71\xc7\xe0\xc9\x65\xa6\xe6\xc9\x9a\x3f\x1c\xab\xb2\xf9\x60\x2a\x45\xd4\x11\x48\x7c\x44\x5e\x14\x93\xd6\xd5\x68\x9d\x43\xcd\x41\x1b\xfa\xba\x42\xfc\x19\x24\x2e\xe8\x98\xbc\x1f\x49\x49\x2a\x16\x14\x08\x8c\x6c\x46\xfd\x25\xd5\x3c\x62\x18\xda\x88\x92\xe6\x9a\xf6\xc8\x78\x44\x9a\x28\xcf\xf2\x12\xee\x18\x52\xa6\x1c\x63\x51\x36\xc6\xd5\xeb\xb2\x7a\x14\x17\xe8\x19\x85\x31\xac\x50\x10\xce\x7f\xcd\x41\x51\x22\x0c\x97\x10\x29\xf3\xce\x96\x17\x6f\xf8\x1e\x8c\x14\x00\x19\x75\x05\xcd\x76\x5c\x90\xde\xa2\x94\x3d\xdb\xae\x19\xe3\xf0\x88\x8e\x88\x04\x49\x6a\x55\x15\xb1\x28\x56\xac\x0c\xde\xae\x42\xb3\x8d\xf3\x16\x56\x3a\x15\x17\x8c\xbf\x1b\x88\x98\xee\xe2\xe4\x48\x16\x05\x3b\xc3\x80\x6c\x4c\x82\xb1\xa5\x93\x54\x2d\x20\x46\x36\xbe\x43\xf5\x21\xfe\x55\xfa\x3e\xd0\xb5\xd5\x85\x25\x25\x59\x56\x34\x06\xd8\x83\x5a\xf9\x25\xfe\x74\x81\x41\xc3\xd2\x90\x5e\x58\x18\x15\x0d\x9d\x6f\x52\xba\x85\x63\xb5\x47\x89\xdc\xf0\x0a\xdb\xfd\x28\xe5\x14\x3d\xfd\x47\x1f\x71\x1d\xb3\x3b\x4a\x52\x68\x4c\xea\xa0\xb4\x62\x38\xc7\x95\x84\x29\x4a\x92\x8c\x88\x55\x29\xee\xd0\x94\xd6\x84\x56\x4b\x63\x11\x04\xc6\x81\xb3\x86\xab\xcf\x63\xc0\x5b\x34\x18\xc2\xe1\xf1\xd9\xb9\x56\xd6\xaf\xc3\x38\x2d\x4a\xad\x44\x29\x40\x72\xe7\x76\x0f\x2a\x39\xd7\x7a\x65\x26\xae\x67\x61\x1e\xa9\xea\x0c\xaa\xae\x54\x6c\x52\xef\xe3\x32\x0e\x13\x9b\x66\x70\x05\xf4\x17\xba\x42\x9c\x49\xf9\x04\x7c\x3a\xf4\x1b\x6d\x13\x71\x4a\x86\x0d\xba\xb9\x24\xcd\xd9\xb6\xa7\xd8\xfb\x5e\x4b\x39\xca\x18\x83\xa6\x07\x22\x86\xb0\x64\xdd\x08\x35\xaa\x24\x31\xe6\x41\x1d\x81\x71\xcf\x8a\xa0\x7e\x1b\x58\x8b\x30\x25\xbb\x1b\x93\x4d\xcc\x9b\x9c\x8c\x12\x53\xf8\x02\x8e\x42\x1f\xba\x5c\xbf\x00\x86\x49\x5a\x27\xf6\x25\x1c\x97\x92\x88\x4a\x64\xa9\xc4\xdd\x50\x90\x61\x87\xf6\x99\x2c\x4a\xb5\xdf\xab\xd6\x15\xe4\x0b\x1e\xe9\xbb\xa2\xcc\xc1\x69\x3f\x9b\x6a\x05\x0e\xd3\x8c\xd3\x39\xd8\xeb\x89\x69\x06\xd3\x0a\x12\xd5\xb4\x8c\x27\xf1\xaf\x74\x5d\xd3\x41\xe3\x6c\x3c\xee\x50\x2a\x1b\x13\xb2\x58\x20\x62\x78\x40\x75\x81\xf7\xdf\x66\x71\x24\x22\x89\xe8\xdf\xa0\xdd\x27\x91\xb8\xdd\x61\x29\xc6\x15\x5c\xd4\x61\xc9\xf6\x68\x65\x08\x85\x93\x53\x69\x12\xd1\x6c\x32\x79\x20\x5e\xdd\xe9\xa4\x59\x69\xdd\x11\x10\xf4\xde\x9e\xe8\x13\xc8\xfd\xa3\x49\xb2\xa3\xbf\x02\xf4\x59\xf9\x08\xde\x07\x0f\xf5\x13\x3e\x92\x3b\x7b\x26\xc9\xab\xea\x46\xa2\x23\xb1\x6d\x6b\xac\x53\x12\xbf\x3f\xd8\xdc\xb2\x3b\xe0\xd5\xbc\x7a\xab\x7c\x31\xcd\x3d\xe7\xce\x44\xa6\x33\xea\xab\x91\xf9\x2a\xb6\x4e\x82\xa2\x12\x73\x78\xdf\xc0\x56\xc1\xf9\xa5\x0b\x82\x6c\x4a\xed\x36\xdc\x98\xa8\x1e\x68\x0b\x8e\xb9\x37\x69\xb8\x3f\xf3\xd7\x60\x41\x8a\x65\xe7\x94\xe5\xf1\x05\x2a\xda\x82\x16\xe3\x30\xdb\x98\xe8\xb5\xda\xee\xd5\x56\x99\x69\x09\x08\x5b\xe0\xbb\x32\x60\x1d\xb5\x8f\xd7\x2a\x5b\xc7\x32\x56\x6e\xb8\x1e\xab\x56\x76\xaf\xc9\x80\xa1\xe2\x40\xe8\x32\x49\xdf\x1c\x25\xe8\x74\xed\x97\xb0\x7b\xab\xa2\xcc\xe3\xeb\x6b\x99\x57\xce\xae\x3b\x25\x08\xec\x13\xf7\xc3\x96\xf8\xa6\x0c\x15\xb9\xca\xc0\xf8\x5a\xc4\xe2\x94\xce\x05\x14\xde\x13\xed\x51\x03\x1d\xe1\x76\xc5\xbe\x46\x42\x1c\x0a\xb4\xbe\x25\x84\xe5\x61\xab\x50\xe6\xca\xc8\x3a\x26\x8c\xc7\xad\xbb\xa1\x40\x03\xc1\xcf\xed\xdb\xc7\x40\x5b\xfc\xf6\x1b\x92\xad\x29\x4c\x14\x5f\x2b\x4d\xbe\x1c\x15\x35\xc5\xa1\xf2\xa9\xba\xbe\xd0\x1c\x98\xec\x6b\x1f\xa5\x6f\x06\x2a\xc8\x67\x30\x28\x92\x9d\xed\xdb\x67\xde\x77\x36\xe6\x18\xac\x41\x07\x57\xd8\xe8\x6b\x28\xb4\xa3\x34\xff\x0a\xf6\x9f\x91\xe6\x0d\x0e\x99\x0e\xe4\xb3\xe0\xc6\x74\x35\x23\xca\x5b\x39\xbf\x4c\xa3\xfb\x4d\x8d\xe2\xee\xff\x60\xf3\x99\x35\xd3\xe8\x85\xe7\x8b\xc0\x38\x3e\x58\x0c\xac\x5e\xdc\xea\x44\xfd\x7b\x1b\x03\xb1\x26\xd8\x5e\xa3\x48\xc5\x06\x32\x35\x21\x73\xd6\x37\xd7\x55\xc3\x6a\x9e\xb5\x84\xcc\x52\x50\x86\x27\x03\x59\x87\x49\x5d\xc8\xee\x8c\x30\x4e\x57\x2c\x65\x46\x6c\x8a\x3f\x00\x87\xb4\x22\xfc\x96\x59\x11\xf6\x98\xc6\x7d\xcf\x6f\x61\x6b\xd2\x53\x32\x35\x78\xae\x6c\x85\xf1\xfe\x67\x48\x9a\x32\x23\x86\x63\x5d\x80\x3a\x10\x0b\xf8\x81\xce\x1e\xdd\x1d\xf3\x33\xb2\xb2\x50\x9a\x77\xd1\xc2\xce\xee\xef\x53\xaf\xc4\x1a\xd6\xb8\xd0\xe8\x5a\x14\x6b\xab\x8d\x2f\x6a\x82\xb5\x05\x46\xcf\xde\x6f\x6a\xf2\x54\x94\x2e\x7e\x99\x54\xc6\xa1\x9e\x50\x7d\xa9\x61\xdd\xae\xf0\xe5\x0e\x06\x7d\x23\x13\x7a\x62\xfa\xfa\x3c\x77\xfc\x1d\x2c\xfd\x0d\x16\x34\x84\x87\xd5\xf6\xf7\xb5\x09\xe3\x51\x6f\x00\x7c\x53\xd1\x64\xa9\x09\x9a\x24\xe4\x31\xf6\xf3\x35\x7b\xf2\x1e\x2b\xf4\xa6\xce\xa3\x0a\xdd\x5c\x67\x7a\x61\xe8\x4c\x09\x54\x00\x21\x0a\xcf\xe8\xa1\xa2\x46\x88\xda\xb7\xd9\xa0\x9d\x8e\x6d\x18\x76\xfb\xc9\xba\x39\x3e\x26\x5b\x69\x15\xc4\x8f\x4e\xad\xba\x3e\x5e\xdf\x3b\x15\x56\x52\x51\x3f\xc6\xac\x1d\xe8\x65\xe0\x2f\x33\x4b\x47\xbc\x75\x9a\x77\xe0\xbf\x14\x59\x9f\x98\xa8\x1d\x3a\xca\xc7\x7c\x63\x58\xc6\x13\x19\x80\xa4\x9f\x16\x31\x8a\x5a\x65\x66\xab\x45\x7a\x27\x62\xf8\x40\xee\x03\x6f\xe6\x43\x0d\x0f\x0e\x7e\xa8\xb3\xc3\x90\x99\x87\x69\x69\x1a\x16\x25\xa2\xee\xb9\x1b\x82\x4f\xe5\xb5\xfa\x81\xde\x5b\xa5\x70\x57\xd8\x72\x71\x61\x36\x22\x1f\x20\x5c\xc4\xe8\x52\x2a\x85\xfa\xd8\xb3\xed\xf4\xc9\x5d\x65\xbc\xc6\x12\xe7\xee\x73\x93\x4b\x0b\xea\xad\xd1\x30\x5f\x89\x0a\x46\x98\x6b\x7e\xb3\x8a\x5e\xb8\xf0\x27\x64\x8a\xab\x1b\x1d\x4d\xd7\x14\x9d\x09\x8f\x91\xcf\x9d\x51\x3b\x3b\x16\x2a\x16\xd6\x81\x29\x94\x06\xb7\xe6\x19\xd0\xb3\x4f\x53\xf1\xfc\x13\x55\x54\x4e\xd5\x6a\xe7\xd1\xb0\xc0\xc7\x62\x9c\xda\x82\x85\x4d\x78\x66\x30\x24\xe5\x58\xf4\xac\x9d\xbe\x56\xb5\x19\x3c\xc9\xee\x80\x29\xda\x43\xb5\x6c\xdf\xfc\xd6\xa6\x4f\x63\xf1\xe6\x97\x8c\x49\x54\x4b\x98\xa3\xbb\x41\x6c\x99\x4b\xb3\x89\x58\x33\x5e\x5c\x76\xcd\x75\x5b\xdc\x98\xd5\x4e\xdb\x70\x60\x4b\xd0\x50\x72\x65\x2e\x27\xca\x55\xc0\x92\x19\xe2\xb1\xb6\x6e\x59\x4a\x5b\x0b\x74\xdb\x30\x2d\x25\xd9\x66\x40\xf9\x5b\xa2\xfb\xb7\x49\x06\x8a\x59\x2a\xad\xe6\xb0\xa1\x40\x14\x71\x3a\x92\x7c\xfd\xe7\x69\x33\x50\xea\xba\xc7\xd7\x8c\x6e\x37\xef\x42\x94\x86\xb2\x3b\xfa\xe8\x35\x1c\x6d\xa0\x1f\x8e\xc3\x5c\xb0\x9a\x78\x15\x97\x6d\x23\xb2\xe1\x72\x39\x7c\xdc\xba\xb4\xe0\xb3\x0d\xca\xe8\x2b\x1d\x67\xcf\x2f\x7a\x7f\x53\x69\xa8\xba\xb1\xed\x8b\x8d\x4a\x51\xe7\x46\xa3\xf2\xae\x65\x0b\x02\xfe\xab\x8d\x75\xc7\xf6\x2b\x4b\x45\xf0\xd3\x30\x0f\x27\xc0\x8d\x0a\xa5\xce\x56\x09\x0a\xb6\x25\xec\x1e\x68\xc0\xbe\x17\x51\xc4\xa9\x2f\x46\x96\x1e\x87\x8d\xf1\x14\x8f\x17\xc1\xc6\xd6\x1f\x41\x11\x7f\x04\x45\xfc\x11\x14\xf1\x9f\x15\x14\x51\x73\xb7\x06\xde\x3a\x60\x54\xd0\x15\x10\x0a\xad\xc8\xc3\x95\x40\xf1\xd3\xbf\x5e\x9e\x1e\x1d\x1d\x5e\x1e\x1e\xbf\x39\x67\x26\x3b\x10\xec\x46\xae\xea\x16\x65\x2e\xc3\x09\x28\x61\x5c\xcd\xd4\x35\xf0\x2b\xf4\xb0\xcf\x75\xd7\x55\x5d\xbb\x46\xa5\xee\xdb\x1f\xdc\x87\xeb\x5c\x77\xa5\xd3\x5f\x81\xea\x2b\xe3\x58\x65\x0f\xad\x7d\xf7\xe8\xfd\xfb\xd3\xb7\xfa\x51\xab\xd3\x6f\xab\xba\x03\xaa\xab\xfa\xec\xd6\x76\xfa\xfc\xfe\xfd\xdb\xf7\x50\x77\xa0\xeb\x6e\x50\x5d\xc4\x8d\xf2\x7f\xd7\x84\xbe\xd2\x77\x37\x74\xdd\x17\x54\x37\x4e\x8b\xd9\x78\x1c\x8f\x62\xa0\x57\x02\x15\x59\x09\xa8\xae\x8e\x1e\xe5\x3e\xbf\xd0\x75\x37\xa9\x2e\x41\x9c\x78\xfb\xac\xe1\x01\xb8\xee\xa6\xae\xbb\xa5\xbe\xab\xd0\x3c\x13\x4d\xc6\x2b\x54\xf7\x7f\x8e\xde\x9f\x1d\xbf\x3d\xe5\xfa\xad\xce\x16\xd6\xe5\x23\x04\x8e\x8b\xed\x3f\x8e\x8b\x3f\x8e\x8b\x3f\x8e\x8b\xff\xac\xe3\xa2\xb7\x2a\x64\x91\xc4\x69\xd9\x61\xfc\x60\x52\x14\x3b\x33\x38\x1e\x3a\xd9\x14\xa5\xd4\xc5\x23\xed\x7a\xab\xe2\xdd\xec\x2a\x89\x47\xd6\x4d\xdc\xde\x27\xff\x5b\xed\x2d\x21\x28\xc4\x67\xfb\x07\x63\xe1\x60\xbe\xbf\x5e\x7e\x77\x7c\x72\x7e\xf4\xfe\xe8\xd0\xf0\x76\xd4\xa5\xd5\xeb\xef\x7f\xfa\xee\xbb\x1f\x0f\x4e\x2f\xdf\x9e\x9e\xfc\xac\x5e\x0f\xcc\xeb\xf7\x27\x47\x95\xd3\x0c\x73\xda\xab\xa6\xff\x62\xb7\xcb\xaf\x5f\x98\xda\x87\x47\xdf\x1d\xfc\x74\x72\x0e\x87\xd0\xc1\xf9\xd1\x9f\x7e\x16\xec\x43\x0f\xf3\x97\x15\x05\xb1\x6f\xba\xfe\x57\xf7\x68\x1a\x24\x67\x1c\x03\x6f\x6a\x01\xaf\x03\xbd\x5e\x5a\x68\x59\xc8\xd2\xe9\x0b\xaf\x8f\x4f\x0f\xde\xff\x5c\xed\xc2\xba\xea\xe1\xf9\xd1\x5f\xce\xab\xc7\xb1\x33\xfc\x83\xb3\x37\xc7\xc7\xb5\xd7\xa2\xd7\x43\x9c\x1a\xa8\xce\x2d\xfd\x74\xfa\xc3\xe9\xdb\x3f\x9f\x56\x8a\x0e\x70\x30\x9f\x71\xe9\x68\xed\x74\xec\xd8\xaf\x32\xcf\x5a\x57\xb3\x71\x5b\xfc\xc3\x8a\xd0\xba\x9a\x8d\x35\xde\xaf\x06\x9a\x45\xb3\x97\xb2\xaa\xcc\xc6\xc6\x63\x53\x3c\x82\x82\xd6\xeb\x89\xef\x60\x8f\xfc\x0a\xc4\xdc\xbd\x21\x62\x47\x18\xaf\xc3\xcb\xd7\x27\x6f\xdf\xfc\x60\xa6\xed\xec\xfc\xe0\xfc\xf8\x0d\xe5\x7b\xb5\xe2\x39\x7f\x3e\xe5\x47\x9a\x46\x56\x91\x51\x96\x37\xb9\x94\xe2\x63\x9c\x46\x85\x31\x5b\xab\x8b\x4c\x0a\x4a\x3d\x3e\xbd\x44\x0c\x75\x87\x7e\x7e\x3c\xf8\x8b\xfd\x74\xb0\xb9\xa3\x9b\xf4\x79\xf3\x22\xe6\x9e\xed\x37\xa6\x87\xc4\x3e\xf5\xdd\x9b\xcf\xbc\x8d\x96\xc4\xaa\x38\x4e\x4b\x99\xa7\x88\xf7\x36\xc1\xa3\x16\x56\x45\x41\xaa\xa9\xf1\x11\x90\xe4\x25\xf9\x80\xc1\x50\x5e\xe2\x48\x8c\x4f\x8a\xeb\x89\x8c\x3e\xf0\xd9\x2c\xd5\x88\x72\xc5\x54\xe2\x19\x77\x74\xaa\xd6\x42\x5d\x0c\x52\xf3\xc7\xe7\x47\xef\x0f\x4e\xce\x34\xd1\x6d\x6e\x55\xdb\xe7\xdc\x6c\x57\x0f\x25\x87\x48\x6e\x6e\x9a\xea\xaa\x63\x5c\x5d\x37\xb7\x26\xfa\x62\xcd\xe9\x7c\xa5\xd9\x13\x6e\x36\xcb\x9d\x10\xd8\xc0\x3a\xa1\x29\x4b\xba\xb7\xdb\x87\x95\xef\x6e\xac\x57\x9a\x8f\xdc\xc8\x4e\x55\xef\xb5\xd3\x61\xba\x56\xf6\x84\x0a\xa1\xe5\x0d\x0e\xf4\x3c\x4c\x8b\xb1\x24\x4f\x9f\xab\xb8\x74\x48\x04\xda\xfb\xfe\xe8\xe0\xdd\xe5\xd9\xf1\x5f\x8f\xd4\xf4\x89\x55\x3d\x27\x6b\xc8\x0b\x56\x35\x91\xdd\xc8\x70\x4a\x0e\x10\x9a\x76\x0f\xfe\x72\x89\x01\x04\xaa\x37\x9b\x58\xe1\x40\xdf\x88\xe9\x93\x8e\xfc\x89\x4c\x05\x75\xd7\x49\x83\x9a\x8d\x2f\xb1\x5d\xd5\x0c\x2d\x21\x3e\x82\x4d\x13\x97\x8c\xf9\x47\xa1\x95\x97\x57\x33\xbc\x5a\x58\xfa\x02\x24\xfd\x46\x1d\x59\x4b\xee\x20\x4f\x2e\x39\x72\x7c\x1b\xbb\xf6\x3a\x2e\x1d\xba\xf5\x0f\xf4\xc4\x33\x56\x43\x0f\x36\xb5\x3a\xb7\x5a\x8a\x60\x1d\x82\x79\x7f\xf4\xee\x72\xe3\x72\xcb\x9d\xa1\x5c\x4e\x65\x58\x8a\x69\x2e\x6f\xe3\x6c\x56\x58\x2b\x2c\x36\x3a\x5b\x68\xb3\x2f\x44\x6b\xa0\xfd\xac\xb8\x3c\xee\xaf\xb6\xdd\xf4\x5f\x2f\x37\x2e\xfb\xeb\xd4\xf4\xb6\xdd\x74\x48\xee\x53\xba\xd1\xfe\x3a\xb7\x2a\x5a\x1b\x8b\x34\xdb\xef\x5f\xf6\x37\x76\xa0\xd9\x9d\xe6\x66\xfb\xfd\x0e\x14\x52\x0d\x6f\xcf\x69\xb8\x2e\xab\x80\xe4\x11\x76\x40\x62\x89\xd3\xeb\x00\x84\xfb\x87\xce\x55\x1e\x8e\x3e\xca\x52\x3d\x55\x27\x22\xdd\x5c\x26\x6c\x4b\xab\xc6\x01\x56\x1d\x45\x8d\xff\xc1\x87\xf5\xc0\xfd\x5f\x9f\xff\x37\xe0\xff\x6d\xf0\xff\x5e\xf0\xff\x36\xf9\x7f\xeb\x2a\x66\x9b\xbe\x1c\x3d\xf5\x65\x67\xd3\x57\xbe\xad\xbe\xa7\xbe\x03\xed\x6f\x05\x5b\xc1\x76\xb0\x1d\xec\x04\x3b\xc1\xcb\xe0\x65\xd0\x5f\xc7\xff\xd7\xc7\xff\x37\xc0\xff\xb7\x11\xf4\x37\xdc\x5e\x5c\xe9\x09\x68\xe8\xc5\x95\x4b\xdc\x0d\x73\x50\xfd\x1f\xf4\x6c\x5b\x7d\xe9\x2a\xb9\x24\x4f\xd6\x3d\xa8\xda\xdf\x0a\xfa\xdb\x41\x7f\x27\x58\x0f\x76\x82\xed\xe0\x65\xb0\x05\xdd\xdc\x84\x5e\xbe\x80\x4e\x42\x1f\x83\x41\xd0\x7f\x01\x83\xdc\xbc\x18\x5a\xab\xcc\xd9\x2a\x16\x5c\x64\x75\x44\x2a\x2e\xa7\x7c\x37\xab\xbb\x15\x03\x90\x58\x2f\xa0\x7e\x02\xc7\x95\x18\x91\x86\x3e\xa9\x78\xbb\x7f\x15\x52\x3e\x8c\xc0\x38\x0c\x21\x3f\x9d\xc4\xa5\x3e\x9d\xec\x28\x93\x59\x8a\x6c\xb7\xfa\x35\x3e\x0b\x3f\x3f\xaf\x3a\xc9\x46\x61\x82\x42\x21\x2a\x65\x85\x64\x4f\x52\xe5\x7c\x13\x89\x0c\x34\x90\x2c\x1d\xa9\xf3\xb8\xd7\x13\x7f\x06\x2d\x48\x76\xf0\x4e\x01\xe7\x91\x2f\xc1\xd7\xcd\x20\x67\xa9\xdd\xc6\x75\x38\x2d\x96\x34\x68\x05\x1e\x0d\x97\x27\x47\xa7\x62\x4f\x6c\xf6\x07\x43\xb2\x6c\x63\xe8\x1e\x56\xca\x50\x29\xc4\x86\x91\x9a\x2f\xd9\x57\x57\xb9\x73\xf4\x7a\xe2\xab\xaf\xbe\xfa\x0a\x51\xe5\x41\x30\xe1\xa2\xb6\xa7\x96\x82\xc2\x0b\xc4\x77\xb9\xfc\xbb\xd8\x13\xf1\xea\x20\x80\x33\x96\xfe\x5c\xeb\x2f\x29\x24\xba\x78\x74\x99\x94\x20\x5f\x71\xf4\xeb\x01\xb4\xd5\x6a\x99\xf3\x6b\xd0\x16\xab\x62\xd0\x1e\x2e\xa1\xa8\x68\x57\x69\x6b\x71\x8a\x9e\x6a\xa6\x0b\x2f\xbb\xe2\x0c\xaf\x42\xaa\x87\x26\x4e\xef\x04\x54\xf1\x28\xe0\x18\x29\x54\xc1\x60\x31\xd0\xaa\xa6\x7c\x6a\x55\x0f\x68\x77\x59\x47\x32\xc3\xdb\xe2\x49\x8a\xda\x11\x8c\x15\xb4\x30\xf1\x7d\x76\x27\x6f\x65\x0e\x4d\x99\x40\xb9\xc1\xce\x16\x8a\x79\x83\x9d\x6d\xfc\x38\xdf\xe7\x96\x19\x45\x45\x39\x91\xb1\x38\x11\x2d\x58\x8b\xcb\x32\xbf\x84\xc5\x80\xb6\x70\xe6\xdb\x96\x38\xc6\x93\x10\xd5\xe7\x4d\x89\x24\xf5\x19\x8b\xbc\x33\x66\x92\xdb\xe0\x94\xb5\x0e\x46\xe5\x2c\x44\x73\x8f\x28\xf3\xf8\x36\x56\x7d\xa2\x6b\x25\xe3\x25\x33\x2b\x24\xf4\x6c\x93\x3c\xba\xdb\xa6\x6b\x97\x86\x60\x44\xa5\x6b\x36\xe5\xa9\xce\x99\xe2\xd4\x35\x17\x0b\x83\xec\x14\x74\x77\x3d\xd8\xdc\x52\x9a\x94\x89\xfc\x55\xf6\x0e\x35\x0c\x38\xf1\xc5\x86\xe8\x76\x09\xef\x84\x82\x3e\x9f\xaa\x5c\x66\x53\xb1\xa3\x8e\x2b\x68\x00\x1e\xf6\x71\x68\xa6\x61\x6b\xf6\x2f\x89\x94\x78\x90\xf6\x10\x8d\xc0\xdf\xb1\x54\x02\x8c\xdd\xe6\xe1\x5a\x55\x69\xc0\x36\x8f\xd6\xcc\x3b\xcd\xf2\x09\xef\x5c\x5b\x29\x10\xad\x75\xb1\xb7\x67\x5a\x36\xc7\x34\xba\xe7\x70\x21\xb7\x4b\xb6\xf0\xab\x7a\x61\x95\xa6\x4e\x7c\x87\x33\x6c\x7d\xd5\x0a\xb3\xc0\x0e\x61\xf7\xe0\xeb\x8d\x1f\x87\x89\x12\xb5\x25\xf7\x7c\x17\x0a\x36\x7c\x55\x13\xa3\xe7\xbb\xfa\x5d\x36\x16\x64\x1d\xb6\x94\xc8\x33\x24\xe6\xf3\x5c\xca\x43\x59\x8c\x14\xc5\x03\xe1\x06\xea\xbc\xc4\x40\x76\xfe\x3b\x2c\xe0\x79\x22\x27\x05\x82\x72\x5c\xea\x84\x33\x4b\x4b\x82\x42\x6b\xad\x16\x04\x83\xd9\xf2\xcf\xa1\x72\x3a\x84\xdd\x83\xef\xb3\x5c\x30\xd2\xa5\xaa\x6d\x3e\x89\xf3\x61\x7e\x0e\x9b\xa5\x06\x0a\xe6\x6e\x6a\x2a\x2c\xa4\xdd\x54\x58\xc8\xa1\x85\xa5\x60\xc0\x23\xac\x2f\x5b\x6d\xc0\x48\x8d\x46\x8f\x3f\x87\x96\x39\x7a\x12\xde\x5b\xba\x87\x4c\xa4\xf6\x81\xc6\xdd\x01\x63\x34\x8d\x99\xf9\xc2\xc6\xcc\xcf\xa1\x69\xcc\x3a\x3c\x15\x33\x35\x0a\x10\x3a\xef\x16\x37\xd9\x9d\x88\xc7\xe2\x7f\xad\x99\xfd\x5f\x0c\x16\x41\x63\x3d\xe2\xb7\x4c\x26\x0f\xa2\xa3\xb8\x25\xf9\x5f\xa7\xd9\x24\xcb\xa7\x37\xf1\x48\x64\x68\xee\x2c\x54\xaf\x6e\xc2\xe2\xb2\xa0\xd5\xaa\xac\x97\xc2\x0c\xe5\x9f\x1a\x0b\xf5\x71\xc9\x61\xa5\xc9\x65\x24\x8b\xd1\xd0\xe1\xae\xf5\x47\x57\xaa\x98\x45\x7b\x9a\xea\xa2\x87\x94\x49\x0e\x4a\x63\x41\xba\x10\xc7\x1e\xaa\xb7\x40\xca\xfc\xa7\x0e\x88\x43\x0e\xf6\x90\x86\x13\x45\x52\xee\x74\x8f\x08\xbf\x72\xbd\x7a\x75\x8e\xe1\xec\x0a\x07\x00\xcf\xff\x94\x0d\x2a\x62\x9c\xcb\xbf\xcf\x64\x3a\x7a\xb0\x9a\xd2\xbd\xe2\x09\xa2\xa1\x98\x1e\x18\xc6\x08\xa7\x9b\x4d\xe1\xab\x3d\x9c\x2e\x33\xe6\x08\xfb\xd4\xc2\xad\x8c\x43\xe4\xab\x6c\x64\x02\xaf\x90\xdb\x7e\x6b\x9d\x04\x1f\xe0\xaf\x0b\xb1\x6b\x3f\x82\x32\x6b\x02\x9b\xc0\x4c\xab\xdb\xed\x0b\x5a\x94\xcf\x2f\x62\xbd\xa5\x2c\x4e\x21\x23\x37\x9c\x9c\xbd\xe6\x23\x25\xe3\x38\x70\xbc\x5b\xea\xa2\x31\xe4\x54\x84\x45\x21\x73\x18\xe5\xae\x91\x0e\xd8\xf5\x26\xcf\x10\x47\x5e\x4c\x25\xce\xd1\xeb\xd9\x98\x4e\x05\x3d\x2f\xd3\x59\x79\x89\x1f\x69\x15\x81\x40\x1f\x2c\x4a\xe5\x05\xcf\xaf\x1e\x4a\x09\x8f\x5b\xb3\xd1\x4d\xbb\xd5\xba\x53\x89\x65\x4d\x0e\x35\x4f\xa9\x59\x71\xd3\x86\xa2\xfb\xfb\x62\x87\x60\x45\x8b\x2e\x7f\x1d\x14\xe8\x0f\xfa\x17\x87\x67\xde\xd9\xe9\x6a\x9f\x28\x8a\xd3\xbe\x63\x2a\x7c\x99\xc9\x3f\x03\xad\x38\x64\xb8\x97\x2c\x15\xa1\xb8\x8e\x6f\x65\x6a\x31\x1c\x94\x20\xea\x93\xcf\x0c\xe4\x15\xe8\xc9\x28\x3f\x51\x13\x63\x0a\x6c\x50\xaf\x55\x65\x6b\x11\x0a\x99\x46\xc8\x02\x61\x1e\xb1\x52\x20\x0c\x87\x67\x60\xdf\xee\x55\x7c\x49\x8e\x27\xfb\xa2\xa5\x4d\x17\x1d\x55\x50\x03\xc8\x76\xd9\x52\xf1\x1b\x46\xf5\x42\x07\x5e\xbd\x12\xa6\x76\xdb\xca\xfc\xab\x96\x50\x13\x80\xaa\xcc\x5e\x92\xba\xad\x3d\x1e\xca\xbe\xfb\x69\xab\x55\xab\x02\x75\x72\x6d\x4f\x0d\xb8\xa3\x0d\x2d\xc3\xa5\x8a\x17\xe4\x73\x3b\xeb\x6b\x9f\x9c\x5d\x1e\xed\xcd\x8e\xf3\x89\xfb\xbd\x08\xc4\x28\x40\x96\x40\xf3\xe3\xcc\x34\x3c\xfe\x30\x02\xc1\xf3\xa2\xb7\xda\x7d\x93\x45\x72\xb5\x67\x3f\xc5\x00\xcb\xde\x6a\xf7\x44\xa6\xab\xbd\xf6\x97\x22\xb7\xf7\x20\x7f\x17\xd2\x42\x49\xd1\x4e\xc1\xa0\xd2\x30\x24\x13\x81\x17\x17\x65\x1e\xc6\xd7\x37\xe5\x38\xcb\xef\xc2\x9c\x5d\x90\x5a\xa1\x18\x87\x45\x49\x42\xfc\x44\x96\x37\x59\xc4\x77\x4b\x33\xd0\xcd\xc8\x8d\xa8\x5d\x27\xd7\x3e\x50\x2a\x07\xf3\xf6\x37\x5d\x8a\xbc\x8a\x2f\x73\xea\x57\x8b\xbe\x9f\xc8\xd4\xa0\x76\xe7\x52\x27\x6d\xd1\xee\xc2\xf0\xec\xb7\x3d\xea\xd1\x37\xca\xb7\x0e\x7f\xed\x5b\xbe\xb4\x50\x4a\x3b\x0e\x3e\x56\x0c\xe5\x8c\x05\xad\x71\xe7\x0b\x4a\x68\xfd\xa5\x26\xfe\x3b\xc4\xc8\x57\xca\x16\x59\xfa\x02\x0c\x2d\x43\xec\x08\x76\x59\x63\xab\x50\x9c\x8a\xb8\xec\xd6\x26\x09\x71\xf6\x5b\x85\x77\x9b\xee\xed\xed\xa1\x3f\xd6\x3f\x9e\xb3\xcf\xd6\x6b\x84\xae\x10\x8e\xac\x10\x1e\x9b\x17\xec\x01\x43\x54\xbb\x69\x0e\xf7\xd4\xdf\xb0\x93\x83\xeb\x87\xb0\x44\x3b\xb5\x4f\x77\xf8\xe1\xe3\x17\x5a\x81\x37\x08\xc1\xc2\x77\xaf\xd3\x32\x9e\x84\x89\xa3\xf8\x12\xce\x07\x1e\xe8\xc0\x4e\xad\x3c\x2a\x94\xca\xc2\x94\x85\xd6\xb4\xe0\xa6\xc2\x54\x92\x6c\xf4\xd1\x7f\x46\xd2\x45\x56\x81\x42\x07\xc5\x5e\x86\x11\x5b\x67\x4a\xc4\xf5\x9f\x7e\x80\xff\x73\x89\xe0\x13\x61\x1a\x41\x23\x42\x88\xf0\x2a\xbb\x25\x6b\x87\x16\x33\x53\x94\x12\x0d\xaa\x0c\xe3\x0b\xd1\x05\x3d\x4b\x34\xd8\x87\xb7\x3f\x9d\x9b\x4e\x14\x56\x2f\x54\x24\x2f\x7b\xe4\xfb\xe7\x82\x9d\x20\xb1\x17\x6c\xbb\xb8\x4a\x2e\x09\xb6\x66\x94\xa5\x65\x18\xa7\x14\x73\xab\x3e\x1a\x4b\xaf\x65\xad\xab\xda\xb0\x60\x5e\xb2\x69\x79\xc9\x7d\xa0\x19\x8e\x86\x5a\xc6\xa4\xc7\x61\x52\x64\xea\x1d\x10\x20\xc9\xad\x71\xa1\x1a\x4b\xb3\x12\x01\xba\x2a\xfb\xe3\x5a\xa6\xc0\x6b\x13\x99\xb6\x10\xeb\xa5\x18\xb5\x59\x6e\xe0\xdb\xa1\x4b\xc6\xea\x2f\x94\x3c\x01\xed\x92\xc0\xb7\xaa\x44\x3d\x25\xeb\xe1\x27\xe1\x61\x1e\x4f\x4b\x02\x58\x50\xec\x48\x49\xd1\x46\x61\x80\x72\x5a\x7e\x1d\x6a\x28\xb9\x7b\xad\xe5\x5b\xc5\xd4\xe3\xa1\xce\x35\xe0\x36\xc7\xc5\xb4\xfc\x69\x6b\x5a\xaa\x8e\x23\xcc\xfb\xea\xe8\x02\x0e\x86\xd9\xbc\xaf\x58\x2a\x98\x0d\x4c\xb7\x40\x15\x8e\x9a\x53\x43\xd6\xaa\x8f\xaf\x8a\xa5\x0c\xa9\xa1\xd4\x23\xce\xd0\x6c\x54\xc1\x04\x4c\x03\x31\x19\xba\xc5\xd0\x92\x55\x4a\x44\x6a\x30\x4b\xa6\x95\x33\x83\x95\xc7\x6a\xa5\x55\xd5\x52\xbf\x74\xb1\xfb\x4a\x39\x57\x0b\x35\xe0\x84\x1e\x54\x43\x57\x95\x40\xac\xba\x5b\x99\x8f\xc9\x57\x7b\x7d\x58\x85\xb9\xd3\x5d\x44\x8d\xc4\xea\x4b\x99\x65\x8c\xc0\x45\x6a\x20\x06\x53\xe9\x94\x65\xd4\x11\x42\xc2\xb8\x24\x9c\x06\x78\x62\xe0\x10\x8a\xae\xda\xa3\x1f\xe0\x85\x85\xd5\x43\xae\xb9\xc7\x20\x5b\xd2\x91\x3f\x0d\x0b\x10\x55\x9e\xe0\x87\x2d\x4a\x56\x30\x09\x11\x1c\x69\xd5\x8c\x8a\x15\x5f\x4c\xf7\x55\x37\x3e\xa3\xf8\xa3\x62\x5c\x69\x93\x7d\x28\xba\xc8\xe5\xe8\xff\x23\x3e\x57\x95\x78\x68\x90\xbd\x55\x72\x82\xe7\x66\x91\x16\xac\xd9\xb8\xc1\xa3\x45\x35\x82\x77\x77\xe2\x46\xbc\x32\x17\x7c\x43\x71\x63\x66\x24\xd5\xa5\x3f\xdc\x70\x04\x02\x4f\x27\x76\x0a\xff\x4f\x6a\x77\xe4\x30\x8c\x56\x7b\xf5\x9e\xad\x29\x79\x02\x4e\x43\x6c\x61\xbf\x62\x16\x21\x62\xe0\xc6\x5d\x2a\x87\x7f\x6a\xe6\x54\x54\x03\xc5\x3a\xd4\xbf\xaf\x26\xc2\xc0\xb9\xf6\x56\xc5\x9f\x89\xc6\xef\xf2\xb8\x94\x5c\xe7\x02\x7a\xca\xb9\x24\xd0\x36\x8b\x50\x7b\x18\xde\xa8\x42\x61\x74\x7f\x53\xee\x2c\x5a\xd4\x30\x3f\x6e\x5a\xc6\xe9\x4c\x0e\xc5\x23\x61\xcd\x80\xe2\x97\xc8\x70\x8c\x87\x8b\xae\x5a\xa5\x26\xd5\xf5\x7b\x37\x87\x1e\x7f\x81\x82\xe0\xcc\x4c\xa8\x52\x14\x4b\x97\x8a\x0e\xbe\x77\xa2\xe1\xc6\x6a\x19\x52\x25\x12\x7f\x97\xcb\xbf\xab\xfc\xfa\x45\x57\x9d\x13\x6b\x7b\x62\x2c\x56\x79\xde\xd7\xa8\x65\x2b\x89\x87\x66\x75\x56\x6a\xac\xae\x75\x9e\xa8\xea\x45\xd3\x6c\xbb\x4d\xda\xd0\x37\x66\x17\xbb\xb9\x6e\x86\x3a\x17\x9d\x9b\x02\x7c\xf9\x6f\xa9\xb5\x0d\x54\x6d\x9d\xef\x02\xed\xca\x71\x21\x6e\x10\x2e\x90\xcf\xcb\xfb\x70\x32\x4d\x50\xef\xcb\xae\x7e\x19\xa0\x70\x30\x8d\x47\x8a\xfc\xdf\x84\xc9\x35\x25\x2e\xcf\xa7\xb3\xc2\x44\x8a\x7e\x17\x73\xbc\x3c\x6d\x67\xeb\xab\x44\x13\x23\x94\xc7\x15\xf8\xe0\x2e\x87\xdb\x2a\xd9\xb9\x46\xa6\x26\x90\x8c\x25\xe4\x3a\x2b\xd1\x08\x41\x71\x59\x74\x3a\x2a\x5a\xa7\x5a\x0e\xde\x28\xb6\x38\x01\xe1\x25\xc3\x38\xa4\x70\x2c\xa2\xec\xae\x6a\x2d\xab\x55\x27\x84\x99\xb5\x3d\x41\x17\x2e\xba\x01\xc3\x77\x4a\x39\x11\x61\x21\xa0\xec\x55\x4e\x51\xfa\xf5\xa6\xcc\xb8\x2e\x54\xc2\x4c\x36\xe9\xab\x3a\x3c\xbb\x95\x76\x41\xea\x80\x6f\x52\x08\x47\x51\xca\xa9\x98\x4d\x03\xa2\xa9\x55\x74\x92\x43\x97\x3c\x8d\x00\x18\x8e\xc7\x72\x54\x0a\xdf\x77\xb9\x12\x75\x4d\x7f\xa6\x83\x2e\x33\x96\x22\xa2\xdf\xec\xab\xc8\x43\xcc\xb3\x71\x27\x72\xa9\x78\x73\x98\x38\x3c\x39\x10\xc5\x28\x4c\x09\xc0\x2e\x6d\x92\xfe\xa0\xbb\xc8\x17\x8a\x32\x4e\x12\x13\xeb\xa9\x99\x64\x57\xb4\x8e\x39\x85\x31\x50\x5f\x4e\x70\x52\xfa\xa6\x06\x3e\x4a\xad\xa8\x93\xc0\xba\xb8\x1a\xc7\xf7\xf0\x3d\xbc\x73\xc3\x14\x83\x79\x86\x3f\xe9\x2e\x22\x2e\x44\x1c\xc9\x10\x21\x59\xc2\x8f\x84\xdd\xb0\x4a\x9e\x79\x2b\x61\xbe\x22\x80\x89\x95\xa0\x6f\x3e\x88\xef\xc3\x7c\x76\x13\x7f\xcc\xc4\xdb\x8f\xb3\xc9\x2c\x0f\xbb\x6d\x7d\x64\xd8\x07\x9f\x6d\x3f\xc5\x47\x18\x48\x33\x64\x42\x74\x39\xbd\x4b\x8c\x0e\x45\xa7\xd5\x40\xca\x89\x39\x1b\x3a\x9d\x9b\x0b\x3b\x28\x6c\xd2\xcc\x31\xad\x52\xc8\x4f\x26\x75\x7e\x02\xdf\x41\x86\x62\x85\x80\xd5\x59\x05\x4a\x86\x5f\x47\x34\xa4\xaf\xa3\xce\xfe\xd7\xd1\xdf\xd2\xe5\x40\x4c\xd8\x22\x30\xb9\x80\xe6\x02\x6a\xc9\x4a\x2c\xea\xf0\x45\x9a\xa3\x8e\x68\xe8\x4a\x5b\xac\x5a\xaf\xaa\x1c\x56\x9f\x40\x9e\x31\xec\x39\x19\x64\xd5\xa8\x53\xb5\x9d\x1e\xbf\xa0\x92\xf6\x27\x85\x75\x65\x8c\xe2\xa4\x97\x91\x55\x4c\x6b\x67\x14\x82\x8b\xf8\x2f\x2c\xa7\xe0\xdd\x24\xfb\x9b\x82\xb4\x42\x12\x4d\xbb\x41\x25\x9b\xa7\xd5\x58\xfc\x14\x4f\x92\xa2\x8c\x47\xd8\x0d\x75\xf7\x55\xe9\x8b\x57\xb9\xc2\x5e\x27\x89\x2b\x96\xd6\x75\x33\x5b\x35\x53\xd1\x68\x8d\xd5\x31\x98\x33\x4b\x95\x22\x84\x96\x6c\x1b\xbe\xb4\xae\x10\xe1\x0c\xb6\xc8\xea\xae\x68\x3a\xd0\xc3\x56\x0a\xd2\xa8\xbc\xc4\x6b\x85\x55\x63\x75\xb7\x04\x5c\xcd\xb6\x11\xaa\x67\x94\xe5\x9c\x8d\x8a\xea\xc6\x69\xa9\x5b\xae\x0b\xc7\x8b\x9a\xe0\xa9\xad\x59\x71\x33\x16\xab\xaa\x77\x55\x73\x7e\xd5\xfd\x2b\x2c\x6b\x9e\x1c\x96\x9a\x86\x99\x18\xf9\x66\xc0\xbd\x80\xb4\xf1\xa2\x19\xa7\x1b\xcb\xb1\xfd\xd4\xe3\x20\x62\xe1\x5c\x7b\x6e\x1a\x28\xfe\x7e\x46\x6c\xd9\x6a\xa9\x51\x05\x31\xb5\x28\x7b\xb8\xab\xea\xf8\x31\xe2\x14\x50\xbb\x2e\xbd\xa4\x8f\x35\xdb\xd1\xd9\xc6\x44\x22\xe1\x40\x39\xc9\x5d\x57\x37\x16\xdf\xf7\x12\x8b\x56\x11\x05\xd0\x21\x32\xc5\x85\x49\xd7\xcb\x90\xfb\x4f\x6b\x22\x7a\xea\xb5\x22\xc2\xf3\x86\xd6\x3d\xb1\x26\xdc\x63\xbf\x23\xfa\x17\x18\x5b\xd8\x1f\x9a\xc4\x6a\x6f\x30\xac\x97\x21\x78\xa5\xbd\xdd\xe3\xd4\x6c\x5b\x04\xe9\xca\xd2\x22\x2e\x4a\x99\x96\x74\x1b\x8e\xf7\xd9\xf0\x21\x1a\x99\x72\x55\x47\x98\xe1\xd4\x40\xa9\x02\x57\x3e\xc0\x5d\x58\xef\x96\x1a\xd8\x45\xa7\x8f\xf9\x23\xfb\xaf\x5e\xa9\x47\xed\x4e\x9f\xf1\x75\xf8\xdf\x72\x9c\x9a\x1e\x58\xfd\x5c\x26\xa1\xaf\x9a\x4b\x7a\xf9\x6f\xa9\xde\x97\xbb\xc6\x48\xf0\x75\x24\x96\xcd\x0e\xe5\x3c\xf5\x38\xed\x2a\x1f\x03\x1a\x4e\xcd\x46\xb3\x10\xfa\x8c\x57\x70\x83\x8c\x3b\x74\x02\xe3\xb5\x2c\x57\x3d\xd7\xb4\xf0\x61\x2c\xc4\x46\xf9\x15\x15\x61\x9d\xec\xd7\x78\x52\x68\xdb\xad\x59\xf7\x44\xa6\x17\x6b\x6b\x64\xc7\x55\x90\x0a\x34\x13\xa3\x5b\xe4\x46\xe2\xab\x3d\xc7\xb9\x25\x10\xd6\x04\xa5\xe2\xeb\x8d\x48\x7c\x3d\x12\x89\xf8\x7a\x10\x89\x91\xf8\xfa\xc5\xbd\x68\x7d\x7d\xdf\x16\xcb\x01\xb7\x45\x07\x52\x20\x5a\x71\x71\x9d\x87\xd3\x9b\x56\xda\x16\xdf\x8a\x54\xec\x8a\x15\xb1\xd2\xc6\x0f\x07\x5a\x59\x7a\x83\x4c\xcf\xed\x5d\xa7\xaf\x72\xb3\x7e\x99\x73\xec\xd8\xa0\x03\xc1\x44\xde\x86\x39\xfa\x2e\xae\xa8\x68\x81\x15\x83\xec\x6b\xf3\xec\x32\xbf\xe4\x69\x89\xd3\xb8\x6c\x19\x23\x78\x6a\x5f\x48\xb3\xed\xa3\x60\xe3\xc7\x53\x86\x0f\x66\x34\x48\x97\x4a\x64\x66\xa2\x31\xf7\xd2\xcc\xea\x2a\xac\xcb\x70\x75\xc5\x80\x2a\x05\x80\xf9\xe8\x02\xda\x07\xa1\xc2\xd3\xf4\x7e\x6d\x66\xc5\x4b\x8b\xb2\x78\x05\x31\xca\x06\x0b\xa5\x4f\xd0\x9e\x8c\x14\x8c\x5e\x9c\x6a\x07\xa1\x56\x1b\xdf\xa9\x74\x95\x3c\xb5\x97\x51\x96\xca\xb6\xd2\xe8\x94\x5e\x85\xa8\x99\x13\x29\xe4\xe4\x4a\x46\xe8\x84\x04\xe7\x57\x59\x04\xe2\x3a\xc9\xae\xc2\x04\xd7\xd1\x40\xe4\x81\xb4\x61\x79\x91\xa1\xa2\xd5\x5b\xfd\xaf\x78\x1c\xc9\xb1\x38\x7d\x7b\x79\x7c\x7a\x7c\x7e\xf9\xa7\x93\xb7\xaf\x0f\x4e\x2e\xdf\xbd\x3d\x3e\x3d\x3f\x7a\x7f\xc6\x59\x14\xf5\x95\xba\xe3\x4a\xe1\x6e\x8a\x61\xad\xac\xe5\xbe\xb0\x67\x3b\x7a\x5a\x25\xa3\x39\xad\x46\x95\x56\xa3\xc6\x56\xa3\x4a\xab\x57\xcd\x1d\xb8\xe2\x1e\xfc\x97\x4c\xa3\x78\xac\x4f\xa6\xca\x06\x98\x84\x84\x3c\xa9\x1d\x75\xd0\x43\xbd\x2d\x3a\xfb\x8e\x87\x0f\x3e\xdf\x69\x6b\x60\x2b\x4a\xd5\x6a\x20\x4b\xcd\x01\x3c\xa2\xfc\xdb\x8e\xe3\x3d\x82\x2e\xc1\x0b\xc3\x1c\x2d\x57\x9e\x0f\xf0\x86\x63\xe3\xb5\x71\xc6\xe6\xb1\xa9\x78\xc5\x00\xbe\xd6\xd4\x52\xad\xb6\xc3\x71\x85\xe3\xe2\xf4\x81\xfe\xa6\x8b\x0f\x65\xdb\xb5\xb2\x84\xea\x63\x46\x8d\x07\x3d\xa2\x03\xb1\xec\x6e\x76\x7d\xa3\xfb\x15\xbe\x5f\x56\x7b\xe2\x94\xe2\xc5\xc2\xd2\x72\xc5\x14\x83\xcd\x4d\xd1\x72\x5c\x9f\x06\x9b\x3b\x6d\x31\x0a\x53\x8a\x8e\xd2\x61\x56\x74\x08\xc6\xa9\x28\xef\x32\x11\xc5\xe3\xb1\xc4\xdb\x8a\xbb\xf0\xa1\xd8\xa5\x39\x1c\xec\xbc\x10\x6b\xec\xa8\x26\x14\x0a\xdd\x60\x67\x13\xc1\xf0\xee\xa4\xb1\xfd\x91\x05\xca\x1e\xf8\x60\x73\xf3\xc2\x04\xf5\x49\x71\x05\xa2\x9e\x4c\x09\x07\x6f\x57\x1f\xb4\x9e\xc9\xc2\x43\x5f\x4f\xd7\x5c\x8a\x41\x0f\x08\xa0\x8b\x8d\xc1\x0f\x48\x2f\xf8\xc0\x50\xcb\x4b\xa6\x16\x7c\x3c\x97\x56\xfa\x5b\x5e\xea\x80\x8a\x9a\x36\x90\x9f\x3d\x49\x19\xd1\x1c\xca\x70\xbd\x3a\x9e\xa6\x0a\xea\x77\x13\x4d\xe0\x5b\x9b\x22\xd8\x21\x64\x4f\x6c\x0f\xc9\xfa\x9c\x4d\x44\x9a\xdd\x89\x2c\x0d\x50\xc6\xd1\x0e\x79\xc8\xa1\xa2\x58\xa1\xef\x63\x82\x70\x0b\xa4\x4b\x4d\x0a\xbb\xa0\x2d\x36\x33\x30\x03\xdb\xf3\xa6\xa7\x55\x9b\x1f\xd1\x11\xdb\xed\x39\x93\x44\x7e\x2e\x9f\x63\xaa\x06\x9b\x5b\x6b\x6a\xba\x36\xfb\x83\x65\x6d\x52\x79\xa3\x2d\x1b\x46\xa9\x54\x69\x41\xea\x7e\xb1\x75\x91\x77\x01\xe3\xfb\x1c\xd3\x7b\xaa\x7e\x69\x53\xc4\xab\x3d\xd1\x7f\xb1\x61\xe7\xe0\x55\x1c\xdf\x6f\x0e\xe6\xab\xd2\x54\xd9\x60\xf5\xc7\x76\x34\x7e\xbe\xdb\x3a\x72\xd6\x45\x5b\x7f\xd9\xd4\xfa\xcb\xa6\xd6\xb7\x5f\x2e\xde\xfa\x76\x53\xeb\xdb\x4d\xad\xef\x6c\x7f\xe6\x99\x41\x0a\xa8\x3a\x1a\x47\x19\x07\xb2\xc4\x45\xc9\x28\xeb\x1c\xd8\x4b\x91\x4d\xc8\x83\x26\x16\x68\x2d\xd9\x52\x1c\x7f\x66\x05\xff\xe2\x4b\xdd\x43\x8e\xca\x68\x96\x77\xd4\x11\xa5\x86\x18\x6b\x97\x51\xd3\x5d\x81\xd8\x0a\x50\xb2\x34\xf6\xa1\xa5\xf8\xf9\x5c\x94\xd1\xf4\x46\x8e\xc9\xbb\x16\x25\x5b\x1b\x55\x6f\x78\x6b\x47\xda\xf2\x81\x7f\xa6\x37\x87\x0d\x05\x1b\x95\x81\x40\x6c\xb6\xcd\xfd\x53\x0f\x75\x0b\xb4\x32\xe4\x32\x8c\x28\x5c\xfe\x4e\xe2\x89\x05\xdb\xd7\xf6\xa7\x2b\xaa\x72\x0f\xcb\x8d\x7e\x2f\xd6\xc4\x76\x63\x4d\xc8\x8f\xd5\x0e\x70\xd3\x33\x19\xe8\xdd\xdb\xae\xc9\x40\x73\xbf\x10\xd9\x5f\x88\xe8\x0b\xeb\x16\x52\xc2\xe1\xbc\xf6\xaf\xe6\x0d\xc1\x48\xc3\xeb\xed\xc0\x91\xa7\x9c\x2f\xbc\x76\x47\x70\xa2\x3e\x82\x13\x5b\x15\x6a\x51\x0f\x9c\xc9\x2f\xe5\xc7\x62\x9d\xd2\x04\x05\xad\x1d\x1f\x7a\x76\x5e\xfe\xb8\xbc\xc4\x17\xca\x5b\x85\x75\x98\xa7\x95\x17\xaf\x2c\x40\x40\xc3\x7e\x7a\x3e\x51\xf4\xcc\x04\x2d\xc8\x97\x34\xf1\x5d\x2e\x71\x34\xec\xbc\x5d\xe1\xb6\x12\x3d\xaf\x95\xd7\x27\xee\xe6\x22\xa3\xf4\xbc\x36\xd0\x0d\xd1\xf4\xd7\x04\xce\x55\x4b\xf7\xc9\x63\x51\x99\x7f\xf7\xdc\x6b\x2e\x3e\x62\x8a\x6e\x12\x16\xe5\x65\x82\x19\xcc\x8b\x2e\x0a\x88\xca\x7b\xea\x9f\xe7\xd6\x84\x7b\x3b\x4c\xe2\x6b\xba\xf2\xc9\xc8\xbd\x14\x7d\x1b\xaf\x1e\x4a\x49\x69\x5e\xc2\xfc\xa1\xe6\xdf\x74\x17\xa7\xd1\x6c\xda\xe2\x24\x97\x35\x3f\xc4\x9d\xa7\xbd\x9b\x1a\xdc\x96\x6c\xe8\x2d\xc7\x8b\xf4\xf5\x43\x29\xdb\x45\x67\xbf\xe2\x20\xb5\x80\x67\x93\x3a\x5d\xaa\xde\x54\x55\x5f\xaa\xc7\x2f\xe3\xca\x34\x7d\x10\xa1\xce\x15\x06\x1b\x2d\xc0\x5f\x04\xd9\x8e\x50\x86\x46\x59\x80\xe5\xc0\x04\x69\xab\x70\xf4\xac\x14\x82\xc0\xce\x08\x33\x62\x8c\x38\x07\xb2\x28\x65\x54\xd9\xc4\xa3\x6c\xfa\xa0\x36\x31\x1c\x91\x63\x36\xab\xdc\x60\x1a\xfa\xf6\x52\xaf\x77\x48\x8e\x35\x67\x96\x5f\xcd\xe8\x26\xcc\xc7\x30\x89\xab\x30\x47\xc2\x58\x90\xe3\x14\x88\x80\xcc\xcc\xbd\xa5\x5e\x6f\x96\x16\xf1\x75\x4a\xa1\x14\x43\x63\xd8\x28\x2c\x9b\x6b\xaf\x17\xa7\x14\x33\xc1\xdf\x1c\x32\x96\xef\x0c\x57\x98\xe2\x48\xe9\x8d\x36\xf3\xa9\x1b\x26\xb6\x04\xdb\x44\x65\x5b\x50\x88\x3a\x81\xea\x6c\x82\x64\xfe\x83\xf7\xca\x34\x48\x1f\xc1\x91\x51\xab\xf6\xf8\xff\xaf\x9e\x3f\xa2\x35\x9b\x65\x9a\x44\xa6\x74\x4d\x55\x77\x61\x86\x19\x5a\x5b\x63\xef\x66\x20\x25\xca\x6b\x88\x37\x13\x67\xb2\x6c\x39\x64\x08\x74\x0e\x23\xc9\xee\xec\xa5\xd0\x45\x5c\xd7\x67\x76\x57\xfd\x62\xc4\x37\x99\x86\x39\xe6\x6b\x10\xc5\xec\x0a\x79\xb3\x72\x19\xb5\x7c\xa7\xa6\x40\x79\x85\x28\x63\x49\x10\x8f\x32\x67\x38\x77\xa2\x07\x55\x93\x20\xdb\xe9\x92\xd2\xdc\x62\xd2\x5d\x22\x82\x00\x60\x92\x2c\xbc\x6a\xcc\x30\xa9\x5f\x58\x34\xdc\x77\x14\x13\x4c\x2c\xc6\xb7\x1d\x29\x5e\xa6\x61\x37\xcc\x09\x74\x99\x0e\xe0\x20\x06\xe6\xaa\x3c\x90\x2e\x27\xf0\x68\xa2\x1e\xb1\x3b\x28\x5d\xef\x5d\xa6\x36\x0f\x7e\x45\x06\xc5\xcb\x89\xfd\xd0\xc2\x86\xf4\x56\xda\xdb\xdb\xf3\x55\xfb\xe6\x1b\xea\xda\x87\xf4\x02\x84\x5e\xfa\x7b\x72\xd1\x6e\x7f\xa1\x35\x7b\x2f\x91\x57\x18\xa7\x9a\x69\x9e\x4d\x65\x5e\x3e\x80\x66\x38\xc9\x6e\x51\xd1\x76\xee\xe8\x35\x6c\x78\x58\x92\x67\xc8\xc7\x00\x1a\x92\xf7\x98\x41\x80\x12\xd9\xa5\xfa\x56\x07\x57\x14\xe7\x9f\x00\xf1\x11\xb3\xfb\x2e\x13\x45\x96\x16\x84\xd1\xca\x49\x21\x90\x4d\xa1\x62\x0f\xad\xe9\x84\x15\x6e\x9f\xe2\x42\xe4\xb2\x23\x8b\x32\xbc\x4a\xe2\xe2\x46\x46\xa2\x85\x66\xc0\x71\x88\xf7\xf7\xbc\xd0\x94\x88\x84\x19\x9b\xfa\x58\xbb\x1a\x71\xf0\x77\x18\x16\x34\xaf\x7c\xb0\x03\xf1\xf1\x29\xc7\xc0\xea\x7d\x58\xe5\x12\x2c\xe7\xc9\x74\xee\xc0\xaa\x79\x63\xc9\xb9\x26\xc2\x0a\xe8\xca\x80\xd3\x6b\x5d\x50\xdd\x9a\x1b\xe8\x8f\x17\x8a\x1a\x7f\x11\x7b\xe2\x23\xdd\x85\xb0\x55\x76\x5c\xc2\xb8\x60\x4e\x19\x09\x9a\x19\xcb\x2f\x40\x37\xec\x0b\xa5\xdd\xa5\xb1\xce\x99\x2c\xc5\x2f\xca\xb9\xd3\x5e\x14\x1c\x03\xcf\xd3\xae\x8d\x97\xfb\x8b\x78\x65\x35\x25\xbe\xf9\x46\x79\xd2\x38\x3b\x8a\x3b\xfb\x0b\xaa\x06\xe6\x27\xfe\x49\xfb\xcc\x28\xf8\xbf\xb8\xae\x4e\xbd\x55\x71\x74\x1f\xe3\x69\x73\x8b\x37\x9c\xf6\x0a\x5e\x65\xe5\x0d\x11\x8a\xd5\x25\xf7\xd3\xb7\x4d\x9f\x33\xe8\xb1\xe6\x3b\x94\xe2\x42\xdc\x7a\x28\xb3\xc8\x0c\x98\xb1\x9a\x7a\xb3\x0c\xbf\xb0\x1b\xc0\x47\xb1\x27\x7e\x31\x48\xd0\x07\x98\x93\x8e\xee\x4a\xdc\x4d\x12\x88\x42\x52\x94\xb4\x9e\x6f\xcf\x82\x09\xf1\x8b\xe5\x85\xbe\xe4\x7e\xfa\x96\x05\xb3\x9e\x88\xd3\x24\x4e\x31\xa0\x31\xc5\x08\x53\x78\x86\x58\x2c\x3f\x1e\x9c\x9c\x1c\x9d\x9d\x93\x0c\xf8\xa5\x22\x50\x50\x82\xc3\x03\x15\x29\x5f\x61\x9d\xc8\xc8\x62\xec\x74\xed\x6d\x6b\xb8\x45\x55\x62\xa0\x5a\x46\x6a\x60\xe5\x8c\x62\x6b\x9f\xda\x75\x19\x26\x28\x51\x7b\x8f\x4c\xe0\xb8\x09\x2a\xd6\x19\x6f\xf1\x48\x17\x77\xf5\x61\x6b\xc7\x99\xbb\x0a\x51\xbb\xb1\xc8\xc6\x14\x49\x2a\x23\x04\x7d\x53\x69\xb3\xf0\x9a\x64\x54\xbb\x12\x77\x2c\xaf\x18\x14\xaf\x2a\x83\xfc\x23\x5a\xf1\x58\x28\x5b\xd5\x7a\xdb\x6a\xa9\x92\xdf\xdc\xba\x37\xa6\x1b\x93\x38\x15\x89\x02\xfe\xa8\x5e\xc0\xe8\x2a\xfa\x02\x17\xce\x5f\x27\x0d\xb3\x49\xfe\x6c\x58\x90\xf1\x3b\xb5\x92\x41\x9b\x8a\x5a\xce\xd6\x8a\x83\xe3\x28\x63\xe1\xb3\xb3\x7d\xb5\x55\x95\x8e\x23\xec\xf0\x1a\x0c\x0e\x74\x16\x60\x5e\x3b\x88\x11\x3b\xbf\x20\x72\x11\xed\xd9\x92\x60\xd0\x5d\xa5\x42\xa2\x2b\x68\xff\x9c\xe4\x1e\x18\x8b\xe5\x86\xc3\xd3\x5c\x41\xe1\x76\x42\x72\x92\x11\xd3\x61\x9b\x03\xf9\x31\xe0\xca\x06\xcc\x31\x00\xcb\xf6\x3d\xa5\xba\x5a\x4c\x46\x6d\xeb\x7a\x52\xac\x7c\x3d\x5a\x11\xcb\xd0\xac\x71\xcc\xa9\x80\xad\x53\x66\x74\x99\x4b\x28\xa5\xf2\x53\x39\x34\x63\x87\x3f\x5b\x1f\x67\x93\xb5\x6b\x30\x1f\x59\xe8\xd9\x6e\xac\x11\x5d\x5b\xbb\xc6\x8e\xea\x48\x4b\x3b\xc3\x6a\xe4\x0c\x55\xe5\x39\xa9\xdd\x76\xb8\x68\xdd\x54\xec\xab\xea\x1c\xe3\xa2\x75\xf6\xea\x37\x2c\x43\xab\x88\x13\x01\x05\x0b\x81\x8d\x69\x51\xdc\xee\x24\x7d\xc6\x0a\x5b\xb3\xbb\x6a\xd0\xc1\x61\xc1\x3b\x1d\xbd\xd1\xc9\xff\xf5\xce\x9a\x61\xbd\xa5\x3b\xa2\xef\x99\x5b\x3b\x34\x73\x68\xad\xba\xe3\x0b\xf0\xca\xd8\x74\x96\xaf\xc2\x88\x2b\x2d\xb7\x35\xe9\x79\x56\x42\x71\x39\xdf\xd8\x3c\x90\x27\xbe\x25\x88\x9e\xbd\x04\x38\x05\x6a\x11\x8c\xb9\xbe\x71\x09\x22\x34\x77\x9a\x45\xa8\x2f\x80\xee\x6a\xd3\x12\x3c\xda\x2c\x19\xd3\x13\xc1\xac\x4f\xc3\x38\x17\xdf\x0a\x07\x8b\xbe\xe2\xc3\x91\xdd\xca\x3c\x09\x1f\xc4\x95\x2c\xef\x30\x43\x93\xd9\xec\x14\x15\x03\x7f\xad\xd1\xa6\x8f\x0b\x91\x7d\xdc\x35\x9f\x57\xeb\xd3\x6a\xcd\x8e\xd3\xb2\xdd\x2a\x3a\xfb\x4a\xf3\x01\xd9\xa5\xb3\x9f\xc4\x25\x54\xc4\x50\xc1\x35\x31\x58\x4d\xee\x03\x5d\x95\x07\xb0\x6c\xc2\x52\xb5\x53\xa6\x5e\x52\xed\x94\x99\xdc\xa3\x30\xa4\xd8\xa1\x31\x61\x3a\x0b\xae\xed\x34\x7a\xc3\x7d\xb1\xa0\x25\x75\x77\x91\xa5\xd2\xb5\x2e\xa3\x95\xa5\x00\x2d\xba\x30\x67\xc2\x15\x9a\x52\xe1\x00\xa3\x4c\x2d\x2a\x8d\x3a\xb4\xf5\x53\x73\x44\xd3\xf3\xc3\x99\x28\x9a\xe9\x79\xce\x6e\x85\x13\x0e\x05\xa2\x66\xa8\xf2\xfd\x72\x38\x54\x73\x4c\x92\x0e\x47\xc2\x1a\x76\x24\xf6\x08\xb3\xe4\x3f\x27\xc4\x48\xb7\xd5\x10\x69\x64\x42\x8c\x18\x5f\x03\xc6\xab\x7d\x75\x68\xcc\xd5\xe8\xbc\x59\x9c\x44\x68\xe9\xfb\xe4\xe8\xa3\x67\x84\x1e\x35\xc4\x1c\x59\x11\xfe\xcf\x89\x22\x5a\x20\x7e\x48\x21\x24\xd4\xa3\x80\x10\x2c\xc1\x1f\xa6\x53\x8d\xd2\x41\x25\xaf\xee\xa8\x62\x85\xf0\x77\xfa\xc3\xe7\x05\xee\xe3\x57\x5d\x11\x09\x7d\xfa\xee\x48\xf7\x22\x80\x51\x95\xc6\x51\x5b\x97\xdd\x0b\x41\x95\x00\x0f\xba\x17\xa8\xdc\x9a\x61\x51\xaa\x6f\x95\xaa\xcf\x9c\x34\x8f\x42\x94\x3e\x28\xb9\xfc\xa2\xcb\x69\xd1\x53\xca\xf2\x08\xef\x52\x4a\x5b\x8f\x7f\x0f\x56\xd3\x0b\x4a\xf5\xc9\xbf\xd6\xfa\x17\x5d\xab\x9d\xf5\x0b\x45\x71\xb3\x02\x6d\x70\x7c\x2f\x64\x29\x64\xda\xb4\xa8\x23\x5f\xf6\xac\x90\x97\xaa\xab\x58\x2a\x5e\x29\x0c\x8b\x4a\xce\x5f\xaf\x21\xba\x72\xaa\xb0\x72\xb2\xb6\x66\xbe\x7f\x21\xf6\xec\x45\x4a\x87\xba\xa8\xb6\x61\xec\xe9\x04\xc7\x15\x51\xa8\xf9\x46\xc9\x93\x03\x02\xe6\x71\xfa\xf1\xd7\x18\xd3\xe1\x4d\x42\x8d\x47\xcb\xb9\xf8\x31\xaf\x7a\xc8\x89\x1d\xdc\x23\x15\xef\xf1\x8a\x80\xef\xd8\xf0\x40\xab\x56\x40\xce\x68\x32\x68\xe2\xba\x82\x3e\xa3\x33\xc1\x63\xf2\x06\x84\x92\xe2\xbb\xba\xa9\x02\x28\x25\x0e\x73\x96\x19\xf4\x28\x85\xd7\x88\xde\x46\x85\x80\x0d\x9e\x8b\x2c\x15\x77\x92\x13\x96\xab\x4f\xf3\xd5\xe1\x5d\x66\xee\x9d\xeb\xb4\x6c\x16\x5d\x07\x60\xe8\xb5\x7f\x25\x06\xda\xaf\x92\xe6\xbf\x61\x85\x5a\x7a\x89\x5e\x89\x81\xf8\x56\xac\xad\xe9\x07\xbb\x1c\xeb\xac\x96\x03\x85\x10\xdf\xfd\x82\xb5\xa6\x7c\xeb\xbf\x5e\x89\xc7\xe9\x74\x86\x26\xb6\xe8\xa9\xe0\x9b\xce\x9e\x28\x9c\x2f\x7a\xdc\x12\xb5\x81\x20\x65\xde\xba\x0e\x42\x45\x5f\x14\x99\x88\x4b\x13\x6d\x41\x56\xc2\x4a\x44\x1e\xd4\x75\xa2\x2a\x2d\x42\xb5\x2f\x4a\x35\xcf\x31\xb1\xb6\x89\x4c\x7b\x83\xb5\xbe\xe8\x76\x85\x99\xc4\x10\x33\xdd\x86\xb7\xc6\x3f\x00\xd5\x57\x5a\x43\x6d\x8e\xc2\xc4\x2c\x50\xa9\xa0\x64\xb3\x3a\x08\x83\xcf\xda\x5d\xd7\x6f\x36\x25\xa5\x49\x2f\xe8\xfe\xbe\xe8\xf7\x56\xe3\xb4\x14\xbd\xc1\x6a\xaf\x0d\xfb\x95\x52\xd2\x93\xa1\xd8\x6b\xb1\x4a\xdb\x43\xbd\x49\x5c\xe6\xe5\x48\x04\x57\x0f\x0c\x26\x28\xa3\xe4\x01\xb4\xf1\x2b\xce\xa4\x82\x67\x23\xe6\x1a\xba\xcb\x54\x4c\x06\xf3\xb6\x94\xd1\xdb\xb8\xcb\x4c\x63\x2e\x06\x8e\xc5\x58\xef\x81\x0b\x32\x20\x2a\x96\xb5\x26\xaa\x12\x67\xd4\xeb\x4d\xff\x4e\x38\xcd\xee\x40\xb0\x21\xe0\x23\x5c\xdd\x61\xb6\x23\x9d\x1f\xae\xb7\xba\xba\x2a\x54\x0b\x62\x75\x95\x1f\x5b\x41\x7d\xfd\xde\xaa\x62\xc2\xab\xbd\x8b\xa1\x6d\xd6\x71\x5f\x99\x2a\x66\x1d\x3a\x1d\xae\xe1\x9b\x6f\xa7\x7a\x7b\xa8\xfb\xc3\xd2\xed\xa4\xb1\x0f\x68\x1c\xb0\xc6\x86\x13\xe6\x19\xa0\xdd\xd7\x4e\xc7\x8e\x8b\xdc\xe3\x6b\xd2\x8f\x52\x4e\x71\x66\xab\x31\xdf\xb5\x89\x6a\x68\x66\x62\x2c\x58\x2a\x81\xb5\x39\x18\xd9\x92\x0a\x3d\x24\x88\x5d\xd7\xcb\xd7\xc7\x20\xbc\x87\xc7\xda\x9c\x08\x93\x2a\x2b\x69\x59\xe7\xc5\xfe\x9e\x7e\x3d\xb9\x10\xdf\xda\x47\xc9\xae\xf5\xa6\x6d\x62\x2f\x9b\xa2\x35\xf7\x3c\x51\x2c\xea\x4d\xaa\xf8\x00\xdd\xf9\xa4\x91\x88\x53\xd4\xf2\x70\x5e\xd5\x5c\xc4\xa9\x13\x6b\x3a\x8f\x8a\x52\xf4\x91\x5a\x9c\x6e\xec\x68\x2f\x9b\x05\xec\x21\xfa\xdc\x52\xe3\xda\x35\x10\x38\x31\x80\x03\x8e\x44\xc3\xe4\x51\xc1\x53\x00\x03\x5d\xf1\x67\xf2\xb2\x48\xb3\xbb\xff\x8f\xbd\x77\xdd\x6e\x23\x47\x12\x84\x7f\x4b\x4f\x01\x6b\xb6\x4c\xd2\x4a\x51\x94\xe4\x5b\x51\xa6\x3d\x2a\x5b\xee\xd2\xb4\x2d\x79\x2d\xb9\xab\xbb\x55\x6a\x1b\x64\x82\x24\xac\x64\x26\x2b\x91\x14\xc5\xb6\xf5\xbd\xc4\xfe\xdd\xa7\xdb\x27\xf9\x0e\x22\x02\xb7\xcc\x24\x25\x57\x57\xcd\xcc\xee\x29\x9f\xd3\x5d\x54\x02\x08\xdc\x02\x81\xb8\x03\x8f\x7e\x10\x09\xe0\x05\x97\xb5\x03\x97\x94\x52\x28\xbd\x4f\x4e\x83\x58\x17\x2d\x7c\x43\x1e\x03\x72\xe6\xa8\x40\xb7\x99\xad\xd8\x8a\x88\x14\x17\xbc\xf5\xbb\x49\x52\xa7\x7a\x74\xdc\x97\x5c\x43\x45\x61\xf0\x10\x75\x39\xb9\x41\xe6\xde\x8b\x02\xe9\x81\x70\xa6\x14\xf6\x5c\x36\x48\x0d\x78\x6a\x45\x82\x70\xc6\xdf\x6a\x81\x28\x9b\x20\x34\x07\x33\xe0\x69\x8a\x5c\xed\x92\x48\x1c\x83\xf3\x85\x0a\x39\xea\x5a\x1e\x24\x88\x9d\x59\x1a\x83\x12\x3a\x6f\x54\x03\x94\x2c\x53\x3e\xcd\xc5\x15\xb2\xae\xc1\x9b\xac\xc0\xdc\xab\x82\x89\x89\x2c\x0a\x97\x47\xcf\xa9\x3b\x67\xb9\xb5\x07\x87\x3d\xbb\xe7\xec\x8c\x88\x3a\x70\xf1\xca\x26\xe0\xc7\x0b\x83\xe8\x54\xf9\x8d\x10\x8c\x0b\xfc\x71\x30\x8c\x97\x7a\xa7\xa2\xf1\xf5\x93\xf4\x5a\x6c\x28\x0d\xc4\x17\x67\x10\xce\x93\x40\xd7\xab\x19\xf7\x00\x8e\x6b\x23\x53\xdb\x26\x7c\x09\x74\x02\x4f\xa2\x85\x6d\x48\x67\x6b\x27\xec\x33\xf0\x7e\xef\x3b\x7b\xe4\x1f\xe7\x83\xdf\x33\x56\x08\x58\x25\xc7\x34\x6e\x42\xd6\xc0\x1a\x36\x1d\x13\x22\xe9\xb1\xe0\x4b\xe2\x5e\x38\xbe\x13\x38\x96\x84\xa6\xe0\x76\xd2\x93\x72\x60\x91\x66\x14\x1f\xe4\xed\x54\x33\xad\xef\xdc\x63\x34\x37\x37\x71\xf8\xcf\xbc\xf9\xdd\xbf\x6f\xc1\xf7\x6c\x07\x8e\x11\xb5\xd1\x2d\x81\x58\xa2\x81\x59\x50\x66\x55\x7c\xee\xd5\xb8\xeb\x10\xe8\xd2\x6d\x47\x4f\x1b\xd6\xc0\xc4\xea\x56\x96\xf2\x34\xd4\x5e\x11\x1d\x8a\xd0\x31\xa8\xae\xa7\xcd\x4d\x17\x6c\xea\x6a\x9a\xec\xd8\xe5\xaa\xcb\x66\xd8\x63\x3b\x9d\xba\xb9\xb9\x54\xd8\x2b\x21\x2d\x69\x48\xc9\xae\x2b\x4d\x99\x7b\xdb\xd0\x1d\x23\xbc\x29\x2d\x2d\xa0\xe3\xed\x65\x27\xa8\xc3\xe1\x25\x58\x5c\xc1\xe3\x25\x9b\x50\x8b\x0e\x3e\xc4\xc7\x77\x80\x57\xd7\xee\x49\x5d\xbb\x87\xbf\x7f\x4c\xec\x69\x68\xb1\xa8\xdc\x5c\x32\xf5\xed\x75\x5a\x74\xf6\xdd\x31\xf0\xfe\x95\xe0\x78\x41\x1b\x59\x97\x10\xee\x37\xb9\xa7\x7e\xcd\x2d\xf5\xc7\x45\xf5\xff\xf2\x45\xb5\x6d\x62\xd0\x69\xcb\x37\x77\x20\xb2\x9d\x96\xfb\xc1\x36\x73\x17\x0b\x4f\xd0\x33\x58\x09\xea\xf0\x5f\xbe\xe4\xfe\x9f\xbd\xa7\xb4\x8c\x5d\xb2\x40\x41\x17\x91\x23\xd6\xad\x7d\x3f\xe3\x1d\xc2\x0a\xde\xb8\x5e\x71\x7b\xdd\x72\x79\x2d\xb1\x81\x55\x47\xe0\xd9\xde\x66\x69\x61\xd2\x07\x38\x53\x92\xb5\xea\xe0\xf0\x9e\xf7\xd8\x1e\x2c\x97\xb9\xbe\x1e\x47\x6c\x83\xed\x7d\x7c\xfc\x62\xc3\xc2\x0a\xba\xa4\x0b\xb1\xae\xcf\xc0\xea\x85\x00\xb7\xd8\x5e\x64\xe4\xae\x3b\x5c\x97\xa5\x8e\xf0\xc6\xfc\x96\xae\xf6\x5a\x4b\xee\xd3\x0a\x64\xbc\x52\xef\x0c\x7b\x67\x27\x62\x4f\x5a\xdf\x76\xe3\xb2\x3f\x2e\xdc\xbb\x5f\xb8\x2b\x54\x6c\xc6\x4e\x16\x64\xcc\x87\xa7\xe7\xc0\x6f\x10\xed\x09\xe8\xca\x41\x17\xae\x7d\x7a\xc1\x26\x5b\x2f\x3f\x3d\x41\xee\x18\xb5\x16\x25\x42\x08\xdf\x8d\x5e\xaf\x50\x3f\xc1\x27\x99\xe9\x89\x60\xdd\x61\x36\xac\x87\x5e\xbe\x44\x1d\x61\x7e\x15\x88\xbb\xbe\x31\xb0\x94\xd6\xcf\x70\x1e\xa0\x5a\xf0\x59\x0f\xba\x47\x03\x41\xd7\x73\x67\xd7\x7f\x24\x1f\x03\x0d\x2d\x3a\xaa\x56\xeb\xc7\xa6\x7e\x5c\xa9\x8f\x83\xfd\x01\xde\x02\xa8\x11\xba\xc9\x4a\x1c\x1a\xe0\xe0\x24\x91\xe2\x02\x9a\x1b\x9b\x60\x0a\xf9\xcb\x20\xc2\x47\xf9\xbe\x11\xbe\x1a\xd3\x86\x4f\x9a\xb7\x06\xc5\xf5\x40\x4c\x8d\x2a\x7f\xd5\xcb\x1b\xca\xc4\x2d\x93\x49\xfd\xd1\xe6\xa3\xcd\x87\x2e\x91\x39\xb2\x63\x33\xb4\x8d\xb2\x65\x1b\x11\x64\xfe\x0d\x9f\xf4\x30\x98\x52\xb1\x94\xe0\xd8\x96\x98\x4b\x1e\x56\x01\x91\x05\xa4\xcd\x9a\x7c\x3a\x4d\xb3\x42\xb4\x8b\xeb\x82\x29\xbe\xa0\x7c\x10\x7b\x94\xf0\x48\x30\x0e\x0f\x1e\x50\xd8\x37\x24\x93\x90\x8a\x3d\x2c\x67\xeb\xf1\x70\x92\xf5\xdc\xfb\x4d\x10\x90\xeb\x97\x69\x12\x1f\x7c\x71\x39\x7c\xc8\x67\x9f\x44\x0d\x73\x70\xce\xbd\xba\x35\x49\xe3\x4a\x57\x16\x7a\x03\x7a\xf4\x01\x96\x97\xec\xde\x06\x05\x8a\xcc\x8f\xf1\x2a\xa3\x13\x19\x98\x67\x96\x49\x0c\x52\xee\xec\xb1\x07\xe1\x64\x81\x23\xd8\x64\x8f\xe8\x7f\x0f\x6b\x93\x3e\xb0\x8d\x9f\xd3\x78\x41\x2e\x73\x5d\xa6\x7f\x7e\x97\xc4\x98\x07\x5d\xff\xda\x08\x53\x4a\xa8\xad\xe7\xd4\x65\xa4\x7f\x3b\x83\x0a\xe5\x85\x20\x5a\xe3\xd3\x81\xdf\x53\xf2\x20\xe5\xa8\xa6\x62\x98\x8a\x07\xfd\x04\x51\xc2\x30\x69\xd9\x03\xaf\xc0\xae\x87\xe9\x36\x97\xe8\x2d\xcf\xd5\xd0\x63\x14\xbe\xab\x1f\x2f\x7b\xcf\x18\xd9\xa5\x9c\x09\x1b\x71\xfa\x79\x8f\xed\x3e\x7a\x12\xb1\xd8\xfe\x09\x81\x73\xf6\xaf\x87\x75\x62\x0f\x4f\x10\xe1\xc8\x41\x09\x47\x12\xd3\x7f\xa9\xf1\x6d\x42\x90\x16\x69\x96\x34\xdd\xaf\xcb\x6a\x60\x53\xcc\x94\x1d\x14\x73\x9e\x56\xdc\x88\x0d\x7f\x6d\x1d\x04\xed\x95\x62\xb2\x1e\xd8\xf0\x72\x7f\x19\xc0\xc3\xdc\x2d\x84\xfe\xd3\x5f\x8a\x88\x6d\x40\xf8\x23\xe6\x6d\x87\xef\x26\x61\x49\x09\xdc\xb3\x9e\x8d\x44\x74\x20\x9f\xf5\xec\xdb\x6e\x1e\xe0\x67\xee\xe4\x97\x72\xa4\x14\x59\xc6\x26\x3c\x5d\x84\x3d\xd5\x9c\x92\x7e\x42\x68\xd3\x65\x94\x36\xaf\xe4\x41\x06\x1d\x6d\xe1\x46\x3f\xa2\x0c\x3e\x59\xc1\x36\x77\x1f\x3d\x82\xe7\x47\x0b\xf4\xe5\x48\x99\x4f\xd7\xf0\x1c\x07\x7e\x50\x06\xd0\x4e\xc4\x18\x05\x2a\x06\x15\xfa\xb6\xab\x87\x11\x63\x0f\x5d\x4f\x5b\x7b\xb7\xf4\x03\xf4\x50\xef\x24\x0a\x1d\xf0\xeb\x99\xc3\x07\xfd\xb7\x13\x3c\x96\x2f\x42\x2c\x20\xf9\xc9\x46\x64\x37\xfc\x5c\x37\xbd\x30\x4e\x87\xc1\x68\x6b\xe8\x26\x54\xae\x10\x4c\xe4\x4a\x4d\x5c\x75\x7d\xdf\x78\xa9\x82\x81\x1c\x68\x13\x83\xf8\xa8\x42\x7d\xd4\x9f\x88\x04\x05\x2a\x83\xe0\xc6\xb7\xeb\x46\xf9\x95\xaa\xa1\xd5\xb5\xfd\x26\xb2\xf8\xb5\x1d\x13\xeb\x10\x97\x3a\xae\xb8\x01\x2f\x23\xcc\x52\xdd\xa1\xeb\xdf\x89\xd1\xc4\x64\x25\xee\xe1\x53\x7c\x35\x53\x2a\x06\xcf\x96\x66\x39\xc3\xd7\x4d\x7d\x7d\x8e\x7b\xba\x98\x27\xa3\x2c\x97\xc5\x78\xd2\xd5\xb0\xb6\xb0\x8d\x74\x7e\xfe\x83\x2c\x8d\xe1\xb5\x2a\x45\x6f\x53\x81\x49\x88\x17\x52\x0d\xa5\x88\xbb\x26\xcd\x74\x4b\x73\x13\xb9\xa0\x8c\x26\x9a\x59\xdc\x9a\x66\x79\x41\x4f\x92\xa5\x45\x9e\x25\xe0\xd6\xcc\x07\x85\xc8\x11\x14\x06\x80\xa0\xaf\x96\x71\xa6\x62\x6c\xa3\x9f\x70\x78\xd9\x4f\x15\x1b\x90\x9b\xe1\x71\xc4\x76\x1e\xb6\xdb\xbb\x8f\x22\xb6\xfb\xb4\xdd\xde\xdb\x69\x99\x8c\xd0\x7d\xd3\xa9\x54\xa1\x97\xc6\x34\x97\x29\x75\x6d\xba\x5c\xd5\xe3\x7c\x0c\x39\x29\xb0\xc7\xef\xd9\x97\xb3\x83\x1f\x6e\x22\xb6\xd3\x61\x5f\xde\xbc\xd6\x3f\xf6\xd8\x97\x97\xef\x6f\x22\xb6\xb7\x8b\xf9\x46\xda\xb8\x52\xf4\x66\x2c\xa4\x83\x9c\x4b\x25\xe8\xf3\x59\xb0\xbc\x53\x9e\x17\x92\x27\xc9\x62\xe5\x72\x68\xfe\x8b\x71\x1c\xd2\xc6\x28\xe7\x0b\x1a\x0d\xb0\x60\x52\x31\x39\x4a\x21\x48\x0f\x2c\x46\x52\x81\x8d\x09\xef\x9f\x70\xfb\xe0\x49\xc0\x2f\x3f\x1c\xbe\xb9\x89\xd8\x53\xf6\xe5\x87\x53\x3d\xfc\x1d\xf6\xe5\x2f\x67\xfa\xc7\x2e\xfb\xf2\x5a\x4f\x68\xf7\x31\xfb\x72\xfa\x41\xcf\x71\xf7\x09\xfb\x72\x78\xfa\xf2\x66\x59\x82\x3b\x32\x09\xc2\xeb\x62\xd9\x90\xd9\x13\x6a\xed\x82\xe1\x65\x88\xc3\xfa\x68\x1f\xdf\x35\x02\xc7\xb6\x96\x61\xf8\xe0\xf2\xe3\x84\xab\x4b\xe3\xca\xac\xef\x6e\xf8\x1b\x5e\x73\xe4\x83\xcb\x2d\x3d\x67\x30\x4f\x17\x26\xa3\x98\x12\x05\x32\xbe\x21\x1e\x60\xfc\xbd\xc6\x05\xac\xd6\xb9\x1e\xee\x0d\x87\x83\xce\x93\x21\x84\x8f\xa7\x3c\x5f\xb0\x9d\x9d\x9d\x9d\x4e\x67\xc7\xfb\xd7\xc1\x7f\xf4\x97\x65\x3d\x31\xb7\x90\x1d\x5d\xcf\x83\x66\x5d\xd2\x6c\x12\x08\x38\x6a\x9a\x38\x6b\x04\x2f\xc4\x35\xb0\xb5\xcd\x0d\x7f\xfc\x1b\x2d\x9c\x41\x7d\xa4\x71\x8f\xed\xed\x80\xd6\x28\xf2\x3b\xc5\xf7\x06\x7c\x26\xb6\xe9\x95\xde\xd7\x45\xf7\xef\x83\xed\x7b\x69\x50\x32\x32\xb1\x8e\x8b\x25\xfe\xce\x3c\x6d\x5c\xf5\x93\x72\x73\x71\xf3\x80\x93\x50\x3f\x0f\xe4\xac\x5d\xff\xdf\xd7\xf5\xcf\xbe\x7e\x0d\x22\x91\xcb\xd6\x01\x5b\xcb\x39\x7f\xb9\xba\x7b\xab\x7c\xca\xec\x74\x34\x7d\x32\x97\x8f\x5d\xdb\xbd\x5d\x0a\xe3\x26\x2f\xf6\x8a\xd3\xda\xed\x2b\x57\x5d\x38\xd3\x53\xc5\xbd\xcc\x91\xb9\x70\xe3\x35\xa9\x0d\x97\x10\x57\xb0\x6b\x84\x3e\x48\xa7\x9a\x0b\x3e\x61\x42\x82\xeb\x84\x54\x4c\x4c\xa6\xc5\x42\xb7\x1c\x73\x2d\x9a\x25\xa0\x71\x8e\x59\x13\xc8\x40\x69\x2b\xc0\xb5\xcc\x59\xd8\x2b\x5b\x5c\x7a\x6e\xc9\x8f\xe6\x1f\xf2\x44\x89\xdf\x25\xf2\xa7\x26\xca\x1e\x6f\x21\xfb\x3c\xa1\xc9\xbe\x99\x8a\x39\xfb\x67\x22\xfb\xde\x5b\x40\x1e\xf1\xb0\xa9\xb6\x20\x72\x9b\x30\xee\x5e\x35\xdb\xd6\x17\xf2\xe4\x08\x73\x9c\x05\x99\x25\xaa\x69\x0c\x8c\xfb\x35\x69\x12\xcc\x03\x6a\x2e\x49\x43\xa0\x6f\xf0\xd3\x46\x50\x50\x6c\xbc\xaa\x5d\x1c\xb4\x8b\xfd\x76\x61\xe6\x06\xaf\x1d\xf1\x5a\x51\x29\xc5\x83\xf1\xe8\x58\x1d\x0f\x5e\x9b\xdf\x80\xf2\x38\x83\x5c\x45\xf2\x11\x7e\x1a\xca\xc4\x28\x38\x82\x9c\x0a\xbf\xf3\x6b\x44\x7e\x60\x79\x75\xab\xb1\xb4\x14\x1a\x4e\x1f\x41\x68\x4d\xb8\x2a\x56\xc6\x87\xdb\xe0\x70\x23\xdb\x4c\x67\x66\xfa\x18\x1c\x9e\x8c\x3c\x80\xfb\x65\xc3\x4a\xa5\x3e\x48\x60\xdc\x8f\xee\xda\x86\x58\x77\xe4\x86\xf4\x2d\xac\x3c\xf5\x1b\xb4\x43\xbc\xd6\xeb\x6b\x24\xb0\x80\xa3\x6e\x06\x0f\xa3\x3f\x7b\x86\x62\x7e\x13\x00\xbc\x60\x3b\xe0\x52\x09\xcc\x34\xf3\xa2\x28\xc2\x87\xcf\x59\x5d\x04\xbd\xbf\x4c\x1a\xbf\x91\x57\x05\xa7\x63\x92\xb1\xe9\x31\xb1\xdf\x69\x6f\xf5\xa2\x20\xdd\xa2\x84\x2b\x34\xe6\x0c\xa2\xfb\x8c\x40\x98\x64\xd9\x25\xd7\xe3\x81\x65\xa2\x57\xf7\xdb\xf8\x6c\x27\xe5\x76\x56\x9a\xcb\xc2\x4c\x25\xd9\x90\xf2\x8e\x3f\x61\x13\xbe\x60\xb9\x98\x70\xc8\x4e\x5d\x4a\x0b\x51\x43\x34\x20\x0c\xdf\xb0\x1a\xc1\xfa\x07\x2f\xd0\xeb\xe5\x37\x92\xcb\xb2\x30\x8c\xd2\xbb\xa7\xcc\x7f\x2f\xe7\xf7\x3a\x2d\x25\x05\xaa\x9f\xfd\xac\x3e\xa0\xa2\x1b\x3c\x63\xa7\xcc\xa8\xd7\x29\xbb\x10\xe4\x5f\x03\x0c\x41\x46\x89\x32\x67\x40\x70\x8e\x86\x2b\x62\xb7\x5d\xfa\x23\xe8\xff\x64\x52\xb6\xe7\xea\x95\x85\xa9\xff\x3e\x47\x34\xb2\xcf\x30\xea\xd3\x95\x65\x2c\x4b\xe2\xff\xc2\x63\x0b\x0f\x6e\xa0\xba\xac\x1f\x79\x71\x1e\xfd\xfd\x40\xf1\xab\xd7\xd3\x0f\x02\x49\xe9\x5e\x0e\xcc\xa1\x4e\x85\xd9\xd9\xaf\xe8\x5e\xbe\x5d\xc1\xee\x74\xd6\x81\x7a\x8c\xcd\xd2\x44\x28\x55\xa2\xb3\x7a\xb2\xe0\x3b\x1e\xfb\x5c\x5b\x22\xae\x44\x62\x12\x98\x58\x7f\x4e\x5f\x6c\x84\xb5\x90\xca\x30\xcf\xc4\x14\x06\xb1\xd4\x6d\x55\xe4\x93\xb6\xe5\xed\xc1\x60\xf3\xf7\x8f\x1f\x8e\xff\x7c\x7c\xf2\xd3\x71\xe8\xbb\x1d\xd6\xab\x13\x0b\x02\xbb\x53\xc5\x1f\xf9\x36\x53\x41\x55\x51\xef\xdd\xd5\x2e\x53\x7a\x55\x39\xa0\x87\x50\xab\x3a\xf5\xd5\xa5\x06\x86\x53\xa4\x56\x94\xa7\xd5\x01\xc4\xb7\x0f\x00\x74\x04\xbf\xc9\x08\x68\xd1\x4a\x3e\x9c\x4b\x90\xd4\xbe\xfd\x54\x8a\xd6\xc2\x77\x78\x99\xb5\x47\x78\xde\x1f\x2e\x86\x1b\xcc\x16\xc9\x2c\x0e\xd2\x72\x94\x4c\x1b\x6d\x82\xb2\x6d\x77\x73\xa9\x99\xc5\x12\x34\x7c\x96\xaa\x98\x67\x86\x86\xe9\x41\x8f\x44\xe1\x6c\x5f\x66\x68\xbe\xb2\xf2\x6e\xf6\x2f\xe6\x9e\x4d\x08\x8f\x63\xd9\x18\xe6\xbc\x7a\x57\xd0\xe0\x76\xf0\xe4\x17\xae\x8c\x7b\xd2\x20\x10\x91\x98\x25\x21\xe8\xa8\x6c\x55\xfe\x6c\x8f\x6d\xb2\x27\x2d\x78\x1b\x6e\x2f\xe0\x54\x5d\x65\xff\xb9\x91\x52\xfd\x15\x38\x95\x4d\x35\xfa\xcc\x9a\xdf\x25\xb3\x96\x41\x26\xfb\x17\x90\x85\xef\x92\x99\x3e\x4f\xec\xbb\x59\x29\xf1\xb1\x37\xdc\x28\xb4\x16\xb8\xa1\x95\x4c\x07\x01\xf5\xaf\x22\xa9\x0d\x77\x6c\x79\xde\x0c\xfe\x44\x9f\xf5\x6c\x97\x2d\xf6\xc5\x5f\xad\x80\xe2\xde\xac\x97\x1f\x5d\xdc\xde\x66\x64\xe4\xd7\x4c\xf1\xbd\x1e\x6b\xea\xfb\xe5\x41\xab\x13\xb1\x8d\x24\x53\xc0\x1c\x18\xf3\x7e\x3d\x54\xf8\xcb\x8c\x9d\x6d\xb2\x47\x98\xf8\x12\xc3\x6c\x42\x12\x4a\x51\x21\x44\x3d\x9b\x41\xb3\x87\xe1\x1c\xb4\x50\x8e\x23\xea\xb1\xad\x9d\x96\x97\x3f\xe3\x61\x17\xb0\x7b\x9e\xe5\xb1\x33\xdb\x19\xbc\xf1\x8e\xca\x99\x3e\x54\x02\x67\xa0\x27\x86\x57\x22\x05\x11\xd9\x84\x27\x7a\x24\x6f\x8e\xce\x3e\xfe\xf0\xe1\xf5\xe9\xd1\xdf\x0f\xd9\x73\xf6\x13\xbc\xc1\x61\x0e\xc9\x89\xd1\x41\x91\x03\x75\x83\x62\x5d\xa6\x79\x36\xc0\x23\x3d\xc1\xc4\x2d\x3c\xc5\x96\xe6\x1a\x85\xdb\x0b\x9e\x1d\xf7\x49\x81\x7f\x55\x6a\x16\x20\x62\x7d\x31\xe0\x33\xe5\x88\x84\xe6\x10\xf0\xc1\x46\xe8\xa7\x2f\xf0\x99\x0e\xd0\xd9\xcc\x06\xba\xcf\xe1\x2c\x69\xb3\xa3\x70\xd8\xcf\x7a\xd8\x7b\xc4\x24\xc6\x5c\x0b\xc8\xde\x06\x4f\x56\xe9\x03\x96\xd9\x41\xe4\x3c\x55\xa8\x14\x33\xf7\x5a\x5a\x64\xa5\x8d\x0a\x8f\xfa\xdd\x65\x8a\xea\xd3\x84\xaa\xd0\x42\xf7\x68\x41\x77\xda\xeb\xa3\xbf\x1e\xbe\x02\x55\x86\x8f\x3f\xbd\x00\x79\xd7\xab\xfa\xf3\x66\x85\xdd\x5c\xc2\xed\x93\xb3\x45\x39\xcd\x45\x98\x8a\xb0\xf4\xa0\x7c\xe5\x19\xd2\xa0\xe7\x57\x7f\x3b\xbe\x63\xb7\x55\x7b\x55\xc5\xba\x8e\x29\x00\x2a\x46\x74\xfc\x5c\x36\x5b\x2e\x9d\x4c\x68\xc0\xb7\x52\xb2\x67\x38\x60\xc6\x48\xa4\xb6\x9e\xbb\xcb\x07\x63\x15\x7b\x81\xee\x9c\x02\xe8\xbd\x1b\x4a\xc9\x7f\x8a\x0d\xf7\x22\x92\xb9\x50\x28\x6f\xb7\x62\x13\x1e\x0b\x36\xc9\x62\xb6\xfb\x8f\xbd\xdd\x08\x0e\xa0\x66\x71\xc8\x35\x90\x72\xc6\x3c\xda\xd9\x65\x6f\x7f\x58\xb7\xe1\x7e\xb3\x37\x59\x3a\x62\xd2\xa4\x35\x13\x5a\xd0\x61\x7b\xbb\xe6\xf9\x5b\x56\x2b\x42\x13\x99\x00\xcc\xb2\x6f\x23\x79\xf9\xc2\xdc\x74\xab\x49\xfc\x61\x42\x7a\xbe\x96\x68\x23\x1f\x10\xae\xc6\xf3\xe7\x7b\x81\x25\xac\x52\x61\xeb\xc9\x03\xe8\xfe\xf7\xca\xfb\x74\xaa\x8f\xb8\xcb\x8d\x20\xd3\x61\x86\x66\x55\x9e\xd0\x03\x3e\xce\xaf\x92\x3c\x13\xd8\x7b\x72\x65\xc1\x34\x6b\x26\x5f\x57\x20\xc7\xd8\x74\x6b\x40\x63\x2a\x99\xe3\xf4\x81\x86\x1e\x5c\xca\x81\xe4\xd6\x78\x68\x9b\x10\x8e\xd2\xb4\xdc\x9a\x9d\xa5\xd4\x2c\xb1\x0f\x38\xfa\x99\x36\xb6\x5c\x9e\x8d\xe5\x79\x5a\x7a\x3d\xcc\xd2\x02\x0a\xef\x6d\x10\x28\x66\xc5\x47\xf3\x16\xa6\x4c\xed\xcf\xd8\x46\x16\x2e\x4b\x6e\xe2\x25\x52\x81\x6c\x28\x0c\x82\xa6\xdd\x33\xde\x4f\x57\x3d\x40\x5d\x0f\x04\xdf\xc5\xa2\x04\xcc\xa6\x71\x4d\xeb\xa4\xd2\x1a\x92\x9d\x0f\x82\x0e\x4d\x11\x39\x7b\xd7\xa7\x50\xd1\x52\x9b\xcd\x5b\x52\x5a\x33\x1b\x21\xe5\xb4\xb2\xc9\xa0\xce\x1b\xbc\xf4\xf4\x32\xe5\xa2\x34\x9e\xe2\xbf\x22\x41\x8a\xc9\xfc\xe1\xff\x33\x59\x40\x7a\x2b\x92\x7f\x78\xb9\x23\xd4\xb8\x45\x4f\xb0\xc3\xef\xb7\x07\x7f\xfd\xf8\xea\xe8\xf4\xac\xa9\x5a\x26\xe9\x95\x3d\xaa\x50\x21\x19\xe8\x8b\x0f\x5f\x19\xd7\x95\x61\x3c\x0e\xa5\x96\xb4\x0a\x5e\x7f\xa7\xae\x6c\x3e\x11\xb6\x61\x4f\x47\x97\x69\xd2\x08\x03\xb7\x79\x28\xfc\x75\x6d\x96\xf3\xc0\x94\x92\xbd\xb4\xea\x9d\xf0\xfd\xcc\xa5\xc1\x50\xea\x36\x09\x52\x4f\x35\xef\xb5\x50\xb1\x63\x05\xd1\x58\x2a\xde\x4f\xd0\x6c\x05\x7a\xdf\x58\x0c\xf9\x2c\x29\x54\xb4\x0e\xcf\x2c\x68\x36\x45\xa4\x60\x13\x93\x98\xfe\x81\xc4\x4f\x4d\xde\x78\x21\xfb\x32\x91\xc5\x42\x03\xa7\xd7\x10\xce\xde\x7f\x38\x7e\x79\x70\x76\x88\xea\x1a\x38\xbb\x9a\xfc\xe7\x0b\x50\x3d\xcd\xb4\x38\x2c\x87\xc4\x5b\x4c\xf3\x6c\x28\xd1\xe0\xa6\x45\x83\x22\x9b\xd6\x50\x20\xd0\xe5\x13\x15\x40\x66\xcf\x1d\x1a\x8d\xf0\x3b\xc3\xe1\xb0\x85\x68\xad\x79\x3d\x27\x49\xef\xba\x6c\x8c\xdb\xee\x51\x60\x9e\xb2\xd9\x74\x2a\x72\xcc\x05\xe9\x79\x6b\xd9\x7b\xcb\xcf\x4b\x09\xcc\xaa\x25\x11\x10\xb0\x67\x3a\x7f\xf0\xd4\xb9\x85\xf8\xe5\xaa\xc8\x21\xa5\x1e\x3e\x64\xae\xa7\xf0\x11\xfe\xd6\xb5\xa9\x01\xd8\x44\x62\x97\xb6\x3e\x2e\xa7\x68\x8f\x5d\x8e\x76\x83\x71\xde\x28\x36\x7b\xe1\xd6\xeb\xca\x0f\x7c\x6b\xc9\x03\xd6\x7c\xc4\x36\x83\x5c\x33\x31\xe5\xb0\x27\x78\x37\xd5\xb9\x81\x7d\x6b\xcf\x54\xa8\x7b\xcf\xc6\x2e\xfb\x77\x33\x4d\x2c\x51\x3a\xce\x66\x05\xfb\xff\xbe\x4b\xe2\xe6\x77\x49\xfc\xdd\x77\xf0\x72\x8b\x81\x50\x95\x3a\x02\x1a\xeb\x91\xde\x72\x93\x9d\x4e\xe7\x0d\xdb\xf2\x6a\x3c\xd0\x5f\xb6\x6d\xe3\x96\x9d\x08\x32\x87\x26\xff\xed\x33\x3f\xc1\xd5\xf3\xe7\x3b\x2d\x17\x7f\xad\x71\xc3\x9b\xed\x33\xd6\xb4\xd0\xc2\x8a\xfe\xa2\xe7\xee\x86\x0c\x57\x4e\xff\x3f\xbe\x83\xe1\xf9\x69\xf9\x98\xa9\xf1\x51\xb5\xfd\x64\x35\x5b\xee\xf5\x93\x9f\x04\x65\x17\x80\x6c\x98\xb2\x58\x50\x32\x0a\xaf\xb6\x61\xe6\xb3\x21\x9b\xe7\x7c\xca\x73\xc0\x56\x5e\xb0\xc7\x0f\xff\x8c\xdc\x50\x96\xb2\x9d\xc7\x64\xa1\x1d\x8c\x65\x4a\xde\x88\xa6\xa1\xcf\x85\xe3\x13\x01\xb9\xd0\x57\xea\xa0\x80\x67\xa2\x10\xc6\xe3\x87\x7f\xde\xda\x21\xf9\x98\x98\xa7\x9b\xf5\x75\x71\x3d\xcd\xf2\x42\xb5\x8d\xb5\x47\x5f\x6c\xe6\xf7\x7e\x50\xea\x33\xf3\x54\xc9\xff\x14\x56\xf6\x34\x95\x06\xa2\xf7\x29\xac\x8b\x6c\x4b\xcf\x31\x18\x61\x31\x66\x75\xed\x39\xd5\xf2\xfe\xfa\xfa\x4d\xf4\x65\xa3\xdd\xde\x86\xdc\xaa\xdb\x83\x6c\x32\xc9\xd2\x8d\xee\xee\xd3\x9b\x8b\x68\xef\x69\xf7\xdc\xb0\x2c\x4d\x72\x9d\x8c\x26\x59\x3c\x4b\x44\x44\x50\x5b\x5f\xd6\x1b\xb8\x6a\x7a\x85\x1a\xfb\x48\x2d\x5f\xb6\xd8\xce\xf7\xdf\x3f\xda\xda\xed\xec\xec\xb1\xff\x10\x3c\xdd\x4a\xb2\xd9\x94\xfd\x89\x4b\x3d\x3a\xbd\xda\x6f\x79\x7e\xc9\x0e\xe2\x44\xe4\xa6\xc1\x6e\x67\xe7\xa1\x6e\xf0\x84\xfd\x45\x16\x3c\x59\xb0\x77\xb3\x7f\xe6\x12\x35\x3e\x07\x69\x9c\x8b\x05\x3b\x9b\x4d\x65\xa1\x64\x4a\x04\x01\x08\xb2\xca\x86\xc5\x9c\xa3\x9f\xc4\x34\xcf\xf0\x31\x87\x06\x57\x5b\x52\x35\x22\xfb\x6a\x17\x4f\x17\x4c\x5c\x03\xa1\xd2\x5c\x8e\x66\x83\xa5\x88\x35\x90\x39\xcf\x73\x9e\x16\x8b\x36\x3b\x4a\x59\x9a\x41\xc6\x8b\x82\xcd\x65\x92\xa0\x2e\x67\x56\x8c\x33\xf0\xe9\x60\x63\x88\xe9\x85\xc7\x6d\xe8\x8d\x9d\x05\x8b\xf9\x84\x8f\x84\xd2\x80\x78\x2e\xe9\xa1\xc9\x6c\x82\x6c\x81\x79\xfc\xd7\x1b\x65\x9b\x86\xfe\x4e\xe4\x13\x89\x92\xa6\x54\x6c\xa4\x47\x80\x8f\x90\xf1\x74\x91\xa5\xc2\x3d\x19\xe2\xcf\xd0\x74\x3a\x9d\xe5\xd3\x4c\x89\x08\x73\x22\x1a\x0d\x96\xde\x39\x91\x43\xce\x0d\x3e\x9d\x26\x72\x60\x7c\x73\x81\x9b\xcd\x18\x4f\x0a\x91\xeb\xfb\x03\x9d\xb1\xed\x9b\x68\xfa\x7e\xd2\x90\x86\xb9\x10\xc9\x22\x62\x6a\xd6\xff\x2c\x06\x36\xcf\x90\xf3\xf6\x30\xc7\x00\xd2\x14\xd1\x3c\x76\xd0\xd1\x36\xcb\xe5\x48\xa6\x95\xd9\x22\x13\x8c\x2f\x0e\xb2\x89\x54\xde\xab\x2b\xfb\x6c\x91\xcd\x6c\x39\x92\x88\x41\xc2\xe5\x04\xdd\x42\x74\xe1\x3c\xcf\xcc\xdb\xcb\x00\x9e\x27\x6e\x19\xb5\xf0\xad\xeb\x54\x16\x09\x21\x69\xb4\xd1\xd8\x10\xcf\x06\x85\x5e\x00\xc6\x07\x97\x69\x36\x4f\x44\x3c\xa2\x34\x35\x00\x97\x6a\xb0\x38\x1b\xcc\x26\x46\xe5\x47\xa2\x7f\x9f\x40\xf1\xe9\x34\x17\x03\x09\x76\xeb\xfe\xac\x30\x99\x68\xe8\x34\xc4\x7a\x43\xd9\x6e\x9b\x1d\xe8\xd5\xd5\xcc\x77\x36\xcb\x07\x82\x5d\x89\x5c\x81\x5b\x91\x11\x03\xa6\x09\x97\x69\xb2\x60\x13\x9e\x5f\x8a\x18\x1c\xe4\x66\x83\x31\x6e\x8e\xb7\x4a\xd8\x67\xb8\x54\xba\x32\xa6\xe9\xa9\x5f\x0b\xdd\x66\x8f\xf2\x01\xa7\x59\x21\x07\x02\x8c\x4c\xb4\xec\x98\x1d\x22\x66\x90\x7f\x0a\xc7\x08\x18\xaa\x11\x89\x06\xeb\x3f\x8f\xd7\x5e\x77\x42\xca\xdf\x4f\xc1\x94\xdd\xb4\x7e\x2e\x94\xdc\xc2\x28\x57\x90\x7d\xd4\xcb\xdf\xc6\x8f\x3d\x48\x09\xb5\xaf\xaf\xa3\xff\x38\xc5\x0c\x30\x43\x39\x70\x0a\x96\xb9\x40\x8d\x4a\x9a\xa1\x5a\x57\xe4\xca\x00\x80\xb7\xc7\xa4\x4d\xe4\x13\xf8\x84\xa2\x22\x87\x5f\x71\x99\xc0\xe1\xe3\x66\x10\xae\x7f\x28\x0c\xdb\xa3\x4a\xd8\x41\xf1\x95\x42\xb9\xe0\x7a\xab\xd8\xd0\xb0\xeb\x00\x04\x5a\x94\x06\xa1\x67\x4c\x46\x26\x98\xb2\xcb\x8f\x43\x76\xa7\xdc\x5f\x06\xaa\xf9\xaf\xae\x43\x36\x2b\xbc\x31\xa0\xb5\x90\xde\xb0\x15\x4c\x4d\x39\x66\xcf\xa1\xce\xca\x8b\x10\x36\x2e\xaf\x02\xb9\x5a\x60\xd3\x25\x2b\x10\x42\xc0\x20\xbf\x3c\xcf\x72\x36\x11\x4a\xf1\x91\x88\xac\x6d\x4b\xd3\x4b\x28\x71\x20\x26\x6a\xc4\x7a\xac\xd1\xd8\x7e\xf0\xf7\x8f\xba\x1a\xe6\xba\x20\xd7\xd0\x2b\x89\xe9\x82\xfa\x8b\x80\x46\x79\xcd\x51\xe6\xa5\x05\x24\xef\x2a\xa1\x0a\x62\x80\x79\x3f\x23\x6b\x9f\x75\x05\xec\xd6\x9a\x75\x00\x96\x6f\xa6\xd9\xd5\xe3\x21\x7b\x8e\x1d\x12\xd7\xf7\xcf\xde\x2e\xb9\xee\x93\x02\x7e\x96\x7a\x2c\xad\xc9\xc6\x6e\x56\x58\x37\xb0\x59\xeb\xf1\x26\x6c\xd3\x4d\xc8\x7a\xe6\xc0\xe0\x9d\xaa\xef\xcf\xef\xef\x72\x7f\x36\xed\x81\x6b\x92\x4a\xb3\x7a\xa9\x82\xbb\x08\x95\xb6\x89\xb8\x18\x4f\xa3\xd2\xe7\x36\xe8\xaf\x4e\x86\xcd\xc6\x55\xa7\xdd\x30\x0c\xfe\xad\x75\x77\x5c\xdd\xfb\xf7\x57\xd6\x7b\xaa\x6b\x7a\x7e\x45\x95\x65\xf8\x02\xc7\xe6\x4c\x0e\x2e\xbb\xf6\x17\xbb\xd9\x5f\xf7\xe4\xdd\x4a\x1b\xea\x50\x2f\xab\x5d\x0e\xd3\xb6\x39\x4c\x23\xc6\xf3\xd1\x0e\xfc\xff\x2e\xfc\x3f\x3d\x0e\x04\x39\xbb\x16\x53\x91\x0d\xd9\x10\x83\xf0\x1a\xa6\x79\xc3\x7a\xd3\x8c\xf3\x6c\x8e\x1e\x2a\x8b\xa9\x38\xd4\xf8\xda\x6c\x6c\x0c\x78\x92\xf4\xf9\xe0\x72\x43\x43\x03\xea\xef\x1e\xc2\x64\x0e\x86\x51\x71\xb9\x27\x24\x4d\x75\x2d\x2f\x99\x57\xd2\x74\x29\xcf\x47\x2a\x62\x12\x94\x08\x73\xa9\x45\xed\xa6\x0d\xf7\x82\x94\xec\x9d\xae\xf9\xb5\xd3\xf5\xdd\xbe\xcc\x5a\x7b\xd3\x85\x6e\xa1\xea\xee\x2d\x55\xcd\x5a\xf1\x61\x21\x72\xfd\xe9\x24\x15\x4d\x67\xb0\x1c\xa6\x6d\x3d\xd1\xa6\x3e\x4e\xb8\x86\xc6\x3a\xe9\xba\xd8\xfb\xd6\x2e\xce\xe6\xd9\xca\x2e\x70\x9b\xaa\x1d\x3d\xfc\xe6\x8e\xc6\xb9\x58\x3d\x9b\x00\x23\xfc\x0e\x49\x1a\xc7\x1e\xf5\xd6\x04\x2f\x2b\x42\xea\x2d\xab\xe0\x95\x2e\x2c\x90\xc2\x41\x25\x7b\x06\x8d\x68\x8b\xdd\x08\xf4\xc7\x73\x89\xef\x5c\x58\x44\x38\x97\xc1\xbb\xfd\x77\x9f\x5f\x38\x35\x4d\x11\x17\x6e\x6e\x2a\x98\x0f\x06\xf2\xdd\xb4\x70\x01\x34\x31\x8a\x88\xa0\x34\x1b\x1f\xa9\xab\x46\xab\x05\xcc\xbc\xf9\x7b\xa3\xfb\xb0\x73\x73\x11\x3d\xec\xdc\x85\x0a\x6d\x6f\x33\x35\x96\x13\x60\x32\xd1\x95\x9a\xa0\x80\x21\x30\xcf\xe6\x4a\xe4\xeb\x18\x0e\x8e\x9f\x7b\x35\x07\xff\x06\xf9\xff\x01\x07\x6d\x18\xf0\x19\xf3\x31\x2f\xc0\x12\x42\xef\x43\x02\x9b\x0e\x9c\x8d\xbe\x7e\x30\xf5\xa9\x26\xf0\xf9\x2c\x4d\x45\x4e\x81\x59\xaa\x98\xf5\x89\x2d\x45\x4d\x0a\x84\x2d\x69\x1a\x9c\x8e\x54\x9b\xb1\x1f\xf0\x35\x2a\x78\xd0\xba\xc8\x40\xd0\x03\xcd\x88\x66\xfb\x8a\x7c\xc1\x06\xa4\xcb\x45\xbc\x03\x9d\x09\xf0\xfa\x39\x9f\x4e\x51\x65\x83\xa4\x55\x4f\x81\xf2\xe3\xa1\x7f\x4e\x9c\x09\xa5\xfb\x8b\xc5\x50\xa6\x02\x98\x24\x1c\xb7\xee\xf5\xa8\x68\xc0\x4b\xef\x32\x16\x8c\x03\xcb\x6c\x23\x11\xe9\x62\x2f\xf2\xc5\xf6\x80\x44\xea\x58\x40\x8a\x4e\x2d\x93\xea\x81\x88\xbc\xe0\x32\x65\x22\x1d\x49\x78\x63\x17\xd6\x12\x17\xea\x54\x14\x67\x72\x22\xb2\x59\xb1\xef\x7d\x7d\x99\x08\x9e\xdb\xef\xbe\x1f\x32\x60\x36\x36\xca\x66\x45\xb3\x4a\xe7\x88\xc6\x29\x0b\x17\xfc\x2f\x91\x21\x14\x29\x4d\x2e\x6e\x80\x4a\xbd\x0c\xd7\xef\x96\x2d\x87\x3d\xf0\xab\x2d\x87\xee\xdd\x6d\xce\xb9\x71\xe1\x05\x48\x7b\x04\xdc\x1b\x6e\xaf\x96\x90\x9b\x7f\xe5\x55\x63\x3d\xaf\xad\x0b\xa9\xae\xa4\x9c\x5e\xd2\xb6\xbc\xa0\x1e\x04\x0a\xbf\x45\x74\x6a\x0a\x7f\x20\x77\x06\x74\xb3\x7a\xd6\xc1\x42\xde\x65\xde\xc1\x06\xf5\x82\xf6\x77\x9a\x7b\xa9\x7d\xcd\xb6\x7f\xcb\x02\xdc\x15\xda\xcd\xfa\x0d\x6b\xb6\x5a\x0e\xdd\xf2\x59\x4a\x15\x34\x8e\xf8\xee\xcc\xd5\x95\xed\xf9\x1b\xec\x8f\x61\x7b\x3b\xcd\xf2\x09\x4f\x98\x48\xaf\x64\x9e\x61\xe2\x0a\x7d\xba\x79\x2a\x98\x92\xc5\x0c\xf9\x4b\x5b\x9f\x48\xb3\x03\xa6\xfb\x8e\x6c\xee\xc7\x1b\xa3\xaa\x96\x01\x36\xce\x39\xd0\x04\x27\x80\xf4\xf1\x23\x4b\x78\xa1\x65\x6a\xc2\x78\xe7\xde\x5e\x3b\x83\x32\x76\xb0\xaf\x5f\xd9\xbd\x72\x4d\xb0\xba\xd7\xcf\xf5\x8e\x58\x7f\xa7\x29\x86\xd8\xa8\x29\xe3\x58\xa4\xf8\x7f\x2a\x9b\x88\x7e\x16\x2f\xe0\x50\xab\x41\x2e\xe6\x22\x46\x2d\x9b\xb7\x22\x7a\x01\xd2\x8c\x1d\xb5\x0f\xdb\x6c\xc2\xe3\x38\xd5\xac\x5b\x69\x04\xe5\xf1\x96\xc6\x81\x38\xd5\x14\x2d\x37\x8e\x70\x54\x34\xb2\x9f\x60\x64\xe8\x94\x2e\x53\xec\xd2\x44\xde\x62\x06\x60\x18\x29\x90\x1e\x71\xc5\x13\x90\xc1\xb1\x9a\x21\xe6\x45\x3e\xa3\xe7\x9e\xe8\x0e\xca\x50\xc3\x01\xf3\xd5\xf7\xa9\x88\x19\xe2\x51\xb2\x08\xba\x5f\x32\x13\x9f\x09\x09\x26\xb5\x6c\x62\x34\x15\xc5\x27\x42\x0b\xf3\x68\xce\x05\x24\xd2\x23\x90\xfa\x5a\xe1\x46\x65\xa0\xc5\x10\x18\x3d\x5c\x84\xc0\x92\x8e\x8d\x89\x32\x1c\xbe\xbe\xa9\x1b\x9a\x13\x68\x44\x6c\x9c\x4d\x87\xb3\x24\x59\xb0\x6c\x96\x43\x0c\x0e\x66\x44\xc9\x73\x5d\xd1\x06\xf1\xe8\x9b\x90\x34\x5b\x9a\x9c\x73\x03\x10\x64\xb8\xbb\xcf\x1c\xb8\x8f\x9a\x99\x1b\xb7\x37\xff\x56\xc9\x67\xa9\x4f\x0c\x9a\xa0\xff\xc8\xab\xc7\xfd\x65\x99\x0c\xfa\x74\xed\x37\x38\xf2\x83\x9a\x41\x54\x0f\x7d\x40\x8c\x7f\xe5\xb1\xaf\xcc\xa4\xee\x62\x75\x67\xff\x65\x30\xcf\xfb\xf7\x97\x4e\xfc\x1b\xa8\xff\x1d\xe7\xfc\x9f\x47\x05\xea\x50\x60\xbf\x7c\xb7\xfc\xfe\x84\xe0\x37\xa2\x04\xfe\x6c\x7c\x5a\x10\x4c\x6c\xe9\xe4\xfe\xaf\x20\x06\xed\xf2\x70\x4f\xb3\x89\xa7\xd5\x34\xc3\x82\xc1\xb8\x37\xb3\xf3\x59\x42\xf1\x30\xc1\x41\xba\x52\x1e\xd6\x7c\xcb\xb2\x22\xa1\xa9\x2e\xab\x25\x34\xeb\x37\xc0\x30\xff\x32\x13\x33\xc1\x7a\xec\xfc\x02\x19\xe8\x38\x27\x85\x99\x0d\x0d\xa2\x84\x54\x7a\x94\xff\x53\x57\xde\x77\xed\x8e\xc8\x81\x72\x6b\xc7\xe7\xb2\xf5\x04\xd2\x0f\xd3\x63\x23\xbc\xf9\x14\xeb\x9e\x85\x0f\xc7\xd8\x03\xeb\x9f\x57\xf3\x70\xbe\x1b\x71\x75\x58\xcc\x25\x11\xb2\x30\x2a\x32\x27\xb3\xf3\x0b\xaa\x0d\xb2\x74\xc0\x8b\x26\x94\xd9\xc3\x54\xe2\xfa\x2a\x13\x74\x83\xd1\xdd\xfe\xb2\xa4\x3f\x18\x28\xf4\xd2\xb4\x04\xc3\x57\xcc\xf8\xe5\xde\xba\x98\xf9\xad\x5e\x05\x48\xd3\x6f\x09\x98\xc7\x06\x96\x96\x9c\x7a\xf6\x16\x0d\xad\x89\x16\x08\xaa\x63\xfc\x39\x78\x32\x7c\xb3\x94\x88\xc9\x5f\x3a\xd3\x6a\xbf\xb2\xc0\xe7\xde\xbb\x20\xa4\x0a\xd8\xdc\xf4\x16\xf1\x19\x2b\x81\xad\xdb\xc0\x72\x79\xb9\xfb\x73\x07\xf0\xa2\x9d\xcf\xd2\xa6\x87\xda\x2c\x78\xc9\xe5\x66\xf5\x46\xea\x7f\xcb\x16\x01\x9b\x96\x66\x6d\x94\xaa\xcb\x50\xb1\x7c\x59\xd3\x36\xa1\xeb\x55\x59\x9f\xa1\x9b\x5a\xe1\xce\x63\xe1\x8d\x2e\x2c\x50\xb8\x94\x95\x66\xbe\xf6\x65\xc8\xaa\xc5\xcf\x5d\xc0\x28\x33\x76\x7f\x0d\x58\x42\x1e\x76\x46\xfa\x99\x50\x0f\xc7\xa4\xff\x80\x3a\xfe\x43\x7d\x8d\x79\x4b\xbf\xaa\xb1\xf1\xc9\x89\x5d\xe7\xf6\x74\xa6\xc6\xf0\xf2\xf0\x51\x21\x26\xc8\xb7\x82\x42\xc6\x1b\xb1\xbf\xe2\x70\xcb\x43\x02\x89\x7b\xb5\x47\xc0\xa1\xb8\x3b\x38\xee\x5c\xa1\xca\xe4\xea\x29\x4b\xe4\xa5\x00\xe5\x48\x2c\x07\x05\xa8\xc9\x91\xb6\x2b\x77\xf0\xfc\xf1\xe4\x7c\xe1\xa4\x73\xa9\xda\xc3\x59\x8a\x5b\xb2\xef\xbe\x41\x2d\x98\x78\xce\x17\x7a\x17\x35\x80\xf6\x34\xcf\x8a\x4c\x8b\x9f\x1a\xfb\x82\x6d\x2c\x03\x0c\x74\x52\x0e\xa2\x46\x88\x7d\x8b\x10\x85\x2c\x12\x8d\x5d\x0d\xd2\x12\x35\x5c\x11\x7d\xb1\x67\xd7\x7c\x17\xe9\x15\xa9\x8b\xcc\x17\x9e\x8f\xae\xe8\x00\x96\xd5\xdc\x3d\xd6\x68\x80\x2d\xc5\x44\x65\xe5\x14\xe8\x8e\xae\x00\xb9\x18\x89\xeb\x29\x93\x4a\xcd\x84\x2a\x37\xb6\x5a\x29\xa7\x54\xce\xb2\xa9\x9e\xa7\x87\xd1\x19\xe6\x5a\xcf\xa6\xde\x70\xe2\xf8\x8d\x54\x85\x48\x61\xf0\x61\x59\x96\x0e\x44\xf5\xe3\x70\x58\xf9\x86\xa6\xb7\xa5\x70\xb0\xf8\x20\x49\x4c\x0d\x55\xa9\x22\x26\xf0\x4e\x71\xf8\x71\x9a\x8b\xa9\x48\x97\x8f\x8f\xca\x4f\xd2\x41\xb5\x6f\x5b\x29\xf1\xfa\x74\xfb\x9f\xf2\x89\x26\x5f\xe6\x5e\x3e\xbf\x60\xde\x32\xf5\x25\xbe\x26\x53\xd3\xa0\x5e\x47\x54\x6e\x48\xa6\x53\x35\x9b\x4e\x21\x57\x7b\x03\xf1\xc8\x76\x30\x98\xc7\x65\x6c\x34\x23\x69\x6c\x37\x98\x87\x2d\x83\x71\x2c\xf3\xa0\x6e\x2c\xf3\x5b\xc7\x81\xad\x96\x8c\xc2\x54\x9a\x51\xa0\xbc\xd5\x98\x7a\xa3\xe8\xec\xeb\x41\x90\x71\xe7\xe1\xce\x37\x1a\x77\x90\xbf\x6a\x7d\x59\xdf\x7e\x70\x8f\x8d\x8b\x62\xaa\xba\xdb\xdb\x93\x62\xac\xda\x7d\xb1\x3d\x9d\xa5\x0b\xd0\x43\x5e\xed\xb4\x1f\xb6\x77\x58\x7f\xc1\xfe\x7d\xc2\x8b\xb1\xe4\x60\x1d\xdb\x6f\xba\xae\xb2\x0c\xe4\x82\xf5\xb5\xed\x07\x18\xdc\x31\x28\xd0\x32\x78\xc5\x73\xf0\x4e\x80\x16\x6b\x9a\x5c\xea\xcf\x87\x56\x3d\x4b\x1a\x27\xab\xaf\xed\xb1\x06\x52\x98\x86\xa6\x5d\xe6\xf3\xfd\xfb\xeb\x6b\x6b\xf7\x8c\xd3\x48\x9a\xc5\xe2\x6c\x31\x15\x5e\x8d\x7d\x07\xfb\x2d\x4c\xd7\x81\x9e\xd0\xdf\x21\x64\xfa\x8a\x80\x49\x69\xec\xc3\xc5\x4f\x1e\xd8\x3f\x21\x27\x6a\xc1\x12\x67\x5a\x02\x8b\x5f\xf7\xd7\xd7\x34\x3d\x5e\x5f\x5b\x73\x2d\xdb\xb6\x41\xcf\x87\xf7\xf5\x6b\x58\x0b\x5f\x0b\xbe\xad\x96\x12\xc9\xb0\x54\x67\x7d\x4d\x6f\xc0\xda\x9a\xde\x0a\xe6\x17\xec\xaf\xaf\xdd\xe0\xc6\xac\xaf\x31\xf4\xdd\xfe\x64\x76\xf6\x13\x91\xf3\x36\x14\xfd\xbb\x3e\x39\xcc\x94\xe1\x27\x30\x55\x9e\x40\x25\xfd\x81\xf6\xd0\xd4\x89\x68\xc7\x7f\x94\xa3\xb1\x50\x05\x9b\x66\x4a\x16\xf2\x4a\x0b\xbd\xe0\xdd\xbb\xb7\xbb\xd5\x97\x05\x1b\x26\x19\x2f\xc8\xa2\xa9\x41\x4c\xf8\xf5\x11\x64\x05\xdc\xdd\x79\xf8\xe4\xe1\xd3\xbd\xc7\x0f\x9f\x44\x9a\x98\xf2\x4b\xde\x66\x9d\xeb\x27\xaf\xf1\x1f\xcb\x72\xb6\xfb\x8f\xbd\x9d\xad\x1d\xea\xe6\x87\x2c\x2b\x88\xd4\x4e\x79\xce\x27\x02\x72\x79\x68\x88\x7d\xae\xf4\x96\xef\x3d\x8e\xd6\xd7\x8a\xb7\x60\x2e\xdf\x81\x9f\xf0\xea\xce\xae\xfe\xac\x2e\xc5\x5c\x57\x79\x1a\xad\xaf\xc5\x7c\x32\x65\x3d\xf6\xa4\xd3\x89\xd6\xd7\xe8\x25\xa1\x1f\x34\x5a\xf7\xd8\x93\x5d\xf7\xe9\x58\x83\xd9\x7d\x0a\x63\xeb\x5c\x3f\xed\xac\xaf\xc5\x22\x91\x13\x59\x00\xf5\x6a\x6c\x35\xa0\xa4\xf1\xf3\xf5\xee\xab\x06\x0d\xf1\xbd\x18\xcd\x12\x78\xd4\xd1\x84\x6d\xe0\x00\xe1\x46\x78\x67\x0e\x54\x8f\x6d\xff\xe3\x3a\xdd\xda\xda\x8e\xa8\xe4\x38\x4b\x0f\x4e\x5f\x1e\x1d\xe9\x92\xf3\x7f\xfc\x7c\xbd\xdb\xd9\xfa\xf9\xfa\xc9\xe1\xc5\x36\xf4\x30\x4b\x5d\x82\x15\xac\x36\x18\xf3\x5c\xb1\x4d\xc8\x8a\xe1\x7d\x21\x68\xa7\x42\x2f\x4f\x91\x01\x25\xdd\x3e\xff\xf9\x7a\xf7\xf0\xe7\xd9\x5e\xa7\xb3\xfb\xf3\xec\xf5\xeb\xce\xa1\xfe\xff\xc7\x3b\x17\xdb\x23\x00\xfe\xfe\xf5\x4b\xb6\xf7\xf0\xfb\x0e\x53\xb6\x15\xcd\xe5\xd0\x37\xb0\xe3\x34\x40\x10\x83\x0b\x6c\x7d\x6d\xad\x61\xde\x63\x6b\x74\x59\xe3\x84\x7e\x77\xc9\xa9\x21\x15\x22\x56\x6c\x2e\x63\x91\xc3\xdb\x23\x23\x30\xa4\x64\xc6\x54\xd3\x88\x34\x80\x34\x2b\xb6\xfa\x5c\xc9\x81\x86\x70\x94\x24\x62\xc4\x13\x6a\xff\xbc\x07\x4b\xce\x9a\x9a\x30\x72\x06\xb5\xd0\x2a\x02\xee\x09\x2d\x04\x20\x53\x08\xd2\xdf\x82\x36\x00\x04\x3f\x20\x90\xc6\xfa\xda\x8d\x41\xd1\x97\x59\x7a\x25\x52\x29\xf4\x45\x09\xaf\x7f\x0f\x66\x85\xc3\x9d\xb7\x32\x9d\xa9\x33\x44\x1c\xc0\xa5\x2d\xa6\xd1\x28\x5a\x5f\x1b\x26\x59\xa6\x77\xfb\x2d\x2f\xc6\x6d\xf8\x43\xe3\x12\x20\xe1\xeb\x3c\x9b\xbc\x1c\xf3\xfc\x25\x6e\xe9\x29\x7c\x6c\x0f\xbd\xaf\xa6\xf3\x33\x31\x99\x66\x39\xcf\x17\x96\x1e\x42\xcf\x97\x62\xb1\x0f\x35\xb6\x7e\xb3\x7f\x0f\xb6\xbd\xb3\x7e\x80\xef\x3a\xc8\x01\x79\x44\xcc\x0a\x70\xf0\xb5\xf7\x08\x1d\xfb\x69\x2e\xaf\x78\x41\x07\x1e\x0e\x16\xfb\x82\x93\xb9\xc1\xb0\x78\x78\x8d\x07\x20\x00\x87\x86\x15\xf1\xfe\x51\xec\x0b\xa0\xc9\x0d\x3b\xd3\x57\x9c\x62\x9c\x7d\x7a\xcf\xd3\x11\xda\xb4\x3f\xb9\xd7\x7c\xc9\xb7\x42\x4f\x3d\x70\xdc\x68\x13\x59\xb1\x77\x12\x94\x82\x25\x02\x09\x9a\xbb\x3a\x1d\xdc\x26\xe2\xe1\xb9\xae\x75\xd1\x2a\x51\x38\x37\xeb\x4f\xc0\xe8\xff\xdb\x84\x4f\x3f\x7d\xcb\xdc\xa1\xd5\x0d\x32\xa8\x18\xeb\x02\xbf\x8a\x2c\x78\x18\xad\x1d\xb4\x79\x4d\x60\x6f\x98\x31\xe2\x63\x5e\x22\x33\x2b\x50\x96\x8c\x44\xa1\x8c\x4a\x07\xd2\xc9\x5d\x89\x7c\x81\xd0\x01\x98\xd4\x9c\x70\x69\x75\x69\x30\x07\xb0\x02\x38\x90\x6c\x88\xb4\x54\x11\x0f\x80\x2f\xcc\x80\xe3\xb3\xe9\x3b\x98\xa5\xbf\xba\x13\x3e\x6d\x02\x94\x88\x0d\x53\x5c\x60\x92\x5b\xd1\xe5\x19\xca\xac\xd4\x86\x85\xb9\x50\xb3\xa4\x20\x4e\x78\x6d\xcd\xbd\x91\x3f\x2a\xc6\x98\x09\x72\x6d\x6d\x0d\x2b\x9d\xe3\x57\x2d\xd8\x0c\x53\xec\xc8\x7c\xd2\xdb\xb4\x76\xa3\x6f\x28\x64\x5c\xb0\x41\x65\xef\x14\x84\x03\xf9\x5b\xb7\xa5\x85\x10\xb2\x93\xe6\x60\x5a\xcd\xf2\x4b\x44\xac\x38\x83\xa4\x05\x70\x6f\x99\xf7\x13\xf5\xba\x4e\xb8\x4c\x00\x1e\x8f\x63\xf0\x9a\x51\x77\x40\x75\x02\xa6\xb7\xcd\x87\x6b\xe0\x19\x58\xbf\xd5\xbe\x03\x18\x9b\x92\x6a\xe5\xb6\xd3\x9d\x97\x0d\xfd\x14\x56\xcb\xf6\x1e\x00\xad\xda\xff\x57\x30\xb9\x26\x02\x0d\xd1\x60\xca\x91\x2b\xc3\xb2\xb6\x9a\x26\xb2\x68\x36\xfe\xbd\xd1\xaa\xa0\x42\xa3\xa1\x3f\x69\x2e\x07\xda\x94\x64\xe4\xb5\xb5\xb5\xed\x6d\x76\x94\x86\x2b\x27\x54\x84\x61\x96\x45\x69\x89\x7d\x07\x36\xbc\x21\xe3\x36\x7b\x23\xf8\x95\x20\x48\x10\x23\x99\x0d\x78\x02\x23\x64\x4d\xd9\x16\x6d\x5c\x45\x30\xbf\xb3\xd9\x54\xe3\xc5\xa7\x7f\xff\xd4\xd2\x77\x0d\x07\x86\xc6\xa0\x24\xeb\xe1\xb4\xce\x3b\x17\x6c\x93\x35\xfe\x1d\x06\x4e\x14\xdc\x96\xed\x5c\x18\xec\xdc\xde\x66\x07\x20\xc3\x7d\xc2\xd9\xc3\x85\xda\xfa\x04\xfb\x76\x74\xf8\x34\x0c\x95\x68\xb3\x53\x21\xd8\xbf\xed\x3c\xd1\xfd\x59\x90\xb4\x7a\xb9\x98\x26\x7c\x20\x9a\xa5\x2b\x39\x02\x86\xe1\xd0\xad\x69\xc2\xfb\x22\xa9\xae\x7a\xdb\xd5\x30\x69\x24\x7a\x70\x7c\xb1\x3e\x6c\x5c\xfb\x73\x26\x53\x5b\x35\x38\x58\x6c\xd3\x34\x2b\x1d\x31\x7c\x56\x4a\x81\x07\x2a\x90\x93\x41\x96\x16\xdc\x3d\x39\x96\xce\x26\x40\x3c\xdd\x5d\x0b\xba\x55\x48\x7d\xf9\x21\x95\x96\x35\x74\x99\xde\xc8\x73\x95\x86\xcf\x7e\x02\xfa\xf0\x1f\xfc\x8a\x9f\xa2\x0a\x7c\xa6\x84\x62\x1f\x5e\x9e\x6e\xed\xda\x57\xc8\x92\x45\x04\x40\xc0\x4f\xd6\x22\x27\xa8\x7e\x07\xfa\xa2\xce\xf5\x9d\x0f\xaf\xd3\x66\x43\xa6\x66\x79\x9e\x8d\x34\xdd\x1d\xf3\xe4\x4a\x28\xd6\x84\xc1\x98\x04\x26\x00\x08\xc1\x6b\x69\x40\x77\xc6\x95\xe1\x66\xbc\x8c\x74\xaa\x65\x83\x5a\x65\x3a\xa2\x07\x02\x29\x96\x1f\x60\x40\xe0\x81\x5e\x86\x0f\x67\xaf\xb7\x76\x1e\xd3\x91\x54\xc2\x63\x98\xdb\xb3\x81\xda\x6d\xe3\xc2\x7e\x72\xe5\xcf\xac\xe8\x84\xe2\x51\x7f\x91\x8a\x14\x64\xa8\x34\x2b\x84\xda\xfe\xcc\xaf\x38\xda\x03\xb6\x4c\x98\xfb\x73\x6c\x3d\x11\x93\xbe\xc8\x4f\x86\x2c\xe8\xc1\x63\xc7\x63\xe1\x98\xf1\x12\xc1\x22\x84\xd3\xf4\x86\x36\x86\x78\x27\x2a\x68\xc2\xa2\xb4\x96\x90\x96\x33\x7a\x4d\xcb\xde\x29\xde\x86\x57\xc8\x86\x1e\x14\x8e\x84\xe8\x86\xa3\x19\xd6\xbf\xf4\xfc\x42\xb3\x64\xcc\xe4\x35\x47\xa7\x44\xf3\xc9\xc5\xd4\x20\x96\x98\x58\x11\x2c\x85\xeb\xcc\xfc\x81\xef\xa1\xbb\x8b\xc6\x40\x7b\xc6\x9c\x56\x78\x4d\xf7\x9d\x80\x02\x91\x00\x0e\x88\xe5\x3a\x28\x4c\x83\xcd\x4d\x38\x15\x40\xa4\xb0\x32\xf0\x94\xaf\x9e\x76\xc0\x9d\x10\x3f\x3d\x83\x4f\x3f\xbc\x7e\x6d\x53\xd8\x57\x7b\xd2\x34\x61\x2c\x47\x63\x87\x88\x91\xc9\x72\x4b\xb9\x10\xe9\xb5\x07\x83\x69\xd0\xc8\x3c\x12\x7d\xeb\xf8\x60\x80\xf4\x58\xf4\x7d\xd6\xb9\x7e\xfd\xb2\xd3\x69\xc1\x23\xf4\xd7\xaf\xe0\xe7\x17\xcd\xa6\x27\xd9\xdc\xf5\x0f\xcd\xd6\x70\xe5\x51\x33\xd8\xa4\x29\x6a\x00\x7b\xaf\x5f\xb7\x20\x2e\xb9\x03\x81\xc9\x0e\x32\x14\x6c\xb2\xce\x35\xa4\xe6\xa3\xde\xad\x82\x7e\x8d\xa6\xea\x42\x07\x6d\x7f\xfb\x48\xb7\xf5\x0d\x0c\xf3\x96\x98\x32\x9b\xcd\x52\x0c\x03\x42\x9f\x26\x7c\x9f\xed\xba\xb0\x90\x6c\x1d\x13\x2c\x18\xae\xa2\x46\x3a\xee\xfd\xa9\xcf\x7b\x75\x66\x30\x2f\x1a\xeb\x1a\x2d\xdd\xd6\x16\x8d\x7d\xbd\x3c\x81\x25\x2d\x6f\x42\xde\x03\x6b\x2d\x23\x8c\xe6\xfc\x68\x41\x00\x42\x92\x2d\xa9\xcc\x86\x75\xe4\x71\x39\xa1\xc0\x23\xf3\xe9\x8e\x47\x1d\xc9\x4a\x1d\x2b\xaa\xbf\xbf\x43\x52\xec\xf8\xd1\x95\x83\xb1\xa7\xdd\x10\x0b\x73\xdc\x0d\xa5\xa8\xa1\x11\xe5\x03\x8f\xe3\x69\x5a\xb5\xae\x5d\x3e\x9f\x89\x34\x2a\x20\x5c\x6c\x73\x34\x3d\xb2\x80\x9c\x82\x7f\x0a\x35\x8e\xbf\xd6\xa8\x88\x5b\x86\x5f\xb7\x7a\x06\x2f\xf7\xbd\x8d\x84\xf0\xb8\x8a\xb0\x65\x00\x3d\x7f\xce\x76\x3a\x06\xb3\xd9\x57\x3a\xdc\x84\x2b\x86\x3e\xe0\x29\x62\x5f\x59\x70\x40\x2c\x56\xdc\xa1\x23\x04\x58\x46\x9d\xb5\x1b\x73\xfd\x36\xca\x12\xc8\x4b\xbc\xc2\x54\x8d\xdc\x6a\xae\xa0\x58\x8e\x64\xb1\x4d\x82\xb1\x8f\x40\x50\x70\x96\xfd\xa0\xdb\x35\x5b\x9f\x96\xb3\xad\xc7\xe0\x3f\xef\xe1\x06\x6c\x31\xf6\x57\xc5\x0b\x9c\x7d\x19\x39\x0c\x8c\x33\xef\xde\xb7\x8e\xe7\x35\x83\x6f\xa2\x27\xa6\xbe\x67\x00\x92\x8d\x08\x01\x55\x2a\x49\xf9\x2d\xc3\x10\xe4\x5a\x5e\x63\x9f\x3a\x9f\x80\x39\x23\xb1\x7a\xe7\x13\x64\xa2\x82\x3f\x3f\x31\x39\x24\x36\xc0\xbf\x8d\xdd\xfb\xb1\x16\x3e\xe3\xde\x04\x7c\x3c\x85\x21\x9e\x65\xaf\xf4\xaa\x35\xed\x52\x20\x6a\xe1\x2b\x21\x66\x75\xb6\xd8\xc3\xa7\xec\x19\xbd\x16\xe2\xf6\xd3\xaf\xb0\xbb\x6b\xb8\xc0\x72\xd3\xc7\x8f\xd8\x33\xb6\xfb\x78\x79\xd3\xc7\x8f\x96\x35\xfd\xfe\xc9\x2d\x4d\xbf\x7f\x52\x92\x8c\xf4\xd2\x2c\xc7\xa8\x00\x73\x0c\x3a\x95\x77\xca\xc7\xa8\x60\x89\xee\x82\x51\xd0\xc3\x5d\x71\x62\x15\x4a\x55\xf0\x67\x3e\xce\x94\x20\x68\x4d\xf0\x2d\x98\xd1\xe3\x57\x2b\xd1\x49\xd1\xb1\xf8\x14\x91\x4b\x2c\x2a\x97\xf0\xad\x2a\x1f\xd9\x00\x4a\x05\xe1\x20\x32\xeb\xd3\x30\xe1\xa3\x4f\xa8\x69\x4f\xb7\xfe\x29\xf2\x0c\x73\xd7\x43\xfc\x30\x5c\x5f\x90\xfe\x44\x2a\x80\xa1\x87\xb5\x0f\xf7\x0a\x65\xb8\xcf\xe6\x61\x2d\x7c\xf6\x1b\x67\x29\xc6\xfc\x4a\x66\xa0\xc5\x9f\xa5\xc6\x03\x07\xe4\xf9\xba\x6e\x81\x75\xa0\xf9\x90\x97\x6a\x69\x10\x15\x24\x0f\x68\x02\xfc\x11\x31\x0d\x17\x71\x6a\x7b\x9b\xb1\x4e\xbb\xbd\xfb\x48\xd3\x65\x3d\x73\x54\x08\xf2\x76\xfb\x9f\xfa\xa4\x1d\xb4\xdb\x7f\xc7\x5a\xbb\x8f\xdb\xed\xbd\x52\xad\x4e\xbb\xfd\xbd\xc3\x3c\xdc\xf9\x4d\xb6\xbb\xcb\x36\xd9\x93\x47\xec\x01\xc3\xee\x08\x83\xb7\x58\xb3\xa9\xfb\x65\xf7\x20\xd0\xe2\xd9\x33\xc8\xc1\x1e\x20\x2a\x68\x51\x79\xcc\xa7\x14\xb8\xe6\x1c\xcc\x15\xd3\xe2\xbb\xa2\x34\xca\x7b\xed\x87\x1a\x9f\x48\xf9\xb8\x8b\x58\x64\xb8\xe8\x22\xcb\x12\xd5\x96\xa2\x18\xb6\xb3\x7c\xb4\x3d\x2e\x26\xc9\x76\x3e\x1c\xe8\x8a\xff\x46\x00\xb6\xf6\xda\x0f\x2b\x98\xec\xaf\x19\x8c\xa1\x19\x8b\xa4\xe0\x91\xc6\x63\xbc\x3e\x23\xcc\xd0\x79\x26\x27\xc2\x71\xb0\x98\xf3\x7d\x7d\x6d\x0d\x6a\xb3\x9e\xab\xc3\x5e\x30\x50\xf9\x21\x1c\xb6\xcd\x62\x3e\x99\xb6\x58\x97\xe1\xdf\xfa\xfe\x71\xed\x36\x7b\xa5\xca\xb6\x57\xb8\x40\xc0\x5e\x0c\x31\x47\xe6\xed\x7a\xf9\x4f\x5c\xa3\x07\xdb\xfb\x06\x20\x0b\x95\x91\x0f\x18\x68\xb0\xa1\x1f\x76\xa9\x7b\xd0\xe5\x44\x4a\xec\x68\x83\x4e\x03\x00\x65\x9d\x0b\x56\xbd\xd4\x5c\x61\xd8\x11\xe5\x25\x30\x40\x08\xda\x26\x53\x97\x62\xde\x5a\x71\xbd\x59\x8d\xb6\x53\x51\x00\x5e\x6d\x01\xbf\xa8\x16\x93\x7e\x96\xc0\x41\xe5\x5e\x0d\x5f\x8a\xa4\x2a\xed\x25\x2c\x52\xad\xdc\x83\x42\x8e\x3e\x7a\x77\xea\x7e\x15\x47\x84\xb2\xb2\x6e\x5a\x19\x5e\xd0\x3c\x38\x8d\x28\x07\xc1\x28\xec\x09\x7c\x05\x21\x01\xfa\x6a\x04\x86\x6a\xb9\x6c\x04\xcd\xde\x18\x69\x08\xfe\x2a\x09\x43\xd9\xac\xb0\x95\x7d\x11\x2a\x85\xfa\x68\x98\x30\xdf\xfa\x68\xb4\xf0\x4c\x18\xb6\x44\x13\x0b\xf3\xc7\x67\xd7\x7b\x2c\xae\x6d\x47\x49\x2c\xcd\xef\xb9\xf9\x71\x69\x7e\x20\x9d\xa1\x3f\xec\x0f\x50\xa5\x63\x28\xc5\x80\x27\x83\x59\x82\x28\x8c\xeb\x88\xfa\x74\xd3\x3d\xa1\xd7\xfe\x3a\xae\xd0\x8f\x3c\x8d\x13\x4a\xea\x56\xba\x17\x54\x97\x25\xa2\xa0\x9b\xea\x93\x26\xea\xe1\x8b\x3a\xb8\xe1\x88\x0f\x1a\x14\x69\x25\xfa\x62\x98\x51\xae\x3d\x08\x08\xb4\xc6\x19\xe4\x30\x3a\x9f\x28\xd9\x22\x0a\x69\x69\x96\x22\x31\x4f\x21\xc3\xeb\xba\x55\x2c\x51\x1a\xdf\xf2\x98\x4c\xb0\x31\x49\x14\x7a\x16\x58\xc7\xee\x1a\x57\xc5\x11\xc5\xa0\xd9\xae\x5b\x46\x2d\x86\x75\x9f\x31\xc3\x6e\x98\xb6\x1d\x3c\x92\x86\x20\x7c\xc6\xa4\x11\x9f\xd9\x33\x1c\xc1\x3e\xdb\xdc\xfc\xec\x54\x68\x90\x5d\xa3\x81\xcc\x50\xf5\xee\x35\x7c\x35\x8e\xc7\x93\x30\x3f\xb7\x8c\xfd\xc4\x30\xd9\xa8\x55\xf7\x0c\x2e\xad\x32\x07\x8c\x32\x53\x0d\xa8\x96\x1d\xf1\xf6\x36\x7b\xcb\x25\x9d\x00\x78\x3b\x3f\xcb\xa6\x5d\x86\x19\x32\x3e\xcf\x54\x81\x61\x44\x35\x3b\xa2\x27\xc2\xd3\x85\x37\x83\x60\x27\xe7\x7a\x8f\x06\xd9\x54\xea\x5b\x17\xc1\xf1\x82\x52\x03\x8e\x64\x0a\xba\x29\x2f\xed\xbf\x59\x3c\x9b\x67\x10\xa0\x3e\x67\x1d\xf6\x82\x7e\x6f\x62\x1e\xae\x7d\x4a\x02\xfa\xcc\x3f\x76\xf4\x28\x08\x1b\x42\xc8\xb2\x33\xd4\x31\x4c\x17\x41\x2b\xff\x09\x5a\x7e\x32\x92\xab\x4d\x26\x6a\x84\x5c\x4f\xff\x85\x7c\xc8\x20\x4b\xd5\x6c\x22\xe2\x36\x01\x78\x05\x64\x82\x71\x7a\x5b\x3b\x91\xff\x14\xb1\x35\xff\x6c\x91\x3e\x24\x60\xe3\x3e\x01\xd5\xfd\x14\x11\x00\x64\x75\x40\x77\xcc\xe3\x18\xa3\x8a\x3e\xc9\x4f\x14\xdd\x4e\xe6\x36\xcc\xc0\x45\x9e\x0c\x82\x2b\x89\xda\x07\x44\x9d\xb9\x1e\xf7\x20\x17\x9a\xb1\xf8\x24\x3f\xe9\x3b\x78\x2e\xd8\x28\xa3\x63\xa0\x66\xfd\x42\x4f\x81\x65\xc3\x21\x3c\xe3\x09\x2b\x2f\xd3\x11\x41\x40\x3e\x8d\x9b\x54\xb6\x30\x80\xac\x0f\x21\x43\x34\x54\x98\x2b\x6c\x85\xa6\x25\xfa\x64\x44\x6c\x0e\xb6\x57\xb8\x54\x81\x91\xa5\xd5\xb6\xcf\x5a\xc0\x75\x17\xdc\x65\x56\x09\x62\x5f\x9b\xf2\x76\xcb\x20\xb0\xc1\xe0\xd0\xe2\x67\x74\x18\x08\x03\x79\x95\x5e\x28\x14\x54\x30\x1a\x7a\xd9\xdc\x84\xa4\x89\xa6\x67\x6c\xf9\x9c\x8c\x7f\x5f\xbf\x12\x27\xf4\x9c\x6e\xcc\x26\x59\xac\xb7\x98\x6c\xb1\x6d\x36\x6f\x95\x47\x65\x2d\xa1\xe1\x80\xa4\x9e\x26\x82\x7a\xc0\xe6\x58\xa4\x07\x78\xc9\x9e\xf5\x90\x76\xbf\x00\x3b\x23\xeb\xb2\xe6\x25\x74\xaf\xbf\x6d\xe2\xad\xff\x02\xff\xd3\x65\x97\x6c\x0b\x0a\xaa\x03\x7e\xc6\x0a\x3b\x12\x7a\x45\xcb\xeb\xdd\xd1\x60\xcf\xaa\xe9\x54\x4e\x73\x3b\x3d\x9a\x9d\xcf\x3c\xdc\x75\x86\x73\xf6\xa0\x57\x26\xf6\x54\x86\xce\x94\x44\x5c\x4c\xb6\x1b\x64\x98\xd6\xe8\xde\x42\x26\x4d\xb2\x2d\xbc\x8b\xe0\xea\x63\x88\x4a\xf4\xe6\xa5\x39\x8c\x9f\xc0\xcb\x1d\x1c\x64\x94\x17\x60\x47\xa9\x54\x20\xaa\xef\x53\x36\x2b\x90\xf3\xef\xd8\x33\x04\xe8\x3f\x21\x89\xe2\x53\xfa\x89\x5e\x70\x92\x13\x11\x31\x95\xb1\xb9\x68\x24\x09\x1b\xca\x6b\xb4\xd3\xa4\xd9\xbc\x6b\x68\x2a\xae\x8c\x64\xdb\x0c\x7c\xde\x9f\x33\x8b\x02\x69\x89\xa6\x96\x56\x06\x27\x9f\x3a\x76\xd0\xc0\x40\x35\x08\xfb\x0e\xd6\xc4\x4e\xed\x28\x85\x9c\x7c\x7a\x6c\xdc\x38\x50\x64\x29\xcc\x98\xa8\x0d\xae\xa0\x47\xa8\xd5\x34\x91\x03\xd1\x94\x9b\x9b\x11\xeb\x44\x2c\xc5\x75\x82\x7e\x89\xcf\xf3\xb4\x37\xd8\x66\x05\x0b\xb7\x94\xf1\x61\x4d\xd1\x1e\xb5\xb5\xc4\xe9\x99\x6a\xc0\xf8\xd0\x02\x8e\x0e\x00\x7d\x0b\x07\xf6\xad\xdc\xdd\x6a\x96\xec\x56\x8e\xee\xee\x43\x0b\xcc\xcf\x69\x99\xbb\x83\x07\x49\x2c\x57\x04\x02\x05\xfd\x31\x06\x96\x26\x7e\xf9\xee\x65\x36\x4b\x8b\x80\xf3\x7a\x13\xb0\x74\x7d\x8f\x31\xb3\xbc\xd8\xc4\xfc\xf8\xa5\xc2\x7b\x59\x58\xe4\x2c\xfb\x17\x5f\x3f\x5e\xc3\x54\x6a\xae\xec\x93\x47\x34\x3f\xa1\x29\x65\x9c\x51\x56\xe0\xf0\x2d\x33\x73\xeb\x6a\x3a\x0e\x8d\x3e\xb5\x1d\xe3\xe6\x41\xf9\x56\x9e\x2f\x5c\x8e\x77\xc9\x4c\x9d\xa4\x22\xaa\x30\x84\x76\xda\x21\x7f\x48\x28\x49\xb7\xad\x9e\xa1\x4c\xc9\xac\x53\x64\x4e\x66\x58\x33\x69\x3d\x3c\x93\x04\x6e\x96\x05\xa4\x87\xea\xa5\x7f\x35\x6d\x6a\x99\x6e\xd3\xa8\xf4\xb4\x03\xa4\x7c\x58\xd7\xc7\xd8\xf1\xdc\xbe\x84\x08\x5c\x5c\x95\xf9\xbe\x0b\xaf\x5b\xc3\xf9\x05\xcc\x89\xe3\xff\xfc\xcd\x37\xc3\x3e\xff\x7c\x61\xd5\xa9\x41\xf9\xb3\x80\xdd\xf3\x59\xba\x1a\xb5\xa6\xdf\xb2\xe5\x6b\xc8\xd7\xd7\xd6\xc2\x5d\x34\xb7\xa9\x5d\xbc\x80\x9e\x9b\xf9\x7e\x0a\x1b\x59\xae\xa9\x1e\xef\x80\xd6\xda\x34\xb6\x06\x6d\xf6\x09\x94\xd7\x5d\x0d\x9c\xca\x72\xb6\x69\x08\xaf\x65\x2a\xd5\xd8\x5b\x72\x3a\xf5\x5b\x2e\x43\x1d\xbc\x9d\x07\xfe\xba\x5b\xe8\x3e\xc0\x1d\x83\xea\x73\xed\x01\xe3\xe1\xaf\x64\xc8\xe5\x07\x2c\xb1\x7d\x41\x00\x58\x62\x67\xbc\x2a\xad\xe6\xb3\x32\x6b\x43\xb7\xc0\x41\x92\x80\x82\xa8\x2a\x85\x3c\x63\x69\x75\xad\xcc\xab\xdb\x6d\x3d\xed\x38\x30\xbc\x6c\x6f\x9b\x94\xab\x59\x2a\xba\x96\x3f\x9b\x80\xf1\x58\xdf\x60\x11\xbb\x1d\xf3\x56\xa2\x5e\x15\xf7\x9e\xf7\x58\x4a\x2f\x66\xfb\x08\x39\xb1\x3c\xc4\xc4\x05\x8a\x40\xa1\x6f\xbd\x71\x17\xa1\xe1\x54\x91\xb7\x34\xaf\x5a\xe8\xab\x26\xbe\xc2\x8c\xf4\x63\x63\x0f\xcd\x1b\x8a\x3d\x4b\x23\xf9\x1c\x4f\xaa\xae\xf4\x6c\x12\x75\x9e\x9b\x7b\xbf\x3f\x2b\xcc\xfb\xe4\x23\x2e\x53\x55\x58\x86\x59\x57\xa8\x25\x54\xac\x57\x22\x60\x96\x59\xd1\xf3\x9d\xe8\x8b\xbf\x86\x1f\x84\xb1\x6a\x9e\xb0\x16\x66\xeb\x2e\xac\x82\xd5\x1e\x61\x27\x2d\xf6\xa0\x1e\xd8\x3e\xf2\x15\x3d\x36\x41\xe6\xe1\x8e\x54\x64\xf9\x5e\xd6\x6f\xe6\x33\xdc\xcb\xcd\x4d\xa3\x92\xc2\xb9\xde\x95\xe3\x2d\x83\xeb\xf5\x1c\xc3\xa4\x77\xe6\xbd\x55\xe9\x23\x7c\xae\xee\x26\x22\x21\x00\x98\xf3\x2f\x10\xd4\x0d\x8a\xbd\x6f\x90\x32\xa0\xfd\xbf\xc6\x7d\x23\x08\x08\xb5\x08\x58\xef\x80\xf9\x26\xbc\x5e\x5b\x5b\xfb\xc5\x32\xdf\xbf\x38\xce\x7b\x25\x5b\x1e\x92\x1b\x03\xbc\x86\x80\x07\x1a\x61\x8d\xa9\xa6\xaf\xef\xfc\x8b\x96\x75\x5a\x2d\x02\x62\x47\xff\x8b\xd5\x18\x9a\x26\x01\xdb\x4f\xd5\x68\x37\x6f\xbb\x47\x82\x61\xfc\x02\xfd\x19\x08\x01\x87\x4f\xbb\x55\xcf\x20\x94\x8f\x5d\x2f\xb8\x72\x0c\xbc\xe0\xe6\x5d\x5b\x5b\xdb\xdc\x0c\x9b\x55\x48\x0a\x21\xf0\x3e\xfe\x4e\x89\x47\x2e\xd9\xf1\xee\x60\xc1\x2b\xb3\x91\x81\x91\x82\x97\x5d\xc5\x78\xc9\xe7\x09\xcd\x5b\x96\x7f\x69\xb3\x13\xe3\x00\x65\xe0\xc6\xe4\x75\x45\xdc\x3e\xb2\x37\xc0\xbe\xa1\x52\x41\x8f\x43\xc4\x11\x93\x6d\x32\xdf\xc9\xc2\x06\x8f\x4e\x30\xea\x57\x62\xe2\xb9\x01\x4f\x12\x5d\x9a\xa5\x8e\xad\xa7\xbb\x56\x99\x1b\x03\x33\xc7\x83\xff\x8e\x01\xed\x0f\xef\x5f\x53\xc3\xc6\x2b\x1d\xe7\x58\x91\xf9\x1d\x57\xbb\xad\xe5\xe7\x0d\xeb\x1f\xbe\x81\x61\x56\x6b\x24\xaf\x44\x6a\xfb\x47\x8d\x32\xfa\x5b\x94\xf9\xfa\x22\x23\x48\x3e\x6b\xef\xec\xd9\xe4\x14\x07\x65\x9e\x55\xdb\x77\x76\x71\xfe\x55\x9e\x2b\x77\xbb\x10\xaa\x30\xd5\x00\x05\x5f\xb0\xc0\x51\xa6\xad\x40\x58\x7b\xd8\x6a\x17\xd9\x9b\x6c\x2e\xf2\x97\x5c\x89\x26\x9d\xcb\x2e\x8d\x16\xcd\xc9\xcb\x71\xb0\x64\xb4\xff\x36\x14\x34\xeb\x6e\x87\xec\x70\xd0\xb9\x8f\x07\x38\xe8\x03\xac\x62\x22\x22\x61\x5b\xb4\x6f\xc7\x44\xc3\x65\x21\x3c\x8d\x8b\x0d\x87\x89\x64\x43\x86\xfe\x7f\x25\xe2\xdd\x82\x6e\x66\xd0\x11\xdc\x32\xe8\x27\x16\xac\xe4\x2a\xc4\xb3\xe7\x7e\x15\xe6\x85\x03\x00\x68\x55\x67\xd1\x10\x0d\x61\xbe\xbf\x0d\x12\x9a\xa8\x81\x3a\x24\x6c\x5c\xa7\x5b\x5b\x0d\xeb\x05\x18\x94\x2e\x41\xbb\xdf\xde\x0b\x9d\xbd\xc2\x9c\x45\x90\xd8\x72\xd6\x4f\xe4\x80\x1d\xbc\x3b\x82\x15\x99\xba\x58\x08\x30\xa1\x68\xa4\x27\x0f\xe0\x1a\x24\xf7\x33\x49\x5b\x3c\xfe\xac\x6c\x4c\x3a\x0a\x08\x6d\x04\x51\x87\x46\x2e\x98\x05\xf7\x18\xbe\x68\xc1\xb5\x41\x20\x1a\x5d\xd6\x80\x30\x27\x08\x2c\x70\xc3\x49\x4d\x34\x7b\x36\x64\x13\x51\x8c\xb3\xd8\xc7\x2c\xd4\x3c\x39\x5f\x47\x48\xc6\x84\x2e\x8e\x81\x3b\x98\x6f\xdc\x46\x34\x22\xc7\x1b\x8f\x0a\xfa\x6c\x3f\x3a\x98\xf5\xf9\xe0\xd2\xcc\xe9\xd7\xbb\x19\xde\xbe\x24\x26\xbe\xc7\x2c\x89\x16\xad\x1b\x5d\xc4\xb7\x06\x52\xb3\x46\xd7\x13\xb8\x81\xcb\x6e\x20\x62\x51\x81\xf1\x5d\x5a\xbb\x81\xb8\x0c\xdb\xc8\x35\x70\xf5\xf1\x07\x7c\xa3\xe3\xd0\xe8\x9a\x83\x41\x5f\x69\x49\xe0\xbb\x15\xfd\x6f\xf6\x4d\x60\x0a\xb8\x79\xfa\x61\x4c\x7a\xdc\x26\x23\xc0\xc1\xdb\x57\xf8\xf2\x10\x33\xc9\xae\x72\x15\x41\x24\x2b\xcb\xdb\x9f\x55\x44\x8f\x56\x68\x56\xd2\xa4\xc1\xf4\xf8\xc6\x29\x10\xb2\x54\x01\x3c\x68\x14\x64\x9c\xed\xda\xd0\x2e\x8a\x03\xa3\xac\x5c\x41\x92\x24\x0c\x2b\x0b\x2a\xb4\xf9\x24\x2e\x05\x8b\x81\x3a\xc1\x94\x99\xf0\x2d\xfc\xd2\x6c\x98\xa9\x35\xa2\x20\xea\xcf\xa3\x00\xa6\x86\x3b\xc4\xee\x85\x15\x3f\xc6\xee\xfe\x7d\x2f\x2c\xce\x39\xc6\x94\x13\xa5\xf5\xfc\xc0\x3c\xcf\x00\x95\xb2\x63\x3c\x6b\x11\x93\x19\xfc\x27\xcb\xd9\x7b\x99\x8e\xb2\xff\x38\x65\x57\x9d\xf6\xd3\x76\x67\x13\xa4\x11\xdb\x87\x9f\x41\xd1\x1f\xa3\xe7\xa6\x47\x80\x79\x3e\x1f\xf3\xa4\x04\xf0\x49\xbb\xb3\x65\xc5\x9b\x4b\xa1\xef\x09\x0b\xc7\x70\xdc\xd6\x83\x6e\xcc\xd5\xc9\x3c\x7d\x97\x67\x53\x91\x17\x0b\x5d\x1d\xdf\x08\xf2\xe6\x72\x7e\x29\x16\x17\xde\x58\xe0\xef\xc0\x2b\xd0\x1b\x19\x0e\xec\xfd\x58\xa6\x19\x5c\xa5\x6c\x2e\xfa\x36\xd3\x1c\x06\xd7\xb5\x3d\xca\xe5\xcd\xef\x66\x7d\xfd\x06\x92\x43\x80\x5d\x21\x48\x8a\x17\x46\x0c\xde\xeb\xf5\xd8\x86\xf5\x13\xd9\x60\x2f\x4c\x41\x97\xd9\xa4\x63\xc9\xb0\xa6\x1a\x7c\xb6\x95\x28\x50\xb0\x5a\x8d\x0a\xba\xec\xcb\x4d\xcb\x84\x85\xee\xfe\x8a\x9c\xd9\xe8\xee\x0f\x2e\xec\x2e\xb8\xc9\x0b\xd3\xc6\x22\x4c\x5a\x31\x15\xf9\x40\xa4\xc5\xd9\x5c\x93\x6b\x01\x51\x67\xdf\xed\x76\xb6\x47\x04\x66\x56\xc8\x84\xf5\x98\x4d\x0e\x48\x89\xbd\x35\xd7\x0d\xe5\xaf\xb3\x7c\xc2\x0b\xb8\x09\x18\x63\xec\xfd\xeb\x97\x3b\x4f\xf6\x9e\x76\x59\x83\x7e\x35\x22\xf3\x7d\xef\xfb\xa7\x8f\xf1\xbb\xfe\xd5\x80\x50\xdd\x4a\xca\x3f\x0d\xbc\xcd\x95\x92\xa3\xb4\x09\x0d\x5d\xdc\x7b\x83\x12\xdf\x34\xba\xd4\x69\x9b\x40\x45\x7e\x5c\x3f\x32\x33\xaa\x5b\x0a\xdc\xb7\xe3\x72\xf1\xb3\xd6\xeb\x91\x95\xfe\xd9\x6b\x1a\x56\x09\x91\x01\xbd\x9c\xcb\x8b\x15\xb1\xc6\x66\xa3\x9c\x6e\x21\x2a\x77\x8c\x13\xbf\x7b\xc7\xb8\x5f\xd6\x7f\x31\x00\x5e\xce\x32\x80\x9d\xe1\x7a\xac\xb7\x4c\xf6\x75\xdc\xa3\x8d\xee\xc3\xc7\x1a\x83\xf6\x7e\x25\x06\xe1\x65\x2e\x87\x8b\x70\xff\xed\x67\x3d\x73\x8a\x3c\x81\x08\x4e\xaf\x0e\x7c\x32\xe5\xb8\x2b\x2a\xac\x41\x1f\x01\x8f\xaa\x89\x1f\xd7\xdd\x6e\xaa\xae\xf9\x81\x73\x05\xd0\x5d\xfc\x0f\x7e\xb1\x03\xea\xba\x9f\xeb\x37\x76\x2d\xa8\xf5\x46\xf7\xe1\x6e\xb4\x41\x43\xdb\xe8\x3e\x7c\xa8\xff\xb0\xf5\x37\xba\x0f\x1f\xe9\xb5\x7a\xf8\x2b\xd7\x0a\x16\x7c\xd5\x39\x19\x83\x48\x8d\xb7\xb5\x77\x14\x43\x22\x88\xeb\x25\xd5\x01\xe5\x59\x80\xff\xb6\xe9\x6f\x02\x64\xde\x05\xb1\xcb\xc4\xf5\xf5\xf6\x2a\x83\x85\xe2\x89\x59\x14\xf8\xfa\xce\xf4\x53\x2a\xd3\xe0\xde\xc8\x89\x2c\xba\x6c\xb7\x83\xdf\x20\x06\x55\x14\x5d\xd6\x98\x15\xc3\x2d\x73\x6c\xe9\xeb\x29\xb0\x72\x22\x09\xa0\x0c\xb2\xc9\x84\x07\x5f\x48\xbf\xd7\xc5\xd5\x68\x1b\xfe\x81\x6c\x2f\xa8\x7e\xed\xb2\xc6\xfd\x86\xf9\x36\x2d\xc6\x5d\xf6\x08\xff\xc2\x67\xfb\xff\xe7\x4c\xe4\x8b\x77\xb9\x18\xca\xeb\x00\x34\x70\x66\xd3\x5c\x14\xc7\xe8\xd6\x78\x98\x16\x52\x9f\xc0\xa0\x92\x0d\x2c\xa6\xb9\xed\x74\x3a\x1d\x0f\x69\x60\x15\x55\x17\x72\x47\xd0\xe7\x84\xcb\x14\xf7\x24\x84\x84\x9b\x7b\x3c\x4b\x12\x30\x07\x68\xe6\x01\x8b\x01\xaf\x60\x93\x96\x0c\x28\xc8\x22\xa0\x8a\xbc\xf4\x26\xbb\x2a\x72\x1b\x5c\xb4\x7d\xff\xdf\x9a\x3f\xc7\x9b\xad\xfd\xed\x51\xe4\x35\xfa\x1f\x9d\x88\x78\xe2\x53\xd7\xbc\x42\x1e\x82\x58\xd5\x26\xcc\xef\x28\x2d\x9a\xb6\x61\xc4\x76\x3a\x2d\x2f\xe5\x2b\xe5\x05\x39\xa3\x47\x5e\xe7\x63\x5e\x98\xcb\x51\xa1\xa0\xa8\x66\xfd\x89\xa4\xb4\x51\x9a\x6f\xfa\x3f\xff\xfb\x7f\x79\x8e\x12\xd9\x60\x30\xcb\xc1\xee\xc4\x53\x78\x9e\xc0\xe5\xdb\xde\xbe\xde\x9a\xcf\xe7\x5b\xfa\x9c\x6d\xcd\xf2\xc4\x3e\x9c\x9b\xc5\x0b\x13\x6b\xe1\x74\xec\x24\x82\x4d\xf9\x48\x78\xd1\x4b\xeb\xc6\x9f\x87\x3c\x34\xa5\xca\xb6\x9e\x3e\x7d\xf4\xfd\xd6\x0e\xf0\x2c\x76\x4c\x38\xc6\x02\xfd\x4e\x27\xa8\x1c\x49\x19\x1f\x0c\xc4\xb4\xd8\x22\x64\x85\xd1\x15\xe6\x31\x82\x6c\xe8\x01\x6b\xb3\x77\xb9\x50\xb3\x09\xef\x27\x0b\xc6\x13\x95\xa1\x94\x0b\xee\x29\x06\xd7\xc9\xc6\x11\x67\x60\x73\xa0\x21\x9a\xf1\x05\x6b\x12\x41\xce\x7d\x2d\x9f\xce\xd4\x16\x57\x03\x29\xdb\x74\x7e\x33\x73\x60\x58\x0f\xce\xd3\xd3\xde\x77\xbb\x8f\xbf\xdb\xdd\xd3\x08\xb9\xf7\xdd\xde\x0f\x94\x7f\x04\x16\xea\xc3\xfb\xa3\x97\xd9\x64\x9a\xa5\x22\x2d\x9a\x8d\xfb\xff\x06\x75\xf6\x1b\x2d\xda\x2e\xa1\x84\x7d\x95\x94\x6e\x9f\x2d\xb3\xc2\x70\x52\x59\x36\x28\xf4\xa8\x4b\x8a\x05\x60\x94\x27\x3c\xbf\x8c\x98\x4c\x63\xd8\x29\xa3\x52\x02\x97\x5b\xf1\xcb\x4c\xa8\x82\xf1\x41\x31\x83\x27\x3e\xa4\x22\x70\x04\x1c\xa7\x52\x3a\xff\x6e\x3a\x87\xbb\xdf\x7d\xff\xf2\xbb\xef\xf7\x96\xcf\xe4\xff\xfc\xef\xff\xa5\x27\x61\x2f\x88\xbf\x60\xd8\xab\x77\x3c\xe0\x33\x1c\x78\x44\x69\xac\xa1\x0f\x0d\xbc\xcf\x2a\xb3\x54\xf9\x49\x80\xb2\xfe\x67\xca\xbe\x62\xbe\x40\x86\xa7\xd3\x22\x67\x3d\x53\xbf\x5d\xa1\x22\x9a\xf9\xf2\xcf\xdc\x3f\x7e\x7e\xb1\x1d\xb1\x46\xa3\xc5\xe0\xb6\x70\xc0\x80\x3e\x79\x90\x42\x62\x02\x19\x1b\x8e\xd2\xa1\x4c\x65\xb1\x60\x2f\x9c\xb3\x30\xeb\x2e\x69\xe1\x20\x9b\xc8\x4c\x33\x5c\x8a\x12\x34\xcd\x3c\xd7\x37\xf8\xd1\x72\x2d\xd5\xa5\x9c\x7a\x59\x9a\xf4\x52\xff\x59\x88\x29\x2b\x72\x8e\xef\xd6\xcf\xc1\x43\x0e\x7c\xa1\x8b\xe1\x53\xa6\xcc\x3e\xcd\xb9\x62\xc3\x6c\x96\xc6\x16\x94\xf4\x32\x5d\xd1\xae\x7a\x93\xa5\x2f\x2e\x1f\x51\xa9\xc0\x20\x40\x25\x89\x12\xe6\xba\x86\x04\x4a\x7e\x30\xe9\x3e\xdb\xdc\x94\x75\x89\xad\x30\x64\x53\x5e\xb8\x0c\xf0\x80\x4f\x26\x57\x7c\x1d\x57\xe4\x37\xc3\x54\x8e\xcb\xc7\xe4\xff\x73\xb3\xa4\x2b\x6d\xbf\x52\xcd\x13\xbb\x82\x1e\xbc\x13\x7c\x07\xe8\x8e\xbe\xd4\x75\x51\xf9\xe2\x6f\xaa\xac\x36\x90\x26\xb0\xd5\x2e\x25\xd2\x01\x26\x54\x22\xd3\x82\x29\x51\x14\x10\x2c\x4d\x14\x0a\x2e\x7a\x46\x46\x8c\xfa\x9e\x6d\x82\xbb\x6f\xde\x36\xf0\xec\xc2\x84\xb9\x66\xd4\x95\x2c\xc2\x99\x5e\x28\x3f\xfb\x99\xeb\xd8\x60\xbf\x8d\xd5\x95\x17\x84\x86\xa6\xb4\xaf\x31\x59\x14\x87\xbf\xcc\x78\xa2\xde\x65\x8a\x6a\x3a\xf4\xb8\xe8\xf9\x0c\x36\x00\x84\x5a\xd5\x86\xf0\xac\x2c\x7b\x51\x6a\xdf\x83\x93\x5e\xa9\x0d\xf6\xc1\x00\xec\xa5\x58\x44\xec\x8a\x27\xfb\xc1\xe4\xa7\x16\x72\x79\xde\x5a\xbc\x75\x07\x88\x58\x1f\x40\xa3\xc8\xf2\x68\xe6\x73\x64\xd0\x25\x62\x8d\x4b\xb1\x28\x8b\x0c\x57\x90\x9c\xc6\x80\xaa\xf2\x1e\xec\x05\xa4\x5a\x63\x5d\x08\xc8\xb2\xcb\x5c\x97\x93\x79\xf9\xa8\x48\x99\xdd\x89\xf4\x02\xb6\xfe\xc5\x31\xd6\x00\x9e\xe2\xaa\xde\x02\x19\x84\x9a\x46\x90\x7c\x31\x58\x6f\xdd\xcd\xfd\xfb\x8e\x9c\x2f\xe3\xb2\xee\xdf\x77\x27\xb0\x17\x9e\xc1\xf2\x46\xe1\xc8\x97\x41\xd2\x3d\xde\x3a\x1c\x92\xdb\xaf\x28\x07\x50\x03\xc5\x86\x86\x3f\x52\xe0\x86\x29\x36\xd5\x61\x5f\xd4\x68\xb1\xe7\x35\xc8\x83\x63\xd2\x55\x29\x62\x3c\x5a\xb1\x26\x21\x42\x9f\xeb\x13\xb1\x02\x28\x49\x0b\x30\x2f\xf6\x82\x9d\x5f\xf1\xe4\x82\x75\x43\xcc\x2e\x75\x30\xe6\x0a\xa5\xdc\xac\xff\x39\xd2\x28\xd4\x2a\x83\xce\xfa\x9f\x8d\x2e\x06\x79\xfb\x41\x36\xe9\xcb\x54\x34\x4d\x01\x1c\x9d\xd6\x2d\xc8\xe9\x41\x29\x0d\xc7\x1b\x94\xb1\xf1\xf5\x3f\xef\x5b\x66\x1b\x38\x05\xe4\xd3\x03\xfe\x7a\x30\xe6\x32\x85\xae\x6b\x39\x86\x44\xf0\xa1\xe9\xcb\xd1\x3e\x93\xf7\x0f\x1a\x7b\xf9\x03\x35\x39\x7c\x0e\x64\x71\x6b\x2b\x20\x82\xc4\x7c\x84\x54\x88\x72\x35\x01\x90\x90\xac\xe9\x15\xc5\x52\x8d\x2a\xe7\x17\x01\x9a\x78\x82\x48\xcd\x1a\x83\x63\x98\xc9\xc4\xa9\x47\x7f\x87\x15\xf5\x59\x16\x4f\x9c\x61\x2f\x8c\xb0\x39\x80\xd8\x58\x48\xba\xd7\x02\xd5\x52\xf9\x60\x13\x23\xf5\x1e\x67\x04\x7a\x32\x7d\xb6\x0e\x8a\x66\xa7\x45\x93\x80\x39\xf8\x25\xf0\xdb\xcb\xbd\x88\xf5\x2e\x1a\xec\x05\x56\x43\x9a\xb0\x13\x01\x9a\x76\xe1\x5b\xb5\x5b\xe3\x03\x6e\xa5\x17\x3b\x0e\x90\x5e\xf6\x2b\xdc\xc3\xbd\x9a\x65\x34\x39\x8e\x69\xfc\x7a\x18\x15\x12\xe0\x96\xea\x0b\xeb\x74\x11\x2f\x4a\xcb\xe0\xb1\x02\x95\xa6\xf7\xa4\x3a\xe6\xc7\xe8\x7c\xdc\xaa\x94\xd2\xca\x80\x3a\xcf\x0e\xa4\xae\x16\xe9\x75\x10\x8c\x4d\x4a\xbd\xb4\xba\xf5\xa8\xee\xd4\x95\x36\x97\x2c\x05\x39\xcd\x3b\xa4\x70\xc2\x7e\x38\xf4\xe5\x6b\xe4\x67\x2d\xf5\x4a\xce\x01\x34\xbc\x70\x2b\xf8\xb0\x76\xf5\x6a\x21\x9e\xdb\x59\x2e\x69\x5b\x47\x96\xe8\xe8\xda\x63\x17\x12\x07\x04\x12\x50\x87\x3f\x8b\xc5\x4a\xe1\x42\x97\x37\xc1\xf0\xf7\x67\xba\xe8\x2b\x24\x03\x30\xcc\x54\x59\x9e\x74\x16\xfe\x83\x4f\x54\xd3\xbb\xeb\x71\x06\xef\xad\x71\xb2\x12\x1a\x6e\xc3\x7e\xb3\x04\x29\xbc\x9d\xad\xe2\x86\xbd\x60\xa6\x5b\x27\xa8\xfc\xdc\x6e\x9e\xff\xa3\x7d\x7e\xb1\xd9\xda\x1e\x45\xac\x71\xfe\x3f\x76\x2e\x80\x95\x31\x35\xf7\xdd\x40\x40\x9e\x1b\x89\x6b\x36\x18\xcf\xd2\x4b\xe5\x18\x7d\x1a\x08\x28\x75\x9b\x3f\x9f\x9f\xff\xe3\xfc\xe7\x8b\x8b\x07\x17\xad\x6d\x4f\x86\x1a\xcb\x24\xae\x94\x8f\x1c\xf4\x3f\x89\x82\x24\xf6\x5c\xa4\x85\x83\xad\x04\xbe\x7d\xe7\x33\x05\x53\x48\x23\x03\x29\x1a\x4c\xd7\x6d\x71\x2d\x06\xa0\xdc\x0f\x04\x22\x6c\x69\x60\xbc\xd0\x2b\xe3\x18\x14\xfa\xdc\xa6\x93\xd2\x65\x97\xfe\x74\x4f\x0b\x4e\xce\x82\x04\x07\x9d\x04\xc5\xb5\x54\x85\x37\xf7\x4b\x44\x08\x83\xcc\x74\x91\x8a\xb4\x94\xfd\x9d\x1d\x0d\x29\x0b\x38\x06\x81\x41\x82\x3a\x4d\x47\x4d\xb6\x54\x83\x26\x20\x25\x4f\x51\xa6\x04\xd8\x20\x4b\xe3\xe3\x7e\xd9\x95\xc8\xe7\xb9\x2c\x4c\x8a\x55\x66\x15\x7c\xfa\xd7\x54\xe4\x9a\xd3\x08\x2e\x88\x7b\xb5\x34\xfb\xfe\x7d\x66\xef\xe2\xb2\xaa\x30\xa2\xe9\x56\xee\xe6\x00\x5c\x49\xed\xb7\x5c\xcb\x7c\x87\x33\xa8\x67\x89\xee\x43\xd4\x73\xf9\x04\xbc\xc9\xe0\xa1\xe0\x1c\x7c\xfd\x00\x91\x72\x91\x52\xa6\x09\xca\xa9\x5a\xd8\x94\x07\xb3\xb4\x90\x09\x3c\x55\x27\x0b\x54\xfd\xb9\xbd\xaa\xbe\x98\x54\x8b\x53\x4d\x87\x73\xd0\x9b\xc3\x2d\x7c\x40\x0c\x98\x64\x4d\x03\xd9\xb3\x10\x29\x03\x91\x86\x6d\xf6\xd8\xce\xfe\xbf\xbc\x1b\x34\x96\xf3\x9d\x8b\xe0\xb2\xfb\xdd\xb7\xa7\xba\x3b\x6e\x24\x95\x1d\x3a\xa2\x20\x3a\x48\x02\x8f\x0f\xff\x01\x43\x8e\x01\x5f\x71\xec\x9e\x53\x92\x8a\x25\x62\x48\xe7\x1b\x1e\xf3\x45\xa8\xfe\x10\x5d\x97\x9a\x23\xd8\xf4\x0e\x6d\xe9\xc4\x6e\x6a\x56\xa0\x55\x47\xb9\x3d\x4e\x4e\x6f\x9c\x2a\x51\x62\x47\xd4\x31\x6d\xbe\xfc\xa7\x78\x07\x2d\xb0\xdc\x27\xf0\xb5\x15\x34\xde\x84\xf4\xdc\xff\xe0\x8d\xc3\xc8\x28\xc1\x18\x49\xf1\x61\x05\x97\x00\xa9\x2a\x05\x4e\x05\xe4\x24\x84\x4a\xa5\xfa\xd7\x77\x6a\x9f\x90\x7b\x45\xcd\xc6\xdc\x84\xc7\xbb\x87\xe3\xda\xa5\xd5\xf4\x1e\xfc\x81\x2e\x8d\x2c\x04\x5d\xda\x81\x35\xec\xb8\xc3\x72\xd0\x86\xd4\x97\x2d\x91\xa3\x2a\x39\x70\xf5\x9d\x63\x1a\xe2\xe6\xd9\xe7\xee\x84\x04\x75\x2a\xf4\x12\x95\x35\xb9\x6e\x6c\xad\x72\x12\x77\xa7\x51\xa9\x9b\x59\xaf\x34\xb3\x17\x4e\xcc\x34\x55\xba\x41\x8b\xfd\x00\xef\xdc\x54\x3c\x73\x89\xdf\x8f\xbb\x8c\x57\xf4\xe4\x2a\x75\xd9\xbd\x7b\x61\xbb\x28\xec\xc1\x37\xbd\x54\xfa\x71\x85\xd8\x5b\x3f\xcb\x34\x8f\xa4\xfb\xaa\xad\xd4\x2d\x0d\xc1\x15\x79\xbd\x7a\x46\x9d\xa0\x43\xfb\x1d\xfb\x42\x0b\x81\xeb\xca\x15\xfb\xbd\xd8\xaf\xae\x03\x6b\x21\x32\xd2\x7c\xb9\xc4\x59\x89\x6a\x36\xd0\xa9\x90\xeb\x26\x5c\xae\xd4\xad\xec\xae\x29\xf2\x7a\x45\xfb\x53\xd0\x17\x08\xe1\xf5\x3d\x40\x91\x0f\x57\x7f\x70\xd0\xac\xed\xaa\xee\x24\x87\xef\x68\x19\x90\xa6\xb4\x5b\xd5\x78\x78\x60\xad\xdd\x2b\x04\x6c\x73\xd1\xfa\xfa\x84\xaf\x5f\x49\xbc\x96\xea\xbd\x18\x1d\x5e\x4f\x9b\x61\xed\x96\xeb\xda\xb4\x0f\x3a\x37\x8a\x64\x9f\xbf\x41\xb5\xe1\x56\x2c\x15\x78\x66\xa7\xe2\xba\xd8\x4a\x64\x2a\x58\x9a\x6d\xc1\xbb\xd5\x03\x59\x6c\x0d\x32\x91\x0f\x64\x96\x46\xfa\x2b\x24\x9d\xda\x82\x3b\x5f\x79\x13\x01\x63\x5d\x33\x9c\xc5\x94\xb2\xd5\x5b\xac\xfa\xfa\xb5\x5c\x04\x66\x33\x3d\xf0\x4d\xaf\x20\x18\xf5\xb4\x18\xbb\x11\xd7\x98\x01\xa1\x5d\x55\xb1\xaf\x81\x3b\x53\x1e\x5b\x69\x24\xf4\x47\xbd\xdc\x72\x57\x87\x37\x4b\x6b\x7b\x53\x58\x56\xc7\x8d\xac\x6c\x99\xf4\xc7\x53\x63\x68\x28\x1f\xd2\x52\x15\xaf\xeb\xb0\x24\xe8\xd0\x19\x3c\x0d\x0c\x2b\x27\xde\x33\xfb\xe2\x35\x08\x4c\xa1\xc1\xf8\x7c\x9e\xa8\x76\x8d\x82\x1a\xfe\xe0\xbc\xef\xae\xa7\x3a\xdb\xaa\xdf\x5f\x8d\xfe\xb3\xb6\xd7\x9a\x7a\x5e\xdf\xd5\x52\xbc\x6e\xf6\xeb\xfd\x4e\x02\x9b\x2d\xf0\x23\xa1\xed\xc9\xf2\x1f\x2b\xd8\x8e\x7d\x8f\x79\x2a\xe8\x64\xc3\x89\x30\x7f\x01\x2b\xf1\xf5\xab\xf5\x15\x32\x95\xbc\x4b\xb1\xca\xa9\xfc\x2a\xe5\xce\x8d\xe3\xad\x0b\x31\x99\x9e\x80\x5c\x5f\xee\xd6\x50\x9d\x17\xbe\x81\xae\x64\x7e\x2b\x19\xc9\x7e\xa5\xbe\xc9\xb2\xa3\x5e\x0e\x5e\x10\x0d\x40\x90\xe2\x69\xcc\x94\x28\x66\x53\x0a\x86\x9a\x93\x14\x55\x91\xe5\xa8\x03\xfd\x57\x93\xa6\x45\x5c\x44\xa0\xd8\x23\xc3\x06\x70\xab\x4b\xec\x1a\x4e\x18\xd7\xb5\x82\xe7\x3b\x80\xf9\x14\x73\x5c\x32\xab\x5a\x68\x82\x79\x80\x3a\x25\x8d\xa7\x63\x5a\x4d\x5b\x5c\x1e\x24\xe1\x13\x91\x8f\x04\x6a\x54\x11\x5c\xb9\x41\xc8\x18\x5b\xb5\xea\x94\x0f\x0a\xdd\x8c\x78\xe1\x1a\x7f\x9e\x47\xbf\x83\x8f\xca\x5d\xfc\x74\xbe\xc1\x8d\x65\x1d\x5f\x6d\xc9\x39\x11\xeb\x3f\x41\x90\x50\x61\xf2\x8f\xeb\x79\x1b\x05\x81\xe7\x19\x65\x3e\x35\x51\xcc\xae\x39\x0c\x24\x7f\x6f\x82\x5e\x95\x96\x31\xf0\x46\x69\xc0\x7f\x1b\xc6\x69\x24\x96\x03\xe1\xf7\x40\x5f\xa8\x03\xd4\x75\xaf\xec\x85\xc4\x1c\x94\x68\x82\x0e\x73\x31\x15\xbc\xf0\x60\xe3\x87\xdb\xc6\xee\xbf\xd3\xb2\xd2\xd9\x07\x73\xf5\xab\xb1\x2d\x71\xab\xad\x3f\xbb\x0a\x67\x99\x81\xe0\x88\x18\xcf\xf3\x08\x73\x40\x9c\xe4\x07\xfe\xd3\x2e\xba\x01\xbd\xc2\x02\x75\x3c\x6b\x81\x57\xf7\x45\xd0\x96\x75\xc1\x8a\x60\xff\xbe\xf0\xc4\xb4\x22\x3b\x3a\x3d\x61\x3d\xf6\x8a\x17\xc2\x1b\x21\x7c\x3e\x25\x47\x75\xdf\x6d\xc9\xba\x0b\x12\x5e\x9d\x5b\xaf\x3e\xf3\xd6\x56\xc5\xbd\x29\x8e\x97\x39\x05\xd5\x7b\x3e\x7d\xbb\x27\x53\x9d\x73\x12\xba\x34\xf8\xce\x42\xf8\xc5\x7a\x37\x19\x4f\x68\x57\x84\x04\xf4\x24\x4d\x16\x01\x74\x9c\x69\x37\x5c\x01\xbf\x08\x3a\xa6\xf5\x68\x3b\x17\xc6\xf3\xa0\xc1\x45\x64\x88\x68\x2c\xa6\xb9\x18\xf0\xc2\x3c\x15\x68\x91\xdc\x73\x5f\x12\x39\x06\x44\xeb\x6d\xf1\x50\x34\xf8\xde\x8c\x79\x51\xf3\xc2\x18\x6e\x29\x6a\x3d\xa0\x46\x80\xf5\xea\x52\x4e\xf5\xa5\xfa\xcd\xee\x52\xea\x38\x4b\x75\x05\xa9\xc6\xef\x72\xbd\xda\xf2\x4a\xf8\x28\x5b\x5b\xa1\x79\x55\x72\x9f\x32\x86\xb8\xe0\x02\xb3\x13\x70\x57\xeb\x55\xc0\x46\x2d\xaf\x60\x78\x8a\xe5\x35\x30\xd7\xc0\x2a\x10\x72\x24\x53\x4d\x63\x6f\x6a\xdc\x26\xdd\xca\x9b\x8f\x68\x5d\xc0\x0b\x8e\x9c\xd0\x90\x16\xc1\x6f\x0c\xa6\x2c\x90\x4f\x7b\xe7\x15\x54\x57\xb8\xb4\x1f\x01\x8e\x12\x76\xc9\xc4\x0a\x03\x2a\xcb\x8b\xd2\xa1\xa9\x41\x95\x12\x56\xd6\x23\x77\x70\x9e\xd6\xab\x1e\x3a\x38\xb7\xfd\xb2\x9e\x02\x47\xb3\xe2\x49\x62\x6c\x8d\xd5\x2c\x81\xce\xec\x15\xef\x19\x68\x74\x4d\x99\xaa\x82\xa7\x03\x0d\xf9\x55\x09\x8f\x11\x50\x88\xeb\xb5\x70\x6a\x56\x1b\xc7\x87\x97\x08\xa8\x12\x89\x3e\xea\xf6\xd5\x3e\xb2\xfe\x67\x8a\x42\x8c\x6a\x14\x34\x50\x87\xd8\xbe\xb2\x53\x45\x75\x3f\xcb\xba\x40\xc2\x78\xda\x51\x78\x0d\xac\xbc\x13\xec\x85\x29\xb6\xeb\x65\xf9\x5f\x83\x09\x65\xab\x3e\xeb\x06\x17\x11\x0b\x55\xbe\x38\x2d\xe3\x65\xe0\xcd\xa5\xfe\x78\xea\x55\xf1\x85\xd6\x1f\x66\xc3\xa1\xc8\x2b\x8b\xa5\x01\xd0\x78\xaa\x36\x6b\x60\xc4\x4c\x80\x73\xcd\x0c\xe9\x32\xee\x7e\xfb\x54\xf7\xeb\xd6\xf3\xdc\x62\x77\xd3\xf4\x0b\xfa\xca\x9e\xbe\xe9\x5d\x99\xe9\x0c\xf8\xb7\x55\x3d\x91\x43\x43\xab\xf2\x00\x5c\x7d\x9f\x86\x3b\xa8\xf6\x48\xd6\x41\x58\xbb\x8b\x0a\x17\x7f\x65\xbc\xe7\xce\x2f\xf6\xab\x2a\x40\x42\xb4\xd5\x82\x04\x82\xa8\x40\xce\xfa\x9f\x35\x83\xbb\xef\x6d\x35\xa2\x3c\x9e\xc4\x32\xd6\x1b\x3b\x1b\x14\x2e\x79\x26\x72\x09\xcb\xee\xce\x60\x08\x4b\xd3\x26\x34\x01\xa9\xb6\xfe\xdd\xd4\xff\x47\x66\x9f\x70\xbc\x75\x6c\x3e\xc1\xb9\x9d\xd3\xa7\x8a\x55\x63\xbd\xa5\xa1\xa0\x12\xb5\x3e\x0a\x35\x27\x97\x2d\xf1\x77\x0a\xc0\x2d\x23\x19\x8c\xd8\x2f\xe2\xd7\x90\xe5\x52\x51\xf9\x6a\xf0\xff\x59\xef\x8a\x4a\x89\x89\x4b\x59\x46\xc1\x7c\x65\x55\x4d\xa5\x90\x01\xee\x06\x77\x90\xff\x6f\xe9\x7d\xe4\xff\x5b\x76\x37\x05\x75\xc2\x7b\xca\xff\x17\xdc\x59\xfe\x3f\xff\xfe\x0a\x60\xd9\xbb\xcc\xff\x57\xa3\x88\xb5\x0d\xaa\x77\x5c\xd0\x4f\x78\xdf\x55\xc7\x56\xbe\xfb\xfc\x7f\xe6\x1e\xf4\xbf\xb5\x6e\x73\xdb\xf8\xcd\xd0\xc0\x4a\x2a\x4d\xdf\x98\xdc\x68\x1b\xb1\xa5\x5b\x16\x61\x5a\x7f\xec\x71\xfd\xd8\xfe\xa5\x3d\xae\x91\xe7\x0d\xb5\xad\xd8\xb3\x4e\xcd\x3e\xaf\xb2\x69\x95\x2b\xfd\x46\x76\x2d\xc3\x4c\x54\xec\x5a\x7e\xc1\x52\xbb\x96\x5f\xe9\x1b\xec\x5a\x87\xe9\xdd\xed\x5a\x15\xef\x64\x67\xdd\xf9\xfa\xb5\x62\x13\xa8\xf0\x98\xff\xc9\xb6\x30\x6f\x92\xbf\xa1\x3d\xcc\x2e\xc4\x70\x95\xac\x5c\x37\x73\x6a\x70\x6f\x39\x2b\x00\xa8\x63\x8d\xda\x55\x99\x33\xf2\x01\x55\x6e\xaf\xda\x99\x7f\x48\x2f\xd3\x6c\x9e\x9a\xd1\xd2\xe4\xa7\x79\x76\x25\x63\x11\xb7\x1b\x95\x73\xe2\x8e\xa3\xd9\x62\xfc\xab\x6c\x0f\xb4\xa3\x72\x2b\xe0\x4b\xc7\xf8\xf3\xc2\x73\x6b\x37\x12\x86\xc3\x13\x9f\x4b\xa9\x2c\x56\x9d\x3c\xa2\xb1\xcc\xde\xdf\xae\x56\xb0\x12\xb6\x1b\xaf\x42\x9d\x46\xcf\x33\x39\x96\x54\x18\x81\x79\x2e\x28\x5b\x62\x0e\x0c\xeb\xf8\x76\xba\xa0\xa4\x64\x82\xfc\x5d\x8d\x9c\xff\xdd\xac\x81\x77\x33\xb4\xd5\xcf\xd8\xb7\xa6\x85\xad\x1c\x7c\xab\x0f\xaa\x10\xc4\xfa\x39\x50\x59\xb7\x2c\x3c\x94\x21\xe6\x75\x20\x97\x59\x1c\x4d\x69\x05\x6a\x65\xa0\xbe\x2e\xaa\x0a\xdf\x13\xb0\x56\x0c\xde\xab\x55\xe9\xb0\xee\xba\xc4\xa3\xd0\xad\xdc\xe9\x15\x2d\x57\x50\x5a\xd2\x55\x05\x96\x20\xbf\x68\xc9\x92\x84\x75\x7c\x03\x50\x3d\x43\xe0\x29\xb0\x82\xae\xac\x0c\x50\x6f\x6b\xb2\xc5\x7e\x0f\x55\x7e\x47\xb3\x2d\x25\xc0\x5a\xb8\x59\x32\x74\x5d\xd4\x85\x8b\xf8\xff\x1a\xeb\x18\x29\xae\xaa\x06\xb2\x8a\xea\x67\x89\xd9\xac\x9e\xb3\xd9\x5f\x22\x8f\x3a\xb2\x5e\x23\xf5\x92\x15\xea\x56\xc5\x92\x4f\xb0\xbd\x16\x65\xb3\x0d\x69\x9e\x1a\x8d\x25\x5a\x27\xef\x5e\xf0\xa0\x2c\xbd\x1a\x96\xf5\x54\x27\x40\xd7\x7a\x2d\xd6\x49\xf9\xf7\xfc\x34\x14\x5f\xbf\xb2\x65\x2a\x26\xf3\xcc\x75\xa3\xd2\x01\x18\x65\x5e\x7b\x17\xae\x61\x0e\x2d\x0f\xe4\xd5\x80\x70\xcf\x3a\x2b\x8e\xdf\x97\x5f\xbf\x57\x01\x51\x55\xde\x51\x5f\x0d\x52\x5c\x37\x74\x27\x65\x6e\xb6\x06\x26\x55\xd7\xe2\x8d\x6d\xd9\x65\x0d\xb4\xba\x34\x96\x68\x22\x42\x38\xb6\x61\x65\x55\x6a\xe5\xe8\xfa\xa9\x9f\x7b\x30\xfd\x5d\xba\x47\x7b\x5b\xaf\x2f\xa9\xd7\x83\x84\xfc\x39\x46\xff\x80\xee\xa3\x02\x02\x15\x23\x41\xa5\xff\x04\xcd\x88\xed\xef\x5f\xd6\x90\x98\x5f\xbe\xe4\x8b\xfe\x7f\x4b\xe4\xde\x7a\x99\xf7\x52\x94\xc4\xb3\x5b\x85\xd7\xe5\x51\x55\x4b\xea\xd5\x0b\xb1\xa6\x98\xae\xf5\x17\xa5\x0f\x79\x85\x8e\xfb\x8d\xea\x84\x5c\x7f\x2b\xeb\x4b\x96\x08\xbb\xb6\xe1\x72\x81\xd7\xf6\x5b\x2f\xf4\x86\x43\x5f\x26\xf8\x96\x22\x40\x6d\x59\xab\x2a\xa8\x7c\xce\x40\x5c\x44\x63\x3a\x2a\xc4\x2b\xc1\xad\xbe\xfb\xb7\x39\x5f\x76\xa6\x55\x1e\xb8\xc8\x67\x7a\x95\x1b\x2f\x1a\x14\xf5\x56\x39\x28\x2b\xa2\x40\x6b\xaa\xdd\x1a\x25\x76\x6b\x3c\x36\x3e\x26\xb4\x61\x9e\x55\xd2\xdd\x16\x8b\x8d\x9a\x0c\x63\x5e\xec\x75\xa8\xf4\x21\x5d\x4d\x7d\x48\xf8\xfd\xdb\x22\xfb\x56\x86\x59\xaf\xec\xc7\xc4\x6a\x07\x5d\xd4\x08\x2c\xb8\x8d\xee\x39\xd8\x8e\xd3\xbe\x6f\x9a\x3d\xc6\xcd\x58\x9a\x5c\x23\xf0\x53\x78\xfc\x2b\xfd\x14\x7e\xb3\x54\x19\x63\x71\x7d\x06\xaf\x56\xf7\x58\xd3\xb1\x30\x3e\xdb\xc2\xa9\xb5\x89\x12\xa8\x23\xa3\xbb\x8f\x1e\x57\x68\x27\x3e\xb5\x8c\xae\xd0\xdf\x35\xd8\x26\x6b\x36\x75\xd5\x9d\xc7\x1a\x67\x3b\x88\xb3\x2d\xb6\xc9\x64\xbb\xc8\x48\xb1\xbf\xf3\xb8\xd5\x6a\x17\xd9\x87\xe9\xd4\xe6\x11\xac\x93\x1a\x39\x8e\xff\x06\x8a\x31\x06\x1f\x7d\x42\xfe\xe7\x4c\xcc\x02\x8b\xa9\xff\xbd\xf9\x8b\xfe\x7f\x33\x42\xf2\xa1\x87\x6f\xa5\xd7\x7d\xcd\x04\x60\x8e\x85\x98\xb0\x1e\xc3\x6a\xd3\x6c\xda\x2c\x05\xda\x22\x5b\x04\x0f\x5b\x43\xf8\x8f\xfe\x31\xcd\xb3\x69\xf9\x96\x58\xa5\xf0\xf6\x26\x00\x14\xe2\xdc\x6f\x1c\xac\xb8\x97\x0d\x37\xeb\x7f\xf6\x2e\xad\xcf\xcb\x82\xc2\x1d\x5f\x74\xfe\xf9\x62\x95\xd6\xc3\xff\x67\x07\x83\xbb\x87\x8d\x5b\xb7\xc5\x6d\xdf\x84\x83\xae\x59\x13\xd6\x73\xa0\xab\xc7\xec\xc6\x77\x89\x39\xcb\xaa\xa1\x8c\x41\x41\x53\x65\xb3\x7c\x20\x56\x64\x41\x30\x8c\xb5\x1f\x59\xf8\x2d\xfe\x61\x75\x78\x8e\x9d\xae\x8a\x04\x37\x0e\x64\x50\xf1\x5c\xde\xba\xe6\xb0\x42\x17\x60\xe1\xa1\x16\xdf\x10\xf3\x09\xfe\x53\xfe\x12\xa1\x43\x55\xc1\xf3\x91\x28\x22\xb6\x64\x89\xb6\x1f\x98\x38\xf9\x34\xdb\x02\xe7\xc8\xad\x5c\x60\x3e\xa9\x2e\xeb\xb0\x07\xdb\x8e\x5f\x43\x08\x75\x0e\x10\xd0\xc5\x32\x7f\x7b\x6c\x16\x70\xe2\x95\x88\x79\x3a\x10\x08\xa8\xaa\x46\x83\xcf\x14\xbb\x81\x83\xa8\xd0\x7e\xe8\x10\xea\x79\x5a\x58\xfa\xd0\x5b\xd2\xb5\xe9\xbe\xe9\x61\x47\xb3\x16\x3d\xd0\x4b\xb7\x36\x22\x05\xec\xb9\xf7\x56\xc5\xbd\xe0\x88\xeb\xce\x17\x8e\xef\x1c\x6b\xe8\x7d\xd7\xb7\xf8\xd2\x48\x96\xba\x4b\xce\x18\x4c\xc3\x5d\xbe\xa8\xb5\xb5\xad\xde\xad\x7b\xb4\x58\xce\x5f\x83\x3e\x2c\xdb\xb8\xb0\x6b\x1b\x85\x1b\x6c\x90\xc7\xf3\x00\x36\x9e\xd1\x86\x04\x83\xa8\xc1\x00\xb0\xde\x9b\x6f\x35\x0b\x18\x02\x0b\x69\x81\x59\x8a\x5a\xe7\xc1\x25\x7d\xad\xe8\x8a\x4e\xf9\x30\xcb\x0f\xf9\x60\xec\x5d\x8b\x9a\x94\x45\xac\x36\x69\x87\xc5\x06\x33\x16\x59\xbb\xfd\xe0\x0f\x06\x35\x8e\xf0\x66\x21\x7c\x90\x35\xf1\xa4\x0e\xbf\xa1\x6e\x19\xc7\x11\x40\x98\x73\x11\xef\x2b\x57\x53\x96\xeb\x2c\x23\xf9\x76\x18\xac\x17\x10\x91\x23\x9c\x31\xfc\x7f\xd5\x97\x73\x25\x9e\x86\xa0\xe9\xf9\xad\x42\x4c\x6e\xbf\x48\x96\x41\xf3\x07\xa9\x21\x2d\x3d\x36\x5e\x17\xcb\x4f\x00\x95\xf8\x52\x27\xe1\x42\x3b\x17\xf1\x6c\x20\xbc\x8d\xe7\x83\x41\xc5\x11\xd2\xba\x1c\x38\xe2\xad\x85\xb1\xfd\x25\x79\x03\x2c\x88\xf2\x16\xf0\xc1\xc0\x44\xfc\xe3\xca\x9b\x0f\xe4\x9d\x58\xb7\xf0\xb5\x4b\xe4\x01\xba\xc2\x57\x08\xaa\x4b\x63\x38\xa8\xc1\xc0\xb8\xac\xf9\x07\xcb\x73\x5a\xc4\xfb\x20\xb8\x7e\xe1\xcb\x29\xbc\x2d\x7f\x0a\xf3\x2d\x5d\x34\x25\x3f\xb4\x5f\xbd\xb0\xde\x3c\x82\x75\x5d\x31\x87\xa2\x3c\x7c\x0c\x32\xa9\x3a\xad\x97\xd3\x6d\xf8\x6c\x83\x2a\xf2\x9f\x64\x31\xce\x66\x90\xba\x1d\x9f\x36\xf7\x62\x8d\x37\x21\xc6\x98\x19\x63\x0d\xbc\x04\x70\x07\xc1\x09\x5e\x1c\x17\x6a\xc0\xa7\x82\xa5\x02\x9d\xba\xf3\x6c\xae\x22\x96\x66\xac\xc8\x17\xed\x76\x7b\xc0\x0b\x7a\xf4\x55\xc4\xdd\xf2\x34\xc3\x51\xb9\xf1\x7c\x77\xde\xd9\xfa\x9e\x6f\x0d\x2f\xbe\xec\xde\x6c\x8f\x64\x64\x7b\x09\x82\xc6\x74\xef\xc5\x70\xeb\x29\xfc\x51\xe4\x8b\x3a\x6b\x68\x45\x60\x0a\xbb\xb4\x5a\x3e\x1c\x66\xb3\x8e\x1d\x08\x5b\x94\xfd\x77\x8d\x0d\x80\x95\x5f\x21\xa2\x2d\x01\x85\xeb\x61\x5a\xbf\x33\x26\x21\x1b\x80\x98\x73\xc5\xb2\x5c\x8e\x24\x86\x1a\xcf\x73\x59\x14\x22\x65\xfd\x05\xfb\x21\x97\x3c\x65\x3f\x8d\x65\x21\x58\x73\xa2\x06\x10\x63\xa9\x59\x38\x48\x3a\x9f\xb5\x3f\x6b\x08\xb9\xd0\x9c\x7c\xbe\xa0\x14\xcc\x89\xec\xe7\x3c\x5f\xb4\x4d\x3f\x47\x98\x4a\x1e\x5e\x22\x81\xc4\xfe\x22\x66\x90\x3c\x0a\x72\xe9\x82\xfc\x25\x72\xc6\x63\xfd\x0d\xde\xeb\xc8\xf0\x81\xd7\xef\x9f\x3e\xb6\x28\xa1\x71\x86\xc4\x89\x4a\xb6\x26\xb7\x58\x95\xab\x92\x46\xd4\x73\x85\x3e\x3b\x65\xa3\x11\xd0\xd1\x32\xb8\xab\x4c\xc3\x53\x28\x0b\xfc\x8b\x29\x0b\x1e\x90\x1f\x55\xe4\x55\x75\xad\x07\xff\x9e\xe7\x2c\x5a\x0f\x1f\x45\x34\x0f\xce\xfa\x37\x9d\x03\xe3\xab\x07\x38\x6a\xd2\x75\x7b\xe8\x3c\xb3\xf8\xfc\x10\xf1\xd9\xcf\xf6\xb7\xc4\xf1\xaf\x81\xfa\x01\x2d\x5c\xda\xfc\x18\xff\xa3\x43\xf1\xb6\xbb\xad\x88\xed\x3c\x06\x37\x32\x48\x27\x57\xb9\x1e\x7c\x07\x2f\xfb\x94\x3b\x5b\xc6\xf9\xe3\x5a\xae\xd0\x13\x0e\x98\x79\x62\x3d\x78\x8d\xaf\x55\xba\x10\x82\x79\x0c\x10\x49\xae\x77\x5f\x69\xfc\xdb\x0a\xca\xbe\x7e\x75\xc5\x87\xba\xb8\xbd\xac\xf8\xd1\x6b\x5d\xfc\x71\x59\xf1\x13\x68\xfd\xff\x95\x8b\x9b\x03\x7c\x44\x73\x0f\xe2\xc6\x07\xec\x19\xfc\xf1\x7d\x4b\x57\xee\x6c\x7d\xbf\xac\xfa\xc3\x1d\xaf\xfa\xa3\x03\xa8\xce\xb7\xfe\xb9\xac\xfa\x63\xbf\xfa\x13\xac\x7e\xb0\xf5\x77\xa7\x2a\x2b\xcb\x43\xfe\x5b\xf5\x26\x93\x8a\x2c\xf1\x0c\xb7\xfa\x97\x0d\xbc\xf7\xa2\xca\xd0\x7b\xd8\x87\xd5\x7c\x9c\x0f\x2e\x7e\x25\xf4\x95\xe0\x9b\x16\x7e\xe7\xfa\x65\x87\xe1\x8a\x3c\x67\x8f\x5b\x17\x7e\xdf\x1a\x0c\x96\xe1\xc3\xfd\xad\xb2\x9c\x7d\xc7\xc1\xbc\x7a\xda\xe9\xe0\x9e\xc3\xaa\x1f\x76\xee\x3e\xb8\x43\x37\xb8\x9d\xdd\xfa\xd1\x99\xa1\xdb\x41\xfe\x86\x53\x28\xa5\x1a\x80\x37\x64\xaf\x77\x3a\x9d\x4e\x07\x54\x46\x16\xec\x6b\x78\x90\x7b\xa7\xd3\xd2\x7d\xd5\x9d\x33\x5b\xcf\x77\xa0\x44\x6c\xf2\xc6\xfa\xda\x9b\xed\xd3\xd6\x45\x30\xd0\xa5\x33\xdf\xd9\x75\x53\xbf\x5b\x8b\xc7\x77\x6f\xe0\xd6\xad\x8e\x3d\x85\xb7\x14\x6f\x42\x35\x57\x8d\x86\x2b\x4c\x98\xac\xeb\xfe\x42\xba\xb0\xf3\x2f\x2c\xeb\x7f\xee\xb2\x2f\x2c\xeb\x12\xbf\x7a\x13\x41\xca\x8d\x2e\x6b\x64\x0d\x76\x73\xe1\xb4\xce\xb9\x18\x06\x96\xb5\x3a\x42\xe8\x6b\xcc\x6a\xe9\xa0\xaf\x32\xab\x44\x8d\xdd\x45\x5f\x76\x27\xd7\xd8\x3a\x9d\x58\x29\x9a\xad\xa2\x14\x2b\x45\xb4\x7d\xbe\xa8\xa6\x5b\xa2\x14\x6e\x64\x58\xa9\x66\x57\x2a\x67\x39\xf3\x44\xaf\x2b\x4a\x7e\x6e\x9c\xc6\xf4\x62\xda\x94\x64\x90\x69\xac\x3e\x49\x9e\xfe\x47\xfa\x45\x2d\x22\xd1\x76\x81\x53\x35\xee\x92\x1e\xf2\x4d\x8d\xd4\x04\x1d\x40\x9b\x30\xaf\x18\x5b\x9e\xd8\xb0\x46\x1f\xba\x5f\x75\xc9\xdb\xf7\x42\x52\x30\xc6\x3a\x8c\x42\x31\x71\xd7\xfd\xcf\xf5\x2c\xff\x32\x1e\x04\x1a\x60\xb2\x2c\xca\x01\x83\x90\x2e\x1a\x7e\x8f\xe8\x20\x1f\xf6\xe8\x39\xcd\x07\x0e\x7e\xfd\xcf\x9e\xf2\xa2\x6c\xfc\xad\xe1\x3e\x20\xe0\xa6\xee\x98\xdd\xbb\xa7\x81\xb7\x07\x59\xaa\x8a\x7c\x36\x28\xb2\x9c\xcc\x78\xfe\x27\xeb\xbd\xbf\xaa\x0c\x55\xbc\xc1\x99\xed\xc3\x0b\x0a\xc1\x99\x85\xc4\x70\x3c\x62\xfd\xd2\x0a\xba\xd4\x66\x50\xb8\xc4\xd7\x80\xa2\xbe\x7c\x1d\x48\x37\xfc\x93\xe2\x58\x48\xa9\x87\xff\xb5\x41\x80\xba\xf3\xae\xf9\x11\xf9\x88\xd1\x35\x3f\xfc\x64\xd5\xee\x95\x0b\xe6\x39\xf9\xf8\xae\x3a\x66\xee\x5d\xfb\xcb\x7c\xc7\x0d\xee\xda\x5f\xf8\x1d\x44\xce\x2e\xfe\xc7\x18\x4a\x6e\x2e\xa2\x87\x4f\xee\x62\x0d\x81\xb7\x34\xa7\x8b\x5c\x8e\xc6\x05\xfb\x8f\x6c\x21\xd2\x22\x62\x47\xe9\xa0\x0d\x41\xb2\x98\xa7\xf8\x18\xdf\x1b\x49\x31\xc3\x71\x96\xab\xf6\xfa\xf6\xb6\x6e\xf9\x4e\xe4\x13\x89\xcf\x61\x4b\x05\xcc\x7d\x7f\xc1\x46\x39\x4f\xe1\x0d\xaa\x61\x2e\x20\x1b\xb2\xbe\x57\x46\x22\x82\xb7\xf9\xd2\x05\x9b\x8a\x5c\x65\x29\xbd\x0d\x0d\xa9\x83\x35\xa8\x41\x36\x5d\x60\xaa\x66\xa9\x98\xca\x86\xc5\x9c\xe7\x02\xc6\xc0\x95\xca\x06\x92\x17\xf0\x60\xd4\x60\x36\xb1\x96\xaf\xa1\x4c\x84\x62\xcd\x62\x2c\x34\x80\x8d\x53\x6a\xb4\xd1\x82\xae\x62\xc1\x13\x26\x31\x89\xb3\x29\x82\xe4\xcb\xfa\x16\xcb\x05\x0a\x20\x90\x80\x40\xa6\x83\x64\x16\x53\x4e\x68\x53\x03\x8c\x88\x94\x5f\x6b\x2c\x18\xac\x0f\x78\x93\xce\x94\x88\x60\xb4\x11\x9b\x64\xb1\x1c\x2e\x48\xe6\x8f\xf0\xcd\x1a\x35\x8e\x34\x98\x58\x2a\xca\x07\x1d\x31\x05\x6f\xd9\x88\x54\x37\xe4\x69\xbc\xad\xc5\x1f\x91\x24\xf8\x84\xb9\x7d\x46\xc9\x8c\x11\x1f\x73\x29\x32\xbd\x4e\x13\x09\xb9\xa5\x71\xc5\xa0\xf7\xf9\x38\x9b\x84\x53\x92\x8a\x0d\x67\x79\x2a\xd5\x18\x1f\xe7\x8a\x33\xa6\x32\xe8\x14\x68\x02\x66\x44\xd2\x50\xec\xab\x24\xee\xfd\x12\xd5\xa5\x8d\x3c\x1b\x0b\xc6\xfb\xd9\x15\xbc\xab\x4e\xc8\x90\x66\x85\x1c\x08\xca\xa7\x2d\x15\x8e\x07\x37\x9b\x8a\xd4\x98\xe3\x73\x4f\xb8\x82\x22\x5e\xc7\x17\x31\xb8\x37\xb9\x5c\x8f\x44\x15\x3c\x2d\x24\x4f\x98\xc6\x3a\x50\x14\x97\x26\x6d\x10\xea\xec\xc7\x43\x76\x7a\xf2\xfa\xec\xa7\x83\xf7\x87\xec\xe8\x94\xbd\x7b\x7f\xf2\x97\xa3\x57\x87\xaf\xd8\xc6\xc1\x29\x3b\x3a\xdd\x88\xd8\x4f\x47\x67\x3f\x9e\x7c\x38\x63\x3f\x1d\xbc\x7f\x7f\x70\x7c\xf6\x37\x76\xf2\x9a\x1d\x1c\xff\x8d\xfd\xf9\xe8\xf8\x55\xc4\x0e\xff\xfa\xee\xfd\xe1\xe9\xa9\x06\x75\xf2\x9e\x1d\xbd\x7d\xf7\xe6\xe8\xf0\x55\xc4\x8e\x8e\x5f\xbe\xf9\xf0\xea\xe8\xf8\x4f\xec\x87\x0f\x67\xec\xf8\xe4\x8c\xbd\x39\x7a\x7b\x74\x76\xf8\x8a\x9d\x9d\x40\x9f\x04\xed\xe8\xf0\x94\x9d\xbc\xd6\xad\xdf\x1e\xbe\x7f\xf9\xe3\xc1\xf1\xd9\xc1\x0f\x47\x6f\x8e\xce\xfe\x16\xb1\xd7\x47\x67\xc7\x87\xa7\xa7\xec\xf5\xc9\x7b\x76\xc0\xde\x1d\xbc\x3f\x3b\x7a\xf9\xe1\xcd\xc1\x7b\xf6\xee\xc3\xfb\x77\x27\xa7\x87\xec\xe0\xf8\x15\x3b\x3e\x39\x3e\x3a\x7e\xfd\xfe\xe8\xf8\x4f\x87\x6f\x0f\x8f\xcf\xda\xec\xe8\x58\x03\x3b\x3e\x61\x87\x7f\x39\x3c\x3e\x63\xa7\x3f\x1e\xbc\x79\x03\x1d\x1e\x7c\x38\xfb\xf1\xe4\xfd\xa9\x1e\xe5\xcb\x93\x77\x7f\x7b\x7f\xf4\xa7\x1f\xcf\xd8\x8f\x27\x6f\x5e\x1d\xbe\x3f\x65\x3f\x1c\xb2\x37\x47\x07\x3f\xbc\x39\xc4\xde\x8e\xff\xc6\x5e\xbe\x39\x38\x7a\x0b\x88\xf5\xea\xe0\xed\xc1\x9f\x0e\xa1\xe1\xc9\xd9\x8f\x87\xef\xa1\x26\x8d\xf1\xa7\x1f\x0f\xe1\xd3\xd1\x31\x3b\x38\x66\x07\x2f\xcf\x8e\x4e\x8e\xf5\xfa\xbc\x3c\x39\x3e\x7b\x7f\xf0\xf2\x2c\x62\x67\x27\xef\xcf\xd8\xc9\x7b\x58\x1f\x5d\xf5\xa7\xa3\xd3\xc3\x88\x1d\xbc\x3f\x3a\xd5\x8b\xf3\xfa\xfd\xc9\xdb\x88\xe9\xd5\x3d\x79\x0d\xeb\x77\xac\x9b\x1e\x1f\x22\x20\xbd\xf2\xe1\x06\x9d\xbc\xd7\x7f\x6b\x60\x1f\x4e\x0f\xdd\x88\x5e\x1d\x1e\xbc\x39\x3a\xfe\xd3\xa9\x6e\xef\xd7\x6f\xaf\x97\x6d\xaf\x98\x2f\x4a\xd3\xfe\xd0\xd4\xea\x14\x07\xd9\x95\xc8\x73\x19\xc7\x22\xa5\x67\xe8\xf5\xd5\x47\x47\xb5\xda\xae\xa9\xaf\xf8\x16\xbd\x42\x96\x0b\x7e\xa9\xf1\x8a\x9d\x0a\xd1\x65\xe6\x31\xa4\x91\x2c\xc6\xb3\x7e\x7b\x90\x4d\xb6\x3f\x03\xb5\xdb\x4e\xb3\x58\x6c\x4b\xa5\x66\x42\x6d\xef\x3c\xe9\x3c\x59\xb7\x37\x4b\x09\xb8\x65\x22\xf0\x96\x59\x76\x4b\x87\xad\xbc\x34\xa7\xd0\x74\x7f\xfd\x66\x85\xbb\x5b\xf3\x17\x15\x31\x25\xa6\x11\x13\xbf\x94\x2c\x4d\x4a\x4c\x21\xc6\x70\xaa\xef\xe8\x06\x5a\xd6\xc5\x2f\xac\xa7\xff\x4f\x7f\xe9\xc1\x97\x30\x6d\xf9\x7a\xc0\x66\xfd\xa2\x02\xbd\x84\x6e\xf5\x8b\xaa\x55\xaf\xf8\xd6\x31\xba\xdb\x91\xa1\x1d\x09\xe0\x5e\x40\x7d\xa7\x8b\x7e\xd1\x83\xff\x45\x51\x4e\x59\x25\xa6\xc8\x00\x81\xb9\x82\x5f\x93\x27\x92\x16\x3f\xf6\xd7\x03\x27\x89\xd0\xd1\x1f\xcc\x42\xb6\xbe\x17\x46\x6b\xc6\xe3\x60\x95\x6a\x07\xc3\x4b\x44\x8a\xa3\x31\xcf\x0d\x83\x1a\xca\xb4\xd5\x22\x33\x9b\x08\x9e\x9a\x3c\x7a\x9a\x7e\x41\x2e\xbd\x34\x23\x72\x8f\x7c\xf2\x20\x9b\xa5\x05\x0d\xd7\x34\xa6\x74\x70\xba\x87\xe7\x06\xa2\x19\x1c\x76\x5b\x1e\x50\x1d\xb3\x9f\x88\x34\xe0\xf1\x75\xf1\x35\x0c\xf9\x5c\x5e\x58\xe5\x0d\xae\x72\xc4\x1a\xdf\xed\x76\xfc\xe8\x19\x19\xeb\xba\xd7\x96\x09\x16\xbf\x78\x85\x97\xa0\xfc\xbb\x82\xff\xbf\x8c\xd8\x95\xe7\xbe\xa2\xdb\x3d\x0f\x74\x67\x97\xa0\x02\x63\xd7\x6d\x20\xcd\x79\xb3\x13\x69\xe0\x96\xe7\xbd\x2a\x15\x6b\x00\x9b\x6c\xa7\x55\xeb\xf1\x66\x60\x95\x1a\x97\xfc\x00\x2f\xc1\x47\xbe\xa2\x1a\xbd\x74\xfa\xaf\xab\xfa\x1a\x57\x58\xc3\x31\xa9\x75\x67\xf2\xd2\xb3\x02\x80\xb0\x01\x4a\xfb\xe5\xee\x94\x50\xa5\xd2\x86\x98\xff\xfa\x69\x5a\xb0\xe7\xf8\x2b\x62\x57\x17\x4e\x33\x0c\xb3\xac\x33\x29\x2f\xf1\x16\xd1\x47\xcf\x29\xe4\xae\xd5\x6a\x82\x12\xb2\xfd\xba\x76\xc0\xf5\x63\x86\x04\xe7\x23\xa3\x59\xbf\xa7\x7f\xb0\x7e\x7f\xb0\x7e\x7f\xb0\x7e\x7f\xb0\x7e\xff\x6d\x59\xbf\x20\x6f\x45\x5d\x7e\x0e\x93\x89\x43\xcd\x25\x18\xca\x8c\xae\xc8\x90\xed\x01\x57\xc2\xf2\x32\xc6\xce\x67\xf4\x2e\x74\x63\x60\x1d\x13\xa8\x50\xae\xc4\x5e\xb0\x46\x91\xcf\x04\x38\xcf\x81\x2e\xa3\x11\xb4\x23\x26\xa4\xd4\x4c\xaa\xd7\x32\x95\x05\x64\x0a\x79\xc1\xae\x7c\x67\x51\xb2\xbd\x95\x1a\xe0\x55\x78\xb3\x3a\xce\x01\x2f\x32\xcb\xf9\xa5\x7c\x22\xbe\x85\xed\x5b\x96\xfc\x81\xd2\x43\x19\x7f\x29\xcb\x9d\xd4\x85\xf2\x97\xf4\x3c\xee\xa1\x59\x0a\xc1\xf8\xb3\x51\x1b\x7a\x8f\x4c\x5e\xba\x4b\x14\xd4\x81\xca\x66\x54\x28\x9b\x40\x4b\x1b\xdd\xd4\x77\xf6\x26\x13\xbf\x18\xbe\x61\xe5\x05\x5d\x1e\x0d\x5c\xc0\x65\x44\x29\x55\xbd\x54\xf6\x39\xdb\xdb\xc6\x72\x15\x84\xd6\xb6\xd0\x9f\x18\x99\x59\xfa\x56\x76\x10\xf8\xf6\x3e\xcc\x9c\x2c\xc8\xf5\x6a\x67\xfe\xee\xdc\x43\x14\x08\x70\x28\x48\xd0\x71\x5b\x87\xd0\x1e\xd7\x98\x6d\xba\xe5\xb9\xf3\x68\x7d\xad\xdb\x7f\x3a\x1b\xe3\x5c\xf0\xf8\x54\x43\x8e\xd8\x10\x81\xeb\xa5\xb9\xd6\xec\xff\xd4\xae\x0d\xfe\xd9\xc4\x97\x0b\x50\x4c\x71\x69\xb8\xeb\xd8\xf0\x6b\xa7\xd6\x96\x9b\x9b\x0e\xdf\x49\xfd\x3b\x6c\x5e\x6b\x7e\x1c\x7c\x8e\xf0\xc0\x78\x0f\x34\x2a\x90\xdf\x48\xca\xa2\x43\x11\x6a\xd6\xc3\x45\xb1\x3a\xd6\xa5\x03\xa3\x47\x4b\x4b\xca\xd8\xbb\x4b\x95\xe8\x04\x63\x47\x6f\xf2\x9e\x57\x46\xed\x98\xc3\xef\x7f\x85\x97\x34\x15\xb4\xad\x27\x88\xf9\x50\xf3\x14\x23\x3d\xe7\xdb\xda\xb7\xad\xac\xcb\x82\xf9\xb0\xe4\xa1\x47\x7a\xf4\xd7\xbd\x2a\x89\xa0\x36\xba\x0f\x9f\x44\x1b\xa6\x78\xa3\xfb\xf0\xe9\xcd\x45\xf4\xa8\x73\x97\x69\x54\x08\xae\xd7\x5b\x22\xfb\xdb\x1f\x55\x91\x0b\x3e\xf9\x18\xcf\xa6\x89\xb8\x6e\x7f\x56\x5e\xe7\xb5\xe5\x1b\xdd\x47\x3b\xba\xf7\x9d\x3f\x38\xec\x3f\x38\xec\x3f\x38\xec\x3f\x38\xec\xff\x3e\x1c\xf6\xf6\x36\xe3\x0c\x09\x15\x43\xb2\xa5\xf1\x17\x13\xef\x9b\x0f\xa0\xfa\x92\x8a\xf5\xb3\x62\xcc\x72\xc1\x63\x88\x56\xd1\x68\x38\xcf\x65\xa1\xff\x40\x95\xa9\x4c\x07\x82\xfd\xc7\x29\x8b\x33\xa1\xd2\x46\xc1\xc6\xfc\x4a\xb0\xc9\x2c\x29\xe4\x34\x11\xf6\xb1\x09\x20\x02\x63\xa1\x5b\xa6\x03\x4d\x84\xc0\xb5\x2c\xe1\x4a\xc1\xc9\xb2\xb5\x92\x85\xa9\xa7\xf0\x0d\xfc\xf7\xd4\x73\x64\x9e\xeb\x84\x3c\xfd\x5c\xc9\x42\x0e\xa0\xba\xae\xa5\x61\xfc\x64\x47\x55\xd1\x1d\x3f\x78\x46\x1a\x33\x4d\xb4\x9e\x3f\xd8\xa6\xa7\x59\x52\xee\x53\xf9\x69\x9e\x0d\x84\x52\x90\x84\x5a\x0e\x2e\xb7\x78\x3e\x02\x12\xbf\xfd\xe0\xd9\x76\xb9\x79\x15\xe2\xaf\xbc\xe7\x83\x87\x40\x56\x5c\xf4\xee\x75\x03\x7b\x6b\x1b\xc6\x12\x54\x89\x37\xf5\xe3\xac\xdc\x69\xaf\x60\xcf\x6b\xd7\xe4\xaa\xe6\x41\xed\x41\x96\x8b\x2d\xfd\x71\x4b\xc2\x5a\xc0\x0b\xd8\x76\x7f\xbc\x8a\xe6\xdb\xb2\x05\xd3\xc0\xcd\x4e\x86\x57\xab\xb9\x36\x0d\x86\x99\x64\xae\x66\x3b\xeb\x6b\x1b\x14\x84\x3b\x38\x18\x55\x13\xa7\x18\xd9\xee\x74\x8d\x2f\xa8\xe0\xe5\x57\x99\x8c\x99\x1a\x64\x53\xc1\x06\xb9\xd0\x22\x94\x4b\xf4\x0b\x6c\xea\x80\xa7\x88\x63\x7d\x4d\x82\x93\x44\x0c\x30\x95\xa5\xb7\x57\x9e\x88\x63\x51\xce\x32\x5f\xad\x60\x1f\xaf\x90\x93\xbc\x2a\xbb\x48\x5c\x39\x5e\x12\xdd\xf5\x8b\x71\x66\x42\x14\xcf\xaf\xbc\x04\x2a\xf7\x70\x32\x0e\xfe\x39\xd6\xbd\x68\xb1\x65\x25\xac\xc7\xaa\xc3\x32\x85\x24\x5e\x7a\x5c\x33\x82\x69\x06\xf6\x03\xe8\x19\x9e\x98\x0f\x32\x19\x42\xcd\x96\x65\xa6\x53\x31\x2f\xb7\x06\xb9\xc4\xac\xbb\xf7\x50\x7d\xe0\x48\x6d\x47\x57\x5b\x5e\x55\xfe\x1b\x3d\xbe\x25\x41\x5e\xe2\x76\xdd\xda\x2b\x30\x6e\x06\xcb\x81\xcc\x2d\x56\x95\x80\xb8\x02\x0f\x08\x94\x40\x10\xca\x8f\x3c\x19\x9e\x4c\x41\x7d\x6f\xe2\x46\x96\xf4\x50\xaa\x5e\xea\xa6\x0c\xac\xd4\x57\x96\x0e\x44\xb3\x21\xd2\xb8\x11\x31\x2d\x71\xc5\x68\x04\x22\x5a\x82\xa2\xb9\x55\x68\x97\x31\x20\x62\x0d\x33\x8b\x1f\xe5\x68\xfc\x13\x2f\x44\xfe\x96\xe7\x97\x8d\x88\x7d\x31\x06\x8e\x4b\xcd\x77\xc0\x83\x44\x98\x5c\x9f\x58\x0a\x63\x4c\x93\x0a\x4c\x1c\x02\x02\x49\x35\x20\x6c\xd7\x17\x03\xae\x49\x2a\xb0\xa1\x73\xa9\x89\x6b\x36\x11\xde\x43\x42\x13\x9e\xca\xe9\x2c\xe1\x94\xc7\x18\x5b\xcd\x94\xc8\x13\xb8\x2f\x64\x92\xb0\x21\x97\xc9\x3a\xf3\x40\x7b\x49\x5a\x47\xc2\xcf\x55\xdc\x2c\xe7\x55\xd5\x2b\x63\x4f\xfc\x69\xc1\x0b\xd1\x1e\xfb\x13\x24\xac\x6e\xa1\x99\x10\xf2\x74\x67\x5b\x63\x9e\x0c\xb7\x32\xbd\xca\x22\x1d\x66\xf9\x40\xe4\x0e\xe9\x61\x69\xa9\x1b\xcd\x2a\xe1\x2b\x4b\xf0\x56\xa9\x6b\xa6\x74\x47\x90\x07\x49\x22\x93\x64\x51\x44\xc9\x58\x30\x91\xc6\x22\x8e\x10\x00\x50\x8c\xb9\x68\xe4\x82\x65\x97\x6d\xa3\x34\xa9\xee\xf7\xd7\xaf\xb5\x93\x01\x50\x2d\xfb\xb8\x0e\xc2\x4c\x33\x36\xc9\x72\xc1\x62\x5e\x70\x20\x4b\x7d\x61\xdc\xae\xdb\x58\xe3\x87\x99\x79\x60\x15\x2a\xc2\x1b\x4f\xc0\x9c\x8e\xe1\x95\x23\x64\xba\xa5\x62\xfa\x36\xd3\x4d\xa6\x29\x6f\xeb\xcb\xed\x4c\x0e\x2e\x9b\x59\x7a\x98\xc6\xc7\x67\x78\x11\x23\x96\x79\xcb\x03\x65\x4d\x25\x92\xa1\x51\x2d\x25\xc3\x36\xac\xd9\xb7\xe1\x63\xac\xf9\xfb\x6c\x21\x62\xc2\xc1\x25\x1b\x6d\x97\xcb\xde\x02\xb0\x30\x70\x7a\x5c\xc6\xaf\xfa\xd5\x0b\x2b\x39\xfd\x4e\x9d\xe3\x51\x05\xa9\x82\xee\xda\x76\xb4\x60\x73\xac\xd9\x28\x5b\x01\x30\x2e\x82\x85\x09\x26\x14\x38\x03\x6a\x29\x46\xd0\x9b\x11\x80\x40\xe8\x04\x48\xd8\x84\x17\x99\xa9\x38\xe6\x78\xf2\xc0\x92\x2d\x53\x59\x60\xf8\x7c\xcc\x16\x14\xdd\xfe\xfb\x2d\x51\x60\x7d\xd3\x87\x9d\x0f\x2e\xe7\x3c\x8f\xd1\x23\xa9\x90\x7d\x99\xc8\x62\x81\x37\xa5\x3e\xd2\x9a\x48\x18\xf2\x91\x2c\x4c\xab\x09\x4f\xf9\x48\x13\x17\xbb\x46\x50\xb2\x7a\x99\x83\x78\x99\x95\x0b\xee\x57\xa5\xa3\x5e\x46\xb7\xf6\x47\xaa\x1d\x04\x9f\x88\x3c\x8f\xd8\x80\xbc\xbd\xa0\x0b\xe0\xa2\x40\xf3\xb9\x6f\x3e\x11\x66\x97\xcf\xc8\xa0\x1f\x31\x91\xe7\xa8\xdd\x42\x41\xbf\xcc\xad\x6c\x74\x1f\xed\x45\x1b\x55\xbe\x64\xa3\xfb\xe8\x51\xb4\xe1\xb3\x4f\x1b\xdd\x9d\x87\xd1\x86\xe1\x52\x36\xba\x3b\x4f\xa3\x8d\x3a\x96\x73\xa3\xbb\xf7\xfd\xcd\x45\xf4\x68\xf7\x0f\xad\xc1\x1f\x5a\x83\x3f\xb4\x06\x7f\x68\x0d\xfe\x9b\x69\x0d\xa6\x5c\x29\xf3\xac\x22\x12\x3d\x50\x03\xf4\xb9\x22\x79\x1c\xb4\x08\x1a\x3d\x26\x99\x2a\xd8\x44\xa6\x72\xc2\x13\xcc\xa3\x9c\x0d\xbd\x87\x49\xbd\xc6\x87\x57\x22\x77\x41\x65\xf0\x50\xa8\x66\x15\x14\xcb\x66\xc5\x54\x73\x39\x6a\x4b\xaa\xaa\x5c\x5f\x91\x6e\xdf\x71\xa5\xce\x70\x6c\x64\x8e\x70\xdd\xd5\x8a\x91\x85\x29\x06\x39\xf2\x3f\x59\x26\x0e\xc5\x56\x6f\xec\x91\x1b\x76\xcb\xb7\x70\x78\x55\xee\x22\xb0\x79\xd5\x43\xa9\xad\x0e\x0e\xdc\x7e\xb6\xdb\x7a\xd9\xec\x66\x7d\xdd\x6b\xea\xdf\xbc\x85\xb7\xcc\xfe\x0b\xd8\xb3\xf4\x32\x42\x3b\x92\x4c\x47\xee\x1e\x1e\xf4\xe1\x02\x8e\x70\xab\xeb\xee\x57\x0b\x70\xa3\xfb\xe8\xe1\x6d\x17\xa9\xbe\x2e\xf7\xee\x72\x5d\x7a\xf1\xaf\x74\xf5\x46\xa3\x24\xeb\xf3\xe4\x8f\xab\xf4\x8f\xab\xf4\x8f\xab\xf4\x8f\xab\xf4\xbf\xcc\xbb\xf9\x37\xd7\x50\x57\xee\x46\xa3\x96\x5b\x7a\xcf\x39\xcb\xbd\xbb\xc1\x14\x68\x45\xbf\x4d\x0b\x6e\x54\xcc\x75\x2d\xac\x6e\xf0\x7d\x28\xc4\xb2\xe0\xef\xa5\x43\x3c\x3c\xf4\x47\x27\xae\x44\xaa\x6f\xd7\xf6\xa1\xfe\x71\x38\xd1\xdc\x43\x4e\xf7\xfe\xe1\x61\x22\x55\x21\x52\x91\xbf\xcc\x66\x69\x11\x8a\x84\x58\x33\x02\xb7\xe2\xc0\x11\x81\x4a\xda\xa6\xad\x02\xcf\x97\x96\xf5\x12\x5e\xa2\x65\xaf\x1f\xec\x29\x9a\x51\x02\xbe\x03\x1e\x63\x4c\x79\xb2\x8d\xd7\x9c\xa2\xff\xde\x7d\x81\x01\xb2\x0d\xd4\xb2\x90\x15\x1f\x8a\xad\x3e\x7c\x6e\xb4\xda\x58\x8e\x6a\xf4\x93\x59\xfe\x41\xa6\xc5\x53\xb3\xb7\x78\xdf\xb5\xbd\x6f\x81\x71\xa2\x05\xce\xe0\xf6\xef\x8f\x33\x5b\xef\x2c\xa3\x30\x2b\xbc\xb3\xfd\x65\xc3\x82\xf6\x30\xcf\x26\x4d\x7b\xa3\x7b\x40\xa4\x72\xdd\x39\xf3\x47\xd8\x38\x0c\x35\xa3\xec\xa1\x1e\x33\x13\xcc\x03\x58\x91\xbb\xef\xc4\xef\xc6\xc1\xd5\x77\x17\x8b\xfe\x6c\xf4\xa1\xd4\xa7\xee\xc3\x98\x36\xa0\x02\xeb\x31\xb0\x46\x74\xf6\xd7\x35\xfb\xe6\x1a\xdd\xbf\xef\x20\xb4\xe1\x57\x92\xd1\x03\x3c\xa6\x61\xb5\xbc\xd9\x70\x98\xe4\xb9\x20\x99\x06\xe5\x0d\xbe\x59\x6a\xa4\xc1\x5d\x78\x23\x55\x71\x0b\xe6\xba\x8a\x6e\x5a\xa0\x7e\x39\x9a\x4c\x93\x5b\xda\x52\x4d\xd3\x10\x9d\x7d\xe8\x89\xe9\x8a\x3d\xc7\x19\x00\xf1\x44\x99\xd4\x73\x97\xef\xf2\xec\x7a\x01\x67\x1f\x4c\x68\x0d\x91\xe7\x59\xde\x88\x58\x63\x90\x64\x4a\x34\x9c\xfa\x51\xff\x9c\xf2\x19\x7e\xcb\x85\x9a\x4d\x44\xe3\xc2\x67\xac\xa7\xb9\x98\x8a\x34\x7e\x43\xc7\xde\x51\x08\x20\x31\x11\x1b\xa6\x56\x57\x7c\xca\xe3\x64\x81\x7c\x00\x29\xcb\x07\x7c\x30\x16\x68\x1b\x55\xa8\x17\xc7\xf4\x16\xfa\xd6\xef\xcf\xd2\x38\x01\xe5\x9f\xcc\x59\x36\x27\xc5\x38\x40\x35\xc4\x86\xc9\xc9\x34\x11\x8e\x99\xd3\x7c\x97\x6e\x30\x69\x87\xce\x77\x86\x36\x95\xc6\x5a\x49\x2d\x5c\x22\x65\x95\xa9\xd9\x19\x19\x45\xf3\x19\xcd\x85\xb3\x31\x1f\x5c\x6a\x3e\x69\xc2\x2f\x05\x53\x33\xd0\x5a\xf2\x82\x65\xb3\x9c\xc1\xda\xb2\x31\xd7\xd3\x01\x0d\x20\x2f\x0a\x3d\xef\x98\xf5\xc5\x30\x03\x06\x75\x51\xd2\xfa\x67\xa9\x50\x6d\xc6\x8e\x0f\xff\xa2\xaf\x42\xcd\x5e\x1c\x9d\xb6\x6d\x6f\x90\xde\x23\x4b\x93\x85\x35\x2e\x14\x36\xd9\x48\x2a\x44\xac\x48\xb3\x9e\xd9\x28\x76\xe0\xfa\xb2\xfc\x12\x57\x28\x4b\x62\x91\xb3\x2b\x91\x2b\xc3\x46\x69\xe6\xbc\xfd\x99\x42\x36\xe2\x0c\xf6\x86\xf8\x31\xab\xa5\xaf\xec\x74\x8b\x8c\x6f\x6d\xe0\xfc\x46\x99\x66\x95\x81\xbf\x84\x75\x9a\x81\x40\x9b\x8b\x89\x66\x08\x61\x7c\x7a\x89\xcc\xc6\xdc\x33\x6b\xfc\x11\x6f\x22\x48\x4e\x56\xfa\x76\x0e\xff\xb9\x68\xd9\xfd\xc8\x52\x7f\x0b\x2a\x01\x07\x4b\x9a\xbb\xf6\x61\x41\x7b\x96\xaa\xb1\x1c\x16\x4d\x0b\xac\xbe\x9e\x3e\x1f\xc3\x34\x5a\x52\x7a\x11\xaa\xff\x83\xbb\xd8\x08\x88\x11\xc9\xeb\x78\x10\xf0\x8e\xb7\xf6\x64\x3d\xf3\x1a\xe9\x1a\x1d\x0c\x1a\x88\x69\x2e\xdd\xb6\xf9\xf5\xf5\xab\x89\x3c\xd2\xec\x9c\xef\x8c\xa0\x98\x66\xe8\x97\x3b\x1e\x44\xac\x3f\x2b\x34\xd7\x9d\x7b\x5b\xab\xf8\x44\x58\xd8\x68\xa4\x25\x43\xc9\x8f\xd9\x5c\x5c\xe9\xe3\x0c\xa7\x73\xc0\x95\x50\x66\xb8\x4c\x89\xa2\xd0\xa2\x80\x69\xa8\x05\x07\xa9\x29\x9b\x80\xc8\x9e\xed\x6d\xf3\xba\x95\x49\x69\x13\x0c\xa8\x62\x16\xb2\x0c\x7d\xe0\x5c\xd1\x36\x27\x4d\x28\x37\x44\xb2\xe9\x98\xc7\x28\x98\x12\x53\x9e\xf3\x42\x24\x0b\x4d\x48\x4c\x37\x7f\xfd\xeb\x5f\x83\xa9\xff\xf5\xaf\x7f\x6d\x93\x3d\x5a\x2a\xbb\x0d\xc6\x87\xa3\x6c\xad\x35\xab\x4b\x8e\x93\x54\x6d\x98\xf0\x51\x9b\x7d\x50\x28\x27\xc1\x69\xd7\xdd\x35\xd3\x96\xb1\x56\xa4\x24\x7b\x59\xb3\x21\x98\xc7\x60\x62\xc8\x65\x80\xa8\x07\x32\x6b\x1a\x33\x8a\x0b\x83\xcc\xb2\x8a\x8d\x32\xc6\xe7\x7c\x61\x4d\x9a\xd0\xf5\x5b\x74\xea\x83\x27\x1b\xc0\x4c\xea\x3e\x5b\x73\xad\x99\x4f\xab\xa6\x61\xf9\x8b\x3e\x6a\xf7\xca\x96\xe1\x93\x10\xa6\x39\xf2\x99\x4c\x0b\xc6\x0b\x36\x1f\xcb\xc1\x98\x49\xbd\x0c\xd9\x54\x99\xf0\x40\x06\xba\xfc\x66\x4b\x2f\xc5\x50\x06\x93\x44\x18\xc7\x59\x21\xba\xac\x83\x24\xf2\x8a\x27\x32\x36\xe9\xc1\x30\x44\x6c\x23\xce\xd2\x46\x01\xe0\x10\x96\x26\x32\x62\x32\x2d\xe4\x95\xde\x4b\x8d\x79\x1b\xb4\x63\xe3\xf9\xc4\x0b\x4c\xab\xd8\x30\xd1\xf1\x13\xe7\xf2\x63\x50\xd5\x7e\xad\x6b\x42\xbe\xe4\xd8\xa2\xbc\x50\x2f\xd8\xce\x63\xd6\xd5\xff\xf7\x80\xed\x74\x76\x1f\xda\xd5\xd6\x63\xf9\xfa\x15\x87\x84\x01\x7d\xd0\x34\x18\x14\xeb\xe9\x72\x9f\x4a\x11\xc6\xdd\xbf\xcf\x9a\xfe\x48\xe1\xfc\x7b\x03\x07\x80\x4b\x20\x7a\x15\x11\x72\x6d\x2d\x37\x29\xb3\x97\x03\xae\x40\x8a\x97\x69\xa1\xda\x06\xbb\xca\xcd\xde\xf2\x62\xdc\x1e\x26\x59\x96\x37\xab\xe5\xf6\xca\x3b\x60\x89\x4c\x2f\x45\xcc\x34\xa3\xaf\x37\x76\x46\x67\x41\x15\xce\xe4\xaa\x19\x59\xd4\xa7\xe9\x3d\xcd\x86\x8c\x53\x26\x54\xef\xc6\x22\xf2\xe3\x43\xd3\xc7\x9a\x6e\x0c\x81\xf7\x3a\x39\x32\x01\x5e\x89\x91\x4c\x41\xd7\x33\xe4\xaa\x80\x94\x64\x9c\x98\x02\xcc\xda\x8b\xd4\xbc\x65\xa6\xd7\x37\x9c\x7e\x2a\xe6\x1e\x6b\xd6\x74\xa6\x2b\x13\x93\xc9\x3a\xf6\xd3\x54\x4e\xc1\x7b\x38\x9d\x25\x49\xf8\xd1\xc8\x42\xae\xee\x90\x34\x21\xa5\xda\x60\x91\x76\xee\x09\xee\x2b\x4a\x59\xd5\x22\xbd\xa9\x08\xc7\x79\x34\x80\xba\x58\xd3\x1a\xf3\xb2\x92\x26\x92\x45\xc6\x0a\x91\x24\xc6\x0a\x8a\xac\x50\xc3\x3a\xff\x6c\x37\xf4\xe2\x37\xc0\xc6\x88\x5d\x91\x89\x7e\x32\x11\xb1\x04\xea\x08\x26\xf9\x2c\x65\x9c\x25\x1c\x96\x50\x0e\x2e\xdb\x8c\xfd\x04\xb4\x9c\x2c\xde\x19\xe6\xe8\xe6\x05\x1b\xca\x5c\x15\x91\xd9\x32\x1a\x55\xba\x60\x7c\x40\xf4\x5e\x73\x0b\x18\xdd\x89\xce\x6b\x60\x3a\x9f\xa5\x9a\x13\xdf\x80\x0e\x36\x4c\xf0\x27\xa6\x73\xd7\x1c\x01\x4f\x54\x66\xac\xf4\xb6\x0d\x31\x42\x7a\x56\xd0\x29\x20\x3a\x90\x05\x8b\xad\x6a\x91\x0e\xac\x07\x09\x02\x98\x8f\x05\x26\xa7\x9b\x0b\xab\xa2\x05\xd5\x28\xf9\x14\xc0\xa4\xdc\x32\x2a\xbe\x30\x94\x0d\x02\x53\x1b\x9a\xf5\x9a\x73\x09\x77\x18\xf7\x16\xd2\x31\x99\xa0\xa9\xb2\x43\xd0\xbc\xd5\xfb\x8a\xc3\x8c\xd9\x60\x5c\xf2\xa5\xe5\x06\x3a\xb2\x4f\xc1\x7e\xdb\x1a\x9a\xbb\x3e\xd5\x9c\xe1\x2c\xf1\xf1\x64\xdd\x9a\xb9\x25\x59\xb9\x7d\x43\x31\xb4\xf5\x8d\xbd\x41\xab\x97\xf9\x62\xaa\x0f\xbe\x62\x97\x32\x85\xa3\x98\x25\x31\xdc\x3c\x83\x7c\xa6\x8a\x45\x9b\xb1\x1f\xa5\x3e\xba\x68\x81\x88\x98\x16\xe3\x88\x80\x50\xe4\xd0\xba\xcb\x51\x0e\x1e\x30\x8a\x35\xfa\x32\xe5\xf9\xa2\xc1\x54\xa6\x97\x19\xbc\x16\xcd\x6d\x48\xac\x68\x3a\x94\xa3\x59\x8e\x3e\x85\xd0\x1e\xec\x14\xc5\x58\x43\x40\x9a\x88\x3a\xd1\x59\x2a\x35\x23\x0a\xe6\x71\x85\x89\xcd\x1b\x7a\x03\x41\x4b\xee\x66\xe7\xb2\xed\xe1\xca\xb9\x34\xf4\x61\xc9\xd7\xaf\x04\xc3\xbf\xc5\x30\xc2\x48\xcf\x1d\xfc\x3c\x72\xc2\x5c\x1e\xee\x7f\x9c\x73\x99\xd2\xd6\xcb\x94\xc1\xa9\x6f\xb6\x94\x75\x65\xd2\x35\x5f\x41\x1d\x20\x02\xd6\xfd\x05\x1e\x92\x66\x9c\x4d\xf8\xa2\x2f\xf4\xf6\xbf\xd5\xa8\x6c\x43\xeb\x95\xd9\xcf\xd2\x71\x87\x5a\x15\x27\x26\x4a\xf5\x58\xa5\x29\x76\xe6\xe6\xbb\x9f\x0b\xdf\x14\x07\x79\x66\x02\xc9\xb0\x15\x0a\x8a\x81\xfe\x03\x0a\x3e\x52\xcf\xdb\x8d\x56\xbb\x24\x53\x5a\x07\x03\x6f\x70\x62\x1e\x02\xac\x0e\xc5\x6b\x27\xaa\xfb\x66\x3e\x55\x9d\xea\xcc\x01\x0a\xad\x34\xbf\x82\x69\xae\x37\xec\x58\xcf\xc6\xc0\xaa\x53\xe9\xd4\xed\x48\xd9\x67\x24\xa8\x5f\x62\xf3\xc9\x1f\x88\x2e\x36\x31\xe2\x83\x45\xf9\xf8\xfb\x24\xcc\xdb\xc2\xc0\x9b\x27\x8c\xd8\x07\x52\x58\x96\x54\xdd\xd0\x4a\x9c\xce\xf2\xe7\x74\xac\x87\x47\x2d\x28\xe7\xff\x51\xaa\x6f\x83\xd9\x50\x83\xe0\xac\x5b\xab\xdc\x99\xac\xae\xf2\xf7\x72\x68\xfa\x6d\x7c\x95\xfe\x6b\x5c\x91\xee\xd5\x8c\xe9\xbf\xa7\x63\x11\x79\x0b\x55\x77\xd3\x21\x93\xaf\xb9\x72\x28\x53\xd3\xe2\xa3\xde\xbb\xba\x46\xf6\x7b\x7d\xb3\x5f\xe3\x98\x34\xe8\x37\xad\xef\x11\x18\x62\x78\x8a\xea\x08\x35\xd6\xbc\xa5\x16\x65\xf1\x26\x92\x29\x9a\xb6\x18\xc9\x31\xc8\x33\xb6\xd7\x8d\x6a\x07\x37\x43\x21\x47\x44\x3b\x1e\xb2\xcd\xc1\x8e\x8f\x65\xa1\x77\x1a\x6c\x2c\x4a\x4e\x64\xc2\x73\xf0\x29\xcc\xe6\xce\x73\x17\xae\xa0\x66\xab\x02\x7a\x91\xcd\x88\x59\x02\x0b\x22\xd5\x02\xa9\x7b\x92\xe5\xa2\x5d\xb7\x38\x7a\xd6\xab\xac\xc6\xce\x57\x5e\x11\xf1\xaa\xd9\x7a\x23\x0a\xa9\x4b\x39\x7d\xa9\xdb\xbf\xd4\xb2\xa8\x23\xa1\xd0\xd4\x13\x8b\x6a\x48\x15\x7a\x1d\xf4\x6a\xb3\xb1\x7a\xc4\x5f\x78\xb7\xb4\x22\xac\x0b\xae\x6f\x3f\x4a\xd5\x56\xbe\xd7\xeb\x51\xed\xf2\x35\x07\x31\xc4\xd8\x75\x55\x8f\xee\xad\x82\x8b\x3a\xf5\x06\xd3\x68\x84\x31\xa2\xac\xb4\x00\x41\x96\x7b\xc8\x3e\xe1\x47\xa7\x2e\xad\xeb\xe7\xa8\x30\xcb\x7c\x10\xc7\x50\x97\x9c\x02\x2a\xa6\x7d\xf4\xe5\x2d\xc1\x74\xd8\xfb\x01\xf5\x54\x86\x95\x7e\xc0\x93\x39\x5f\xa8\x07\x5a\x2c\x70\x98\x1c\xcb\x5c\x0c\x8a\x64\x01\xd9\x23\xb3\x21\x21\x74\x1d\xd2\x90\xda\xab\x8a\x37\x81\x69\x61\xf5\xd8\x89\xcd\x06\xce\x07\x5d\xb4\x4b\x01\xa5\x95\xe6\x48\x27\x6b\x26\xcf\xe3\xf8\x2c\x7b\x9d\x67\x69\x51\x59\x81\x0a\xf6\x92\x46\xa8\x8a\xbf\x98\xcf\xd7\x20\xa1\x1f\x9a\x8d\x98\x53\x11\xb1\x20\x6a\x3b\x3d\xcc\x86\xe1\xe8\xa0\x36\x86\x88\xf8\xbb\x0d\xf9\xa0\xbd\x14\xc7\xf7\xca\x03\x05\xa6\x08\x06\x70\x94\x82\x9a\xa3\x49\x1e\xd0\xc6\xa4\x63\xb1\xda\x7b\x28\x9f\x66\xa3\x05\x87\xa6\x55\xc0\x8b\x9a\x8c\xc7\xe5\x13\x08\x39\x53\x61\xb6\xf7\xef\xe3\x0f\xef\x6d\x1f\x07\xbf\x72\x40\x83\xb4\x44\xf7\xef\xb3\xca\xd1\xd6\x1f\xe9\x42\x1f\x89\xc2\x3e\x1e\x71\x32\x34\x08\xa2\x21\xd0\x49\x73\x61\x1b\x35\xa7\x71\xb9\xed\xcb\x1d\x3a\x6f\x94\x0e\x07\xca\x2f\x6e\x98\x83\x6f\x84\xe7\x56\xfd\xaa\x69\x9e\x8c\x9e\xad\xa5\x72\xa3\xdc\x6d\x31\x3e\xd4\x92\xae\x48\x63\xe4\xed\x1b\x2d\xd2\xf6\xf2\x32\x6a\xfa\x5b\x86\xc8\x5d\x8e\x4c\x0f\x46\xe4\x33\x21\x4b\x36\xb3\x3a\x2c\xb8\xa7\xcc\x98\x0e\x4f\x5e\x37\x5a\xcb\xa3\xdf\x57\xa0\x6e\xb8\x3c\x86\x2f\xd7\x5b\x5a\x47\x23\xdd\xbe\x04\xf5\xe9\x2a\x0a\xf7\x25\x84\x5c\x83\x73\x06\xd5\xee\xa1\xe2\xeb\x96\x55\x24\xe2\x00\x33\x0b\x04\xa4\x9a\x23\xb7\x64\x19\xd8\x1d\xfb\x28\x25\x0f\xb5\xb1\xff\x6e\xeb\xee\xd5\xe1\xd9\x8a\x55\x2e\xe7\x1c\xd2\xf2\xbf\x1e\xfb\x2b\x5e\xf0\xa6\x19\xb7\x2f\xbb\xdc\x32\xd0\x72\xf7\x6e\x9d\x8d\x2a\xe9\xfe\x7d\x1a\x8f\x9f\x2e\xcc\x3b\xaa\x6a\x91\x0e\x1c\x65\xf3\x30\x0e\x34\x3f\x21\xb9\xa1\x72\xb8\x08\x3a\x55\x9a\xb6\xbd\xcd\x66\xd3\x58\xd3\x55\x4f\x33\x2d\xd3\x61\xd6\xf6\xe8\x26\x0d\x63\xd3\x60\x4e\xa8\x1c\x65\xdd\x00\x25\x1c\x95\xf3\x27\x8a\x0d\x89\xb1\x32\xa7\x92\xc6\x09\xc3\x09\x2a\xc0\xf9\x30\xb3\x58\x0f\x91\xd1\x57\xbf\xa0\x51\xc7\x8a\x6d\xca\x58\x37\x71\xd3\x56\x63\x9a\xbf\x63\xcb\x69\xb6\xbd\x7c\x90\xf0\x03\xfe\x84\xd6\x78\xaa\xe7\x72\xac\xd5\x53\x59\xf7\x35\x78\x80\x7d\x29\x5f\x65\x05\x6c\xef\x2d\x6e\x1a\x21\x4b\xb3\x74\x0b\x41\x6f\xd3\x8e\x01\xf4\x46\x39\x17\x81\x1e\xf3\x0d\x30\x0f\x72\xc8\x64\xd1\x50\x6c\xca\xc9\xb3\x54\xb3\xaf\x6c\x0e\xda\xbf\x09\xcf\x2f\x23\x2d\xdc\x0c\x78\x0a\x0f\x38\x32\x99\xfa\x1c\xe7\xf6\x36\x3b\x48\x54\x16\x51\x90\x0f\xa8\x79\xd2\x0c\x55\xbc\x9a\xcd\x35\x4d\xb5\x70\x1d\x43\x43\xdd\x04\x02\x6a\xfa\x8b\x02\x2c\x98\xc6\x64\x69\xec\x8f\x3c\xcf\x66\x69\x4c\x76\xa4\x39\x18\x32\xc7\xf3\x49\xaf\x83\x2c\xf3\x6c\x30\x66\x5c\x11\x43\x3e\x4d\xda\xcc\xf5\x0f\xd6\x08\x24\x9e\x45\x2e\x47\x23\x91\x8b\x18\x9d\xfe\xac\x64\x4d\xb6\x41\x63\x5b\x02\xb1\x48\x4b\xab\x22\x46\x6e\x28\xe1\xf9\x48\x1c\x83\x2e\xa8\x85\x7d\x15\x63\x0e\xbe\x71\x81\x62\x6f\xce\x95\x96\x07\x9d\x16\x31\x9b\x8d\xc6\xa0\x3d\x87\x25\xd2\xd3\x8b\x98\xca\x48\x87\x94\x82\x77\xa3\x06\x52\xd1\x1f\x62\x7e\x44\xe1\xc6\xdb\x76\x78\x57\x43\x4a\x7c\xee\xeb\x9e\x77\xcb\x80\xc1\xa0\x7a\x02\x1c\x13\x4d\x87\xf4\x19\xfd\x19\xca\x27\xe5\x5a\x68\x5e\x00\xec\xa8\xe1\x0d\xa5\x7a\xc7\x41\x9f\xdf\xab\x08\xe6\x2b\xe4\x69\xab\x08\xef\x59\xf2\x49\xac\xab\x11\x5b\x55\x28\xb7\xd6\x0a\x33\x4a\xf8\x0a\x3e\x4f\xd8\x33\x24\xef\xb7\xd6\x6a\xd5\x8b\xc1\xcb\x55\x5c\x7a\x20\xcb\xda\x85\x52\xce\x7e\xb8\x5e\x76\x39\x5e\x81\xb5\x2b\xe7\x12\x0d\x20\x60\x40\x7a\xce\x9e\xbe\xfd\x01\x9c\x32\xde\x1e\xfc\xf5\xe3\x8f\x3f\xbd\x85\x5c\xf2\x4f\x3b\x1d\x48\xe7\x18\xa4\x4c\x9f\x15\xe2\x58\xcc\x03\x3b\x56\x33\x75\x6b\x93\xb2\xe7\x3d\x03\xc4\x10\x93\x94\xd9\x4f\x75\x37\xc0\x9f\x04\x12\x85\x54\x5c\x17\x40\x19\x84\x2a\xd8\x34\x9b\xa3\xb6\x74\x17\x90\x3e\x37\x2a\xd1\x41\x2e\xb8\xd2\x73\xd4\xc3\x16\xd7\x03\xa1\x14\x9a\xe9\x20\x68\x11\xb5\xad\x32\x5d\x30\x3e\xc9\x66\x69\xa1\xb0\xff\xad\xad\x7d\x1a\xc8\xd7\x1e\x4b\xd9\xf3\xe7\xcf\x4d\xe2\x7c\xef\xcb\x6e\xe5\xcb\xc3\xca\x97\xa7\x55\x38\x8f\xe9\xd3\xe6\x66\x89\xfc\xa5\x86\xfa\x01\xf9\xf1\x52\x72\xb3\x58\x28\x39\x4a\xd1\x60\x05\x3e\xa7\x89\x4c\xd1\x2a\xae\x32\x36\x4d\x04\xd7\x3b\xc3\x2f\x35\x5d\xcb\x05\x18\x18\x28\xf0\x13\xdc\x8b\xc7\x3c\x1d\x61\x98\x20\x58\x2a\x0c\xdc\x7e\x16\x2f\xbc\xb3\x3d\xce\xe6\x6f\x67\x83\xf1\x59\xf6\x1e\x0c\xc3\xe6\xe2\xf1\xf6\x09\x92\x64\xd6\x9e\x4c\xc7\x01\x04\x81\x8d\xcc\x66\xf6\xac\xde\x1a\x54\x63\x67\xdf\x82\x87\x84\xee\x9e\xfa\x0a\x5e\x7a\xd7\x87\x94\x65\xa9\xbd\xea\x35\xf1\x62\x85\x9c\x88\xd2\x2d\xbb\x84\x15\x69\xb9\x87\x60\xbc\xeb\x7a\x2c\x78\xdc\xd6\xf7\x81\x61\x01\x00\xbd\x82\x9a\x8e\x37\xb8\x41\xbd\xe8\xd1\xd0\xd8\x5e\x14\x44\xd4\x0e\xb3\x1c\xef\x8c\x62\x8c\x01\xe4\x6c\x30\xcb\x73\x8d\x72\xe3\xf9\x84\xa8\x70\x70\x64\xda\x0e\xdf\xeb\x48\x5e\xab\x96\x0e\xf6\x56\x9c\xa0\x7d\x7f\x63\x6a\x27\x9d\x52\x96\x53\x3c\xc0\x70\x11\x8a\x54\xdf\x0b\xa1\x92\x24\x90\x0a\x6a\x48\xb6\xaf\x52\xf0\x37\xd6\x43\xdd\x70\xd1\x10\x8b\x17\xd9\x0c\xee\x59\xca\xd2\x2b\x98\x90\xe0\x52\x0f\xba\x6d\xf4\xc1\x01\xc3\x9e\x5e\x1f\x0e\x76\xb2\x8f\xc6\x27\xa1\x2f\x92\x6c\x5e\x4b\x6e\x49\x77\xec\xe8\x6c\xea\xf9\xc9\x35\xe1\x32\xd3\x12\x0c\x2c\x8e\xa6\x22\xf6\xad\x9a\x34\x62\x3b\x1d\x9b\x05\xea\x0e\x8a\xa5\xf4\x24\x97\x60\xb9\xb0\x3a\xa5\xd4\x48\x0f\xb4\x6c\xcb\x4c\x67\x5e\x88\xb1\x46\x98\x38\xd3\xf8\x42\x0c\x2d\x1a\x2a\xe1\x66\x65\xbc\xc2\x04\xf4\x67\x05\x9b\x1b\x93\x65\xa2\x4b\x17\xb8\x6d\x9c\xf5\x67\xe9\x60\xac\xc9\x1b\xf0\x31\x64\x86\x42\x7c\x26\x6c\xc3\x28\x1c\x84\xed\xac\x48\x95\xfb\x5d\x33\x1a\x60\xab\x46\x13\x21\x4e\xac\x74\x8a\x83\xed\x77\x17\xb9\x11\xd7\x7b\xab\xef\x6c\xc4\x27\x83\x50\xde\xce\x74\x03\xf6\xb7\x11\x05\x68\x13\x05\xad\xf7\x4b\xe7\x7b\x25\xb5\x11\xa9\x1d\x2d\xe9\xf8\xad\x63\x54\xe9\xbb\x8f\xc3\xc6\x24\x05\xb2\x92\xc6\x95\x25\x14\x30\xdc\xd0\x2b\x13\x07\x8e\x3e\x3a\xb0\xc3\x69\x36\x67\x83\x44\x70\xb3\x13\x43\x99\x4a\x05\x7e\x27\xb3\xe9\xd2\x35\x0e\x4e\x5d\xfd\x44\xeb\x66\xb6\x74\x06\xc0\xf6\xa2\x2f\x0b\x1f\x14\x33\x9e\xd8\xa8\x2a\x78\x92\x5c\x1f\x96\x24\x1b\xc9\x01\xfa\xda\xe1\x4d\x82\xcd\x1e\xc0\x71\x7b\x80\x44\x0c\x9c\x7e\x32\x3c\x8a\xc0\x09\x83\x96\x59\xe1\x3d\x84\x09\x62\x52\x36\x10\x79\xc1\x4d\xd0\xbf\x5a\xa4\xc5\x58\x14\x72\x60\x9c\x8d\x80\x4d\x8e\x2c\x5f\x5c\x0d\x1f\x53\x11\xc2\x37\xbe\x46\x0b\xf0\x15\x00\x52\x97\x08\x70\x87\xd2\xe4\x60\x9c\x67\x69\x36\x53\x2c\x9b\x9a\xf1\xa3\x3b\x8f\xae\x8f\x77\x9a\xe7\x09\x06\xe7\x99\x1c\xb1\x80\x46\x98\xa3\x81\xce\x56\x60\xbf\x05\xd2\x87\xe7\x47\x5f\x91\x26\xd1\x81\xb1\xe1\xe7\xc8\x44\x3f\x48\xb3\xe2\x01\x55\x46\x23\x30\xb9\x81\x66\x11\x75\x25\xa6\xe0\xad\xd6\xc5\xef\x3b\x6d\xf6\x5a\x8e\x66\xb9\x00\x1d\xe6\x5c\xaf\x50\x69\x44\x32\x1d\x29\xcb\x56\xa3\x0e\x65\xae\xc9\x82\x71\x98\x80\xf1\x3a\x87\x11\x52\xe6\xbb\x9e\x77\xdb\xfa\xf6\x81\xb5\xcf\x85\x9a\x25\x60\xf9\x45\xf8\x00\xd5\xd1\x13\x58\x55\x2f\x17\x3a\x6d\xa3\xf3\x6a\x42\x28\x48\x81\x69\xd9\xbd\xa5\x06\x72\xec\xfd\xdd\x66\xec\x6f\x7a\x27\x65\xc1\x24\x79\x67\xc6\x42\x4c\x93\x05\x9b\x8d\x92\x05\x48\x47\xb9\x2c\x04\x3b\x78\x77\xa4\x10\xe8\x9c\x2f\x90\x8a\xa1\x93\x45\xa1\x87\x67\xb2\x04\x4d\x84\x71\x7c\x29\xcc\x22\x59\x1a\x03\x69\x81\x8c\xaa\xb8\x2f\x80\xe6\xc9\x09\x26\xa9\x48\x16\x11\xf8\xd9\x3a\x3f\x41\x33\x94\x80\x29\xd2\xe3\xde\xc6\x7b\x84\x8f\xd2\x4c\x15\x72\x60\x9c\xf0\x34\x67\x94\xea\xd9\x93\x44\xf6\xd1\xfa\x69\x68\xa4\x86\x26\x59\x4e\x77\x50\x53\x0a\x2b\xb9\xd9\x6a\xce\x95\x01\x4f\x1e\x9a\xc6\x5a\x4e\xa0\x9a\x0b\x76\xa9\xa9\xc0\x7c\x2c\xe0\x8e\xcb\x72\x74\x46\xd5\x32\xac\xe2\x43\xf0\x33\xd0\xe4\x08\x01\xf9\x34\xb9\x18\xf8\x5b\xbd\xd7\x66\x07\x03\x72\x42\x9d\xce\xe8\x38\x6b\xe9\x40\xa8\x42\xc4\xc6\x43\x89\x94\xe5\x9e\x06\x44\xd3\x22\x1c\x5a\xdb\xa7\x56\x70\xd6\x6b\xee\x19\x23\x23\x42\xb1\x09\x9c\x9a\xe0\x84\x65\x3a\x32\xee\x86\x31\x50\x42\xab\x80\xf3\x6f\x85\x7d\x77\xe7\x02\x90\xdc\x11\x75\x6c\x15\x92\x4d\xc3\x1c\x25\x74\x9f\x25\x42\x29\xc7\x39\x05\xf7\x08\x8d\x8e\x27\x2a\xc3\x0d\x00\x09\x7d\xe9\x5d\x50\xe6\x47\xb7\x58\x5a\x2f\x53\xda\xfb\xc8\x4c\xca\x31\x35\x34\x11\x82\xe0\xc6\x06\xfa\x86\x09\xe6\x53\xb1\xb3\x72\xe4\x76\x6c\x9c\x4c\xcb\x37\x03\x4c\x00\x28\x4a\x43\xb1\x34\x43\x7f\x44\xbc\x30\x2c\x57\x40\xd7\x3b\x42\xa2\x75\xa7\x96\x80\x35\xb3\x34\x15\x5a\x56\xa1\x47\x13\x4b\x3a\x5c\x37\x6d\x6a\x5a\x99\x9d\xa7\x10\xf4\x6e\x60\xf0\x7b\xcd\x71\x9c\xa5\x49\x39\x85\x23\x7d\x0d\xef\xef\x18\x77\xa3\x61\xd5\x74\xa1\xfe\xd1\x2d\xa6\x53\xf9\x05\x9f\xc9\xeb\x64\x2c\x8c\xef\xa8\x54\x1e\x52\xfc\x53\xe4\x99\x43\xcb\x07\x1a\xa5\x1e\x54\xf0\xb6\xbd\xf2\xaa\xbc\x85\x71\x05\x77\x42\x7d\xe0\x29\x32\x01\x71\x0b\xd9\xd0\x92\x79\xb9\x59\x87\x3d\x35\x93\xf3\x96\x18\x05\x04\xf2\x05\x9d\x41\x3c\x22\xdc\x33\x1e\x31\x4d\x16\x34\xc1\x4f\xb4\x6a\x9f\xec\x9d\x60\xb3\xe2\x90\xaf\x5a\xec\x9f\xcd\x5c\x6c\x89\x2b\x9e\xcc\x34\xb9\x1f\x67\x73\x36\xd1\xd7\x2a\x5e\x62\x82\x5c\x0f\x51\x64\xcf\xac\xfe\xa8\xed\x99\x7c\x42\x24\xa9\x61\x73\x34\x9b\x1b\x98\x90\xdc\x83\x0e\xc5\xbe\x27\xb3\x74\x40\xac\xd0\xd3\xce\xb3\x09\xb8\x24\x3a\x0e\xc9\xc8\x4f\xd6\xd1\x87\xda\xe5\xf4\x50\x65\xd5\xb4\xb5\x74\x9f\x52\xe3\xac\x18\x1a\x2e\x83\x23\xde\x43\xc9\xc6\xa6\xc3\xad\x43\x87\x2f\xde\xbe\x38\x2d\xa0\xb1\x9f\x57\xb9\xe7\xb9\xbe\xfd\x53\x50\x98\x69\x4a\x6e\x37\x43\x31\x95\xc1\x8b\xbc\x80\x98\x71\xf6\x80\x8d\x44\x51\x67\x8b\x77\xf7\x76\x9d\x70\xb5\x62\xd6\xe1\x40\x8b\x5c\x9a\x7d\x07\xdb\xbe\xd5\x80\x1e\x9e\xbc\xa6\xa1\xea\x8b\x04\x2c\x43\x14\xa0\x0b\x6a\x10\x93\xf2\x87\x36\x0c\x84\x17\x90\xa8\xef\xc0\x2d\xfb\x6b\x99\xd3\x9b\xe4\xb8\x65\xd6\x47\xd0\xea\xea\x73\x78\xfb\xd7\xb7\xb8\x16\x25\x23\xea\x52\x03\x65\xc9\x7a\x50\xca\x81\x54\x63\x1a\xf2\x33\xa6\xd5\xdb\x82\x28\x8d\x0b\x63\xbe\x31\xb5\x64\x5e\x2c\x1b\x4d\xea\x74\xf6\x7e\xf9\xaf\xb0\x1e\xdc\x90\x34\xec\x53\xe8\xd0\xe9\x13\xf6\xcc\xbb\xf7\x35\xb3\x10\xc4\xdd\xc8\x02\xf3\x1f\x4c\xe5\xe0\x52\xc4\x24\x38\xd4\x5b\x0b\x6e\x3c\xad\x1c\xc0\xb5\x64\x12\xa3\x97\xf9\x9c\x43\x32\x41\x20\x53\x93\x2c\x16\x51\x29\xe2\x46\x5f\xbb\x24\x27\x02\xbd\xc1\x50\x77\x42\x38\xa0\x92\x3d\xd0\x51\x0c\x2e\x41\x78\x1f\x6a\x61\x9c\x94\xe2\xc0\xe0\xc9\x82\x4d\xa0\x27\x1f\x0a\x33\x49\x74\x58\x2e\x06\x33\x08\xd2\x61\x73\x9e\xa7\x70\xaf\x19\x96\xb0\x81\x6e\x27\x2a\x63\x7d\xee\x2b\x96\xeb\x26\x7a\x77\x3b\x7a\xed\xe1\xb2\xd4\xd9\x3f\x8c\xa1\xc8\x5e\xba\xe2\x6a\x85\x53\x52\x2c\x05\xf4\xbf\x2a\xf9\x3b\xfa\xe5\x90\x18\xad\x5e\x41\x7a\x21\xbf\x87\x8f\x36\xbe\xa6\x2a\xad\x7e\x0c\x4d\x43\xbe\xe9\xa7\xb6\x9a\xaf\x02\x09\x30\x02\xaf\xeb\xc0\xe6\x16\x16\xe9\xe9\x95\x31\xcb\x48\x08\xc4\xb6\x58\xab\x84\xe6\x7f\xa7\xe0\xee\xcb\xfb\x5a\x46\x13\xc8\xe5\x54\x54\x0c\xd1\x3a\xdd\x62\xbe\x19\xa3\x45\x81\x5d\x6a\x36\xa1\x5c\x72\xa0\x80\x63\xc8\x3f\x6b\x61\x04\xfd\x71\x8d\xd5\x81\xe2\xe9\xf1\xf9\x71\xc2\x50\xab\x1f\xd2\x80\x23\x5d\x8c\x12\x21\x64\xe4\x0f\x79\x11\x26\x87\x00\x41\x63\x9c\x4c\xb5\x14\x38\xca\x85\x82\xec\x0d\x2e\x38\xc8\x32\x63\x98\x01\x0f\x78\xb7\x2c\x77\xdc\x98\xb1\xc9\x58\x53\xc5\x78\x3e\x89\xd6\x4d\xf6\xb7\x51\xc6\xf8\x58\x5f\xf8\x50\x2d\x5f\x18\xa2\xed\x6c\x51\x41\x58\x48\xdb\xcf\x5b\xbe\xdc\xd0\xe7\x6c\x06\xc1\xd5\xad\x6b\xd6\x3a\x87\x90\x43\xae\x43\xc0\x00\xe1\x82\x9e\x2c\xc6\x85\xd7\xfd\xcd\xfa\x92\x91\x7d\xac\x1b\x9a\x7b\x4b\xa9\xac\x28\x9d\x8f\x65\x22\xca\xe3\xf6\x6c\x86\x9e\x8a\xb6\x6c\x28\xba\xdd\x22\x54\x3a\xaa\xa1\xd7\x32\xac\x7a\xa7\xb1\xd4\x82\x8c\x0b\x9a\x50\x72\xc6\x40\x55\x4a\x94\x1f\xd2\x56\x40\x38\x80\xbe\xdd\x79\xba\x00\xec\x8c\x20\x6e\x88\xa9\x29\x46\x70\x98\x47\xa1\xe1\xf1\x30\x3c\xb4\xf5\x2b\xe1\xae\x82\x5a\xaf\x69\x3a\x65\x7d\x55\xe4\x7c\x50\xd8\x70\x44\x92\x63\xdd\xa3\x66\x40\xc3\xa7\x62\x20\x87\x72\x50\x8e\x19\x05\x81\x59\x20\x3e\x03\xc5\x06\xe7\xc1\x08\x86\xdd\x22\x13\x25\x6a\x0a\xe1\x71\x2b\x80\x85\x03\x6c\x63\x42\x8c\x9c\x5d\xc9\x1c\xd4\x44\x4d\x67\x9e\x8d\xc0\x54\x8b\x17\x64\xcb\x29\x6b\x36\xb0\xe5\x06\x48\xcb\xd9\x44\xcc\xc9\x00\xc9\xf3\xbe\x2c\x72\x9e\x2f\xf0\xa8\x4c\x45\x3e\xe6\x53\xa4\xf0\x90\xde\x47\x4b\xfc\x32\x1d\x0d\x67\x49\xad\x2e\xf7\xe3\x32\x65\xae\xc7\x75\xd4\xf8\xa4\x98\xe8\x2d\x0a\xc6\xb5\x0b\x23\xe2\x86\x79\x96\xa0\xce\xe9\x50\x4e\x83\x87\x41\x9b\xb1\x50\x45\xc4\xf4\xe7\x93\x69\xa1\xbc\xdb\x26\x1f\x90\x62\xf8\x4e\xca\x62\xef\x11\x12\xdc\x72\x17\x76\x13\x3c\x46\xd2\xe9\x06\x4c\x86\x89\xd8\xd1\xa3\xd8\x0f\xf0\xca\x35\xd9\xa9\x6f\x72\xee\xfd\x19\x01\x80\x8b\x1a\x08\xa5\xe7\x46\xbc\x36\xc8\xf9\xe8\x76\xad\x4a\x3b\x87\xb9\x5e\xf4\x90\x79\x35\x9a\xce\x1e\xac\x24\xbc\x83\xd6\xfb\x2e\x66\xd9\xb4\x50\xbd\xef\x3e\xdb\xfb\xd2\xb5\xf3\x16\xd7\xbe\xfb\x16\x67\x87\xa9\xde\xf2\xe6\x3d\x53\xa6\x25\x59\xf3\x5b\x13\x04\x60\x3e\x29\x7f\x2a\xc4\xc5\x2b\xe4\x47\x29\x13\x46\x5b\x15\x71\x36\x2b\x96\x15\x89\x3c\xb7\x7d\x89\x34\x7e\xad\x4f\x27\xf6\xf9\x02\x53\x80\xb2\x2e\x9b\xa5\xba\xbf\xfd\x32\x2f\x6a\x5d\xb5\xc2\x1b\x5b\x03\x31\x2e\x1f\xf9\x20\x48\xd7\x4a\x65\xeb\xb0\x34\xaa\x68\x67\x69\xb3\x81\xc0\x21\x97\x2b\xfe\xc4\x5b\xd6\xf1\xc6\xf8\xd5\x86\xd2\x45\x34\x9c\xa3\x74\x98\x95\x68\x9c\xa9\xdb\xf0\x68\x58\x90\x11\x57\xe5\x83\xd0\x6d\xce\x81\xd2\xeb\xe3\xfe\x6a\x8f\xb9\xfa\x00\x7f\xc5\x7e\x7a\x5a\xe7\xac\xb4\xa4\xaa\x77\xab\x00\x52\x26\x82\xa7\xb3\x69\xb3\xfc\x4c\x89\x7d\xd5\xae\x2e\xd9\xaa\x37\x1d\xbd\x6a\x2d\x83\x9d\xaa\x70\xcc\xfb\x8d\x17\x19\x85\xa1\xb4\x7a\x6b\x21\xb2\x05\xb5\x8f\xb9\x88\x67\x03\x81\x2e\x16\x5e\x44\x0b\x20\xa1\x31\x76\x90\x30\xa4\xb2\x59\x3e\x10\x96\x5d\x25\x85\x22\x5e\xc7\x22\x11\x23\x0e\x2e\x0e\xc5\x98\x71\x86\x9b\xd9\x32\xca\x3d\x0a\x74\x4f\x91\x27\x6a\x21\xd3\xca\xe3\xd8\xc4\xbc\x42\x88\x1f\x9a\x72\xa6\x82\x17\x22\x4e\x16\x56\x2d\x5a\x64\x19\x53\x60\xb3\xa2\x57\x16\xd3\x98\x62\x6e\x00\xb7\x53\x18\x6f\x53\x6f\xd8\xbe\x8f\x2d\x50\x09\x90\x05\x7e\xb9\x73\x02\x4b\x2d\xe2\x0f\x53\x9f\x91\x75\x56\x75\xb3\x11\xe1\x0a\xd3\x67\xb3\xc6\xfa\x66\xc0\x2f\x64\xf9\xa1\x29\x2a\xa6\xe7\x8d\xae\x29\xfa\x28\x4b\xc5\xfa\x79\x76\x29\x52\xb7\x33\x18\xcd\x68\x43\xe6\x6d\x7a\x85\x2c\x85\x5f\xfe\x26\x96\xab\xa2\xed\x03\xea\xe2\xcf\x55\x95\xab\xf3\x5f\x5a\xd5\x5c\x04\x59\x0a\xbf\x56\x55\xad\x3f\x83\x0c\xce\x6f\x05\x6c\x90\x78\x79\x75\xad\x5b\x81\x91\x88\x9c\xa5\x70\x0b\x9b\xe7\xa2\xbc\xad\x0c\x05\x7e\x4f\xcb\x8c\xa1\x10\x26\xaa\x4b\xdf\xce\x61\x64\x17\x59\x07\xa4\x32\x6d\x2d\x5f\x80\xb1\x61\x56\x73\x48\x18\x8f\xd2\x9e\x04\x75\x06\x06\x1b\xaa\x82\xe7\x85\x69\x6d\x58\x31\x3e\xe2\x32\x6d\x9b\xaf\xa7\xc6\x67\x89\xb2\x43\x94\x82\xcc\x9c\xa2\x04\x2c\x8d\xa8\x4d\x2b\xb4\x24\xdb\x0e\x55\x18\x18\x1d\x7d\x99\x66\x73\xa3\xcb\x55\xc0\xf5\x1b\x4d\x39\xf8\x28\x78\x53\xcd\x52\x51\x56\xed\x79\x87\xfc\xfe\x7d\xd6\xbc\x07\xfb\x5c\x4a\x71\xfb\xf5\x2b\xab\xf9\x0c\x62\x20\xb4\x6c\xb5\x0c\x5e\x85\x54\xe6\x68\xe8\x44\x1a\xd0\xd5\x29\x2f\xed\x32\x32\xb1\x28\x15\x68\xb8\x7a\x8c\x90\x51\x0d\xb5\x30\x90\xf3\x39\x49\x40\xfb\x32\x9b\x92\x82\x3b\xa5\x1d\xa7\xe5\x74\xf2\xc5\x9c\xf2\x5d\x18\xc5\x12\x39\xa3\x04\x34\x0c\xce\x62\x10\xab\x0a\x7d\x81\x6a\x10\x1a\x83\x3c\x97\xa5\x82\xd1\x69\x31\x18\x41\x96\x73\xfb\xec\x02\x26\x83\x26\x93\x47\xef\x39\x3b\x4a\x8b\x3c\xd3\x64\x93\x71\x36\x9a\xf1\x1c\xd4\x45\x9e\x3b\x8c\x1b\x83\xcd\x2e\x40\xc3\x8b\x0f\xfc\xa0\x41\x4b\x7e\xf0\xfa\xab\x62\x79\x40\xf8\xf5\x37\xdf\x2f\xdf\x23\xff\xd0\xce\xdc\x65\xab\xbb\xb2\x0a\x48\xe2\x90\x6a\x7c\x7e\x35\xae\x40\x7d\xb8\xd1\x74\x55\x2d\x57\xd4\xc0\x75\xf7\x5c\x69\xef\x67\x74\xcd\xc5\x33\xcd\xfa\xb2\x4f\x5e\x47\xad\x4f\x64\xf4\x62\xd3\x4c\x29\x89\x59\xd1\x09\x44\x91\xa1\x06\xb0\x98\x0d\x2e\x21\xe3\x1b\x64\x87\xe3\x29\x2a\xb2\xa7\xe8\x88\x86\x2c\xa3\x24\xab\x1d\x00\x75\x10\xc8\xb4\x41\x86\x24\x98\x44\xdb\x95\xf6\x9e\x33\x8c\xce\x30\xb6\x24\x18\xd8\x27\xe0\xbd\xc1\x9e\xc6\x35\xd9\x36\xe1\x51\x32\x05\x79\xa0\xed\x71\x01\x15\x3e\x14\x56\x68\xc7\xc9\x59\xc4\x48\xf6\x70\x6d\x9d\x29\xc1\x6b\xf1\x1c\xeb\x9b\xd7\x64\x2b\x1c\x27\xfa\xd4\x6f\xed\x00\x8f\x76\xcf\x92\x38\x9f\xa7\xa0\x7d\xc7\x3d\x42\x3b\x61\x2e\xd4\x34\x83\x5c\x80\x26\x37\x8f\xc6\xa9\x92\x4f\x9a\xc3\x4b\xcf\x39\x7a\x65\x3d\x74\xa4\xa2\x05\xa8\x45\x2c\x9f\x8f\xb1\x71\x33\xf9\xa0\x0d\xc3\x30\xfc\xcc\x8d\x47\x23\x88\x34\xc3\xfa\x8c\xb9\x62\x3c\xc5\x7c\x38\x44\xd0\x40\x2c\xa4\x5d\x00\x05\xb0\x34\x89\x47\xac\x4d\x08\x89\xa0\x9a\x4d\xa7\x39\xda\x93\x34\xfd\xcb\x91\xec\x82\x81\x53\x66\x39\x1d\x62\x09\xa7\xd6\xe7\x9e\x40\xd0\x71\xfa\x4f\xc7\x41\x95\xc3\x2d\x88\x9b\xfc\xf6\x8b\x53\x23\x4a\x29\x63\x1a\x49\x44\xd4\xa0\x65\x14\xe9\xc8\xaa\xd5\x45\x7b\x98\xc5\x7a\x6b\x95\x98\x77\xca\x1b\x14\xa6\x0b\x5a\x67\x95\x0c\x3d\xc1\x38\xfc\x81\x53\x12\xfc\xac\x18\x33\xe0\x43\x80\x2d\x23\x67\x0b\xb2\x1d\x1b\x5b\x38\x2e\x0c\xf2\x70\x40\x46\x35\x9d\x2d\x2d\x33\xc0\xf0\x98\xa8\x6f\xe0\x66\xfc\x75\xbf\x71\x1c\x9d\x96\x0d\xea\x78\x25\xaf\x53\x04\x53\x65\x8e\xa9\xa7\x55\x3b\x59\xcf\x85\xad\x18\x4a\xdd\xe8\xfd\xd1\x98\xa6\xe1\x58\x42\xa9\x43\x1f\x13\xaa\x67\x45\x46\xb3\xf1\x90\xd6\xc1\x9e\x13\x74\x0e\x29\x1a\x8a\xf5\x85\xc6\x72\xa4\xae\x90\x51\xc6\xc3\x21\x62\xcd\x90\x15\x26\x07\x12\xcd\x9a\xa0\x6f\x62\x92\xcd\xd1\xf7\x5b\x9f\x3a\x7d\x80\x30\x18\x5d\x57\x10\xb1\xb1\x99\xb6\x43\x0d\x99\xd1\xd0\x86\xb3\x00\xd6\x96\x32\x7f\x05\x2c\xdb\xff\xcf\xde\xbb\x77\xb7\x6d\x63\x8b\xa3\x7f\x5b\x9f\x02\xf1\xfc\x26\x92\x12\x3d\x6c\xe7\xd1\x56\xae\x9b\xa6\x89\x73\xe2\x7b\xda\x24\x37\x8f\xd3\x9e\xeb\x7a\x52\x4a\x82\x2c\xc6\x14\xa9\x92\x94\x6d\xb5\xf6\x77\xbf\x0b\xfb\x01\x6c\x80\xa4\xec\x4c\x3b\x67\xce\xfa\xad\xce\x9a\xd5\x58\x20\xde\xd8\xd8\xd8\xef\x6d\x4a\x04\x41\x40\x6a\x0c\xe4\xc3\x3d\x3d\x46\x48\xb9\x4b\x7b\xe2\xaa\xff\xaf\x27\xa8\xae\x60\xab\xfd\x70\x6a\xd4\xb1\x65\x9b\x2b\x58\xaf\x8e\x16\xea\x56\x2a\xb3\x9d\x6a\x2d\xe5\x64\x0d\x8e\xc2\x8b\x5e\xe4\x93\x9e\xc2\x77\xbc\x1b\x6a\x47\x5c\x78\x10\x89\x34\x51\x4c\x4c\xec\x0b\xa1\xca\x26\x6b\x6c\x84\x96\x8a\xac\xe5\xb3\xbc\x3a\x05\x27\x7b\xa0\x7e\x57\x8e\x29\xa5\x14\x22\xea\xba\x62\x66\x97\x66\x25\xa3\xe4\x28\x5d\x83\x04\x8c\xb0\x35\x46\x06\x9b\x93\x04\xcf\x6d\x55\xf0\x42\xee\x74\x7d\xeb\x67\xec\x1f\x68\x5d\x43\x7e\xc9\xd7\x56\x61\xa4\xeb\x49\xb6\x58\x18\x76\x2c\xc2\x07\xbc\xb1\xe7\x5d\xa1\x8e\x5c\x46\x85\x21\x10\x80\xf2\x23\xfc\x14\xb3\x5a\xc4\x46\xdb\xf5\x49\x62\xb8\x5d\x52\xe0\x21\x06\xa9\xce\x99\xee\x06\x6e\x39\x34\xf1\x1a\x38\xf6\xe3\x34\x2b\x21\xfe\x43\x39\x99\x4b\xe7\x99\x30\x96\x4c\x8d\x40\x88\x34\xb4\x55\x90\x11\x04\x1c\x4f\xdc\x7b\x40\x2c\x67\x86\x6e\x99\x42\xf4\xe1\xd9\xb5\xb1\xf0\x8d\xf1\x8c\xe1\xac\x71\x97\x45\x96\x31\x03\x63\xe2\x4c\x8a\x81\x75\xfd\x75\xd0\x46\xc6\x15\x60\xee\x48\x51\x59\x38\x80\x52\x01\x21\x04\xbd\x8d\xe1\x8f\x52\xa8\xeb\x56\x5d\xd9\x8b\x3f\xb6\x47\xf0\xad\x2e\x01\x69\xa2\x53\x2f\xf5\x28\x62\xcf\xe2\x38\x3e\xb9\xe5\x26\x5e\x37\xec\x22\xa9\x28\x66\x31\x69\x35\x3c\x48\x43\xfa\x7f\x0a\xc1\x2a\x9a\xa9\x3e\x16\x9a\x51\x4d\x22\x01\x43\x08\x94\xb2\xc6\x62\x99\xc4\x13\x8d\x0d\x7a\x6a\xb7\xbb\x5f\x27\x60\xec\x1f\x38\x3b\xf0\xa6\x0b\xe4\x6f\xbc\xf8\x75\xbc\x73\xe2\x44\x70\x37\xef\x50\x83\x8f\x43\xa1\x4b\xb5\x5a\x22\x0f\x48\xb1\xfd\x90\x06\x5c\x63\xc0\x95\xe2\xcc\x90\xea\x19\xa8\x3a\x0f\x53\x20\x76\xac\x2c\xce\xc6\x8e\x95\x21\x04\x3d\x2b\x81\x3a\x34\x99\xa5\xbe\xbf\xc8\xb9\x0b\x3a\xe9\xd2\xc1\x52\xf4\x0a\xd9\x4a\x06\x6a\xa7\x46\xd6\xde\x42\x9f\xa3\x3b\x3b\xa2\x76\x77\x05\xde\xc1\x0b\xcb\x30\x08\x8e\x3c\x64\x32\x60\x9a\xd9\x74\x80\xa0\x50\xb6\xe1\x18\x88\x97\xb1\xb7\x79\x93\x0f\xcd\x9d\x4a\x82\x2e\xf1\xcc\x3a\xcb\x22\x9e\x9f\xd3\x41\xd6\xbc\x9e\x0d\xcf\x42\x68\x55\xc1\x71\xa9\x9c\x3a\xa9\x12\xab\xa8\xce\x5d\x32\x0c\x66\x74\x83\x39\x4a\xb3\xca\xd7\xf3\x6b\xad\xb3\xb5\x71\xac\x90\x27\x51\x4e\xdf\x62\x85\x57\x54\x60\xe3\xaf\x10\x7b\x12\xfa\xec\x86\x46\x0c\xaa\xd1\xae\xb9\x22\x90\x0d\x52\xfc\xd6\x00\x61\x34\x15\x61\x45\x55\x2d\x94\x4a\x92\x28\x9c\xbb\xc8\x17\x25\x8c\xcc\x60\x83\xcc\x7a\x4b\xb4\x06\x70\xca\x39\x48\x2a\x65\x15\x73\xa8\x07\x23\x1e\x8c\x44\xac\x08\x36\x70\xe7\x72\xbd\x48\x23\x73\x11\x33\xb6\x1b\x3b\x8d\x26\x6b\x77\xed\x08\x6c\x9f\xbe\x39\x6a\x85\x9c\x7d\x81\xb2\x62\xf6\xc3\x20\x05\x0d\x70\x6a\x59\x32\x05\x9b\x88\x06\xef\x02\x10\x54\x55\xdd\xc8\x6e\x01\x9f\x37\x52\xa4\x01\x31\xda\x48\x6d\xd1\x26\xe0\x0d\x97\x8a\xda\x1a\xcc\x25\x22\x17\x40\xa3\x9b\x74\xc9\x5e\xa8\xae\x50\x9f\x1c\xc6\xf1\x6a\xd0\x29\x63\xc5\x5b\x28\x93\xa9\xe2\xed\x14\xdc\xb5\x9b\x75\xa3\x66\xf7\xba\xd5\x6a\x9e\xbf\x93\x5c\x55\x28\x63\x7c\x9c\x03\xbb\x08\x77\x3c\xbe\x55\x44\x83\x9f\x51\x38\xff\x70\x76\xf5\xd4\x31\x80\x7b\x0d\x84\xb1\x0c\x3f\x4a\x12\xbc\x12\x8c\xae\x51\xb9\xb6\x01\xf9\xda\x19\x22\x65\x6c\x50\xf1\xa6\xda\x01\x9b\x04\x82\x18\x19\xf6\xaa\xc9\x4b\x52\x22\x3c\xa1\xa0\x15\x1d\x6c\x86\x50\xb9\xa7\xb7\x37\xed\x61\x29\x52\x92\x5d\xd4\x9a\xe4\x90\xd1\x41\xe5\x70\xe4\x61\x74\x85\x41\xdb\xef\xd7\x84\x76\x2e\xf2\x68\xa9\xa2\xd4\xe0\x83\x7e\x51\xae\x1d\x3e\x21\x4f\x5e\xb4\x06\x47\x23\x4e\x54\x29\xb5\x44\xe4\x64\x74\x12\x58\x46\x79\x29\x9d\x0e\x24\x5a\x02\x3b\xd3\x59\x44\xed\x8e\x40\x98\x18\xa5\x68\x38\xbf\x4a\x67\x59\x5e\xae\x52\xb3\xf6\x85\x2e\x00\xc3\xcd\x21\x9c\x5d\xbd\x8f\x29\xcc\x55\x82\x4c\xb8\x8d\x1f\x41\x66\x7f\xe0\x48\xb0\x5b\xb2\x59\x4b\xeb\x36\x6b\x89\x52\xda\xb8\x2c\x65\xad\x47\x95\xd5\xa5\x33\x31\xb3\x32\x1c\xbe\x50\xeb\xd5\x07\x77\xa8\xf1\x77\xb9\xa5\x4d\xdf\x46\xab\xbe\x8f\x2e\x84\x92\x14\x0c\x53\x88\x8e\x8f\x35\x01\x96\xae\xbb\xe1\x12\x49\x96\x5d\x1b\x52\xa6\xb2\x50\x4f\x80\x5d\xb5\x55\xbc\x4d\xb4\x0a\x26\xc8\x48\x3a\x78\x16\x2f\xc1\xde\x03\xf6\x7f\xcd\x71\x87\x31\x0f\x30\xd9\x1c\x06\xa3\xf9\x51\x4f\x82\xe8\x31\x2e\xc2\x8a\x1f\x75\xcc\x1a\x59\xba\x98\x12\xb5\xbd\xdd\xc1\xc6\x57\x57\xea\x8e\xb7\xd5\x5e\xa2\x4a\x29\x9b\x6f\x38\x02\x18\x21\xd7\x22\x5c\x85\x05\x34\x9f\xb2\x42\xe2\xb6\x22\x84\xb5\x92\xa1\x65\x9e\x5d\xae\x6d\x1c\x62\x34\x02\x43\x73\x19\x56\x74\xc4\x8b\x65\x96\x97\xa0\xd4\x05\xed\x8c\x39\x2a\xd0\x2b\xc5\x09\x84\x4c\x34\x54\x05\xc6\xd7\x43\x59\xa3\xe0\xb8\xe2\xd4\x0b\x70\xed\x88\xdc\xe3\xf8\x24\x48\xb2\xe8\x82\x25\x60\x0b\xae\x21\x03\xd2\xf1\x52\x6d\x0f\x02\xaa\x70\xce\x92\x86\x6b\x94\x23\x79\x9f\x69\x34\x4a\xe5\x3b\x88\x96\xcb\x64\x6d\x9f\xd3\x28\x3f\x85\x8c\x40\x85\x0c\x22\x62\x29\xc1\x4e\x5c\x23\xd6\xc6\xfd\x24\xef\x2d\xb1\x77\xc8\xf1\x78\xfb\x83\x8f\x24\x38\x53\xc8\xb0\xfb\x36\xa1\x71\xea\x38\x54\x77\x9f\x64\xcd\xe3\xf4\xa4\xe7\x1e\x8a\xc1\x38\x4e\xa7\x44\xd3\x04\xb5\xba\x55\x1b\x00\xb0\x83\x5e\x57\x2c\x06\x5d\x8c\x86\x9e\x2a\xe2\x05\x38\x22\xa5\x4b\x3f\x30\xaf\x39\xb4\x3c\x59\xa3\x8b\x14\x47\xe2\xf6\xe2\x0e\x56\xcc\x8d\x2a\x17\xfd\xa3\xe7\x46\x8a\x80\x81\x10\x5c\x03\xd1\x1e\x1f\x60\x9f\x1d\xc7\xfe\x58\x69\x59\xdd\xeb\xf8\x19\x71\x08\x6b\x03\x42\xff\xdf\x91\xe8\xd7\xa7\x38\x36\x24\xfa\xd5\x97\xcb\xac\x40\x46\x5c\x95\x20\xfb\x39\x55\xcb\x55\x6e\x0a\x0b\x10\xf3\x8b\xe7\xf3\x23\xfb\x29\x08\x97\x05\xec\xe5\x4d\xb2\x9a\x9c\xa9\x6c\x36\x53\x29\x42\x13\xaa\xd7\x6d\xb0\xe7\x6c\x46\xc6\xfc\x68\x5e\xf7\xbd\xf5\x57\x01\x07\xc9\x6c\x31\x06\x9c\x80\x17\x01\xde\x6e\x3f\x50\x7a\xc1\xfe\x05\x49\x5c\x94\x83\x7f\x9b\x3f\x7f\xd5\x4d\x83\x41\x85\xdd\x20\x70\xba\xc0\xe1\x37\x79\x51\x78\x8e\xa6\x55\xbf\x90\xf0\x15\x61\x17\x11\xcf\xd0\x9e\x22\x5a\x89\xc7\x07\xd2\x22\xa7\xce\x8f\xd8\x67\x71\xc9\x1f\xca\x80\x72\x44\xf1\xda\xd2\x09\x47\xfc\x31\x7b\xda\xf4\x00\xd7\x8c\xfd\x29\x8b\xd3\x4e\xbb\x2d\x06\xf7\x3e\x8b\xc5\xee\xd6\xb6\xb7\x91\x02\xa4\x8b\x8b\x57\x63\x92\x99\xc9\xf9\xbc\xba\xe4\xf0\xb8\x5a\xa2\xa3\xbc\x53\x1b\xcf\x08\x9d\x86\x88\x94\xb4\xeb\xf3\x7d\x6d\xde\x44\x79\x19\x47\x89\x3d\xcb\x01\xfb\xae\xf8\x5b\x10\x6a\x35\xd0\x39\x03\x80\xfe\xf0\x12\xac\x4d\x0b\x32\x2a\x40\x5f\x58\x86\x00\xa4\x73\x21\xd8\x74\x19\x17\xb3\x35\x52\xc0\x10\x10\xc3\x79\x1f\xfe\xfb\x41\x59\xec\x82\xd9\xa7\x9e\x9a\x47\x05\x06\x3b\x29\xa4\xe0\x4c\xb8\x2d\x7d\x8d\x97\x30\x0c\xf8\x20\x40\xad\x48\xe2\x89\xe6\xcb\x0d\x09\x25\x0c\x72\xe1\x9b\x0c\x11\x82\x70\x04\x71\x2a\x41\x9f\xd0\x45\x67\xc7\xbd\x17\xfe\xf7\xa6\x06\x69\x28\x1d\x43\x8d\xcd\x4d\x13\xc6\x48\xe3\x48\xa9\x41\x82\x82\xa5\xce\x67\x7a\x52\xa2\x24\x3f\x9c\x25\x5f\xbe\x5a\xb8\x2b\x20\x5a\xf6\x32\x4a\x0b\x11\xca\xc2\x05\xdb\x10\x7d\xb9\x8d\x56\x4f\x20\x4f\xde\x8b\x3c\x5b\x60\x84\x3c\x2c\xe7\x33\xe9\xaa\x51\xf0\xdd\x7e\x09\x58\x44\x01\x9b\xcf\x30\x61\x5e\xc4\x56\x4d\x7a\xca\xc0\x47\x29\x14\xa3\x09\x10\x73\xd6\x47\x1a\xc2\xee\x5b\x34\x4d\xf0\x8b\x00\xb5\x4a\xcf\x8a\x7f\x1f\xa4\x6e\xde\x1a\x06\xd1\xa5\x04\x09\xe6\xc5\x26\x8a\xa4\xe0\x8e\xbc\x5e\x22\xea\x81\xf0\x04\x7d\x30\x72\xa9\x9a\xdb\x2f\xa1\x5e\xaa\x2f\x4b\x5f\x96\x9a\x7b\xed\x29\xa4\xc5\x58\x41\x14\x1a\xf3\x99\x71\xdf\x13\xf9\x63\xa4\x52\x47\xf1\x98\xda\xa0\x6c\xca\x65\x5c\x11\xf4\x8b\xca\x1d\x3e\xc4\xdf\xd5\x4b\x00\x53\x4e\xc7\xa2\x3f\xdf\x35\xaf\x71\x10\x47\x07\xdf\xbf\x3f\x11\x96\x1d\x86\x08\xa3\x85\xda\xcd\xb3\x8b\x27\x73\x7c\x51\x0e\x7f\x97\x11\xe4\xe4\x72\x7a\x9a\x9a\x48\x7d\x5e\x67\x6e\xbc\x25\x5f\x5e\xb7\xba\x74\xdc\x0d\xad\x48\x84\xc5\x35\x16\xd1\x9c\xcd\x0f\xe8\xd8\xf9\x2c\xca\xf8\x4a\xb7\x05\x7e\x41\x9e\x34\xc2\xfd\xff\x32\xa0\xaf\x82\x3b\x02\x33\x05\xe0\x8c\x92\x24\x9b\x7c\x48\x8b\x68\xc6\x18\xf0\xe6\x1b\x81\x47\x31\x30\xe3\x74\xd0\xff\x90\xc0\x6b\xe9\x45\xf1\xb9\xe9\x52\x8c\x57\xb3\x4d\x97\x62\xbc\x9a\xb9\x4b\x21\x7e\xd8\x4b\x61\xca\x78\x0e\x3d\x71\x1b\x55\x5f\xa5\x3d\x65\x40\x7f\xfc\xcf\xc0\xbe\x1b\xea\x7f\x1f\xec\x9b\xb9\xfd\xab\x60\xdf\xb9\xb4\x09\x87\xd4\xcf\x14\x10\x8a\xd8\x4c\xa0\x71\x03\xbf\x17\xb2\x33\x42\xd6\x11\xec\x01\x98\x3e\x47\xd6\x91\xdc\xf3\x23\x94\xc9\x11\x1b\xb4\x02\xb7\xe0\x34\x9b\xea\x81\x52\xef\xd0\x98\x08\x2d\x67\x31\xd9\xc7\xa0\x8e\x4a\xfe\x06\x93\xe8\xe4\xd9\x85\x74\x50\xd9\x96\x0b\xea\x6e\xb3\x1b\x1c\x24\x8f\x4d\xfb\x7a\xb1\x2c\xd7\xca\xe5\xee\xab\xc4\x62\xb2\x8e\x08\x52\x3a\xef\xfb\x94\xaa\x50\x26\x2f\x46\x7c\xf5\xde\x06\xf0\x6c\x76\x22\x94\xd5\x3b\x7e\x6d\xe6\x12\xd0\x08\x91\x6d\x76\x85\x77\x94\x21\x10\x92\xa8\x28\x15\x85\xc5\x1c\x34\xad\xa0\x3e\x2e\x68\x65\x5d\x2e\xc1\x8c\x0c\x22\x60\xc5\xb7\x55\x75\x9b\x1f\xb4\x96\xa5\x8f\xfe\x0a\x59\x87\x7d\x59\xf4\xd4\x25\x0e\xe9\x2b\xdb\x7b\xca\x5c\x8e\x4b\x27\xd0\x00\xdd\xbb\xa7\x79\x37\x8b\xba\xb4\xd2\xa0\x4b\xcb\x0d\xc5\x01\x25\xd3\xdf\x35\xf0\x7c\xdd\x15\x9a\x59\x1b\xd0\xef\x23\x39\xa7\xb4\xbb\x3d\x92\x20\x61\x3a\x4e\x10\x49\x6f\x5b\x09\xd3\xb6\x7a\xc2\x1f\x46\x56\xd4\xa4\x93\x59\x4d\x35\x28\xb6\x95\x2e\xe2\x74\x9a\x5d\xd4\x54\xa3\x0f\x23\xf5\xfb\x75\x37\xc8\xb4\x8d\xf2\xb0\xed\xd1\xa3\xdd\xde\xf6\xc6\x34\x8f\xdb\xa3\x47\x8f\x6b\xab\x50\x74\xfb\xed\xd1\xa3\x2f\x6a\xbf\xe3\xbf\xdb\xa3\x47\x5f\xf6\xb6\x79\x07\xb6\x47\x0f\x77\xea\xd2\x7a\xa3\xec\x69\x7b\xb4\xfb\xc8\x4f\xf1\xdd\xdb\xa6\x5c\xb4\xdb\xa3\xbd\x9d\xde\x76\x5d\x26\xdc\xed\xd1\x83\xaf\x7a\xdb\x22\x13\xea\xf6\xe8\xf1\xc3\xde\x76\x10\x44\x71\x7b\xf4\xe8\xab\xde\xb6\x19\x73\x7b\xf4\xd5\xf5\x49\xef\xd1\xc3\xdb\x24\x0e\xff\x2b\x39\xf8\x5f\xc9\xc1\xff\x4a\x0e\xfe\x57\x72\xf0\xff\x99\xe4\xe0\x10\x40\xa1\xcc\xa3\xb4\x98\x65\xf9\xc2\x59\xe4\x88\x18\x38\x43\x97\x75\x12\xbf\xa2\x93\xef\x3a\x5b\xa9\x69\x06\x26\x4c\x36\x26\x09\x27\x94\x65\x17\xfb\x77\xe6\x4b\xbc\xd0\x05\x9a\x1a\x12\x3d\x12\xa9\x6d\xd4\x92\x6c\xc3\x06\x06\x21\x1a\x22\x75\x9a\xeb\xa8\x54\x29\x8b\x44\xe2\xb2\xa7\x8a\x18\x3d\xc7\x22\x74\xbb\x45\xbe\x85\xc6\x34\xb3\xe1\x69\xa8\x71\x5c\x62\xe0\x37\x45\x91\xdf\x7a\x0e\x6d\x62\xaa\x4f\x92\xdf\x63\x82\x9a\xe9\x40\xa9\xce\x7b\x20\x35\x38\x95\x08\x44\x84\xc3\xf0\xd1\xfa\x32\x5a\x2c\x13\x40\x99\x62\x93\x7a\x80\x42\xb3\x55\x5e\xe8\x41\x97\xae\xc9\x8f\x40\xfe\x83\xae\x68\x55\x2e\x57\x40\xe0\x4d\xa2\x55\x41\x49\x5d\x13\x40\x96\xc4\xcd\xc4\xe9\x72\x55\xf6\x9c\xf1\x65\x84\x21\x95\x31\xe6\x52\x0c\x31\xe8\x16\x0b\x6d\xb0\x61\x10\x15\xcd\x4d\x81\x8d\x41\x5f\x64\x39\x4f\x12\x63\x1f\xa8\xdf\x92\x78\xcc\xe7\x44\xa1\x32\x0c\x93\xe5\xac\x17\x93\x28\x4e\xfb\xa5\xbe\x24\xe7\x90\xa2\xd3\xb5\xe1\x06\xd2\x16\xc7\x0b\x89\xcc\x86\x9f\x26\x20\x74\x06\x37\x02\x0e\x01\x86\x9b\x6c\x8e\x94\x31\xf9\x6c\x55\xae\x1c\xba\x78\x89\xa1\xa7\xe6\xd9\x05\x85\x65\xcb\xf2\x33\x0f\xa7\xbd\x0f\x41\x0d\x9c\x1c\x38\x7c\xa0\xe1\x44\x9d\xdd\x4d\x5e\x97\x8f\x15\x4e\x9a\xc2\xfd\x91\x2b\xba\x52\x3f\x1a\xc2\xda\x00\xa4\x54\x7a\xf6\x10\x5e\x0c\xd0\x15\xea\xa3\xf8\xd2\x9b\x8c\xbb\x88\x18\x91\x7a\x48\xc8\x8d\x9c\x53\xcc\xa0\x39\x03\x5a\xe1\xc1\x72\x22\x95\x64\xc0\xfe\x2e\x75\x0a\x5e\x99\xb8\x75\x08\xbc\xc4\x10\xaf\x96\x72\x1e\x60\x4d\x81\x36\x00\xfe\x34\x38\x90\x04\x64\xfd\xa3\x88\x0e\x30\x06\x09\x46\x79\x04\xbb\x76\xe0\x87\xe4\x28\xb4\x99\x47\x69\xcd\xc5\xed\xd9\x2c\xb1\xa5\x4e\xad\x1b\x3e\x64\xde\x9e\xa2\xcb\x10\x49\x85\x71\xaa\xa6\x1f\x3b\xa3\x98\xef\x27\x78\x20\xd9\x9e\x51\x3e\xf9\xeb\x4a\xaf\x60\x78\x0a\x4f\xc0\x09\x4d\xe9\x25\xb3\xf3\xc3\x6d\x56\x93\xb1\xd9\x35\xc8\xbf\x47\x7a\xb4\x82\x85\x05\xca\x30\x4d\x82\x43\x22\x48\xe3\x24\x3e\x66\xde\x08\x69\xe8\x4f\x48\xb2\xc2\x38\x75\x20\x4c\x37\x0c\xfb\x73\x31\xcf\x50\x3e\x69\xfa\xc1\x0a\xe6\xc6\x8d\x63\xde\x78\x86\xa7\xc9\x18\xcf\xda\xbc\x81\xfa\xd7\x95\x4e\xb9\x23\xb4\xb7\x3e\x85\x9c\x9f\x19\x1d\x8c\x1f\xd0\xd1\x6a\x9d\xa4\x8f\x63\x18\x5e\x27\x9e\x29\x11\x3e\x8d\xe1\xde\x06\x28\x8c\x26\x67\x7d\xb8\x50\x2b\x24\x14\x22\x8e\xb9\x37\xd5\xa5\x79\xcd\x53\x33\xe9\xb5\x1d\x1b\x94\x89\xf1\x54\x53\x86\x24\x83\x03\x51\x99\x68\x6e\x0d\x0a\x56\x08\xa7\x42\x42\xd1\x28\x2f\xd9\x27\x1d\xf7\xd6\xf0\x86\xa8\x50\x57\xd6\x39\x10\xf1\xc4\x32\x2a\xe7\x19\x84\xe5\x04\xa2\x6c\x96\x80\x9e\x63\xbd\xc4\xc8\x91\x16\xac\x26\x51\x4a\xcb\xb5\x01\xac\x69\x3f\x88\x3a\x33\xd0\x1b\x20\x22\x15\x2f\xa2\xd3\x38\x35\x68\xd4\x7b\x30\x34\x84\x66\x30\xac\xb0\x19\x03\xb0\xa0\x8a\x0b\x7b\x11\x97\xb9\x06\x57\x0b\xb0\x56\x31\x25\xa7\x3a\x47\x01\xd4\x4e\x7f\xef\xd1\x23\x87\xa5\x08\x26\x48\xdb\x05\x31\x5c\xd2\x35\x40\x21\xc8\xac\xb2\x19\x01\x80\x01\x72\x76\xa4\x9c\x6b\xf5\x90\xbe\xff\x3e\x9b\xf5\xf8\xff\xd7\x21\x94\x99\x6e\x76\xcf\xc6\x36\xdc\x2d\x3a\x94\xd8\xfe\x8e\x52\x0e\x64\x64\x48\x47\xb8\xe8\xd0\x1e\xa1\x3e\xc2\xe0\x13\xc5\x22\x4a\xe0\x6a\x3b\x69\x1a\xa1\x7c\xb3\x02\x74\xe0\x64\x4f\x70\x68\x00\x81\xf6\x45\x6d\x31\x9c\x0b\xf3\x5f\x77\x62\x66\x6e\x0b\x3d\x99\x47\x69\x5c\xe0\xdd\xcf\x75\x1b\xbc\xce\xd3\xcc\x00\x1c\x67\x40\x65\x70\x2e\xd6\x45\xa9\x17\x94\x7c\x76\x49\xf1\x81\xc1\x41\x8c\x0f\x7c\xa0\xd4\x53\xc6\xfd\x0f\x7f\xf8\x8e\x16\x36\xe1\xb7\xd1\xe6\xa2\x15\x5d\xe5\xab\x94\xe3\x42\x2e\xf4\x22\x73\x60\x6f\xbd\x51\x0d\xa3\x05\x46\x0f\x35\x0b\xc1\x9d\x04\xd5\x90\x7d\x74\x3c\x3c\x00\x88\x81\x9d\xe9\x09\x99\x4c\x05\x30\xe0\x55\x29\xd8\xff\xf8\x22\x8a\x4b\xd5\x59\xa5\x7d\xbb\x24\x3d\xf5\xb1\xad\x05\x1f\x7a\x65\x96\xb9\x3e\x8f\xbd\xd7\xd5\x3e\x76\x17\x3a\x77\x63\x0e\x5a\xad\xf6\x0a\xf2\x6f\x18\x3e\xa5\xbd\xdf\x6a\x21\xeb\x36\x20\xd6\x4d\x1d\xb8\xc7\x6d\xbf\x05\x11\xea\x6d\x16\xc6\xcd\xb9\x17\x87\xf7\xbe\xce\x35\x20\x69\xc3\x4a\x7d\x73\x6f\x08\x8d\x0d\xdf\x28\x9b\x4a\x06\xd6\x34\x33\x7f\x0e\x98\x6f\x95\x15\xb9\xcc\x54\x1a\xde\xfb\x7a\x18\xf4\xed\x37\xec\xbc\x77\x64\x0d\xa5\xc4\x96\xb6\x73\x10\x34\xd6\x56\x11\x81\x5e\x58\x4c\x56\x16\xd6\xd0\xcb\xee\x9f\xb5\xf4\x2a\x8b\x81\x2d\x0c\x7d\x10\x40\xce\x3a\x36\x8d\x0b\x34\x55\x9a\x8c\x9d\x48\x8a\x73\xd5\xf9\xea\xfa\xc6\xc0\x2c\x04\xa5\x51\x92\x18\x04\xcb\x28\xd1\x3e\x18\x40\x81\xb6\x85\xb5\x87\x1d\x92\x0c\xa7\x6c\xee\x50\x3b\x95\x30\x9e\x20\x20\x83\x3b\x6c\xcb\x87\xc8\xd8\x80\xaa\xfe\x75\x15\x25\x05\xa6\x23\x47\xfd\x5d\x56\xce\xd5\x2f\xa6\xda\x2f\x00\xa3\xbf\x58\xd9\xc8\x2f\xce\x80\x11\xe3\xa0\x58\x57\x7d\x88\xa0\xe3\x42\x30\xe4\x45\xb3\xed\x5c\x5e\x93\xfe\x98\x02\x74\x14\x95\x74\x17\x79\xe1\x22\x1b\xe5\x61\x7e\x6a\xda\x5f\x11\x7c\xb2\x52\xa5\x2a\xdc\x72\x90\xe0\xe5\xe1\xac\x4f\x1d\x6a\x2b\xfb\xb9\x43\xab\x7d\xc0\xca\x11\xf8\xa4\x8f\x41\x4d\x6e\x51\x1f\xc4\xd4\x01\x2d\xc2\x87\xd2\x51\xf0\xdb\x59\x00\x75\x31\xd4\xa5\xd9\x27\x51\x5b\x04\xc1\x94\xd0\xea\x7d\x20\xb0\x18\x61\x26\x37\x51\x64\x20\xa8\x52\xca\xd9\x2d\xf0\x83\x35\xc2\xb1\x1e\x87\x06\x5d\x8a\x68\xfe\x61\xb8\x51\x74\xcd\x67\xea\x4d\xa0\xa5\x41\x43\x36\x8d\xa6\xe8\x8e\x98\x8a\x93\x63\x1a\x73\xb0\x22\x11\x89\x98\x83\xe1\x83\xb1\x5a\x96\x6a\x61\xed\x86\xd1\xa3\x45\xd8\x64\x91\xf0\x25\x2d\x8b\x6a\x0a\x6a\x17\xdb\x18\x54\x3c\xab\x14\x53\x64\x6b\x1b\xab\x7b\x42\xd1\x00\x66\x49\x74\xda\xb4\x12\x3f\xc0\xe9\xad\x73\xbe\x3a\x82\xa5\x3e\x5b\xab\xf8\x5e\x6d\xd3\x9c\x02\x76\x96\x40\xc2\xc8\xda\x2e\xe9\x9b\x5f\x57\xda\x93\xfd\xc8\xaf\x93\x63\x9f\xe3\xa9\x26\xaf\x61\xab\x0d\xc0\x6e\x00\x20\x52\x4a\xf7\x9c\xeb\x05\xca\xe1\xec\x26\x65\x69\xa7\xbd\xcc\xb5\xf5\xaa\xb5\x7f\x07\xd9\x99\x6c\x79\x67\x83\x85\xae\x58\xa7\xb7\x92\x5a\xab\x42\x51\xa3\x23\xf3\x89\xca\x67\x00\xec\xd8\xb2\x54\x77\x3e\x92\x6f\x10\x7f\x25\x0d\x4d\xd5\x06\x00\x6a\x63\x65\xcc\x8c\xe8\x0c\x65\xcd\x7a\xdc\xcd\xfd\xdc\xd4\x9d\x75\x58\x62\xe0\x5d\x77\x89\x36\x09\x29\x11\xe6\xf1\xc7\x92\x88\xa8\x9a\x1f\x93\x7c\xb7\x6c\xb6\x26\x43\x46\x98\x8b\x2d\x25\x23\xaa\x28\x57\xb3\xd9\x1d\x60\x48\x38\x11\x45\xe9\x6b\x49\xd3\x4d\xc1\xd5\xda\x98\xaa\x8a\xcc\xb7\x91\x5c\x46\x5a\x9e\xe8\xab\x67\x86\xc7\xfc\x05\x0d\x8d\xf5\x05\xc4\x3d\xed\xfe\x02\x72\xca\xa8\x30\x3c\x75\x66\x88\x3b\x41\xd3\x20\x59\xd9\xc2\x48\x12\xbe\xe5\x78\x0c\xca\xa7\xff\xce\x56\x18\xe3\xde\x74\xdc\x36\x1d\xb7\x21\x3e\xb2\xb2\x19\x47\xcc\x43\xea\x0f\x4f\xa9\x63\x7f\x41\x0d\xae\x59\x79\x04\x99\x27\x52\xcd\xc2\xa0\xb8\xb0\x2c\xc8\x11\xa6\x6d\x35\xf3\xc3\x48\x8d\x5e\x6c\x03\x90\x01\x25\x89\x5a\xae\x28\xf3\xd6\xca\xa0\x4a\xba\x43\xf3\xcc\x70\x7e\x1c\x90\xdf\xf6\x85\xa2\x93\x73\xca\x5c\x65\x5e\xd2\x2e\xf5\xb6\xce\x56\xa6\x33\xfc\x88\xb1\xf5\x10\xb1\xd1\x1e\xd6\x01\x99\x87\x27\x1a\x41\x4d\xa6\xd2\x0d\x14\x70\xae\x83\x86\x30\x71\x08\x3a\xb5\x63\x23\x11\x73\xab\x71\x6f\x43\x78\x39\x42\x66\x32\xde\xaf\xa1\x79\xe0\x5f\xf9\xa1\x26\xf1\xac\xf5\x2e\x0a\x08\x39\xa9\xdb\xde\x44\xad\x10\xb2\x29\x82\x2b\x88\xa4\xc9\xe7\x51\x2b\xb7\xa0\x53\x38\x67\x14\x05\xfd\x8f\x4a\xc8\x77\xc0\x11\xff\xa3\xfc\x14\xe5\x7f\xc0\xb1\x82\xe4\xc3\x9d\xf6\x34\xd3\x4e\x0a\x75\x91\xe5\x67\x64\xd3\x80\x2a\xc8\xd3\x8c\xf4\xbb\x0b\x1d\xa5\x85\x4b\x22\xe0\xdd\x1f\x7a\x16\x6d\x40\x9f\x06\x08\x6b\x32\x05\xbe\xe1\x48\x5b\x76\x2b\xc5\x21\xb2\x73\x09\x58\x89\xbb\x13\xbf\x7b\x57\x35\x1d\x58\x95\x20\x77\x9a\xcf\x60\x60\x7f\xac\x5e\x05\x4c\xa0\xc4\x27\xb4\x6a\x8d\xbd\x16\x51\xee\x94\xb9\x94\x15\x40\x88\x52\x5d\x62\xb8\x35\xd9\x02\x82\xb0\x2c\x03\x99\xb1\xcd\x93\x05\x62\x17\x73\x89\x49\xba\x61\x38\x40\x08\x64\x8c\xfd\xb6\xcf\x85\xa3\x2c\x85\x44\x81\xc5\x86\xa8\xdf\x65\x1d\x6e\xbc\x86\x37\xe6\xcf\xb6\x8f\xea\x9e\x7c\x55\x2b\x8f\x08\x77\xe4\x79\xcd\x9a\x7e\xbc\x6e\xf7\x6c\xa8\xc6\x31\xfe\xdc\x77\x3e\x24\x7b\xc4\xf0\x60\xf4\x0d\xeb\x47\xe2\xf9\x36\xc1\x4b\xca\xb2\x3f\xff\x59\xe6\xf4\xb9\x9e\x45\x7f\x5d\x3c\x95\x3f\x9b\xc5\x91\xa9\x5b\x1d\x93\x63\x63\xdb\x50\x6e\x02\x2f\x20\x3a\xe2\x3e\x2f\x2c\x3a\x4a\x76\xcc\x85\x13\x34\x28\x37\x83\x5b\x06\x40\x01\xe8\x7d\xac\x29\xdb\x8a\x30\x29\x46\xab\x0d\x3f\x42\x17\x1b\xbb\x54\xf0\xf6\x33\x16\x67\x0a\x8c\x90\x92\x55\xd2\x45\xe1\x52\xb8\xa2\x47\x60\x30\x46\x40\x6e\xf8\xf7\xee\xb3\x86\xc2\x30\x4b\xb2\x83\xb6\xe7\x38\x2e\x77\x96\x48\xa6\xeb\x0d\x2a\xf6\xaa\xca\x5b\xaa\xb9\xaf\x4f\x7a\x8f\x1e\xdd\x46\x21\x2d\x08\x3f\xba\x7e\x3d\xb4\x18\xe8\x15\xba\x3c\x5a\x2c\xf4\x34\x8e\x4a\xfd\x97\xe6\xfa\x2f\xcd\xf5\x5f\x9a\xeb\xbf\x34\xd7\xff\x93\x9a\xeb\xa7\xa0\xe0\x01\x85\x2e\x48\x2c\xa2\x34\xf4\x86\x45\x56\xea\x88\x49\x70\x70\xb5\x01\x19\xc3\xc0\x53\x08\xfa\x34\x36\x25\xcc\x01\x66\x04\xc3\x89\xa9\xc8\x09\xd1\x65\x74\x4c\xcd\x50\x6c\x1a\x58\xbd\x48\x55\x52\x5c\x95\xf0\x82\x88\x77\x99\x46\x52\x70\x5b\x67\x69\xd4\x24\xc4\xad\xc8\x9e\x7f\xa4\x97\x0e\x46\x53\xde\x70\xea\xde\xd0\x51\x0c\xa6\x9e\x7e\xab\x7f\xdd\xc4\xd5\xc4\xc5\xa0\xca\x26\x80\x04\xb6\x9e\x47\xc0\x16\x2c\x7e\xb5\x1c\x87\x29\x85\x78\x1f\x2c\x4c\x45\xbb\xe3\xa3\x52\x15\x5a\x2f\x40\xad\x1a\xa7\x86\x6a\x03\xeb\x62\x0c\x48\x44\x5c\x93\xd5\x8c\xda\x54\x35\xa0\x22\xd8\xa3\xcb\x5e\xa0\x65\x80\x8e\x26\x9c\xd9\xcd\x2d\xf0\x59\x96\x9f\x19\xce\x02\x9c\x47\x3a\x41\x00\xf9\x8a\x34\xa4\x3a\x49\xbb\xd4\x32\x5f\x87\x85\x14\xf2\xad\xea\x44\xaf\x54\x96\xe2\xc0\x2f\x50\x00\xf3\xb1\x12\x45\xc1\x2c\xdf\x9c\xcc\x30\x3c\x9a\x06\xf9\x3f\xc0\xe9\x8f\xc4\x14\xde\xe1\x50\xd3\xe3\x3c\xbb\x28\xd0\xbd\xf9\xb8\x7d\xbe\x33\xd8\xdd\x69\xf7\x94\xf9\xe3\xab\x41\xfb\x64\xc0\xc6\x87\x5c\xfb\x5c\x43\x3a\x0c\x67\x23\xff\xa8\xdb\x55\xdf\xa8\xfe\x2e\x98\xf3\xb9\xc7\x5b\x8d\x3c\xab\xce\x7a\x90\xab\x9f\x26\x12\xbe\xf5\x2d\x18\x26\x07\x3f\x7a\xf1\x53\x1d\xb0\x32\x77\xf3\x3f\xac\x01\xa9\x1f\x8e\xcd\x01\x3e\xe0\xb0\x18\x1b\x61\x99\xeb\x49\x54\xea\x91\xeb\x1c\x26\x60\x3f\xb4\xbb\x86\x20\xbf\xfd\x20\x18\x57\xc7\x57\x09\x35\x58\x31\xde\x7e\xf6\xd0\x33\x5a\x4f\x7a\x39\x9d\x9d\x7d\x62\xbb\x3b\xc0\xef\xfb\x50\xf7\xf5\x2a\x77\x89\xd9\xd5\x01\x59\x80\x0e\x44\xd9\xd5\x95\x0f\xe3\xd7\x22\xb7\xf2\xc7\x95\xad\xf7\x3e\x23\xdb\x7b\xe1\xbe\x4e\xc4\x2a\x99\xdd\xcf\xf2\x6c\x61\x7d\xb4\xaf\x45\x27\x5e\x6e\xf8\x6c\xfc\xa9\xae\x71\x5c\x50\xf7\xf0\xfd\xea\x4a\x65\xe3\x4f\x52\xc5\xe0\xad\x03\xf1\x4b\xcd\x86\x71\xdc\xad\x3c\x5b\x9b\x97\xe0\x86\xcd\xa7\x9a\x40\x79\xfb\xaa\x32\x86\xda\x1e\x9d\xa2\xa7\x29\x4b\x33\x08\x8b\x2d\xc5\xb1\x1e\x94\xb3\x14\xdb\x37\x77\xb6\x1a\x42\xfa\xe3\xea\xea\x06\x5d\xa1\x62\x81\xb3\x13\x3d\x9b\x46\xbf\x5b\x0d\x03\x75\x24\x92\x16\x22\xc3\x56\x6b\x4c\x83\x61\xe0\x8a\xb9\x4d\x6d\x68\x7d\xd1\xb8\x6f\x74\xb1\x24\x9f\x77\xab\xd1\x05\x2b\x20\x4c\x4a\x4f\xd3\x35\xe8\x04\xf4\xd1\xdc\xd0\x90\x8f\x31\x58\x85\xa4\x94\x7c\x90\x82\x0c\x70\xfc\x60\x6f\x42\x15\x39\xb9\x25\xeb\xa6\x72\x3d\x9c\x57\x11\x5e\x00\x1e\x69\x12\xa5\x92\x03\x54\x85\x5e\x46\x79\x04\xd9\x3c\x21\x6f\x22\x0e\xf3\xd3\x4f\x3f\x79\x4b\xff\xe9\xa7\x9f\x6c\xf8\xb1\xc2\x1e\x83\x8d\xa1\x61\x41\x8c\xf1\x1b\xc5\x7a\x47\x4a\x98\xaa\xcd\x92\xe8\x14\xc3\x2b\x4f\x63\x70\x14\x0d\xb2\x30\x22\x03\x82\xef\x13\x86\x45\xcf\x52\xc3\xa9\x14\xd6\xcd\x2f\xcb\xa9\xcb\xc2\x09\xfb\x5d\x68\x84\x03\x75\xe7\x0e\xeb\x17\x5c\xb1\x65\x40\x79\xde\xdd\x9a\x86\x61\xc9\xd5\x95\xe8\x8b\xf7\xe0\xb5\xdf\x27\x9d\x3f\x64\xdf\x51\x51\x49\x39\x6e\x28\x30\x31\xaa\xae\x38\x0f\x25\xa8\xae\xa2\x84\x23\x47\xbf\xca\x0c\x8a\xdc\x41\xbb\x41\xb4\x9d\x83\xd3\xee\x49\x91\xd9\x85\x21\xa3\x2e\xa2\x75\x61\x63\x10\x90\x9d\x95\x1b\x5a\xa7\xa5\x81\x25\xca\x2d\x49\x02\x54\xd0\x3e\xe8\xa9\x8a\xf9\xb5\x82\xa0\xaa\x3c\x2f\x3a\xc3\xf9\x85\xd4\xed\x54\x3c\xb9\x4d\x15\x5e\xf5\x4b\xaf\xaa\x2d\xad\x6b\x42\xb9\x2c\xb0\x45\xb8\xa5\x4f\xd4\xee\x63\x35\x32\xff\xb9\xa7\x76\x77\xf6\x1e\xda\x73\x31\x73\xb9\xba\xc2\x29\xa1\xe3\x01\x34\x0d\x13\x6c\xcf\x2f\x16\xce\x3b\xd8\xc2\xe0\xdd\xbb\xaa\x23\x67\x7a\x75\xe5\x4f\x1c\x3a\x6c\xe8\x51\x54\xc4\x9e\x6b\x6b\xb9\x45\xf1\xa9\x4f\x20\xd5\x1b\x98\x3e\x39\x38\x0c\x9b\xfd\x10\x95\xf3\xc1\x2c\xc9\xb2\xbc\x53\xfd\x2e\x65\x3c\x1f\x67\x71\x1a\x25\x60\xa2\x04\x41\x54\x51\x1d\x2f\x48\xa8\x28\x79\x86\x1a\xfa\x20\x71\xb5\x17\x77\x5e\x2a\x09\x6d\x64\x75\xa9\xbd\xe1\x7c\x51\x9a\x95\xaa\x33\x6b\x95\x06\x81\x5c\x1c\x21\x17\xaa\xcb\x39\xd8\x03\xe6\x8a\x08\xe6\x29\x4d\x01\xdd\xac\xd9\x0b\xa6\xd2\x07\x87\xba\x35\xc0\x4a\xa1\xda\x7c\x62\xb1\xba\xcc\x39\x1a\xc6\xc1\x98\xf4\xd8\xb8\x46\xb6\x20\x6c\x45\x61\x86\x2f\xb4\x42\xf7\x02\xf6\x0e\xc6\xe0\x62\x8c\x4f\x48\x2b\xbb\x8c\xd0\x02\xac\xcc\xc8\x22\xef\x09\xdf\x31\x54\x58\x01\x65\xcd\xa2\x57\x40\xe6\x69\x36\xd5\x7d\x43\x60\xd9\x97\x03\x32\xa8\x2f\xcb\x78\x11\xff\xc6\x83\x89\x84\x15\x20\x6c\x29\xc1\x32\xf2\x42\xe7\x2a\xd1\xe7\x3a\x61\x7c\x9a\x66\xcf\x71\x8a\xee\x96\xe1\x9c\xd9\x93\xd7\xa6\x02\xd9\x77\xcb\xf6\xbe\xab\x3b\xdc\x07\x2f\xff\x59\xbe\x5e\x1a\x08\x2d\xd4\x59\x9c\x4e\xc1\x4a\x2a\xc1\x04\x58\x93\x7c\x55\x94\xeb\x81\x52\x2f\x21\x90\x51\x3c\x41\x83\x4e\x43\x12\x12\xa4\x7b\xb3\xb7\x2c\x4c\x5c\xa8\xf6\x38\x4e\xa3\x7c\xdd\x36\x5b\xc1\x8a\x72\xce\x8d\x87\x8a\xab\x2c\x9d\xc5\xa7\x2b\x08\x2d\x41\x6f\xcf\xe1\xb9\xce\x49\x51\x8b\x97\x17\x85\x3a\xab\x34\x36\xc4\xb6\xc6\x10\x70\xed\x55\x39\xfb\x12\x82\x67\x71\x32\x67\x5a\x25\xcc\xe7\xd0\x71\x51\x6e\x7f\xfc\x2f\x57\x57\xd4\x07\xaf\x1f\x0c\x85\x53\x4e\xb0\x4d\x08\xf2\x42\xab\x33\xad\x97\xaa\xcc\x21\x63\xde\x8c\x32\x87\x18\xa4\x5b\xac\x72\x20\x80\xe8\xd9\x9a\xb9\x0c\x9e\x94\x62\x20\xb2\x29\x06\x40\xae\xbe\x62\x99\x0f\x40\x83\x8b\x65\x42\xc0\x97\x4d\xce\x74\x69\x5e\xab\x59\x8c\x3b\x01\xeb\x61\xef\x2a\xb5\xc3\xd3\x8c\xec\x9b\x58\x68\x96\x9f\xc2\x78\xb4\x4d\x8b\x78\x3a\x65\x83\x6a\x00\x4c\xdb\x17\xe7\x3c\x08\xc0\x1e\x33\xb3\xe4\x2b\x60\xc1\xc9\xee\xd6\xf2\x84\xce\x2c\x36\x35\x34\xfb\x60\x95\x4e\xb2\xfc\x8c\x52\x09\x5a\xbe\x14\xd8\xb2\xfa\x49\x8e\xb5\x02\x8a\x83\xec\xe4\x38\xfa\x7a\x96\xb2\x19\xab\xb3\x8a\x95\xcf\x4f\x8f\x76\x35\x37\xef\x50\xa4\x12\x83\x05\x31\x0f\xa6\x52\x3f\x02\x29\x84\xe0\x03\x29\xf7\xcd\xd4\x4b\xb4\x91\x70\xe9\x10\xa3\x94\x12\xf0\x46\x13\x22\x97\xe0\x26\xc2\x1d\x4f\xdb\x25\xb9\xfe\xd1\xba\xb6\x61\x80\x6d\x46\x01\x98\x57\x3d\x31\xe4\x4d\x52\x64\x0e\x3c\xa8\x4d\xc5\x30\xc3\x59\x47\xd9\xcd\xf6\x92\xe4\x86\x9b\x02\xf9\xa4\x6d\x74\x63\x61\x4f\xca\x96\x72\xc9\xda\xed\x7c\x5c\xea\x45\xd1\x43\x52\xc1\x65\x55\x9f\xb0\x2e\xed\x23\x53\x0f\x56\x3a\x40\x80\x00\x44\x66\x09\x51\x28\x45\x2a\x6b\x88\x4e\xc5\xf7\x14\xec\x24\xe3\x14\x62\xa5\x9d\xeb\x3c\xc1\x10\x39\x7c\x36\x45\x5c\xae\x6c\x06\x02\x58\x14\xce\xe9\x8d\x9b\x6f\x00\x4a\x9c\x65\x1e\xa6\x41\x0e\x07\x14\x14\xd9\xe2\x49\x61\x20\x6e\x6d\x2f\xaa\x8a\x59\x17\x20\x9f\xbe\x0a\x15\x0c\x33\xfb\x0d\x63\xba\x58\x91\xc5\x6a\x89\x8e\x0c\x9c\xcd\x9c\xc6\xb6\x02\x19\x31\x89\x1a\xab\x34\xea\x9c\xac\x46\xd9\xa9\x14\xed\x55\xd9\x80\x12\x2e\x0f\x29\x96\x2d\x20\x7b\x37\x4e\x63\xc8\xe1\x1d\x27\x0b\xe1\x93\x25\x01\x4a\x28\x01\x49\xa2\xa2\xfc\xae\xa1\x0a\x81\xe2\x6a\x31\x36\x24\xb0\xb3\x96\x37\xcb\xed\xd3\x72\xa7\xca\x37\xd6\x2b\xc4\xc3\xb4\x58\x15\xe6\x59\x54\x3b\x0c\xc3\xf6\x71\x25\x12\x3f\x78\x60\xa9\x7f\xd8\x97\x1d\x2f\xdf\xa9\x35\x84\x71\x37\x3a\x59\xb3\xbf\x88\x87\xff\x40\x61\x58\x38\xbb\xf5\x82\x39\x0c\x7c\x28\x73\x9d\xe8\xf3\x88\xb2\x9e\x48\x57\x8c\xd0\x8f\xa1\xb0\x93\xe2\xa1\xab\x4f\xf8\x7b\x4c\x0f\x89\x94\x2e\x24\x2b\xb8\x00\xe7\x07\x88\x2d\xcf\x8b\x43\xeb\x74\x72\x03\xce\x60\x3f\x40\x87\x94\x62\x92\x17\x4b\x90\x98\xf6\xce\x81\xd5\x1b\x07\xb2\x53\xb9\x2b\x4a\x71\x54\x8a\x86\x13\x16\x51\xa3\x09\x13\x24\x49\x66\xc3\xde\x20\x0a\xf1\x64\x6a\x64\x68\x0c\xc4\x3e\xd0\xf3\x9c\x06\x4b\xdb\xa6\xb8\x0a\x50\xda\xb0\x9a\x83\x92\x4b\x2f\xa2\x18\x58\x20\x83\x13\x21\x94\x79\x79\x91\xf9\x98\x9a\x46\x29\x5e\x98\xd6\x07\xa0\x3a\xf3\x45\x7a\x14\x78\xf6\xda\xc9\x97\x50\xf1\xe6\x74\xaf\xa7\xba\xb4\xd2\x10\x7b\x6b\x6d\xa1\x30\x8e\xa2\x3c\xe0\x4c\xdc\x07\x3b\xc3\x5c\x40\xb6\x32\x35\x8e\x4f\x84\x9f\x3f\x35\xb4\x68\x60\x55\x52\x30\x3a\x2a\x47\x35\xae\xeb\x9e\xfe\x42\xaf\x79\xdf\x89\x37\x5b\x51\xfc\xff\x4e\x28\x54\x2c\xf3\x35\xf5\x5f\x1f\xad\xab\x61\xf9\x3d\xd5\x26\xa1\x4f\xcf\xda\x67\x41\x30\x2c\x29\xe0\x1a\x58\x09\x56\x65\x58\xfc\x9f\x34\xbc\x15\x5b\x67\x5d\xf1\x7b\xaa\x1d\x68\x57\x1d\xd7\x66\xfb\x9e\x0e\xd4\x87\x82\x5e\x01\x57\xd1\x1d\x4f\x5b\xdd\x57\x6d\xc3\x6c\xeb\x68\x3a\x68\xf7\x54\xfb\xf9\xe1\x9b\x9d\x9d\x9d\x07\xed\xae\x67\x3a\x36\x89\x20\xcd\xe1\x47\x8c\xa2\xd9\xed\x50\x50\xae\xf7\x06\xf9\x04\xb9\x99\xe0\x3e\xa3\xc0\x26\x02\x97\xb1\x4c\x45\x13\xbc\x10\xe6\x93\x2f\x1d\x01\x2d\xc8\xc5\x3c\x2b\x64\xd8\xb1\xc9\x1c\xb3\x23\x25\x6b\xe4\x84\x01\x41\xdb\xe0\x5e\x2d\x8c\x2b\x11\x25\x2f\xa3\xe2\x88\xa4\x04\xfb\x2d\x61\x53\xf7\x6e\xbd\x18\x67\x49\x60\x4e\x67\xb8\x3a\xfc\x30\x98\xbb\x76\x22\xba\xdf\x0b\xaa\xe9\x4e\xf1\xb8\x5a\xbf\x3e\xf4\x5f\x30\x19\x75\x70\xcb\xce\xcc\xd6\x6e\x86\xab\x5e\xcd\x9c\x7b\xd6\xf4\x27\x59\x69\x19\x5f\x0d\x19\x63\x3f\xce\x44\x30\x35\xcf\xb8\x17\xab\xbb\x18\xee\x22\x3c\x23\x87\x43\x04\x03\x17\x9e\x4c\xd7\x93\x1a\x90\xcd\xa6\xbb\x44\x28\x97\xb9\x7b\x97\x05\x56\x01\x58\x08\x81\x4e\x20\x7b\x56\x22\xf6\xa3\xb0\x5d\xa9\xee\x6a\xd3\x52\xfd\x19\x88\x81\x6c\x18\x7c\xdf\x48\x93\xc7\xf7\xcd\x5a\xff\x09\x41\xe0\x70\x68\xfb\x52\x93\x12\xdf\xb1\x88\x1e\xd9\x32\xa3\x8e\xc0\xd0\x34\xcb\x88\x79\xf9\x25\x58\x16\x24\x77\xb2\xfe\x4a\x96\x3a\x5d\x21\xb9\x97\x98\x8b\xf0\x8b\x5b\xd1\x2f\x44\x92\x93\xcb\x8c\x3b\x8d\x9e\x8a\x0a\x95\x66\xea\x17\x7f\xd7\x7f\xf1\x62\x00\x72\x36\x9e\x81\x7d\x0d\xd7\xc4\x80\xb0\x4f\xc9\x64\x55\x94\xd9\xc2\x1b\x11\x2e\xad\x5d\xa5\x53\x08\x41\x26\x2b\x08\x03\xe2\x4c\x8c\x5f\x65\x53\x3d\xf8\x54\xa8\xef\xa3\xdf\xd6\xee\x79\xf6\x2d\x2c\x89\x52\x45\xaf\x43\x88\x8a\x51\xe6\xf1\x79\x1c\x81\x75\x91\xa1\xe2\x67\x19\x65\x75\xac\xac\xa5\xb4\x5e\xa2\x2a\xd1\xd1\x14\xe5\x25\xe6\xa9\x87\xfc\x52\x94\x78\xdc\x86\xa4\xa8\x05\x7d\x77\xb1\xe0\x0d\x03\x4b\xad\x8a\xd9\x3c\xc9\xf4\x02\xf0\x32\xcf\x60\x05\x72\x9c\x43\x03\xd8\x6e\x5d\x04\x5a\x16\xd9\x26\x90\x41\xd3\x1b\x8a\x4b\xc5\xf8\xe6\x1e\x5d\x18\x5a\x92\xdf\xce\x0c\x9b\x28\xe5\x5a\x7b\x69\xa6\xa2\xbd\xba\xcd\xa6\xd7\xf0\xf9\x7c\x53\x5f\xe7\x61\x67\xe7\xcd\xbd\x59\xa3\xae\xda\xee\x9c\xc9\x57\x50\x7f\x83\x65\x38\x88\xb8\x1a\x2c\xc3\xf1\x9b\x5f\xd7\x1e\x15\x25\x56\xb0\xa8\xd0\x86\xa3\x7f\x6d\xe3\x60\x2e\x75\xb6\x34\x77\x3a\xc2\x54\x40\x0e\xfe\x6d\x5e\x64\x04\xe2\x98\x9c\x16\x2f\xf2\x2c\x3d\x1d\x38\x6d\xdb\x86\xdc\xc3\xb7\x49\x73\xfc\x2c\x4a\x29\xa5\x8d\xee\x01\x09\xea\x92\x26\x84\xe6\x67\xb0\xef\x4f\x67\xa5\xce\x0f\xd3\xa9\x65\x82\xa4\xa5\x1c\xd0\x60\x15\x57\x1d\xb0\x1b\x74\xf1\x9b\x0d\x36\x78\xfd\xfc\xf5\x48\x4d\xb5\xa1\x0a\x90\x36\xa6\x64\x18\x93\x2c\x2d\x20\x51\x40\x99\xac\xd1\x85\x90\x32\xec\x98\x99\xc1\xf2\x01\x75\x8c\xc3\xa8\xea\x41\xca\x30\x2f\x68\xcd\x64\x4c\xe5\x14\x08\x6b\xae\x27\x67\xc4\x82\x47\x01\xb7\x62\xc3\xdd\x81\x54\xbb\xa7\x34\x04\xcb\x02\xee\x9b\x15\x19\xcb\x28\x2f\xe3\xc9\x2a\x89\x20\x47\xc7\x22\x9b\x92\x87\x9c\x75\xa5\x8f\xd3\x81\x7a\x86\x04\x20\x72\x21\x85\x14\x8b\x93\x25\x1d\x20\xe2\x73\x9d\x1b\x72\x45\x2f\x4b\x34\x80\x31\x44\xb3\xb5\xae\x1b\xba\x74\xd9\xac\x4b\x89\x72\x62\x6d\x0c\xe1\x7d\x41\xd9\x7d\xf0\x21\xc2\x54\x03\xf6\xa4\x60\xfa\x60\x23\xee\x47\xc5\xb7\xd6\xed\xf2\xd0\x50\x82\xef\xcc\x25\xed\x41\xfa\x7e\x19\x7e\x0c\x68\xc6\x0b\xf6\xc4\xdf\xaf\x97\x9a\x4e\xfd\x87\x68\x0d\xe7\x85\xa7\x0f\x36\xab\xb4\x02\xf0\x45\x64\x6d\xa7\x17\x94\x90\x6e\x9c\x33\x75\x6d\xe3\xda\xdb\x36\x20\x37\x94\x7a\xb1\x92\x2b\xd1\xa5\x37\x4d\xea\x28\xc5\x75\xba\x6d\x1d\x12\x09\x8b\x96\xf7\x36\x6e\x20\x5b\x52\xfe\x5e\x13\x04\x28\xcc\x8b\x57\x0f\x67\x44\x31\xc5\x9e\x08\x59\xf0\x00\xf0\xcd\x63\x69\xbc\x20\xec\x9f\x65\x18\xee\x47\x5f\xbf\x08\xa9\x1d\x17\x17\xcd\x4e\x04\x75\x60\xdf\x41\x90\xb2\xda\xf8\xdc\xbe\xae\x56\x84\x14\x47\xcd\x85\x69\x69\x36\x3f\x54\xda\x62\x45\x6b\xe1\x4a\x16\x25\xcd\xda\x63\x8b\x23\xc5\xf1\x3b\x8b\x93\x5a\xff\x14\xe0\xfd\xa5\x29\x8a\x12\x2d\xac\xe4\xe2\xda\x9b\x6b\x57\x56\x61\x56\x49\x04\x89\x75\x2e\x25\xa2\x1e\x87\x3b\xf5\xc4\xb4\xa1\x3f\xcd\x64\x8c\x80\x2a\xa6\x89\x42\x9b\x6c\x29\xac\x46\x45\x4c\x7a\x1f\x7f\x92\xb7\xc9\xb8\x2b\xd5\x42\x66\x73\xaf\xae\xe4\xfd\x15\x96\x25\xf2\xf6\xfa\xe1\xad\xac\x6c\x84\x73\x54\xe2\x99\xc3\x80\xaf\x73\xda\x76\xaf\x27\x18\xaa\xe2\xec\x82\xf3\xa9\x8d\xee\xba\x5f\x0b\xad\x86\x89\xbf\x55\x1e\x93\x00\x32\x6d\xb6\x0c\x94\x02\x98\x69\x37\x8c\x80\x52\xde\x7f\x72\x0c\x77\x04\x38\x8e\xbf\x6b\x58\xd6\xef\xcb\x7c\x66\xf8\x85\xc5\xd3\x0e\xc9\x90\x5c\xd9\x15\x58\xb1\x8f\x2b\xaa\x88\x24\x6d\x60\xb2\x40\xd4\xd0\x85\x6c\xcd\x35\xe7\x22\x9c\x1b\x6a\xb6\xa2\xd0\xe5\xf3\x8a\x4e\xc1\x6e\x4b\xf5\x6b\xc7\x77\x97\x02\xc1\xf1\x54\x8f\x46\x6f\xa2\xbc\xd0\xb6\x52\x97\x59\x8f\x82\xb4\x3b\x32\xcf\x5c\xed\xbd\x24\xcc\xec\xdd\x18\xfe\x73\x50\x66\xdf\x9b\x5e\x9e\x45\x1c\x6c\x1f\xdd\x45\x8f\xdb\x73\x7d\x69\x78\x7e\xd2\x95\x98\x7f\xfb\xf0\x47\x54\x4c\xe2\xd8\xfc\x41\xea\x19\xf3\x57\x54\xe8\xc7\x0f\xa1\xd6\xa4\xd8\xa3\x7f\xfb\x7b\xd4\x6c\xf7\x71\xa2\xb9\x07\xfe\x3b\x8f\x2e\x84\x41\x94\x5d\xb8\xba\xaf\xda\xed\xae\x3f\x27\x34\x89\xea\x4a\x63\x6d\xf1\x4c\x7c\x48\xcf\xd2\xec\x22\x55\xce\xa9\xb3\xad\xee\x4b\x67\xb0\x5a\xf2\xbb\x46\xd7\x23\xd1\x54\x73\xb6\x12\xd4\x84\xf1\x4b\x2d\xef\xb8\x7f\x76\x8d\xc9\x14\x64\x60\x66\x56\xa8\xd9\x2c\x59\x42\xe4\xe0\x5e\x6f\x77\x7c\x3e\xa6\xae\x58\xf0\xf4\xfc\x65\x8b\x07\x8c\xcc\x04\xaf\x9b\x02\xcb\x57\x61\xb7\xa7\xda\xb5\xaa\xf7\xff\x3b\x02\xcb\xfb\xb0\xb0\x21\xb0\xbc\xd5\xb3\xb0\x18\x98\x11\x8d\x0d\xaa\x44\xfe\x10\x40\xea\xa2\x6b\x1c\x07\xcd\x70\x91\x59\x48\xbc\x1a\xc5\x25\x64\xc2\x35\x13\x19\x28\xc7\x51\x60\xbc\x16\x12\x72\xb7\x6c\xdc\x4a\x9f\x85\xe7\x1c\xeb\xe4\xa3\x23\x94\xf1\xa0\xa2\x41\xa5\x56\xc4\x9a\x79\x9f\x05\xb0\x2f\x4a\x40\x5b\x6e\x78\x53\x1c\x10\xd3\xa3\xec\x5c\xca\xd8\x9b\x11\x6c\x15\x6e\xbc\x0d\xce\xd1\x4c\x78\x45\xb1\x3f\xa4\x13\x47\x11\x7d\x23\xe5\x4c\x75\x64\x00\x7d\xb2\x91\x01\xa8\x23\x99\xd1\xa2\x9a\xab\xd1\x37\x0a\x51\x23\x2f\x5f\x8c\x78\xda\x48\x5f\x7a\xff\x00\x72\x2d\xb6\x3c\x6a\xcc\xab\xf1\x35\xfd\xac\x00\x0e\x7a\x74\x83\xa2\x44\x63\x32\x40\x38\x13\x1b\xc3\xc2\x59\x4a\x00\x18\x93\x02\x21\xd7\x70\x7a\x99\x4b\xf9\xed\x12\xa5\xb8\x34\x74\x7e\xce\x6a\xef\xad\x64\xa0\xb4\x19\xbb\xfd\xc7\x13\xf6\x23\x12\x09\x3f\x6b\xb4\x44\x32\x34\x7d\xbd\x12\xe9\x77\xb9\xf7\xb4\x87\xbd\xe0\xa8\x46\x0e\x88\xe4\xc1\x8e\x08\xd2\xb8\x07\x52\x2e\x8d\xd4\x64\xcc\x65\x86\x28\xb7\xfe\xf8\x36\x5f\x89\x59\xa2\x99\x8d\x03\x14\xf3\x8b\x0d\x82\x6f\x58\x4c\x10\xd4\xb6\xf6\x61\xbf\x45\x2f\x95\x98\xfd\x81\x6a\xe6\x3e\x05\x23\x0e\x5c\xa8\x7f\xf4\x14\x8f\x74\x39\xe8\x2e\x27\x3a\xfd\x1c\x4a\xce\x73\x28\xab\xed\x17\x05\x2c\x1b\x3a\x86\x69\x39\x60\x21\xbd\x22\x80\xb9\x57\x2e\x3c\x52\x7d\xd0\x72\x57\xb3\x90\x91\x00\xb8\xd0\x1c\x14\x4e\xc2\xe6\x3b\x23\x31\x10\x3f\x4d\x74\x15\x51\x21\x4b\x24\xb4\x57\xb3\xca\x36\x05\x4d\xc2\xb1\x89\x41\x92\xdb\x43\x75\x91\x34\x08\xf6\xc8\xb4\x42\x27\x3c\xde\x8f\x7e\x3f\x20\xc6\xdd\xb5\x5a\xa7\x13\x11\x5a\x1f\xe5\x1e\x9e\xb2\x18\x1e\x06\x34\xdf\x04\x9d\x2e\x59\x21\x08\x1d\x64\xb2\xe6\xe6\x65\xa6\xa2\xf3\x2c\x9e\xaa\x65\x0c\x86\x39\xab\x25\x85\x6f\x60\xf7\xe9\xa2\x8c\x26\x67\x37\xf0\xa7\xac\x85\x9d\x44\x29\x2a\x51\x91\x9e\x65\x67\x08\x96\xbb\x82\x01\x1f\x9a\x1a\x70\x33\x92\xe6\x98\x3d\xa9\x8e\x81\xbd\xfc\x10\xad\xc7\xba\x2e\x71\x9f\x52\xf5\xae\x7a\x81\x7e\xb3\x12\xa0\xb7\x3e\x2f\x7c\xe0\x7b\xca\x1b\x6a\x66\x77\xb9\x04\x17\x26\x32\xcb\xf0\x6d\x25\xc0\x04\x11\xcd\xd7\x30\x34\xb3\xd9\x65\xe7\x96\xf9\xe7\x4f\x74\xc3\x6e\x8f\x57\xfc\x37\xa0\x79\xbb\xc7\xb8\xf1\xe8\x78\x25\xf6\x5a\x6c\x6f\xe7\xa6\xb4\x88\x04\xbc\x30\xef\x0f\xcb\x69\x04\xd7\xdc\xba\x47\x84\xd7\x31\x48\x62\x18\x9a\x20\x04\x6f\x5a\xff\x20\xb8\xfd\xfb\x75\xf8\x60\xa7\xf6\x36\x49\xeb\x89\xc6\xf8\xdb\xb5\x82\x0c\xba\xa8\xee\xd6\xee\xcb\xc8\x42\xde\xc4\xd1\x76\xba\x69\x07\x5c\x22\xdb\xbc\x7b\xfb\x4b\xbe\xef\x83\x1b\x06\xae\x76\x14\x1d\xc7\x76\x43\xc2\x0e\x33\x20\xdb\x33\xc6\x44\x6c\x70\xf4\x6b\x5d\xda\x67\x54\xd8\x0e\x98\x37\x99\xbc\x49\xc4\x24\xe9\xed\xae\x61\x36\x2b\x0c\xe9\x67\x70\x9f\xf6\xed\x15\x5c\x68\xdd\x65\xbd\x76\x53\x90\x28\x4c\xa9\xaa\x53\x02\x96\x3b\x2f\x96\x0e\xa0\x09\xf8\x33\x40\x04\x3d\xbb\x6a\xfb\x46\x51\x97\xa1\x29\x7f\xcd\xab\xeb\x7a\xad\xbc\x85\xd5\x4e\xaf\x2b\x77\xe2\x96\xcd\x1d\xb5\xca\xc5\x16\x4c\x28\x4f\x7f\x65\xb3\x02\xd4\x8f\x09\xf3\x27\x63\x64\x81\x37\x5d\x5b\x14\x4a\xff\x60\x68\xbc\x59\x96\x4f\xa4\x01\x91\x8c\xf8\x47\xc9\x94\xdf\xd7\xdb\x50\xb1\x25\x4c\x1b\xe8\xf8\xb6\xb4\x0a\xb3\x26\x59\x18\xd8\x0c\xa2\x63\x60\x0c\x93\x36\xdc\xf9\x36\x11\x07\x2d\xb6\xd9\xc7\x27\x00\x55\x66\x93\xb9\x55\xab\x83\x3e\x4f\x45\x76\x08\xce\x46\x3d\xa8\x5c\xf0\xba\x2d\xb2\x3b\x5a\x0d\xd4\xee\xe0\xd4\x92\xa5\xbe\x98\xa6\xd6\x1e\x38\xc0\xb8\x38\x29\x87\x05\x7d\xff\x73\x17\xb2\x96\xd8\x28\xb6\xa8\x44\xb3\x20\xe2\x86\xc8\xf6\x4d\xc5\xa5\xc8\x39\xd1\x78\x43\x04\x16\xad\x31\x45\xf3\x64\xe9\xe4\x5b\x56\x7b\x19\x2b\xfe\xe5\xa4\xed\xba\x7b\x97\xda\xf1\x1f\x5e\x9a\x89\xe1\x50\xbd\x30\x14\x38\xc6\xd3\x43\x91\xb1\x76\xa6\xaa\xa8\xd1\x65\x8a\xa9\xeb\xa8\xf6\xa6\x59\x88\xcc\xf3\x94\xc1\x62\x66\x65\xe8\x28\x06\x4e\xba\xee\xf3\x3c\x4b\xa6\xf0\x59\x62\x22\x69\xc8\x83\x55\xb1\x9a\x75\xad\x83\x7f\x45\x6a\xc7\x89\x9f\xbf\x1e\x9c\xe0\x92\xe4\x3b\x32\x6d\x96\x6f\x2b\x59\xe1\x40\x07\x0e\x07\xe1\x24\x8f\xa1\x9b\x13\xd7\xbf\x33\x2a\xb8\x83\xfb\x46\x0c\xa7\xd7\xb7\x97\x4c\xcf\x9b\xa0\xb5\xd9\x01\xfc\xe8\x51\xe4\x4c\xbc\x8f\x6d\x86\x11\xd7\xa1\xfb\x41\x2b\x6c\xa0\xac\xcd\xa2\x7a\xde\x5b\xda\xb3\x81\x10\xda\xed\x1e\xef\x99\x8d\xf7\x64\x49\x46\xec\x0e\xad\xb0\xc0\x92\x8a\x48\x84\x08\x9f\x28\x4b\x52\x16\x1a\xf3\x6b\x9d\x6b\x15\x81\xbf\x6c\x36\x83\x40\x3e\x96\xb2\xc0\xbb\x3f\xcf\x4a\x88\xcc\xa8\x74\x3a\x2d\x30\x76\x0f\x0d\xb1\x49\xaa\xbc\x89\x9f\x73\xf9\x3f\xc0\x29\x02\xd7\x21\x61\x56\x35\x82\x8b\x3a\x50\xa2\x3e\x6f\xbe\x28\xf2\xba\xaf\xe5\xc3\x6e\x69\x4c\xe6\x3f\x6e\x37\x70\x62\x04\x9a\x21\x99\xf9\xce\x90\x64\xf2\xe2\x51\x44\xd9\x2c\xd5\xfd\xf1\xba\x9f\xa5\x7a\x03\xd0\xca\x74\xb4\x08\x6f\x13\x27\x70\x60\x74\x21\x64\x88\xa6\x86\xaf\xf0\x10\x14\x0f\x75\x40\xef\x85\xfc\xfc\x79\xe2\x8a\x3f\xc8\x61\x6e\xbe\x43\xcd\x1b\x8c\x6f\x24\x93\xe2\x33\x91\xfe\xc3\x1a\x14\xb3\x39\xae\xb4\xc6\xc6\xd8\xd5\xae\x61\x19\x78\x1d\x81\x44\xab\xcc\x50\x3e\x86\x26\xd5\x71\x09\x31\x7f\x06\xae\x55\x94\x14\x59\x4f\x44\x1d\x71\xd6\xba\x78\x3a\xe0\x6a\x30\x06\x86\x6c\xc2\xba\x5c\xd7\x1a\x79\x34\x11\x9d\xa6\xc8\xd4\x22\x3b\xd7\xf2\x6d\x01\xdc\xa1\x73\xb5\x8c\x50\x69\xbd\x18\x08\xd4\xe4\x51\xdf\xd2\x0e\x4f\xe4\xba\x71\x69\xf6\xed\xad\xa2\x5d\xb6\x2a\xd8\xdb\xdc\x47\x91\xba\xbc\x2a\xac\xb0\x38\xb3\xf1\x21\x73\x5c\x71\x8d\x42\xe2\x73\xa2\x58\x4d\xc6\x1d\x19\x3a\x8b\xc9\x92\xba\xb0\x59\xdd\x46\x65\x90\xb3\x05\x21\x1b\xe4\x9a\x3a\x3a\x9d\xfe\x49\xea\xd3\x40\xdd\xe7\x24\xe8\xf5\x8a\x49\x71\x93\xc3\x50\xa3\xf5\x7a\xca\x8a\xf6\xfb\xcf\x55\x7f\x56\xc3\x46\xd5\xe8\xd1\xbb\xc2\x3a\xbc\x46\xec\x8f\x42\x48\xcc\x95\xad\x66\xab\x04\x52\xe1\x1a\x64\x5b\xdc\x52\xbb\xa6\xec\xe3\x09\xe3\xb0\xcf\xc6\xbe\x08\x9d\x88\xb1\xf9\xd5\x2a\x75\xa6\x69\x38\x1e\xc4\xf2\xae\xa6\xfd\xf1\x15\x73\x8e\x42\xd7\xe9\xd4\xda\x4c\xf9\x5a\xd3\x71\x68\xc9\x52\x61\xb6\xa4\x37\x72\x38\xd0\x26\x92\xb5\x72\xa5\xc4\x6e\x37\x2b\x0a\xe9\xe2\x7b\x1e\xd2\x66\xb1\x2f\xe2\x34\x4a\xea\xe9\x4c\x24\x0e\xc1\xb8\xc8\x0b\xcd\x98\x37\x28\x82\x19\xb9\x22\x97\x9b\xcb\x47\xb8\x56\x50\x91\xd7\xbc\x8a\xbe\x71\x7b\x83\xac\xc3\x45\xaa\xa4\x1e\x6e\x90\x51\xf8\x7e\xe1\x2e\x86\x65\x03\xbf\x70\xa7\x3a\x15\x6f\x6b\xd9\xbb\xb0\xc6\x4e\xcd\xdb\xb4\xc6\x3c\xda\x0d\xa4\x0e\x7f\xf0\x1d\x18\xa5\x3e\xc1\x97\xad\xf1\xe9\xd5\x4b\xbd\x6a\x69\x96\xa6\xed\xbd\x69\x83\xab\x6c\x6d\xf3\x96\x5b\x44\x07\xaf\x62\xad\x94\x81\x92\xc4\x69\xb7\x87\x4d\x87\xe2\x20\x2a\xd8\xb4\x30\xeb\x5c\x00\xf8\x1b\x16\x57\xb7\x32\x61\x05\xa9\xa7\x95\x14\x6e\xf6\x8a\x87\x86\x4d\x9e\x54\xda\xba\x81\xf2\xc8\x9b\xa1\x12\xd0\xe5\x58\xc2\x50\x88\x5c\x02\x49\xaa\x2f\x71\xce\xd2\x89\xb6\x6b\x11\x92\xf7\xa6\xac\x6a\xd4\x4c\x98\x5e\xd6\x0a\x9f\xbd\x10\x23\x06\x6f\xbe\xd5\xbf\xda\xf5\xda\x4b\x2d\x59\x4c\xaa\x34\xb0\xef\xba\x57\x20\x1e\x89\x3a\xea\x74\x23\x5d\xd9\x80\x5e\x28\x20\x28\x3f\x46\x75\x44\xe0\x75\xcd\x4b\x21\x09\xf5\xba\x57\x43\x7e\x67\x0e\x80\x96\x52\x21\xc9\x37\x30\x00\xb2\xc9\x67\x6a\xab\xad\x67\x2e\x69\xa8\x1b\xd4\xc0\x6c\xbc\x5e\x31\xc7\xf5\xdf\x58\xbe\x18\xbe\x51\xbb\xc3\xb7\x1b\xb4\xc9\x76\x22\xb0\x8a\x9e\x81\x1e\x7f\x2a\x20\xb4\x11\x82\x81\x0b\xcd\x2f\xaa\xa1\x46\xe1\x2b\xbb\x21\xd9\xe0\x04\xd6\x33\x19\x55\x86\x10\xb0\x3f\x2e\xe3\x28\x89\x7f\xd3\x53\x2b\xa1\xc4\x60\xa0\xd5\x39\x85\xeb\xf1\x84\x85\x86\x3c\x8e\x26\x67\x17\x51\x3e\x85\x7c\x32\x51\x19\x8f\xe3\x24\x2e\x91\x70\x47\x67\xb8\xb8\xb0\x4a\x7e\xa7\xd6\x58\x44\x69\x74\x6a\x2e\xad\xf4\x92\x6e\xb2\xb6\x70\x6e\xd3\xb0\x40\xa1\x65\xaf\xa1\x08\x9d\xc5\xaf\x88\x0b\xe2\xac\x7e\xeb\xe8\x4c\x73\x76\x75\x8d\x6c\x79\x7d\xb3\x1b\xc3\x49\xb2\x7b\x39\x52\x40\xf6\xf6\x5c\xef\xff\x2f\xce\xeb\x67\x67\xb3\x5d\xc6\x0b\x9d\x17\xdb\xdd\x81\x17\x0a\xf0\xf3\xd2\xfe\xfd\x99\x39\xfd\xfc\x3c\x7e\x9f\x91\xba\x8f\x16\x32\xfa\x62\x07\x33\xf6\xb9\x08\x3f\xdb\xa3\x2f\x1e\x5e\x9f\xf4\x1e\x3d\xbe\x4d\xac\xc4\x20\xee\x97\x8b\x76\x03\x91\x9d\x0d\xd5\x00\x4a\x82\x4e\x6c\xdd\x69\x9e\x65\x69\x51\xe6\xab\x49\x99\x19\xec\x4d\xb6\x51\xfc\x59\xfa\x05\xc8\x8a\xa6\x66\x9d\xb1\xd2\x36\xd9\x6e\x03\xbb\x1c\x61\x38\x69\xc8\xa8\x62\xa1\x6f\xbb\xbb\xaf\xae\xcd\xcd\xfc\xdc\x90\x41\x61\x30\x26\xf3\xbb\xed\x45\xc0\x99\x64\xcb\x35\x0b\x46\xf3\x49\x4f\x95\x51\x7e\xaa\xcb\x9e\xca\x66\xb3\x42\x93\xd0\xa7\xc8\x27\x98\xc9\x36\xf8\x08\x0f\x5d\x25\xa6\x59\x88\x5d\xed\x6f\x97\x29\xd2\xe2\xdd\x70\x87\x91\xde\x77\x15\x59\x74\x86\xb1\x2b\x30\x0a\xaf\x63\xc6\xa0\xb4\x92\xb7\xb6\xe2\xe4\x4e\x38\xcd\xf5\xba\x21\x42\x39\xf8\x03\x9e\xcb\xa7\x94\x5f\xc3\xdf\x21\x4a\xeb\x48\x9d\xf7\x84\x55\x82\xb4\x48\x90\xe3\x7e\x63\xe3\x87\x98\xe9\xf1\xd3\x87\xcf\xb9\x88\xf1\x81\x0b\x12\x12\x4f\xb9\x22\x51\x7c\xff\xbe\xe8\x7c\xdf\xba\x2a\xd7\xae\x88\xd2\xac\xca\x45\x51\xd1\x2d\xd7\xe5\xa6\xd6\xb0\x38\x19\x1e\xa5\x3a\xd7\x86\x95\x7d\xce\x12\x2a\x0b\xa0\xb4\xf4\xe1\x63\xed\xcf\x47\x3e\x62\xce\x42\xc7\x4e\x47\xe4\x71\xae\xeb\x60\xb7\xeb\xcd\xbc\x02\x5a\x95\x53\x73\x1d\x3b\x31\x59\xbf\x1f\x2c\xd2\x37\xd9\xd8\xb8\x68\x50\x51\xc8\x45\x43\x41\xc7\x8b\xe9\xdf\x34\xb9\x46\xb8\x6f\x1e\xee\x53\x86\x8a\x18\x1e\xcd\xfc\xee\x14\xb7\xda\x62\xd5\x6e\xbb\x5d\x5e\xca\xad\x08\x37\xbf\xdd\x56\xf7\xbd\x0c\xda\x8d\x09\xb7\x95\x4d\x0e\x1f\xb4\xb8\xbe\xfd\x06\x66\xe9\x24\xf2\xc0\x06\x4b\x3a\xe9\xed\x56\x25\x33\x8e\x77\x76\xba\x1b\x41\x45\x12\x7a\x01\x70\x6d\x4e\x61\xae\xbe\xf9\xc6\xe0\x86\x1b\xf7\x2f\x76\x1a\x15\xde\x33\xa1\xef\x75\x38\x1b\xb7\x0a\xd2\x8b\xf7\x54\x6c\xe5\xb8\xb1\xd9\xca\x4a\xba\x73\x60\x0a\x5d\x1e\xf0\x2a\xe1\xea\x6d\xb2\xb7\x2d\x66\xaf\xf7\x5b\xd7\xe0\xc4\x6b\xf6\x04\x1e\x96\xbb\x77\x15\xc5\x5a\x83\x14\x80\xe1\xef\x01\xba\x06\xe2\xbc\xfd\x67\x42\x38\xb9\xd6\xb4\x38\xa9\x8d\xd5\x08\x4e\xdd\xe3\x4f\xea\xc0\x1b\xa4\xf3\xbb\xc2\x05\x8e\xbc\x0b\x70\xdd\xdd\xaf\x50\xe4\x13\xf7\x16\x0f\x20\x4f\xe5\x7d\xd5\x06\xb3\xe0\x6c\xfc\x69\x9f\x5d\x3e\x0d\x11\x54\xa1\x33\x44\x36\xe0\x2f\xfe\x09\x82\xe2\xcf\x0f\x24\x3a\x1c\x1a\xb6\x84\x82\x21\xeb\x29\x68\xa8\xd5\xd3\x37\x47\x3d\x60\xb6\x29\xa4\xba\x21\xb4\xd0\xe3\xca\xfc\x82\xe0\xc4\x13\x53\x49\x9a\x2d\x03\x11\xd7\x10\x2a\x5d\x46\xdc\x24\x07\x6a\xf0\x28\x7b\x2e\xc8\xf6\xb2\x9a\x43\x00\xac\x95\x6b\xb2\xc4\x78\x1c\x90\x0c\xed\x55\xed\xcf\x67\xc2\x6c\x7f\x8d\x1c\x55\xcb\x7a\x2e\x07\x13\x14\x71\xb8\x6c\xa1\xc4\x06\x4e\x58\x10\xf0\xc0\x42\xa8\xab\x73\x08\xdc\x59\xcb\x42\x41\x84\xb6\xba\xc9\x49\x03\xa3\xae\x1b\xc3\xcf\xc2\xbe\x88\x4b\xa0\x00\x5f\xbd\x47\xdf\xce\xaa\x00\xcf\xb3\x38\x77\xa2\xd6\x0b\x0c\x57\xe3\xf8\x27\x8e\x59\x43\x06\x03\xb3\x18\xfc\xcd\xd0\x25\xcf\x06\xed\x00\x3f\xb3\x7c\xaa\xc9\x57\x96\x63\x26\xc5\xa5\xca\x75\xdf\x3c\xd5\x40\xbc\x1a\xe0\x37\x35\x27\x51\xa1\x2d\x80\x88\x44\x93\xa0\x65\x8c\x53\x11\x0b\xa4\x25\xf9\x67\xef\xcc\xab\xf9\xaa\xea\x99\x3f\x17\xe1\x5f\xc4\x9c\xc7\x58\x1e\x91\x1f\x4b\x90\x33\x13\x88\xc0\x83\x90\xc3\x25\x2a\xc4\x6e\x44\x85\xba\xd0\x60\x32\xda\xc0\xd7\xfb\xf3\x6a\x66\x4a\xbd\x79\x79\x6e\xa7\x00\x15\x57\x57\x94\x09\xa7\x56\x92\x4b\x39\xd1\x40\xf3\x2f\x25\xb7\xcd\x30\xf0\x31\x04\x02\xec\xe4\xe3\x46\xde\x9d\xf2\x0e\xdc\xda\xc2\xcd\xea\xa3\x1c\x84\x37\xdf\x02\x92\xf4\x56\x7c\x1f\x04\x03\x61\x59\xe9\x8e\x93\xf6\xfe\x01\x50\x10\x32\x95\xba\xaa\x35\x79\xd4\xea\x2b\x56\x62\xbf\x35\x56\xab\xc4\x63\x91\xfe\x6c\xff\x3c\xec\x54\x06\x0e\xce\xa7\x69\x7e\x95\x6a\x0d\xcb\xf5\xeb\x55\xa3\xd7\x34\xf6\x58\x1b\x83\x26\x14\x45\x0b\xb8\xec\x14\x3a\x99\x09\x41\xa5\xf9\x59\xab\x77\xa8\x63\x06\x31\x1e\x2f\xec\xca\x88\xff\xe8\xb5\x94\x83\x9a\x91\xfb\x13\xc4\x27\xbd\xdf\x1b\x05\x00\xe6\xf9\xfd\xf2\x36\xcf\x6f\x65\x16\xf6\x8d\x45\xf7\xe4\x76\x77\x70\x68\xfe\xc0\x5d\xc8\xf7\x5b\x30\x2c\x7e\xdb\x1e\xed\x3e\x32\x03\x7d\xf5\x57\xd6\xff\xbf\x72\x27\xfc\x95\x3b\xe1\xaf\xdc\x09\xff\x7b\x72\x27\xdc\x8e\xab\xb8\xad\x78\xb0\x29\xe6\x76\x5c\x08\xef\x47\xeb\x1c\x2e\x63\x5c\x0a\x6a\xc7\x73\x6e\x94\x9e\x59\xd2\xdb\x12\x54\x65\x17\x31\x44\x83\xb2\x75\xc0\x1e\xb2\xce\xd7\xd4\x5a\x49\x18\xfa\x13\xbc\x4d\x47\xf8\x27\x78\x9c\xba\xbf\xfb\xf6\x07\x7a\x9e\xd2\x0f\xf2\x3e\xe5\x5f\xe8\x81\xca\xad\x26\xc5\x9e\xf8\xbb\xbf\x27\xba\x03\x0f\x54\xd1\xbb\xfc\x9d\x47\x17\xed\x91\xaf\xfa\x71\xf4\x14\xb9\x8c\x8e\x1a\x54\x43\xd7\xbe\xc5\xc2\xc7\x34\xcb\x17\xa0\x9f\x91\xde\xbd\x42\x4f\x0e\xbf\x58\xce\x42\xc1\x44\xad\x50\x21\x8f\x91\x7b\x22\x91\x80\x99\x84\x55\xbb\xb9\x0d\x16\xc4\x9c\xd8\xb8\xb0\xa8\xef\xca\x54\x75\x40\x51\x15\x36\x2d\x2c\xea\x57\xca\x78\x0b\x2b\xe3\x78\xc5\xde\x50\xf0\xc5\x1f\x0d\xf2\x63\xef\x06\xbd\xf0\x99\x56\xfa\xa0\xda\x7e\x17\x7c\xe6\x5e\x21\xc1\x88\x57\x06\xb0\x15\xf6\xa9\xd1\x1d\xa1\xe6\x64\x99\xc7\x84\x53\xb0\xe2\x46\x85\xac\x38\x6a\x5c\x6c\x4d\x0d\x1e\x0e\x1d\xbe\x06\xdd\xaa\x3b\xb5\x1d\xd4\xf4\xe6\x11\xe8\xd7\x7e\x62\x3c\x85\xaa\x81\xc9\x5c\xab\x5f\x2a\xd7\x91\x32\x38\x42\x9a\x2f\x8c\xa1\x4c\xd7\x2b\x8d\x16\x1a\x94\x08\x45\xb6\xd0\x14\xe1\x64\x65\x5e\xfc\x45\x96\x9e\xe9\x75\x7f\x09\xc1\xd9\x30\x1b\x7e\xb1\x5a\x9a\xa7\x45\x45\x53\x7c\xd8\xa2\xc4\xf6\x53\xc8\x50\xf9\x8d\x80\x8b\x86\x09\xb0\xe4\x06\xf8\xde\xf7\x6d\xb0\xa0\x72\x18\x1d\xa4\x53\x45\x36\x07\x07\x07\xca\xc7\x3d\x77\xdc\x4f\xe8\xb8\x5b\x93\xac\xab\xd1\xf7\x1b\xa6\x61\x8d\x12\xd2\x89\xe9\x10\xce\x1b\x2d\xcd\xd1\xef\x1a\x23\x18\xe7\x1c\x99\xde\x26\xb6\xcf\x67\xd1\x84\x12\x98\xcc\x66\xf1\x24\xc6\xb8\x30\xc5\x32\x89\x31\x84\x7e\xa4\x0a\x9d\x23\x49\x02\x69\xed\xc9\xa6\x18\x02\x3d\x8b\x6f\xea\xff\x79\x67\x83\x40\x33\xb9\x04\xd6\x82\xd0\x07\xf0\xb2\x90\x02\xbb\x3f\x5e\xa3\xd7\xaf\x21\x00\xa3\x49\xa9\x0d\xe1\xc8\xd2\x33\x7f\xa6\x07\xfe\xcc\x45\xce\x07\xaf\xbc\x53\x93\x75\x55\xda\x9d\xd5\x1d\x9c\x73\xd6\x85\x33\x1e\x4b\x54\xee\x75\xe0\x63\xed\x10\x19\xa0\xc0\x1a\x95\x20\xf0\xed\xbd\xb0\x2c\x65\x5d\x2a\x7f\x3b\x4c\xa7\xfc\x29\x1d\xab\x03\xf5\x90\x7f\x09\xa3\xca\x1a\xc4\x56\x62\xf4\xee\x24\xf9\x1e\x7d\x5a\xcd\xc7\x17\xf4\xf3\x96\xfd\x05\x98\x43\xce\x1a\x3f\x35\x4c\x1b\x3f\x86\xf3\x7e\x50\x33\x4e\x80\x52\x9c\xcd\x9e\x3a\xa0\x8c\x48\x3f\x62\x84\xad\xca\x18\xf8\x55\x8c\xe1\xd4\x1d\xd7\x32\xcc\xeb\x2b\xcd\x61\x93\x45\xe1\xfb\xac\x84\xe0\x56\x7e\xe9\xb3\x39\x28\x1c\xea\xc4\xd4\x63\x64\xe7\x3c\xf8\xd9\x18\xdc\x66\xcc\xce\xe0\xe6\x96\x8f\x57\xb3\x4d\x8a\x03\x78\xcc\xf8\x8f\x78\x5f\xb2\xda\xbc\x02\xeb\x9e\xcf\x22\x41\x3e\x58\x18\xc8\x89\xe6\xf3\xd0\x42\x23\xd0\x50\xc4\xdc\x9e\x3b\x96\xaa\x92\x60\xb7\x3c\x6b\x94\xd8\xa9\x0e\x29\x08\x8d\xfa\x5a\xb9\x75\xd9\x81\x72\xf5\x44\xe5\xea\xbe\x83\x15\x33\xc1\x9e\x8a\xbb\x6a\x54\x2d\x13\xe8\x07\x84\x47\x66\x96\x06\xcf\x37\x6d\xb3\xbd\x14\x5f\xc2\xb9\x1b\x6c\xf0\x16\x9a\x17\x18\x3f\x6a\x92\x19\x98\x00\xd3\x75\xc6\x11\xc0\x41\xd0\x91\x36\xf6\xeb\x6e\xe2\x97\x08\xd1\x90\x96\xab\x2c\xf5\x62\x89\x6c\x9a\xed\x38\xc2\x38\x59\x51\x02\xf1\x96\x3e\xbc\x7f\xd1\xff\xd2\x0d\x46\xfe\x29\x06\x51\x15\x6a\x96\x67\x8b\x9b\x47\x16\xf7\xb3\x01\x76\xfc\xa3\xf9\xfa\xc0\xdb\x74\x3c\x1b\x53\x82\xea\x68\x09\xc9\xbd\x10\xdc\xfb\xfe\x31\xf7\xd4\x4e\xcf\x2f\xa9\x51\x11\x70\x67\x83\x32\xc3\x25\xf8\x58\xce\xef\x03\x86\xb1\x26\x62\x7f\x60\x56\x62\x89\xfb\x95\xbb\xdc\x97\x5b\x60\x93\x58\xdb\xe8\x67\x1a\x4c\x40\x30\x36\x3b\x9e\x8f\x39\x8f\x9e\x4d\x6a\x12\x97\xed\x42\x3d\x7d\xf7\xec\xe8\xa8\xa7\x22\x88\x81\xc8\x67\xd6\x33\xfc\x25\x89\x0f\xd2\x32\x4e\x31\x30\x37\x7c\x1a\xa8\xa3\x19\xbe\x7b\x18\xff\xca\x94\x61\x88\xd8\x52\x4f\x40\x3c\xd1\xdf\xc3\x40\xcb\x98\x70\x41\x38\x8f\x19\xa0\x82\xc9\x7d\xb7\x2e\x75\xc7\x34\x14\x78\xc1\x74\xf3\xf5\x81\xda\xb9\xfc\xe2\x85\xbd\x41\x3b\x2e\x6e\x12\x7c\xff\xe6\x1b\xf5\x08\xd1\xc6\xe5\xce\x63\x5b\x6b\xaf\x5a\xeb\x21\xd7\x3a\xb4\xb5\x1e\x54\x6b\x3d\xa0\x5a\xbb\xae\xd6\x43\x71\x0f\xb9\xda\x63\xee\x6c\x4f\x3d\x51\xfd\x5d\x35\x52\xfd\xbd\x20\xd2\x1c\xc7\x3e\x7e\x40\x10\x4f\x8e\x06\x1a\x13\x1b\x30\xe8\x5b\x21\x3b\x8a\x51\xcc\x7e\xa9\x28\x45\xde\xde\x5e\x2b\xf7\xc2\xab\xe0\x4e\x0d\x40\x9a\x50\x02\xa8\xb8\x98\xdc\x38\x60\x67\xaf\xa7\x1e\xc0\xa9\x3d\xec\x62\x0a\x6d\x50\xf5\xc8\xfb\x6a\x26\x14\xde\xd2\x4e\x3c\xc3\x08\xa3\x13\x8c\xc8\x1a\xe5\x7a\xe3\xc1\x1d\xd9\x79\x92\xe4\x8f\x31\x1a\x93\x7a\x9f\x94\x04\x49\xd5\x47\xcb\x70\xb3\xe9\x9f\xd4\xd7\xa6\xa2\x3d\x59\x4b\x37\x10\xb6\x11\x80\xb1\x9a\x1d\x7f\x3a\x71\x66\xab\x63\xf5\x8d\x30\x3d\xe5\x22\x53\x02\xe2\x46\x81\xab\xd3\x31\x8f\xe8\x68\xb9\xb1\xc4\xd4\xfd\x3e\x4c\x03\xa4\xf3\x68\xd2\xda\xdf\xf3\xe7\xf4\xe7\xcf\x67\xef\xdf\x37\x1f\x19\xba\x97\xfa\xdf\xeb\x62\x97\x74\xb5\x6a\x67\xfc\xa0\x46\xcd\xe4\xe6\xed\x66\x87\x57\xe0\xbf\x0c\x1a\x88\x4a\x64\x29\x16\x51\xba\xae\xe2\x0c\xcc\x11\x15\x6d\x80\x6d\x15\x15\x02\x6c\x4d\xe5\x5c\xab\xe8\x3c\x8a\x13\xb0\xbf\xa3\xf8\x36\x85\xd6\x14\xe4\xb5\x32\x04\x65\xea\xbf\xd0\x14\x18\xa0\x85\x01\xcc\x7b\xa6\x64\x9b\x64\x19\xdb\x6c\x2e\x09\xf3\x9d\xd6\xcd\x13\x53\x4f\x17\x5a\xa7\xaa\xc8\xd4\x2c\xca\x81\x10\x87\xc8\x8d\x9c\x3e\x19\x67\x2e\xc4\x23\xf2\x3e\xb5\x7f\x5e\xcd\x66\xb3\x69\x1b\x45\xa5\x0b\xe0\xa4\xce\xbf\x6c\x17\xd4\x0a\xa2\xdf\x90\x40\x74\xac\xe7\xd1\x79\x9c\xd1\xb5\xae\x2e\x08\xf3\x33\x43\xb4\x49\x14\x02\x1a\x6e\x46\x53\xce\x7e\x16\xc0\x1a\xe2\x14\x63\x5e\xeb\x1c\x33\x6a\x90\x00\xb0\xf1\x0c\xdc\x64\xf5\x65\x5c\x94\x5e\xfa\x06\x72\x7b\xa4\x9c\x8e\xe0\x88\x58\x64\x98\xce\x18\x24\x95\x17\xd1\x1a\x8d\xcf\x8a\x04\x24\x99\x4b\x9d\xcf\x0c\x6b\x80\x86\x6d\x93\x5c\x47\x05\x5a\xb8\xe9\x08\x10\x1f\x12\x01\xf0\x8e\x24\x59\xb6\xac\xc3\x28\x87\x97\x65\x1e\x19\xb0\x2e\x24\x46\x59\xba\x87\x01\xc0\x7d\xe7\x44\xdd\x55\x3b\x97\xcf\x76\xba\xc0\x1a\xee\x5c\x7e\x69\xa1\x3b\x84\xe0\x1d\xef\xba\xf1\x79\x78\x56\xca\x5e\x8b\x6f\xd4\xae\xe1\x30\x05\xd2\xfa\x46\xed\xca\xcb\x04\x13\xd8\x6d\x9e\x40\x75\x0a\xbb\x3e\x1d\xee\x4d\x82\xaf\x55\xdd\x44\xf6\x2a\x13\xd9\xf3\xef\x30\x4c\x65\x6f\xd3\x54\xaa\x93\xd9\xdb\xaf\x88\x46\xbc\xe9\x38\x1f\x34\xe7\x57\xdd\x40\xef\x6d\xb8\xbe\x8d\xe4\x5e\x70\xe6\x2f\x24\xad\x6e\x5f\x8d\xa5\x24\xc5\x6b\x69\x21\xcb\x1b\x48\x6c\x28\x60\x07\xb5\xa3\x04\x3b\x8c\x19\xf3\xd0\x0f\x8a\x09\xec\x5a\xbe\xe2\xf3\x08\xca\xe5\xbf\x8b\x66\x5c\x7e\x3e\x59\xe8\x71\x07\xa8\x43\xa0\x33\x0d\x8e\xd1\x63\x11\x00\xe9\x1a\xd4\x40\xc4\x0b\x6a\x25\xb3\x14\xef\x33\xd3\xfe\xb6\x6d\x8f\x5c\x2b\xe9\x67\xbb\x60\x52\x28\xaf\xa4\xf5\xc1\x64\x81\x20\x81\x06\xcd\x46\x48\xcc\xf8\xb8\xdf\x07\xa0\xf7\x92\x8f\x62\xf8\x29\x89\x87\xad\xa3\x53\x04\x64\xc4\x2e\x58\x61\xc0\x51\x32\xc5\xb7\x9a\xb9\x93\xe2\x30\x86\x71\xb7\x96\x5f\x86\x31\xf7\xad\x73\xc6\x34\x24\x7c\x3a\x65\x1d\x1c\x43\x5f\x4d\x47\xbb\xd3\x33\x1d\x49\x56\xb0\x7e\x42\x5c\x0d\x0f\xf6\x45\x96\xe3\x39\x1a\x22\xbe\xfe\x59\x32\x98\x7c\x6a\x4e\x8f\xb3\xa4\x41\x5e\xc7\xd4\xb1\x70\x9e\x30\x29\xd8\xf1\xc3\x74\xea\xdf\xd6\x1c\x97\x1a\x20\xab\x27\xd2\xcb\x10\xea\x8f\x88\xd5\xae\xe1\xe0\x2d\xa7\x7b\xdf\xc3\x46\xee\x7e\xe2\xd2\xcc\xb2\x76\x1f\x7f\x7f\x68\xf8\x18\x4c\x03\x06\x14\x42\xa1\xca\x8b\x8c\x60\x65\x09\xd1\x7d\x2d\x0c\x8e\x57\x25\x84\xb8\x23\x67\x63\x48\x00\x16\x61\xd4\xbb\x5a\x48\x63\x28\xeb\x49\xb7\xe2\x89\x0b\xfb\x82\x24\x7c\xea\xd8\xa3\xe1\x3c\x3e\x05\x7a\xa0\x58\xe5\x79\x76\x1a\x01\x43\x94\xa2\x6f\x31\x79\x8c\x07\xfe\xc9\x1c\x55\x1a\x0c\x7d\xdd\xc4\x05\x2f\x00\x7a\x4d\x4c\xb0\x66\x2a\x42\xe0\x35\x77\x78\x18\x1d\x31\x59\xfb\xc7\x82\x72\x32\xef\x26\xf0\x0b\xe1\x60\x30\xee\xaa\xbf\xab\x3d\xdf\x75\x4b\x9c\xa0\x0f\x5a\x14\x67\x33\x96\x22\x94\xc0\xab\x5d\x1d\xa8\x7c\x60\x66\xf6\x2c\x9b\xea\xa7\x65\x27\x17\x74\xbe\x67\x96\x32\x01\x92\xf4\xf2\xf9\x97\x3b\xe0\x48\x39\x41\xce\xee\xf9\x77\x2f\x5e\xc8\xa7\x2a\x14\xb5\x88\xa7\xaa\x72\xdd\x1e\xd6\x7c\x33\xb7\xc6\x90\x06\xb0\x98\x63\x6f\xe5\x7b\x27\x4d\xf5\x77\x6b\xeb\xef\x9e\x54\x9e\xc9\xdc\x25\x59\xee\xbb\xd5\x5d\xd7\x58\x46\x36\x09\xda\x76\x6b\x11\xc7\x5e\x45\xd0\xd6\xb0\x06\x9c\x53\x13\x26\xe0\xe3\xea\x05\xfc\x56\x05\x2f\xc0\x05\x82\x30\x32\x18\x5c\xd3\x7a\xe5\x28\x08\x99\x35\x55\x14\x00\xbd\x1e\x77\x14\x78\x0f\x5a\x94\xc0\x4b\x22\x0d\x79\xef\x0c\x71\x1e\x2f\x96\xc9\x5a\x25\xba\x54\xe7\x5f\x72\x9a\x75\x73\x2f\x42\xc0\xfd\x57\x20\x14\x69\xbb\x3e\xbd\x15\x35\xa1\x24\x12\x6a\x78\xac\xc5\x3e\x0b\xdc\x7c\x1d\x62\x2a\xbb\x3c\x27\x09\xae\x3c\x51\xa9\x3a\x50\x35\x97\xf3\x81\xe5\xe2\x02\x71\xa8\x7f\xde\x36\x5a\x6e\x5c\xf3\xdc\x1f\xa8\x07\xaa\xaf\xd2\x5a\x60\x0b\xfa\xdf\xf5\x2c\x94\x6e\x05\x7f\x9e\xe8\xf3\x73\xae\xde\xed\xaf\xdd\x75\x13\x98\xbb\x65\x07\x50\x9e\x76\xeb\x36\xfe\x5f\xfc\x52\x35\x01\x89\x9d\xe5\x4e\x0f\x4e\xa2\xfa\xe0\x87\xef\xda\x9b\xa8\x60\xf2\x08\xcc\x60\xf2\x6c\x75\x3a\xc7\x8c\x64\xc0\x63\x22\x8d\x6d\x15\x6d\xaa\xa3\x07\xa7\x03\x05\x7a\xca\x9e\x42\xc5\x66\x4f\xcd\xf5\x65\xd7\xed\x80\xd0\x10\xb8\x3d\xa8\xdb\x54\x5f\x35\xe3\x6f\xa3\x55\x24\xd4\x75\x71\xcb\x5d\xac\x35\x93\xbe\x3e\xe9\x3d\xde\xf9\x63\xe6\x59\x83\xa1\xcb\x5a\x31\x30\x1b\xf8\x1e\xb7\xad\x45\xbe\x69\xfc\x75\x7b\xf4\x78\xd7\x0c\xb7\x7b\x9b\xe1\xdc\x38\x9b\x06\x4e\xe2\xb1\x75\x7d\xe3\x61\x06\x9f\xc0\x00\x5b\x68\xdd\x30\x0b\x3c\x15\xb8\x2f\x9c\x68\xaa\xee\xdb\x8f\xce\x3b\xb8\x61\x38\xb6\xcf\x0b\x86\xb3\xc9\x85\x1a\x9a\xa1\x5d\x6c\xd0\xc8\xa5\xd0\x69\x6c\x57\x72\x95\xa0\xa9\xd8\xef\xe6\xc6\xcb\xa8\x28\x08\x96\xa9\x39\x1d\x4d\xed\xcc\xd8\x7b\xb0\xb9\x87\xed\xd1\xa3\xbd\xb0\x86\xd8\xfe\xed\xd1\xa3\x07\xe1\x67\x39\xff\xed\xd1\xa3\x87\xe1\x77\xb1\x9d\xdb\xa3\x47\x8f\x0c\x9c\xec\xfd\x89\x60\x69\x77\xb8\x09\x28\x1f\xfc\xd1\xc1\x36\xc0\x46\xcd\x66\xd7\x2c\xf7\xe1\xad\x6c\x17\xef\x29\x5d\x24\x71\x5a\xf6\xa7\x71\x01\x00\x9a\x66\x53\x3d\x4c\x33\xe7\x44\x39\xed\x47\xcb\x58\xdd\x1b\xb6\xbc\x60\x62\x76\xa6\x6c\x52\xe4\x9b\x1d\x91\x7c\x89\x14\x41\x20\x55\x4b\xc0\x37\xb4\x8c\xcf\x29\xb1\xa0\xe1\x4c\xc8\x87\xfb\x4c\xaf\x51\x68\x95\x25\x53\x35\xce\xb3\x8b\x42\xe7\x85\xef\x9d\xf8\x26\xcf\x96\x85\x42\xef\xc4\x29\x87\x3d\x34\x4d\x3a\x66\xdc\x33\xbd\x36\x64\x76\x91\x5b\xb3\x97\x69\x51\x1e\x9f\xe9\xb5\x79\x8b\x8a\x7c\x02\x7f\x92\xd8\xc3\xa0\x7e\x11\x1e\xdd\x20\x3b\xa9\xfc\x0c\x7f\xa3\x32\xb4\xbe\xf4\x5d\x92\x5d\xd4\x39\xb6\xd8\x0d\x90\x69\xc9\xc8\x4c\x94\x63\xa0\xc7\x2c\x3f\xa9\xee\xa4\x72\x2b\xee\x70\x3c\x31\x3e\xb2\x96\xe2\x3f\x07\x76\xb3\xdf\x45\x33\x4d\x3b\x2d\x71\xbc\x2b\x56\x9d\x28\x3f\x75\xa1\x60\x5e\xe7\xaf\xc1\x75\xb3\xa7\xa4\x04\xc4\xf3\xf4\xb9\xa1\x01\xeb\x44\xcc\x7a\x8a\x32\x2a\xe3\x89\x5a\xe8\x72\x9e\x4d\x69\x4d\x34\x1b\xb7\x8c\xef\x68\x19\x6e\x4e\xdd\x56\xcb\xfd\xc0\x93\x90\xea\xc0\x5b\x4c\x58\x98\x92\x44\x39\x85\xd9\x41\xb6\xaf\xed\x88\x9f\x9a\xac\x00\x4f\xf3\x53\x30\x81\xc5\x58\xdc\x14\x67\x3b\x52\xdc\xd4\x27\x53\x6e\xbd\x1d\x62\x31\x08\x47\x72\x35\x45\xfc\x1b\x84\xa5\x4c\x92\xba\x5c\x00\xec\xe3\x1d\xff\xa6\xd1\x1e\xe6\xf3\x57\x51\xb7\x02\xba\xaf\x56\xb9\x0f\xb3\xe8\xd2\x98\x66\x2e\xa1\xd0\xac\x12\x74\xa5\x21\x53\x84\x08\xda\x07\xba\xdc\x4e\xb0\x30\xe9\x59\x50\x5b\xb7\xeb\xe4\x90\xb2\x96\xad\xb3\xd3\xad\xd0\x8a\x75\x5b\x4c\x57\x33\xdc\xe8\x7f\xf9\xc6\xfa\xa0\x81\xbb\xda\x38\x3d\x88\x30\xf7\xef\x9a\x22\xa1\x61\x33\x87\x70\xb6\xe6\x0d\x61\xb2\x6d\x77\xcf\x3c\x18\x8f\xfe\x32\x76\xff\xcb\xd8\xfd\x2f\x63\xf7\xbf\x8c\xdd\xff\xf7\x18\xbb\x57\xc8\x2a\xe4\xbe\xf6\xd1\x48\xfd\xf0\xf0\x16\x5e\x3d\x60\x5e\x46\xa1\x45\x64\x75\x2e\x03\x82\x9a\x7f\x74\xde\x51\x34\xa9\xc3\xc3\xee\x7e\x8b\xf2\x3d\x0a\xbe\xce\xb6\x66\x72\xbf\x8f\xf4\xf7\x30\x60\x16\xa9\x65\x1d\xd7\x17\xb6\x0c\x68\x7b\x6a\x59\x65\xfb\xc2\x76\x1e\xe3\x47\xad\x6a\xf9\xbe\xb0\x61\xc8\xf9\x51\xdb\x06\xc6\x2f\x6c\x5d\xc3\xfa\x0d\x87\xea\x3b\x0a\x12\x54\xf4\x31\x4a\x10\x06\xa1\x35\xac\x84\xda\x19\x3c\x1c\x5c\xf2\x20\x96\x79\xb6\xe7\x08\xcd\xb3\x64\xda\x2f\xca\xb5\x4b\x93\x39\x50\xea\x55\x56\x6a\x17\xc8\x13\xb2\x61\x22\x89\x09\x18\x1c\x4d\xdf\x38\xc5\x3b\xab\xa9\xec\x83\x00\x01\x45\xc0\x5d\x35\x3b\xd7\x79\x1e\x4f\xa7\x10\x15\x09\xba\xb2\xc7\x09\x95\x06\x2d\xcf\x50\x56\x47\x0b\xf2\x60\x3c\x3c\x0c\x13\x7d\xd2\x1a\x1a\x53\x74\x76\xa6\x90\x61\xdd\xcb\xb5\x0a\x61\x29\xb3\x55\x3e\xd1\xd2\x8f\x5a\x84\x05\x9b\x46\x65\x44\x39\xf4\x04\xfd\x65\x7a\xb2\x11\xc5\x7c\xcd\x30\xe6\x82\x32\x04\x99\xad\xa4\xb9\x83\xbb\x77\x69\xb0\xc1\x32\x5a\x15\x9e\x7b\xa8\x2c\xef\xd4\xc8\xb8\x31\xb2\x28\x56\xca\xd2\x4e\xdb\xcc\xab\xdd\xa3\x09\x76\x2b\xb3\x86\xa8\xe0\x5e\x88\x35\x6c\xca\xe0\x22\xa6\x92\xeb\x62\xb5\x10\x73\xf1\x8a\x3b\x5e\xb0\x38\x72\x13\xc4\x09\x40\x10\xf0\x1e\x0f\x66\xc3\x57\x92\xaa\xb2\xad\xd3\x69\x9b\xf6\x9a\xe3\x8e\x72\xe6\xcf\x1e\xf6\x82\x71\x27\x21\xf7\x85\x0b\xbd\x7e\x81\xf1\x66\x87\x43\x3e\x16\x17\x41\x1d\x7b\xcc\x55\x7b\x92\x64\x85\x6e\x53\x16\xd3\x81\x52\xaf\x0d\xac\x89\x2e\xb3\x74\xe2\x32\xf1\x40\xf9\xc7\xb8\x78\x57\x4e\xe3\x0c\x5d\xc4\x09\x02\xd4\xd5\x95\x4d\x24\xab\xd3\xa9\xcb\xe4\xe5\xf2\xfd\xb9\xfd\x36\x83\x9b\xc5\xb2\xe8\xd9\xfb\x88\x13\x32\x9f\xe1\x2f\x17\x70\xd3\x80\xd7\x34\x9e\xbe\x4e\x0f\x53\xcf\x8d\x53\x1c\x15\x4e\x59\x80\x16\x55\xf7\x43\xa5\x88\x4e\x6c\x0e\x21\x25\xd6\x4c\x23\xfa\x5d\xc3\x64\xfe\xe9\xce\x05\xf5\x0b\xe3\x34\x25\xfa\x95\x1f\xfd\x58\xa3\x98\x87\x21\xd1\xd1\xb9\x56\xd3\x28\x3d\x85\x04\x2a\xe6\x52\x16\xa8\xfe\x2c\xd1\x54\x26\xd7\xe8\x03\x0f\xd1\x47\xe5\xce\x00\x31\xed\xb2\x83\x4e\x12\x1d\xa5\xab\x65\x47\xa8\xc5\x0e\x0f\x07\x1c\x1a\x1f\xa2\x1c\x93\x8e\x99\x5c\x5e\xbb\x61\xa8\x44\x24\xd6\x75\x0e\xfe\x20\x1f\x52\xd4\x8c\x4c\xd9\x69\x1d\x1d\xf1\x63\xcc\x0c\x3c\x68\xbc\x79\xec\x4e\x4b\x13\x84\xd9\xd8\x5b\x51\xfd\x88\x5b\x91\x6b\x08\x59\xcc\xa1\x96\x01\x74\x6d\x54\x7f\x1b\x4e\xd9\xec\xc6\x74\xaa\xa7\xde\x46\xd8\x65\xfb\x40\x89\x3d\x7e\x4f\x5d\x54\x11\x82\x85\x8f\x4a\xc5\xba\x8b\xdb\xd8\x6d\x23\xdc\x87\x15\xab\x77\x60\x63\xb7\x35\x9b\xd8\x30\xdf\xda\x2d\xbd\x61\xbe\xb4\x67\xb7\x9b\xb1\xab\xdc\x3c\x89\x6a\xdd\x1a\xc0\xa8\x0c\x5d\x83\x22\xbc\xc1\x2c\xd8\x34\x7f\xa5\xb0\xa4\xf1\xd2\x7c\xc6\xfe\x2c\x50\x3d\x85\x84\x35\xb3\x2c\x57\xab\x34\xbe\xec\x27\xf1\x99\x56\xab\x22\x3a\xd5\x23\xf5\x14\x1e\xbf\xce\x77\x5d\xfc\xf7\x59\xd7\xf1\x9c\x53\x48\x84\x70\x5d\xf1\xa7\x0e\x23\xbc\x35\x12\x34\xdb\xa3\x47\x3b\xd5\xcf\xa1\xc4\xf8\x71\x4d\x1d\x4f\x66\xfc\x78\xb7\x5a\xc1\x97\x1a\x3f\xde\xab\xd6\xf0\x04\xa9\x8f\x1f\x18\xbe\xf8\x56\xd1\xe3\x44\x1c\x5f\x8c\xdd\xd7\xfd\x1d\x48\xcf\x67\x49\xac\xd3\xd2\x05\xe9\x0e\x24\xbc\x39\x7e\x20\xf1\x69\xae\x8b\x65\x96\x16\x35\x5a\x02\xfe\x42\x15\xf5\x65\x89\xda\x4f\x5b\x0d\x0a\xe8\x6b\x51\x46\xe5\xaa\x78\x96\x4d\x75\xe1\x4b\x6a\xe3\xa4\x8c\xd3\x3e\x7e\xee\x4f\xcc\x77\x6a\xb1\xca\xfd\x00\x71\x79\xd2\xee\x22\x8d\x3d\x2f\xcb\xa5\x53\x68\xb4\x5a\xe6\xf7\x20\xb7\xcb\x71\xab\xce\x96\x65\xc1\xe1\x63\xb6\xfc\xb4\xeb\x85\x2f\x3f\x6a\x6d\x6d\x61\xa1\x19\x76\xb0\x8c\xf2\x02\xb2\xdb\x17\xdd\xd6\x96\x4e\x0a\xed\x3e\xe3\x2a\xe9\x5b\x6b\xcb\x70\x46\xe0\x9e\x44\x71\xe3\xd5\x32\x3a\x05\x7e\x36\xc9\x22\x88\x76\x93\x67\x0b\x9c\x6f\x86\xf3\x2e\x20\x96\x3b\x50\x06\x4b\x3d\x89\x67\x6b\xf4\xd0\x02\x02\x6e\x92\x25\xd0\x23\x90\x07\x86\x16\x49\x4a\x34\x89\xea\x80\xd5\x68\xd7\xd6\xea\xe7\x3a\x41\xa9\xb5\x99\xad\x7a\x99\x5d\xe8\x73\x4d\x16\xfd\xea\x02\x5e\xa0\x8b\x2c\x3f\x53\xf1\x0c\xfa\x83\x79\x51\x53\x15\xcb\x6c\x25\x1a\x83\xef\x9b\x4b\xd4\x9e\xc5\x89\x1e\xb5\x5b\x5b\xf0\x7e\xa3\x37\xd0\x1b\x6e\x74\x40\xc1\x1f\x07\x49\x36\x01\x81\xc2\x80\xfb\x1b\x14\x3a\xca\x27\xf3\xce\xf0\x1f\xb0\xba\x27\xa3\xff\x33\xc4\x27\xa8\xbf\xab\x9e\xa8\xb6\x29\x1c\xb5\x41\x39\xd7\xc2\xae\x97\xae\x4f\xb3\x89\xb6\x23\x43\x99\x04\xc3\x62\x83\x79\x06\xa7\x0a\x95\xcd\xdf\x10\x20\x09\xc9\x18\x2c\xa0\x7e\xb3\xdc\x56\x33\x7f\x53\x69\x04\x31\xc7\xb0\xd4\xfc\x7d\x75\xa5\xda\xc3\x36\x9d\x9c\x0d\x07\x6e\xf0\xc9\xd1\x9b\xf3\xc7\xe6\x29\xca\x75\x51\xe8\x02\xe1\x05\xc6\xbe\x7b\x17\xe6\x60\x93\xbf\xb6\x47\x6d\x34\x7e\xec\xef\x1a\xb8\xa1\xf9\xb5\x8f\xdb\xea\x3e\x4e\xf6\xbe\x6a\x9f\xd0\x10\xef\x21\x3b\x7b\xb4\x46\x81\x98\x7f\x6c\xef\xe7\x9a\x15\x0b\xaa\x98\x67\xab\x64\xca\x39\x37\x4c\x65\x43\xb0\x96\x19\x3a\xf8\x2d\x73\x5d\xaa\xb8\x54\x93\x2c\xcf\xf5\xa4\x4c\xd6\x83\x16\xc0\xe3\x00\xef\x08\x4e\xf3\x89\xea\xd8\xbd\xbc\xaf\xda\xc3\x21\xcf\x07\x75\xa3\x5d\x75\x5f\x75\x60\x93\x9e\xa8\xf6\x08\xc2\x9f\x99\x1f\xfc\xc9\x6c\x0e\x75\x4a\x2c\xcd\x01\xde\x1f\xfe\x69\x36\xee\x3f\x0e\xdf\x43\xb2\xdb\x0f\xcb\x25\x7b\x8c\x52\x9b\xb9\x8e\xa6\x98\xa8\xc4\xfb\x79\x75\xa5\x7e\xbf\xc6\x9d\x78\x9a\x14\x19\x25\x2d\x87\x2a\xd1\xaa\x9c\xf7\xf0\xcf\x45\x36\xd5\x04\x1d\xb9\xfe\x95\xf3\x6a\x48\x24\xc5\x77\x91\x62\xc2\xb4\xb6\xb6\x72\xfd\x2b\xbc\x22\x16\x09\xc1\x3d\x6f\x6d\xd9\x78\x61\xbf\x1a\xf6\x08\x30\xc3\xa9\xf6\xb0\x82\xf9\xe9\x63\x06\x37\xb0\xc4\x24\xae\x4e\x0b\x46\x03\x9a\xb3\x76\x80\x10\x9f\x7a\xbf\xb1\x0a\x98\x04\xc6\xe9\xe9\x0f\x06\xe0\x4e\x11\x99\xe2\xc4\xc3\x4f\xd4\xe7\xd3\x53\x9d\x96\x61\xb4\xb1\x6b\xf1\x8d\x33\x02\xff\x10\x5d\xbe\xcb\x26\x67\x1a\xb0\xd3\x43\x5e\x32\xdc\x56\xee\xc3\x6c\xa7\x6b\xd8\xe9\x52\xa5\x77\xef\x9f\xbe\xff\xf0\xee\xe3\xb3\xd7\xcf\x0f\xdf\x51\x32\x0f\xc2\xd0\x54\xe1\x87\xc3\xf7\x2f\x5f\x3f\x37\xdf\x8e\x5b\x5b\xed\x67\x2f\x0f\x9f\xfd\xe7\xeb\x0f\xef\xdb\x3d\xf3\x03\x65\x2a\xf4\xf7\x9b\xff\x86\x3f\x9e\x1f\x7e\x7f\xf8\xfe\x10\xfe\x34\x90\x62\xfe\x7d\x79\xf8\xf4\x39\xfc\xf1\xfd\xeb\x67\xff\x09\x7f\xfc\xd0\x7f\x77\xf8\xf4\xed\xb3\x97\xf8\xe3\xf0\xed\x7f\x60\x83\x1f\xfe\xf3\xe9\xb3\xf7\x47\xff\x75\xf4\xfe\xbf\xe9\xe7\xb3\xd7\xdf\xe3\x5f\xaf\xff\x0b\x6b\xbc\x7a\xfd\xfe\xe8\x05\x7e\x7d\xfd\xe6\xfd\xd1\xeb\x57\xef\xe0\xef\x37\x4f\xdf\x53\x67\x6f\x5e\xbf\xc3\x41\xdf\xbc\x7d\xfd\xe6\xc5\xd1\xab\xe7\xf6\x87\xa8\xf3\x81\x07\x7c\x43\x2b\x79\x7b\xf8\xe6\xf5\x5b\xfc\x53\x4c\xec\xdd\x87\xef\xde\x3d\x7b\x7b\xf4\x1d\xd6\x7d\xff\xf6\xe9\x33\xfc\xeb\xc3\x2b\xbb\x90\x0f\xaf\x5c\xa5\xd6\x89\x1f\x5e\xf7\xdf\x16\x4a\xb7\x2b\xf4\xb0\x04\xc7\xdb\xa3\xc7\x5f\xf6\xb6\xfd\x27\x7b\x7b\xf4\xf8\xab\xde\x76\xdd\xe3\xbb\x3d\xda\x7d\xd0\xdb\x5e\xe5\xc9\xf6\xe8\x8b\xbd\xde\x36\xbc\x76\xdb\xa3\x2f\xbe\x30\x44\xc7\xad\x22\xcc\xd5\x11\x1d\xac\x1d\x9c\xe9\x72\x62\xd0\x71\x5c\xbc\xe0\x7e\xe8\x5d\x81\x2f\x20\x2c\xa8\x7e\x7b\x6b\xe3\x22\x19\x6a\xa8\xdb\xb2\xdd\xb9\xf0\x41\x24\xc1\xa9\xb6\xfd\xd1\xab\x22\xda\x46\xe3\x2c\x2f\x9f\x65\x69\x99\x67\x90\xd0\xb1\xae\xf1\x53\xbf\x8e\x68\x3d\x4e\xb2\xb1\x08\xa0\xcb\x6c\x6e\xab\xcc\xd7\x06\xa1\x98\x0b\xf7\x5d\x92\x8d\x3b\xc7\x36\xbf\x15\xa9\x3a\x76\xbb\x27\x86\xa4\x68\xec\xc6\xf0\xa2\xad\x6b\x35\x89\x30\x64\x02\xdc\x79\x16\x6e\x5f\xce\x01\x4d\x01\x92\x29\x33\xa5\x2f\xa3\xc5\x32\xd1\x83\x49\xb6\x80\x17\xe6\x3c\xce\x92\xa8\xa4\xec\xd4\x56\x39\x70\xae\xd5\xb3\x77\x6f\xd4\x24\x4b\x67\xf1\xe9\x2a\x87\xc7\xbb\x00\x29\x6c\x91\xb9\xdc\x82\xf9\x2a\x4d\x29\x7b\x59\x64\xdf\x24\x60\xd0\xc8\x05\xbf\x50\xbf\xc0\x11\xfd\xd2\xa3\xd4\xa0\x06\xd6\x4d\x8b\x53\x5d\xfe\xf4\xf2\x6d\x07\xdc\xbe\x48\xd3\xb1\x5a\x68\xeb\xb9\x0f\xd1\xfe\x74\x5e\x46\x71\xaa\x66\x3a\x2a\x57\xb9\x36\xcf\x5b\x92\x5d\x0c\x80\x94\xbb\x9c\xe7\x2d\x89\x99\x7f\x7a\xf9\x16\xe3\x2a\x9a\x27\xe3\x19\xc4\x16\x28\x69\xe9\x10\x87\x1b\x9f\x00\xf3\xb3\xde\xb8\xde\xf4\x87\x75\xe8\x0c\x7f\xfa\xe1\xfb\x97\x65\xb9\x14\x99\x09\xb7\xb6\x4c\x73\xc4\x8a\xb5\x95\x0c\x96\xdf\x42\xa9\xce\x4f\xcf\xb3\x45\x14\xa7\x8c\xda\x63\x61\xb3\xab\x3a\x31\x4a\xfc\x7a\xe4\xfe\x62\x7a\x5d\xb0\xd6\x01\xe8\x2f\xec\x66\x92\x67\x45\xa1\xa6\xd0\x51\xb7\xa7\x56\x85\x76\x84\xa2\x25\xa7\x5c\x72\x6d\xa8\x20\xce\x16\x3b\x79\x95\x95\x1a\xfd\x76\x21\xd1\x90\xa1\xf0\x6c\x3e\x48\x88\x95\x17\xa5\x48\x66\x12\x80\x0c\x5a\x5b\x5b\x04\x8c\xb0\xde\x41\xb6\xd4\x69\x07\xd1\xb2\x5d\xb5\xbf\xb8\x27\x86\x30\x32\xf4\x00\x10\x72\xa3\xe1\x50\x4c\x02\x08\x64\x02\x4b\x80\x4a\xea\x96\xc2\xbc\x9a\x8f\xad\x2d\xab\x37\x85\x19\xbf\xd3\xf9\x79\x3c\xd1\xb0\x11\x86\x14\x40\xc1\x08\x98\x44\xff\xf4\xf2\x6d\xcb\x6f\x7e\x6d\xdf\x55\x73\x80\xd2\x60\x00\xac\xa1\xdf\xaf\x97\xfa\x1d\x41\x14\xd0\xf0\xf6\xd9\xc6\x4e\x2c\x10\xc2\xc9\xdf\xb9\x9c\xe7\x5d\x2f\xdc\x49\xcb\xee\x85\xd9\x0a\x46\x82\xa6\x57\x73\xe5\xd6\x4b\x0d\x04\x05\x8f\x1f\x54\x38\xe0\x2a\xc1\xb5\xdc\xf2\x46\x70\x56\xaf\x70\xff\x0a\xc3\xd5\x9d\x9a\x7b\x18\x15\x59\x0a\x36\x06\x51\x1e\xab\x2f\x06\x3b\x2a\xd7\x78\xa1\xbc\x37\x62\x20\x90\x04\x72\x26\x98\x55\xab\x0d\xee\x50\xb6\xf5\x2e\x58\xcd\x46\x39\x25\x9d\x3d\xd7\x6a\x16\x5f\x6a\x52\x6e\x8d\x57\xa7\x78\xa9\xcc\x07\xaf\xbf\x0d\x63\x81\x7e\xd7\xde\xa3\xb6\x6d\xff\x2e\x89\x41\x3e\x1c\xf6\x55\x8b\xa1\x45\x05\x19\x2c\xd9\x74\xd1\x6d\x51\x82\x78\xc4\xfd\x86\xfb\xc0\x83\xd4\x53\xca\x8a\x18\x99\xc6\x9c\x2f\x91\x04\xa3\xb6\x8e\x2a\xb3\x6c\xa0\xde\x9d\xc5\x4b\xc6\x38\xe8\x2c\xe0\x03\x45\xa7\xdb\x53\x45\x0c\x89\x24\xd1\x12\x3e\x49\x0a\x0b\x14\x2e\x38\x85\x1c\xc9\xb2\x8f\xf4\x28\x5d\x5d\xa9\x4e\xcd\x5a\x2b\x23\xb5\x45\x27\xed\x6e\x97\x91\x73\x21\x2c\xec\x4b\x5d\x94\x85\x5a\xa5\x80\x28\xa3\x71\xb2\x36\xd4\xfd\x85\xba\x88\xf2\x14\xec\x29\xe3\x54\x3d\x9b\xe7\xd9\x42\x0f\xd4\x3b\x98\x34\xce\x40\x24\x44\x46\x07\x3d\x83\x09\xa6\x06\x47\x83\xa7\xb4\x70\x16\x80\xdc\xfd\x12\xfa\xd8\xca\x1f\x73\xf3\x21\x82\x86\x48\x94\x34\xa4\xdb\x82\x45\x51\xf0\x63\x79\xc7\xdf\x00\xc3\xe5\xd8\x73\xaf\x5d\xf9\xa2\x20\x81\x44\xbb\xeb\xfa\xcb\x7e\x03\x39\xbf\x9e\xfa\x9b\x5b\xdf\xb9\xbf\xb9\xad\xad\x9a\x31\xb2\xdf\xfa\xd4\x61\xdf\xdb\xe9\x1b\xc1\x88\x94\x2a\xfa\x87\x78\x81\x17\xf7\x96\xb0\x54\x05\x93\x4a\x4f\x75\xb0\xc2\xcd\xd4\x13\xef\x3e\x70\x67\x61\x1f\x86\x07\x43\x39\xbb\x23\x22\xce\xc7\xb0\x1f\xb5\xa4\xc7\x7f\x7d\x07\xdf\xba\x02\x13\xba\x4a\x22\x25\x07\x23\x21\xba\xe0\x98\x8c\xc3\x97\x56\x1b\xd4\xe4\x70\xad\x1a\x0e\xd5\x4b\x9d\x2c\xd5\xe9\xa4\xf5\xbf\x89\x66\x35\xf4\xe5\xad\x42\x28\x0a\xfa\x92\xc2\x31\xf6\x70\x66\x3d\xb2\xe1\x42\x19\xd7\x24\x5a\x46\x98\x16\xc4\x17\x5c\xb9\x72\x12\x33\x6d\xd6\xc3\x6e\x10\x81\x05\xe2\x2f\x7b\xaf\x9a\xd4\x94\x54\xaf\xcc\x7c\xd4\x6c\xab\x97\x59\x08\xf1\xa6\xfa\x67\x30\x8e\x30\x55\x08\xa5\x59\xc8\x6a\x90\x2e\x1a\x8b\x65\x62\x7e\x3d\x31\xe0\x99\x4d\xb5\xd9\x47\x3d\xd3\xf9\x77\x10\xcb\x0a\x08\x94\x17\x48\x8d\x93\xd0\xcc\x6d\x99\xbb\xcd\x5e\x25\x06\xc2\x36\x7c\x6e\x5b\x4a\x20\x68\x5c\x8b\x2b\xfc\x0e\x9a\xae\x7f\x63\x97\x84\xce\x82\x5e\x2c\xa2\x6a\x6a\x27\x91\xd5\xdd\xbb\x4a\x6e\x80\xdf\xd5\x6d\x26\xc1\xf7\x78\x63\x47\xa5\xbe\x2c\x47\xe7\x63\xe8\xaf\xed\xd1\x4a\xb2\x86\xf9\xd2\xa2\x6c\x1a\xa1\x54\x61\x43\x3a\x0b\x90\x8e\x30\x49\x04\x17\x10\x15\xbb\xad\xad\xc2\x57\xfa\xe3\x75\x37\x35\xba\xad\xd6\x16\x38\xeb\x7e\x24\xc1\xa6\xf9\x87\x8b\xc6\xd9\xd4\x5c\x9b\xe3\x13\x2e\x70\xe2\x1d\x43\xf8\x98\xf5\x5b\x19\x8e\xa1\x0c\xa1\x52\xa1\xcb\x97\x50\xad\xd3\x7e\xba\x2a\xe7\x59\x1e\xff\x06\xb4\x6d\xbb\xa7\xda\xdf\x45\x45\x3c\x81\x60\x57\xc0\x1a\x21\x2f\xe4\xba\xa8\xba\x33\x74\xbb\xad\x2d\x61\x88\xdb\x91\x52\xa5\xee\x60\x96\xe5\x87\xd1\x64\x2e\x50\x41\x1a\x2d\x88\x2c\x0d\xe6\x62\x3e\xf4\x3c\xa1\xd4\xb1\x29\x32\x5c\xd8\x75\xd7\x8a\x24\xdd\xa9\x61\x09\x83\x37\x73\x64\x6e\xc9\x0b\x73\x63\x00\xc1\x92\x71\x72\x1f\x81\x1e\x1e\x85\x36\x51\xdf\xef\xe3\x85\xce\x56\x65\x1b\xdc\xec\xcc\xf6\xde\xbd\xab\xee\x48\xf0\x0b\x18\xcb\x2e\x13\xcd\xa4\x48\x36\x2c\x40\x36\x33\x74\x32\x0b\x06\xc7\x9a\x66\x99\xeb\xe9\xc0\x70\x03\x81\x53\xa2\x9e\x1a\x8a\x5f\x4c\x9b\xe8\xde\x2d\xb9\x36\xbb\x1a\x01\xc7\xc1\xa2\xb0\x3a\x5d\x1f\xb6\xac\xe4\xa9\xd9\x52\x0c\x7f\x3d\x8f\x4f\xe7\x6a\x99\xc7\x59\x6e\xb0\xec\x78\x55\x2a\x0c\x87\xe7\x67\x65\x32\x5c\x21\xf6\x60\x56\x16\x4d\x26\xab\x3c\x9a\xac\xd9\x78\xaa\x3d\xc9\xd2\x52\xa7\x65\xdf\xbc\x17\x6d\x85\x47\xa4\xa2\x5c\xa7\xed\xb2\x3a\x7b\x5a\x54\xf3\xf4\xa3\x24\xc9\x2e\xfa\x17\x79\x96\x9e\xf6\xbd\x9e\x1b\x97\xb1\xc8\x72\xad\xe2\x85\xb9\x53\x51\x5a\x1a\xfa\x11\x72\x06\x16\x86\x7b\x49\x4f\x9b\xe7\x58\x9d\x9c\x3c\xe0\xf0\xf9\xf7\xe6\x7c\xc7\x4d\x9a\xc5\xd8\x02\xaa\x50\xaa\xd7\xae\xf9\x44\x67\x33\x8b\x8a\xd2\xad\xe7\x43\xa1\x79\xdb\xe3\x99\x82\xf8\x49\x6e\x7d\x8b\x68\x0d\x32\xe3\xd5\xb2\x84\x5c\x2a\x8a\x9c\x41\xe5\x82\x68\x3d\x10\xbd\x05\x7c\x80\x96\x5a\x4f\x6f\x00\x1c\x33\x76\x25\xb8\xdd\x11\x85\xe4\x41\x1a\x04\x2c\xe7\x79\xfe\x86\x7d\xbc\x66\x5c\x82\x0b\x12\x0f\x50\xd3\xfb\xc3\x0d\xe0\x82\x99\x2b\x65\xf9\x45\xfa\x92\xa5\x22\x27\x9e\x9f\x96\x61\x8b\x91\x5b\x4a\xd9\xed\xf0\xbe\x5f\x0b\xb3\x2a\x0f\xbf\x72\x56\x45\x8b\x29\xbb\xad\x96\x57\x41\xf2\x35\x8c\x5c\x3c\x1c\x8c\x88\xc6\x11\x66\x15\x54\x0c\x69\x93\xb3\x0b\x9d\xbf\x8a\x16\x90\x3c\x3a\x5a\x68\x3f\xfa\xa2\xd3\x18\xd8\xe8\x1b\x69\x56\x2a\x9b\xb5\x14\x1d\x8c\xe3\xd2\x00\x28\xa8\x30\x1d\x4f\x01\x7a\x26\xf6\x52\x50\xd1\x38\x5b\x95\xaa\xd0\x18\xff\x6f\x05\x36\xbf\xd0\x39\xa1\xc0\x81\x7a\x0f\xa9\xff\xe7\x59\x6a\xde\x96\xa3\xf6\x02\x9d\x33\xd3\x32\xce\xb5\xe1\x57\x56\xb9\x56\xf3\x78\x4a\x37\xa0\xd0\x82\x79\x31\x37\xff\x34\xcb\x80\xe7\x4c\x4f\x61\x4a\xd8\x75\x59\x2e\xfb\x34\x83\x78\xb6\x56\xd3\x78\xaa\xe2\x12\xb4\x5d\x47\x48\x8b\x1b\xf2\x1b\x31\x29\xce\xe8\x25\x4d\x86\xf5\x2a\x76\x73\xa4\x76\x05\x5f\xc7\x56\xf0\x10\x1d\xdb\xba\x27\x10\xca\x7b\x6b\xcb\xec\xe6\x08\xf6\xb4\xd7\xda\xda\x82\x63\x18\xb1\xc8\x08\x9e\xd4\xa6\xd3\x3c\x6d\x3c\x4d\x7b\x8c\x73\xfe\x8e\x51\xcb\xe5\x3b\xe2\x1f\xe0\x09\x69\x8d\xa0\x82\x9b\x3d\x75\x30\xa0\xe9\x70\x4c\x1b\x03\xc9\x1b\x26\x86\xea\xf8\x9b\xe6\xe6\x81\xd8\x54\x43\x5c\x05\x7f\xab\xea\xa6\xb9\x61\x58\x7b\x65\x2a\xa9\x4e\x2a\xe3\xe1\x6a\x71\x34\x1b\x60\x5e\x1c\x1a\x34\x20\xf2\xc2\xd1\x1a\x2d\xb9\xa9\xc5\x6b\xc8\x9b\xe2\xcd\x18\xbf\x13\x0d\x82\xf2\x21\x87\xea\x51\x19\x05\x52\x8b\xff\x38\x7c\x0f\xe1\x39\x2b\x1f\x40\xe9\x80\x58\xa0\x99\xee\x23\x21\x16\x0d\xe3\x51\xe5\xec\x8a\x43\x59\x7a\x1c\x4d\xd4\x45\x31\x58\x1d\x11\x18\x88\x72\xfd\xde\x85\xa8\x11\xc4\xc2\xae\xc7\xc1\x22\x5a\x76\xbc\x80\x73\x6e\x6a\x96\xb7\xf3\xe6\x46\x55\x4c\x85\xeb\x6e\x8f\x6a\x9a\x93\x1b\x31\xe0\x99\x3d\x3d\xf6\x1f\xad\x13\xd4\xc4\x75\x11\x04\x31\xc2\x1f\xf6\xe0\x16\x04\x3d\x21\x43\x0c\x91\x17\x28\x18\xa8\x58\x46\xe3\xb6\x38\xfa\xad\x4b\xa2\x40\xd4\xf9\x4d\x72\x1d\x95\x5a\xcd\x92\xa8\x2c\x75\xaa\xa7\x60\xfd\x63\x9e\x7e\xef\xa4\xe9\xc7\xf7\x31\x90\xb9\x86\xe8\x94\x94\x9f\x5b\x53\x1d\xdd\x77\xa6\xd7\xaf\x2c\xe9\x07\x9e\xce\x88\x5c\xc5\x4e\x50\x95\x13\xc8\xac\x43\xb5\x88\x4f\xae\xad\x46\xb7\x14\x40\x07\x36\x7e\x10\x17\xf0\x2f\x71\xdd\x74\x3a\xf0\xa3\x66\x46\xe7\x7c\x7a\x62\x59\x90\xcc\xad\x73\x4c\x4f\xc4\x49\xb7\x76\xeb\x1b\xeb\x9b\x81\x4e\x78\x63\xbb\xde\xad\x73\xc4\x01\x52\xa1\x6e\x1f\x8a\xf8\x14\x92\x12\xb3\x7c\xd6\x94\x55\x1f\xd2\xea\x05\x09\x28\x53\x5e\x6b\x8e\xbe\x13\xac\x2b\x01\xb5\x86\x5f\x15\x8e\x7e\xcb\x0e\xeb\xaa\x0f\xb0\x0c\xbe\xba\xf7\xfc\x69\x45\xff\xe2\x5a\xb4\x4c\x5d\x33\xb1\x4d\xf4\x34\xdc\x7a\xff\x3b\x46\x24\xe2\xfd\xaf\x21\x1e\xe8\x0e\x16\x9a\x5b\x74\x42\xaa\x81\xdb\xa1\x09\x52\x30\x7c\x17\x2b\xb8\xed\xaf\x5b\x09\x55\xda\xb0\x56\xdc\x64\xdc\xaf\xad\xeb\x5e\xdd\x4a\x10\x42\xe0\xc8\x5b\x5b\x5b\x52\x47\xd6\x71\x88\x74\xb0\xca\x13\x42\x00\x88\xfd\x46\x02\xcb\x12\x42\xec\x09\xc8\x1a\xc9\x9b\xd6\xe3\x7b\x3d\x42\x4c\x7b\x75\xe5\xb4\x29\xf0\xcd\x80\xd6\xc8\xd0\xbe\x79\xd1\x86\x82\x49\xae\xa7\x1a\x5c\x20\x8a\x11\xce\xf9\x22\x2e\xe7\xcf\x5c\xa9\x7a\xa2\xda\xe4\x45\x01\x7a\x84\x22\x5a\xe8\x7e\x96\xc7\xa7\x71\x8a\x3d\x20\x20\x8c\x94\x05\x88\xeb\xee\xa0\x9c\xeb\x54\x9c\x02\x4b\x2d\xe8\x34\xc4\x26\xbe\x95\x42\x18\xfc\xd3\xd5\x98\x64\x69\xaa\x27\xb8\xa7\xd7\x92\x16\x44\xf9\x3b\xf5\x46\xfb\x08\xe9\xeb\x18\x00\x42\x28\xe9\x32\xec\xdd\xa9\x79\xd7\x3c\xe0\x60\x1b\x3d\x1a\xa2\x85\x57\x5a\xdc\x68\xa7\x9f\xc0\xae\x6e\xa3\x76\xaa\xea\x6c\xaa\x47\xaa\x42\x10\x80\x68\xeb\x4e\x41\x63\x73\xfd\x6c\x19\x2a\x1e\x44\x64\x2e\xad\x4f\x15\xe0\x1b\xb2\xa6\x58\x1c\x65\x5f\x73\x04\x46\xd0\xcb\xa5\x6d\x20\x2f\x95\xa7\x29\xc9\x52\xb3\x17\x86\x23\xf5\x5c\x66\xed\x55\x76\x55\xe1\x22\x5f\xce\x71\x90\x1a\x95\x8c\x43\x6e\x03\x08\x63\x0d\x26\x37\xc7\x3b\x27\x2d\xee\x2c\x80\xbc\x4a\x7f\x21\x64\x1e\xa8\x3b\x77\xea\x40\x96\x3b\x0c\xb1\x29\xc8\x62\x0c\x96\x69\x87\x9c\x5c\x65\xa8\xb0\x42\x07\x1a\x0f\x97\x49\x14\xa7\xfb\xe0\x37\x56\xe8\xf2\xe0\xb2\xbf\x2a\x74\xde\x67\x35\x4b\xb7\xd5\xda\x8c\xe1\x9c\x8a\x6d\x50\x12\x72\x3b\xa8\x43\x14\x76\x16\xa9\xab\xb6\xf1\x88\xeb\x50\x9a\x45\x34\xf2\x09\xaa\xbe\x6c\x44\xd6\xba\x99\x15\x9a\xe9\x47\x12\xb6\x60\x8d\xe3\x9d\x93\x1e\xa1\x9a\xe3\xdd\x13\xba\x18\x96\x23\x13\xc2\x54\x7a\x82\x70\xfe\x20\xa6\x84\x54\xdb\x93\x39\xa8\xce\x6a\x16\xc2\x01\xbe\x11\x64\x58\xac\xc9\xab\x84\x50\xd9\x24\x00\x1d\x7c\xff\xfa\xe9\xf3\xa3\x57\xff\x31\xaa\x7e\x79\xfe\xfa\xd5\xe1\x48\xa0\xfa\x8f\x59\xfa\xd3\xcb\xb7\x6f\xf2\xec\x34\xd7\x45\x41\x68\x79\x0b\x42\x63\xbb\xcd\xd9\xaa\xda\x8b\x09\x31\x42\xaa\x5e\xc4\xb9\x9e\x65\x97\xac\x86\x92\x30\x6d\x58\xa6\xd7\xaf\xbe\xff\x6f\xc5\xa1\xf8\xa1\x2f\x73\xce\xe9\x92\x06\xc5\x5c\x78\x50\x54\xd9\x06\xf0\x5a\xf1\x17\xac\x0e\xd4\x83\x06\xc0\x6d\xd4\x9f\x08\xac\x62\x87\x6d\x86\x95\xba\x3d\xb1\x50\x82\x9d\xa0\xe5\x78\x4d\x0f\x0d\x3c\x81\xc0\x23\x75\x28\x47\x08\x12\x7e\x7a\xf9\x56\x91\x31\x7b\x97\xc7\xf4\xf0\x62\xa1\xd3\x69\x07\x08\xcf\xff\x11\xa4\x87\xfc\xe3\xf0\xde\xbd\x96\xba\xc7\x21\x77\xe3\x19\x9c\x09\x5a\xce\x60\xc0\x61\x72\x32\x89\xd2\x29\xc4\x08\xfd\x4d\xe7\x59\x4f\xc5\xe9\x34\x9e\x44\xc0\x86\xa7\x19\xae\x6a\x60\xba\x39\x3c\x07\x5f\x00\xf0\x6c\x82\x00\x98\x4b\x3d\x51\x45\xb4\x2e\x0c\x7b\xef\x64\x7e\xce\xda\x20\x06\xe4\xca\x00\xf0\xa0\x67\x3a\x89\x26\x66\x99\x00\x81\x25\xda\xf9\x43\x4e\x00\x7d\x39\xd1\xe4\x83\x92\xaa\xa3\xc3\x2f\x5b\xea\xde\x50\x44\x59\x81\x29\x43\xd8\x54\xb8\x48\xb0\x23\xbc\xbd\xce\x52\x57\x1d\x88\x05\x3a\x4e\xb6\x43\x5f\x0d\xa5\x05\xea\xa4\xbb\x77\x95\x28\xda\xe9\x06\x6a\x72\xd7\x92\x65\x77\x37\xf0\x9e\x02\xec\x6e\xcb\x80\xde\x11\x4b\xea\xd8\xa7\xb6\x6b\x48\x9a\x66\xde\xb4\x25\x1f\x79\x4b\x75\xb4\xaa\x04\x45\x2b\xc0\x5b\xd5\xbb\xb1\x69\x41\xd4\xcf\x1f\xe7\xa5\xc3\x69\x10\x25\x11\xe8\x80\xdc\xf2\x99\x4a\xf0\x68\xa7\x9e\x78\x59\xbd\x0a\x4c\xfa\x04\x4b\x95\xde\x1d\x56\x33\x67\xef\x59\xe3\x1d\xba\xb6\xbb\xc6\x6f\x8e\xb5\xd1\x0c\xf7\x7b\xd3\xde\x55\x63\xf9\x03\x66\x73\x4e\xfd\x9e\x01\xa7\xbf\x99\x82\xc3\x06\x5e\x0a\x9d\xd1\x5a\x5b\x93\xf1\xe6\x03\x03\xd2\x3c\x34\xe1\xac\xcd\xf4\x7f\xc3\x79\x6e\x05\x47\x69\x45\xa8\xb7\x24\x42\x1d\x34\x54\x81\xd3\x81\x62\xb5\x7b\xd7\x8e\x88\x14\xfb\xc3\xb1\x1d\x56\x7e\xb1\x99\x8b\xb9\x05\x07\xb3\x61\x27\xd1\x17\xc0\xed\x12\x66\x03\xbe\xf1\xe8\xa4\x99\x3e\x88\xac\x43\xd7\x2b\x03\x79\x93\xb1\x3a\x80\xaf\xad\xad\x2d\xac\x24\x32\xdd\xc0\x83\x11\xea\xbd\xbc\x79\x39\x2d\x58\x4f\xd5\x4c\x6b\xd3\xaa\x66\xc9\xaa\x98\xbf\xb4\xda\xb0\xc0\x3a\x77\x83\xc4\xf8\x7d\x3d\x79\xb6\xb1\xcd\xab\xec\xb9\x4e\xa2\x0a\xb0\x6d\x6c\x83\xb6\xc0\xff\xa9\xf5\xf2\x69\x12\x9f\x57\xa8\x28\xb2\x26\x8c\xce\x74\xea\x7c\x13\x46\xc3\xe1\xc5\xc5\xc5\xe0\xe2\xc1\x20\xcb\x4f\x87\xef\xdf\x0e\x7d\xc6\x64\xf8\xb7\x72\xae\xfb\x85\x2e\x89\x76\x44\xd2\xee\xef\x7b\x5f\xfe\x7d\xef\xab\x3e\xf2\x24\xe8\xb0\x21\xa5\xba\x64\x34\x6c\x9e\xa8\x65\xd9\x27\x32\x18\xec\x66\xa9\x88\xb7\xdc\x96\x15\x45\x9f\x44\x00\x7d\x1a\xa8\x4f\xf4\xe8\xa6\x2a\x38\x3e\xd4\x20\x5c\x0b\x2a\x47\xfc\x09\x02\x30\x8c\x87\x42\x45\xd9\x59\xac\xc5\x9f\x7b\xf0\xf7\x34\x2a\xb1\x70\x9a\xe2\x14\x31\x88\x37\xfc\x39\xcf\x0a\xfc\xe3\x4c\xeb\x65\x3f\x32\x7b\x0a\x3f\x1d\x5f\xdb\x06\xed\x85\xce\xe1\x6f\xea\xa8\xcc\xa3\x38\xe1\x22\xf0\xef\xd1\xb9\xbf\xe2\xd5\xf2\x34\x8f\xa6\x58\xfb\x3c\x8e\xda\xad\x93\xc0\x1c\xc3\xda\x05\x7c\x24\x72\xa6\xdd\xfd\xf7\x99\x68\xd8\xd9\x70\x78\x0e\xce\xd6\xc6\xf6\xc6\x4e\x84\xb4\x3d\x7a\xfc\x45\x6f\x7b\x10\x98\x1a\xf3\x22\xb6\x47\x0f\x77\x7a\x22\xc6\xc7\x0d\x0e\x58\xe8\x31\xe5\x5b\x46\x6c\x8f\xbe\x80\x68\x56\xb7\xca\x83\xf9\x6f\xb0\x16\xb9\x8d\x21\x48\x60\xab\xc1\x16\x41\xc2\x54\x03\xd5\x1a\x1f\x5e\xbd\x3b\x7c\xf5\x7e\xa4\x76\x7a\xad\xad\xd7\x6f\x0e\x5f\x1d\x3e\x1f\xa9\xdd\x5e\x6b\xeb\xe5\xe1\xd3\xe7\x87\x6f\xdf\x7d\x7c\x7b\xf8\xec\xf0\xe8\xbf\x4c\xe9\x5e\xaf\xb5\xc5\x3c\x8f\x21\x0f\xb7\x80\xcd\x51\x0f\xd9\x9a\xa0\x6a\x47\xc2\x83\x56\xbf\xb8\x3d\x03\x42\x22\xb7\xd4\x03\xd2\x0d\xe2\x9d\xda\x64\x73\xc0\x66\xdb\x75\x36\x07\xa4\x03\x04\xc7\x0f\x2c\xf2\x2d\x0c\xa0\x28\x8f\x2e\x04\x32\x61\x5b\x04\xba\x5a\x61\xcd\xf7\xae\xf8\xf8\x04\xa5\xcf\x2f\xa2\x33\x4d\x0a\x5c\xe1\x3c\x8d\x4a\x34\x70\xd5\xcf\x0c\xab\x86\x2e\xd6\xb3\x38\xd7\x85\x50\x2b\xa2\x5f\x63\xc8\x37\x90\x21\x36\xf3\x15\xa0\xa0\xb3\x3c\x61\x99\xb1\x5e\x0e\x07\x65\x37\x3a\x32\xdc\x40\x74\x3b\x89\x28\x2a\xbd\x21\xce\x67\x71\x6a\x28\x9c\x24\xcb\x96\xad\xdb\x70\x2d\x82\xa4\xc2\x15\x59\xa1\x13\x4b\x85\xeb\xe5\xc1\x37\x48\xd1\xb8\x06\x3b\xdc\x11\x71\xb1\xca\x13\x6b\x4e\x61\x5d\x43\x64\x05\xcb\x1b\x88\x3a\x35\x66\x4a\xf8\xe1\xbd\xbe\x2c\x5b\x5b\x5b\x40\xd0\xd2\x07\x56\x46\x36\x49\x1a\x7a\xea\x4c\xaf\xbb\x6e\xe5\xac\xd0\x3a\xd3\xeb\x40\x9f\x65\x25\xf9\xb6\xae\x83\x1d\xa4\xff\xce\xf4\x9a\x65\x12\x4e\x20\x11\xc8\xbe\x7d\x77\x02\x21\xfa\xbe\x70\x21\x33\x0c\xcd\xed\xfb\x14\x74\x90\xa1\x04\x62\x75\x14\xd2\xaa\x56\xa8\x6c\x73\xbb\x5d\xa8\x37\x79\xb6\x88\x0b\xed\x0b\x3d\xb3\xe4\x5c\x9b\x9b\xf6\x49\x4f\x4a\xdb\xa8\x96\x25\xb0\x1f\xb7\xb0\x36\x0b\x2c\x9c\x5e\x0a\x9b\xc0\xb2\x85\xb5\x0d\xce\xa7\xeb\xb5\x87\x61\xc3\x0e\xec\x77\x4b\x6c\xae\x16\xd6\xac\x84\xda\x70\x0b\xfc\xf7\x9a\x45\xd9\x28\x6c\x31\xa0\x39\xaa\x91\x2c\xd4\x92\xbe\x81\xe4\x75\x93\xec\x95\x66\x84\x0b\x5b\x25\x89\x37\x2a\x50\xa4\xa3\x6a\xbe\xf3\xdb\xf5\x59\x2f\x09\xc0\xf5\x21\xac\x38\x09\x84\x03\x60\x64\x2f\xe2\xa5\x7e\x9f\x75\x6c\x60\x8c\x01\x1a\xc9\xd7\x4f\xe4\xcf\xd9\x81\xa6\xd9\x86\x62\x16\xdf\x60\x5d\x0d\x87\x0a\x27\xcb\x41\x4b\x62\xf0\x23\xa0\x17\x7f\x40\x62\xdd\x59\x9c\x4e\x55\xa4\xc6\xba\x2c\x75\x0e\x39\x37\xca\x8c\x5d\x37\xc0\xb4\x99\xb0\x3c\x0b\xc5\x66\x94\x6d\x1f\x64\x62\x10\xe2\x20\x70\xcb\xc9\x72\x1e\x16\xcd\x7a\x9c\x50\x83\x04\x0e\x39\xab\xb8\xfd\x8d\x3d\xd5\xe5\x5b\x14\x2b\x9a\x75\xd9\xfd\x34\xb5\x2d\x4c\x61\x53\x78\x37\x3b\x75\xba\x84\x55\x62\x6f\x53\xa3\x58\x4a\x6c\xd8\x16\xe6\xd1\x34\xcd\x06\xd3\x2c\xd5\x9f\x77\x6e\x75\xd0\x29\x3b\xbf\x6e\x05\xb5\xdc\xe5\xa4\x31\x49\xc1\x48\xc7\x18\x4d\x49\xf0\xb6\x11\xa6\x6e\x33\xb5\x0d\x10\x75\x93\x20\xec\xba\xe5\xa6\x22\x10\x84\xd4\x68\x5c\xce\x73\x5b\xb2\xcc\xcc\x0b\xbc\x13\xbc\x29\x52\x1c\xfa\xe1\xed\xf7\xb5\xcf\x8a\x27\x6d\xaa\x7d\x51\x5c\x0d\x7a\x4c\x84\xf2\x98\x3e\x9f\xea\xf2\x69\x92\xf0\x23\x47\x2f\x40\xa7\x4b\x5a\x84\xe1\xcf\xf9\x93\x9f\xd3\x61\xd7\x49\xba\x6f\x92\x72\x9b\x11\x20\x8d\x0e\x10\x64\x64\xc6\x01\x05\x9d\xe1\x3f\x3a\xc7\xff\x18\x9d\xdc\xef\x8e\x7e\x2e\xee\x75\x06\xf7\xba\x43\xab\x3a\xa2\x16\x7c\x42\x1c\x0c\xf4\x80\xbb\x3a\xde\x3d\x09\x0d\x7f\xa8\x25\x54\x03\xbf\x74\x5d\xf6\x89\x5b\xf1\xb0\x58\xf8\x10\x9e\x84\x69\x06\x7f\x97\x88\xc2\xaf\x08\x34\x94\x40\xdb\x95\x2a\x08\x96\x3c\xc9\xbd\x13\x42\x2b\xca\x97\x17\x78\x9d\x56\xa2\x35\x36\x0c\x7e\xff\x40\xb5\x7b\x60\x00\xea\xba\x6f\x55\x1f\x9d\xba\x59\x87\x0d\xdc\x2d\x0a\x1f\x79\xb7\xbd\x3d\x15\xac\xe2\x3a\xd0\x42\x10\x43\xaa\x0e\x54\x3b\x50\xcd\x10\x5d\xb0\xc9\x9a\x4f\x02\x87\xf3\x11\x08\xa6\x74\xdc\x36\xdf\xc8\xfc\xc2\x42\x86\xdf\x03\x2a\xd6\x71\x2a\x3f\x44\xf8\xc2\x72\x15\x06\xb3\xfd\x9f\x8b\x7b\xac\x45\xea\x1c\xff\x63\xff\xa4\xdb\xd9\xbf\xfa\x3f\x04\x6d\x48\xc2\x88\x0e\xfc\x23\x10\xcb\x94\x95\xea\xe1\xef\x9a\xf7\x49\xa2\x0b\x6a\x26\x94\x9f\x72\xeb\x30\x59\xb3\x02\x6f\x95\xa2\x54\xa7\x2b\x5d\x14\x42\x64\x6e\x4d\xed\x02\x16\xc3\x1a\xdb\x31\x8b\xd0\x6d\xb5\x82\x2a\x52\x0e\x08\x18\xff\x16\x02\x54\x32\xd5\x37\xf4\x89\xd5\x21\x0a\xea\xa5\xc5\xd8\xdd\x54\x90\x84\xb1\x4f\xe1\x90\x52\x4a\x10\x47\xb0\x96\x0d\xf3\xfb\x6c\xa1\x75\x8d\x62\xd8\x4d\xdf\x57\x8e\xb1\xc6\xcb\xb1\x4d\x24\x01\x83\xb4\xb0\x9e\x51\xf9\x48\x91\x03\xda\xd1\xe1\x57\x7c\x8a\x81\xde\xc8\xdc\x56\xa9\x06\xc3\x63\xb5\xaa\x2e\x47\xe2\xb0\x1d\xe2\x2c\x8a\x93\x82\xd5\x08\x92\xf6\xf1\x15\xd9\xe4\xad\xd2\x91\x78\xfe\x3b\x32\x0c\xc2\x2f\xdd\x2a\x3d\xd2\x72\xef\x2d\x76\xc9\x3a\x05\x4f\x47\x53\xf3\x52\xa2\x34\x34\x98\x3b\x74\x07\x4c\x5f\x92\x14\x36\xa8\x3d\xce\x7c\xcb\xdb\xb0\xf6\xc8\xae\x55\xf1\x3a\xc1\x3e\xd1\x2c\x16\x29\x18\x5f\xd5\x86\xbd\x7c\x35\x50\xef\xf0\x30\x80\xc9\x8a\xd2\xa9\x4b\xb0\xe2\xd5\x7f\x18\x6e\x94\xa7\xe0\xc6\x97\xab\xa2\x24\xd9\xf2\x19\xe3\xd0\x5d\xa0\xb2\x52\xb9\x71\x2e\x61\x97\x7d\x83\x25\x7e\x49\xf5\xc5\x73\x94\x91\x3a\x96\x6c\x35\x2e\xca\xbc\xe3\xaa\x07\x14\x92\xbd\xe2\x07\x55\xfc\x68\x31\x8c\x17\x7a\x5b\x9c\x10\x8d\xc7\x09\xa2\xb0\xb2\x8d\x8a\x8d\xe9\x6b\x55\xac\xbe\x56\x7e\xc5\x7d\x15\xdf\xbf\xcf\x64\x2e\xf6\x7b\x1c\x9f\x60\xd7\x50\x4d\x64\x7e\x89\xbb\x90\x84\x6c\x36\x6b\x85\x94\x97\xb0\x8e\xab\x7b\x5a\x18\x9a\x9e\x83\xd4\xb7\x06\xc5\x89\xd7\x85\x68\x99\x60\x97\xed\x09\xf0\x79\x50\x16\x77\xa1\x6b\x1d\xdd\xf2\xf6\x41\xd6\x70\x09\x1c\x01\x48\x37\x80\x50\xab\xe9\x6a\x98\x3f\x3f\xc4\x69\xf9\x25\x5e\x39\x77\x53\xba\xd5\xf9\x36\xe9\x89\x01\x89\x94\xd1\x99\x56\x17\xf3\x0c\x28\xf4\x4d\xd3\xb8\x61\x91\x24\x8f\x82\x75\x36\xac\xf1\x8f\x2f\xc4\xfa\xfa\x8c\xfe\x94\xc9\x06\xf3\xf3\xf8\x13\x81\xf1\x7e\x78\x87\xdc\x8d\xe0\x50\x98\x19\xb9\x41\xbf\x8e\x37\x97\xd8\x16\xa0\xfa\xc7\xeb\x52\x7f\xdf\x78\x85\x6f\xb9\x45\xb2\x43\xcc\x1c\xe4\x7a\xa2\x8d\x0b\xe1\xba\x7e\x0e\x01\x2d\x60\x17\x95\x64\x75\xaf\x70\x3d\xdb\xc3\xc8\xd8\x36\x66\x63\x81\x27\x4f\x9e\x00\xce\x7d\xfd\xfc\xf5\x88\xf9\x48\xc9\xc4\x3d\x2d\xa4\xa9\xab\x07\x33\x74\x24\xd7\x1c\x57\x47\x2b\x7b\xf4\x98\x24\x1d\x23\xdb\x15\x90\x82\xa7\xd0\xcb\x28\x8f\x4a\x9d\xac\x59\x71\x6e\xd7\xd0\xe9\x06\x4a\x32\xcf\xb0\x22\xbc\xa2\x77\xef\x0a\x95\x29\x5a\x17\x0b\x37\x58\x47\x44\xc8\xf5\x03\xbd\xf0\x7f\x91\x2c\xff\x0f\xc8\xee\xaf\x4f\x7a\x5f\xdc\x2a\xf3\x8a\x60\xc0\x0a\x5d\x1e\x2d\x16\x7a\x1a\x47\xa5\xee\x01\x5b\x6b\x7f\x92\xb4\xde\xca\x5f\x85\x8c\x9d\xe6\x38\x24\xb3\x33\x88\x03\x6b\x45\xa9\x18\x71\x37\x5a\x2e\x13\xc3\x85\xb1\x1b\xad\x54\xfb\x9a\x4f\x58\xab\x20\xc7\x77\x34\xfd\x0d\xbc\xd9\x29\x74\x2f\xcf\xe7\x68\x8a\x62\xe8\x7d\x3b\xad\x23\xf7\x09\xb3\x81\x42\xbc\xe3\xd7\x3f\xa8\xa7\x6f\x8e\x8a\x1e\x86\xc3\xa0\xdc\x80\xa9\x21\x96\xad\x33\x70\xad\x8a\xb0\xe3\x65\x41\x80\x80\xeb\xc4\xe1\xc3\x84\x59\xb2\xce\x2d\x7b\x74\xcc\x3d\x15\x51\x30\xf6\xa2\x8b\xf1\xf5\x58\x32\xd0\x85\x20\x78\x62\xcc\xa3\xb4\xd4\xf9\x39\x58\xec\x7e\xee\xa0\xdc\x74\xc3\xa8\x5c\xc5\x1f\x56\x4e\x48\x1d\xf8\xc5\x75\xf3\x21\xcb\xb6\xae\xfa\x5d\xd1\x9f\x03\x8a\xf2\xb9\xaf\xae\xf7\x85\x4f\x2b\xcf\x33\x9e\xd2\xf8\x2f\x52\x5c\x0b\xfa\x6d\xc4\xe6\x48\xe2\xa9\xcd\x54\xf5\x91\xea\x18\xee\x08\xff\xda\x6f\x5d\xb7\xa8\x13\x71\xf2\xab\x34\xd7\x86\x7a\xaf\x7e\xc1\x72\xb9\x71\xd7\xfb\x35\x1d\xc0\x6c\xab\x3b\xec\x4d\x02\xb7\x95\x77\x92\x27\xdc\xb5\x69\xd5\x9f\x67\x9a\x02\xca\x96\x51\x8e\x1a\x06\xb3\x19\x14\x0c\xa0\xd0\x65\xa1\x56\x4b\x28\x5e\xe8\xc5\x58\xe7\x85\x75\x0b\xe4\xfd\xd5\x69\x9e\x25\xde\xc6\xc6\xa5\x5e\xf4\xd4\xa2\xd0\x13\x8a\x0c\xec\x09\x91\xcc\x57\x33\x87\x44\x53\xc9\x11\x46\xc3\xac\x94\x1b\xa6\xd5\xf4\x81\x73\xe5\xe1\x56\x69\xfd\x80\x7f\x70\xa4\xfe\xae\x3f\xcc\x47\x38\x9d\xa7\x18\xe9\xc6\x29\xb5\x22\x2e\xf8\xe7\xc6\xa6\x30\xb6\xb0\x2c\x03\x34\x61\x25\x4e\xd7\x85\x15\xbc\x04\xd8\xd5\xfe\x80\xcf\xab\x5a\x9c\x67\x29\x17\xf9\xc1\x94\xb1\x07\xfb\xb5\x6b\xc3\x25\x07\x1f\x6c\x98\x62\x3e\x42\x8c\xcf\x49\xf0\xf2\x7e\x1e\x95\x6d\x84\x98\x79\x76\x01\x61\xaf\x07\x9f\x0a\x05\x29\xb6\xe0\x8e\xaa\xb8\x04\x4d\x18\x84\x66\xbd\x5c\x66\x85\x9e\xaa\x68\x19\xab\xb8\xb0\x19\x99\x07\x1e\xa6\x60\xcc\xe6\xc2\x89\xf8\xa5\xe6\xcd\xe1\xc5\xe1\xcb\x24\xbe\x3a\xc9\x7c\x67\x96\xba\x30\xd4\x70\x25\x03\xbc\x79\xff\x3e\xe7\x35\x8d\xf2\x53\xb3\xfb\x16\xad\x30\xa3\xf3\xb5\xda\x53\x4f\x28\xf2\xc5\x08\x11\x36\x5e\x1f\x5b\xb3\x07\x99\x08\xcd\x21\x09\x54\x7d\x1c\x4f\x4f\x64\xb8\xdf\xaa\xa2\x2d\x4b\x5f\x71\x99\x8c\x20\x1c\x76\xe2\xce\x6b\x38\x54\x33\xba\xba\x10\xd9\x7b\x16\x15\xa5\xce\x55\x91\xa9\x0b\x0d\x71\x96\x17\xf1\x6f\x36\x3a\x87\xc1\xfc\x8b\x2c\x55\xab\x42\xf7\x21\x73\xb6\xed\xe3\xdb\x42\x6b\xb6\xc4\xf8\x54\x2c\x75\x3e\x1b\x4c\xb2\xc5\xd0\xf4\xdb\x07\xa4\xdb\x2f\xf4\xe9\x4a\xc0\x88\xd9\x19\x19\x49\x7b\x96\xe2\x13\x06\x24\x08\x20\xe2\xc2\xc5\xd3\xf6\x93\x9e\x28\x3b\x63\x20\x57\xfc\xa8\xdb\x30\x9b\x37\xa4\xc5\x8c\x39\x73\x4e\xa2\xa3\xb3\x38\x3d\xa5\x1a\x3e\xbe\xe6\xad\xe9\xc4\x53\x19\x36\x1b\x77\x9f\xde\x10\x83\x73\xe5\x9d\xf5\x5b\x3a\x78\x0a\xcb\x43\x88\x0a\xbe\x0b\x98\x8a\x29\x53\x0c\x39\xc0\x85\x07\x06\xc3\xd7\x52\x64\xdb\x06\x89\xe6\xc5\x76\xd7\x03\xf1\x9a\xcf\x01\x21\x02\xa4\x52\x95\xe6\x40\x12\x89\x1a\x8d\xbe\xd8\x31\xf4\xcf\xad\x52\xc1\x79\x89\xaa\x2a\xd9\x97\x6c\xce\xaa\x0d\x31\x00\x28\x67\x9e\xf0\x22\x27\xe6\x3c\x2e\xd4\x38\x9a\x9c\xe9\xa9\x1a\xaf\x55\x24\xb8\x86\x9e\x8a\x18\x60\xcf\x75\x0e\x49\x31\x40\x0e\x82\xa1\xab\x0c\x98\x8d\x57\x33\x48\xa8\x1e\xa5\x13\x73\x3e\xae\x69\xe8\xb0\x6e\x87\x02\xfd\x8e\x2a\x56\x28\xb9\xe8\xb9\x74\xd4\x1a\xc4\xc4\x79\x02\xf1\x4e\x05\x91\x4f\xe2\xd6\xf1\x6a\x06\x3c\x08\x26\x31\xc2\x18\xd6\x9c\xf2\x4f\xf0\x47\xa6\x1c\x8a\xd0\x13\xcd\x7d\xb1\xfa\x20\x9b\x72\x70\xcc\xdd\x0b\xf9\x35\xc1\x99\xe8\x81\xa8\xbd\x1a\x1b\x33\xb3\x3a\x17\x94\x4b\xa4\xd5\x3d\xd5\x25\x06\x6c\x85\xe4\xbf\xd9\x72\x5d\x3b\x30\x31\x61\xfe\xba\x7a\x2a\x58\xe7\xfd\x60\x81\xc2\x7d\x4e\xa4\x04\x8b\x0b\xe7\xfb\xd7\x15\x96\x08\x71\x61\xb1\x75\x92\x5d\xd8\x43\xc4\xc0\xda\x7c\x92\x68\x40\x1e\xa5\x6b\x65\x37\x7c\x38\x74\xef\x40\x44\x0a\xa5\x73\x4c\x46\x20\x3d\x37\xba\xa4\x62\x81\xa3\x84\xb4\x5a\xc8\x02\x0b\xbe\x53\x24\x02\xa7\xca\x89\x4e\xbd\x5c\xd4\xad\x7a\xd9\x4f\xa2\x53\x14\xf8\xe0\x5e\xdb\x21\x50\xe4\x33\x5e\xcd\x8e\xe3\x13\xab\x7d\x82\xad\xb5\x55\xec\xc9\x6e\x72\x46\xaf\xc9\x46\xf4\x1d\xc7\x55\x21\x06\x2d\xcc\x35\xf4\xc5\xad\x72\xf1\xfd\x95\x6b\xe8\xaf\x5c\x43\x7f\xe5\x1a\xfa\x2b\xd7\xd0\xff\x4c\xae\xa1\xf6\xaa\x80\x58\x82\xf1\xa4\x6c\x53\x82\xa1\xe5\x2a\x5d\x4f\xd8\x12\x8b\x85\x1f\x54\xd6\xee\xa2\x24\x62\x55\xc6\x89\x6f\xc8\x68\x4a\x20\x31\x0e\xd3\x60\x10\xe2\x1c\xc3\x9d\xbf\x31\x7f\x3a\xf6\xdc\xa9\xd0\x56\x79\xf2\x16\x7f\x54\xbe\xa2\x87\xb6\x57\x07\x8b\x5c\xcd\x59\x96\x2f\x22\xaa\xf2\x02\xfe\x16\xc3\x7f\x00\xbb\x80\x0f\x79\x22\xf9\xf7\x0f\x79\x22\x59\x63\x11\x29\xdc\x90\xaa\x96\x6f\x2f\x92\xa8\x40\x85\xbc\x57\x1c\xad\xca\x79\x58\x46\xb1\xb9\xbd\x32\x0a\x14\x5e\xa9\x47\x9e\xe3\x7e\x79\x54\x54\xfa\xc4\x80\xe7\x61\xe9\xaf\x2b\x9d\xaf\x2b\x43\x45\xe5\xbc\xae\x5b\x8a\x4a\xee\x0f\x85\xc2\x04\x2c\x43\x33\xed\xb7\x60\x58\x9c\x4e\xf4\x48\xbd\x7d\xf1\x4c\x3d\xf8\xea\xcb\xc7\x3d\xf8\x6b\xf7\xcb\x9d\x2f\xf1\xaf\xbd\x07\x5f\x3d\x6e\x61\x06\xff\x59\x9c\x6a\x8a\xd6\x01\xf1\x48\x8b\x4c\x45\x90\x89\x04\x4c\x76\xf4\x1a\x6d\x1e\x21\x68\x64\x99\xa9\xb1\xc6\x57\x64\xb1\x8c\x13\x3d\x45\x53\x48\xc2\xdd\xb3\x38\x2f\x4a\xb6\x5a\x4c\xb2\x68\x8a\x51\x25\xf9\x38\xde\x44\x65\xa9\x73\xf3\xca\x0f\xff\xd1\x39\x8e\xfa\xbf\xed\xf4\xbf\x1a\xdc\xef\x9f\xdc\x1f\x75\x87\x71\x0f\x58\x00\xb3\xc5\xa2\xda\xe8\x78\xa7\xff\xd5\xc9\xbd\xff\x33\xec\x61\xb6\x89\xe1\x50\xbd\xa3\xac\xef\x20\xb9\x35\x04\x42\x44\xe9\x9f\x31\x62\xfb\x87\xb7\xdf\x63\x16\x0b\x28\x7b\x13\x95\x73\x6f\xd4\x9f\x87\x3f\x0f\x9f\x74\x9e\xdc\xf9\x79\xd8\x3d\xfe\xc7\xcf\x4f\x7e\x2e\x4e\xee\x75\x3b\x3f\x3f\x39\xfe\x07\xfc\xf5\x44\x0e\xc4\x9b\x34\x92\x49\xe5\x31\xbe\x8f\x9e\xc2\xc8\x53\x0d\x6f\x97\x41\xf4\x1f\xde\x7e\x5f\x0c\xb8\xe5\x8f\xda\x85\x58\x05\x21\x4b\xb4\x2a\xb3\xbe\x2e\x26\xd1\x92\xf6\x79\x40\xb9\x33\x92\x78\x01\x76\xa7\xed\xaf\xdb\x3d\xd5\xfe\xc6\xfc\x67\xdb\xfc\xe7\x17\x30\x79\x30\xff\xf9\x39\x87\xff\x42\x2c\xac\x9f\xcb\xf6\xc9\x0d\xf3\x33\x5c\x3b\x84\x32\xa2\x29\x9e\x47\x79\x9c\xad\x0a\x72\x35\xa6\x29\xae\x52\xa0\x4c\xcd\xb8\xbf\x9b\x7e\xaf\xcd\x7f\xae\x60\x84\x9f\xcd\x7f\xff\x81\x53\x38\xe1\x78\x0d\x38\xcf\xae\x1b\xfa\x29\x8d\x30\x5e\x9b\x59\x14\x68\x18\x3b\x89\x38\xf8\xd4\xbb\x77\x2a\x2a\xcb\x68\x72\x56\x0c\x94\x7a\x8a\x81\xe9\xab\xab\x37\x9b\x72\x88\xa5\x66\x26\x3f\xb7\xdd\x80\x38\xc1\x6e\x8f\xc7\x7b\xe6\x16\x08\x24\xaa\x79\x8d\x53\x7d\xae\x73\x05\xff\xe1\x05\x43\x0c\x62\xbe\x90\xf6\x34\x5c\xea\x2d\x43\x13\xc5\x14\x6b\x08\x74\x77\xd0\x51\x94\x14\x19\xa9\x00\xa6\x3d\x16\x6c\x10\x8f\x3d\x1c\x42\x15\x4c\xd1\xa5\xc5\xe8\xf7\xd0\xd0\x5f\x4f\xef\xe1\x95\x50\x85\xd6\x69\x8f\xd8\x77\xc3\x1a\xf5\x21\x2c\x3e\xf5\x51\xce\xf5\x02\xe7\x93\x66\xe9\xcb\x0c\x33\xb1\xe3\xc1\xff\xdd\xec\xf5\xd0\xfc\xe7\x89\xf9\xcf\xbe\xf9\xcf\xdf\xdc\x4e\xb8\x4d\xa2\xdd\x30\xcb\x3b\x4c\x0d\x0d\xe5\xfa\x70\xcd\xff\x66\x00\x84\xab\x99\x5d\xf8\x21\xba\xfc\x1e\xe8\xea\xbd\x47\x8f\xfc\x2f\x6f\x22\xef\xa6\xfd\xe3\xf8\x3e\x5e\xc8\xa7\xfd\xff\xef\x63\xff\xe4\xf7\x9d\xde\xe3\x07\xd7\xe6\x3a\x84\x6d\xde\x81\x14\x11\xaf\x70\x4d\x93\x6e\x67\x70\xaf\xcb\xed\x0c\x45\x45\x77\xbf\xe0\x00\xab\x29\x1e\x97\xda\x46\xa7\x8f\x6d\x20\x7b\xb6\xf1\xc4\xb7\xf1\x58\x18\x4a\xcd\x77\x91\x48\x82\xe5\x10\xed\x4f\xd1\x79\x54\x4c\xf2\x78\x59\xb6\x47\x20\x94\xe9\x55\xbf\x8c\xe8\x13\x09\xba\x1a\xa6\x83\x40\x04\x98\x2d\x84\x1c\xf3\x2b\xd1\x45\xf1\xaf\x9d\x00\xa5\x6d\x30\x24\x7f\x04\xe0\x3b\x1c\xaa\x71\x5c\xe2\x14\xf0\xb9\x9a\xd6\xcd\x60\x5e\x96\xcb\x70\x6c\x88\xbe\x1c\x16\xce\xaa\xf5\x4e\xb3\xe5\x1c\x14\xb6\x7e\xc5\x38\xd1\x75\x3d\x8e\x6a\x87\xa9\x94\xce\x6a\x6a\xe2\x40\xd5\xaa\x90\x2e\xa4\xba\x3b\xf0\x10\x62\xe8\x18\x49\x82\x88\x62\xa0\x43\xec\xa3\xcf\x04\x48\x07\x42\x19\x00\x59\xf2\xff\x9a\xba\x18\x50\xa6\x47\xdb\x57\x3c\xd7\x69\x56\xea\x97\x19\xa7\xd9\x86\x30\x52\x39\xf8\x9f\x1a\xda\x66\x10\x17\x48\x7f\x98\x42\x88\x23\x6f\x3e\x4a\xd9\x85\x29\x26\x56\x72\x05\x64\x07\xca\x18\x57\xcc\xd4\xe6\xf0\x14\xaf\x28\xf7\xcb\xad\x27\xb3\xef\xc4\x5c\x2b\x78\xb7\x3f\xe4\x89\x4c\xc7\x47\x64\x96\x65\x2c\x3f\x7f\x95\x77\x68\x7d\x14\x61\xc7\xac\xaf\xbb\x21\x11\xef\xf6\x9b\x28\x8f\x16\xba\xd4\xb9\x82\x9c\x39\x82\x03\x2e\x68\x30\xf3\xbc\x6c\xab\xfb\x2c\x76\x33\x3d\xca\x14\x66\xc0\xea\x4f\x20\x42\x71\x4f\x1d\x1d\xf6\x54\xb6\xd4\x79\x04\x42\x24\x98\x66\x1f\xd0\xac\x39\xdf\xb1\x9e\x47\xe7\x31\xb8\x34\x2b\xca\xb8\xc8\x2b\x51\x63\x3d\xcb\x08\xe9\x22\x6d\x44\x30\x71\xaa\x4b\x73\x51\xce\x35\x85\xe4\x35\x0f\xdc\x45\x94\x4f\xb9\x21\x76\xf5\x4e\xeb\x91\xe2\x40\xe4\x86\xb4\x1d\x9c\x66\xd9\x29\x06\x23\x1f\x2e\x87\x30\xbb\x78\xb5\x18\xc6\x45\xb1\xd2\xc5\x70\xaa\xcb\x28\x4e\x9e\xc4\xd3\x83\xbd\x47\x5f\xed\x3e\xa6\xb3\x85\x71\x8f\xd2\x29\x24\xad\x5c\xe5\x89\xcb\xe0\xf2\xa4\xdd\x65\x40\x06\xd3\x50\xb3\x5b\x07\x56\x40\xaa\x54\x47\x34\xc5\x58\x64\x06\xa4\x44\xe1\xd7\x7e\x7f\x7f\x6b\x77\xbb\xea\x89\x41\xdf\x6a\x64\xf0\x37\x77\xbe\x7a\x67\x7a\xa7\xd1\xd1\x08\x95\xc7\x73\x13\x30\xeb\x7e\xab\x4f\x61\x96\xc3\x9f\x7f\x1e\x9e\x02\x20\x42\xcb\xe3\x9d\x13\xd3\x98\xff\x1e\xe4\x7a\x99\x44\x13\xdd\x71\x6d\xe0\xdd\x81\xe3\x43\x53\x5b\xac\x3b\xf8\x94\xc5\xa9\x1b\xca\x42\x7b\x8e\xa1\x44\xf9\x02\x98\x47\x2d\x8f\x17\x7c\x56\x20\xcf\xd4\xe6\x55\xa2\x03\xb5\x22\xa6\xcc\x06\xf4\x47\x80\x2e\xca\xd5\x6c\x86\x79\x83\xb6\x15\x4b\xae\x67\x59\x06\xc9\x08\xd4\xcf\xe9\x36\xdc\x0a\x4a\x2e\x55\x94\x03\x33\x4a\x87\x24\xf2\x60\x5c\x18\x82\x3b\xdd\x58\x0e\xf7\xf1\xb7\x76\x97\x85\xfd\x07\x07\x07\x6a\x97\x01\xde\xcc\x29\x5f\xc3\xd3\x8c\x84\x62\x6e\xf6\x60\x09\xdf\x30\xea\x11\xd3\x8b\xea\xa0\x4a\x3c\x0e\xf4\xa5\x9e\x74\xcc\x84\x44\x3a\x3d\x57\x4b\xe6\xcc\x73\x44\x7a\x0e\xa9\xc3\x44\x39\x11\xea\x95\x72\x41\xec\xbb\x3e\x8f\x77\x4f\xf6\x85\xdc\x5e\x7c\xd8\x3b\x91\x02\x7c\x9f\xb3\xf0\xaa\xed\x3b\x05\xd0\x4c\x75\x42\xd4\x21\x3b\x09\x58\x11\x81\x72\x09\xab\x89\x51\xd8\x06\x6c\xb7\xdb\x75\x03\x54\x54\x05\x41\x8f\xb5\xed\x45\x73\x5f\xe3\x70\xd3\x74\xfd\x35\xb7\xdb\xfb\xad\xda\x41\x7f\xbf\x0e\x75\x14\x56\xa8\x1c\x17\x41\xa6\x4e\xcb\xa7\xa8\x83\x90\x5f\x09\x0e\x1f\x26\x67\x6a\xf0\x8c\xbc\x66\xc7\x3b\xb4\xed\x36\x68\xe3\x1b\xf9\xd9\xb7\x9e\xdd\x6f\x39\x18\x70\x8f\xbc\x6b\x85\xdf\xe5\x75\xa0\xbd\xc3\xbe\x48\x7e\x2a\x31\x30\xa4\xea\xd0\x2a\x5b\x95\x36\xfc\xfb\xa9\x61\x09\x80\x9c\xc1\x2a\xab\x42\xe7\xdf\x02\x17\x03\x12\xfe\x7b\x48\x82\xdc\x73\xf9\xa2\xf4\x54\x45\x85\xa0\x87\x50\x4e\xb6\xca\x13\x4e\xce\x58\x64\xc9\xaa\xb4\x42\xff\x32\xd7\x51\xa9\xe0\x12\x0f\xc7\x51\x6e\xda\x9a\x96\x07\xb3\x2c\xeb\x19\xc8\x3e\x30\x85\x63\x8d\xec\x41\x09\xca\x45\xec\x68\x9e\x5d\xa0\x0a\x80\xb2\x86\x90\x80\xa0\x70\xc9\xae\x98\xab\x82\x0b\x50\xb9\xf8\x57\x57\xb4\xf5\x57\x57\xb8\x39\x6c\x5e\x6f\x98\xbc\xe3\x7f\x7c\xfb\xf3\xf0\xe4\xfe\xb7\xf4\xef\xd0\xbe\x7c\x68\xa9\xc1\x72\x00\xb9\xa9\x3b\x3d\xb5\x87\x19\xc8\xda\xc3\x61\x5b\xdc\x73\xaa\x7d\xf7\xae\xba\x83\x3b\xcf\x89\xbd\x24\x7d\x78\x0c\x5f\x4e\xba\x0e\x4e\x6b\xce\x6d\xaf\xeb\x5d\x7c\x37\x0f\x54\x2d\x7a\x10\x09\xe8\xae\x61\x14\x75\xf7\x2e\xf5\x63\x67\x77\x75\xa5\xdc\xe4\xee\x04\xa4\xa3\x9d\x9c\x99\x9d\xe0\x4a\x72\xdd\x2e\xea\x78\x26\xc7\xcc\x33\x21\x64\x18\xbb\x61\x4f\x3d\xe9\xa9\x7d\x08\xf8\xfa\x37\xa5\xd3\x29\xaa\x10\x20\xc5\x19\xb5\xe4\x0e\x50\xbb\x83\x42\xd3\x28\x55\xdf\xb2\x7c\xd8\xc1\x14\x84\xde\x4f\xb3\xb4\x0f\x92\x16\x64\xc7\xee\x45\xb9\xbe\xc7\xec\x9c\x9d\x0b\xc8\x55\x55\xa2\x67\x25\x0b\x33\x13\x83\xc5\xbf\x85\x68\x60\x3d\xb5\x4a\xcd\x06\x61\xf2\x0c\xd3\x57\x5f\x03\x7b\xe4\xb8\x62\xee\x68\x92\x2d\x74\xa1\xee\xe1\x93\x75\x0f\x3a\xfa\xb6\x6f\xfa\xb0\xcb\x36\xf0\x06\xec\x5d\x36\x4e\xb3\x4b\xc3\x38\x87\xeb\xd2\x97\x23\xfe\x93\xde\xae\xe8\xdb\xf1\xb7\x93\xa1\x3a\xf8\x06\x2e\xd6\x28\xfa\x76\x0c\xb3\x18\x4d\xaa\xf5\x9e\x7c\x3b\x71\xf5\xa8\x16\x3c\x46\xa3\xe1\x93\x6f\x27\xf6\x5c\xce\x77\x06\xbb\x7b\x60\xe9\xd6\x89\x8b\x28\x9a\x14\xdd\x91\x7d\x4f\x0d\x01\xf6\xeb\x2a\x2e\x35\xdc\x1e\x4c\x06\x01\x79\x5d\x30\xa8\xaa\x93\x41\xbc\xd5\xe7\xb1\xbe\x50\xd9\x2a\x47\xd7\x2b\x10\x97\x44\xa7\x91\x39\x4f\x17\xee\x15\x62\x18\x4f\xb2\xc5\x32\xd7\x73\x9d\x16\xf1\xb9\x4e\xd6\x03\x3b\x11\x70\xe8\xaa\x07\x05\xc3\x4a\x07\xac\xa8\xbd\x5d\x54\x4e\x26\x17\xa6\xb4\x4e\x8f\x13\xb4\xf6\x6c\x79\xed\x15\x42\x3f\x9d\x09\xdf\x22\xa6\x9a\x82\xb6\xc7\xf1\x49\x57\xbe\x95\xa6\x85\xa3\xbd\x3a\x76\x3e\x58\x74\x75\x05\x5d\xda\x19\x74\x9d\x9d\x84\x9b\xf9\x5c\x4f\xf8\x3a\x5a\x41\x40\x49\xd2\xf9\x2c\x4e\xcb\x9e\xd2\x31\x68\x6c\x2e\x34\xb1\x8f\xa9\xd2\x97\xcb\x24\x9e\xc4\x25\xd6\xa0\xdc\x3e\xe5\xdc\x49\x12\x56\xe5\x9c\xe5\xf2\x86\x11\x36\x67\x79\x9a\xa9\x65\x04\x79\xb6\x73\x09\xd9\x06\x76\x59\x43\x87\xe1\x8e\xf3\x81\xdd\x5f\xcc\x7f\x17\x95\xef\xe2\xd3\xd4\x61\x29\x7f\x95\x9e\xa1\x01\x56\x05\xde\xdb\x50\xf3\xe9\x1a\xa6\x36\xa0\x0a\xf4\x95\xb6\xd8\x4c\xe0\x88\x89\xd3\x6f\xdb\xac\x99\xf7\x9f\x77\xd7\x27\xb3\x08\x86\x77\x15\xcb\x1b\xb8\x8a\x0e\xfc\x87\x93\x6f\xa7\x06\xfe\x01\xf0\xc7\x50\x7f\x14\x11\xfc\x4f\xbe\x9d\xde\x66\x3a\x3d\x7b\x68\xe1\xe9\xbc\xca\x2e\xdc\x59\xd8\x5d\xbe\x98\xc7\x98\xf3\x03\x84\x9c\x31\x98\x75\x42\x30\xf1\x55\x39\xb7\x57\xe5\xcd\x0a\xf2\x0c\x47\x06\xbd\xcc\x06\x76\x43\x69\x22\x77\x82\xfd\x24\x61\x31\x62\x75\xd0\xd4\xee\xf0\x61\x58\x20\xf4\x30\x3f\xd4\xa1\xce\xee\xab\x5d\xff\x05\xa0\xde\xa6\xda\x70\x2a\x1f\xde\x1e\x3d\xcb\x16\xcb\x2c\xd5\x29\x48\x7e\xe6\x95\x55\x32\x0a\x65\xd8\xc8\xf5\x82\x54\x7b\x35\x58\x12\x6f\xad\x87\x62\x5b\x3e\x94\x6f\xba\x9f\x52\x52\xf5\x59\x97\x53\x36\xfc\xd7\xde\x4c\xda\x14\xc8\x45\xa6\x8a\xd2\x10\x23\x70\xfe\x60\xba\x14\x97\x10\x44\xba\xa4\xd4\xd9\x14\xa2\x1a\xd1\x24\x45\xa1\xb7\xef\x56\xcd\xfd\x69\x85\xe3\x22\x38\xe2\x3e\xb4\x1c\xdd\x46\x7a\x02\x1f\x1c\x7c\x20\xad\x42\x83\xfb\x6e\xc5\x42\x06\x06\x0d\xd5\x66\x20\x77\x20\xc8\x42\x43\x05\x9b\xed\xec\x88\xca\x17\xba\x7d\xae\x39\x40\x18\xe4\x70\x02\xdc\xc4\xcf\xad\x7b\x64\xb9\x41\x91\x29\x54\xd3\x13\x49\xa8\x17\xcb\x72\xdd\x53\x71\xa9\xe6\x51\x41\x02\x4c\x08\x5d\x9f\xca\xb1\x85\x6a\xc3\xff\x0d\x41\x80\xdd\x74\xe2\x99\x1d\x51\x8d\xf5\x69\x9c\x16\x68\x39\x70\x0c\x74\x23\x90\x09\xf0\xfb\xc4\x22\x42\xcc\xf4\x06\xd3\xc6\x0c\x45\xa9\x97\x43\xd5\xa1\xba\x78\x79\xfe\xf8\x65\xc3\x34\x80\xc3\x3d\xc0\xf4\xa9\x96\x1c\x0a\xa6\x7e\xec\xfd\x62\xc6\xb0\xaf\x76\xa9\xe9\x89\x58\x06\xc8\x85\xa3\xd2\xa0\x0f\xc3\xfc\x26\xda\xc1\xc6\x1d\x39\x8f\xe0\x02\x64\x45\xb9\x8c\xd0\xa4\xc6\x1f\x8c\x3d\x47\x07\x43\x7b\x05\xfc\x7b\xd6\x53\x86\xda\xb7\x1d\xb8\x4b\xa6\xbe\x56\x49\x70\xd7\x88\x41\x41\xd1\xab\x6d\x72\x1c\x07\x3c\xde\x1d\x53\xdc\x05\x71\x62\x9c\x32\x45\xe9\x7d\x24\x22\xb9\x46\x0a\xdc\xf5\x19\x42\x72\x00\xa2\x21\x25\x8f\x25\xd6\xf1\x09\xd7\x71\x66\xd8\x1b\xd3\x39\x2f\xe1\x93\xfa\x5a\x9d\xed\xab\x4f\xfe\x12\x94\xe3\x44\x4b\xe9\x94\xf3\xa9\xab\xbe\x51\xbb\x7b\x5f\x84\x75\x09\xd8\x15\xc9\x2e\x00\x95\x3d\x7d\xf7\xec\xe8\x08\xdf\x47\x34\x4f\x51\xa5\x5e\x2c\xb3\x3c\xca\xd7\x0a\x6a\xcd\xb3\x64\x4a\x34\x5f\xd8\x0f\xda\xe1\xcc\x51\x2c\x01\xb9\xef\x20\x5c\x7d\x11\xff\x06\x34\x8d\x05\x62\xa4\xb3\xaa\x5d\x8c\xf3\xec\x4c\xa7\x6a\xbc\xa6\x19\x61\x6c\x3e\x9e\xd3\x78\x6d\x5a\xcd\x9d\xb9\x1b\xff\x8f\x77\xf1\xfe\x81\x6a\x5f\x7a\xfb\x58\xcb\x37\x07\x4d\xcc\xbf\xc7\x9f\x4e\x82\x66\xad\xfa\xbf\x71\x9d\x40\xf0\x01\xad\x87\x7b\x24\xf6\x2c\x4b\x93\x75\xcb\x3f\x8d\x3b\x34\xd8\xad\x21\x03\x61\x03\xae\xcb\x1b\x82\x7c\x07\xc4\x16\x07\xc6\xdd\xfd\x4a\x9b\x34\x2b\x5f\x22\xbe\x0c\x1b\xc4\xde\xd3\xe8\x5a\x8c\x41\x06\xd6\x30\x3d\x50\x45\x04\x8d\xc0\x24\x2c\x2e\xab\xa0\xe4\xe6\x4b\xfe\x5e\x71\x79\xbc\x7b\x12\xb4\x56\x3c\xc5\xc1\x2a\x2d\xe6\xf1\xac\x84\x6a\x7b\x61\xb5\xeb\xca\x90\xdc\x2c\xb1\x36\x65\x7e\xb7\xf4\x06\xb4\x21\xb5\x32\x57\x06\x51\x5b\x7b\x00\x59\x94\xa5\x50\xa8\x6e\x90\x10\x23\x8b\xe5\xd8\x6e\xfc\xf6\xe0\xf6\xb2\x5f\x0b\x28\xd7\x9e\x58\x84\xc8\x0b\x30\x73\xab\x43\x97\xdf\x04\xda\xa4\x40\xda\x25\x26\xc5\x58\xa2\x4a\x2e\x72\x25\x56\xb9\x81\xd6\x03\x04\x1d\xc0\x99\x0c\x1a\x3a\xf4\xe7\x53\x23\x3b\x11\x73\x6f\x40\xd2\x86\x19\x7d\xfe\xea\xa9\xa2\x44\x71\x23\xf5\x16\x64\x40\xe6\x9d\x64\xe3\x87\xa9\xb9\xcf\xf8\xfc\xa1\x1d\x52\x36\x53\xdb\x98\x76\x73\x5b\x50\xb2\x47\x14\xfc\x87\x64\xd0\x85\x42\xbc\x4f\xd4\x16\xd6\xc7\x28\xf2\xe6\x65\x13\x6b\x47\x9a\x44\xe2\x2e\x54\x66\xf6\x54\x3c\xd0\x03\xf3\x0c\x73\x66\xce\x05\x5c\x38\x15\xcf\x5c\xeb\x75\xb6\x82\xa4\x73\xa6\x1a\x61\x3c\x1a\x8a\x14\x48\xe0\x84\x64\x70\x16\x74\xdf\x37\x53\x6c\xda\x4e\x5e\xf0\xa0\xcc\xa0\xb2\x7f\xde\xfe\x96\xc2\x7b\xc3\x47\xe0\x65\xff\x76\x25\x23\x7b\xe2\xf0\x14\x36\x11\x0a\x2a\x20\x96\xe6\xea\xbe\x5a\xca\xe2\x5c\xcf\x0c\xaa\xb3\x75\xdc\xa3\x5c\x94\x79\xbc\x24\x4a\xe2\x04\x6d\x8a\xa5\x18\xa1\x42\x17\xcf\x62\x9d\x4c\x89\x16\xcc\x75\x69\xd8\x5d\xd0\xbe\xf6\x28\x64\xaa\x85\x96\x7a\x60\xd9\x0c\x7f\x2c\xb8\xec\xa9\x06\xb2\x62\xcf\x23\x76\xcd\x95\x36\x44\x0a\xf8\x7e\x0d\xdb\x12\x29\x78\xe8\x40\x5e\xfd\x6b\x5f\x06\x34\x1c\xaa\x34\xbb\xc0\xea\x71\x01\x81\xb3\x89\xd0\x5f\x66\x45\x89\x74\x3d\x48\xd4\x49\xec\x3e\x99\x67\x4b\xc3\xc5\x00\x7f\x0e\x6a\x7b\xa7\x51\x45\x8d\x90\xa7\x54\x3d\x76\xa2\xc6\x13\x29\x19\x7a\x61\x38\x87\x1e\x3e\x91\xbb\x3b\x3b\x7f\xc7\x77\xd2\xea\xd0\xb7\x9d\x56\x9a\x34\xb6\xea\x54\x97\x56\x44\x02\x1f\xa6\x3d\x4b\x72\x42\xf4\x3a\x8f\xb9\xb1\xf0\x6e\x9e\xcb\x33\xb0\x31\xe1\xd6\x6c\x2b\x3b\x26\x9c\x50\x47\x32\xb9\xe1\x37\xd2\x4c\xc0\x2b\x6b\xaf\xbe\x20\x98\xf8\x84\x2c\xdf\x12\xe9\x6e\x40\xfc\xab\x0a\x21\x65\xba\xd4\x85\x61\x79\xaa\x8b\x32\x1d\xc8\xce\xa1\xde\xc1\x81\x8a\xb4\x3c\x79\x6a\x0d\xb3\x91\x2d\xae\xeb\x58\x47\xa0\x20\x23\xdd\x45\x14\xaf\x8b\x49\xd7\x93\x11\x06\x67\x6e\x6f\x47\x19\xc5\x09\x72\x7f\x03\x92\x6c\x93\x35\x92\xb7\xde\xf6\xdf\xda\x56\x9e\x0d\xdf\x7d\x4e\x77\x38\x24\xc9\xf1\x2c\x8f\x4e\xc1\x20\x96\x14\x02\xe2\xde\x8a\x5e\xe9\x6e\x98\xa2\x46\xb6\xc7\x70\x46\xfc\xfd\x9a\x35\x6d\x8b\xca\xbc\x9e\xb8\x79\xfd\xba\x08\x66\xe5\x4b\xfe\xe5\xc8\xbf\x2e\xa4\x38\x9d\x55\x00\x7e\x0d\x41\x64\x6c\x56\x31\xdc\x46\x1b\x02\xc5\x5d\xc9\x8b\xd6\xae\x98\xe6\x75\x0b\xcd\x06\x5c\x76\x4f\xe5\x89\xe6\x28\x61\x7d\x8b\xde\x20\x4a\x1c\x09\x4a\xeb\x55\x22\x35\xea\x90\xeb\x96\x83\xfd\x6e\x45\xff\xc4\xb8\xc8\xc9\xbd\xa7\x75\xc8\xc2\x31\x5c\x3e\xc6\xbc\x7b\x57\xdd\xf1\xba\xf4\xce\x4d\x8c\xd3\x46\x01\x3b\x21\x39\xa1\x25\x9c\x97\xe5\x92\x23\xd5\xb7\x04\x51\x62\xdb\x5e\x5d\xc9\xb5\x4a\xa9\xbe\x7b\xad\x44\x5d\xf9\x40\x15\xbe\x22\xaa\xf2\x3c\x91\xde\x6e\xa9\xee\xab\xc2\x57\xaa\xa4\x51\x92\x80\x4f\xc2\x84\x13\xf5\xe0\x93\x63\x1e\xae\x71\x54\x80\x19\x9c\xba\x30\xf8\xd1\x30\xd4\x63\xad\x53\xcb\x4e\x4e\x07\x81\x9d\x1e\xfc\x8d\x26\x8e\x1d\x69\x04\x80\x4a\x29\x72\xc2\x22\x13\xc8\x08\x0f\x7f\xaa\x30\xa7\xb3\x8a\xd3\x32\x53\x11\x28\x6c\x29\xc7\x8e\xb4\x86\x40\x5b\xc9\x4e\x36\xfe\x84\xdb\x62\x90\x71\x0a\xa8\x9b\xb9\x6c\xec\xa6\x47\xa1\xc6\x4b\xab\xd9\x07\x0d\x6a\x8b\x25\xf7\xa2\x36\x3e\x75\x28\x56\x48\xb3\x7e\xb6\xa4\x5a\x50\x7a\x11\xad\x7b\x44\x9f\xa4\x48\xa3\xac\xf2\xe4\x23\x2f\x4d\x41\xc8\x70\xd3\x3b\xe9\x7b\xca\x0c\xfc\x70\x52\xb5\x5a\xaa\x65\x56\x62\x22\x85\x64\xad\x2e\xb2\xf4\x6c\x6d\x9a\xda\x67\xca\xb7\x5b\x30\xeb\xe9\x9a\xc9\x08\xa3\x53\x28\x64\x40\xbd\x63\x7e\x85\x26\x1b\xd6\x66\xc3\x37\xab\xc0\xd9\xa1\x3f\x0f\xf7\x41\x15\xb3\xf1\x27\x71\x2e\x15\x83\x0c\x6b\x95\x1a\x38\x63\xb2\x48\x96\x8f\x16\xfe\xb6\xa0\x05\x92\xc4\x95\x63\x09\xa8\x66\xdd\xf3\xe1\x04\x7e\x54\x09\xa4\x94\xac\xb8\x1f\xfe\xfd\xc1\xd3\x61\xdc\x33\x34\x98\xac\x65\x98\xca\x6f\xdd\x5d\x92\xe6\x96\xf6\x3a\xf0\x6f\x98\x14\x1b\x0f\x88\xcb\x58\x73\x69\xb8\x16\xa1\x78\x87\xee\xfd\xaf\x48\xcf\x81\x3f\x1d\x97\x31\xb6\x21\x09\x91\xc7\x55\xf0\x26\x50\x3b\x5c\x80\x24\xfb\x3c\x3c\xe9\x13\xa7\xb5\x4d\x03\x86\xc5\x3e\x21\xa3\x36\xbf\xe5\xea\x49\xbd\x64\x48\x8d\x6c\x79\xfb\xb8\x2d\x67\x01\x5f\xef\xab\xf6\x49\x5b\x3c\x15\x96\xe6\x75\x6f\x04\xcc\xc4\x6c\xbf\x4f\x14\xd7\x68\xf1\x04\x16\xb6\x78\xd3\x37\x3d\x12\x0f\x8a\xab\x22\x73\x59\x89\x0a\x01\x8f\x59\xf7\x4a\xe1\x3f\xf1\x6c\x1d\xbe\x54\x16\x46\xec\x4b\x11\xe0\xc3\x0e\x4f\x53\x99\x77\x58\xdd\xc7\x6e\xbb\x5d\x21\xf3\xb3\xfa\x6f\x03\x52\x90\xb9\x16\xff\xe6\x67\xd6\x3c\xd6\x40\xf2\x9a\x43\xb0\x15\x71\xa3\xd8\x76\x04\xf8\x28\x74\x3f\xf2\xde\x18\x20\x24\xe1\xc3\x70\x38\x50\x90\xad\x74\x11\xc5\x49\x99\x8d\x7a\xea\x72\xb1\x5c\x8e\x7a\x4a\x97\x13\xc2\x41\xa4\xf8\x03\x0b\xe5\x79\x04\x9a\xaa\x05\x92\x8e\xa7\x24\xf9\x18\xc8\x03\x70\x8a\x52\xda\xdf\xce\x1d\x79\x33\x6a\x35\xa6\x93\x2c\x39\xe9\xb2\xb6\x17\x56\x85\xa9\xb8\x7d\x60\x6c\x0f\x81\x8e\x07\xd9\x04\x6e\x94\x47\x64\xd0\xbd\x32\x5b\x45\x7f\x83\xf0\xeb\x69\xd9\xd9\xe9\x3a\xe6\xc0\x7f\x1c\x0d\x87\x44\x05\xc1\xad\xb8\x53\x73\x91\xda\x0e\x01\x58\x6a\x0e\x12\xa7\x17\xf3\x70\xa8\xbf\xb5\xbb\x7c\xa9\xdb\x7f\x33\xc3\x98\x1f\xf6\xc5\x47\x38\x80\xd0\x15\x60\xaa\x11\x34\x7e\xd2\xee\x3a\xc8\x41\xf8\xc0\x9f\x70\xae\x62\x05\x76\xa1\x16\x7b\x1d\x3f\xf9\xdb\xc9\xf0\x54\x24\x03\x58\x70\xd0\x31\xe5\xec\x32\x6a\xb0\x22\x56\xdb\x27\xcf\x50\xe5\x86\xa7\x19\xf2\x00\xed\xbf\xb5\x7b\xaa\xfd\xf7\xbd\x07\x6d\xcf\x81\xd4\xc1\x1f\xdd\x57\x37\x4b\x9e\xbb\xdd\x83\xeb\xc0\xb8\x90\xbc\x13\x3a\x45\xb6\xca\x27\x10\x63\x15\xcd\x12\xbc\x28\x07\xf6\x41\xe2\x5a\x88\x0c\x31\xb3\x12\xfb\x3c\x74\x6c\xd3\x9a\x77\xc5\x79\x4d\x08\x1f\xb2\x9a\x91\x00\x88\x3d\x27\x8a\x8e\x1d\x9c\x1b\xf8\xc3\x77\xe5\x73\x56\xbf\x38\xea\xa8\x7e\x89\x68\x70\x05\x9f\xec\x6b\xca\x35\xf6\x3f\x73\x0b\x68\xa0\x5b\x6c\x84\x75\x10\x69\xd8\x8e\x2a\x81\x60\xbf\x4b\x6a\x30\xd7\x89\x33\xd0\xec\x58\x9e\x24\x21\x12\xbe\x7e\xc7\x6c\xad\x88\x82\x00\xe4\x3a\xf1\xf0\x26\x06\xbd\x09\x3b\x86\xec\xec\x06\x4f\xab\x83\x0a\xd6\x86\x0a\x96\x8b\x2d\xcf\x50\xc3\x56\x9e\xa9\xaf\xb1\x89\x65\x61\xcb\x33\xc7\xbc\x72\x87\x06\x41\x9b\x4a\xc7\xe5\xd9\x89\xe5\xaa\x56\x49\x79\x5c\x52\x88\x43\x33\x02\xfe\x90\x04\x2b\x5c\x70\x43\xb3\xa1\x9c\x8d\xa2\x10\x4e\x75\xda\x33\x1c\x06\x09\x99\x0c\xb9\x4a\x98\x14\x38\x75\x43\x9e\x1e\x6c\x6f\xa3\x51\x0f\xa6\x10\x55\x68\x89\x4c\x91\x7e\x2c\xbb\x87\xbb\x33\xc0\x5b\xd3\x62\x1d\x10\xea\x23\x69\xe7\xc0\x86\xd6\x2a\x9a\x58\x09\x07\xe6\x26\x24\x24\x47\x55\x25\xba\xd1\xb1\x3a\x1a\xf9\x12\xee\x1e\xc8\x65\x83\x76\xda\x0e\x4d\xe0\x44\xac\x1d\x9d\xf9\x25\x49\x69\xe5\xc0\xd4\x7c\xf3\xf6\x24\xd7\xb3\x02\x0d\x0f\x85\xad\x12\x99\x5f\xaf\x9c\x5c\x85\x5f\xb3\x70\x3a\xd2\x0a\xc8\x16\x72\x6d\xc1\xc2\x41\x08\x2c\x7d\xae\xf3\x35\x2e\x13\x73\xea\x78\x7d\x23\xa7\xce\x9d\x38\x88\xad\x81\x20\x71\x5f\x3c\x69\x48\x4e\x70\x94\x1b\x38\xca\x3d\x38\xca\xcf\x42\x21\x48\x8e\x90\x04\xd5\x8e\xf3\x33\x5f\x04\x62\xbe\xdd\xc1\x24\xd1\x38\xbb\x76\x57\x8a\xa9\x0c\xb0\xe5\x04\x6c\x3c\x19\x2c\x08\x74\xd3\x8c\x05\x54\xb4\x5c\xa2\x69\x50\x1e\xc5\x60\xeb\x0b\x94\xbf\x21\xef\x71\xf7\x45\xde\x08\x7d\x19\x2d\x96\x68\x9a\x6b\xdf\xcb\xf0\x1d\xa6\x53\xb6\xcf\xb1\xd4\xf5\x31\x3c\x48\xf6\x93\xeb\x07\x0c\xa8\xad\xec\x8c\x33\x65\x35\xc7\x92\xda\x25\xfd\xd3\xc0\xe6\x81\x8d\xa4\x94\xaa\x85\x10\x46\xcc\x5f\xa0\x00\x25\x56\xd7\x46\xea\x2c\xcd\x2e\x00\xd1\x5a\x18\xa2\x4b\x05\xa9\xbe\x58\xe5\x44\x82\x50\xdb\x3b\xd8\x05\x5d\xe8\x38\xa7\x94\xcb\x05\xd7\x9a\xa1\x7c\x8f\xfb\x37\x9c\x20\x18\xe5\x53\xa7\x17\x5a\xfd\xf0\xe1\xdd\x7b\xe9\x17\x61\x55\xc9\x86\x73\x8c\xd9\xb8\xeb\x02\xec\x04\x3d\x4f\x17\x49\x7e\xd5\x77\x67\xaa\x0f\xbc\x25\x82\x67\xad\x18\x5f\x5a\x39\x4c\xf3\x6c\xb9\xd4\x53\x3b\xbe\x6f\x48\x48\x1b\x53\x52\x4e\x6a\xb4\x95\x1b\xb8\xb9\xf2\x1d\x4c\x30\x99\x1a\x2a\x9e\x49\xbe\xa8\xa2\x31\x18\x32\x4a\x3d\x6f\x15\xf8\x82\x13\x3b\xf1\x6f\xd6\xcd\x37\x56\xdc\xd9\x73\xbc\xb2\xe7\xea\x6b\xe5\x5d\xd8\xf3\xaa\xa2\xd7\xdc\x6e\xb8\xad\xe7\x42\xf1\x47\xb7\xf1\xcc\xbb\x8a\xee\x36\x5f\xfb\x70\xbe\x09\x6e\x6b\x20\x37\x04\x7b\xc1\x44\x56\x36\xc1\x11\xb7\x0e\x13\xce\xc9\x14\xbb\x6a\xb1\x78\xd3\x1e\xe6\x3a\x21\xb3\x6b\x71\x6b\x3c\x66\x94\xa3\x30\xb3\xbd\xba\xf9\xdf\xc5\x3c\x4e\x34\xb4\x30\x8d\x59\x04\x0f\x26\x9a\xfe\x9c\x0e\x78\x80\x01\x2a\xf4\xba\x5d\x4f\x4a\xeb\xaf\xa0\xab\xc2\xc6\x4e\xf1\x5d\xad\x8d\xf8\xa5\x52\x54\x69\x45\x13\xb0\xba\x80\x76\xd7\xce\x89\xd5\x8c\xed\x76\xb7\xa6\x85\x08\x5b\xb3\xb1\x49\x15\x99\x71\x65\xd4\x0d\x0e\x1b\xec\xb8\x6a\xdb\xf9\x27\x10\xc8\x37\x21\x48\xa0\x13\xbf\xf2\xdb\x48\x4c\x80\xa8\xe4\x04\xb0\x54\x07\x0a\xbc\x2a\xee\x78\xc4\x8e\x0b\x99\x1c\x55\xb3\x06\x57\x54\xcd\xfc\xae\xf4\x13\x4e\x5f\xaa\xa0\xbc\x42\xaf\x25\x39\xf4\xba\x45\x5b\xfe\x1d\x51\x59\x83\x50\xd2\x0a\x50\xbd\xcd\x43\x2b\x64\xb7\x41\x3e\x94\x2f\x6b\xde\x1c\xb1\x56\x27\xa0\xf4\x37\xd9\xab\xe2\xbf\x60\x56\x4c\x19\x1e\x8f\x34\x6e\x96\x05\x72\x2b\xa8\x6c\xff\x8f\xbd\x74\xa0\x97\x29\xde\x01\xd9\xff\x74\x5c\xe0\x15\xf6\xd7\x08\xcf\x9e\x57\x24\x98\xca\x03\x62\x7e\x59\x76\x14\x17\x6f\x75\x42\x1d\x59\xb4\xa7\x2a\x10\x52\xf7\xc9\x1f\x30\x28\xac\x0e\x49\x5d\xd8\x91\x17\x2b\xb0\xc8\xa2\xb1\xed\x3c\xae\xae\xbc\xf5\x79\x43\xbb\xff\x75\x24\x40\xd7\x8d\xdf\xb5\xe3\x20\x5d\xfd\x34\x49\x9e\x67\x60\x38\xe1\xc6\xb5\x4e\x3d\xf9\xe4\x4d\x3d\x89\x52\xb3\x95\x0e\x2f\x9a\xa9\x1e\x9f\xb8\x61\x12\xdb\xc9\xad\x36\xa8\xa9\xa3\x65\xb1\x9e\xcc\xb3\x32\x9e\xa8\x0a\xa1\x52\x6b\x67\x1e\x52\x6b\x01\x7f\x40\x6c\x41\x04\xea\x70\x6a\xab\x30\x13\x31\x46\x4f\xb6\x24\xf1\x70\xa8\x92\x38\x3d\x23\x9a\x71\x30\x18\x0e\x06\x32\xbb\xe5\x38\xd1\x4e\xa8\x9c\x47\x17\x09\xc4\xb0\xcb\x02\x1b\xf3\xc8\x90\x3f\x49\x32\x50\xd6\x7e\xba\x28\xf3\x28\x3d\xd5\x03\xeb\xca\xe0\xad\x68\x6e\xe8\x19\x52\xa8\x83\x10\xbf\xd0\x25\xda\xf5\x5c\x50\x8b\xef\x23\xc3\x3a\x65\x69\x4f\x2d\x29\x02\x1a\x5a\x59\xc2\x9d\x04\x93\x1d\x10\xd1\xfb\xfa\x68\xe6\x25\xec\x66\x86\xfc\x4c\xf5\xe1\xf0\x11\x14\xbb\xfb\x7b\x88\x47\xca\x81\x88\x74\x46\xd0\xb1\x86\x71\xed\xae\x92\x45\x72\x38\x46\x29\xf0\x1c\x50\x25\xfb\xb2\xc8\x01\x6a\x10\x4c\xf0\x32\xd6\x92\xbb\x92\xec\xae\x3e\x8f\x6e\x3d\xca\x47\xbe\xc1\x37\x9f\x1f\xf4\xd6\x5b\x79\x59\x0f\xfc\x97\x95\x57\x5c\x41\xfd\x76\xd5\xe1\x7b\xea\x0f\x54\xa5\xaa\x7c\xba\xc0\x4d\x13\x6b\x78\x08\x44\xfc\xb8\x7b\xb7\x66\x96\x20\x6f\xac\x1c\x96\xc7\x40\x30\x0a\x92\xec\x00\xf0\x02\x1e\xd1\xea\x9f\x48\xa7\xf2\x94\x06\xb3\xa6\x2d\x7a\x52\x83\xc5\xfc\x9a\xa3\x2a\xac\x54\x61\xb5\x73\xf3\x6b\x8b\x35\x37\x0c\x5b\x0f\x21\xa3\x70\xb4\xfd\x3f\x95\xfe\x90\x28\x16\x4e\xc6\xbe\xf9\xb3\x08\x4c\xc1\x31\x04\x3c\xdd\xe3\x69\x56\x4a\xbf\xd5\x04\x71\x81\x90\xc8\xfa\xc4\x5a\x78\x60\x1e\x9b\x0f\x1c\x5a\x9e\x5d\xa8\x08\xd2\xe3\x40\x00\xc5\xb8\x80\x08\x12\x86\x01\xa2\x88\x44\x9c\x7d\x2c\xd5\x17\x88\x58\xe2\xb4\x28\x75\x34\x95\x8c\x0a\x2e\xa1\x2b\xd6\x72\x7c\xe2\xad\x6e\xb0\xcc\x96\xfc\x7a\xbb\x4a\xfc\x91\xc2\x0b\xd0\xd4\xbb\x7f\xe6\xfe\x4a\x59\x35\xc9\xe9\x5e\xad\x92\xe4\x75\xfe\x81\xc3\x0a\x77\x82\x8e\xbb\x62\xcf\x20\x5e\x86\xb5\x86\x06\x15\x01\x0a\x7a\xb9\x02\xca\x10\x72\x3d\x3b\x68\x3f\x99\x65\x59\x5b\x98\xf1\x93\x83\x46\x34\x33\x38\x1a\x62\x36\x80\x8b\x46\x79\x91\x81\x91\x59\x61\x99\xc7\xb8\x44\x47\xc9\x78\x16\x6b\x34\xa4\x1f\x67\x59\xa2\xa3\xb4\x70\x62\xfb\x10\x57\xd7\x93\x9b\xf2\xfa\xf1\xde\x12\x9f\xc1\x18\x64\x38\xcc\x26\x13\xb0\x2b\x8b\x84\xf7\x01\xe8\x4c\x4f\x35\x98\xef\x4c\xce\x50\x21\x12\xa7\xec\xa6\x87\xed\x60\x35\xba\xc0\x80\x27\x10\x81\x65\xb9\xd4\x29\x64\x55\xc0\xf5\x98\xbd\xb0\xb5\x57\x79\x12\x08\x5b\xdb\xa4\x3b\x49\xb2\x49\x94\xec\x7e\x8b\x66\x63\xbb\xed\x9e\x6a\x43\xc9\x1e\x95\xec\x59\x89\x0f\xab\x32\x8f\xd2\x97\xd6\xac\xdd\x27\x6c\xec\x4f\xa7\x6b\xfb\xb6\xdd\x55\xdf\xa8\x9d\xc6\xeb\xed\xb5\x22\x3a\xc3\xb4\x19\xa1\xe4\x55\xe2\x7a\x37\x76\x60\x2c\x25\xf8\x00\x57\x27\xdc\xe8\x2a\x63\x11\x9e\x57\x73\xdb\xeb\x7f\x01\x9b\xb3\xc9\xae\x41\x55\xee\x47\x48\x39\x03\x21\x56\x57\x21\xb8\x33\x21\x5b\x50\xa1\xc0\x9f\x54\x08\xc9\x11\xa0\xe3\xfb\x1b\x69\x59\x5a\xfd\x93\x60\x37\x46\x4e\xb9\x75\xfd\xc7\xa5\x64\x8c\xc6\xaa\xa8\x33\xcd\x10\xf3\x81\x85\xa3\x21\xe0\x74\x54\xac\xed\x55\x47\x07\x08\xa6\xd4\x28\x76\x8b\xb8\xf1\xe8\x64\x0e\x61\xd6\xbc\x77\xb2\x26\xaa\xd2\x6d\x8e\xa9\x81\xad\xf3\xf7\xdd\xda\xf2\xb9\xaa\x37\xf1\xdc\x35\x64\xc4\x1f\x91\x70\xc7\x33\x32\x0d\x39\x7c\xf5\x1c\x90\xc4\x40\x65\xb9\x1a\x0c\x88\xb8\x8e\x29\xa4\x21\x46\xa1\xb4\xd2\x59\xa0\xc2\x07\xd6\x23\x57\x9f\xeb\x9c\x24\x83\xe8\xba\x11\xa7\x81\x1c\xcd\x92\xee\xeb\x1e\xdb\x82\x88\xde\x5f\xbd\x7e\xdf\x38\x02\xb8\x44\x47\x3e\xae\x04\x33\xa9\xfe\x6e\x97\xfc\xa6\xc9\x58\xed\x3d\xb5\x7d\x97\xa0\xce\x81\xb9\x41\x8f\xd3\xaa\xd0\x37\x8e\xaa\x72\xa6\xcb\xbb\x42\xa1\xde\xc1\xc1\x0d\x39\x32\x00\x1a\x4c\xfc\x1e\x20\xe7\xe3\x4a\x48\x8f\x68\x6d\x50\x8b\x38\x3d\x4d\x80\x1a\x28\x7a\x36\x59\xd0\x34\x5b\x8d\xa9\x10\x02\x09\x46\x39\x58\x37\xc6\xb9\xc7\xf5\xc0\x59\x97\x39\xbc\x35\x99\x3a\xcd\x28\x00\x20\x28\x4c\xb2\xac\xec\xa9\x5f\x56\xcb\x5f\x70\xb7\x57\x4b\x83\x4b\x39\xc2\xc8\x12\x23\xc1\x07\x56\x90\xfe\x1a\xf7\x55\x0c\x61\xa4\xf7\x55\xdc\xef\x33\x70\xfa\xbb\x6c\xad\x1e\x0d\x30\xcb\x3d\x70\xb0\x6c\xcf\x63\x89\xe6\xf8\x3d\x6b\x28\x27\x9e\xf3\x60\xbb\x6e\x6e\xab\xd4\x6a\x89\x41\x99\xbd\x7e\x56\xcb\xdb\x36\xee\xf7\x03\x73\x8a\x60\x53\x41\xc7\x85\xc1\x9f\xea\x77\x36\xd7\x45\x99\xe5\x5a\x25\x3a\x02\xa7\xe0\xc1\xa0\x60\xdc\xe3\x13\xe9\x77\x3c\xce\x9c\xe7\x07\xfb\xbe\x8f\x13\x51\x75\xd3\xb6\xc2\xb8\xc1\xa0\xdd\xad\x31\xfd\xf0\x07\x11\x34\x3f\x0a\x02\x05\x6c\xde\x11\x1f\x3d\xf6\xa0\xc6\x58\x80\xe7\x51\x99\x45\xc0\x44\x54\x6e\x92\xe1\x46\xb8\x91\x15\x0d\x56\x0c\x37\x6a\x46\x00\x97\x09\xd9\x3d\x8a\x7e\x9e\x12\x37\x22\x60\x4d\x32\x39\xbc\x36\xf1\xcd\xdb\x85\x1a\x51\x10\x5f\x3a\x66\xaf\xe1\x62\x8f\xa3\xc9\xd9\xed\x79\x68\x9f\x0a\x10\x93\x7c\x62\x66\x35\x6a\x22\x53\xbc\xff\x05\x78\xe4\x49\x48\xdc\x09\xd3\xf7\x7f\x8e\xbe\xfb\x1c\xea\xee\x4f\xa0\xed\xfe\x15\x94\xdd\x6d\xe8\xba\x26\xaa\xee\xb6\x34\xdd\x3f\x4b\xd1\xd9\x4b\xd8\xc4\x97\x5f\x5d\x55\xc4\x76\x01\x31\xb2\x5f\x7f\x87\xef\x38\x80\xba\xed\x35\x6c\x20\x73\x36\x11\x25\xf5\x54\x82\x47\x4a\x54\x9b\x57\x6e\x76\xbd\x89\x2d\x91\x37\x03\x43\xeb\xb4\xfe\x3c\x42\xf4\x4f\x24\x43\x6f\x4b\x84\x5e\xb7\x36\x6a\x09\x84\x48\x9e\x95\x06\xff\xa4\x8c\xfc\x46\xb2\x2c\x20\xca\xae\xf7\x6b\xc3\x79\xd1\xdd\xab\x31\x20\x25\x00\xf7\x4c\x21\x41\x6d\x80\x42\x31\x11\x16\x13\xa3\xd1\x58\x19\x15\xe0\x44\x61\x97\x28\x1a\xd8\x50\x34\x5c\xc7\x99\xe5\xf9\xe1\x8a\x5c\x93\x30\x36\x0f\x12\xa5\x73\xe7\xb3\x27\x62\xa5\xcc\x9d\xbf\x9b\xea\x63\x6b\x2f\x20\x8d\x73\xab\xee\x56\xfc\x6a\x70\x89\x66\x97\x30\x71\x90\x81\xae\xed\xd1\x17\x0f\x7a\xdb\xec\xa2\xb4\x3d\x7a\xb8\xdb\xdb\x16\x46\x8d\xdb\xa3\x87\x5f\x5d\x9f\xf4\xbe\x78\x70\x9b\x58\xdb\x41\xf4\xdb\x4a\xf0\x7b\xb0\x23\x22\xf3\x21\x91\x0c\x20\xca\x4f\x03\x8b\x34\x0c\x74\x86\x1f\x30\xbd\x2a\x06\xa2\x83\x25\xf6\xa0\x17\x44\xc8\x9f\xd7\x0b\xda\x61\x9b\xe7\x5f\x45\xf9\xa9\xcd\x5f\x28\x7a\x35\x17\x6d\x63\x9f\xa6\xdd\x41\x7d\x3b\x21\x6a\xb9\x45\x17\xae\x07\x3e\x10\xb3\xcd\x0f\x3f\x33\xf7\x12\x26\x9d\xea\xfe\xde\x6a\x0d\xef\xdd\x6b\xa9\x7b\xea\x07\x8c\x02\xcb\x61\x7b\x5b\xea\xde\xb0\xe6\x20\xa6\x7a\x99\xeb\x49\x54\xea\x7d\xd7\x30\xca\xcf\xc8\xd7\x88\xd3\x4d\x93\xe0\x3f\xcd\x20\xd6\xc4\xaa\x00\xa3\xfa\x7b\xc2\x93\x0f\xe2\x83\xc7\x7a\xea\xb2\x1a\x60\xe4\x87\x8b\xc8\x7c\x87\x10\xb5\xe3\xb5\x9a\xea\x59\x64\x2e\x6e\x4b\xc1\x40\x47\x33\xf5\xff\x13\x77\x3d\xaf\x6d\xc3\x50\xf8\xde\xbf\x42\xcb\x25\x36\x74\xcd\x65\x49\xa1\x63\x30\xb6\xee\x38\x3a\xd8\x31\x98\x59\xb3\x65\xd7\xa4\x91\x83\x9c\x65\x2d\x25\xff\xfb\x78\x3f\xf4\x24\xd9\x86\x76\xec\xb0\x4b\x4b\xe8\xd3\xa7\x27\xf5\x73\xa4\x27\x3f\xbd\xaf\xc4\xc5\xf2\xfb\xb1\x77\xba\x35\x57\xb6\xbf\x65\x77\x00\x81\x8a\xf2\x94\x7c\xef\x2a\x04\x51\x49\x2e\xfc\x3c\x10\x9e\xf1\xbd\x88\x25\x63\x0f\x6e\x0f\x00\x47\x55\x95\xe8\x98\xd0\x52\x59\x7a\x12\x97\xec\xec\xa9\xdf\xd1\xd8\xe7\xbb\x75\xba\x32\xff\xd6\x2d\x75\xa1\xca\xaa\xb7\x43\xff\xc0\x90\x59\x5e\xfa\x23\x48\xd5\x37\xe1\x8f\xa8\xcd\x96\xe5\xa5\x77\xe8\xe3\x41\x3b\xbd\x57\xcf\x5e\x26\xeb\xac\x1a\xab\xde\xd2\x5b\x12\xff\x7f\xc1\x7a\xf1\xec\x40\xdc\x86\x9e\xc5\xb3\xda\x0f\x2d\x37\xe1\x9b\x09\x10\x56\xb9\xce\x4a\x82\x16\x77\x4e\x33\x52\x36\x16\x47\xc7\x33\x83\x80\x8e\x59\x11\xb9\xa1\xf1\x28\x75\x11\x46\xbe\x10\xc9\x03\x18\x4f\x63\x4b\x6c\xa9\x0f\x1d\x95\x96\xaf\x88\xad\xe2\xb4\x34\x54\x59\x63\x2f\xc1\xc7\x90\x8a\x58\xf5\xb6\xe9\xda\x6c\x99\x90\x67\x99\x8f\x1e\xb5\xc6\x26\x3b\x67\xe0\xa5\xa9\x7d\xea\x3c\x46\x78\x93\xbe\xea\x44\x49\xe6\x0d\x35\x49\x5f\xf8\xf8\xbe\xc7\x7c\x5b\xe6\x69\xb5\xb4\x54\xe2\x00\xdc\x97\x73\xaf\x10\x95\x09\xd8\x88\x45\x29\x58\x4a\x8c\x19\xa8\xa9\x29\x78\x9e\x5a\xf2\x6f\x99\x85\xb4\xfa\x55\x34\x69\xac\x4d\x83\xc2\x2b\x91\x48\x98\xcc\x25\x1b\x86\x39\xa3\x02\xd8\xf4\x45\xf2\xf9\xde\x54\xbb\x21\x7d\x46\x4a\x0c\xe9\xf8\xb4\x57\xa1\x6a\xfa\x20\x2a\x3b\x6d\x77\x02\x4e\xc1\x1a\x35\xe1\xb4\xe7\x27\xdd\x3a\x8d\x69\xf6\x89\xc0\xce\x81\x42\xae\x3b\x11\xbb\x63\x0e\xd1\xf4\xaa\x2c\x24\xa5\xad\x56\x4a\x57\x95\x19\x06\x2c\x6e\x49\xea\x90\xb1\xaf\x18\x42\x1c\x5d\xd7\xb6\xc6\x29\xad\x6e\xef\xbe\x7e\xc1\x5c\x42\x14\x81\xb0\x6a\xd0\xb6\xfe\xd9\x3f\x9a\x5a\x75\x8d\xd3\x7b\xac\x7f\x49\x3a\xbc\xc2\x99\x19\x50\x49\xe4\x15\xe6\x89\xa0\xec\x8f\x31\x67\xc5\xe2\x42\xae\xfc\xab\x0f\x73\x9e\x6e\x61\x50\x85\xdf\x8e\xc0\x7a\x02\xeb\xca\x49\x3f\x4c\x7b\xe3\xcf\x9c\xb9\x0b\x26\xe9\xb5\x6e\x5a\x1f\x81\x10\xcb\xf7\x13\x35\xc4\xff\xa6\x7c\x98\xfb\x65\x71\xfd\x9a\x65\x51\x88\xba\x7d\x57\x6c\xd7\x05\x04\xba\xc4\x63\x36\xb9\x0c\x4c\xc6\xfd\x4f\xfd\xeb\xb0\xb8\x59\x03\xfc\xe6\xaf\xe1\x37\x2f\xc3\x5f\xad\x78\xe7\xbf\xf2\x72\x30\x8b\x9b\xeb\xf5\x58\x9d\x11\x9d\xd8\xa4\xca\x8c\xe0\xd2\xf5\x6b\x5c\x9a\xac\xeb\xe6\xf1\x68\x6c\x4d\xba\x03\xf7\x7a\xb8\xfb\x6d\xbf\xa1\xec\xcd\xf1\x29\xa4\xcb\x85\xcd\x71\x6a\x11\x67\xaa\x13\x4e\x96\xe4\x45\x6b\xd7\xa2\x88\xf8\x33\x67\xac\xcd\x55\x2f\x1a\x2b\x7f\xcd\x96\x53\xa1\x7c\xf5\x58\x27\x6c\xdb\x15\x17\x62\x22\xb8\x3b\x83\xb1\xbb\xcf\x84\x9f\x16\x34\x49\xfd\x67\x9d\x43\x4e\x86\xdf\x99\xa7\x49\xfd\x0c\xfc\x56\xc6\x61\x78\xa9\x7a\xb2\xc6\x4f\x89\xe5\xb8\x66\x83\x24\xe9\xd1\xbe\x12\x31\x58\x93\xe6\x5c\xc0\x8f\x4b\xaa\x56\xf1\x27\x00\x00\xff\xff\x06\x84\xc6\x13\x89\xc3\x09\x00") +var _staticsJsBundleJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\xff\x7a\x1b\x37\xb2\x20\xfa\xb7\xf8\x14\x30\xcf\xac\xd8\xb4\x29\x52\x72\x32\x33\x09\x35\x8c\x8f\x62\xd3\xb6\x66\x6c\xc9\xc7\x92\x9d\xb3\xab\xe8\x48\x10\x09\x92\x6d\x37\x1b\x4c\xa3\x69\x99\xb1\xf4\x14\xf7\xdf\xfb\x74\xf7\x49\xee\x57\x55\xf8\xd9\xdd\xa4\x28\xd9\xce\x89\x77\xd7\x5f\xbe\xa8\x09\x14\x0a\x40\xa1\x50\x28\x14\x0a\x85\x68\x34\x4f\x07\x79\x2c\xd3\xa8\xf9\xc9\x7c\xb2\x2c\x12\xad\xb4\x95\x7b\x29\x32\x8a\x5b\xa3\xe6\xa7\x78\x14\xdd\x4b\x4f\xe2\x53\xfa\x12\xf8\xf5\x81\x67\x6c\xd0\xab\x1b\xd0\x7a\xaf\x97\x2f\x66\x42\x8e\x58\x26\x7e\x9b\xc7\x99\xd8\xdc\xd4\x1f\xbb\x50\x66\xb4\xb9\x39\x68\x66\x22\x9f\x67\x29\x1b\x44\x71\xeb\xde\x76\x13\xd2\xe7\x26\x6d\xae\xd3\x00\x2b\xef\xa5\xe2\x92\xf5\xb3\x4c\x66\x51\xfd\x31\x4f\x53\x99\xb3\x51\x9c\x0e\xd9\x54\x0e\xe7\x89\x60\x8d\xfa\x83\xf8\x41\xbd\x51\x6f\xee\xe6\x93\x4c\x5e\x32\xde\x1e\xc8\xa1\xe8\xd5\x5f\x1e\x3e\x79\xf3\xa2\x7f\x76\x70\x78\x7c\xf6\xf4\xf0\xcd\xc1\x93\x7a\x8b\x5f\x03\xbe\x59\x0f\xda\xde\xfb\x24\x3e\xce\x64\x96\xab\xee\xa7\xeb\xeb\x5d\xe8\xc3\xc9\xf6\x69\x7b\xc0\x93\x24\x9a\xb5\x75\x56\xcb\x52\x25\xa3\x0e\xa6\x3d\x04\xdc\x39\x3d\xc9\x4e\x77\x75\x53\x65\x94\x5e\x5d\x65\xcd\xeb\xd6\xac\xe5\x0a\x66\x2d\x22\xdd\xb5\x06\x82\x1a\x4d\xe6\xf5\x48\x66\x11\x60\x9b\xaf\x43\xae\x56\xdc\xdb\xde\x8d\xff\x91\xb7\x13\x91\x8e\xf3\xc9\x6e\xfc\xe0\x41\x53\x46\x39\xd0\xdc\xb6\xc0\xd4\x92\x5d\x37\xa3\x66\xf4\x69\xa7\x7b\xe2\x1a\xae\xb1\x10\xad\x5a\xba\x09\xcd\x4f\x35\x3b\xe2\x2c\x1a\x27\xf2\x82\x27\xcd\x4f\xb5\xfa\x5c\x09\xa6\xf2\x2c\x1e\xe4\xf5\xdd\x5a\xe7\x7e\x8d\xdd\x67\x8f\xe5\x6c\x91\xc5\xe3\x49\xce\xa2\xc7\x4d\xf6\x70\x7b\xe7\x07\xf6\x5a\x0c\xd9\x73\x9e\xb7\xd8\x7e\x3a\x68\xd7\x18\x82\xbd\x88\x07\x22\x55\x62\xc8\xe6\xe9\x50\x64\x2c\x9f\x08\xb6\x37\xe3\x83\x89\x30\x39\x2d\xf6\x56\x64\x0a\xea\x7b\xd8\xde\x66\x11\x00\xd4\x75\x56\xbd\xb9\x0b\x28\x16\x72\xce\xa6\x7c\xc1\x60\x7c\xa1\x21\xf9\x24\x56\x6c\x14\x27\x82\x89\x8f\x03\x31\xcb\x59\x9c\xb2\x81\x9c\xce\x92\x98\xa7\x03\xc1\x2e\xe3\x7c\x82\xf5\x68\x2c\xd0\x12\xf6\x3f\x35\x0e\x79\x91\xf3\x38\x65\x9c\x0d\xe4\x6c\xc1\xe4\xc8\x83\x63\x3c\xd7\x6d\x86\x7f\x93\x3c\x9f\x75\x3b\x9d\xcb\xcb\xcb\x36\xc7\xf6\xb6\x65\x36\xee\x24\x04\xaa\x3a\x2f\xf6\x1f\xf7\x0f\x8e\xfa\x5b\x0f\xdb\xdb\xba\xd0\x9b\x34\x11\x4a\x99\x61\x1a\xb2\x8b\x05\xe3\xb3\x59\x12\x0f\xf8\x45\x22\x58\xc2\x2f\x99\xcc\x18\x1f\x67\x42\x0c\x59\x2e\xa1\xcd\x97\x59\x9c\xc7\xe9\xb8\xc5\x94\x1c\xe5\x97\x3c\x13\x80\x66\x18\x03\x9d\x2f\xe6\x79\x40\x32\xd3\xc4\x58\x05\x00\x32\x65\x3c\x65\xf5\xbd\x23\xb6\x7f\x54\x67\x3f\xef\x1d\xed\x1f\xb5\x00\xc9\x2f\xfb\xc7\xcf\x0f\xdf\x1c\xb3\x5f\xf6\x5e\xbf\xde\x3b\x38\xde\xef\x1f\xb1\xc3\xd7\xec\xf1\xe1\xc1\x93\xfd\xe3\xfd\xc3\x83\x23\x76\xf8\x94\xed\x1d\xfc\x4f\xf6\xaf\xfd\x83\x27\x2d\x26\xe2\x7c\x22\x32\x26\x3e\xce\x32\xe8\x81\xcc\x58\x0c\xc4\x14\x43\xa4\xdc\x91\x10\x41\x13\x46\x92\x9a\xa4\x66\x62\x10\x8f\xe2\x41\xc2\xd3\xf1\x9c\x8f\x05\x1b\xcb\x0f\x22\x4b\xe3\x74\xcc\x66\x22\x9b\xc6\x0a\xc6\x54\x31\x9e\x0e\x01\x4b\x12\x4f\xe3\x9c\xe7\x98\x54\xea\x96\xe6\x95\x4e\x0d\x98\xff\xec\x4c\x7c\xcc\x45\x3a\x54\xac\x07\xdc\x10\x2b\xb6\xb9\x89\x43\xde\xb6\x39\x4d\x76\x75\xc5\x3c\x3e\x6d\xb2\x4f\x35\x18\x33\x28\x4e\x20\x47\x50\xd7\x00\x50\x1c\x5e\xbc\x13\x83\xbc\xad\x44\xfe\x2a\x93\xb9\x84\xc9\x74\x38\x62\x57\x57\x58\x00\xfe\x45\x9f\xd8\xd9\xd9\x0c\xf2\xce\xce\xba\xec\xe4\x94\x5d\xb3\x38\x55\x39\xb0\x92\x1c\xb1\xbd\x2c\xe3\x0b\x68\x81\xab\x6d\xd8\x62\x17\x4d\xf6\x89\x0d\xdb\xb6\x1c\xeb\xb1\x8b\x5d\x76\xdd\xf4\xf1\x96\x0b\x00\xe5\x70\x7e\xcf\x60\xf4\x2f\x9a\x2c\x1e\xb1\xe8\xa2\x3d\xe1\xea\xf0\x32\x7d\x95\xc9\x99\xc8\xf2\x45\x34\x6b\x36\xd9\xf0\x64\x76\x0a\x38\x4f\x66\xa7\xbb\xec\x7a\x17\x71\xea\xa9\x5c\x42\x6b\x2b\x0c\x7a\x4e\xb9\xbb\xe5\xd6\x9c\x9d\x01\xb9\x88\xa0\x03\x99\xaa\x3c\x9b\x0f\x72\x99\xb1\x1e\x1b\xee\xb2\x6b\x0b\x3f\x6c\xcf\x0c\xb9\xa0\x21\xac\xd7\xeb\xb1\x74\x9e\x24\xec\x91\xa1\xe8\x20\x13\x3c\x17\xd1\x45\x93\x75\x59\x74\x76\x16\xc2\xbb\x5f\x2d\x06\x42\x1a\x6a\xd5\xad\xb9\xde\xad\x81\x34\xda\xad\x69\x3c\x43\x31\x8a\x53\x61\xbb\x6f\x04\x25\xab\x9f\x9d\x09\xf5\x12\xa5\x53\xbd\xc5\x3e\xb1\x0f\x3c\x99\x8b\x2e\xcb\xb3\xb9\x60\xd7\xcd\x5d\xe4\x95\x29\x7f\x2f\x5e\x8b\xdf\xe6\x42\xe5\x8c\xda\x47\xe9\x6f\x52\x3e\xcf\x27\x32\x8b\x7f\x17\x43\xd6\x63\x75\xff\x77\x9d\x40\xde\xa9\x7e\xfa\x81\xf5\xcc\x7c\x8d\xea\x17\x99\xbc\x54\x22\xdb\x92\xd9\x56\x2a\x87\x28\x7b\x60\x7c\x10\xce\x67\xb0\xdf\xe6\x22\x5b\xc0\x14\x4c\xc7\x5e\xf1\xc6\x6f\xaa\xa1\x3b\x08\x40\x43\x31\xe2\xf3\x24\x57\x4f\x84\x98\xf9\x50\x89\x1c\x72\x35\x69\x9b\xec\xa1\x10\x33\x53\xac\xd3\x61\xbf\x4c\x44\xca\xe6\x0a\x30\x43\x13\x5a\xec\x52\xa0\xc0\x4b\xf9\x3b\xfe\x11\xd9\xe7\x2f\x6d\xfc\x84\xd5\x48\x61\x29\xdb\xc4\x76\xac\x0e\xe4\x50\x00\xab\xde\x33\x09\x3f\x53\x97\x7c\x26\xc1\xc5\x0a\x71\x78\xad\xc2\x84\x86\xc7\x2d\x24\xf8\xdb\x7f\x61\x3d\xf6\x89\xd5\x21\xb7\xde\xd5\xc5\x34\x37\x12\xa7\x84\xf4\x77\xac\x39\x48\x62\x91\xe6\x2d\x36\xcf\x92\x16\x9b\x8a\x7c\x22\x87\x2d\x36\xe4\x39\x6f\x31\x39\xcb\x95\xdf\x20\xb3\x0e\x8a\x4b\xf6\x2a\x93\xd3\x58\x09\x6f\x62\x67\x42\xc9\xe4\x83\x68\xb1\x4c\x00\xaf\xf8\xe5\xbc\xb2\x44\x94\xc8\xa7\x79\x04\xd5\xb4\x0a\xe0\xc8\xd7\x3c\xe7\xc7\x8b\x99\xe8\xb2\xfa\x3b\x25\xd3\x7a\xab\x04\x31\xcf\x92\x2e\xa3\x0e\xb4\x2f\xb8\x12\x6f\x5e\xbf\x60\x0f\xb0\x27\x95\xc8\xba\xd4\xaf\x52\xde\x40\xa6\xb9\x48\x73\x5d\x97\x5e\x09\xa0\x57\x1d\xa8\x77\x97\x0d\x26\x3c\x53\x22\xef\xcd\xf3\xd1\xd6\x0f\x15\xcd\x20\xaa\x75\xf5\xdf\x20\xfb\xba\xd9\x2c\x81\xb7\x47\x3c\x4e\x3c\xca\xbd\xfb\xed\x3f\x9f\xbf\x2e\xd2\xcb\x32\x0c\x64\xb6\x55\xce\xf3\xb9\x62\xbd\x1e\xfb\x7e\x7b\xa7\x0a\x94\x48\x0c\x84\x8f\xfc\x09\xe4\xf1\x89\x6d\x51\x29\x45\x24\x4a\xac\x46\x49\x2d\xbc\x09\xd7\x75\x45\x57\x87\x32\xf5\x99\x84\xf8\x8a\x7a\x73\x2c\x3e\xe6\x2d\xb6\x7e\xe7\x7f\xea\xb1\x87\xdb\xdb\x30\x69\x82\xe4\x7f\xb0\xef\xb7\xb7\x97\x91\x04\x15\x5a\x29\xdf\xc7\x20\xe9\xa8\xd8\x58\xe4\xaf\x85\x9a\xc9\x54\x89\xe7\x82\x0f\x45\x16\xd5\x8f\x44\xbe\xf5\x18\xa1\xea\x15\x9d\x34\x8d\x21\x3c\xcb\x6a\x82\x7f\x9a\x13\x6d\x85\xf4\x51\x8d\xb1\x3c\x0c\x0c\xe9\x8d\x93\x48\xd3\x69\x3d\xb2\xb3\x2f\x3a\x84\x0e\xe2\xda\x5b\x04\x6a\x5e\x05\x20\xfc\x44\x23\x13\x2c\x9b\xa7\xa8\x42\xc4\xa9\x8a\x87\x82\x1d\xe6\xb9\x6c\xb3\x5f\x84\xd6\xfb\x04\x6b\x64\x24\x6e\x1a\xfe\xc4\xe8\x74\x18\x2d\x1b\xa4\x76\x1d\xbd\x5f\x0c\xe3\x0f\x00\xcf\x73\x14\x51\x0a\x8b\xcb\x11\x62\x78\xdd\x3f\x3a\xd6\x54\x35\x85\x95\x04\x49\x3b\x16\x39\x53\xf3\x19\xe0\x41\x59\x0b\x1c\x2f\xd2\x5c\x4f\xdb\xdb\xcb\xbb\x0b\x39\x5c\x94\xe5\x1d\xae\x0e\x3c\xe7\xbb\x41\x8a\x9c\xe7\xb3\x79\xae\x65\xb2\x50\x79\x54\xc2\xe4\x11\x11\x18\x47\x17\xd8\xdc\xd4\x45\xf5\x2e\x80\xfd\xc4\x4a\x7c\x0b\xb5\xb1\x1e\xfb\xe7\xd1\xe1\x41\x7b\x06\x42\x47\x17\xf6\x87\xa5\xb6\x62\xd0\x75\x79\x5a\x5d\xcb\x25\xb4\x10\xfe\xc4\x1a\x40\xae\x46\x97\x05\x7a\x99\xc9\xc6\x2e\xb3\x6b\xbb\x7c\xc0\xf8\x5b\xc0\x19\xcf\xf8\x54\x1d\xe1\x9a\x1a\xd1\x0f\x7f\xc5\x05\x35\xae\x5e\xa7\x82\x4e\x87\x02\x30\xd0\xa3\x42\x78\x43\x1f\xca\xbe\xd7\xeb\xb1\xfa\x76\xbd\x48\x11\xc5\x1e\xf4\x58\xbd\xc5\xea\x55\xfd\x51\x97\x71\x3e\x98\xb0\x48\x6f\xbb\x08\xfd\x09\xfe\x39\x2d\x22\x1a\x70\x25\x58\x9d\x94\x81\x7a\xb7\x34\x0f\xb0\x9e\x46\xbd\xc1\x1e\x84\x68\xd8\x03\x48\x2d\xcf\x9b\x8b\x4c\xf0\xf7\x61\xb2\x5e\xd4\x96\xe0\x0e\xb0\xde\x88\xef\xda\x5b\xb9\xf5\xb0\x28\x18\x87\x4e\x87\xbd\xc6\x9f\x8a\x71\xa6\x35\x1b\x3d\x59\xe2\xf4\x83\x24\xfe\x87\x94\x06\x31\x64\x83\xb6\x58\x71\xae\xa8\x01\x22\x17\x99\x62\x0d\x6a\x4c\x03\xd0\x25\xf1\x7b\xc1\x5e\x2e\x5e\x22\x78\xb4\xd3\x62\x0f\x5b\xac\xae\xea\x4d\x37\xe4\xa0\xc1\xe8\x01\x27\xa4\xfe\x80\x13\x26\xd6\x63\x27\xa7\x85\x51\x3f\x8b\x59\x8f\xed\xec\xc2\xdf\x7f\x30\x9e\x8d\xe7\x53\x91\xe6\xca\x6c\x81\xd9\x19\x6c\x82\xbd\x31\xd2\xf4\x39\x8b\xd9\x16\xdb\x01\x8d\xda\x16\x39\x39\x8b\x4f\x7d\x4d\xc6\xf0\x19\x35\x86\x3d\x60\xf5\x48\x73\x87\x47\xe8\x90\x43\xbd\xec\x7a\xb3\xbe\x5b\x22\x2b\xa0\x3c\x12\x59\xcc\x93\xf8\x77\x24\xe1\x73\x91\xcc\x04\x68\xda\x9d\xfb\xf7\xd9\xbf\x0f\x12\xae\x14\xbb\xdf\xa9\xda\xc8\xd8\x94\x8a\xf2\x16\x88\x1a\x5e\x01\xd1\xce\xe5\xbe\xde\xc1\x04\x52\x4a\x5e\xbc\x6b\x31\xd0\x3e\x0e\x2f\xde\x15\xe7\x8b\xe6\x76\x79\xf1\xee\xa4\x3e\xca\xe4\x14\xa4\x45\xfd\x14\xd5\x7e\x67\x8b\x28\xb2\x7f\x01\x3a\x32\xb8\xd7\x14\x2c\x6e\x2e\x67\x72\x76\xc0\xa7\xc0\x6e\x55\xed\xf3\xab\x33\xa0\x30\x98\x1a\xd4\xa5\x85\x33\xe0\x7a\xb9\xb0\x92\x17\xef\xac\x1c\x5a\x46\xc4\x79\x3a\xe5\x99\x9a\xf0\x84\xb6\x80\x3e\x21\x69\x25\x1d\x14\xc5\x7a\x9c\x8b\x80\x6b\x83\x3e\xca\x8b\x77\xd0\x3d\x28\x5a\xec\x1b\xea\xe4\xe2\xf2\x98\xf5\x6e\x18\xcd\x08\xb4\xe4\x41\xd4\x24\x5d\xfa\x44\x5e\xbc\x3b\x2d\xac\xbe\xd8\x84\xf6\x6c\xae\x26\x00\x7b\x5c\x39\x12\x9a\x06\x08\xba\x3e\x15\x5e\xf2\xd9\xad\x09\xf1\xe9\xba\x82\x10\xef\xc5\x62\x19\x21\xb0\xdc\xc9\x7b\xb1\x80\xd1\xc5\x1d\x6a\x38\x08\x58\x1f\xe6\x43\xa5\x5f\xb4\x6f\x9f\xdd\xad\x3f\x70\x7c\x31\x03\x56\x64\x71\x79\x7c\x2b\x22\xe8\x8c\x8a\x46\xec\xd6\xae\x71\x83\xae\x77\xdf\xed\x6a\xb9\x55\x59\x10\x7a\xb7\xf7\x6a\x9f\x76\xf3\xab\x84\xdb\x99\x9a\xcf\xdc\x66\xd4\x1a\x73\x22\x5b\xb8\xc5\x34\xc8\x6e\x28\x04\x2d\x40\x54\xb1\x71\xa4\x22\xb8\xd2\xa3\x7d\x62\x73\x53\x27\xb5\x61\xcf\xb5\x40\x0b\x52\xcb\xc9\x7d\x34\x1d\x41\xda\x6e\x79\x31\xb4\xf5\x00\x35\xe8\xcb\xa7\x89\xdf\x49\x0f\x14\xfb\x9f\x88\xec\x6e\x7d\x87\x82\x4b\xfb\x0d\x99\x5f\xbb\xcf\x50\x07\xf4\xd7\xf6\x28\xe8\xb2\xee\x97\x86\x82\xae\xfe\x22\xb3\xf7\xa3\x44\x5e\xde\xa5\xb7\xa6\xec\xb2\x0e\x9b\xfc\xaf\xdc\x67\x53\xcd\xd2\x6e\x7b\x7d\x74\xb0\x9a\xcf\x6f\xb5\x7c\xef\xbd\xda\xb7\x7b\x03\xd8\x86\xcd\xb3\x81\x28\x08\x16\x32\xc4\x21\x0c\xec\xee\xf0\x63\x37\xcc\x7d\xad\x4b\xe2\xf6\x80\x3e\x0b\x10\x4f\xf9\x20\x97\x19\xc8\xe6\x81\xdf\xdf\xbd\x57\xfb\xce\x10\xa7\x0d\x76\x45\x8d\xa0\x28\xe4\x32\x57\x59\x50\xf9\x6e\x71\x40\xbc\x86\xb7\xcd\xae\xa5\xde\xe1\xb3\xb8\x53\x67\x0f\xbc\xde\xd6\x5f\x1d\x1e\x1d\xd7\x5b\xb4\xff\x20\xed\x32\x1e\x2d\xb0\xea\x16\xfb\x54\xd8\xdf\xb7\x61\x0f\x51\xd8\xdb\x2f\xb1\xfa\xac\x21\x4a\xe5\xc5\x3b\xdf\xc6\x69\x04\x6b\xf5\x7e\xb4\x4c\xb0\x24\x2e\x6c\xf3\x6e\x4f\x2b\x80\x1a\xd9\xc1\xf1\xc7\x6a\x2d\x7a\x36\x90\x9e\x8d\x90\x9e\xcf\xfa\x40\xce\x7a\xfd\x6e\xd4\xf3\xdb\x5d\x5c\xcc\xd8\x9a\x0b\x5a\x11\xcf\xd9\xce\x7a\x4b\x9b\xa6\xc4\xaa\x05\x8e\x69\x83\x05\x36\xcf\x2c\x74\xae\x9e\x65\x1a\x9e\x47\x47\x5b\x7a\xcd\x51\x86\x6d\xbf\x3f\xc8\xf1\xf0\x4f\x30\xcc\xb0\x01\xc1\x79\x14\x0f\x3f\x7b\xc4\xd7\x9f\x2f\x85\xf1\x59\x77\x9e\x0c\x45\x22\x0a\x82\xe5\x2e\x44\xfc\x0c\x02\x3d\xe9\xbf\xe8\x1f\xf7\x0d\x8d\x58\xdd\x58\x79\xeb\x5d\x56\xaf\x17\x1b\xef\x56\xfb\xa2\xd6\x43\xe2\x1d\x33\xa0\xc9\xcf\x32\x3e\x9b\xf4\x13\x31\x25\xd9\xbc\xbe\xd8\xf7\x0b\x16\xb6\x6b\xba\x72\x1f\xa2\xd8\x8a\x42\xb5\x21\xa8\x6d\x17\x1a\xfb\xef\xb0\x06\xdb\xc2\xcb\x16\x61\x0b\xf0\x95\x57\x61\x5b\x0f\xf4\xdf\xef\x64\x89\x16\xba\xab\x5e\x01\x37\x3a\xc3\xf1\xdd\xa9\x00\x85\x57\x52\x01\x00\xfe\x08\x2a\x40\x3d\x37\x52\x41\x77\xd5\x2b\x60\xa9\x70\x7b\xe6\x8c\x52\x39\x14\xaa\xc5\xc4\x70\x2c\x54\x49\x1d\xc1\x4c\xd8\x60\xe0\xdf\xab\xab\x60\x91\x40\x08\x2c\xc7\x7a\x54\xde\x87\x28\x77\xae\x92\xbd\x4d\x47\x4c\x27\xc4\x34\x89\xd3\xdb\x6a\x57\xae\x98\x56\xb2\xd6\xd3\xab\xa8\x89\xae\xb0\x27\xc9\xf0\x6c\x2f\x10\x64\x55\x67\x55\xcb\x25\x54\x2e\x67\x32\x91\xe3\x45\x63\xa9\xda\xf3\x89\x35\x74\xcd\xff\x01\x75\x35\xba\x4c\xb1\xeb\x3b\x2a\x42\xf1\x88\xd2\xed\xe1\x6c\xf9\xac\x44\xb7\xf8\xa4\x60\x1a\x41\x8b\x9f\x9a\x27\x39\x1b\xf0\x94\x5d\x08\x76\x02\xf3\xea\x94\xc9\x8c\x9d\x9c\x90\x70\xc0\x84\xd3\xca\xfa\x3c\x5b\x33\xb0\x3e\x2e\xe5\xdb\xa7\xa5\x53\xf3\x72\x6b\xb4\x25\x59\x17\xd8\xad\x5a\xa5\x42\xd3\x78\x41\x72\x57\x8e\xd9\xb3\xa5\x2a\x9a\x77\xb4\xf8\x0c\xe7\x64\xe5\x3a\xe0\x90\x96\x39\xd5\x63\x4b\x1f\x0c\x2d\x91\x2f\x45\xce\x75\x87\xd6\x67\x59\x5b\xaa\xa4\x4b\x96\x6c\x9e\xac\x64\xf7\xdc\x5e\xdb\xee\xc9\x7c\xdb\xe7\x12\xbb\x27\x0b\x14\x28\xe4\x69\xdb\x06\xfa\xf0\xa7\x8b\x6d\xb8\x47\xf9\x5c\x1e\x99\x63\xf0\x95\x03\x50\xb7\x9d\xae\x5b\x4b\xb8\x36\xa5\x7a\xd5\x36\x61\x49\x37\x76\xd4\x70\x88\x6c\xe5\xc5\x11\xf2\x07\xc1\x03\xb2\xad\x29\x51\x7b\x0d\xeb\xf2\xfa\x54\xbe\x89\xc2\x81\x2c\x04\x2e\x8c\x1c\x15\x2f\xe2\x74\xa8\x57\x0b\x9b\xd8\x62\x27\x1f\x64\x3c\x64\xdb\xa7\xb0\x6b\x19\xf0\xdc\x58\x9a\x9b\xe8\x2f\x71\x6d\xbb\xed\xf5\xda\x75\x1a\xcd\xcd\x39\xba\x1b\xdc\xc2\xbe\x9c\x8b\x59\xc4\x67\x71\x8b\xcd\x32\xf1\x21\x96\xf3\xf2\x41\x8a\x4e\x47\x21\x43\xcd\x6b\xb2\x4f\xcc\x25\xd3\xc1\x90\xc7\x4a\x6b\x72\xf3\xc3\xbb\x71\x33\xdb\x62\x0f\xd7\xe7\x68\x3e\x83\xaa\xf8\x2c\x2e\xac\x5f\x5e\xf3\xcd\x67\x11\x62\xf9\x5c\x00\xa2\x79\xd3\x20\xe5\x53\x51\x9c\x02\x96\xf5\xf7\xd3\x0f\x3c\x89\x87\x50\xa4\x6e\x5d\x79\x0a\x08\x6e\x9c\x47\x68\xa0\x0f\x9a\x6d\x54\x8f\xaa\xdd\xdd\x98\x24\x95\x51\xb4\x4d\x19\x5b\x4d\x84\x33\xad\x5d\xaf\x94\xbf\xa6\xf0\x03\xef\x84\x46\xf3\x29\x0d\x7e\x8b\x9d\x90\x8e\xc0\xa7\x22\x6a\x5a\x4e\xf5\x27\xf2\xba\xf6\x7f\x7f\x39\x25\x74\xa5\xb3\xaa\x4a\x7a\x29\xbd\x93\x11\x25\xa3\xed\xb2\xc5\xda\xd2\xc0\x16\x8d\xbc\x0d\x4e\x75\x2d\x19\x2d\x90\xab\xf6\xff\x7a\x0e\x1a\x4e\x23\xf5\x81\x48\xe1\x88\xdd\xac\xde\xe1\xac\x6a\x89\xd9\xb1\xe5\x62\x56\x32\xcc\xd2\x0c\xa7\x2c\xd4\x9d\xee\xa4\xfe\x2e\x55\x7b\x41\x18\x2c\xd5\x78\xc9\x0b\x56\x6b\xb7\x00\x57\xa1\xd7\x3e\x5b\x77\x66\x3c\x73\xf3\xe1\xd9\x5d\x07\x37\xe4\xa7\x3a\xe8\x2c\xaa\xde\x5d\xe3\x38\x27\xd2\x3a\x48\xfb\x80\xf4\x60\xbb\xb7\x68\x86\x9e\x38\x75\xd0\xb4\x6f\x89\x12\x8b\xb4\x9c\xa2\xee\xa1\xbc\x0e\xd5\x19\xaf\xdb\x8f\x65\x9a\x8b\x8f\xab\xd9\xed\xbf\x59\x45\xf0\x16\x32\xdd\xda\xc8\x70\x7e\x73\x69\xbf\xde\x7e\x23\x3d\x8a\xde\xfa\x4b\xf2\x5b\xbb\x14\xb7\xec\xec\xa6\xaf\xea\xa5\x79\x49\xe7\xfb\xdf\x4a\xe7\xfb\x7e\xe7\xfb\x77\xef\xbc\x51\xa9\x41\x6a\x81\x88\x0a\xb4\x69\x50\xa2\x49\x66\x39\x66\xbf\xb5\xe4\xd2\x45\x97\xc9\x2f\xc3\x98\xff\x7b\xaa\x34\x58\x11\xba\x44\xf7\xd6\x92\xc8\x48\xba\x9b\xf5\x9d\xb3\xe5\x0a\x8f\x37\xa8\x67\x45\x49\xaf\x69\xbd\xae\xbc\xd7\xe0\xf5\xa2\x43\xb3\x4e\x47\xfb\x87\xcf\x2f\x8e\x49\x2c\x04\xaa\xb8\xf3\x8b\xf1\x4d\x36\x8f\x65\xcc\x63\xca\x2e\xe3\x1e\x93\xff\x35\xd8\xe7\x2b\x8c\xdb\xb2\x81\x31\xdd\x58\x77\x64\x0c\x7c\x69\x68\x4c\x46\x69\x6c\xbc\x41\x70\x30\x6e\xd7\x15\x7f\x8c\x53\xdc\x59\xfc\xcc\x95\x68\x31\xa8\xdc\x10\x51\x63\x5e\x73\xe8\xc2\xe1\x43\xf8\xb3\x9d\xc2\xe8\x05\x23\xa8\x41\xa2\x2a\xbd\x98\x67\xe3\xe2\xf4\x2d\x4f\xe1\xdb\x49\x5c\xf8\x07\x68\x57\xcb\x5c\xb6\xec\xa8\xa2\xda\x68\x58\xb4\x17\x86\xc5\x75\x0f\xd7\x1c\x5b\xc8\xb3\xa3\xea\xd5\xac\xb1\x68\xae\xc1\x71\x6a\x36\x8d\xd3\xd2\xdb\xbb\xcc\xad\xb7\xcb\x26\xd5\xdb\xaf\x65\x41\x7d\xbb\x2e\x7f\xbf\x75\x8c\xfd\xf6\xae\x9a\xe6\x9a\xfa\x9f\xaf\x49\x06\x2b\xa3\x5f\xf1\x73\xae\xbe\x15\xc5\xe0\x39\x57\x81\x62\x04\xbf\xef\xae\x1e\x14\x88\xd0\xa7\x7b\x47\xdf\x0e\x29\xa8\xc1\x45\x82\xe8\xd4\x2f\x46\x96\x7f\x89\xc5\x37\x44\x93\x7f\x89\x45\x91\x20\x90\xf4\xc5\xa8\x71\x20\xbf\x95\x4d\x51\x44\xad\x2d\x52\x03\x92\xbe\x0c\x35\x9e\x88\xe1\x7c\xf6\xad\x10\x03\x1b\x1b\xd0\x82\x52\xbe\x0c\x29\xf6\xd3\x6f\x85\x0e\xfb\xa9\x4f\x83\xfd\xf4\xcb\xf4\xff\x70\xfe\xcd\xcc\x8a\xc3\x79\xee\x53\xe0\x70\x9e\x7f\x19\x12\xfc\x2c\xf3\xc9\xb7\x42\x03\x68\xab\x4f\x04\xf8\xfd\x65\xa8\xf0\x9a\xa7\xe3\x92\xe6\xf3\x67\x25\x03\x36\x36\x90\x09\x94\xf2\x65\x48\xf1\x22\x9e\xc6\xdf\xcc\xac\xc0\xc6\x06\xa4\xa0\x94\x2f\x25\x1e\xbf\x19\xd3\xd3\x7e\xda\x0f\x05\xe4\x67\x98\x9f\x0a\x12\xf2\x9b\xa1\x01\xb4\xb5\x20\x23\xbf\x10\x15\x40\xd0\x7c\x33\x64\xc0\xc6\x16\xc5\xe4\x17\x22\xc4\xd1\x44\x66\xb9\x50\xf9\x2b\x9e\x4f\x8e\xe5\xb7\x42\x11\xbf\xd5\x3e\x61\xfc\xf4\x2f\x44\x1f\x67\xd1\xb9\xd1\x99\xc2\x9a\xc9\xc2\xfa\x96\x23\x7f\x2c\xe7\xe9\x72\xc9\x1c\x9c\x2b\xcc\xd3\x7c\x6d\xb4\x6f\x79\x32\x17\xdf\xcc\x56\x9a\x5a\x1b\x9c\x32\x60\xca\x97\x19\xbf\x7f\x89\xc5\x37\x43\x09\x68\xab\x4f\x07\xf8\xfd\xa5\xb8\x78\xfa\x7f\x89\x70\x24\xb3\x6f\x46\x0d\x82\xb6\x06\x5a\x10\x26\x7c\xf6\x01\xd4\xdb\xaa\x03\xa8\xb7\xac\x07\x19\xd0\xc7\xfe\x5d\x2c\x9c\xfd\x65\x16\xce\xfe\xd7\xb2\x70\xf6\xd7\xb5\x70\xf6\x9d\x85\xb3\xff\xc7\x58\x38\xf1\x60\x3b\x20\x7d\xff\x9b\xb5\x70\xf6\x8b\x06\xbd\xbb\xf3\x5f\xff\x7f\x0b\x0b\x67\x89\x20\x94\xfa\xc5\xc8\xf2\xcd\x59\x38\x8b\x04\x81\xa4\x2f\x46\x8d\x6f\xce\xc2\x59\xa4\x06\x24\x7d\x19\x6a\x7c\x7b\x16\xce\x7e\xc9\xc2\xf9\x85\x48\xf1\xed\x19\x76\xfa\x25\xc3\xce\x17\x22\xc5\xb7\x67\xd8\xe9\x97\x0c\x3b\x5f\x88\x14\xfb\xe9\x37\xe3\x50\xb5\x9f\xbe\x0d\x0d\x3b\x9f\xa1\xd6\xf5\x43\xc3\xce\x37\x43\x03\x68\x6b\xc1\xb0\xf3\x85\xa8\xf0\xb3\xcc\x27\xdf\x0c\x19\xb0\xb1\x45\xc3\xce\x17\x22\xc4\x17\x37\x5c\xf4\xbf\x8e\xe1\xa2\xff\x7f\x0d\x17\x95\xb4\xf8\x3f\xd7\x70\xd1\xff\x86\xf7\xec\xfd\xe2\x9e\xfd\xf3\x9d\x46\xfb\x55\x7b\x76\xd8\xa8\xf7\x69\xcf\xfe\x9c\xab\x3b\x39\x26\x91\xcb\x4a\xf5\xce\x1d\xf2\xbe\xf2\x05\x4f\xa8\x02\x7a\xe6\x9c\xe2\xde\xb6\x58\xfd\x39\x57\xf5\x66\xb3\x69\x7b\x76\x27\x83\x04\x6d\x55\x97\xf6\xec\xab\x99\x25\x5c\xcf\xfa\x61\xcf\xfa\x55\x3d\x23\xef\x98\xbb\xf6\xcf\xf8\xd6\x2c\xef\x25\x41\xfc\x01\x7d\xa5\x8a\x2a\xc7\x92\xf2\x2a\xfa\x7d\xe7\x71\x35\x3b\xee\x1b\xfa\xfd\x47\x8c\x31\x55\x54\x39\xd2\x15\xfd\xfe\x97\x58\xdc\x75\xb0\xc9\x6f\x68\x69\x8f\x21\xfb\xeb\x77\x17\x6a\xa9\x1c\xe3\x7f\x89\x45\xb1\xa3\x77\x1d\x5d\x32\x1f\xac\xea\xe8\x1f\x30\xae\x50\x4b\xe5\xa0\x16\x3b\x7a\x20\xf3\xbb\x8e\x28\xf9\x3e\x2d\xed\x28\x64\x7f\xfd\x8e\x42\x2d\x95\x23\x7a\x20\xf3\x62\x47\xef\x3a\xa2\x64\x02\x59\xd5\xd1\x3f\x60\x44\xa1\x96\xca\x11\x0d\x3a\x4a\x6e\x58\x77\xe9\xa7\x71\xe0\xaa\xee\x26\xe5\x7e\xe5\x5e\x52\x25\xe5\xd1\xc4\xf4\x42\x1f\xef\x34\x96\xc6\x84\xb3\xa2\x8f\x5f\x7b\x24\xa9\x92\xf2\x40\x16\xfa\x48\xae\x33\x77\xe9\xa3\x71\xba\xa9\xee\x23\xe5\x7e\xe5\x3e\x52\x25\xe5\x71\xc4\xf4\x42\x1f\xef\x34\x8e\xc6\xfe\xb4\xa2\x8f\x5f\x7b\x1c\xa9\x92\xf2\x38\x16\xfa\x48\x7e\x3f\x77\xe9\xa3\xf1\x18\xaa\xee\x23\xe5\x7e\xe5\x3e\x52\x25\xe5\x71\xc4\xf4\x42\x1f\xef\x34\x8e\xc6\x78\xb6\xa2\x8f\x5f\x7b\x1c\xa9\x92\xf2\x38\x16\xfa\x88\x27\x97\x77\xba\x95\x44\x47\x9e\x4b\xae\x24\x41\xe6\x57\xee\x20\xd6\x51\x1e\x43\x48\x0e\xbb\x77\xa7\x11\xd4\xbb\xc3\xe5\xdd\xfb\xda\xe3\x87\x75\x94\x87\x2f\xec\x1e\x39\xd4\xde\xba\x73\xe8\xcd\x5a\xdd\xb5\xc3\xf9\x57\x8b\xdd\x78\x38\x5f\xfb\xd6\xdd\xe1\xbc\x7c\xe3\xee\x70\x8e\xb7\xed\xde\xfa\x1b\x6d\xea\x3f\xe6\x00\x39\xd0\xbf\xfa\xd6\xd4\xd8\x4f\x97\x11\x63\x3f\xfd\x5a\xb4\xd8\x4f\xd7\x0f\xc5\x50\xa2\xc4\x7e\x5a\x22\x04\xf6\x1c\xd2\x81\x0c\xda\xc7\xf8\xd6\x84\x20\xff\xde\x6a\x52\x40\xde\xd7\x22\x06\xfa\x19\xaf\x49\x0e\x80\x2d\x11\x04\x12\x4b\x24\xd1\x54\xa0\x3c\x3d\x59\xee\x24\xe9\xc8\xfc\xbd\x74\xba\x7c\x35\x39\x87\x66\xf8\xf5\x27\xcc\xdb\xaa\x19\xf3\xb6\x6a\xca\xbc\xa5\x39\xf3\xd6\x4c\x9a\x3b\x51\x05\x4f\x46\x96\x4d\x9b\xaf\x46\x93\xfd\x74\x6d\x92\xec\xa7\x65\x8a\xec\xa7\x65\x82\x50\xff\x31\x47\x73\xc9\x9d\x16\x0c\xf2\x7e\x5d\xca\x25\x5f\x6d\xb9\x40\x2f\xdc\xf5\xb9\xa4\x5f\xc5\x25\xb8\xce\xf4\x0b\x5c\xd2\x27\x2e\xe9\x1b\x2e\xb9\x13\x55\xd0\x31\x7a\x19\x97\x7c\x35\x9a\xec\xa7\x6b\x93\x64\x3f\x2d\x53\x64\x3f\x2d\x13\x84\xfa\x8f\x39\x46\xc4\xde\x89\x20\xda\x39\x78\xb9\x90\xfd\x6a\x44\x21\x3f\xe5\x5b\x88\xd9\x32\x61\x30\xb5\x44\x1a\x43\x0b\x9d\x6b\xc8\x73\x27\xa9\xa2\x8f\xd8\x96\x93\xe7\xab\x49\x16\x3a\xed\xbb\x05\x79\xca\xd2\x05\x53\x2b\xd7\xa1\xb7\x9a\x3c\x5a\xc6\xf8\x8e\xd0\x77\x52\x4e\x03\x47\xea\x25\x3a\xaa\x07\xf3\xb5\x68\x16\x38\x7a\xaf\x7b\x6d\x3f\x70\x69\xf7\xa2\x4b\x55\xe3\xfa\xbf\x51\xa6\x6e\x8a\x32\x55\x4d\xb7\xf5\x9c\x28\x3f\x7c\xc6\xfb\x0f\xde\xa3\x0d\xeb\x86\x19\x92\x17\xef\x4e\xfd\xbb\xe6\xb7\x7b\x0c\xc1\x6c\x8c\xbc\x0e\x57\x1d\xbe\x15\x26\x57\x08\x0e\x7d\x7a\x95\x89\x61\x3c\xa0\xa0\xe2\xeb\xc7\x9c\xb3\xa5\x22\x3f\x30\x04\x5b\xff\xa0\x73\xfd\xf7\x5f\xd8\x9a\x6f\xc0\xb0\x72\xe4\x38\x3d\xf5\x30\x80\x42\x98\xb3\x22\x32\x9c\xed\xda\x1d\xa2\x24\xae\x31\x13\x56\xcd\x83\x70\x68\x6d\x43\x4c\xfc\x30\x5b\xf5\x41\x9f\x0e\x62\x4d\x0b\xbc\x93\x5d\x37\x30\xf5\x83\x7e\xbd\x45\xfd\x0b\x02\x0f\x1e\xc0\xea\x74\xd0\xf7\xd0\x3d\x3b\x5e\x07\xdd\xb3\xe3\x4a\x74\xcf\x8e\x59\x8f\x3d\x3b\xf6\xd0\xbd\x58\x0b\xdd\x8b\x6a\x74\x2f\x00\xdd\x8b\xe3\xa0\x75\x6b\xf5\xf6\xd9\x71\x75\x77\x9f\x1d\xf7\xb1\x81\xfd\xa0\x85\x6b\xa1\x7c\xb1\x04\xe5\x0b\x44\xf9\x22\x40\xb9\xff\xea\xed\xf7\xaf\xf7\x0e\x9e\xad\x85\xd8\x02\x57\xa2\xb7\xb9\xa0\x62\x99\x6f\xaf\xaa\xd7\xfd\x67\xfd\xff\x5c\xa7\x1a\x04\xac\xac\x02\x73\x58\x8f\x50\x79\xa8\x7f\xd9\x3f\x7e\xbe\x7f\xf0\x67\x89\xb4\xe9\x66\xa2\xe7\xa8\x60\x13\x3d\x67\x85\x3a\xb5\xbb\x7e\x53\xcc\x4d\x02\x63\x3d\xdd\xcf\x42\xc7\x0f\xdf\x1c\x7f\x9b\x3d\x3f\x7c\x73\xbc\x56\xd7\x0f\xdf\x1c\xeb\xbe\x1f\xbe\xf1\x67\xd8\xfe\xc1\xd1\xfe\x93\x7e\x34\xca\xe4\xb4\xc5\x72\x79\x03\xef\x22\x70\xbd\xc5\x2c\x78\xc0\xbb\x98\x0b\x8c\x8b\x1f\x5e\x25\x87\x6f\x8e\x6f\x51\x8b\x86\x5e\x56\x8d\xce\x86\x3d\x19\x7d\x79\x15\xfd\xdc\x3f\xfe\xa5\xdf\x3f\x58\xb3\x22\x0d\xbd\xac\x22\x9d\x0d\x0a\x2b\x7d\xb9\x95\xf5\xe9\xe1\xeb\xfe\xdb\xfe\x6b\x7a\xc3\xc7\x47\xa9\x33\xea\xde\x2a\x7c\x70\xf8\x4b\x19\xee\xe0\xf0\x17\x1f\xe6\x49\xff\xe8\x71\x19\x08\x52\x7d\xa8\xbd\x2a\xa0\x3d\x82\x01\xd6\x3c\xd0\x61\xbf\x6f\xad\x45\xeb\x20\x8a\xd5\xea\x33\x66\x7e\x2d\xbd\x19\x91\xaf\xab\x30\x53\x78\xc8\xe2\x5e\x03\x53\x4b\x7b\x0d\x43\x0b\x9d\x8b\x61\x91\x78\x32\xbf\x53\xb0\x79\x2c\xb8\x34\x3c\x12\x64\x7e\xb5\x10\x49\x80\xfc\xae\x17\x82\x5c\x28\xee\xc2\xe5\x2a\x40\x5a\x79\xc1\x4a\x13\x48\x03\x50\xa4\xbf\xf9\xea\xb7\x13\x96\xd1\x0c\x0b\x2e\x8f\xf2\x37\x4f\xbf\x9a\x71\x1d\x91\xaf\x1f\xd4\x6e\x9e\x56\x85\xb4\x9b\xd3\xb3\x0e\x48\x89\x30\xa8\x1d\xd1\x43\x43\x58\xb6\xba\xd3\xb4\x33\x6e\x98\x2b\x18\xeb\xab\x4d\x3c\xed\x14\xba\x6e\x04\x2e\x84\x2e\xd1\x89\x92\x2b\x09\x65\xa9\x62\x60\x80\x54\xda\x57\xf4\xd6\x84\x22\x3f\xcd\x6a\x32\x41\xde\xd7\x22\x12\xfa\x8b\xae\x49\x22\x80\x2d\x11\x08\x12\x2b\xc9\xa3\x29\x41\xf9\x14\x16\x71\x7a\xb7\x88\x88\xd3\xe5\xc1\x10\xa7\x5f\xcd\xda\x31\x9f\xae\x1f\x9b\x70\x5a\x11\x96\x70\x5a\x49\x14\xa2\x01\xe6\xa2\xec\x31\x8f\x3f\xac\xbf\x35\xa5\x22\x91\x9c\xc1\xaf\x20\xf0\xa3\x4e\x62\x3d\xfb\x55\xf5\x2c\x86\x79\x2f\xdc\x42\x9d\xd4\x75\x52\xfd\x14\x0a\xd4\xeb\x85\x02\x73\x25\x32\xdd\x7f\x5b\xc2\xa4\x2d\x29\x32\xe3\x4a\x5d\xca\x6c\xe8\x17\x31\x69\x4b\x8a\xd8\xc7\xa3\x6d\x01\x4a\x59\x02\xce\x13\x91\xe5\x4a\xab\x0a\x7b\xaf\xf6\xf5\x98\xd6\x31\xbd\xde\xa2\xd7\xe0\x9a\x85\x42\x97\xfa\xa1\xb4\x8a\x72\x26\xab\xde\xb2\xcf\xa9\x15\x4b\x3b\x6b\x12\xbe\xd6\xe0\x1e\xf6\xf0\x1c\xe9\x2d\xf0\x33\x63\x74\xd2\xa5\xda\xcf\xac\x47\x31\x49\x70\x7a\x9a\xc3\x7b\xc8\x4b\x8e\xe3\xd5\x01\xa3\x94\x48\x46\x1a\xeb\x6e\xd9\x20\x66\x47\x69\x73\x33\x1c\x83\xa2\xad\x41\x33\xa8\xf7\x4c\xb4\xa1\x41\x07\xdb\x50\x77\xef\x82\x60\xac\x70\x7a\x17\x24\x78\x1e\xc4\x0d\x7f\x37\x64\x91\x16\x73\xc3\xdc\x2d\xb0\x02\xbe\x20\xc2\xea\xde\x9b\xf3\xf5\xc2\xa3\xf3\x1f\xb7\x2e\x2f\x2f\xb7\x46\x32\x9b\x6e\xcd\xb3\x44\xa4\x03\x39\x14\xc3\x8a\x67\xe7\x97\x3c\x9d\xc4\xaa\x0c\x4b\xfa\xbd\xfe\xb6\x79\x60\x3c\xb4\x44\x94\x46\x21\xab\x78\x38\x3b\x78\xe6\x9a\xae\x17\x17\x1f\xcc\xb6\xa3\x50\xfd\x56\x3a\x80\x9f\xd4\x27\xf8\xea\xba\xaa\xc3\x2e\xe9\x13\x2c\xcb\xc8\xde\xdd\x80\xfd\xaf\x57\x74\xa5\x3c\x62\xcb\x5a\x56\xa5\x11\x3d\xd6\xaf\xcb\x84\xa1\xda\xad\xfc\x31\xd9\xb5\xeb\xa6\x17\xf7\x55\xbf\xb8\x3b\x4e\xe4\x05\x4f\xe8\xa5\xea\x79\x3a\x14\xa3\x38\x15\xc3\x3a\x7b\x64\x32\xba\x4c\x03\x22\x8b\x96\xc1\x30\xd9\x02\x5d\xc6\xe9\x50\x5e\x56\x80\xe9\x8c\x2e\x3e\x34\x73\xdd\xfa\x54\xbf\xc8\xe4\xa5\x12\xd9\x96\xcc\xb6\x52\x39\x14\xf5\xee\xc3\x56\x3d\x91\x43\xae\x26\x6d\xfd\xe6\xb4\x1a\x0a\x31\xab\x77\xff\xde\xaa\xa7\xfc\x1d\xff\x58\xef\xfe\xd0\xaa\xff\xa6\xea\xdd\x9d\x9d\xeb\xd3\xd6\xc3\xee\x89\x19\xc5\x08\x06\x36\xce\x44\x6b\x2a\x87\xf3\x44\xb4\x74\xff\x9b\x9f\x6a\x8d\xb9\x12\xf8\xa0\xf4\x20\x6f\xec\xd6\x6a\xf4\xd0\x62\x9b\x5a\xf5\x2a\x93\x33\x91\xe5\x8b\x48\x83\xb7\x58\xfd\xec\x4c\xa8\x97\x88\xa3\xde\xc2\x51\xfe\x00\x12\xbe\xcb\xf2\x6c\x2e\x6a\xc0\x89\x9d\xfb\x86\x2a\xba\x3b\xf7\x3b\x35\x14\xf5\xb1\xfa\x99\xba\x03\x73\xb8\x44\x89\x86\xa5\x44\x03\x67\xb0\x0f\xd0\x1e\xca\x01\xae\x54\x45\xc8\x5d\x83\x59\xbf\x3e\xa5\x4b\x51\x1f\x57\xa0\x25\x80\xb6\xee\x55\x05\x56\xc3\x1e\x7e\x9b\xed\xf7\xae\x97\xad\x2b\xa6\x8f\x5d\x18\xb4\xeb\xd3\xd6\x77\xeb\xd0\xbd\x56\x68\x04\x3d\x2b\x1f\x67\x22\x6a\xb4\x3b\x49\x7c\xd1\x79\x87\xd2\x67\x6b\x28\x46\x22\xcb\xc4\xb0\xd1\x44\xf4\xf5\xca\xcc\x7a\xf7\x6f\xd7\xa7\xad\xef\xd7\xa9\x17\x08\xf6\xee\x3f\xf4\x1b\x4a\x4b\xdb\x50\x6f\x9b\x2a\x06\x32\x13\xed\x77\xaa\xde\x6c\xd5\x36\xe0\xfb\x2c\x53\x33\x8e\x4f\xc4\x75\x7e\x55\x0f\x3a\x30\xe0\xf7\x6b\xf7\x0d\xca\xc7\x3c\x49\x2e\xf8\xe0\xbd\xaa\x41\xe2\x63\xa0\x0e\xec\xbb\xbb\x6c\x92\xe7\x33\xd5\xed\x74\xc6\x71\x3e\x99\x5f\xb4\x07\x72\xaa\x2b\x30\x7f\x2e\x12\x79\xd1\x99\x72\x95\x8b\xac\xa3\xb2\x41\x67\x60\x30\xb5\xdf\x21\xb2\x4e\xad\x56\xeb\x74\x98\xb6\xd3\xe6\x92\xe9\x77\x5e\xcd\x52\x0f\x62\x93\xe7\x6c\xc0\x07\x13\x81\x9d\xd4\x19\x8f\x21\x41\xbf\xa1\x08\x08\x1e\xcb\xf4\x83\xc8\x72\x8d\x68\x8b\x8a\xe5\x62\x68\x11\xc5\xa9\x45\xee\xe7\xa6\x42\x31\x9e\x0e\x99\xca\x65\x86\x8f\x60\x53\x4d\x56\x4c\xd2\xcb\x9d\x87\x84\x24\xb2\xd8\x40\x14\x6e\xe8\xb3\x05\x7a\x96\xd6\x6f\xd7\x89\x85\x3b\xd5\x4d\xdc\x20\x42\xb6\x05\x1f\x4c\x2c\x96\xb6\x9a\x25\x71\x1e\x31\x9f\xfe\xcd\x96\x15\xd1\x11\x3b\x6b\xb1\x51\xc2\xc7\x54\xdb\x06\x55\x75\x42\x49\xf8\x4c\x73\x06\x7b\xbd\x0d\x98\x9e\x1b\x5a\x1c\x4a\xf3\x88\x6e\xad\xd6\xb9\x5f\x63\xf7\xd9\x63\x7a\x79\x94\x33\x43\x78\x86\x4f\x6b\xce\x15\x92\x7b\x22\xd8\x48\x26\x89\xbc\x84\x5f\x68\x82\xc2\x07\xe5\xbb\x35\x06\x85\x37\x74\x3b\xbb\x8c\xa7\xba\xcd\x3c\xa1\xf2\x20\x14\xa1\xbd\x5b\x4a\x40\x31\x9f\xd0\xf9\x84\xe7\xec\x32\x4e\x12\x36\x98\xe0\x45\xea\x89\xbc\x04\x64\x1b\x1b\x50\x5d\xd8\x8c\x0b\x31\xe1\x1f\x84\x62\x32\x63\x9c\x4d\x61\x04\xf2\x8c\x0f\x63\x5d\x13\x61\xd4\x7d\xa2\x26\xb1\x9f\x17\xe6\x5d\xfe\x52\x9f\xb0\x4e\x3e\xc8\xe9\x09\x7c\x9e\x32\xf1\x01\x84\x4b\x08\x04\x63\x4d\x0f\x6f\x01\xb6\xfa\x28\x86\x69\xc6\xa6\xf3\x24\x8f\x67\x89\x60\x79\x3c\x15\xaa\xad\xeb\x7a\x25\x95\x8a\x2f\x12\x61\xba\x66\xc9\x92\x0e\x44\x77\x63\x63\x03\x2b\x14\xa9\x9a\x43\xbb\x4b\x7d\x83\x5a\x64\x9a\x2c\xd8\x85\x60\x58\x0d\x83\x72\x2c\xa2\xd6\xb1\x27\x7a\x8e\x37\x35\xd2\xa9\x98\xca\x6c\x61\xd1\xbe\x17\x62\x06\xc4\x18\xbc\x07\x5a\xdb\x63\xc1\x0f\xb4\x37\x83\x5e\x10\x89\x39\xf4\x39\x5d\xb8\xba\xf9\x70\x28\x86\x44\xef\x8d\x0d\x3e\xca\x45\x86\x6d\xc3\x26\x4d\xb8\x62\x17\x42\xa4\xba\x3d\x59\x3c\x9e\xe4\x8c\x5f\xf2\x05\xbb\x8c\xf3\x09\xc1\xf1\x1c\x14\x85\x3a\x36\x27\xfe\x5d\x0c\xeb\x06\x97\xae\x7a\x59\xfb\xe7\x69\xfc\xdb\xbc\x44\x16\x6f\x8c\x7c\x7a\x60\x23\x35\x3d\x52\xc9\x86\x73\xd2\x96\x70\x02\x9a\xd6\x1a\xc4\x2a\x97\xb3\xc3\xf4\x29\x4f\x94\xe8\x6e\xc4\x69\x2e\xb2\x6c\x3e\xa3\x61\x8d\xd3\xb1\x62\x97\x13\x91\xfa\xf5\xd0\x4c\x50\x6c\x04\x25\x08\x47\xa7\xa6\xa7\x9f\x95\x63\x9e\x26\x14\x4e\xea\xda\x86\x27\x4c\xac\x10\xca\xe4\xb4\x2c\x59\xaa\xe4\x49\x3c\x62\xa9\x10\x30\x02\x80\x27\xba\x14\x6c\x30\x11\x83\xf7\x56\xb0\x00\xe5\xa1\x6b\x1b\x6e\x53\x63\x9e\xff\x37\x09\xa0\x3f\x90\x56\x5a\x67\x8f\x6a\x1b\x1b\xd1\x52\xd1\x72\x75\xb5\x5c\x3c\x35\x59\xb7\xb6\x61\xa5\x0e\x6e\x39\x23\xf6\xe9\xba\xe5\x40\x76\x6b\x24\xc1\x3a\x1d\xf6\x82\xab\x1c\x79\x82\xf8\x8b\x45\x23\x99\xb1\x54\xa6\xd0\xb1\xb1\xc8\x73\x0e\x93\x00\xc6\x44\x35\x6b\x1b\x9a\x53\x5b\xb5\x0d\xe8\xe2\x53\x10\x46\xb9\x64\xef\x53\x79\x09\xbd\xa7\x99\xc8\x15\xe3\x49\x26\xf8\x70\x41\xac\x56\xdb\xd8\xc0\xbf\xab\x0a\xc5\x8a\x0d\xe6\x59\x26\xd2\x3c\xc1\x52\x71\x3a\xa6\x62\x71\x3a\x36\xe5\x80\x78\x6e\xa4\x73\x49\x8d\x8e\xe6\x0a\x48\x0f\xac\x91\xf2\x04\x38\x6c\x01\x1c\x86\xb3\x04\x00\x7e\x89\xf3\x49\xd3\xe2\x3a\xca\x79\x96\x6b\x84\xfd\x74\x08\xd3\x0b\x59\x4e\xca\x19\xf1\x52\xa1\xee\x17\x78\x3c\xa0\x0b\xec\xa7\x43\xf1\x11\x8a\x14\x9b\xea\x5a\x15\x4d\xe5\x30\x1e\xc5\x62\x08\xcd\xc8\xc4\x54\x7e\x10\x8e\x2d\x5c\x33\x10\x93\xc6\xba\x37\xc8\xe7\x3c\x09\xe5\x47\x6d\x63\x43\x3f\x82\x7c\x72\xaa\xc1\x8e\x72\x2d\x0e\xb0\xd7\x00\x8d\xeb\x23\xcb\xc4\x4c\x70\x6f\x90\x6a\x1b\x1b\x0a\x41\x7b\xec\x9e\x59\x6a\x70\xae\x6d\x6e\x3a\x64\x4f\x0d\x0e\x5a\xd7\x69\x80\x82\x69\x81\x4f\x2c\xd1\xd2\xa3\xc7\xdc\x2d\x73\x6d\x9d\xa0\xdf\x20\xdc\x05\x18\x12\x2a\x76\x59\x0a\x3a\x0a\x88\x1d\xf5\x81\x73\xb7\x3d\x10\x4a\xec\x05\x69\x44\x76\xd6\xc3\x2e\x99\x33\x1a\x97\x1d\xd4\x23\x33\x16\xb1\x5d\x62\xa3\xcd\x4d\xe6\xd7\xfb\x0f\xe6\xa3\xdb\xf5\xf3\x1e\x3c\x30\xbd\xdb\x80\x8d\x0e\x16\x3f\x09\x0a\x9f\x6a\xc3\x0a\x3d\x9b\xc8\xb6\xd9\xa9\x7e\x3d\x99\xed\xb0\x53\xd6\xc4\xb9\x8a\x62\x06\x6a\xb5\x8b\xba\x93\x57\x16\xbf\xa3\x1f\x82\xef\xc2\xa4\x3b\x96\x28\xd6\x61\x89\x1a\xcd\x33\x0c\x56\x44\x43\x4a\x6b\x33\x1f\x0e\xa9\xe8\x45\x26\xf8\x7b\xec\xe7\xc6\x75\xcd\xfc\xcf\x12\x81\xf0\xd5\xfc\x3e\x84\xbd\x22\x4e\xb0\x0d\x71\x69\xe6\x29\x49\x9b\x85\x03\x68\x32\xd5\x24\x1e\xe5\x51\x13\xc4\xc4\x86\xad\x7a\xe3\x9a\xbc\x3c\x10\x89\xee\x92\x2d\x6e\xb9\x75\xd7\x07\xd5\x99\xb0\x55\x6a\x0f\x63\x05\x4c\x1a\x35\x0b\xbd\xb9\x0e\xa7\x81\x13\xd2\x7a\xe5\xa7\xe2\xa0\x49\x41\x09\x00\x84\xc9\xed\xa6\x0b\x6a\x0f\x03\x99\x24\x82\x74\x36\x98\x9e\x16\x47\x2e\xed\x8a\x02\xa5\xf9\x70\xd8\x75\x3c\x5e\x1a\x7f\xd7\x1d\x23\x6e\x5a\xec\x52\x30\xc5\x3f\xe8\x25\x9e\xa6\x3d\x23\xda\xd5\xf4\xc2\x98\x01\xd1\x90\x83\x8b\xcc\xba\xb1\xe1\x6c\x5e\x7c\x38\x8c\xe8\x25\x0c\x47\xf2\x40\x2d\x84\xbc\x82\xfa\xc7\xb3\xb1\x07\x8d\x55\xc1\x7a\xc1\x7a\x5a\x33\x6f\xc3\xaf\x88\xc0\x76\x0d\x14\xf6\x86\xc0\x60\x31\x31\x08\xeb\x3e\x26\x02\xb2\xe2\x81\x56\x6f\x98\x97\xf7\x70\xa8\x26\x5c\x69\xac\x41\x21\x1c\x64\x72\x97\x29\xd4\xa9\x19\xa4\xc0\x23\x00\xb3\xb9\x09\x7f\x0c\xb7\xe9\xdd\x1a\x6d\x93\xcd\x32\xe7\x57\x81\x42\x56\xcd\x40\xa9\xce\xc4\x60\x9e\xa9\xf8\x83\x48\x16\x36\xdb\x10\xd1\xab\xda\xd4\x7c\x6d\x79\xb5\x19\x39\x2b\xa8\x05\xec\x74\xd8\x13\x09\x83\x09\x92\x18\xd8\x02\x96\x08\x5f\x6d\x33\xbc\x62\xc1\xcd\x60\xeb\xc9\x76\xc1\xf3\xc1\xe4\x91\x37\x8d\x74\x7a\x30\x81\x56\x49\x2e\x44\x0a\x8b\x91\x9e\x3b\x2d\x20\xd2\xa5\x68\x64\x82\xa5\xd2\x56\x93\x4f\x44\x6a\xa1\x81\xf7\x26\x72\x9e\x0c\x49\xd3\x73\x1a\x5b\xad\x44\xeb\xe2\x7c\x2c\xc8\x56\xe4\xd0\xdd\x60\xa6\x9b\x12\xe1\x14\xc7\xff\x7b\x9e\x5b\x98\x8b\x53\x74\x03\xdf\xae\xc5\x05\xcd\x9b\x7d\xa8\x1c\xf9\x53\x8c\xd6\xbc\xf5\x66\x59\x91\xff\x69\xcc\x56\x4e\x02\x34\x0d\x80\x78\x36\x9d\xb9\x9c\xc4\x89\x88\x58\x44\xa9\x6e\x6a\xc4\x29\x79\x6d\x41\xf9\x16\xd6\xdb\xd2\x20\xc0\xd4\x3f\xb1\xad\x1d\x9f\xf1\x70\xb0\x60\x43\x36\x10\x1a\x53\x8b\xed\x78\x5c\xd6\xe9\xb0\xe7\x3c\x1d\x26\xc2\x8c\x13\xc2\x08\x15\x4c\xba\x12\x47\xe8\x74\xaa\xf6\x1f\xbd\x60\x31\x0a\x67\x96\x9f\xb3\xb5\x55\x31\xaf\x2a\x31\xed\xeb\xfe\x94\x10\x61\x46\x25\x1e\x3b\x5d\x6a\xc1\xac\xb9\x61\xdc\x1f\xcb\x34\xcf\x64\x02\xac\xc6\xd9\x38\xfe\x20\x52\xc7\x01\xb1\xf2\xf5\x76\x28\x30\xe1\xca\x1b\x7f\x36\x4a\x6d\x13\x75\x05\xc5\x21\x1a\xa5\x2d\xc3\x19\x30\x30\xd5\x3c\x97\x24\xde\x5c\x2d\xb1\x9d\x98\xce\xf2\x45\x05\xd7\x15\xd6\xa5\xa5\x3d\x7c\x6e\x64\x3c\x16\x18\x4a\x98\x93\x13\x5c\x89\xd3\x05\x6c\x4d\x01\x4c\xaf\x60\xcb\x6b\x31\x7a\x97\x5d\xef\xad\xfd\xe9\x86\xda\xf7\x15\x8b\x73\xa6\xf1\x0f\x1f\x79\x95\x55\xad\x57\x1a\xcd\x3d\xa8\x35\xc4\xf3\x42\x82\x62\x6c\x7a\x11\xa7\x2c\xce\xad\x5e\x0d\xad\xcb\xb1\x1f\x89\x1c\xbc\xaf\x40\x6b\x5a\x5f\x68\x34\x2d\x15\x45\xf9\xb2\x74\x49\xbf\xa9\x93\x50\xb9\xee\x22\x7d\xae\xe8\x20\xb6\xa8\xc0\x89\xb8\xe5\x0d\x78\xc1\xee\x5e\x35\x63\xea\xe7\xcb\x40\xff\xb7\x32\xc5\x68\xa8\x20\x7f\x7d\xde\x1c\x98\x57\xed\x82\x95\x59\x3f\x58\x85\x7f\xae\xae\x2c\xf3\x98\x77\xac\xc2\x52\x6d\x05\x52\x83\x3d\xf2\x7e\x44\x4d\xd6\xa5\xd2\xa7\xbb\x05\xd9\xb7\xb9\x09\xd4\x24\x65\xf9\xea\xca\xea\x67\xa1\x86\x56\x12\x24\xa4\x95\xd9\x95\xd7\x2d\x6b\xa1\x9e\xa5\x25\x7b\x08\xb1\xd6\xfc\x36\x54\x0d\x57\xc4\x02\x65\x4b\xd4\xac\x62\x22\xe0\x0b\x43\xe9\x88\x15\x0e\x25\x4d\xab\x96\x36\xe4\xd8\x6d\x0b\xc3\xa6\x4c\x38\xca\x00\xda\x55\xa2\x15\x03\xf2\xc4\x90\x71\x50\xc7\x60\x07\x0b\x7b\x1c\xbb\x11\x59\xc1\x54\x44\xfc\x5d\xab\x7e\xc2\x4e\x58\xe7\x41\xe3\x77\x6b\x90\xa2\xad\xb2\x05\x73\x69\xf7\xaf\xd7\xa7\xad\xbf\xae\x63\x90\x0d\xec\xa7\x50\x5c\x6b\xb3\x6d\x34\xa1\xfe\x22\xb3\xf7\x22\x23\xf2\x6a\x18\x63\xf4\xfd\x7c\x13\x2b\xb5\x55\x5b\x57\x57\x1b\x86\x3f\xd5\x36\x40\x1d\xa3\x43\x8c\xda\x46\x8b\xc5\x0a\x25\x72\xd7\x7c\x50\xda\x53\xdd\xdd\xae\xf7\x4d\x39\xaf\x12\x1e\xa7\x64\x06\xe9\x86\x3f\x21\x1f\xd6\xf5\x2e\xfe\x1f\x7f\xa1\x19\xa2\xab\xff\x42\x4a\x2a\xe5\x2c\x1c\xa8\x6b\x24\x3e\xea\xb9\xce\x79\x57\x9f\x5e\x94\x1d\x7b\x35\x28\x1e\x30\x3f\xd4\x8a\xf1\xa7\xeb\xdd\x5a\xa7\xc3\x5e\xc9\xd9\x3c\xe1\xb9\x56\xdb\x1d\xc0\x94\xcf\x6a\xf5\x9f\xa5\x4c\x04\x4f\xd9\xc1\x7c\x7a\x21\x32\x63\x7d\x36\x3d\xa3\x37\xf4\xd9\x13\x28\xfd\x5a\x8c\xfb\x1f\x67\xba\x05\x75\x6d\xb1\xad\xb3\x7a\xb3\x3d\x92\x59\x1f\xd4\x16\xdb\x7a\xe3\x52\xbd\xe1\x6a\x3b\x61\xf5\x13\x6d\x21\xae\xb3\x07\xe8\xd1\xcc\x1e\xb0\xfa\x69\x1d\xed\xb7\xf0\xb3\x9d\xcb\x17\xf2\x52\x64\x8f\xb9\x42\x29\x0a\xcb\x71\xcd\x99\x9f\x49\xbd\x97\x17\xef\x48\x14\x38\x2b\x2f\x33\x4e\x00\x20\x47\xb5\xdb\xbf\x86\xeb\x02\x63\xfb\x6d\x30\xd4\xa2\x13\x30\x79\xf1\xae\x49\xc6\xa3\x3a\x35\xad\x8e\xe6\x62\x5b\xa5\x1b\xe1\x72\xc5\xfe\xa6\x03\xf1\x84\x1b\x8c\x22\x22\xbd\xb8\xaf\x87\x85\x03\x70\x01\x85\x36\x97\x63\x33\x5b\x56\x16\xf8\xb2\x1a\x86\x9f\x8e\x68\xd1\xb9\xb3\x55\xdb\x48\x8c\xfa\xad\xe7\x5b\x62\xec\x37\xb1\x3a\x04\xba\x31\x03\xd0\xf3\x16\x3a\x20\x47\xa1\xe3\x30\x68\x68\x24\x33\x3b\x19\xb3\x3a\x90\x1e\x86\xc8\xb4\x64\x21\x03\x04\x8e\x6e\x9c\xda\xb2\xbe\xd6\x6b\x9a\x6e\x0c\x0a\xc6\x96\x8f\x65\x4e\x6d\x87\x9c\x41\xc1\x4a\xfe\xaa\xed\xbf\x2f\xf3\x8d\xf1\x23\x66\xff\x60\xc6\x93\x75\xad\xaa\xe3\x07\x0f\xee\x50\x73\x4d\x6f\xd5\x19\x6c\xd1\x62\x9e\xb4\xd8\x88\x2b\x1c\x1b\x25\xd0\x18\x05\xd3\x6d\x2a\x55\xce\x06\x72\x3a\x95\x29\x9b\x2b\x01\x1b\x72\x92\x01\x5e\xc3\x3f\x8b\x8a\xc8\xc8\x25\x22\x12\x1f\x84\xa9\x5f\x9b\xa8\x61\x4b\x62\x68\x46\xdc\x0a\x69\x7c\x1b\xea\x22\x81\xcb\x67\x39\xde\x9c\xf2\x24\xac\x37\xb3\x3a\x1d\xf6\x72\x8e\x07\x2a\x8c\xa7\x46\x5e\xd6\xcc\x26\xff\xe2\x1d\xf0\x77\x69\xda\xe1\x1e\x5c\xcb\x00\xdd\x30\x5d\xb5\xb1\x2a\x5d\xdb\xc6\x90\xb1\x2d\x98\x9b\x64\x54\x76\x27\x61\x64\x4a\x30\xc3\xa0\xb2\x41\x8b\x0d\xe4\x6c\x41\xff\xdf\x27\x61\xd0\x62\x83\x44\xa6\xa2\x55\xdb\xc8\x79\x36\x16\x79\xe0\x59\xbd\x7d\x4a\x9e\x3d\x30\x57\x59\x8f\xed\xf8\x93\xb9\xe8\xae\xdd\xaa\x6d\x0c\x05\xbe\xc7\xae\xdb\x5a\xf3\x76\x68\x9c\x61\x1e\xd4\xcb\x54\x9c\xcf\x39\xad\x57\xd6\x2e\x22\x47\xcc\x54\x0f\x24\xb8\xa0\xd5\xc0\xd0\x40\xe3\x25\x08\x18\xa1\x8a\xa6\xee\x9c\x1a\x27\x24\x9c\x0e\xea\x7d\x3c\x43\xce\xd7\xa8\x50\xf5\x84\xdf\x54\x14\xd8\x1d\xdf\x28\xa6\xf1\x75\x0d\xc5\x59\x83\x46\x67\x5d\x47\xac\x18\x67\x64\x16\x61\x32\x63\x4a\x4e\x05\x6d\x42\xa2\x99\x39\x8c\x8a\x53\xd7\xbb\x66\x65\xa7\x82\x71\xdd\xdc\x64\xf7\xcc\x6e\xcb\x09\x38\x82\x34\x5a\xa7\xed\x20\x76\x48\x37\x91\xc6\xd7\xe8\x0e\x71\x8e\x36\xb8\x78\x44\x67\x38\x32\x15\x96\x1a\xd0\xe8\x19\x57\x4a\x0c\x75\x6b\x3c\x01\x1b\x17\x6b\x30\x0a\xdf\xd6\x56\xac\xab\xaa\x9a\x6b\xb1\xb5\xcd\x76\x3a\xec\x10\x2a\x1c\x0a\x74\x3d\xc8\x27\x78\x2e\x01\x2b\x5f\xc7\x09\x6f\x3a\x9a\x32\x42\x25\x72\x67\x2b\x6e\xc0\x60\x6a\x02\xc7\xd3\xa2\xd9\xb4\xa6\xc4\x3e\xf5\x12\xc7\x0e\x06\xc3\x9a\x1c\x8b\xe2\xc8\x3f\xf8\x05\x2d\x37\x1b\x58\x1e\x31\xb2\x86\x66\x33\x72\x9d\xf3\xf7\xb2\x79\x35\x6d\x45\x78\xa5\x8d\xbe\xa9\xf8\x20\xb2\x2d\x91\x0e\x61\x78\x13\x29\x67\x4e\xba\x78\xcc\x89\xd8\xac\xd0\x80\x6d\x47\x9c\x6a\xb3\x37\x09\x63\xbd\x43\x1e\xcc\x33\x32\x04\x91\x3d\x69\x2a\xb2\x31\x9e\xe9\x82\xb4\xd0\x9d\xa2\x63\x56\x98\x85\xca\x55\x85\xac\xb4\xb9\x49\xf5\xe0\xd6\xc4\x32\x8b\x2f\x69\x90\xd9\x80\xe5\x23\x6f\x32\x7b\xa6\x16\xbd\xd4\x23\x58\xb3\xb4\x9b\xf1\xcb\xb8\x2d\x4d\x88\xc9\x19\xb2\x51\x7b\x01\x06\xeb\x81\x10\x81\x46\x15\x6a\x51\xd9\xa0\xc9\x1e\x61\x66\x17\xb7\x66\x95\x3b\xa1\x65\x38\xfc\x6e\x05\x98\x68\x36\x3b\xba\x02\x61\x0f\x60\x90\x18\x9a\x1f\x64\x16\x8f\x63\x3c\x96\x26\x6a\x6a\x51\x06\xac\x33\x25\xf8\x90\x1b\x1c\x75\xcc\xf1\x1b\xd0\xda\x08\x40\x3d\xb0\xbb\x35\xcf\x38\x99\x36\x72\x76\xa1\x6d\x4b\xac\x82\xbb\x43\x7b\x1f\x22\xb8\x17\x28\x31\x96\xb6\xa5\x96\x00\x70\xf5\x62\x83\xdc\xa3\xf7\x62\xb0\x72\xeb\xb3\x2b\x33\x0f\x8c\xf8\xd7\xc2\x10\x77\x46\xda\x1f\xe6\x6f\x6b\xf9\xc3\x74\xee\xdf\x83\x7d\x50\xe8\xd8\x82\x3b\x9c\xd9\x02\xcd\x99\xd1\xa0\xc9\x1e\x6e\xef\xec\xb0\xe7\xf1\x70\x28\x52\xf6\x8f\xdf\x7f\x1f\x4e\xf0\xf3\xdf\xc7\x53\x1e\x27\xb0\xe3\xf9\xa9\x76\x9f\xbd\xdc\x3f\x66\x2f\xe2\x81\x48\x41\xd0\xc0\xce\x86\x76\x58\x2f\xe2\x8b\x8c\x67\x0b\xf6\x41\x64\x2a\x96\x69\x7b\x8d\x4d\x4f\x85\x37\x8c\xe7\x95\xe2\x5c\x62\x68\x5b\xdf\xa3\xed\x80\xef\xca\x0f\xe9\xbb\xb5\x70\x8b\xf7\xc5\xb6\x6f\x06\x11\x6e\xe1\xd8\x13\x39\x20\x1c\xdd\x4e\x87\xcf\xe2\x36\x15\x42\x34\x03\x9e\x8b\xb1\xcc\x16\xb6\xc4\x16\x0d\x5a\x47\xef\xfc\x42\xee\xfb\x54\xab\x6d\x98\x33\xfb\xc0\x36\x37\x4f\x07\x9a\x71\x70\xd7\x35\x9f\x25\xe8\xfc\x7d\x62\x64\x0b\x47\xc0\x16\x9a\xcb\x93\x58\xe5\x22\x15\x59\xcb\x7e\x69\xbb\xea\x08\x67\x86\xb5\x2f\x6d\x9c\xb0\xba\x76\x4d\xac\xb7\x58\x7d\x28\x53\xf8\x5b\x3c\x84\x8f\xea\x78\x2a\x49\x86\xa5\x7a\xb3\x65\xcb\x0c\xeb\x0c\x8f\x29\x35\x1e\x5c\xc8\x5a\xac\x3e\xe2\x71\xb2\x26\x1a\x28\x12\xa2\x49\x65\x1e\x8f\x16\x80\x66\x96\xc9\x71\x26\x94\xaa\x44\x65\xb0\xb0\x53\x28\x48\xc5\xb1\x5b\xac\xc7\xea\x33\x92\xd6\x75\x4c\x9d\x91\x0b\xa6\x39\x96\x22\xa8\x0a\xab\x83\x35\x2d\xe4\x78\x27\x74\xc3\x1a\x3b\x36\x78\x72\xc9\x17\xaa\xaa\x88\xe5\x01\xa0\x5c\x70\x98\xd1\x06\x22\x54\x1d\x6f\x14\x0d\x2a\xa6\x92\x7c\x22\x52\x7f\xbc\x3b\xf7\xd9\x28\x7d\x82\x22\x68\x94\x3e\xe5\x31\x68\xf0\xe9\x2b\x4d\x12\x76\xbf\xe3\x84\x08\xb0\xc3\x28\x5c\x46\xc3\xba\x34\xf5\x0c\x57\xb9\x9d\x30\x4b\xc5\x25\xa6\x2e\x3b\xe9\x22\x2e\xf3\xcd\xfc\x71\x8b\x12\x8b\xa7\x5d\xc4\x7d\xb0\xd4\x42\x2e\x9d\xc1\x5a\x9b\xf6\x08\x3d\x8b\x53\x5a\xdd\x7d\x4b\xbd\xa1\xdf\x09\x03\x02\xb2\x2b\x06\x54\x63\x57\xcc\x0c\x3d\x3b\xc5\xbd\xca\x48\x66\x97\x3c\xc3\x05\x98\xea\xc1\x23\x20\xd3\x78\x83\xcf\x21\xa3\x36\xec\x9c\xb2\x53\x6f\x99\x7c\x1a\x9a\xb9\x1f\xb9\xd6\x95\x86\xd5\x74\x8a\xe8\x87\x87\xe5\xa3\xd4\xec\xcb\x96\x18\xca\xdc\x2a\x6a\x4b\xf9\xab\x99\xab\xdd\x64\xb7\x0d\x63\x16\x8e\xee\x36\x8a\x00\x51\xd3\xcb\xdc\xd0\xac\x66\x3a\x6f\x3c\x8b\x59\x08\x44\xdc\xe7\x01\xd1\x26\x2d\x80\x31\x44\xf6\xe0\x68\xf2\x05\x5d\x2a\xac\xd6\xf0\xcf\x80\x9f\x98\x51\x7f\xc0\xea\xbf\xc4\xf9\xa4\x0e\xf4\x06\xf2\xa0\x46\x64\x86\x83\x3d\x72\x6c\xd6\xd5\xd4\x3b\x71\x44\x3a\x0d\x6b\xab\xb9\x7a\xbb\xb5\xa5\x15\x9e\x9a\x2c\x5b\xd6\x1e\x2a\x6e\xd0\x54\x00\xf5\xd1\x1e\x33\x3a\x4a\x06\x53\xae\xd3\x61\xcf\x44\xce\x38\x33\x23\x41\xfb\xe2\x58\xb9\x45\x42\x83\xed\x8f\x28\x38\x81\x02\xd0\x0f\xf1\x50\x0c\x5b\xb8\x0c\x9b\x82\x9c\x0e\x42\x61\x57\x80\x1e\x53\xfa\x30\xdb\x29\xa9\x46\x0a\xf9\x33\x5c\xba\x2d\xf5\x86\x6f\x31\x32\xca\xef\xa3\xa2\x5e\x22\x2f\xde\xb5\x98\xe3\x9a\xae\xf9\xf6\x15\x06\xec\x99\x25\xbd\xf6\xbb\xc4\x3e\xfc\x0b\x34\xc8\x59\x3c\xa3\x6e\x82\x18\xdd\x1a\xc8\xe9\x8c\x43\xfb\x34\xa2\x36\x66\xf7\x0c\xde\x36\xc8\x24\x53\x7c\x4f\x2f\x2b\x5b\x68\x50\x18\xc5\x03\xed\xf9\xad\x6a\xb7\x96\x19\x30\xb5\xf4\x39\x8c\x96\x16\x0f\x8d\xb4\x40\xe1\x6b\xed\x89\x3a\xf7\x3b\xa3\x96\x77\x3a\xa6\x69\x2b\x04\x86\x3e\xcf\xd5\x7e\x19\x16\xde\xc9\x04\x0f\xc2\xa2\xd5\xfb\x3c\xbb\x30\x1a\xf7\x0b\xdb\x18\xff\xfc\x08\x4a\x46\x65\xa9\x01\xfb\x4b\xbd\x02\x01\x7f\xd3\x0a\xc9\xae\x98\x59\xe5\x0c\xd7\x1a\x20\x0f\xbd\xdb\x75\x9c\x68\xf0\x33\x24\xd0\x95\xc1\x43\x3f\x4f\xcd\x39\xce\xae\xed\xf0\x19\x1d\x5e\xcb\xc1\x7b\xcd\xd9\x9a\xfe\x20\x6a\xff\x8b\xed\xb0\x53\x24\xae\x29\xe7\x72\x1f\x9a\x1c\x28\xaa\xa7\xe0\xb5\xa1\x86\x93\xa4\x46\xba\x98\x5e\xb0\x2b\xa6\x65\x84\x25\xe3\x28\xd6\x67\x6e\x05\xf1\xbb\x7d\x1a\xc2\xec\x2e\x01\x72\xc2\xc3\x87\x86\x24\x28\x71\xdd\x34\x0c\xf8\x92\xbf\x27\x23\xb1\xe5\x6e\x3b\x71\x7d\x0e\xd6\x33\xdd\x41\x59\x04\x78\x74\x42\xe7\x23\xa8\x4c\xc5\x23\xc6\xd3\x85\xd9\x8d\x7a\xfa\x15\xae\x08\xda\x62\x64\xd0\xb4\x02\x84\x9e\x81\x2d\x49\x90\x15\xef\x39\xa3\x8c\x01\x84\x7d\x73\x8b\x34\x77\xb3\xf4\xb2\x09\xc6\x2b\xa9\x6d\x5c\x16\x56\x7b\x35\xbf\x90\xb0\xc0\x01\x67\x74\xee\xb3\x16\x6b\xb7\xdb\x2d\x3f\xf5\xc0\x2d\xf9\x78\xb0\xae\x8d\xa8\x50\x29\x8e\x90\xbd\x0c\xe8\x34\x62\xdd\x03\x6f\xa5\xc2\x02\xd6\x54\x13\x94\xb4\xe6\x1a\xcd\x02\x68\x8d\xc7\x9b\x98\x72\xc4\xe6\x29\x48\x8a\x44\x00\x13\x7b\x6d\x52\x54\xff\x94\xc7\x29\xcd\x57\x8d\x1a\x36\x3b\x3b\xb8\x09\x0d\xfa\x55\xbd\x1c\x7a\x10\xc1\x8a\xf8\xc8\x60\xeb\x42\x47\xbd\x56\x91\x0a\x6e\x49\xda\x06\xe1\x1c\x12\x61\x20\x53\xa5\x9d\x9f\xd1\x08\xc2\x99\x8a\xd3\x71\x22\x6c\x99\x16\x7b\x37\x47\xe7\x6a\x81\x5e\xd0\xed\x82\xcc\xf4\xba\x84\x3d\x79\x14\x74\xa3\x5b\xd2\xa7\x9a\xb6\x7d\x6f\x66\x43\x00\xb1\xb6\x37\x94\xb4\x32\x9f\xd8\x79\xc4\xd3\xa1\x93\x55\x6e\xc3\x38\xc7\x72\x40\x94\xc0\xb3\x2f\x6e\x99\x03\x4c\xd5\x32\x2e\xc5\x85\x43\x32\x07\x4c\x2e\xa1\x81\x09\x02\x0a\xa2\xce\xe5\x19\x74\xac\x87\xb0\xc9\x28\x5a\xec\xd8\x4f\xd8\xe5\x55\x7c\xc4\xba\x54\xdb\xae\xb1\x1d\x44\xa6\x75\x40\x30\xd3\xbf\xb7\x61\x83\x3d\x6d\x99\x44\x08\x9d\x3b\x96\x3b\x18\x1e\x98\x92\x69\x34\x62\x5b\x5b\x6e\x58\x9a\x55\x48\x35\x89\x6f\xc2\x4a\x62\xd2\x9c\x65\xea\x25\xc2\x6b\x6f\xcb\xb6\xff\xb1\xc5\xa1\x51\x9b\x04\x23\x50\xfc\x9d\x16\x6a\xa4\x76\x9a\xfb\x93\x64\x97\xe5\x99\xe0\x39\x93\xf9\x04\xc0\xb8\xb2\x6b\x83\x11\x3d\x1e\xdd\x75\xbf\x0a\x24\xd4\xd7\x05\xe9\x94\xc6\xb8\x03\xee\xfa\x80\xa6\x69\x2b\x40\x0b\x9d\x58\x01\xb9\xda\xd2\x67\xb5\x5c\x6f\xca\x11\x2f\x2d\xd3\x77\x8b\x80\x55\x9a\xef\x72\x28\xab\xfe\x6a\xcd\xd7\xcd\x15\x9c\x20\x85\x6e\xb5\x0a\xb2\xa0\x69\x95\x5e\xad\x13\x7b\xfc\x12\xe8\xc4\x9e\x3a\x5c\xa8\xa1\xcc\x0f\x25\x0e\x6f\x56\xf9\x52\x7a\x1c\xbb\xe4\x74\x26\x70\x2b\xbb\xe4\x71\x8e\xe6\xe4\x14\x96\x25\xb4\x26\xdb\xce\x78\x82\xcf\x30\xcd\x3d\x7f\x3a\x7c\xaa\x2d\x9d\x09\x37\xd1\xc7\x2e\x66\x85\xd5\x2b\xd0\x99\xaf\xe9\xbc\x33\x3c\x6a\xf7\x6d\x31\xdd\xef\xaf\x4f\x5b\x7f\x5f\xc7\xd0\xe4\xdd\x2d\xa6\x8b\x6a\xfa\x0c\x9e\xdd\x67\x2f\xf0\x6e\x1d\x8b\x1e\xcf\x55\x2e\xa7\xec\xe7\x79\x9c\x0c\x9b\xec\x1f\xc6\x32\xa3\xaf\xde\x0d\xe4\xb4\xf3\x13\x5e\x31\x81\xfc\x2e\x3b\xa7\x74\x32\x1f\xf1\x2c\xfe\x5d\x30\x5d\x5b\xaf\x9e\xce\xa6\x75\xb6\x25\x59\xbb\x73\x8e\x97\x6c\x8c\x2d\x8b\x1d\xce\x44\xfa\xcf\x23\xf6\x54\xce\xd3\x21\x27\xaf\xcf\x74\x48\x53\x14\x65\x47\x16\x5f\xcc\x73\x99\x29\x57\xbb\x9c\x89\xf4\x9d\x1a\xb5\x65\x36\xa6\xea\x5f\x8b\x44\x70\x25\x86\x68\xd7\xcb\xd0\xec\x95\x90\xd9\xab\xb2\xc9\x3a\x8f\x5a\x8e\xe5\x64\xca\xde\x40\x51\xa5\x1d\x01\xd8\x4e\xfb\x87\xf6\x77\x54\xb8\xdb\x41\xb3\x39\xe5\xbd\x53\x58\xeb\x8b\xfd\xc7\xfd\x83\xa3\xfe\x4f\x61\x4f\xfe\x29\x32\x31\x5d\xb0\x3d\x35\x79\x2f\x52\xae\x5a\xec\x89\xbe\xad\xf7\x38\x91\x73\xf2\xad\xdf\x4f\x3f\x08\x95\xc7\x63\x9e\xc7\x1f\x04\x7b\x2d\x80\x38\x20\x8a\x36\x59\x7f\x18\x43\x2f\xf1\xea\x05\x8c\x02\x7b\x03\x0d\xe3\x0a\xf9\x4d\x01\x29\x73\xc9\x44\x4a\x2e\xeb\x3c\x1b\x0b\xb2\x4b\xa3\xd1\x7c\xaa\x43\xb0\xa9\x36\x94\xc6\x10\xe6\x7b\xaf\x9f\xf5\xcf\xf6\x5e\xbf\xde\xfb\x9f\x67\x47\xfb\xff\xab\xcf\x7a\xec\xe1\xf6\xf6\xae\x87\x39\x97\xa0\xf5\xa6\xc3\xad\x98\xd6\xc6\x73\x6b\x13\x3d\x67\x13\x18\x44\x92\xd6\x16\xe3\xf3\xbd\xa3\xe7\x67\x6f\x0e\x9e\xf4\x9f\xee\x1f\xf4\x9f\xb0\x1e\x6b\x9c\x9d\x11\x4d\xcf\x00\xfc\xcc\x16\x3f\x3b\x6b\x14\xea\x19\x8a\x1c\xa6\xf7\x44\xe6\x76\x8d\x54\xec\x62\xc1\x52\x72\x25\xd0\xbe\xc7\xe4\x39\x13\xa7\xa0\x23\xcc\x38\xba\x24\x4f\xe3\x24\x89\x95\x18\xc8\x74\xe8\x35\xe4\xf0\xf8\xec\xf1\xe1\x9b\x83\x63\xd6\x63\x3f\x6c\x6f\xd3\xa5\x60\x48\x3c\x7a\xb5\x77\xc0\x7a\x6c\xe7\x6f\xbb\x21\x01\x33\x98\x46\x22\x1d\x08\x72\xfd\xff\xc0\x33\xbc\x17\x74\x4e\x9e\x0c\xe7\xa8\xa3\xe4\x1c\x56\x5d\x53\xc5\xcb\xbd\xff\x3c\x3b\xda\x7b\xda\x3f\xdb\x3f\x38\xee\x3f\xc3\xc8\x37\x3f\x6e\x6f\xff\x7d\xe7\xc7\x1f\x1f\xfe\xf5\xfb\xbf\x7f\xbf\xfd\xe3\x8f\x3b\xba\x8e\x73\xb2\x8a\xff\x9b\xf1\x17\x38\x87\x39\x3d\x4f\x72\xaf\x52\x8b\x95\x67\x63\x75\xcc\x41\x39\x6b\x18\x0f\x87\x3d\xb3\x90\x9f\x36\xa8\x1f\x38\xa6\x25\xa0\x8c\x2f\x2c\x80\x5a\xa4\x83\x22\x00\xa4\x19\x29\x6f\x00\x2f\xa4\x4c\x0a\x70\xda\x85\xc3\x40\x80\x64\x2d\x40\x3c\xe1\xb9\x30\xd9\x22\xcb\x64\x56\xc8\xef\x43\x9a\x01\x80\xb1\x2c\xe4\x17\x1b\x31\x16\x69\x01\xe2\x19\xac\xd0\x3c\x97\x59\x11\x74\xca\x67\x05\xd0\x97\x7c\x66\x32\x89\x53\x0a\xf9\x34\x7e\x0e\x24\x29\xf6\xf7\x60\x9e\x24\x26\x9b\x92\x0a\x00\x34\x78\x06\x64\x96\xc9\x8f\x45\xda\xbf\x82\x34\x03\x90\x89\xb1\xf8\x58\x6c\x25\x79\xbb\x18\x10\x25\x8a\x75\x1c\x09\x5b\x01\x1d\x52\x16\xf3\x31\xd1\x80\xd8\x59\x54\x80\x7a\x63\xd2\x0d\xe0\xa5\xe0\xef\x5f\x96\x48\xf6\x0b\xa5\x9e\x9a\xfb\xc0\xc8\x4e\x3f\xcf\x47\xa3\x12\xf1\xf6\x5c\x8e\xc7\x0f\xfc\x6d\x2c\x2e\xcb\x3c\x81\xc9\x76\xd8\x13\xc9\xf3\xef\x1e\x16\x47\x9e\x52\x03\x5e\x45\xc8\xbf\x7d\x5f\x05\xf9\xb7\xef\x03\xc8\x38\xcd\x7f\x28\x80\xed\xa7\xf9\x0f\x45\x98\x9d\xbf\x95\x81\x76\xfe\x56\x84\x2a\xb5\x6d\x3f\x2d\xb6\x6c\x5e\x51\xe1\x9b\xb8\x58\x23\x42\x3d\x4e\xf8\x74\x56\x1e\x0f\x2f\xab\x54\xa6\xd4\xcc\x37\x71\xa9\x9d\xf3\xaa\x86\xbe\x89\xbd\x96\xea\xd3\x12\xe6\xe4\xe8\x94\xe7\x83\x09\x3b\x27\x8e\xc3\x55\xf4\x44\x2d\xd2\x9c\x7f\x64\x83\x09\xcf\xf8\x00\x56\x92\xd3\x48\xaf\x59\x62\x30\xe5\x5b\xfa\x82\x17\x5d\x0e\xc5\x95\x0b\x93\x1f\xfe\xed\x61\xe7\xef\xed\xed\xce\xbf\x29\x31\xd8\x9a\xf1\x1c\x80\x54\xb3\x5d\x33\x92\x2a\x13\x54\xc7\xe3\x09\xcf\x58\x8f\x75\x4e\x7e\xfd\xf5\xbf\xfe\xd2\xbe\xff\xe0\x51\xd4\x3c\xf9\xf5\xf4\xd3\xf5\xd5\x69\x67\xbc\x4c\xc6\xa3\x1b\x4b\xaa\xf2\x6c\x3e\xc0\x55\x3b\x3a\xe2\x23\x9e\xc5\xcd\xb6\x43\xbe\xaf\x9e\x4b\x95\x3f\xce\x25\x22\xff\xaf\x5f\x4d\xf7\xdb\x0f\x1e\x3d\x76\x45\x7f\x3d\xfd\x4b\xa7\xba\x92\x79\xaa\xe2\x71\xaa\xef\xaf\x8d\x45\x56\x5c\xaa\xa0\x06\x20\x25\x62\x8f\x1e\x75\xb7\xaf\x4e\x76\xb6\x7e\x3c\xfd\x75\x78\xbf\x59\x42\x19\x0f\x45\x8a\x46\x94\x73\x23\xc2\x8f\xf9\xf8\xdc\x6c\x55\xe4\x08\xfd\x04\x86\xfa\x0c\xd8\xd6\x80\x89\x7b\x5a\x56\x2b\x6d\xdb\x0b\x13\x4f\xdc\x3c\x39\xd5\x57\x16\x8b\x99\x38\x35\x4e\x59\xaf\x58\x52\x33\x67\x45\x31\xc3\x5c\xd5\x85\x96\x55\x36\x77\x08\x8b\xa5\x0a\x2c\xbe\xa4\xf0\xb2\x3a\xe7\x41\xa5\xe8\xee\x52\x80\xd0\x6b\x5e\x05\x5e\xb3\xd2\x55\xa0\x0d\xa5\x56\x45\x59\xbd\xb6\x55\x14\xf5\x64\x58\x45\x39\xbd\xe2\x55\x94\x33\x8b\x5d\xd5\x50\xd1\x32\x57\x51\x88\x96\xac\x8a\x22\x76\xb9\xaa\x28\x64\x17\xa2\x8a\x72\x76\x81\xa9\x28\x47\x2b\x4b\x45\x21\xbb\xaa\x54\x14\x72\xab\xc4\xa9\xe7\xf6\x03\xfc\xff\x84\xa6\xd2\x28\x13\x02\x35\x22\xd4\x2b\xcf\x69\x1b\x70\x4e\x37\x05\x0e\xe4\x10\x74\x61\xcb\xf4\x00\xfb\x8c\x02\x5a\xd8\x2b\xb8\x3a\xc0\x45\xaf\xc7\x1a\xd4\x31\x0c\x2e\xa1\x53\xed\x57\x5b\x47\x28\xe8\xf5\x8c\x63\xaa\xcb\x5b\xd9\x1e\x25\x92\xd1\x79\xd0\x80\x23\x1d\xfa\xc6\x8b\x32\x52\xa8\x1c\xd3\xf4\xdf\xea\x8a\xc9\x63\x39\xd0\x11\xb9\x53\xd8\xcc\x89\x81\xee\x84\x76\x89\xb4\xb2\x45\xd2\xfb\xf7\x8e\x16\x57\x57\xae\x61\x57\x57\x56\x05\x8a\x1a\xde\xf1\x62\x03\x63\x54\xae\xe8\xa8\xde\x26\x85\x7d\xed\xdb\xe3\x77\xdd\x5d\x7b\x1e\x1f\xf6\xd8\x24\x6f\x6e\xb2\x7b\x26\x20\x47\x2a\x87\xe2\x78\x31\x13\x5e\xfe\xca\x06\xd0\xe6\x30\xac\x9f\xa2\x9b\xe8\xde\xf6\x5d\x25\x61\x70\x91\x42\x63\x74\x2a\xb4\x45\x7b\x11\xf8\x4d\xa1\xa4\xb0\x25\x78\x7a\x83\xae\xc7\x19\x7b\x8c\x1e\x90\xff\x3c\x22\x57\x2a\x05\xbb\xc1\xf3\xd0\x19\xc1\x35\x91\xd2\x1d\x91\xbc\x26\x6f\x6e\x7a\xbf\x9c\x1b\x43\x2f\xe8\xca\x4a\x7a\xcc\x32\x39\x10\x4a\xad\x98\x0a\xaf\x08\xc2\x7a\x4b\x78\x04\x72\xdc\xd1\xd6\x78\x0a\xab\x0e\x1f\x60\xd1\x11\xd9\x4f\x35\x76\x6d\x91\x76\xb5\x00\xe1\xde\xe4\x31\x4c\xb7\xf0\x8c\x83\xb1\x3c\x5b\xe8\xc8\x42\x9d\x0e\x60\x65\xe7\xf3\x3c\x4e\xd0\x51\x11\xda\x2c\x1d\xd2\x9d\xed\x07\x6d\x1b\xe8\x15\xf3\x57\x91\x4a\xdb\x0a\xaa\x53\xa3\x06\x54\xd2\x68\x52\x35\xbb\xb5\x9a\x0d\x78\x04\xbf\x5d\xa8\x23\xc3\xf8\x04\x45\x11\x8c\x4c\x5b\x5f\x88\x31\x1f\x2c\x2c\x7d\x31\xea\x6b\x9c\x8e\x0d\xea\xb0\xed\xff\x60\x3b\xdb\x6d\x3f\x74\x91\x4f\x77\xdd\xc4\x57\x21\xa2\x25\xc9\x06\x3f\x34\xe7\x9a\x0d\x50\x91\x8a\x04\x39\xcf\x63\x18\xa4\x5a\xe7\x7e\x61\x1c\xaa\xb6\x70\x30\x22\xfb\xea\xd8\x0a\x59\xd6\x73\x83\xb4\xb9\x69\xbf\xdb\xb1\x07\xe3\xf4\xb8\x3d\x33\xe0\x3c\xd1\x6a\xd9\x07\x94\x36\xe7\x46\x66\xfc\x1b\x9e\x6b\x9f\xd3\x4b\xc4\xce\x74\x1d\xa7\x1f\xe4\x7b\xa1\xd8\x39\xa4\xa0\xde\x67\xef\x98\x9c\x03\xe4\x39\x33\x9d\x97\x23\x4a\xd9\xcb\xc6\xe7\xd6\xa1\xd2\x59\x8b\x21\x1b\x56\xe4\x73\x13\xae\xe3\xdf\x67\x59\xfc\x81\xe7\x82\xbe\x79\xc6\xa7\xec\x93\x69\xcc\x35\x9d\xc3\x1c\x4f\x3c\x23\x3a\x28\x4c\xd8\x98\xb6\x5f\xe2\xfe\x35\xd3\x95\x22\x74\x45\x9b\xb0\xe1\x41\x19\x24\xcd\x35\xb9\x52\x1f\x07\x8d\xb4\x75\xe8\x62\xd8\x59\x2a\x6b\xe2\x54\x40\x8d\xaf\xf5\x37\xf4\x50\xef\xb9\x83\x9a\x3a\xce\xed\x96\xbc\x05\xe0\x67\xcb\x34\x94\x9c\xb8\x89\x65\xd5\x65\x8c\xec\x80\x57\x91\xc8\xc8\x6a\x78\x19\x9d\x4d\xb7\xbb\xcc\xb3\xf0\xbb\x98\x58\x7b\xd9\x58\xc7\xd7\x42\xb0\x9d\xe5\x60\x54\xdb\xc9\xf6\xa9\x0f\xff\x70\x0d\x78\xfd\xb1\x13\x14\xfc\xee\x36\x05\xf5\xc7\x43\xc2\x70\x5d\x63\x41\x59\x17\x04\xd1\xd1\x44\x47\xc2\x41\xfe\x38\x36\x3e\x9e\xf1\x74\x96\x08\x18\x1f\x6e\xae\x8b\x9f\x9f\xb5\x31\xf2\x0b\x8d\x8f\x9c\xe7\x4c\xcd\x67\x20\x01\x71\x06\xc7\x39\xec\xf2\x05\x5e\xc5\xcd\xf2\x09\x4f\x87\x0a\xf0\xc9\x8c\x4d\xf9\x47\x6d\xb9\xd2\x86\x6e\x8c\xf6\xa1\x56\x71\x24\xa9\x53\xd7\x2c\xc5\xf6\x38\xab\x11\xd6\xef\xf3\x8b\xa9\x35\x64\x35\xc7\xd0\xb6\x55\x01\x53\x53\xe9\x21\x83\x39\x4f\x10\xe8\x14\x17\x30\x9c\x66\x57\x9f\xe9\xb4\xf9\x6d\xa4\xb9\x4f\x15\x98\x0e\xc8\x76\x0c\x0d\x8c\xd2\x96\xad\xb8\xa9\x03\x85\x65\xf6\xe2\xed\xd6\x4e\xcb\x4a\x4d\x64\x62\xed\x3b\x17\xa5\x4d\x14\xb0\x78\x53\x97\x45\x0f\x1e\xe8\x5b\xac\x2c\x75\x51\x9e\x01\xfe\x04\xd3\x41\xbb\x33\x75\x44\x98\x52\x1c\x6e\x82\x5e\x7f\x6c\xe7\x29\xcf\x16\xd5\x63\xab\x72\x89\xe7\xf0\x53\x91\x73\xd0\xb7\x3f\x43\x98\x0c\xf8\xcc\x9b\xf9\x23\x99\x15\xc8\xee\x8a\xfb\x94\x4f\xc5\x25\x94\x84\x7d\x99\x41\x56\x41\xfc\x37\xd0\x03\x9c\xf5\x44\xb1\xe2\x29\x1d\x6e\xf1\x0a\x21\xb3\x21\x53\x67\x20\xfd\x7c\x7a\x3d\x13\x39\x55\x4f\xa7\x7b\x3c\x67\xe7\xef\xc5\xe2\x1c\xe9\x45\xfa\xcf\x4a\xb1\x4a\xea\xe7\x35\xd3\x1b\x80\x53\xa4\x85\xde\xf8\xe6\x92\x02\x2c\x06\x6c\x4b\x7a\xfd\x35\x7b\x2f\x16\x08\x0b\x7f\x75\xe0\x95\x99\x8e\x46\x07\x05\xc7\x22\x5f\x2d\x1c\x2d\x30\xb6\xbb\x40\xa8\xb1\xc8\x29\xa4\xb3\xb9\x30\xf4\x5e\x2c\x02\x72\x99\x60\x5d\xd6\x11\xc6\xb9\xce\x76\xcd\x9d\x8d\xf7\x62\x71\xea\x53\x8a\x02\x68\x81\x52\x8d\x5c\xe4\x8d\xf8\x84\xe7\x85\xd5\x8c\x96\xb2\x38\x57\xce\x37\x3e\xcf\x78\xaa\x46\x32\x9b\x8a\xe1\x67\xb0\xd6\x65\xc6\x67\x4b\xc4\x80\xad\x20\x58\x79\x5c\xf2\xda\x4c\xb8\x84\xfb\xe4\x07\x91\xed\x65\x63\xb3\xe2\x18\xb4\xd5\x6c\xc8\xb3\x71\x15\x13\xda\x52\x08\x10\x72\x23\xa9\x91\x78\xa0\x3d\x8f\x93\x7c\x2b\x4e\xb5\x03\x50\xb5\xd5\x39\xe3\x8b\x57\x99\xcc\x65\xd9\x2d\xd7\xd9\x71\x0d\x80\xe9\x6b\x11\x86\x46\xda\x40\x15\x2f\x17\x56\x9b\x69\x80\x0c\x99\xe0\x03\xbc\x8c\x31\x90\x99\xd8\x7a\xa7\x98\x9a\xc4\x53\xd7\x38\x48\xfd\xa7\x7a\xc2\x73\xce\x7a\xb8\xb5\x3a\x69\x9c\x9d\x69\xd0\x33\x35\xe1\x19\x1e\x27\x9c\x16\xf0\xfb\x27\x71\x43\x31\x90\xd3\x59\x9c\x88\x21\x53\x72\x9e\x0d\xf0\xe6\x94\x3d\x65\x70\x0a\x3b\x6c\xe2\xc3\xa7\x4d\xb0\x33\xfe\xb5\x48\xbf\x0a\x0a\x41\x65\x2e\x01\x00\xa9\xe5\x65\x6a\xa6\x52\xec\x91\x77\xc2\xd5\xe1\x65\x6a\xc2\x43\xda\x2b\x74\x84\x3c\xcc\xac\xa6\x92\x76\xdd\x62\x53\xae\x40\x06\x70\x72\xad\x54\x8c\xd4\x43\xb7\xd9\xe1\xea\xfd\x51\x36\xf8\x97\x58\x54\xec\x06\x00\x60\x1e\x0f\xd1\x54\xf7\x5f\xed\xd3\x07\x7f\xe9\xb4\xc5\x47\x31\x88\x3c\xf2\xe2\x7d\x05\xf3\xab\xfd\x5e\x2c\x54\x45\x52\x7b\xbf\x7f\xf6\xea\xf5\xe1\xf1\x21\x6c\x64\x1b\xa4\x2d\x6b\xa6\x04\xf4\x8f\x58\xd4\x38\x5a\x4c\x2f\x64\x82\xb7\x00\xce\x76\xda\x0d\xf6\x00\x72\x9a\xac\xcb\x1a\x8d\x5d\xa7\x4a\x07\x66\x4b\x6f\xb8\xd0\x66\x19\x58\xda\x6e\x6f\xaf\x94\xe5\x9b\xad\x24\x2a\x9b\xa8\x61\x8c\x8c\x35\xd0\x5a\x33\x89\x92\xc4\xb3\x1e\x0f\xf8\x03\xb5\x84\x0b\xe2\x74\xa4\x63\xc1\xe9\x73\x9e\x73\xdf\xb6\x69\xc7\x86\x30\x3d\xce\x65\x16\x30\xd8\x71\x70\x87\x94\x10\x34\xab\x99\x00\x43\x44\xe8\x39\x1c\x97\xc6\x3e\x13\xfb\xea\x80\x76\x0b\x3d\x7d\xde\x10\x35\xfe\xab\xc1\x1e\xd4\x58\x45\x45\x21\xd3\x35\xdb\x99\x98\x25\x7c\x20\x22\xdf\xa8\xdb\x62\x8d\x5f\x7f\xfd\xcb\x66\xa3\x59\x63\xcc\x02\x74\xc2\x92\x57\x96\xcb\x9a\xed\xfb\x8f\xa2\x47\xbd\x5f\x7f\xfd\x35\x6a\x5e\xe1\x64\x68\x3f\xd0\x09\xa7\xcd\xce\xb8\xc5\x1a\x7f\xd9\x69\xdf\x7f\xd4\x68\xb2\x07\xac\xf1\x97\x46\xcd\x74\xf2\x67\x23\x9d\x68\xc5\xac\x10\x4e\x64\xe4\x2b\x6d\xa1\x1f\xa1\x2c\x68\xeb\xdc\xae\x5b\x73\x48\x18\x11\x0f\x6a\x89\xd1\xa6\x5f\x94\xe3\x6c\xf8\x26\xd7\xa5\xe8\xf3\xb3\x24\x91\x83\x37\xa9\xe2\x23\x20\xa6\xae\xe1\x91\xfe\x68\xfb\xb9\xa5\x6a\xc7\x82\xb8\x45\x5f\x9a\x36\x52\x5e\x0b\x43\x3f\xf7\x70\xd4\xd2\x32\xb2\xe9\x8b\x4f\x1d\x58\xd2\xca\x4f\x8a\x44\x67\x0f\x9f\x90\xea\xfb\xaa\x9f\xce\xa7\x22\x43\x2b\x44\xc8\xa4\x55\x20\xfa\x60\x69\xa6\xaf\x5d\x38\x61\xaf\xe3\xb2\xe8\xfc\xc5\xf4\xd8\xcd\x39\xd6\x33\x14\x7c\xa4\x3f\xda\xde\x8c\xf4\xfb\xad\x4f\x91\xc2\x10\xb8\x2b\xad\x11\x46\xd6\xb2\x1e\x90\x8b\x98\x56\x53\xa8\xc5\x1a\x21\xa2\x86\x17\xc3\x3d\xfa\x74\xdd\x62\x8d\x46\x8b\x7d\x32\x31\x9c\xbd\xc5\x70\xe5\xa6\xfd\xe7\xa5\x4b\xa0\xf6\x21\x96\x4a\xb8\xfd\xb2\xe2\x53\x41\x57\x7c\xb8\xd2\x3e\x06\xda\x69\xe1\xdc\x48\xe2\x76\x28\x37\xf6\x95\x65\xd2\x22\xb7\xc4\x6a\x19\x87\x52\xd1\x97\x1c\x34\xfc\x97\x3c\x9f\xb4\xa7\xfc\xa3\x9f\x73\x20\x2f\x59\x0f\x4f\x5b\xdb\xa9\xbc\xbc\xb1\x23\xa8\x37\xf1\x4c\xb0\x0f\x22\xa3\xbb\x46\xb9\x64\x17\xa2\x28\x27\x5e\xf2\x59\x40\x77\x98\x00\x2d\xd6\x78\xc9\x67\x8d\xa6\x5f\xbb\xe5\xc3\x8a\x21\x22\x9e\x6c\x78\x62\x7c\xf5\x3e\x81\xe0\xab\x37\x0a\x5c\xa9\x78\x9c\xc6\xe9\x18\xd0\xb8\xb5\xd3\x18\x58\xa9\xe8\xd0\x06\x79\xb8\x59\x77\x46\x99\x5f\x50\x9c\xe3\x74\x22\xb2\x38\x47\x3b\x5d\x41\x71\x33\xc5\x8a\x6a\x9b\xab\x90\xe8\x06\xbd\xb3\x34\x29\xf2\xb6\xd3\xea\xe8\xfe\x1b\xb2\x5f\x59\x8d\xc3\xa6\x19\x45\x2e\x1e\xb1\xe8\x1e\x5e\xd4\x86\x12\x94\x55\x32\x8f\x99\x70\xfc\xd7\xb6\x88\x2f\x25\x4a\xe0\x7e\xa6\x46\xe9\x97\x2f\xae\x8a\xe4\x3a\x9e\xcb\x5d\x3b\x2d\xed\xfe\xd2\x91\x60\x77\x59\x51\x4f\x02\x78\x4d\x30\x7b\x48\x52\x45\x83\xb5\xde\xa9\xfc\xe8\x3b\xb2\x62\x48\xbd\x05\xb4\xc2\x1e\x74\x22\xd2\x3c\x8b\x85\x3a\x35\x5b\x9e\x2d\x5a\x3b\x66\x3c\x26\xbf\x3e\x0c\x09\x5a\xd0\xb7\x9f\x73\x35\x89\x74\xc1\x55\x3b\x6c\xeb\x6e\xab\x61\xbd\x5d\xcd\x36\xeb\x9a\x54\x1b\x7e\xac\x66\xde\x23\x48\x04\xcf\x28\x5c\x7c\x69\x37\x1e\x9a\x8b\xa0\x5a\xc0\xb2\x70\x75\xe8\xfd\x39\xd1\x11\xd1\x29\x91\x63\x63\x17\x68\xa6\xa1\xaf\x1d\x63\x9e\x71\x9b\x28\x8a\xe0\xa4\x30\xc0\x8c\xa3\x83\x69\xb9\x0d\xe5\x04\xe4\xae\xa4\x33\x0a\x39\x6c\x3a\xfe\x9c\x8a\xe9\x85\xc8\x0e\x47\x48\xac\x90\x7c\x80\xe2\x31\xf5\x91\xa4\x39\xb4\xf2\xec\x0c\xb6\xf6\x67\x67\x18\x73\xc3\x13\x1a\x8f\x82\x9f\x11\xbd\xb7\xd9\xd5\xcc\x4c\xfd\xa3\x07\x7b\xb6\x77\x2b\x3a\x43\x3b\x66\x9e\x0e\x71\xc7\x47\x5d\x5a\xb3\x2b\x43\x91\x08\xfd\xbb\xd8\x97\x92\x9c\x40\x1e\x3c\xd6\x28\xf1\xe4\x5c\x0e\xe3\xd1\xda\xdb\x6b\x6a\x17\x6a\xae\xd0\xec\x82\x54\xd1\xf7\xd5\x9d\x58\x39\xcf\xb3\xb9\x38\x37\xd1\x77\x68\xfc\x2f\xd1\xef\x08\x4a\x0f\x5b\xe4\x89\x78\x8e\xa7\x6f\x45\xd3\x24\x34\xf0\x09\xf6\x2c\xb2\x3b\xef\x60\xb2\x22\x49\x27\x5c\x51\xf6\xe6\xa6\xa6\x43\x38\x48\x7a\x07\xee\x0f\xc0\x56\xcf\xe0\x78\xc4\x76\x58\x17\x86\x63\x85\x2d\xc8\xda\x36\x9c\xe7\x17\x39\x85\xc1\x78\x2d\x1f\x93\xb1\xc8\x57\x0f\xc8\x3a\x44\xbe\xd1\x80\x41\x14\xad\xb2\x5e\x40\x6b\x9f\x89\x3c\x24\xdd\x90\x76\x93\x01\x81\xa0\xf3\x20\x61\x7d\xde\xf5\x27\xad\x25\x37\x86\x2a\x35\xd4\x2c\x10\x0c\xcf\x8f\x0a\x6e\x70\xa1\x3d\xc4\x13\x90\x8e\xda\xa1\x56\x4d\x3a\x3a\xbd\xd0\x80\xcd\x7e\xe4\xea\x0c\x55\x2f\xcf\x9e\x82\x16\x52\xda\x24\x54\x0d\x10\x13\x1f\x63\x95\x57\x9b\x50\x71\x9c\x26\x5c\xdd\x79\x9c\x88\xfa\x66\x4b\xbc\xfe\x5c\xe0\xa9\x2e\x5a\x6c\xe6\x8d\xf3\xe1\xb9\xe1\xf6\x9b\x46\xd4\xbc\x73\x17\xca\xa7\xc8\xd1\x33\xb8\xea\x0d\x62\x6a\xf5\x58\xf8\x34\x3f\x0a\x66\x04\xb5\x3f\x97\xec\x1c\x49\xbf\x62\x4a\xa8\x2f\x31\x25\x94\x99\x12\xee\x80\x85\xf2\x8e\x2b\xa1\x56\x2a\x3c\xd8\xfe\x18\x3d\x1c\x07\x55\xf3\xe7\x88\xe6\x8f\xf6\xce\xbf\x99\xe8\x4e\xc4\x3c\x28\x4a\x27\x5a\x46\x77\x00\xca\x8d\x41\x2f\x9c\x75\x20\xc2\xa8\x07\xbd\x70\x70\x1e\x15\xa7\x96\xbd\xd8\x10\x3c\x8a\x4c\x63\x44\x77\xe0\x8c\xe9\x04\xc6\x05\xc8\x7c\xde\xae\xc1\x1f\xcf\x34\x80\xeb\x1f\xeb\xb9\x25\x6e\xb7\x00\x71\xd2\x20\x79\xda\x38\xd5\x50\x24\x8c\x8b\x60\x6d\x8a\xc4\xa1\xe5\x4d\x29\x77\xc2\x95\xce\x7d\xce\x55\x29\x57\xd9\xb2\x47\x50\xb6\xa4\x32\xa5\x26\xf8\xfd\x60\x22\xfe\x60\xcd\xe9\x45\xac\x72\x8c\x91\xfe\x7f\xaa\xfa\xe4\x28\x7f\x2b\x25\xca\xd2\x2d\x24\x67\x62\x92\x57\xa9\x53\x27\xa7\x9f\xaf\x2a\xad\xd3\xec\x2a\x85\xc9\x6f\xf7\x9f\x4c\x13\xb2\xb4\xab\x52\x87\xaa\x84\x91\x61\x4b\xc3\xa8\x5c\x29\x39\xc0\x18\xae\x87\xa3\x40\xa8\xeb\xb5\xdf\xf0\xdc\x76\xd1\xdc\x4e\x5e\x51\xb4\x66\xe3\x7d\x58\xae\x72\x13\x81\x1d\xcf\xb7\x34\xe3\x6f\x91\x68\x73\xb8\x7a\x3d\x07\x6b\x90\x62\x81\x99\x9c\x45\xda\xd5\xc0\x7b\xe2\x9d\x2c\x32\xfe\xa2\x63\x62\xe6\xda\xc3\xba\xad\x2d\xcb\x17\xbe\xdc\x33\x81\xa4\x8a\xda\x9a\x27\x37\xee\xae\xb3\xdd\x99\x27\x3e\x43\x71\xb3\x83\xbd\x96\xf6\x76\x9b\x91\x36\xaf\xc8\x9b\xc1\x2e\x68\x68\xb8\x2e\x91\x4c\x39\xd9\x39\x5d\xa6\x64\x2d\xa7\xeb\xed\x55\xad\xdb\x92\xf7\x8f\xd5\xb7\xec\x40\x04\x4a\x97\x26\x62\x40\xe7\x70\x44\x48\x77\xa5\xb8\xc3\x15\x4a\x93\x47\xc0\xcf\x50\x9d\xee\xcc\x99\x5f\x52\x7f\xf2\xba\xb2\x44\x8b\xb2\x34\xbc\x8d\x2a\xf5\xd9\xd2\xeb\xc1\x83\x40\x54\x18\xc9\x33\x57\x93\xe8\xc4\x35\xe2\xb4\x2c\x86\xc2\x29\xc0\x7a\x4e\xcd\xba\x5e\x4f\xd5\xb2\xc3\x72\xde\xae\xd9\xef\x0a\xa5\x2b\x5c\x0d\x77\xab\x60\x03\xf5\xab\xb0\x02\x54\x16\xd0\x8a\x98\x2f\x3f\xaa\xe1\x48\x25\xf3\xd9\xbb\x1a\x4e\x85\xf8\xaa\x35\x34\x36\xe5\xb3\x40\x3f\xa3\xdb\x53\x32\x2b\x29\x5a\x7f\x94\xe2\xf6\x92\xcf\xfe\x8f\xd6\xdb\xa6\x74\xb8\xbf\xb6\xc2\x66\xe8\x15\x52\x71\xaa\x53\x4b\xea\x9a\x53\xcc\xca\xfa\x1b\xf5\xb9\x01\xfa\x7c\xa3\x8b\xc6\x54\xd0\xf7\x89\xd8\x8d\x29\x9f\xe9\xc4\xe8\x25\x9f\xb1\xab\x2b\x27\xc4\xb4\x09\xbe\x41\x02\xcc\x2b\x5a\x74\x34\x59\x4b\x03\x5c\x49\x80\x2a\xd5\xcf\xa3\xc0\x9f\x4c\xf3\x33\xa3\xb0\xd2\x0e\x36\x16\xf9\x4b\x3e\x7b\xc2\x73\xae\x5f\xbc\x04\x30\x27\x3e\x22\x12\x96\x5f\xc0\x02\x06\x53\xfd\xee\xca\xd4\x5d\xa9\xfc\x19\xba\x94\x21\x5f\xa0\x4a\xe9\x7e\x56\x52\x0d\x64\x68\x54\xb4\x77\xf8\xea\x4f\x05\x09\x6e\xaf\xf7\xdc\x92\x12\x7f\xac\xda\x63\x68\x56\xa5\xf5\x54\xd3\xcc\x18\x39\x2a\xd5\x1d\x20\xd8\x67\xe8\x39\x77\x65\x9a\x2f\xa9\xe6\xb8\x15\x6e\x89\x96\x63\x48\x76\x83\x92\x53\x49\x3d\xb3\x12\x69\xb1\x8a\x9a\x0a\x29\x2e\xda\x54\x84\xab\x83\x87\xb5\x64\x68\xb2\x45\x60\xf1\xc2\xbf\x9e\xb1\x69\x0d\x9d\xc5\x90\xf8\xbc\x5d\x33\x9f\x15\x1a\x4b\xb0\x1e\xec\x56\x40\x06\xfa\x4a\x28\xb7\xaa\xc0\xb5\xb6\xe2\xcd\xd0\x4a\x28\xd2\x55\x3c\x9e\xac\x84\x52\x01\xae\x25\x8a\x0a\x3d\x8d\xf0\xa7\x52\x55\xf0\x09\xb6\xb2\x9e\x52\xa5\x14\xeb\xc3\xc9\xb2\x55\xaa\x68\x31\xf1\x38\xe8\xd6\xaa\x03\x3d\x0b\x71\x1b\xe5\x01\x7b\x10\x76\x0a\x91\xac\x3c\x34\xf3\xfb\xf1\xf9\x06\x9f\x1b\x1a\x5d\xb5\xe0\x9b\x56\xff\xc9\x56\x7b\xec\xc9\x6d\x6d\x3c\xe1\xf9\x4c\x71\xd5\x5f\xce\x1c\xeb\x2c\xf8\x34\x65\xee\xbe\xe4\xdf\x89\xce\x9f\xb1\xde\x63\x7b\xab\x16\xfb\x80\x72\x37\x2e\xf2\x95\xdd\xbe\xfd\x32\x7f\x9b\xde\xff\xb1\x6b\x3c\x76\xb0\x6a\x81\x0f\xe9\xb4\x72\x61\x27\x22\x7d\xc6\xd2\x7e\x27\xe6\xf8\x92\xeb\xba\xbf\x20\x2c\x59\xd9\x11\xe4\xb6\xc7\x40\xf1\x88\x0e\xda\x2c\x52\xe9\xd9\x6b\xfc\x8d\x21\xad\x0d\x7a\x56\xfa\x18\xb4\x9b\x8c\xde\x26\x45\xb4\x26\xe9\xbd\xea\x3f\xca\x01\x4c\xb6\xd8\x8e\xe7\x43\x43\xd0\xd5\xd6\x0e\xb7\xe5\x24\x79\xf0\xe0\x41\x20\x11\xfc\x1b\x6a\xa8\x31\x38\x27\x9a\x15\x6b\x92\xdd\x70\x63\xcd\xd6\x60\x7b\xb3\xf2\x52\x2d\x8f\x56\xe9\x2a\xc8\x33\xe7\xed\xda\x11\xbd\x5f\x54\xd2\x52\xdc\xda\xb3\x5b\x84\x09\xf4\x13\x4f\xd2\x96\x00\xb5\x66\x62\x64\x49\x39\x9f\x74\x12\x33\x87\xca\xf9\xca\x95\x5f\x76\xaa\x65\x2f\xc8\xd0\xdc\xb7\x5e\x8d\xf6\x42\x02\x4c\x19\x65\x00\x10\x7a\x0b\x5f\x4a\x5e\x35\xcd\x56\x4e\x89\xf2\x25\x0a\x2b\x55\xb4\x9b\x98\x18\xb2\x23\x0c\x9a\xb9\xd0\x23\x41\xa1\xc3\x4d\x5e\xd8\xb4\x5b\xdc\x01\x2a\x17\xf4\xef\x9f\x01\xd4\x8b\xf8\xbd\xf8\x97\x58\x28\xba\x5e\xd2\x72\x95\x7a\xa6\x1b\xb5\x97\xd1\xfb\xfa\x74\x05\x88\xd8\xc9\x5a\x0a\xf1\x82\x5d\x8f\xdd\x23\xb0\xcd\x4d\x4a\xa1\xbb\x33\x25\xd8\x9f\xe7\xa3\x51\x00\x7c\x8f\xca\x63\x31\x72\x5b\x2c\x95\x39\x26\xe7\xaf\xaa\x32\xf7\x34\x46\x2c\xee\xee\x36\x16\x50\xa8\xf7\xf1\x6c\x9f\xde\xf8\x33\xdd\xa0\x57\x62\x00\x0b\x7e\x20\x12\xfc\x3a\xb6\x77\x0b\xbc\xe5\xdd\x47\xf0\xc8\xbb\x42\x45\xeb\xa0\x8e\x8b\xa8\x43\xa6\x34\x31\x92\x7d\xc9\xc8\x45\xb8\x7c\x6b\x16\xc6\x50\x03\xfa\x82\xac\x35\xde\xc8\xbe\xab\x5e\xe4\x18\xe0\xea\xaa\xd2\x47\x40\x8f\x19\xac\x13\x4d\xb6\xb9\xa9\xeb\x64\xec\x5e\xe4\xb7\x78\x73\x93\x45\x36\x8b\xae\xbb\x52\xf0\x0b\xf6\x23\xbe\x23\xee\xcd\x81\xf3\x62\xa8\xbf\x73\x68\x19\x2c\x0e\x83\x9c\x4d\xe5\x50\xb4\x7d\x44\xd0\xf0\x5e\x8f\x35\x08\xb4\xc1\xae\xae\x0a\xd5\x98\x9b\xab\xdb\xed\x9d\xed\x62\x55\xa9\x4c\xb7\xc8\x6e\xe7\xb9\x60\xca\x94\x5d\x20\x13\xa8\xa0\xa2\xc8\x0d\x73\x64\x2a\x95\xa3\x91\x12\x39\x54\x6a\xdb\x31\xe3\x99\x48\xf3\x46\xb3\x59\x6e\xc9\xab\x09\x4f\x73\x39\xfd\xe7\x11\x7b\xb8\x6e\x43\x82\x08\x1b\x85\xd6\x98\x7b\xe3\xb6\x35\xd4\xea\xa0\x35\x17\x8b\x5c\xbc\xb0\x94\x09\x92\x0f\xa9\xed\x55\x0d\x3d\x7a\x1f\xcf\x58\xb1\x39\x41\xf5\xb1\xc2\x81\x25\xd1\xae\x2d\x9e\x36\xbf\x19\x38\x74\x22\xcb\xe1\x6a\x64\xec\x50\xb4\x3c\xdc\x70\x01\x2f\xb8\xe4\xab\xe8\x11\xfe\x73\xf2\x9a\xc5\x5b\x59\xa0\xe7\x0c\xc4\x2c\xd7\x17\xa7\x72\x36\x94\x42\xa5\x8d\x5c\x7b\xd6\x02\x12\x3f\x6c\x97\xbb\xf8\xb0\x4c\x6c\x1a\x0d\x41\x6f\x0d\x43\x4f\xda\xdb\x39\xc9\xf9\x77\xd0\xa8\x39\x6b\xe8\x2c\x0e\xd0\x17\x8f\x98\xf8\x52\x64\x63\x51\xba\x8b\x16\xe8\x23\x38\x57\x09\x57\xf8\x88\x03\x06\x3e\xf8\x2d\xf2\xae\xa3\x99\x72\xde\xc0\x47\x15\x6e\x27\x58\x32\xd2\x72\x81\x8a\xbb\x81\x05\xf1\xb3\xe7\x06\xa3\xaa\x59\x45\xeb\x35\x81\x2b\xb3\x82\xe1\x72\x5e\xbc\x24\x68\xb7\x4d\xa0\xc2\xc2\xf2\x43\xed\x8a\x15\x86\x1e\x14\xbf\xcd\xe3\x0f\x3c\x11\x29\x2a\x92\xf4\xae\xf5\xc9\xf9\x11\x9f\x12\x6d\xfe\x97\xc8\xe4\x1d\xee\xcc\x28\x3e\x15\x58\xcd\xef\x22\x93\x78\x4f\x06\x84\xa2\xf8\x6d\xce\x93\x38\x5f\x30\x0c\x3e\x9d\xc5\x4a\xa6\xdf\x2a\xf7\xac\x66\x1c\x7d\x49\xe7\x2d\x31\x40\x78\x6d\x51\xab\xa1\x51\x95\xd8\x0f\x2e\x45\x6e\x6e\x32\xe2\xb1\xb7\xb4\x18\xfc\xb7\x30\x98\xdd\xb5\x92\xe4\xe2\x39\xbb\x9c\xc4\x03\x1d\x0b\x00\x39\x0d\x64\x8a\x9c\xa7\x43\xa8\xf0\x1c\x85\x2a\x72\xdf\x3a\xc6\x9f\xe2\xd5\x7c\xd0\x6d\x8e\xad\x96\x83\xbe\xf6\x18\x5c\xbd\x38\x54\xfe\xf8\xe2\xc6\x84\x67\x83\x49\xc5\x6d\x5e\x73\x8f\xdb\xd7\xa0\xa8\x1f\x9a\x2b\x30\xc0\x95\x79\xbe\xc5\x6c\xee\xb6\x76\x4a\xf7\xf9\xfd\xb3\x52\x4e\x6f\x64\x05\xa6\x04\xef\x09\xac\x8c\x2f\xac\x2e\x60\x0f\xb2\x12\xfd\x64\xb0\xaf\x04\x88\xdf\x08\xd5\x09\x65\x9e\xe2\x31\x15\x2d\xf8\x05\x4f\x7c\x87\xae\x24\xe4\xc3\xe3\xf0\x55\x37\x27\x02\x29\xcf\xd3\xa1\x49\x71\x62\xd0\xde\xa9\x00\x54\x34\x74\x37\x5f\x95\xff\x53\x4e\xd1\x35\xf8\xdc\xca\x77\xb3\x7a\x9f\x9d\xe1\x5e\xe3\xec\xac\x41\x4e\xcf\xfe\xc5\x21\xeb\x6b\x13\xa4\x86\x68\xcd\x98\x35\x06\x32\x1d\xc5\xe3\x39\xaa\x20\x8d\x2e\xfa\xd2\x18\x9d\xb1\xe1\x94\x93\x62\x0e\xb6\xaa\xa1\x5d\x10\x6d\xea\x65\x16\xe7\x1e\x34\x71\x40\xf9\x84\xdd\x93\x2f\xe1\xf1\xfa\x7a\xac\x01\xe9\x4f\x65\x76\x78\x99\x9e\xeb\xd9\xad\xaf\xf6\x2b\xbc\x73\x66\x17\x92\x5a\x78\xab\xc6\x3e\xe3\x70\xb1\x40\x51\x80\x71\x7f\xb5\x41\xd1\x5c\xb9\xb6\x01\x12\x48\xfe\xf3\xc1\xc4\x0e\x33\x0e\xee\xbe\x09\x90\xe0\xe2\x74\x4e\xf9\x02\x96\xaa\xdc\x85\x46\x60\x82\x67\xc9\x02\xaa\x11\x1f\x67\x49\x3c\x88\xf3\xc4\xdf\x4d\x79\xd6\x98\x3b\x71\xa9\x6e\x23\xf6\xf5\x4b\xc5\x71\x28\x61\x30\xf4\x29\x5d\x1b\x87\x7d\x71\x4e\x13\x41\x15\xaf\xf6\xaf\x30\xb5\xf8\x60\xee\x52\xd1\x53\x8c\x70\x47\xf7\x9c\x7e\xa6\xdf\xd1\x9a\x37\xab\xc6\x18\xee\xcb\xdd\xab\x1a\xb9\x57\xbc\xf1\xde\xf7\x78\xbc\x60\x22\xfd\x10\x67\x32\xa5\x6d\xc4\xe7\x6c\x96\x6d\xb7\x8c\x38\xf0\x25\x74\x70\x5d\xb7\x62\x66\x3f\xc3\x96\x46\x85\x79\x6c\xd6\x42\x46\x37\x44\x02\x8f\xbb\xaa\x75\xf2\x51\x18\xfa\xb2\x6b\xe2\x79\x16\xfc\x52\xa2\xc2\x55\xc6\xcd\xcd\xe2\xe5\xc6\xd8\xbc\xe5\xa8\x5b\x44\x2a\xfb\x23\x18\xd8\xd7\xfc\xd2\xb5\x14\x93\x4d\x08\x03\x83\xc0\xc6\x7e\x58\x37\x4c\x86\xb7\x05\xbf\x83\xbd\xe2\x96\x76\x50\xa3\x55\xc6\x68\x5e\x71\x5b\xc8\x73\xf3\xdc\x6b\x79\x70\xf6\x4b\x26\x02\xdf\x12\x6a\xae\xa8\xbd\x88\xdf\x0b\x93\xbd\xb9\x59\x31\xaa\xbd\x9e\x89\x5e\x7b\x1b\xd2\xd0\xdd\x42\xc7\xc3\x17\x7c\x88\xf7\xff\xd7\x58\xc7\xbe\x38\xbd\xf4\x2d\x01\x3b\xd7\x81\x56\x6c\x95\xf9\x98\xa8\xa7\xaf\x47\x16\x98\xdb\xdd\xed\xd3\x19\x68\xd1\x78\xc9\xd5\x7b\x31\x34\x6c\x77\x83\x93\xa9\x8e\xba\x89\x66\x92\xa7\x85\x90\x24\x8f\xfc\x1b\xdf\xdd\x20\x60\xa6\x67\x42\xd4\x18\xda\xb9\x50\x79\x94\xcb\x23\x8c\x7e\x60\x6a\xbf\xcd\x30\x39\x73\x8e\x1b\x2a\x63\x50\x08\xa3\x4b\xff\xa1\x03\xe6\x99\x05\x56\xda\xf9\x69\xa0\x4a\x36\xa9\x9b\xf9\x9c\x54\x3f\x45\xa6\x83\xc0\xc4\x84\xb3\xe0\xde\xbd\x62\xd4\xc9\xe2\xb4\x38\x5d\x9f\xca\xb0\x9c\xec\xdb\xf5\xdc\x6c\xe3\xe9\x35\x02\x35\xe3\x99\xd2\x5a\x36\x3e\x4a\x30\x14\xa9\xaa\x76\xec\x5e\x67\xfd\xac\x92\xeb\x77\x36\x5d\x42\x8f\xfe\x85\x6d\xd7\xea\x55\xd5\x24\x30\xfb\x9a\x90\xe5\x69\xc2\x85\x85\xfd\x19\x10\x2b\x13\x4e\x44\x7f\x99\x57\x76\xdd\xb5\x79\xcf\x32\x88\x6f\x56\x96\x6d\x79\x7e\xa3\xcc\x4e\xce\xa8\x90\xde\x59\x36\x2a\x91\x91\xa9\xf1\xea\x8a\xdd\xbb\x69\xbb\xf7\x45\xec\x3b\xab\x38\x62\x0a\x8a\x7e\xf5\xbd\xe9\xe9\x3c\xc9\xe3\x59\x22\x74\x44\x93\xdb\x2a\xfc\x43\xa1\xf2\x38\xe5\xde\xa5\xe5\x76\x55\x09\x1d\x2e\x05\x4a\x98\xc8\x29\x65\x60\xb3\x65\x53\x19\x6d\xb8\x10\xdc\xee\xd9\xce\xa9\xe0\xb2\x70\x5b\x27\x03\x7c\x3d\x20\xfe\x5d\x64\xa7\xe5\xd0\x4f\x26\x0f\x1f\x5e\xb5\x6f\x76\x56\x36\xf5\x04\xcf\x19\x4e\xd9\x71\x86\x1a\x50\x9e\xf1\x0f\x22\x53\x2e\xe4\x0b\x15\x35\x01\xef\xe2\x4c\xa3\x44\x11\x8f\x2f\xe7\x88\x6c\xc6\xb3\xca\x10\x5d\xb8\xdf\xb2\x23\x4f\xf8\x5a\xb6\xbb\x2d\xd7\xcc\xac\x45\xa7\x1d\x6e\x02\x48\x17\x5b\x94\xca\x85\x13\xc0\xf0\xba\x56\x04\x23\x83\xdb\x5e\x19\x57\xd9\xe0\xad\xb3\x2b\x9b\x4b\x02\x78\x5e\x77\x75\xc5\x22\xfa\xa2\xd3\x27\x3c\x7d\x69\xba\x53\x33\x3b\xf5\x0c\x0e\x8f\x5b\x6d\xaf\x9e\x08\x31\x2b\xf5\x0c\x37\x47\xae\x7b\x16\xb8\xaa\xa7\xfe\xd1\x98\xb7\xbd\xa1\xe9\x9b\x8a\x4b\x63\x4f\x71\x25\xad\x79\xf4\x91\x97\x18\x29\x3e\x42\xef\x34\x7f\x7e\x61\x23\x74\xf7\x71\xc6\x3e\x60\x8d\x46\xb3\xc5\x4a\x23\x81\x2d\xb1\x78\xc3\xe0\x14\xda\x4e\x3b\x62\x91\x6b\x4d\x78\xab\xec\x93\x2d\xe9\xb5\xd7\xd4\x6c\x4e\x03\xaf\xf5\xdf\xd5\x86\x48\x83\xc0\x9f\xfe\x98\xa5\xf6\xd3\x60\xbd\xb5\x0f\xbd\xc7\xbf\x03\x5b\xd3\x23\xab\x76\x67\xf7\x92\xe6\xfd\xc8\x3e\x2c\x4c\xcf\x5d\xe8\x48\x43\xb4\x3e\xcc\x44\x36\x92\xd9\x14\x8f\xda\xf1\xb5\x61\xe4\x67\xcd\xe0\xc5\x39\x60\x8a\xe2\xdb\x10\x18\x70\xd1\xe0\x8a\xf3\x09\x1b\xc4\xd9\x60\x9e\x90\x47\x8b\x1f\x51\x02\xe3\x47\xd0\x34\xf9\x6f\x14\x2f\xeb\x9c\x86\x63\x23\xbf\x9c\x50\x42\x74\x95\x5b\x3f\xcc\xa9\x12\x43\xb7\x96\x68\xc4\x48\xff\xbd\x32\x6d\x9d\xd9\x6f\x69\xb1\x54\xce\x15\x2c\xa7\x95\x33\xd9\x1c\xfe\xe9\x59\xe5\x81\x79\xd5\x3a\x30\x40\x8e\x6f\x7b\x91\x4f\xd3\x58\x78\x52\xcc\x5e\x77\xd0\x50\x66\x02\xaf\x9e\x99\x06\x78\xb7\x42\xfa\xae\x16\x55\x81\x98\x72\xa6\xdd\x5b\x8b\xa6\xa2\x58\x22\xfd\x86\x82\x19\x93\x08\xaf\x90\x4e\xee\x6e\x87\x86\xf4\xdd\x26\x8a\x67\xc1\x96\x44\xad\x9a\x3b\x9f\x2a\x1d\xf2\xda\xa3\xdd\x4a\x70\xd4\x91\x8b\x07\xbc\x95\xc7\xba\xe1\x80\xac\x10\x9e\xd4\x7c\x7b\xce\x1b\x1e\xef\x7a\xf2\xd7\xc2\xf1\x85\xa5\x73\x73\x89\x78\x36\xf9\x45\xf1\x6c\xdf\x20\xd3\x88\x40\x9b\x77\x1a\xe8\x4a\x94\x03\x39\x5b\x14\x2a\x5f\x81\x1d\x7a\xe1\x23\xf2\x46\xd2\xee\xe3\xca\x55\x24\x32\x15\x05\xea\xb7\xd0\x4c\xb8\xaa\xaa\x02\x99\x6e\x53\x57\xc5\x70\xad\xaa\xaf\x92\x2e\x27\xa7\x21\xac\xb7\xd6\x53\xfb\x0a\x2f\xbf\xbf\xf5\xb6\xbb\xce\xb0\x50\xa1\x84\xac\x18\x4e\x33\x82\xa6\xf4\x4d\x63\x97\x4b\xbf\x11\x37\x8f\x5f\xb0\x2f\xf1\x1b\x6c\xb7\xd9\x37\xd5\x18\xa7\x71\xfe\x18\x48\x5c\xec\xf8\x52\x62\x59\x36\xaf\x1c\x3d\xb3\x53\xa8\x9a\xeb\xf8\x96\xfc\x60\x9e\xa9\xf8\x83\x48\x16\x7a\x0d\x32\x2b\x38\x08\x7f\xad\x24\x44\x6a\xae\x06\x62\x96\xc7\x17\x09\xed\xac\x79\x92\x68\x65\x31\x89\xa7\x71\x8e\xcf\x77\x18\xf1\x8a\x1e\x49\x8e\x29\x0a\x9a\x8b\x95\xfa\x56\x6b\xf2\x25\xde\x2a\xd5\x77\xd7\x55\xe1\x39\x61\x06\xe4\x81\x7e\xae\xad\x47\xad\xbb\x57\xca\x84\xca\x8b\x7b\xe7\x0f\x3c\x89\xf1\x85\x47\x99\xb1\x81\x14\xb0\x64\x3a\x9f\x8a\xbb\x87\x0d\xc5\x88\xc8\xf8\x1c\x80\xca\x19\x16\x11\xb9\xc8\x58\x2e\x2b\x35\x10\x58\xc4\xb3\xbc\x87\xb1\x94\xf5\xa1\xd2\x0e\x29\x06\x98\xc1\x66\x52\xc5\xa6\x1f\x3a\x50\xb5\x87\xf5\x73\xe3\x8c\x02\xc1\x5e\x0b\x95\xeb\x40\xa3\x58\x65\x60\xf7\x50\xc2\x59\x36\xe5\x07\x91\x15\x81\x5b\xfa\xf9\x93\x1c\xf4\x71\x24\xc7\x03\x0a\xfb\xb8\xde\xc0\x78\xe8\xab\x37\xb2\x13\x99\xb3\x44\xca\x19\x45\x81\x8e\xd3\xf1\x67\x0c\x4c\xc5\xe1\x95\x2b\x41\x7a\xa4\x8e\x3e\x5e\x78\x8a\xeb\x46\x2a\xfb\x31\xc3\x8d\xe5\xfe\x48\xf8\xa1\x22\xef\x15\x22\xe0\x3d\xb2\x74\x63\xde\xcb\xb1\x86\xb0\xe4\x9c\xe4\x0d\x43\xe1\x9c\x8a\xe0\x1a\xa6\x9d\x0d\x73\x58\xb5\xfc\xa8\x2a\x3c\xa8\x42\xc9\xa2\x33\xcc\x39\x95\x79\xc3\x2c\xd2\xd5\xeb\xec\xf2\x81\xd5\x35\x8c\x6e\xd5\xcd\x01\x5c\x53\x60\x58\xd9\x39\xf9\xd8\xac\xb4\x67\xd3\x42\x77\xad\x9d\x88\x88\x4b\xe8\x13\x64\x13\xa0\xaa\x76\xc3\x3b\x89\x15\x28\xa6\xa7\xd6\x0b\x8f\xd3\x06\xc7\x2b\x62\x47\xca\xd4\xe1\xcf\x06\x84\x1b\xea\xba\x0a\xd3\xc1\x5f\x81\x09\xa0\xc5\xa8\x3a\xb7\x67\xf7\x7f\xdb\xf1\xd1\xd8\xf0\x85\xd5\x28\xb0\x51\xd9\x83\x64\x0d\x62\x5e\xe6\x25\x69\x6f\x8d\x53\x7e\xd8\xc8\x47\xfe\xaf\xc8\xd8\x13\xe9\xb6\x9f\xc6\xe2\x19\xa6\x0c\x00\xea\x59\x36\x7b\xb6\x88\x08\x77\x73\xa5\x0b\x7b\xc5\xe0\x9d\x7b\x6f\xe7\xac\x1c\x40\xef\xfd\xaf\x6b\xff\x99\x30\xef\xc0\xbf\x72\x40\x43\x93\xe2\x8a\x21\xf2\x71\x54\x0d\x94\x57\x3e\xf2\xea\xaf\xb8\xfa\x07\x94\xf3\x20\x02\xf2\xf9\xe9\xce\x0f\x0c\xc9\x06\xc5\x5c\xf4\x4f\x43\x50\x5c\x1a\x0b\x59\x7e\xf5\xb7\xa7\xb8\xb3\x12\xaf\x75\xe6\xe9\xc0\x91\xd4\x9e\x95\xfb\x0b\x4e\x9d\x2a\x4f\x70\x3d\x2e\x5e\x85\x55\xc3\xe2\x69\x95\xae\xa5\xe1\x3c\x42\x19\x69\x62\x62\x52\x06\x6c\xa4\x8a\x83\xea\x8a\xb7\x2f\xf4\xd0\x76\x59\x29\xd1\x8f\xe3\x24\x2e\xfd\x7c\x7f\x98\xcd\x74\xf6\x8b\x5b\xf7\xbe\x20\xd9\xce\x27\x6f\xd0\xe4\x0c\xa3\x4e\x4e\x84\xf7\xac\x97\xb1\x12\xa0\x8b\x16\xbf\x71\xf4\xb4\x01\xdd\x33\x6a\xb8\x21\x93\xb3\x85\x41\xec\x82\x50\x16\x2e\x4e\x21\x74\xef\xe4\xf4\x74\x79\x59\xa3\x62\x2c\x33\xda\x7b\xad\xf4\x07\xcd\xee\x6c\xcc\xb6\x14\xc1\xd6\xba\x0f\x4e\x25\x7c\x57\x59\x6a\xd8\xd5\x15\xa3\x39\x61\x1f\x23\xd0\x54\x5d\xe7\x32\x38\x39\xd1\xd8\x57\x09\xa8\x0e\xef\x3a\xb8\x67\x32\xe7\xf4\x3c\x4a\x69\xa4\x7c\xf7\xd0\xc2\x48\xdd\x22\xd0\xbe\x37\x56\xee\x70\x04\x09\xee\xe1\x5f\x36\x60\x00\x42\x0f\x93\xd8\xe3\x11\xfd\x52\x5c\xac\x1f\x98\x06\x4c\xd5\x86\x1d\xaa\xad\xf7\xe9\xba\x18\xe3\xbf\x58\x79\x41\xa9\xbc\xb5\x99\x69\x00\xe4\x0a\x8d\x4c\x6b\x3a\x28\x04\xec\x63\x76\x39\x9a\x7f\xb0\xeb\xce\xda\xe1\x9a\xe2\x3b\xaa\x1f\x88\x4b\xd0\x8b\x5c\x18\x51\xdd\x4b\x60\x1d\x63\x17\xa7\x58\xbe\x37\xb3\x21\x56\xe8\x73\xe1\x1a\xe1\x06\xf0\x8c\x87\x4a\x5a\xde\xb2\x99\xab\x4c\xd3\x45\x8b\x8f\x73\x18\xd5\x9c\x4a\x3f\x70\xa7\x12\x1a\x7c\x8c\x11\xba\x6c\x82\x5e\xc7\x00\xed\x5b\x50\x5c\x45\xc5\x08\xb0\x48\xd8\xd0\x94\xbf\xd4\x71\xaa\x68\x8f\x0e\x77\xa2\x4b\xdd\x22\xab\xcc\xd8\xc5\xe7\x1e\xaa\x97\x3c\x2f\xe0\xc9\x7b\x01\xdb\x32\xaa\x63\xcd\xc7\x84\xb4\x4d\x34\x2b\xef\xb8\x30\xa3\x9a\x8b\x97\x6f\x89\x2c\xba\x25\x7b\x23\x72\xba\xd9\xd3\x50\x91\x01\x0f\xf4\xf2\x60\xff\x64\x2c\x03\xde\x88\xab\xc0\x20\x57\x62\xe0\x92\x24\x55\x05\xfd\x90\x79\xbc\xc6\x7a\x2c\x78\xd3\x5f\x97\x38\x71\xb1\xa5\x4e\xcb\x61\xa4\xe1\xdf\x78\xce\xb3\xa1\x5f\xfa\xa1\x57\xfa\xe1\x69\x05\x3b\x06\x95\xda\x9e\xb7\x2d\x82\xef\xbc\x37\xdc\x7c\xd8\x1e\x6b\x18\x42\x34\x9a\x76\xba\x58\x67\xc9\x40\x14\xac\x9c\x0b\xd4\x64\xb4\x29\x1a\x87\xb2\xc7\x3c\x49\x22\xd3\xea\x6d\x3b\xdb\xe8\x85\x22\x84\xf7\x8c\x31\x55\x54\xfb\x07\xfb\xae\x10\xca\xc9\x41\xed\x16\x25\xca\x4e\x39\x32\xb2\x8d\xba\xee\x1f\x45\xdf\x28\x6a\x68\xe8\xf5\x4a\x62\x87\x39\x08\x6e\xa2\xed\xd5\xc1\x01\xa0\x9b\x80\x56\xc8\x38\xb3\x71\x5c\xb4\xae\x54\x9a\x95\x0a\xf3\x51\x6f\xdc\x2a\x66\x25\x6e\xce\x2d\xdb\xe3\xf1\xb1\xbe\x4b\x66\xa6\xe9\x48\x66\xfb\xa9\x76\x32\xc5\x5f\x87\x97\xab\x27\xad\x53\x39\x61\x79\x7c\x1d\x8f\x27\xb9\xd3\x3a\xb5\x67\x5d\x3a\xa6\xcb\xc9\xf4\xf2\x79\x2e\x59\x22\x46\x37\x6f\xb5\xcd\xec\x0d\x1a\x5d\x39\x73\x8d\xbb\x9c\x6d\x41\xf5\xeb\x29\x86\xb8\xc6\x23\xb0\x65\x3d\xfb\x6e\x9a\xbb\x58\x82\x82\xec\x87\x8c\xe1\x40\x48\x09\xe8\x59\x94\x65\x88\xe5\x6b\xd8\x52\x5f\xe3\xf2\xfa\x65\xbb\xc8\x1e\x19\x84\x5d\xa6\x39\x32\x60\x32\xf7\xc2\x93\x6e\xbb\xbf\x58\x99\xb4\x26\x3d\x73\xc8\x13\x15\xb0\xe3\x45\x26\xf8\xfb\xf5\x18\xcd\xe7\x33\x7c\xa7\xe2\x62\x01\x8c\x33\x14\x23\x3e\x4f\x72\xd4\xf7\xcf\x43\x45\x24\xce\x95\xe7\xd2\x30\x57\xee\xdc\x4e\x73\x3d\xa0\x32\x46\xcd\x38\xc5\x77\x2f\x8a\x87\x88\x5e\x94\xfb\x19\x57\xf8\x3c\xc6\x24\x9b\xdf\xe0\x72\x64\x8f\xa6\x8a\x07\x93\xf6\xe2\xb4\x0f\x6d\x4f\xa8\xbc\x43\xc9\x32\xe0\x9a\x2e\xd1\xe5\x63\xc9\x8a\xb3\x52\xba\x28\x65\x52\xb4\x3b\x29\x79\x77\xdf\x74\x68\x5a\x2e\x6a\x9a\x5f\x5d\xf4\x4b\x9e\x27\x2e\xbf\x96\xbe\xda\xd1\x9b\x38\xe2\x89\x66\x14\xeb\x5a\x51\xb2\x31\x57\x68\x57\x25\xef\x8a\x0a\x2b\x3e\xae\x28\xcb\x1c\x1f\xfe\x08\x43\x7a\xe1\xf0\x21\xf0\x1f\x29\x75\xd2\xad\xe5\x55\x74\xb9\xa5\x49\xdd\xcd\x52\x7d\x96\x52\x71\x25\x04\x6f\x2f\xe3\x15\xf9\x29\x9f\xad\xb5\x45\x9a\xf2\x19\xf2\x1a\xfc\x5d\xeb\x0d\x32\xf7\x48\xee\x7b\x51\xf4\x31\xbb\x5f\x0e\x28\x63\x5e\x87\x0b\x1f\x1c\x33\xf1\x61\xa6\x7c\x56\xb8\xb7\xa1\xef\x5f\x4f\xf9\xac\x2a\xce\x73\xac\xfe\x25\x16\x20\xe2\xd0\x09\x4b\x9f\xdf\x62\x40\x08\xad\xcc\x18\xc7\x2f\x1d\x61\x8b\x3d\x72\x9f\x5d\x1d\xb0\xeb\x54\x1f\xd7\x62\xcb\xa6\x7c\x56\x49\xc8\x82\xab\xe8\x9d\x9f\x7a\xbb\xc9\x3d\xef\x66\x81\xa3\x9f\x02\x59\x27\x60\x84\x73\x83\x1f\xb1\x38\x6f\x98\x47\x84\x8c\xeb\xa4\xbb\x26\x58\x1e\x10\xed\xe4\x5a\x7a\x02\x0e\x86\x44\xfb\x6a\x57\x3f\x14\xb7\x1b\xea\xd2\x45\x77\xd9\x47\xba\xf4\x92\xb0\xe6\xab\xfd\x64\x9e\x19\x07\x78\xba\x01\x31\x4e\x65\x26\x14\x3b\x2f\x3f\x58\xb3\xce\xbd\xc7\xcf\xf3\x80\xcf\xf8\xe5\x4a\x2f\xf8\xa2\x6b\xb9\xb7\x4f\x3e\xbc\x4c\x29\xf6\xf3\xb2\x2b\xc5\xa1\xf7\xba\x55\x2d\x72\x7c\xa6\x07\x61\x4e\x42\x10\xda\xe8\xfa\x2f\xee\x54\xc0\x94\x9f\xf0\xc0\x27\xc2\xd2\x29\xba\x28\xdb\xc7\xda\x4b\xcf\xea\x94\x4c\xaf\x15\x4f\x67\x79\xcd\x6f\x9a\xeb\x73\x06\xb3\xef\x88\x89\x9d\xf7\xb5\x9e\xea\x76\xe6\xe4\xe3\x5f\xda\xc0\xea\x77\x0e\x96\x90\xa0\x62\xeb\x5a\xb6\xd6\xee\xa7\x71\x4e\xec\x85\x0e\xf3\x7a\x0e\x5a\x7b\xe9\x9d\xa6\xef\xba\xd6\xd6\xd8\xd6\x3d\x74\x65\x3c\x9e\x29\x9e\x31\xfb\x8e\xac\xe6\xae\x83\x16\x6b\xda\x6f\xca\xb3\x87\x86\x7b\x35\xed\xc8\x51\xf2\xa1\x35\x22\xd2\x3d\x6f\x13\xf9\x8f\x54\x85\x60\xf4\x84\x47\x55\xa8\x98\xc0\x29\x1b\x4f\x5d\xfd\x58\x0d\xa8\xa5\x7e\x96\x63\x78\xf1\x48\x95\x54\xe0\xde\xcb\xbd\xff\x3c\x3b\xda\x7b\xda\x3f\xdb\x3f\x38\xee\x3f\xeb\xbf\x26\x43\xd8\x7c\x36\x13\x19\xbb\x90\xf3\x74\x88\xc6\x41\xd3\x22\xdb\x8c\x3b\x38\x9a\x7b\x18\x56\x3a\x9a\x9b\xfb\xe0\x7a\xe6\xfa\x3b\x45\xf3\xb6\xb6\x7b\xaa\xdd\xde\xfa\xb2\x5b\x04\xf3\x61\x83\x6f\x16\x7b\xc8\xba\xcc\xdb\x40\x68\x26\xb8\x77\x4f\x97\xd3\xfe\xea\x11\x55\xd3\x63\x0d\x22\x98\x17\x0c\x80\xb2\xee\xc1\x02\x88\x42\x12\x19\x23\x13\xfb\xea\x4d\x9c\xe6\x74\x4d\x40\xdf\x0e\x08\x62\x18\xe8\xab\x3a\x3f\xb1\xad\x1d\x17\x9c\xff\x7f\xb0\x1d\xa8\x64\xdb\xa5\xd8\xad\x71\x35\x97\xe0\x8b\xf9\xf1\x07\x91\x7a\xef\xb9\x82\x2e\x8f\x9b\x44\x9e\xba\x2b\x5b\x20\x3d\xd6\xe6\x97\x99\xcc\x45\x0a\xf3\xc8\x95\xa7\x4c\x53\x49\x51\xc5\x8f\xad\x3f\x60\x45\x51\xed\x22\x48\xbb\xaf\x65\x18\x7c\xed\xbd\x8c\x42\xe7\x86\x85\xd7\x0d\x94\xb5\x06\x65\x6e\xbc\x96\x52\x30\xa9\xd8\x60\x22\xc8\xbc\xb7\x75\xd1\x2f\xdd\x4a\x09\x79\x18\xb1\x1a\x11\x5f\xe4\x3b\xcf\xd5\xd7\x77\xc8\xb2\x82\x8c\xcc\x3f\x38\x61\x82\xd6\x99\x13\x1a\xdf\xa7\xd7\x21\x37\xfa\x1a\x94\xc6\xd1\x72\x3e\xfe\x1a\xbe\xd0\x05\x77\xed\x9f\xf6\xcb\xe1\xc5\xe9\x62\x4f\x6f\x90\x6f\x6a\x4e\xc7\xe5\xa8\x45\xc3\x36\x96\x2b\x36\x4f\xe3\xdf\xe6\x76\xe0\xb5\xda\xfb\x47\xdd\x82\x31\x0d\xba\x41\x2e\x19\xbd\xb8\xa0\x7e\x2c\x91\x48\xfe\xf2\x12\x10\xfd\xea\x8a\x55\x48\x17\x97\x66\xc4\x8a\x9f\xa6\xfb\xd1\x30\x8b\x8d\x17\x9f\xc1\xbb\xc3\x6b\xd6\x18\xef\x8a\x3c\xde\x0b\x5c\x32\x22\xf4\x32\xf0\x84\x2b\xb4\x2c\xe8\x0d\x2c\x69\x18\x9f\xe1\x41\x72\xdb\x61\xa0\x56\xc4\x4a\xd7\x7c\xc3\x18\xe8\xdb\x5f\xa5\xf7\xa6\xef\xdd\xf3\x9e\x6e\xdd\xdc\x64\x91\xf7\x33\x26\x4b\xd6\x32\x32\x38\x3e\x80\xa5\x16\xdd\x92\xdc\x23\x6d\x37\xbf\x9a\xf7\xe5\xaf\x64\xb9\x47\x81\x57\xd3\xc2\xe9\x18\x05\x8e\x7c\x8c\xca\x8b\x6e\x8c\x59\x5a\x7c\xcd\xc6\xe8\xbf\x33\x7d\x35\xc8\xe8\x40\x8f\x2b\xb5\x1e\x48\x75\x31\xa9\xd0\xcd\xcf\x7b\x30\xd3\x5f\x46\x1d\xdf\xe9\x57\xf1\x6e\x08\xc3\x52\xc3\x87\x6a\xf5\x3b\x9d\xef\xc5\x42\xdd\xfd\xa1\x5a\x28\x8d\x21\x37\x0a\xb1\x5c\xe2\x74\x90\xcc\x87\x42\x79\xe1\xa7\xca\x41\xb2\xe2\xcf\x88\xe7\xf2\x45\x2f\x82\x55\xdd\xe6\x2a\xbb\x6a\x9c\xd8\x80\x1a\xba\x19\xf7\xc2\x0b\xc0\xc5\xeb\x5b\xd5\xab\xd3\x9d\x6f\x5c\x3d\x96\xe9\x07\x91\xe5\x41\xfc\x15\x6e\x9c\xc3\x28\x96\xca\x79\xf1\xed\x6a\xbb\x95\xbc\xcb\xfd\x5d\xaa\x6f\x8d\x2d\xa4\x86\x14\x43\xdd\x9a\x02\x75\x2b\x6f\x21\xfb\x52\xe4\xe6\x8d\xd8\xba\xfb\xea\xd7\x9e\x2f\xa5\x7d\x64\x5c\x39\xef\x44\xeb\x19\xf2\xcd\x38\x50\xde\xf0\xbe\xbb\xeb\xd5\x97\x7d\xe1\xbd\xec\x4c\x59\x78\xe9\x9d\x7a\xd0\x73\x8f\xc1\x46\x3a\xa5\x70\xf1\x3d\xf2\x7a\x8f\x61\x0e\x59\xd7\x60\xdc\xf6\x4d\x2c\x85\x87\x49\x69\xea\xf1\x6c\xac\x30\xd0\x89\x56\x2d\xbd\x03\x8e\x55\x07\x96\xae\x4d\x80\xc0\x55\x6e\xeb\x75\x65\x2a\x3d\x41\xc2\x33\x8e\xe5\xc7\x67\x05\x6f\x10\xa8\x8c\x86\x9c\x3d\x60\xfe\x01\x87\x3e\x02\xb7\x4d\x76\x46\x0b\x7c\xa4\x77\x8f\x7a\xa9\x1d\x5d\x74\xf9\x9d\x65\x67\x78\x9e\x23\x2c\xfc\xb3\x18\x0a\xed\x28\xd7\xef\x20\x11\x05\x9a\x27\xbc\x77\xf8\x33\xbe\x08\x1f\x27\x46\x5e\x37\xcf\xfc\x63\xb4\x6b\x8b\xa1\x59\x3a\x4a\xb1\xe6\x45\xbd\x83\xd1\x46\xc5\x16\x9b\xa7\x89\x50\xca\x85\xef\xa9\x5b\xbd\xa9\x0e\x9b\x95\xba\xb7\x3c\xd6\xff\x18\xb3\xa3\x7f\xce\x71\xa3\xe1\xd1\x02\xdb\xa3\x14\x3f\xb6\x68\xc5\x85\xa1\x42\xac\x97\x8a\x9b\xba\x81\xe1\x43\xc7\x51\x09\x8f\xa7\x2b\x6e\x5a\x2e\x0d\x20\xb3\x04\x38\x38\xf8\xd2\xde\x18\x15\x21\x60\x3d\x7f\x62\x6d\x8d\x95\x56\x37\xc4\x80\xc9\x88\xe5\x5c\xdd\xbc\x86\xfc\x69\x1c\x9c\x55\xe0\xdc\x8c\xbe\xd9\x87\xf3\x3c\x2a\xf8\x3d\x57\xbe\xee\xeb\x1a\x3c\xe1\x79\x23\x49\xa8\x34\x93\xf3\xdc\x0b\x34\xc3\xce\x8d\x7b\xf4\x39\x86\x87\x15\x1c\x8f\x99\x1c\xdd\x2e\x27\x22\x25\x23\x35\x2c\x61\x62\xc8\xce\x9f\x1f\x1e\x9f\x3d\x3e\x7c\x73\x70\x7c\x0e\x2c\x3f\x95\x99\x60\x79\x3c\x45\xe5\x88\x32\x8f\x5e\xed\x1d\x60\xc4\x9b\x69\x9c\x24\xb1\x12\x03\x99\x0e\x3f\xc7\xcf\x1f\x56\x85\x2c\x1e\xac\x7f\x64\x8d\x1d\xa5\xcd\x61\xf5\x9a\x60\xe9\xe8\xb6\x00\x40\x6c\x3c\x5b\x63\x3d\xb6\x6d\xfd\x9e\xb8\xca\x1f\x53\xb7\x31\x12\xf8\x0d\x02\x5e\xe5\x7c\x3a\xb3\x12\xfb\x40\x5e\x46\x9e\x6c\xce\xc4\x94\xc7\x29\x8d\xa3\xa1\x12\xdb\xc2\xeb\x73\xd3\x19\xdb\xf2\xea\x32\x12\x3b\xa8\x1d\xc1\xdc\x45\x2e\x87\xed\x27\xf7\xce\x10\x65\x3d\x78\x40\xfd\xf8\x89\xea\xc1\xa1\xf2\x8f\x97\xad\x47\x9f\x5e\x86\x4e\xb6\x8b\x37\x8b\x42\xeb\xae\xa5\xca\x6e\xf9\x28\x1a\x97\x43\x12\xad\xde\x19\x9a\x45\x5d\x96\xac\x4e\xed\xb3\xd3\xd2\xdb\x37\x0e\x28\x9a\xe6\x9d\x77\x8d\x6b\xeb\x78\x85\xfa\x3c\xd6\xb0\xd1\x39\x1c\x6b\x00\x51\xb1\xbe\x82\x86\xec\x0c\xfb\x01\x3d\x42\x9d\x4f\x6f\x1a\x89\xae\x81\x01\x7f\x09\x8a\xc8\xbf\xdc\x51\x59\xcc\xd3\xab\x1b\x0d\x9f\xb8\xaf\xf4\x5d\x64\xc6\x69\x4f\xf4\xe5\x43\x11\xba\xe8\x83\xec\x42\xe4\x97\x42\xa4\x2c\xbf\x94\xce\x2d\x96\x0d\x41\xd7\x9b\xc6\xa9\xd0\x86\xb4\x05\xda\xcf\x5c\xa4\x44\x3b\xba\x2a\xe7\x79\x3c\xc0\x4f\x1b\x81\xfb\x8c\x72\xe2\x74\x20\xd8\xf7\xed\xed\xf6\x36\xfe\x1e\xf0\x5c\x8c\x65\xb6\x60\x2f\x38\x3d\x4f\x7f\x93\xa2\x0f\x4d\x2c\x39\x14\xe0\x6a\x4f\x0b\x2d\x7e\x55\xc3\xaf\x6b\x1e\x34\x27\xf4\x41\xdf\xca\x3b\x6d\xf6\xef\xe2\x23\x9f\xce\x12\xa1\x7b\xad\xaf\xe8\x6a\x97\x4b\xd6\xe0\x8d\x2e\xdb\x81\x09\x62\xf2\xb0\x69\xc5\x2c\xc8\x3d\x6b\x5b\xeb\x99\xb5\x1d\x62\xb1\x4e\x87\xf5\x7e\xd2\x37\x46\x2a\x20\x01\xa1\x0f\x88\x6d\xf3\x21\x1b\xbc\xd1\x82\xda\x56\x61\x43\x18\xbd\xff\x03\xd0\x95\x08\x0f\xf8\x41\x8b\x1d\xf0\x83\x0a\x84\xde\x34\x13\xbf\x19\x7b\x28\x35\xd1\xdf\x40\x39\x03\x00\xd1\xe3\xea\xca\x37\x55\x59\x83\x04\x65\xde\x33\x60\xeb\x5b\x66\xaa\xe2\x31\xad\xcd\x97\xdb\xed\x9d\x3b\xf2\xe5\x97\x0f\x20\x55\xb6\x3e\x17\x19\x2e\x88\x7a\x15\xf9\x8b\x56\x69\x19\xd8\x65\xd7\x51\x73\x29\x17\xf8\x68\x4e\x76\x5a\xec\x61\x8b\x7d\x77\x5a\xc5\x07\xa4\xb6\x78\xe0\xac\x57\x8a\x6e\xb5\x46\x3b\xf4\x59\x98\x57\xca\xbf\xbe\xb5\x76\x78\xac\x15\xa7\xb9\x0d\xd4\x67\x44\xc3\x1e\xb0\xdc\x33\xda\xf1\xbe\xea\x5b\xe3\x4e\x75\x91\xf0\x5e\x56\x15\xaf\x0d\x12\xae\x54\x3c\x8a\xc5\x90\x71\x1a\x41\x1d\xb5\xe9\x9b\x60\xb7\x25\x91\x9c\xaa\xb9\x0b\xf6\x79\x95\x2c\x51\x62\x20\x80\x1c\xca\x01\x1d\xc7\x5c\xc8\xe1\xa2\x3d\x98\xc4\xc9\x30\x13\xe9\x72\x89\x62\xca\x35\xf8\xc5\xa0\x71\x33\xd8\x59\x3b\x95\x72\xb6\x9a\x31\xbd\x3d\xb2\x29\x77\xc3\x68\xba\x43\xd4\x36\xdb\x73\x41\x80\x61\x2f\x14\x0f\x45\x26\xc2\x63\x56\x72\xea\x00\x64\xa9\xcc\x7d\x45\x1c\xd4\xee\x09\xb0\x83\xc6\x6d\xe3\x89\xa3\x86\x8e\x94\x87\x65\x79\x2c\x32\x36\x46\x35\x3e\x83\x9c\x94\xd1\x03\x3f\x18\x02\x18\x6f\x56\x6c\x93\x87\x28\x6e\x45\x35\x80\x97\x7b\x80\xf6\x9a\x76\xf1\xc8\xf2\xfc\x0f\x58\x7a\xef\xce\x73\x96\x7c\xb7\xe0\x3a\x9c\xeb\x6b\x73\x1e\x42\xdf\xcc\x7d\x4b\x8b\x96\x18\x70\x29\xe4\x2a\x1e\xf4\x8c\xd7\xae\x40\x59\x9c\x99\xe5\x8e\xce\x9f\xf1\x7c\x6e\x69\xec\xb3\x52\x50\xba\x92\xc5\x5c\x6f\x86\x63\xe7\x67\xec\xd5\x5e\x0a\x5c\xce\x13\xa5\x87\xd2\x9f\x06\x80\x2c\xf6\x7c\x33\xfe\xd4\xdc\x94\xfa\xf3\xf1\xf6\xeb\x65\x18\xb0\xe2\x56\x1c\xa6\xcb\xdc\x9d\xcf\xac\x9a\xb5\x8e\xb8\xf3\x0a\xdc\x96\xe9\xc2\xa0\x88\x37\xaf\xa4\x65\x7e\x5d\xc3\x05\xc5\x5d\x29\x5d\x93\x55\xbe\xfb\xc3\x59\x85\x99\xfb\x8a\xeb\xb0\x86\xbe\x2e\x99\x8a\x4b\xa6\x3f\x1f\xae\x52\x99\x3c\x70\xef\x0a\xeb\xc3\x4a\xfd\xd9\x2c\x4f\x3f\x9b\xdb\x9a\x64\x44\xd8\x37\x09\x57\x57\x4c\xe5\xf3\x8b\xa7\x74\x38\x7e\x1b\xdd\x83\x9d\x1b\xf9\xf0\x4d\x68\x1f\x2e\xec\xe7\x5a\x43\x62\x65\xdf\xd9\x8a\x81\xb0\x40\x1d\x7e\x31\xe8\xdc\x38\x49\x8a\x41\x3e\x97\xc5\x12\x5d\xe5\xa2\xd1\xe9\x90\x13\x94\xa2\x9b\xc7\x54\xee\xdf\x9c\x3d\x90\x7f\x90\xf1\x50\xb1\x58\x29\xd8\x48\x62\xfc\x2f\x32\x61\xa2\x3d\xf5\x9c\x81\x2a\xca\xf1\x69\x3f\x40\x15\xa7\xee\x79\x12\x3a\x0f\x32\x64\x6d\xd0\x90\x36\xf0\xbc\xce\x7f\x9e\x83\x62\x95\xe1\x1e\xc9\xb3\xd9\xe2\xb3\x19\xe8\x70\x80\x5e\x8b\xa5\x38\x99\xfe\xbb\x47\x00\xd1\x23\x93\x06\xc7\x37\x61\x74\xca\x58\xa4\x61\x02\x57\x8b\x22\xcc\x2c\x93\x1f\x17\x85\x18\xb4\xeb\xfa\xa9\xd1\xe2\x66\x98\xf4\xfe\xfd\x03\x99\x8b\xee\xfd\xf2\x5a\x26\xa5\x82\xfd\x1c\xf4\x61\xc8\x64\x4a\x36\x8f\x63\x49\x0b\xe5\x1d\xcc\x1d\xb9\xd4\xcb\xea\x9f\x7a\x6d\xd3\xf4\x32\x0f\xec\xac\x33\x47\xb4\xea\xf0\xdd\x8a\x19\xa2\x41\x8c\xee\xb8\x7f\x70\xf6\x76\xef\xc5\x9b\xfe\xaa\x15\x48\x17\xd9\x4f\x47\x71\x1a\xe7\x8b\x35\x40\x1b\xdf\x55\x2e\x69\xc1\xdc\xf3\xd5\x9c\xf0\x29\x38\xcf\x35\x26\x70\x7b\xd1\xdb\xb7\x35\x5d\xe3\x7a\x25\x5f\xbe\x1b\x59\x34\xa7\xe7\x5e\x4f\x12\x9e\x8e\xe7\x7c\x4c\x81\x00\x2c\x7b\x5d\x5e\x5e\xb6\xd7\x66\x31\x48\x51\x83\x2c\x9e\xe5\x5b\x06\xdb\x16\x60\x23\xaf\x03\x27\x28\xce\xdb\x2c\x12\xed\x71\x5b\xcf\x65\x17\x89\xd2\xde\xf6\x55\x2d\x96\x89\xb1\xf8\x28\x54\x8b\x9d\xc3\x0a\x43\x43\x17\x6d\x37\xcf\x5b\x74\x7f\x8c\x82\x51\xe2\x21\x75\xa3\xd1\x3c\x6f\xfe\x99\x85\x7e\x6a\xaf\x98\xac\xc3\xcf\x5a\x08\xe3\x9d\xe5\x65\x0c\x7d\x0b\xe5\x6d\xa9\x06\x55\x0d\xa7\xbd\xa1\x56\xb3\x71\x59\xbd\xba\xd9\xcb\xab\xa4\xf4\x3b\xb7\x2f\x23\xe4\x7d\x77\x2e\x77\xc2\x76\x23\x07\x53\xf1\xf2\x06\xd6\x4b\x77\x77\x11\x64\xce\xce\xa1\x05\xa8\xf2\x7b\x5b\x56\xb3\x32\x69\x0f\x12\x39\x62\x75\x2a\x5f\xff\x33\xcb\x4b\xaf\x8b\xb7\x61\x2e\xd4\x73\xd7\x60\xb0\xb5\xf7\xa0\x1e\xf8\x72\x55\xbd\x02\xf8\x16\xdc\xb6\xee\x5e\xb2\x24\x49\x35\x77\xad\xb1\x56\xcf\x12\x1e\xbb\xb9\x4a\x3b\x46\xd5\xf2\x3d\xf6\xd1\x6e\x81\xf7\x10\xb5\xd8\x34\x12\xcd\xd7\x42\x18\xfc\x97\x0a\x52\x7b\x38\x3b\x3f\x39\xb1\x6e\x68\xa7\xa7\x74\x77\x07\x39\xf0\x16\x8a\xea\x0f\x7f\xfc\x42\x1c\x12\xe3\x26\xde\xb2\xc3\xf5\x54\x4a\x3a\x35\xbc\x6f\x1e\xbf\xe4\xfa\x1e\xf4\x7d\xd0\x1c\x2d\x13\xf8\xa1\xf4\x40\x96\x3f\x95\x72\x15\xcf\xf8\xe0\x2b\x2d\xb4\x55\x05\x3e\xb1\xc6\xc7\x46\x97\x6d\xb7\x58\x63\x01\x7f\xd9\x2a\xce\xf7\x0b\x6a\x17\x2d\x1a\x76\x62\xd6\xd5\x86\xff\xb0\xf8\x32\x05\xdb\x67\xe5\xab\xab\x8a\x57\x0e\xee\x99\xa7\xa1\x8e\xf9\xf8\xc6\xf8\xfd\xda\x41\x31\xb8\x51\x11\x5e\x8a\xd1\x20\xd5\x6f\x60\xd8\x0b\x38\xa1\x67\x64\x95\x6d\x19\xf1\xb4\x42\x2f\x09\xdc\x3e\x63\x86\xef\x3d\xb9\x5b\xd2\x6c\x96\xfb\x4d\xfa\x0f\xb7\xe2\x6f\xad\xf2\x94\x4f\x1b\x21\x17\x9f\x80\x20\xe2\xc0\x4f\xca\xbe\x71\x6e\x17\x37\x8d\x85\xd8\x43\x6b\xcd\xc2\xef\xfe\x3b\xd4\xe1\x95\x6f\x0f\x54\x09\x78\x2f\x6c\x52\xb8\x33\x5f\xc1\xf2\x5e\x99\x93\x95\xc7\x1e\x0e\x10\xb6\xf0\x72\x18\x3c\x77\xa0\x0f\x35\xde\xa4\x3c\x5b\x44\xc5\xcc\x26\xeb\x96\xde\x47\xd8\xbd\xc1\x5d\xd2\x97\x40\x6c\x94\xf0\x3c\x17\x85\x57\x52\x3d\x37\x55\x3a\x07\x07\x64\xef\xc5\xc2\x3d\xa0\x6a\x42\xf7\x38\xbc\xf2\x32\x2d\x64\xa2\xef\x90\x57\xd7\x1f\xc0\x11\x95\x47\xf9\x95\xb1\xb2\xac\xbb\x66\xb1\x85\xb7\x90\xc0\x17\xac\xc7\x1e\x06\x12\xf8\xa9\x94\xfe\x7b\xbe\xac\xc7\xbe\x73\x67\xb1\x74\xa3\x3a\x72\xc7\xb4\x18\xab\xa5\x28\xa1\x4d\x76\x8b\x35\x2e\x1a\x5d\xf6\xd0\x93\xee\x15\x08\xce\xda\x61\xf4\x54\x83\x70\x15\x46\x90\x34\x8d\x2e\xfb\x0e\x31\x07\x4e\x0c\x4b\x84\xac\x96\x38\x5e\x28\x21\x7d\xb4\x45\xb1\xd1\xab\x9f\x24\xa9\xb4\x20\x9b\x10\x03\x25\xf3\x71\xe6\xdd\xec\xa6\x6e\xea\xd8\xe8\x08\x5f\xe1\x2c\x5d\xbd\xc1\x9f\xce\x73\xf4\x63\x2a\x5d\xe2\xbd\x99\xe5\x76\x4a\x3c\x47\x7d\xad\xad\x76\xc0\xbb\x21\x58\x7a\xbb\xdd\x76\xf7\xf7\x29\xb8\xc8\x69\x39\x64\xfa\x6d\x62\x3b\xb1\x7f\x57\x42\x30\x47\xca\x4a\x79\xe5\x87\x72\x30\xfc\xf2\xc9\x32\x14\x30\x4e\x98\xb8\xe3\x78\x22\x5c\xc4\x0b\x65\x7d\x30\x2b\xbf\xfc\xca\xb4\x75\x28\x0c\xba\xc3\xb3\xb1\x8e\xb4\x83\xbe\xa8\xe8\xf4\xbd\xfa\xf2\xbc\x6f\x51\x22\x47\x21\xbc\xee\xff\x4b\x9c\x4f\x82\x7b\xf7\x9c\x1c\x31\xaf\xab\x5c\xd9\x0a\xef\x53\x83\x7c\x22\x0f\xb6\xe5\xce\xf8\xde\x8b\xd5\x45\x0e\x72\xfc\x76\x20\x53\xed\xf9\xef\x3b\x74\x50\x84\x5a\xbc\xc9\xed\x8d\xe9\x5d\xc5\xdd\x5a\xac\xf7\x25\x2f\x02\xdc\x49\xef\xbc\x9b\x18\xd4\x42\xa3\x42\xf4\x9d\x90\x5b\xc9\x45\x03\xd9\xec\xd4\xc4\x43\xc1\xa9\x95\x0d\x45\x66\x9e\x50\x1d\xcf\x79\xc6\xd3\x5c\x88\x61\x33\x94\x60\xef\xcb\xb7\x17\xec\xf9\x44\xf9\x02\xdb\xa3\xc2\xbb\xdd\x76\x83\x92\x81\xe0\xeb\x56\x3c\x8d\xb3\x86\x84\xd3\x21\x52\x8a\xa7\x63\x03\xf8\xa9\xd8\xb9\x0b\x0a\xa4\x5d\xf4\x6b\x74\x42\x66\x9e\xb6\xcb\x25\x0c\xce\x70\x3e\x10\x3a\x3c\x80\xf7\x72\x8a\xe1\x64\x5f\xe4\x00\x47\xbb\x08\x2c\x9e\x98\x64\xfb\xa3\xb0\x36\xc3\x18\x5e\xa0\x00\x7a\x1f\x00\x97\x7e\xc5\x26\x3c\x1d\x26\xc1\x1e\xcc\x74\x8e\x1c\x3c\xdb\xe4\x9b\xea\xa3\xf4\xda\x8d\x7b\x32\x15\x7f\x74\x1e\x19\x5d\x40\x71\xdb\xe0\x20\x5f\x49\xba\x57\x58\x10\xbe\xb0\x70\xd7\xb2\x7d\xa9\x68\x2f\xb9\x22\x7a\x21\xb0\x6e\xf9\xcc\xc4\x9a\xab\xc4\x92\xf9\xbc\xf2\x39\x04\x3b\xd1\x61\x77\xe3\xdc\x23\xc2\x70\xea\xf7\x7d\xbf\x43\x93\x05\x9b\x94\x01\x0f\x23\xa9\xdf\x27\xbf\x4f\x27\x16\xaa\x1c\xd9\x30\x3e\x18\x2e\x2e\x27\x0f\x4f\x97\x3b\xb5\x9d\x7c\x67\xc1\xbe\x3f\xf5\x1d\xdc\xec\xba\x10\x7a\xaf\x15\xc3\x6f\x15\xd6\x33\xd8\xea\x3a\x8c\x0f\x5b\x0c\x90\xda\x05\xcd\xe2\xb4\x6f\x3b\xda\x30\x73\x4b\x02\xc9\x55\x47\x55\x27\x09\x74\xbb\x47\x88\x96\xad\x66\xa1\x63\xb6\x9b\xcd\xa4\x80\xaf\x3d\x13\x1e\xb6\xbf\x2f\xce\x84\x37\x79\x9c\xdc\xac\x5a\x9b\x6d\x72\x26\xa7\x95\x77\x67\xd6\x72\xb1\x36\x41\xac\x0b\x25\x97\xb9\x3b\x2a\xd6\x03\x05\x37\x9e\x0a\x15\x3d\x04\x5d\xd7\x06\xc1\x76\x2a\x30\x69\xba\x35\xf4\x32\x4d\x95\x4c\x44\x3b\x91\x63\x4d\x69\x15\x2c\x2e\xbe\xda\xec\xbe\x4f\x97\x97\x3e\xd9\xa6\x5b\x09\xe6\xe7\x4e\x95\xa5\x2e\x08\xb5\xa9\x5b\x57\x56\x9d\x4b\x8e\xdf\xbe\x95\xad\xe4\xee\xec\xcb\xbc\xcc\x8f\x00\x13\x67\xca\x5d\x4d\xd7\x6a\xb3\x88\x3f\x88\x4a\x5d\xa3\x68\x97\x2f\xf0\xc3\xcd\xe3\xbf\x97\x2e\xfc\xe8\x59\x55\xd7\x43\x3c\xf6\xbb\x85\xd7\x6a\x91\xde\x67\x6d\x73\x9d\xc0\xae\xcd\x8e\xee\x37\x18\x86\x4c\xc1\x25\x16\xcc\x9b\xc8\x5a\x7c\xcb\xf6\xe6\x95\x64\xa7\xe4\x6d\x60\x09\xb8\xc2\x0a\xb1\xca\xb8\xe0\x31\xb8\x3d\xac\x0f\x38\x97\xe2\xc1\x93\xd5\xe0\xb4\x70\x27\xc1\x14\x88\x42\x7e\xb3\xb7\xe1\xa7\x72\x38\x4f\x44\x5b\x7c\x9c\xc9\x0c\x27\x94\xaf\xad\xef\xd6\x6a\xd7\x4d\xb2\x01\xe1\xed\x26\x6d\x53\x1a\x27\xf2\x82\x27\xe8\x24\x5b\xb7\xda\x42\x9d\x3d\x32\x19\x5d\x63\x7c\x52\x22\x19\x55\x80\x61\xb2\x05\xba\x8c\xd3\xa1\xbc\xac\x00\xd3\x19\x5d\xf6\xe9\xba\x59\xbb\x6e\x7d\xba\x3e\x6d\xfd\xd0\x3d\xb1\x53\x25\x13\xbf\xcd\xe3\x4c\xb4\xa8\x07\x2d\xdd\x83\xe6\xa7\x9a\x15\xc2\x2c\xd2\x31\xbd\x3f\xd5\x3a\xf7\x59\xca\xdf\xf1\x8f\x40\xb5\x77\xa8\x0e\x33\xf8\xb9\xa5\xf2\x85\x60\x93\x3c\x9f\x31\x40\x27\x14\x86\xa7\x43\x13\x0b\x40\x42\x86\xea\x76\x3a\xe3\x38\x9f\xcc\x2f\xda\x03\x39\xed\xf0\x84\xa7\x83\x84\x67\xef\x45\xc7\x20\xec\xd4\x70\x55\x40\x60\xd6\x63\xba\x5d\x51\x03\x13\x1a\x4d\x9b\x59\xcc\xd3\x59\xd8\x1a\x65\x2e\xe3\x58\x88\xdf\x4c\xd1\x79\x96\xf8\xe9\xf3\x2c\xd1\x19\xbf\x27\xf1\x85\x9f\x03\xbf\x75\xd6\x5f\xfc\x74\xea\xef\xd6\x50\x8c\x44\x96\x89\xa1\x06\x29\xec\xca\x2c\x74\x22\x87\x5c\x4d\xec\x0e\x71\x28\x84\x69\x28\xbe\x52\x79\x38\xc3\x03\x43\xbf\x44\xbb\x83\x39\x5b\x92\xb2\x0a\xf8\x61\x76\xd7\x98\x9e\x57\x5d\xd6\x78\xd6\x3f\x6e\xb4\x90\x13\x61\xf6\xbe\x49\xf9\x3c\x9f\xc8\x2c\xfe\x5d\x0c\xdd\x83\x07\xb3\x4c\x0e\x84\x52\x4f\x78\xce\x5d\xe2\x10\x7f\x35\xb0\xf0\x40\xa6\xb9\x48\xf3\xe3\xc5\x4c\x74\x59\x03\x76\x80\xf1\x00\xd5\xb0\xce\xc7\xad\xcb\xcb\xcb\xad\x91\xcc\xa6\x5b\xf3\x2c\x11\xe9\x40\x0e\xc5\x10\xcb\x4c\x04\x1f\x8a\x4c\x01\x3b\xc1\x4f\x25\xf2\xd7\x34\xe4\xcf\x31\xc3\x39\x02\xb3\x08\xb6\x3d\xc1\xc3\xe4\x7a\x27\xa3\x51\x9c\x40\xbe\x7d\xd9\xdb\x3d\xec\x6d\xbb\x89\xd7\x43\x13\xc9\x87\x71\x3a\x6e\xb1\x01\x4f\xd9\x5c\x89\x6e\x8d\xb1\x2d\xcb\xbd\xf3\x2c\x69\x31\x39\xcb\x55\x0b\xaf\x40\x5d\x60\xe8\x3b\x74\xcc\x28\xc0\xd8\xdc\x20\x0b\x4a\x36\x6b\xe1\xfd\xec\x77\xfc\x23\x8b\xe6\x59\x8c\x78\xe9\x54\xd7\xa1\xb6\x11\xd6\x46\x43\x1d\x51\xff\x2f\xed\x27\x9a\x23\xa2\xa6\x79\xe8\xab\x30\xff\xa3\x4f\xd7\xad\x60\xd8\x97\xa1\x6f\xd9\x62\x06\x15\xf0\xec\x3c\x4b\xda\x58\x3a\x92\xed\x79\x96\x98\x2c\xa5\x20\x33\xa1\x1d\xe0\x40\x26\xed\x58\xbf\xe4\x6f\x66\x0c\x4a\xf7\xed\x1a\x39\xa9\x3c\xd9\x3b\xde\xa3\xaf\x57\x22\x33\x73\x77\x28\x07\x8a\x75\xb4\xa2\xd4\x65\x38\xcc\x7a\x9f\x22\xd3\x04\xf2\x53\xa1\x7d\x5c\x46\x3e\x37\xe1\xc1\x7b\x36\x17\x2c\xb2\xec\x99\x4b\xda\xd0\x11\xb8\x8e\x8e\x48\x81\xe8\xf4\x76\x92\x27\x99\xe0\xc3\x85\xbd\x48\x4e\x90\x15\xb2\x81\x1a\x67\xfe\x5c\x24\xf2\xa2\x33\xe5\x2a\x17\x59\x47\x65\x83\x0e\x8c\x4f\xfb\x9d\xfa\xb7\x17\x7f\xdd\xf9\xc1\xdc\x91\x6f\x63\x3d\x9b\x9b\x0c\xf7\xc3\xb6\x95\x98\xa0\x59\x09\xef\x3d\xc2\xa4\x31\x9c\xa8\x0b\xf5\x7c\xc1\xd1\xa6\x3f\xf1\x68\xa1\x71\x82\x0a\x83\xbb\xd7\xa7\x32\x9b\xf2\xbc\xcb\x1a\x17\x19\x1f\xbc\x17\xb9\x6a\xb0\xeb\xa6\x7b\xaf\xfe\x86\x56\x98\x7b\x98\x04\x71\xaf\x10\xa0\xc5\xb6\xf1\x5e\xb1\x8d\xea\x32\xc6\xcb\x45\xb4\x55\xb6\x77\xbe\xb8\x12\x0c\xcf\x2b\xcc\xe4\x6d\xe3\x35\x5b\x85\xfa\x79\x30\x8d\xdf\x29\x99\x36\x9a\x5d\x7b\xbd\xcc\x76\xfa\x9f\x47\x87\x07\xa5\xde\x36\xc3\x28\xa7\xb7\xaf\xae\x5a\x6a\x54\xd5\xbf\x8a\xe8\xd5\xcd\xd0\x9c\x56\x81\xcb\x3c\xcc\xe3\x15\xbe\x36\x97\x53\x3b\xf7\x61\x6c\xc6\x22\x6f\xa1\xb7\x97\xbf\x48\x68\xa2\x8f\xa4\x8e\x97\x78\xbf\x13\xb0\x93\x1f\x82\x6d\x39\x17\x51\x7e\xd2\x56\x82\x67\x83\x89\x7f\x93\xcf\xa4\xb1\x07\x3d\xd6\xd8\x6c\xb0\x07\xba\xc1\xe6\x36\x5f\xf1\x35\x31\x0b\xdf\x63\x8d\x47\x65\xf0\xaa\xcb\x7f\x9d\xfb\x20\x7e\xa9\xf5\x7a\x78\xc8\x03\x01\xbb\x42\x34\xd2\xb2\xd6\x46\xe7\xb5\xd6\x6d\x5b\x71\xe3\x31\x15\xdd\x82\xa1\x6d\x74\xc3\xa1\x6e\x95\xc1\xc8\x09\xa8\xd1\x65\xa5\xe7\x42\x0a\xe3\x77\xdd\x72\xf5\x17\x86\x85\x88\x7a\x21\x46\x32\x13\x47\x22\x1d\x36\x99\xff\x2b\x92\x4d\x00\x92\x76\x8d\xa4\xc6\x4e\xa4\xca\xbb\x2c\x69\xc3\x5f\x5c\x5a\x30\x75\xc6\xf3\x09\xa4\xc2\x5f\x48\x65\x0f\xdc\x78\xb0\xab\x2b\x7c\x72\x10\x01\xcd\xd2\x69\x06\x53\x17\x97\x59\xde\x35\xfe\x39\x49\x1b\x7e\x36\xe9\xd9\x58\x95\xb0\x47\xec\xfb\xef\xbf\x63\x5d\xf6\x83\xb9\xc7\x6f\x17\x3f\xdb\xb1\x96\xde\x67\x94\x57\x61\xd9\x2e\xa7\x5a\xb6\xec\xb0\xbd\x37\xc7\xcf\xfb\x07\xc7\xfb\x8f\xf7\x8e\xf7\x0f\x0f\x88\x55\xf9\x70\xc8\x00\x18\x94\x6d\x9a\x52\x20\x57\x7d\xbd\xca\x71\x69\xd2\x06\x48\x2b\xcd\x88\x56\x98\x86\xab\x02\x7c\x14\xe5\xd3\x5c\x89\x0c\x49\x44\x32\x8a\x2b\x75\x29\xb3\xe1\x12\x14\x1e\xf8\x03\xd6\xe8\x12\x47\x9a\x32\x45\xcc\x2b\x9a\x22\x6d\x53\xec\xc0\x7b\x00\x4d\x9d\x0f\x80\x5e\x72\x11\x72\x2c\xd2\x1c\x41\xe1\xc3\x87\x85\xdf\x44\x3b\x9c\xc7\xe2\x62\x3e\x1e\xa3\xb6\x10\x44\xfc\xb4\xac\x04\xeb\x92\xd6\xdd\xbd\xe9\x3e\x16\x39\x2a\x02\xde\x6d\x61\x9d\xc4\x7a\xec\x44\xa9\xc4\x5b\xab\xb5\xd4\xb9\xba\xd2\xcf\x47\x31\xd9\x56\xf3\x01\x08\xfb\x20\x4d\x64\x99\xcc\x6c\xca\xa9\xbf\x19\xd5\xa8\x3d\x56\x78\xdd\xff\x8f\x37\xfd\xa3\xe3\x1a\x73\xba\x53\x2a\xf3\x7d\xf3\x50\x98\x18\x92\x2a\x55\x3c\x4a\xb7\x7a\x96\xb7\x34\xe8\xed\x1e\x56\x1f\x35\x50\x99\xe9\x1a\x5a\xbc\xfb\xed\x3f\x9f\xbf\x6e\xd7\x61\x24\xcd\xb0\xd6\x71\x65\x8e\x5d\x4d\x36\x60\xbd\xc1\x94\x67\x7c\x20\xa2\xc2\xf4\x05\x0a\x21\x36\x3b\x37\x71\x69\x3f\xca\x79\x2e\xba\xe6\x86\x36\xec\xf1\xe6\xaa\xf0\xf3\x58\x7c\x84\x55\x14\xdb\xd7\x68\x41\xe7\xe9\xf9\x9f\x2e\xab\x6b\x32\xd6\x5b\xac\x9e\xca\x1c\x6f\xf1\xc7\x62\x08\x3f\x11\x1a\x3e\x60\x0b\x27\xe7\x39\x7c\xf2\x0b\x99\xc1\x87\xcc\x58\x1d\x95\xa3\x8c\xa0\xa8\xae\x92\x52\x1a\xd2\x33\x6a\x14\x21\x8c\x90\x18\x8b\x7c\x2f\x49\x5e\x0b\x35\x93\xa9\x12\xcf\xcd\x74\x2f\x16\xaf\x04\x33\x38\xa8\xa7\x8f\xe5\x50\x54\xd4\x6b\xf3\x0c\x34\x76\xa4\x0c\x88\xc9\x38\x1a\x5e\x34\xd1\xdf\x58\xcf\x08\x26\xda\x26\x75\xf1\x6f\xb3\xad\xa5\x43\x64\xd9\xd4\x31\x47\xe6\x9e\x5f\x00\xa9\x93\x24\xf2\x12\x7a\x89\x91\xe7\x4d\x07\x98\xee\x81\xb3\x3b\xfd\xe7\xcb\x17\xcf\x8f\x8f\x5f\x69\x1a\x69\x1b\x01\x22\x19\x8e\x86\x30\x61\xc2\xbe\xb3\x9e\xe6\xae\xaa\x9c\x20\xbe\x6b\x98\x19\x91\x14\x6d\x16\xef\x59\x67\xc2\xed\x12\xe8\x6f\x3b\x97\x2f\xe4\xa5\xc8\x1e\x73\xd8\x84\x9f\x7a\xb7\xdd\x75\x83\xca\xe3\xe1\x37\xaa\x32\xd7\x6f\x58\x05\x40\x14\x86\x9a\x77\x2b\xe9\xc9\xa9\x4e\x2e\x86\x61\xf2\x9a\xed\xab\x02\x3a\xc9\x86\x61\x42\x81\xca\x60\x1e\xfa\xfd\x7c\x2f\x16\xa7\xcd\x60\xb9\xb7\xe4\x30\x08\xde\xc9\x38\x8d\x1a\xbf\x9a\x28\x71\xd7\x35\xeb\x69\x82\xdd\x00\xc9\xf4\x1c\xcf\x17\x32\x16\xf9\x3a\x0c\xd3\x84\xc8\x74\x0f\x61\x16\xc2\x1e\x05\xf4\x0b\xaf\x87\x8e\x39\x71\x5f\xaa\xda\x2e\xc1\x68\x1c\x1d\xfb\xc1\x9e\xf8\xb7\xc9\xf5\xe4\x1d\xcd\x13\x07\x10\xcd\x44\xf6\x19\xfa\xfd\xdf\xfe\xfe\x63\xd3\x6b\x5c\xac\x8e\xb4\x9c\xed\xf9\x0d\xfd\xa9\xc7\x1e\x6e\xa3\x0f\xb1\x97\xf8\x0f\xf6\xdd\xf6\x36\xdd\xca\x70\x3d\xea\xf5\xd8\x77\xdb\xdf\xdb\x41\xe9\x74\xd8\x91\xc8\x3d\xc1\x55\xa0\x94\x49\x2e\x54\xc7\xb6\x41\x2b\x60\x5d\xb6\x1d\xc0\x13\x48\x00\xeb\x3f\xab\x4e\xab\xc6\x31\x79\x87\xf6\x58\x03\xf5\x72\x0c\xb3\x56\x91\x31\x6b\xf8\xcc\xd3\xe9\xb0\x4c\xcc\x12\x8e\x11\x11\xd2\x3c\x93\x09\x1b\x4c\x78\xc6\x07\xb9\xc8\x94\x85\xf2\x63\x15\xe0\xa4\xf0\xd4\x7c\xda\x3b\x62\xa4\x6e\x8d\x29\xea\x9c\xfc\x3a\xd8\xdb\xfa\x75\xf0\xbf\x4e\x3b\xe3\xb8\x05\x3a\x92\x53\xba\x83\x90\x06\x1e\x4a\xbf\xa3\x9a\x81\x1a\x88\x9a\x84\xb9\x07\x69\x0e\x2d\xd2\x3e\x2e\x43\xc2\xc3\x6d\xf9\xdb\x23\x8e\x1d\x59\xbf\xbe\xaa\xda\x34\x93\x35\x6a\x2e\x36\x13\x3d\x71\xed\x8f\xf1\xc3\xed\xef\x91\xb0\x5a\x43\xf0\x15\xf7\xe7\xfd\xbd\x27\x8d\x9b\x3b\x95\x4a\xad\x00\x37\x3c\x9a\x58\x65\xa7\xcc\x52\xeb\x60\xb4\xeb\x99\x87\xb3\xe6\x8f\xb1\xee\x5b\xcb\x5b\x27\x5b\x84\xcb\x42\x81\xa0\xcb\x84\x92\xc9\x07\x1a\xcd\x56\xa9\x2e\x9d\xd2\x5c\xb6\xc7\xe8\x74\x08\x20\xac\x05\xc7\xcf\x87\xf9\x65\x22\x52\xc6\x53\x06\x2b\x00\xe5\x32\x39\x18\xcc\x33\xa5\x61\x8f\x27\x99\xbc\x4c\xad\x55\x1c\x17\x8c\x5c\x7c\xcc\xe7\x3c\x41\x7d\xda\xc5\x19\xf3\xb1\x22\x36\xaa\xb7\x05\xdd\x9d\x30\xae\x58\xfd\x40\xe6\xec\xa9\x9c\xa7\x43\x8a\xd1\xb4\x4f\x7e\xfa\x09\x3b\x12\xd9\x07\x91\x31\xe4\xa0\x76\x7d\x25\x5b\x14\xf8\xcf\xb0\x5d\x2a\x2e\xa9\x38\x5e\x06\x68\x1f\x1d\xef\x1d\xbf\x39\x3a\x7b\x7c\xf8\xa4\x7f\x74\xe2\x06\xf1\xb4\x19\xca\xdc\x6b\xab\x02\x0e\x26\xf3\xf4\xbd\x27\xee\x41\x20\xca\x34\x6a\x00\xe9\x1b\xfe\x0a\x8b\x80\x4d\xf6\x49\x97\x20\x31\xaf\x13\xaf\x9b\x41\x59\x91\x0e\x83\xa2\xe1\x0a\x63\x1f\x03\x74\x0f\x34\x0e\x78\x4e\xa8\x94\x2f\x0b\xad\xa1\xa6\x17\xac\x20\x0d\xcd\xb7\x5b\x26\xbf\x71\xea\x4d\x33\x57\x08\xe6\xc2\xf8\xf7\x38\x94\x33\xbf\x27\xf1\x45\x7b\x3c\x4f\x7f\x8f\x67\xf6\x99\x40\xd7\x50\x91\x65\x2d\x76\xe1\xbd\x2c\xe9\xcf\x40\x91\x15\x12\xdd\x20\x40\x96\x97\x51\xe2\x48\xa6\x65\x95\x5e\xb6\x74\xcd\x36\x96\x60\xd4\x0c\x4a\xbb\xb9\x53\x60\xf1\x72\xff\x86\x62\x94\xf0\x5c\x94\xbb\x18\xa7\x98\xf1\xed\xf5\xd1\x21\x5c\x0b\x99\x66\x67\xd4\x20\x9b\x7a\xa3\xd1\x7f\xfd\xfa\xf0\x35\x1a\x8d\x7f\x23\x76\xd4\x6a\xb8\xee\x09\x82\xb9\xd8\x7c\x94\xe8\xad\x03\x37\x89\x0f\x12\x50\xe8\xb9\xa6\xe1\xca\x02\x4a\x34\xbd\x8d\xcf\x51\xff\x98\x1d\xef\xbf\xec\x1f\xbe\x39\xb6\x9b\x31\xad\xe3\xd3\x1e\xd5\xfc\xf0\xe2\x28\x41\xdb\x95\xc8\x8f\x29\xc7\x15\xa8\x9e\x56\x00\x8d\xaa\x74\xd4\xac\x58\xaf\x8d\x04\xd1\x28\x8c\x0c\x29\x4b\x10\x0b\xa1\xc9\x7b\x1d\xf6\xe2\xe0\x89\xb1\xaf\x06\xd6\x22\x6b\xcf\xa3\xce\x90\x46\x06\x2d\xba\xcc\xe2\x5c\x58\x13\x63\x63\x9e\x8f\xb6\x7e\x40\x9d\x0e\x32\x45\x3a\x8c\xcc\x80\x3d\xe9\x3f\xed\xbf\x7e\xdd\x7f\x52\x23\xe2\x0e\x65\x0a\xc5\xf4\x5a\xd1\x0c\x53\x07\x12\xf6\x0f\xb9\x30\xc9\x23\x1e\x27\x91\xde\x89\x16\xd2\x8a\xa0\xca\x6a\x56\x06\x9f\xce\x20\xe1\xdf\xb3\x65\xbd\xb7\x98\x47\xc3\xda\x75\xad\x86\x3b\xcc\xb6\x77\x48\x61\x07\x01\x4f\xf7\x8d\xb7\x19\x8b\xdc\x06\xdb\x3d\xe6\xec\x0c\xe4\xe6\x07\xd9\xf2\x9b\x74\x0e\xc0\xf8\x5c\x07\x18\xc3\xc8\x0b\xd9\x08\x74\xa0\xb1\xbc\x07\x5b\xf7\xdd\x13\x3a\x01\x61\x8d\x57\x87\x47\xf4\xf7\x0d\xfe\x79\xd2\x7f\xd1\x3f\xee\x37\x4e\xdb\x23\x99\xf5\xf9\x60\x12\x91\xc3\xcd\x4b\x1c\x91\x66\xcd\x19\xfa\xfd\x74\x16\xd1\x88\x51\x03\xb1\x4f\x27\x94\x52\xd8\x76\x84\x1d\x04\x00\xab\x6f\xaf\x3a\x31\xf0\xc2\x8f\xbe\xe3\x1f\xa3\xa0\xeb\xeb\x9d\x0b\x7c\xb2\xe6\x2b\xcd\x5b\xd7\xcd\xa6\x39\x31\x29\x9d\x3d\xd2\x89\x5a\x78\xe6\x68\x8e\x99\xea\x24\x30\xea\xcd\xb6\x3e\xd4\xab\x5d\xb7\x3e\xd5\x0b\x67\x4f\xf5\xee\x8f\x2d\x03\xd8\x7d\xf8\xd7\x56\x1d\x56\xd0\x7a\xf7\x6f\x7f\xa7\x2f\x55\xef\x3e\xfc\xb1\x55\x2f\x1c\x88\xd5\xbb\xdf\xb5\xea\x15\xc7\x5e\xf5\xee\xdf\x5b\xf5\xdf\x54\xbd\xbb\xb3\xd3\xaa\xcf\xb3\xa4\xde\xfd\xfb\x77\xad\x3a\xc8\xe2\x7a\xf7\xe1\xf7\xd7\xa7\xad\x1f\xd7\x39\x8d\x2c\x75\xd2\x8e\x43\x70\x9e\x66\x0f\x84\x96\x1d\xdc\x68\xab\x0e\xc6\xea\x32\xe1\xd8\xe5\x88\x4e\x07\x3d\xbb\xbc\x67\xcc\x52\x6d\x3a\x3a\x9c\x67\x49\xad\x20\x8c\x35\xb2\xd0\xb2\x4a\xa7\x51\xfa\xa0\xa6\x50\x8d\x35\x69\x56\x46\x61\xc4\xca\xdc\x5c\xd4\xc0\xc5\x4a\x3d\x74\xa6\x7b\x25\x7c\x05\x4c\x06\xee\xa6\x46\xeb\x1a\x7d\xe1\x66\x9e\xa1\x4f\xc4\x98\x0f\x16\xe6\xe0\xc8\x68\xd7\xd0\x0e\x73\x3d\x04\xeb\xd4\xdc\x09\xf2\x0e\x7e\x52\x38\x69\xaf\x77\x46\x1d\x77\xd9\xc5\x30\x92\xb3\x5c\x01\x53\xd3\x41\xf5\xce\xf6\x3a\xbc\xd1\x98\x2b\xf2\xa0\xc7\x7b\x52\x35\xb2\x95\xd0\x96\xc9\x9c\x0e\x78\x7e\x92\x3a\x6b\x97\x0e\x63\x45\x36\x10\x69\x7e\x7c\x29\x52\xf4\xa7\xef\xb1\xce\xff\x78\xb8\xdd\x19\x6b\x34\xf3\x3c\x4e\xc2\x33\x5a\x48\x51\x8d\xa6\xce\xa7\x63\x21\x6b\x05\x7b\xfd\xf4\xf1\xce\xdf\xbf\xfb\xa1\xcb\x1a\xfa\xab\xd1\x32\xe9\xdf\xfd\xf8\xc3\xdf\x28\x1d\xbe\x1a\x18\xa3\xa8\xc4\xd3\x80\xdc\x8c\x08\x16\xf4\xac\xf4\x7a\x4a\x35\xba\xba\xd2\xb6\x46\xe5\x2c\xf4\x23\x4c\xcf\xe9\x70\x36\xd0\x3e\x6c\xbb\xdc\x12\x19\x9c\xca\xfa\xff\xac\x05\x06\xa9\x14\x84\x58\x2a\x10\xab\xc5\x1a\x0f\x1a\xf6\xd1\x45\xad\x75\xb4\x8a\x15\x53\xc7\xd7\xaf\x38\x08\xdd\x5c\x40\x5e\xd8\x47\xea\xca\x88\x1e\x35\x18\x13\x92\x65\x38\x46\xf5\xee\x0e\x08\x97\x9d\x9d\x3b\x72\x90\x3d\x95\x0a\xc7\xdf\x26\x43\xcf\xed\x71\x7e\xc5\x39\xbe\xc9\xa7\x51\x29\x9c\xf4\xeb\x44\xe4\xa3\x12\x17\xd8\x10\xdf\x00\xd2\x35\x1f\xe6\xb4\x23\x53\xa2\x4b\x7f\x8c\xb5\x51\x37\xa8\xeb\x3e\x91\xbb\x88\x16\xba\x74\xbd\xbb\xb3\xdd\x32\x62\xbe\xde\xdd\x79\x08\x3f\x2c\x7c\xbd\xbb\xf3\x1d\xd0\xea\xe1\x1d\x69\x85\x04\x5f\x35\x4f\x26\xdc\x13\x39\x6e\x2a\x86\xb7\xb4\x76\x6f\x08\x02\x55\xe1\x0e\xc1\x18\x4f\x12\x79\xf9\x44\x22\xa1\xd0\xf8\xee\x52\xed\x7d\xb2\x42\x1e\x79\x23\x4f\xe3\xbc\xcb\x1e\x6a\xe3\xf4\x60\x02\x74\xc9\xbb\x46\x17\x0b\x52\x8f\x80\xdd\x53\x91\x04\x58\x06\x72\x3a\xe5\x41\xca\x50\x0c\x24\xda\x9a\xb1\xeb\x6d\xfa\x69\xb2\xf0\x49\x3c\xc8\x6c\x6c\x36\x4c\xda\x2c\x9f\x74\xd9\x5f\xe9\x17\xbd\xcb\xf5\x1f\x20\x5c\x5f\x65\x62\x14\x7f\x0c\x50\xa3\xfa\x33\xcb\x44\x7e\x30\x9f\x8a\x2c\x1e\xf4\xd3\x3c\x86\x19\x18\x00\xd9\x68\xde\xba\x6f\x3b\xdb\xdb\xdb\x1e\xd3\x20\x15\x95\xf3\x03\x61\x74\x25\x87\xc6\x24\xc4\x44\x83\x7b\x30\x4f\x12\xd4\x6e\xe2\x74\xac\xb3\x91\xaf\xe8\x21\xd0\xea\x06\xf9\xeb\x72\xa4\xf2\xac\xa0\xfe\xa8\x3c\x73\x26\xa8\xcd\x7f\x8b\x7e\x1d\x3e\x68\xee\x76\xc6\xbe\xea\xfe\x97\xed\x16\xa3\xe0\x01\x47\x79\x56\x11\x19\x55\x8b\xf3\x51\x26\xa7\x8f\x27\x3c\x83\x2d\x3c\xa9\x50\xfb\x69\x1e\xd9\x82\x2d\xb6\xb3\xdd\x34\x21\x3a\x4d\x44\xb8\x0e\xb9\xa6\xc5\x8a\x5d\x4e\x78\xce\x2e\x32\x79\xa9\x44\xa6\xd8\x65\x9c\x24\x4c\xcd\x2f\xa6\x71\x4e\x11\x75\xf3\x89\x60\xff\xdf\xff\xfb\xff\x38\x3b\x9b\x36\x7f\xb0\x38\x65\x3c\x05\x44\x37\x1e\x7a\xb3\x0b\x39\x5c\x58\x37\x08\xbb\x35\x35\xd7\xb5\xf8\x98\xac\x79\x14\x26\x16\x30\xa2\xe3\xa1\xcc\xa6\xe8\xed\xad\xe4\xd6\x0f\x3f\xfc\xf5\xc7\xad\x1d\x3c\xdf\xb0\x6d\xa2\x36\xe6\x62\x48\x90\x13\x0a\x5e\x47\x4e\xef\x5b\x9a\x59\xb1\x75\x79\x9e\xc5\x17\xf3\x1c\xa3\x9b\x38\x64\xff\x3f\x7b\x6f\xbb\xd7\x46\xae\x24\x0e\x7f\xe7\x2a\x04\xff\x9d\xd8\x0e\x8d\x0d\x24\x93\x49\xcc\x90\x2c\x49\x4c\xc2\x99\x04\xf2\x07\x32\xb3\x73\x08\xcb\xb4\xdd\xb2\xdd\xa1\xdd\xed\xd3\xdd\xe6\x65\x26\xec\x4d\x3c\x5f\x9f\xab\x7b\xae\xe4\xf9\xa9\x4a\x2f\x25\xb5\xda\x18\x26\x39\x3b\x67\x7f\x9b\x0f\x01\x5a\x52\xa9\x54\x2a\x95\x4a\xa5\x52\x55\x9b\x7d\xc8\x79\x31\x9b\x84\xfd\xe4\x1a\x03\x49\x81\x3b\xb9\x0c\x43\x82\xcd\x65\xf6\xd0\x28\x83\x8b\x21\x89\xa2\xc2\xcf\xa2\x89\xb1\xe1\xcc\x8a\xb5\xb0\x18\xc4\x71\x5b\xae\xdf\x4c\x2d\x18\x71\xb4\x9a\x95\xc3\xa7\xdb\xdf\x6d\x3e\xf9\x6e\xf3\x91\x60\xc8\x47\xdf\x3d\x7a\xd9\xd8\x12\x8a\x05\x12\xea\xe3\xe1\xde\xab\x6c\x32\xcd\x52\x9e\x96\xcd\xc6\x83\xff\x03\x75\xb6\x1a\x2d\x39\x5d\xbc\xe0\xf0\xec\x03\x88\x86\xbb\xcf\x9a\xa2\x30\xac\x54\x96\x0d\x4a\x81\x75\xce\xa7\x39\x2f\xa0\xdf\x11\x0b\xf1\xcd\xe2\x24\xcc\xcf\x21\xa5\x0f\xcc\x54\x3a\xc2\xa1\x61\xf4\x7b\xbc\xd6\x08\x07\xe5\x2c\x4c\x92\x6b\x41\x74\x04\x27\x81\xe3\x50\x9c\xf5\x6f\x86\xd3\xdb\xfc\xee\xd9\xab\xef\x9e\x3d\xaa\x1f\xc9\xff\xf7\xff\xfe\x3f\x62\x10\x7a\x83\xf8\x19\x9f\x16\xb8\x6a\x2b\x2c\x78\x64\x69\xac\x21\x16\x8d\xd1\xc3\xc8\x85\x64\xd6\xff\x0c\x6a\xab\x09\xe8\x3e\x48\x78\x98\x1e\x95\x39\xb9\x0e\xad\x48\x11\xf6\xc2\x5e\x73\xff\xf9\xe9\x45\x07\xcc\xbd\x10\x1a\x3f\x37\xc0\x40\x3e\x11\x48\xb6\x30\x01\xfd\x52\xc5\x12\x71\xd2\x47\xfb\x5b\x18\xc8\x90\x0c\x55\xe8\xa0\x12\xdd\x76\x31\x4d\x62\x7d\x53\xd5\xd6\xa2\x31\x40\x1c\x5a\xa6\x65\x71\x1e\x4f\xf7\x4c\x24\x7b\x41\xea\x9f\x38\x9f\xb2\x32\x17\x2a\x6f\x36\x14\x0b\x43\xf2\x86\x98\x16\x56\xa8\x79\xba\x0c\x0b\x36\xcc\x66\x69\xa4\x41\xc5\x24\xab\xbd\x9c\x55\x32\x58\xf9\xc5\x04\x70\x76\x0a\x14\x03\x50\x71\x04\x57\x3f\x31\x44\x5e\x66\x31\xfb\x11\x87\xa9\x12\x17\xb3\xd5\xd5\xd8\x55\x71\xe0\x25\xb3\xa8\x74\x12\x9f\x1a\x57\x2d\xe0\x27\xe5\xaa\xe5\xd3\x8a\x68\x33\xa8\x35\x07\x27\xfa\xcf\x8c\x52\x6e\x69\x5b\x95\x6a\xc4\x76\x66\xf5\x40\x56\xf0\x02\xd0\x8d\x7c\xf1\x75\x51\xf9\x42\x27\x35\xae\x36\x10\x14\xb5\x49\x29\x63\x35\xf1\x22\x89\xd3\x92\x15\x78\x73\x59\x28\x09\x05\x1b\xbd\x9d\x94\xd9\xed\x59\xd9\x75\x97\xee\x3c\x6d\x70\x39\x01\x24\xd1\x58\xbb\x04\x11\x12\x32\x4e\xd1\xb9\xdc\xed\x58\x71\xbf\x1a\xd2\x49\x7c\xba\xb5\x64\x95\x4a\x67\xb2\xde\x3f\x66\x61\x52\x7c\xc8\x0a\x59\xd3\xb0\xc7\xe9\x36\x55\xb0\x01\x20\xd4\xaa\x36\xdc\x16\x6b\x84\xbd\x70\xda\x6f\xc3\x4a\xaf\xd4\x5e\x65\x1b\x0e\x26\xf0\x58\xe8\x22\x4c\xb6\xac\xc1\x4f\x35\x64\x77\xdc\x98\x77\xdb\x2c\x62\x50\x7d\x80\x8d\x8c\x0f\xa3\xfa\x1c\x28\x76\x09\x58\xe3\x9c\x5f\xbb\x47\x86\x8b\x30\x21\xa0\xaa\xba\x07\x7b\x81\xc1\x31\xba\x10\x50\x5b\x93\xd9\x67\x65\xad\xc7\xaa\x5d\x24\xf1\x80\x37\xd7\x03\x41\xc0\xd6\x9f\xc4\xd1\x03\x78\x8a\x54\xbd\x05\x32\x1c\x6a\x28\xec\x1b\xfb\x2a\x4b\x74\x83\x47\x67\x14\xe7\x75\x5a\xd6\x83\x07\x66\x05\x6e\xdb\x6b\xd0\x9d\x28\xc4\xbc\x0e\x92\xe8\xf1\x56\x74\x4c\x48\x12\xcb\x44\x42\x31\x05\x6d\x58\x06\x72\x32\xdc\x17\x34\x5a\x10\xf3\xc9\x8f\x93\xa8\x8a\x7b\x81\xa8\x58\x8b\x84\xcd\xd0\x27\x62\x45\xcc\x01\xaa\xde\x52\x89\x71\xb1\x17\xec\xe4\x22\x4c\x4e\x59\xd7\xe6\x6c\xa7\x83\x71\x58\xe0\x29\x37\xeb\x7f\xc6\xc4\x1a\x15\x43\x7f\xff\xb3\x4c\x9e\x21\x75\xfb\x41\x36\xe9\xc7\x29\xbc\x34\x92\xa9\xe3\x1d\x3a\xfa\x98\x93\x40\x71\xd0\x21\x48\x99\xf7\x5e\x5b\x5a\xd9\x46\x03\x97\x7a\xe3\x41\xef\x9d\xc2\x38\x85\xae\xbd\x1a\x43\xc2\xc3\xa1\xea\xcb\xc8\x3e\xd8\x0d\x19\x6c\x23\x71\x4a\x92\xe5\x08\x71\xf8\x1c\xc4\xe2\xda\x9a\x25\x04\xa5\xf2\x61\x4b\xa1\x3c\xcb\x4a\x05\xc4\x16\x6b\x90\xff\x00\x4a\x05\xab\x9c\x9c\x5a\x6c\x42\x0e\x22\x1e\x1a\xc3\x55\x9b\xba\xf4\x12\xd8\x2f\x40\x51\xaa\xb2\x90\xe3\x0c\x7b\xc1\x3c\xc1\x4f\x64\x72\x56\x9b\x6b\xa4\x22\x75\x88\x23\x12\xa8\xc3\xb6\xbf\x53\x36\xd7\x5b\x72\x10\x98\x00\x94\x94\xc0\xef\x34\xd1\x10\xd4\x3b\x6d\xb0\x17\x58\x0d\x65\xc2\x46\x00\x6c\xda\x85\x6f\xd5\x6e\x55\x92\x1e\x7d\x7a\xd1\x78\xc0\xe9\x65\xab\xa2\x3d\x2c\x7b\xc8\x08\xa2\xc0\xe0\x2f\xd0\xa8\x88\x00\x43\xaa\x3f\xd8\x7a\x17\xf9\xc2\x21\x03\x51\x05\x2a\x4d\x97\xe3\x62\x3f\xdc\xc7\xe4\x93\xad\x4a\xa9\xa4\x0c\xdc\x75\x68\x44\x7c\xb5\xa4\x5d\x07\xc1\xa0\x26\x33\xaf\x3a\x52\x47\x70\xa4\xaf\xb4\x59\x43\x0a\x99\xb9\x88\x38\x08\xea\xc3\xbe\x8d\x7a\x3d\x8d\x4e\x4e\xab\x5a\x89\x58\xba\x3a\xe7\x91\xa0\x9f\x97\x7a\x5e\x88\x27\x7a\x94\x35\x6d\x7d\x62\x49\x2e\x5d\xbd\xec\x6c\xe1\x80\x40\x2c\xe9\xf0\x13\xbf\x9e\x7b\xb8\x80\x87\xd7\x90\x56\xf6\x27\xb9\xd1\x57\x44\x06\x70\x98\xaa\x52\x3d\x78\x5b\x88\x08\x9d\x4c\xe7\x06\x8b\xb2\x52\xa8\x62\xda\x5d\x55\x6a\x1b\xfa\x9b\x16\x48\xf6\xee\xac\x0d\x37\xec\x05\x53\xdd\x9a\x83\xca\xa7\x76\xf3\xe4\x3f\xdb\x27\xa7\xab\xad\xce\x28\x60\x8d\x93\x7f\xdb\x38\x05\x55\x46\xd5\xdc\x32\x88\xc0\x79\x6e\xc4\xaf\xe4\xf5\xbb\x51\xf4\x95\xab\x3e\xdb\x66\x9d\xe6\xa7\x93\x93\xff\x3c\xf9\x74\x7a\xfa\xf0\xb4\xd5\x21\x67\xa8\x71\x9c\x44\x95\xf2\x91\x81\xfe\x86\x97\xf2\xc4\x9e\xf3\xb4\x34\xb0\x0b\x3e\x9a\xd8\xae\xa8\x60\xcf\x01\xff\xa0\x07\x0f\x74\xd7\x6d\x7e\xc5\x07\x24\xf3\x9e\x9c\x30\x6c\xa9\x60\xbc\x80\x6c\xa8\x5a\x41\x91\x9f\xdb\x72\xa5\x74\x45\xa9\x41\xe8\xa8\x0c\x8b\x31\x41\x09\x43\xc3\x31\x7e\x15\x17\x25\x19\xfb\x39\x32\x84\x62\x66\xb9\x91\x82\x17\xad\xe5\x0e\xb2\x37\x64\x97\x70\xc4\x4e\x1b\xa5\xcc\xec\x47\x23\xb5\xe8\x3b\x01\x38\x25\x4f\xf1\x4c\x09\xb0\xe1\x2c\x7d\x99\xcd\x12\x7c\xa5\x03\x37\x9a\xea\x21\xa2\x49\xae\x69\x5e\xca\x5b\x1b\xc4\xb2\x57\x66\x63\x4a\x00\xdc\x8b\x5d\x53\x61\x20\x87\x5b\xd9\x9b\x2d\x70\x8e\xd9\xaf\xde\xca\xbc\xc0\x1a\x14\xa3\x44\x57\x0e\xd9\xb3\xbb\x02\xde\x65\xd9\x94\x95\xe3\x3c\x9b\x8d\xc6\x4c\x45\x91\x66\xe1\x74\xca\x53\xb0\xf5\x94\x19\x89\x06\x31\x4b\xcb\x38\x11\xa4\x1e\xc7\x25\x9a\xfe\xcc\x5c\xc5\x26\x7f\x8f\x4c\xc1\xe6\xe5\xa9\xa6\xe1\x39\xe8\xcd\xf0\x56\x0b\xa4\xaf\x8e\x46\xce\x7e\xb4\x99\xd2\x3a\xd2\xb0\x55\x0c\x2b\xf1\x27\x67\x43\xe2\x72\xb2\x71\x6a\x6d\x76\xdf\x7c\x7a\xaa\xb3\x63\x30\xa9\xcc\xd0\x1e\x58\xdb\x72\xde\x28\x20\x8f\xe2\x24\x14\x4b\x2a\x0f\xd8\xe7\x59\x51\x82\xaf\xfd\xe5\x38\x2c\xf9\x05\x46\xbc\x48\xf8\x50\xae\x6f\xf0\xf2\x42\xa8\x14\x45\xd3\xa5\xd0\x08\x56\xc9\xa2\x75\x56\xec\xaa\x50\x05\x5a\x3e\xc9\x4d\x34\x39\x31\x71\x85\x23\x89\x8d\x50\x4f\xb3\x7c\x02\x79\x27\x3f\xd8\x8f\x05\x89\x7f\xb8\xa7\x42\x93\x7a\xb1\xeb\x3b\x39\x8f\x11\x55\x9d\x51\x2c\x1c\xa5\xe1\x43\x1f\x5c\x2c\xa6\xaa\x14\x18\x13\x10\x79\xdf\xe4\x56\xaa\x5e\x71\x32\x78\x03\x98\x67\x97\xf0\x76\xee\xf8\x7a\xca\xa5\x83\xc5\x6b\xd9\x6c\x1c\xc2\x5b\xb2\x3e\x27\x6f\xf1\xdb\x0e\x35\xed\x0b\x55\x6d\xa6\xc1\x2e\x35\x62\x0d\x8d\xb7\x5d\x0e\xd6\x10\x7f\x59\xcd\x39\xca\x20\x2c\x91\x15\x7b\x8e\x6a\x88\x93\xc7\x26\x82\xa7\xfa\x9c\xf1\x18\xcc\xa9\xd0\x4b\xe0\x5a\x72\x0d\x6e\x2d\x9a\xaf\xcb\xb6\x4a\xf9\x46\xb6\xed\x8c\xec\x85\x39\x66\xaa\x2a\x5d\xab\xc5\x96\xc5\x77\x66\x28\xe4\xba\x84\xf6\x63\x36\xe3\x39\x3d\x99\x4a\x5d\xb6\xbc\x6c\xb7\x0b\xec\x1e\xe8\xd5\x4b\xa5\x1f\x53\x88\xbd\xa9\xd4\xd7\xec\x85\xbf\x52\xd7\x41\xc1\x14\x39\xc9\x35\xe5\xc5\x87\xd5\xa1\xfe\x8e\x7d\xa9\xb8\xc4\x2f\x2a\xc5\xb4\x17\xfd\xd5\x74\xa0\x6f\x88\xd4\x69\xde\x2d\x31\xb7\x44\x9e\x09\x34\x26\x64\xdf\x80\xdd\x4a\xdd\xca\xec\xaa\x22\xd2\x2b\xde\x3f\x59\x7d\xc1\x21\xdc\xdf\x03\x14\x51\xb8\xe2\x83\x81\xa6\xef\xae\x7c\x2b\xd9\x76\x2e\x50\x20\x55\x69\xb7\x6a\xf1\x20\x60\xf5\xbd\x97\x0d\x58\x7e\xb6\xed\x09\x5f\xbe\xc8\xe3\x75\x5c\x1c\xf2\x51\xef\x6a\xda\xb4\x6b\xb7\x4c\xd7\xaa\xbd\xd5\xb9\x32\x24\x53\xfd\x06\xcd\x86\x6b\x51\x5c\x84\xfd\x84\xaf\xa5\xfc\xaa\x5c\x4b\xe2\x94\xb3\x34\x5b\x8b\x27\xd3\x24\x1e\xc4\xe5\x1a\x04\x95\x82\xa0\xf6\x69\xb6\xc6\xaf\xca\x3c\x5c\x83\x3d\xbf\x20\x03\x81\xcb\xba\xa6\x3d\x0a\xb1\x39\x6f\x3b\x49\xde\x9d\x22\xb8\x36\x13\x88\xaf\x92\x02\x0b\xeb\x69\x39\x26\xb9\x66\xab\xd7\x80\xd0\xae\x6a\xd8\x17\xc0\xcd\x55\x1e\x9b\x7b\x49\x48\xb1\xae\xbf\xb9\xf3\xf1\x4d\x6d\x6d\x32\x84\xba\x3a\x06\x33\xf7\x66\x92\xe2\xe3\xb9\x68\x70\x17\xa9\x53\x85\x74\x6d\x97\x58\x1d\x9a\x0b\x4f\x05\x43\x9f\x13\x97\xd5\xbc\x90\x06\xd6\x55\xa8\x85\x1f\xd5\x89\xbc\x34\xb2\x6a\x50\xe4\xc8\x77\xd3\x93\xef\x6e\x95\xf6\xe7\xb1\x7f\x7a\x7b\xf5\xd4\x23\x7d\x57\x4b\x71\xbb\xd9\xf2\xfb\x9d\x58\x77\xb6\xd2\x07\x8f\xde\x3d\x69\xfd\x63\x8e\xda\xb1\x45\x94\xa7\x52\xae\xec\x06\xbe\xc1\xc8\x75\xf0\x56\x15\x23\x3b\x1b\xea\xcf\x64\xb3\xf1\x68\x2a\xf7\x32\xee\xdc\x18\xdd\xba\xe4\x93\xe9\x01\x9c\xeb\xdd\x6e\x95\xd4\x79\x41\x2f\xe8\x9c\xeb\x37\xe7\x92\xec\x9e\xf6\x26\xad\x8e\x42\x98\x35\x0e\xe7\x25\x38\x1a\xc0\x41\x0a\x42\x8b\xf1\x72\x36\xd5\xe1\x7b\xe4\x63\x2b\xf7\x2c\x47\x92\xe8\x37\xe5\xb0\xa4\x16\x61\x19\xf6\xe4\xc5\x06\x68\xab\x35\xf7\x1a\xe6\x30\x2e\x6a\x81\xfd\x8e\x16\xa5\xfc\x12\x49\xa6\x4d\x0b\x4d\xb8\x1e\x90\x9d\x4a\x8b\xa7\x51\x5a\x55\x5b\x24\x0f\x8a\xf0\x89\x8a\xc4\x14\x48\x70\x6e\x03\x5b\x31\xd6\x66\xd5\x69\x88\x69\xec\xa5\x2e\xec\xf1\xe7\x79\xf4\x0d\x7c\x54\x16\xf1\xd3\xb9\x83\x1b\xcb\x12\x26\x14\xcf\x43\x29\xac\xdf\xf0\x14\xf3\x85\x18\xb7\x15\x65\x20\x20\x9e\x51\xea\x53\x13\x8f\xd9\x9e\xc5\x20\xcf\xdf\xab\x60\x57\x95\x64\xb4\xbc\x51\x1a\xf0\xb3\xa1\x9c\x46\xa2\x78\xc0\x69\x0f\xf2\x8b\xec\x80\x24\x91\xae\xeb\x45\x1e\x73\xf0\x44\x63\x75\x98\xf3\x29\x0f\x4b\x02\x1b\x3f\xdc\x86\xbb\x9a\x7b\xed\x47\x52\xe7\xec\x03\x86\x92\x59\x31\xd6\x25\x86\xda\xe2\xb3\xa9\x70\x9c\x29\x08\x46\x88\x85\x79\x2e\xc3\x8e\x1c\xe4\x32\x7c\x2f\xe2\x23\x1a\xc8\x8c\xb8\x50\x87\xdc\x16\x90\xba\x2f\xac\xb6\xac\x0b\xb7\x08\xfa\xef\x53\x72\x4c\x2b\xb3\xbd\xa3\x03\xb6\xcd\x5e\x87\x25\x27\x18\xc2\x67\x15\xda\x99\xba\x2d\x69\x77\x41\xc9\x57\x27\xda\xab\xef\x74\xab\xc6\xbd\x29\x8a\xea\x9c\x82\xfc\x9e\x4f\x77\xf7\x64\xf2\x39\x27\xa1\x4b\x03\x75\x16\xc2\x2f\xda\xbb\x09\xff\xa4\x45\x28\x40\x0f\xd2\xe4\xda\x82\x3e\x94\x81\x33\x2c\x0a\xd0\x22\xe8\x58\xd2\xa3\x6d\x5c\x18\x4f\xac\x06\xa7\x81\x12\xa2\x11\x9f\xe6\x7c\x10\x96\x3c\x72\x98\x9c\xb8\x2f\xf1\x3c\x86\x4d\xea\x35\x3c\x47\x36\x41\x9c\xe8\xf7\x66\x14\x96\xdc\xc3\xa7\x30\x77\x68\xf5\x80\x1a\x16\xd7\x17\xe7\xf1\x54\x6c\xaa\x77\x76\x97\x2a\xf6\xb3\x54\x54\x88\x8b\xf1\x87\x5c\x50\x3b\xbe\xe0\x94\x65\xbd\x15\x9a\x17\x6e\xac\x73\x79\x11\x67\x6d\x60\x7a\x00\x66\x6b\xbd\xb0\xd4\xa8\xfa\x0a\x4a\xa7\xa8\xaf\x51\x5c\x4f\xfa\x59\x32\x0f\x44\x3c\x8a\x53\xc8\x4e\xe0\x71\x9b\x24\xe1\xb3\x54\x84\x8f\x25\xb9\x51\x60\xd2\x37\xb1\x24\x51\x16\xc1\xef\x23\x94\x93\xa8\xa7\x7d\x20\x05\x55\x0a\x3b\xf3\x61\xf1\xa8\xe4\xae\x38\xd1\x87\x81\x22\xcb\x4b\x67\xd1\x78\x58\xc5\xe1\x4a\x3f\x73\x5b\xeb\x69\xa9\xea\xa1\x83\x63\xdb\x72\xed\x14\x88\x4d\x8d\xdf\xb7\xd9\x3c\xb1\x9a\x16\xd0\x99\xde\xe2\x69\xb4\x85\xfe\x67\x1a\x73\xfe\xb5\xc3\xc7\x08\xc8\xe6\x75\x2f\x1c\x0f\xb5\x11\x3f\xdc\x44\x48\x5e\x39\x68\x5f\xed\x23\xeb\x7f\x96\x2f\x92\x03\x8f\x81\x06\xea\x38\x31\xfb\x99\x51\x10\x9d\xf9\x74\x6d\x81\x92\xe3\xe5\x8c\x42\x2a\x45\x77\x26\xd8\x0b\x55\xac\xe9\xa5\xf5\x5f\xc5\x09\xee\xad\x3e\xeb\x5a\x1b\x11\xb3\x4d\xbe\x38\x2c\xe5\x65\x40\xc6\xe2\x5f\x9e\x82\x2a\xf4\xd0\x2a\x33\xca\xb9\xc4\xd2\x6f\xd3\xdc\x67\x65\x5a\x11\xfb\x19\x93\x7d\x54\x78\x4d\xe8\xa6\x38\x2f\xdd\xbb\x0f\x75\xcb\x47\xcf\x13\xcd\xdd\x4d\xd5\x2f\xd8\x2b\xb7\xc5\x4e\x6f\xca\x54\x67\xa0\xbf\xcd\xeb\x49\x3a\x34\xb4\x4e\x7d\xfe\x2f\xd5\x3e\x95\x76\x50\xed\x51\xc5\xf0\x11\xb4\x3b\xad\x68\xf1\x17\xca\x7b\xee\xe4\x74\xab\x6a\x02\x94\x8c\x36\xff\x20\x81\x20\x2a\x90\xb3\xfe\x67\xa1\xe0\x6e\x91\xa9\x46\x96\xc7\x95\xe8\x72\xbd\xba\x67\x83\x42\x6b\x45\x55\xb4\x6b\x57\x65\x37\x6b\xd0\x86\x25\x64\x13\x5e\x01\x15\x6d\xf1\x7b\xb3\x80\x10\x34\x70\xed\x63\xe3\xeb\x53\xf3\x25\x9c\xdb\x35\x7d\x59\xb1\x7a\x59\xaf\x65\x28\x98\x44\xb5\x8f\x82\x67\xe5\xb2\x1a\x7f\x27\x0b\x5c\x9d\xc8\x60\x52\xfd\x92\xfa\x1a\xaa\x5c\xf0\xdc\xd9\xda\x1a\xe8\x3f\xed\x5d\x51\x29\x51\x01\x14\xeb\x24\x18\x35\x56\x79\x2a\xd9\x0a\x70\xd7\xda\x83\xe8\xbf\xda\xfd\x88\xfe\xab\xdb\x9b\xac\x3a\xf6\x3e\x45\xff\x59\x7b\x16\xfd\x47\xf7\x2f\x0b\x96\xde\xcb\xe8\x3f\x8f\x21\x56\x37\xa8\xee\x71\x56\x3f\xf6\x7e\x57\xc5\xcd\xdd\xfb\xe8\x3f\xb5\x0f\xd2\x6f\xad\xdb\xdc\x36\xbe\x1a\x1b\xe8\x93\x4a\x93\x5e\x26\x37\xda\xea\xd8\xd2\x75\x8f\x30\xad\xff\x9d\x63\x3f\x6e\x7f\x6a\x8e\x3d\xe7\x79\x25\x6d\x2b\xf7\x59\x47\x6a\x9e\xe7\xdd\x69\xb9\x95\xbe\xd2\xbd\x96\x52\x26\x2a\xf7\x5a\xb4\xa0\xf6\x5e\x8b\x56\xba\xc3\xbd\x56\x2f\x5d\xfc\x5e\xab\xe2\x9d\x6c\x6e\x77\xbe\x7c\xa9\xdc\x09\x54\x74\xcc\x7f\xf2\x5d\x18\x19\xe4\x57\xbc\x0f\xd3\x84\x18\xce\x3b\x2b\xfb\x46\x2e\x1b\x2c\xd7\xab\x02\xc0\x3a\xfa\x52\xbb\x7a\xe6\x0c\x28\xa0\xca\xee\xe5\x1d\xf9\xc7\xf4\x3c\xcd\x2e\x53\x85\xad\x1c\xfc\x34\xcf\x2e\xe2\x88\x47\xed\x46\x65\x9d\x98\xe5\xa8\xa6\x18\xff\x72\xef\x03\x35\x56\x86\x02\xf4\x74\x8c\xbf\x9e\x12\xb7\x76\x75\xc2\x30\x7c\x42\xb5\x94\x0a\xb1\x7c\xe7\x11\xc1\x65\x7a\xff\x36\xb5\x2c\x4a\xe8\x6e\x48\x05\x9f\x45\x8f\x5c\x39\x3a\x26\x0c\xeb\x7a\xce\x2a\xab\xb9\x0e\xb4\xeb\xd0\x7b\x3a\xab\xc4\xb9\x82\xfc\xa6\x97\x9c\x7f\xb5\xdb\xc0\xc5\x2e\xda\xfc\x23\xa6\xb7\x69\x76\x2b\x03\x5f\xdb\x83\x2a\x02\xd1\x3f\x06\x59\xd6\x75\x0f\x0f\x2e\xc4\xdc\x07\xb2\xee\xc6\x51\x95\x56\xa0\x56\x10\xa5\xb6\xa8\x2a\x7c\x72\xc0\x9a\x83\x3c\xa9\x55\xe9\xd0\xb7\x5d\xe2\x52\xe8\x56\xf6\xf4\x8a\x95\xcb\x2a\x75\x6c\x55\xd6\x4d\x10\x2d\xaa\x21\x89\x5d\x87\x5e\x00\xf9\x15\x02\x62\xc0\xb2\xba\xd2\x67\x00\xff\x5d\x93\x2e\xa6\x3d\x54\xf5\x9d\x02\x22\xd9\x59\x80\xc5\xe1\xa6\x06\x75\x51\xd4\x85\x8d\xf8\x5f\xe6\x76\x4c\xe7\xbe\x70\x2f\xc8\x2a\xa6\x9f\x9a\x6b\x33\xbf\x66\xb3\x55\x73\x1e\x35\x62\xdd\x73\xea\x95\xb7\x50\xb7\x1a\x96\xa8\xc0\x26\x2d\xdc\x6b\x1b\x69\x79\x6a\x34\x6a\xac\x4e\x64\x5f\x20\x50\x6a\xb7\x86\xba\x9e\x7c\x07\x68\xaf\xd7\xa2\xef\x94\xbf\xec\x64\xdb\xad\x33\x31\xc9\x2d\xc8\x31\xe4\xe8\x4b\x99\x5d\xb2\xe1\x2a\xe5\x50\xeb\x40\xa4\x06\x3c\xf7\xf4\xdd\xe2\xd0\xbe\x68\xfd\xed\x0a\x88\xaa\xf1\x4e\xf6\xd5\x90\x86\xeb\x86\xe8\xc4\xd5\x66\x3d\x30\x65\x75\x71\xbc\xd1\x2d\xbb\xac\x81\xb7\x2e\x8d\x1a\x4b\x84\x0d\x47\x37\xac\x50\xc5\x7b\x8e\xf6\x0f\xfd\x84\xc0\xa4\xb3\xb4\x2c\xe7\xd6\x6f\x2f\xf1\xdb\x41\x6c\xfd\x1c\x5f\xff\x80\xed\xa3\x02\x02\x0d\x23\x56\xa5\x7f\x82\x65\x44\xf7\xf7\xa7\x2d\x24\xea\x37\x7a\xf2\x45\xff\xbf\x9a\x73\xaf\xff\xcc\x7b\xce\x9d\xe3\xd9\xad\x87\xd7\xfa\x57\x55\x35\xf5\xfc\x87\x58\x55\x2c\xb7\xf5\x17\xce\x87\xbc\x22\xc7\x69\x23\xdf\x21\x97\x4e\xa5\xbf\xa4\xe6\xb0\xab\x1b\xd6\x1f\x78\x75\xbf\xfe\x43\xaf\x8d\x7a\xdd\xc1\xd7\x79\x01\xaa\xcb\x5a\xd5\x83\xca\xe7\x0c\x8e\x8b\x78\x99\x8e\x06\xf1\xca\xe3\x56\xea\xfe\xad\xd6\x97\x1e\x69\x55\x07\x86\xd8\xfa\x2f\x20\x0e\x38\xbe\x7a\xab\x2c\x94\x39\xaf\x40\x3d\xd5\x6e\x7d\x25\x76\xeb\x7b\xec\x00\xbc\x13\x56\x52\x74\xf1\x61\x98\x0d\x66\xc5\x3c\xbb\x96\xc9\xbb\x86\xf4\xed\xb5\x6d\xf4\x91\xb6\x1a\xff\x93\xf0\x07\xb7\xbd\xec\x9b\xfb\xcc\x7a\x6e\x3f\xea\xad\xb6\xd5\x85\xe7\xc0\x82\xd3\xa8\x5e\xf5\x60\x9c\x4f\x6d\x60\x92\x73\x8c\x93\x51\x1b\x5c\xc3\xf2\x53\x78\x7c\x4f\x3f\x85\xaf\x16\x2a\x63\xcc\xaf\x8e\x21\xeb\xe2\x36\x6b\x56\x43\xa3\xe9\xdd\x90\xbc\x12\xf0\x89\xd1\xcd\xef\x9f\x54\x64\x27\x26\x1e\x46\x57\xe8\xef\x1a\x6c\x95\x35\x9b\xa2\xea\xc6\x13\xc1\xb3\xeb\xc8\xb3\x2d\xb6\xca\x62\x13\x96\x6e\xe3\x49\xab\xd5\x2e\xb3\x8f\xd3\xa9\x8a\xa5\xe5\xf5\x03\x09\x11\xff\x1b\x28\xc6\x37\xf8\xe8\x13\xf2\x7f\x67\x7c\x66\xdd\x98\xd2\xef\xcd\x7f\x88\xff\x15\x86\xd2\x87\x1e\xbe\x99\xe9\xdc\x70\x85\x7f\x5c\xf2\x09\x26\x22\x98\xf1\xf6\x34\x9b\x36\x9d\x87\xb6\xa8\x16\x89\x5a\x6d\x78\xfe\x23\x7e\x99\xe6\xd9\xd4\xdd\x25\xe6\x19\xbc\xc9\x00\x40\x42\x9c\xd0\xc6\x16\xc5\x3f\x23\xc5\x3f\xe3\xc6\x45\x36\xad\xcf\x75\x8f\xc2\x8d\x5e\x74\xf2\xf9\x74\x9e\xd5\x83\xfe\xd3\xc8\xe0\xec\x61\xe3\xd6\x6d\xef\xb6\x6f\x6c\xa4\x3d\x34\x61\xdb\x06\x74\x75\x99\xdd\x50\x97\x98\xe3\xac\xfa\x94\xd1\x2a\x68\xaa\xbc\x6d\xb5\x51\x10\x94\x62\x4d\x5f\x16\xde\xc5\x3f\xcc\xc7\xe7\xd8\xe9\xbc\x97\xe0\xca\x81\x0c\x2a\x9e\xc4\xb7\xd2\x1c\x28\x74\x0a\x37\x3c\xb2\xc5\x1d\xde\x7c\x82\xff\x54\x25\x9c\x5e\xb3\x0c\x73\xc8\x65\x51\x43\xa2\xce\x43\xf5\x4e\x3e\xcd\xd6\xc0\x39\x72\x2d\xe7\x18\x4f\xaa\xcb\xd6\x55\x5a\x08\xd0\xd7\x10\x82\xcf\x01\x02\xba\xa8\xf3\xb7\x97\x49\x17\xa9\x26\x5e\x79\x31\x2f\x17\x04\x02\xaa\x9a\xd1\xe0\xb3\x7c\xbb\x81\x48\x54\x64\x3f\x74\x08\xf5\x88\x15\x56\x7e\xd8\xae\xe9\x5a\x75\xdf\x24\xdc\xd1\xf4\xb2\x07\x89\x0e\xec\xbe\x48\x81\xfb\xdc\xe5\x79\xef\x5e\x10\x63\xdf\xfa\x42\xfc\x64\xfa\x61\x31\xef\x2a\x35\xbd\x6f\x59\x79\x37\x39\x75\x61\x6a\xcf\xf2\xa9\xf7\xae\x6d\xfe\x6c\x2d\x4b\x62\x19\x7f\x0d\xf9\xa1\x6e\xe2\xec\xae\xf5\x2b\x5c\x6b\x82\x88\xce\x03\xdc\x78\x2c\x27\xc4\x42\xc2\xc3\x01\x70\x7b\xaf\xbe\x79\x08\x68\x03\xb3\x65\x81\x22\x85\xd7\x79\xb0\xa6\xaf\x39\x5d\xc9\x55\xae\x62\x43\x9a\x6d\x51\x88\xb2\x80\x79\x83\x76\x68\x6e\x50\xb8\xc4\xde\xe9\x07\x7f\x30\xa8\xb1\x87\x3b\x8b\xe4\x87\xd8\xf3\x9e\xd4\xf0\x37\xd4\x75\x79\x1c\x01\xd0\xc3\xae\x18\x95\x5d\x33\x76\xeb\xd4\x89\x7c\x8d\x06\xdb\xb6\x84\xc8\x1e\x8e\x18\xfe\xaf\xfa\x72\xce\xe5\x53\x1b\x34\x2e\x65\x01\xe8\xf6\x8d\xa4\x0e\x1a\x45\x52\x40\xaa\x5d\x36\xa4\x8b\xfa\x15\x20\x4b\xe8\xa9\x53\xf2\x42\x3b\xe7\xd1\x6c\xc0\xc9\xc4\x87\x83\x41\xc5\x11\x52\xbb\x1c\x18\xe1\x2d\x0e\x63\x5b\x35\x71\x03\x34\x08\x77\x0a\xc2\xc1\x40\xbd\xf8\x47\xca\xab\x0f\xd2\x3b\xd1\x47\x78\x2f\x89\x08\x20\x9d\xca\xd2\x25\x8d\xd2\xa0\x06\x03\xe5\xb2\x46\x17\x16\x71\x5a\xc4\xfd\xc0\xda\x7e\xe1\xcb\x51\x9c\x8e\x12\x7e\x04\xe3\x75\x36\x1a\xc7\x0f\xed\xde\x84\x25\xe3\xb0\xe8\x3a\x67\x0c\xa5\x8b\x3e\x3e\x32\xa9\x3a\xad\xbb\xe1\x36\xa8\xda\x50\x94\xf9\x2f\x71\x39\xce\x66\xe5\x87\x44\x46\xe9\x27\x41\x91\x3e\xad\xc2\x1b\x63\xa6\x2e\x6b\xc4\xe4\x2e\x72\x70\xea\x74\xd8\x2c\xe5\xc5\x20\x9c\x72\x96\x72\x74\xea\xce\xb3\xcb\x22\x60\x69\xc6\xca\xfc\xba\xdd\x6e\x63\x24\xfd\x94\xf3\x88\x47\x5d\x77\x98\x36\x56\x06\x9f\xef\x4e\xd6\xd7\x9e\x85\x6b\xc3\xd3\x3f\x36\x6f\x20\x3c\xbf\xea\xc5\x7a\x34\x26\x7a\x2f\x87\x6b\x4f\xe1\x0f\x3b\xfc\xbf\xbe\x0d\xad\x1c\x98\xec\x2e\xb5\x95\xcf\x17\xf0\xdf\x8b\xa4\xeb\xbf\xab\xee\x00\xcc\x64\xe0\x17\x35\x25\x60\x70\xed\xa5\xfe\x99\x51\x01\xd9\x00\xc4\x65\x58\xb0\x2c\x8f\x47\x31\x3e\x35\xbe\xcc\xe3\xb2\xe4\x29\xeb\x5f\xb3\x97\x79\x1c\xa6\xec\x97\x71\x5c\x72\xd6\x9c\x14\x03\x78\x63\x29\x54\x38\x71\x22\x8d\xb3\xf6\x67\x01\x21\xb7\x73\x7b\x25\x71\x3f\x0f\x21\x57\xbb\x72\xbd\x87\x73\x55\x9f\xf3\x94\x85\x51\x38\x15\xea\x38\x04\x8f\x12\x70\xf0\xfc\xc5\x73\x16\x46\xe2\x5b\x3a\x80\x4c\xbc\x87\xbb\xaf\xd8\xa3\x67\x4f\x9f\x68\x96\x10\x3c\x23\x8f\x13\x95\x68\x4d\x86\x58\x95\xad\x52\xa7\xa4\xd4\x85\x54\x9d\xd2\xaf\x11\xd0\xd1\xd2\xda\xab\x54\xc3\x23\x28\xb3\xfc\x8b\x65\x14\x3c\x10\x3f\x45\x99\x57\xcd\xb5\x04\xfe\xb2\x27\xac\xad\x0d\x1f\x8f\x68\x04\xce\xd2\x9d\xd6\x81\xf2\xd5\x03\x1e\x6d\x22\xd8\x16\x61\xe7\x99\xe6\xe7\xc7\xc8\xcf\x34\xda\x5f\x8d\xe3\x5f\x03\xed\x03\xe2\x70\xa9\xe3\x63\xfc\xdb\xba\x7c\x6f\xbb\xd9\x0a\xd8\xc6\x13\x70\x23\x83\x70\x72\x95\xed\x81\x3a\x78\xcd\x4a\xe2\xd3\xe7\xd5\xfc\x91\x96\x73\xec\x84\x03\x9c\x3d\xa0\xb8\x8c\x39\xb8\x53\x36\xe3\x96\xb3\x21\x58\xe3\x18\x20\x93\x5c\x6d\xbe\x16\xfc\xb7\x66\x95\x7d\xf9\x62\x8a\x7b\xa2\xb8\x5d\x57\xfc\xfd\xae\x28\x3e\xab\x2b\xfe\x01\x5a\xff\x97\x5b\xdc\x1c\x40\xe0\x8c\xab\x47\xf0\x6e\x7c\xc0\x7e\x84\x3f\x9e\xb5\x44\xe5\xf5\xb5\x67\x75\xd5\x1f\x6f\x90\xea\xdf\xef\x40\xf5\x70\xed\xf7\xba\xea\x4f\x68\xf5\x1f\xb0\xfa\xce\xda\xdf\x8d\xa9\xcc\x3d\x0f\xcd\x4a\xb6\x6a\x11\x52\x12\xd1\x22\xdb\x6d\xfe\x65\x03\xf6\x23\x5b\xbf\x7a\x5a\xe1\x1b\x9c\x67\xe8\x43\x5b\x3e\x4e\x06\xa7\xf7\x84\x3e\x17\x7c\x53\xc3\x5f\xbf\x7a\xb5\xce\x90\x22\xcf\xd9\x93\xd6\x29\xed\x5b\x80\xc1\xb2\x07\x82\xfa\xbb\x2d\xf7\x9c\xbd\x20\x32\xaf\x9f\x62\x2a\x1b\x49\xf5\xde\xfa\xe2\xc8\xf5\x0c\x72\x1b\x9b\x7e\xec\x14\xea\x1a\xc9\xaf\x38\x04\x27\xd4\x80\x58\x45\xeb\x57\x1b\xeb\xeb\xeb\xeb\x60\x32\xd2\x60\x77\x5b\xec\xc7\x1f\xd9\xc6\x7a\x4b\xf4\xe5\x5b\x67\xba\x1e\x75\xa0\x44\x6e\x22\xb8\xee\x92\xd1\x3e\x6d\x9d\x5a\x88\xd6\x8e\x7c\x63\xd3\x0c\x7d\xb1\x16\x4f\x16\x6f\x60\xe8\xe6\x53\x4f\xb3\x59\x69\xb4\x1a\x69\x3d\xf1\x58\xb8\xec\x80\xc9\x17\x98\xe9\x18\x54\xd3\x93\x3f\x58\xd6\xff\xdc\x65\x7f\xb0\xac\x2b\xf5\xd5\x9b\x00\x42\x6e\x74\x59\x23\x6b\xb0\x9b\x53\x63\x75\xce\xf9\xd0\xba\x59\xf3\x09\x42\x6a\x31\xf3\xca\x41\x6a\x32\xab\xbc\x1a\x5b\xc4\x5e\xb6\x90\x6b\xac\xcf\x26\xe6\xbc\x66\xab\x18\xc5\x9c\x17\x6d\x9f\x4f\xab\xe1\x96\x64\x08\x37\x79\xb1\x52\x8d\xae\xe4\x46\x39\x23\x47\xaf\x0b\x99\xa5\x5b\x39\x8d\x09\x62\xea\x90\x64\x10\x69\xcc\x1f\x24\x4f\xfc\x93\xf6\x45\x71\x44\x92\xd3\x05\x4e\xd5\x38\x4b\x02\xe5\x1b\xcf\xa9\x09\x3a\x80\x36\x76\x5c\x31\x56\x1f\xd8\xd0\x63\x0f\xdd\xaa\xba\xe4\x6d\x91\x27\x29\xf8\xc6\xda\x7e\x85\xa2\xde\x5d\xf7\x3f\xfb\x55\xfe\x3a\x1d\x04\x1a\x60\xb0\x2c\x19\x03\x06\x21\x9d\x36\x68\x8f\x2f\x55\x7e\x1b\xd2\x23\x71\x9a\xb7\x1c\xfc\xfa\x9f\x89\xf1\xc2\xbd\xfc\xf5\x68\x1f\x32\x15\x7b\x75\x99\x2d\x2f\x0b\xe0\xed\x41\x96\x16\x65\x3e\x1b\x94\x59\x2e\xaf\xf1\xe8\x27\xed\xbd\x3f\xaf\x0c\x4d\xbc\xd6\x9a\xed\xc7\xa9\x6b\x95\x86\xc0\x70\x61\xc0\xfa\x0e\x05\x4d\x68\x33\x28\xac\xf1\x35\x90\xaf\xbe\xa8\x0d\xa4\x6b\xff\x29\xdf\xb1\x48\xa3\x1e\xfe\xd4\x8f\x00\x45\xe7\x5d\xf5\x4b\x40\x19\xa3\xab\x7e\xa1\xc1\xaa\xbb\x8c\x46\xa9\x56\x4e\x3e\xd4\x55\x47\x8d\xbd\xab\x7f\x53\xdf\x71\x82\xbb\xfa\x37\x95\x64\x35\x1f\xf1\x2e\xfe\x50\x17\x25\x37\xa7\xc1\xc6\xf7\x8b\xdc\x86\xac\x98\xdb\x90\x95\x2d\x48\x04\xfe\x90\xbd\xca\xa6\xd7\x79\x3c\x1a\x97\xac\xf9\xaa\xc5\x36\xd7\x37\x9e\xb2\x43\x1e\xb1\xb7\x61\x19\xb0\xbd\x74\xd0\x96\xe9\xfd\xdf\xc5\x03\x9e\x16\x3c\x02\x97\x42\x3c\x1a\xec\x4c\xc3\xc1\x98\xab\x92\x80\xfd\xcc\xf3\x42\xcc\xd1\x66\x7b\x9d\x35\xe1\x36\x4b\x16\xad\x88\x15\xf6\x90\x5d\x67\x33\x36\x09\xaf\x21\xac\xa8\x40\xa4\x14\x67\x93\x61\x9c\x70\xc6\xaf\x06\x7c\x0a\xee\x00\x90\x38\x25\x0e\xc5\x11\x01\x62\x27\x97\xa6\x03\x81\x09\xfb\x55\xc2\xc8\xfa\x65\x18\xa7\x2c\x64\x83\x6c\x7a\xcd\xb2\x21\xa9\xc7\xc2\x52\xe2\x2c\xfe\x8d\xcb\x72\xda\xed\x74\x2e\x2f\x2f\xdb\x21\xe0\xdb\xce\xf2\x51\x27\xc1\xaa\x45\xe7\xdd\xde\xab\xde\xfe\x51\x6f\x6d\xb3\xbd\x2e\x1b\x7d\x4c\x13\x5e\x14\xea\x8d\x6a\x24\x0e\x48\x32\x18\x75\x3f\xe1\x2c\x09\x2f\x59\x96\xb3\x70\x94\x73\x0e\xc9\x4f\xe3\x14\x8e\x52\x90\x12\xb5\xc8\x86\xe5\x65\x98\x43\x4a\xfe\x28\x2e\x64\x8c\x68\x4a\x32\x85\x62\x5c\x58\x15\x32\xc8\x06\xb6\xb2\x73\xc4\xf6\x8e\x56\xd8\xcb\x9d\xa3\xbd\xa3\x40\x00\xf9\x65\xef\xf8\xed\xc1\xc7\x63\xf6\xcb\xce\xe1\xe1\xce\xfe\xf1\x5e\xef\x88\x1d\x1c\xb2\x57\x07\xfb\xaf\xf7\x8e\xf7\x0e\xf6\x8f\xd8\xc1\x2e\xdb\xd9\xff\x95\xfd\xb4\xb7\xff\x3a\x50\x9e\xa0\xfc\x6a\x9a\x8b\x11\x64\x39\xe4\x1d\x8d\x79\x04\x94\x3b\xe2\xdc\x42\x41\x1d\xf0\x8a\x29\x1f\xc4\xc3\x78\x90\x84\xe9\x68\x16\x8e\x38\x1b\x65\x17\x3c\x4f\x21\x50\x15\xcf\x27\x71\x51\xa8\xc4\xae\x02\x0a\x5c\xb7\x86\x68\xff\xad\x0c\x4b\xf2\x4a\x07\x16\xef\xd9\x19\xbf\x2a\x79\x1a\x89\x45\x07\x19\x52\xc0\xb6\x36\x8e\x8b\xb6\x2e\xc1\x3c\xc0\xfe\xab\x33\xac\x72\x24\xfa\x1a\x90\xed\xac\xe0\xa5\xb6\x26\x1f\x0c\xd9\x97\x2f\x5a\x4c\x35\xff\x60\x67\x67\x20\x3e\xcf\xce\xba\xec\xe4\x94\xdd\xd0\x47\x5c\x78\x8f\xf7\xe0\x01\x39\x1a\x45\x28\x42\x58\xd4\xd6\xed\xd8\x36\xeb\x6f\xb1\x9b\x16\x85\x5b\x6d\xa0\xf7\xcf\xa9\x98\xfd\x7e\x0b\x04\x6a\xdf\xb9\x40\x6c\x4e\x5b\x2d\x16\x9d\xc0\xcd\x4d\xff\x64\x7a\xba\xa5\x22\x02\x56\x92\xcb\x46\x44\x94\x81\x94\xa0\x23\xc7\xd2\xad\x2a\x36\x67\x67\x82\x5c\x48\x50\x2a\x7a\xb7\x59\xb4\x45\xb6\xb0\xc8\xec\x28\x02\x11\x13\x27\xc0\xbd\xc2\xe9\xb7\x58\x97\x35\xcf\xce\xec\xfa\xd4\x32\x9f\xf2\x4b\xe8\x55\x1d\x01\xb7\x96\x6e\x5a\xcd\xd6\xd6\x92\x84\x83\xb7\x34\x7a\xf8\x52\xe8\x04\x6c\xe5\xec\x8c\x17\xef\x41\x12\xad\x04\xec\x0f\xdc\x26\xf1\xe1\x2b\x6c\xcd\xe0\x1f\x93\x87\xc3\x61\x5c\xc6\xe4\x6d\xf8\x4a\xbb\xdd\x51\x9f\x3b\x9f\x8b\x4e\x38\x8d\x57\x64\xed\x57\xe1\xb4\x9c\xe5\x02\xbf\xce\xc3\x87\xec\xdf\x07\x49\x58\x14\xec\x61\x87\x72\xd2\x59\x31\x9b\x9a\xd7\x60\x9a\xe1\x9a\xb2\x69\xc0\x64\x05\x79\x68\x55\xed\x64\x71\xd3\xb3\xfd\x61\x03\x4b\x4b\xc1\x4f\xf2\xb9\x33\xe4\x00\x62\x61\x3e\x9a\x4d\x78\x5a\x22\x6b\x8b\x6f\xd4\xa2\x24\x41\xc9\x5e\xb6\x96\x6e\x9a\x6a\x84\xed\x9d\x0f\x7b\x48\x47\x41\x5e\x49\xbb\xb6\x19\xa8\x6e\x22\xc6\xff\x01\x9e\xb1\xef\xa5\xa2\xba\xc0\xfa\x1e\x74\x70\x40\xd4\xd1\xc3\xa9\xf6\x8d\xe9\xe2\xf4\x76\x3b\x7d\xaa\x84\xa8\x80\x10\xf4\x7a\xcf\xc5\x8e\x37\x8f\x4c\x6a\x5c\xfa\x0b\x36\xd1\xdf\x2d\x34\xb1\x4c\xdd\xa1\x2b\x5c\x74\x27\xaa\x58\xf4\xbc\x9b\x64\x97\xef\xc2\x6b\x50\xc9\x16\xef\x5c\xb7\xf2\xf7\xaf\x8b\x5d\x14\x68\x6f\xa4\x92\x40\x64\xef\xd5\xfb\x0f\x77\x47\x44\xb7\xf2\x23\xa2\x8b\x5d\x44\x68\x6f\xa4\x92\xa2\xc8\x3d\xe6\xc3\x34\xab\xa7\x89\x7f\x5e\xac\x0e\x69\x35\x81\xcd\x61\x78\x89\x1c\x73\x27\x64\x74\x2b\x3f\x2e\xba\xd8\x45\x85\xf6\x46\x2a\x09\x44\x8e\x5f\x7d\xb8\x07\x55\x74\x2b\x3f\x22\xba\xd8\x45\x84\xf6\x46\x2a\xa9\xf9\xb9\xf3\xcc\xd4\xcf\x89\x6f\x36\xe4\x3c\x60\x7f\x6f\xb3\x69\x71\x1f\x01\x26\xda\xd5\x49\x2d\x51\xf6\xad\x44\x95\x80\x4d\x0e\x69\x90\xe6\x7d\xdb\x4e\x8c\xa8\xba\x5b\x11\x75\x57\xdc\x7d\x5f\x7c\xb4\x24\xdb\xcf\x94\x3e\x92\x1c\x58\x89\xec\x75\xfb\x78\x09\x70\xdf\xfd\x4e\x34\xbf\x65\xcf\x13\x55\xbe\x15\xd1\x48\x17\x8b\xd2\x8e\x34\xa9\x90\x90\x94\xd5\x53\xd2\x26\x9c\xd5\xc4\xec\x09\xf7\x62\x3d\xd9\xb4\x8e\x9e\xb2\xf8\x5b\xd1\x52\x82\x5f\x94\x8e\xb2\xba\xa1\x61\xb5\xbd\xf6\xf4\xb4\x80\xd8\xd9\xcd\xf5\x10\x34\xb1\x8f\x64\x2b\x38\x0b\xbc\xe5\x89\x18\xc5\x2c\x9d\x84\x79\x31\x0e\x93\xf7\xe1\x14\x3d\x04\x04\x94\x93\xf5\xd3\x40\x76\x6b\x54\x47\x3f\x2a\x47\xb3\x89\x3b\x12\xcb\xb4\x05\x1e\x37\x85\x13\x43\x5a\xab\xe3\x67\xd2\xd4\x76\x16\xb3\x1f\x0d\x15\xb5\x55\xeb\x2c\x5e\x5d\xad\x3c\x98\x06\x80\x27\x67\x70\x2f\xae\x9b\x88\xbf\x7d\x37\xc0\xd0\x49\x58\xb9\x4d\x15\x8a\x71\xb3\x79\x16\xb2\x6d\x42\x9e\xd9\xa4\xd5\xee\xc7\x69\x24\xa7\xf6\x2c\x0c\xd8\xc9\x45\x16\x47\x6c\x3d\x40\xa5\x3d\x9c\xc6\xf8\x9b\x36\x5b\x20\x32\xad\x56\xab\x79\x1b\x9d\x76\x46\xa3\x9c\x8f\xc2\xd2\xc9\x07\xf5\x17\x23\x17\x25\x8f\xc1\x98\x52\xc5\x7c\xfd\x9a\xd4\x79\x95\xcd\xd2\xb2\x96\x30\x04\x2b\x3d\x5b\xd0\xa2\x69\x77\x6c\xf7\x62\xe9\x7e\xb6\x00\x3f\x2a\xf9\xb4\xaa\x09\x16\x5a\x15\x94\x92\xdc\x9a\xb3\x3b\x0b\x1d\x4a\x29\xbf\xdc\x31\x35\xbe\x95\xe8\x21\x73\xb8\xa0\xf4\x31\x2d\x2a\x42\xdc\x14\x09\x62\x4a\x4a\x51\x32\x5a\xf4\xa2\xb5\x2d\xc5\xed\x5e\xc4\x34\xad\xeb\x88\x69\x6a\x7c\x2b\x62\x9a\x1e\x16\x25\xa6\x69\x61\x88\xe9\x85\xf2\x4f\x11\xe8\xba\x67\x7b\x9d\x78\x11\x7a\xf9\x61\xf7\x5f\x45\x4e\xbd\xfc\xb0\x4b\x05\xd4\xcb\x0f\xbb\xf7\x97\x4c\xee\x79\x60\xbe\xd8\xb0\x58\x9a\xb6\x11\x34\x40\x0a\xde\x99\xd1\x01\x7d\x3f\x87\xbf\xfc\xb0\xfb\xad\x58\x5b\xd0\x70\x41\x9e\x7e\xf9\x61\xb7\x22\x19\x5e\x7e\xd8\x15\x84\x32\x24\xa0\x54\x42\x42\x40\x15\xa3\x71\xc5\x57\x71\x2a\xc8\xd9\x7c\x19\x16\x3c\x60\xa2\x47\xe7\x6e\x60\x41\xca\xd9\xd4\x83\xfa\x67\x1b\x0e\x05\x2d\x2a\xca\x2a\x4d\xdf\x75\x59\x98\x8f\x5c\x9e\xfe\xb3\x7c\xcd\xe0\xea\x62\x74\x0b\x67\xb3\x8a\x5b\xa0\x35\xb9\xee\x4c\xba\x93\x68\x37\x97\x23\x5c\x70\x42\x45\xd9\x16\xcd\x7d\x22\xbf\x4b\x28\x92\x4b\x60\x9e\xe0\xa2\x07\x98\xfb\x28\xbb\xf3\x11\x1c\x9b\xf8\xcf\x9d\x58\xa6\x4e\x9e\xa6\x83\x7b\x6d\x15\xb2\x69\xdd\x2a\x92\xc5\xdf\x6a\x25\x49\xf0\x8b\xae\x26\x59\xdd\xac\xa8\x6a\xfb\x7f\xca\xde\x80\xdd\xda\xc2\xb0\x8a\x4a\x35\x63\xe3\x5f\x6d\x63\xb8\x83\xbe\x8f\x83\xf9\x6a\x2a\x7f\x95\x5a\x6f\xc3\xbf\x34\xa9\x28\x69\xde\x86\x85\xc2\x9f\x90\xc3\x7c\xfd\xd3\x3b\xaa\x84\x33\x77\x3b\x35\x6b\x5e\xd7\x06\x7b\x93\xc6\xe2\x5e\x56\x27\x32\x86\x1a\xdb\x93\xae\xf1\x8d\x8d\xe5\xa6\x23\xd0\x9f\xf5\x16\xa8\xf1\x5b\x79\x1b\x16\x2b\x2d\x25\x02\x77\x93\xec\xf2\x5e\x43\x86\x86\x75\xa3\x85\xc2\x6f\x35\x50\x00\xbe\xa8\xe8\x83\xca\x46\xf0\xb9\x6d\xbf\x81\xd8\x33\x32\x2f\x80\xee\x6c\x4e\x75\x11\xf8\xd7\x5a\xbe\x88\xbd\xbd\x78\x25\x23\xdc\x77\xe9\x7a\x08\xd2\xc3\xfb\xea\x7f\x1d\xb2\x20\xc2\x3e\xe2\x90\x92\xaf\x47\xa2\xf9\x76\x8c\xbf\x16\x79\xee\x60\x4a\x71\x87\xf9\xbf\x7a\xc0\xe2\x2c\xe1\xa6\xa1\xfb\x17\xa6\x14\x04\xb3\xf8\x56\x74\xfa\x9f\x63\x48\xfe\xb6\x64\x82\xe8\x41\x7f\x5d\x3a\x51\xba\x08\x5c\x2b\xa2\x57\x7f\xfc\x7a\x34\x39\x98\xfd\xa5\x49\x72\x07\xd6\x39\x98\x95\xdf\x8c\x73\xf6\xd2\xff\x21\x44\xda\x4b\xbf\x19\x8d\x5e\x66\xe5\xf8\x7f\x08\x95\xc4\x50\xbe\x19\x9d\xf6\xb3\xe8\x7f\xcc\xfe\x0f\x63\xf9\x66\x94\x92\xee\x01\x7f\x59\x42\x59\xfa\x72\x36\xb5\xb5\x64\xf0\xd8\xf8\x6a\xba\xb1\x75\xbd\xff\x2f\x41\x10\xea\x05\x41\xe8\x62\xb9\x68\x7c\x2d\xf2\x98\x3b\xc8\x7f\x09\xd2\xa8\x3b\x5c\x42\x16\xed\x65\xf1\xb5\x48\x62\xdd\xaf\xfc\x4b\x50\x85\xdc\xa5\x11\xc2\xd0\xcb\xcb\xaf\xa7\x07\xfe\x4b\x11\xc6\x63\x5d\xfc\xd3\xa6\x45\x97\x24\xaf\x79\x34\x9b\xfe\xab\x10\x04\x90\xad\x28\xc7\xe6\xeb\xd7\x23\xcb\x9b\x3c\xfb\xd7\x21\x0b\x20\x5b\x21\x8b\xf9\xfa\xa7\x0d\xd1\x00\x65\xae\x19\x5a\xd9\x5d\x65\x4d\x69\x82\xbe\xb7\x35\xd6\xd8\xe1\x6a\xcd\xcf\xdf\xd4\x26\x6b\x8c\xcf\x7a\xe8\xc6\xf4\x2c\x31\xb3\x0d\xcf\xb6\x71\xec\x9e\x63\xb6\xcc\x6b\xb5\x23\x27\xb5\xbe\xfd\xf8\x49\x67\xb5\x54\xc0\x3a\x86\x16\xfa\xb4\x7a\xbf\x9b\x48\x7d\xd4\xad\xbb\x8b\x94\x15\xbe\xf1\xe0\x75\x3f\xfe\x71\x8b\x62\x33\x64\x23\x83\xee\x33\x66\x2a\xc1\xfc\x83\x36\x35\xbe\xf1\xa8\x4d\x47\xfe\x61\x43\xb9\x19\xb7\x11\x32\xf7\x19\x37\x15\x51\xfe\x71\x9b\x1a\xdf\x6a\xdc\x44\x78\x2e\x78\x07\x03\x2d\xcc\x1d\x8c\x17\xc0\x3f\xe5\xfe\xb9\x7a\x1d\xe3\xc5\xe5\x7d\x96\xf3\xe3\x71\xf8\x97\xb6\x64\xfc\x53\xb7\x33\x03\x6a\xee\x9e\x66\xf1\x36\x6d\xa3\x5b\xbc\x21\x54\x56\x15\xfd\xcf\xfc\x2a\xe4\xbd\x2f\x69\x6f\x23\xab\xb5\x98\x81\x9c\x15\x4a\xde\x87\x88\x37\x64\xd4\x3f\x2f\x78\x00\xfb\x6f\x1e\xf7\x57\x3b\x6c\xd5\x8d\x7d\xde\x69\xe2\xbf\x79\xec\x5f\xed\xe4\x50\x37\xf6\xff\xf1\xdc\x2e\x90\xed\x45\x23\x7e\x38\x4b\xee\xf5\x22\x45\xb5\xad\xdb\xd8\x54\xf9\x37\xde\xce\x55\x37\xb7\x3f\x32\x24\x83\x35\x8d\x04\x15\xf6\xb3\xe8\xde\x54\x50\x6d\xeb\xa8\xa0\xca\xbf\x31\x15\x54\x37\xb7\x53\x81\x0c\xd6\x34\x82\x07\x4a\x49\xcc\xd3\xb9\xce\x7b\xb5\x6f\x93\xa0\x65\xed\xb3\x24\x28\x6d\x3a\xf1\x57\xd5\x42\x3a\x83\x07\xe5\xdb\x6a\xe0\x18\x3d\x12\xc6\xad\x1b\x54\x7c\x1a\xcf\xf0\xad\x34\x9a\xdb\x20\x69\x04\xbd\xb7\xde\xf9\xb0\xd7\x3c\x43\x10\x2b\xb2\xce\x4a\xa0\xde\x0d\xb5\x5c\x28\x5c\x72\xc2\x5c\x30\xa2\x52\x8e\xcf\x9e\x15\xe7\x54\x00\xa5\x92\x98\x73\x01\x89\x4a\x12\x90\x22\x7e\x05\xd0\xd4\x7e\xf9\x3a\x17\x5e\x0c\xb5\xb0\xc5\x4a\xe0\x3e\x9a\xad\x46\x80\x3c\xab\x7b\xc8\x0c\x73\x64\x31\x0f\x7e\x82\xe0\xd2\x10\xc1\xbb\xfa\x88\xbb\xbb\x71\x73\x1a\x6c\x3c\xf9\xdf\x70\x15\xff\x1b\xae\xe2\xaf\x15\xae\x42\x87\xed\x74\xa3\x55\x60\x01\x48\x14\x19\xeb\x40\x56\xfd\xf2\x45\xcb\xab\xa6\x0e\xba\xa8\xb7\xf4\x22\x80\xd8\x4f\x1b\x01\x4b\xe9\x26\xad\xf7\x74\xb1\xd3\xa7\x5b\xcc\xd9\xd9\x0b\x6b\x43\x8f\x7d\x87\x0e\x08\x3b\x51\x60\xd8\x89\x5b\xc2\xd8\xcb\x00\x86\x01\x9b\xb6\xec\x28\xfe\x25\x46\xa6\x28\x4e\xa6\x3e\x8d\x01\xe3\x66\x7d\x8d\xc0\x0e\xe1\x74\xc1\xa0\x0e\x85\x5b\x93\x16\x62\x99\x9a\x89\xe6\x1f\x37\x01\x40\x0e\xa0\x55\x6b\x6b\xe9\x32\x4e\xa3\x4c\xac\x18\x51\x2d\x9c\xc6\xfa\xcb\x7b\x5e\x86\xe2\x58\xc8\xb6\xa1\x81\xfe\x5b\x57\xd8\xef\xa9\xa2\xfd\x9e\xfe\xf8\xe6\x58\x7d\x7c\x73\xac\x3f\xbe\xd3\x1f\xdf\x1d\x93\x9a\x3d\x53\xb5\x47\xea\xf6\x4c\x65\xf3\x79\xef\xc3\xcf\x8f\x0f\x77\xf6\xdf\xe8\x42\xfd\x41\x57\x39\xec\xbd\xe9\xfd\x87\x2a\x86\x3f\x74\x91\x58\x5d\x7b\xfb\xaa\x0c\xff\xb2\x0a\xc5\xd2\x23\xa5\x07\x1f\x0d\x9e\x7b\xfb\x47\x7b\xaf\x4d\xb7\xf0\x97\x2e\x3c\xf8\x78\x4c\x4b\xe5\x9f\xba\xf8\x65\xef\xf8\x97\x5e\x4f\x77\x2c\xff\xd4\xc5\x3b\x09\x07\x27\x12\x28\x84\x3f\x0c\x52\x59\x7e\x3e\xc4\x17\xdf\x88\x95\xfc\x5b\x57\x30\x01\x2e\x44\xb1\x0e\x72\x21\x4b\x89\xe6\x25\x8a\x8d\xf6\xa5\xe6\xce\xe8\x24\x30\x81\x5a\x2f\x91\xe5\xd5\xf0\x10\xa2\x5a\x25\x44\x44\xfd\x46\x15\x48\x2e\xec\x6e\x7c\x2f\xf6\xac\x1f\x16\xd9\xb3\x88\xe2\x33\x4a\xb2\x7e\x98\x54\x93\x50\x74\x3a\x18\x2a\x2a\xe7\x42\x4c\x99\xb0\x5d\x65\x78\xce\x53\x36\xcc\xb3\x09\x6c\x03\x45\xb7\xd3\x19\xc5\xe5\x78\xd6\x6f\x0f\xb2\x49\x67\xc8\xf3\xac\x28\x3a\x7d\xa8\xdb\xe9\x27\x59\xbf\xf3\xe4\xe9\x3a\x7f\xc6\xbf\xe7\x8f\x9f\x3e\x1d\x6e\x6e\x86\xe1\x60\xf3\x87\xef\x9f\x3d\x0b\xbf\xff\x21\x1a\x3c\x7d\xfc\x38\x7c\xf2\x68\xe3\xfb\x67\x9b\x4f\xa3\xa8\x03\xa1\xd4\xda\x9f\x0b\xd1\xb5\x8a\x01\x2b\xf6\xb5\x78\xc0\xbb\x4b\x4b\x9d\x87\xcb\x42\x56\x1e\x8f\x39\x43\xe8\x0c\x47\x85\xa8\x08\xe5\xa3\xfd\xb9\x08\xb4\x04\xee\xe7\xd9\x65\xc1\x73\xb5\xd3\xfe\x7b\x38\x2b\xc7\x59\xce\x18\xdb\x05\x0c\xd9\x4e\x3f\x9b\x9d\x8f\xc3\x28\xfe\xcc\xc7\xec\x47\x44\xfb\xdf\xf1\x87\xd8\xcc\x9e\xb3\x1f\xe5\x26\x47\xbe\x01\x20\xb9\xcb\x31\xf6\x7e\xef\x18\xe4\xb2\x1d\xa9\x2f\xa7\x51\xbf\x84\xec\x0b\x21\x9a\x8d\x1b\x06\x6c\x5d\xc8\x33\x88\x50\x26\x24\x07\xe4\x59\x52\x22\x57\x7e\xbb\x86\xc8\x36\xea\xdb\x92\x1b\xab\x2f\x60\x09\x17\xcc\xf2\x3e\x2c\xc7\xed\x49\x9c\x36\xaf\x02\x76\xdd\x42\x79\x9d\xf0\xd4\x0a\xdc\x07\x68\xa8\x54\x05\xfd\x93\xf8\xd4\x88\x72\xe8\x99\x08\x70\xe8\x95\xfc\xdd\xcf\x79\x78\x6e\x64\x2f\x60\x2c\xc0\x5d\xb1\x1f\xd9\xb5\x33\xa6\xb5\x0d\x1c\x14\xd6\xb8\x66\x3f\xb2\x2b\xa7\x86\xae\x60\xa8\x70\xb3\x54\x8d\x02\x47\xa8\x87\xdc\xd9\x36\x51\xd9\x54\xce\x67\xfa\xdd\x84\x6d\xf3\xe7\x3f\x53\x86\x3a\x6f\x9b\x26\x06\x2e\x22\x58\x2d\x2f\x37\xfb\x6c\xd9\x9c\x5b\xfa\xed\x33\x55\x19\x5e\x03\x09\xfe\xec\x87\x05\xaa\x18\x82\xf1\x58\x58\x14\x3c\x2f\x03\x1f\xd7\x76\xb4\xb2\x14\x9f\xc7\x62\x89\x4c\xb2\xf4\x33\xb0\x13\x7c\xe9\x7c\x4c\xe3\xf2\xec\x98\x17\x42\xd9\xe9\x6c\xb4\xd7\x97\x3a\x1d\xd1\xe8\xf8\xed\x9e\xd0\x5b\xd8\xfe\xc1\x31\x3b\xee\x1d\x1d\xf7\x5e\xb3\xfd\x83\x43\xf6\x6e\xef\xa7\xde\xbb\x5f\xd9\xf1\x01\xfb\xe5\xe0\xf0\x27\xa6\x64\xe2\xcf\x4f\x97\x65\xbb\x03\x13\x3b\x19\xd7\x45\x98\x5f\x8e\xc3\xa4\xfd\xb9\x60\x4d\x89\x88\xfc\x84\x48\xb4\x44\x23\xa2\xad\x0e\x84\xb6\xba\xfe\x8c\x1d\x8f\xb3\x49\x58\xb0\xc3\xac\x1f\xa7\x45\x96\xb2\x1f\x37\x9f\xae\xa7\x59\x5e\x8e\xc5\x10\x9e\xcb\xce\x3e\x68\x55\x46\xe8\x5e\x63\x9e\xf3\xfe\xb5\xd0\xe5\xd3\x92\x47\x01\x1b\xe6\x9c\xb3\x6c\x08\xe1\x9e\x47\x3c\x10\x7a\x5d\x98\x5e\x0b\xfd\x47\x00\x44\x5d\x53\x28\x44\xa8\x6e\xc2\xa2\x1f\xa2\xfa\xaa\x54\x3e\x10\x3c\x61\x51\x64\x83\x38\x14\x1a\x5d\x94\x0d\x40\xe3\xc0\x2c\x43\x42\xc9\x2d\x50\x27\x6e\x1c\xc9\x16\x90\xa1\x28\x13\xb0\x22\x1e\x26\x42\x03\x11\xc5\xaa\x14\xb4\xdf\x6c\x56\xb2\x9c\xa3\x9c\x83\xa0\x42\x71\x3a\x48\x66\x91\xc0\x44\x15\x1b\x7d\x4c\x34\x17\xd0\x80\x3a\x90\xb9\x77\x26\x94\x72\x81\x70\x20\xe4\x4f\x3c\xbc\x96\xf1\xd5\x03\x36\x9d\xf5\x93\xb8\x18\x07\x44\x09\x0d\x58\x21\x3e\x4a\x55\x3e\x4c\xa3\x4e\x96\x0b\x70\x05\x4f\x12\x01\x24\xe6\x05\x0e\xda\xe0\x08\xd5\x44\x47\xa0\x27\x96\x92\x5c\xd0\xf5\xe5\x38\x9b\xd8\xe3\x89\x41\x56\x0e\x67\x79\x1a\x17\x63\x54\x9d\xa3\x8c\x15\x19\xf4\x0b\xf1\x17\xcb\x0c\x5a\x0c\xb3\x24\xc9\x2e\xc5\x18\x07\x59\x1a\xc5\xa0\x6a\x76\x15\xab\x8d\x39\x0b\xfb\xd9\x05\x87\x61\x21\x1f\x20\xff\x22\x2a\x62\x46\x8c\xd2\xaa\x8a\x8a\x71\x98\x24\xac\xcf\x25\xf9\x78\xc4\xe2\x54\x40\x0b\xc9\xc8\x72\x81\x46\x51\x86\x69\x19\x87\x09\x13\x7b\x0f\xa8\xb8\xce\x88\xdb\x9a\xe5\x7b\xec\xe8\x60\xf7\xf8\x97\x9d\xc3\x9e\x60\xfd\x0f\x87\x07\x3f\xef\xbd\xee\xbd\x66\x0d\x50\xe1\x1b\x81\xab\xb9\xff\x6a\x6b\xea\xbd\xff\xf8\x70\xd8\x3b\x12\xca\xbc\x80\xb6\xf7\xfe\xc3\xbb\xbd\xde\xeb\x80\xed\xed\xbf\x7a\xf7\xf1\xf5\xde\xfe\x1b\xf6\xf2\xe3\x31\xac\xa7\x77\x7b\xef\xf7\xc4\x82\x3a\x3e\x80\x3e\xe9\x39\x60\x97\xbd\xef\x1d\xbe\x7a\xbb\xb3\x7f\xbc\xf3\x72\xef\xdd\xde\xf1\xaf\x81\x80\xb5\xbb\x77\xbc\x2f\x20\xef\x1e\x1c\xb2\x1d\xf6\x61\xe7\xf0\x78\xef\xd5\xc7\x77\x3b\x87\xec\xc3\xc7\xc3\x0f\x07\x47\x3d\xb6\xb3\x2f\x96\xe7\xfe\xde\xfe\xee\xe1\xde\xfe\x9b\xde\xfb\xde\xfe\x71\x9b\xed\xed\xb3\xfd\x03\xd6\xfb\xb9\xb7\x7f\xcc\x8e\xde\xee\xbc\x7b\x27\x7a\x13\xe0\x76\x3e\x1e\xbf\x3d\x38\x3c\x62\x2f\x7b\xec\xdd\xde\xce\xcb\x77\x3d\x04\xbc\xff\x2b\x7b\xf5\x6e\x67\xef\x7d\xc0\x5e\xef\xbc\xdf\x79\x83\xc7\x92\x83\xe3\xb7\xbd\x43\xa8\x86\xe8\xb0\x5f\xde\xf6\xe0\xd3\xde\x3e\xdb\xd9\x07\x68\xaf\xc4\xa9\x45\xa0\xfe\xea\x60\xff\xf8\x70\xe7\xd5\x71\xc0\x8e\x0f\x0e\x8f\x75\xeb\x5f\xf6\x8e\x7a\x01\xdb\x39\xdc\x3b\x12\x44\xd8\x3d\x3c\x78\x1f\x08\xc1\x21\x5a\x1c\x00\x9c\x57\x07\xfb\xfb\x3d\x80\x22\xe0\x09\x22\xdb\x73\x71\x70\x08\x7f\x7f\x3c\xea\x19\x8c\x5e\xf7\x76\xde\xed\xed\xbf\x39\x12\xed\x69\xe5\x36\xc6\xc4\x9c\x95\x71\x42\xf4\xe4\x86\xf8\xbb\xd3\x90\x7a\x32\x2a\xff\x8b\x66\xb7\x9a\x1e\x89\x05\xa4\x93\x5b\x91\x4b\x1a\xf1\x1d\xeb\x28\x89\x5f\xbc\x0d\x2f\xf8\x7e\x38\x01\x43\x45\xe5\x65\xa6\x1b\xd3\x6e\x98\x65\xa2\xe4\x46\xde\x17\xc1\xd6\x91\x65\x0d\xf5\x26\x53\xd7\x9b\x1e\xcb\x20\xa7\xcc\xc4\x27\x5d\x3c\x1e\xaa\xb3\xc5\xfd\x1c\xf3\xcb\x66\x98\xe7\xfd\xd9\xd0\xec\x72\x7a\x2f\x92\x05\xce\xc6\xa5\x83\x9a\xaa\xbd\xd5\xde\x04\x81\x30\x72\x03\xf4\xa7\x25\xbf\x05\x0e\x01\xd0\x46\x0c\xe7\x6f\xa4\xd5\xfa\x0a\x71\x0a\x7c\x99\x8e\xb2\x1e\x07\xac\x45\xa3\x20\xbe\x0e\xcb\x50\x00\x75\x5a\xaa\x3c\x3a\x76\xc3\x76\x5f\xab\x06\xf6\x07\x37\xac\xa2\xdc\xc0\xeb\x61\xda\x08\xde\x88\xb5\xb0\xd1\x46\xe9\x08\xdb\xbb\xd2\x37\x65\x56\xef\xc2\x70\x1d\x2b\xc7\x61\x89\x59\x1f\x60\x45\x42\xf5\x38\x4b\x21\x39\x78\xa3\x60\x97\x63\x9e\xb2\x69\x98\x97\xf1\x60\x96\x40\xc4\x58\x25\x83\x99\x90\xe2\x69\x56\xb2\x09\x2f\xa1\x2f\x10\xa1\x56\x77\x90\x41\x7d\x90\xa5\xc3\x2c\x9f\x54\xc5\x79\x9c\x96\x3c\x1f\x86\x03\xde\xd6\x59\x3d\xf0\xa0\x53\x09\x29\x9b\x9d\xa3\x52\xbf\x89\x63\xb2\x91\x04\xdb\x89\x4c\x78\x1f\xa7\x12\x8a\x10\xcc\x60\x9e\x93\x7f\xda\x4d\x9a\x7f\xb0\x09\x2f\x8a\x10\xe3\xbc\xc2\x2f\x20\x2c\xe7\xfd\x0b\x07\xe5\x2c\x4c\xba\xf2\xe7\xad\xd5\xf9\xd5\x94\x0f\x4a\x1e\x75\xf5\x6f\xec\xa6\x85\xe3\xcc\xf9\x88\x0b\xdd\xb5\xf3\xa9\x78\xa8\xe6\xe1\x53\xb1\xda\x3c\xf9\xcf\x4f\xcd\x4f\xc5\xe9\xc3\xd6\xa7\xe2\x61\x67\xcb\xd2\xd4\x3c\xa7\x95\xe4\xf3\x38\xcc\xfb\x1d\x05\xc0\xb9\x42\xc6\xe3\x4b\x18\x71\xce\xf9\xe0\x69\x7f\x38\x18\x3c\x59\x7f\xf2\xb4\xbf\xf1\xf4\x87\xe8\x87\xe8\xd9\xb0\xff\x28\xfa\xbe\xdf\xdf\x88\x1e\x85\x8f\xd6\x9f\x3e\x7b\xd6\x89\x27\xd3\x84\x6b\xf5\x44\x9c\x63\xf4\xb2\x1f\xf1\x52\x48\x25\x90\x48\x66\xd5\x2f\x0b\xa9\xd8\x8e\x8b\x5d\x75\x5c\x83\x62\x9b\x43\x29\xc3\x57\xa5\x9c\xbb\xb6\x66\xe9\x00\x30\x57\xad\x2e\x30\xf1\x84\xbc\xe9\x31\x69\xf8\x5a\xea\x90\x31\x81\x8c\x1f\x98\x08\x05\x7e\x6f\x02\x61\xa1\x5c\x02\xc5\x2a\x0f\x1e\xe0\x2f\x27\x1b\xa7\x62\x6d\x78\x39\x82\x5e\x28\x39\xbc\x62\x19\xc8\xd1\xa4\x8c\x77\xf4\x0d\x67\xb1\x6c\xa9\x72\x64\x11\x9a\x1f\x13\x3e\xe8\x72\xcd\x11\xa6\x86\xfa\xa4\xeb\x88\x6d\x24\xc4\x70\xa3\xaa\x8e\xfa\xb4\xb5\x64\x67\xc8\x94\x1c\xac\x08\x0a\xcd\xe5\x37\xd2\x5a\x7e\xd9\x32\x75\x54\xea\xd5\xe8\xbd\xae\x6c\x24\x1c\xcd\xe1\xe3\x40\x1c\xf1\x52\xb6\x68\x92\xb7\x67\x75\x20\xa9\x98\xc2\x39\x0d\x07\xe7\x47\x65\x98\x97\x8a\x77\x08\x92\x9e\xc2\x2f\x5f\xd8\x30\x8c\x13\x35\x68\x20\xb5\xba\x63\x38\x12\xd5\x8f\xf3\xd0\xa4\xf7\xa9\x29\x96\x57\x17\x55\xf0\xad\xca\x60\x85\xdc\xc8\x52\x76\xf1\x54\x1d\xc3\x85\x4e\xcf\x2e\x39\x1b\x84\x29\x1b\x87\x17\x9c\x85\x08\xa7\x14\x80\xf5\xc5\x23\xcf\x73\x79\x21\x80\x5c\x43\x12\xf1\xf0\x3c\xc7\x81\x99\xa3\xeb\x85\x4e\xeb\xa1\x0b\x75\x8c\xf9\x4e\x07\x72\xe1\x94\x19\x18\x34\xa6\x42\x6b\x07\x03\xf4\x30\x17\xcb\x86\x00\x18\xa6\x67\x92\x13\xd5\x1a\xad\x19\x9f\x6a\x10\x47\x57\x98\x64\x41\x47\x7e\x6f\x7c\x4a\x1b\x6c\x55\x41\xd2\x95\x61\x5f\x8f\xae\x20\x5d\x03\x35\x9d\x8a\x73\x0e\x58\xe2\x39\x52\x22\xc9\x06\x70\xb8\x01\xb9\xae\x55\x13\x81\x27\x6d\x72\xc9\x21\x7d\x90\x19\x91\x18\x39\xbf\xe0\xf9\x75\x39\x16\xfb\x40\x9f\x0f\x33\x71\x20\x28\x59\x13\xac\x35\x65\xc1\x92\x38\xe5\x2d\xeb\x3e\x2a\xe5\x57\xe5\x59\x82\xb1\xca\xdd\x11\x04\x30\xb2\x55\xb6\xe1\x24\x57\xc0\x9a\xa0\xc7\x83\xe8\x30\x30\x68\x5d\x9d\xef\x01\x38\x18\x48\x88\x2d\xa9\xe9\xe0\x06\x37\x20\xbf\xec\x20\xdb\x35\x7c\x58\x42\xe1\x98\x8e\x79\x1e\x97\x45\xd3\xdb\x28\xc0\xaa\xad\xad\x25\x23\x6a\xcb\x7c\x96\x0a\x82\x36\x8b\x80\xa5\x46\xd6\xaa\x44\x38\x32\xcd\x8e\x9d\x06\x47\xa5\xed\x51\x79\x7d\x7e\x64\x29\x7b\xc1\x0a\xd6\x65\x85\x4c\x35\xb3\x2e\x80\x55\xd8\x5c\xb5\xc3\xa5\x49\xd5\xbc\xb4\x98\x62\x0a\xcb\x09\x87\xf9\x31\x88\x78\x54\xd5\x2f\x5f\x58\x65\x2b\x30\x2d\x1d\x24\x25\x59\x5c\xf8\x54\x3a\xe4\xe1\xa5\xcb\xd3\x56\x3d\x60\x05\xac\xa0\xaa\xbe\x60\x8d\x2e\x13\x5c\xac\x3e\x74\x65\xae\x1c\x95\x87\xe7\x44\x61\x26\x2a\x61\xeb\x55\xd6\x80\xb8\xfe\xd6\x36\xa7\x84\x5a\xc1\x93\xa1\xa5\x29\xeb\x79\xd1\xb8\xf3\x64\x28\x85\x7a\x2b\x60\x1b\x9b\x4f\x21\x91\x8f\x40\xc2\x5c\x01\x40\x1d\x2d\xc5\x2b\xc5\x7e\x98\x6a\x1b\x90\x50\x95\xc5\x66\xa7\x64\x32\x49\x31\xcb\xd2\xe4\x1a\xd6\x5b\x39\xce\x39\xc7\x54\x14\x62\xe3\x8e\x33\xa1\xff\xe0\x59\x58\x28\x66\x33\xa1\x39\x84\x69\xb4\x04\x29\xbe\x22\x9e\x17\x65\x96\xc1\xe5\x95\xba\xe3\x69\xb3\x3d\x6b\xd7\x57\x87\x5e\xa9\x7e\x15\x20\xf0\xa6\x61\x81\x36\x4d\xb8\x49\x82\xde\xa4\x1e\x57\xd1\x14\x69\x8c\xec\x35\x51\xe5\x9a\x5d\xc6\x70\xce\x16\x00\xe2\x51\x9a\xe5\x3c\x6a\xc3\x78\x1e\xb5\xd9\x4e\x92\xa8\xc3\xb4\xd1\x08\x8d\x56\x0a\x9a\x23\x68\xa5\x2c\x74\x77\x64\x01\x01\xd4\xd2\x90\x0d\xb2\x3c\xe7\xc5\x54\xe8\xa4\xd4\x3e\x20\x54\x42\xa9\x99\x06\x78\x6d\x18\x2a\x3d\x0f\xf4\x5d\x01\x61\x12\x5e\xb3\x3e\x67\x3a\xf9\xa9\xe0\x70\xd1\x46\xaa\xc8\x51\x9b\x01\x8e\xa1\xea\x5a\x00\x1b\x67\x51\xa1\x2a\x80\x7e\x96\xc9\x1b\x49\xb9\xe3\x0b\xf1\xa5\x37\xf7\x0b\x7c\x75\x2d\xc9\x65\xe0\x70\x90\x19\x43\x1c\x47\x14\x17\xd3\x24\xbc\x66\xd3\x59\x3e\xcd\x0a\x5e\xb4\x89\x38\x10\xdb\x5e\x53\xaa\x9b\x1a\x6c\xa0\x15\x56\xa6\x98\xcb\xbb\xaf\x49\x6d\x45\x10\x70\x8e\x1a\x0c\xfc\x58\x55\x85\x7d\xfa\xae\x5f\xa9\xc5\xef\x0a\x93\xae\xc1\x09\xbe\x57\xf1\xea\x7a\xbe\x2d\x61\xd6\x2b\x64\xf5\xde\x7f\x1c\xf7\xf6\x8f\xf6\x0e\xf6\x97\x19\x64\x36\x2d\xc0\x76\x7c\xc9\x81\x91\xc4\xa6\x13\x21\x01\x8d\xce\x2f\x84\xda\xe5\x98\xe7\xbc\xad\x54\x3b\x41\x38\x50\x66\x84\xda\x20\x80\x3e\x6e\xb3\x0f\xb3\x9c\x4e\x42\xc9\x8b\x12\x0e\x37\xc0\xd7\xa1\xcc\x3d\x13\x17\x62\x5d\x96\xe3\xeb\x80\x85\xa2\x83\x92\xe7\x13\xd1\x07\xcc\xf5\x35\x5b\x5e\x1e\xcd\xc2\x3c\x6a\x93\x9d\x20\x3b\x6f\xc2\x37\x3d\x2d\x67\xd9\xb4\x6c\x6d\x2d\xa9\xc4\x70\x45\x19\x96\xb0\xc4\x04\x6c\xfe\x8f\x59\x7c\x11\x26\xe2\xaf\x32\x53\x10\xf8\x3f\x66\x61\xd2\x14\x5a\x52\xa0\x3a\x80\xc3\x85\x05\xaf\xcd\x8e\x33\xc0\x59\x5e\x72\x24\xd7\xfa\xb2\x00\x31\xc7\xf6\xb3\x82\x1c\xc2\x64\xc6\xfc\x1e\x81\xef\x43\x95\x72\x5c\x76\xde\x94\x59\x1d\x2d\x9d\x12\x14\x7e\x99\xc3\x07\x98\x52\x56\x42\xa0\x9a\x1f\x1b\xdb\xdb\x8d\xc0\x10\xa6\x45\x94\xed\xec\x9c\x9c\xe2\xbe\xc7\x53\x1c\x0c\x3c\x2e\xaf\x2b\xb3\x02\xe6\xb9\xec\x32\x60\x83\x8c\xe7\x83\xf8\x82\x54\x15\x6b\x59\x80\xd8\xde\xa6\x93\x80\x24\xac\x5d\x29\x72\x4a\x96\x68\x6d\x2b\xdf\xdf\xfc\xe6\xe4\x3a\x04\x57\xf9\xf2\xb6\xae\xd4\xba\x75\x91\x5a\x44\x81\x9e\x64\xde\x94\x4e\x87\x3d\x41\x42\xa4\x59\xba\x56\x4b\x0c\xe0\x7e\xc9\xa6\xe5\x65\xc6\x32\x99\x01\x58\x1d\xbe\xa1\x21\x48\x44\x21\xe6\x96\xb7\x55\x57\x69\x26\x67\x7e\x51\xb2\xa8\x06\x94\x32\xb7\x03\xa9\x10\x67\x9b\x12\x47\xde\xd7\xdf\x46\xa2\x65\x42\x22\xd5\xa5\xd4\x0a\x24\xa5\x7e\xd0\x2c\x83\x0b\x68\x50\x5d\xcb\x21\x8b\x38\x9f\x1a\x56\xc9\x79\x82\x87\x59\xc2\x28\xa2\xc6\xdd\xa8\xa2\x5b\x50\xb2\x2c\x00\x86\x2c\x9c\xb3\x79\xd5\xe1\xc0\xd5\x5a\x98\x52\x1a\x94\x21\x98\xfe\x44\x28\x46\x8a\x8e\x8c\x10\x70\x87\x40\x8a\xfe\xfc\x40\x84\x2c\xb8\xdb\x38\x48\xf7\xf6\x68\x48\x01\x19\x93\x46\x7d\x2e\x1a\x28\xf3\x44\x57\x93\x4c\x1e\xd9\x81\x7d\x36\x50\xe3\x88\x23\xa1\x2a\x0d\xc2\x44\xed\xce\x62\x19\x19\xb1\xec\x88\x7d\x21\xf3\xb7\x85\xa8\x71\x38\xbc\xca\xe2\xae\x49\xce\x64\xb1\x34\xe6\x51\x54\x17\x31\xbb\xb3\xfc\xa6\xc1\x38\x70\xf4\x6d\xac\x33\x3e\x4c\x50\xb5\x0e\x47\x45\x18\xd6\x66\x9b\xed\xa1\x12\x65\xab\x1d\x62\xb7\x09\xd9\xeb\xb0\xe4\x52\x60\x04\x54\x4d\x51\x55\x10\x0a\xd9\x95\xe2\xa1\x38\x85\x89\xb6\x49\x91\xd9\x00\xd0\x4e\x98\xf3\xa1\x38\x10\x4b\x9d\xa6\x10\xaa\x74\x19\x4f\x78\xdb\x1e\xb3\x3c\x10\x88\xd6\x74\xd8\xf4\x73\xdd\xc8\xb1\x7a\x7b\xc4\xcb\xe3\x78\xc2\x9b\x2d\x8b\xda\xe6\xb3\xa1\xc0\xa3\x79\x04\x90\xf9\xc1\xfe\x0c\x09\x2c\x10\xc6\x05\x0d\x86\x2e\x33\xc9\x83\x27\x94\x00\x33\x45\xe3\x7f\xcc\x0b\xd6\xfc\x0d\x0d\xdc\xbf\x05\xec\xb7\xc9\x2c\x29\x63\x71\xec\x14\x7f\x24\x61\x51\xee\x89\xb3\xab\xf8\x03\x95\xe2\x57\x61\xc1\x7f\x6b\xf9\x69\x28\xb3\x99\x55\xa9\x28\x0b\x6e\xa1\xa3\xc4\xd0\x22\xa2\xfc\xf6\xe0\xc1\x52\xc5\xba\xd9\x46\xa4\x1d\xa2\xe3\x37\x6f\x7d\x3d\x34\xbb\x89\xf9\xec\x6d\xa5\x69\x60\xb7\x32\x9f\xbd\xad\x0c\xb1\xec\x66\xe6\xbb\xe1\x8a\xc7\x6d\x76\x00\x5b\xe6\x34\x8c\x73\x69\xe3\x8e\x32\xd8\x30\x41\x67\x17\xc7\x1a\x66\xd2\xe5\xcd\x04\x48\x9d\x9a\x2d\x70\x98\x62\x80\xee\x79\x8e\x58\x70\xe6\x8b\x4a\x07\xb8\x7c\x37\xa9\xdf\xb4\xda\x40\xb3\xbf\xd9\x43\x64\xac\x69\x8c\x82\x55\x08\xba\xcc\x82\xe1\x9a\x00\x40\xf4\xb1\x17\xcc\x23\xa7\x58\x97\x55\xf7\x67\x45\xae\xbd\x21\x12\x85\x88\x44\x65\xd1\xc0\x0b\xcf\xeb\xa9\x38\x4b\xe6\x79\x78\x5d\x04\xec\x32\x0f\xa7\x62\x09\xc4\x39\x9e\x2b\x93\xeb\x38\x1d\x21\x20\x72\x57\x51\x80\x29\x9e\xc9\x9b\x1d\x1e\x0e\xc6\xe8\x1b\x39\xc8\xb9\x98\xc0\x29\xcf\x87\x59\x3e\x11\x5d\x2c\x99\x2c\xca\xd9\xb4\x8c\x27\xf2\x0d\x92\xba\x7f\x2b\x70\xd5\x42\xe7\x02\x04\xd8\x9d\x8c\xf0\xb9\x9e\x0a\x4d\x80\x0d\xc6\x7c\x70\x0e\x33\x83\xe0\x6a\xef\xb6\x58\x33\x3c\x0f\xcd\xad\x58\xab\xcd\xf6\x21\xed\xb5\x44\x88\xf5\xe3\x34\xcc\x25\x10\x94\xc2\x31\x5c\x61\x0b\x35\x6c\x37\xc9\xc2\xf2\xe1\x8e\xa4\x43\x39\xce\x66\xa3\x71\xc0\x8a\x58\x30\x08\x6f\x8f\xda\x6c\x75\x1d\xb3\x28\xae\xb3\xfe\xac\x44\x1a\x21\xa4\x7e\x5c\xb2\x69\x58\x96\x3c\x27\xd7\x26\x7a\x2f\x6a\xbb\x3b\x06\xde\x4a\xd1\xfd\x02\xbe\x98\x5d\xc0\x65\x1e\x3d\x1e\xdd\x4a\xe0\x61\xbe\xd6\xb7\x5c\x56\x7c\x4b\x6c\x58\x30\xce\x47\x9b\x98\xd0\x8b\xe4\xe9\xb2\x96\x63\xa5\xc1\x93\xc7\xd0\xa0\x6e\x2b\x13\x87\xd0\x8f\x71\x5a\x3e\xc5\x97\x64\x72\x4d\xe3\x7d\x57\x2b\x70\xfb\x10\xff\x9c\x16\x7a\xbd\xcb\x36\x95\xbd\xf0\x7b\xb6\x9b\xe5\x70\x87\x8f\xc6\x0a\xe4\x01\x94\x00\xd4\x53\x02\xc7\x25\xf5\xe8\xc0\x59\xe6\x08\xcc\x5e\xeb\xe3\xf0\x42\xb4\xd3\x4c\x97\xce\x26\x7d\x9e\x8b\x95\x91\x5d\x8a\x2a\x54\xec\x87\x05\xbb\xe0\x79\x3c\x8c\xb9\xdc\x13\x60\xc7\x58\xc4\x87\xb4\x15\x90\x8d\x85\x97\x02\xfc\x39\xbf\x96\x08\x35\xc3\x04\xf9\x0d\x38\x27\xe5\x03\xa1\x49\xe5\xb1\x34\x05\x41\x9b\x2c\x8f\x04\x25\xe9\x5e\x26\x17\xb4\xe0\x5d\x30\xb7\x2a\xb6\xa6\x36\x93\x73\x7e\x8d\x6e\x1b\x61\x4a\xb4\xa3\x86\x46\xb5\xa1\x86\x77\xdd\x66\xfb\x59\xc9\xbb\x60\x26\x45\x48\xe1\x60\x90\xcd\x52\x79\x48\x01\x11\x92\x86\x13\x34\x3b\x31\xb0\xcf\xda\xc4\xc9\xe4\xed\x6b\x51\x61\x78\x47\x45\x12\x52\xee\x56\x1d\xc9\x7f\x55\x01\x7a\x1f\xdb\x96\x3f\xbf\x7c\x61\x7f\x28\x3b\xc6\xc9\x69\x40\xec\x17\x27\xa7\x37\x5b\x26\xc3\x36\xd6\x91\x5b\x12\xb6\x6d\xab\x5d\x47\xda\x99\x25\x6e\xc6\xaa\x4f\xdb\x2c\x3b\xb9\x53\xdd\x72\xc1\xa9\x08\xd5\xec\x5a\x12\x6e\x65\x78\x1e\x75\x92\xb9\x99\x52\x2d\x0c\x21\xc9\xaa\x85\x9e\xd3\x15\x54\xd0\xfd\xd8\x29\x55\xb3\xfe\xe7\x9e\x60\x98\x5b\x55\x69\x65\x27\xa6\xfe\x00\x3b\xca\x8b\xba\x89\xab\xe9\x8e\xee\x05\xd0\x82\x26\x5c\xd5\xf0\xd0\x36\x4b\xec\x12\x1a\xcb\x80\xf5\x0d\x66\x88\xf3\xcf\x71\x11\x97\x3c\xc2\xfe\x0a\xd7\x79\x51\xed\xa4\xf8\x97\xb1\xf6\x7d\xf9\x42\x73\xf5\xe9\xbf\x74\x85\x96\x97\xd7\x3a\x1d\x01\x3a\x4b\xa5\x7e\x39\xcd\xe3\x49\x5c\xc6\x17\x1c\xd7\x2e\xca\x1d\x30\x5d\xf6\x71\x55\x4a\x54\xa4\xce\xf6\x41\x55\x6f\x86\xe0\xeb\x5e\xf9\xdc\x6f\x59\xdd\x4a\xf7\x4b\x75\xf5\x25\x37\xf8\x07\x0f\x14\x6d\x47\x56\xaa\x46\x01\x54\x30\xa2\xbf\xd0\x01\xad\x47\x04\xec\xbf\x27\xa6\x52\x2c\x1b\x3a\xa7\xa1\x36\xb8\xf7\xbd\xe5\xe8\x7b\x88\xba\x8f\xac\xf0\xe0\x01\x5b\x96\x95\x31\xf3\xe4\x32\x29\x51\x05\x7e\x3c\x60\xc6\x54\x53\x5c\x09\x21\xdb\x96\x1e\x34\xc8\x32\xa1\x64\xef\xbe\xf3\x5d\x65\x6f\x54\x6f\x69\xc8\xf9\x90\xb0\x8b\x75\xcd\x70\x1e\x62\x22\x65\x3e\x28\x7f\xe2\xd7\x74\xac\xe7\x7d\xbb\xa4\x6f\x4a\x84\xa4\x8c\x25\x17\xdc\x65\x4f\x00\xab\x79\x9c\x0e\xb2\x7c\x9a\xe5\x61\xc9\x0b\x05\x82\xee\x01\x2d\x49\x83\x73\xe5\x4b\x0b\x73\x79\xae\xbc\x68\xeb\xd8\xd1\xb7\x65\xdc\x61\xb7\x58\x62\xec\x3c\x6c\x17\x59\x5e\xe2\x85\xe5\x79\x9f\xfc\xd1\xe9\xfc\xd7\x7f\xfd\xd7\x60\xcc\xc3\x29\x64\x79\x2e\x79\x51\x2a\x57\xde\x98\x6d\x33\x83\xe9\x1a\xdb\xd8\x62\x31\xdc\x16\x6e\xb1\x78\x6d\x8d\xfa\xee\x9e\x6b\xe7\xdd\x73\xf0\xde\x5d\xb2\x24\x9c\xe5\x51\xd3\xe9\xcc\xd9\xbb\x6a\xb6\x2d\x85\xe6\x34\x2b\x8a\xb8\x9f\x5c\x83\xfc\x4a\x8b\xf8\x82\xa3\x39\xe8\xee\x48\xcb\x1c\xdc\xc6\xb1\xb8\x62\xfb\x80\xec\xdb\x01\xeb\xcb\x9f\x73\xa5\xd1\xbc\xf1\x5a\x52\x1e\xad\xdf\x4f\x2d\x8b\x60\xad\xad\x4b\x0c\x27\x4c\xaf\x71\x88\x71\xaa\x6c\x5e\xd4\xd4\x95\x66\xe5\xeb\x3b\x5b\xbb\x68\x23\xc7\x0e\xb8\x00\x30\x23\x7a\xbf\xa6\xc9\x8b\xf6\x6d\x99\x09\x5f\xd7\x1b\xbe\x64\xa9\x6d\xfb\xaa\x7e\x24\x7e\x72\xd5\xc2\x3f\x3d\xce\xbb\x59\xc4\xaa\x08\x34\x02\x0f\x56\x66\x1f\x16\x73\xfd\x0c\xd9\x45\x6e\x0c\xf5\x06\x75\xbb\xbc\xce\xca\xe5\xbf\x39\x58\x94\x77\x0a\xbf\xa1\x71\x21\x50\x1e\x13\xfb\x3d\xcc\xc8\xdb\xd4\xd4\x5e\x78\x8d\x88\x9d\x0e\xdb\x58\xb7\x88\x76\xab\xf1\x5d\xd6\x33\xab\x4c\x74\xb1\x54\x39\x24\x2c\x6f\x6f\xb7\x19\xe1\xce\x85\x38\xa9\xba\xfc\x6a\xcc\xb5\x8b\x02\xf4\x98\xe3\xef\x65\x8f\xb7\x0d\xf2\xb7\x18\x64\x15\x88\x1e\x3c\xda\x8c\xb3\xd4\x63\xb7\xd4\x46\x64\x89\xd7\x97\x2f\x6c\xb9\xc6\x88\x4a\x64\xa4\x6c\x74\x8b\x2a\x49\xad\xa3\xd5\xec\xfd\x0e\x74\xad\x15\x8b\x19\xa6\x6a\x33\xf4\x56\xe6\xd7\xf4\xdd\x49\xe5\xa4\xeb\xa2\xec\x51\xd5\xc1\x5f\x84\x0d\xc0\xf3\xac\xa9\xfd\x92\x3a\x1d\xb6\x07\x76\xaa\x36\x03\xee\x23\x30\xc1\x76\xc1\xa2\x8c\x17\x69\xa3\x64\x97\x59\x7e\x8e\xf2\x3d\xcf\xb3\x4b\x73\x23\xde\xa6\x04\x41\x2f\x27\xa1\x39\x1a\x05\xef\xf6\x73\xd2\xd2\x52\x95\x0a\x40\xc0\x3f\x6e\xd4\xee\x85\x87\x6a\xbd\x23\x19\x9b\x7b\x99\x5f\xbf\x4c\xb2\xc1\x79\xb3\x2f\xfe\xc7\x2e\xa4\xdb\x13\x3a\xa4\x19\xca\x41\x8d\xa6\xf4\x38\x71\xe9\xc0\xa5\xb3\x9d\xbb\x09\x4a\x38\x76\x9f\xe3\x3c\xbb\x2c\x9a\xc5\x38\x9b\x25\xd1\xb1\xf8\x23\x40\xe0\xb5\x8c\x6f\xce\x72\x5b\x4b\xb6\xf3\x0c\xb4\xab\xf1\x30\x36\xb7\xe4\xc7\xd7\x53\x8e\x37\xe3\x8d\x15\x68\xb1\xa2\x5f\x8a\x6a\xb5\x3e\x64\x06\x80\xc5\xa5\xae\xad\xce\xe7\xad\x63\x9c\xe8\xa8\xc3\x1f\x23\x8d\xe0\x3c\xa2\xe1\x6a\x4f\x42\x77\x02\x60\x7c\x06\x9a\xb1\x1e\x3e\x78\x60\x26\x57\xb9\xc7\xb0\x66\x83\xad\x3a\x9f\x57\x59\xa3\xd5\x6e\xb0\x2e\x6b\xb4\x1b\x2d\xea\x98\xc2\x18\x6b\x2a\xc0\x2f\xd0\x6b\x45\x77\x84\xb5\x35\x6d\xc9\xcc\x80\xea\xaf\x78\x68\xae\x98\x69\xbc\x8f\x8b\x42\xa8\x70\x1a\x65\xae\xe4\x06\xe9\xaa\x65\xbd\x31\x9b\x15\x3c\xff\x20\xfd\x32\x88\x67\x21\x12\x5c\x53\x81\xd0\x5b\xe9\xec\x71\xf1\x31\xbd\x84\x37\x3d\x5a\x38\xb1\x6d\xb6\xec\x20\x2e\xcf\x61\x38\xf3\x44\x24\x28\x08\x15\x01\xe7\x81\x21\x67\x4a\x90\xc1\xb2\xaf\xc2\xf9\xc8\x87\x86\xb6\xc4\xf9\x06\xa7\x0b\x17\x90\xad\x24\x97\xbe\x17\xd9\xdb\xe6\xe3\x4d\x56\xb2\x99\x44\xef\x96\xb9\x80\xc1\xd4\x0e\x9c\xf0\xa0\xc4\x67\x79\x41\xf4\x59\xd3\x4f\xce\x96\xbd\x44\x8d\x1b\xed\x8d\xd4\x97\x37\x36\xda\xac\xa7\xba\x85\x5b\x29\xe9\x31\x04\xf2\xa4\x4b\x54\x1a\x29\x4c\xa4\xfc\x80\xa9\x16\xbb\x6f\xdd\x56\x8c\xd5\xc9\x16\xac\x5a\x76\x1e\xa2\xaf\x6a\x98\x3c\xec\x70\x74\xe4\xa3\x9f\x2c\x71\xa4\x24\x18\xfa\x49\x28\xd1\x85\x8d\x0c\x6d\xa5\x5e\x42\x1c\x5f\xc0\x18\x1e\x17\x2c\x4c\xd3\xec\x1a\x8e\x99\x19\xc4\x14\xe0\x2c\x9b\x95\x45\x1c\xc9\x48\x09\xd2\x4d\x5e\xdf\xf6\x66\xbc\xd8\xcf\x4a\x24\xe1\xd7\x41\x1c\xf6\x8e\xf9\x98\xcb\xce\xe3\xa1\xeb\x46\xdd\xe4\x79\xde\x62\x7f\x28\x0f\xd8\x96\x9c\x1b\x9e\xe7\x10\xbf\x0c\x3c\xe1\xcd\x39\xdb\xbc\xa8\x81\x13\x2c\x79\xf7\x4f\x1e\xae\xc8\x53\xb8\x09\xef\xa3\x9f\x95\x8a\x43\x5b\x0c\x76\x22\x7a\xf6\xc4\x13\xb6\xb6\x37\x05\xa2\x5a\xab\x05\x20\xd0\x28\x26\xfe\x76\x36\x22\x51\x88\x23\xbb\x69\x91\xa8\x27\xd6\xab\x15\xd8\x47\x56\xb4\xa9\x68\x85\xbd\x50\x05\x5d\x25\x94\x0a\x9e\x0c\x3d\xd5\xe0\xb3\xae\x84\xaf\xa8\x3d\xd5\x64\x41\x97\xfd\x71\xd3\x82\xc7\xd3\xf0\x06\x69\xa5\xbb\xb9\x7e\x73\x1a\x6c\x3c\x5d\xe4\x95\x34\xd9\x91\x24\x61\x07\x39\x0f\x4b\xee\x7d\x1d\xd3\xe9\x30\xfb\x05\x00\x3e\xc0\x14\x2a\x4a\x14\xe6\x91\x7a\xa1\xcc\xe0\x2d\x54\x43\x32\x9e\xd8\x80\xdc\x87\x1a\xc4\x8b\x54\x3a\xbf\x0e\xd0\x41\x6d\x36\xe5\xf9\xab\x32\xd3\x6f\x58\xc4\xe7\x36\x7c\x3d\x63\xdb\xa6\xd8\x94\x69\x65\xcf\x70\x06\x0e\xa0\xa9\x2b\x9b\x3a\x81\x56\xc7\x88\x13\x62\xd7\x8a\x68\x03\x91\x13\x06\xda\x33\x0d\x64\x6b\x3a\x9b\xf0\x3c\xec\x27\xbc\x8b\x5a\x92\x29\x12\xab\x0d\x0b\x60\xed\xea\xef\x83\x2c\x1d\xc6\xa3\x59\x6e\xca\x6c\xf3\x2c\x72\xd3\xd6\x12\xb1\x49\x77\x3a\x2c\x4b\x22\x56\x0c\xc6\x59\x96\xb0\x62\x1c\x4f\x80\x6d\xc5\x37\xe5\x60\xfe\xcd\x28\x29\x96\xc6\x31\x9f\x4c\x5f\x95\x59\x25\x0b\x10\x62\xac\x4a\x2d\x7a\x7b\x28\xec\x9f\x18\xd0\x99\x24\x84\x66\xcb\x53\xa7\x4d\x9d\x42\xb7\xa1\x50\x49\xef\x9b\xe0\x0f\xc1\xcc\xcf\x16\x61\xe6\x39\xd4\x31\xaf\xcf\x46\x96\xf9\x39\xcc\x47\xe4\xc9\xb5\xf8\x6b\x9b\xdc\x9d\x02\xaa\x56\x71\x1b\xe2\xc6\xd8\x8b\xc3\x53\x6b\x18\x27\xc9\xed\xb5\x72\x1e\x46\x1f\xf7\xd2\xf2\xa9\x53\x55\x28\xb8\x38\xee\xcd\xf5\x3b\x86\x3a\x98\xe6\xd9\x80\x17\x45\xa0\x43\x1e\x58\x6f\x9f\xff\x96\x5d\x83\xfb\xca\x5e\x3a\x68\xc3\xf5\x0b\x9a\xa2\x21\x78\xfb\x20\x4b\xf1\x49\x6f\x96\x17\xed\xaf\xfb\xfa\x19\x03\x2d\x40\xbc\x9d\xfb\xbd\x7e\x16\x00\x56\xd4\x63\xda\x15\x78\x00\x7d\x9f\xd7\xcf\xca\xff\xad\xfa\x00\xfa\x4e\xaf\x9f\xa5\x43\xee\x9c\x07\xd0\x77\x78\xfd\x2c\x80\xdd\xf2\x00\x7a\x81\xd7\xcf\xf0\x46\xfa\xdb\x3f\x80\x06\x0f\xed\xf4\x5b\x3c\x80\x96\x31\x8c\x16\x7c\x00\x0d\x61\x00\x0e\xef\xfb\x00\x5a\xb4\x76\xdf\x40\xdf\xfb\x01\xb4\x00\x56\x7d\x03\xad\x1f\x40\x43\xd8\xa5\x0f\xbf\x1e\xee\xbd\x79\x7b\xcc\xde\x1e\xbc\x7b\xdd\x9b\xf3\x2a\x5a\xc0\x5a\xf8\x61\xf4\xbc\x57\xd1\x40\x9f\x3b\x3e\x8c\xae\x7d\x15\x2d\x80\xdd\xe5\x61\x34\x78\x6c\x94\xd2\x21\x6a\x9b\x75\xbe\x3b\x29\xa2\xcf\xdf\x9d\x76\x46\x26\x88\x1d\x56\xa1\x5a\x20\x79\x29\xbc\x1c\x17\xd2\x1f\xc1\xbc\x12\x36\x5a\xa0\x37\x68\xa3\x8c\xd9\xe8\x0f\xd9\x68\xc5\x75\x92\x40\x50\xaf\x53\x6f\x2a\x68\x98\xa7\x56\xcb\x13\x86\x49\xb5\xfa\x9c\xc5\x69\xb3\xc1\x1a\xf6\xb1\x13\x82\x4b\xe9\x4b\x32\xbc\x01\xd3\x20\xd5\x77\x0c\x65\x22\x4a\x9d\x20\x28\xf8\x78\x51\x8f\xb8\x9d\xf3\x69\x12\x0e\x78\x93\x92\x31\x30\x84\xba\xa2\x9a\x2b\x5e\x19\x37\xbe\xfb\xae\xd1\xd2\xcf\x58\xbe\x6b\x98\xfb\x08\xb8\xb7\x48\x78\xaa\x4b\xaf\xb0\xac\xb8\x8c\xc1\xde\x72\x65\x08\x33\x08\x0b\xce\x1a\xdf\x15\x8d\xae\x0e\x2f\x2d\x5d\x45\xf2\x51\x71\x12\xaf\xae\x9e\xea\x97\x50\xb2\x6a\x64\xaa\xee\xc3\xb5\x56\x7d\xd5\xcf\x8d\xae\xd6\x8d\x8c\x05\xc8\xb2\x8c\xfd\xed\xe8\x60\xbf\x8d\xc7\xf2\x78\x78\xed\x01\x45\xcc\x44\x67\x2d\x1f\x84\xc6\xc9\xab\x38\x87\xd7\xc7\xa7\x8d\x6a\x04\xdf\x88\x0f\xc3\x59\x52\x76\xdd\xcb\xf3\x2b\x62\x8e\x6b\x59\x87\x85\x2b\x39\x5f\x27\xf1\x29\x89\x39\xa3\xbf\xae\xae\x9a\x20\x33\xe8\x9e\xb0\x3f\x4b\x12\x41\xd2\x2f\x5f\xd8\x72\x5c\xa0\x36\xda\xbc\x22\x37\xf6\x62\xaa\x57\xb7\xa5\xb1\x44\x75\x4c\xdd\x12\x9c\x2a\x8a\x3f\xaf\x5a\xf4\x8d\x19\xf5\xe4\xc2\x23\x08\x08\xb4\x30\x3f\x47\x07\xb6\x50\x3e\x41\x61\x78\x56\x46\x6f\x36\x7c\xe9\x03\xc6\xfb\x43\x68\x5d\x88\x7a\x62\x7f\x8b\x79\x64\xf4\xa4\xcb\x71\x3c\x18\xb3\xcb\x50\x94\xc3\x13\xbe\xfe\xb5\xa2\x1c\xb4\xdd\x1b\xb2\xb5\xb5\x34\x5b\x8b\xf8\x34\xe7\x83\x50\x3d\xa2\x29\x38\xba\x4d\xa6\xca\x29\x92\xa5\xd9\x5a\x36\x6d\xeb\x05\xaf\xea\x73\x6b\xcd\xa7\x01\x9b\x14\x23\x7d\xb6\xd8\x11\xfb\x17\xd0\x5f\x83\x87\xbb\xd3\x38\x1d\x15\x6a\xa7\x97\xfa\x8d\xd8\x5f\x8a\x32\xcc\xa1\xc6\x6c\xda\xd6\x41\x06\x3e\xaa\xf3\x91\x0a\xab\x23\x1b\x54\xcc\x9d\x0a\x89\x8a\x89\xb6\x82\xb2\xc6\xb3\x26\xac\x27\x09\xe0\xac\xad\x1f\xb2\xd7\x76\x9a\xbd\x26\x94\x52\x46\x53\x17\x97\xd4\x12\x27\x82\xfa\x60\xe2\xd3\x26\x59\xe2\x8e\x2d\x71\x8a\x9a\x94\xf5\x96\xb1\x89\xed\x58\xa2\x50\x80\xf3\x34\xc1\x82\xae\x1d\x63\xd2\x44\xa3\x96\x18\xa5\xf6\x24\x31\x9e\x37\x1a\x54\x1e\x0e\x78\x0d\x28\xa1\xc1\x67\x09\xc7\x3a\x3e\x40\xd5\xaa\xbc\xda\xa7\xfc\xa9\x49\x60\xdb\xcb\x09\xc5\xe6\xcc\x05\x35\x60\x1b\x82\xc9\x95\x22\x08\x1c\xf1\xfe\x0c\x84\xf4\x1f\x32\x8c\x2e\x7c\xe8\xa5\x17\x71\x9e\xa5\x5b\x84\x67\xfb\xb3\x51\x92\x8d\x28\xcb\x16\xbc\xa4\x21\x2d\x0c\xb7\x51\x10\xf2\x36\x97\x7e\x62\xdb\x8a\x73\xdb\x3c\xbd\x68\xef\x1f\xbc\xee\x9d\xbd\xee\xbd\xfc\xf8\x46\x08\x0b\x7c\x86\x58\x40\xe6\xf5\x82\x97\xed\x32\xfb\x38\x15\x27\xab\xb0\xe0\x4d\xed\x3c\xb1\x8c\x58\x9f\x14\xbc\xb4\xc4\x8e\x98\x3c\xe9\xe4\xdb\xf8\xf4\xa9\x2f\xc4\x86\x80\xb4\xca\xe0\xaf\x80\x35\xe2\x46\x0b\x2f\x31\x6c\x14\xad\x37\xc6\xd3\x38\x22\x18\x4e\xe3\x68\x4b\x4b\x4d\xdd\x29\x25\x83\x1b\x05\x76\x52\x8c\xd0\x56\x4d\x76\x77\x39\x43\x3a\x4a\xa1\xbb\x60\xaa\x9c\xd0\xf8\xae\x60\xdf\x45\x5d\xf6\x5d\xd1\x08\x50\xa4\x4c\xe3\x08\x97\x9e\x66\x10\xaf\xd0\xac\xc7\xf2\xc6\x2b\x38\x49\x7d\x25\x40\x1f\x42\x08\xb5\xde\x60\x9c\x15\xe4\xb9\x94\x38\xa7\xe1\xaf\x6d\x76\x9c\xa3\x67\xe9\x34\x8f\xd3\x92\xd6\x99\x95\xa2\xa9\x94\x4f\x7d\x5e\x94\xec\x32\xbc\x66\xd2\xd3\x80\xb3\x51\x7c\xc1\xb1\x2c\x8a\xc5\x11\x14\x9e\x75\x5d\x4f\x79\xa1\xe3\xb6\x41\x64\x67\xf6\x07\x6e\x18\x37\x42\xd9\x00\x7d\x3d\xd3\x0a\x3e\x76\x99\xcd\xca\xb6\xb7\xfe\xb4\x2c\xd8\x81\xb4\xd0\xa9\x27\xf2\x96\x3b\x7e\x98\x94\xe0\x8e\x3f\x06\x6c\xa7\x08\xa7\xb3\xd4\x79\xc8\x12\x3e\x0a\x07\xd7\x5d\x06\x66\xaf\x62\x9c\x5d\xbe\x8d\xa3\x88\xa7\x81\x58\x38\xe5\x58\x9c\x83\x92\x2c\x2f\x68\x04\x38\xb5\x27\x41\x0b\xd1\xb5\x16\xdf\x72\x9f\x50\x18\x48\x69\x36\x28\xc5\x8e\x89\x33\x55\x70\x9e\x82\x87\x1d\xfe\x55\x5e\x27\xf1\xef\xbc\xab\x7e\xd9\xcf\x5e\x89\xde\x96\xe4\x2c\x77\x3a\x12\xbb\x76\x5b\xbf\xac\x70\x74\x3b\xa1\xdd\x3c\x6a\x89\x2e\xda\x80\xaf\x15\xb1\x73\xf3\x74\x6b\x4e\xb3\xc7\xd8\x0c\xc7\x67\xb5\x7b\xa4\xdb\xc5\xc5\xcb\x2c\x4b\x78\x98\x36\x61\x9c\xe4\x8e\x8e\x22\xc6\x00\x90\xa1\x1d\x86\x29\x28\x9c\xf7\x1d\x86\x52\x00\x60\x94\x95\x10\xb9\x55\xd2\x6a\x45\x4e\x97\xba\xe4\x81\x65\x24\xe3\x33\x37\x07\xe5\x95\xa4\xb4\xf1\x80\x81\x35\x5e\x25\xb8\x2b\x95\x6c\xcc\x5a\xad\x2a\xaa\x96\x63\x95\xdb\x14\x88\xda\xb2\x09\xbc\x59\x57\x19\x49\xd9\x72\xe8\x3a\x17\xfe\x60\x56\x94\xd9\x64\x0f\x39\x4a\xb5\xa4\xdf\xc8\x0e\x20\xda\x93\x6e\x70\x24\xc8\x38\x10\xdc\x03\x7e\xfb\x25\x2e\xc7\xc0\x44\xe4\x5d\x37\x4a\x23\x48\x07\x2c\x49\x29\x38\xd7\x0c\x6f\x6b\xe9\x46\x8b\xfc\x58\x77\x2b\x7f\x93\xca\x95\x0c\x2b\xc7\xd3\xf6\x65\x7c\x1e\x4f\x79\x14\x87\x26\xbc\xdd\xce\xfe\xd1\xde\x19\x2f\x06\xe1\x94\x9f\x0d\xb2\x88\xff\x9f\x51\x1e\x4e\xc7\xf1\xa0\x58\x92\x40\x0c\x35\xc4\xfc\x37\xfa\x59\x12\x35\x58\x97\x9d\x6c\x04\x6c\x73\x13\x16\x43\x23\x2e\xc3\x24\x1e\xc0\xd7\x47\x01\xdb\x7c\x84\x5f\xd1\x71\x3e\x4e\x39\x14\x3c\x0e\xd8\xe6\x63\x59\x3d\xbd\xe0\x79\x81\x9f\x7f\x08\xd8\xe6\x0f\xf8\xf9\x72\x1c\x97\xf8\xf1\xd1\x0f\x01\x7b\xf4\x0c\xbf\x8e\x72\x7e\x0d\x1f\x9f\xad\x9b\x8f\xfd\x24\x1c\x9c\x63\x55\xeb\xeb\x4c\xb6\x7f\x6c\x3e\x0e\xae\xc3\x14\x3f\x3e\xb1\x80\x72\xf9\x75\xd3\x7c\x9d\x84\x23\x9e\x96\x21\x7e\xff\xde\x7c\xcf\x39\x8e\xf8\xd1\x86\xf9\x76\xcd\x85\xba\x87\x9f\x1f\xc1\x67\x75\xc5\xf1\x3a\x4b\x1b\x18\xe9\x59\x22\x24\x34\xd8\x8b\x18\xc5\x69\x96\xb2\xc1\x24\x6a\xf3\x2b\xae\xc9\x2b\x26\x9f\x6b\xf2\x42\x5c\xe2\x30\x69\x74\x25\xe6\xd0\x19\xfa\xdd\x89\x6f\xb2\x5b\x1c\x2e\x2e\x6f\xf7\xb3\xb6\xb1\x8b\x02\xa0\x9e\x84\x91\x00\x54\x98\x3f\xf8\x22\x6f\x11\xbb\x8a\x1c\xf0\x31\x0a\x4b\x2e\x3e\x29\x5a\xc8\x67\x22\x2b\x69\x38\xe1\x2b\x5d\x88\x66\x94\xa2\xac\x4e\x30\xa4\x35\xf0\x2e\xbc\x8d\x68\x40\x64\x9a\xa9\x68\x2d\x28\x86\x5b\x13\x71\x91\xb1\x79\xbc\x59\x94\xf0\xa6\xfb\x3a\xe1\xc7\xd7\x53\x72\xb5\x0d\x9f\x0c\x0f\x4b\xfa\x9c\xe8\x9a\xa7\xe6\x66\x56\x7c\x72\xb4\xd1\xc6\xa7\xd9\xfa\xfa\x46\xff\x84\x1c\x40\x24\x03\x23\x84\xd3\x93\xf5\x53\xa1\x5e\x4c\x40\xd5\x10\xc7\x15\x7a\x29\x7c\x7b\xeb\x0d\xd9\xba\x36\xd4\x44\x99\x1b\xe7\x25\x77\xf0\x72\x8f\xf0\x0e\xdd\x3a\x15\xd1\xb6\xf0\x2a\xe4\x38\x7b\x1b\x16\xe3\x26\xfc\x6e\x48\x35\x0e\x8b\xb1\x54\x04\x97\x18\x56\x14\xea\x4b\x2f\x1c\x8c\xb5\x51\xb5\x79\x11\x26\x10\x3a\x44\x11\x4a\x34\x3a\xb9\x08\x93\x53\x1a\xb6\x06\xaf\xbb\x25\x0e\xa2\x86\x83\x44\x45\x0c\xc9\xc7\xd1\x39\x1f\xcc\xf2\x82\x1f\xc7\x3a\xd6\x51\xa7\xc3\xe4\x3d\x2f\x0b\xd9\x38\xcb\xd0\xcf\x63\x56\xf0\x7c\x4d\xc6\xdc\x86\x08\x56\x28\xa9\x2c\xc7\x8f\x4e\x87\xbd\x02\x2f\x11\xd8\xf5\xcd\x03\xb7\xd4\x7a\x97\x16\xa6\x95\xd6\x62\x55\xc5\x25\x95\xb2\x96\x14\xd6\x17\xb5\x08\x52\xff\x49\x82\x79\xa0\x92\x24\xe1\x92\xf7\x23\x9d\x0e\xdb\x8d\x85\xfa\x01\x91\x56\x84\x06\x02\x71\xf3\xa4\x09\x9b\xc5\x65\xa3\xa8\x62\x23\x4e\x94\xb8\x8a\x69\xbf\x5a\x3a\x4b\xaf\x2f\x4b\x62\xd3\x0e\x77\x92\x22\x63\x43\xd3\x2b\x18\xa5\xf5\x75\x84\x32\x23\xcd\x0a\xe5\x99\x3b\x90\x66\x03\x74\xb1\x69\xab\x4b\x69\x39\x26\x7a\x35\xf1\xe0\x01\xab\x7c\xa4\x37\x1d\xdb\xdb\x58\x6e\xd9\xad\x72\x50\xec\xad\x21\x34\xe9\xac\xc3\x66\x44\x5e\x0c\x18\xfb\x57\xce\xcb\x96\x75\x3e\x15\x1b\xaa\xcb\x47\xb9\x50\x94\x2d\x2e\xf2\x1c\x98\x72\x5e\xea\xa3\x11\xf0\x97\x74\x25\x47\x4d\x94\x0d\xc2\x54\x48\x22\x78\x34\x65\x5c\x92\xe5\x1a\xd1\xde\xeb\xba\x77\xe3\x89\x6e\x38\x59\x1f\x54\x74\x75\x47\xae\xe8\xef\x14\x91\x77\x82\xbd\x67\xf0\x50\x0c\xaf\x6c\xa5\xdd\x18\x27\xa9\x6d\x5f\xe6\x92\x9b\xdf\xa6\xe9\x53\x54\x90\x9b\x83\xbc\x21\xa6\xeb\x5d\x54\x36\x9e\x28\x8e\x3e\x64\x5c\x79\x09\xf8\x11\x2f\x89\xbf\x35\x84\xaf\x21\xbd\x29\xc4\xf7\x7a\xda\x15\x6b\x12\x9e\x73\x15\xad\x23\xe6\x49\x54\xa0\xb3\xa0\xbe\x35\x94\x6e\xdc\xa8\x42\x4c\x8a\x28\x6d\x4f\xe2\x41\x9e\x15\xd9\xb0\x84\x08\x6d\x3c\x5d\x9b\x15\x9d\x24\xee\xe7\x61\x7e\xdd\x89\x79\x27\xba\xbc\xfc\x7e\xb3\xe8\x97\xcd\x8b\xed\x8b\xa2\xfd\xec\x71\xab\x1d\x16\xd3\x2b\xad\x43\xe1\x51\x1d\x51\x92\xac\xf1\xe0\x01\xba\x8f\x9b\x70\x47\xf2\xf6\xbd\xd1\x02\xcf\x65\x71\xca\xb4\xcb\x23\x5e\x0c\xf2\x78\x2a\x2f\x77\x21\x80\x93\x6b\x95\x80\xa9\xa6\x9d\xd1\xf1\x1f\x65\xea\x59\x5d\x36\xa4\xd2\x45\xac\x37\xe2\xd4\x3e\x08\x53\x78\xe3\x30\xce\xf2\x72\x30\x2b\x4b\xc8\x29\x80\x0e\xdf\x02\x1d\xa9\x8f\xc3\x0b\x2d\xdb\x96\x66\x0b\x16\xe7\xb8\x2a\x23\xfb\xe0\x92\xb2\x83\xfb\x90\x6f\x2a\xbe\x0f\x19\x13\x51\x1a\x9b\x76\xbc\x1f\x13\xee\x27\x30\x2a\x84\xb5\x92\x10\x2f\x79\xd4\x76\xb1\xf2\xc0\xc7\x9a\xb5\xde\x88\x08\x21\xd0\x7b\xbe\xa7\x2f\x78\x01\xbd\x40\x4f\xa2\xde\xed\xfd\x80\x5e\xe2\xe9\x85\xce\x70\xa5\x1b\x3f\x13\x90\x40\xd9\xf0\xee\x03\xde\xda\xb2\x46\x23\xc0\xa5\xa7\xd4\xfe\x80\xf5\xf3\x70\x00\x9a\xd9\x49\xe3\x0f\x41\xd8\x9b\xc6\xa9\x7a\x88\xf7\x5e\xac\x1a\x7c\x63\x57\x84\xd7\x2a\xbc\x24\xbf\x86\x77\x8f\xf0\x5d\x33\x3c\x3e\xec\xb3\x31\x54\x1d\x19\x03\x11\xe9\xeb\x44\xf4\x75\xda\x38\xa5\x0c\x0b\xfd\x99\xc0\x41\xd5\x3e\x75\xd9\xd2\x2d\x3c\x08\x1c\x78\x17\xf6\x53\xf4\x61\x36\xc7\xa9\xe8\x52\x0e\x8e\xc8\x37\x3e\x0c\x65\xc9\xd2\x5c\x5e\xd4\x9d\x89\x3e\x16\xe2\xc1\x0a\x06\x82\x53\x0a\xd4\x15\xc8\x52\x1e\xc6\x79\x51\x4a\xac\xb0\xce\xd2\x1c\x46\xb5\xd0\xa8\x30\xe8\xc7\xe3\x57\x0b\xe0\x81\x32\x15\xf0\x50\xce\x7b\x36\x12\x50\xc1\x2b\x17\xbd\x68\xcc\x91\x68\x5e\x89\x04\x62\x75\x39\x94\xef\x5b\xe5\xdc\xea\x0a\x55\x89\x89\x1c\x88\xea\x31\x74\xbc\xaa\x3e\x6d\x9c\x5a\x3d\xd1\xdd\x9a\xfd\xe8\x8a\xbe\x6f\x2e\x62\x6c\xe3\x99\x57\x34\xe2\x5e\x58\x27\x0c\x61\x20\xd0\x80\xf3\x14\xaf\xd2\x14\x3d\x97\x74\xd0\xc2\x29\x46\xc6\x93\x61\x6c\x43\x1d\x49\x1f\x8b\xb4\x2e\x81\x8b\xbb\x4e\x23\x0e\xe8\xd6\x0e\x8e\x59\x45\x35\x46\x9d\x86\x08\x33\x38\x09\xa7\x46\x75\x3f\xe7\xd7\x35\x32\x4d\xa7\x51\x59\xbc\x6b\x29\xde\x14\x21\x0c\xf7\x18\x52\x64\xd3\xa6\x75\x10\xc8\x79\x34\x1b\xf0\xe3\xec\x28\x4e\x47\x09\x97\x6a\x1d\xe2\x1b\x00\x8f\x28\x19\xd9\xf2\x1e\x17\xbc\x8a\x96\xd7\xfe\x2c\xb9\x65\xa9\x6e\x46\xcd\x99\x36\xa0\x07\xdc\x96\x31\xcd\x48\xe4\xaa\xb2\xae\x00\x9f\x2f\xb1\x8a\x3e\x35\xc4\x32\x72\x6e\xea\xb0\x81\xbe\xb6\xec\xfc\xe7\xca\x97\x95\x7f\xeb\x8c\x02\xd6\x68\xd8\x99\x6e\x6e\xfd\x67\x60\x34\x44\xfb\x95\x4f\x9f\x1a\x2b\xf7\x06\xf1\xe9\xd3\x0a\x20\xb1\xd2\x80\xa0\x7b\x9f\x94\x30\xf6\x10\x07\x07\x18\x18\x2f\xec\x2d\x12\x91\x36\x2e\xe4\xe5\xe6\x6d\x14\xd6\xe2\x3f\xd0\xe6\x86\x56\xd5\x92\x78\x17\x28\xca\x3c\x21\x5f\xd9\xc1\xbb\xf5\x42\xe8\x5d\x39\x0f\x8b\x2c\x55\x9e\x44\xf0\x32\x35\x2e\xd8\x0a\xaa\x61\x2b\x01\x2b\x32\x75\x7e\xc2\x0b\x58\x8c\x7a\x66\x5d\x53\xde\x86\x07\x18\x3b\x02\x69\xf4\xf0\x33\x27\x15\xa4\xf4\x00\xde\x80\xc3\x3f\xbe\x3d\x98\x2f\x9a\x4c\x7c\xc5\x0a\xf0\xbb\x8b\x05\x7d\xa6\xd7\xe2\xc0\x71\xfe\x54\x39\x45\xf4\xd6\x4d\xf3\x3f\x25\x95\x6c\x22\xf6\xbb\x4b\x15\xcb\x4c\xae\x92\xb8\x45\x24\xb3\xb4\xa9\x83\x1c\xbc\x97\x70\x21\x3c\xae\xe1\xab\x87\x61\x5e\x99\x4d\x7b\x6c\x34\x9c\xdb\x61\x90\x82\x15\x23\x06\x91\x84\x70\xc8\x3c\xe7\xd7\x32\x1c\x72\xe7\x3f\x3f\x45\xab\xff\xd6\xf9\x46\x03\x02\xb9\x69\x0d\x45\xdf\xb4\x2b\xe7\x0a\xb9\x57\x78\xe5\xdf\xbd\x85\xb4\x66\x07\xa1\x8c\xc1\xeb\xcb\x80\x89\x43\x8f\xe8\x58\xfc\xac\x3b\xf0\xbd\x96\x07\x23\xc5\xda\xe8\x0d\x0c\x21\x02\x94\x7b\x28\xfc\x80\x57\x9d\x78\x53\x21\xe8\x29\x40\x0a\x48\x94\xc6\xf0\xad\x30\xdf\x98\xf4\xf5\xb0\xb7\xda\x37\xbc\x2c\x79\xde\x39\x82\x1f\xde\x1d\xb7\xea\x21\xe0\x87\x51\xbb\x5d\x53\x00\x8b\x23\x36\x07\x23\x1a\x02\xdf\x5d\x27\xce\x7c\x68\xb6\x52\xd1\xb0\x41\x3a\x9c\xf3\x6b\xaa\xfe\x4a\x50\x45\x99\x53\xfa\xe9\x6d\x55\x9d\x5a\x01\x6f\x29\x3a\x7e\xa4\x21\x87\x89\x60\xb3\x2c\x21\xf4\x9e\x52\x06\x09\x77\xcd\x27\x06\x66\x00\x92\xb4\xfe\xda\x7a\x01\x00\x96\x62\xb7\x66\x05\x0f\x36\x88\x16\x65\x6e\x85\x25\x6e\xb1\xe7\x56\x54\x08\x8f\xce\x44\x11\x10\xcd\x8b\x69\x12\x97\xd8\xd8\xd6\x77\x20\x20\xb2\xd5\xc8\x88\x65\x06\x4a\xb0\xa8\xb1\x45\xca\x6f\x5a\xd2\xab\x09\x80\x61\x10\xe4\xe6\xa6\xe5\x75\xe3\xd0\x41\x21\x22\x83\x42\xff\x09\x7c\x6e\x47\xa8\xea\xc7\x73\xb3\xe8\x9a\x30\xce\x40\xf3\x19\x98\x6a\x51\x10\xdd\x9a\xb2\x20\x2a\xff\x0f\x1e\xb0\x79\xe2\xd2\x36\x5c\x2b\x14\x25\xbf\x3b\xda\x52\x43\x72\x3f\xb1\xf7\x89\x8a\x1a\xf6\x4a\xf3\x24\x5c\xfb\x7d\x67\xed\xef\x67\xa7\xea\x97\xf5\xb5\x67\xa7\x0f\x5b\x2b\x56\x97\x12\x38\x34\x95\x73\xb6\x11\xe0\x9f\xfa\xdd\xba\x99\x44\x59\x9b\xd2\x07\xa5\x62\x43\xfc\xa8\x91\x33\xb4\x8b\xc5\x14\x33\xaf\xf2\x35\xaf\x5a\x13\x74\xc5\x16\xc0\x6c\xac\x2c\x80\x2e\x55\xd0\xc8\x51\x44\xa5\x57\x96\x36\x1c\x3c\x8a\x57\xef\x01\x16\x57\xc6\xcd\xe6\x31\x9b\xbc\x8b\x53\x5e\xf4\x8a\x12\x5c\x0c\x8d\x33\x1f\x1c\x02\xd5\x4e\x89\x90\x0d\xdb\x4f\x73\x7e\x11\xb0\xc1\x4c\x8b\x33\x02\x67\x75\xd5\x4c\xfd\x60\x56\x11\x05\x60\x09\xf3\x54\xd7\x56\x54\x7e\xc1\x56\x05\x68\x42\x6d\xb8\x72\xf9\x74\xf2\x29\xfa\x14\xbd\x98\x48\xd5\x5b\xf1\xc1\xaa\xcc\x48\x16\xb0\x75\x63\x07\x55\xf7\xe0\xec\xc9\x7a\xfd\x19\x96\xce\x5c\xb3\xaf\xe2\xa9\x35\x1a\xec\x85\xf8\xaf\xab\x8e\xb8\x8d\x4f\x29\x73\x9f\x06\x3a\x41\xac\xb5\x46\x81\x0b\x3b\xf8\x94\xb2\xdb\x9b\x54\x8f\xce\xf5\xc7\x6c\x3c\xdf\xdb\x9d\xb0\x86\x8e\xb6\x4d\x61\xc9\x27\xf1\xfb\x07\xc7\xbd\x2e\x3b\x1e\xf3\x42\x9a\x31\xc1\xf6\x6f\x07\x97\xb6\xaf\xea\x22\x7d\x2b\xf9\x9b\x79\x95\xfb\x1b\x84\xfc\xe5\x83\x50\x7c\x47\xdf\xb7\x61\x1e\x8e\xe2\x04\xfd\xaa\xa5\xf9\x93\x87\x45\x9c\x5c\xb3\x61\x78\xce\x23\xb4\x67\xfc\x66\xbf\x55\x69\xfd\xd6\xb6\x03\xe6\x40\xec\xab\xdc\x52\xab\x31\x37\x10\x29\xb4\x2e\xae\xf1\xb3\x0c\xbd\x92\x87\xd7\x5b\x56\x04\x1e\x75\xfa\x70\x5f\x3f\xb8\xcf\x1e\xd4\x89\xc3\x06\x2d\x5b\x03\x70\xf9\xbb\x0d\x1e\x36\x5e\xdf\xcb\x0a\x15\x38\xc7\x86\x27\xaa\x03\xb0\x7d\x28\x72\x21\x1d\xe4\x46\x20\xfb\x81\xd6\xc0\x24\x0d\x35\x78\xf2\xcd\xed\x49\xb9\xac\xce\xa5\x88\x3c\xc9\xb9\x9d\x41\x14\x97\x6d\x0d\xc6\x06\x6d\x1c\x67\xe7\x82\xd6\x6f\x50\x29\x68\x19\x7e\x6e\x5b\x83\x71\x40\x5f\x4f\xfa\x59\x95\xd6\x15\xd0\x50\xcd\x05\x0d\x1f\x11\x34\xfc\x6a\x83\xbe\x8d\xe8\xdb\x0c\x13\xd4\xdb\x40\x6d\x8a\xd7\xd0\x5a\x5a\xb4\x72\xfb\x9c\xa8\x5d\x64\xc5\xf7\x07\x0f\xe4\x2d\x82\x0e\x46\x27\xbe\x6e\xfb\x5e\xea\xdb\x08\x68\x3f\x73\xf5\xab\xdd\xb5\xec\xe2\x36\x82\xc9\xf7\x3e\x98\x62\x69\xa4\x53\xba\xdb\x5d\xc9\x48\x71\xdb\x1a\xac\xdd\x15\x58\x41\x23\xff\x10\x23\xdf\x08\x23\x67\x80\x02\x80\x3b\xbc\xd7\xe8\x33\x8b\xbf\xd8\xfd\xe1\xf9\xbb\x86\xa6\x9c\xdc\xc1\x36\x9d\x7e\x5d\xc2\x02\xa0\xd3\x86\x38\xe3\xf0\x4a\x92\x0a\x47\xcc\xa8\xe7\x9b\xf2\x37\x1b\x23\x6d\x30\xbf\x8d\xdc\xd6\x4b\x27\x03\x9c\x64\x7a\x31\x7f\xd8\x5d\x90\xd8\x58\x73\xe4\x8d\x15\x8e\xb0\x4e\xc8\xcd\xad\x24\xd7\xfd\xdc\x3a\x72\x01\xcf\xaf\x83\x2b\x51\xd0\x96\x75\x3a\xac\x77\xf4\x84\xe1\xa7\xfa\x26\xc6\x3a\x67\x53\xe7\x03\xb9\x87\x25\x7f\x6d\x2d\x51\x51\x2d\x73\x84\x9a\xb4\x74\xed\x4e\x31\x9b\x8a\xe2\x8e\x2a\x6d\x58\xc9\x44\x1c\xde\xc8\xee\x14\x9c\xcd\x35\x0c\x4d\xc3\xa8\x99\x5a\x10\x52\xf6\x23\xdb\x58\x17\x2a\xc3\x3a\x5c\x7a\x98\x04\x4d\x1b\xeb\x2d\xd6\x75\x3e\x20\x38\xf0\x28\xcd\xd2\x72\x8c\xb7\x39\x7f\x0b\x53\xb1\x9b\xef\x72\x70\x67\x7d\x1f\xe6\xe2\xc7\xce\x34\xc7\xbf\xae\xc5\x8f\xbf\xcd\x52\xfc\x01\x36\xab\x9d\xd9\x48\xfc\x38\xe2\xd3\x86\x1b\x31\xb2\x71\x30\x28\x45\xd9\x7e\x76\x21\x7e\xbc\xe6\x03\xb8\x91\xea\x74\xd8\xe6\x13\xb6\xcb\xfb\x6c\xe3\x49\x77\xe3\x59\xf7\xd1\x63\x92\x6d\x45\x1c\xe6\xca\x70\x32\x6d\x1a\xb5\x30\x92\x8f\x1a\x61\xc9\xeb\x5b\x68\x51\x53\x60\x2c\xa8\x00\x41\x88\xdf\x66\xb3\xbc\x68\xb6\x2a\x71\x2b\x75\x85\xf7\x71\x3a\x2b\xf9\xdc\x2a\x47\x7c\x90\xa5\x91\xa8\x72\x2a\x35\x9b\x6e\x83\x5a\x4f\x4e\xa0\x16\x22\x12\x48\xb2\xe1\xb7\xf7\xe2\xf7\x66\xeb\x34\x00\xc4\x4e\xe9\xe3\x15\xa9\x04\x25\xd9\x48\x68\x2c\x9f\x67\x45\xc9\x42\x70\xb4\x87\xb0\xad\x53\x9e\xb3\x32\xd3\xce\xb9\xa2\x16\x5c\x44\x4d\x73\x3e\xe5\x69\x54\x88\xba\x8a\x28\x9a\xf7\x1c\x47\x69\xa4\x15\x01\x01\xde\xbd\x6b\xe8\xdb\x4b\x48\x1a\x2c\xec\x35\xdc\xb2\x5d\x75\xf7\xf0\xbd\xab\x7a\x14\x20\x3d\x30\x54\xf2\x0d\x78\x97\x9c\xa5\xdc\xca\x36\x12\xa7\xf0\x42\x11\xde\x3c\x2a\xe7\xdb\xe3\x31\x67\xbb\xd5\xdc\x68\xea\x35\x2d\x02\x4a\xc2\x74\xd4\xfe\x5c\xb0\x9c\x5f\xe6\x71\x59\xf2\x94\x85\x05\xa6\x77\x4a\xa3\x30\xc9\x52\x48\xdc\x6f\xde\x60\xa6\x59\xc9\xb2\xd4\x03\xb6\xd5\x96\x7a\xe7\x9e\x7c\x07\x39\x14\x8a\x62\x0c\x6e\xc5\x7d\xce\x92\x2c\x8c\x38\x64\xcb\x8f\x66\xa0\x05\xf4\xb3\xac\x2c\x4a\x31\x23\xf2\x21\x44\x41\x42\xfd\x70\x1e\xa9\x86\x06\x2f\x74\x6a\x01\x23\x71\x1a\x0a\xe9\x40\x31\x2b\x04\xda\x86\x56\x05\x2f\x67\x53\xd9\x22\x15\xc4\x4f\xd8\xdf\xc2\x8b\xf0\x08\xcc\x5f\xe0\xdd\x00\xee\x69\x10\x69\x26\x2c\x04\x20\x1d\xb9\xc1\x8b\x5f\xb3\xe0\x9c\x4d\x62\xb0\xfb\x7e\x86\x07\x1b\xf9\xc6\xc6\xe3\x67\xeb\x8f\x5a\xae\xa7\xb3\x42\xe8\x06\x5e\xfa\xb2\x57\x64\x8e\x9c\x97\x28\x7a\x94\xb1\x99\x6e\x01\x09\x96\x88\x9e\x2d\x3f\x6c\xfd\x3c\xd9\xdf\x01\x01\x6a\x68\x22\xa6\x1b\x9d\xa3\x8d\x83\x91\xe4\x04\x22\x53\xd5\x37\x90\xa4\x8e\xbb\x2e\x5d\x04\x98\x2b\x39\x60\x61\x14\x69\xd7\x2e\x74\x6e\x8c\xe0\xa9\x2c\xe6\xb5\x8a\x87\xa2\x02\x8b\xc1\x99\x44\xfb\x6a\xe9\x40\x48\x51\x64\x3f\x28\x12\xc0\xf4\x7b\x2e\xec\x41\x5f\xbb\x79\x1c\x65\x44\xf5\x2d\xf2\x50\x8d\xdc\x72\x8a\xcf\x97\x63\xc1\x82\x4d\x12\xd8\x0e\x41\x9e\x88\x7a\x27\xf1\xe9\x29\xdb\x16\xd8\xe9\x3f\x9d\x30\x08\xaa\x7f\x2b\xd0\x93\x63\x11\x04\x7f\xdb\x69\x9e\x4d\xe7\x6f\x2d\x9e\x58\xb7\xa4\x29\xc8\x2c\x2b\xd4\x82\x9e\x8d\x33\xf9\x6e\xa1\xd1\xfa\xef\x0e\xbf\x50\xdd\x6b\x57\xba\x1b\xcf\x82\x15\x85\xe1\x4a\xf7\xf1\x93\x60\x45\x71\xcf\x4a\x77\xe3\xe9\xcd\x69\xb0\xb9\xb1\xc8\x13\x6f\x9a\xb9\xde\xf0\x5c\xff\xba\xe4\xef\x94\x2d\xc2\xfc\xa1\xcb\xcb\xec\xe5\x75\xc9\xd5\xd1\x90\xfc\x65\x5e\x62\xe6\xd9\x84\xd6\xb1\xfe\xc6\xad\x38\xc9\xb2\xf3\xd9\x14\xee\x53\x64\x5e\xca\x8b\x77\xce\xa7\x1d\xc8\x6a\x27\xe9\x65\x82\x31\x63\x20\x25\xa3\xcf\xb0\x17\xb4\xb0\xcb\x48\x27\x83\x2c\xc2\x5c\x89\x2f\x5f\xbd\xee\xed\xbe\x79\xbb\xf7\xb7\x9f\xde\xbd\xdf\x3f\xf8\xf0\x7f\x0f\x8f\x8e\x3f\xfe\xfc\xcb\x7f\xfc\xfa\xf7\xb0\x3f\x88\xf8\x70\x34\x8e\x3f\x9f\x27\x93\x34\x9b\xfe\x23\x2f\xca\xd9\xc5\xe5\xd5\xf5\xef\xeb\x1b\x9b\x8f\x1e\x7f\xff\xe4\x87\xa7\xcf\x56\x3b\x8d\x25\x7f\x0e\x79\x01\xdf\xbe\xf0\xb1\x12\xc8\xe3\x18\x4f\xe2\x53\x59\xf5\x24\x3e\x05\x56\x95\x23\x3d\x81\xe6\x83\x71\x98\xbf\xca\x22\xbe\x53\x36\xe3\x96\xa8\x19\xcb\xf0\x32\x47\x38\xeb\x2c\xe2\x83\x0c\xc2\x4e\x7e\x3c\x7c\xb7\x56\x84\x43\x0e\xf6\x89\x27\x8f\x19\x6a\x8a\x05\x44\xd4\xdb\x97\x41\x32\x84\x80\x85\x37\x75\x47\x9c\x77\x75\xe6\x4e\xbf\x8b\xf9\x4b\x00\xf3\x7f\x3e\x1e\xbe\x3b\x13\xfb\x63\x8c\xcf\xaf\x8a\x25\x83\x60\x63\xad\x41\xf1\x5b\x07\xfc\x9e\x6c\xd2\x1a\x67\xbe\x1a\x8f\x96\xac\xdc\x66\xef\x78\x5a\xb0\x66\xff\xc9\x63\xa3\xeb\x20\xfd\xfa\x4f\x1e\x4b\xf2\x11\x1b\x12\xfb\x8e\x3d\x66\xcf\x8d\x21\xde\x7d\x4e\xd6\xd8\x4b\x2f\xc2\x24\x8e\xe4\xf8\xdb\x4c\xf2\xaa\x89\x91\x05\x19\x00\xa6\x09\x78\x91\x3d\x06\x63\xa1\xf2\x00\x39\xce\xe3\x09\xcb\x86\x43\xc6\xaf\xca\x3c\x04\xe6\x2e\x58\x38\x2c\x79\xce\xc0\xec\x35\xce\x92\x88\xe7\xea\x7b\xce\xd9\x30\x9b\xa9\x04\x0b\x16\x45\x49\x2e\xd4\x3e\x0f\xcb\x51\x38\x99\xc4\x65\x07\x27\x66\xed\x73\xd1\x89\x8b\x62\xc6\x8b\xce\xe3\x4d\xe5\x4b\x28\x30\x7e\xa7\x07\xad\xcd\x73\xdb\x0d\x15\x7b\xd5\xd4\x90\xf1\x9c\x49\x93\x84\xa7\x4a\x18\x03\x9a\x6f\x01\xcd\x02\x0b\xad\x86\xa2\xa6\x20\xda\x0b\xb6\x0e\x3f\xbb\xec\x31\x5b\x23\xc0\xbf\x63\x8f\x5b\xc4\xea\x75\xa2\x0a\x02\x17\xf0\x29\xc9\xd7\xff\xe4\xb1\x50\x27\x1e\x77\x1e\xb1\x55\x70\xab\xcc\x20\x19\x90\x98\xf6\x70\x00\x6f\x80\x94\x7f\xa5\xca\xe2\x1f\x85\x65\x68\x38\x80\xc8\x93\x0a\x13\x14\x98\x6c\x4f\x70\x08\x94\x55\xc9\x25\x2a\x9d\xac\x9f\xd6\x0e\x1f\xca\x37\x4e\xcd\x98\x9a\x66\xb4\xab\x6e\xfd\x16\x7b\xc8\x1e\xb1\x0e\x7b\xdc\x62\x6b\x6e\x99\x1d\xff\xcd\x41\x3a\x60\xb5\x94\xb2\x36\xa0\xaf\xd2\x39\x15\xb0\x36\xc5\xca\xc9\xf4\x5b\xd0\x4e\xbf\x32\x57\x69\x44\x77\xf2\xbc\x49\x48\x70\x1b\x05\x5a\x0a\xc2\x60\x96\x0b\xd4\x85\x8c\x5c\xd2\x11\xab\x85\x66\x8c\x79\x01\xc9\x1a\x2b\x02\xcc\x26\x38\xe2\xa5\xe2\xa9\x31\x67\x49\x08\x39\x9b\x27\xd3\x84\x97\x9c\x3d\x06\x1e\x2b\x2c\x91\xe1\x0e\xe2\xb9\x64\xf4\x17\x66\xdc\x6b\xec\xb1\xe4\x7d\xf5\x69\xa9\x72\x63\x4f\xc4\x75\xcc\x56\xe1\xe5\x96\x94\x36\x93\x29\xdb\x56\x26\x0e\x23\xe7\xc4\xa2\x75\x24\xf5\x8f\x3f\xb2\x8d\xa7\x2d\xf6\xe5\xf6\xca\x90\xf1\x13\x1b\x6c\x2e\xda\x60\x13\x1b\x3c\x31\xf5\xe7\x56\x7f\xd4\x3a\x55\x1e\x8c\x27\x72\x12\x56\x57\x85\x2c\x6e\x8a\x01\x3d\x7f\xce\x36\x9e\xb4\xd8\x03\xb6\x7e\xb5\xbb\x3b\xbf\xde\xd3\xf9\xd5\x44\x2d\x5d\x6e\x1e\x26\xbb\x9c\xb5\xbd\xcd\x36\xef\x45\xd1\x85\xe9\x23\x08\xfa\xfc\x39\x7b\xdc\xfa\xb3\x78\x6e\xdc\x6f\xe6\xd7\xef\x38\xf3\x8f\xef\x32\xf1\xcf\x9f\xb3\xcd\x9a\x81\xdd\x7b\x9e\xb4\x41\x2b\xb7\x65\x4d\x2e\x76\xca\xf2\x38\x43\x6d\x80\x35\xd3\xd9\xc4\x92\x68\x52\x89\x49\x67\x13\x60\xa3\xa7\x00\xf6\xd1\xae\xba\xca\x71\x8a\x37\xe7\x16\x3f\xa9\x2f\x95\x05\x16\x6e\x3c\x15\x1a\xd2\xab\xf1\x2c\x3d\x67\xcd\x99\xd0\xf1\x02\x7c\x9f\x1f\x30\x9e\x46\x3e\xa9\x48\xbc\x74\xdc\x25\x0f\x0d\x71\xd9\xf3\x34\x92\xcb\xfe\x91\x77\xf2\xb1\x2f\xa1\xb7\x89\x99\xd6\x0b\x67\x7d\x7d\x7d\xdd\xdc\x2f\xe9\x5a\x62\x8e\xa1\xe6\x53\x53\x91\x54\x33\xb5\x36\x4f\x65\x79\x8b\x38\x18\xa2\x3f\x8c\x33\x0b\x62\x92\x5b\x2d\xe7\x50\x44\xef\xa1\x1a\x2d\x8b\x50\xb6\xbe\x8d\x5d\xd6\x6c\x1a\x6c\x9b\x41\xb1\xd2\xbb\x64\x24\x55\xa1\x0e\xbd\x04\xad\x07\x76\x05\xf6\x9d\xd8\xa9\x40\x7a\xab\x74\xcb\x1b\xb0\x8f\xb3\x84\x0f\xcb\x80\x4d\xc3\x88\x6d\xa2\x9a\xa4\x36\x97\x30\x97\x51\x54\x74\x86\xf4\x2b\x98\x39\x7d\x92\xd8\x78\xf2\xe8\x29\x00\x55\x8a\x1a\x55\xd3\x1e\xc9\xed\x62\x84\x61\x14\x67\xa3\xb1\x49\xbd\x23\x63\xb0\x63\xce\x59\xe8\x33\x60\x97\xbc\x91\x24\x18\xad\x09\xd3\x62\xe5\x61\x9c\x80\x95\xa2\x9c\x0d\x87\x2c\x09\x4b\x9e\xfb\xdc\xb4\x78\xba\x29\x47\xb8\x46\x06\xad\x77\x83\x4d\xc9\x17\x36\xf2\x8a\x49\x60\x8c\x32\xa3\x85\x61\xcd\xa6\x9c\x69\xc9\xa0\x71\xc0\x60\x1d\xbb\x20\x9e\x63\xe7\x2f\xf0\x47\xd7\x5b\x09\x20\xb5\xa8\xc2\x2a\x08\x0d\x4e\xc9\xa9\xbc\xe3\xfb\x9d\xe7\x59\x11\x40\x8e\x1f\x78\x22\x52\xcc\x72\x2e\x76\xcf\x34\x2b\xc5\x68\xc5\x76\x8a\x09\xc9\xb4\x7e\x2b\x65\x1f\x9d\xe2\x8a\xd8\x43\xe4\x4f\x90\x2e\x1b\xa7\xee\x68\xe5\x08\xe5\x72\x95\x12\x68\xd3\xdc\xe6\xca\x02\x90\x4d\x28\xeb\xec\x75\xce\x20\x13\x25\x8e\xce\x7e\xc1\xec\x60\x65\x6f\x1a\x6a\xf1\x20\x5a\x9b\x6a\x91\xad\xde\x07\xdb\x8d\x75\x3f\xba\xb0\x87\x54\xd0\x75\x06\xb4\xe9\x1b\x10\x19\x0f\x91\xaf\x88\x07\x5d\xa5\x32\xe6\xda\xe6\x22\x07\x72\x55\xf9\xd1\x3d\x03\xb4\xa1\x7d\xc0\x39\xd9\x6f\x2d\x75\x1e\x32\x5e\x24\x71\x5a\xb2\x41\x38\xe1\xc9\x20\x2c\x78\x97\xad\x64\xc3\xe1\x0a\x7b\xd8\xc1\xa3\x32\x86\xd2\xa4\xf6\x28\xfc\x02\xd6\x28\x51\xe1\xef\x45\x99\xf3\x70\x42\x6b\x4c\xc3\xf3\xac\x93\xc4\xfd\xce\xef\xf0\x1f\x56\x10\x0d\x44\x7d\xf1\xed\x2c\xe2\xc3\x04\xef\x9a\x6a\x1a\xc9\x0a\xed\xcf\x85\xd5\x2e\x4e\x6f\x69\x27\x2b\x90\x76\x60\x93\x0d\x53\xdb\xa6\x66\x37\xd2\x55\xf0\xb2\xc2\x89\xdf\xa9\x4b\x91\x07\x25\x9d\xd1\x23\x6f\xdb\x94\xc2\x07\x95\x32\x41\x80\x65\x93\x2c\xe2\x85\xb6\x7d\xec\x1f\xec\xf7\xd0\xab\x43\x7d\x79\xdd\xdb\x7d\xb7\x73\xdc\xc3\x78\x4e\xea\xe3\xde\xbe\xfa\xb8\x69\x3e\xbe\xf9\xfb\xde\x07\xb6\xcd\x1e\x91\x2f\x1f\xf7\xf1\xdb\xe3\x0a\xbc\xc3\x9d\x5f\xd8\x36\xfb\xbe\x02\x12\xbf\x3f\x31\xdf\x15\x88\x1f\xe4\x4c\x8a\x5e\xce\xde\xf6\x76\x5e\xf7\x0e\xcf\xf6\x5e\x6f\x08\x64\xaf\x36\x86\x5b\x9e\xb2\x4d\x28\x7b\xda\xdf\x32\xb1\x2c\x26\x33\x98\x98\xfd\x2c\xe2\x8d\x02\xc7\xff\x6a\x75\x95\x25\xe1\x35\xcf\xd5\x93\x52\x95\xe8\xfb\x6f\x47\xf2\x7b\x9c\x62\x4a\xa6\xf6\xe7\x02\xcc\xa0\x9a\x71\xff\x9e\xc4\xfd\xa6\xa0\x9f\xf1\x3f\x57\x81\x95\xb3\x88\xa3\xa5\xc7\x5c\x9a\xe1\xc7\x1f\x99\x4b\x58\x55\xf2\x9c\x59\x43\x9e\x1b\x62\xfb\x65\x18\xe9\x6b\x00\x12\x79\x0b\xd2\xf0\x47\x18\xe3\x2f\xcc\xaf\x49\x48\x6c\x28\xe1\x70\x42\x5a\xd7\x7f\x0f\x93\x19\x3c\xf5\x35\x5f\xe2\x34\x2e\xcf\xa2\x2c\xe5\x34\x4c\x01\x94\x24\xfc\x82\x27\x56\xdd\x09\x9f\xbc\xab\x7e\x44\x9b\x95\xf8\xa1\xbf\x15\x65\x1e\x96\x7c\x74\x6d\x55\x44\x43\xe1\x4b\xb4\x22\x93\xcf\x79\x5c\xf2\xb3\x38\x3d\x9b\xe6\xd9\x28\xe7\x45\x51\x41\x64\xca\x21\x8d\xc9\xd9\x20\xc9\x8a\x2a\x9a\xa3\xdf\xe3\xe9\x59\x1c\xc1\xe9\xaf\x38\xcb\x79\x18\x21\xf8\x9b\xa5\x25\x31\x5b\x34\xbc\xa6\x6a\x4f\x23\x7b\xaa\x59\xf4\xa2\x62\x66\xc4\x83\x86\x79\x74\x85\xa2\xd4\x9e\x93\x1a\xa4\x97\x54\xda\x83\xa6\x4d\xfd\x80\x35\xb0\x66\x9f\x0f\x33\xc8\x29\x18\xcb\x69\xa6\xd5\x91\x9f\xb6\x1d\xb6\x31\xe1\xdb\xcd\x7c\x90\xc7\xc1\x84\xeb\xfc\x15\x60\x15\xd7\x96\x9a\xd5\xab\xa8\x41\x25\x65\x5b\xfe\xec\xa5\x51\x53\x4d\xfd\xa4\xe5\x84\xfd\xf0\x03\x56\x12\xa5\x1e\x2f\x14\x04\xb5\xe5\x44\x7e\xd4\xd6\xb1\x16\x16\x15\xd5\x6d\xf9\xd3\x83\xf8\x92\xc3\xda\x54\x52\x6e\xcd\x5b\x74\x37\x5b\x15\x9e\xc3\x48\xd4\x94\xe7\x60\x09\x06\x2c\x4e\xc1\xe1\x2e\x4e\xcf\xb2\xe1\x10\x7e\x26\x3c\x0d\x84\xd6\x0c\xff\xe1\x57\xf1\x4b\xe2\x58\x6c\xa0\xf3\x33\x80\x2b\x63\x65\xdf\x07\x62\x3d\xb2\x47\xd7\xe9\xe0\x9b\x21\x2c\x5f\x44\x7e\x35\x8c\xcf\xaa\xf4\x0d\x8b\xeb\x74\x70\xbf\x2e\x00\x6b\x3b\x4d\xba\x13\x34\x27\x60\x4f\x5b\x73\x17\x31\xe2\x73\xfb\x22\xa6\xaf\xf7\x05\x5f\x05\xac\x11\x26\x42\x78\x5d\xb3\x61\x9c\x86\x49\xfc\xbb\x7a\x97\x64\xe1\x23\xe9\xe7\x97\x56\xba\x7b\x05\x29\x4e\x99\x2a\xbb\x05\x96\x25\xad\xb4\x2c\x82\x70\xa8\x50\x20\xf3\x18\xd4\x0a\x6c\x94\x85\x35\x3d\xc8\x4d\x87\x26\x8c\x0b\x58\x03\x4e\x55\x53\x19\xe2\x01\xab\x80\xff\xf8\xc2\x5d\x09\xc9\x82\xed\x28\x31\xff\x7e\xb6\x7f\x70\xb6\xfb\xee\xe3\xd1\x5b\xf6\xe0\x01\xf3\x95\x43\x54\xd3\x9d\x77\xf3\x2b\x1d\xfd\xba\xff\x6a\x7e\x8d\xdd\x8f\xef\x6e\x81\xb1\xbb\xb7\xbf\x57\x5f\xfa\xf2\xdd\xc1\xab\x9f\x6e\xbd\x33\x70\x08\x43\x6c\x43\xc0\xd9\xca\x0d\x50\x7b\x6b\xe3\x47\x99\x4a\xb6\x1d\x26\x49\x36\x68\xae\x2b\x37\x6b\x60\x7e\xb5\xf9\x32\xb9\x28\xd4\xdf\x46\xec\x09\x49\xd8\x0e\x2f\xc2\x38\x39\x8b\xc1\x0b\x09\xda\x6d\x59\xc5\xaa\x23\xf8\x69\x17\xa5\xfc\xaa\xd4\x0d\xb3\xe1\x70\xcb\x03\x37\x83\xc6\x72\xdd\xd9\x15\xb4\x49\x24\xf3\x02\x36\x2d\x29\x68\xa5\xd7\xc0\x4f\xcd\x1d\xcb\x20\x0b\x48\xc0\x29\xf1\x27\xbb\xe0\x79\x11\x67\xa9\xd9\xd8\xd5\xc5\x64\x53\xa5\x7b\xd4\x7b\xd6\x19\xf8\xc3\xe2\x94\x54\x5d\xdd\xb1\x0a\xdc\xc6\x08\xa1\xd9\xf4\x84\x9c\xa0\xaf\x79\x43\xa7\x77\x78\x55\xc8\x13\x31\x01\x02\x92\xa8\xaa\x03\x26\xf2\xab\xf2\x38\x1e\x9c\x37\x5d\x55\x85\x41\x0b\x0b\x63\xf3\x11\x30\x91\xb9\x64\xac\xf7\x97\x08\xde\x27\x3e\x35\xf2\x1e\xb5\x08\x4e\x59\x64\xb6\x3c\x73\xb8\x65\x55\x83\x39\xaf\x72\xd0\xfc\xe5\x6c\xf4\x22\x75\xc5\xa3\xda\x05\xa6\xf7\x53\x3f\xf6\x2a\x0c\xa6\x1f\x77\x60\x17\xe5\xac\x71\x36\xe6\x61\xc4\x73\xd0\x12\xf5\x7e\xad\x33\x3a\x83\xe9\x46\x0f\x35\x2e\xc0\x6a\xc4\xc2\x92\xad\x9b\x80\x9e\x13\x1e\xa6\x32\x39\x76\x5c\xb2\x3c\x4c\x31\xe6\x1d\x84\xac\x1f\xb2\x3c\xcb\x26\x6d\x26\x61\xe5\x9c\x5d\x86\x05\x81\x08\xe0\xb2\x0b\x9e\x3b\xe0\xb0\xb9\x8c\x4e\x97\xa8\x6b\x29\x5c\x5b\x02\x82\x38\xc4\xcd\x26\x18\x2e\x42\x45\xab\xd5\x7b\x88\xe2\x08\x78\xdc\xe8\x68\x6b\xdd\x6a\x89\xd0\xf2\x3c\x9f\x8d\x7a\xa7\x82\xc2\x92\x83\x83\x4f\xd3\x33\xda\x52\x40\xd6\x9e\x7e\xb6\xd0\xcf\x79\x78\xbe\x55\xed\x07\x14\xb1\x2e\x79\x00\xe4\x11\x35\xcf\xe9\x6b\x26\x36\x77\x02\x2b\xe2\xc6\xbc\x31\x52\xaf\x61\x28\xbd\xaa\x87\x04\x2b\x6a\xa7\x40\x74\xbd\x4b\x9c\xcf\x30\xa6\x64\x6d\xf7\x8e\xd4\x55\xff\xc8\xd8\x1d\x64\xaa\x83\x86\x49\x3e\xa9\xed\xe3\x14\x3a\x71\x4e\xbe\x6e\x7f\xf5\xe7\x9f\x8d\x2d\xab\x62\x6d\x37\xab\xab\x5b\x4b\x56\xcd\x9a\x99\xb1\x2c\x70\xe6\x9f\x8c\xa9\x0e\x17\x63\x50\x37\xec\x27\x68\xf2\xc4\x05\x20\xf5\x10\xf1\x7f\xdb\x69\x5a\xa1\x95\x79\xdc\xc4\xfc\xef\xad\xfc\x4a\xb9\x3c\x04\x6c\x2d\x3c\x11\x9d\x8e\x90\x39\x89\xb4\xda\xda\x3c\xb0\xf1\x97\xe7\x81\xcd\xc5\x79\x60\x73\xeb\x56\xe2\xe1\x09\x6b\xeb\x36\xba\xe3\x34\x63\x14\xfe\x34\x53\x49\x8c\x54\x20\xcf\x81\xd0\x77\xcb\x4b\xce\x53\xa6\x8e\x74\x61\x1a\x31\x73\x3a\x73\x61\x35\xd1\x81\x41\x68\xc7\xb1\xd0\x74\x31\x8a\x6e\xfb\x3e\x53\x6d\x11\xd7\x21\x7d\x25\xd6\xb5\x47\xcd\x8a\xa5\x9a\x65\x32\xd2\x0a\x52\xb2\x49\x38\x8a\x07\xea\x23\x3a\x57\x08\xa2\x36\x5a\x8e\x94\xf1\xf0\x92\x25\xf4\x24\xc6\x3e\x69\x4c\xe4\xa1\xaf\xc9\x1c\x79\xec\x1c\x60\xfd\xf2\x58\xd1\x05\xf7\xb7\x28\x2c\x43\x58\x91\x78\x0d\x20\x4d\xf3\xe6\x04\x2b\x2b\xb7\xb6\x34\x7f\x42\x7f\xb6\x5a\xdd\xeb\xbd\x3e\x7b\xbd\xf7\xea\x18\xd2\x77\xd8\x27\x60\xca\x94\x10\xcf\x2a\x8c\x30\x92\xda\x42\x23\x38\xe2\xe5\x6b\x0d\xaa\x32\x1c\xd2\x8b\x99\xdb\x39\x78\x1e\xfc\x64\x2f\x91\x4e\x87\xed\xa4\x11\x04\x5c\x87\x7c\x19\xe0\x63\x15\x8e\xc2\x38\x5d\x72\xd8\xed\xae\x34\xae\x3e\x0f\x9d\x83\xd6\xeb\x9d\xe3\x9d\xb3\xde\xe1\xe1\xc1\x61\x05\xbd\x97\x59\x39\x66\x5e\x5a\xb4\x64\x76\x78\x44\x42\xfb\x3b\x52\x68\x6d\x1b\x16\x84\x8c\x89\x4b\x13\x78\x77\x98\xe5\x6c\x07\x15\x43\x70\x5a\xe0\x49\xc2\x42\xd6\x0f\x23\x32\xfd\xe8\xdf\xdb\x0f\x23\x1b\x16\x88\xa7\xb6\x9f\x4a\x1e\xbe\xa8\x7b\xa5\xaa\xdd\x2b\xfd\x3b\xbe\x66\xa7\x3a\xfb\x8f\x2a\xaf\xd2\xf4\xe8\xf8\xb0\xb7\xf3\xfe\xac\xb7\xff\x5a\x57\xa2\x2a\xc1\xc9\x3a\xe6\x52\x5e\xbf\x5a\x5f\x77\x38\xf4\xa5\x5c\xd3\x93\x10\x4c\xbd\x52\xe5\xea\xe3\xa9\x89\x7d\xe0\xf9\x38\x9c\x16\xe8\x6b\x0c\xa1\x03\x31\x43\xcc\x20\x9b\x4c\x85\xda\xca\x23\x0a\x6b\xc2\x41\x4c\xc8\xd0\xc7\x90\x30\x3a\xcc\x07\x63\x48\x74\x9e\xe5\xe8\x57\xae\xaf\xfb\x46\x61\xde\x0f\x47\xbc\x4d\x01\x1c\xab\xc2\xdf\x79\x9e\x11\x5f\xae\xec\x3c\xbc\x16\xfc\x26\x64\x4b\xc0\x8a\x58\x48\x5a\x13\xa8\x29\xe7\xff\x98\xf1\xb4\x4c\xae\x29\xa8\x59\xc1\x23\x98\xf2\x69\x18\x89\x73\x7b\x7b\xc9\x5e\x84\x39\x2f\x78\xd9\x24\x8c\xfb\xe7\x18\xff\xa6\xaa\xf4\x39\x52\xb7\x22\x71\x3f\xa6\xe7\x69\x76\x99\xa2\x01\xbc\xc1\x56\xcd\xdc\x93\x6c\xa9\xae\xa2\x6f\x8e\x61\x1e\x5d\x5f\x2c\xf0\xc1\x80\x4f\x21\x07\x95\x0c\x97\x54\x94\x10\xbd\x29\x02\x57\x7d\x26\xb3\xdb\xa8\x40\x6d\x70\x09\x80\x97\x3f\x15\xc5\x1a\xf3\xb0\x55\xc5\xb2\x90\x2b\x1e\x69\xfd\xf7\xb3\x97\x1f\x77\x71\x21\xce\xd3\x6d\xc5\x19\x60\x59\x05\x53\xa2\x07\x56\x8f\xbd\x80\x72\x2a\x9e\x30\x65\x5c\xf0\x59\x6a\x92\x40\x8a\x41\x0d\xc1\x71\x9e\xbe\x0e\x77\x93\x98\xd6\x4c\x91\x33\x02\xb3\x8a\xba\x66\xd3\x90\xae\xf0\x82\x8e\xb3\x82\x17\x01\xde\xd7\x86\xa5\x0e\x46\x59\x0f\x4f\x0b\x84\x0a\x45\xa8\xc9\xb4\xaa\x3d\x59\x83\x55\x79\x2f\x4d\x93\x46\x7d\x4c\x02\xab\xe5\x4b\x4b\xb4\x35\x2a\xbc\x5a\x25\x92\xc3\xb2\x9d\x0e\x3c\x1d\x40\xb7\x74\xd1\x53\x7b\xc9\xd3\x8d\x60\x51\x64\x36\xd3\xc5\xbc\x24\xb2\x32\x4d\x6c\xdd\x19\xbc\xe6\x5a\x62\xb9\xde\x0c\xe1\x18\x18\xfe\xd9\xa7\xf5\x4e\x87\x0d\xc4\x99\x55\x2c\x2c\xb4\xed\xb6\xd8\xa0\xaf\xda\x8a\xa2\x7e\x38\x38\x6f\x7a\x0e\xf3\xce\x7d\x85\x65\x7a\xb4\x2e\x5c\xe0\x4b\x73\x8e\x58\xe0\x15\x89\x50\xc9\xec\x6c\x06\xa8\x73\x6c\xd0\x54\xb0\x56\xb1\xf2\xea\x87\x8f\x59\x2a\x13\x33\xa8\x44\xcf\x4a\x3c\xc8\xc1\xa7\x19\x1b\x67\x28\x4f\x72\x5e\x0c\x66\xc0\x25\xad\xad\xdb\xaf\xb4\xbe\xc2\xc0\x85\xe6\x6c\x0d\xdb\x5c\xad\x05\x0c\xae\xed\x02\xa6\xee\xea\x20\xe8\x0b\x5c\xc6\x05\xcc\x55\xd8\xa4\x55\xba\x12\x19\x5e\x88\xa5\xc7\xec\xcb\x97\x4a\x1a\x21\x28\xf9\x3e\x60\x0d\x81\xc1\xa2\xbd\x9e\x98\x6e\x4f\x5b\x0d\xcb\x7c\x4e\xae\x04\x9f\x6f\xb3\xa7\x42\x3a\x92\x4f\x3f\x6e\xb3\x0d\xec\x0c\x95\x74\x53\x64\x19\xd5\xf1\x9e\xf2\xf9\x36\x5b\xdb\x10\x00\xf0\xcf\x1f\xb7\xd9\x33\xd2\x54\xed\xdc\x82\x5a\x50\xc1\xc6\x43\x5f\x6c\x3e\xdf\x66\x00\x44\x7f\x70\xe0\x4c\xf8\xc4\xd3\xdc\x5c\x77\x3a\xf2\xfc\xdd\x71\xef\xb0\xf7\x5a\x50\xb2\xa6\xca\xdb\x8f\xbb\xbb\xef\x77\xf6\xcf\x0e\xf6\xdf\xfd\x3a\xa7\xda\xe1\xbb\xde\x9c\xd2\xdd\xbd\xff\x98\xdb\xc9\xeb\xde\xee\xce\xc7\x77\xc7\x42\xd0\xef\x1c\xf7\xde\xfc\x4a\xc6\xa3\x5a\x50\xa3\xfb\x19\x4c\xae\x9c\x50\x3a\xc7\xb7\xb0\x94\x36\xc6\x9e\x15\xb6\x12\xeb\x15\x7b\xf0\x50\xc9\x67\xba\xab\x68\x0c\xd2\xee\xf4\x01\x1b\xec\x67\x25\x93\xef\x4b\xf0\x86\xc4\x03\x1b\xb4\x1c\x2f\x68\x81\x1d\xd1\x81\x16\x47\xf7\xac\xb2\xe6\xee\x4e\x20\x83\x83\xba\x5a\x87\x9f\xfe\x0b\x72\xf3\x87\xef\xfa\x5d\xfd\xea\xbb\x71\x57\xbf\x9a\x19\x55\xd6\xf1\xea\x1d\x89\xa9\xe3\xaa\xf5\x07\x3f\xdd\x72\xad\x3c\xff\xd6\xf8\x8d\xe3\xd1\x60\x0f\x6f\x75\x9b\x6d\x3c\xb1\x6e\x33\x16\xb8\xbd\xf5\x00\x79\xb4\xb9\x00\x10\xe2\x7e\xb2\xc0\x55\x72\x5d\x6f\x20\x5e\x1e\xba\x9f\xab\x17\x27\xd2\x21\x5d\x7a\x1f\xc9\x2b\x85\xbf\x8a\xed\x76\x2f\x8d\xcb\xcd\x8a\x4e\x2f\x39\xd9\x12\x18\x02\xee\xeb\xc0\x1d\x6e\x60\x33\x62\x60\xf3\xde\xad\x36\xe0\xaf\x60\x0e\xa9\xb7\x29\xdf\x72\x92\xf1\x0f\xdd\x0c\xcd\x87\xfc\x9f\x3e\xcb\x2c\x39\x96\x8a\xe5\x1a\x4b\x85\xa5\x59\x0a\x4c\xa9\x66\x59\xe3\xe7\x63\xfe\x58\x48\x65\xf3\xb8\xfb\xd4\xab\xa4\x96\x44\x9c\xe7\x31\x53\xaf\xd1\xfb\x7c\x62\x6a\x64\xcc\x9f\x5d\x1d\x77\x5e\x06\x77\x36\x38\xd5\xf3\x84\x2e\xb9\xe7\x64\xef\x86\x71\x82\x19\x4d\x21\x97\x8d\x73\x6e\xf1\xab\xbd\x73\xb7\xb7\x7f\x12\x8d\x6b\xc4\xd3\xad\xa4\x3f\x84\xcd\x57\x93\xfc\x4f\x88\x8c\xb9\x92\xe1\xcd\x5d\x44\xc3\x02\x38\x7d\xb3\x59\xc7\xb9\x34\x9e\xa8\x6a\xce\x35\x08\x71\xcc\xdc\x06\xbf\xc3\xad\xdb\x5f\xfe\xaa\x6f\x2b\x68\xc9\x5a\x69\xb5\xa5\x83\x2d\x3c\xcc\xb5\x1f\xe0\xa2\xee\xba\xd2\xdd\xf8\x21\x50\xd5\xbb\x9b\xdf\x07\x2b\x35\x2e\xa8\x2b\xdd\x47\x4f\xdc\x42\xe3\x0c\xbb\xd2\x7d\xf4\xd4\x2d\x35\x2e\xaf\x2b\xdd\xc7\xeb\x6e\xa9\xf4\xbe\x5d\xe9\x3e\x7e\x7c\x73\x1a\x6c\x3e\xbe\x9f\x03\x71\xc5\x73\x18\x9c\x42\xab\xf1\x3f\xfa\x32\xe6\x87\xa4\x07\xfa\x8e\x1e\xe7\x61\x5a\x0c\xb3\xdc\xf2\x11\x56\x53\xd1\xd6\xa5\x58\xb9\x1f\xc3\x69\xcd\x0e\x2a\x22\x3f\x2a\x97\x5e\x48\xea\x41\x2a\x40\x02\x78\x59\x56\xef\xaf\xdc\xce\xce\xb1\xca\xf9\xfb\xf0\x4a\xbf\x3e\xa8\xa2\x6e\x8a\x65\xf5\xc3\x30\x1d\xa1\x7b\xe8\x7b\x7d\xa0\x6d\xbc\xc2\x24\x16\x32\x7f\x3d\xf8\x12\x29\x6f\x10\xb6\x57\xb2\x4b\x48\x86\xd9\xe7\x2c\x09\xf3\x11\xcf\x61\xd7\x6a\x94\xe3\x30\x65\xeb\x57\x10\x94\x4f\x77\x42\x42\x92\x3c\xc1\x18\x62\x60\x99\x6c\x6c\x19\x47\x62\x95\xfb\x41\x79\xf1\x94\x63\x5e\x70\x08\xbc\x7b\x9e\xcc\xa2\x11\x7c\x98\xb0\x38\x25\x49\x99\x95\x89\x14\x93\x61\xa7\x45\xc9\xd2\x70\x02\xef\x20\x06\x63\x3e\xe1\x08\x77\x56\xf0\xa2\xbd\x24\x89\xdb\xfe\xfb\xd9\xfb\xbd\xfd\xb3\x5f\xf6\xf6\x5f\x1f\xfc\xf2\x72\xef\xf8\x88\x6d\xb3\xa7\x5b\xb4\x74\xe7\x3f\xec\xd2\x8d\xef\x69\xb1\x3a\xfd\x54\xaa\x40\xb6\x68\x7e\xc9\x73\x06\xe3\x7f\xf2\x58\x9a\x5e\xa7\x3c\x67\x03\x78\xc3\x13\x17\xac\x28\x67\xd3\x18\x33\x86\x96\x7c\x30\x4e\xe3\x01\x84\x41\x8b\x4b\x36\x00\x4a\x42\x5c\x08\x4c\x28\x53\x08\x68\xe2\xc7\x53\x7c\xee\xc0\x2f\xb8\x81\x0a\x39\xa3\x0b\x16\xf6\x8b\x59\x1e\x25\xd7\x2c\xc9\x2e\xdb\x8c\x7d\x2c\x66\x00\x2e\x64\xef\x5f\xb2\x2c\x67\x93\x0c\x2f\xd9\xfa\xbc\x28\x5d\x02\xbc\x7a\xfb\x71\xff\x27\xb6\xcd\x9e\x3c\x76\x07\xaf\x4a\xf6\xd2\xa1\xd8\xde\xaf\x7d\xa3\x57\x75\x36\x9e\xb0\x87\x6c\x63\x7d\xf3\xf1\xd6\x92\x03\xff\x7d\xef\xfd\xbb\xde\xcf\xbd\x77\x78\x7b\x6c\xf7\x40\xca\x9e\xf9\xa0\x93\xf2\xa7\x15\xc0\xaa\x64\xad\x02\x76\x2e\x4c\x55\xe8\x19\xcb\xc1\x7b\xc8\x7f\xbd\x77\xb0\x8f\xb3\x28\x24\x44\xc1\x99\x32\x47\x01\x0f\x69\xc1\x85\xab\xd7\x13\x13\x42\x02\x6e\x6d\x19\xcf\xfa\xfe\x39\xbe\xb5\xec\x9f\xb3\x1f\xb1\x8d\x7e\x2d\xdf\x3f\x57\x09\x94\x15\x3c\x81\x1b\x04\x84\xe8\x9f\xeb\x64\x79\x7d\x1a\x21\xf3\xef\x26\x56\xa5\xec\x17\xbd\xdf\x74\x4c\x08\x1d\xdf\xa5\x0f\x21\x7b\x95\x41\xd3\x24\x4d\xe9\x32\xf4\xf0\x94\x21\x77\x25\xc6\x27\xa2\xfa\x69\x00\x66\x37\xac\x05\x3a\x1e\xb4\x56\xf1\xd8\xd1\xdd\xbf\x14\x32\x2c\x91\xf9\xdd\x43\x75\x1d\xa4\x22\x5d\x67\x91\x58\x66\x2a\xee\x80\x4a\x1d\x06\x96\x6e\x42\xf5\x83\x9f\x02\xf8\x4a\xcc\xc4\xa4\xd4\x7c\xc5\x5a\xc6\xf8\x4b\x2a\xe9\x8f\x58\xa7\x77\x78\xb8\x7f\x40\xcb\xe1\x83\xdd\x0b\x58\xd4\x3d\xfd\x88\xef\x58\xd3\x5c\x81\xd1\x7a\xe6\x2b\xd6\x7a\xdf\xf3\x00\xd3\x1f\xb1\x8e\x31\xe1\x93\x3a\xfa\x23\xd6\xf9\xb9\x77\x28\xf8\xad\x5a\xcf\x2a\x80\xad\x1b\x08\xea\xe1\x37\x20\x32\xe5\xb6\x81\xe4\xb6\x81\xe0\xb6\x81\xc5\x6d\x03\x8b\xdb\x06\xc8\x6d\x50\xe5\x64\x80\xdc\x06\xd0\x4e\xe4\xff\x82\x1f\x4e\x65\x0d\xf0\x7c\xbf\x85\xdf\x1a\xd0\xae\x81\x2c\x57\xcb\x6e\x12\xc8\x30\xe7\xfc\x77\x2e\xd1\xaf\x72\xdd\x0d\x0d\xff\xf2\x5a\xbf\x9f\x91\xbf\x91\xd7\x1e\xfa\x89\x8c\xfc\x8d\x3c\x1a\xf9\x3d\x9e\xb2\x6d\x26\x7e\x90\x8f\xb3\x54\x7e\x86\x5f\xb6\xdc\x3e\x0e\xc3\x4b\xd3\xcd\x61\x78\x59\xe9\x09\x2b\x98\x3f\xc8\x03\x13\x09\xf9\x23\x02\xd6\xdf\x71\xd3\x34\x63\x30\xea\x86\x1d\x10\x0c\x82\x5e\x49\x6f\xa8\x4c\xda\x8b\x6c\x18\x66\xb0\xf3\x60\xc8\x5a\x35\x30\xac\x71\x2e\x80\xca\x61\x78\x39\x1f\x9b\xdb\x21\x99\x8a\x35\x90\xe4\x4c\xcd\x83\x21\xaa\xd4\xb5\x56\x53\x3a\xb7\x3d\x54\xaa\x81\xf0\x71\x01\x00\x1f\xad\xf6\x9d\x0e\x7b\x95\xa5\x17\x3c\x8d\xc1\x53\x45\x86\xc6\x6a\xa3\xfe\x81\x46\xe1\x4e\xc4\xd5\xaf\x10\xcf\x0a\xa2\x3a\x65\xb9\xbc\x0e\x16\xfa\x8b\x38\x2f\x17\x25\xb7\x52\x79\x57\x27\x18\xeb\x63\x96\xd2\x80\xa9\x2b\x90\xca\x4b\x21\xc8\x54\x6b\x07\x00\x34\x87\x31\x6c\x43\xb2\xa7\x32\x59\x5f\x66\xf1\x25\x0f\x6c\xc5\x36\x87\x9a\x5d\xd3\x62\xc8\x69\x29\x96\xa9\x42\x46\xa3\x61\x93\x53\x9d\x84\x5d\xd7\x4f\x3a\x06\x8b\xb2\xa6\x37\xf0\x75\xad\xed\xd1\xe9\x67\xe4\xce\xd7\x7f\x2f\x91\x90\x39\x17\xa2\x90\xc0\xfc\x4f\x91\xa7\xda\x97\x7f\x0e\xdc\x65\xf9\x97\x60\x23\x10\x01\x77\xe1\xa4\xc3\xf0\xf2\x6b\x30\x53\xa5\x5f\xa7\xb7\xaa\x04\xf9\xef\x25\x97\x14\x36\x0b\x51\x0a\x70\xff\x53\x44\xf2\xf4\xe6\xf4\x11\x7b\x36\x9e\xff\x5e\x0a\xe9\x4d\x6e\x21\x1a\x29\x37\xa8\x3f\x43\x25\x6f\x8f\xee\xea\xfe\xab\x31\x92\xda\xf6\x16\x93\x4d\x7f\x9e\x95\x7c\xfd\xf9\xe7\xe2\xaf\x25\x9f\xa8\x8a\x72\x17\x8e\xfa\xb3\xf2\xa9\xae\xdf\x96\x13\xf6\x8f\xa0\xcb\xd3\x51\x9c\x72\x0f\x82\xe6\x18\x09\x25\x85\xce\xd2\x03\xcf\x16\xcc\x13\x56\x50\xce\x05\x8c\x76\x96\x36\x1b\x78\x25\x10\xb0\x2c\x55\x21\x89\xed\xe2\x34\xc2\xc2\x34\x6a\xd1\xa6\x3c\x8d\x9a\x1a\x55\xc6\x86\x49\x76\x29\x6f\xa5\x4c\x38\x0e\xf8\x26\x27\x07\x0e\x1c\xe3\x59\x2a\x2d\x9f\xd2\x77\x0f\xe2\x09\x2f\x6f\x6f\xb3\x26\x9a\x46\xb6\x15\x78\x81\x6d\x93\xe6\x01\x92\x63\xc2\xd0\x06\x50\xd9\xa4\x34\x80\xa1\xad\x6e\x23\x7c\x12\x7f\x51\x79\xe7\xe8\xe1\x0c\x78\xb3\x21\x2a\x8b\x83\x46\x23\x00\x04\xcd\x5d\x08\xc9\xd7\x2b\xa3\x3f\x1b\xa7\x2d\x8d\xd5\x24\xbb\xe0\xef\xe2\xa2\xe4\x29\xcf\x5d\xe2\xcc\xa9\xe8\xeb\xd4\x30\x2c\xf4\xe4\xc5\x23\x8d\x2c\x02\xf6\x67\xc3\x2d\xfd\x07\x5a\x9e\xf5\x93\x13\xe9\x59\x0e\xb4\x78\xbe\x4d\x2c\x6e\x86\x86\x5c\x07\xb6\x32\x36\xbe\x66\xd5\xde\xe7\x4f\x59\xd1\x9f\x0d\xcd\x0b\xb0\x41\x96\x0e\xc2\x52\x32\x40\x11\xe0\x14\xe8\x87\x4a\x4b\x64\xc2\x34\x13\x6a\xda\x10\x37\x14\x9b\x04\xc0\xd2\xc6\xd0\xe0\xe1\x7d\x58\x36\x36\xff\x57\x04\x84\x54\xaf\x69\x10\xe9\x96\xfe\xa8\xf0\x1f\xe6\xd9\xc4\xb0\xaf\xf2\x8a\x92\x85\x2a\xbe\xa4\xaa\xd0\xf2\x3f\x9d\xdf\xcf\x4a\x8f\x5e\xdf\x30\x79\xfa\xe0\x7e\x7c\x37\x09\x47\x86\xad\xcf\x86\x71\x1a\x8b\x8f\xb2\x84\xbe\x50\x52\x55\xa4\x0d\x1a\x83\xaa\xa8\x45\xae\x61\xb5\x54\xcc\x85\x91\xe0\xac\x78\x00\xd4\x11\x7f\x4f\xe2\x34\x9e\x84\x09\xdb\x5c\x83\x87\x04\xe8\xf0\x6f\x88\x68\x69\xd5\xc6\x11\xac\x89\xce\xa8\x26\x2e\xb9\xac\x67\xa2\xa0\x56\x54\x72\x31\x41\x70\x77\x64\x2e\x0d\xa4\xd0\x56\xe6\x0b\x79\xab\x83\xa8\x6a\x0c\xac\xfd\x73\x0e\x06\xb2\x9e\x8d\x81\xd5\xf8\x76\x0c\xe4\x2d\x8e\x21\x96\xd8\x95\xd7\x58\x3f\x1e\x8d\x78\x2e\x69\x13\xa0\x53\xad\x3a\x72\x11\x5f\x1e\x83\xb3\x51\xb6\xe7\x20\x2c\x2a\xd9\xd8\x9a\x66\xb7\xa3\xfa\x06\xdf\xda\x53\x4a\xd1\x4d\x74\x5e\xbf\x50\xcd\xe9\x99\x34\x5d\xa0\x6f\xf5\xd2\x1f\xa9\x94\x87\x97\x6c\x0d\x5c\xd0\xfc\xcc\xa3\x77\xa9\xdb\xf9\xe7\x30\xbc\xf4\xb2\x90\x06\xb1\x30\x17\x1d\xee\xfc\xe2\x67\xa4\x45\xb0\x31\x55\xbd\xec\x74\x07\x6c\x88\x2b\x87\x22\x57\x38\x2b\xb3\xb5\x88\x97\x7c\x50\x4a\x8a\x91\x44\x23\x1f\x17\x9a\xc2\x8f\xd5\x19\xfc\x78\x97\x09\x24\xf3\x47\xe2\xf8\xff\x1c\x26\x71\xa4\x65\x4c\x73\x28\xc4\x06\xd5\x43\x86\x20\x93\xb6\xa9\x11\x5c\xbf\x6e\xfe\xf2\xc5\x57\x6c\x3f\x6e\xf6\xd7\x21\x6f\x9b\xfd\x15\xc8\xd3\xe6\x9a\x0a\xf8\xb2\xd9\x5f\x08\x0f\x9b\x15\xe9\xcb\x31\x07\xca\xb0\x41\x12\x16\x85\x74\x5f\x4f\x12\x1d\x74\x5a\xc8\xf7\x25\x78\x5f\x14\x83\xbf\x7d\x3a\x62\x93\x30\x0d\x47\x1c\xea\xb2\x7f\xcc\xf8\x4c\xfa\x58\xfe\x63\xc6\x0b\x88\x85\x9e\x46\x92\x3c\x05\x9a\xb8\x45\x85\x1c\x8d\x91\x26\x7a\x23\x78\xed\xab\xd0\xd2\x29\x81\x75\x39\xe6\xa9\x68\x77\x9d\xcd\x8c\x03\x6b\x5b\x79\xb0\xa2\x79\xa8\xbd\xe4\x44\x7c\xc1\xb9\x34\xd7\xe6\x62\xd3\x38\x03\x16\x51\x6f\x77\xb5\x33\x99\x54\x63\xe9\x8f\x2f\x5f\xa4\x56\xab\x9c\x79\x67\xe9\xf9\x51\xfc\x3b\x97\xe5\x6d\xf3\xe1\xcb\x17\x8f\xdb\x1e\x5c\xdd\x40\x0f\xfa\x4a\xd2\xe5\x33\xb3\x35\x02\x40\xf4\xf7\x7a\xf0\x80\x2d\x57\x58\xcc\x94\xb7\x16\x7c\x7b\x2e\x66\x18\x73\x49\x91\xb6\x5b\x24\x75\x18\x7e\x36\xdb\xe5\xbc\x8e\x4d\xad\xfb\x76\x4f\x20\xd8\xce\x25\x67\x74\x17\x27\x64\xf8\xf2\xc5\xb3\x7a\xcc\x6c\x38\xfb\xbc\x09\xe0\x5c\x19\x56\x35\x8c\x73\xa5\x4a\xb7\xb2\x46\xec\x89\xd1\x33\xad\xdf\xeb\x57\x4a\x48\xb8\x20\x7a\xef\xf7\xe5\x8b\xcb\x2b\xcf\x69\x3d\x75\x0b\x68\x54\xc8\x5a\xb2\xa2\xfe\x5e\xc4\xbf\x73\x42\x56\x83\x98\x51\xc7\x6f\x2c\xd4\x89\xa7\x94\x8b\x3b\x75\xd9\x75\x90\x27\x97\xae\x6a\x04\xd4\xe7\xd7\x19\x82\xa9\xbd\xc0\x38\x0c\x1c\x32\x8e\x8a\x3f\x57\x75\x20\xe0\xed\x56\x19\x83\xf4\x1a\x76\xd0\xc7\x3b\x48\x85\xb9\x74\x34\x76\x90\x86\x3a\x8b\xd0\xdd\x75\x41\x26\x68\x23\x4e\x75\x18\x2b\x77\xbb\x0a\xd2\xc6\x4b\xd9\xc1\x5b\xdf\xc7\x2a\xd4\x8d\x83\xb3\x83\xbd\xaa\xb9\xc0\x00\x14\x0c\x82\xb7\xc6\xac\x0e\x75\xed\x1a\xe8\xa2\xae\xfd\x55\x97\xbd\x1e\xd3\x0f\x1e\xb0\x39\xd5\x2c\xaf\xe9\xf9\x55\x0f\xdf\xf5\x6e\xa9\x81\xde\xd3\xf3\xeb\xb8\x1e\xd4\x0b\x50\x4b\x01\x22\xd4\x72\xfc\x24\xab\xd4\xaa\x3e\xa8\xf4\x9e\x76\xdc\xba\x0b\x60\x63\x6a\x77\x59\x5c\xb2\x62\xac\xdc\x40\x42\xe5\x2c\xa3\x74\x9d\x4a\x5a\x41\x14\x93\xe3\x30\x8d\x20\xfd\xb5\x00\xae\x85\x9c\x8e\x86\xa6\x8f\x52\x4e\x40\x0b\xd5\x38\xd2\x8f\xb7\x2c\x6f\x44\x09\x56\x3d\xb6\xf0\x3d\xe5\x08\xc4\x61\x38\xcd\x48\x10\x8f\x92\x3c\x45\xbe\x0c\xe1\x55\xe7\x20\xe1\x61\x9a\x5c\xb3\x9c\x0f\xb2\x0b\x48\x6b\x82\x55\x07\x59\x5a\xc6\xe9\x0c\xce\x7d\xa2\x3c\xeb\x17\x83\x59\xce\x21\xff\x47\x3f\xe1\x93\x02\x6b\xe2\x13\x8c\xa6\xc0\xdd\x0a\xa8\x41\xf0\xd6\x51\x67\xf4\x91\x3e\x53\x47\xf4\x1e\x7d\x27\xa2\xac\x0b\x90\xff\x03\x30\x17\x67\x4a\xf1\x93\x16\x0c\xec\x87\xcd\x78\x8b\x0b\xb5\x4e\x49\xff\x7c\x12\x97\xc6\xec\xc3\xb5\xd1\xe7\x46\x53\x5b\xf9\x91\x7b\x94\x06\xea\x23\x51\xb1\xcb\x29\x07\x74\x12\xae\xae\xa5\x81\x99\x0a\x66\x56\x8d\x77\x79\xfd\xa2\xf0\xf5\x63\xbd\x48\x30\x5d\x11\x78\x56\xb5\x2d\x97\xe1\xc0\x5f\xb5\xb2\xcb\x78\xd5\x24\xb3\x79\xe8\xd7\x28\xb6\xe8\xf3\xb6\x52\xf2\x8f\xba\xec\xbb\xeb\x8b\x60\xe5\x9a\x27\x20\xc0\xce\xc7\xb4\x08\x87\xbc\xe9\x68\x77\xe4\x81\x41\x36\x1c\xa2\xc7\xa6\x89\x7a\x77\xe6\x7f\x02\x70\x36\xd7\x8f\x1f\xed\x62\x68\xcb\x32\x0f\x85\x10\x3f\xff\x8d\x3f\xaa\x88\x0d\x64\xf0\xa8\xa1\x7c\x4c\x46\xbc\xec\x56\xdc\x47\x8d\xd7\x2e\x5b\x3e\xa3\x93\x20\x05\x02\x26\x67\x1a\x64\xe9\x30\x1e\xcd\xa8\xbf\xc0\x92\xcf\x69\x45\x06\xa1\xb9\x59\x5a\x9a\x95\x71\xa2\x13\xc8\x34\x85\xcc\x08\x8c\x26\xdb\x5a\xe8\x65\x48\xe2\xbe\xaa\xa8\x5a\x9d\x6f\xd9\xc0\x17\xd8\xbb\x8d\xf0\x24\x46\xb7\xdb\xb6\x6f\xb3\x73\x2b\x75\xf8\xf6\x9d\x6d\xb1\x4d\x6d\xee\x7e\x76\xcb\x56\x76\xb7\x5d\xcc\x6b\x34\xf3\xef\x63\xd6\x16\x66\x3b\xbf\x4a\x8e\x5e\xde\x96\x3c\xad\x1f\x5b\x9c\x11\x6c\x0c\x57\x53\x6b\xa9\xb3\x69\xd0\x57\x2b\x4d\xdf\xb1\x35\xf0\xf2\xae\x7a\x8c\x25\x45\xb7\xe0\xdc\x80\x35\xc0\x19\x4c\x39\x6f\xca\x65\xa0\x0d\xd2\xb4\xae\xe4\x3b\x97\xd7\x74\x5d\xcc\xcd\x6d\xed\x0b\xf4\xf5\x2a\x96\x54\x56\x35\x2d\xf4\xae\x6d\x55\x05\x12\xe1\x6a\xae\xd6\xd6\x56\xe7\xf9\xea\x0d\x0d\xad\x88\x9d\x57\x62\x46\x91\x7b\x90\x1a\x0f\xf2\x3a\x07\x72\x1a\xa5\x6e\x01\x0a\x5a\x61\xb0\x24\x11\xf5\xe3\x2a\xe9\x7b\x71\x2c\x9f\xd0\x8b\x53\xf6\x99\x3c\xd1\xa9\x5e\x05\xa2\x3c\x52\xc1\x57\x4b\xed\x8d\x0b\xa6\x82\x00\x3c\x26\xd3\x92\xe7\x90\x78\x36\x80\x83\x3b\xc9\xb9\x00\xa7\x98\x71\x58\xb0\x3e\xe7\x29\x93\x99\xbf\xda\x15\x5f\x79\x1d\x18\x4c\x0f\xd5\x16\x1d\x88\xbc\xee\xbb\xe9\x04\x4e\x0b\x58\xa3\x51\xb9\x59\x72\xfa\xa8\x76\x71\x1e\xa7\x91\xef\xba\x07\xa4\xea\x26\xb5\x19\x88\xaf\x97\xca\x8a\x80\xd1\x0c\x85\x08\x3d\x2a\x31\xcf\xa5\xb5\xa1\x0a\xa8\xce\x85\x9a\x58\x63\xfa\xb3\x3e\x9a\xc2\x01\xdc\xee\xdd\xba\x73\x13\x2d\x90\xad\xb0\xad\xd7\xf2\x63\x2d\xf0\xcb\xa2\xcd\xd3\x88\x47\x54\x2d\x35\x1d\xdc\xc2\x81\x26\x34\x06\x82\x89\xd3\x91\x1f\x4e\x65\x8f\x9b\x03\x27\xe5\x3c\x7a\x9d\x87\x71\xea\x07\xf5\x07\xf5\xfc\x47\x90\x91\xa8\xdd\xf0\x8b\x0e\xcd\xcb\x38\x43\x52\xf4\x38\xd3\xa8\x57\x22\xd5\x90\xe9\x4a\xac\x9a\x21\x0c\xa5\xcd\xf3\x9c\x5b\x59\xac\x66\xd1\x56\xa3\xd7\xda\xc3\x95\x4a\x2c\xee\xf8\x16\xb8\xca\xfc\x08\xc5\xf2\x95\xa8\xbd\x7f\x8c\x8a\x84\x7b\x89\x29\x61\xa9\x0b\x9c\xea\x6e\xbb\xd8\xe4\xe3\x4b\xe9\x57\x62\x99\xe7\x6c\x12\x5e\xb3\x38\xbd\xc8\xce\x39\x93\x63\xc1\x87\xef\x21\xfa\xeb\xa2\x46\xdd\xc4\x84\x77\x97\x71\x92\x60\x0a\x53\x29\x57\x20\x3a\x10\x48\x60\x75\xf9\x22\xbf\xeb\x77\x46\xe6\xc2\x53\x89\x22\x72\x7d\x65\x97\x98\x78\xad\x34\x77\x83\xa1\x09\x1e\x04\x60\xac\x44\x0f\x07\x70\x32\x6d\xa4\x2b\x65\x4a\xf2\x92\x80\xcc\x8f\x90\x51\x01\xc6\xdc\x89\xd3\x51\xc0\x06\x7d\x23\x0b\x86\xe6\x66\xe9\x36\x31\x20\x8f\x1c\xea\xfd\x81\x5e\x45\x62\xf5\xab\x95\xa9\x6a\x81\x70\xdc\x56\x95\x1f\x3c\x60\xcd\x65\x14\x95\x58\x97\x3c\xe3\xa6\x77\xb0\xc6\x7e\x88\x95\x55\xe6\x5f\x90\x24\xee\xf1\x13\xef\x74\xb5\x29\x7c\xd0\x6f\x7a\x02\x2a\x41\x40\x95\x46\x8b\xdc\xd9\xd1\x6d\xa2\xa6\xb1\x77\xa7\x69\x91\x38\x7d\x71\xd9\x28\x9c\x3d\x00\x62\xac\x84\xf2\xa1\x83\x0c\xfa\x7a\xc9\x21\xaa\x37\xd8\x9e\x95\xad\xda\x58\x13\x11\x5a\x33\xcb\xd9\xe5\x38\x2c\xf9\x05\xcf\xd1\x8a\x7d\x89\x79\x21\x2f\xe2\x88\x47\x32\x21\x64\xc5\xe4\xd8\xb6\x51\xe1\x57\xd3\x24\x1e\xc4\x65\x72\x8d\xf0\x45\x9b\xb0\xc4\xcc\x93\x18\x32\xa6\x8c\x27\x5c\x06\xfd\x43\xac\x10\x00\x95\xb4\x6d\x76\x20\xaa\x5e\xc6\x05\x0f\x00\x6f\x62\xe4\x1f\x66\x90\x98\x22\x9e\xcc\x26\xd6\xbd\x97\xcc\x3d\x91\x45\xa9\x58\x7b\x4a\x05\x0e\x8b\xb2\x65\x5d\x66\x7a\x4d\x9c\x5b\x44\x64\x79\x2a\x53\xbe\xc4\xe8\x86\xe9\x80\xb3\x4b\xde\xb8\x90\x61\x5a\x79\x64\xa6\x40\x46\x2c\x04\xd3\xba\xd0\x99\xb2\x29\x21\x44\x1a\x29\x10\xa3\x8c\xc1\xde\x23\xb3\x26\xc9\xe0\x22\x7d\x3e\x0e\x2f\xe2\x4c\x1e\xd7\x35\xf7\x29\x26\x7d\xbe\x6d\x38\xd6\x91\xe8\x67\x55\xbc\x17\xb1\xf8\x56\xac\x1a\xd6\x0d\xae\x64\x27\x0d\x1a\xd6\xeb\xdc\xc0\x93\xaf\xa4\x2b\x44\x65\xc9\xdb\x30\xf4\x9a\x87\x10\x18\x7b\xe9\x4b\x8c\x0e\x2c\x97\xa0\x58\x63\xae\x3f\x84\xae\x7c\x30\x2b\x75\x6d\xf7\xf6\x60\xcd\x3a\x5d\xaa\x66\x71\x7a\xa0\x62\xba\xfa\x4c\x32\x0a\x78\x81\xbe\x30\x52\xb5\x18\xf4\x2b\x19\xa9\xbd\x21\x54\x7d\x3e\x2b\x3e\xaf\x15\x62\x24\x21\xdb\x1f\x75\x62\x31\x24\xe3\xb9\xe5\xf7\x00\x66\x15\x2e\x9b\xdd\xa8\x88\xac\x77\xd4\x4c\x19\x8b\x32\x0d\x14\xb3\x35\x1a\xe9\x2a\xb7\x07\x1d\xec\xba\x49\x67\x0b\xe7\x0f\x54\x4f\xa5\xf7\x0b\x82\xca\x4f\x82\xd6\xea\xb4\x41\xe7\x52\x15\xab\x6c\x76\xb6\xb9\x00\x4a\x31\x58\xa8\x29\xc2\x59\x13\x45\x32\x96\x2d\x85\xab\xa7\xbd\xb5\x25\xdb\x6a\xd0\x37\xca\x23\x67\xd9\xb1\xad\x09\x36\x52\xa7\x86\x9c\x17\x27\xeb\xa7\x81\x18\xf6\xc9\xc6\x69\xab\x1a\xd7\xb6\x7a\x82\xc1\x43\x20\x99\xb2\x9b\x05\x7d\x55\x88\xde\xa1\x55\x24\xef\x51\xba\xde\x7f\x65\x89\x32\xd7\x62\xbe\x2b\x76\xaf\x4b\x44\x85\x93\xae\x37\x37\x6e\x94\xee\x05\xd8\x06\x39\xe5\x1f\x5e\x4e\x99\xc3\x25\x1e\x0e\x99\xc3\x1d\x35\x9c\x51\xcf\x15\xf3\x38\x02\x4e\x61\xff\x68\x6b\xb3\x94\x76\xdc\x12\x5f\x89\xca\xaf\x7e\xb5\xfd\xbe\xec\x28\x3d\x7b\x29\xc4\x89\x0b\x74\x87\xf0\x27\x31\xbc\xfe\xa2\x4e\x60\x1a\x70\x5c\x60\xc4\xb1\x38\x65\x61\x2a\x85\x0a\x50\x2b\xb0\xea\x35\x0a\x6a\x90\xe5\x57\xa5\x3a\x11\xfe\x96\xf3\x7f\xfc\x26\x53\xfd\x62\x18\x5c\x88\x7a\x0b\xae\xfe\x51\x1b\x62\x8b\x8a\xf9\xd0\xb9\x80\x31\x2c\x1d\xba\x15\xda\x93\x1a\xa6\x11\x00\x68\x14\xec\x72\x7c\x8d\xbb\x73\x3c\x99\x66\x79\x19\xa6\x25\xe4\x1b\x9a\x25\x89\xde\xd1\x66\x98\x74\x08\xde\xb9\xa8\x7c\x9a\x3a\xb2\x1a\xbc\x8e\xef\x73\xc1\x1c\x62\x70\x6d\xf6\x1b\xed\xea\x37\x3d\x94\x30\x65\x45\x09\x4a\x2d\x9b\xf0\x49\x96\x5f\xb3\x24\x4b\x47\xea\x39\xa1\x45\x27\x81\x9d\x9c\x23\xd1\x83\x38\xbc\xf0\xa8\x6d\xad\x49\x67\x87\xd3\x33\xaa\xd2\x79\xe8\x12\x32\xab\xa6\x8c\x2c\x56\xd7\x44\x41\x14\x64\xe4\x70\xc8\x8e\xb5\xed\xee\x2f\x6b\xf6\xb4\x6f\x51\xb1\x0b\x2d\x9e\x43\x42\xaa\x06\xfc\x2e\xef\x0f\xd2\xac\x14\x5b\x7b\x94\x5d\xa6\x0d\x2a\x63\xb0\x3e\x0d\xe6\x2b\x73\x9d\xb1\x6d\x69\x0a\x91\x91\xf6\x8a\x24\x1e\x70\x89\xb1\x62\x7d\xfa\x17\x5b\x05\x6c\x1d\x7b\x8d\x2a\xdb\x86\x42\x55\xd6\xe9\xb0\x82\xe7\x02\x39\xd0\xbe\x30\x8a\xb8\x54\x38\x64\x1c\xe5\xbc\x4d\x6c\x39\xd6\xc6\xa6\x81\x83\xd7\x22\x06\xa9\x92\xa7\x3d\x37\xd8\x98\xe5\xdf\x48\x6b\x12\xff\xc6\x6c\x56\x5a\xde\x8d\xda\x7c\xa3\xc3\x86\xf2\xab\x71\x38\x2b\x4a\xa9\x4b\x49\x6c\xb5\x3f\x6a\x8e\xcb\x4a\xb9\x27\x60\x74\x42\xf9\xa4\x37\x04\xb9\x9a\xa5\xdc\xf0\x8f\x35\x73\xb0\x38\xd6\x21\x1c\x10\xa5\xd6\x73\x45\xfa\xca\x1d\xb4\x2b\x61\x58\xa5\xa6\x97\xfc\x3a\x8c\x3c\xb3\xe6\xd4\x6f\x1b\x77\xbb\xae\x70\xad\x67\x08\x06\xbf\x4e\x07\xc2\xfe\x60\xdc\xd9\xe4\x1a\x56\x68\x9b\xb1\x7d\xae\xde\xd0\xab\x43\xa8\xa9\xbf\x93\x14\x59\xc0\x66\xd3\x48\x90\x4c\x87\xf7\xd6\xba\x97\xe4\x0b\x2a\xf7\x50\x1a\x04\x84\x9b\x32\x19\xed\xdb\xe4\x94\x2b\x33\x36\x8e\x21\xfe\x77\x28\x16\x63\x1e\xb1\xe6\x30\x9b\xe5\xe5\x38\x60\xbc\x1c\xb4\x5b\xa8\xee\x1b\x10\x71\xd9\x48\x12\xd9\x14\xd8\x30\xcf\x85\xa4\x03\xbf\xbf\x41\x36\x4b\x4b\x8d\x32\xaa\x6d\xab\xdb\x0e\x9e\x6b\x16\x8a\x5b\x3e\xdd\x83\x6d\x3b\x75\xa8\xbd\x52\x32\xb9\x15\x83\x8e\x2c\xc9\x94\x5f\x1e\xc2\x7e\x67\x19\x42\xeb\xf6\x3b\xb9\xcf\x39\x7b\x1b\x9d\x7c\x7b\xf5\x06\x15\x8e\xd3\x8e\xc0\xd0\xaf\x77\x83\xc2\x1b\xbe\xb8\x40\x9f\x3f\xb5\x55\xd9\xed\xaa\xdb\x1d\xb3\x22\x8e\x58\x9c\xe5\xd0\xc0\x44\xb0\xc3\xf0\xbd\x70\x36\x52\x11\x71\x61\x92\x40\x17\x47\x9b\x59\x9f\x06\x61\xb3\xef\x31\xa4\x9b\x5c\x00\x0e\x42\xad\x2d\xa7\x54\xba\xad\xd5\x94\xbe\xf9\x3d\x9e\xd6\x15\x81\x5b\x60\x4d\xa1\x71\xcd\x9b\xdf\x6d\x7d\x85\x8f\x16\xf4\xdb\xe2\x49\xa8\x7c\xee\x52\x57\x5a\xe9\x6e\x3e\x72\xd3\xb8\xd7\x45\x91\x50\xd1\x1d\x9e\x3c\x09\x56\x04\x0a\x2b\xdd\x1f\x7e\xb8\x39\x0d\x36\xbf\xbf\x63\x9c\x07\x9d\x20\xae\xf3\x70\x79\x89\x3d\x04\x95\x40\x4e\x3f\x36\xc3\xd8\xb5\x29\xa6\x13\x0f\xe0\xc0\x2c\x66\xb1\x9f\x67\x97\x05\x08\x7c\x48\x03\xf6\xef\xe1\xac\x1c\x67\x39\x63\x6c\x97\xe7\x59\x51\xb0\x9d\x7e\x36\x3b\x1f\x87\x51\xfc\x99\x8f\xd9\x8f\x2a\x4b\xf6\x10\x0a\xdb\x59\x3e\x7a\x0e\xad\xc4\xf6\x94\x16\x9c\xb1\xf7\x7b\xc7\x90\x08\x4c\x27\xa6\x5b\x8b\xe2\x02\x1e\x54\xa7\xd9\x1a\x1c\x0c\x21\x31\x9d\x9d\x9f\x1e\x14\x5a\xcc\x52\x4a\xe3\x39\xa8\x9c\xdb\x8d\x16\xd4\x88\x39\xe7\x3f\x7c\x6f\x55\x91\x9f\x1a\x2d\xf3\x8a\xe1\xa5\x2d\x5c\xf5\xf7\xa3\x24\xbb\xd4\x65\xe6\x0f\x92\x63\xed\xe8\x43\xef\xd5\x31\xdc\x76\xbd\xfc\xf5\xb8\x77\xc4\xb6\xd9\xf7\xeb\x88\xdb\x4f\xf2\x0e\x6c\xff\xcd\xf1\x5b\x48\x9c\xf6\xc3\x10\xff\xe9\xd6\x56\x44\x0a\x5a\x5d\xe7\x57\xdb\x1b\xb2\xdf\xa4\xbc\x3f\xfe\xf5\x43\xef\xf5\xd9\xce\xe1\xe1\xce\xaf\x67\x47\x1f\x3f\x7c\x38\x38\x3c\xfe\xad\x2b\xea\x30\xd4\xd7\xf2\x19\x17\x8b\xea\x63\xc1\x69\xfe\xfb\x78\x32\x4d\xf8\x84\xa7\x65\x28\xb3\x0d\x85\x45\xc9\x8b\xb2\x65\x1a\xa2\x67\x1f\x63\x1f\xf2\x38\x15\x0a\x62\x9e\x4a\xeb\x02\x5c\xf7\x4f\x26\x3c\x55\xe6\x9a\xdf\x90\x33\x7e\x63\x17\x8f\xdb\x57\x0c\x4d\x89\xe3\xb0\x10\xba\xe9\x81\x54\x21\x1f\x32\xfb\x9f\xdb\xfd\x24\x93\x09\x9d\xc3\x32\xee\x0b\xc5\x12\xa2\x38\xec\xf5\x9e\xb4\x24\x27\xbd\x44\xc6\x92\x99\x20\x64\x24\x3a\x38\x47\x47\x98\xfd\x13\x63\xf7\xee\xf5\xd8\xc6\xfa\x6a\xc0\x76\xe3\x9c\x0f\xb3\x2b\xf6\x78\x35\x60\xaf\xc6\xb9\x50\x4d\x7e\x58\x0d\xd8\x51\x38\x0c\xf3\x98\x7d\xdf\xde\x58\x0d\x04\xd4\x83\x29\xcf\x43\xb6\xb1\xd1\x7e\xb2\x1a\xb0\xf8\xe0\x88\x3d\x6e\x6f\xae\x2a\xe6\xfd\x45\x68\xc1\xd8\x8d\xe8\x93\xb0\x37\x44\xe0\xf8\xff\xd9\x7b\xfb\xb6\x36\x72\x64\x51\xfc\x7f\x3e\x45\x85\x73\x37\xd8\xe0\x77\x02\x61\x00\x93\x4b\xc0\x4c\xd8\x25\x90\x07\xc8\xce\xee\x72\x39\x8c\x6c\xcb\xd0\x43\xbb\xdb\xdb\x6a\x07\x98\x09\xe7\xb3\xff\x1e\x55\xe9\xbd\xdb\x86\x64\x32\xb3\x73\x7f\x77\xe6\x9c\x67\x83\x5b\x52\xa9\x54\x2a\x95\x4a\xa5\x52\x15\xaa\x61\xa5\x88\x44\x2a\xb3\x85\x54\x39\xb1\x4e\x1f\xaf\x56\x24\xdf\x4a\xb8\x44\xb4\xab\x2b\xe4\xdf\xab\xab\x86\x45\xb6\xde\xf9\x0e\x62\x36\xb8\x15\x06\xae\x5c\x57\x14\x52\x18\xd5\x8f\x09\x5d\x30\x47\x5c\xc8\x3d\xf1\x47\x3b\x9f\x3f\x4a\xc0\x15\x2f\xf5\x7c\x7f\x7a\xfd\x73\x14\xc7\xac\x31\x4e\xe9\xdf\x34\xbb\x6e\x8a\x9b\xf4\xee\xaa\x3f\xbd\x6e\x0c\xae\xa3\x37\xd1\xb0\xbb\xfe\xdd\xda\xab\xd5\x8d\x6a\x83\x08\xe7\x77\x2e\x41\xca\xfe\x0d\xa6\x38\xf9\x38\xb1\xd0\x9f\x5e\x5f\x3f\xb8\xa3\x0e\x66\xb4\x81\xcb\x76\x36\x87\x2a\x1b\xc8\x10\x91\x3f\xa3\xfe\x2a\xd5\x85\x05\xd7\xf1\xa6\xac\xd9\xcb\x97\xc6\x76\x92\x26\x22\x8d\x79\xc1\x3d\xf0\xe5\x4b\xb2\x7c\x78\xb5\x1a\xca\xc2\x51\xf2\x2c\xca\xab\x41\x39\x41\x97\xf0\xf6\x4c\xcf\x35\xd1\xc4\x1d\x6a\xc5\xd2\xbd\x6a\x66\x8a\xd8\x3e\x12\x5a\x9c\xe0\x05\xdb\x92\xca\x03\xba\x64\x97\xc8\x5a\xe3\xbe\x81\x8b\xd1\x5f\x35\xd1\x08\x5d\x63\x55\x63\x48\xe3\xa1\x41\x40\xf5\xd0\x58\x5a\x00\xf0\xf3\xf9\x16\x48\xe8\xc4\x66\xde\x63\x89\x3f\x3f\xca\xd1\x48\xe0\x09\xaa\xcf\x81\x4d\xaf\xe5\x74\xf1\xe1\x1b\x79\x0c\xce\x1e\x1c\x5b\x93\x4d\xf0\x6e\x47\x5a\x69\x9b\x4c\xd3\x0d\xcb\x11\x5d\xf8\xc5\xf2\xc7\xa6\x53\xdd\x9a\xed\xe4\xe6\x90\x06\x6e\x0f\x5a\x2b\x78\xd5\x81\x47\x2f\x71\x0f\x82\x1f\xa5\x69\xa5\x4a\xd1\x50\x3b\x78\xd9\x33\x60\x18\x44\x8b\xfb\x41\xce\x4c\xf8\x8d\xc7\xd9\xa1\x17\x14\x2b\x39\xc8\x2c\x4d\x58\xc6\x93\x7c\x56\x10\x86\x85\x99\x5e\x1a\xa5\x3e\x61\x78\x84\x34\x4a\x8e\x61\x43\x17\x4b\xe7\x5c\x49\xb8\x56\xbf\x00\x59\xd2\xe8\x7e\x6f\x64\x1f\x72\x7e\x82\x1d\x1b\x84\xad\xed\x02\x4f\x43\x6a\xeb\xab\xb8\x56\x62\xf2\x06\x21\x13\xb2\xb7\x69\xcd\x77\xf4\x38\xd7\x06\x01\x58\x24\xc7\x0e\x84\xb0\x02\x4b\x8b\x80\x4f\x01\x94\x53\x72\x9a\x41\x3a\x41\x0c\x16\x45\xf4\x33\x5f\x5c\xd2\x69\xaf\x9b\x4d\x38\x55\xac\x93\x58\x9e\xf6\x64\xa3\xe1\xfd\x05\xd7\xda\x15\xb0\x77\x6c\x52\x2b\xf7\xa7\x23\x8f\xc3\xc3\x69\x59\x70\x6d\x5e\xe8\x6f\x4f\x7b\xb2\x1c\x89\x22\x0c\x46\xc1\xc9\xa6\x83\xdc\x84\x7d\x11\xce\x02\x4c\x47\x3e\x7a\xb8\xbd\xe8\xd3\x4a\x94\x49\x58\xa6\x33\x18\xdc\x48\x62\xe1\x81\xeb\xc7\x10\x93\x1f\x1b\x70\x20\x8f\x41\x3c\x1b\xe3\x99\x40\x55\xf8\x11\xdd\xf0\xcd\xbe\x03\xe9\x48\x82\x74\xbb\xac\xd1\x29\x8b\x2b\xe4\xd0\x94\xa4\xb1\xc3\x4b\x40\xc4\x46\x9f\x83\xa5\x96\x67\x61\xab\x50\x0e\x12\x24\x59\x7f\xb8\x3f\x1a\x1d\xea\x01\xce\xfe\x3d\x95\x5b\x60\x3f\x63\x83\x5b\x9e\xcb\xad\x90\x36\xfb\xbb\x34\xbb\x15\xc0\xf0\x1a\x87\xe2\xaa\xd7\xeb\x98\xb6\x62\xd9\xd0\x8a\x81\xdc\x23\x63\x0e\xe9\x20\xe7\xb9\xde\x90\xcf\xc3\xae\x2c\x95\x28\xa5\x80\x80\x69\x32\x4e\x87\xd1\x28\x42\x33\x8f\x54\x0d\x0d\xe3\x6a\x96\x65\xd9\xb5\xbd\x1b\x3c\xc9\x4e\xd4\x91\xc9\xe5\x64\x8c\x5d\x31\x1e\xa3\xa5\x8e\xc2\x90\x3b\xee\x00\x2c\xbb\x0e\xbc\xea\xec\x8a\x53\x55\x42\xe8\xc1\x5b\xbb\xa2\xd7\xa8\xf5\xff\x31\x36\x0d\x5c\x17\x8b\xd4\x66\xd1\x04\x84\x36\x39\xd1\xd3\x11\x85\xd5\xa7\x0a\x0d\x38\xe5\x03\x1e\x7d\x92\x6c\x22\xbf\x2a\xd4\x14\xb0\xea\x02\x04\xe9\xd1\xc0\xb5\x11\xb0\xec\x3a\x48\x21\x8f\x8f\xff\xe6\xd3\x49\x3d\x33\x39\x88\xee\x25\x9b\xe1\x0e\x53\xa9\x42\x94\x40\xef\xac\xd3\x6a\xaf\x37\xc0\x53\x45\xae\xa3\xfc\x66\xda\x6f\x0c\xd2\xb1\x52\xf5\x9b\x24\x0f\x9b\x93\x69\x1c\x37\xbf\x7b\xbd\xe0\x10\xef\xec\x61\xdc\x4f\xe3\x92\x6d\x5d\x95\x34\xc4\x84\x0f\xa4\x02\xf4\xc2\xdc\x95\xe2\xc8\x68\x7e\x2f\xfc\x4a\x94\xca\xe7\xad\xf3\x10\x72\x9e\xe4\xad\x05\x5d\xd4\xcc\x96\x88\x71\x79\x64\x6f\xcf\x77\xc6\xa3\x24\x8c\xf8\xb9\x18\x30\xea\x11\x09\xa8\x97\x73\x9a\xc6\xea\x5d\xca\x46\xfb\xbb\x0e\x45\x39\xcf\xc9\x14\x85\x4e\x3a\x91\x08\xb4\xab\x20\xa5\x3f\x54\xc8\x86\xf2\x04\x5b\x3b\x44\x26\x81\x5b\xc6\x96\x0e\x0b\xa8\x30\x74\x33\x60\x57\x5d\x47\x15\x5c\x8f\x66\xbb\xf9\x7b\xc4\xef\xa8\x59\xb5\x04\x2c\xd6\x3d\x8a\x6e\xb9\xaa\xe2\xc2\xd1\x78\x79\x21\x4d\x69\x9d\x14\xd6\x08\xae\x90\x51\x94\x89\xbc\x64\x79\x24\xe1\x12\xa9\x81\x9e\x63\x07\x57\xf5\xa3\x66\xf4\x34\x80\xa5\x34\xa3\x8f\xf5\x38\xba\xe5\x9a\x5d\x82\xf5\x25\x37\x2a\x8f\x94\x2a\x23\xbf\x97\x27\x52\x1c\x2a\x91\xaa\x29\xe8\x74\x5c\x85\xcf\x9f\x55\x87\x6a\xcc\x2f\x5f\x42\xd8\xa2\xd1\x2f\x62\x5c\x9d\x49\x51\xb5\xc7\x3f\xc5\x09\x9e\xff\x60\x81\x19\x02\x99\x36\x47\x42\x91\x7c\xc2\xa6\xa1\x78\x92\xcc\xeb\x88\x28\x82\x39\x4f\x44\x55\xdd\x64\x0a\x08\xf2\x44\x6e\xd0\x44\x04\xfd\xfb\xe5\x4b\xff\x43\xa5\xea\xf2\xcc\xc9\xc8\x91\x07\x60\x3f\x29\x28\x01\xd1\xdc\x47\xce\xaa\xee\x33\x48\x86\xaa\x03\x74\x91\xe4\xc4\x17\x96\x83\x31\x08\x9d\x51\xad\xfa\x01\x85\x9f\x94\x69\x79\xfa\x21\x8b\xc6\x51\x1e\x7d\xe2\xa1\x5c\x33\x47\x19\xec\xeb\xa2\xd8\xe0\x72\x46\xb4\x87\x92\xb1\x1a\x13\xe4\x0c\x48\x15\x23\x0d\x66\x93\xc3\x9f\xb1\x99\x1c\xf2\x5b\xac\xce\xaf\x5f\x9b\x55\x47\x4d\x3b\x50\x84\x42\x93\xb6\x3c\x6e\x7d\x62\x31\xa7\xcb\x2a\xb5\x86\xbc\xad\xaf\x8a\x41\x25\x71\x9c\x52\x2f\x31\xc3\x94\xa0\x22\xbd\x78\x50\xdf\x52\x8c\x8e\xd6\x0a\x87\xe8\x22\xcf\x2e\x2c\xb8\xcb\x6a\x58\x8e\x9b\x67\xe1\xab\x7a\x5a\x5f\x5a\x59\x6d\x75\x35\xb0\x8a\xfa\x85\x9e\x9e\x4b\xec\xc0\x9e\xbd\x71\x7f\x70\x5d\x25\x9e\xb5\x55\xb8\x8a\xc0\x93\x12\x85\x54\x81\xe3\x34\xe7\x9b\xb0\x87\xda\xaa\xa3\x98\x2d\xe3\x2d\x9f\x37\x08\x49\x2d\xed\x32\x99\xa7\xa8\x0e\xb2\x2c\x9d\x26\x43\x6d\xa9\xe9\x4f\xaf\x37\x25\xc8\xe7\xa9\x0f\xed\x57\x1b\x0b\xa1\x62\xec\xe9\xef\x65\x87\x52\xdd\xa2\xbc\x9e\xb3\xbf\x92\xa1\x15\xb7\xe7\x8a\x30\xb7\x37\xce\xda\x96\x1f\x69\x65\x3f\x43\x78\x2e\xd1\xe1\x65\xb6\x3e\xa7\x61\xf8\x8e\x97\x82\x1e\x28\xb6\xbe\xe8\x24\x85\x8d\x9e\x7b\x8e\x72\xad\x0a\xa8\x1c\x52\xa7\x35\x18\x45\x71\xec\x2e\x06\xeb\xaf\x2c\x69\x42\x24\xd1\x1e\xf8\x88\xa5\x73\x83\xa4\x9d\xcd\x9c\x23\xa3\x69\xa0\xdd\xf6\x25\x7c\x24\x9f\x91\x8b\xce\xcd\xf7\x49\x12\x3f\xc0\x84\x3d\x00\xcb\x73\x9e\x90\xc9\x23\x35\xc8\xc8\xf6\x78\xe1\xcc\x8c\x1a\x7c\x7e\x13\x99\x3b\xef\x49\xc6\x3f\xf1\x24\x17\xc0\x06\x83\x68\x28\x55\x27\xb9\xe0\x85\x72\xd1\x8b\x12\xb3\x62\xd5\x0d\x78\x3a\x8d\x8d\xe3\x54\x9f\x93\x0f\xf4\x24\xe3\xb9\x3c\xa0\x30\xea\x84\x65\x39\xd0\x89\xbc\xe1\x1d\x9a\x7d\xb5\xdf\xd3\xab\x94\xc8\x7d\x53\x42\x85\x86\x1c\x7b\x25\x20\xb0\xaa\xbf\x39\xb7\x7e\xa0\xaf\x97\x10\xd8\x8a\xbb\x3d\x2c\x14\xea\xfe\x52\xb6\xe6\xc3\xf0\xf1\x19\xca\x2c\x72\x8c\x95\xcd\x2f\x68\xda\x5d\xa9\x15\x48\x15\x62\x11\x57\xac\xcc\xe6\x16\xf7\xc8\x51\x5e\xad\xc8\x7d\x74\x34\x71\x57\x5c\x09\xcf\xcd\x1a\xbd\x5c\x29\xf0\x06\x5a\x92\x88\x37\x7c\x70\xcb\x87\x0a\xce\x67\x68\xb9\x94\xe9\x95\xc9\xfe\x64\x3a\xae\x4a\xc1\xaa\x43\x8f\x2b\xf0\x48\xbf\x34\xa9\xff\xcc\xb3\xb4\x3e\x87\x88\x01\x89\xd4\x38\x42\x42\x15\x09\xa3\xef\x6b\xd5\xe4\x95\x62\x68\xaf\x19\x7e\x25\x96\x65\x38\x4a\xe0\x5f\x8e\xa7\x7f\x0e\xa1\x03\x03\x3e\xc5\xc1\x3d\xdd\xe7\x83\x92\x03\x32\xc9\x4d\xb5\x52\xf0\xa1\x98\xb7\x84\x96\x6c\x74\x21\xfd\x19\x96\xa6\xf9\x68\x63\xc9\xd5\x62\xad\x99\xab\xa7\xaa\x55\x4c\xc7\x73\x65\xb1\x4e\x23\xa1\x6b\xd3\x53\x1b\x77\x25\x3e\xda\x07\x7f\xea\x32\x46\xee\xb8\x74\x33\x53\x32\xca\xcf\xd0\xf2\x2c\x4c\x1e\x67\xea\xdd\x52\x7b\x02\x52\x32\xd7\x2e\x5a\x9b\xe8\xe6\xb7\x00\x50\x8f\x50\xd5\xa5\x27\x3e\xae\x17\x58\xb3\x09\x3f\x64\x51\x8e\xf7\x32\x70\xc3\xef\x8d\x36\x25\xc5\x3c\xbf\x67\xf2\xd0\x58\x23\xf1\x36\x48\x93\x1c\x2d\x24\x26\x35\xd3\x0d\xcb\xd8\x20\xe7\x19\x59\x7c\xac\x7b\xcd\x54\x70\xe0\x9f\x78\xa6\xa2\x38\x18\x2f\x1d\xa5\xcd\x15\xda\x4b\xd6\x94\xf2\xf2\x3a\x49\x33\x3e\x6c\x40\x85\x37\xae\xcd\x4b\xd0\x25\xd6\xbf\xbf\x1f\x0c\x97\xc8\xaa\xd4\xe7\x90\x93\x93\x91\x94\xa8\x4b\xac\xbf\x44\xf2\x8e\xc8\x25\x29\x41\x9e\x29\xad\x9a\xa2\x4f\x35\xc8\xe6\xa6\x0c\x6e\x1e\xd7\x99\xf3\x24\x28\x55\xca\xf8\x7d\x9a\x59\xc3\xef\xda\xbf\xb5\x28\x1d\xdc\xe2\x67\xce\x22\x80\x09\x27\x1c\x51\x34\xe1\x08\xb6\x41\x87\x11\x8e\x30\xd3\x8e\x9e\xa5\xfe\x74\x74\x11\x5d\x6a\x34\xe4\x9f\x2f\xa1\xb3\xb6\xe6\xcb\xf0\x99\x23\xb3\x76\x2b\xd4\x85\xad\xca\x57\x3c\xdc\xdb\x32\x1c\x24\x26\x12\x93\x23\xb3\x4c\x0b\xdb\x0e\x80\xf9\xda\xc4\x22\x6d\x74\xa8\x3d\xa4\xd3\x5c\x44\x43\xd4\x52\xd4\x25\x70\x5f\xea\x6b\x62\xc9\x3b\x4e\xce\xed\x4c\x6a\xe5\x6a\x02\x3e\x4b\x39\xfc\x44\xe7\x54\xf5\x99\x9d\xab\xb9\x2a\x52\xa1\xf0\x3c\xc7\xf1\xc3\x2f\xe8\x1b\xa5\x56\x61\xad\x9c\xbb\xda\xd8\xd7\x01\x71\xa7\xae\x1a\x3e\x61\x79\x5e\xb3\xc2\x89\xf4\x0b\x6d\xdf\x5f\x6c\xd8\xf6\xb8\x91\x8e\x5b\x50\x49\xfb\x3f\x59\x96\x2b\xbc\x91\xef\xff\x54\x75\xbd\x96\x63\x9e\xa0\xbf\x08\x2d\xb4\xb4\xff\x53\xb0\xcc\xe6\x2d\xb4\xaa\x75\x26\x91\x98\x3b\x64\x6f\x15\x5e\xce\xd2\xf4\x1b\x07\x14\xd9\xd1\x20\x9d\x3c\xc8\x86\x35\x68\xe1\xff\x23\xc4\x42\x13\x1b\x09\xc0\xe0\x56\xae\x8e\xba\x4f\xac\xfd\xaa\x5a\xf1\x97\x8c\x4d\x7f\x1e\x8a\x63\x76\xec\x8e\xb6\x80\xaf\x37\xd6\x56\x89\x85\xd6\xb7\x94\x49\xb2\x86\xc8\xe2\x79\x01\xf7\x49\x02\x83\xf6\x04\x3a\xe6\x44\x82\x38\x48\x56\x1b\xb2\x9c\xcd\x37\xc3\x99\x5a\x85\x93\x80\x9a\x37\xff\x9e\xc7\x9c\xf5\x06\x94\xf2\x42\xee\x17\x3f\x1a\xd9\xea\x5e\xfc\xfc\x08\x18\x32\xa0\xcf\x69\x53\xc1\x7d\x68\xc4\xa2\x58\x50\x34\x20\x04\xa5\x1a\x46\x02\x8e\xd9\xb1\x7e\x87\x24\x57\xbd\x7e\x9b\x01\x83\x94\x67\x03\x3a\x2a\x4a\xbd\xa6\x51\x0d\xee\x9a\xba\x5f\x70\xd9\xb4\x9b\xe7\x7c\x3c\x41\x6d\x0a\xd5\x19\x96\x9b\x2b\x1b\x95\x98\x03\x9d\x48\xf5\xd3\x0f\x6b\x16\x2c\xf9\x6f\x89\x62\xb9\x50\xfe\x0e\x17\x85\x59\x19\x3c\x02\xad\x5d\x4b\x43\x68\x79\x34\x77\x3c\x4b\x0a\xd7\x6b\x2b\x86\xeb\xac\xec\x47\xaf\x46\xcf\x37\xa6\x1e\x47\x09\x07\xfe\x6f\xf9\x7f\x88\xbe\xd9\x07\x5b\x3e\x06\xde\x8b\xb8\x15\xe7\x38\x1f\xac\x6a\x57\x2f\x34\xdf\x2a\x7d\x4f\x3b\xec\xbb\xf6\xb7\x7e\xe3\xca\xb6\xd5\x3e\x28\xca\x9e\xd5\xc7\x35\x13\x8a\x1e\xe5\xf8\x17\x8a\x93\xb0\x5a\xd5\xe8\x11\x2a\x08\xbe\xc1\x15\x7d\x47\x32\x4f\xd5\xd6\x9f\x2a\xac\x06\x7d\x4b\x44\xc7\xcc\xca\x6a\x8e\xbc\xad\x56\x81\x05\x01\x10\x59\x0d\x58\x43\x3b\xd5\x31\x67\x6b\xab\x16\x61\xf5\x03\x58\xfd\x30\x98\x62\x0d\xfa\x06\x56\xbf\x04\x56\xe1\xba\x96\x55\xa5\x44\x29\x06\x5d\x9c\xab\xd5\x7a\xe6\xd9\xfe\x74\xd4\x5e\xac\xe1\xbf\x1d\x6b\x74\x10\xa5\x86\x38\x35\x5d\x69\xe6\x0c\x63\xa9\x68\xd6\x66\x14\x75\xcc\x98\x3a\x5b\x7a\x03\xbe\x97\x0a\x4e\xc3\xd8\x08\xe5\x27\x4c\xd5\xa1\x3f\x15\x54\xa6\x9a\xda\x1c\xde\xb3\xfc\xa6\x31\x8e\x92\xca\x7d\x0d\x1e\xaa\x46\x91\xda\x82\x95\x95\xc8\x15\xbe\x4c\x6a\x4e\x92\x77\xfa\x17\xd1\xa5\x15\xa8\xd8\xef\x45\x74\xa9\x7e\x62\x9f\xf6\x27\x66\x8c\x32\xd2\xd5\x8c\xe2\x1e\xb6\xe1\xc1\x8c\xa1\xde\x56\x9f\x1f\x60\x1b\xee\xcd\xe7\xb6\xe5\xee\x96\xb7\x2a\x7a\xf6\x38\xe2\xac\x0b\xf3\xb5\xe2\x9f\x7b\x74\x0a\x30\x25\x13\x4c\x61\x23\x4f\x8f\xd2\x3b\x9e\xed\x31\xc1\x6d\x7a\x61\x4c\xa7\xb5\x74\xc3\xef\x97\x9c\xf4\x5a\x74\xe8\x09\x3e\xd4\xfd\x2f\x4c\x0c\xa2\xc8\xfb\x12\xb3\x3c\x4a\xda\xde\xa7\x7e\x84\x49\xce\xbc\x4f\xe8\x17\xe7\x03\x1f\x88\x4e\xf8\xa1\xde\x09\xfb\x6f\xaf\xc7\xbc\x80\x93\xf3\xd1\x4b\xc1\x8c\x5f\x82\x6c\x5e\x65\x5e\x1c\xde\x13\x14\x7f\x31\xe3\x97\x4a\x1c\x89\x12\xcd\xf7\x85\xbf\xef\xc9\x4a\xf3\xcf\x7e\x8b\xb2\x4a\x89\x1d\x8e\x25\xb4\x85\xca\x65\x41\xb8\x04\x4a\xae\x6c\x57\xaa\x8a\x94\xc9\xd4\x96\xa7\xa2\x46\xfe\xc6\x55\xaa\x3f\x7a\xa2\x5a\xad\x18\xf7\x80\x61\x7b\xf7\xd6\x87\x69\xb8\xd2\xc5\x3a\x17\xd1\x65\xc3\x31\xd7\x3f\x06\x9a\xf2\x4c\x7f\x71\xab\x5f\xca\x9a\x93\x54\x28\x4c\x9e\x8b\x87\x55\xe6\x14\x16\x66\xf5\xba\x92\x52\xea\x64\x9e\xac\xd4\x83\xf0\x9e\x21\x69\x33\xb8\xab\x1c\xcd\x8a\x42\x5b\x1a\x8b\xe9\x57\x4c\xb7\xee\x4f\xea\x9d\x5a\x8f\xc4\x1b\x89\x49\x2a\xa8\x5c\xd2\x66\x85\xce\xac\x86\xd0\xfe\x71\x6e\xc4\x33\x6f\x63\x77\x0e\x46\x73\x2c\x24\xe1\xe0\xa8\x66\xa8\xc0\x29\x7b\xa7\xd7\xf3\x8c\x7b\x58\x05\x40\x6e\x25\xce\x1c\x68\x04\xbc\xab\xc5\xd2\x3e\x2c\xda\x4e\x3f\xda\xf6\x4d\x06\x9f\x17\x25\xf7\xc8\x4f\xee\x4d\xb3\x5d\x1b\xe6\xdc\x0e\xe9\x0b\x20\x35\x44\xf7\xde\xb6\x78\x0b\xe4\x21\x59\xbc\x68\xa4\xdd\x27\xa4\xa4\x2c\x91\x98\xbc\x47\x97\xb3\x2e\x14\xb3\x74\xef\x40\x47\xea\x38\xe6\xfb\x45\xe7\xd2\x28\x39\x66\x2f\xb7\x20\xe8\xd4\xa9\x65\x85\xbb\x6b\x36\x9b\xe8\x07\xc8\x70\x75\xc5\x69\x3a\x41\xb5\xf4\x53\x1a\xa1\x87\xed\x34\x53\x2f\x8e\x11\x57\xb9\x51\xf0\xa1\xdc\x2a\x74\x30\x2f\xbd\x2a\xb7\xb6\x34\xc9\xf5\x46\xe3\x33\x55\xf9\x0e\x51\xba\x47\x94\xee\x12\x0e\x47\xd8\x67\x96\x85\x5d\xa9\x6c\x5f\x72\x5a\xca\x9a\xe7\xe9\x5b\xa9\x06\x6b\x86\x74\xe5\x53\xc9\xc6\x53\xb6\xf5\x94\x6f\x3e\x33\xb7\x1f\x17\x6f\x58\x86\x8e\x57\xdb\xee\xb0\x41\xc5\x9d\x9d\x1d\xdc\xf9\x67\xec\x90\x4e\x6d\xfa\x3e\x77\x58\xc1\x8e\xa7\xe4\xbf\x9d\x4c\xf7\x1d\x94\x81\x6b\x79\xe7\x0d\xd4\xdb\xb0\x39\x87\x7a\x92\x87\x98\x10\xd3\x31\xc7\x4a\x06\xd6\xa3\xf9\xcb\x31\x9d\x56\x96\x3c\xfb\xa6\xaf\x7f\x98\x06\x3e\xab\x99\xbd\xfb\x51\xed\xd0\x6a\xe5\x39\xc2\xcc\x35\x8a\x3a\xe2\x4e\xc4\xe9\xdd\x79\xaa\x4d\xc2\x36\x18\x03\xde\xa2\x48\xc9\x37\x74\x0c\x75\x25\xec\xad\x4f\x9a\xf8\x6a\x4f\xae\x8c\x4f\x3c\x8b\x46\x0f\x74\x8a\x5c\x54\x09\x94\xe9\xd0\xd9\x05\x79\xf8\xfa\x78\x78\x7c\xbe\xda\x59\x04\x11\x25\x03\xae\x2f\x86\x32\xce\x86\xf5\x34\x89\x1f\x16\xd4\x9d\x10\x39\xfc\x48\x01\xc3\x5c\xf7\xd8\x86\xea\x8f\x3c\x7f\xf9\x0d\xfb\xc4\x05\x24\x3c\xc2\x60\x02\x78\xdb\xac\x46\x92\x78\x0a\x32\xc5\xb8\x65\x39\xdc\x71\xa0\x84\xa2\x2c\xcb\x9b\x1c\x5f\xe0\x37\x9b\xea\xb9\x53\x94\xc1\x74\x32\xe1\x59\x13\x87\xa9\xac\x57\xda\x49\x9c\x2e\xec\x26\x4c\xe0\x7b\x4e\xb4\x76\x61\xdc\x5d\x79\x68\x55\x51\x0f\xac\x05\x2b\x12\x40\x6f\x85\x86\x80\x2e\x4a\x94\xc4\x90\x52\x27\xf6\xf6\xde\xef\xd6\x3b\xeb\x1d\x58\xcf\x6f\xa0\x37\x8c\xe4\x24\xd4\x08\xc0\x19\xa7\x29\x69\xaf\x36\xe4\xff\xbd\x86\xd3\x69\x92\x47\x63\x0e\x67\x7c\xcc\x92\x3c\x1a\x88\x4d\xf8\x1b\x7f\xe0\xc3\xb7\xf4\xe0\xe4\x30\x89\xf2\x88\xc5\xd1\xcf\xda\x95\x5b\x05\xd8\x62\x59\x68\x52\xc3\xe4\xf7\xf2\xb3\x73\x39\xa9\xea\x99\xc3\xa6\x35\x52\x71\x96\xc5\x0f\x12\x16\x55\xd9\x01\x67\x16\x1b\xb0\x2f\x05\x3f\x1a\x0c\xf2\x54\x5f\xde\xc1\x24\xc5\x8b\x3f\x16\xc3\x34\x4a\xf2\xd5\xce\x82\x7a\xce\xca\xb3\x01\xda\xa5\x58\x24\x4f\x83\x71\x7a\xe7\x63\xe9\x81\x0e\xf6\xb5\x25\xef\xf6\x80\x17\xa2\xf8\xe0\x35\xc4\xb0\x1c\x04\xd6\x76\x0b\x42\x50\x25\xd7\x9f\xb6\xbf\x66\x13\x0e\xd2\x6c\x40\x26\x0d\xa1\x6e\x33\x69\x5c\x74\x75\x49\xa7\x5b\x16\x8b\x54\x59\x3d\x68\x2d\x3c\x34\x8f\xd9\xb1\x7e\x35\x9b\xa7\xd0\x6a\x2c\x10\x2a\x3b\x3b\x3b\x44\x67\x35\x6a\xfa\xe9\xa3\x83\x45\x73\x49\xf0\xc2\x6e\x18\xc5\x8b\x96\x05\x93\x8a\x02\xf7\xb7\x67\x6e\x35\xa5\xd2\xf5\x86\xdf\x9f\xa1\x79\x9f\x62\xe5\x38\x82\x60\xe1\x57\x6c\x2b\xcf\x02\xe9\x6f\x7d\xf6\x4a\x4b\x7e\x7e\x16\x80\x2f\xdb\x27\xb1\xf2\xb3\xe0\xce\xdf\x5b\x9e\x47\xae\xdf\x66\xd3\x54\xf5\x9f\x40\xe1\xe9\x0d\xee\x2b\xaf\xde\x8a\xbb\x97\xf9\x7b\x05\x96\x96\xbe\x72\xf7\x32\xa1\xd1\xcc\x46\xa0\x9f\xd2\xf7\x1f\x8c\x7b\xb5\xd6\xbd\x7f\x84\x8a\x71\x70\x8e\x44\x5d\x3f\xd7\x48\x26\x63\x98\xb0\xc1\x2d\xbb\xe6\xd5\x05\x12\xf2\x2a\xc6\x7d\x21\xa8\x6b\x03\x0e\xe5\x36\x94\xa4\x52\x90\x09\x11\xf5\x63\x14\x6e\x68\x31\x75\x82\xdc\xab\xee\x30\xc3\x00\x8f\x23\xd6\x8f\x1f\xc8\x3f\x41\xbd\x00\x91\xdb\x9e\x7e\xc1\x6f\x8d\xa9\x52\x52\x0e\x74\x3c\xd9\xf1\x34\xce\xa3\x49\xcc\x61\x18\x49\x58\x3c\xc9\x29\xd3\xde\x24\x22\x7f\x73\x39\x08\x9d\xd2\x58\x63\x2f\xfb\x98\x0a\xae\x44\x0f\xb9\x6d\x2b\xe7\x6c\x7c\x7d\x25\xd5\x4b\xf5\xac\x0d\x03\x29\x68\x07\x71\xb5\xe1\xc9\xee\xd5\x65\x1e\x7a\xf5\xb0\x84\x42\xef\xc8\xf3\x92\xee\xd2\xbc\x71\x51\x5d\x62\xfe\xbf\xe7\xb9\x06\x47\x42\x4c\xb9\x68\xb6\xd7\x5e\x95\x78\xf7\x38\x96\x49\x9c\x63\x47\xed\xb8\x63\x13\xa8\xf4\x6b\x90\xd4\x60\x6c\x35\x8c\x08\xcd\x42\x89\x3c\x8f\xca\x7f\xf0\xd7\x98\x7e\x8d\xe5\xaf\xc8\xf5\xc7\x35\xfd\x48\x60\xed\x75\xd7\x0c\xa1\xbe\x54\xbc\x4b\xc6\xc2\x96\xa0\x4e\xf9\xf0\x17\xe8\xe0\xe1\xe8\x09\xc7\x1d\x35\x16\xf4\x5d\x30\x27\x53\x3b\xa5\xe9\x08\xda\xeb\xf5\x7e\x94\x5b\x13\xf2\x8c\xcb\x47\x75\xf3\xd8\xb1\x62\x9a\x4d\xd4\xda\x8d\x6a\xb2\x0c\xda\x81\x11\x5a\x16\xce\x1c\xfa\x6a\x27\x1c\xfa\x6a\xe7\xf9\x43\x7f\xf5\x6d\x86\xbe\xda\xf9\x92\xa1\xbf\x9a\x3d\xf4\xd5\x6a\xa1\x40\x12\x84\xfe\xe9\x7c\x09\x5d\xf0\x61\xa9\x47\x97\xf5\x57\xcf\xa7\xcb\xc6\xb7\xa1\xcb\xfa\xab\x2f\xa1\xcb\xc6\x6c\xba\xbc\x9e\x47\x97\xf5\xd2\xc2\x0e\xfd\xb3\x56\x5a\xb8\x4a\xff\xbc\x7a\x2e\x45\xf5\x6d\x89\x4b\x53\xf3\xad\x52\x72\x9b\x5f\x4a\x58\xc7\x1e\xe7\x2a\x39\x74\x2f\x1d\x9c\xe0\xfd\x7a\xa1\x12\xd1\x72\xaf\x59\xb5\x2d\xc4\x39\xcc\x34\xd8\x64\x12\xeb\x10\xbf\x06\x76\x75\xc6\xd8\x8e\xd2\x01\x8b\xb9\x19\xe1\xcc\xd1\x97\x34\xe6\xff\x9e\xb2\xd8\x0b\xc8\xab\xbe\x54\x9c\xdb\x8c\xd2\xeb\x81\xd2\x3d\x77\xb7\x60\xfc\x52\xd8\x2c\x55\x9d\x78\xb2\x81\x79\x5f\xed\xa0\xbe\x71\x53\x5d\xac\x28\x12\xf4\xe9\xa9\x5e\xab\x94\x00\x51\x22\x0f\x2a\x9e\x25\x57\x7f\x72\xa6\x56\xe4\x52\x92\xe3\x84\xa1\xfd\x85\xdd\x3b\x11\xaf\x0b\x4f\xa9\x51\xdf\xcd\x34\x23\x98\xcb\x36\x54\x3a\x71\xfa\xc6\xec\xbe\xda\xc8\xf8\x24\x66\x03\x5e\x69\x56\x1a\xbf\x74\x1e\xab\xcd\xeb\x1a\x2c\xfd\xaf\x36\x48\xcd\x21\x8b\xc6\x15\x77\xcc\xd6\xb2\x23\x5b\x22\xf0\x95\x2e\x2c\x41\xa3\xd1\x80\x25\x3b\xfa\xa5\x6d\xb5\x2a\x55\x44\x5e\xa9\x88\xec\x2c\x95\x0e\x7b\xde\x6d\x54\xce\xb2\x6b\x0c\xd2\x60\xb4\x29\x0a\x06\x79\x46\xbf\xe5\x9f\x3d\x7d\x38\x0e\x2c\xa7\xba\x69\x89\xf1\x94\x8a\x02\xeb\xa9\xae\x4f\xff\x9a\xdb\x27\xf5\xd3\xbf\x82\x7a\x9c\xc5\x50\x54\xfb\xf9\x97\x4e\x54\xff\x09\xc3\x5e\xd9\x6d\xd3\x13\xe6\x3c\x6d\x74\x54\xf8\x14\xaf\xa6\x4a\x0e\xa8\xb3\xce\xa4\xa5\x27\xbf\xe0\x90\x47\x04\x7d\xa3\xa9\xa5\x78\x64\xd3\x83\x61\xe6\xad\x1c\x92\x53\x5c\x68\xd6\x9b\xd5\xbd\x29\x9c\x75\xce\x34\x27\x6e\xe7\xa8\xea\xe1\xa8\x22\x40\x9f\xb9\xf5\x34\xd4\xd2\x63\x6d\xf9\x1e\xe4\x9a\x22\x20\x4a\x86\xfc\xde\xbf\x0a\xb1\x7d\xec\x74\x0d\x7c\x8c\x82\xad\xbe\x19\x1b\x8f\x73\x8f\x56\x46\x3b\xdb\x3c\xa8\x8e\x17\x73\x8f\xfe\xc9\xbe\x0c\x6c\x5b\xa3\xe5\x9d\x83\x83\x33\xb2\xd3\x9f\xfb\xa9\x67\xeb\x84\x62\x50\x71\x5a\xe9\x55\xa7\x6e\x5a\xb7\x70\x9d\x5b\x4f\x8e\x25\xc2\xf9\x5a\x76\xd7\xa9\xe1\x49\x08\x7b\x52\x6b\x56\x53\x2e\xcc\x6e\x14\xc8\x04\x5d\x1f\xf1\xd2\x2d\x68\xea\x55\x48\x27\xff\x84\x36\x53\x27\x08\xae\x56\x35\x02\xfa\x86\xd5\x76\x50\xb8\x6a\x75\xaa\x3a\x37\xae\x5e\x83\xdf\xe0\xea\x15\x9f\x1a\x26\x43\x01\xca\x22\xe7\xba\x23\x0e\xf9\x3d\xbe\xa8\xfd\xc4\xe2\x1f\xe5\x91\xc6\x9c\x39\x98\x76\xd6\x96\x4c\xf3\xa3\x75\xa3\xfa\x11\x63\x5c\x9f\x9c\xda\x70\x9a\xcf\x02\xb2\xed\x03\x91\x47\x19\x09\x47\x6f\xab\x02\x9f\x2c\xd4\xf5\xf5\x5a\xdd\x9e\x06\xf3\x14\x04\x67\xd9\xe0\x86\x2a\x7c\x62\x31\x96\x96\xdc\x6d\x90\xf7\x90\x82\x63\xdd\xd8\xea\xc0\x12\x85\x63\x94\xe4\xa9\x41\x6e\xcb\x78\x43\x0c\x62\x36\x9e\x90\x99\x14\xab\xe6\xab\x1d\x82\x62\x0e\xcd\x08\x83\x3c\xff\x59\xec\xc4\xc6\xcd\x78\xcc\x3f\xb1\x04\x43\xc3\x49\xcc\x22\xeb\x4e\x4f\x10\x86\x91\x1c\x0c\x7a\x70\x48\x76\x42\x34\x4e\x46\x35\x15\x1e\x04\xaf\x2e\x98\xc8\x0f\xe9\xb3\x73\xdb\x15\x0d\xa3\x8c\xab\x87\x36\xaa\xd4\x66\x7e\xfd\xc4\x62\xdf\xb1\xcd\x22\x34\x8c\x32\xe3\x67\xd4\x1b\x4f\xf2\x07\x13\x77\x86\xb3\x04\x93\x8f\x8c\x59\x3e\xd0\x9a\x9f\x0a\x68\x56\xaa\xd8\xd5\xdb\xc6\x88\x9c\x8d\x59\x2c\x55\x69\xef\x65\xbb\x73\x91\x15\xf8\x0c\x86\x97\x59\x8e\x19\xc2\x83\x00\x5e\x43\x92\x6e\xd6\x4f\xd0\x29\xdb\x71\xa2\xbc\x18\x57\x41\xaf\xa9\x0d\x02\x33\x0b\xc6\x36\xd4\x5b\xf7\x1b\x2d\xfa\xaf\x14\x88\x53\xae\xe4\xa6\x57\xbc\xe2\xfc\xc2\x27\xce\x68\x61\xcc\x53\x38\xd6\x0f\x97\x28\xea\xa4\xe3\xc2\xe6\xb8\x2c\x3a\x3e\xc7\xf6\x2b\x66\xb5\x41\x53\xbb\xd9\xc6\x6a\xf4\x4e\x16\x8e\xd9\x71\x0d\x16\x47\x69\xba\x88\x41\xba\x6a\x6a\x0d\xc0\xdd\x4d\x1a\xeb\x58\x42\xc5\x21\x48\x6e\x23\xe7\xdc\x60\x6a\xeb\xfa\xe8\x3a\x7b\x4a\x37\x21\xe1\xd7\x0c\xdf\xd0\xd1\x92\x15\x6a\x3f\x40\xf3\x84\x5c\xec\x52\x2c\x2b\xcb\x84\x41\xa0\xe8\x38\x5b\xf5\x51\xf2\xf1\x58\x29\xf2\x90\x3b\xcf\x41\x75\x57\xc8\x22\x63\xbb\x62\x0f\x68\x9a\xe7\x74\x56\xa7\x9d\x6d\x06\x3b\xb4\x0a\xd0\x0b\xdc\xa8\xba\xf0\xb7\xd3\x90\x82\x9f\x58\x5c\x78\x10\x5a\xba\x0c\xf0\x7b\xf8\x78\xb2\x56\xf4\x98\x27\x69\x4d\xe9\x03\xd4\xac\x2b\xb9\x1d\x69\x41\x10\x8d\x70\xaa\x23\x41\xd7\xa6\x10\x88\x91\xf2\xbb\xf0\x4f\x2c\x76\xd9\xf0\x8c\xae\x40\xd0\x92\xb9\x09\x71\x9a\xde\xca\x25\x8a\xae\xef\x28\x37\x08\xfb\xa6\x0e\x00\x19\xdf\xb1\x07\x41\xfe\x87\x86\x6a\x9f\x58\x3c\xdf\xaf\x54\x4d\x54\x18\xa2\x84\x3d\x28\x4c\x9f\x2b\xd1\xfc\x69\x0c\xe9\x1c\xbc\x1c\x23\x3a\xcb\xff\x7d\x09\xad\xfb\x83\x03\xba\xc3\x41\x3a\x62\x3c\x20\x0a\x64\x47\x37\x47\x17\xad\x7a\x67\x6d\xcd\xfa\x59\x28\xd0\x65\x6f\xde\x1a\x9a\xfa\xe5\xef\x45\x1d\x3e\xfa\x25\x34\x06\xcf\x03\x47\xb1\xcc\x66\xd0\x41\x5b\x66\x0b\xe1\x1c\xe7\x01\x76\x38\xe1\x79\xc0\x9f\x39\x47\x17\x48\xd3\xcb\xa7\xe6\x69\xd6\xbb\xd6\x25\xd9\x5a\x1f\x66\xf4\xee\xad\x9e\x90\x19\x53\xe9\x52\xf0\x9a\xc9\xc1\x03\x3d\xe4\x9f\xb7\xf7\x51\x44\xe9\x21\xbf\x57\x71\x01\xda\x0b\x26\x30\xcf\x91\xf3\xa8\xc1\x77\x5b\xf8\xc4\x62\x53\x68\x19\xdb\x5e\x07\x39\x6f\x6e\x4a\xce\x3c\x66\x87\x9b\xef\xa7\x66\x18\xcd\x7f\xaa\x83\x97\x10\xc5\x17\x3c\x74\x11\x61\x1f\xbb\x43\x58\xae\x2e\x25\x4a\x5a\xea\x8b\x09\x9f\x3d\xed\xa0\x61\x1b\x3a\xb2\x99\xb3\x84\xb7\xad\xe5\xb3\xb8\x84\xed\xa5\xb8\x4b\x58\xed\x14\x60\x09\xdb\xb4\x1f\x2d\x41\x9d\x8f\xee\x26\xaa\xbf\x3e\x16\x52\x93\x63\x44\x52\xf2\x74\xf2\x34\x6d\xa7\xef\xae\xf3\x44\xc4\xf5\x1b\xd2\x1a\x74\xb0\x64\x6c\x05\xcc\xfd\xfe\xf1\x30\xc9\xdb\xeb\x6f\x7b\x95\x08\x96\xed\x88\xaa\x3e\x3a\xae\xd7\x99\xb3\xb0\x31\x0f\x42\x3a\x4d\x86\xc8\x98\x52\x71\x20\x12\x19\x2f\x2f\x3b\x46\x3a\x33\x18\xea\x6c\x41\xb4\xb2\xe2\xcf\x08\x26\xa2\x47\xc6\x8e\xc8\x10\x84\x1f\x90\xc9\xdd\x3e\xba\xb2\x17\xb5\xb5\x47\x50\x77\xca\xaa\xee\x9c\xe1\x93\xd0\xb0\x59\xd5\xc7\x36\xf2\x6a\xfb\xc0\x60\x05\xda\xd8\xca\xcc\x9d\x8d\x40\x69\x2b\x39\x14\x9b\x25\x9f\x02\x44\x5e\x28\x44\x22\xa8\x77\x03\xfc\x4d\x93\x32\x92\xba\xc2\xc9\xeb\x23\xd8\xcd\x57\x1c\x66\xdb\xb1\xf4\x0e\xb6\x74\xcb\xa5\x75\x5b\x7f\xde\xd4\xed\xd0\xb1\xaf\x5e\xb7\x34\x36\x93\xef\xde\x8f\x39\x47\xc5\x9f\xe8\xa8\xf8\x13\x6c\xdb\x2e\xb6\xe0\x27\x77\xda\x0b\x13\x0f\x2b\xf0\x53\x15\x69\x64\x27\xff\xa7\xaa\xef\xdc\xa2\xfb\xd4\xce\x4b\xfa\x3f\x7b\x4c\x74\xd7\xe8\xe3\x42\x30\x0d\x66\x1a\x23\x9f\xc5\xed\x22\x2f\x37\x3f\x0e\xe2\xe9\x90\x0b\xdf\xfe\xa8\xbe\x55\x66\x4a\x62\xcf\xb3\x1d\x8f\xe4\x6a\xaf\x9b\xd7\x84\x58\x64\x06\x1a\x6a\xe3\x75\xb1\x50\x7b\xc2\xf3\x90\x28\x3b\x4e\x29\xfb\xeb\x9c\xfd\x84\x5c\xd2\xca\x30\x72\xb6\x58\x17\x2b\xf7\xf3\x6f\x8a\x19\x72\x81\xbf\x55\xde\xf0\xfb\x1f\xb2\x28\xe7\x4a\x6c\xea\x0d\x36\x2d\x79\xec\x66\x42\x21\xd3\xc9\xa5\x92\xaa\xf7\x6c\x9f\xed\xdb\x3d\x0a\x08\xa5\xce\x6c\xf6\xf5\x50\x5d\xb5\xd5\xc6\x4e\x5f\x4d\x37\x57\x0c\xa6\x75\xb8\x6c\x4d\x0d\xd5\xb3\xbd\x29\x08\x02\xa0\x19\x08\x05\x17\x5d\x1f\x7a\x20\xad\x45\x2e\x57\x78\xc1\x2f\x31\x0c\xaf\xa6\xaa\x35\xed\x86\x67\x80\xdb\xa2\xf9\x17\x43\x65\xae\xbb\x13\x96\x09\x2e\x17\x29\xfe\x71\x98\xe4\xca\xdd\xac\x21\xa6\x7d\x91\x67\xb8\xd7\x74\x6a\xd0\xa9\xd6\xa0\xbd\x6e\x07\xed\x9e\x18\x09\x44\x35\x58\xae\x72\x5b\x33\xa1\xc5\xf1\x2d\x24\xd5\xf3\xaf\x88\x22\x8f\x1f\xa6\xf9\x68\xe3\xb9\x0c\xa1\x79\x31\x8e\x72\x75\x56\x28\xfa\xcc\xd5\xca\xf8\xa0\x8a\x5f\x0b\x40\x7d\x1d\x4e\x0c\xa2\xe8\xeb\x31\xc1\xe6\x81\xfb\xde\x33\x7a\x25\x27\x92\x2f\xec\xd6\xa2\x3a\xb7\x89\xef\x97\x8c\xae\x26\x5f\x3f\xbe\x52\x37\xc8\x67\x0c\x50\xaa\x8c\xbf\x6a\x7e\xa5\x7a\xf8\xeb\xa6\xb8\x20\x16\xf1\x21\xb6\x2b\x10\xe9\x43\xa5\x1c\xb7\x50\x22\x36\x9b\xea\x10\xf0\x5f\xee\x83\x6e\x7d\xd3\x94\x96\xbc\x49\x9d\xf7\xc0\x1d\x66\xdd\x78\x3a\xf2\xaf\x35\xb3\xd7\xe0\x58\x3e\xff\xf5\xaa\x13\x56\x35\x7d\x96\x15\x2c\xb5\x16\xb0\x5f\x87\x64\x1a\x44\xaf\x09\x22\xe5\xb8\x88\x47\xe2\x20\x4a\x64\xdb\xd4\x37\x48\x99\x7e\xb4\xb1\x77\x67\x47\xd9\x3e\xbc\x56\x85\x97\x98\x06\x71\x2d\x55\x4d\xbb\x92\x03\x8e\x33\x63\xe5\x73\x15\x28\x90\x4e\x25\xcf\x21\xd8\x74\xea\x47\xdf\x2c\xc9\x69\xe7\x67\x94\xd6\xd7\x62\x8a\x63\xcb\x67\xba\x48\xce\xaa\xca\xd7\xac\x32\x64\xa8\x48\xb2\x7c\x58\x12\x77\xcb\xdd\x30\xdd\x4b\xd1\x60\xc7\x2c\x65\x1f\x4c\xf4\x5a\xdc\xf8\x4a\x36\x3c\x05\xa5\xe2\x6d\x6f\xb0\x03\x2d\xcc\x99\xe6\xbc\xd0\xff\xfc\xd9\xd8\xdd\xf1\xb5\xb8\xfd\xfd\x05\x37\x58\xce\x73\x4f\x5a\xc8\xfa\x2d\xf9\x9c\x57\xec\x4f\x79\x43\x7e\x33\x77\xfc\x59\x3e\x92\x24\xbe\xb5\xc7\x5d\xb9\xfc\x0e\x7d\xf8\xbe\xc0\x5f\xf2\x8b\xc1\xcf\xf3\x9d\xfc\x62\x60\x5f\xe1\x47\xf9\xc5\x7d\x14\x7c\x2a\x9b\x4d\xf8\x81\xc2\x97\x6f\xc2\xd8\x44\x56\x4f\xd2\x1c\x72\x76\xcb\x13\xba\x54\x61\x03\xcc\x0c\x01\x91\xb7\x23\x86\x28\x39\x45\x5f\x34\x45\xbf\x91\x8f\xa6\xde\x42\x9f\x87\xcb\xef\xe8\xac\xf9\x2d\x9e\x1a\x94\xb9\xd3\xfc\xf5\xec\xe4\xd8\x77\x14\xc2\x2f\x15\x4f\x4d\x50\x22\xe1\x61\xc2\x37\xcd\xe3\x78\x8a\xc4\x39\x64\x39\xdb\x84\xd0\xde\x88\x77\xa7\x36\x25\x43\xe3\x8a\x65\x99\xbe\x33\xaf\x41\xab\xf8\x2e\xde\xf1\xce\x35\xca\x8b\xff\xaa\xc1\xf7\x47\x40\xe9\xa6\xfd\x0d\xac\x8a\x12\xdc\x62\x13\x54\x34\xac\x4b\xa5\x86\x9e\x32\xaa\x07\x70\xde\xe6\xf0\x44\xfd\xe2\x5d\x70\x71\x04\xc6\xe9\x69\x06\xfe\xe4\x03\x61\xae\xab\x2d\xce\xea\x72\xd9\x4d\xef\x76\x71\xb9\xe0\x78\x59\xea\x4b\x6f\xe5\x35\x2e\x4f\x1b\xce\x85\x3d\x5a\x1f\xa2\x4c\xe4\x12\x63\x3a\x9a\x69\x7b\x97\x2c\x1a\xa4\x43\xfe\x21\x8d\x92\x5c\x65\x59\x32\x05\xf8\x82\xfe\x03\xcf\xce\xf8\xbf\xa7\x3c\x19\xc8\xa6\x15\x0b\x67\x07\x5a\xf7\xbd\x83\x2a\xbc\x81\x57\x8a\xb9\x36\xc3\xe2\x7d\x2c\x5e\x35\xbc\x57\xa8\xf0\x16\x2b\x74\x1c\xcb\xc4\x26\xb4\x6d\x04\x8a\x48\xdd\xfc\x78\x48\x6c\x7b\xce\x08\x3a\xed\xdf\x20\x4d\x86\x12\x6c\x8d\x72\xd5\xd0\x9f\x94\xaf\x46\x7d\xe6\xe3\xc9\x9e\x1e\xa9\x5e\x9c\x7a\xbb\x08\x3b\x71\xad\x28\x28\x0f\xda\x9b\x0e\x8e\x14\x42\x4d\x8f\x63\x1b\x5a\xf7\x1b\x2d\xdf\xee\x02\x1e\x51\x4d\x5d\xa7\xc6\xe3\x4c\x6b\x0c\xf6\xd7\x71\xfb\xb3\xa3\xd3\x93\x07\x2b\xd0\xbe\x0c\x30\xaa\x38\xd5\x5e\x42\xeb\x7e\xaf\xa5\x7c\xc4\x4a\xb0\xf3\x88\xe1\x4f\xab\x6c\xda\x3e\xa8\xc2\xb6\x1c\xd7\x3a\x7c\x86\x10\xee\xea\x41\xd5\x83\x85\x17\x20\x1e\x3c\xbc\x78\x3d\x08\xfb\xf4\x69\xe2\x4f\x87\x5b\xeb\xf1\xf9\x54\x5a\xfd\x32\x2a\x19\xce\x70\x2a\x74\xbe\x84\x8c\xa8\x2f\x59\x28\xbf\x92\xca\x9a\xc8\x7b\xe5\x44\x76\x66\xc0\xef\xf2\xb9\x13\x70\x40\xe8\x7a\x25\x12\xe4\xfe\x46\x8b\xbc\x93\x0a\x6d\xf6\x0f\x0e\x0e\xaa\xbf\xc3\xbc\xbd\xfa\xc6\xf3\x66\xd7\xb9\x53\x63\xf5\x1b\xce\x2c\x16\x3b\xbd\x7c\xa3\x99\x6f\x77\xe6\x4d\xfd\x5e\xe9\xd4\x3b\x6c\x11\x20\xf4\x3c\xbe\x38\x38\x20\xc6\x28\xf2\x45\xbb\xed\x3a\x39\x7c\x8b\xe9\xf7\x12\xc1\x49\x74\x1c\x50\x41\xbc\x69\x54\x18\xef\x38\x0c\x23\x95\x6a\x8f\x27\x3c\xa3\x14\x70\x2a\xf4\x99\x69\x2a\x52\x88\x12\xc1\xb3\x1c\x98\x6d\xaa\x3c\x4f\xd1\xf7\x71\x70\xc3\x32\xa8\x7c\x5c\x39\x38\x38\xd8\xaf\x62\xbc\x7c\x36\xfc\xc4\xe4\xde\x91\x26\xf1\x03\xb4\x71\x4f\x59\x28\x0e\x0e\x89\xb3\xaf\x0a\x4a\x36\xbf\xb6\x7b\xe8\xf4\x87\xa3\x29\xeb\x0d\x07\x55\x31\x7a\x7c\x22\x75\x4c\xa8\x88\x69\x96\xa5\xd7\x72\x54\x13\x16\x65\x30\x94\x38\x55\x0b\x88\xd4\x25\x26\x6d\xe5\x50\x02\xa8\x7a\xa8\x0c\x7c\x4e\x7f\x3b\x3b\xd0\x6e\xa9\x69\x3f\x80\xcf\x6a\x59\x17\x81\x49\x58\xfb\x7b\x72\xc1\x3b\x1f\x55\x33\x77\x76\x8a\x7d\x28\x53\x23\x3e\xb8\x0f\x68\x11\xdc\x03\x0c\xb9\x6c\x64\xd8\x42\xc5\x83\xc8\xb8\xd0\x61\x6a\xdf\x32\xc1\x87\x90\x26\xf8\x00\x65\xb3\xd9\x14\x39\x1b\xdc\xa6\x9f\x78\x36\x8a\xd3\x3b\x7c\x86\xc2\x9a\x9d\xce\xeb\x57\xaf\x3b\xaf\x3b\xcd\xf5\x8d\xd6\xeb\x57\x9d\x9a\x97\xfa\xe7\x2e\xca\xd1\x91\x0b\x9d\xc7\xd2\x3b\x2e\x72\x88\xa3\x71\x84\x0e\x54\x14\xbf\xb6\x46\x49\xcd\x14\xe1\x80\x65\xd7\x02\xdf\xbd\xfc\xc0\xe1\x3a\x85\x36\x8c\xd9\x75\x12\xe5\xd3\x21\x87\x98\x0b\x95\x3b\x4b\xb0\x11\xcf\x1f\x30\x3d\xd4\xfb\xdd\x7f\x5c\xed\x9e\x7e\xff\xf1\x7d\xef\xf8\xfc\xcc\x4d\x13\x25\xc1\x39\x2a\x5c\xe9\x50\x1d\x46\x10\xe1\x83\x04\x5b\x52\x7c\x96\xa0\xde\xd0\x86\xfd\x06\x1a\xaa\x72\x80\x97\x1a\xe7\xde\x0d\xcb\x64\xdf\xca\x1b\xfe\x4c\x9d\x3c\xdc\xde\x9b\x4d\xf5\x9a\x9d\xdf\xe7\x19\x03\xd2\x4a\x5d\x27\x91\x7d\x1c\x81\x3c\x71\x61\xf2\x37\x61\xdf\xbf\x2f\x4a\x65\x1c\x70\x6e\xe8\x0d\x04\xbf\x1f\x60\xf2\xce\xc5\x86\xa7\x7a\x1a\x97\xf1\x48\xd9\x99\x1c\xad\x33\xe6\x89\x45\x1f\x83\x35\xcc\x46\x5f\xf1\xaa\x1a\x45\xc8\xb9\xda\x23\x93\x1e\x4c\xcc\xa0\x94\x63\x51\x31\xf4\xca\xb8\x28\x5a\x92\xe7\xa9\xdd\x34\xb2\x5c\x8f\xec\x29\x2d\x3c\xb4\xee\x23\x38\xb2\xf0\xf3\x64\xe8\x99\xf7\x33\xca\xdc\x59\x42\x82\x8a\x8a\x4f\xf8\x92\x54\xa5\x70\x04\x79\x89\x55\xfa\x0f\x3a\x84\x27\x70\xd7\xef\x4f\xe7\x20\x4e\x0b\xc5\x09\xea\xa1\x8d\x42\x74\x96\xf3\x9f\x3b\xbb\x4e\xe5\xca\x72\x64\x5e\x0f\x7b\xde\xd9\xc8\x89\x44\x08\x95\x3c\xd8\xe6\x65\x45\x22\x3d\x97\x02\xb2\xc9\x4a\x17\xf2\xf4\x1d\xbf\x2f\x1f\x73\x3a\xcd\xc3\x73\x9e\x79\xc5\x39\x67\xdc\x28\x55\xbd\x10\x9c\xae\x27\x71\x61\xc5\x95\x5d\x29\x21\x88\x86\x17\x01\xb3\xf3\xf4\xfa\xa3\xe3\x8e\x64\xbf\x15\xd0\x7f\xa3\xce\x05\xcb\xd0\x59\x5b\xaf\x96\x2f\xa8\xe2\xab\x2c\x1c\x9f\xfb\x28\x8b\x06\x3c\x7b\x8e\x7d\x6b\xb5\x9e\xca\xff\xf9\x1f\x7d\x7c\xa5\xe9\x2a\xbe\x0e\x7f\x83\xed\x37\xe1\x7f\xfe\x87\x27\xc3\x82\x47\xbe\xff\xde\x60\xa5\x6b\x42\x66\x04\xb5\xbc\xf7\x08\x4e\x9c\x6f\xf5\x78\xdd\x11\x5d\xba\x26\x01\xf2\xdf\x9a\xdb\xfe\xe4\xcf\xa0\x37\x53\x83\x46\x12\xf4\xe4\x30\xa6\xfb\xe8\xa1\xb4\x17\xf5\x82\x9c\x6a\x10\x7d\x16\x4c\x1e\xd3\xb7\xd3\x91\x71\x5b\xd7\x89\x60\x7c\xde\xf9\xc2\x20\x95\x04\xf3\x99\x71\x2a\xa9\x32\xc5\x74\x5e\x80\x65\x93\x9a\x76\xcc\x6e\x39\x88\x69\xa6\x82\x0e\x2a\x73\x6f\x24\x92\xa5\x1c\xf2\xec\x21\x4a\xae\x3d\x9b\x30\xc6\x16\x45\x5b\x30\x85\x47\xf6\x03\x20\x2a\xf7\x8b\x8a\xb6\xaa\xf1\xfb\x92\x08\x54\xfa\x7a\xe7\x2f\xd0\x26\x57\x80\xd0\x84\x3d\xeb\x91\x05\xd5\x88\xe8\x95\xf0\x34\x4a\xf2\xa5\xe0\xc2\x68\x45\x76\x48\x93\x85\x3d\xce\x08\xfe\x6e\x46\xc5\x06\x03\x2e\x04\xf4\xf9\x43\x6a\xd3\x5f\x53\xe3\xa5\xf2\x5b\x2f\xed\x4f\x74\xd4\x73\x97\x90\xf3\xd5\x0c\xdd\x3e\x19\xaa\x41\x92\xee\x62\x4c\xee\xe0\x4a\x3e\xb8\x85\x99\x11\x28\xc4\x94\xa3\xe0\xb4\xa0\x1c\x82\x97\x76\xea\x9a\xfe\x9d\x8c\x21\x8a\x05\xd5\x1d\xf3\xa5\x89\xe3\x13\x3b\xbe\x73\x81\x8a\xb0\xb2\xa2\xa5\x96\xc2\x48\x9e\xab\x64\x8b\x65\xa5\x6b\x55\x5d\x77\xcc\x15\xaf\x03\xba\xc4\x5e\x96\x1d\x04\xfa\xe7\x27\x16\xcf\x25\xf1\xdb\x52\x12\xbf\xfd\x3d\x49\x4c\x83\xfa\x22\x42\xfb\xe9\x59\x20\xa4\x45\xbd\x6e\x5b\x16\x69\xaf\xe8\xed\x22\xa6\xae\x7b\x9e\x4f\x6d\xaf\x87\xaf\x22\xfc\x46\x19\xdd\x37\x2c\xd9\x9f\x47\xea\x67\x70\x6b\xbb\x40\x3b\xc7\x8f\xc8\x30\xe8\x3c\x54\xdb\xeb\xe5\x0b\x11\xbf\x7f\x7b\x84\x3b\xcf\x41\x58\x9d\xff\x9d\x29\x69\x5f\xca\xe3\xff\xc6\x7c\x89\xd2\x5e\x2f\x67\x78\xfc\xfe\x3b\x0e\xa5\xe2\x8d\x05\xf1\x86\xcf\x10\x0e\x68\xee\x50\x56\x3b\xe5\xb3\x82\xdf\xbf\xfd\x50\x5e\x15\x65\x9d\x1e\x8b\x37\x98\x2a\x98\x44\x52\xe5\xf3\x33\xab\xbc\x83\xe5\xed\xf5\x6a\xd5\x3c\xba\x0c\x6a\xac\xca\x95\xa6\x4e\xb1\xad\xd6\xfc\x89\x5e\xed\x94\x4f\x34\x7e\xff\x5d\xa9\xe3\xcd\xb4\x8b\xbf\x1a\x66\xa5\x94\x4e\xed\x75\x4d\xa8\x52\x32\x19\x32\x86\x14\x9a\x4d\x95\xd2\xfd\xf4\xcf\xed\xf4\x39\xdb\x29\x80\x69\xb8\xd1\x72\x52\xc3\xc1\x4e\x57\x96\x54\xe9\x09\x9d\x3a\x55\x4e\xd2\xbb\x4a\xa7\x06\x1b\xb0\x0c\xee\x83\xe6\xe7\xed\x0c\xa5\x3b\xf2\xef\xbd\x21\x7f\xcd\x24\x45\x7e\xd8\xb5\xb2\x09\x2a\xdf\xa9\xf1\xb2\xcd\x58\x49\xbe\x66\x27\xfe\xcf\x4d\x55\x61\x0f\xff\xdd\xb6\x70\x6c\xe4\x8b\x96\x97\x64\x6d\xaf\x96\x0a\x1e\x77\xeb\xa9\xb4\xee\x47\x23\xf5\x4e\xd8\xb4\x5e\x91\xc7\x84\x65\xa8\xb7\xe7\x0a\x90\x32\x4d\xe0\xf7\x54\x04\xca\xc5\xc1\x1c\x5d\xc0\x8e\x5a\xbf\x5e\xda\x40\xd1\xfb\x06\xc1\x7c\x56\x96\x69\x34\x8b\x6e\x3e\x35\xdb\x65\xba\xc3\xef\xa9\x3a\xcc\x5a\x43\xed\x90\x00\xbf\xc5\xe0\xcb\xb4\x8d\xff\x88\xb2\x51\xa6\x6b\xcc\xd7\x34\x66\xe9\x19\xe5\xc5\xab\x58\xdc\x79\x35\x77\x1d\x94\x69\x17\xff\x79\xe5\x82\xf0\x9e\x47\x93\xe7\x6a\x15\x05\x9a\xcc\xa6\xc6\x41\x9c\xb2\x12\xc5\x42\x7f\xfe\xed\xa9\x61\xbd\xb5\x39\xe7\xaf\xd7\x5e\x21\x56\xca\xff\x48\xb7\xc1\x8c\xb8\xd0\x59\xad\xc1\x9c\x79\x45\x94\x8b\xf3\xaa\x3f\xff\x31\x46\x42\x59\x7c\x9f\x1a\xca\x7e\x3a\xed\xc7\xbc\x38\x2b\xe6\xfb\xb7\x1f\xcc\xc6\x57\x4f\xcb\x9a\xdc\x82\x9f\x1a\x4b\x71\x5e\xcc\xf7\x3f\xc6\x58\xd4\xc4\xd8\xc1\xf8\x36\xbb\xc3\x24\x57\xe6\x6e\x95\xbe\xd2\x33\xde\x8d\xd9\x7d\x0d\xc6\x51\x32\x2f\x8c\x12\x06\x15\x2f\x0f\x26\x4e\x36\xb5\xb2\x70\xe2\x61\x00\xc0\x25\x2f\x49\x2d\x05\x18\x52\x8f\x16\xa7\x1c\xb6\x09\x87\x19\x29\x90\xc2\xdc\xba\x36\x38\xac\xe3\xb6\x5a\x62\x27\x74\xfd\xcb\xca\x41\xd3\x1b\x35\x37\xbc\xcb\x0c\xc3\x20\x1a\x48\x8b\x96\x41\xf7\x73\x25\xa0\xef\x6c\x6d\x59\xa5\x19\x86\x15\xfc\xe3\x5b\xdb\xb3\x54\xdc\xa8\xb7\xea\x22\x63\x8e\xbe\xa9\x5e\xd5\x83\x61\x14\xfb\x5a\x69\xd6\x40\x34\x60\xe3\x0c\x38\xf7\x44\xe4\x6d\x12\x2a\x01\xb1\x7a\xc9\xfd\x35\xe7\xa5\xc2\x41\xa9\xab\xd9\xa9\x49\x2a\xb6\x01\xed\xda\xc3\x4c\x03\xe7\x94\x30\x77\x8a\xdf\x96\x4f\xf1\xdb\xff\xc7\xa7\xd8\x3f\x68\x29\xc0\xfe\xdc\x97\x4c\x50\xf9\x9c\xd7\xeb\xf4\x22\xf3\x3f\x3e\xd7\x1b\xa5\x53\xbd\x51\x98\xe9\xaf\x9c\xdd\x32\x91\x3f\x73\x12\xda\x35\x90\x07\x24\x45\xf7\x60\xed\x54\x2c\x21\x47\xa3\x6a\xc9\x88\xcb\xdf\x5b\x9a\x21\x85\x07\x28\xbf\xe0\x3f\x31\xdc\x0e\x0d\xf7\xd9\x03\x2e\xa8\x95\xa6\x8e\xec\x7e\xa3\x8c\x26\x9d\xa7\x68\x32\x63\xa9\xd3\xc9\xea\x0f\x4b\x13\x33\xde\xd9\x24\x99\xcd\x27\x4f\xd0\x24\x3c\x6e\xf9\x05\xff\x09\x9a\xbc\xd2\x34\x29\xa7\x0b\x9d\x9c\x3c\xda\x74\x5e\x15\xeb\x74\x82\x3a\xf4\x6a\xf3\x19\x3c\xf5\xa5\xeb\xf0\xd5\x53\xf4\x9d\xc1\x73\x74\x84\xfb\xe3\xd1\xf7\x19\xb4\x0d\xe9\x56\x46\xdb\x90\xfe\x25\xfc\xbb\xfa\x6b\xe9\x5b\xae\x9e\xfd\x66\xda\xd9\xcc\xad\x99\xbc\xe0\xfc\x7d\xb9\x52\xb2\x31\xab\xe7\x28\xcf\xdf\x9a\x09\x70\x5d\xee\x14\x75\xfc\xbb\xb0\x41\xb7\x4a\xf5\x31\x31\xed\xff\x36\x1a\x99\x55\xe8\xb7\x69\x33\xc7\x9e\xf4\x3b\x8f\x60\x0f\x97\x88\x5f\xfa\x21\x7f\x41\xa1\xe6\xc6\x16\x2a\xdb\xf9\xfd\xad\x5f\xd2\x5f\x12\x50\xb6\xfd\xf5\x6a\x40\xb9\xc6\xf7\x9b\x29\x7c\x7f\x44\xae\x79\x42\xad\x9b\xc9\x42\xbf\x56\xc9\xfb\x32\xf6\x59\xf9\xa3\xb2\x4f\x51\x89\xfc\xcf\xea\x90\xaf\x47\x35\x8a\x80\xe7\x9f\xb9\xd1\xf7\x46\x77\x8b\xa6\xf8\x15\xf5\x73\x25\xd4\xde\x7f\xad\xc6\x39\x4b\xe1\xfc\x8f\xeb\x9b\xaf\x71\x8f\x53\xe1\x01\x7f\x7f\xad\x73\x96\xd2\xf9\x1f\xd7\x39\x9f\x49\x97\xdf\x4a\xf3\x9c\xa5\x78\xfe\xc7\xf5\xce\xd7\x46\x2f\x72\x43\x4e\x7e\x1b\xbe\xf9\x72\x05\xb5\x5c\xd1\xfd\x32\x0d\xa9\x54\x01\xfd\x8f\xeb\x9f\x33\xe9\x3c\x47\x7c\xd1\x7f\xcf\x12\x62\x7f\x1c\xcd\x35\x30\xce\xf6\x7a\xbd\xd7\x6b\xaf\xbe\xc8\x40\xfb\x6d\x8c\x9c\x1e\xac\x39\x5e\x99\xb3\x2c\xa4\x3e\xff\xe0\x55\x45\xf9\x28\xe2\x28\xcf\x63\xde\x4b\x86\x11\x4b\xbe\xad\xd2\xe4\x52\xb0\xb4\xeb\x57\x35\x58\x6d\xbc\x6a\x75\x36\x3a\xab\xaf\xd6\xd7\x57\x37\xd6\x3a\x1b\x1b\xeb\x7c\x65\x75\xa3\x06\xf5\xf2\x02\x13\xfe\x5d\x99\xdb\xef\x6c\x00\x99\xb9\xc3\x52\xb7\x22\x5f\xb4\x16\x4b\xee\xaf\xbc\xef\xf3\xd7\xa2\xea\xc8\xb6\x28\x5f\x5c\x74\xd1\x61\x9a\x3e\x81\x4d\x89\x64\x30\x97\x50\xdf\x02\x1b\x75\x55\xe1\xa1\xe3\x77\x47\x77\x2b\x7f\x38\x4e\xda\xa8\x41\xbb\xf1\xfa\xbb\xd7\xeb\xdf\xad\xb6\x57\x5f\x6d\xac\x77\x56\xdb\x6b\xaf\x7b\x2b\xab\x2d\xc9\x4a\x33\x4a\xbe\x96\x97\xd4\x45\x4e\x91\x97\x36\x66\xcf\x5e\xd9\xb5\x9b\x5f\xf0\xfc\xf9\xa3\x26\xbf\x92\x9d\xca\xee\xce\xfc\x82\x6f\x83\x50\x19\x47\x51\xba\xa7\x07\x95\xae\x41\x07\x15\xa7\x5f\x18\x46\xbe\xdb\xaa\x81\x48\xa7\xd9\x80\x07\x3f\x7b\xc9\xb0\xeb\x47\x2d\x2e\x4b\x68\x81\xc1\xe6\x9d\x6c\x16\x93\x07\x08\xf2\x4b\xa8\x60\xf5\x65\xa1\x10\x66\x27\x95\x28\xbd\x61\x33\x77\x5e\xe2\x46\x27\xb8\x2a\x24\x2b\x79\xa1\x9e\x25\x94\xbe\xc2\x51\xe1\x16\xd4\xb1\xa9\x2c\x6b\x1f\xbe\x48\xb5\x68\x63\x0e\x02\x37\x89\x42\xd5\x1d\x14\x04\x85\xba\x2b\xa7\x4a\x58\xbf\xe5\x3c\xa1\xd8\xb1\x01\x20\x66\xbd\xa6\xc0\x78\xdc\x93\x07\x68\xd1\x3b\x9a\x2d\xb8\xe3\x4b\x19\x87\x61\x9a\xf0\x20\x5d\x85\x6a\xef\x24\x54\xb0\x43\xf1\x62\x19\xeb\x08\x16\xe5\xc1\xd1\x75\x06\xda\x03\x96\xb3\x18\xb8\xa4\x3b\x0c\xd2\x84\xf2\x46\x8a\x12\x02\x6d\x3f\x95\xb2\xc8\xad\x5c\xbc\xa8\x7c\x2c\x4b\x5e\x21\xdc\xf4\x0f\x5f\xbf\x9f\x9b\xa7\x2e\xe5\x2d\x0d\x97\x17\xd0\x22\x12\xec\x66\x1c\xee\x38\xa4\x69\xff\x8d\x37\x69\x1e\x52\xf3\x79\xc8\x06\x4b\xf2\x49\xe6\xe4\x81\xf0\x1f\xda\xcc\x6b\xb6\x62\x62\x68\x04\xb9\x8a\xdd\xac\x12\xe5\xb9\x2a\x9c\x40\x5e\xa5\x91\x95\xe5\xb2\xfd\x21\xca\x6f\xa2\x64\x46\x10\x68\x95\x93\xb8\x3f\x8d\xe2\xbc\x1e\x25\x70\x77\xc3\x13\x60\x9f\x58\x14\xb3\x7e\xcc\xa5\x4e\x26\x04\x46\xd9\xce\xd2\x31\x1c\xf6\xda\x6d\x63\x7d\x70\x60\x57\x66\xc9\x83\x20\x0a\x76\x11\x77\xcd\x1d\x2e\x39\xe4\x90\x42\xa2\x3a\xe8\x0e\xb9\x18\x70\x4c\x5b\x4a\x42\x09\x31\xa3\x0c\xac\xc1\x43\x35\x49\xc4\x3a\xb4\x6d\x5c\xd4\x7a\xdd\x49\xa0\x4e\x7d\xe0\xeb\x33\xa7\xbb\x4b\xed\xfe\x15\xe9\x69\xb9\xb4\x31\x6a\xdc\x98\x2c\xa5\xe4\x16\x3c\xa7\xb0\x32\x5e\x1f\xfa\x7d\xe9\xcc\x47\x53\x35\xaf\xba\xce\x2d\xe2\xc4\xeb\x72\xf2\x31\x93\xe4\xff\x28\xd8\x35\xc7\x04\x14\x14\x6c\x11\x03\xb4\x47\x71\xac\x42\x33\x5e\x38\x91\xc1\x78\x32\xbc\xbc\xac\x96\x54\xa5\xbf\x9f\x55\x95\xe2\x0c\x15\xaa\xfa\xc1\xdb\x0a\x7b\x88\x6c\xea\xee\x21\xf8\x9b\xa2\x8c\xba\xb9\x90\x0a\x31\xf5\xde\x61\xca\x5b\x9d\x6c\x7c\xc0\x04\x17\x9b\xcf\x0b\x58\x1f\xb9\xa9\xca\x75\x30\x9e\xb0\x92\x17\xb8\x48\x18\x62\xfb\x49\x83\x60\x46\xf2\xd7\xb2\xb0\xee\x5a\x52\xcf\xed\x48\x73\xe8\x4c\xb0\xce\x43\xbe\xb2\xc0\xdd\xce\x4a\xf7\x2a\x14\x3b\x2d\xdd\x61\x4d\x1b\xeb\xba\xa2\x1b\x06\xdd\x87\x9d\xb8\x23\x93\x48\xd8\xad\xbd\xa7\xaa\xd8\x88\x67\x4f\x20\xf1\x9c\xc0\x52\x8f\xae\xc9\xd4\xdd\xca\xda\x7e\xd8\x1d\x7c\x49\x4e\x71\xcf\x07\xea\x6d\xe9\x6e\x5e\x31\x51\x08\xf0\x89\x5e\x21\xc2\xf8\x06\x8e\x00\x9b\x6e\x43\xbb\xb3\x51\x75\x23\x95\x87\xb1\xca\x55\xe8\x32\x37\x28\x05\xee\x9f\x22\x87\x09\xcb\x6f\x36\xe1\x50\xe7\x8f\x19\x45\xb9\x50\x41\xc5\x40\x4a\xcb\x98\x92\x3c\xd4\x80\x12\x77\xb2\x1c\x92\xe9\x98\x67\xd1\x80\xf4\xba\x86\x81\x47\xee\xa6\x12\x9f\x20\x6a\xc5\xd7\x66\x0f\xe8\xac\xad\x39\xef\xed\x0f\x13\x8a\x5f\x81\xbb\xa7\x00\x96\x71\x7c\x74\x28\xf5\x6c\xc4\x55\xc5\x07\x93\x7a\x21\x0c\x58\xa2\x32\x3f\xe1\x31\x81\x72\x37\x37\xca\x36\x71\x57\xc7\x50\xea\x4d\xf1\xb3\x23\xb3\xcb\x37\xe9\x93\x27\x92\x4d\xcd\xc9\x66\x2c\x7b\xf2\x13\x40\x75\x6d\x22\x28\x93\x07\xaa\xfc\x31\xaf\x8b\xe5\xa6\xce\x17\x65\x53\x41\xbd\xf8\xc4\x94\x0f\x7b\xd7\xa6\x7f\x8a\x66\x08\x9f\x60\x1e\x4c\x48\xee\x39\x0f\xba\x95\x49\x45\x5f\x27\x94\x6f\x2d\xee\x03\xed\xb2\x94\x18\x0a\xd2\x1b\x03\x01\x60\x73\x7e\x96\x0e\xef\xb1\xbb\xf3\x6e\xdb\xac\x35\x2c\xf2\xef\x1c\x4a\x57\xf0\xb9\xc9\x60\xbe\xb8\x44\x26\x29\xf3\x98\x08\x60\x69\x11\x22\xb9\x0e\x88\xe9\x30\x73\x85\xd6\xeb\x95\x73\x9b\x27\x6c\x0c\xbd\x5a\x86\x56\x5a\xdb\x29\xa5\x99\xd9\x90\xf5\x20\x2e\x22\xf8\x8b\x1c\x94\xb3\x43\x2f\x14\xf3\x4f\xca\x0d\xa5\x77\xf4\xa1\x77\x0a\x07\x1f\x8f\xf7\xce\x0f\x4f\x8e\xcf\xe4\xb7\x6e\xf0\xdf\x02\xc6\xe2\x38\x3c\xfe\xfb\xee\xd1\xe1\xfe\xd5\xdb\xdd\xb3\xde\xfa\xab\xab\x53\x79\xb2\x6b\x5e\xfc\xf7\x4a\xb3\x55\xff\x6e\xb7\xfe\x2f\x56\xff\xb9\x7e\x75\xd9\xbc\x2e\x84\x86\x1b\xc4\x9c\x25\x18\x36\xd6\xec\x62\xc7\x18\x7f\x85\xdd\x72\x41\x69\x1c\x41\x44\xd7\x89\x00\x26\xdc\xac\x34\x6f\xb1\xb5\x99\x2b\x93\xe9\x50\xe4\x59\x43\x4c\xe2\x28\xaf\x2c\x75\x97\xaa\x17\xad\x4b\x07\xa6\x94\xc5\x13\xf2\x0d\xd4\xb4\x96\x12\x90\x0d\x72\x9e\x09\xca\x5d\xff\x7f\x12\x0c\x3d\xf3\x7f\x9c\x54\x38\x26\x60\x2e\xf6\x58\xff\x49\xc0\x30\xe5\xf8\x08\xd9\xeb\x94\x72\x25\x9a\x64\x8a\x05\x7a\xd4\x60\x69\xa9\xea\x20\x33\x48\x93\x4f\x3c\xc3\xcc\x3b\x12\xbe\xa0\x50\x28\x4e\xc6\x86\x3c\xb5\x89\x39\x65\x07\x6e\xea\x06\x37\x71\xa7\x06\xc8\xe2\x38\xbd\x13\xc8\x1c\x49\x9a\xd4\x27\x6c\x38\xe4\x43\x85\xb5\xe9\xa4\xa2\xd5\xd2\x3c\x63\x51\xac\x24\x76\x75\xc6\xe0\xd4\x3d\x9d\xd3\x79\x21\x57\xad\x19\x3f\xac\xc0\x52\x77\xc9\x8f\x41\x20\xf2\xcc\xb3\xe0\x60\x34\x06\xa8\x38\xb6\xca\x04\xc8\xf5\x5b\x8f\xa7\x25\xd7\x46\x62\x33\x55\x92\xbd\x55\x3f\x61\xf7\xbf\x87\x41\xfa\x54\x80\x63\x1b\x82\x78\x9a\x44\x3a\xb4\x0b\xfe\x89\xb1\x64\xe5\xbf\x9f\x3f\xc3\x61\x32\x8a\x92\x28\x7f\x58\x08\xa2\xe9\x85\x19\x54\xfd\xe0\xe2\xba\x90\x0d\xcf\x4c\x50\x20\x13\x7e\xcf\x15\x3e\x14\xe8\xef\x99\xf1\xc4\xdd\xb8\x3f\xaa\x3f\x67\x63\x8e\xd4\x7d\x6e\xb3\x29\x65\x84\x0d\x46\x34\x48\xc7\x93\x34\xe1\x2a\xa0\x53\x31\xb0\xd1\xbe\x8a\x25\x36\xf0\xc2\x45\xf5\xbc\x60\x51\xcd\x26\x65\x75\xc3\xd8\x4b\x77\x4c\x00\xc3\xc1\x39\x9a\xc0\x0b\x6f\xb0\xc1\x8e\x9e\xa4\x58\x1d\x1e\xb8\x8d\x2a\x55\x82\xc8\xdb\x83\x20\xac\x5c\xb3\x09\xd3\x84\xdf\x4f\xf8\x20\xe7\x43\xe2\x44\xa7\x14\x15\x10\x9a\xa8\x7a\x17\x56\xab\xb0\x83\xf9\x24\x48\xfa\x62\xb4\xa3\xd6\x7d\xef\xa0\x86\x81\x08\xf1\x7f\xf7\xdd\x08\x5a\x83\x34\xc9\xa3\x64\x6a\xa3\xf6\xb9\x71\x91\x4d\xce\x0b\x3f\xaa\xa4\x83\xd5\x84\x45\x19\x1f\xba\x54\xf8\x2d\x50\x5a\x70\xa9\x48\x82\xc8\xeb\x31\xe4\xb0\x41\x18\x02\xb1\x00\xd4\x80\x6c\x36\xa1\x83\xed\x05\x25\x46\xcf\xd2\xbb\x85\xb2\x99\xd9\x56\x21\xa6\x5c\x1a\xfc\x9a\x61\xce\x46\xf9\x19\x18\x13\x09\xfc\x40\x5b\x61\x68\x21\xe8\xca\xcd\xd6\xed\xa4\xae\xc3\xe2\x6d\x6f\x43\xdb\x8f\x95\x55\x37\xa3\x5b\xf1\xc2\x72\x79\xd1\xbd\x4b\x19\xdb\x60\xd3\x1f\x4f\x70\x5d\xd4\xa0\x3f\xcd\x9f\x5a\x26\x5f\x43\x35\x45\x80\x52\x69\xa2\x57\xbc\x0a\x46\x26\xc5\x5b\xc9\x32\x0f\x83\x58\xfa\x98\xb4\xab\x2a\x45\x9b\x13\xca\xcf\x41\x2a\x08\x19\x56\x1a\x20\x8d\x3a\x98\xd9\x43\x67\x7e\x0f\xce\xcc\xdb\x08\x68\x2a\x0c\x5e\xeb\x7e\xaf\x55\x2b\xa9\x40\x41\xce\xb0\xc2\x86\x3e\x4d\x3e\x81\x60\x10\x00\xaf\x30\x1d\x5f\x83\xe2\x1e\x62\xd0\x2b\x45\x51\x8d\xc1\xc3\xf4\x5b\x0d\x65\xee\x58\x5e\x7d\xdd\x58\x30\x5e\x61\xeb\xfe\x60\xf6\x60\xf6\x9e\x1e\xcc\x37\x1b\x74\x51\x49\x36\x56\x4b\x1b\x32\x10\x26\xa9\x0e\xef\x52\x54\x4f\x71\xc8\xc5\x60\x61\xee\xf6\xef\x87\x6b\xa2\x70\x6f\xb8\x29\x97\xef\xc9\x56\xc1\xf1\xf6\x65\xa5\x58\x2d\x09\xc2\x49\x70\x3e\xc6\xc0\x6b\x7d\x0e\xc3\x14\x75\xa8\x9b\x48\xa0\xba\x28\xcf\x86\x14\x14\xac\x41\x47\x54\xd3\x2d\x4d\x8d\xec\xc0\xdb\xd2\x95\x5f\x51\x10\xb3\xc9\xb4\x2a\x0b\x4c\xe5\x8e\xcf\xd3\x6d\x50\x7f\xa9\xc1\x4d\x54\x83\x38\xfd\x06\xc3\x9e\xb7\xc6\x49\x5f\x51\x1a\xaf\xaf\xa4\xc8\x92\x1b\x09\x7d\x20\x99\x85\xc4\x55\x9c\xe2\xef\xbf\x40\x67\x6d\xbd\x8c\x2e\x71\x5a\x2d\xfb\x7c\x13\x85\xf6\xbb\x72\xca\x78\xf9\x34\x9c\x89\xf7\xa3\x3e\xe7\xa9\x13\xf3\xd9\x9e\x39\xb0\x7a\x90\xdf\xc3\x24\xcd\x80\x8a\xc8\x06\x35\x18\x8a\xbc\x3c\xcb\xc6\x33\x35\x3b\x24\xa5\xd4\x3a\xf4\x25\x63\x57\x82\x34\x96\xf2\xcf\x9f\xf1\x65\x79\x17\x44\x36\x68\x98\xac\x0b\x76\x79\x0f\x05\x59\x59\xad\xbb\x82\xc8\x06\x14\x04\x3a\xcc\x05\x83\xc6\xf9\x8c\x3d\x94\x65\x0b\x87\xb4\xff\x13\x1f\xe4\x82\x8e\x34\x29\xa6\x97\x94\x9b\x31\xbf\xcf\x05\x54\xa2\x06\x6f\x40\x34\xca\xd8\x98\x8b\x2a\x0c\x53\x64\xe6\x09\x13\x42\x87\x6e\xfc\x51\x3f\xd1\x4a\x47\x3f\x2a\x13\x87\xdc\x11\xf3\x1b\xfe\xe0\xdc\x3a\xe5\x19\x67\x52\x9b\x63\x82\x4e\x68\x2c\x47\xa3\x1b\x86\x73\x3c\xe3\x7c\x13\xa3\x48\x8a\xcd\x66\xf3\x3a\xca\x6f\xa6\x7d\x8c\x1f\x39\xe2\x59\x2a\x84\x4a\x3b\xd9\x8c\x84\x98\x72\xd1\x6c\xaf\xaf\xdb\x19\xb1\x19\xdd\xa1\x92\xf6\x7f\xaa\x21\x4c\x6f\x92\xd3\xfe\x4f\x60\x11\xa4\x1c\xe8\xca\x34\x25\x5b\xc0\x0b\xda\x51\xa5\x26\x9c\xf6\x7f\x6a\x0c\xd2\x44\xe4\xd9\x74\x90\xa7\xd9\x9c\xa2\x46\xc2\xc6\xdc\x29\x57\x32\xab\xb4\x16\x9a\xe5\xe5\x48\xe5\x2f\xc9\x4f\x06\x79\x27\xd9\x0f\xe2\x62\x0e\xb8\x07\x69\x86\x37\x02\x3a\xcb\x84\x3f\x1a\x79\xbe\x92\xff\xca\xed\x5f\xc4\x51\x92\xd7\x87\x91\x60\xfd\x98\xd7\xe3\x28\xe1\x90\xa4\x75\xc1\xe3\x51\x5d\x65\xc9\x97\x93\xff\x58\xb5\x21\xd9\x6b\x19\xff\xf7\x34\xca\x78\x45\xbf\xbd\xab\x36\x88\x27\xaa\x0b\x8f\xb5\x5f\x16\xcd\x39\x6f\x71\xb3\xd3\xae\xe9\x3a\x9b\x9d\xb5\xda\xa2\xba\x87\x5e\xdc\x5c\x6d\x3d\x5e\xd6\x3a\xeb\x9b\x17\x7a\x24\x15\x05\xb3\x36\x4e\x87\xd3\x98\xd7\xf8\xbd\xc4\x5a\x54\x7f\x59\xa0\x0f\x0d\xf5\x01\xba\x38\xc2\xc5\x76\xab\xb5\xb8\x09\x8b\x7b\x4a\xe1\x5b\xac\xd1\xc7\xb6\xfc\x78\x86\xc1\xbb\xa5\xf4\xfc\x90\xa5\x79\x3a\x48\x63\xa1\xcb\x3b\xb2\xfc\x43\x96\x0e\x38\x1e\x51\xe9\x73\x87\x60\x9d\xfc\x4d\xff\x44\x28\x7b\xc4\x6d\xfa\x1b\xb6\xdc\x1d\x0c\xf8\xc4\xf9\xb8\x2a\x3f\x1e\xa7\x49\x7d\x77\x9a\xdf\xa4\x59\x94\x53\xc2\xdb\xc3\x64\x94\x66\x63\x26\xc7\xa5\x6b\xbe\xa2\x9a\x20\x11\xe6\x49\xae\x3f\xaf\xc9\xcf\xa7\x5c\x2e\xdc\xa0\x64\x1d\x31\x65\x59\x1e\xb1\x38\x2c\x7b\x2d\xcb\xde\x4f\xe3\x3c\xaa\x9f\xe5\x2c\x9f\x0a\x5d\xb0\x81\x48\xc6\x19\x67\xc3\x07\x38\xe5\x94\x5e\x44\x15\x76\x10\xe2\xe1\x7b\xf8\x28\xf4\xb7\x55\x1a\x38\x42\x9a\xc4\x1c\xf6\x6e\xd2\x68\xc0\x85\x2e\x44\x32\xbc\x4f\x3f\xf1\x21\x7c\xe0\xd9\x98\xc9\x93\x60\xfc\xa0\x4b\x91\x20\x07\xe9\x34\x31\xc0\x90\x1a\x67\x9c\xc3\x89\x5c\xff\xfa\xab\x1a\x79\x0e\xef\xd3\x61\x34\x8a\x6c\xdf\x38\xf6\x8f\x82\xcb\x59\xba\x37\x60\x71\x6c\xe7\x7c\x3c\x49\x33\x96\xc9\x41\x50\x42\x33\x5d\x8c\x23\x34\xd8\x04\xc5\xaf\x68\x3c\x6f\xd9\x10\x4e\xf9\xbf\xa7\x5c\x98\xef\x38\x94\x8f\x09\xa3\x69\xfa\x59\x23\xf1\x4a\x31\x04\x7b\x18\x13\x34\xe4\x41\x53\xb8\x4a\x43\xcc\xfa\xd1\x70\xc8\x13\xfd\xd5\x0c\xc8\x19\xfc\x2b\x1a\xcd\x7b\x9e\xdf\xa4\x43\x90\x85\xbb\x71\x9c\xde\x59\x50\xeb\xba\x11\xb1\x90\x5c\x6b\xba\xe8\xb5\xe2\xc9\xfb\x07\x90\x6c\xc4\x93\x3c\x1a\x20\xef\x14\xf0\xd9\x20\x6e\xc1\x91\xc1\x79\x34\xe6\xe9\xd4\x8c\xf0\x3b\xb5\x1c\x46\x71\x64\xc8\xd1\x46\x72\x7c\x9f\x26\xba\xaf\x36\xd2\x41\xb9\x59\x07\xd0\xdb\x6a\x6d\x70\x73\xf1\x0c\x07\x2c\x8a\x6d\xf9\xaa\x22\x55\x9c\xb2\x21\x9c\xa7\x29\x1c\xb1\xec\xda\x40\x46\xaa\x7c\x3c\x3d\xa4\x92\x54\xaf\xad\x57\x6d\x9a\xe6\xc4\x64\xbb\x81\xf7\x7c\x18\x31\xb4\x5b\xea\x2a\x48\x1c\xb4\x3f\x23\xe9\xce\x58\x1e\x89\x51\xe4\xd0\xa8\x8d\x34\xea\xe1\x71\x9e\x95\xa0\x86\x84\x39\x5c\x1a\x03\x83\x9c\xb3\x49\xaa\x09\xd0\x21\x16\x8e\x04\x71\x09\x0f\xf9\xa2\xd3\x21\xe4\x26\x24\x11\x64\x8f\xd0\x4b\xf2\x28\x7f\xd0\x15\x70\xd0\x47\xe9\xe0\xd6\x74\xd6\xc1\x91\x52\xff\xb0\xcf\x27\x3c\x19\xf2\x64\x60\x1a\xa8\xe1\xa6\xd9\x90\xcb\x53\xfe\x5e\x1a\xc7\x94\x8f\x4f\x57\xc0\xc1\x7e\x9c\x5c\x67\x6c\xc8\xc3\x39\xe8\x6c\x14\xe6\x20\xac\x81\xf3\x2c\x69\xfc\x9e\x25\x0f\x7a\x38\x6a\xc9\xbe\x5a\x6d\xbb\x1c\xf2\x8e\xb3\x21\xcf\xe0\x20\xe2\xf1\x50\x14\x66\x6c\x4d\xaf\x09\x7d\x9f\x8c\x7b\xc6\x11\xbf\x66\x31\x9c\x72\x26\xd2\x44\x41\x5d\xa3\x55\x75\x98\xe4\x3c\x4b\x58\x0c\x67\x3c\xfb\xc4\x33\xd2\xa9\x75\x8d\xb6\x66\xef\xc3\xf1\x24\xe6\x14\x54\x52\x97\x75\xf4\x9a\xfc\x9e\xe5\xfc\x8e\x3d\xe8\xef\x4a\x5c\x64\x9f\xa2\x01\x07\x07\x0f\x5d\x8e\x74\x56\x6d\x7c\x6e\x5f\xa3\xd5\xf6\xee\xfc\xfc\x03\xfc\x9d\x67\x42\xd2\x09\x19\x47\xf3\x98\xae\x86\xb4\xfe\x3b\xcb\x22\x96\xc8\x15\x29\x52\x38\xe6\xd7\x69\x1e\xb1\x9c\x9b\xc1\xbd\xa6\xc1\x89\xe9\x68\x14\x0d\x22\x29\x06\xce\xf2\x34\x63\xd7\x06\x8f\x0d\x62\x81\x74\x02\xfb\x3c\x47\x2e\xd2\x25\xdf\xd1\xc8\x92\xe1\x5d\x34\xcc\x6f\xe0\x08\x1f\x39\xf4\x74\x70\x64\xaa\x44\x6b\x50\x62\xd7\xbb\xcf\x25\xaf\x98\x02\xa2\x19\xcf\xef\xd2\xec\x76\xe6\xca\xc7\xbd\xb7\xf6\x8b\xdc\x2d\x5f\x3f\x67\xb7\xac\x18\xd5\x40\x25\xec\xae\xfe\xb2\xa0\xdc\x59\xb2\xe8\xfa\x26\x87\xbf\xa6\x0f\x3c\xc9\x6b\x70\x98\x0c\x1a\x78\xb0\x20\x65\x4d\xdb\x8b\xf3\x2c\xea\x4f\xf3\x34\xc3\x20\xd9\xb2\xa5\x94\xb5\x91\x10\xa4\x29\xc1\x0d\xcf\x78\xff\x01\xae\x33\x26\x67\xb8\x06\xa3\x8c\x73\xa9\x8c\x49\x3d\xfd\x9a\xd7\xf0\xe6\x2a\x79\x80\x09\xcf\x44\x2a\x55\x8d\x5c\x65\xb1\x62\xda\x23\x8a\x34\xb7\x48\x80\x48\x47\xf9\x1d\xcb\x38\x85\x61\x17\x22\x1d\x44\xa8\xdc\x0d\xd3\x01\xde\x4a\x30\x7d\x2b\x2d\xd5\xee\xfc\x86\x4b\x00\x8b\x67\xaa\xd1\x62\x15\xbb\x1a\x72\x16\x43\x94\xa0\x0a\xa9\x8b\xd0\xc6\x9d\x4e\x73\xc8\xb8\xc8\xb3\x08\x69\x51\x53\x69\x46\xa3\xe4\x5a\x82\xd1\x35\xf0\x21\x0a\xf5\x23\x21\x20\x7d\xf0\xf4\x35\x15\xbc\x86\xd8\xd6\x60\x2c\x37\x2d\xf9\x2f\xc7\xf1\x4d\xa6\xfd\x38\x12\x37\x35\x09\x66\x18\x09\xa2\x16\xaf\x81\x90\xdf\x07\x3c\x91\x0d\x59\x32\x6c\xa6\x19\x08\x1e\xc7\x12\x48\xc4\x85\xbe\x50\xd0\x38\x62\x1d\xd9\xd1\x44\x12\x37\x97\xc0\x88\x62\xd8\xfb\xdd\x8d\xba\x15\x30\x43\x8a\x04\x8c\xa6\x59\x12\x89\x1b\x0a\xa8\x3a\x4c\x41\xa4\xd8\xa9\x54\xba\xe5\x17\x45\xa0\x51\x2a\x77\x1d\xf2\xbe\xd0\xde\x43\x9b\x6a\x22\xcf\x6f\x38\xb0\x7e\xfa\x89\xe3\xc8\x88\x19\x92\x34\x97\x8b\x0f\xb1\x91\x93\x32\xb1\x93\xad\x8a\xc4\x0d\x8b\x63\xa9\x7c\xab\x44\xad\x43\x09\x2a\x4a\x80\x39\x83\xc3\x97\x39\x52\x3d\x46\x5d\x45\x72\xa2\xec\x37\x1c\xb4\x66\xa8\xf3\x77\x3d\x38\x3b\x39\x38\xff\x61\xf7\xb4\x07\x87\x67\xf0\xe1\xf4\xe4\xef\x87\xfb\xbd\x7d\x58\xdc\x3d\x83\xc3\xb3\xc5\x1a\xfc\x70\x78\xfe\xee\xe4\xe3\x39\xfc\xb0\x7b\x7a\xba\x7b\x7c\xfe\x4f\x38\x39\x80\xdd\xe3\x7f\xc2\xdf\x0e\x8f\xf7\x6b\xd0\xfb\xc7\x87\xd3\xde\x19\x5e\x13\x9d\x9c\xc2\xe1\xfb\x0f\x47\x87\xbd\xfd\x1a\x1c\x1e\xef\x1d\x7d\xdc\x3f\x3c\xfe\x1e\xde\x7e\x3c\x87\xe3\x93\x73\x38\x3a\x7c\x7f\x78\xde\xdb\x87\xf3\x13\xec\x53\x41\x3b\xec\x9d\xc1\xc9\x81\x6c\xfd\xbe\x77\xba\xf7\x6e\xf7\xf8\x7c\xf7\xed\xe1\xd1\xe1\xf9\x3f\x6b\x70\x70\x78\x7e\xdc\x3b\x3b\x83\x83\x93\x53\xd8\x85\x0f\xbb\xa7\xe7\x87\x7b\x1f\x8f\x76\x4f\xe1\xc3\xc7\xd3\x0f\x27\x67\x3d\xd8\x3d\xde\x87\xe3\x93\xe3\xc3\xe3\x83\xd3\xc3\xe3\xef\x7b\xef\x7b\xc7\xe7\x0d\x38\x3c\x96\xc0\x8e\x4f\xa0\xf7\xf7\xde\xf1\x39\x9c\xbd\xdb\x3d\x3a\xc2\x0e\x77\x3f\x9e\xbf\x3b\x39\x3d\x93\x58\xee\x9d\x7c\xf8\xe7\xe9\xe1\xf7\xef\xce\xe1\xdd\xc9\xd1\x7e\xef\xf4\x0c\xde\xf6\xe0\xe8\x70\xf7\xed\x51\x8f\x7a\x3b\xfe\x27\xec\x1d\xed\x1e\xbe\x47\xc6\xda\xdf\x7d\xbf\xfb\x7d\x0f\x1b\x9e\x9c\xbf\xeb\x9d\x62\x4d\x85\xe3\x0f\xef\x7a\xf8\xe9\xf0\x18\x76\x8f\x61\x17\xaf\xcc\x24\x7d\xf6\x4e\x8e\xcf\x4f\x77\xf7\xce\x6b\x70\x7e\x72\x7a\x0e\x27\xa7\x48\x1f\x59\xf5\x87\xc3\xb3\x5e\x0d\x76\x4f\x0f\xcf\x24\x71\x0e\x4e\x4f\xde\xd7\x40\x52\xf7\xe4\x00\xe9\x77\x2c\x9b\x1e\xf7\x08\x90\xa4\xbc\x3f\x41\x27\xa7\xf2\x37\x7a\xb5\x9c\xf5\x2c\x46\xfb\xbd\xdd\xa3\xc3\xe3\xef\xcf\x64\x7b\xb7\x7e\x63\x81\x88\x71\xde\xdb\x94\x0c\x27\x38\x9d\x96\xf0\x48\x87\x9e\x4a\x4a\x3a\xe1\x8d\xbc\x94\x77\x69\xc2\xe2\xf8\x01\x86\x69\xb2\x94\xe3\x8d\xbc\x7b\x14\x94\xb0\xfa\x7c\xc0\xe4\x77\x8a\xe9\x3f\xca\xd8\x75\x14\x13\xc7\x0e\x58\x22\x19\x93\x33\x11\xc5\x0f\x30\x62\xb7\x7c\x48\x17\x5c\x3f\x9e\xe0\xba\x68\x0c\x50\x83\xaf\x54\x7f\x6c\x2c\xb8\xc7\x3d\x3a\xa6\xb3\xec\xda\xde\x11\x91\x61\x40\x15\x05\x17\xda\x5e\x19\x36\xdb\x0a\xa2\x7c\x63\x6f\xe7\xfa\xde\x08\x01\xe3\x15\xf4\x05\x95\x10\x84\xcb\xa5\xad\x85\xc7\x05\x25\xa8\x35\x38\xe8\x6a\x7c\xb6\x3c\x14\xdf\xa6\x29\xda\x0f\x0c\x92\xfa\xda\x94\x2e\xb9\x59\xa6\xbc\x20\xfa\x54\x2f\x00\xad\x5a\x23\x70\xf5\xb7\x0f\xfe\x78\x1a\xc7\x05\xd8\x1a\xa8\x3c\x8f\xfa\xf0\x64\x75\x04\x76\x8c\x45\x21\xa4\x93\xec\xa3\xbe\xc3\x9f\x01\x74\x06\x4c\xa7\xa1\x01\xef\x7c\x0b\x7b\xc2\x14\xbf\x4f\x51\x44\x5d\xfb\x87\x9d\xc9\x8f\xaa\x0f\xf9\xa7\x0f\xda\x9d\xb8\x39\xa0\x95\x9b\x8d\x0f\x9a\xda\x22\x68\xfa\x33\x00\xfd\x30\xee\xa7\x45\x5a\x17\x40\x63\xb5\x10\x34\x7e\x24\xd0\xf8\xa7\x0f\xfa\x29\xa2\x77\x01\x93\x37\xb4\x7c\xa0\x3e\xc5\x67\xd0\xfa\x94\x5f\xf7\xee\x27\x95\xac\x60\x06\x71\xf9\x5c\x96\x7a\x6c\x4e\xad\x42\x3e\xa7\xaf\xd8\x1b\xfd\xe9\x77\x45\x4b\xf5\x49\x02\x51\x17\xe8\x20\x24\xbf\xbd\x28\xe5\x29\x82\x85\x5d\xd1\x9f\x7e\x57\xfb\x52\x18\x0c\xe7\x0d\x69\x18\x8c\x48\xb6\x08\xc7\xb3\x4f\x57\x28\xf4\x87\xdf\x01\x59\x99\x7d\xa2\x55\x82\x2e\x42\xa2\x61\x9b\xcb\x25\x4c\x4f\xe0\x1a\x99\xf0\x7b\xd5\xef\x1a\xbf\x61\xdf\xf8\x97\xdf\xf9\x81\x56\x0d\x9f\x22\xa5\xf1\x32\xf5\x81\xeb\xf6\x08\x5f\xff\xf0\xbb\xf8\x90\x49\x85\x29\xfa\xc4\xe7\xca\x0e\xcf\x6b\x6b\x96\xc0\x9a\x5b\x49\xad\xe1\xb9\x75\xb4\xcf\xdb\xdc\x3a\xb4\xaa\x24\x6d\xa1\xd9\x84\xde\xd9\x3a\xd0\xa7\xd9\x4d\x8c\x37\x52\x40\x1d\x33\x74\x24\x8f\xf9\xb5\xb5\xe0\x8a\x5d\xb2\x8b\x16\xdc\x82\x5c\x22\x06\xdc\x90\x7a\x54\x54\xdb\x96\x9b\x61\x51\x25\x69\x40\xd3\x5b\x8a\xec\xe0\x5b\xe2\x7e\x59\xd4\xbd\x2c\x6e\x1a\xab\x5c\xa3\xd1\x6c\x34\x9a\x91\xa8\x6b\xab\x67\x32\xe4\xf7\x8d\x9f\xc4\x62\xf5\x91\x2c\x74\x33\x2b\x6c\xae\x76\xe4\x49\x63\xe3\x39\x27\x8d\x3f\x4f\x15\x7f\x9e\x2a\xfe\x3c\x55\xfc\x79\xaa\xf8\x7d\x4e\x15\x98\xa3\x07\x19\x93\xec\xf2\xd0\x05\x4f\xcb\xc7\xfc\x1e\x4e\xf9\x87\x34\x7e\x18\x45\x71\xec\x34\xfc\x1b\x7f\x10\xb6\xd9\xad\xfc\x65\x1a\xc9\x32\xaf\x49\x3f\x42\x2f\x55\xbd\x11\x3a\x42\x19\x4b\x3e\x7f\x36\x47\x99\xb7\x51\x32\x34\x4d\xad\xa4\xef\x7d\xe2\x49\xde\x1b\x47\x79\xce\xb3\x8a\xf3\xf6\x0a\x7d\x5c\xaf\xb8\x2c\xc5\xfe\x5f\x14\xa4\xfe\x0d\x13\x27\x77\xc9\x87\x2c\x9d\xf0\x2c\x7f\x70\x84\x3d\x2c\xa9\x76\x4b\x5e\x88\x32\x03\xad\xeb\x51\xa0\x82\x59\xf4\xb6\x0a\xd5\xf6\x30\xb1\x72\x57\x2a\x86\xea\x02\x94\x4a\xc7\xec\xfe\x28\x12\x39\x4f\x78\x26\xb4\x0b\xbc\xff\xf1\xf3\x67\xeb\xad\x2b\xb7\xa2\xc2\xcd\x8c\x3b\xe6\x2d\x95\xe0\x6d\x70\x7b\xc7\xb2\xa1\xa0\xbb\xa4\x9c\x0e\x68\x89\xdc\x16\x5a\x8d\x76\xab\x71\xbf\xe0\xb6\x69\xb8\x3f\x8a\xf0\xbc\xaa\x96\x5e\x76\xf8\x0e\x76\xb3\xea\x06\xa3\x74\x5a\x20\xba\x0f\xda\xed\xda\xeb\x5b\xc0\x5d\x14\xc7\x30\xc9\xa2\x24\x07\x06\x77\x94\xbe\x5a\xce\xe7\x38\xa5\xac\x36\x09\xb4\x5b\x10\x1b\xc0\x2c\x43\xc1\x49\xee\x91\x79\x0a\x51\xde\x80\x73\x29\x0a\x23\x01\x4c\x6e\x04\xa3\x69\x6c\x7a\xba\xbb\x89\x06\x37\x70\xc3\xe3\x89\x80\x51\x44\x8f\x67\xc6\x7c\x9c\x66\x0f\x10\x73\x76\x2b\x1a\xc8\x90\xaa\xf6\x7b\x1f\xff\x76\x6b\x8b\xd6\xc6\x0d\x13\xfb\x38\x12\xcd\x37\x5b\x0b\x79\xf6\x60\x2e\xef\x53\xe8\xc2\x2f\x8f\x5b\x8a\x09\x15\xcb\x0d\xbd\x06\x55\x28\xfd\x5c\x49\x6b\xb0\x74\xbf\x54\x83\x5f\xc8\xb7\x78\x13\x5a\xf0\x88\x6c\x55\xe8\x52\x32\x60\xe3\x9e\x5c\x95\xb7\x16\x1e\x61\xc0\x28\xe5\x7a\x96\x55\xe1\x97\xd2\xea\xf8\x74\x12\x1e\x17\x24\x52\x85\x72\xe2\xf1\x72\xa4\xdc\xd9\xa9\xc1\x52\x09\x71\x24\xc6\xc8\xfb\x1c\xdd\xfb\x59\x3f\xe6\x9b\xf4\x76\x14\xbf\x5e\xf3\x7c\xd3\x2c\xe1\x8a\x75\x87\x31\x99\x0b\x0b\x00\x69\x25\x3d\x52\x73\xe1\x35\x37\xea\xb0\x72\xe9\xa0\x1b\xec\xbb\x1b\x8e\x4a\x90\xdc\xae\xa2\x64\x32\xcd\x69\xf6\x27\xa9\x20\x4d\x92\xd4\x5c\xa8\xdc\xdd\xa4\x42\x3b\x6e\x47\x02\x7e\xe6\x59\x0a\x69\x66\xa1\x5d\xe3\x72\xce\x8c\x17\x08\x83\x63\x76\x5c\x6d\x38\xfe\x3b\x8e\x16\xfb\xc2\x57\xa0\xf1\x9b\x7a\x1a\xa0\x8b\x25\xb6\x46\x03\x2e\x8f\xa9\x5a\x32\xfc\x45\xe7\x71\x4a\x30\x84\x25\x25\x65\x60\x06\x93\xb2\xec\x7a\xcb\xba\xd9\x48\x2d\xd6\xfa\xe9\x78\xeb\xb4\xbc\x79\xe9\x5c\x90\x3f\xc2\x49\xff\x53\x94\x4e\x45\xfc\x40\x84\x89\x63\x30\x2b\xd6\xba\x0d\xa0\x42\x46\xeb\xb0\xdd\x52\xeb\xd0\xfa\xf5\xa0\x47\x33\xf9\x21\xb0\x5c\xb9\xde\x44\x89\xdc\x54\x04\x1f\x36\xe0\x8c\x9e\x63\xe0\xa4\x8c\xd2\x0c\xa6\x89\x02\xd7\x98\x25\x62\x04\x0f\x07\x60\xf3\xa0\xf9\x45\xae\x97\xb2\x9a\xc2\xa4\x30\x81\x89\x9e\xbe\x48\x1c\xb3\xe3\x4a\x52\xad\x2e\xcc\x9e\xb7\xa4\x34\x0c\x6e\xe9\x74\x95\x0a\xfd\x64\xcb\x77\xd1\xdf\x5a\x78\x74\x4f\x2f\xff\xeb\x3a\x18\x80\xa4\x99\x33\x86\x1b\x96\x87\x20\xdd\x17\x1e\x55\xd7\xac\xf6\xd4\xc4\x7b\x98\x84\x70\x71\xfe\x67\xd0\xff\x7a\x36\xfd\x43\xf4\xbd\xd3\x57\xc9\xe0\x22\x51\x25\x0a\x90\xa2\x2b\x38\x48\x7d\x74\xc8\xe2\x34\xe1\xc0\xc7\x51\xbe\xec\x18\x34\xa5\x4a\x3d\x15\xc4\x67\xe9\x24\x8f\xc6\xd1\xcf\x1c\xe4\xe6\x2d\xe5\x79\x3a\x02\xdc\xa5\x24\xa4\x1b\x7c\x41\x97\x91\x1b\xfd\x08\x9d\x3e\x99\xe0\xc2\x58\x3a\x25\xe0\x4a\x15\xa2\x5c\xf0\x78\x04\xe9\x28\xe7\x89\x14\x9e\x98\xf0\x36\xc3\x5b\x51\x2d\x3a\xd2\x11\xee\x32\x6a\xc6\x85\x6b\x15\x1d\x72\x8d\xc3\xd0\x00\x56\x4e\x33\x0d\x35\x16\x07\xf5\xf8\x8e\x3d\x08\xb8\x61\x9f\xb8\xf6\xc8\x11\x6c\xec\x74\x13\xf4\x91\xdf\x4c\x85\x76\xe3\xb9\xe6\xb9\xdb\x19\x3e\x57\x92\x00\xf0\xdd\x14\x6a\xf5\x22\x1a\xca\x3d\x92\x8f\x11\x37\x7e\xcf\x07\xd3\x9c\xe3\xc0\x79\xd6\xb0\xcc\x25\x87\x7d\x9c\x26\xbc\xa2\xe8\x53\x83\x48\x1c\x24\x35\x79\xe2\x19\x59\x1e\x93\xdf\x94\x23\x18\x55\x23\xfd\x08\x2b\x49\x96\x09\x5e\xea\xd0\xab\x1a\x5d\x55\xb9\x4f\xd9\x52\x4f\x48\x65\xec\x61\x2f\xf6\x10\x88\x79\xa2\x44\xdb\x0c\x67\x2c\xf2\xc4\x52\xc2\xcf\x40\xbb\x88\x2e\x03\xac\x1e\x5d\x9f\x1d\x39\xd0\x93\xf2\x71\xd6\x24\xa1\xdb\xcf\x1a\xad\xaa\xfa\x87\x1c\xb3\x83\x5b\x61\xe4\xe7\x77\xe9\xec\x91\xe3\xff\x76\xbe\x60\xfc\xaa\xc1\x1f\x98\x0a\x0e\x86\x45\x5a\xdc\x64\x7c\x0e\x1f\x50\x53\xfc\xdf\xd5\x2f\xa6\x89\x6a\xf6\x87\xa7\x8c\x83\xe7\xa3\xe7\x29\x29\x09\xf4\x9e\x25\x0f\x33\xe9\x23\xe6\xd1\x84\x32\x09\x3b\x75\xff\x48\x84\x28\x45\xee\x71\xce\x9e\xc6\x29\x2c\xa3\x47\x9b\x8a\xf5\x53\x94\x7d\x4b\x94\x5c\xdc\x08\x72\x0d\xa2\x1a\xed\x3c\xb8\xa1\xe2\x41\x22\xd5\x76\x64\x84\x40\x76\x4f\x0c\x39\x21\x15\x03\x49\x25\x7d\x9c\x72\x4f\x8d\xfa\xe8\x40\xbf\x68\x54\x0e\x24\xfd\xe7\xcb\x97\xaa\x79\x83\x82\x58\xe8\x64\xee\x86\xfa\x78\x06\x56\xb5\x3d\x7d\x00\x8f\x02\x5b\xfa\x6d\x2c\x1a\x79\xc8\x46\x95\xa4\x1a\x3d\x02\x6d\x48\x29\xab\x24\xa4\x08\xe9\xa7\xb0\x1a\xb0\xe3\x1b\x6b\x76\x2e\xfd\xbe\x6c\x07\xda\x7a\x52\xf0\x90\x69\x2a\x5c\xb4\x2f\xb7\x4c\x33\x27\x6d\x80\xb1\xc6\x07\x8e\xe5\x3c\xdb\xc2\x08\x0d\x09\x91\x7d\xe8\xa3\x59\xe6\x90\xde\x6c\xc2\x6e\x2e\x0f\x75\x22\x87\x6b\xa9\x90\x89\x74\xcc\xe1\x36\xa2\x27\x87\xca\x5f\x56\x19\xde\xa4\x2e\xa1\x0f\x01\x34\xbf\x12\x59\xc7\x99\xdd\xf6\xbb\x88\xfd\x2e\x52\xbf\x0d\xa8\xe0\xbb\x6d\x7c\x2d\x57\xb5\xaa\x39\xcf\xb2\x86\xee\xa1\x2b\x71\x0f\xc6\x92\x59\x15\x3d\x9c\x13\x65\x26\x50\xdc\x25\x5b\xe3\x14\x5f\x48\xf6\xb9\xdc\x32\xaf\x73\x55\xf9\x8c\x59\xc5\xf5\x21\x0e\x30\xdb\x2f\xe9\xba\x06\x5e\x70\x2b\x01\x6a\x61\x86\x33\x27\x4b\x04\xba\x76\xe2\x93\x58\xef\xc4\x65\xd5\x28\x72\x1f\x67\x82\x43\x7b\x53\x0f\x7d\x86\x66\xa1\x14\x3c\xaa\x84\x2e\xd1\x5b\xb6\x75\xc7\x6d\x5d\xb2\x5d\x93\x45\xc6\x65\x9e\x99\xa0\x56\x5d\x50\x25\xfb\x5f\x11\x94\xfb\xab\x33\x1b\xf0\x2b\x0f\x70\xd9\x66\xf2\x14\x68\xf7\xd7\x6a\x69\x47\x48\x5e\x11\xa7\x77\x8a\x1b\x95\xaa\xae\x7b\x96\x42\x46\xf1\x25\x5d\x90\xab\xb8\x1e\x06\x94\x79\x48\xdc\x76\x04\x63\xb4\xb2\x62\x8f\xa0\x12\xc4\x85\x8a\xcc\xeb\x2e\xc7\xe8\x72\xcb\x19\x5e\xd9\x56\x60\x46\xa7\x25\xa8\x73\x66\xc8\xa6\x3c\x38\xbd\x5c\xb1\xe1\x50\x6b\xf7\x36\x58\xd2\xc3\x84\xd7\x8c\x48\xa9\xc1\x24\x43\x8f\x3e\x2b\x57\xc7\x5a\x6e\xfa\x52\x94\xdf\x47\x22\xa7\xeb\x5e\xef\x00\x67\x84\xd3\x0b\x3f\xa2\xcb\x9c\x43\x9b\x6e\x52\x7a\x76\xb3\x10\x02\xd9\x4c\x21\x6b\x02\xe9\xfc\x42\x89\x67\x6d\xfa\x28\xaf\x3d\xcf\x50\xe8\x55\xf4\x4d\x85\xae\x2c\x93\x07\xa2\x14\x18\xde\x30\x67\x7c\x30\x25\x1f\x3c\x75\x69\x82\xbc\x69\xdc\xf3\x71\x7d\x2f\x26\xfc\x4e\xd3\x7e\xf1\x05\xbc\xe5\xa3\x34\xe3\x1a\x12\x1b\xa2\xcd\x2b\x32\xa2\xcf\x6c\x96\x35\x18\x45\x99\xc8\x91\x01\x7c\x18\x0d\x2b\xa9\x69\xbf\x71\x0a\xc3\x30\x32\xb8\x7d\x56\x96\x9c\x1a\x4b\x6a\xe2\xed\x45\xa0\xe9\xb3\x61\x66\xf0\x4d\xc9\xb7\x4d\xf3\x8d\xe6\x43\x8d\xe0\x94\xd7\x99\x10\xd1\x75\x02\x3f\x12\x3a\x3f\x9a\x43\x17\x03\xa7\x5f\x23\xf3\x06\x68\x9c\x90\x07\x2e\xc0\x6a\x43\xbc\x6b\x31\xf0\x3c\xb3\x2e\xd9\x24\x08\x3e\x1d\x2f\x11\xa6\x9a\x43\xbd\x44\x66\x33\x86\x16\xea\x9a\x65\x0b\x02\xdc\x09\xec\xf0\x42\x57\x72\x1e\x28\x9d\xe8\xc3\xac\x99\xdb\x74\x04\xf2\x04\x6c\xc8\x03\xfb\xe8\xbe\x93\x70\x1a\x07\xf0\xfb\x3c\x63\xa4\x34\x29\x2c\x1b\xf3\x30\x80\xae\x01\x45\xf8\xae\xac\x94\xf0\x61\x81\x07\xdd\x78\x28\x06\x70\x69\x1c\x25\xda\x79\x89\xcb\xf0\x70\x8b\xfe\xb5\xc0\xc9\x53\xb5\xa6\x10\x4f\x61\x70\x83\x3e\xc8\x92\xc2\xe8\xf4\xa3\x69\x3b\x0b\x6d\x87\x7d\x94\xdc\x80\x37\x70\x61\x85\x89\x6e\x78\x09\x9b\x70\xa1\x7f\x58\x69\xa3\xe4\x5b\x51\x49\x38\x1c\xc1\x1d\x5f\xfa\xc4\x81\x29\x57\xfe\xeb\x34\xc7\x7c\xed\x12\xab\x1a\xfc\x24\xa5\x03\x9b\xc8\xfe\x5c\x2b\xa0\x27\xba\x7c\xcc\x1b\xd3\x44\xdc\x44\xa3\xbc\xe2\x70\x2f\xd5\x08\x3a\x77\x9a\xd0\xeb\xa9\x42\x7d\xc5\x50\x9a\x39\xf6\xd0\xd4\x29\x85\xbc\x59\x23\xb1\x7e\x5b\xe4\x31\x54\xe3\x8e\x65\x09\x77\xb0\x1b\x43\xb7\xc4\xe6\x42\x91\xe8\xb6\x9c\x61\x8d\xa5\x52\x39\x36\x61\xdb\x34\x38\xa3\xcd\x8d\x4b\x07\x4c\xbd\xc9\xf5\x80\x1b\x81\x2e\x97\xa2\xfb\xce\xd7\xa3\x3e\xa4\x42\x44\xe8\xf8\xed\x5e\x3e\x38\x06\x78\x18\x2a\xb7\xdf\x06\x2c\x39\x01\x35\xbc\xee\x14\x36\x2b\xb0\x44\xb1\x37\xd4\xfd\x3e\xa9\xe8\x2b\xb0\xb4\xe8\x1c\x27\x42\x20\x4b\x78\x4d\xd0\xc0\x50\x5f\x5c\xa9\xfe\xa1\xa5\xb0\x8a\xa1\x1a\xc2\x86\xda\x4e\x49\x26\xce\x86\x55\xf6\x00\xee\xd4\xcb\x21\x58\x72\xe1\x68\xdf\xe4\x1f\xe8\x06\x63\xc9\xad\xcf\xcd\xb5\x0b\x4d\x82\x5b\x46\x72\x1c\x65\xa6\xfb\x79\xa0\xf6\x87\x80\x0c\xb6\x8a\xb3\x44\x07\x69\x22\xd2\x98\x17\xdc\x79\xd4\x77\x9c\x30\xff\xb1\xbc\x5b\x52\x59\xfa\x8b\xd8\x84\xbf\x88\xa5\x9a\x1a\x99\xfc\x77\xcc\x85\x60\xd7\xdc\x19\xf5\x63\xc0\xa5\x81\x4e\xa0\xc6\x35\xfb\x9c\xe5\x68\x08\xee\x71\xcb\x53\x1c\x3c\x85\xc1\xb3\x20\xfa\x0a\x06\xea\x26\xa1\x7a\x81\xfa\xb0\x32\x2a\xce\xc0\x01\x5d\x70\x9e\xc6\x6f\x36\x00\x25\x07\xec\x40\xe8\x90\xaa\x07\x13\x14\x97\x0e\x08\xe0\x4b\x06\x25\x97\x98\x9a\x04\x4f\xe1\x4a\x93\x01\xff\x21\x93\x82\xaa\x78\x03\x3a\x8a\x32\x3e\xf4\x6e\x31\x95\xc8\xcf\xf8\x38\xfd\xc4\xbd\x1e\x1b\xd4\x21\xfe\x79\x97\xb1\xc9\x41\xe2\x5e\x6b\x22\x24\x6f\xa1\xeb\x43\x42\x78\x80\xb0\x63\xc3\x5d\xac\xb5\x69\xf8\xc6\x31\x79\x9b\xbd\xde\x5e\xbc\x36\x02\xa9\xe4\x9f\x2e\x9e\xd9\xda\xd5\xb4\x5b\x97\x3e\xac\xce\xaf\x82\x35\xe3\x14\xe2\x1f\x3d\xbe\x01\xe4\x9a\x27\x7c\x4a\x0f\x28\xc1\xe1\x80\xe4\x6d\xe1\x88\x50\x98\x17\xbb\x80\xcb\x4c\x29\xb2\xbd\xf7\x88\x78\xc1\xc3\x42\x05\x6c\x2a\x3b\x37\x40\x30\x5a\xb2\xbb\x84\xc3\xd5\x67\xc0\xc7\x82\x09\xea\x4a\x73\xf0\x8c\xe3\x82\x3d\x25\x88\x9c\x7c\x12\x7e\x01\x64\xc7\x4d\x1d\x14\x96\xd8\x75\xd3\xde\x81\xe8\xf0\xac\x9b\xe0\x82\xdc\x0c\x00\x5b\x35\x13\x1e\xf5\x89\xe3\x0e\x57\x92\xe4\xf4\x7e\x94\x0c\x95\x4b\x98\x5d\x61\x35\xc2\x01\xc7\xa2\xaa\x5a\xb5\xd5\x57\xb0\xb0\xa2\x5a\x49\xd0\xd5\xb5\xb7\xdc\x90\xb7\xea\xcb\x6c\x49\x29\x7b\x76\x45\xa4\xfc\x5d\x2a\x4a\x7e\xa7\xb3\x91\x9a\xea\x34\x51\x48\x38\x53\x57\x22\xb3\xaa\xd5\xd2\x8b\xae\xf9\x02\xf5\x24\x19\xf0\x27\x84\xaa\x5b\x65\xa6\x60\x7d\x2e\x45\xbe\x09\x55\xcc\x22\x28\x17\xfb\xcf\x21\x53\x20\x3c\xac\xa0\x6f\x36\xf1\xba\x55\x00\x83\x25\x5f\x6c\x6b\x53\x5d\x34\x22\x67\xc0\x24\x7e\x90\x7f\xbb\x67\x3b\x0c\x72\x42\xad\x66\xdf\xa5\xfa\x50\x43\xa2\x87\x5b\xc5\x0c\x7a\x6b\x63\xae\x36\x84\xd6\xd4\x85\x28\x7a\xf0\xd5\x20\xcd\xa2\xeb\x28\x61\xb1\xb3\xb1\xfe\xee\xf3\x54\x38\xc4\x05\x96\x57\x00\xff\x7c\x5f\x26\xd4\x0d\x14\xd9\x6b\xc9\x19\xcf\xc0\x90\xe5\xf3\x21\x60\xec\x1a\x84\xd2\xb5\x92\x03\x3e\x7f\xc6\xbf\x1d\xa9\xe2\x94\x86\x31\x7e\xea\xf5\x12\x9f\x23\x8c\xea\xe5\x48\xef\x67\x7a\x2f\x21\x69\xfc\x53\x8a\xdc\x6a\x62\x9e\xf3\xd2\x51\x82\x6f\x19\xf0\xd9\xa4\xea\xed\x62\x88\x01\x99\x07\x02\x0e\x76\xd7\x42\x23\xa4\x81\x77\x24\x72\xd4\xce\x42\x58\x48\xa4\xe2\x8b\x19\x87\x52\x30\x8c\x08\x5d\xa8\xb7\xb7\x16\xfc\x6d\x30\x52\x62\xdb\xc6\x25\x76\xa2\xe5\x46\xf5\xba\xaf\x2d\xeb\x39\xc3\xdd\xb0\x64\xda\x2e\xa2\xcb\xa7\x67\x4e\xfe\x17\xae\x07\x85\x85\xdb\x7e\xcb\x6b\xe0\x0c\x22\xf2\x4b\x3c\x33\xa2\x4b\x28\x2f\x3e\x15\x9e\x5d\x35\x8c\x6d\x9f\x43\xca\xb8\x33\x68\x51\xe0\x2a\xa4\x19\x1d\x77\x03\x06\x72\x2a\x89\x49\x1c\x0d\xf8\x49\xc2\x2b\x24\x1a\x34\xb8\x6a\xd0\x8d\x3b\x01\x14\xe8\xd4\x01\x52\x62\xc4\xb8\x68\x5d\x06\x10\x9e\xe4\xc2\xa7\x79\xb0\x30\x25\x65\x6c\x68\x28\x5a\x2a\xab\xe7\x0a\xd8\xdd\x38\x76\xfc\x25\xca\x84\xac\x5b\xc3\xb9\x78\x82\xf0\xae\xcc\xca\xd8\xe8\x1b\x4b\x35\x8c\x05\xa7\x2f\x7f\xf0\x29\x59\x9a\x05\x3b\x40\x0d\x92\xd4\xd8\x72\x24\x41\x8b\x7d\x84\xd3\x10\x48\xad\xc2\x65\x51\x10\x76\x13\xbe\x4c\x68\xcd\x71\xbc\x54\x73\x66\x05\x86\xcb\x4b\xc5\x95\xfd\x2c\x71\xfa\x85\xb8\x05\x2b\xe2\x09\x91\xfa\x58\x3e\x3b\x01\xef\x35\x9b\x64\xab\x0d\x36\x6e\x0c\x37\x1a\xc7\x8e\x11\x84\x5c\xaf\x54\x5f\x0b\x5f\x32\x03\x92\xdf\x6e\xc9\x95\xd7\xfa\xee\xea\x7b\xc9\xad\xb0\xda\x56\x51\xa6\xaa\x63\x85\x84\x51\x16\x9b\x88\xfe\xbb\xe5\x0f\xd0\xc5\x3a\xde\x79\x82\x90\xc4\x42\x29\xd4\x83\xf5\x5a\x35\x01\xe8\x0a\x3c\x50\xb2\x8c\x6e\xf9\x43\xc9\x1e\x32\xbb\x7e\xa1\xb7\xe0\x98\xf3\xbc\x79\x7f\x82\x23\xe7\x4d\xae\x7b\x23\x5e\xb8\x02\x84\x72\x8d\x49\xcc\x34\xc9\x7a\x03\x9d\xa1\xc4\x89\xd0\x4e\xa9\x45\x32\x15\xfa\xa1\x22\x8f\x0e\x0f\x4e\x00\xe3\x2e\x94\xef\xa3\xd8\xe6\x79\x9b\xe9\x33\x30\xbb\x88\x2e\x4b\x0d\x4f\xf3\x84\xb0\x3d\x58\xc6\x81\xc5\x53\x4b\xfa\x69\x22\xcf\x5e\xce\xad\xfe\x2c\xb3\xfe\x42\x89\xe8\x54\x7d\x5e\x5c\x9a\x0b\x57\xfe\xc9\x39\x02\x86\xeb\x5a\xb5\x8f\xbd\x2d\xc9\x87\xe1\x9a\xd8\x3f\x79\xda\x43\xa8\x04\xab\x76\x84\x3f\xbc\x81\x0b\x5b\xdf\xd3\x9e\xec\x67\x32\x8a\x7f\x72\x8c\xe1\x0b\x45\x30\xf4\x87\x5d\x03\x0e\xba\xb0\xe9\xba\x65\xd8\x82\x1a\xb8\x5d\x6b\x03\xc3\xec\x93\xac\xcb\xd5\x66\x82\xe2\x92\xcd\x4e\x1b\xc4\x9c\x32\xe7\xcc\xa4\x8c\x60\xf3\xf6\x5a\x76\x57\xea\x95\xe8\x7e\x7f\x76\x77\x33\x0d\x89\xba\xba\x5e\xdb\xc6\x49\x99\x6b\x6f\x69\xdb\x85\x3b\xbd\xe5\xcd\x4b\xd7\xae\xc2\xac\xb4\x09\x0d\xa0\x70\x57\xa3\x73\x24\xb8\x55\xc9\x84\xe1\xa3\xa5\x1c\x61\x66\x13\x31\x1c\x9e\xf7\x7b\x6b\xa1\x30\x81\x0e\x52\x25\x8b\xca\x53\x48\x7c\x0f\x17\xc7\x4f\x68\xce\x2a\x5a\x08\xc4\xde\xec\x55\x12\xda\x55\xdb\xde\xe5\x0f\x75\x3c\xd3\x08\x5b\xe0\xe8\xad\x52\x03\x77\x6b\x1e\x9f\x23\xe2\xc7\x6c\xcc\x3d\xe6\xb3\x5f\x7d\x6f\xd8\xe2\x36\xb1\x03\x2d\x78\x03\xa7\x7c\x14\xf3\x41\xde\x48\xef\x12\xdc\x77\xdd\x7a\x72\x49\x4a\xc1\xa1\x6c\x03\xbb\xfd\x74\x9a\x43\xbb\xb1\x76\xaf\x9c\x3d\xe9\xa1\x44\x7e\xc3\x21\xbf\x4b\xeb\x2c\xbb\x86\x4f\x2a\x78\x4b\x3a\x22\xd3\xe0\x7f\x91\x5a\x5e\xa9\x3a\x7e\xa1\xa1\xa6\x8e\x8f\x15\x4b\x42\xe4\xe1\xf7\x1a\xdc\xca\x3f\x61\x05\xda\x35\x48\xfc\x03\xd4\x16\xdc\xc2\x36\x24\x52\xec\xaf\x74\x65\xf9\x2d\xfe\x4b\xf2\xcb\x1c\x9d\xe8\xaf\x5b\x94\x90\xd8\x78\x92\x4e\x2a\x24\x40\xec\x7d\x80\x95\x3b\x2c\x93\x6a\xa7\x13\x25\x91\x52\x33\x59\x63\x27\xd9\xaa\xcb\xec\x9a\xae\x83\x98\x6c\xa6\xed\x98\x99\xd2\x38\xd4\x4c\xc8\x22\xbf\xfb\x50\x28\xb2\xcc\xb1\x44\x66\x98\x71\xcc\x35\xb6\x66\xae\x99\xb5\x0c\x91\x8c\xe7\x65\x8a\x50\xc6\x73\x17\x25\x4f\x8c\x5b\x2c\x9d\x40\x08\x99\xba\x5c\x09\x5e\xbb\xfa\x0f\xb2\x2a\xc8\x91\x16\xdf\x03\x57\x46\x55\xd5\x23\x95\x03\xcb\xb7\xd0\x05\xfc\xdb\xa1\x88\x1c\xdc\xc1\x96\xeb\x4c\x59\x7c\xc4\x65\x83\xe1\x39\xfa\xe2\xc5\xa5\x47\x82\x5b\x88\xb0\x69\xd5\x7d\x14\x33\xff\x1d\x16\x06\x08\xbc\x35\xcf\xaf\x50\x87\xc4\x8b\xd2\xdb\x30\x2a\xc4\xad\x87\x60\xd9\x63\xb1\x8a\x72\xc7\xb2\x68\x8e\x12\x25\x94\x9c\xc1\xda\x78\x3e\x81\xf8\x1d\x25\xca\x9e\xad\xc0\x38\xc6\x7a\xc2\x65\xcb\x89\x1d\xf4\xdd\x73\x5e\xf4\xe2\x3b\xa2\x3c\x9f\x40\x17\xf4\x5b\xe2\x25\xf9\x7b\xa9\x8a\x45\xd3\x2c\x76\x4b\xa6\x59\xbc\x54\x5d\x30\x8d\x24\x7d\xfd\x07\x61\x0b\x0b\x96\xd2\xfc\x41\xd2\x5a\xd6\xb3\x3b\x8f\xfc\x15\x10\x19\x75\xe2\x2a\xc1\xbb\xb8\xe5\x0f\x92\xfb\xe4\x0f\xfc\x5b\x0e\x07\x4b\x1a\x99\x0a\x70\xe5\xc8\xb1\xca\x84\x65\x6c\x2c\x6a\x30\xe8\x53\x0f\xf4\x9b\x32\x39\x44\x43\xc9\x80\xf8\x41\xd5\x73\x42\xbe\x23\x1a\x0a\xa2\xfb\xd8\xce\x01\x68\x7b\xbe\xe6\xdf\xb2\xd7\x6b\x3e\xaf\x47\xd3\x8b\x0f\x4b\x77\x5a\xd8\xc2\x75\xdf\x25\x79\x67\x0c\x5a\xd3\x2c\x6e\x4c\x58\x26\xb8\x83\x91\x4e\x06\xf6\x82\x3e\xd1\x0a\x18\xa4\xb1\xdf\xd8\x7c\x86\x2e\x2c\x51\xa0\xcd\x25\xa7\x71\x58\x09\x6d\x5e\xaa\x5a\x31\xd7\x88\xbe\x7a\xd7\xb5\xf1\xce\x3c\x04\x81\xd7\xe6\x98\x12\x45\x87\xf5\x6a\x40\x4f\x47\x74\x5f\x24\xd8\x8b\x4b\x41\x7c\x5b\x02\xa2\x38\x1f\x2b\x2d\x6e\xae\xbf\xae\x2d\x4e\xb3\x78\x71\xf3\xf5\xea\xe3\x65\x6d\xb5\xf5\x9c\xb5\xa0\x9f\xf5\x67\x9c\x0d\xbd\x19\xef\xab\x5c\x7e\x3a\x64\x6b\x24\x8e\x7a\x35\x18\x1f\xf1\xa4\x06\x09\x46\x89\x75\x14\x8d\x1a\x8c\xf5\x9f\x47\xe8\xd3\x58\xa1\x2a\xb0\x0c\x1b\x55\xa8\x63\x33\x27\xdd\x39\x7f\xcf\xee\x65\xa5\x36\x6c\x6f\x63\x8b\xaa\x5b\xf8\x36\x62\x78\xf2\x92\x95\x76\x76\xcc\xf7\xe4\x2d\xe5\x1d\xa8\xbf\x76\xb2\xa9\x4b\xac\xe0\x8d\xe9\xae\x0e\x6d\xb9\x39\xeb\xcc\xfc\x43\x5b\xa3\xde\x86\x4d\x9b\x60\x1d\xba\x2a\xb3\x94\x9b\xbd\x1c\x15\x23\xb9\x55\x0e\xd1\x03\x0d\xba\x20\xe0\x25\x54\x08\xcb\x4a\x1d\xfb\xaf\xaa\xb4\xf0\x00\x02\x76\x76\xba\xe6\xf3\x02\x28\xfc\x56\xba\x38\x20\x2d\x7e\xb7\xd4\xe7\x1d\xb9\x07\x49\x90\x15\x0e\xcb\xd0\x59\x5b\xaf\xc2\x4a\x09\x0a\x35\x85\x40\x4d\x35\xab\x77\x25\xfd\x7e\x41\xdd\x67\x2c\x69\x32\x07\x21\x3e\x13\xa1\xf1\x2c\x84\x24\xc8\xca\xf8\x6b\x11\x42\x5d\xce\xb7\x5b\xc8\x11\xb6\xa1\x4e\x73\xe8\xe7\x0f\xa2\x9a\x72\x52\x03\xf9\x3e\x86\x37\x70\xcc\x8e\x61\x13\x2a\x15\x61\x66\xaa\x0a\xcb\x26\xb1\x44\x35\xd4\xb2\x25\xde\x63\x58\xf1\xd2\xf7\xcb\x41\x56\x0d\x12\xdc\x45\xc2\x89\x52\xe2\x77\x20\x87\xee\xc2\xe0\x8a\x55\x51\x2c\xe9\x95\x81\x79\x31\x4b\x97\x46\x90\x1f\xf3\xa9\x15\x52\x83\xc1\x6f\xbe\x48\x30\x0d\x51\x05\x21\x49\x72\x77\x56\xe1\x8d\x37\xc2\x7a\xe7\x95\x04\xe3\x7d\x7a\xfd\x1a\xd7\x4c\xb5\xb8\xac\x5a\x72\x52\x9c\xa5\x55\x5c\x56\x92\x94\x75\x77\x59\x99\xfc\xd1\x18\x91\x59\xa5\x8a\xc5\xc4\x90\x2f\x5f\x42\x1b\x9a\xe0\x24\x98\xa6\xe6\x2a\xc3\x11\xe5\x94\x45\xc4\x58\x5f\x50\xcb\xea\x82\x79\xf7\x70\xcc\x8e\xd5\x37\x09\xd8\xc2\x35\x3c\xe2\xb0\x86\x57\x5b\x77\x62\x38\xe3\x3d\xbb\x0f\xf9\xc9\xf4\x3c\x8a\xd3\x34\xab\xe0\x9f\x71\x7a\xad\x41\x34\xa9\xf0\xe8\xb8\x53\x35\xe7\x20\xc2\x60\x19\x2a\x03\xdd\x56\x93\x93\x57\xab\xb0\xed\x26\x0a\xe3\xf5\xba\x76\x55\x80\xe5\x2e\x74\x16\xc0\xcf\xb4\x06\x2b\x6a\x3a\x77\x82\xfc\x62\x98\x69\xbb\x2b\xe7\xb4\x89\xac\x53\xf0\x62\x73\xab\xf8\x9c\x6c\x16\x61\x49\x3e\x33\xc4\x7b\x20\x7b\xeb\x38\x48\xae\xac\x18\x24\x9b\x16\xc9\x72\x2c\xdd\x55\x4c\x24\x37\xd9\xea\x2c\x85\x83\xd5\x5f\x3e\x48\x94\x40\x16\x29\x12\x66\xc1\x58\xec\xca\xd6\x6b\x7b\xc5\xac\xed\x02\x49\xc6\x86\x07\x83\xa5\x8d\x9d\x3f\x03\x7a\xcb\x3f\x71\x2a\xa1\x89\x2b\x6a\xa7\x0b\x1b\x5b\x25\x42\x12\xa5\x11\xe5\x22\xb7\xf2\x72\x8c\x64\x5c\x5b\xaf\xa9\x75\xed\x08\x4e\xb5\x0f\x6c\x6f\x53\xe7\xf0\x19\x77\x4f\x14\x0a\x05\x69\x8d\x5f\x51\x58\x97\xf6\xcb\x0b\xfd\x72\xd3\x2f\x0f\xfb\x2d\x40\x80\x3a\x0c\x2f\xe1\xb3\xdc\xe8\x96\xa1\xdd\xd9\xb0\x8a\xf4\x6a\xfb\x39\xca\x83\xf5\x45\x79\x75\x79\xd1\xde\xb8\xbc\x68\xe9\x37\x3f\xaa\x4e\xcd\xaa\xea\xa8\xa7\x0c\xa7\x93\xc5\xcd\xf6\x86\xec\xa0\xf3\xac\xd8\x3b\xcb\x2f\x16\x60\x19\xe3\x91\x66\xe3\x28\xe1\x74\xd1\xae\x8e\x41\xf4\xcc\x9c\xa2\x02\x2d\xc0\xb2\xac\xf8\xbf\x29\xf0\x31\x00\x1c\x60\x3c\x74\x3c\x9b\xdf\xde\xb0\x61\xf4\x13\xbf\x81\x6d\x1d\x37\x9d\x82\xa5\x37\xd2\xec\x7a\x07\x5b\xa9\xe0\x33\x00\xef\x0f\xcf\x17\x60\xb9\xa9\x1f\xc2\xc2\x95\x89\x76\x44\x4f\xdd\x23\x7a\xcc\x7a\xc6\x46\x2c\x8b\x60\xad\xfe\x5a\xeb\x6c\x35\x27\x7e\xdf\x92\xd0\x09\x4b\xe9\xe9\x76\x70\xdc\x72\xa3\x9e\xc3\x29\xda\x5e\x29\x7c\x0c\x1a\x17\xa6\x2c\x8e\x1f\x8a\x11\x27\xec\xe6\x63\xce\x7b\x5e\x98\x73\x13\x7d\xbd\x62\x92\xb4\x61\x45\x7c\x4f\x7d\x16\xa7\x77\xc1\xc7\x17\x2f\xd2\xfe\x4f\x0d\x33\x3c\x5f\x0f\x37\x83\x2e\x74\x46\xcd\xdc\xc0\xef\x36\x21\x64\x18\xd1\xdd\x06\x8a\xf2\x0c\x44\x65\x21\xe2\x3d\x9c\xd5\x93\xf7\x83\x54\x85\x55\xfa\xd4\x6a\xb4\x5b\x9a\xce\xb3\x28\xd6\xf0\x82\xd1\x99\xf1\x16\x47\xe0\x20\x2b\x55\x5e\x93\x18\xbe\x80\xa3\x53\x51\x48\xfe\x28\xa9\xe2\xa2\x4d\x95\x2a\xad\x1a\xb4\x28\x13\x82\x5a\x47\xab\xcf\x3d\x90\xea\x18\x58\x18\xc0\xc2\x44\xc4\xda\x5a\x28\xf2\x82\x17\xa8\xd1\x8d\xd0\x02\xd6\x42\xa2\x47\xeb\x05\xd6\xc2\xd2\xf2\x80\x8d\x5b\x06\xe1\x57\xcf\x41\x78\x69\x2a\x28\x99\xdb\x20\x5f\xda\x5a\xa0\xc3\xf1\xf9\x3f\x3f\xf4\xf6\xaf\x4e\xfe\x06\x5d\x30\x47\x35\x27\x71\xc2\x0b\x3f\xec\x58\xd5\xa6\x02\xb0\xff\xb9\xcd\xda\xeb\x5f\xde\xee\x30\xc9\x57\x3b\xe5\xcd\xbc\x5b\x89\x1b\x26\x94\x85\x83\x3f\xcc\x8f\x4c\x36\xdb\x36\x82\x97\x5a\x8e\x9a\xa8\xde\x45\x04\x4b\x15\x9a\xcb\xa3\x2c\x1d\xb7\x6b\x98\x30\xa2\x43\xff\xac\xd6\xa0\xd1\x68\x2c\x37\x1d\xb7\x3a\x4c\x16\x6d\x27\xd7\x89\xb2\x20\xd9\x4a\x4f\x9f\x92\xa5\x35\xf5\xec\x48\xe7\x94\xa3\xc6\x81\xf3\xa7\x05\x2b\x0f\x32\xaa\x8a\xe7\x2d\x40\xf9\xcc\xb1\xa4\x0a\xbf\xd8\x2b\x3d\x77\xdb\xd7\x79\x6c\x09\xd0\x0b\xc7\xa7\x39\x7c\x25\xe8\xfb\x04\xa9\x06\x2b\xb0\xa4\x1d\x81\x92\x34\xa9\xeb\xa6\x5b\xae\x76\x61\x8c\x27\x13\x88\x12\x30\xf8\x38\x57\x6d\x38\x5f\x54\x50\x83\x49\xd5\xbd\xc2\x4a\xfb\x3f\x5d\x4c\x2e\xcd\x08\x2f\x26\x97\xa1\x03\xbf\x6f\x39\x4e\xfb\x3f\x11\xb7\x4b\x11\x93\xf1\xe1\x74\xc0\xd5\xb6\x08\x22\xfa\x99\xd7\xe8\xa9\x8f\x8a\x4c\x83\x26\x49\x33\xc1\xe2\x26\x8b\x92\xdb\xb7\xd3\x51\x78\x16\xa8\x61\x53\x6b\xa6\xe8\x4f\x47\xee\xa5\xae\x2a\x34\x99\x54\xa6\xa3\x2d\x63\x4d\x90\x55\x75\x2e\x66\xbf\x8e\x4d\xd1\xdc\x52\xf0\xa9\x95\x0b\x1c\xbf\x3b\x26\x34\x09\x9a\x06\x47\x46\x36\x39\x1d\x43\x95\x48\x02\x61\x9d\xb9\xd1\x5c\xa0\x32\xe4\x22\xaf\x01\x66\x67\x11\xd9\xe0\x4a\xea\x05\xea\x49\xad\x2c\xc1\xdf\xee\x0b\x53\x91\x0d\x0c\x56\x52\xfc\xc9\x4a\x2e\xf6\x8a\xf0\xf4\x99\xe7\x5e\xfd\x8a\xed\x40\xff\x05\x2b\xf8\xb4\xd8\xed\xcc\xf7\xc2\x73\xdf\xf4\x60\xce\xdb\x38\xee\xb3\xc1\x2d\xc6\x9d\xc8\x86\x51\xc2\xb2\x07\x1a\x96\xcf\x46\xe1\xe3\xe4\x68\x65\xc5\x47\xee\xc2\x74\xa8\xb5\x28\x91\x0d\x2e\x1c\xb4\xf4\x45\x38\x32\x4f\x8d\x5e\xea\xfe\x35\x8d\x12\xfd\xd2\x67\x04\x83\x9b\x69\x72\x8b\x2f\x96\x54\xa6\x5d\xf3\x8e\x66\x14\xb3\x3c\xe7\xc9\x1e\x56\x70\x89\x4d\x4d\xdc\xd5\x19\xd5\x20\x56\xf4\x9e\xa4\xa2\x46\x40\x6b\x90\x71\x31\x8d\xf3\x2d\xf3\xf2\x64\xc0\xe2\xc1\x34\x66\x39\x87\x21\xcb\x19\x38\x39\x53\xe9\xf9\x68\xcb\x79\x9c\x8d\x63\xaf\x01\xe6\xf3\xc5\xfe\x8c\xbd\x1b\xc9\x11\x10\x23\x26\x85\x93\x6a\xa2\xe5\xdb\xbb\x73\xd1\x08\xfc\x24\x87\x4e\x95\xd4\xb9\x5d\x22\xa8\x8c\xef\x56\xc2\x57\xec\x43\xf1\x49\x2a\x7e\x15\x62\x58\x05\x1c\xcc\x2c\x63\xc8\xae\x91\xbb\x14\xb5\x26\xa9\x65\x1b\xd9\xad\x1e\x4f\xd9\x58\x8c\xf9\x9e\x08\xac\x6f\xe0\x68\xb1\x7c\x4c\xf2\x6f\xb7\x5c\xfe\xef\x62\x46\x73\x17\x2e\x95\xb2\x01\xcb\x95\x0e\x7f\x71\xa9\x78\x52\x38\xd7\x95\xe8\x0c\x9b\xb0\x7e\xcc\x9b\xfb\x94\x4a\x07\x88\x6e\xd8\xa9\xa0\xe0\x8f\x72\xf8\x39\xc7\xa7\x32\x0b\xcd\xa6\x95\xa0\x3c\xd7\x22\xc9\xd9\x24\x9d\xe0\x40\xa9\x79\x19\xa3\x9b\xbc\x9d\x8e\x36\x00\xba\x0e\x9b\x6d\x85\xe5\xed\x75\x55\xae\x34\x86\x42\x85\xd5\x0e\x74\x1d\xd5\xc0\x2f\xa7\x6d\xdb\x9c\x57\xb4\xd4\x2c\xde\xec\x86\x18\xcd\x41\x66\x0e\x1a\xcf\xc2\x40\xb1\xa2\x43\xf5\x90\x82\x15\xad\x6c\x55\xad\xe2\xb6\xf6\x15\x8a\x1b\xa6\x65\xcb\xf9\x26\xb0\x61\xcc\xb3\xd5\x8e\x4a\x15\xdc\xee\xfc\x85\x9e\xba\xf1\x4f\x3c\x86\x16\xfa\x36\x7b\x9f\xd6\x31\x17\xd5\xa1\x3c\x82\x25\x4b\x39\xdc\xa5\x59\x7e\xa3\xde\xb5\x8e\xd9\x2d\xc7\x97\xae\x14\xf3\x5c\x87\x08\x62\x2a\x02\x0f\xa6\xd2\xd4\x7e\x7e\x94\xd1\x6a\xcc\xe2\x18\xb7\x32\x79\xbc\x9a\x64\x7c\x44\x51\xcc\x28\xc4\x7a\x65\xaf\x0a\xed\xef\xbe\x5b\xab\x77\x5a\xed\x55\xf8\x2b\x67\x49\x3d\x4e\xa7\x13\xf8\x9e\x45\x71\xfc\x80\x98\xbd\x67\xd9\x2d\xec\xca\x01\xe8\x06\x9d\x56\xfb\x95\x6c\xf0\x1a\xfe\x1e\xe5\x2c\x7e\x80\x0f\xd3\x9f\xb3\x88\xd2\x11\xef\x26\xc3\x8c\x3f\xc0\xf9\x74\x12\xe5\x22\x4a\x4c\x78\x4f\x37\xa8\x2a\xe2\x91\x7e\x8a\x86\x7c\x08\x4b\x4c\xd4\x23\x7c\x8f\xa5\xe2\x9e\xb2\xe4\x41\xce\x5d\xc6\x05\x06\xef\x8c\xc6\x93\x38\xa2\xc0\x9e\x77\x72\x0d\x24\xf9\x43\x03\x0e\x13\x48\x52\xe5\x1b\x8e\x21\xf5\xf2\x1b\x0e\x74\x36\x15\x52\x19\xba\xe1\xf1\x10\x62\x8a\x71\x84\x3e\x63\xc9\x03\x0c\xd9\x98\x5d\x73\x41\x91\x8e\x22\x4c\x2c\x6c\xf2\x26\x9b\xa8\x46\x0e\x96\xe5\x21\x66\x55\x6c\x59\x15\x4a\x36\x4d\xb8\x8a\xc8\x1a\x84\x8d\xd5\x9d\x4e\xa6\xd9\x24\x15\xbc\x46\x11\x8c\x54\x94\x57\x18\xa4\xe3\x31\xcf\x06\x11\x8b\x41\x8a\x02\x95\xac\x43\x98\xc0\xab\x2c\xce\x79\x26\xe7\x5b\xfe\xce\xb8\x0d\xe5\x0a\x14\x8e\x75\x94\x71\x1e\x3f\x84\x21\x56\x9d\xf8\xaa\x4e\x74\x59\x13\x61\xb5\x8d\xf1\x9a\x14\x6f\x14\x03\xdd\xa2\x1e\x99\xa4\xa8\x4b\x8e\x23\x91\x71\x39\x03\x98\x7f\x65\x0b\x1e\xd2\xa9\x29\x97\xa0\x00\x06\x31\x8b\xc6\xf4\x36\x5b\x16\xde\x65\x69\x4e\xef\x7a\x35\xeb\x59\x32\xc2\xe1\x08\xeb\x14\x88\x44\x90\x30\xf3\xeb\x24\x4b\x87\xd3\x41\x5e\xc3\xc7\xa9\x83\xdb\x24\xbd\x8b\xf9\xf0\x1a\x1d\xdd\xd5\x5b\x70\x55\x23\x08\xc0\x7b\xa7\x62\xb3\x11\x28\x36\x99\x64\x5c\x05\xea\xed\x53\x98\x3c\x39\x20\xb5\x58\x87\xb8\x1a\x3a\x0d\xd8\x95\xd4\xe5\x43\xad\x74\x2b\xdf\x01\x61\x5c\xea\x27\x31\x8b\x92\xf8\x01\xc6\x2c\xbb\xa5\x2c\x71\x62\x3a\xb8\xa1\xc9\x71\xa8\x44\x7d\xfa\xa4\x92\x95\xfb\x5c\x3f\x0f\x2e\xd2\x42\xb6\x59\x55\xa1\xe3\x54\x08\xdb\x31\x7b\xd0\x64\x57\xaf\x18\x00\x9d\x1c\x09\x47\xe4\x50\xc9\x48\x0a\x59\xc3\x0a\x51\x9a\xb8\xd9\x08\x94\x7c\xa9\x30\x0a\x6b\x80\x5a\xb3\xd6\x7c\x9c\x63\x50\x1b\xba\x40\x75\x94\x5d\x6b\x34\xaa\xc2\x67\x93\x1d\x53\x74\xd0\x5c\x48\x15\x76\x76\x76\x30\xdf\x75\x59\x45\xa5\x17\xd9\x33\x92\x54\x75\xbc\x64\xdb\x98\x4a\x4f\x05\x31\x86\xff\x81\xfc\x4e\x8e\x35\x96\x6b\x1a\x9d\x37\xd6\xd6\xd6\x3a\x18\x24\xf9\x96\xf3\x89\x6e\x20\x3a\x72\xb6\x57\xdb\xf5\x7e\x24\x05\xb5\xb6\xf8\xdc\xe1\x72\x1a\x70\x50\x0f\xd7\xa3\x24\x17\x0d\xdd\x46\xb2\x32\x65\x09\x64\x82\xc3\x5f\xba\x24\x0e\x46\x2c\x8a\xa9\x0a\xfa\x6e\xa0\x89\xaf\xd3\x6a\xb5\xe0\x0d\xfd\xb3\x89\xda\x82\x51\xf2\xea\x18\xb1\x0e\x7f\x0e\x53\xa3\x3e\x10\xb5\x44\x9b\x2e\x6e\x2e\x26\xa9\x58\x59\xb9\x94\x54\xd8\xf2\xc8\x25\x3a\xb0\x02\xa2\x6d\x0b\x1e\x35\x51\xea\x75\xe3\x06\x2e\xda\x12\xb7\xf5\xb5\xb5\x8e\xf2\xd7\x11\x1d\xef\x83\x7b\x86\x92\x5d\x7e\x46\xb8\xdb\x98\x71\x9c\x20\x3f\x2e\x94\x98\x2a\xd4\xb4\xdb\x4d\xea\x59\x99\xf0\x8a\x9b\xd4\x9f\xbb\xc0\x9f\xbb\xc0\x9f\xbb\xc0\xff\xad\xbb\x40\x49\x66\x4b\x79\x8e\x59\xd6\xb9\x03\x61\x14\x4f\xc5\x0d\x5d\xdb\x88\x2d\x10\x9c\xc3\x90\xcb\xb3\x0b\xaf\x54\x71\x3c\x51\xa2\x7f\xf5\x79\x9c\xde\x21\xdf\x0e\x79\xce\xa2\x58\xc0\x72\x73\x01\xe0\x5f\x57\xc7\x27\x57\x07\x47\x1f\xcf\xde\x6d\x1a\xa3\x20\x6e\x06\xff\xba\xc2\x40\xe4\xbb\x47\x4e\x69\x9b\x0a\xce\xfe\x79\xbc\xe7\xb7\xe9\x50\xc1\xc1\xc7\xa3\x23\xbf\x60\x55\x15\x1c\x1e\x1f\xba\x3d\x00\xbc\xa2\x82\xb7\x47\x27\x7b\x7f\x73\xbf\xc3\x1a\x15\x9c\x9f\xf6\x7a\x67\x5e\xc1\x7a\x4d\x8d\xfd\x54\x7b\xbd\x0d\x39\x5d\x2a\x50\x30\xc9\x31\x8a\x94\x28\x4d\x9a\x43\xee\xfc\xb2\x41\x2c\x1b\x70\xcc\xaf\x29\xfd\x26\x11\x6c\x01\x60\x19\x83\x72\x62\x74\x2c\xf3\xea\xcf\x94\xdb\x80\x9d\xb2\x17\x31\xe1\xb8\xa2\x25\xe7\x25\x69\x36\x66\xfa\x6d\x82\xdc\x8e\x14\x2d\x4f\xfc\xb1\x58\x5a\x9e\x9d\x9f\xf6\x76\xdf\x5f\xf5\x8e\xf7\x75\x05\x45\xcb\xe3\x5e\x6f\xff\x6a\xff\x70\xef\xdc\x34\x54\xb4\xec\x9d\x9e\x1e\x9f\xb8\xd0\xea\x6d\x1f\xd4\xe9\xe9\xc9\x29\x96\xd7\x55\x8b\xfd\xdd\xf3\x5d\xe7\x33\x40\x7d\x95\x4e\xbd\xff\xba\x7a\xdf\x73\x1b\x40\x5d\x53\xff\xe3\x81\xd7\x00\xea\x6b\xba\xc5\xdf\x7b\xa7\x67\x87\x27\xc7\xba\xb8\x6e\xa8\xef\x92\x16\x8f\x34\x2e\x23\xed\x9d\xbc\xc7\x20\xf9\x87\x27\xc7\x05\x76\x7a\xdb\x3b\x3b\xbf\x3a\xfb\xd0\xeb\xed\xfb\x34\x6a\x3b\xc5\x25\xed\xbf\x53\x83\xeb\x1d\xec\x7e\x3c\x2a\xd4\x90\x44\x59\x50\x2c\x76\x74\xde\x3b\x0d\x81\x1b\xf0\xef\x3e\x1e\x1c\xbc\xdf\x3d\xbe\x3a\x39\x3e\xfa\xa7\x5b\x45\xd1\xee\xf4\xa8\x17\x36\xf4\xf9\xf7\x1f\x45\xc8\x96\x8b\x35\x72\x67\xe7\xa7\xbb\xe7\xbd\xef\x4d\x07\x2d\x4d\x34\x13\x41\x44\x31\x96\x4a\x51\x30\x64\x39\xbb\x42\x17\xc6\x51\x24\x77\xb4\x8a\xdc\x21\xaf\x6f\x70\x1d\x9b\x95\x5b\xd5\xf4\x7d\x7b\x78\xbc\x7b\xfa\xcf\x22\x16\x8a\xbe\xe7\xbd\x7f\x9c\x97\x8d\xa1\xad\xa7\x74\xf7\x6c\xef\xf0\xb0\x50\xa3\x5d\x93\xca\x56\x57\x01\x80\xca\x50\x4a\xbb\x81\x94\xb1\x55\x04\xfb\xf1\xf8\x6f\xc7\x27\x3f\x1c\x17\xda\x75\xf4\xd8\xe4\xa6\xa3\x84\x8e\xc7\x1c\x63\xca\x74\xaa\x90\xdf\xef\x1d\x1c\xed\x9e\x17\x89\xb8\xa1\x90\x3b\xfe\x78\x74\x54\xc4\x1e\xef\xe6\x9a\x4d\x0c\x7c\x52\x6f\x4b\xc1\x89\x5f\xa2\x24\x8e\x12\x5e\x83\x21\x3e\x58\xc6\xe8\xb9\x09\xaa\xc1\x92\x96\xee\x95\xcc\xb3\x12\x22\xce\x3a\xd9\xdf\x71\x18\x30\x79\x48\xbf\xe6\x39\x6a\xa8\xd1\x28\x1a\xb0\x24\x97\x92\x40\xee\x40\x69\x2a\x72\x4c\x4c\x42\x87\xf1\x14\xc8\xdf\x05\xd3\xb4\xcb\xe3\x7c\x94\x50\x50\x24\x3c\xa0\xd7\xa5\x42\x33\xc9\xf8\x35\x4f\x78\x86\x3b\x18\x66\x78\x25\x75\x25\x51\x46\x20\xc8\xd3\x34\x16\x6a\x58\x3c\x19\x44\x5c\xfc\x79\x96\xff\x53\x8b\xfb\x53\x8b\xfb\xbf\x5b\x8b\x53\x02\xcc\xbf\x7a\xa9\x81\x88\x92\x01\x87\xa9\xb2\x9e\x8f\xd1\x7e\x98\xa4\x8e\x5c\xb1\x46\x00\x59\x78\x2e\xd7\x49\xc5\x79\x47\x50\x23\x11\xa2\xbc\xd6\x5d\xb7\x75\x3a\xc4\x63\x60\xf8\xce\xda\xfa\x16\x24\xd6\x76\x3e\xd0\x31\xdc\x3d\x2f\x77\xac\x7e\x0b\xdb\xb0\xb1\x05\xb7\xde\x7d\x02\x9a\x0d\x06\xf0\x12\xda\x55\x78\x03\x95\xd6\x7d\x6f\xff\xed\xc6\xc6\x6a\xa7\x05\xff\x0d\x95\x01\x99\x12\xaa\x55\xd8\x74\x7e\xb8\xb7\x4f\x88\xe1\x45\x72\x09\x5d\x18\x14\x02\x30\xca\x32\x1d\xa7\x5f\xe5\x6c\xa1\x11\x49\xd5\x22\x65\xc3\x06\xfc\x55\x4e\x64\x67\x6d\x4d\x1b\x08\xe2\x34\xb9\x96\x7a\x1c\xe6\x38\x98\x64\x69\x3f\xe6\x63\x4a\x7e\x31\xc8\x06\xe7\x8a\x1a\x0e\xb1\xb6\x16\x1c\x4b\xca\x20\x1b\xac\x76\x2a\x83\x6c\x30\xd3\x8a\x92\x4b\x34\x15\x20\x6d\x10\xe1\x98\xe5\x05\x2f\x48\xc8\xb4\xb0\x00\xb2\x0e\xfc\xb7\x79\x90\xef\x5d\x59\x4c\x52\x41\x97\x16\x3c\x19\x7a\x97\x16\xb2\x4d\x17\x64\xf7\x48\xa7\x8d\x2a\xfc\x37\xe4\x17\xf8\xfb\xbf\xd1\x0a\x11\x5d\x92\x45\xe6\xe0\xe0\xb2\x60\x37\xa0\x5a\x95\xba\xa4\xae\xdc\x0f\x25\x84\x59\x96\x03\x1c\xa6\xdd\x02\x9f\x95\xa9\xeb\x4f\xbb\xc1\x9f\x3b\xce\x9f\x3b\xce\xff\x7f\x76\x1c\x7c\x8c\x93\xcb\x43\x3e\xb8\x0f\x72\x1a\x8d\x26\x7e\x6d\x4a\x46\xa3\xb8\x32\x28\xf6\x32\xce\xc3\x9a\x4d\xfc\xa8\x6b\xe8\x4b\x2e\xaf\x86\xfa\xa8\xeb\xa0\xdc\x09\xa1\xe0\x47\x5d\x63\x2c\xae\x51\xa4\x7a\x35\x54\x88\x3e\xec\x6a\x41\x1e\x95\x30\xa3\x1d\x86\xf6\xcb\x19\x3e\xc2\xfc\xea\xff\x96\x9b\x12\xe0\xd7\xb7\x2f\x03\x88\x38\x7e\x23\xeb\x8b\xa4\x89\xb5\xbf\x80\xa2\x4d\x6b\x4b\x15\x78\xf6\x17\x0c\x8f\xbc\xd0\x6c\x52\x91\xb5\xc0\x50\x9b\x8e\x6e\x63\x2d\x30\x54\xb0\x6a\x0a\xd0\x02\xa3\xcf\x55\x5d\x78\xa5\x0b\xd0\x02\x03\xb6\x60\xcd\xf6\x82\x36\x18\xa7\x68\x7d\x8b\x86\xff\x0d\x0d\x30\xdf\xc8\xfe\x62\x88\x79\xf2\x37\xf7\xf8\xe8\x10\xd3\x1a\x60\xa8\xc0\x21\xa6\x31\xc1\x80\x21\xa6\x2e\x42\x23\x8c\x03\x4e\xee\xf8\x3e\xbc\xd3\xd3\x93\x53\x2c\x31\x53\x60\xcd\x30\xaa\xcd\xaa\x85\x67\xec\x30\x1a\x9e\x9d\x06\x6d\x8a\xd1\x25\xce\x3c\x78\xb6\x18\x59\xa6\x27\xa2\xdc\x16\x63\xc6\xe5\xd9\x63\x1c\x8a\xe8\x0a\xd6\x22\xe3\x92\xac\x1d\x54\x08\x60\x74\xe1\x3b\x33\xd2\xa2\x4d\x46\x87\x29\x32\x5c\x47\x46\x19\x7f\x52\x0c\x11\x5d\xa3\x8c\x2d\x36\x94\x3c\x3d\xea\x15\x2c\x02\x1e\x4b\xff\xc3\x87\xec\x33\x76\x68\x94\x31\xc3\x5f\xf8\x16\x06\x19\x43\x22\x34\xca\x84\x48\x38\x44\x46\xab\x4a\x01\x4b\x87\xc8\x68\x96\x29\xa9\xe0\x9a\x65\xd4\x90\x94\x2d\x26\xa8\xda\x51\xdc\xf0\xb4\x21\xc6\x10\x06\x4d\x31\xb2\xed\x06\x92\xe3\x1b\x8a\x48\x92\x91\xb2\xa3\xf7\xbb\xff\x40\x7e\x3f\xea\xfd\xbd\x77\x44\x6c\xd3\x5c\x86\xf7\xec\x3e\x1a\x4f\xc7\xea\xa5\x81\x5c\xd7\x63\x3e\x3e\x42\xd7\x88\x28\xd1\xe8\x1f\x26\x51\xde\xd1\x08\x4b\x38\x3f\xbc\x3d\x3c\x3f\x93\x54\x59\x43\x20\xab\x9d\xbf\xc1\xd1\xbf\x5e\xbf\x86\xbb\x28\x19\xa6\x77\xba\xe6\x7e\xef\xc0\xeb\x71\x43\x33\xe2\x51\xef\xf8\xfb\xf3\x77\x57\x7b\x27\xfb\x52\x9e\x75\xa1\x43\xb8\xd8\xe4\x45\xca\x2f\x10\x25\x5a\x0d\xb7\x5d\x0c\x5c\x6b\xa2\x41\x2b\xd1\xd3\x3b\xde\x57\xf2\x12\x8d\x3c\xaa\xdb\xa3\xc3\xf3\xde\xe9\xee\xd1\x99\x99\x8f\xb5\xf5\x10\x7c\x94\xf3\x4c\x8a\x2e\x7c\x0f\xd4\x6a\x34\xe4\x91\x46\xb7\xd6\x68\xa9\xd6\x06\xda\x0a\xb4\x61\xc5\x43\x3d\x80\x7a\xa4\xa0\xa6\x19\x1c\x79\xf8\x5b\x85\x52\x22\x5f\x8e\xf4\x7e\xd0\xed\x6a\x2b\x80\x2e\x35\x0a\x26\x0f\xa8\x24\xe6\x55\xb3\xb7\x1e\xba\x5d\x68\x87\x94\xa4\xda\x3a\xcb\x55\x9e\xb1\x44\x8c\x54\x86\xbb\x7e\x94\x2b\x42\x1b\x70\xef\x7a\xbb\x1f\xae\xce\x0e\xff\xd5\xd3\xa4\x83\x65\x43\x90\x15\x5c\x24\xcb\x30\x56\x1c\x73\xc3\xd9\x84\x6c\x69\x0e\x63\x20\x5f\x58\xc6\xd8\xc5\xec\xb0\x12\x03\xa3\x90\x71\x0c\x68\x6c\x2b\xf7\xa3\x1c\xbb\x27\x10\x87\xc7\x57\xef\x77\xcf\xf7\xde\x59\xb9\x82\x6c\xab\x3e\x75\xd6\x36\xb6\x4c\xbd\xa3\x93\x93\xbf\xed\xbe\xeb\xed\xee\xcb\x63\x9c\xad\xb5\xe2\x00\x59\x41\xf7\x62\x6c\x21\x05\x62\xef\x9c\xb6\x95\x2e\xb4\xee\x3b\x3a\x0d\xe3\xe1\xf1\xa1\x94\x49\xbb\xe7\x3d\x29\xac\x94\xac\xeb\xfd\xe3\xfc\x74\xd7\x7c\x5d\x57\x12\xf6\x78\xf7\x7d\xcf\x7c\x7c\xad\xf0\xdb\x3b\x79\xff\xbe\x77\x6c\x41\x7c\xa7\xa4\xe9\xbb\xbd\xd3\x3d\xf3\xb1\xdd\x52\xb5\xdf\x7e\x3c\xfb\xa7\xfd\xda\x56\x5f\x49\x19\xb0\xfd\xad\xaf\x2b\xe4\xde\x9e\xd1\x6e\xf8\xfe\xe4\xb4\xe7\x4a\xa2\x65\xe8\xc7\xe9\xe0\x56\xad\x8c\xf1\x24\xe6\x98\x85\x19\x23\x69\x61\x82\x4b\xca\x5e\x28\x57\xb3\xfc\x95\x4e\x73\xf9\x53\xf3\xcc\x19\xf1\xdf\xd5\xfe\xc9\xb1\x99\x68\x07\x28\x69\x51\x13\x9e\x8d\xd2\x6c\xcc\x87\x4e\x33\x8b\xe7\xa9\x94\x57\x72\x8e\x64\xb3\x51\x94\x44\xe2\x06\x44\xce\x32\x8b\x06\x46\x90\x74\x7b\x67\x39\x24\xfc\x3e\x37\x22\xb1\x00\x56\xa3\x23\xf7\x0c\x07\xec\x30\x4d\x78\x0d\xd8\x60\xc0\x27\x92\x83\x82\xf1\xd9\xa1\x21\xb4\x93\x33\xe4\x56\x9c\xe2\xd6\xaa\xca\xf6\x12\xdd\xc3\x66\x15\x74\xcc\x7b\x8a\x0d\x5e\xb3\xe7\x1c\x15\x02\xd7\x75\xf2\xe0\x59\x56\x11\x79\x36\xae\x91\x2a\xb4\x97\x0e\x95\x57\xb4\xfc\xd8\x90\x7a\x73\x57\x6a\xcf\x17\xa6\xd4\x0d\xff\x60\x3e\xfa\xa1\x15\x32\x96\xdc\x56\x46\x7e\xaa\x79\xf9\x7b\x1b\x9f\xd8\xd5\xe9\xc7\x0e\xbc\x82\x37\xf0\x1d\xbe\x62\xf4\x9b\xff\xcc\xb3\xb4\xd2\x9f\x4a\x00\x4e\x2a\x24\xeb\x44\xbd\x65\x7d\x21\x62\x7a\xe1\xd5\x92\x55\xfb\xd3\xd1\x45\xcc\xd1\xe0\xd3\xda\x82\x47\x78\xa4\xbd\xe9\x9b\x6d\x2f\x52\x65\x3c\x40\x86\x61\x72\x91\x0f\x24\xe3\xa8\x2b\x00\x35\xed\x42\xaa\x91\xb8\xb9\x37\x50\x1e\x58\x95\x5c\xd5\xb8\x4e\x49\xf3\xcc\x6f\x32\xdc\xdc\x73\x2f\xdd\xa3\x48\x29\xe7\x8e\x7b\x00\xc7\xc3\xd8\x9d\x64\x8e\x3c\x55\x99\xb9\xe5\x89\x5b\xc2\xd0\x29\x2e\x58\x1c\xa7\xb2\x76\x72\x0d\x0c\x62\x96\x5d\xa3\x3d\x65\x5c\xdf\x51\x9d\x2a\x57\x79\xcc\xbf\x97\x4e\x1e\x30\x9b\x45\x42\x79\x5f\x25\x9c\xca\x19\xe7\xc0\x62\x91\x42\xc6\xd9\xf0\xaa\x3f\x1d\x55\xaa\x55\x52\x6c\x6d\x84\x08\x39\xec\x2b\x35\x5c\x64\x17\xc7\xff\x07\xba\xc4\x2b\x18\xb9\x57\x25\x49\xba\xca\xb3\x2b\x6a\x24\x85\x5e\x85\x9c\x51\xed\x5c\x8a\x86\x82\xa5\x43\x3d\x91\x37\x0d\x82\x61\x9f\x58\x14\x5f\xa5\xd3\x5c\x9b\xaf\x54\x13\xaf\x6c\xcb\x79\xdd\x1f\xf3\xc4\x3c\x68\xd6\x5e\xe8\x64\xc3\xc2\x13\x67\x43\xbb\x05\x23\xde\x0d\x22\x4a\xcd\xa2\x70\x45\xaf\x01\xcc\xcf\x54\x96\xa2\x81\x0e\xeb\xcb\x85\x8c\xd8\x6c\xe9\x35\xa1\xbf\xc0\x4a\x57\x7b\xfc\x78\xad\xdd\xef\xb2\x7e\x9e\xe6\x2c\x2e\x2b\x30\xa3\x81\x7a\x11\x92\xf3\x0d\xfd\xf8\xcd\x77\xef\xed\xb6\xdf\xb1\xc9\x9b\xfc\xe8\x1a\x1f\xd5\x3c\x48\x81\x77\x25\x45\x55\x45\xd4\x20\x66\x42\xd1\x17\x0f\xdb\x0d\x67\xbe\x64\x3d\x59\xa5\x22\x1a\xd4\x06\x85\x1d\xae\x32\x78\x03\xfe\xc7\x4d\xa8\xb7\xab\x92\x78\x22\xcf\xe8\x4b\xdd\xaf\xa1\x7a\xa2\x91\xb9\x2d\xbb\x4e\x23\x8c\x7b\xe2\x73\x58\x03\x79\x6c\xcb\x1f\xc8\x64\x9a\x5f\x49\x3d\x46\x62\xa7\x42\x5a\x78\xb3\x78\x61\x7e\xad\xac\x48\x29\xd0\xa7\xf6\xdf\x5a\x06\x7c\x90\x4b\x1d\xc4\x4d\x9a\x59\x53\x90\x9a\x1b\x5a\x6a\x64\xd5\x6a\xaf\xd7\xa5\xda\x61\x52\xe7\x62\x8e\xdd\x04\xde\x9f\xbd\xa5\x38\x70\xb8\xf8\x0e\x8f\x81\x09\xc1\x31\x7d\xfc\x26\x29\x7c\x79\xc6\xd9\x58\xc5\xec\x8e\x04\x0c\xd2\x2c\xe3\x83\x5c\xa5\xb6\x54\x69\xc7\x78\x82\xe2\x23\x4b\xd3\x31\x44\x89\x04\xe4\x90\x21\x58\xbb\x93\x69\x7e\x26\x71\x7d\x7f\xf6\xd6\x10\xae\xd9\x04\x8f\x9a\x95\xb7\x0f\x39\xaf\x56\xfa\x80\xe6\xe1\xea\xd6\xec\x0a\xe4\xb8\x57\xad\x6e\x3d\x45\x7c\x04\x86\xc6\x66\x6a\xf2\x64\x83\xbe\xa9\xf8\xad\x27\x8d\xa6\xed\x94\xb3\xa1\x4a\x4e\xa3\x24\xa2\xb1\xb5\x0e\xa6\x59\x46\x86\x3d\x39\x49\x34\x03\x35\x98\x4e\x86\x4c\x99\x10\x95\xbd\x09\x8d\x06\x68\x0f\xcd\x59\xec\x68\x9e\xa4\x5c\x4b\xf1\xd9\x80\x40\xf0\x13\x48\x29\xf7\xb5\xd0\x27\xf9\xff\x75\x72\xdf\x08\x7d\xc4\x64\x96\xdc\xa7\x3e\x4b\xc4\x3e\x0e\xb8\x20\xf6\xfd\xa5\x57\x90\xfd\x66\x57\x20\x2d\x81\xa4\x25\xad\x6d\xfb\x84\xca\x11\xed\x56\xb2\x45\x89\x89\x5b\xa6\xe4\xbb\x7a\x55\xa5\x6a\x46\x3f\xf3\xad\x79\x52\x1c\xb7\xf1\x05\x5f\x5a\x46\x89\x11\x8c\xf4\xac\xe2\xe7\x31\x1f\x0f\x26\x0f\xea\x4d\x17\x8e\x1f\x05\x74\x94\xd8\x2c\x88\xc1\x3e\x60\xaa\x36\x90\x52\xae\xa0\x57\xad\xd4\x08\xab\x46\xfa\x9a\xfd\x0d\x23\xd3\xab\x60\xbb\x5a\x06\x23\x76\x2a\xfb\x9c\xf6\x99\xb5\x1f\xdd\x2b\x1f\x0b\x95\xde\x94\xeb\x97\xf6\x65\xf0\x3b\xa5\xf0\xe9\x26\xe9\x59\xd0\xdd\x51\x95\xef\x49\xce\x77\xab\xa9\xe1\xcf\xdf\x66\x09\x9e\xf1\x1c\xc6\x2c\x1f\xdc\xa8\x4d\x40\x67\xd4\x4a\x93\x6b\x2e\x54\x11\x8d\x02\x99\x3a\xc7\xd2\xeb\xe8\x13\x4f\x80\x62\x06\x49\x6e\x96\x80\x14\xaa\xf2\x3c\x45\x2a\x61\x03\xde\xcb\xc6\x5c\x90\x5c\x96\xcb\x32\x03\xfe\xef\x29\x8b\x65\x27\x93\x8c\x7f\xba\x52\x07\x6d\x96\xa1\xc9\x7a\xc0\xb2\x21\x1f\xd6\x24\xb0\x28\x51\x59\xee\x55\x6a\x30\xae\x1f\x4b\x49\x41\x5b\x0a\x22\x19\x7a\xc3\x88\x50\xa7\xbb\x66\x59\x9f\x5d\xf3\x82\x58\x17\x9b\x52\xbe\x5c\xd1\xe0\x22\x81\x1d\xdc\x48\x59\xa4\x0c\x3f\x37\x4c\xdc\xc0\xe0\x86\x45\x89\x35\x68\x92\x3c\x92\x90\x40\x8f\xbc\xa2\x77\x4b\x65\xdf\xcd\x85\x3d\x27\x47\x02\xb6\xbb\x78\x7c\xdc\x3f\x3c\x3b\xa7\x6b\x01\x17\xe1\x9d\x2e\xb4\x25\xb0\x93\x8f\xe7\xe1\x76\x43\x68\xa9\x7a\xea\x76\x42\xe7\x74\x47\xa7\x6a\x51\xdf\x89\xd3\xf4\x96\x49\x94\x03\xc9\xa0\xe6\x8d\x86\x26\x77\x09\x33\x4e\xe7\xaa\x58\x0e\xec\xca\x3e\x7e\x6c\x8c\xd9\xfd\x95\xfb\x71\x8b\x0e\x7b\x74\xda\x76\x89\xa1\xda\xa0\x13\x0f\xea\x99\x03\x96\xf8\x6a\x03\xfa\x84\x29\xd1\xad\xa8\x64\x6a\x23\x1a\x5b\x05\x1b\x9e\xd3\x99\x64\x97\x61\xa1\x1d\x3e\xf8\x9a\xfd\x5f\x73\x59\xe3\x95\x8e\x4c\xdf\x44\x43\x03\xa2\x2f\x69\x62\xf4\x5c\x3b\x0d\x5b\x05\x50\x7d\xcb\xf5\x0a\xaa\x14\xc7\x2c\xb3\xb0\x92\x68\xc0\x15\xeb\x48\x68\xf6\xe7\x56\x08\x4b\xe4\xe9\x44\xca\x12\x05\x2e\x4d\xae\xb5\x96\x60\xc7\x16\x51\xa6\xd6\x8a\xa3\xaf\xed\xc8\x5f\x77\x57\xca\x51\xc8\x33\x36\x54\xab\xf0\x46\x3b\xa5\xbb\x0a\xde\xec\x06\xf2\x2c\xd7\x5c\x3e\x3e\x3c\x5a\x6e\x9a\x28\xaf\x57\x77\x11\x51\x82\x0c\x66\x78\x4e\xc5\x35\x3a\x98\xe6\xba\xce\xdd\x98\x89\x5b\xaa\x74\x25\xff\xd4\x87\x05\x49\x3c\x30\x64\xdc\x52\x5e\x5f\x67\x72\xa4\x77\x37\x3c\x71\xd6\x55\x9f\x0f\xd2\x31\xc7\x65\x40\xe9\xa6\xe0\x3c\x05\x81\x17\xb5\xa3\x07\x93\xf2\x1b\x2f\xd6\x97\xe1\x8e\x23\x64\x33\x75\x5c\xe0\x4d\xaf\x56\xbf\x54\x4a\x74\x65\xe0\xc3\xc8\x8d\xd0\x42\xc7\x7f\x79\xf4\xd6\x29\x55\x32\xba\x9d\x77\x28\xb3\x62\x0d\x38\x5b\x0e\xcf\x5e\xf1\x64\xd8\x96\xa3\x90\x94\xb8\x40\x2e\x5e\xb1\x3c\x52\x07\x4a\xec\xea\xd6\x86\x59\xb5\x2f\xb7\x1c\xc7\x37\x34\xa9\x45\x02\x6c\x2a\x75\x29\x3e\xde\xed\x9e\xbd\x23\x6b\xd3\x4e\x17\x36\xe8\xb2\x5c\x63\x55\xef\xc0\x78\x1a\xe7\xd1\x24\xc6\xab\xe5\xf6\x3a\x0d\x8a\x9e\x84\x01\x67\xe2\x41\x4a\xba\x6b\x9e\x43\x16\x0d\xcd\x75\xac\xfb\x16\x4c\x32\x58\xc2\x07\x5c\x08\x96\x3d\x68\x92\x50\x02\x3b\x14\x2b\x15\x51\xdf\x91\x4b\x18\x4f\x7d\x84\xc1\xcb\x97\xae\x5d\x0b\x0d\x5b\x35\x58\xdc\x23\x4f\xb5\x14\x06\x31\xff\xc4\xb3\xc5\xaa\x1e\xd9\x3e\x25\x6e\xbf\x63\x22\xa7\x0a\x78\xd0\xce\xa3\x31\x6e\x94\x77\x36\xeb\x1c\xa6\x27\x64\x70\x9d\xa6\x4a\x18\x6f\x12\x2e\xea\xb0\xe4\x4b\x3f\xd1\x90\xf5\x5c\xd9\x04\xbe\x64\xda\xd9\x41\x63\x36\x1d\x2a\x2d\x1a\x52\xf2\x91\xa5\x58\xf1\x49\x9f\x3f\xa4\x89\xca\x23\x98\x18\x11\x8e\x6a\x84\xba\x43\x95\x32\x54\x53\x88\xc8\xab\xdf\xd7\x69\x6b\xd0\x50\x05\x46\x89\x44\x1e\x0d\x2c\x11\x25\xe2\xce\x72\xdf\x01\xd1\x30\x82\x57\xea\x44\x81\x28\x30\x65\x4a\x47\xb2\x73\x50\x99\xc6\xd7\x55\x51\xdf\x31\x8c\xb9\xdd\x95\x52\x9c\xf8\x19\x17\x6e\xdd\x5b\xb6\x35\x58\x44\x33\x96\x81\xa8\x66\xc3\xbc\x5a\xb1\xa0\xed\x82\xdb\x06\xa7\x07\x09\x21\x85\xd1\x34\x9f\x66\x7c\x51\x39\xe1\x68\x4c\x4d\x13\xfd\x38\x7a\x19\xce\x6e\xa3\x89\xa4\x0a\xda\xc8\xd4\xbe\x38\x2a\xee\x46\x03\x96\xc8\x39\xd0\x79\xe4\x48\x14\x2d\xa3\x03\x46\x49\xed\x48\x38\x2f\x81\x3a\x0d\x40\x4f\x4a\x95\xe8\x53\xae\x96\x1b\x3e\xb8\x15\x74\x19\xaa\x21\xc9\x89\x8d\x12\x31\x1d\x8d\xa2\x41\x84\xc9\x9b\x35\x05\xc8\xa4\x97\x0e\x06\xd3\x4c\xfe\x2f\x13\xf8\x2c\x32\x7e\xc0\x26\xca\x5c\x28\x77\x5e\x0d\x49\x22\x88\xb7\x8c\x72\x65\x66\x98\x3f\x14\xa6\x49\x94\x44\x79\xc4\x62\x5c\x9b\x2a\x65\x1f\x7a\x86\xf4\x39\xda\xf8\x84\xe0\xc3\x1a\x69\x34\x04\x65\x90\x26\xe6\x05\xe6\x4f\xd3\xf1\x44\x98\xea\x63\x36\x54\x63\x21\x07\x4d\x48\xe5\xb9\x33\x15\xfa\x12\xa9\xa1\x41\xbc\x4b\xef\xe4\x7a\x22\xb5\xca\x6c\x54\x96\x58\x92\x4a\x52\x3e\x2a\x1b\x39\x2a\x5f\x6a\xcc\x35\x10\xa9\x06\x83\xae\x02\x64\x3d\x4a\x47\x86\x71\x95\x7a\xc0\x46\x23\x0a\x73\xd8\x27\xc9\xea\x0f\xd4\x47\xa8\x69\xa3\x52\xa0\x40\x23\x2c\x1c\x89\x86\xd5\x5e\x74\xbb\x8e\xf0\xfb\xfc\xd9\x44\x8a\x28\x6d\x43\xc9\x78\xdd\x36\xed\xf2\x36\x97\xe1\xee\x2d\xdb\x18\xb9\x7a\x59\x68\xb4\xb2\x52\xd6\xcc\x6b\x04\x2b\xd0\x76\x32\x20\xf8\x11\xf5\x1f\x0d\x87\x9f\x6b\x8e\x93\x4a\xac\xc6\xbb\xde\x96\x2c\xed\x7a\x55\xd8\xf0\x43\xde\x4c\xeb\x59\x60\xd7\xa8\x07\x49\x5d\xac\x01\x15\x94\x2e\x37\x7c\x9a\xa1\xdc\x30\x93\x11\xdf\xb1\x07\x01\x4c\x6e\x57\x8d\xaa\x6e\x79\x68\x3c\x4d\x8c\x2c\xc2\x14\xa2\xe9\x78\x22\xf5\x5f\x39\x92\x8b\xce\xa5\x55\x64\xe5\x0f\xf2\x09\xcc\x6f\xf8\x83\xe9\x3f\xe3\x1a\x3e\xe9\xc1\x77\x94\xd3\x9c\xab\xd7\x71\x74\xec\x45\x00\x35\xa5\xa6\x4b\x1e\x75\x99\x08\xf5\x39\x0c\x70\x8b\x97\xed\x08\x85\x2c\x19\x2c\x0f\xf6\x2a\xcb\x32\xa8\x71\x20\xb1\x95\x50\x56\xd2\x64\x65\x65\x2b\x90\x47\xcb\xa4\x14\x76\x61\x59\x61\xb1\xa8\x87\xf3\x66\xb1\x6a\x05\xce\x0f\x7a\x36\x9e\x5a\xf1\x72\xed\x3c\xc0\x06\xde\x67\x49\x52\x45\x22\x55\x1e\x8b\x6a\x3c\x9d\xb5\x75\x59\x88\xc0\xbc\xc5\xc9\x50\x05\x45\x69\xb8\xd2\x59\x0b\x06\xe3\xbc\xff\x6b\x2e\xff\x24\x6e\xa2\x24\x87\x24\xe5\xe3\x49\xfe\xb0\x89\xb1\xd2\x55\x3d\xf3\xc8\x4f\xb1\x23\xb1\x69\x57\x33\xa0\xe1\xcf\x97\x2f\xe1\xc9\x1a\x7e\xbc\x9d\xff\x07\x01\x22\x6b\x6c\x2b\x4d\xad\x6a\x43\x73\x68\x4d\x05\x8b\x9d\x9d\x71\xa5\x32\x4d\xc8\xd7\xb3\x5a\x09\xb6\xcb\x76\xb5\x06\x8b\x77\x51\x3c\x44\xa0\x86\xb3\x48\xc7\xb7\xda\x4d\x1d\x0f\x69\x52\x86\xd5\xb1\xa2\xda\x09\xf5\xc1\x45\x17\x39\x5a\xa2\x11\x8e\x64\x1f\xd1\x92\xc2\x0a\x18\x79\x5e\xb2\x07\x4d\x6f\x37\xa5\x0a\xce\x61\xc3\xbc\x3e\x75\x40\x76\x1d\xb5\xc1\x0d\xc1\xe3\x25\x3f\xd2\xf9\x21\x9e\xaf\xad\xba\xb5\xe7\x69\xab\x1a\xba\x61\x6c\x47\x83\xe8\xa2\x12\x7e\x61\x3f\xbc\xa4\x73\xc0\x65\x15\x76\xd4\x51\xe5\xe5\x4b\xa8\xd7\x3d\x3d\x8d\x9e\x03\x1b\xb3\x92\x41\x6c\xbb\x1b\xa8\x4b\x6e\x8c\x0c\x5d\x2b\x08\x82\xed\xea\x50\xbf\x91\xc1\xe3\x40\x3b\x82\xaa\xc3\x84\x11\xa0\x56\xee\xe8\x93\x8b\x2b\x96\xd0\x86\xf0\x11\xcd\x8f\xc2\x88\x15\x94\x9b\xde\x51\xbc\x68\x40\xb6\x60\xb7\xfd\xa3\x59\xe1\xf4\x2f\x36\xc1\xd5\x0f\x67\x2a\x87\x64\x83\x80\xdd\x1c\x62\xce\x44\x8e\xa9\xb5\xa5\xdc\x97\x92\x1d\xfa\x9c\x93\x7d\xb0\x86\x0e\x82\xda\x40\xd7\xc5\x0b\x38\xf9\x1d\xc5\xbe\x02\x61\x6f\x59\xd1\x13\x55\x03\xcc\xef\x52\xb5\x91\x68\x1f\xe1\xa1\xb1\x83\xfc\x2c\xf5\xc4\x8c\x25\x42\xee\x81\x57\x3c\x8d\x15\x28\x79\x24\x49\x13\xa8\xd7\xfd\x08\xcc\xe8\xb9\x5e\xb8\xba\x8a\xe2\xf8\x8a\x86\x57\x71\xfc\xad\xaf\xd4\x11\x96\x0e\x9d\x3a\x26\x13\x1e\x3a\x6b\x90\x60\xe0\xd7\x71\x9a\x71\xb4\x0d\x2a\x53\xa3\x3d\xe2\xcc\x24\x73\x0d\x16\xf5\xf9\x44\x1d\xbe\x67\x2a\xd5\x78\xb7\x6b\xcf\xc5\xfa\x40\xed\x30\x25\xfe\xb2\x77\x24\x5a\x7e\xfd\xf5\x0c\x1f\xab\xd3\x01\x68\xb5\x03\xfd\x28\xaf\xa9\xeb\x6c\x72\xf5\xa3\x6d\x9f\x0f\xf9\x50\xef\x7f\xfb\x5c\x6e\xde\xf2\x88\xfb\xe2\x7f\xff\xd7\xff\xfa\x0b\xac\xbf\xfa\x1b\xad\xb0\x4d\xbd\x43\x35\x9b\x78\x6e\x8a\x7e\xe6\xe9\xa8\x12\x25\x79\x55\x32\x45\xc7\x79\x77\xaf\xf3\x5d\x23\xd6\x2a\x32\xac\x7b\xc6\x70\xbe\xd9\x01\x04\x6f\xf7\xd5\x7f\x6a\xe4\x77\x9a\xe8\xb2\xcc\x54\x71\xc2\x8f\xea\xbe\x1c\xb9\x5c\x6f\x57\x8b\xf0\x9a\xcb\xf0\x77\xb9\x6d\x4f\x93\x38\xba\x45\x27\xe4\xfe\x34\x37\x37\xb1\x52\x55\x6e\xaf\xa3\x07\xc8\x98\x0d\x6e\x28\x1e\x65\x00\x01\x96\xa1\x30\x10\x6f\x14\x6d\xa8\x90\x51\x7d\x28\xf9\x9f\xd1\x0a\x90\x27\x8b\x68\xcc\xab\x05\x60\xcd\x92\x01\xd7\xeb\x5b\xce\x57\x1d\x1f\xeb\x71\xc1\xe8\x28\x87\x23\x57\x50\x44\x02\x58\x3c\x4e\x45\x0e\xa3\x69\x1c\xfb\x97\x3f\xe5\x0a\x4c\x4d\xab\x29\x2a\xd2\x22\x87\xe9\x64\x82\x49\xfd\xe3\x91\xd5\xf5\xef\x78\x06\xca\x43\x1c\xcf\xa4\xea\x06\x29\xa8\xef\x6b\x2f\x74\xa2\xb6\x16\xa3\xae\x59\x3c\x2b\x52\x53\x99\x65\x3b\xfa\x45\x67\x1b\x0a\x6f\x61\x15\xc7\xd7\xc0\xfe\xa5\xa0\x38\x7f\xb4\x4c\x80\x28\x7f\x0b\xac\x9b\xde\xb7\x4a\x6c\x53\x85\xc2\x26\x5a\x7b\x92\xf4\x8e\x96\x8b\x3b\x08\x6d\x2e\xd5\xc3\x0c\x6f\x28\x5d\x60\x16\xda\x59\x1c\x0d\xb9\x55\x6d\xe9\xd1\x48\x65\xa0\x9c\xbe\xe9\x72\x86\x0f\x69\xb1\xd1\xe2\xb4\x2f\x7e\xf1\x3f\x75\x1e\xe5\xf7\x13\x8c\x5e\x9a\x8e\xf4\xd1\x70\x8a\xe9\xc2\x1b\x52\x59\x15\xd8\x09\x97\x0a\x35\xee\x18\x14\xbf\xa7\x6b\x23\xf6\xea\x20\x17\x21\x22\x83\x34\x11\x98\x08\x23\x57\xd6\x12\x95\x6d\x5a\x87\x60\x23\x40\x3b\x16\x8e\x3e\x5c\x7c\xc4\xc7\x07\x3a\x74\xd0\x84\xcb\xe3\x2d\x4f\xf2\xf8\xc1\x9c\x33\x12\x32\x04\xb1\x98\x10\x85\x74\xa4\x61\xfc\x1c\x47\x7d\x79\x78\x94\xfd\x0d\xd1\xef\x64\x80\x27\x07\xcc\xb0\x82\x26\xa4\x09\xcb\x6f\xd2\x38\xbd\x8e\x06\x2c\x46\x2b\x7b\xc3\x64\x86\xd3\x27\x44\x0a\xaa\x21\x1a\x68\x3d\x72\x67\x70\x62\x5f\x0d\x79\x8a\x34\x45\x0d\x16\x0d\xc9\xfb\x17\xf5\xfa\xc4\xc9\x83\xa6\x3e\x62\x88\xc1\xca\xd8\x65\xd8\x37\x30\x86\xba\xf9\xb5\xe9\x70\x59\x59\x7c\x0d\xc2\x29\xe0\xa8\xa7\xf0\x41\xa5\x26\xc4\x07\x3f\x7e\x11\x3e\x5a\x26\x24\x7a\x02\xd2\x04\x9d\xee\xad\x81\xbc\x46\xfa\x53\x72\x89\x6f\x40\xe8\xf2\x41\x4a\xbe\x05\x47\xaa\x45\xb9\x50\x17\xd0\x78\x58\x49\xd0\x36\xd0\x27\xcf\xe6\xc6\x42\x28\xb1\x66\x51\x01\x05\xf1\x4a\x40\x89\x47\x5f\x36\x38\xf7\x73\x41\x52\x3c\x47\xd5\x7c\x0c\xa4\x5d\xc6\x31\xd1\x6e\x92\x22\xc7\x47\xc9\xf5\xa6\x16\x62\x74\xef\x61\xd4\x93\x1f\xce\x0e\xff\xd5\x5b\xd1\x2b\xb6\xde\xf6\x05\xf4\x76\x37\xf0\x92\xab\x43\xdb\x1c\x07\x96\xcd\x08\xba\x9e\x9a\x03\x75\xf0\x76\x5a\xd5\x9b\x6e\xd4\xdd\xa1\x46\x3b\x61\xa3\x8a\xd7\x55\xbd\x0d\x2b\x84\x9d\x32\xff\x12\x7e\xd5\x27\xc1\x74\x96\x75\xab\x8e\x39\xb4\x93\x18\x7e\x7b\xf8\xfd\xd5\xfb\xde\x7b\xa9\x51\xbd\x7f\xbf\xfb\x81\x6e\xa5\x2a\x92\x05\x1e\xb8\xa3\xec\x54\x6b\x76\x7c\x2e\xe8\x6e\x97\xcc\x91\x5a\x42\xfb\x94\xf1\xc8\xe2\x58\xae\x7d\xa5\xc6\x03\xe1\x0c\xc1\x83\x65\x6c\x4e\x27\x72\x26\xef\x22\xcc\x28\xee\x23\xa2\x07\x29\x52\x03\xa2\x63\x9a\x79\x2c\xa0\xe6\xbf\x66\xea\x61\xc3\x06\x9c\xa5\xf8\x1a\x27\x26\xb1\x21\x6a\x45\x38\x7a\xb3\x55\xda\x99\x29\xaf\xc1\x22\xfe\xbd\x0d\x1d\x6d\x92\x4c\xf0\xf9\x87\xbe\xcd\x6e\xd0\x7d\xb6\xbb\x1d\xb9\x04\x69\x38\x86\x31\x09\x48\x1f\xe6\x1c\xfd\x6c\xc5\x46\xf8\x91\x2c\x6d\x8c\x60\x56\x2a\xd3\xda\x93\xdb\x0f\x1a\x3c\xee\xb8\xda\x86\xd2\xb1\x32\x1a\x6f\xfa\x9b\xac\x03\x1b\x44\x23\x4a\xe4\x90\x34\xe1\xf1\xc8\xe8\x9c\x0c\xf3\xcc\xbf\x7e\xa8\x9b\x16\x76\x67\x8c\x12\x71\x75\xe3\x68\x99\x17\x22\xcf\x2e\xdd\xed\xec\xe3\x87\xfd\xdd\xf3\xde\xd5\xbb\xdd\xb3\x77\x15\x51\x93\x6c\x80\x4d\x6a\xf6\x58\x2c\x9b\x90\xd5\x6b\xcb\xdd\x29\x35\xe4\x4a\x45\xff\xbd\xbd\x6d\xc4\xf7\x4d\x34\xca\xab\xf0\xdf\x5e\xb7\xca\x72\xf6\x52\x57\xa2\x7b\x9e\x66\xf3\xbf\xa2\x91\xe3\xc6\xfa\xa2\x0b\xab\x0b\x56\x73\xda\x93\x33\x4f\x7e\x18\x57\xb2\x55\xa5\x6a\xeb\xd6\x57\x89\x19\xa4\x0e\x26\x24\x20\x9e\x0c\x23\xbd\x29\xe9\x28\xbb\x8a\x22\x5e\x32\xc6\x2f\x18\xb5\xed\xcc\x1f\xff\xd7\x52\xc0\x0e\xb4\x5e\x46\x8d\x70\xc7\x90\x8d\x5e\x9a\x5b\xb1\x4b\xbb\xdf\xa9\x1e\x8b\x7b\x9e\x2e\x20\x7b\x83\x53\x9c\x67\xda\x7a\x66\xb0\xe7\x59\xae\xb5\xd2\x27\x38\x70\xbb\x8c\x01\xa1\x98\x43\xf9\xd1\x33\x28\x3c\x86\xaa\xed\x4d\x1a\x6b\x77\x56\x79\x7a\xb4\xe6\x7a\x4b\x16\x3c\x09\xd6\x80\xe8\x69\xf7\x35\x23\xeb\xfa\x5a\xa5\x50\xbb\x62\x34\x96\xd2\x10\x23\x23\xa0\xf9\x12\xad\x78\xbe\xcf\xbb\x36\xd3\x51\x2e\xbf\xa1\x67\x99\x7e\xb4\x8c\x32\xf3\x4c\x87\xa7\x9a\x60\x8b\x73\xcc\x10\x76\x7c\x3f\x1c\x1e\x5f\x1d\x1e\x1f\x9e\xab\x7e\xd9\x28\x57\x86\x78\xe7\xa6\x48\x5f\x19\x63\x54\x58\x94\x05\x7a\x4f\xc6\xfc\x01\xb0\x8c\x91\x1c\x72\x9e\xd4\x64\x75\x72\x85\x55\x96\x7e\x82\x8a\x81\x18\x87\x12\xb0\x76\xff\x54\xea\x23\xd9\x24\x33\x4e\x6f\x71\x49\x3b\x5b\x76\x5f\x92\xfa\x66\xfa\x4a\x9a\x39\x5f\x04\xbd\x13\xfc\xeb\x34\x8e\x58\x42\xc1\x24\x44\x55\xf5\xd8\x7f\xb0\xa0\x7c\x4f\x8d\x2c\x9d\xe6\x51\xc2\x45\x03\x94\xb1\x82\x04\x5f\x74\x7d\x03\x77\xe8\x40\x30\x66\xd9\xad\x39\xcc\x27\xfc\x3e\x57\x90\xa2\x31\x37\x2e\xb0\x18\xc5\x02\x2c\xf1\x22\x01\x82\xa3\x6b\x88\x35\xac\x19\xd3\xb4\x8f\x00\x41\xd3\x58\xa0\x3f\xd4\x1d\x9a\xa5\x30\x05\x73\x9e\x42\xd9\xd5\x6c\x0d\xa2\xeb\x24\xc5\x4b\x5e\xd7\x98\x02\xf4\xb2\x46\x2f\x03\x39\x88\x2b\x1a\xc4\xb6\x7f\x46\xd7\xee\x73\xca\xbd\x61\x9a\x65\xe1\x2d\xb0\x67\x57\xb2\x55\x25\xad\xf5\xfb\x9c\x05\x7b\xa2\x0e\xfa\x92\x00\x6d\x17\x14\xc1\x25\xe3\x9f\xa2\x74\x2a\x0a\x94\xa5\xe3\xbe\xc7\x52\xf5\x3a\xb1\x8c\x26\xa7\x95\xa5\xcb\x6a\x3a\xe5\xbc\xe3\xed\x9b\xe2\x4a\xbd\xfb\xa1\x0b\x0c\xf2\xa2\xba\x49\x6b\x38\x6d\x9b\xe6\x6f\x35\x8a\xd0\x6c\x21\x91\xd8\xb2\x95\x46\xf2\xbc\x1c\xe5\xb0\x63\x10\xa9\x3a\x52\x5d\xc1\xd0\x45\xb6\xdd\xcf\x63\x3e\x46\xe7\x6f\x23\x87\x61\x05\x41\xd7\x1c\x23\x80\x6c\x5d\xb5\x6d\x44\x7d\xc7\x21\x60\x97\x66\x64\x05\xfb\xd0\x95\x1e\xd5\xbf\xd6\xdd\xca\x6b\xb3\x0d\x78\x63\xaa\x1a\x1a\x84\xfd\x49\x78\x17\xd0\x9e\xa1\x4b\x3e\xeb\xcb\xc3\xb6\x3b\x03\x64\x7c\x28\xce\x8c\x3b\x11\x93\x78\x2a\x2c\xc3\xeb\x29\xc3\xd3\x52\xea\x4f\xa7\x57\xb3\x46\x73\xe7\x42\xfa\xb5\xd3\x58\x36\x70\xa9\x48\xb8\xf4\x29\x9d\x56\xdf\x40\x1e\x36\x29\x99\xec\xf9\x0d\x9e\x60\x01\xaf\xee\xb3\x79\x61\xa5\x5b\xc2\x05\x8f\x7a\xf5\x3d\xfb\xb2\x3c\x34\x6d\xd4\x14\xbc\x45\x7c\xe2\xe3\x38\xe2\xe2\x4b\x51\xce\xb2\xc1\xcd\x22\x79\x2e\x7f\x7b\x7b\xf2\x5e\x3a\x79\x30\x51\x09\xdc\x87\x76\xfa\x45\x82\xf3\x04\xc1\xba\xb7\xfa\x6e\xad\x64\xfd\x5e\x50\x12\x5d\xb3\x1b\x19\x10\xc9\x05\x51\x96\x9d\x7b\x1e\xaa\xc3\x94\xab\xfd\x96\x14\x82\x84\xdf\x29\x4f\x19\xa1\xad\x47\x43\x7a\xdb\xcf\xb2\x07\x12\xd7\x12\xc8\x34\x31\x38\x4a\x84\x90\xa5\x29\xd0\x42\x9f\xf5\x63\x7a\x64\x3e\x15\x7c\x34\x8d\x1b\x41\x87\x11\x3d\xe4\x92\x40\x70\x4b\xd7\x9b\x08\x5a\x28\xba\x2d\x6f\xec\x64\x0d\x46\xac\x8f\x4f\xce\x7b\x9b\xa1\x77\xed\x8d\x36\xce\x58\x4f\x19\xb3\x79\xf2\xfb\x3c\x63\x9e\x7f\xac\x04\xa3\x18\x2f\x4f\xe7\xb8\x55\xab\x4b\xf1\x2b\x91\xa7\x19\x1f\x4a\x35\x12\xfd\x68\x49\x3f\x22\x2f\xa5\x8c\x0f\x89\xae\x74\xfb\xe9\x5c\xbc\x53\xf0\x53\xad\xed\x38\x9d\x38\x17\xf4\x0b\x7a\x85\x3b\xc5\xca\x38\xc6\x92\x21\x70\x86\xbe\x92\xb6\x13\xd4\xa9\x18\xac\x29\xf3\x3c\x67\x43\x9e\x6d\x2e\xe8\x23\x12\xf9\xc4\xdd\xab\x67\x00\xca\xf4\x4d\x68\x98\xdb\x94\xa0\x7c\xc7\xf7\xd7\xd6\x8b\x61\xcd\x64\xed\x0a\xc1\x95\x57\x37\xfe\xa8\x4d\xc5\xbf\x33\x79\x95\xf8\x34\x4f\x95\xeb\x81\x3a\x1b\x51\x4e\xa5\x2d\x63\xf7\x2d\xde\xaa\x94\x00\x9c\x79\xae\xda\x56\x8e\xbb\xfa\x08\xe4\x58\xf5\xad\x08\x40\x09\x80\x03\x30\x36\x87\x8a\xa8\x5a\x7f\x01\x29\x00\x44\x7d\x27\x78\x1e\x51\x91\xca\x49\xd5\x34\xad\xc1\x22\xd9\xf1\xf2\x34\x45\x3b\xdb\x62\xd5\x17\xa5\x2f\x5c\xab\xea\xb6\xb9\x87\x80\x95\x79\x1e\x76\x9f\x3f\x3b\xb2\xb5\xf0\x42\x43\xb7\xab\xba\xbb\x97\x4e\xf6\xe1\x24\xb7\x9c\x83\x99\x49\x12\xef\x5f\x9c\xb8\x37\x8b\x2e\x3d\x4d\x9a\x38\x7a\x4a\x27\x7f\xda\xb8\x02\xee\x61\x41\x5d\xba\xb9\xcf\xfc\x0a\x39\xfc\x4b\x81\x3f\x79\x6d\xd9\x5c\x56\x9d\x17\xe5\x99\xbe\x57\x5f\x08\xe7\x3a\x7c\xd9\x72\x54\x83\x45\x6a\x72\x9d\x26\x0e\x3d\x08\x23\xb7\x36\x26\xc1\x0b\x93\x85\x06\x6d\x95\xa5\xc0\xea\x84\xbe\xc3\x56\xc1\x90\xa0\xe3\x1e\xe3\x58\x7a\xe3\x08\xdf\x97\xb8\x4b\x3b\x1a\x79\x42\x42\x1f\x69\x46\xd3\x38\x36\x9c\xae\x57\xb8\x7d\x5f\xe3\xa2\xbd\x12\x2c\x57\xe7\xee\xd9\x41\x94\x66\xf3\xf3\x67\xf0\xed\xfd\x06\x6c\xd5\xf1\x63\x08\xae\x4c\x22\x67\x35\xa3\xd1\xfa\x2e\x63\x13\x96\xa5\x53\xf2\x56\x52\xaf\x61\xf4\x15\x8c\x63\x49\x70\xc9\xe0\x99\x33\x4c\xaf\x25\x96\xfe\x6e\xb1\xb4\xb9\xbc\xbc\x0c\xc8\x76\xf4\xe6\x53\x8a\xe4\x96\x3c\xb4\x2f\x9b\xce\xca\x5e\x42\xe9\x5c\xf5\x2e\x07\x06\xaf\xb3\x0a\x6c\x38\x97\x97\x2d\x36\x4d\x75\xbb\x63\x0e\xc2\xf4\x7a\x90\x2c\xf3\x63\xa6\x7c\x18\x73\xb2\x7e\xf2\x1a\x79\xd5\xdc\x45\xf2\xac\xe7\xcc\x9c\xac\x48\x97\xc4\xfa\x10\x9c\xe8\x50\x16\xea\x5a\x88\x36\x56\xcd\x14\x92\x09\x37\xe7\x5d\xe0\xd4\x8b\x72\xe3\xff\x63\xef\xdd\xdb\xda\x38\x92\xfd\xf1\xff\xf5\x2a\x3a\xfe\x3e\x1b\x4b\xa0\x0b\x12\x17\xdb\x60\xc8\x83\x0d\x49\x58\x63\xf0\x03\x78\xb3\x59\xaf\x7f\xec\x20\xb5\x60\x8e\x47\x33\xda\x99\x11\x98\x24\x9c\xd7\xfe\x7b\xea\xd2\xd7\xe9\x11\xc2\xb1\xf7\x64\x77\xcd\x73\xb2\xc7\x9a\xe9\xee\xe9\x4b\x75\x75\x55\x75\xd5\xa7\xe6\xf9\x00\xff\xfa\x07\x9e\x5f\x61\x67\x0b\xd2\xe6\x0a\xb5\x9d\xe0\x63\x36\x5b\xa2\xe0\x5b\x73\x90\x54\xc7\xd3\xb7\xc7\x13\x1a\x4d\x99\xcf\xa4\x95\x89\xe9\xbe\xa1\x98\x81\xb8\xf1\xc4\x4e\x96\x1c\xfd\xc1\x4a\xe9\xbd\xe3\xa3\x7d\x7d\x7c\xfa\xd7\x70\xee\x2a\xce\x1b\xd5\xca\x7d\xa3\xb2\xd7\xe8\x61\xc3\xf2\xd6\xc7\x1d\x91\x8d\x23\xe6\x96\xfd\x42\xc2\x31\xc9\x84\x0f\x17\x86\xfd\xa0\x8b\x05\x85\x61\xf6\x68\x10\x49\xf4\xcb\xad\x90\xd7\x51\x32\x23\x27\xe9\x6c\xac\xfd\x85\x09\x8a\x07\xa8\x12\x63\x44\xe6\xcb\xcd\x5a\xd2\x9d\xa5\x6e\x78\x02\x6a\xed\xa8\x5e\x5c\x65\x39\xf6\x90\xdb\xef\xb2\xa7\x1f\x82\x1e\x38\x82\xf2\x38\x2a\xca\x80\x94\x5c\xd4\x48\xb1\x50\xdc\x93\x61\x31\x77\x7a\x54\x5c\x9d\x93\x93\xb1\xd0\x7c\xbf\x26\x78\xc5\xc4\x3f\x60\x23\x76\x80\x02\x1c\x16\x12\xaf\x24\xdd\xe3\x59\xc1\x5b\x61\x05\x0a\xbf\x0f\x0a\x7c\xaf\xa3\x0f\x52\x14\xb3\x5c\x6a\x33\x3a\xbb\x25\x22\x03\xf5\x3d\x2d\xda\x08\xbc\x30\xd5\x57\x39\xea\xc6\xd5\xf3\xd7\x06\x01\x47\xe2\x75\x6b\xaa\x50\x1a\x2c\x1b\xa4\xaa\x6c\x5b\xaf\x94\xab\x23\x6a\xe5\x9e\xcd\x12\xd8\x38\xb3\x9f\xf2\x4a\x73\x6a\x8e\x26\x30\x28\x68\x6e\x53\xa1\x7b\xf6\x5a\x3b\xa4\xd9\x7e\x8b\x49\x66\x01\x33\xe6\xef\x92\xd1\xc2\x5f\xa9\x11\xd1\x16\x10\xca\x8c\x99\xd8\xdc\xa0\xa8\xf9\x53\x13\x67\x8c\xe7\xc4\xf4\xba\x5d\xcb\xcb\xf2\x3d\x6f\x21\x35\xd9\x66\x27\x91\x86\x04\x24\xa7\x09\x58\xb9\x40\x84\x89\xd7\x3d\x2f\x4d\xa5\x6d\x2b\x9e\x25\x34\xfa\xf0\xd5\x0c\xf2\xe0\x83\xa3\xd3\xfd\x13\x84\x00\x3a\x38\xfa\x01\x6f\x19\xba\xc6\x5d\x5e\x7f\xc1\x3d\x3f\x1f\x7c\xa9\xe0\x04\x9f\xcc\xbf\x5b\xa0\x2f\xd8\x43\x53\x97\x0c\xa6\x91\x85\xee\x1a\x02\x37\x0d\x4e\x24\xb7\x7f\x3a\x1b\xad\x8d\xa5\x15\xc7\x86\xdb\x56\xc1\x78\xb4\x3b\xb2\x42\x82\x8a\x66\x85\x6f\xe8\xfb\xc2\x5d\xe5\x4c\x90\xc5\xa9\xb9\x4a\x63\x46\x40\x2e\x22\xec\x24\x68\x5d\x57\x54\x36\x98\x99\x00\xb4\xe1\xf3\xea\x62\x12\x56\x57\x46\x32\x4b\x04\x1d\x9a\x23\x20\x39\x32\x71\x30\xea\x68\x81\x80\x23\xb5\x7d\x96\xaa\x91\x47\xa2\x19\xa7\x62\x1a\xe5\x65\x3c\x9c\x25\x51\xae\x47\x6e\xf0\x1f\x8c\x35\x5c\x37\xe1\xec\x21\x4c\xf3\x54\xc8\x64\xac\x58\x21\x8d\xb1\xc2\x0c\x5b\xda\x25\xc0\xa2\x48\x67\x66\xb7\xab\x31\x7f\x16\x29\x9b\x69\x70\x4b\xb5\x60\x2b\x16\x4e\xc8\xa4\xa3\x98\xd1\xae\x72\x3e\x54\xb3\xb1\x7a\x74\xcd\x61\xbe\x6e\x6f\x2a\xc7\x51\xa8\xed\x75\x9d\xc0\x4b\x09\x05\xef\x62\x76\x89\x87\x65\xc3\xde\xaf\xe7\x65\x7e\x5e\x46\x49\x72\x7b\x3e\x8a\xe9\x2c\xf4\x44\x66\xbb\x71\xeb\x0a\xcc\xfa\xf3\xc6\xd0\x31\x43\x68\xf3\xa1\xe8\x6e\xf7\x0b\xe6\xc7\x16\x06\x03\xf6\xe0\x9e\x8f\xcf\xf9\x8e\xf1\xd9\x70\xfc\x08\xb7\xbd\x2a\xf6\x0d\xf0\x41\xad\x45\xcf\xf2\x2b\x42\xd1\x22\x10\x75\x63\x68\x8e\xef\xe3\xc8\xa2\x90\x5f\x4a\x36\xe8\x15\xd1\x35\x9c\x8d\xf1\x04\x5d\x53\xc4\x48\x5e\xe6\xd1\x48\x16\xb6\x64\x52\x25\xba\x00\x3d\x3c\x57\xa1\xa3\x20\x6b\xd1\xf2\xf7\x96\xe0\x37\x9d\xb9\x5c\x8c\x36\xf2\xfd\x0c\xda\x5f\xaa\x4e\x67\x8b\x15\x5a\x8e\x3b\x36\x3e\xb7\xec\xcd\x19\x33\x66\xb0\x7d\x05\xec\x38\xff\xd8\xda\xa9\x7d\xd3\xfa\x3b\x4e\x83\x7f\xcd\x89\xf0\x99\x4e\x85\x45\x4f\x06\xf7\x74\xd0\x54\xa8\x3f\x46\xd7\xa1\x84\x9c\x55\x90\x17\x48\xc7\xba\xbb\x2b\x32\x76\x1a\x41\xbf\x62\xf3\xb7\xa4\x0e\x02\x5f\x2c\x33\xf7\x7b\xc2\x27\x33\xc7\xdd\xc9\xa3\x37\x75\xc1\x3b\x6f\x71\xc9\x55\x95\x7f\xfc\x1a\x28\x4a\x76\x1f\x77\xe3\xd5\xf0\x0a\x9d\x78\x53\xd4\xf8\x6d\xe8\x46\xdf\x3b\x1e\x62\xbe\x27\x43\x57\x39\x32\x54\x2b\x2e\xff\x6e\x17\x06\x9b\xb6\x42\xde\x0b\xf7\x38\x73\xa8\x3f\x74\xea\xb0\x3b\xbe\xa8\x53\x87\xba\x6c\xf7\x65\x5c\x75\xaf\xeb\x3b\x0d\x10\xe2\x6e\xa9\x15\xb6\x86\x45\x2e\x93\xa8\x2c\x31\x7f\x30\xc6\xcf\x9b\xf8\xab\x1c\xf1\x43\x67\x08\x9c\xeb\xa1\x78\x0d\xa3\x24\x09\x3a\xcd\x35\x0c\x35\xd8\xb2\xc0\x51\xa6\x44\x1c\x85\x0f\xe5\x78\x26\x98\x06\x7a\xbd\xb3\x3c\x1a\xca\xeb\xeb\x66\xb3\x28\x47\x32\xcf\xdb\x8f\xfe\x34\x7c\x14\x5c\xc4\xf7\xad\xd6\x56\xf8\xd4\x4a\x62\x3e\xb4\xaa\x75\x1e\x7e\xfa\xac\xd4\x7c\x3c\x74\xbc\x18\x1f\x92\xea\x26\x31\xe7\xfb\x85\xa5\x59\x8a\x3f\xbc\x35\xc9\x31\x26\x35\x5d\x3b\x7d\xd3\x61\xab\xad\x16\x82\x22\xe9\xf7\x9b\x2e\xd7\xd5\x08\x22\xff\x21\x76\x28\xad\x02\x45\x45\x09\x24\xf7\xc7\x34\x3b\xd9\x45\x0d\xfe\xdf\x17\x32\x3b\x9d\x46\x13\x29\xa2\x82\x7c\x01\x88\xe7\x44\xc3\xab\x58\x5e\x63\xb8\x38\x72\x19\x5b\xda\x11\x3f\x91\x47\x4e\x84\x66\x23\x68\xc0\xb2\x1c\x59\xa1\xe6\x9b\x4a\xae\x07\x8e\x36\x8e\x29\xfc\x38\x1a\x65\xd3\x52\x99\x7a\xe2\xb1\x8e\x09\x40\xdb\x52\xa6\x3e\x47\xd5\x58\xd6\x47\x16\xc6\x1a\x05\x81\x1c\xd3\x5d\x69\xe8\x2a\x33\xc9\x6e\x16\x32\x02\x39\x66\xa0\xc5\x4c\x40\x0f\xb6\x02\xa9\xeb\x0c\xe5\xd2\xc8\xd9\x8c\xf2\x6c\x48\x6e\x63\x4a\x71\xc1\x36\xba\x75\x57\x85\x5f\x2d\x47\x7f\x78\xcb\x91\xb2\x18\xdd\x2d\x74\x91\xf7\xd5\x56\xf4\xd5\x56\x74\xaf\xad\x88\x43\xc8\x1d\x14\x90\xb0\x28\xce\x65\x0c\xac\x86\xa5\x68\xab\x12\x9e\xa0\xee\xcc\x9d\x75\x8d\x5a\x6f\x59\x72\x3b\xf2\xbc\xa2\xc9\xda\xa1\xcb\x61\x1b\xd4\x7c\x13\x54\x6f\xc9\xf2\x52\x58\xea\x7d\x35\x48\x7d\x9a\x41\x6a\xae\xf5\x61\xdd\x89\x2f\x27\x51\x25\x2a\xe5\xe5\xad\x96\xe9\x18\x6e\xfe\xb7\xdf\x2a\xd5\xa1\x84\xa1\x1a\xe5\x4e\x1c\x34\xee\x88\x1d\xb1\xb6\xf2\x6c\xa3\xb7\x74\x76\x7c\x7c\xfe\xfd\xee\xc9\x52\xaf\x65\x87\xd2\x29\x0d\xc8\x22\x5a\x8c\x14\x2c\x32\x5b\x11\x72\xb1\xc9\x94\x3a\x64\x6b\x3f\x20\xa4\xdc\x70\x50\x10\xba\xc3\x4a\x87\xe7\xb2\x00\x91\xde\xde\x44\xb7\x21\x8d\xe7\xfe\x5d\x61\xb3\x7e\xcf\x0f\x9c\x23\x3e\x22\x57\x4c\x99\x2a\x27\xd7\xa2\x94\x53\x7d\xb1\xad\xef\xe4\x84\x52\xda\x86\x1a\xa5\x8c\x84\x1d\xad\x5c\x39\x8d\x10\x20\x50\xe0\x8c\xf4\x70\x81\xbc\x55\xa9\x9a\x9c\xac\xf2\x66\x5b\x19\xb1\x64\x8e\xeb\xaf\x6d\x96\xb3\x08\x91\x81\x85\xb8\xba\x65\x71\xb3\xac\x6d\x1a\x64\x28\x2e\xba\x16\x61\xf6\x7a\xb5\xc6\xcf\x4e\xbf\xed\xb0\xb2\xb6\xd7\xf5\x2d\xdb\xd4\x79\x8f\xa5\xb3\x8f\x34\x69\xb5\x55\x67\xec\xb4\xe7\x32\x68\xeb\xfc\x14\x53\x67\xe5\xeb\xf5\x1f\xb2\xf7\x37\x8b\x03\xee\x3c\x46\x49\xa2\x67\x98\x7c\x9e\x3d\x69\xce\x16\xa5\xec\x20\xe0\x4e\x9f\x84\x02\x6d\x05\xcc\xa5\x65\x09\x84\x2f\xc9\x51\xd7\x90\x73\xec\x58\x17\x96\x02\x62\x25\x1e\x65\x2a\xda\x5d\x75\x09\x5a\x35\xb4\x80\x39\xc8\x4d\x1b\xae\x01\x36\xc4\x07\x3d\xfb\xae\x3b\x49\x7d\x73\x02\x3b\x2f\x34\xa0\x8a\x67\xbe\x84\xdd\xb1\xbc\x6c\xeb\xb9\xdb\x16\x99\xbb\x41\x1f\x5f\x0d\x9a\xf3\x0d\x9a\x3a\x0a\xc6\xb6\x2e\xda\xab\xe0\x1a\x17\x15\xdb\x41\xb5\x97\xf3\xc8\xad\xf8\x2f\xe7\xf3\x59\xd7\xf0\x62\x9d\x63\xbe\xd5\x65\x21\xbb\xcb\x22\x96\x97\x45\x6d\x2f\x73\x35\x03\x33\x55\xee\x14\xb2\x1c\x68\x41\x01\x54\xe6\xc8\x91\x71\xfc\x60\xd2\xf0\xc1\xa2\x94\x5f\x63\x8e\xb3\x36\x7e\x9c\x5e\x26\x52\x99\xe7\xba\xe1\x93\xea\x82\x4f\x19\xe7\x94\x34\x6d\xc4\x05\x49\x19\x39\x5a\x67\xd2\xa1\x8a\x87\x71\x0f\x25\x94\x92\xfc\xef\x55\x76\x77\xad\x45\xd0\xc4\xa7\x19\x7f\xd5\x4e\xff\x53\xac\x82\x9d\xfe\x67\xb3\x0b\xd2\x6e\x7c\x20\xe1\x61\xe6\x1d\xa2\xbe\x87\x13\x9f\x4b\x2d\xa1\x4d\xa0\x9e\x05\xcc\x94\x9f\xc9\x6a\x58\x35\xf8\x9e\x99\xd3\x20\xb0\xea\x0a\x7c\x0b\xc4\xdf\xb6\xb8\x89\xe2\x52\x8c\xb3\xdc\xe5\xf8\xa8\xe0\xa3\x04\x54\x66\x62\x24\x87\xf1\x28\xc8\xfa\xab\x0c\xa3\x86\x15\xd4\xce\x82\x32\x73\x2a\x9f\x58\x65\xa0\xfc\xc6\x56\xf0\x19\xd6\x0f\x5e\x7c\xf7\xc8\x60\x21\xd7\xed\xc5\x4f\x25\xda\xdf\x4b\xb2\xbf\x93\x60\x6b\xf9\xaf\x67\x06\x76\x8c\xc0\x0e\x1b\x9e\x6b\x01\xfe\x6a\x00\xfe\xbf\xf6\x3b\xf4\x2c\xc0\x5f\x02\xe6\x29\xe3\x9c\x61\x6d\x52\xb6\x6f\x0d\x70\x68\x3e\x4b\x0b\x0d\x11\xdf\x16\x2a\x07\xb7\x56\xbb\x09\x68\xd2\xe4\x3c\xa2\x88\x17\xd9\x15\x4a\x53\x98\x44\x71\x5a\x46\x98\x92\xd2\x92\x07\x85\x68\x1e\xd8\x97\x56\x26\xb7\x77\xcc\xb0\xad\xf9\x2c\xc5\x28\xd0\x25\x7d\x7f\x45\x58\x20\xb2\x10\xd1\x4d\x74\x4b\x0e\x91\xd8\xe9\x6e\x2b\x6c\x0e\xce\x13\x19\xb0\x06\x07\x4c\xbb\x0f\x30\xec\x1a\x5c\xdf\x00\x1a\x32\x83\xea\x68\x58\x6b\x0d\x54\xe3\xc0\x2b\x17\xc3\x88\x72\x73\x60\x9a\x5b\xdd\x81\x61\x94\x12\xcc\x3e\x49\xfa\x8c\xb6\x06\x4b\x60\x70\x30\x61\x4e\x8c\x75\xd9\x47\x26\xfe\xc3\xfa\x1e\x2a\x23\x58\x3e\x4b\xd9\x84\x0c\x33\xa3\xde\xce\xd2\x3c\x4b\x12\xc2\x6f\x9d\xde\x63\x17\xb6\xd0\xea\x1e\x6c\x14\xb6\x91\xee\xfe\x88\x16\xe1\x53\x29\xc5\x55\x76\x23\x26\x51\x7a\x4b\xf7\xc7\xae\xf8\x85\xe4\x95\xcb\xa9\x8c\x28\x0b\x97\x98\x73\x0b\x3f\xcf\x76\xeb\x19\x70\x76\x6c\x06\x55\xc1\x28\xb7\xa5\x74\x44\xb3\xb6\x01\x48\xed\xa9\xa6\x97\x06\xd4\x90\x50\x0e\xbf\xfd\x56\x3c\xec\x85\xe3\xe3\x72\x3f\x46\x35\xfd\x79\x8e\x2c\x73\x21\x2a\x85\xad\xd8\x3c\xb8\xd3\x55\x53\xc2\x7f\x4c\x13\x3e\xdc\xa4\x7e\x5e\xd1\xe0\xee\xc3\x8b\x14\x35\x2e\x71\x21\x84\xc3\x9a\x6f\x54\xa2\x8d\x44\x05\x9d\xc1\x8e\x87\x0a\x40\x61\x1e\xa4\xe5\x02\x30\x98\xee\x0e\xc4\xc8\x25\x8d\xe7\x8c\xfc\x91\x4e\x21\x6b\xf3\x00\x3f\x66\x2d\x09\xc5\x67\x09\x75\x94\x5b\x84\xc3\xb6\x16\xf2\x07\x9c\xeb\x0e\x68\x6f\xc2\xaa\x3f\xe0\x3d\xde\x7f\x95\x1a\xbf\xcf\x9f\x6f\x6e\x73\x0b\xbb\xed\xa9\x42\xf7\x7b\x18\xd5\x71\xb6\x2f\xe1\xa6\x12\x92\xef\xbf\x3a\xaa\xfc\xeb\x1d\x55\x56\xbe\xea\x1a\xff\xe9\xce\x26\xa4\x69\xd8\xc9\x8b\xdb\x70\x7c\x87\x72\x15\xdc\xa7\x42\x60\x12\xa8\x85\x94\x88\x79\x1a\xc4\x8f\xb3\xf1\x78\x12\xa5\x75\x3a\xc4\xd5\x6c\x3c\x5e\x4c\x89\xf8\x02\x41\x42\x9c\x22\x42\x71\xb3\x32\x23\x64\x9b\x6e\x9d\x78\xec\x51\xc0\x03\x02\xa0\x5b\x9e\x29\xfd\x3e\xe1\x78\x61\xb3\x28\x4b\xc2\x6a\x82\x1e\x1c\x52\x73\x3c\x8f\xa5\xd7\x9d\x11\x9f\xc6\xe8\x7f\x1f\x9b\xff\x34\x26\x5f\xc3\xe1\xab\xfc\xfd\x2b\x67\xff\xca\xd9\x3f\x33\x67\xff\x0b\xa5\x6f\x27\x8e\x6b\xbb\x73\xb4\x85\x49\x36\xc3\x29\x16\xdc\x94\x57\x6d\xce\xe2\x81\x89\x86\x34\x12\xcb\x48\x16\x08\x7e\x3d\x8d\x86\x1f\x18\x89\xb5\xb9\xd2\xed\x3e\x6b\x51\x3a\x49\xce\x16\x4f\x69\x16\x08\x5f\x08\xf9\x1b\x62\x70\x97\xb3\x14\x81\x45\xd0\x9d\xf0\xe3\x30\x99\x8d\xa4\xb8\xc9\xf2\xa2\x24\xf4\x48\x2b\x63\x09\x65\x30\xb1\xf1\x58\xc7\x71\x02\x87\xc5\x0b\xf2\x1d\xe4\xcf\x50\xd0\x79\x03\x8d\x10\x33\xb6\xa3\x60\x2a\xf2\x71\x3c\xe4\x1a\x2e\xc3\x7f\x99\xa5\xe3\xf8\xb2\x89\x23\x57\xa3\x54\xd3\xd2\x26\x10\x7a\xfb\x31\x23\x98\x42\x75\x4e\x43\x7a\x15\x73\x92\x1e\xcd\x8d\xac\x5f\x5b\xaa\x84\x6a\x92\x01\x00\xe0\x9f\xfa\x9d\xf5\x11\xb1\x6d\x7f\xd2\xa9\x4d\x9e\x8a\xdb\xa6\x17\xfa\x2d\x74\x46\x6c\x63\x9f\x70\x8d\x11\xdf\x0b\x87\x35\xcb\xd1\x3d\xf3\x1c\x0f\xce\xad\x46\x23\xf0\x54\x6c\x8b\x77\xe4\xa2\x88\x7f\x98\x96\x08\x3b\x0a\xfd\xb0\xdd\x23\x53\x79\xa3\x26\x6b\x05\x59\x1b\xfd\x9f\x0b\x27\xd3\x6a\x3b\xe7\xe2\x0a\xa1\x41\x90\xb1\xd0\x6f\x65\xad\x2d\xd6\xda\xe2\x29\xfe\xaf\x1d\xce\x6b\xb7\x81\xad\xf4\x31\xc3\x5a\x31\x95\x98\xb8\x3a\xa3\xee\x29\x3b\x64\xa0\xd5\xf5\xb6\xe8\x6f\x60\xcb\xb5\xcd\xf6\x96\xc4\x20\x54\x75\xa3\x2d\x56\x07\xf4\x5f\x5d\xdd\xde\x92\x58\xe5\xb3\xbc\x32\x18\xf8\x2c\xfc\x67\x3b\xa6\x7a\x75\xd7\xe6\x77\xff\x29\x35\xe0\x77\xc2\x6b\xa8\xb7\x24\xd6\xeb\xaa\xf6\x07\x4f\xf9\x7f\x82\x95\x7b\x4b\x62\x23\x54\x15\xbe\x86\xb5\x06\xeb\x75\x03\xe8\x2d\x89\x27\x95\xaa\x56\x3d\xf8\xee\xca\x60\x2d\x54\xbb\xb7\x24\x9e\x06\xab\x62\x2d\xfc\x9f\xb5\x95\x67\xfe\x87\xd5\x57\x9f\x21\x01\xd8\x41\xe1\x4b\xbd\xc6\xfb\xad\x2f\x62\x12\xf7\xd0\x50\x1f\x39\x8e\x7c\x8f\x0c\x68\x1f\xe6\x02\xc0\xd1\xfc\x92\xc4\x17\x1c\x97\xef\xa5\x19\x9c\x9c\xc7\x29\x48\x13\x2a\xe5\xaf\x83\x32\x8b\x89\xfb\x0d\x86\x7f\x83\x0f\x91\x97\x87\xfb\xbb\x27\x1c\x17\x63\x0e\x10\x42\x16\xeb\xb2\x6b\x42\xaf\x47\x50\x42\xe8\x90\x76\x74\x70\x28\x9a\x36\xaa\xe3\xa9\x2c\x99\x2f\x63\xce\x74\x97\x15\x88\x69\x94\x47\x13\x59\xca\xbc\x30\x18\x4b\x15\xbf\xbe\xed\x10\xff\x78\x57\x74\x91\xbb\xbf\xef\xda\x1c\xcc\xce\x50\x76\x5f\x3d\x8f\x31\xda\x69\x01\xef\xab\xea\x71\xc5\x6a\x3a\xc6\x45\xfa\xcc\x6c\xb3\xe1\x21\xb2\xac\x6c\x05\xb2\x3c\xf3\x43\x0f\xeb\xa6\x2a\xdc\x04\x4c\x58\xae\xf7\x66\xe5\x52\xad\xf6\xde\xce\xb8\x98\xac\x78\x09\xa4\xf7\x68\x57\x9c\x96\x94\x9b\x57\x9f\x3b\x20\x2f\xc0\x91\x31\x4b\x12\xff\x62\x03\xa3\x8d\x65\xae\x11\xd4\x51\x2d\xb2\x48\x95\x56\x9e\x5b\x89\xca\x59\x41\xd9\xe7\xdd\x46\x22\x32\x45\xa7\xd1\x44\x0a\x74\xc6\x54\x1c\x0b\xeb\xd9\xc8\x3e\x4e\x27\x7a\x4b\xca\x24\x53\x94\x40\xa7\x4a\x66\x08\x56\xd5\x98\x5e\x5b\xa4\x4a\xc1\xaf\xcc\x85\x0d\xaa\xd6\x53\x49\xc3\x4d\x57\xf1\x06\x5a\xa7\xb3\xbe\xc5\x24\x7c\xda\xc5\x2e\x13\x56\x86\xea\x4a\x6b\xfe\xc8\xa1\xb5\x0b\x93\x1e\x39\x98\x2a\xdb\x6a\x85\x12\xdf\x7a\x93\x47\x17\x43\x71\x29\x56\x50\x56\x45\x76\x41\x78\xf3\xf0\xb0\x6f\x1e\x5e\xfe\x12\x4f\xad\xc6\x2e\x7f\x61\x62\x73\xd7\xb4\xb7\x44\x05\x09\x1d\x4d\xc4\x29\x8a\x45\x48\x1b\x4a\x3b\x74\x1a\x21\x8f\xd7\xea\xb8\x6e\xe8\xa6\x3f\x25\xfc\xb8\x36\xae\x2c\xc2\x33\x0e\xb3\xc9\x04\xd4\x32\xd3\xc8\x44\x96\x57\x19\xf4\xe4\x6f\xe7\x7b\xfb\xdf\x1f\xee\x82\xb8\x8c\x89\x4b\xa3\x94\xce\xf3\x0b\x29\xd4\x0b\xab\x1a\x4a\xc6\x4a\x27\xea\xf4\xb7\xe8\xbb\x84\x27\x9d\x8d\x59\x11\x44\x26\x44\x12\x9d\xba\xe5\xb0\x83\xd5\xf8\x78\xa5\xd9\xf5\xe8\xe3\xf0\x6f\x4f\x9e\x28\xbf\x5e\x7c\xd3\x5c\x1d\xbc\x12\x17\xb7\x8a\xdd\xb5\xec\x95\xa1\x74\x8e\xba\x6e\x92\x5d\x0e\x9a\x0a\x0d\x55\x34\x9f\x76\xbb\xfd\x0d\xb7\x3c\xe7\xf3\xe4\xf2\xda\x6d\xb9\xef\xf4\x88\x3e\xce\x4b\xc4\x3c\x97\x60\xc0\xb9\x63\x5d\x71\x40\x21\x1e\x14\xc9\x99\x4b\x44\xef\x16\x71\xaa\x08\x51\x0e\xb3\x74\x44\x19\x2e\x32\x3b\x7d\x06\xe7\xf9\x44\xd9\x3b\x23\xcf\x64\xc4\x44\x89\x41\x22\xc6\xe2\x09\x25\xb8\xe5\x2c\x0a\x91\x83\xc2\x32\x36\xc9\x69\x6e\x4e\xe3\x5f\x64\xc3\xa0\xa7\x76\xc5\x4f\xe4\x26\x1d\x17\x22\xcb\x2f\xa3\x94\xf3\x62\xb6\x0d\xe0\x8b\x0b\xf4\x17\x59\xb7\x99\x0c\xc9\x8b\x6d\x76\xbc\x2b\xbf\xb6\x41\x36\x96\x69\x31\xcb\xf1\xf2\x2a\x2a\xc5\xc1\x31\x39\xf8\xde\x44\xb7\x05\x55\x37\x69\x74\xf0\xd8\x8a\xd4\xf5\xa6\x9d\xd9\x13\x06\xcb\x18\x36\xf1\x2f\xd2\x4a\x5d\x6a\x4d\xbc\xa1\x07\x9a\xfa\xdd\x61\x39\x8b\x12\xcd\x37\xa8\xd0\xa6\x18\x2c\x61\x7f\xd5\xbd\xa6\xc9\x60\x34\x2b\x70\x03\x99\x4c\xe3\x0d\xe5\x05\x35\x8a\x73\x39\x2c\x93\x5b\x42\xa5\x31\xe0\xee\x6a\x55\xbd\xee\xf0\xb5\x98\x45\x05\x87\x71\x8a\xbc\x36\x4b\x60\x93\xda\x5e\xe3\x05\x70\x50\xb4\x61\xe1\xce\xc4\x2c\xaf\x94\x2a\x0a\xe9\x81\xfb\x0e\xcd\x32\x05\xe4\x79\x84\x99\xef\x36\xd6\x5e\xb5\x69\x7a\x13\x68\x3c\x2e\xb4\x51\xcc\x07\xce\x41\x37\x4d\xd8\x0b\xec\xa6\xc9\x39\x52\x77\x53\x76\x7f\x47\x36\x06\x6b\x82\x4d\x63\x3e\xe7\x19\xe7\xdf\x33\x3e\xf2\x93\x6c\x34\x4b\x32\x68\xc6\x1f\xad\xc7\x96\x7a\x4b\xe2\x47\xcc\x93\x54\x09\x33\x41\xcc\x9f\xa3\x83\xc3\xae\x5d\xdb\x1c\x6c\x86\x17\x99\xe9\x80\x46\x78\xb6\xca\x0c\xf8\x8a\xf6\x2c\x35\x7b\x53\xe7\xd7\x50\xad\x00\x97\xd6\x89\xec\x65\x22\x81\x7d\xf9\x0e\xc9\x5e\x75\x8b\x1b\x68\x76\xa0\xdb\x6d\xf9\xa5\x2d\x5e\xa0\xba\xcb\xd7\x49\xce\xbc\x68\xf7\x4f\x8b\x26\x8f\x4c\x86\x7d\xf8\xe4\xc5\x2d\x27\xea\xa6\x69\x50\x86\x41\xac\x45\xf1\xba\x08\x8a\x89\x44\xd9\x60\x87\x5e\x39\x45\x8c\x24\x5d\x16\xb3\xc9\xc2\xce\x22\x78\x6e\x23\x55\x40\xd1\x82\x3c\x75\x81\xee\x8a\xd2\x6c\x7b\x54\x96\xf0\xd2\x4a\x94\xd1\x07\x59\x60\xf0\x83\x83\x92\xf0\x41\xde\xb6\xa9\xd9\x98\xe5\x41\xe5\x84\x4a\x43\x5a\xb2\x3e\xb4\xb3\x2d\xf4\x2c\x7a\xc4\x11\x10\x9d\x7a\x4b\xe2\x27\x37\x78\x4f\xf9\x14\x5c\xc8\xcb\x98\x90\xae\x3d\x6c\x71\x3e\xad\x39\x30\xee\x07\xc9\x9f\x31\xb0\x71\x7a\x0f\x9b\x64\x43\x9c\x8f\x32\x1a\x7e\xb8\x89\xf2\x51\xe1\x53\x6d\xc5\x4e\xa8\xa9\xcf\x38\x57\x58\xc9\xac\x2d\xd1\xc0\x8e\xae\x59\xb1\x51\xa4\x3c\x07\x39\xeb\xc0\x0c\x48\x75\x8e\x79\xd8\xab\x29\x3f\xc6\x45\x59\x38\x72\x98\x25\x92\x3a\xc7\xb6\x0e\x33\x31\xbb\x84\xa5\x50\xff\xf3\x95\x06\xec\xda\x58\x04\xea\xdb\xc9\xc3\xe9\xd4\x76\xc4\x5c\x47\x12\xd2\xa4\x7c\x1d\x25\xf1\xc8\x46\x27\xc0\x04\xf4\xb4\x12\x1e\x5b\xf4\x2c\xb3\xc0\x1a\x9d\x9c\xae\xd6\x94\x47\xa5\x1b\x42\x61\x12\xe2\x57\x32\xba\xdb\xec\xd1\xca\x85\x6f\xf2\x17\x23\xdf\x66\xf2\x36\x5a\xb6\x15\xa7\x5a\x25\x8f\x8a\x12\xa1\x3a\x7c\x96\x91\xc5\x41\xcc\xa6\x2c\x9b\xe0\x71\x69\xf3\x39\xf4\x83\x47\xd8\x07\x42\x4f\xc6\xc4\xa8\x3a\x02\x82\x7a\xaa\xb2\xfc\x8b\x5d\x44\x41\x97\x2a\x99\x79\x3c\x99\xe6\xd9\xb5\x0b\x28\x22\x50\x73\x71\xf1\x46\x38\xf4\x6f\x89\x3a\x13\xea\xbf\xa3\xb6\xe9\x43\xb1\x2c\xe5\x64\x8a\x92\xef\x38\x4e\x47\x22\x72\x43\x6c\xf1\xe0\xd0\xbb\xc9\x8d\x9e\x89\x31\x73\x5f\x0c\x07\x21\x7f\x79\x12\x25\x89\xbd\x06\x24\xcd\xf1\xb4\x4f\xe4\xf0\x2a\x4a\xe3\x62\x52\x85\x73\xb3\x86\xa6\x26\xe3\x5a\x26\x98\x5e\x7b\xcd\xc9\xc1\x7d\x76\x15\x95\x8f\x41\x5a\x88\xa3\x82\x1c\xa7\x5c\xb3\x24\x25\x67\x9a\x15\x52\x1f\xd1\x58\x4f\x4f\x81\x83\xa5\x62\xcd\xc2\xef\x82\x88\xb1\xa2\x23\x96\xaa\x74\xa8\x17\xf6\x41\x68\x31\x4b\xa2\xda\xdd\x79\xd3\xa6\x66\xec\xf9\xb6\x58\xf5\xd7\x9e\x73\x6b\xa9\xed\x0a\x92\xb9\x5f\x51\x34\xfb\xdd\xee\xb3\x96\xcb\x62\x38\xf8\x4b\xc9\xb8\xe3\xe8\x3a\xcb\x19\xa6\x6f\x28\xd5\xb5\x98\x18\x66\x20\xf9\x58\x9f\x73\xb4\x7c\x35\xc1\x6f\x31\x1e\x7c\x1c\x15\xa5\xde\x04\x86\xac\x3c\x76\xa7\xdd\xcc\xad\x49\xb4\xda\x77\x4c\x01\x2b\x5b\x3a\x5f\x3e\xb5\x8a\x82\x14\x67\xce\xb7\x68\x55\xc1\xad\x58\x8d\x79\x2a\x18\x4e\xed\xc5\x2d\xdf\xce\x0c\x37\xb9\x54\x6f\x49\xec\xc5\x23\x45\x55\xc3\xf2\x1c\x91\x48\xcb\xdb\xa9\x1c\xc9\x31\x5b\xa9\xcb\x0c\x93\x16\x21\x32\x23\x4c\x6d\x0c\x9b\xe0\x26\xca\x53\x66\x9d\x44\xbb\x45\x99\xcf\x86\xa5\x6a\xe2\xbc\x10\xa3\xdb\xf4\x3c\x81\xcf\xbd\xfb\x71\x7f\xf7\xcd\xf9\xe9\xc1\xdf\xf6\xdf\x2b\x81\x83\xef\xb2\x30\x21\x26\xad\x3e\x14\xd4\xfb\x20\xd8\xd6\x08\xdb\x1a\x2c\xed\x9d\xbf\x3c\xde\xdb\x3f\x5d\xee\xbf\xc7\xc9\xd1\xe2\xf9\xfc\x16\x2e\x92\x73\xae\xff\xe2\xd0\x6a\x00\xe5\x37\x5e\x6a\x6c\x00\x08\x0f\x34\x53\xea\x56\x61\xc6\x07\x4b\x0c\xdc\x8f\xe5\xc6\x6c\x2c\xf6\x8e\xdf\xbe\x38\xdc\x17\x04\x15\x4d\x31\x91\x69\x29\xf3\x44\x46\x70\x14\x8f\xa3\x32\x6a\x53\x55\x95\x25\xfa\xcf\xa7\x06\x7a\x92\xd3\x40\x09\x89\xb9\xb8\xe3\x6b\xa9\xd6\x5f\x4f\x9b\x00\x29\x53\xde\x70\xf6\xbd\x17\xb3\x71\x7f\xa3\xa9\x67\x52\x2c\x89\x41\x6b\xcb\xae\x33\xaa\xab\xd3\x1c\x88\x25\xc1\x93\x26\x96\x45\xbf\xe5\xd6\xe5\x89\x11\xa2\xb6\xae\x9a\x30\xb7\x32\x5a\xe2\xdc\x1e\x07\x9e\x8f\x02\xcf\xf9\x8b\x64\xa7\xa3\x2d\x7c\x3e\x92\xc5\x90\x7a\xe0\xab\xfb\xf0\xa6\x4b\x6e\xa0\xea\x1a\x58\x2f\x34\x7d\x66\xa1\xca\x01\x32\x51\x9d\xa1\xea\x73\x6b\x1b\x8a\xd0\xf5\x71\x69\x41\x87\xbf\x48\xce\x87\xd9\x2c\x2d\xdf\x81\x46\xf8\xe2\xe0\x0c\x09\xcb\x6a\x1e\x5f\x06\xe6\x56\x15\xc7\x69\x65\x3e\x62\x84\x8c\x61\x06\x7c\x53\x49\xc4\xd6\xf7\xd1\xde\x6a\x72\xf9\x39\xdd\x89\xd3\x52\x5c\xc9\x68\xfa\x6e\xb0\xe4\x10\xb9\xd0\x80\x0f\x53\x62\x04\xa0\x5d\xcc\xe2\x84\x62\x34\x6d\xfa\xb7\xc5\x30\x2c\x5e\xed\x37\x90\x84\x4d\x11\x5b\x0f\x6c\xdb\x10\x02\xd4\xb1\xa8\x00\x7e\x72\x26\x64\xdf\x86\x54\xaf\xe4\x70\x98\xff\xd4\xeb\xf7\xf9\x24\xaa\x98\x7d\xb8\x1d\xae\x0d\x0d\x21\xd0\x59\x51\x8a\x71\x2e\xff\x39\x93\xe9\x90\xef\x66\x38\xff\x7b\x91\x91\xe7\x37\xce\x68\xfa\x1e\xc5\x1c\x9e\xdd\x94\x52\xaf\xab\x5f\xcb\xfd\xf7\x5d\xfa\xb1\xf2\x5e\x45\xb7\xea\x0c\x7d\xdc\x18\x2a\xbe\xd0\x51\xad\x77\xba\xb3\x15\x25\x09\x33\x67\xef\x7c\x1b\xc9\x29\xdd\x87\xdd\xbb\x0e\xbd\x1e\x28\x47\x58\xde\xa5\x00\x77\x5b\xc2\x7b\x45\x70\x7b\xd8\x38\xcc\x29\x66\x23\x98\x5d\x20\x3d\x29\xbd\xbf\x8c\x25\x39\x30\x48\x42\xaf\xa5\x55\x84\xd2\x98\x07\x5e\x4f\x9b\x7f\x22\xb3\x25\xd4\x13\xde\xd9\x60\x48\x9a\xae\xb5\xa1\x51\x51\x76\xf9\x2d\x35\x13\x97\xd0\x90\x67\xe6\x38\x65\x1b\x81\x0a\xe9\xc2\x36\xed\xd6\x7a\xdc\x54\x57\x70\x3c\x0f\xac\xdb\x9a\xc8\x65\x84\x0b\xca\x21\x3b\x4b\x24\x7f\x62\x16\x21\xeb\x3b\x64\x69\xd0\x1a\x60\x47\x8f\x31\x06\x29\x86\x92\xff\x7f\x90\x53\x54\x1e\x39\x29\x2d\xee\x6f\x99\x17\xa6\x4e\x3c\x76\x44\x90\x58\x71\xfc\xe1\x50\x16\xc5\x78\x96\x18\x8c\x5f\xb4\x67\xa1\x9e\xd7\x46\x02\xb0\x34\x5f\xf8\x53\xf9\x36\xc8\x7a\x1c\x3b\x3a\x1f\xa5\xeb\x84\x2e\xd1\x5b\x19\x40\x9d\x97\xd7\x2a\x29\x95\xc0\x94\x6a\x32\x65\x83\x0f\x65\xac\x46\xff\x1f\x60\x8b\xa3\x28\x1f\xd1\x9b\xae\x10\x4d\x94\xe4\xa0\x61\x0c\x4b\xbf\x90\x94\x33\x57\xcf\x1b\xfc\x41\x5f\x39\x31\x46\x3c\x76\x26\x30\x0e\xe8\x2b\xab\x83\x57\x94\x2f\xf4\x01\xd3\x13\xe1\x25\xb5\x2b\x73\xa3\x0d\x88\x06\x6d\xba\x82\x49\x56\xdd\xc1\x63\xcd\x38\x2d\x4a\x86\xff\xf0\x66\xa5\x59\x44\xd7\xb0\xee\x94\x68\xa3\x68\x75\x4d\x63\x4a\x81\x8a\xa6\xd3\x24\x1e\x1a\xb1\x18\xad\xd6\xf1\x94\xb2\x38\xa2\x01\x9a\xcd\xd8\xa6\x72\x47\x0c\x61\xcc\xd0\x30\xec\x54\x97\xf1\x61\xa6\x34\x26\xa5\x32\xb9\xc5\xdb\x79\x04\xa0\xce\xb3\xeb\x78\x44\x60\xcf\xd6\xec\x8e\xa2\x69\xa9\x8d\xda\xa0\x56\x5c\x1a\xf3\x3b\xa7\x31\x06\xca\x28\xa0\x50\x51\xc6\xc3\xa2\x2b\x9a\x67\xd1\x07\x6f\x91\xe4\xc7\x68\x32\x4d\x30\xdb\x71\x8c\x86\x51\x9c\x17\x14\x54\xa6\x59\x96\x27\xb7\xc2\x49\xee\x02\x27\x0e\xc3\xd5\xa0\xa8\x68\xf5\x07\x55\x36\xbf\xbc\x52\xc1\xd1\x17\xad\x25\x4e\x79\xa5\x78\x47\x02\x31\x90\xb3\x83\x69\x07\x21\xad\xad\xc1\x5d\x60\x1e\xb9\x6b\x49\xe7\xdd\x2c\x2f\xe8\xaa\x31\xbb\x96\xb9\x46\x6e\xc9\xa3\xb4\x98\xc4\x65\xc9\x88\x16\xd4\x10\x4d\x2a\xe2\xcc\x99\x49\xb5\x56\xe2\x00\x48\xe4\x31\x6f\x4d\xce\xf1\xb4\xe6\x33\x29\xf6\x5c\x71\xad\x21\xf9\x8c\x2c\x32\xda\x54\x98\xa8\x8b\x17\x23\x6e\x28\xe6\x46\xfc\xe8\x85\xcf\xd5\x94\xa4\x51\x74\x6b\xb0\x3b\xa8\x05\x94\x7d\xf1\x5f\x30\x05\x0d\x1d\x41\x88\x07\x45\xf5\xac\xc3\xc6\x48\xf3\x83\xef\x61\xe6\x68\xe2\x73\x6d\x10\x07\x28\x0d\xce\x38\x89\x2e\x6d\xbb\xe9\x8d\x4a\x9c\x93\x4a\xd8\x5b\x51\x7e\xeb\x1f\x2e\xd9\xb4\xf4\x8f\x5c\xbe\xaf\x31\x76\x21\xd7\x53\x0d\xe9\xc7\x96\x3e\x0a\xef\x06\x2d\x1e\x3a\x2d\x2e\xd2\x1c\x55\xab\xb4\xa6\x4c\xf2\xde\x05\x97\x9e\x1b\xa6\x40\x55\x2c\x4e\x43\x4e\x75\xca\xec\x2a\x3d\x7b\x52\x4f\xe5\x53\x03\x19\xcb\x4e\xc1\x25\x12\x39\x2e\x5d\xcb\x92\xb1\xef\xc5\xde\xea\xb3\x7b\x1e\x11\x7d\x97\xac\x9c\x51\x6e\x19\x6e\xd1\xe6\xc4\xa0\xa4\x68\xf1\xc9\xca\x32\x9b\x88\x26\x5e\x4f\xb0\x5d\x21\xbe\x4c\xe3\x71\x3c\x8c\xa0\xe3\x71\xa9\x18\x52\xcf\xfa\x28\x99\x9c\x42\x76\x55\x36\x46\xc5\x24\x0d\x51\xff\xba\x42\xec\x02\x83\xc6\xce\x5c\xa8\x6c\xe2\x68\x17\xd7\xc5\x8d\xfd\x88\xa3\xa1\x40\x40\xb0\xa8\x83\x34\x1e\xf2\x1b\xe2\x79\xe1\x3c\x85\x71\x1a\x97\x94\xe4\x3a\x1a\xcb\xe4\x56\xc1\x8f\x50\x34\xac\xf8\xf3\x69\x17\xcd\x18\x98\x9d\xbc\x60\x65\x8c\x12\x65\x2b\x46\xca\x37\xb2\x84\xad\xef\x24\x3f\x2c\xb3\x2c\x41\xf9\x87\x6d\x1a\x4e\x5e\x38\x35\x76\x3f\x91\x5b\x36\x1e\xa3\x5d\x51\xdb\xe0\xe0\x1b\x76\xa6\x44\x5a\xe6\x4e\x47\xad\x37\xcc\x88\xda\x6f\x31\x2d\x17\x27\x2c\xc4\x34\x6e\xf7\x24\x68\x64\xc5\xb7\xc0\xe3\x94\x25\x89\x60\x52\x45\x11\xe1\x81\xc6\x5f\x9d\x22\x78\x84\xe2\xdf\x5d\x73\xd4\x94\xba\x19\x4a\x93\xaa\xc1\xab\xe0\x14\xf1\x12\x06\xaa\xf5\x71\xee\xc4\xf9\xc2\xf0\x44\x16\xb2\x7c\x25\xe5\xb4\x59\x94\xf9\xc4\x78\xea\x16\x3a\x93\xc6\x37\x78\x4b\xfe\xdb\x6f\x02\xff\x81\x7b\x55\x87\xfe\xb2\x9f\x9c\xcc\xf3\x26\x65\xd5\xfd\xdb\xf9\xe9\xd9\xc9\xfe\xee\xeb\xf3\xfd\x93\x93\xe3\x93\xd6\x96\xce\xd1\x01\x55\xcb\xac\x8c\x28\x53\xb4\xfd\x5b\xdd\x45\xab\x52\xa8\x79\x97\xb7\x53\x89\x77\xa7\x6f\x8f\x5e\x1d\x1d\xff\x74\x44\x5e\x07\xaa\x22\xf6\x81\xae\xfc\xed\x3b\x68\xfb\x81\x69\x56\x3b\x1d\xe2\x45\xf3\x73\xe3\x11\xa8\xaf\x9e\x3b\xf4\x2f\xe5\xce\x8a\xc1\xff\x93\x68\x24\x8d\xe5\x9c\xee\x47\x61\xbe\x9a\xdd\x6e\xb7\x6d\x9c\x30\x19\x58\xf5\x8e\x7d\x22\xd8\x11\x40\x7d\xec\x3b\x71\x70\x74\x70\x76\x7e\x7a\xb6\x7b\xb6\x2f\x36\xc5\x8b\xb7\xa7\x3f\xd3\x8f\x96\x1e\x6d\x34\x4a\x90\x4c\x55\x95\xed\xed\x6d\x31\x68\x89\xef\xb0\x2f\x2b\x04\x7d\x9d\x0f\x57\x07\xcd\x15\xf8\xea\xd1\xdb\xc3\xc3\xb6\x58\x01\xa9\x88\x50\x6e\xfa\xe8\xcd\x82\x8d\x04\xca\x78\xd7\xc9\xc6\x27\x19\x15\x4d\xed\x70\xcb\x5e\x36\x5b\xc6\xf1\xf1\x6f\xe7\xc7\xaf\xb6\xea\xe9\xc5\xa3\x95\x5c\xc2\x54\x87\x09\x4a\x39\xb0\x62\x19\x74\x5f\x3d\x7e\xa5\x16\x40\x3b\xf8\x18\xba\xda\x72\x1d\x30\x73\x59\x86\xbb\x71\x2a\xcb\x1f\xf1\x2e\x9f\xe9\xce\xc4\x46\xcd\x21\x59\x33\x3a\x9b\x48\xb7\x8c\x5f\xaa\x2e\x4c\x6b\xf1\x0d\xad\xc5\xdc\x7a\x56\x1d\xed\x7b\xa0\xc2\xaf\xee\x9d\xcc\x83\x34\x2e\x07\x3c\x02\xb4\x38\xb6\x05\xb9\x0d\xa8\x8c\xda\x2f\xe2\xb2\x80\x67\x93\x43\x7a\xab\xec\x8f\xde\x50\xa1\x8f\xbd\x9e\xf2\x3b\x7f\x7b\x78\x68\x6f\x4e\xaf\xd7\x3c\xc1\xb0\x6e\x4c\xfe\x7d\xbd\x47\xd8\x26\xba\xcd\x4e\x0b\xbb\x6f\x0f\xcf\xce\x5f\x1e\xbf\x7e\x73\xb2\x7f\x7a\x7a\x70\x7c\xa4\xd7\x8d\x4d\xa7\x1b\x5b\x76\x8e\x1a\xd3\x63\xde\x64\x78\x77\xa2\x2c\x80\xe8\x3a\x03\x1f\x9c\x2a\xe7\x0f\x21\xb4\xe7\x07\xfd\x32\xf5\xb7\x45\xc7\xfc\xd2\x1f\xd1\xa8\x20\x56\xc9\x1d\xd1\xd7\x79\xe9\xb8\xb9\x81\xef\xb3\x81\xde\x1d\x28\x7d\xab\xef\x2b\x21\x5f\xf5\xc3\xb4\xd7\xd9\x16\x7d\x35\x2c\x95\x1d\x8f\x67\x5f\x3c\x17\x7d\xa0\x29\xfd\x7b\x87\x42\xfa\xf6\x5f\x9f\x1f\xee\xff\x65\xff\x90\xde\xa1\xd3\xc7\x37\xdb\xb6\xdb\x87\xca\x1f\xe7\x4c\xd0\x53\x28\xee\x0d\x04\x1e\x25\xfc\xa9\x15\xf3\x63\x47\x3c\x53\x4d\x68\xfb\x33\x17\xd0\xbf\x77\x90\x25\xfd\x75\x7f\xef\x81\x9c\xb9\xba\x76\xb0\xfa\x4f\xf5\x94\xda\x6b\xf2\x4c\xd1\x4e\x6f\x49\xcc\xd2\x32\x4e\xc4\x60\x7d\xa3\x83\x17\xa5\x7c\x84\x5e\xcc\x2e\xc5\x38\xfe\xe8\x60\x79\x16\x6c\x83\x70\x7d\xb0\xb6\x1a\xce\xde\x01\xc6\xbe\xa5\xfc\xca\x26\xcc\xe6\xd9\xd3\x8c\x97\x55\x71\x68\xdf\xc7\x87\xca\xa8\xbb\x69\x97\x6c\x2c\xf7\x97\x3e\xa1\x0d\x51\x41\xf5\x8e\xaf\xa8\x2d\x80\xbd\x3e\x7f\xd4\xbe\xef\xd6\x0b\xbe\x2c\x9e\x6c\x99\xb7\x6e\xc3\xba\x82\x55\x42\x37\x6f\xca\x6b\x1f\x36\xe7\xde\xfb\x7f\xff\xb7\xd9\xb4\xbf\xe9\x21\x1e\xb5\x44\xcf\x8f\x19\xb4\xdd\x68\x6c\x03\xcf\x53\x83\x16\xa8\x2c\xae\xc6\xf7\xc0\xb3\x04\x59\xfd\xe2\x82\xca\x25\xa3\x52\xf0\x46\x95\x22\xc9\x6c\x0f\x2f\x94\x30\x84\x7d\x22\x27\x94\xea\x75\x12\x5d\xc6\x43\x25\xcb\x61\xb1\x8a\x20\x46\x72\x78\x56\xd2\x75\x04\xe5\xbb\xc6\x6b\x02\x9d\xf2\xf5\x56\x2a\x44\x3e\xdf\x8e\x83\xd3\xdc\xb4\x96\x62\xa3\x85\x76\xfc\xfe\xc6\x2b\x63\xd8\x33\x6e\x4c\xba\x95\x80\xa7\x9c\xdb\xf4\x92\x58\xe3\x61\x81\x02\x99\x44\xb7\x98\x1e\xb7\xb8\x1a\x8b\xa5\x96\xf8\xdb\xee\xe1\xe1\xf1\x4b\xde\x41\x45\x67\xc7\xaa\xd8\x46\x5d\x35\x1b\x43\xd9\xd6\x32\x4d\x75\xaf\x57\x74\x76\x5c\xb7\xbe\xe6\x6c\x48\x4d\x71\xeb\x5b\x7e\xaf\x42\x2b\xe8\x77\x5a\x4f\x3c\x65\x7d\x62\xd1\x15\xed\x30\xff\x70\x4a\xff\x43\x34\x95\x39\xe5\x1f\xfe\x30\x07\xff\x68\xa9\x2e\x2a\x65\x54\x8d\x78\xd9\x1b\x5b\xcf\x1a\x1a\x75\x58\xd5\xe8\xa3\xd3\xad\x55\x94\x7b\x06\xf5\xb9\x88\x37\x05\xcb\xa2\xd9\x5f\xb6\xda\x6b\x2d\xb9\xdf\x62\x3f\x51\x35\x5d\x7d\xb1\x0c\x67\x6e\xe8\x2b\xe6\xce\x0e\xff\xbf\xe6\x17\xea\x46\x4e\xfd\x93\x9d\x44\x95\xff\x1d\xfd\x63\xcb\xc2\x06\xa9\x8a\x32\x78\x3c\x87\x4e\x67\xfb\x70\x26\xa6\xe8\xb6\x11\x38\xc1\x0d\xe3\x6f\xe3\x01\xf1\xd3\x8b\x83\xb3\xd3\xb6\xd8\xdb\xff\xde\x9c\x15\x6d\xeb\x80\x3d\x3d\x3b\xd9\x3d\xdb\xff\xe1\xe7\x56\x58\x46\xe0\xc6\xbd\x40\xba\x2c\x19\x91\x58\xd7\x26\xc6\x89\xc1\x75\xf2\xb2\x0d\x9a\x9a\xce\x78\x62\xbb\x3c\xd2\x29\xa8\xb2\x9f\xd4\x09\x49\xea\x9c\x21\x89\x11\x0e\x15\x8c\x7f\x81\x52\xf4\xc8\x12\x9f\x79\x22\xb0\x95\xef\xea\x0f\x1a\xb1\x19\x94\x40\x02\xe2\xbc\xdd\xaf\x2e\x3b\xb3\xe8\xd4\xab\xfc\x98\xcc\x58\xdf\x7e\x2b\x42\x79\xf9\xad\xd2\x46\x18\xdf\xde\x16\x26\x68\xe9\x6c\xdf\x40\x58\x7c\x63\x07\x53\xd5\x1e\x9b\xcd\x70\x4c\xd1\x77\x30\x35\x6f\xbf\xa7\x11\x55\x86\x68\xe9\x3d\xce\x81\x06\x0c\xeb\x7f\x66\x05\x6a\x9d\x18\xa0\x83\x02\x88\x5e\x4b\xe2\x4d\x5a\x62\xdf\xaa\x4a\xf0\xfc\x9c\xfd\x83\x70\x49\x15\x60\xb1\x12\xab\x54\x24\x94\x1e\xbd\x51\x41\x34\xa0\xa8\xa5\x0f\x6d\x2b\x19\xb7\xd7\x13\x3f\xfc\xed\xe0\x0d\xb7\xc5\xf3\xe8\xa8\x28\xc8\xc0\x7b\xac\x8d\x1c\xda\xaa\x86\x46\xba\x98\x95\xe7\x20\x0f\x34\x8b\xb6\x58\xed\x07\x1f\xf7\x57\x9f\x05\x9f\x3f\x75\x22\xeb\xbe\x51\xa7\x3c\xf7\xac\xe8\xec\xa8\x53\xdf\x11\x71\xfd\x56\xec\xd4\x1d\xff\xca\xe7\x9a\x35\x6d\x6f\x8b\x67\xe2\x3b\x31\x60\xf5\xcc\xff\xb3\xf1\x63\x77\xb6\xbd\x88\x5e\xca\xbf\xaa\x04\xc0\x01\xeb\x80\x95\xbf\x35\xb1\x29\x56\x5a\x35\x1d\x39\x3e\xc5\xeb\x1b\x2f\x83\x09\xab\xa5\x46\xff\xf4\x83\x10\x1d\x6c\x00\xb7\xc5\xa6\x5a\x8a\x6e\x29\x3f\x96\xe2\x3b\xd1\xc7\xef\x8b\xe5\xba\x01\x72\xe9\xab\x61\x3e\xa4\x99\x98\x53\x5a\xaf\x73\x97\x2c\x91\xdf\x89\x15\xb1\x29\xd6\x16\x28\x8f\x3e\xf5\x54\xfc\xe9\x02\xc5\x95\x7f\x36\xd5\xe8\x6f\xb4\x74\x85\xda\x15\x55\xa3\x8e\x27\x52\x7c\x8b\x29\xb3\x6b\x8a\x36\xdd\xb2\x3b\x3b\xd0\xa3\x07\xd6\xe8\x6f\x3c\xb8\xca\x60\xed\x9e\x2a\x7f\x18\xa2\xd4\x5d\xcf\x8a\x6a\x8f\x89\x17\x39\x54\x80\x40\x3b\xf6\x93\xae\x8f\xc4\x5b\xfb\x05\xbb\x78\xf5\x5b\x75\x53\xea\xd4\xaa\x59\xbf\xbb\x70\x8f\x81\xcc\x3d\x50\x16\x9b\x67\x12\xb7\x34\x8f\xda\xae\xf0\x67\xfd\x74\x99\xcb\x9d\xb5\x7f\xed\x70\x84\xd0\xb6\xde\xff\xeb\xd9\xc9\x6e\x68\x5f\xd3\xff\xe2\xde\x06\xa1\x9d\xa4\x12\x9b\xc1\xab\x6e\x63\xb6\x07\x3a\x43\xb6\x45\xd3\xd2\x5c\x97\x11\xad\x95\xb5\xab\x0e\xcc\xcb\xf3\xe7\x62\xad\x85\xff\xef\xe9\x96\x55\x1b\x09\xe4\x7c\x9c\x44\x97\x05\xc5\x2d\xb8\xa8\xda\x0b\xd3\x97\x3d\x95\x6e\x9b\x7a\xec\x0e\x3c\xa8\xaa\xb8\x51\x5f\xb1\x3f\xa7\x22\x6c\x8d\x39\x55\x07\x5e\xd5\xba\x72\xab\x3e\x3f\xe5\xc9\xfc\x6d\x9b\x6d\x2a\x5c\xf2\x39\x74\xb4\x12\x41\x4e\xfe\xa5\xdf\x28\x10\x2c\x53\xf7\xcd\xc9\xfe\xe9\xfe\xd9\xf9\xde\xc1\xcb\xb3\x2d\xbf\xe9\xe5\x6d\xb1\xda\x17\x1d\xd1\xe4\xdf\x7f\xa2\x03\xb7\x51\xa1\x8e\x2a\xd3\x9f\xce\xca\xd3\xab\x2c\x2f\x5f\x9f\xbe\x40\xdc\x74\x6c\xc0\xc6\xc5\x11\xa7\x11\x1b\xff\xd9\xb0\xa8\xfc\x4e\xa7\x39\x88\xcc\x56\xd0\xc4\xa6\x9f\xbc\xad\x32\x1c\x9b\x21\xd8\x5f\xb5\x76\xc9\x0e\xf1\xbf\xad\x05\x8a\xd2\xae\xb4\xf6\xe5\x5d\x48\x50\xf1\x8c\xa2\x01\x51\x85\x73\x47\x63\xe2\xaa\x91\x1c\xa3\xe4\x13\x92\x9d\xac\xad\xa5\xc6\x52\xe5\x57\xbd\x25\x86\xcf\x7c\x7b\x78\x68\xa3\xf0\x5f\xc8\x4b\x8a\x67\xa3\x0d\xbe\xe5\x3a\x13\xeb\x1c\x20\x64\xbf\x07\x4e\x61\xb9\xe0\x31\xd0\x96\xd9\xfc\xcf\xeb\xd8\x95\x9e\x12\x1f\x8b\xc2\xb2\x8d\x6f\x6f\x07\x34\x61\x97\x6b\x55\x98\x1a\x27\x30\xe0\x26\x76\x60\x34\x6e\x8d\x4f\xe6\x74\xa2\x43\xaa\x0a\xb4\x68\xf3\xe6\x3b\xeb\xdf\x14\xef\xcf\x15\x8c\x25\x59\xfd\xf9\x53\x5b\x19\xc8\x43\x86\xae\xd0\x36\x82\x5d\xb9\x9b\x7f\xa2\xe1\x52\xbc\xd3\xcb\xf4\xbe\x7a\x6e\xe8\x77\x56\x02\xb9\xc6\xa7\xcd\xf9\x67\x9c\x6f\xbf\x0b\x7c\xc2\xe0\x6c\xdd\x73\xf2\xde\x7f\x20\x1d\xed\xbe\xde\xbf\xe7\x3c\xfa\xb5\xca\xa8\xfc\x5a\x77\x0e\x62\x84\xb5\x29\x4d\xc1\xe0\x9e\x04\xc9\xf0\xb3\x6e\x49\xaa\x4a\x6e\x72\xa0\x5e\xab\x3d\x5a\x01\x52\xff\xba\xe3\x16\xde\x71\xd7\x51\x62\x1f\xcd\xfc\x8d\x45\xb6\x61\xaf\x27\xfe\x7c\xaa\x31\x29\x36\x45\x12\x97\x65\x22\xd9\xfc\x58\x66\x22\x1a\x8d\xe8\x42\xb6\x94\xf9\x24\x4e\xa3\x32\xc3\x2b\x59\xbe\xab\x77\x93\x9c\x78\xe4\xff\x5c\x38\x44\x14\x94\x3a\xa9\xe3\x6e\xb9\xe1\x55\x94\xbf\xcc\x46\x72\xb7\x6c\x5a\xbb\x5d\xc9\x90\x96\x50\xe7\x4b\x11\xaa\xb9\x95\x90\xe0\x67\xf3\x9b\xeb\x28\x31\x5b\x57\x1d\x0e\x50\x57\x41\xca\xff\xb1\x38\x0a\x8e\xca\x17\x00\xee\xe7\x1b\x2f\x8f\x5f\xbf\xde\x3f\x3a\x7b\x38\xeb\x08\x54\xac\xe5\x1e\x4e\xd9\x20\x03\x61\x5d\xf1\x2b\x0f\xf9\xca\x43\x7e\x17\x0f\x61\x3a\x5a\x84\x8d\xa8\xa2\x5f\x39\xc9\x62\x9c\x44\xef\xfc\x1f\x5f\x9e\xbc\x7c\x38\xbf\xf0\x6b\xd5\x32\x0b\x53\x30\xc8\x29\x5c\xe5\xdf\xa5\xe1\x65\x31\x40\xe8\xd6\x79\x54\x3c\x67\xbf\xdc\xd5\x36\xfa\xfc\xbe\xbd\xe1\x08\xaa\xbe\xee\x54\x6b\x5e\xb2\xf5\xb1\xa0\x01\xc4\xb7\x05\xcf\x37\x05\x2f\x64\x78\x9c\xbf\x4a\x7e\x2d\x5a\x25\x9d\x1b\x98\x8c\xe0\xdf\xa3\x65\x3c\x2a\xc4\x64\x36\xbc\xd2\x20\x13\x0a\xd1\x14\xb3\x7f\x90\xdf\xa9\x65\x1c\x57\xa5\x1c\x1d\xb5\x76\x2d\xb4\x67\x48\x2d\xb0\x18\xba\x97\xa7\x43\x29\x4c\x89\xb8\xb0\xc0\x9d\x34\xd4\xe2\x30\x42\xc0\xee\xe8\x32\x42\xb7\x33\x3b\x8f\x3a\x7a\xa5\x2a\xd4\x8f\x69\x34\xe4\x8c\xa2\xdc\xfd\x5b\x72\x78\xbc\xc8\x4a\x33\xc6\x28\x1d\x99\xea\xfa\x26\x84\x5c\xec\xd9\x29\xad\xcb\xae\xec\x37\x78\x5f\x7b\x21\x45\x94\xde\xd2\xed\x6b\x99\x89\x51\xd6\x36\xf5\x35\x0a\x01\xbb\x55\x47\x78\x07\x92\xe5\xa2\x88\x4b\xce\x51\x5a\x64\xe8\x9c\x47\x50\x8b\x37\xd2\xd4\xe5\x3b\x93\xe3\x57\xb6\xf3\xb4\xb9\x1c\x51\xe9\x94\x11\x99\xc2\x80\x4a\x6a\x5b\xa4\x9d\xda\xc8\x03\xbf\xe0\x17\x8e\x1f\x8d\x70\x70\x0e\x6d\xf0\x47\x4e\xc2\x51\x64\x13\x69\x0d\x12\xdd\x05\xc9\x21\x6f\x34\x43\xf7\x6c\x38\x95\xb3\xb4\x90\xc3\x19\x07\x50\x11\xe8\x3a\xc2\x4c\x16\x5d\x84\xda\x24\xb8\x70\x58\xaa\x74\x24\x66\x85\x44\x47\x6c\x18\x00\xe7\xcb\x53\xf7\x46\xe8\x57\xfe\x41\xca\x69\xc3\x99\x0b\xf8\xb8\xb9\x11\x3a\xda\xb3\x27\xc6\xba\x37\xb2\x41\xdb\x6d\xe3\x94\x73\xb5\x85\xb4\x06\xcc\x37\x8f\xd2\x0f\x4d\xbe\x06\x7c\xbe\x4d\x3f\xf5\xd5\x51\x4b\x61\x53\x07\xee\xb6\xea\x3d\x42\x74\x4f\xcc\x85\x15\x45\x25\xe6\x14\x38\x6f\xfb\x9a\x23\x81\xd2\xf5\x1b\x85\xd0\x9b\x48\x04\xfa\xce\x66\xcd\xfd\x93\x7f\xfb\x16\xbc\xb9\x7b\x60\x17\x4f\x29\x3d\x17\xde\x9c\x93\xd3\x2e\x06\x7e\xa6\x65\x9c\xce\xdc\x94\x76\x59\x2a\x8d\x5f\x6c\x75\x76\xf1\xf3\x6c\x83\xd4\x31\xdc\xea\x21\xf6\xa9\x69\xcf\xa8\xf2\x9f\x53\x58\xf0\x38\xc8\x6f\xbc\x41\x6a\x4b\x0c\x5e\xca\x2a\xff\x96\x6a\xea\x40\xdb\x0c\xda\x12\xdf\xd5\x61\xa7\xaa\x8d\x52\x6d\xe0\xe4\x70\xdf\xaa\xe6\xa6\x6d\x30\xa6\xfe\xb9\xb0\x4e\xe3\x59\x3a\x34\xb5\x5a\x56\x5a\x4b\xd5\xf1\xed\xed\x2a\xee\x23\x4c\x58\xf0\xfd\xde\xf1\xd1\x7e\x2b\xc4\xcb\xed\xf9\xd9\xb2\x78\x7f\xf5\x4b\x1a\x9b\xb1\xf6\x23\xdc\x09\xef\xe0\xbd\x07\x89\xb3\x96\xb9\x10\x50\x13\xf2\x07\xc3\xb3\x34\xc3\x6a\x8b\x42\x4a\xf6\x86\xae\x64\x1e\xaa\xf0\x25\x95\x95\x2a\x90\x53\x07\x28\xc6\xee\x1e\x1c\x0f\x3a\xf3\x0f\x7c\xc9\xf0\x53\x1b\x78\xf7\x0a\x5d\xf1\x67\x1c\xe2\x80\x4e\xfe\x16\x04\x90\x64\x30\x1b\xcd\x97\x4d\x23\x08\x4a\x81\x5b\x14\x8b\xc7\x14\x83\x9b\xc8\x52\x76\xc5\x29\xc6\x00\x51\x54\xb8\xca\xe0\xa9\x4e\x4c\x2b\x15\x1d\x26\x01\xe0\xed\x05\xcc\x95\x81\x54\xd4\x61\x86\xe1\x3d\x36\x73\xe7\x60\xee\x28\x29\x32\xab\x11\x1b\xd5\x86\x22\x74\xae\x65\x7e\x4b\x11\x3a\x1a\xb2\x02\xfd\xe0\x91\x99\x52\x48\x4e\x29\x26\x59\x61\x65\xd6\x83\x4f\x59\xdd\xf1\x73\x23\xd5\xd1\x92\x01\xef\x74\x89\xc5\x46\x53\x7d\xb3\x7b\x72\x76\xb0\x7b\x58\xc5\xea\x35\xfe\xb1\x51\x12\x5f\xa6\x16\x14\xb0\x73\x6b\x6a\xda\x23\x16\x81\xdf\x64\xef\xc7\xef\xdf\x1e\x72\xc3\xc0\x9f\x4e\x7f\x3e\x7a\xc9\xbf\xec\x58\x6b\xf3\x1d\x0a\x37\x22\x94\x53\xc6\xbf\x5d\x09\xe5\xc0\xc2\x23\x2a\x12\xe3\x59\x92\x08\x76\x02\x21\x04\x21\x6b\xc1\x0c\xba\xf3\x30\xbb\x4c\xe3\x5f\xe4\xc8\xe8\x0a\x08\x4c\x16\x91\xfe\x13\x25\xe8\x22\x2e\x73\x71\x71\x2b\xe2\x94\xd1\x03\x6f\xd3\x61\xb3\x15\xce\x00\x5a\x41\xa3\xd5\x63\x0c\x64\x0b\x0c\xa0\xf1\x09\xfb\xaf\x87\xc9\x4e\x2e\x65\x29\xae\x62\x18\xfd\xad\x70\x92\x06\x2e\x0c\xdb\x67\x77\x6e\x2e\x48\xb3\x10\x21\xf0\x3a\xfb\x5d\x00\x8b\xc5\x7e\xed\xa2\xd7\xa9\xbf\xaa\x92\xa9\xfe\xff\x1c\x11\xff\xd3\xd8\x56\x88\x5d\xd9\xbb\x30\xc8\xb1\x82\xbc\xea\xce\xd1\x7d\x4c\x56\x88\x32\x9f\x74\x76\x4c\x9f\x76\x80\x08\x1f\x5d\xcc\x2e\x07\x8f\xd8\xc9\x2d\xd0\xf1\xe7\x7c\x79\x55\x5e\xe5\xd9\x0d\x1e\xcb\xfb\x20\x3e\x36\x55\x3d\xed\x25\x1c\x94\x4f\x9c\xde\x59\x9a\x18\x79\xec\x73\xd3\x15\x77\xe6\xa3\xbd\x2d\x2d\x10\x18\x5f\x98\x32\x8f\x10\x69\xc0\x12\x46\x1c\x47\x17\x1c\xf4\x22\x2a\xd2\x03\xd4\xa3\x39\x45\x2b\x17\xfb\x73\xca\x56\x6e\xf4\x2b\xdd\xd4\x11\x14\xf7\x34\xa9\xcb\x2d\xd4\x59\xbb\xf4\x02\xfd\xb5\x8b\x7b\x5d\xbe\x63\x37\xed\x86\x30\x13\xbd\xc8\xad\xdf\x82\x37\x7e\xb8\xda\x35\x3b\x8a\x4e\x5e\x47\x03\x03\xf6\x41\xa7\x2c\x07\x66\xa2\x1e\x83\x9c\x11\x95\x11\x75\xca\xa2\x3e\xd6\xa0\x63\x33\xb3\xb0\xd6\x73\x59\x94\x9e\xf0\x48\xb4\x44\xb9\x7f\xaa\x01\x24\xca\x3b\xfa\xa6\x42\x8d\x94\xee\x2b\x1d\xca\x6f\xa8\x31\xe5\x3c\xe7\xea\xa2\xe8\x56\x76\xfc\xca\xf1\x27\x3b\xda\x0b\x3a\x27\xee\xa7\x23\x3f\x62\x07\x65\x2d\xd7\x8d\xae\xb7\xb4\x6d\x4c\x98\x9e\xaf\x9f\xf3\xce\x93\xc0\xeb\x3c\xf6\x94\x38\x67\x45\x3d\xa8\xcf\x2a\x7e\xa6\x45\x62\x2b\xf4\x85\x75\x13\xeb\xa5\x75\xb1\x1a\x78\x6b\x6e\x78\x02\x2f\x1d\x03\x6e\xe0\xbd\xb1\xd9\x04\x5e\x1a\x9b\x42\xe0\xa5\x2d\xa4\x36\x84\xf8\xb4\x20\x27\x25\xef\x93\x73\xba\xb5\xd4\x46\x23\xb2\x3a\xe1\x3a\x4e\xee\xed\x9e\xed\xda\x6e\x93\x2a\x6e\xe4\x73\xc2\xf4\xba\x20\xbd\x05\x07\x98\x9a\xb8\x6a\x0b\x11\x11\x1d\x8c\xe1\x3d\x83\x8f\xdf\x96\x88\x0c\x5e\x50\x68\x3b\xc5\x04\xc3\x56\x9b\xe6\xd9\x68\x36\x24\x9b\x84\x89\xf6\x95\x23\x16\xef\xba\xc1\x14\x11\xa7\xb2\xdc\xd3\x9f\xe2\x19\x30\xdf\x36\x64\x0d\xcf\x0e\x15\x32\x91\x29\xd0\x55\x60\xb6\x26\x5e\x4d\x6d\x83\xbc\x2d\xd2\x2d\x2b\xc4\x45\xfd\x1b\x79\x83\xfa\x01\xe7\xa5\xfa\x37\x6a\xb5\xea\x47\x39\x99\x42\xbf\xbe\xec\x3e\xaa\x04\xb2\x31\x23\x51\x81\x68\x2a\x2c\x43\x1f\x5c\x98\x5e\x5e\xff\xec\x57\xf4\x4f\xdb\xc9\xd3\xd5\x66\x17\xeb\x11\x61\x9b\xa6\x62\x56\xc0\x32\xda\xc1\x3a\x45\x1b\x57\x74\x56\x4a\xb1\x0b\x1c\xb9\xb3\x3a\x60\xe4\x51\xb4\x0b\x8c\x6c\x82\xd1\x7c\xd2\xf4\xd4\x4a\xd4\xa1\x1c\x32\x58\xc0\x20\xc3\xb0\xa9\xdd\xb6\x96\x5a\xc5\xd5\x79\x56\x47\xbb\x85\xee\xdc\x06\x94\x29\xf2\xce\x89\x21\x51\x80\x72\x24\x3f\xd1\xb0\x60\xbc\x7a\x60\x71\x8a\x50\xa3\x56\xf0\x76\x6f\x09\x06\x64\x8d\x91\x82\xa3\xc7\x24\x88\x22\xe8\x28\xb9\xf4\xe6\x72\x9a\x44\x43\xf6\xc7\xb5\x85\x59\x98\x0f\x8b\x88\x77\x4c\xbc\x89\x6d\x53\xd6\x33\x86\x27\x8b\x2b\x22\xab\x14\xe4\x24\xdf\x67\xe5\x95\xcc\x6f\xe2\xc2\xce\xd0\x54\x8f\x7c\xbd\xb8\x18\x3d\x4f\x38\xae\x15\x8b\xab\x02\xb1\xce\xfa\xaf\x94\xd6\x32\x8a\x75\x86\xaf\x5e\xcf\x9e\x4a\x67\x3f\x17\x49\x3c\x94\xf6\x44\x75\x84\x15\x77\x02\x95\x79\x67\xd6\x87\xbc\x70\x39\x7a\x83\xa1\xec\xa7\xb2\x6c\x72\xb5\x3a\x4a\xb1\xbe\xd3\xb6\xfe\xa5\x66\xc4\xe9\xae\xe6\x0d\xea\xcd\xa1\x41\xad\x56\x40\xe4\x3a\x44\x8a\x27\xc6\x6a\x00\x01\x6c\x39\xd2\x05\x71\x60\xa2\x82\x01\x10\x91\x35\x29\xa6\xa0\x8c\x53\x5b\x08\xf7\xfe\xb1\x54\xcf\xe1\xdf\xfc\x98\xec\x70\xfc\x5c\xb3\x2f\xcf\x70\x68\xf5\x50\xbf\xe5\x36\x9c\x80\x5b\xd5\x98\xe9\x29\xbc\xaa\x66\xc1\xd1\x3e\x49\xe1\xfc\x88\x3a\xac\xb6\xcc\x03\x09\xd3\x53\x37\x3b\x9d\xe8\x88\xa6\x1b\xe3\xc4\x93\x9a\xd9\x56\xf5\xb7\x6f\xf6\x76\xcf\xf6\x99\xa6\x31\x00\x07\x11\x40\x9d\x8c\x34\x65\x6e\x87\x4b\x75\xfa\xef\x0d\xef\xf8\x84\xac\xf3\x6e\x6b\xe1\x74\xf3\xba\x6d\xca\x2f\x5f\xe6\xf7\x25\x96\xd7\x15\x2a\x59\xe5\xcb\x5c\x6f\xa4\x32\xd7\x39\xc9\x4c\xfe\xf8\x54\xe7\xba\xb1\x76\xa5\xae\xe5\xe2\x4e\x06\x32\xc4\x57\xd7\xf0\xae\x51\x4d\x23\xe7\xa4\x0c\xf4\x77\xba\xbb\x8e\x4e\x5a\x64\xaf\x5e\x00\xea\xfd\xf3\x41\xbb\xbb\xb4\xab\x0e\x6f\x87\x7c\x6b\xb7\x81\x3e\xf7\x2b\xb1\x84\x95\x00\x5d\xf9\x71\x9a\xe5\x65\xd1\xb5\xa2\x7b\x4c\x64\x33\xfc\xda\x0a\x15\x19\xb8\x65\x06\x95\x42\x18\x69\xe4\x85\x48\x87\x0b\xbd\x92\x72\x1a\x88\xa5\xae\x14\xd6\xf1\xcf\xa6\xb0\x7e\x54\x29\x6c\xca\x54\x5e\xed\x63\xa2\x50\xf3\x23\xf4\xa1\x3d\x87\x63\x07\x1e\x07\x26\x65\x9c\x89\x6d\xf1\x78\x1a\x7d\xc8\xb4\x96\xd5\x44\x71\xf2\x28\x1b\xc9\x61\x04\xd2\xc3\xff\xc8\x61\xd9\x7a\xbc\x85\xd2\xed\x51\x86\x90\x9e\x14\xc7\x27\x47\x7e\x7b\x2f\x30\x17\x8d\xfe\x38\xfe\xac\x7c\xf4\x65\x36\xb5\x3a\x08\xbf\x2a\x45\xde\x44\x79\x34\x29\x4c\x21\xfa\x5d\x2d\xa6\x31\x05\xdc\x07\xd5\x82\x79\x3c\xb1\x66\x17\x7f\x56\x0a\x9d\xcd\x52\xab\x0c\xfc\xda\x6a\x80\x6c\x71\xd7\xfe\xf5\x51\xb7\xdb\xc3\xd3\xaa\x37\xcc\x26\x93\x2c\x7d\xb4\xb9\xba\xd6\x7e\xd4\xed\xb1\x9c\xf3\x68\x73\x75\x1d\x7e\xe2\x3d\xeb\xa3\xcd\xd5\x27\xf0\x63\x22\x8b\x22\xba\x94\xc5\xa3\xcd\xb5\x01\xfc\x46\xf3\xe1\xa3\xcd\xb5\xd5\xbb\xf7\xed\xd5\x67\x9b\xef\x94\x9c\xdd\xcc\xe5\x3f\x67\x71\x2e\xdb\x88\x49\x2d\xdb\xdc\xab\xd6\xaf\x8d\xc7\x70\x32\x13\x46\x29\x4e\x7f\x4f\x34\x5f\xb6\x44\xff\xd9\xb3\xf5\xce\x60\xa5\xbf\x2a\xfe\x2c\xa3\xb4\x93\x64\xb3\xa9\xf8\x21\x8a\x93\xe4\x16\xcf\xaa\xd7\x51\xfe\x81\xe4\x24\x55\x61\xb0\xd2\x5f\x83\x0a\x4f\xc4\x5f\xe2\x32\x4a\x6e\xc5\x9b\xd9\x2f\x79\x9c\x62\xe9\xdd\x74\x94\xcb\x5b\x71\x36\x9b\xc6\x65\x11\xa7\x8d\x5e\xaf\x81\x38\xa5\x78\x3d\x37\x2e\x6f\x22\xba\xaa\xd3\x32\xe4\xe3\xa8\xe8\xc4\xc5\xe3\xb6\x56\x29\x40\x91\x90\x1f\x29\x74\x3c\xcb\x39\x79\xc2\x08\x1a\xb9\x81\x83\x3d\x2d\x6f\xbb\xe2\x20\x15\x69\x86\x40\x4e\x9c\xcc\x0e\x35\xfd\x59\x79\x95\xe5\x85\xb8\x90\xe2\x4a\x26\x23\x91\xc4\xc8\x47\x08\xfe\xee\x56\x8c\xa2\x09\x4c\x1e\x34\x14\xe5\x31\x0a\xbb\x5a\xcb\x81\x69\x61\x14\x71\xdd\xcb\x2e\x77\xfd\x8d\xcc\x27\xb1\x06\x9e\xba\x84\x1e\x30\xd0\x7b\x7a\xcb\xe9\xaa\x49\xde\xb1\x47\xa8\x3e\x3a\x9d\xe5\xd3\xac\x90\x6d\x68\x28\x4e\x87\xc9\x0c\xa9\x0b\x7d\x3e\x72\xb4\xc0\x5a\xe6\x09\xc4\xe5\xa1\x96\x93\x52\xe6\x22\x2e\xf1\x77\x2e\x47\x31\x2c\xd9\x05\xc8\xe1\x71\x09\x2d\x8d\x73\x29\x93\xdb\xb6\x28\x66\x17\xb0\x95\x34\xd8\x3d\x42\x31\xc1\x07\x72\x49\x8b\x0c\xad\x6e\xf2\x38\xfa\x94\x54\x2a\xcb\xe3\xcb\x38\xad\x8c\xd6\xdc\xfa\x5d\x48\x31\x89\x8b\x5c\xa2\xc7\x37\x8c\x75\x4b\xdc\x66\x33\xfd\x1e\x9a\x12\x62\x98\x44\xf1\x84\x2c\xfb\xf0\xf2\x26\xcf\xd8\xea\x41\xcd\x47\x89\x99\x46\x71\x30\xc6\x32\x95\x49\xa2\x96\x30\x47\x21\xa9\x91\x25\x02\x13\x45\xc3\x0f\x69\x76\x93\xc8\xd1\x25\x86\xed\xa8\x1c\x12\x54\x42\x8c\xb2\xe1\x0c\x9e\xb3\x41\x87\xe1\x8a\xa8\xa9\x68\x3a\xcd\xe5\x30\xc6\xdb\xdb\x0b\xb2\x03\xc1\x80\x78\x37\x8c\x60\x41\xc5\xa0\x2b\x76\x61\x76\xe5\x48\x14\xd9\x2c\x1f\x4a\x71\x2d\x73\x58\xdc\x42\x03\x86\x4f\x93\x28\x4e\x11\x72\x2b\xff\xc0\x68\xf6\xb3\xe1\x15\x2d\x8e\x35\x4b\xf4\x4d\x77\xaa\xa0\xf0\x85\xc4\x0b\xe8\xe0\x5c\x40\x9d\x55\xbe\x2c\x49\xb3\x32\x1e\x4a\x0d\xec\x85\x06\x7b\xc2\xe4\x06\xda\xe1\x3e\x22\x85\x02\x21\x71\x67\x35\x29\x20\x2e\x2e\x34\x77\x2a\xa5\x20\xc3\xc3\x48\x8e\x19\xa1\x8d\x8d\xf9\xdd\xff\x29\x30\xa3\xd5\x8b\xdd\x3d\xb1\x2d\x56\x6d\x48\xa4\xcb\xac\x14\x11\x61\x82\xd1\x65\x7f\xa7\x03\x9f\x8f\xe2\x14\xef\x7b\x38\xc8\x9f\x7c\xfe\x97\x7a\xd8\xca\xd9\xcf\x6f\xf6\xc5\xb6\xe8\x0f\x0c\xf6\x55\xbc\x29\x6e\x22\x82\xc4\x43\x80\xba\xdb\xa9\x44\x0c\xa1\xb6\x45\xeb\x49\x54\x94\x9d\x71\x12\x5d\x22\xa8\x13\x70\xbf\xde\x12\x48\x28\x7b\x12\xe1\xc3\x18\x83\xaf\x2d\x54\xaa\x30\x98\x65\x0d\xbd\xc9\x98\x96\xe9\x48\x05\xb1\xce\x4a\x65\x9e\x9b\x25\x0a\xe1\xcb\xc6\x86\x65\x8c\x3f\xf4\xc4\xa3\x31\xc8\x18\x94\x26\x9c\x62\xce\xdc\x4e\x52\x43\x96\xab\x2b\x28\x02\x9c\xd6\x82\x07\xa1\x63\xa5\xa3\x4e\x36\xee\xd0\x85\x0a\x66\x68\x60\xd0\x3e\x39\xc2\xa4\x1f\xce\xdc\xb9\xef\xd1\x6c\xf8\x13\x68\xd4\x08\x16\xe9\x7e\x15\xfa\xe8\xdc\x7c\x31\x9a\xd0\x6c\x8a\x5c\x8e\x40\xa4\x28\xf8\xb7\xd5\x56\xe0\x6c\x0c\xcb\xd6\x16\x11\xc6\xbc\xdb\x19\x18\xc8\xc5\x41\x6c\xac\xbd\xf2\x2f\xd4\xf0\xd2\x1e\x41\xf0\x9e\xad\xff\x89\xa3\x38\x1a\xb8\xdf\xe8\x4c\x96\x1f\xd1\x0b\x22\x4b\x09\x7c\x19\xf6\xe5\x54\xef\xb7\xb8\x50\xa0\x44\x5d\x14\x61\xf7\xd3\x32\xbf\x15\x51\x51\xcc\x26\x53\x66\x2a\x96\x73\x10\x90\xda\x04\x16\x13\x94\xd8\xc3\xfd\x23\xeb\x95\x2d\x8e\xed\x6c\x8b\x8d\xd0\x2b\xbc\x69\xd8\x16\x83\xf5\xa7\x76\x9b\x39\x3e\x74\x8b\x79\xdf\xbc\x60\x3c\x0d\xec\xcb\x71\xca\x32\x5d\xdb\xee\x51\x4c\x89\xf3\xb3\xb1\xd5\xe1\xc3\xfd\x23\x24\xf7\x28\x45\x7a\xca\xc6\x6a\x89\x6c\x1f\x1c\x58\x64\x7e\x6c\x44\x52\x0d\xb6\x88\x7f\xb8\x21\x70\xdf\x44\x88\x60\xce\x3e\x82\x44\x33\x04\xdc\xa6\xd7\x92\x16\xb6\x94\xf9\x34\x97\x7c\x63\x83\xe5\x74\x63\xb0\x47\x3b\x1d\x45\x50\x29\xb7\x02\x44\x86\x1d\x3f\xca\x4a\xa9\x26\xbd\x83\x7c\x7c\x12\x7d\x8c\x27\xb3\x89\xa2\x06\x98\x0a\x85\xd8\xac\x12\x84\xf4\xf4\x3e\x9a\x46\x31\x92\x69\x7f\x9d\x4a\x32\x9c\x24\x7f\x9d\xa5\x72\xea\xb2\x5b\x42\xbd\xe3\xa4\x37\x5e\x7d\x77\xa3\x2a\x9f\x22\x20\xc9\xfe\x6a\x4d\x41\x0a\x2d\x60\x30\x2b\xbc\x4e\x28\xc4\xda\x53\xe6\x1a\xe8\x74\xf4\x91\xf3\xae\x70\x6b\xe8\xc6\x34\x46\x0f\x94\x71\x80\xa0\xd0\xc8\x9f\x1a\x17\x20\x67\xb7\x29\x3c\x2e\x6e\x0a\xe1\xb8\x14\xb3\xf2\x56\x95\x15\xaf\x91\x24\xf8\xee\x6e\x68\xaa\xd9\xc1\x17\x53\x49\x08\x10\x20\x12\x19\x9e\xe9\x21\x91\x16\x31\x17\x8b\xb0\x39\xef\x0b\x67\xb4\x28\x18\x38\x9d\x1a\x57\x60\xc1\xd0\x3a\xc3\x86\xc2\xa4\x8e\xba\x7a\xcb\x62\x3e\xbd\x66\x4b\x7b\x20\xe0\xa9\x56\x84\x77\x12\x0e\x11\x11\x5a\x93\x2c\x9b\x1a\x60\x32\x7b\x0a\xb8\x21\x9b\xea\xc9\x5e\x4b\x62\x63\x97\xc5\x46\xce\x8f\x88\xac\xc2\xe9\x09\x43\x63\xc0\x56\x75\xaf\x22\xa4\x32\xa8\x9e\xc7\xa9\x0f\xa7\xab\x8e\x8e\x24\x1b\xc2\xc1\x68\xb4\x38\x54\xdc\x31\x9e\x30\x2a\xca\x50\x2d\x4c\x24\x72\xed\xf1\x53\x5a\xb5\x38\x15\xcf\x09\xad\x4e\xb7\x02\x73\x51\xd3\x8a\xf5\x69\x1e\xbb\xae\x75\x21\x2f\xeb\x3a\xac\xb7\xf2\xe3\x42\x61\xc5\x85\xdb\x90\xe9\xa8\xae\x0d\xea\x2d\x5e\x9a\x42\xb1\xb6\x1a\x0b\x71\x1c\x43\x91\x4b\x3d\x13\x9f\x76\x70\x84\x01\x99\xe7\xa7\x67\x27\x07\x2f\xcf\x94\x65\x7c\x12\x7d\xac\x19\x9d\xa2\x27\x4d\x91\x28\x11\xa0\x59\xd7\x60\x05\x68\x4f\x4a\x36\x95\xa3\xfd\x2a\xdc\x65\x2b\x5f\x54\x96\x33\xde\xdd\x98\xf1\x8a\x4d\x86\x1f\x33\xfc\x1b\x58\xa4\x70\x5b\x76\x1a\x0c\x17\x9a\xd6\xd4\x46\xfd\x7e\x5e\x4f\x48\x10\x20\x8f\x6b\x85\xdd\xfe\xb6\x90\xe2\x1f\x05\x9b\x3b\xfe\xa1\x5d\xee\xfe\xc1\x0f\xda\xda\xea\x9b\x8e\x93\x78\x58\x2a\xe8\xf5\xa2\xcc\x2d\x59\x12\xa1\x04\x15\x15\x73\x5b\x01\x30\xe8\x28\x01\xfa\x41\xa0\x46\x27\xc7\x51\x1b\xa6\x05\x27\x52\x7c\xb3\x2d\x56\xcc\x90\xae\xb2\x24\x48\x10\x2e\x25\x42\x29\x8b\x0e\xe3\xb2\xb8\xbf\x0e\x72\x58\xb3\x6f\x80\x5d\x84\xa7\xce\xaa\x93\x80\xa4\x32\x92\xa6\xda\x68\xa1\x6a\x40\x4d\x6e\xbd\x04\x2d\x62\xc1\x7a\x08\x7e\x04\x0c\x88\x7c\x04\x29\xde\x36\x1b\xdb\xe7\x8c\xd5\xef\xd1\xc3\x1b\xf2\xe4\x43\x33\xd5\x32\x0f\x0d\x05\x61\x5a\x65\x99\xc7\x12\xa4\x6b\xca\x5d\x21\x51\xa2\xd1\x35\xb3\x69\x70\xcf\x52\x6e\x88\x91\x92\x6a\xb3\xa9\xcc\x39\x9b\x09\x85\xab\xeb\x63\xcb\xf1\x5d\xa9\x69\x48\x51\xb0\xca\xea\xd3\xd6\xd8\x59\x2a\x70\x64\x98\x4d\xad\x3e\x25\xb2\x96\x7b\xda\xd9\x36\xda\x62\x96\xf2\xc9\x5f\x3a\xf3\x1a\xd7\xf2\x51\xaa\xae\x67\x51\x57\x01\x56\x51\x53\x85\xd2\xdf\xa9\x3e\x52\x03\xc8\x59\x9c\xca\xe7\xa4\xa6\x6c\x35\x1a\xf6\xfd\x5a\x9b\xcf\x98\x2d\x2f\xfa\xa2\xad\xf3\x1c\xa8\xcc\xed\x69\xa6\xb1\x3e\xf9\x06\x06\x3f\x47\xfa\x4d\x99\x31\x45\x5e\x47\x39\xaa\xf6\x3c\x58\x0d\x23\xe6\x5c\xab\xf5\x7a\xd8\xe3\x6d\x96\x06\x91\x34\x1a\x42\x58\x18\x94\xf7\x1a\xd5\xf1\x44\xd9\xc6\x2a\xcb\xbe\xf7\x68\x47\xac\xa3\x55\x95\xc1\x26\x4d\x83\x19\xd5\xe5\x53\x61\xdb\x3e\x23\xe0\x39\x05\xc2\x60\xad\x0e\xde\x99\xe7\xf0\x0f\xf7\x0c\xc7\x86\x25\x9a\xbd\xb0\xe0\x72\xc5\xe7\xa6\x23\x06\xeb\x4f\x5a\x5b\x73\x4e\x89\x11\xc1\xd9\xd3\xe0\xf1\xb8\xb0\x99\xfe\x8d\xc2\xc3\x22\xc4\x43\x75\x7d\x81\xbc\xdb\x3c\x46\x4e\x0e\x8f\xf5\x55\x04\x3e\xd6\x26\xd8\x73\x0d\x44\xc6\x6f\x88\x67\x36\x04\xf2\x3c\x33\xf5\xc0\x00\x61\xe8\x84\xa9\x66\x64\x77\x9c\x63\xdc\x5e\xea\x29\x73\x27\x78\x31\x72\x5e\x28\xfe\x83\x55\x18\x5c\xad\x49\xf8\x6b\xaa\x22\x02\xe1\x2a\x73\xf2\x28\x50\x06\xda\xb0\x0a\x31\x81\x8d\x1c\x3d\xb4\xb0\x32\x8c\x68\xa1\x4e\xab\x92\xb6\x52\x98\xd9\x3a\x25\x6d\x7e\x0b\x68\xdb\x68\x97\x74\xb6\x33\x80\x72\x36\xdd\x6c\x58\x37\x1d\xe8\xb6\x48\x4a\x8c\xc1\x32\xe4\xd9\x5b\x66\xb3\xf6\xbb\xf3\x38\x5d\x5e\x7e\x0f\xc3\x50\x73\x06\x7f\x04\x16\xb7\x6d\xa0\x18\x3e\xa1\x12\xfb\xd2\xf3\x3e\xc1\x95\x78\x87\xcd\x7c\x4b\x73\xac\xee\x2f\x46\x59\x22\x53\xf2\x2a\x06\x66\xdc\xdc\xda\x52\xa8\x41\x59\x99\x09\x39\x99\x51\x8a\x27\x25\x4f\x4e\x11\x07\x33\x97\xe8\xe7\x33\x58\xeb\x2d\xc1\x0f\x5c\xf0\xa5\x9e\xd3\xdb\x9d\x9d\x9d\x6d\xe0\xbc\x76\xef\x3a\xf6\x13\x6c\xaa\xa9\xdb\x32\x0e\x4a\xdc\x66\x36\x35\x2d\xc2\x5c\x66\xe1\x7b\xd4\x0a\x33\x53\x16\x03\x8b\x6b\xf7\x7a\x67\x79\x34\x94\xd7\xd7\xcd\x66\x51\x8e\x64\x9e\xb7\x71\x0c\xdd\xeb\x28\x01\x91\x7a\xe5\xe3\x00\x3d\xf1\xf5\xb3\xe7\x62\xe5\xe3\x93\xb1\x85\x89\xd2\xd3\xee\x8d\x8f\x58\x54\xdc\xd4\x9f\x54\xdf\x7b\xfc\xa7\xe1\xe3\xbf\xa7\x8f\x2c\x0f\xed\x45\x6a\xad\x7c\xfc\xd3\xca\xe0\xe3\xdf\xd3\x47\xa6\x4b\x36\xdc\x0a\xd1\xd9\x3b\xe0\x0b\xb0\xe4\x3c\xf7\xca\x79\x8a\x67\xea\x3a\x4a\xcc\x54\x55\x9c\x58\xb3\xa9\xf8\x16\x67\x37\x3c\x6d\x26\xe7\xdb\x45\x54\x38\xae\x85\x04\xdb\x7d\xef\x07\x71\x25\xbf\xdd\x16\xfd\xf5\xf0\x29\xab\x3f\x63\xa1\x98\xeb\xf3\xd5\xf7\x40\xcd\xa6\xd5\x40\x48\xde\x44\xfe\xab\xc5\x76\x05\xfd\x55\x36\x94\xf0\x22\x1c\x61\xac\xcb\xdb\x82\x37\x48\x93\x38\x0b\x7c\xd1\x5c\x61\x5a\xdf\xf4\x68\x5b\x04\xe9\xdb\x0d\x4c\xac\x10\x60\x80\x24\x68\x19\xfe\x34\x43\x6a\x48\x64\xda\xf2\xe0\x74\x02\xdc\xe4\x21\xd3\x10\x9c\x84\xdf\x51\xd9\x0c\x8f\x99\xcc\xc8\x66\x32\x23\x9b\xc9\x08\x64\x34\xc0\x72\xcd\xee\x70\xb9\xcd\x65\x88\xdb\x88\x45\x39\xce\x43\x57\x66\x51\xee\xe3\x51\xe2\x3d\x5b\xc9\xc9\x3f\xe5\xef\x26\x9c\x82\x18\x65\x8e\x05\xb6\x94\x58\x60\x5b\x2d\xb0\xa5\xc4\x7d\x5b\xe8\x21\x9b\xa8\x86\x82\x16\xf8\xc6\xc3\xbe\x32\xe7\x3b\x77\x8d\xfa\x5f\x38\xb9\x73\xf6\x70\xbd\x38\xe5\x8e\x03\xdb\xd9\x41\x19\xab\x3a\x12\x14\xd5\x26\x05\x88\x79\x8f\xe3\x94\x74\x5e\x93\x4b\x2a\xcb\xc4\x38\xa2\xdc\xe2\x8f\xfd\xae\xdb\x96\x54\xf1\x62\x77\xaf\x32\xb7\xb9\x8c\x3e\x80\x10\xb1\xe5\x8d\xd1\x92\xec\xbc\xf9\x0c\x10\x7b\x1d\xb9\x2f\xc8\x82\xf4\x50\x98\x09\xc1\xef\x56\xab\x42\x96\x5a\xc6\x0d\x99\x54\xc8\x4c\x61\x9a\x8a\xb5\xb9\x2c\x40\x98\x3c\xd9\x48\x34\x81\x86\x0a\x29\x29\x3f\xcc\x94\xbd\x16\x6d\x93\x42\xa5\x53\xd8\x58\x27\xa0\xee\xb9\xfb\x72\xf8\xc1\xcd\xd0\xe9\x96\xe5\x7d\xbe\x43\xf2\x72\x88\x96\x95\x3f\xac\xec\x16\x51\x1a\x2c\xf1\x7b\xe8\x44\x2c\x40\x2b\xa2\x9e\x5e\x84\x60\x04\x24\xd1\xfc\xa6\x45\x86\x58\x7d\xcf\x31\x8a\x0b\xd0\xac\x30\x17\x28\xda\x8c\x18\x54\xb7\xc0\x1b\x4c\x8a\x1b\x92\x29\x99\x4d\x4b\x4e\x74\x86\xee\x01\xc3\x6c\x32\x8d\xca\xf8\x22\x4e\xe2\xf2\xb6\xba\x91\x76\x0f\x0f\x8f\x7f\x3a\x3f\x38\xfa\xcb\xee\xe1\xc1\xde\xf9\xde\xc1\xe9\xd9\xee\xd1\xcb\xfd\xf3\xb3\xe3\xe3\xef\x77\x4f\xce\x77\x4f\x4e\x4e\x1a\xbd\x5e\x68\x16\xe1\xd4\x7d\x0e\xa4\x2a\x3a\x66\xba\xab\x45\x59\xa8\x0e\xbd\x08\x48\x48\x2b\x5b\xc1\x92\x96\xf7\x0d\x1c\xad\xe1\x42\x26\xd4\x10\xe6\xb5\x5a\xe2\x2e\xf0\x0c\x06\xd1\xb1\x07\x11\xaa\x58\x3b\x80\xc5\xba\x6f\x75\xde\xa2\xcd\x50\x49\x4f\x52\x0e\x7e\x13\x77\x92\xde\xc3\x68\x4a\xf8\xdd\xb3\xce\x0f\xa0\xe9\xe5\xe5\xf7\x5f\x78\x09\x02\x0c\xd1\x3f\x0d\xf4\x28\x31\xa2\xdd\xc9\xe6\x1d\x28\xc7\xa6\x0d\xd0\x48\xcf\x8d\xa2\x6b\xff\xa1\x2f\x27\xa9\xca\x55\x25\xa4\xb7\x44\xc1\x6f\xe4\xed\x61\x41\xc0\x06\x7a\xb4\xbc\xcd\x0a\x7a\xa7\xc2\xa2\x85\x59\xbf\xe7\x28\xff\x59\x1f\x01\x66\x98\x4d\xe4\x7c\x2e\x28\x6c\x72\x0c\x31\x0d\x07\x96\xc4\xfe\xab\xac\xa7\x9a\x07\xb3\xa2\xd5\x4a\x0e\x55\xb6\x42\x25\x02\x94\xc6\x06\xbb\x82\x71\xae\xc3\x47\x83\xa9\x6d\x56\xc6\x98\x59\xbc\x5e\xdc\x43\x07\x26\xbd\x00\x2e\xdf\x73\xfb\xb0\xc1\x98\x0e\x4c\xc2\x87\x9e\x48\xf5\xf3\xea\x2e\xdd\x32\x5b\x4d\xc2\x4b\x08\x9c\x60\x5b\x68\x4b\x8a\xfb\xb7\xd0\xfa\xba\x09\x88\xfe\x6d\x96\x79\x25\xf4\xce\x9e\x79\x35\x66\x67\xb0\x1a\x62\x67\xde\x70\xf9\x84\xaf\x99\xd4\x7b\x27\x64\xce\x94\x7c\xe2\xa4\x2c\x32\x2d\x35\xf4\x2f\xc4\x03\xf6\xc0\xa2\xbb\xa0\x4a\xf7\x0b\xee\x8c\x7a\x55\x06\x39\xf1\xe5\x2c\x9b\x15\xf3\xe4\x25\x6b\x6f\xcc\xd9\x13\x5f\xd9\x9a\x5b\xfb\xf7\xb3\x35\xee\x23\xcc\xcb\x8e\x8b\xaf\x5a\x3b\x78\xeb\xc3\xf5\xe3\xff\x57\xd6\xe2\x45\x5d\x9d\xaf\xe6\x69\x59\xf1\xf3\x0d\x52\x09\x9f\x3b\x26\x90\xe5\x73\x34\x3b\x7f\xcd\xdc\x5f\x15\xa0\x27\x31\x8f\x5f\x08\x61\x2e\x4c\x28\xd9\xfb\x7c\x3a\x83\x1d\x51\x1d\x95\x6e\x67\x12\xa7\xb6\x5f\x02\x7a\x2b\xe8\x44\xc8\xf7\xcc\x84\x2f\xe9\xfd\xeb\x2b\xd4\x92\x8d\xbf\x29\x42\x42\xdc\xa2\x74\x74\x5f\x27\x1e\x4e\x42\xf7\xb5\xb8\x38\xf5\xd8\xff\xd6\xe2\x0d\x59\xa7\x36\xd6\x5a\x01\x09\xb5\xb7\x24\x06\x78\xf5\x71\x2d\x13\xf7\x82\xd5\x5f\x72\xc7\x94\xd7\x74\x2c\x55\x2d\xdb\x54\x25\x96\x45\x33\x6c\x69\x69\x79\x43\xd3\x02\x3d\x19\x00\xeb\x2c\xb0\x81\xfd\x30\x57\x89\x86\x0e\x7a\xca\xf3\x7c\xb5\x39\xa8\x30\xdf\xd9\x26\x3e\xc2\x98\x03\x75\x01\x53\xe0\x68\x83\xa4\x24\xeb\xe4\x75\x1c\x89\x47\x6a\x34\x8f\x2a\x66\xd0\x8a\xe1\x7d\xde\x82\x54\x16\xc5\xba\x3e\xb7\x97\xc4\xb9\xbe\xf9\xdd\xcb\x61\x2d\x45\x22\xd3\xf9\x37\x06\xab\x83\x39\x37\x06\xce\x65\xd9\xfc\x8b\x96\xaa\x91\xc9\x76\xa5\xfb\x7b\xfa\xa8\xe5\x60\x91\x59\x2b\x78\xf6\xf3\x9b\x7d\xf3\xaa\xb2\x7c\x35\x39\x0e\x42\x44\xc3\x97\x2d\x3d\x6b\x92\x1f\xd7\x7c\xd4\x21\x9b\xc0\x37\x1b\x9f\x4a\x2a\x88\xc7\xa0\x18\xd4\xb9\x71\x6a\xfa\xf6\x5b\x62\xf7\xe8\x34\xd4\x52\x39\x40\x38\x82\xc5\xb9\xfc\x6f\x66\x29\x79\x36\xb4\x85\x72\x8e\x6c\x8b\x02\x33\x54\x12\x10\xd8\x65\xe6\x98\x96\x5a\xb4\x32\x74\x8d\x83\x35\x76\x76\x88\x69\xe2\x1d\xf7\xb6\x60\x1a\x50\x16\x43\xb4\xc6\x3c\xa7\x12\x44\x4b\xea\x8a\xd5\xbe\x58\xa5\x18\x40\x02\xc1\xa4\xcb\x79\xf2\x63\xc7\xfe\xf2\x95\xbd\x13\xd4\xc3\xb7\xf0\xce\x25\x3a\x9f\x71\xa1\xa8\x1e\x7b\x6e\xbe\x13\xeb\x40\xd8\xf8\xef\x0e\x34\xd4\x12\x9b\x62\x5d\x74\xa8\x50\x07\x0b\xb5\x5a\x5e\x2b\xd4\x7c\xd3\x4c\xaa\xf8\x4e\x0c\xd6\x9f\x40\x43\xf0\xa3\x83\x5f\x86\x86\xe0\x61\x87\x0b\x76\x70\xf6\xb9\x29\x75\xaf\x2d\xc8\x98\x6c\x1e\xf2\x25\xb7\x32\x5a\xd3\xa0\xb7\x1a\x77\x5b\x18\xf5\x71\xf7\xbe\xbd\xb6\xf2\x35\x50\xe3\x6b\xa0\xc6\xd7\x40\x8d\xff\xae\x40\x8d\xeb\x28\xa7\xe0\x64\x7d\xc4\x6d\xab\xe1\x36\x1f\x7b\xa1\x60\x8f\x5b\x5b\x58\x5e\x65\x60\xa8\x96\x57\x51\x62\xaa\x24\x46\x89\x05\x5b\xa6\x00\x32\x55\xce\x76\xdf\xf5\xca\xc5\xe9\x18\x9e\xfa\x25\x4b\x0e\xc5\x74\x4b\x62\xe0\x19\x14\xc5\xb2\x2f\x8f\xf7\xf6\x4f\xc9\xb6\x03\x3f\x0f\xf7\x8f\x4e\x09\x9c\x17\x7e\xed\x1d\x9c\x9e\x9d\x52\x3e\x8d\x46\x6f\x49\xbc\x99\x5d\x24\xf1\x10\x41\x18\xcb\x28\xa5\x9c\x93\x9f\xf8\xb7\xd4\xfb\xac\xe0\x18\xd8\x20\xf6\x71\x97\x13\xda\x13\x1a\xcc\x75\x94\xcc\x64\xb1\x85\xf7\x4c\x2a\x2f\x5b\x0b\x49\xcc\x38\xf7\x5f\xc8\x84\xb3\x48\x8f\x64\x19\xc1\x2a\xa3\x8f\x2d\x8c\xdf\x82\x81\xe3\xc5\x41\xeb\x3d\xbd\x72\x00\xc8\x68\xce\xd4\x2b\x0b\x31\x0c\x6b\x0d\xcc\x2b\x0b\x5a\x0c\x5f\xad\xd2\x4c\x2b\x50\x25\x43\x06\x6b\xea\x05\x65\x72\x33\x2f\xd6\xd5\x8b\xb3\x93\xfd\xfd\x53\xeb\xc5\xc6\x16\x4d\xc1\x09\x9d\xd5\xe4\x5e\xa9\x7c\xf8\x2d\xa8\x90\xde\x48\xda\xc0\x21\xea\x3c\x2b\xba\xe2\x48\xe5\x4d\xa6\x79\x6b\x70\xca\x70\x8c\x6b\x28\xda\xec\xfb\xa8\x5f\xe3\xbb\x99\xca\x1a\xae\x50\xc9\x80\x25\xa4\x59\x3e\x89\x12\x3a\x39\x0a\x72\x4b\xa7\x2e\x1f\xbf\xb2\x05\x4d\x4d\x75\x0e\xe6\x26\xbe\xe8\xab\x17\x08\x2b\xb8\x77\xf0\xf2\x4c\x54\xa6\x72\xff\xe4\xe4\xe8\xd8\x6a\xac\xd3\xf7\x5b\x43\x90\x2d\x78\x33\x50\x6f\x0c\x52\x0b\xd7\xd1\xf3\xff\x7a\xff\xb5\x79\x01\x6f\xcc\x02\x68\xbc\x2e\x7e\xb3\x6e\xfa\xf0\x97\xfd\x93\xd3\x83\xe3\x23\x7e\xbf\x2d\x3a\x1b\xb4\x55\xe0\x0c\x50\x01\xb4\xf6\x64\x73\x76\x43\x3d\x21\x3a\x63\x8f\xc0\xdb\x70\xac\x8b\x70\x20\xa7\x9f\x65\x73\x7c\x99\x6d\x06\x5d\x17\x42\xfc\xb8\x8f\xa1\x69\x7d\x2b\x32\xcd\x8b\x29\x23\x60\x6e\xe3\xb9\xce\x15\xbf\x3f\xdc\xfd\xe1\xd4\xca\xf8\x1b\xa8\x48\xd3\x04\x1b\x95\x32\xf0\x34\x2f\x7f\x89\xa7\x2d\xab\x8d\xb3\x83\xd7\xfb\xb8\x7d\xea\x3f\x9e\x8d\x30\xcd\xbe\x09\x93\xaa\x34\x72\x7c\x8a\x1b\x4d\xd3\x50\xb5\x11\x72\xbb\xa0\x3e\x60\xf8\x17\x39\x11\xa7\x97\xa2\xb8\x2d\x4a\x39\xa9\xb6\xb9\xff\xd7\xc3\xfd\x23\xdc\xa6\xf3\xdb\x64\x5d\x25\x50\xff\xec\x64\x17\x77\xf3\xfc\xfa\xac\x33\xf8\xd5\x8f\x76\x71\x5e\x9e\xd4\xcf\x0b\xab\x67\x63\x50\x54\x30\x1b\x5b\xa5\x0d\x46\x6a\x42\x92\x9c\xdb\x86\xca\xce\x56\x69\xe1\xc7\x97\x27\x2f\x31\xf3\x70\x6d\x2f\x98\x28\x86\xf9\xb0\x5a\x1b\xb6\xfb\x01\x92\xd6\x4a\xcd\xf7\x2d\x70\x0e\x4a\xd3\x8f\x1c\xc9\x6b\x02\x1a\xe8\x9b\x59\xb4\xeb\x33\xf7\x77\xb1\x8c\x5a\x84\x2e\x66\x1a\x11\x2a\x4e\xec\x33\x04\x4e\x7a\x4d\xee\x1d\x43\xa3\xab\xd6\xf0\x8a\x68\xc2\xd8\xd1\xc5\x87\x78\xca\xc3\x02\xbd\xf3\x63\x5c\xea\xb8\xbf\x2c\xb5\xa0\x73\xdd\x56\x4f\xcf\x8e\x4f\xf6\x71\xd2\xd6\x6a\x26\x8d\x60\x2a\x29\x1a\xa4\xc9\xe4\x07\x34\x4d\x00\xa3\xb0\x90\x2d\xaf\xcd\x97\xc7\x6f\x7e\x3e\x17\xc6\x47\x09\xda\xec\x65\xd4\x57\x10\xc2\xe0\x3d\x9d\x9f\xd4\x73\x44\x4b\x23\x77\x7f\x8a\x4b\x4c\x03\x0d\x0a\x4c\xd5\x2d\x9c\x06\xdd\xb5\x71\x23\x3c\x95\xdb\x3a\x77\x3f\x34\xf6\xb3\xdd\x17\x87\xb8\x4a\x4f\xb6\x6a\x16\x69\x74\x9b\x46\x93\x78\xc8\xb5\x49\x30\xa2\x29\x28\xbc\xb6\x0e\xf7\x8f\x94\x10\xf4\x74\x2b\xd8\x16\xb9\x1c\x5b\xf6\x9c\x70\x43\x20\x59\xa9\x96\x9e\x6d\x85\x1a\x62\x4f\xe5\x84\x55\x10\xd7\x6e\x17\x6e\x94\x7b\x08\x8b\x32\x58\x71\x48\x52\xad\x09\x70\x9f\x87\x2c\x09\xb7\x08\x0d\xce\xe1\xe4\xa6\xab\x3d\x99\x5d\x68\x33\x56\xb5\x9d\xfd\xbf\xc2\xbe\x1b\x0c\x6a\x68\xd0\x8e\x48\xd4\xde\x6c\x5e\x2b\x20\x75\x42\x1b\xab\xb5\x5b\xae\x62\xe1\x0c\xb4\xc0\x1d\x59\x0b\xaf\xa1\x1b\xd2\x58\xd7\x13\x02\x39\xd9\x16\x03\x43\xff\x1e\xb1\x3a\x7e\xe2\x86\x52\x73\x78\x1f\x98\x9f\x03\xec\xd3\x86\x35\xcf\xf7\xb4\x47\x01\x53\x96\xcb\xb3\x62\xd1\x3f\xee\xbf\x7c\x05\x6d\xd5\x52\xfc\xea\xa0\x03\xac\x27\xcc\x1e\x0f\xf7\x8f\x7e\x38\xc3\x91\xd5\x71\x78\xae\x5e\x77\x4a\xed\x1d\x1f\xc1\x86\x1b\x3c\x33\x6b\x34\x8e\xd3\xb8\xb8\x92\x1c\xa6\xd8\x26\x9c\xe1\xfb\x23\xd3\x39\x7c\xf6\xf7\x87\xb8\xc3\x7a\xed\xbf\x86\x86\xfa\x7e\x43\xa9\x25\xee\x4f\xe4\x24\xcb\x6f\x1f\xd2\x2a\x48\xf3\xd0\xac\x75\x04\x24\x59\xa6\x63\x51\x8b\xdb\x74\x78\x95\x67\x69\xfc\x0b\x89\x1a\x3a\x20\x28\x97\x74\xf5\x6d\xbe\x4d\x01\xf4\x9f\x5d\x1e\xc3\x8e\xee\x1f\x1d\xbf\xfd\xe1\xc7\x73\xe6\x38\x4f\xd7\x59\xe4\xe5\xc7\x4a\x93\x5b\x7f\xa6\x05\x68\x7a\x23\xb6\x85\x68\x5a\x75\x97\xed\x0a\x4a\x49\xd4\xe9\xb0\xe9\x2c\x80\x31\xac\x0e\x5e\x89\xc3\xbf\x3d\x79\x62\x5d\xea\xa2\xc6\xb8\xff\xbd\x2e\xa9\x6b\x6d\xd9\xe9\xb1\x7f\x29\x6e\xa2\xe9\xea\xa0\xf9\x4f\x27\x2d\xb7\x68\x36\x9b\xff\x64\x0f\x60\x8d\x4c\xea\xa4\x87\x55\xef\x35\x2c\xea\xca\x4a\xb5\x80\x79\xf3\xfc\xb9\x9f\x5f\xd6\xbc\xc7\xb7\x83\xb5\x96\x9f\xb9\xfb\x80\xa5\x82\x92\x56\x0b\xba\x57\x5e\xc5\x85\x32\x1d\xaf\xb8\x6e\x87\xbd\x25\x0d\x56\xaf\x8e\xe7\x89\xb6\xee\x63\x3d\x0e\x41\x42\x20\x68\xf7\x9e\xaf\xcc\x67\x68\x8a\x9f\xe6\xd9\x10\x34\x03\x96\x18\x84\x65\x70\xc7\x16\x6c\xfc\x3b\xf7\xd3\xb0\x39\x57\xa8\x1d\x20\xc2\x5f\x92\xf8\x02\xcd\xc6\xa2\x6f\x1e\x62\x1e\x71\xd3\xd8\x55\x74\x2d\x47\x04\xc4\x66\x77\xc9\xea\x8e\x25\x56\x69\xcb\xa1\xa9\x6f\x32\x7a\xfa\x9d\xb1\x13\x96\x57\x45\xf7\x15\x68\x1a\x3a\xd8\xb2\x1a\xe3\x10\xa7\xc0\xc8\xec\x68\x57\xc7\xd1\xb4\xe9\x3a\xf6\xda\xad\x11\x97\x0b\x75\x6d\x9a\x67\xa5\x1c\x96\xc0\x96\x80\x35\x83\xd0\xea\x72\x44\x6e\x01\xa3\xd9\x17\x6c\x81\x99\x34\x82\x46\xe8\x30\xd6\xb3\xe3\xbd\xe3\x4d\xb4\x33\x5d\x48\xf1\xeb\x9d\x9e\x74\x02\xd6\x42\x54\x51\xb7\x5d\x1d\x94\x57\x44\xd7\xd2\x99\xc2\x38\x1d\x83\x02\x8d\x34\xa9\xd1\x0c\xdd\x80\x55\x9b\x46\xd8\x6a\x5d\xed\x79\x92\x5d\x92\x9b\x3a\x26\x02\xcd\xe5\x3f\x67\xb2\x80\x71\xd8\x61\xc1\x56\x3b\x1c\x56\x56\x6d\xe7\x41\x61\xc4\xd4\x16\xc7\xa2\x55\xdb\xba\x27\x8c\x98\x6a\x73\xc8\x5a\x6d\x4f\x2a\x61\xc4\x54\x4d\x05\xb4\xb9\x93\x7d\x5f\xd8\x6f\x2a\x25\xd3\x79\x43\xef\xac\x68\x38\x9c\xe1\x7d\x8f\x8a\x0e\xa5\xb5\xa4\x3b\x83\x00\xcd\x6a\x1c\x87\x9a\x9a\xe1\x25\x72\x3d\xfc\xb1\x4c\x9c\x8a\x47\x71\xfa\xc8\xf4\x86\x04\xf7\x9c\x13\xc7\xb8\x42\x30\xd0\x23\x0b\x1a\x8a\xe3\x28\x88\x36\xf7\x4b\x56\xd4\x94\x91\xc1\xb2\x31\x9d\xaf\x4e\xe8\x2a\xb6\x92\x8d\xc7\x84\x7b\x56\x69\xc5\xf5\xb2\xf6\xe4\x1d\x15\x51\x6a\x3a\x4e\x72\x36\xe9\x18\x23\x83\xcf\x60\x7d\x8a\xc4\xaf\xd0\x52\x5b\x82\x99\xbf\x42\xe3\xf8\x23\xa7\x78\x51\x62\x3d\x36\x5f\x5a\x61\xa5\x6a\x36\x38\x0e\xd1\xdb\x7e\x2a\xf1\x1b\x9a\x90\xf5\xf5\x85\x91\x71\x71\xa6\xac\xf0\x64\xe2\x58\x2a\x8a\x3a\x40\x60\x81\xd6\x42\x61\xce\xaa\x57\x21\x72\x40\x2a\x02\x82\xd6\xd0\x1b\x4e\xb4\xb7\xee\x42\xa0\x6e\xb5\xaa\x1d\xf1\xcd\x91\x92\x3c\x53\xd4\xc1\x8b\x59\x9c\x78\x2b\xa1\xa6\xaa\xba\x12\x86\x44\xe7\x69\x3e\xaa\x19\xba\x8e\x9c\x4b\xe9\xf7\xb4\xc0\x51\x34\xf3\x3a\x52\xab\x2a\x59\x47\xdd\x7d\xbd\x70\xaa\xc6\x29\xfc\xb3\x78\xf7\xde\xee\x08\x71\x21\x9f\x75\x73\x3b\xf0\xd2\x80\x3e\x90\xc0\x1e\xb3\xd5\x95\x9a\xb1\x16\xbc\xf0\xc1\x4f\xfb\x1b\xcd\xd5\xc1\x4a\x0b\xb3\x02\x94\x72\x32\xcd\x72\x38\x74\x61\x77\x47\x97\xd2\xd7\x32\xed\x91\xdd\x64\xf9\x87\x40\x63\x83\xa7\x4f\xa9\x31\x7c\x1f\xe5\x32\x32\x8d\x54\x97\x1c\x49\xa2\x81\x99\xfd\x74\x08\xb7\x95\x56\x44\x45\x71\xc3\x78\xfe\xa7\xc0\xf4\x1e\x50\x48\xd1\xa3\xd2\x55\x69\x4f\xa3\xb3\x52\x72\x0b\xad\x45\x85\xc6\x45\x2a\xac\x54\x25\x78\x83\x8e\xf3\xd2\x10\xea\xb8\xa4\x53\x1b\x77\x86\x37\x98\xd5\x01\x8b\xa3\x2d\x4b\x8a\xa7\xe9\x75\x47\xe4\xed\xa9\xd1\x6d\x5a\xbb\x58\x2e\xf1\xd7\xee\xf5\xa6\x15\xde\xde\xf2\xb6\x5d\x5d\xf3\xc1\xd6\xbd\xbd\x5f\xd7\x6e\x11\xa5\x21\x2a\xd5\x7b\x7a\x4c\x72\x5a\x1b\xcf\xaf\x1b\x51\x1b\x67\x62\x9d\x33\x51\x48\x0c\xd2\x2d\x22\x7f\xc0\x32\xb0\x0b\x41\xe0\x9c\xa5\x2c\x82\xca\x91\x6d\x8e\xb0\xe8\x2d\x0a\x1d\x5c\x16\xdf\x21\x30\x15\x73\xa6\x10\xba\xc0\x52\xcf\x01\xbf\x67\x01\x59\xe3\x62\x06\x20\xf0\xa5\x8b\xdc\xed\x81\x75\x07\x13\x49\x20\x12\x36\x41\xa3\x06\x51\x04\xdc\xac\x07\xdb\xf6\x6f\x15\xf8\x1f\x95\xd2\x12\xfd\x1a\xae\x7b\xc9\x63\xd8\x51\x0a\x21\xbc\x61\x07\x06\x81\x5c\x6e\xdc\x67\x7a\x98\x7f\xa0\x98\x4d\xa7\x19\xa8\x7b\x49\xd2\x19\x66\xe9\x50\xc6\xd7\x72\x24\xfe\x1c\x5d\x47\xa2\x94\x45\x29\x8a\x19\x08\x2d\x21\x78\x6c\xd3\xa6\xf8\x96\x22\xe0\xf5\x98\x94\xee\xf1\xe3\x3e\xf9\xad\x70\xc0\x7c\x54\x94\xa6\xc3\xe8\xce\x60\x64\x7b\xeb\x29\x0b\xd9\xab\x83\x27\x1b\x4f\xad\xb2\x46\x24\x35\xc3\xab\x78\x46\xac\x54\xdc\x22\x56\x08\x99\xc1\x09\xf6\xaf\xc4\xf8\xeb\x07\x0e\xec\x00\xee\x03\xab\xff\x5e\x65\xb3\x7d\x83\x9c\x00\x15\x53\xcb\x77\xa3\xf2\x2d\x6b\x83\x86\x1b\xd0\xda\xac\x6a\x82\xb7\x5e\xdf\x1a\x24\x6d\x1d\x4a\x30\xa5\xfc\x9c\x42\x6e\x4e\x68\x1e\xd0\x7e\x4d\x3e\x14\x6d\x90\xe4\xff\x55\xe4\xae\xf1\x20\xdc\xf5\x33\xd2\xb8\x79\xa4\x45\x6c\x33\x86\xf0\x26\xdd\x6a\xd4\x0e\x6b\xc0\x28\x52\x24\x4c\xbf\x40\x27\xa2\x5f\x03\x00\xfe\x66\xbc\xa0\x2b\x4a\x42\x01\xa4\x31\xe8\x7d\xf5\x99\x66\xa1\x61\x64\xc7\x61\x49\xb1\x1f\xac\xf7\xd8\x2e\xe8\xd0\x55\x2b\x13\x97\x81\xbf\x37\x6f\x9f\x9b\x7c\x3e\x5a\x09\xa7\x5f\xa6\xcc\xb6\xe8\x98\x5f\x5b\x56\x1a\x15\xb7\xa2\xdd\xec\xce\x8e\x58\x6b\x89\x65\x05\xf4\x5c\xf9\xe8\xda\x53\xe3\x6c\x6a\xbd\xa0\x38\x61\xe3\x67\xa6\x74\x42\x59\x5a\x02\x8d\x02\xa4\xc1\xab\x88\x71\x2e\xb5\x66\x85\x9a\x3d\x9c\xcb\x52\xe9\xab\xde\x77\xbf\xfd\xd6\xeb\xc6\x53\x58\x09\xbb\xdb\xa2\xbf\xde\x5a\x20\x23\x81\xc3\x23\xe9\xe3\xdf\x6c\x13\xab\xa1\x14\x82\xf8\x02\xf9\x09\x3c\xf7\x09\x47\x38\x58\x24\x3a\x19\x87\x19\x70\xc0\x2f\xad\x90\x1a\x55\x12\xa3\x4c\xd4\xe9\x65\x31\x55\x03\x1c\x6d\x77\xc0\xfe\x7c\xcd\x2e\x50\x3b\x20\xb0\x01\x10\x30\x7a\x0e\xfd\xe7\xb2\xac\x92\xbf\x26\xf4\x7b\x28\x1b\x98\xac\x3e\x86\x88\x43\x57\x0f\x60\x3c\x7d\x29\x16\xed\x46\xaa\xd6\x74\xfe\x4f\x92\xf2\x74\x52\x13\x79\xe3\x59\xb7\x68\xab\xf4\xf4\x72\x71\x56\x30\xf8\x54\xcb\x74\x4d\x5f\x8a\xdf\xc7\x14\xb5\x86\xad\x19\xa3\x93\x54\xc5\xe7\x51\xf6\xfa\xba\x67\x50\x2e\x09\x13\x7c\x2e\x97\xd9\xe2\xb9\x84\xc2\x94\x92\xea\xf8\x95\x05\x63\xef\x26\x73\x71\xdb\xbf\x33\x2b\x8d\x4b\x54\xb3\xb4\x16\xc7\x76\xe9\xc2\x5e\x77\x6d\xec\x6c\xa9\x74\x2f\x0d\xe5\x7c\x41\x1d\x40\xa8\x32\xeb\xa6\x4d\x4b\x6e\x5a\x13\x66\x49\x96\x3c\x52\x40\x85\x2b\x30\xb9\x0b\x12\x75\xd6\x60\x4d\xd7\x51\x9e\xbb\x42\x1c\xa1\x7b\x45\x72\xcb\x58\x9f\xf8\xc5\x82\xcb\x72\x83\x0a\x49\x16\x1f\x76\xaf\xba\x0d\x71\x30\x16\x2f\xde\x1e\x1c\xee\x7d\x7f\xf0\xd7\xfd\x3d\x8c\x16\x96\xe3\x38\x95\x23\xc6\x60\x54\xb0\x6b\x36\x7c\x28\xe9\x0c\x05\x67\x83\xc0\x76\x11\x77\xd2\xbe\x4e\x2a\x1f\x17\x9c\x1e\xb7\x6d\x39\x8a\x42\xc1\xac\xb0\x6b\xd9\x95\x30\x03\x2e\x82\x3e\x62\x46\x52\x05\x28\x99\xcb\xd1\x6c\xc8\xa5\xc9\xd6\x34\x66\xd7\x95\x91\x44\x64\xcc\x0b\x90\xda\x06\xaf\x14\x12\x63\x9c\x36\x84\xfc\x38\xbc\x8a\x52\x56\x99\x22\x95\x10\xdc\x85\x47\xed\x0a\xf1\x63\x76\x23\xaf\x65\xde\xb6\xa7\x80\x73\x34\xb2\x9b\x99\x71\x64\x29\xaf\x72\x19\x8d\xe4\xc8\x73\x1a\x2c\x30\x53\x30\x71\x9a\x9b\x9c\x2e\x4a\xb8\x83\xd6\x22\x5e\xc7\xf9\x25\xf4\xcb\xf2\x37\xa3\xf6\x3a\x45\x34\x96\xc6\x15\x86\xca\x89\x6d\x34\xbd\xb2\x95\x3d\x91\xe9\x38\xfe\x48\x41\xf9\xe3\xf8\x23\x7a\x1f\xff\x54\xc5\xd6\x82\x5d\xff\xe7\x53\xf4\x0c\xfe\x20\xe5\x54\x7d\xbd\x90\x70\xa0\x95\xd2\xa2\x67\x5c\x7c\x7a\xdd\x54\x07\x2a\xdb\xb8\x60\x61\x99\x62\xae\x66\xe3\xf1\x24\x4a\x55\x3b\xa0\x75\xe0\x52\xe1\x65\x78\xb3\x32\x10\x01\x03\x69\x99\x63\x84\x46\x62\xa7\x4e\x2d\x6e\x27\x8c\xac\x41\x23\x0a\x88\x65\xeb\xfd\x81\xce\xd3\x81\x83\x0d\x94\x59\x1d\xa8\x1c\x81\xc6\x7c\xa5\x3c\xbc\xcb\x48\xa7\x86\x16\xf0\x3d\xeb\x78\xe6\x64\x17\xb7\x13\xf1\x5c\xf4\xd7\xd6\x30\xdf\x97\x12\x32\x8b\x77\xc5\xed\x84\x82\x35\x9e\x6e\xb1\x83\xb9\x53\x61\xb0\xbe\x51\x57\xe1\x59\xb8\xc2\xd3\x95\xba\x0a\x4f\x6a\x2a\x3c\x9d\xdb\x25\x12\x0b\x6c\x07\xbe\x26\x48\xbf\x6d\x4b\x74\xa6\x0c\x93\x83\xa7\x4f\xdb\x9a\x64\x04\x3c\x61\xde\x9a\xe5\x1f\xda\xe2\x57\x14\x03\x36\xc5\x33\x71\x67\xcd\xa2\xd1\x1c\x17\x9b\x3f\x8a\x11\x08\xf5\x75\xbd\xa6\xaf\x28\x68\xb7\xfd\xbe\xae\x0e\xda\x66\xa9\xdb\x75\x7d\x5d\x77\xfb\x9a\x11\x2f\xc2\x24\x3d\x99\x46\xba\x13\x66\xeb\xd0\x25\x86\x9d\xe3\xcc\xd6\x2c\x68\x6a\x1c\x9d\x83\x8f\xfd\x67\x41\x4d\x42\xed\x3a\xe7\x1d\xd7\x58\x37\xfc\xfd\x2d\x49\x20\x96\xdd\x1a\x99\x3c\xa2\xed\x82\x56\x46\xe2\x77\x33\x55\x2c\x7a\x75\xf0\xaa\xc5\xe6\x6e\xe0\x1a\xa5\x4c\xc5\x05\x22\xe2\x36\x4c\xce\xe9\xae\x00\xee\xcc\xcd\x8d\x32\x49\x0e\xb5\xf2\x63\x5c\x94\xe2\x56\x96\x6d\x31\xcc\x65\x84\x6e\xc9\x8a\x55\x22\x32\x72\x72\xcb\x9c\xb7\x41\x39\xa0\x22\x2d\xef\x15\x3a\xf5\x50\x9c\x02\x63\x43\x94\x43\x2c\xc3\x57\x17\x57\xe8\x41\x2b\x53\xdd\xa7\xd1\x2c\x27\x7f\xda\xb8\x68\xe8\xeb\x2c\x4a\x4b\x79\xc1\xb0\xdd\xec\xf3\x53\x5a\x9e\x6d\x45\x99\xcb\x68\x82\xad\x11\x8f\x90\xa9\x06\x54\xbe\x95\x25\x9c\x3a\xa5\xe0\xd4\xb2\x2a\x89\x7a\x99\xa9\xe1\xe8\xfe\x7a\x1e\x3d\x68\x95\xe6\x11\x99\xc7\x0d\x68\x28\xc9\x80\x33\x77\x1b\x0d\xf1\x06\xef\xa7\xac\x9c\xf1\xca\xf2\x84\xb8\xdd\x39\x81\x67\xaf\x0e\x5e\x39\xa0\xdc\x8a\xe7\xab\xdc\xd8\x98\x4b\x15\xe6\x2f\x1a\x5d\x47\x69\x19\x5d\x4a\xc5\xe7\x71\x76\xf5\xa2\x42\x3b\xe6\xde\x07\x73\xf2\x4e\x19\xf0\x1b\x0f\x2b\xe7\x52\xa1\x21\x66\xd3\x4c\xe1\x59\x3b\x90\xee\xcd\x16\x9d\x91\xf4\x09\xcc\x64\xa8\x41\xea\xfc\xdc\xdc\xf4\xc9\x86\xfa\x26\xba\xdf\x8f\xa1\x0a\x5f\x9a\xf0\x73\x98\xab\xb6\x98\x44\x78\x1b\x4d\xa6\x17\xec\x5b\x21\x0a\xcc\xcb\x41\x18\xe3\xe3\xa8\x80\x73\xb6\x81\x6e\x89\x7a\xac\xea\xb2\x6a\x24\xa7\x32\x1d\x51\xd2\xed\xca\xe1\xcb\xe6\xa1\x2c\x7f\x5c\xd0\xc2\x0c\x61\x79\x0b\x2f\x37\x1c\xc9\xe5\x2a\x63\x0d\x41\x0b\xe7\xc3\x36\xe1\xe4\x0e\xb3\xa9\x93\x17\xae\x70\x25\xe3\xa0\x06\x17\xa3\x20\x7f\x15\x15\x94\x00\x1f\x28\x14\xd3\x16\x13\x59\xb7\xb5\xbc\x69\x59\x06\xfd\xab\xa4\x8a\x26\xb2\xcd\x9a\x88\xa7\x6b\xb0\xbe\x6c\x61\x0d\xde\x18\xd4\xa2\x80\xb6\x1c\xd0\xaa\x83\xaa\x8b\x97\xeb\xca\x7c\xcc\xc9\x88\x6e\x20\x32\x3b\x3b\x37\xea\x86\x0d\xd3\xd6\x2b\xba\xe6\xab\x32\xa6\xb5\x61\x9c\x0f\x67\x09\x28\xd8\xde\x50\xb1\xa1\x1d\x07\x15\x52\x0d\xd4\x4b\xac\x65\x77\xd4\xac\x13\x02\x59\xea\xaa\x6d\xf7\x87\xca\xaa\xb5\xc0\x74\x78\xa8\x94\x9e\x4a\xcc\xb6\x7d\x7b\xea\x3b\x3e\x34\xa5\x83\x1c\x64\x88\xc7\xaa\x3e\xc4\x24\x31\xc2\x64\x2d\xeb\xfd\x32\x91\x93\xe1\xf4\xb6\xa9\x66\x92\x26\x67\x59\xcf\x2c\xb4\xad\x86\x09\xb5\x19\xfa\x68\xeb\x41\xf3\x63\x2a\xb6\xed\x3e\x73\x2b\xb8\x00\x9d\x6d\x61\x82\x20\xd5\xb2\x98\xfe\xd7\x74\xd4\xfd\x00\x56\x51\x11\x69\x0f\xeb\x1b\xfd\xaf\x95\x15\xce\x59\x2f\x33\x6d\xf7\x2c\x9a\x9a\x57\x27\xf4\xce\x6e\x6b\xd9\x1e\xa6\xb3\xd5\x34\x84\x8a\x4b\x87\x15\xca\xd1\xe1\x7d\x56\x5d\xec\xcc\xf3\x9a\x9a\xf8\x52\x7d\xd7\xcb\x81\xcc\xbc\x76\x25\xa8\xce\x31\x3f\xe2\xfc\xfa\x41\xa8\x73\x0f\xe8\xd6\xa8\xd8\x3d\x7a\xd5\x73\xcf\x18\x3b\x15\x65\xd8\x2c\x8e\xc3\xa4\x4b\xe1\x83\xa3\xbd\xfd\xbf\x1a\xa0\xdd\x69\x18\xd9\x5c\x57\xe2\x2f\x79\xb5\x60\xf0\x20\xed\x8d\xcb\xca\xed\x83\x0f\x85\x6f\x25\xa9\x58\x04\xc5\xfa\x22\xd6\xd9\x28\x16\x01\xb0\x56\x97\xd4\xa1\x6a\xe7\x71\xda\x0e\x41\xb7\xf7\x96\xc8\xc5\x41\x5f\x92\x2e\xd2\x65\xa4\xd5\x9a\x79\xd2\x16\x2f\xbe\x0d\x47\x4f\x73\x93\x3a\xa4\x82\xc5\xfc\x40\x64\x64\x6a\x65\x0e\x3e\xb2\xc1\xab\x0e\x5d\x8d\x58\x7e\x41\xae\x9a\xef\xc3\x56\x43\x03\xe7\x64\xad\xc3\x7f\x66\x53\xfe\xc7\x75\x94\xa0\xf2\x37\x8d\x3e\xc8\x91\x78\x04\xcf\x1e\x89\x91\x24\x99\x32\xfe\x45\x8e\xdc\x1b\x25\x34\xcd\xdc\x03\xbe\x3f\x8d\xb0\x43\xc1\x7e\x60\xa6\x72\xea\x07\xfe\x13\xfa\x81\xff\xf0\xfa\x01\xcf\xee\xe9\xc7\x3d\xc8\xd7\x4a\x7b\xe3\xe9\x86\x53\x3b\x97\x53\x19\xc1\xa7\x91\xb2\xca\x4c\x8c\xf2\x6c\x6a\xfa\x96\xcb\xda\xed\x92\x9b\x30\x17\x6b\x4e\x2f\x66\xe3\xea\xe1\xbb\xd6\x52\x5e\x8e\x4c\xb3\xda\x3b\xca\x72\x43\x1f\x46\xc9\x90\xe1\x29\x85\x05\x2d\x5e\x16\x3a\x57\x6d\x8a\xb3\x61\xae\x6b\x91\x30\xb2\x5c\x60\x8c\xca\x8b\x83\xb3\x53\x55\x30\xcb\x29\xc3\x1b\x4c\xbc\xcc\x27\x33\x8e\xa3\xf3\x2f\x9d\x59\xa1\x79\x27\xfa\x1b\x6d\xd1\x7f\xd2\x16\xfd\xa7\xa8\x1c\x3d\x6d\x8b\x27\x6d\xf1\xac\x2d\xe0\xf1\x4a\x5b\xac\xb7\x45\xbf\xdf\x16\x6b\x6d\xd1\x1f\xb4\xc5\x6a\x5b\xf4\x57\xdb\x62\xd0\x16\x7d\x78\x82\x79\x3d\xde\x13\x22\x72\x9d\x21\xdd\xfc\xe4\x6d\xf6\xdb\x6f\xcc\x7d\xa9\x38\x67\x71\x40\x0b\xad\x1d\xad\x8b\xc9\xad\x17\xb1\xfb\xd6\xde\x49\x18\xee\xae\x73\xcc\x9c\xfd\xfc\x66\xdf\xf0\x75\x2b\x16\x7c\xef\x78\x4b\xdc\x29\x86\x61\x7c\xe0\xd1\xc5\x11\x48\xbc\xd3\xe9\x88\xc3\xe3\xdd\xbd\x66\x4b\x74\x3a\x9d\x06\x66\x1f\x7f\x08\x7a\x37\xb0\x4f\xe1\x67\xa5\xd9\x7a\x68\xb2\x4e\x7d\x62\x7a\x19\x3f\x17\x47\xcd\xc6\x91\x34\x34\x9c\xb9\x02\xea\xe6\x3b\x49\x64\xf2\xda\x10\x4a\xf7\x4a\xd8\x99\xf1\x79\x22\xa3\x6b\xb9\x19\x44\x53\x35\x60\xab\x24\x92\xdd\xc4\xc0\xc9\xac\xa9\x37\x32\x08\x5a\x8c\x7f\xdc\xdf\xdd\x33\x50\xad\xee\xc5\xa6\x01\x97\x33\xfb\x2d\xb4\x58\x15\x64\x85\x0a\x64\x02\x8c\x15\x1a\x83\x0d\x02\xfb\xa3\xa9\x13\xc7\x0b\x63\x6a\x50\xa8\xb7\x1b\x55\x64\x60\x9a\x6b\x05\xae\x40\xd1\xfa\x7a\x22\xb6\x1c\x78\x09\x28\xda\xe9\xd8\x7d\x72\x21\x49\x61\x5d\x3f\x05\xfa\x16\x07\xd0\x73\x41\x8c\x9b\xce\x85\xed\xa0\x85\xd8\xd2\xb8\xfc\xd0\xd5\x8f\x4f\x2f\xfa\x63\x05\x83\x65\x33\x19\x07\x89\x83\xef\x45\x95\xdf\x62\x6f\x09\x63\x3d\x9b\x2b\x87\x6d\xb6\xc2\x83\x18\xe7\x22\xc6\xd2\x5c\xbe\x3c\x79\x39\x68\x5a\xb5\xdb\xf8\x69\x17\xc3\xf8\x62\x36\x7e\xb7\xf2\x5e\x68\xac\xd4\x95\x8f\xe3\x71\xa5\x40\xff\x3d\x22\xe4\x32\xd0\xa8\xf1\xab\xdd\xaa\xed\x25\x75\xd1\xfd\xf6\xc5\x6c\x8c\xbc\x68\xa5\x55\xe9\x6a\xaf\xd7\xa8\xf4\xfe\xe0\xe8\xe0\x0c\x29\xa1\x0a\xba\xec\xe1\x8b\xd9\x97\xce\x75\x8b\xe1\xd1\x25\xc6\x95\x2d\x44\x96\x54\x2d\xe8\xd0\x8a\xd7\x87\x53\x39\x2c\xfd\xb4\x2b\x36\x05\x98\x8b\xf4\xd0\x36\x81\xe7\x5d\xd4\x57\x2d\x23\x95\xdf\x05\xe4\xd5\x2e\x25\xf5\x31\x07\x38\x49\x10\x38\xe5\xec\x37\xab\x3a\x11\x71\x6c\xab\x43\x48\xcd\x66\xd3\x5a\xe5\x56\x6f\x09\xa7\xf7\x69\x6b\xa9\xa7\x7c\xa0\xf5\x22\x8b\xa7\xad\x96\xf8\x93\x58\xed\xfb\x9d\xb6\x11\x35\x86\x59\x8e\xf0\x43\xea\x64\x84\x8e\x3c\xae\xd2\x44\x18\x85\xa5\x76\xc2\x71\xdb\xe8\x7e\xae\xe8\x7e\xae\x41\x3f\xe9\x0a\x47\x85\x42\xd6\x77\x6e\x96\x7e\x48\xb3\x9b\x34\x10\x50\xf9\xfb\x3b\x48\xc7\xcb\xde\xc9\xf1\x1b\xee\x17\x9c\x31\x16\xa9\x19\x40\xde\x35\x0b\x3f\x84\x91\x35\xac\x47\xd8\x4e\xcf\x07\x59\xaf\x1d\xfa\xb2\xcd\x75\x2c\x36\x4c\xd4\x5f\xc7\x87\xd5\x05\xa6\x05\xf2\x62\x8f\x45\x03\xbd\x10\x7e\x91\x55\x67\xde\xc2\x93\x73\x91\xe5\xeb\xfb\xfb\x27\xd5\xf1\x42\x41\x03\x8b\xd3\xe3\x79\x17\x8a\xc2\xa1\xfc\xac\x0a\x24\x53\xf1\x9f\x51\x5c\xaa\xdf\x5b\x52\xf9\xe6\xeb\xb9\xa9\x33\x1c\xbd\x38\x83\x95\x15\xf1\x9d\x0a\x3f\xdc\xf4\x00\x6a\xea\x19\x58\x95\x7d\x55\x99\x97\xcf\xba\x9c\x39\xc3\x23\x19\xb9\xd7\xe6\xbc\x93\xd3\xde\xf8\xff\x96\x87\xa7\xcb\x76\x95\x90\x64\xba\xdc\xb4\x0b\xa8\x58\x8d\x3f\x02\x77\x30\x3b\xd3\xf4\x4d\xae\xac\x54\x36\x67\xb5\x37\x4c\xc0\x54\xad\x90\xe5\xe7\xec\xcb\xdc\xf3\xa7\x24\xa1\xb6\x69\x31\x7f\x3c\x62\x16\x1d\xde\xca\xc0\x1f\xde\xbf\xa1\xfc\x51\x1d\xea\xe7\xdd\xc5\xae\x58\x7c\xf0\xda\x66\x17\x4b\x68\xaf\x47\xe4\x3d\xcc\x13\xa7\x37\x2f\xee\x76\x28\x5c\xbb\xd9\x57\x07\xf3\x36\xfb\xea\xe0\xdf\x62\xb3\x2f\x4a\xa7\x94\x8a\xdb\x65\x06\x9f\x4c\x9a\x6b\x01\xd2\xfc\x22\x94\x89\x05\x07\x6e\x41\x93\x64\xa2\x52\x72\xd5\x2d\x69\x82\xdc\x3e\x81\xda\xd7\x82\xd4\xfe\xaf\xa5\xf5\xe3\xd3\x85\x29\xfd\xf8\x3f\xfc\x50\x5b\x90\xce\x3f\xaa\x63\xcf\x11\xd7\xab\xcb\x8f\x85\xb3\xc2\x22\x17\xf1\xf4\x2b\xd3\xfe\x62\x84\x8c\x70\x1d\x0b\xd3\x32\x96\x0e\xd9\x4d\xac\x25\x58\x0b\x2f\x41\x2d\xd1\xdf\x47\xf6\x0f\x26\xfc\x10\xe9\x3f\x80\xf8\x17\xc8\xa6\x54\xa7\x87\xeb\xf0\x33\x97\x9b\xcf\xdf\x23\x0e\xe1\xa3\xe7\xee\x39\x67\xa6\xf2\x1a\xb9\x0b\x36\x38\x8f\xf8\x1f\x40\xfe\x0b\x6c\x80\x07\x6c\x81\x4f\xdf\x04\xa1\xc9\xad\x4c\xfd\x67\x36\xa3\x04\x34\xc7\x05\x18\x9a\x0a\xdd\xab\xfa\x58\xfa\xad\x7a\x1b\xee\xec\x64\xf7\x01\x1b\xee\xec\x64\xf7\xa1\x1b\x0e\x2f\x17\xb6\x1d\x9a\xf4\x89\x91\x6e\xcb\x05\xe7\x24\x51\x35\xae\x2a\x7b\xa9\x7a\x85\xeb\x77\x24\x44\xd0\x4a\xed\x0f\x12\x76\xa7\xb6\x63\xaa\xe1\x6f\xfc\x7a\x21\x00\x62\xce\x9c\x3b\x4b\xcb\xdb\xa9\x1c\x09\xbc\x21\x66\xdc\xa3\x5c\x8a\x61\x96\x5e\xcb\x34\x96\x69\xe9\xc6\x98\x97\x32\xaf\xb4\x14\x5a\x53\x79\x23\x76\xa1\xc5\x66\x68\x08\x15\xdc\x65\x1f\xd9\xd8\xbb\xb4\xbe\xf7\x8b\xed\x4a\x09\xba\x91\xad\x3c\xc6\x6b\xfc\xd0\x54\x30\x4e\x53\x2c\x93\x11\xfa\x09\xc5\x93\x98\xf1\x23\x37\xd6\xd7\x57\x37\xe8\x4e\x2f\x54\xb1\x23\xd2\x8c\x22\xd4\xd0\x83\x74\x34\xc2\xec\xae\x51\x42\x4e\x30\xb8\x57\x2b\xd5\xf0\x96\xbd\xda\xd8\x12\x26\x99\x13\x4c\x5a\x95\x89\x9b\x44\x1f\x45\x07\x09\xe3\xbb\xf0\xcb\x4d\x6a\x38\x80\xd1\x9d\xc8\xd4\x7b\x56\x59\x02\xcf\xb3\xc0\x5e\xce\x65\xa8\xdf\x0e\xce\x9d\x49\xbf\x72\x7f\xdf\xbf\xab\xad\x3b\x67\xa8\x9b\xae\x37\x03\xfd\xdd\xd5\x6c\xa5\xf9\xac\x7c\x01\x9e\xca\xf7\xf8\xe4\x05\x61\xb9\x66\x84\x3f\x8c\x47\x6a\xc7\x75\x8b\xa0\x3f\xe5\xe3\x50\x7d\xe3\x9c\x73\x81\xba\xe1\x33\x8a\xca\xdf\x73\x70\xfb\xfc\xd2\x8a\xe5\x0e\x73\xd2\xa3\xdd\x07\xe8\x9b\x50\xf8\x1e\x3e\xfa\xd4\x9f\xf3\x07\xca\x1d\xcc\x44\x9d\xa3\xa6\x92\xb9\x41\x23\x25\x0c\x44\x96\x8b\x3e\x6d\x4c\x97\xb4\x88\x77\x1a\x39\x85\xe9\xb2\x82\xa9\xde\x5b\xc2\xb0\x54\x05\x47\x49\x9b\x5e\x87\xb4\x62\xec\xaa\xb8\x91\xb6\x9f\xf7\x34\x97\xda\x71\x8c\x71\x60\x02\x39\xcb\x0c\x39\x8b\x6f\xbf\xc5\xde\x7c\xfb\x6d\x65\x4b\x3a\x2b\x2b\x9e\x33\x9b\xe9\x2d\x59\x7b\x21\x8d\x26\x12\xb6\xc2\x52\xaf\x55\x47\xcb\xba\x1c\x50\xdb\x29\x86\xd1\x77\xc7\x79\x36\x79\x79\x15\xe5\x2f\xb3\x91\x6c\x56\xb9\xad\x83\x13\x6f\x03\xe2\x7f\xfb\x2d\xad\xc0\x73\xc1\xc9\xa3\x3e\x41\x5c\xfa\x9d\x3b\xcc\x57\xbf\x42\x3b\xa4\x6e\x6f\x19\xec\xfe\xc5\x36\xc9\x43\x44\x15\x9c\x61\x13\x4d\xe4\x37\xb5\xe0\x7e\x63\x58\xbc\x85\xb7\x1c\x97\x9f\xbf\xeb\xfa\x15\x2b\xe2\x97\xd8\x75\xff\x29\x5b\x6a\x98\x4d\x26\x8b\x6c\x29\x05\x4c\xf8\x05\x76\x55\x68\x60\xff\x95\x9b\x4a\xcd\xf1\x7d\xfb\x4a\x45\x30\xbf\x3c\x79\xb9\xf0\xd6\x81\xc2\xf7\x9c\x56\x35\x96\x8e\xff\x6c\x35\x1b\xbb\x08\x5f\xf8\x66\x7b\x5b\xd8\x44\x64\xb2\x46\x54\xa9\xcf\x5c\x4a\x58\xde\x4e\x93\xb8\x40\x6f\xb7\x87\xa7\xd8\x98\xdb\xdb\x2f\xa6\x99\x2e\x48\x94\x57\x30\xb6\x6d\xef\x26\x69\x67\x47\x3c\xf3\x2f\x3f\x42\x77\xf5\x14\x8b\x55\xfd\xf6\x9c\xcb\xc6\xba\xb3\x22\x90\xdb\xc2\xb9\xec\xa3\x3b\xc6\xff\xec\x0b\x80\x39\xd3\xa6\x40\xe0\x3c\x33\xcc\x17\xb4\xf3\xc1\x84\x2f\xcc\x7e\xa0\x70\x88\xfd\x18\x94\x85\xea\xcd\x3c\x39\x10\x9c\xec\x23\x0e\xab\x76\x51\x73\xe6\xc2\xca\x8e\xe1\xa5\x04\xab\xa4\xb7\x50\x5e\x60\xd5\xfa\x31\xc1\x1c\x7c\xac\xab\xef\xf8\x94\xb9\x53\xe1\xe5\xbc\x70\x5f\x7a\xb9\x2f\x9c\x61\x59\xbf\xb5\x13\xa0\x06\xe6\x7e\xe0\x8e\x79\xf8\xf5\xbc\x77\x0d\x7f\xcf\xbd\xda\xcf\x6f\x3c\x3d\x87\x90\xe0\x29\xbc\x99\xb0\xd4\x7f\xfb\x4d\xd8\x0f\x11\x47\xfd\x9e\x5d\xb3\xc0\x57\xf7\x8e\x43\x24\x83\x29\x4c\x02\x84\xf2\xe2\xe7\xb3\x7d\x22\x72\xcf\xd1\xc4\x76\x35\xc1\x35\xf9\x56\x3c\xa9\x6c\xc1\x4e\xf8\x9d\xef\x7c\xe2\x0b\xb0\x3f\xee\xbf\x7c\xb5\xd0\x1d\xb3\xcf\x8e\xe6\x72\xa3\x7f\x13\x66\x14\x19\xe0\x14\xcb\x1d\xa7\xaf\xdc\x71\xfa\x0e\x01\x7a\xee\x40\xfd\x7a\x77\xa0\xbe\xc7\x92\x3a\xce\x23\xb5\x22\xa6\x1f\xec\x99\x69\x75\x61\x55\x75\x61\xd0\x5a\xea\x79\x96\x4c\x20\xae\x15\x93\x5a\x29\xf4\x87\xf0\x63\x2e\x34\xb2\xf3\x7a\xae\x93\x8d\x70\xea\xfe\xa9\xf8\x7b\xfa\xa8\xed\x55\x0f\xcc\xe0\x77\xe2\x11\x65\xed\x69\x3d\x12\x9b\xe2\xd1\x23\x3f\x85\xb8\x43\x75\x04\x4c\x7d\x8f\x20\x81\x03\xed\xdf\x3b\x50\x8a\x58\x0e\x8e\xb3\x1a\xec\xec\x9b\xd5\xe7\xcf\x83\x09\xb5\x2f\xbe\xe0\x64\x1c\xee\x1f\x9d\x57\x01\xa4\x24\xba\x85\x5b\x40\x71\xe6\xcf\xe7\x60\x8a\x59\x79\xba\x8f\x47\xaf\x83\x2a\x57\x11\x0e\xd5\x0e\x7c\xfb\xa1\xa2\xdd\xca\x8b\x2a\x4f\x11\x3a\x73\x96\xd9\xd3\xb5\xca\x54\xdd\x5a\x0f\xee\x5d\x6b\x17\xb2\xfb\x81\x54\x6d\x03\x03\x7e\xc9\xf5\x44\xe4\xf1\x45\x68\x7b\x75\xb3\x56\x2a\x57\xae\x77\x8c\x4d\x7e\x3b\x5d\x3c\xef\x5d\xad\xff\x62\x85\x00\x82\x4b\x1f\x58\x74\x7f\xb9\xab\xa2\x2b\xed\xe7\x4d\xef\xcb\xfe\x79\x46\xd8\xcb\xa2\xcc\xd0\xc2\x27\x2e\xb2\x59\x3a\x8a\x5c\xe3\xc0\xbc\x73\xae\xfe\x94\xf3\x3b\xf8\x9f\x28\x39\xbb\xde\xb2\xa8\xd6\x91\xc6\xe7\xfa\x9a\xfc\x7f\x61\x9d\x2f\x44\x5b\xce\x09\xc1\xf1\x27\x9f\xcb\xbf\xd3\xb9\xf5\xd5\x3d\xb6\x57\x6c\xfe\x5e\xd5\x67\x10\x37\xf4\xa7\x99\xb3\x51\x2b\x9b\x94\x8c\xe9\xff\x1a\xb5\x01\x33\x20\x6c\xd5\xca\x93\x9f\x41\x74\xc4\x2f\x6c\xd6\x7f\xfd\x01\xe6\xc6\x37\x3f\x9b\x76\xe6\xde\x81\x86\x6f\x35\x3f\xe5\x5e\x54\xec\xa0\xaa\x62\x95\xa5\x20\xc5\x60\xd9\xc5\x36\x19\xf1\x13\x75\x9b\x85\x96\x31\x8a\xde\xa5\x9b\x24\x4f\xb1\xf2\xae\x1a\x29\xda\x47\x9b\xd4\x4c\xc5\x36\xa8\x5c\xad\xf9\xc2\xf2\x43\xad\x6b\x18\x50\x14\x28\x3f\x9d\x05\x8b\xdf\x77\x77\x34\x47\x1a\x5f\x70\x03\xc9\x74\xf4\xc0\x84\x9b\x0e\x67\xc7\xc3\xac\xde\x59\x6b\x6d\xae\xb3\xd6\xda\xbf\x05\x67\xa5\xf9\x48\x7d\xaf\xfc\xbe\xf6\xca\x5f\x27\xaf\xfc\xc1\xba\x7f\xe4\x98\xb3\x75\xbd\xfe\x6c\x5d\xaf\x9e\x60\xeb\xf5\x47\x17\x77\x86\x83\xda\xe7\xf4\xc6\x57\x28\xbe\x5c\x5f\x18\x0c\x65\x4e\xbc\x82\x1f\xeb\xf0\x19\x63\x26\x7a\xbd\xff\x17\x8f\xd3\x91\x1c\x8b\x37\xaf\xfe\x76\xf0\xe6\xfc\xc5\xdb\x1f\xce\x7f\x3a\x3e\x79\xb5\x7b\x72\xfc\xf6\x68\x2f\xa0\x5c\xa7\x9c\x08\xfa\xe9\x06\xe8\xf4\xf6\x74\xee\x88\xd5\x39\xce\xd9\x65\x96\x89\x49\x94\xde\x6a\xd8\x52\x0b\xb2\xb5\xb8\x9d\x5c\x64\xc9\xef\x38\x1c\x7b\xbd\xff\x27\xd3\x51\x3c\x7e\xc0\xf6\xa5\xb0\x5c\x82\xfe\x0a\x84\x3a\x28\xd3\xd3\x1c\x7b\x23\x67\xad\x59\xf8\xb0\xe0\xf2\x9b\xfe\x6e\xb6\x3e\xf6\xdc\xa6\x89\xb9\xa6\xf6\x55\x87\xaf\xce\xb5\x0e\xfc\x5b\x58\xd9\x35\xa3\x2e\xde\x61\x24\xef\x3b\x33\x2b\xcb\xcb\xef\xdf\xbb\xfb\xe3\x49\x6b\xab\xd7\x0b\x4c\x83\xb7\x39\x56\xe7\xd9\x79\x56\x43\x06\x9e\xd5\x79\x87\xd5\xdd\xdc\x85\xeb\x3f\x0b\x19\xc8\xe7\x0d\x68\x25\xcc\x3c\x35\xfe\x98\x42\x17\x53\x28\x61\xdf\xda\x88\x64\x5d\x31\x50\xa9\xc0\x40\x8a\x8b\x53\x50\xb9\x30\xab\x62\x9a\x95\x8c\xde\xde\xb5\x5a\x65\xba\x0a\x02\xc4\xba\x65\x7c\xa0\x58\xd7\xee\xd9\xeb\x89\x53\x32\xa7\x70\x76\x58\x07\x89\xb9\x2a\xa5\x06\x30\x67\xfd\xed\x64\x50\xa2\x9e\x58\x17\xe8\xd9\x14\x1f\x29\xa0\x2a\xb7\xe8\x9d\x69\xc3\x01\x2f\x64\x44\x2c\x4c\xb0\x59\x41\xc4\xea\x3f\x6b\xbb\xfd\xaa\xa0\x62\xc1\x37\x2b\x5c\xc0\x74\x0f\x5e\x73\x44\xb1\xc3\x18\x73\x59\xde\xaf\x0d\x38\x51\xe8\x9f\x25\x28\xe5\x7e\x1e\xe7\x7c\xf3\xd3\x98\x9c\xca\xa8\xf5\x00\x91\x98\x2a\x2c\xc4\xe6\xc8\x03\xca\x3a\x44\xdc\x79\xf4\x22\xac\xd5\x1f\xa3\x40\x38\x6b\xf9\xce\xcd\xd4\xee\x2c\x1d\x25\x6d\x7f\xbf\xc5\x87\xaa\xfb\x2e\x90\xab\xff\x9c\xd7\x1b\xbf\x43\xa1\x03\x5b\xd5\x42\x19\xe2\xcc\xea\x32\xe1\x40\x04\xa1\xd1\x25\x54\x7b\x46\x57\xab\xb0\xe8\xa6\xfe\x78\x4b\x3c\xdf\xe6\x0c\xe1\xbf\xaa\xbc\xe8\x2e\x87\x26\x56\xf7\xe6\xed\xe1\xe1\x8b\x9f\xcf\xf6\x03\x16\xed\x3f\x08\xd7\x0f\xc9\xfc\xbe\xa2\xa2\xa7\x28\x74\x43\xec\xf1\x74\x4c\xcf\xcf\x8b\x5a\x19\xb1\xe1\xee\x7a\x26\x03\x5d\xec\xd4\xbe\x0e\xd9\xdd\x2c\x3e\xee\x70\x70\x5e\x4f\x04\xec\xa8\x19\x9b\x97\x45\xbf\x32\x5c\x58\x97\xea\x80\x2b\x47\xbd\x1e\x32\xc8\xc8\x15\x27\xc4\x54\x58\xc3\x81\x12\x7e\x01\x57\x36\x48\x43\x7e\xad\x0f\xa6\x14\x51\x43\x2d\xe2\x61\x14\x23\xea\xa9\xa6\xea\xe0\x5a\x95\x19\xc4\x03\xc9\x63\x01\x02\xb9\x97\x44\xea\x8c\xb3\xee\x85\x65\xe8\xb2\x92\xfe\x82\x46\x48\x93\xf4\x8d\xa0\x59\x1e\x57\xa7\x69\xbe\x93\x80\x08\xd9\x40\x43\x93\x68\xfb\x48\x7b\x34\x0d\x4c\xf2\xbd\x5f\x9f\x0d\x0c\xab\x3a\xa2\x9d\x6f\x4f\x94\xfc\x55\xa5\xc7\x7f\xad\x55\xdc\x1d\x9f\x76\xa5\x71\xb7\xd8\x93\x07\x6d\xb1\xd5\x7b\xb7\xd8\xea\xd7\x2d\xf6\x7f\xb1\xc5\x54\x96\x9b\x85\x48\xb4\x4e\x45\x08\x0c\x28\xa0\x26\x88\x7a\x55\x41\xd4\xa9\x0b\x75\x1d\x0f\x90\xe8\x03\xa8\xf1\xc9\xbd\xd4\xf8\xe4\x2b\x35\xfe\xf1\xa8\xb1\xdf\x77\xc8\xf1\xc9\x58\x93\x63\x75\x41\xbd\x11\x3d\xb9\x6f\x24\x95\x05\x57\x23\xa8\xbc\xb8\x9f\x1c\xbd\x63\xcb\x8b\x46\xb8\x4f\x3e\x17\x9f\x7c\xa0\xdd\x77\x9c\x05\x0e\x33\xb7\xe3\x4c\xe4\xd0\xdd\x4e\xa7\xce\x2f\x35\x28\xb5\x39\x70\x18\x7e\xc3\xb6\x83\xa6\xad\xf1\x5c\x45\xe9\x28\xe1\xac\xfc\xd4\x39\x84\xe4\xa3\x5e\x04\x81\x6a\x34\xf6\xd6\x8b\xdd\x3d\x47\x8a\xb7\x9b\x25\x07\x1d\xce\xee\xdd\xc9\xc6\x1d\x95\x64\x6e\x04\x1b\x58\x96\xa5\x24\x1c\x42\x91\xa5\x0a\xff\xdb\xff\x0e\x8e\x71\xb0\xbe\xf1\x3e\x0c\x5d\x52\xa3\x88\x76\x3a\x62\x12\x53\x80\x92\xfd\xe5\x4f\x57\x4a\xed\x51\x11\xd2\xb9\x9d\x35\xaa\xd3\x11\x69\x06\x7a\xe9\x28\x43\xfb\x04\x03\xc8\x23\xd8\x2f\xab\xd7\x6c\x0f\x84\x7f\xdb\xab\x83\x39\x23\x0b\x52\x9d\x9a\xcf\x10\xb6\x70\xa3\x85\xf8\xcf\xd9\xac\x14\xb9\x8c\x08\xeb\x0f\x21\xeb\xd1\x1a\x82\xeb\x12\xa7\xe3\x32\x97\xb2\xe8\x5e\xd9\x6d\x61\x86\x20\x44\x7f\xc6\x0a\x9c\x8c\x55\x39\x5e\x17\x6d\x58\xce\xe1\x15\x63\xf3\x12\x30\x6f\x56\x48\xd5\x85\xa5\x8a\x63\x8b\x8d\x6e\xfd\x59\xec\x16\x84\x3a\xee\x99\x2d\xcc\x56\x7c\xa0\xf9\xe2\x4b\x99\x92\x2c\xbb\xd0\x39\x25\x50\x60\xd3\x08\x36\x4e\x8f\x16\x32\xa2\x54\x9a\x0c\x9b\x9e\x1e\x6e\x6b\x71\x91\xeb\x7f\xa7\xb9\xc5\x1b\x89\x05\x51\xbe\x51\x35\x9e\x29\x70\xf3\x2e\x30\xa6\xa6\x65\x67\x6b\x7d\xa2\x09\xad\x2e\xef\xd2\xd6\x7c\x82\xd3\xbd\xbc\x87\xe2\x02\xd8\xf1\x55\x7a\x4b\x6d\xf8\x5d\xd5\xa1\x7f\x27\xea\xb3\xd6\x6c\x1e\xf9\x05\xf3\x69\x7d\x0a\xfd\x19\x88\xf1\x2f\x64\xe8\x7b\x1c\x30\xf4\x91\x85\xef\x71\xed\x4d\x24\xba\x41\x39\x63\xf9\xcc\xb7\xea\xf0\x81\x9a\x4b\xf5\x87\xc4\xfb\x57\xa2\xfd\x91\x86\x76\xb6\xc5\x06\xc5\xb1\x8c\x4b\xf8\x31\x58\x7f\xfa\x5f\xe9\x0b\xac\xb6\xef\x38\x2a\x4a\x46\x59\x86\x2e\x07\xae\x41\x1c\xd8\x4e\xf5\x57\x03\xdf\xa9\xfe\xea\x60\x3c\xd5\x5f\x2d\x9c\xa7\xfa\xab\x81\xf5\x34\xbd\x0f\xc1\x7b\xaa\xbf\x3a\x98\x4f\xfd\x3e\x04\xf7\xa9\xfe\x82\xb0\x9f\xee\x2c\xda\x1d\xa9\xc5\x48\x75\x44\x43\x6e\xcd\x4e\x53\xa7\xfe\xee\x16\xd9\xb9\x4e\x7d\x4b\x57\x08\x1a\xb6\x3f\xd5\xac\x0d\x3b\xea\x3e\xc3\xf6\x02\x66\xed\xc5\x8d\xda\x0b\x99\xb4\xb5\x19\x86\xf4\xd0\xb9\xe6\xec\x7b\x8d\xd9\xff\xa7\x9e\x0d\xf3\x6e\x02\xf5\x28\xb3\x29\x66\x74\xd3\xff\x86\x29\x59\x69\x85\x64\x72\x0d\xfd\x2c\x6a\x74\x4e\x06\x84\x56\xaf\xb3\x69\xe5\xa5\x99\x7b\xdf\xfc\xfc\x90\x1b\x13\xdd\xd4\x72\x45\x47\x17\x08\x72\xe9\xd2\x5e\xd3\x74\x7c\x59\xf5\xb1\x45\x34\xa8\xdc\x15\xe0\x69\xd7\x2a\xd1\xcd\xa6\xad\xa5\x9e\xd8\xd9\x31\x83\x6e\xbd\x0f\x5c\x8f\xfc\x5f\xdd\xb7\xd8\x23\xfa\x2f\xbc\x7b\xf1\x0c\x0f\x7a\xf5\xe6\x5d\x9b\xeb\x29\x0b\x5d\x9f\x07\x5f\xd6\x05\x48\x20\x57\x5c\x0e\x56\xaa\x75\xb1\xad\xb5\xf6\xcc\xb5\xf3\xcc\xb1\xf0\x84\x5d\x72\x54\xd7\x02\x15\x7c\xf7\xcb\xca\x1e\xb4\x39\x42\x30\x64\x89\x64\x39\x4b\x98\xc3\x41\x01\xc5\xee\x6c\x23\x1e\x26\x42\x1b\xab\x67\xcf\xd1\x7a\xe4\x00\x41\x18\xe7\x4c\xff\xbe\x57\xe8\x94\xf3\x8f\xff\x34\x7c\xfc\xf7\xf4\x91\xd8\x7c\x60\xbd\x95\x8f\x7f\x5a\x19\x7c\xfc\x7b\xfa\xc8\x74\xab\x15\x88\xe0\x53\x62\xdd\xc1\xd9\x42\x02\xac\xc3\x25\x2b\x0e\xc1\x81\x29\xa9\x76\x90\x33\x21\xa1\x95\xc2\xbb\xc7\x9e\x7b\x4c\xcf\x71\xc6\x5b\xb8\xc3\x1b\x6b\x0f\x55\x39\x51\x20\xff\x5c\xbe\xbe\x0a\x20\xc6\x74\xa8\xbf\x5e\x2f\xe3\xef\xff\x75\xf1\x98\x3b\x2a\x1e\x0a\xa1\x0a\x40\xe0\x78\x46\x6a\xbb\x9c\x23\x01\xea\x73\x06\xdf\xd9\xaf\xee\x31\x4c\xff\x21\x78\xe6\x03\x20\xb7\x96\xb5\xf7\xb5\x23\x9d\xf1\xd4\xc1\xb9\xe8\xc8\x65\xf4\xdc\x87\x17\x77\xd8\x9b\xdb\x40\x2d\x0f\xae\x99\x5e\xc5\xe6\x6a\x5e\xdf\xc7\x87\x83\xd5\xaa\x4a\xe8\xdc\x5d\xea\x78\x93\xd7\xfa\x8e\xb3\xd5\x20\x2a\x6a\x9d\xa5\x1d\xa2\xde\x3b\x38\x7d\x48\x18\xe9\xa9\x45\xd0\xf7\xcb\xd9\x4a\xe7\x0f\x0a\xda\xca\x6e\x10\x74\x20\xd1\x2f\xff\x00\x82\xf6\xe2\x9e\x23\xff\xde\xa2\xf6\xbf\x85\x7c\xad\x49\xea\xab\x80\xfd\x55\xc0\xfe\x2a\x60\x3f\x50\xc0\x7e\xb8\xe8\xa5\xdd\xc8\x3f\xa7\xd0\x95\x8d\xc7\x05\xda\xcb\xab\x5c\xc0\x95\xca\x54\x67\x5b\xf3\xe4\x32\x38\x95\x1e\x22\x98\x71\xf9\xaf\x92\xd9\x03\x25\x33\x5e\xb5\xff\x0e\xc9\x0c\x43\x37\x46\x72\x2c\x0e\x8e\x10\xa7\xff\xfc\xf4\xec\xe4\xe0\xe5\x59\x80\x66\x78\x5a\xd4\xb5\xfe\x68\x12\x7d\x7c\xc0\xb6\x2a\xb3\x4c\x8c\xa3\x5c\x40\x77\xbe\x40\x88\xc6\x5c\x81\x52\x77\xc2\x11\x29\x69\x3c\xb5\x37\x1d\xaf\x77\xcf\x5e\xfe\xb8\xf0\x5e\xc3\xd2\xee\x4e\x23\x33\xf7\x02\xb4\xce\xde\x1e\x78\x69\xd0\xf1\x2e\x0d\x02\xd3\xcf\xf1\x7f\xc2\xea\x19\x25\x65\xcb\xb3\x89\x93\x5c\xd4\x6b\xdf\x69\xa6\x13\x44\x9c\x72\xfc\x36\x6e\x38\x96\xb0\xb2\x89\xe9\x75\x11\xa5\x95\xb7\x9f\x4a\x03\xf7\xd1\x41\x80\x16\x14\x3d\x88\xe6\x37\x2d\x4a\xad\x4c\x5e\x0f\x71\x01\xdf\x8b\x2e\x12\x39\x12\x71\x4a\xb9\x48\x46\x72\x1c\xcd\x92\xb2\x68\x43\xf9\x51\x96\x3e\x2e\x85\x4c\x29\x8d\x61\x89\xc2\xd8\x45\x8c\xf9\x8b\x87\xd9\x64\x1a\x95\xf1\x45\x9c\xc4\xe5\x6d\x75\x67\xec\x1e\x1e\x1e\xff\x74\x7e\x70\xf4\x97\xdd\xc3\x83\xbd\x73\xe0\xae\xbb\x47\x2f\xf7\xcf\xcf\x8e\x8f\xbf\xdf\x3d\x39\xdf\x3d\x39\x39\x69\x18\xeb\x88\x10\x48\x98\x55\xb2\xec\x0e\xd5\x3c\xb0\x05\xc2\xae\xa3\x52\x91\x5a\x2b\xe0\x16\xa8\xac\x92\x41\xa8\x0c\x05\x8e\xd2\x14\x85\x6a\xd7\x04\x7f\xda\xa5\xdd\x28\x49\xfb\x8d\xa3\xc1\x06\x4b\x20\x90\x9d\xfd\x40\x5d\x0b\xbd\x9b\xce\x4a\x72\xa1\x59\x71\x6b\x68\xf0\xb6\x4e\x87\x91\x47\xfd\x9e\xbb\x56\x33\xb5\xb1\x2a\x57\x84\xde\x28\x98\x6e\x2a\x9c\xa3\xea\x41\xee\x52\x3f\xc2\xb9\x79\xf4\xed\x2d\x8f\x7f\x81\x27\x68\x0f\xfa\x59\x72\xe7\x41\x8d\x06\x3c\xf9\xdc\x36\xf0\x2e\x6c\x7e\x1b\x0f\xa7\x09\xf7\x63\x9c\x1e\xd3\x7c\x13\x79\x48\x48\xaa\xa1\xde\x8a\xb9\x7f\x0e\x3b\xb2\x93\x83\x86\x3f\x59\xbd\x1e\xe4\xf1\x4f\x91\x1b\xda\x4c\x6b\xab\x8e\xa7\xf9\x8a\xbf\xab\xee\x2d\x16\xed\x1c\x0e\x09\x0e\x13\xba\x7a\xeb\xa1\x35\xfa\x04\x6e\x0d\xf4\x1d\xfc\xdb\x01\x6d\xac\x92\xbb\xdd\xe7\xc5\x49\x5d\xd5\xaa\x06\x05\x1f\x1e\x9c\x7d\xe2\x81\xe4\x0f\x24\x3c\xcb\xd0\x9c\x2d\x9e\xd5\xdf\xd5\x57\xfb\x86\x80\x46\x75\x69\x0c\xe7\x87\x2c\x0e\xe6\xc5\x2c\x0e\xbe\x88\xd0\xc9\x88\xdd\x8f\x7f\x7b\x2c\xe2\xb4\x28\x65\x84\x56\xe4\xc7\xcb\x8f\x45\x99\x89\x49\xf4\x41\x8a\x62\x96\x4b\x51\x5e\x45\xa5\xc8\x65\x31\x4b\x30\xd5\x7c\x11\x5f\xa6\x72\x54\x95\x5e\x7f\xfb\x52\xd2\x2b\x09\x10\x35\x6e\x07\x65\x56\x46\xe4\x97\xb0\x4c\xa2\x46\x55\x06\xc3\x22\xa1\xd7\x30\x89\xe8\x1f\x10\x42\x28\x0c\x82\x85\x55\x4c\x15\xbd\xa5\xb7\x6f\xf6\x76\xcf\xf6\x5d\xfc\x4c\xda\xe3\xd0\xb4\x72\x40\x08\x60\x68\x3b\x88\x80\xdf\x85\x60\x38\x15\x76\x00\x35\x64\x1a\x6d\x89\x4d\xa1\x20\xcb\x16\xab\xe0\x82\xef\xde\xf9\x93\x5b\x9d\xdb\x5e\x4f\x1c\xbd\xd8\xa4\x4e\xa9\x60\xfe\x48\xad\xbd\x58\x1d\x74\x2e\xe2\x52\xc4\x69\xd9\x56\xc8\x79\x8c\xc3\xa6\x8b\x94\x59\xe6\xcd\xb4\x37\x5e\xa4\x99\x4d\x17\x78\x8f\x40\x45\xac\x21\xcd\xc3\x8e\x34\x99\x01\x47\x51\x19\x05\xf2\x02\xfe\xe1\xc0\x23\xef\x8b\x4a\x24\x22\x43\x14\x4c\x59\x88\x32\x8f\xe2\x44\xe6\xde\x7d\x4e\x0d\x98\xe9\xe1\xfe\xd1\x0f\x67\x8b\x8b\xf5\x54\xbc\x36\xdf\x2a\xe6\xdd\xd5\x8b\xf5\x87\xe3\x5b\xff\x7a\x48\x53\x62\x21\xca\x98\x77\x2f\xac\xa9\x21\x4d\x75\xe3\xf5\xef\x4f\x9c\x3c\x92\x4f\xa2\xce\xbd\xe3\xa3\xc5\x01\x13\xa1\xb0\xa1\x4c\x95\x75\x58\xa5\x78\x3e\xda\xf3\xce\xdf\x2a\xe6\x17\xb6\xf2\xc2\x4e\x27\xac\x1a\xd9\xdb\x3d\xdb\x35\x59\xa2\xef\x6f\xe4\xf5\xfe\x6b\xa7\x11\x02\x9a\x7c\xbd\xff\xda\x6d\x84\x50\xa8\x7e\x3e\xb2\x10\x82\xeb\xc7\xc8\x4a\x5b\xa0\x5d\x3f\x8b\x35\x4d\xe7\x1d\xe5\x9a\x36\x3d\x14\xcf\x3b\x64\x5b\x8e\x0b\x91\xcb\x28\x11\xd3\x24\x1a\x4a\xd4\xf7\x1e\x61\x1a\x66\x5d\xf2\x51\x9b\x53\x32\xcb\x91\xb8\x8e\x23\xf1\xc8\x1b\xeb\x23\x6c\x7a\x89\x7a\x72\x42\xdd\x40\x29\x95\x97\xbd\xd9\x6a\x8b\xd9\x74\x14\x95\xca\x29\x9c\xb6\xc1\x30\x9b\xa5\x65\x81\xde\xe6\xe8\x5a\x8e\x5c\x0b\xfd\xc0\xd9\x15\xf5\x60\x0c\x2f\x72\x29\x6e\xa2\x02\xbd\x59\xf3\xec\x32\x97\x45\x21\x46\xb3\x5c\x35\xa5\x3f\x21\x86\x51\x92\xb4\xd5\x2c\x44\x9c\x10\x9d\x1a\xc2\x88\x82\xae\x10\x2f\xa3\x24\xa1\x9e\x48\x12\xe2\x9b\x2d\xcc\xd9\x9e\xcb\xa8\x94\xd0\x91\x5e\x96\xf3\x7b\x6c\x5c\xe5\x0c\x45\x1a\xa4\xa6\x8e\xd0\xc3\x3e\x52\x90\xe0\x14\xab\xe0\x0e\x16\x26\x34\xcd\xd2\x4e\x2e\x87\xd9\xb5\xcc\x41\x91\xc6\xca\x4b\x3d\x93\xee\xdb\x77\xa1\xac\x71\x9d\xac\x75\x99\xac\x71\x95\xac\x73\x91\x0c\xba\x46\x06\x5d\x22\xb5\x13\x9f\xc5\xca\x51\x4f\xfb\xed\x37\x12\x72\xf8\x68\x75\xfa\xa5\xf9\x3c\xee\xd3\xe7\xb0\x69\x42\x38\xe8\xf4\xd7\x74\x8a\xa2\xa4\x6b\x80\x4b\x29\x27\xe6\xf7\x07\x47\x07\xa7\x3f\xb6\x34\x6f\x84\xbe\x38\xcb\x46\x3e\x99\x96\xff\x64\xdb\x9d\xc1\xb6\xb2\x16\xb9\x1d\xb5\x98\xad\x6b\xcb\xda\x7f\xad\xf6\x60\xdd\xee\xa4\x2d\x44\xa9\xcd\x3b\x01\xf7\x49\x25\x5c\x56\xbd\x36\x2d\xf1\x32\x4e\x51\x7c\xa4\x1a\xf5\x62\x67\x8d\xb8\x59\x3d\x5c\x6d\xa1\x73\x0e\x32\x6d\x58\xb8\x74\x49\xae\x46\xcc\x7c\xa8\x70\x19\x6a\x74\x41\x31\x33\x58\x15\xcf\x84\x3b\x35\x5b\x20\xa0\x9d\x97\xb7\x53\xe9\xf8\xa0\x8a\x65\x1b\x93\x56\x7c\x27\x36\xd6\xc4\x26\x08\x05\x35\x37\x82\x01\x97\x54\xf1\x9d\xe8\x0f\x9e\x3e\xa4\xd6\xe1\xfe\xd1\xb9\xc1\xe6\xd1\x8f\x11\xf4\x4c\x7c\x27\x06\xeb\x1b\xd8\x9a\x5a\xb7\x66\x13\x37\x24\x08\x2b\x6a\xe1\x94\xe8\xe2\x81\xf6\x32\xed\x43\x29\x3c\x6e\xb6\x29\x57\xbe\x5a\x66\x75\x04\xbd\x78\xfb\xbd\x21\xcf\xbb\x86\x26\xdc\x5c\x96\x5b\x8d\xbb\x46\x63\x3c\x4b\x87\x65\x9c\xa5\x8a\x2d\xed\xa7\x23\xdc\x35\xd0\x4e\x43\x67\x63\xca\x27\xf0\x79\xfc\x47\x17\x47\x22\x7a\x4b\x38\xa8\x7c\xd2\xd9\xf9\x65\x9c\x4b\x18\x95\x68\xc2\x3f\xce\xa1\xc5\xd6\x8a\x01\x72\xad\x3d\x6f\xf0\xa4\xb9\x8e\x72\x9a\x1b\xe5\x6b\x8c\x3f\x3c\x32\xc6\xcd\x6c\x08\xd8\x3c\xb3\xb0\xf7\xf5\xe2\xab\xd6\xd4\x0b\xfd\xfd\xe3\x57\xc1\x11\xff\x20\xcb\x1f\x11\x16\x9e\xb9\x85\x81\x57\xd7\x7d\xdb\xa2\x83\x8b\x8f\x1e\xfa\x00\x92\x7e\xdd\xf4\x80\xa0\x19\x1e\x37\xf7\xb3\x6e\xc0\x95\xcc\xfa\x5a\x6e\xad\x6d\x8e\xba\x56\xc0\x49\xcd\xf0\xf6\x45\x99\xcf\x86\x25\xa8\xd2\xd8\x49\x66\xea\xa0\x6e\x6f\x63\x11\xf8\x58\x30\x45\xfb\x7d\x53\x75\x2a\xcb\xbd\x18\x9f\x44\xf9\x2d\x4f\xd7\x48\x3f\x30\x93\x06\xcf\x0e\x95\x57\x9e\x29\xa0\x4d\x1f\xee\xdc\x9a\x3a\xf1\x48\xfd\x42\xf2\xbc\x77\xd2\x7b\x4b\x02\xc9\xfe\xe8\xed\xe1\xa1\x58\xea\x55\x69\xd4\x79\xfd\x09\x8b\x52\xe5\xa6\xdf\xa8\xad\x69\x6d\x68\x78\xb6\x77\xf0\xf2\x6c\x31\x8a\x77\x22\x0d\xb5\x4a\xa9\x27\x49\xc4\x23\x99\x96\xf1\x38\x56\x49\xf7\x03\xde\xf1\xf6\xc7\x68\xde\xc4\xb6\xe8\x6f\x41\xd3\x1a\x5a\xbc\x8d\x1b\x80\x70\xc5\x1b\x2c\x22\xea\xb2\xaa\x14\x3d\xb0\x17\xb1\x6d\x2d\x9e\x81\xbb\x7b\x60\x45\x93\xd3\x0f\x3a\xcf\x95\x6b\x55\x6d\x3d\x5d\xbe\xb8\xac\xce\x52\x65\x0a\xb5\x26\xa9\xcc\x94\xd0\x35\xc3\xb8\x49\x57\x58\x53\xc1\x83\x37\x71\x92\x88\x68\x22\x49\x72\x84\x36\xe5\xc7\xb8\x40\xf1\xd2\x9e\xf0\xb1\x88\xa6\xd3\x3c\x9b\xe6\xb1\xa6\x31\x62\x9f\x01\x59\xa2\x6e\xc0\xf6\xac\x35\x2a\xd1\x49\x61\x29\x22\x2c\x43\xdc\x35\x6c\x34\x20\x42\xdb\x27\x00\xbc\x5e\x4f\xcc\xd3\x98\xac\x21\x15\xb2\xd4\x9a\x92\xbf\xa9\xe5\xc7\x69\x96\x97\x45\x97\x6b\x9e\xc8\xc2\x0e\x45\xc3\x9f\x5b\xc1\x42\x03\xaf\xd4\x20\x5c\xec\x95\x94\x53\xaf\x24\x3c\xaa\x14\x3e\x48\x63\xeb\xbb\xf0\x2b\x58\x64\xe0\x96\xa9\x7e\xd4\xbc\xaf\xbc\xda\x4f\x47\xe6\xed\x7e\x3a\xaa\x14\xd0\xbc\xdf\x14\xd3\x8f\x2a\x85\x1d\xee\x67\x2a\x38\x8f\x03\x43\x18\x67\xa0\xa2\x4f\xa3\x0f\x99\xaa\x01\x07\x65\x36\x11\x47\xd9\x48\x0e\x23\xd0\x56\xfe\x47\x0e\xcb\xd6\xe3\xad\x46\xa3\xb7\x04\x8a\x83\x88\x27\xd3\x44\x52\x10\x9e\xdf\xde\x4b\x32\xbb\x5b\xbf\x42\x83\x0a\xf5\xf3\x87\xb9\xfd\x7c\x1d\xe5\x1f\x4c\x59\xf8\x55\x29\xf2\x26\xa7\x4c\xd5\xf6\xcf\xea\x24\xdd\xa6\x43\x6b\x6e\x6e\xd3\x61\xb0\xc8\x9b\x2c\x4e\x4b\xb7\x1c\x3e\xaa\x14\x7e\x9b\x8e\x64\x3e\x89\x53\xeb\xc3\xfa\xd1\x56\x03\x54\xa5\xbb\xf6\xaf\x8f\xba\xdd\x1e\xe2\xa0\xf6\x86\xd9\x64\x92\xa5\x8f\x36\x57\xd7\xda\x8f\xba\x3d\xe6\x56\x8f\x36\x57\xd7\xe1\x27\x4a\xa5\x8f\x36\x57\x9f\xc0\x8f\x38\x1d\x8f\xa3\xa2\x7c\xb4\xb9\xfa\x8c\x7f\x62\x90\xf2\xa3\xcd\xb5\xfe\xdd\xfb\xf6\x5a\x7f\xf3\x9d\x3a\xfd\x9a\xb9\xfc\xe7\x2c\xce\x65\x7b\x92\x8d\x66\x89\x6c\x73\x0f\x5b\xbf\x36\x1e\xcf\x0a\x09\xe7\x45\x3c\x2c\x71\xf5\x7a\xa2\xf9\xb2\x25\xfa\xcf\x9e\xad\x77\x06\x2b\xfd\x55\xf1\x67\x19\xa5\x9d\x24\x9b\x4d\xc5\x0f\x51\x9c\x24\xb7\xa8\xc3\xe2\x4c\xef\x42\xcf\x54\x85\xc1\x4a\x7f\x0d\x2a\x3c\x11\x7f\x89\xcb\x28\xb9\x15\x6f\x66\xbf\xe4\x71\x8a\xa5\x77\xd3\x51\x2e\x6f\xc5\xd9\x6c\x1a\x97\x45\x9c\x36\x10\x25\x92\x2e\x6a\x8b\x6c\x5c\xde\x44\xa4\x98\x4f\xf3\xec\x3a\x1e\xc9\x91\x78\x1c\x15\x9d\xb8\x78\xdc\xd6\x51\xd9\x51\x7a\x2b\xe4\xc7\x29\xea\xc3\x59\x8e\xa4\x15\xcb\x11\x34\x72\x13\xe5\x79\x94\x96\xb7\x5d\x71\x90\x82\xda\x2c\xaf\x65\x5a\x12\xcf\x04\xa5\x36\x9a\x95\x57\x59\x5e\x88\x0b\x90\x2b\x92\x91\x48\x62\xbc\xea\xc5\x2c\x91\xe9\xad\x18\x45\x93\xe8\x52\x16\xd0\x50\x94\xc7\xc8\x84\x91\xaa\xa1\x2a\x4c\x4b\x06\x4a\xb9\xd5\xcb\x2e\x77\xfd\x0d\xac\x5d\x51\xa0\x54\x51\x88\x4b\xe8\x01\xe5\xa9\x8c\xd2\x5b\x10\x47\x38\x0c\xd7\xa9\xab\x3f\x3a\x9d\xe5\xd3\xac\x90\x78\x01\x1d\xa7\xc3\x64\x86\x01\xe7\x18\xb1\x9a\x0f\xe3\x28\x01\x46\x9e\xc4\xc3\x08\x96\xad\x68\x93\xc9\x20\x13\x51\x52\xca\x5c\xc4\x25\xfe\xce\xe5\x28\x86\x25\xbb\x98\x95\x52\xc4\x25\xb4\x04\x62\x6b\x72\xdb\x16\xc5\xec\x02\x76\x22\x54\x81\x51\x8c\xb3\x24\xc9\x6e\xe0\x03\xb9\xa4\x45\x86\x56\x37\x79\x1c\xfd\xae\x38\xbb\x92\x22\xcb\xe3\xcb\x38\xad\x8c\x56\x4c\x66\x45\x89\x41\xb3\x17\x52\x4c\xe2\x22\x97\xb0\x02\xb8\xa3\xb7\xc4\x6d\x36\xd3\xef\xe9\x8e\x75\x98\x44\xf1\x84\x2e\x3e\xe0\xe5\x4d\x9e\xb1\x65\x81\x9a\x8f\x12\x33\x8d\xe2\x60\x8c\x65\x2a\x93\x44\x2d\x01\xd9\x00\x35\x8c\x66\xc3\x12\x26\x40\x44\xc3\x0f\x69\x76\x93\xc8\xd1\x25\x26\xab\x8a\x53\x6c\x97\x4b\x88\x51\x36\x9c\xc1\x73\x9c\x31\x71\x83\x59\xcd\x2e\xb8\x29\x38\x14\xe5\x30\x46\x73\xce\xc5\xac\x24\x73\x45\x29\x78\x37\x8c\x60\x41\xc5\xa0\x2b\x76\x61\x76\xe5\x48\xf0\x55\xe4\xb5\xcc\x61\x71\x0b\x1a\xe1\x85\x14\xd3\x24\x8a\xd3\xe4\x56\x4c\xa2\xfc\x03\x5b\xf5\x67\xc3\x2b\x5a\x1c\x6b\x96\xe8\x9b\xee\x54\x41\xe1\x0b\xa9\x4c\x38\xd5\xb9\x80\x3a\xab\x5d\xda\x0d\x69\x56\xc6\x43\x29\x26\xd1\xad\x9a\xf6\x5c\x4e\xb2\x6b\x39\x02\xaa\x8f\xb8\x8f\x48\xa1\x40\x48\xdc\x59\x4d\x0a\x71\x96\x76\x1b\x0d\x90\x3c\x91\x8f\x88\x6d\x35\xcc\xe6\x63\x8f\xb7\x3c\x6e\x6d\x51\xc1\xd7\xbb\x7f\x7d\x71\x70\x76\x0a\x87\xf3\xfa\x16\x3e\x21\x0c\x83\xf3\xc3\xfd\x23\x78\xfa\x74\x7d\xe0\x3c\xc6\xe8\x6e\xb1\x2d\xd6\x9f\x0d\xb6\x1a\xbd\x9e\x79\x23\xb6\x45\xd3\xaa\xba\x6c\x97\x57\x1f\x43\x10\x45\x32\xa9\xc2\x4f\xfe\x44\x9f\x7e\xa9\x96\x07\x5c\x38\xb9\x88\x0a\xe0\x97\xef\x40\x72\x3a\x34\x31\x10\x85\x18\xac\x3f\xe9\x76\x07\x4f\xd7\x05\x96\x40\x49\x67\x15\xf3\xe9\xaf\xb7\xc5\x46\x5b\x3c\x69\x8b\xa7\x6d\xf1\xac\x2d\xfa\x2b\x6d\xd1\xef\xb7\x45\x7f\xb5\x2d\xfa\xeb\x6d\xd1\x7f\x42\x88\x8d\x83\xd5\xb6\x18\x3c\x69\x8b\xd5\x7e\x1b\xaa\xae\xb7\xc5\xda\x6a\x5b\xac\xf7\xdb\x62\xfd\x59\x5b\x6c\x40\xfd\xd5\xb6\x78\x06\x2d\x60\xb5\x55\x68\x63\x03\x1a\x79\xb6\xde\x16\x03\xa8\x3a\x58\x7f\x8a\xd1\xea\x2b\x8d\xf7\xaa\xbb\x14\xa6\x3a\xa7\xb7\xe4\xde\x87\xdd\xed\x6f\xb4\xe7\xff\xf7\xc4\xfb\xef\xa9\xf3\x1f\xb4\xf0\xac\xed\xfc\x37\x58\xf1\xfe\xeb\xbb\xff\x41\xab\x4f\x06\x6d\xf1\xe4\xa9\xee\xf1\xc8\x9e\xe0\x3d\xdb\xe3\xb1\x10\x2b\xdd\xee\xe0\x99\x35\xbf\x7d\xcc\x71\xad\x67\xf9\x09\xcd\xef\x2a\xf5\x6e\xb0\xde\x16\xab\xf0\x0e\x66\x6f\xbd\x2d\x9e\x41\x8f\x07\xd8\xb1\x55\xe8\xeb\x60\x1d\x26\xfb\xe9\x3a\xcc\xf1\x6a\x5b\x3c\xd9\xc0\xb5\x81\x5a\xfd\xf5\x55\xa8\xbf\x02\x35\x57\x57\x9e\x40\x1b\x2b\x50\x7b\xa3\xbf\xb6\x0e\x35\x9f\x42\x0b\xa2\x3f\x18\x3c\x7d\x86\x4b\x00\x6d\x0c\xd6\xd6\x9f\x3c\xf1\x26\x7f\x64\x4d\x7e\x70\x24\xf3\xe6\xde\x9f\x63\x7f\x46\xd5\x2c\x0e\xf0\x3f\x18\xcf\x2a\xd3\xd0\x1a\xff\xb7\xce\xff\x6d\xf0\x7f\x4f\xf0\x3f\x28\xf9\xb4\x4d\xff\x3d\xa3\xff\x36\xd6\xe0\x3f\xec\x36\x1d\xc3\x5d\x3e\x86\x41\x7f\xf5\xd4\x54\x86\x53\x28\x6f\xa7\xb2\x2d\x08\x47\x01\xfe\x97\xe0\x08\xda\x34\xba\x36\xe1\x1f\xf0\xff\x53\xaf\x2c\xf0\x84\x86\x52\x66\xeb\xb0\x0a\x7a\x3d\x76\x34\xc7\x37\xf0\x6f\x54\xc0\x08\xca\x58\xa6\x65\x4e\xd9\xa8\x47\x33\x7d\x22\xb1\x65\x97\x68\x9e\x00\x8b\x3c\xeb\x11\x28\x70\xe4\x39\x5b\xa8\x0b\x90\x38\xa5\x1e\xe0\x0a\xa0\xd6\x7c\x3b\xa9\xa9\x4a\x08\x0c\xd9\x98\xd0\x5e\x18\xc7\xd9\x54\x9c\xa0\xa9\x77\xa5\x2d\x26\xd1\x47\xaf\x85\xde\x12\xbc\x8d\x27\xb3\x09\xb1\xe5\xe8\x23\xfe\xdb\x81\x2c\xd5\xed\xe4\x59\x56\x06\x7a\xd0\x5b\x12\xe9\x6c\x72\x21\x73\xe8\x01\x75\x05\x3b\x0e\x93\x80\x55\x68\x66\x74\x33\xc3\x59\x9e\x3f\xb0\x19\xa8\x02\x87\x98\xd7\xd2\x28\x47\x6f\xf9\x40\x4b\x38\x00\xac\x5e\x66\x54\x0c\x9a\x29\x66\x17\x1d\xaf\x09\x8e\xa5\xaf\xcc\x6a\xa5\x47\xd3\x5c\x8e\xe3\x8f\xbc\x43\xd0\x7e\xeb\x36\x34\x2b\xe4\x68\x4e\x5f\x80\x2e\x62\x89\xb0\x38\xd4\x03\x2c\xaf\x6b\x5f\xcd\xc6\xe3\x70\xed\x1f\x67\xe3\xf1\x24\x4a\xa9\x15\x5d\x3e\x4e\x87\x79\xb5\x2c\x8c\x11\xde\xa0\x0a\x41\x02\xd2\x48\xb6\x79\x32\x75\xdd\x71\x9c\x24\xd5\xba\x54\x08\xd7\x4c\x32\xe1\x22\x2c\x11\x75\xdb\xcc\x57\x76\x13\x20\xc0\x24\xbb\xa9\x2e\x16\xae\x3d\xed\x07\x43\x8a\x51\xf1\xa1\xfa\x6d\x78\x8a\x55\xa1\x1d\xac\xe6\x52\x3e\xde\x5e\x54\x96\x06\x18\x98\x59\x88\x62\x1a\x0d\xa5\x99\x5e\x5d\x97\x39\x36\x1a\x05\x55\x55\x7c\x86\x17\x49\x5c\x9a\x65\x4f\xa7\x92\xc6\x35\x61\x3f\x3b\xdc\x82\x57\x19\x39\x00\x73\x43\xc4\x23\x89\xce\x82\x0d\xc9\x74\x14\xa2\x2c\x95\x6e\x16\x3b\x02\x1b\x8f\xb3\xb8\x67\x39\xef\x5e\xb1\x83\xb1\x96\x66\xcf\x64\x33\x4a\x38\x2a\x6f\x38\xf1\xc3\x8b\xd9\xb8\xbf\xd1\x54\xb2\xc8\xb2\xe8\xb7\xb6\x44\xaf\xf7\x8e\x1f\x2c\xf7\xdf\x6f\x55\x48\x98\xf1\x49\xc6\x42\x46\xc3\x2b\xc5\x66\xf4\x27\xb2\xf1\xb8\xf8\x84\x2f\xc0\x27\xc8\xbd\xcc\x22\x6e\xc4\xd2\x0a\x7d\x44\xa7\xd9\x67\x1b\xad\x7e\x66\xcf\xb6\xda\x13\x2a\x2c\xa1\xad\x22\x63\xda\x56\x1c\x80\xbe\x51\x7c\x43\x59\xfe\x45\x24\x0a\x59\x6a\x26\xa8\x98\x97\x75\x7b\x27\x86\x51\x9a\xa5\xf1\x30\x4a\x9c\x4d\xd5\x15\x20\xcf\x37\x7c\xa0\x66\x90\xe5\x11\xd5\x6b\xa5\x4b\xd8\x41\x9d\xfe\xfb\xae\x10\xfb\xd6\xa8\xd0\x86\x57\x4c\xb3\x74\x54\xb0\xea\x00\xad\x28\xf6\x6b\xea\xd1\x17\xdc\x9d\x0c\x2a\x90\x4c\x65\x4e\x42\xf6\xad\x18\xc7\x79\x51\x8a\x22\xcb\xd5\x1d\xa8\xdd\xd4\x85\xc6\xeb\x47\x39\xb6\xb8\xca\x72\x54\x56\x92\x2c\xbd\x6c\xb3\x72\x53\x46\xb1\xc6\xd4\x62\x1a\x42\xc4\xf3\x06\xc7\x4b\xd1\xe2\x83\x72\x28\xe4\x3f\x67\x51\xa2\x06\x4a\x9d\x4b\x19\xbc\x0b\x8e\x8f\x32\x82\xd3\x15\x4b\x46\x49\x22\x7e\x91\x79\x26\x14\x20\x18\xb4\x84\x2a\x12\x76\x17\xcb\xa3\x06\x24\xa9\x53\xb2\x50\x9e\x08\x6d\x73\x6d\x4b\x1c\x13\xd4\xd5\xb4\x94\x97\xd4\x23\xcd\xa5\x0a\xdd\x64\x11\x4d\xa4\x53\x19\x3e\x4c\x15\xa3\xe9\x54\xa6\x23\x52\x0b\x18\xad\xec\xb2\xbc\xd2\xed\x44\x85\x84\x61\x7c\xcf\x0d\x8d\x24\x19\x5b\xc6\x59\x3e\x89\xca\x36\x3c\x2b\xf8\x30\x80\xc6\x54\x42\xa0\x68\xf8\xe1\x26\xca\x47\x34\x2c\x56\x60\xe3\x5c\x4c\xb2\x5c\x8a\x34\x2a\x67\x79\x94\xa8\x1e\x9b\xee\xd2\x9c\xc6\x6a\xda\x8b\x4c\xdc\xf0\xe4\x35\xf0\xca\x7d\x98\x11\x12\x1a\x41\x2c\xc1\xe7\x2e\x66\x71\xa2\xb5\xaf\x24\xca\x2f\xa5\x48\xb2\x6c\x4a\xe8\x4a\x6d\xbe\xa2\xa6\xaf\xe0\x4c\x41\x3b\x34\x59\xfc\x49\xbb\xaf\x5d\xf4\xae\x42\xb5\x27\xcf\x66\x65\x9c\x4a\x11\x15\xc5\x6c\x02\x62\x0d\x68\x6a\xa3\x4c\x16\x0c\xed\x86\x17\x68\xa8\x58\xc2\x22\xf2\x22\x99\x53\xa8\x41\x9e\x16\xc5\xbb\xf7\xfc\x35\x7c\x9f\x23\x20\xdc\x4a\xb7\xcb\x9b\x9c\x29\x77\x18\x25\x89\xcc\x49\x69\x83\xef\xe5\xa4\x81\xe2\xa5\x75\x5f\x17\x06\x9a\x46\x34\xa9\x69\x2e\x4b\xb5\x58\x51\x69\x6f\xab\xae\x20\x72\x9a\xc8\x28\xe5\xb7\xf0\x3f\x86\xd6\xcd\x08\xb2\xe1\x70\x96\x53\xbf\xe2\x82\x36\x2a\x0f\xde\x26\x29\xd8\x30\xb4\x81\x86\xd9\x64\x3a\xc3\xcd\x13\x31\xb7\xd4\x1c\xcf\xe3\x46\x98\x60\x09\x99\x82\x65\xbb\x80\x79\x62\xe6\x95\x8d\x69\x0f\xc0\xdb\x38\x1d\xc5\xc3\x6a\x13\x3c\x5f\xd8\x6f\xea\x01\x0b\x95\x4c\xf4\x29\xcc\xb4\xcc\xdd\xfd\x88\xfc\x11\xe9\x47\x4d\x37\xd5\x6d\xa8\x3c\x18\x3c\xdb\x76\x8b\x30\xa7\x20\x9b\xbe\x7b\x4f\x86\x1d\xea\x29\x9d\x75\xa4\x20\x6b\x03\xd0\xc5\x2d\x36\xa4\x97\xcb\x4c\x97\x66\x57\xe4\x4e\x91\xb3\xf0\x01\x63\xca\xca\x2b\x99\x2b\xeb\x4a\x01\x4b\x76\x23\x93\xa4\x2d\xe2\xae\xec\x8a\x31\x8c\x3e\xbd\x54\xcd\x86\x04\x45\x2b\xd0\xbe\x68\x8b\x91\x2c\xd1\x40\x87\x33\xa7\x7c\x33\x70\x03\xa7\xb7\x0d\x0d\x90\x45\x24\xd9\x26\x1a\xc5\x25\x00\x45\x5d\x70\xba\x2e\xe2\xe1\xcc\x9c\x68\x42\x93\x2c\xc3\x72\xd1\x95\x8c\x70\xb6\xa2\xd2\x1b\x13\x08\x79\xfc\x6d\x69\x49\x79\x94\x57\x04\x77\x28\xa2\x21\x5a\xac\xd5\xdb\xaa\xb6\xff\xc5\x92\x88\x86\xc3\x19\xf9\xb3\xe8\xe3\xc0\xb0\xd0\x26\xef\x38\xbd\x7d\x12\xe0\x13\xd6\xa6\x61\x88\x48\x0c\x52\xd5\xe2\x3e\xfc\xe3\xf9\xb6\xb2\x1d\xe0\xef\xe5\x65\x75\x4b\x80\xa3\x78\x97\xc8\x54\x27\xa4\xb8\x53\x0d\x68\xa1\x1f\xfe\xf1\x9c\xba\x80\x3f\x02\xb5\x8b\x77\x46\xdb\x11\xcb\x50\xe8\xfd\xfb\xe5\x65\xfb\xfe\x09\x93\xd1\x39\xe7\x5c\x1b\x3e\x33\x94\x2c\xa8\x67\xe2\x42\x22\x9d\xc5\x69\x40\x07\x60\xf9\x5f\xe9\x42\xd8\x3f\x52\x29\xf4\xb0\xe0\x27\xa6\x06\x85\x7f\x19\x48\x50\x72\x23\x87\x6e\x4e\xa2\x8f\xef\xe9\x2e\xcd\x8b\x3b\xbd\x53\x97\x27\xf0\x91\x1d\x61\x05\x47\xf1\x67\x27\xd1\xc7\x2d\xab\x1c\x7e\x58\xb5\x53\x23\x62\xa5\x99\xde\x7a\x20\x07\xc0\x80\x98\x1f\xaa\xab\xb1\x1e\x6d\xbc\x6c\xfa\xce\x47\xaf\x83\xa5\xd8\x58\xdb\x52\xea\x5e\x97\xe2\x72\x51\x16\xbb\x8a\xf2\x16\xbe\x62\xc1\xd9\x42\xf4\x44\x5b\x57\xee\x37\x0f\x33\x16\xfc\x40\x7f\x4b\xeb\x93\xca\xcf\xc6\x7c\x82\x11\x34\x54\x23\xd7\x51\x52\x69\x43\x05\x82\x98\x56\x28\x24\xb8\xc9\xc2\x6a\x5e\xb6\xd8\x17\x0f\x2b\xbd\xab\x54\xa5\xc0\xbc\xc1\x5a\x4b\xfc\x26\x9a\x1b\x6b\xf0\xa3\xbf\x01\x3f\x40\x0c\x5b\x70\x8a\x16\x1d\xea\xc2\xa3\xf9\xe4\x0e\x0b\x06\x62\x54\x73\xd9\x77\xae\xdb\x56\xb6\xaa\x74\x41\xc7\xe6\x4d\xc4\x71\x4c\x86\x2b\x64\xa0\x06\x81\x98\x45\x0e\x5c\xb8\xa0\x7a\x53\x92\x42\x0d\x44\x1e\xa7\xe2\x39\x52\x26\xfc\xd3\x6c\x49\x8b\xde\xe3\x74\x01\x7a\x7f\x0e\xd5\x7d\x7a\x27\x2f\xa0\xea\xd5\x71\x94\x8a\xec\x5a\xe6\x9d\x62\x76\x51\x0c\xf3\xf8\x82\x2c\x9d\x71\x0a\x27\x60\x22\x4b\xe9\xf1\x50\xea\x3b\xeb\xb9\xfd\x2d\x97\x33\xf5\xef\xe1\x4c\x58\xed\xf9\x73\x3d\x95\x26\xca\x43\x71\x2c\x73\xdd\x4b\x65\x6d\x20\x00\x9e\x78\x85\x05\x73\x67\x6d\x4d\x7f\x04\x7a\x82\x75\x4b\x3b\x74\xdd\xde\x24\x77\x9e\xed\x6d\x36\x85\xfe\xf6\x1b\x32\x19\x98\xd2\x7e\xcb\xbb\x78\xef\xf4\x83\xca\x16\x6f\x53\x67\x7e\xf8\x7b\x34\xb7\x4a\x12\xb7\x14\x99\x52\x91\x48\x8d\x46\x83\xaa\x1a\x4b\xeb\xd8\x16\x54\x7d\xd7\xd7\x04\x1c\x98\xe3\x9a\x29\xc6\x8a\x04\xf1\x8c\xd5\xd5\xef\xf7\x88\x03\x6d\x4f\xb3\x76\xf9\x00\xba\xac\xe8\x06\x6d\xf8\xa7\x2d\xf9\x2b\x46\x5e\x51\xc4\x16\x3d\x58\x68\x29\x42\xc7\x8a\xa6\x68\x5e\x68\x14\x51\x54\xc7\xc3\xc7\x10\xc6\xc1\xdc\x4e\x7c\x7f\x53\x54\xe1\x5e\x6a\xff\x4a\x34\x4e\xc0\x71\xea\x9f\xcf\x42\x1c\xb0\x28\x08\xd2\x33\xc9\xcd\xb4\x32\x28\x06\xa1\x10\x1f\x27\x18\xb4\x88\x12\x06\x59\x07\xd2\x91\xb8\x8a\x0a\xb2\x38\x19\x93\x52\xd7\x48\x91\x2c\x44\xa1\x3c\x14\x17\x68\x86\x81\xa6\x50\xd4\xe2\x29\x4b\x64\x8a\x15\x94\x24\x8b\xd2\x68\x7a\x2d\x73\x7d\x7d\xa5\x9a\xbe\x45\x4b\xd3\x14\xbd\x0c\xf2\x6c\xda\x50\x0e\xd1\xd9\x78\xac\x04\xf0\x8b\xac\x2c\xb3\x09\x2b\x2b\xac\x92\xa1\x94\x04\x04\x00\x83\x03\x4d\xb6\xbc\x8a\x52\x32\x5a\x2d\x63\xd7\xdb\x24\x81\x65\x85\x14\x65\x36\xb5\xdf\x60\xb8\x6b\x6a\x74\x1b\x5b\x69\x50\x0e\xc1\x70\xdc\x31\x78\x72\x99\xa9\x79\xb2\xe6\x0f\xc7\xaa\x6c\x3e\x98\x4a\x11\x75\x04\x12\x1f\x91\x17\xc5\xa4\x75\xd5\x5a\xe7\x50\x73\xd0\x86\xbe\xae\x10\x3f\x81\xc4\x05\x1d\x93\x1f\x87\x52\x92\x8a\x05\x05\xda\x46\x36\xa3\xfe\x92\x6a\x3e\x62\x18\xda\x11\x25\xcd\x35\xed\x91\xf1\x88\x34\x51\x9e\xe5\x06\xee\x18\x52\xa6\x1c\x63\x51\x36\xc6\xd5\xeb\xb2\x7a\x14\x17\xe8\x19\x85\x31\xac\x50\x10\xce\x7f\xcd\x41\x51\x22\x8c\x1a\x88\x94\x79\x63\xcb\x8b\x57\x7c\x0f\x46\x0a\x80\x1c\x75\x05\xcd\x76\x5c\x90\xde\xa2\x94\x3d\xdb\xae\x19\xe3\xf0\x88\x8e\x88\x04\x49\x6a\x55\x15\xb1\x28\x56\xf4\x06\x6f\x57\xa1\xd9\xc6\x79\x8b\xbc\x4e\xc5\x05\xe3\xef\xb6\x45\x4c\x77\x71\x72\x28\x8b\x82\x9d\x61\x40\x36\x26\xc1\xd8\xd2\x49\x7c\x0b\x88\x91\x8d\x6f\x50\x7d\x88\x7f\x91\xa1\x0f\x74\x6d\x75\xa1\xa1\x24\x4b\x4f\x63\x80\x3d\xa8\x95\x5f\xe2\x4f\xef\x31\x68\x58\x1a\xd2\x8b\x0a\xa3\xa2\xa1\xf3\x4d\x4a\xb7\x70\xac\xf6\x28\x91\x1b\x5e\x61\xbb\x1f\xa4\x9c\xa2\xa7\xff\xf0\x03\xae\x63\x76\x43\x49\x0a\x8d\x49\x1d\x94\x56\x0c\xe7\xb8\x90\x30\x45\x49\x92\x11\xb1\x2a\xc5\x1d\x9a\xd2\x9a\xd0\x52\x69\x2c\x82\xc0\x38\x70\xd6\x70\xf5\x79\x0c\x78\x8b\x06\x43\xd8\x3b\x38\x3d\xd3\xca\xfa\x65\x14\xa7\x45\xa9\x95\x28\x05\x48\xee\xdc\xee\x41\x25\xe7\x5a\xaf\xcc\xc4\xe5\x2c\xca\x47\xaa\x3a\x83\xaa\x2b\x15\x9b\xd4\xfb\xb8\x8c\xa3\xc4\xa6\x19\x5c\x01\xfd\x85\xae\x10\xa7\x52\xde\x03\x9f\x0e\xfd\x46\xdb\x44\x9c\x92\x61\x83\x6e\x2e\x49\x73\xb6\xed\x29\xf6\xbe\xd7\x52\x8e\x32\xc6\xa0\xe9\x81\x88\x21\x2a\x59\x37\x42\x8d\x2a\x49\x8c\x79\x50\x47\x60\x7c\x64\x45\x50\xbf\x6d\x5b\x8b\x30\x25\xbb\x1b\x93\x4d\xcc\x9b\x9c\x8c\x12\x53\xf8\x02\x8e\x42\x1f\xba\x5c\xbf\x00\x86\x49\x5a\x27\xf6\x25\x1a\x97\x92\x88\x4a\x64\xa9\xc4\xdd\x50\x90\x61\x87\xf6\x99\x2c\x4a\xb5\xdf\x7d\xeb\x0a\xf2\x85\x80\xf4\xed\x29\x73\x70\xda\xcf\xa6\x5a\x81\xc3\x34\xe3\x74\x0e\xf6\x7a\x62\x9a\xc1\xb4\x82\x44\x35\x2d\xe3\x49\xfc\x0b\x5d\xd7\x74\xd0\x38\x1b\x8f\x3b\x94\xca\xc6\x84\x2c\x16\x88\x18\xde\xa6\xba\xc0\xfb\xaf\xb3\x78\x24\x46\x12\xd1\xbf\x41\xbb\x4f\x46\xe2\xfa\x29\x4b\x31\xae\xe0\xa2\x0e\x4b\xb6\x47\x2b\x43\x28\x9c\x9c\x4a\x93\x18\xcd\x26\x93\x5b\xe2\xd5\x9d\x4e\x9a\x95\xd6\x1d\x01\x41\xef\x6d\x8b\x3e\x81\xdc\xdf\x99\x24\x3b\xfa\x2b\x40\x9f\xde\x47\xf0\x3e\x78\x4b\x3f\xe1\x23\xb9\xb3\x6d\x92\xbc\xaa\x6e\x24\x3a\x12\xdb\xb6\xc6\x3a\x25\xf1\xfb\x83\xf5\x0d\xbb\x03\x41\xcd\xab\xb7\xc4\x17\xd3\xdc\x73\xee\xcc\xc8\x74\x46\x7d\x75\x64\xbe\x8a\xad\x93\xa0\xa8\xc4\x1c\xde\x37\xb0\x55\x70\x7e\xe9\x82\x20\x9b\x52\xbb\x35\x37\x26\xaa\x07\xda\x82\x63\xee\x4d\x6a\xee\xcf\xc2\x35\x58\x90\x62\xd9\x39\x65\x79\x7c\x81\x8a\xb6\xa0\xc5\x38\xcc\x36\x26\x7a\xa5\xb6\x7b\xb5\x55\x66\x5a\x02\xc2\x16\xf8\xae\x0c\x58\x47\xe5\xe3\x95\xca\xd6\xb1\x8c\x95\x6b\xae\xc7\xfc\xca\xee\x35\x19\x30\x54\x1c\x08\x5d\x26\xe9\x9b\xa3\x04\x9d\xae\xc3\x12\x76\x6f\x49\x94\x79\x7c\x79\x29\x73\xef\xec\xba\x51\x82\xc0\x0e\x71\x3f\x6c\x89\x6f\xca\x50\x91\xf3\x06\xc6\xd7\x22\x16\xa7\x74\x2e\xa0\xf0\x9e\x68\x9b\x1a\xe8\x08\xb7\x2b\xf6\x35\x12\xe2\x50\xa0\xf5\x2d\x21\x2c\x0f\x5b\x85\x32\x57\x46\xd6\x31\x61\x3c\x6e\xdd\x0d\x05\x1a\x08\x7e\x6e\xc7\x3e\x06\x5a\xe2\xb7\xdf\x90\x6c\x4d\x61\xa2\xf8\x4a\x69\xf2\xe5\xf0\xd4\x14\x87\xca\xa7\xea\xfa\x42\x73\x60\xb2\xaf\x7d\x90\xa1\x19\xf0\x90\xcf\x60\x50\x24\x3b\xdb\xb7\xcf\xbc\xef\x6c\xcc\x31\x58\x83\x0e\xae\xb0\xd1\xd7\x50\x68\x47\x69\xfe\x39\xec\x3f\x23\xcd\x1b\x1c\x32\x1d\xc8\x67\xc1\x8d\xe9\x6a\x46\x94\xb7\x72\x7e\x99\x46\x77\xea\x1a\xc5\xdd\xff\xce\xe6\x33\xcb\xa6\xd1\xf7\x81\x2f\x02\xe3\x78\x67\x31\xb0\x6a\x71\xab\x13\xd5\xef\xad\x0e\xc4\xb2\x60\x7b\x8d\x22\x15\x1b\xc8\xd4\x84\xcc\x59\xdf\x5c\x51\x0d\xab\x79\xd6\x12\x32\x4b\x41\x19\x9e\x0c\x64\x1d\x26\x75\x21\xbb\x31\xc2\x38\x5d\xb1\x94\x19\xb1\x29\xfe\x00\x1c\xd2\x8a\xf0\x9b\x66\x45\xd8\x63\x1a\xf7\x3d\xbf\x85\xad\x49\x4f\xc9\xd4\x10\xb8\xb2\x15\xc6\xfb\x9f\x21\x69\xca\x8c\x18\x8e\x75\x01\xea\x40\x2c\xe0\x07\x3a\xdb\x74\x77\xcc\xcf\xc8\xca\x42\x69\xde\x45\x13\x3b\xbb\xb3\x43\xbd\x12\xcb\x58\xe3\xbd\x46\xd7\xa2\x58\x5b\x6d\x7c\x51\x13\xac\x2d\x30\x7a\xf6\x7e\x53\x93\xa7\xa2\x74\xf1\xcb\xa4\x32\x6e\xe9\x09\xd5\x97\x1a\xd6\xed\x0a\x5f\xee\x60\xd0\x37\x32\xa1\x7b\xa6\xaf\xcf\x73\xc7\xdf\xc1\xd2\xdf\x62\x41\x43\x78\x58\x6d\x67\x47\x9b\x30\xee\xf4\x06\xc0\x37\x9e\x26\x4b\x4d\xd0\x24\x21\x8f\xb1\x9f\x2f\xdb\x93\x77\xe7\xd1\x9b\x3a\x8f\x3c\xba\xb9\xcc\xf4\xc2\xd0\x99\xd2\x56\x01\x84\x28\x3c\xa3\x87\x8a\x1a\x21\x6a\xdf\x66\x83\x76\x3a\xb6\x61\xd8\xed\x27\xeb\xe6\xf8\x98\x6c\xa5\x3e\x88\x1f\x9d\x5a\x55\x7d\xbc\xba\x77\x3c\x56\xe2\xa9\x1f\x63\xd6\x0e\xf4\x32\xf0\x97\x99\xa5\x23\xde\x3a\xcd\x3b\xf0\x5f\x8a\xac\x4f\x4c\xd4\x0e\x1d\xe5\x63\xbe\x31\x2c\xe3\x89\x6c\x83\xa4\x9f\x16\x31\x8a\x5a\x65\x66\xab\x45\x7a\x27\x62\xf8\x40\x1e\x02\x6f\xe6\x43\x0d\x0f\x0e\x7e\xa8\xb3\xc3\x90\x99\x87\x69\x69\x1a\x15\x25\xa2\xee\xb9\x1b\x82\x4f\xe5\xe5\xea\x81\xde\x5b\xa2\x70\x57\xd8\x72\x71\x61\x36\x22\x1f\x20\x5c\xc4\xe8\x52\x2a\x85\xfa\x38\xb0\xed\xf4\xc9\xed\x33\x5e\x63\x89\x73\xf7\xb9\xc9\xa5\x05\xf5\x96\x69\x98\xcf\x85\x87\x11\xe6\x9a\xdf\xac\xa2\xef\x5d\xf8\x13\x32\xc5\x55\x8d\x8e\xa6\x6b\x8a\xce\x44\xc0\xc8\xe7\xce\xa8\x9d\x1d\x0b\x15\x0b\xeb\xc0\x14\x4a\x83\x5b\x0e\x0c\xe8\xc1\xa7\xa9\x78\xf8\x89\x2a\xbc\x53\xd5\xef\x3c\x1a\x16\xf8\x58\x8c\x53\x5b\xb0\xb0\x09\xcf\x0c\x86\xa4\x1c\x8b\x9e\xb5\xd3\xd7\x92\x36\x83\x27\xd9\x0d\x30\x45\x7b\xa8\x96\xed\x9b\xdf\xda\xf4\x69\x2c\xde\xfc\x92\x31\x89\x2a\x09\x73\x74\x37\x88\x2d\x73\x69\x36\x11\x6b\xc6\x8b\xcb\xae\xb9\x6e\x93\x1b\xb3\xda\x69\x19\x0e\x6c\x09\x1a\x4a\xae\xcc\xe5\x44\xb9\x0a\x58\x32\x43\x3c\xd6\xd6\x2d\x4b\x69\x6b\x82\x6e\x1b\xa5\xa5\x24\xdb\x0c\x28\x7f\x0d\xba\x7f\x9b\x64\xa0\x98\xa5\xd2\x6a\x0e\x1b\x6a\x8b\x22\x4e\x87\x92\xaf\xff\x02\x6d\xb6\x95\xba\x1e\xf0\x35\xa3\xdb\xcd\x9b\x08\xa5\xa1\xec\x86\x3e\x7a\x09\x47\x1b\xe8\x87\xe3\x28\x17\xac\x26\x5e\xc4\x65\xcb\x88\x6c\xb8\x5c\x0e\x1f\xb7\x2e\x2d\xf8\x6c\x83\x32\xfa\x4a\xc7\xd9\xf3\x8b\xde\xdf\x78\x0d\xf9\x1b\xdb\xbe\xd8\xf0\x8a\x3a\x37\x1a\xde\xbb\xa6\x2d\x08\x84\xaf\x36\x56\x1c\xdb\xaf\x2c\x15\xc1\x4f\xa3\x3c\x9a\x00\x37\x2a\x94\x3a\xeb\x13\x14\x6c\x4b\xd8\x3d\xd0\x80\x7d\x2f\xa2\x88\x53\x5f\x8c\x34\xee\xb6\x6a\xe3\x29\xee\xde\xb7\xd7\x06\x5f\x83\x22\xbe\x06\x45\x7c\x0d\x8a\xf8\xef\x0a\x8a\xa8\xb8\x5b\x03\x6f\x1d\x30\x2a\xe8\x63\x10\x0a\xad\xc8\xc3\xc7\x6d\xc5\x4f\xff\x76\x7e\xb4\xbf\xbf\x77\xbe\x77\xf0\xf2\x8c\x99\xec\x40\xb0\x1b\xb9\xaa\x5b\x94\xb9\x8c\x26\xa0\x84\x71\x35\x53\xd7\xc0\xaf\xd0\xc3\x3e\xd7\x5d\x51\x75\xed\x1a\x5e\xdd\xe3\x57\xee\xc3\x15\xae\xfb\xb8\xd3\x7f\x0c\xd5\x1f\x8f\x63\x95\x3d\xb4\xf2\xdd\xfd\x93\x93\xa3\x63\xfd\xa8\xd9\xe9\xb7\x54\xdd\x01\xd5\x55\x7d\x76\x6b\x3b\x7d\x3e\x39\x39\x3e\x81\xba\x03\x5d\x77\x95\xea\x22\x6e\x54\xf8\xbb\x26\xf4\x95\xbe\xbb\xaa\xeb\xae\x51\xdd\x38\x2d\x66\xe3\x71\x3c\x8c\x81\x5e\x09\x54\xe4\x71\x9b\xea\xea\xe8\x51\xee\xf3\x9a\xae\xbb\x4e\x75\x09\xe2\x24\xd8\x67\x0d\x0f\xc0\x75\xd7\x75\xdd\x0d\xf5\x5d\x85\xe6\x99\x68\x32\x7e\x4c\x75\xff\xb2\x7f\x72\x7a\x70\x7c\xc4\xf5\x9b\x9d\x0d\xac\xcb\x47\x08\x1c\x17\xab\x5f\x8f\x8b\xaf\xc7\xc5\xd7\xe3\xe2\xbf\xeb\xb8\xe8\x2d\x09\x59\x24\x71\x5a\x76\x18\x3f\x98\x14\xc5\xce\x0c\x8e\x87\x4e\x36\x45\x29\x75\xf1\x48\xbb\xde\x92\x78\x33\xbb\x48\xe2\xa1\x75\x13\xb7\xfd\xc9\x7f\x4b\xbd\x06\x82\x42\x7c\xb6\x3f\x18\x0b\x07\xf3\xfd\xed\xfc\xfb\x83\xc3\xb3\xfd\x93\xfd\x3d\xc3\xdb\x51\x97\x56\xaf\x7f\x7c\xfb\xfd\xf7\xaf\x77\x8f\xce\x8f\x8f\x0e\x7f\x56\xaf\x07\xe6\xf5\xc9\xe1\xbe\x77\x9a\x61\x4e\x7b\xd5\xf4\x5f\xed\x76\xf9\xf5\x9a\xa9\xbd\xb7\xff\xfd\xee\xdb\xc3\x33\x38\x84\x76\xcf\xf6\x7f\xf8\x59\xb0\x0f\x3d\xcc\x5f\x56\x14\xc4\xbe\xe9\xfa\x5f\xdd\xa3\x69\x90\x9c\x71\x0c\xbc\xa9\x09\xbc\x0e\xf4\x7a\x69\xa1\x65\x21\x4b\xa7\x2f\xbc\x38\x38\xda\x3d\xf9\xd9\xef\xc2\x8a\xea\xe1\xd9\xfe\x5f\xcf\xfc\xe3\xd8\x19\xfe\xee\xe9\xcb\x83\x83\xca\x6b\xd1\xeb\x21\x4e\x0d\x54\xe7\x96\xde\x1e\xbd\x3a\x3a\xfe\xe9\xc8\x2b\x3a\xc0\xc1\x7c\xc6\xa5\xa3\xb5\xd3\xb1\x63\xbf\xc8\x3c\x6b\x5e\xcc\xc6\x2d\xf1\xab\x15\xa1\x75\x31\x1b\x6b\xbc\x5f\x0d\x34\x8b\x66\x2f\x65\x55\x99\x8d\x8d\xc7\xa6\xb8\x03\x05\xad\xd7\x13\xdf\xc3\x1e\xf9\x05\x88\xb9\x7b\x45\xc4\x8e\x30\x5e\x7b\xe7\x2f\x0e\x8f\x5f\xbe\x32\xd3\x76\x7a\xb6\x7b\x76\xf0\x92\xf2\xbd\x5a\xf1\x9c\x3f\x1f\xf1\x23\x4d\x23\x4b\xc8\x28\xcb\xab\x5c\x4a\xf1\x21\x4e\x47\x85\x31\x5b\xab\x8b\x4c\x0a\x4a\x3d\x38\x3a\x47\x0c\x75\x87\x7e\x5e\xef\xfe\xd5\x7e\xfa\xff\xb3\xf7\xef\x6f\x6d\x23\x59\xc2\x38\xfe\x33\xfc\x15\x15\xf6\x49\x6c\x83\x6c\x63\x08\x49\x1a\x70\x7a\x49\x42\xa6\x99\x49\x20\xdf\x40\xa6\x67\x26\x9d\x25\xb2\x55\xc6\x0a\xb2\xe4\xa8\x64\x8c\x27\xe1\xfd\xdb\xbf\xcf\xb9\xd4\x4d\x92\x09\xe9\xed\xbc\xbb\x9f\xf7\xe9\x9e\xdd\x6e\x2c\xa9\x4e\xdd\x4e\x9d\x73\xea\x5c\xb7\x76\x9e\x18\x90\x75\xde\xbc\x98\x73\xcf\xf5\x1b\x33\x53\x62\x9f\xfa\xce\xf8\x0f\x3e\x46\xab\x62\x5d\x1c\xa5\x85\xcc\x53\xcc\xf7\x36\x41\x56\x0b\xbb\xa2\x53\xaa\xe9\xf9\x51\x22\xc9\x73\xf2\x01\x83\xa9\xfc\x84\x33\xb1\x3e\x29\xbe\x27\x32\xfa\xc0\x67\xb3\xd4\x64\x94\x53\x53\x89\x3c\xee\xf0\x58\xef\x85\x36\x0c\x12\xf8\xa3\xb3\xc3\xb7\x07\xaf\x4e\x0d\xd2\xed\x3c\x2a\xc3\xe7\xda\x6c\x83\x45\xc1\x21\x92\x3b\x3b\xb6\xb9\x1e\x18\x37\x37\xe0\x36\x44\x4f\x6c\x78\x83\x2f\x81\x7d\xc5\x60\xb3\xdc\x0b\x81\x0d\x1c\x0e\x4d\x55\xd2\x6b\x87\xfd\xa2\xd4\xef\xf6\x66\x09\x7c\xe4\x47\x76\xea\x76\xcf\xbc\x01\x93\x59\xb9\x26\x54\x08\x35\x6f\xc0\xd0\xf3\x30\x55\x23\x49\x9e\x3e\x83\xb8\xf0\x50\x04\xe0\xfd\x72\x78\xf0\xe6\xfc\xf4\xe8\x5f\x87\x7a\xf9\xc4\xba\x59\x93\x0d\xa4\x05\xeb\x06\xc9\xc6\x32\x9c\x92\x03\x84\xc1\xdd\x83\x7f\x9c\x63\x00\x81\x1e\xcd\x0e\x36\x38\x30\x16\x31\xc3\xe9\xc8\x9f\xc8\x36\xd0\xb6\x4e\x9a\xd4\x6c\x74\x8e\x70\x35\x18\xda\x42\x7c\x04\x87\x26\x2e\x38\xe7\x1f\x85\x56\x9e\x0f\x66\x68\x5a\x58\xfd\x01\x28\xfd\x5c\xb3\xac\x55\x7f\x92\xaf\xce\x39\x72\xfc\x31\x0e\xed\x59\x5c\x78\x78\x5b\x3f\xd1\x57\x35\x73\xb5\xf8\xe0\x62\xab\x67\xd5\xd2\x08\xeb\x21\xcc\xdb\xc3\x37\xe7\xdb\xe7\x8f\xfc\x15\xca\xe5\x54\x86\x85\x98\xe6\xf2\x2a\xce\x66\xca\xd9\x61\xb1\xdd\x7e\x84\x3a\x7b\x25\x9a\x5b\xc6\xcf\x8a\xbf\xc7\xf3\xd5\x72\x41\xff\xeb\x7c\xfb\xbc\xb7\x49\xa0\x1f\xbb\xa0\x43\x72\x9f\x32\x40\x7b\x9b\x0c\x55\x34\xb7\xef\x02\xb6\xd7\x3b\xef\x6d\x3f\x01\xb0\x4f\x96\x83\xed\xf5\xda\xf0\x91\x06\xfc\xf8\x16\xc0\x55\x59\x05\x24\x8f\xb0\x0d\x12\x4b\x9c\x5e\x04\x20\xdc\x2f\xda\x83\x3c\x1c\x5e\xca\x42\x3f\xd5\x1c\x91\x2c\x97\x09\xeb\xd2\xca\x71\x80\x65\x47\x51\xeb\x7f\xf0\x7e\x33\xf0\xff\xd7\xe3\xff\x6d\xf1\xff\xb6\xf9\x7f\x0f\xf9\x7f\x3b\xfc\xbf\x4d\x1d\xb3\x4d\x3d\x47\xdf\xea\xd9\x3b\xf4\xa5\xbe\x75\x7f\xba\x1f\x80\xff\x28\x78\x14\x3c\x0e\x1e\x07\x4f\x82\x27\xc1\x4f\xc1\x4f\x41\x6f\x13\xff\xaf\x87\xff\xb7\x85\xff\xb7\x1d\xf4\xb6\xfd\x51\x0c\xcc\x02\x2c\x19\xc5\xc0\x47\xee\x25\x6b\x50\xfe\x1f\x8c\xec\xb1\xee\x69\x90\x9c\x93\x27\x6b\x1f\x9a\xf6\x1e\x05\xbd\xc7\x41\xef\x49\xb0\x19\x3c\x09\x1e\x07\x3f\x05\x8f\x60\x98\x3b\x30\xca\x87\x30\x48\x18\x63\xb0\x15\xf4\x1e\xc2\x24\x77\x3e\xec\x39\xbb\xcc\xd5\x2a\xee\xb8\xc9\x9a\x45\x6a\x2a\xa7\x7d\x37\xcb\xa7\x15\x03\x90\xf8\x5e\x40\xe3\x04\x8a\x2b\x31\x22\x0d\x7d\x52\xd1\xba\x3f\x08\xa9\x1e\x46\x60\x1d\x86\x90\x9e\x4e\xe2\xc2\x70\x27\x37\xca\x64\x96\x22\xd9\x2d\xf7\xc6\xbc\xf0\x8f\xa7\x55\xaf\xb2\x61\x98\xa0\x50\x88\x97\x32\x25\xd9\x93\x54\x3b\xdf\x44\x22\x83\x1b\x48\x96\x0e\x35\x3f\xee\x76\xc5\xaf\x70\x0b\x92\x6d\xb4\x29\xe0\x3a\xb2\x11\x7c\xd3\x4e\x72\x96\xba\x30\x2e\xc2\xa9\x5a\x35\x49\x2b\x90\x35\x9c\xbf\x3a\x3c\x16\x7d\xb1\xd3\xdb\xda\x23\xcd\x36\x86\xee\x61\xa3\x0c\x2f\x85\x08\x18\xb1\xf9\x9c\x7d\x75\xb5\x3b\x47\xb7\x2b\xee\xdd\xbb\x77\x0f\xb3\xca\x83\x60\xc2\x9f\xba\x9e\x5a\x3a\x15\x5e\x20\x5e\xe6\xf2\xb3\xe8\x8b\x78\x7d\x2b\x00\x1e\x4b\x7f\x6e\xf4\x56\x75\x26\xba\x78\x78\x9e\x14\x20\x5f\x71\xf4\xeb\x01\xc0\x6a\x36\x2d\xff\xda\x6a\x89\x75\xb1\xd5\xda\x5b\x45\x51\xd1\x6d\xd2\x32\xe2\x14\x3d\x35\x44\x17\x5e\x76\xc4\x29\x9a\x42\xca\x4c\x13\x97\x77\x02\x57\xf1\x28\xe0\x18\x29\xbc\x82\xc1\x66\xa0\x56\x4d\xfb\xd4\xea\x11\xd0\xe9\x72\x58\x32\xa7\xb7\x45\x4e\x8a\xb7\x23\x98\x2b\xdc\xc2\xc4\x2f\xd9\x5c\x5e\xc9\x1c\x40\xd9\x40\xb9\xad\x27\x8f\x50\xcc\xdb\x7a\xf2\x18\x3b\x67\x7b\x6e\x91\x51\x54\x94\x17\x19\x8b\x0b\xd1\x84\xbd\x38\x2f\xf2\x73\xd8\x0c\x80\x85\x2b\xdf\x72\xc4\x31\x5e\x84\xa8\xba\x6e\x5a\x24\xa9\xae\x58\x54\xbb\x62\xb6\xb8\x0d\x2e\x59\xf3\x60\x58\xcc\x42\x54\xf7\x88\x22\x8f\xaf\x62\x3d\x26\x32\x2b\x59\x2f\x99\x99\x92\x30\xb2\x1d\xf2\xe8\x6e\xd9\xa1\x9d\x5b\x84\x11\xa5\xa1\xb9\x98\xa7\x07\x67\x3f\xa7\xa1\xf9\xb9\x30\x48\x4f\x41\xb6\xeb\xad\x9d\x47\xfa\x26\x65\x23\x7f\xb5\xbe\x43\x4f\x03\x38\xbe\xd8\x16\x9d\x0e\xe5\x3b\xa1\xa0\xcf\x6f\x35\x2e\xb2\xa9\x78\xa2\xd9\x15\x00\x80\x87\x3d\x9c\x9a\x05\xec\xac\xfe\x39\xa1\x12\x4f\xd2\x9d\xa2\x15\xf8\xdb\xce\x95\x00\x63\xb7\x79\xba\x4e\x53\x9a\xb0\x4b\xa3\x0d\xf1\x4e\xb3\x7c\xc2\x27\xd7\xbd\x14\x88\xe6\xa6\xe8\xf7\x2d\x64\xcb\xa6\xd1\x3d\x87\x3f\xf2\x87\xe4\x0a\xbf\x7a\x14\xce\xd7\x34\x88\x97\xb8\xc2\x4e\xaf\x4e\x98\x05\x0e\x08\x87\x07\xbd\x2f\xed\x1c\x16\x4a\x54\xb6\xbc\xa6\x5f\xf8\x70\x49\xaf\x06\x19\x6b\xfa\x35\xef\xb2\x91\x20\xed\xb0\x73\x89\x3c\x45\x64\x3e\xcb\xa5\x7c\x21\xd5\x50\x63\x3c\x20\x6e\xa0\xf9\x25\x06\xb2\xf3\xdf\xa1\x82\xe7\x89\x9c\x28\x4c\xca\x71\x6e\x0a\xce\xac\xae\x0a\x0a\xad\x75\x20\x08\x4e\x66\xcb\x3f\xf7\xb4\xd3\x21\x9c\x1e\x7c\x9f\xe5\x82\x33\x5d\xea\xd6\xb6\x4b\x5c\x0f\xfb\x73\x6f\xb9\xd4\x40\xc1\xdc\xcb\x40\x85\x4a\xba\xa0\x42\x25\xf7\x9c\x5c\x0a\x36\x79\x84\xd3\xb3\x03\x03\x66\x6a\x6f\xf4\xf8\x73\xcf\x51\x47\x4f\xc2\x6b\xe7\xee\x21\x13\x69\x7c\xa0\xf1\x74\xc0\x1c\x2d\x30\xbb\x5e\x08\xcc\xfe\xdc\xb3\xc0\x1c\xe6\xa9\x89\xa9\xbd\x00\xa1\xf3\xae\x1a\x67\x73\x11\x8f\xc4\x47\x67\x65\x3f\x62\xb0\x08\x2a\xeb\x31\x7f\xcb\x64\xb2\x10\x6d\x4d\x2d\xc9\xff\x3a\xcd\x26\x59\x3e\x1d\xc7\x43\x91\xa1\xba\x53\xe9\x51\x8d\x43\x75\xae\x68\xb7\x4a\xfb\xa5\x73\x86\xf2\x4f\x93\x0b\xf5\x66\xd5\x23\xa5\xc9\x79\x24\xd5\x70\xcf\xa3\xae\xd5\x47\x03\xfd\x99\x83\x7b\x06\xeb\xa2\x45\xca\x28\x07\x5f\xe3\x87\x64\x10\xc7\x11\xea\xb7\x80\xca\xfc\xa7\x09\x88\x43\x0a\xb6\x48\xc3\x89\x46\x29\x7f\xb9\x87\x94\xbf\x72\xb3\x6c\x3a\xc7\x70\x76\x9d\x07\x00\xf9\x7f\xca\x0a\x15\x31\xca\xe5\xe7\x99\x4c\x87\x0b\x07\x94\x19\x15\x2f\x10\x4d\xc5\x8e\xc0\x12\x46\xe0\x6e\x2e\x86\xaf\x77\x71\xb9\xec\x9c\x23\x1c\x53\x13\x8f\x32\x4e\x91\x4d\xd9\x48\x04\xf6\x91\xda\xfe\xec\x70\x82\xf7\xf0\xd7\x07\xb1\xeb\x3e\x82\x6f\x36\x04\x82\xc0\x4a\xab\x8f\x5b\x1f\x68\x53\xfe\x78\x11\xeb\x84\xaa\x38\x85\x9c\xb9\xe1\xd5\xe9\x33\x66\x29\x19\xc7\x81\xa3\x6d\xa9\x83\xca\x90\x63\x11\x2a\x25\x73\x98\xe5\xae\x95\x0e\xd8\xf5\x26\xcf\x30\x8f\xbc\x98\x4a\x5c\xa3\x67\xb3\x11\x71\x05\xb3\x2e\xd3\x59\x71\x8e\x9d\x34\x55\x20\xd0\x07\x8b\x4a\x79\xc1\xf3\xc1\xa2\x90\xf0\xb8\x39\x1b\x8e\x5b\xcd\xe6\x5c\x17\x96\xb5\x35\xd4\x6a\xbe\x9a\xa9\x71\x0b\x3e\x7d\xfa\x54\x3c\xa1\xb4\xa2\xaa\xc3\xbd\xc3\x05\xfa\xbd\xf9\xc5\xe1\x99\x73\xb7\x5c\xed\x37\x3e\xc5\x65\x7f\x62\x1b\xfc\x98\xc5\x3f\x85\x5b\x71\xc8\xe9\x5e\xb2\x54\x84\xe2\x22\xbe\x92\xa9\x43\x70\x50\x82\xa8\x2e\x3e\x13\x90\x7d\xb8\x27\xa3\xfc\x44\x20\x46\x14\xd8\xa0\x5f\xeb\xc6\xce\x26\x28\x99\x46\x48\x02\x61\x1d\xb1\x51\x20\x2c\x85\xe7\xc4\xbe\x9d\x41\x7c\x4e\x8e\x27\x4f\x45\xd3\xa8\x2e\xda\xfa\x43\x93\x40\xb6\xc3\x9a\x8a\xaf\x18\xd5\x0b\x03\xd8\xdf\x17\xb6\x75\xcb\xa9\xfc\xab\xb7\xd0\x20\x80\x6e\xcc\x5e\x92\x06\x56\x9f\xa7\xf2\xd4\xef\xda\x81\xea\x34\xa0\x41\x6e\xf4\xf5\x84\xdb\x46\xd1\xb2\xb7\x5a\xf2\x82\xfc\xde\xc1\xd6\xc1\x27\x67\x97\x1b\xf7\xb0\xe3\x7a\xe2\x79\x57\x81\x18\x06\x48\x12\x68\x7d\xbc\x95\x86\xc7\xef\x87\x20\x78\x7e\xe8\xae\x77\x9e\x67\x91\x5c\xef\xba\x4f\x31\xc0\xb2\xbb\xde\x79\x25\xd3\xf5\x6e\xeb\x47\xa1\xdb\x5b\x90\xbf\x95\x74\xb2\xa4\x18\xa7\x60\xb8\xd2\x70\x4a\x26\x4a\x5e\xac\x8a\x3c\x8c\x2f\xc6\xc5\x28\xcb\xe7\x61\xce\x2e\x48\xcd\x50\x8c\x42\x55\x90\x10\x3f\x91\xc5\x38\x8b\xd8\xb6\x34\x83\xbb\x19\xb9\x11\xb5\xaa\xe8\xda\x03\x4c\xe5\x60\xde\xde\x8e\x8f\x91\x83\xf8\x3c\xa7\x71\x35\xa9\xff\x44\xa6\x36\x6b\x77\x2e\x4d\xd1\x16\xe3\x2e\x0c\xcf\xbe\xf6\x69\x44\x0f\xb4\x6f\x1d\xfe\x7a\xea\xf8\xd2\xc2\x57\xc6\x71\xf0\xa6\xa4\x28\xe7\x5c\xd0\x26\xef\xbc\xa2\x82\xd6\x3f\x6a\xe1\x5f\x62\x8e\x7c\x7d\xd9\x22\x4d\x5f\x80\xa1\x65\x98\x3b\x82\x5d\xd6\x58\x2b\x14\xa7\x22\x2e\x3a\x95\x45\xc2\x3c\xfb\x4d\x55\x7b\x4c\xfb\xfd\x3e\xfa\x63\x7d\xf9\x9e\x73\xb6\x59\x41\x74\x9d\xe1\xc8\x09\xe1\x71\x69\x41\x1f\x08\xa2\x3e\x4d\xb7\x50\x4f\xd3\x87\x5b\x1c\xdc\x3c\x84\x2d\x7a\x52\xe9\xba\xcd\x0f\x6f\x7e\xd0\x0e\x3c\xc7\x14\x2c\x6c\x7b\x9d\x16\xf1\x24\x4c\xbc\x8b\x2f\xe5\xf9\x40\x86\x0e\xe4\xd4\xa9\xa3\x42\xa5\x2c\xec\xb7\x00\xcd\x08\x6e\x3a\x4c\x25\xc9\x86\x97\xf5\x3c\x92\x0c\x59\x0a\x85\x0e\x8a\xbd\x0c\x23\xd6\xce\x14\x98\xd7\x7f\xfa\x1e\xfe\x75\x8e\xc9\x27\xc2\x34\x02\x20\x42\x88\x70\x90\x5d\x91\xb6\xc3\x88\x99\x29\x4a\x89\x36\xab\x0c\xe7\x17\x22\x03\x3d\x4b\x34\x38\x86\x93\x77\x67\x76\x10\xca\x19\x85\x8e\xe4\x65\x8f\xfc\xfa\xb5\x60\x27\x48\x1c\x05\xeb\x2e\x06\xc9\x39\xa5\xad\x19\x66\x69\x11\xc6\x29\xc5\xdc\xea\x4e\x63\x59\xab\x59\xeb\x68\x18\x4e\x9a\x97\x6c\x5a\x9c\xf3\x18\x68\x85\xa3\x3d\x23\x63\xd2\xe3\x30\x51\x99\x7e\x07\x08\x48\x72\x6b\xac\x34\xb0\x34\x2b\x30\x41\x57\xe9\x7c\x5c\xc8\x14\x68\x6d\x22\xd3\x26\xe6\x7a\x51\xc3\x16\xcb\x0d\x6c\x1d\x3a\xe7\x5c\xfd\x4a\xcb\x13\x00\x97\x04\xbe\x75\x2d\xea\x69\x59\x0f\xbb\x84\x87\x79\x3c\x2d\x28\xc1\x82\x26\x47\x5a\x8a\xb6\x17\x06\xf8\xce\xc8\xaf\x7b\x26\x95\xdc\xb5\xb9\xe5\x3b\x9f\xe9\xc7\x7b\xa6\xd6\x80\x0f\x8e\x3f\x33\xf2\xa7\x7b\xd3\xd2\x6d\x3c\x61\xbe\xae\x8d\xf9\xc0\xcb\x61\x76\x5b\x2f\xce\x15\xcc\x4d\x4c\x77\x87\x26\x1c\x35\xa7\xa7\x6c\xae\x3e\x75\x4d\x9c\xcb\x90\x9e\x4a\x35\xe2\x0c\xd5\x46\xa5\x9c\x80\x69\x20\x26\x7b\xfe\x67\xa8\xc9\x2a\x24\x66\x6a\xb0\x5b\x66\x2e\x67\x36\x57\x1e\x5f\x2b\x9d\xa6\xce\xf5\xcb\x7c\x76\x5d\xfa\xce\xbf\x85\xda\xe4\x84\x35\x59\x0d\xfd\xab\x04\xe6\xaa\xbb\x92\xf9\x88\x7c\xb5\x37\xf7\xca\x69\xee\xcc\x10\xf1\x46\xe2\x8c\xa5\xc8\x32\xce\xc0\x45\xd7\x40\x0c\xa6\x32\x25\xcb\x68\x20\x94\x09\xe3\x9c\xf2\x34\xc0\x13\x9b\x0e\x41\x75\xf4\x19\x7d\x0f\x2f\x9c\x5c\x3d\xe4\x9a\x7b\x04\xb2\x25\xb1\xfc\x69\xa8\x40\x54\xf9\x06\x3d\x6c\x52\xb1\x82\x49\x88\xc9\x91\xd6\xed\xac\xf8\xe2\x8b\xe5\xbe\xaa\xca\x67\x14\x7f\x74\x8c\x2b\x1d\xb2\xf7\xaa\x83\x54\x8e\xfe\x43\x74\xae\x2c\xf1\xd0\x24\xbb\xeb\xe4\x04\xcf\x60\x11\x17\x9c\xd5\x18\x23\x6b\xd1\x40\xd0\x76\x27\xc6\x62\xdf\x1a\xf8\xf6\xc4\xd8\xae\x48\x6a\xbe\x7e\x3f\xe6\x08\x04\x5e\x4e\x1c\x14\xfe\x2b\x75\x07\xf2\x22\x8c\xd6\xbb\xd5\x91\x6d\x68\x79\x02\xb8\x21\x42\x78\x5a\x52\x8b\x10\x32\x30\x70\x1f\xcb\xe1\x1f\xbd\x72\x3a\xaa\x81\x62\x1d\xaa\xfd\xeb\x85\xb0\xe9\x5c\xbb\xeb\xe2\x57\xc2\xf1\x79\x1e\x17\x92\xdb\x7c\x80\x91\x72\x2d\x09\xd4\xcd\x62\xaa\x3d\x0c\x6f\xd4\xa1\x30\x66\xbc\x29\x0f\x16\x35\x6a\x58\x1f\x37\x2d\xe2\x74\x26\xf7\xc4\x0d\xe5\x9a\x81\x8b\x5f\x22\xc3\x11\x32\x17\xd3\xb4\x8c\x4d\x7a\xe8\xd7\x7e\x0d\x3d\xee\x81\x82\xe0\xec\x4a\xe8\xaf\x28\x96\x2e\x15\x6d\x7c\xef\x45\xc3\x8d\xf4\x36\xa4\x5a\x24\x7e\x99\xcb\xcf\xba\xbe\xbe\xea\x68\x3e\xb1\xd1\x17\x23\xb1\xce\xeb\xbe\x41\x90\x9d\x22\x1e\x86\xd4\x39\xa5\xb1\x3a\x0e\x3f\xd1\xcd\xd5\xb2\xd5\xf6\x41\xba\xa9\x6f\xec\x29\xf6\x6b\xdd\xec\x99\x5a\x74\x7e\x09\xf0\xb5\xdf\x52\xe7\x18\xe8\xd6\xa6\xde\x05\xea\x95\x63\x25\xc6\x98\x2e\x90\xf9\xe5\x75\x38\x99\x26\x78\xef\xcb\x06\x9f\xb6\x50\x38\x98\xc6\x43\x8d\xfe\xcf\xc3\xe4\x82\x0a\x97\xe7\xd3\x99\xb2\x91\xa2\x2f\x63\x8e\x97\xa7\xe3\xec\xf4\x4a\x38\x31\x44\x79\x5c\x27\x1f\xdc\xe5\x70\x5b\x2d\x3b\x57\xd0\xd4\x06\x92\xb1\x84\x5c\x25\x25\x26\x43\x50\x5c\xa8\x76\x5b\x47\xeb\x94\xbf\x83\x37\x9a\x2c\x4e\x40\x78\xc9\x30\x0e\x29\x1c\x89\x28\x9b\x97\xb5\x65\x95\xe6\x94\x61\x66\xa3\x2f\xc8\xe0\x62\x00\x58\xba\x53\xc8\x89\x08\x95\x80\x6f\x07\x39\x45\xe9\x57\x41\xd9\x79\x7d\xd0\x05\x33\x59\xa5\xaf\xdb\xf0\xea\x96\xe0\x82\xd4\x01\x7d\x52\x08\x87\x2a\xe4\x54\xcc\xa6\x01\xe1\xd4\x3a\x3a\xc9\xa1\x4b\x9e\xc9\x00\x18\x8e\x46\x72\x58\x88\xba\x7e\xb9\x11\x0d\xcd\x74\xd3\x46\x97\x19\xe7\x22\x62\xde\x3c\xd5\x91\x87\x58\x67\x63\x2e\x72\xa9\x69\x73\x98\x78\x34\x39\x10\x6a\x18\xa6\x94\xc0\x2e\x5d\x26\xfd\xc1\x70\x91\x2e\xa8\x22\x4e\x12\x1b\xeb\x69\x88\x64\x47\x34\x8f\xb8\x84\x31\x60\x5f\x4e\xe9\xa4\x8c\xa5\x06\x3a\x25\x28\x9a\x13\x38\x86\xab\x51\x7c\x0d\xfd\xa1\xcd\x0d\x4b\x0c\xe6\x19\xfe\x24\x5b\x44\xac\x44\x1c\xc9\x10\x53\xb2\x84\x97\x94\xbb\x61\x9d\x3c\xf3\x1a\x61\xde\x10\x40\xc4\x0a\xb8\x6f\x2e\xc4\x2f\x61\x3e\x1b\xc7\x97\x99\x38\xb9\x9c\x4d\x66\x79\xd8\x69\x19\x96\xe1\x32\x3e\x57\x7f\x8a\x8f\x30\x90\x66\x8f\x11\xd1\xa7\xf4\x3e\x32\x7a\x18\x9d\x96\x03\x29\x27\x96\x37\xb4\xdb\xe3\x0f\x6e\x50\xd8\x64\x39\xc5\x74\xbe\x42\x7a\x32\xa9\xd2\x13\xe8\x07\x09\x8a\x13\x02\x56\x25\x15\x28\x19\xde\x8f\x68\x4a\xf7\xa3\xf6\xd3\xfb\xd1\x6f\xe9\x5a\x20\x26\xac\x11\x98\x7c\x00\x70\x01\x41\x72\x0a\x8b\x7a\x74\x91\xd6\xa8\x2d\x96\x0c\xa5\x25\xd6\x9d\x57\x65\x0a\x6b\x38\x50\xcd\x1c\xfa\x5e\x05\x59\x3d\xeb\x54\x1f\xa7\x9b\x1f\x78\x49\xfb\x8b\xce\x75\x65\x95\xe2\x74\x2f\x23\xad\x98\xb9\x9d\x51\x08\x2e\xe6\x7f\x61\x39\x05\x6d\x93\xec\x6f\x0a\xd2\x0a\x49\x34\xad\x25\x57\xb2\xdb\x6e\x35\x0e\x3d\x45\x4e\xa2\x8a\x78\x88\xc3\xd0\xb6\xaf\xd2\x58\x6a\x2f\x57\x38\xea\x24\xf1\xc5\xd2\xea\xdd\xcc\xbd\x9a\xe9\x68\xb4\xa5\xcd\x31\x98\x33\x4b\xf5\x45\x08\x35\xd9\x6e\xfa\xd2\xea\x85\x08\x57\xb0\x49\x5a\x77\x8d\xd3\x81\x99\xb6\xbe\x20\x0d\x8b\x73\x34\x2b\xac\x5b\xad\xbb\x23\xe0\x1a\xb2\x8d\xa9\x7a\x86\x59\xce\xd5\xa8\xa8\x6d\x9c\x16\x06\x72\x55\x38\xbe\xab\x0a\x9e\x60\xcd\xd4\x78\x24\xd6\xf5\xe8\xca\xea\xfc\xb2\xfb\x57\x58\x54\x3c\x39\x9c\x6b\x1a\x56\x62\x64\xcb\x80\x6f\x80\x74\xf3\x45\x73\x9e\x6e\xfc\x8e\xf5\xa7\x35\x0e\x22\x4e\x9e\xeb\x1a\x4b\x03\xc5\xdf\xcf\x88\x2c\x3b\x90\x96\x5e\x41\x6c\x2b\xaa\x1e\xee\x5f\x75\xea\x73\xc4\xe9\x44\xed\xe6\xeb\x55\xc3\xd6\x5c\x47\x67\x37\x27\x12\x09\x07\xda\x49\xee\xa2\x7c\xb0\xd8\xde\x4b\x24\x5a\x47\x14\xc0\x80\x48\x15\x17\x26\x9d\x5a\x82\xdc\xfb\xf6\x4d\xc4\x2c\xbd\xb9\x88\xf0\xba\xa1\x76\x4f\x6c\x08\x9f\xed\xb7\x45\xef\x03\xc6\x16\xf6\xf6\x6c\x61\xb5\xe7\x18\xd6\xcb\x29\x78\xa5\x7b\xdc\xe3\xd4\x1e\x5b\x4c\xd2\x95\xa5\x2a\x56\x85\x4c\x0b\xb2\x86\xa3\x3d\x1b\x3a\xa2\x99\x69\x57\x75\x4c\x33\x9c\xda\x54\xaa\x40\x95\x0f\xf0\x14\x56\x87\xa5\x27\xf6\xa1\xdd\xc3\xfa\x91\xbd\xfd\x7d\xfd\xa8\xd5\xee\x71\x7e\x1d\xfe\x67\x2d\x4e\xed\x08\x9c\x71\xae\x91\xd0\x57\xae\x25\xbd\xf6\x5b\x6a\xce\xe5\xae\x55\x12\xdc\x8f\xc4\x9a\x3d\xa1\x5c\xa7\x1e\x97\x5d\xd7\x63\x40\xc5\xa9\x3d\x68\x4e\x86\x3e\xeb\x15\xbc\x44\xc6\xdd\xf3\x02\xe3\x8d\x2c\x57\xe6\x6b\x46\xf8\xb0\x1a\x62\x7b\xf9\x15\x25\x61\x9d\xf4\xd7\xc8\x29\x8c\xee\xd6\xee\x7b\x22\xd3\x0f\x1b\x1b\xa4\xc7\xd5\x29\x15\x68\x25\x86\x57\x48\x8d\xc4\xbd\xbe\xe7\xdc\x12\x08\x67\x81\x52\x71\x7f\x3b\x12\xf7\x87\x22\x11\xf7\xb7\x22\x31\x14\xf7\x1f\x5e\x8b\xe6\xfd\xeb\x96\x58\x0b\x18\x16\x31\xa4\x40\x34\x63\x75\x91\x87\xd3\x71\x33\x6d\x89\x9f\x45\x2a\x76\x45\x43\x34\x5a\xd8\x71\x60\x2e\x4b\xcf\x91\xe8\xf9\xa3\x6b\xf7\x74\x6d\xd6\x1f\xc3\xc7\x8e\x6c\x76\x20\x58\xc8\xab\x30\x47\xdf\xc5\x86\x8e\x16\x68\xd8\xcc\xbe\x2e\xcd\x2e\xf2\x73\x5e\x96\x38\x8d\x8b\xa6\x55\x82\xa7\xae\x41\x9a\x75\x1f\x8a\x95\x1f\xdf\x52\x7c\x30\xa1\x41\xbc\xd4\x22\x33\x23\x8d\xb5\x4b\x33\xa9\x2b\x91\x2e\x4b\xd5\x35\x01\x2a\x7d\x00\xc4\xc7\x7c\x60\x7c\x10\x4a\x34\xcd\x9c\xd7\xe5\xa4\x78\xf5\xae\x24\x5e\xa7\x18\x65\x85\x85\xbe\x4f\xd0\x99\x8c\x74\x1a\xbd\x38\x35\x0e\x42\xcd\x16\xbe\xd3\xe5\x2a\x79\x69\xcf\xa3\x2c\x95\x2d\x7d\xa3\xd3\xf7\x2a\xcc\x9a\x39\x91\x42\x4e\x06\x32\x42\x27\x24\xe0\x5f\x85\x0a\xc4\x45\x92\x0d\xc2\x04\xf7\xd1\xa6\xc8\x03\x69\xc3\xf1\x22\xc3\x8b\x56\x77\xfd\x3f\xe2\x51\x24\x47\xe2\xf8\xe4\xfc\xe8\xf8\xe8\xec\xfc\x2f\xaf\x4e\x9e\x1d\xbc\x3a\x7f\x73\x72\x74\x7c\x76\xf8\xf6\x94\xab\x28\x1a\x93\xba\xe7\x4a\xe1\x1f\x8a\xbd\xca\xb7\x8e\xfb\x42\xdf\x75\xf4\x74\xbe\x8c\x6e\x81\x1a\x95\xa0\x46\x4b\xa1\x46\x25\xa8\x83\xe5\x03\x18\xf0\x08\xfe\x43\xa6\x51\x3c\x32\x9c\xa9\x74\x00\x26\x21\x65\x9e\x34\x8e\x3a\xe8\xa1\xde\x12\xed\xa7\x9e\x87\x0f\x3e\x7f\xd2\x32\x89\xad\xa8\x54\xab\x4d\x59\x6a\x19\xf0\x90\xea\x6f\x7b\x8e\xf7\x98\x74\x09\x5e\x58\xe2\xe8\xb8\xf2\xbc\x87\x37\x1c\x1b\x6f\x94\x33\x2e\x8d\x4d\xc5\x3e\x27\xf0\x75\x96\x96\x5a\xb5\x3c\x8a\x2b\x3c\x17\xa7\xf7\xf4\x37\x19\x3e\xb4\x6e\xd7\xa9\x12\x6a\xd8\x8c\x9e\x0f\x7a\x44\x07\x62\xcd\x3f\xec\xc6\xa2\x7b\x0f\xdf\xaf\xe9\x33\x71\x4c\xf1\x62\x61\xe1\xb8\x62\x8a\xad\x9d\x1d\xd1\xf4\x5c\x9f\xb6\x76\x9e\xb4\xc4\x30\x4c\x29\x3a\xca\x84\x59\x11\x13\x8c\x53\x51\xcc\x33\x11\xc5\xa3\x91\x44\x6b\xc5\x3c\x5c\xa8\x5d\x5a\xc3\xad\x27\x0f\xc5\x06\x3b\xaa\x09\x9d\x85\x6e\xeb\xc9\x0e\x26\xc3\x9b\x4b\xab\xfb\x23\x0d\x94\x3b\xf1\xad\x9d\x9d\x0f\x36\xa8\x4f\x8a\x01\x88\x7a\x32\xa5\x3c\x78\xbb\x86\xd1\xd6\x2c\x16\x32\x7d\xb3\x5c\xb7\x62\x0c\x7a\x40\x00\x5e\x6c\x6f\xfd\x0d\xf1\x05\x1f\x58\x6c\xf9\x89\xb1\x05\x1f\xdf\x8a\x2b\xbd\x47\xb5\xd8\x01\x0d\x0d\x6e\x20\x3d\xfb\x26\x66\x44\xb7\x60\x86\xef\xd5\xf1\x6d\xac\xa0\x71\x2f\xc3\x09\x7c\xeb\x62\x04\x3b\x84\xf4\xc5\xe3\x3d\xd2\x3e\x67\x13\x91\x66\x73\x91\xa5\x01\xca\x38\xc6\x21\x0f\x29\x54\x14\xeb\xec\xfb\x58\x20\xdc\x49\xd2\xa5\x17\x85\x5d\xd0\xee\xb6\x32\xb0\x02\x8f\x6f\x5b\x9e\x66\x65\x7d\x44\x5b\x3c\x6e\xdd\xb2\x48\xe4\xe7\xf2\x47\x2c\xd5\xd6\xce\xa3\x0d\xbd\x5c\x3b\xbd\xad\x35\xa3\x52\x79\x6e\x34\x1b\xf6\x52\xa9\xcb\x82\x54\xfd\x62\xab\x22\xef\x1d\x94\xef\xb7\xa8\xde\x53\xfd\xcb\xa8\x22\xf6\xfb\xa2\xf7\x70\xdb\xad\xc1\xab\x29\x7e\xbd\x3a\x98\x4d\xa5\xa9\xd6\xc1\x9a\xce\x9e\x98\xfc\xf9\x3e\x74\xa4\xac\x77\x85\xfe\xd3\x32\xe8\x3f\x2d\x83\xfe\xf8\xa7\xbb\x43\x7f\xbc\x0c\xfa\xe3\x65\xd0\x9f\x3c\xfe\x83\x57\x06\x31\xa0\xec\x68\x1c\x65\x1c\xc8\x12\xab\x82\xb3\xac\x73\x60\x2f\x45\x36\x21\x0d\x9a\x38\x49\x6b\x49\x97\xe2\xf9\x33\xeb\xf4\x2f\x75\xa5\x7b\xc8\x51\x19\xd5\xf2\xde\x75\x44\x5f\x43\xac\xb6\xcb\x5e\xd3\x7d\x81\xd8\x09\x50\x72\x6e\xec\x7b\xce\xc5\xaf\xce\x45\x19\x55\x6f\xe4\x98\xbc\xeb\x60\xb2\x73\x50\xcd\x81\x77\x4e\xa4\x2b\x1f\xd4\xaf\xf4\xce\xde\x92\x0f\x97\x5e\x06\x02\xb1\xd3\xb2\xf6\xa7\x2e\xde\x2d\x50\xcb\x90\xcb\x30\xa2\x70\xf9\xb9\x44\x8e\x05\xc7\xd7\xf5\xa7\x53\x65\xb9\x87\xe5\xc6\x7a\x2f\xd6\xc4\x75\x63\x4d\xc8\x8f\xd5\x0d\x70\x33\x2b\x19\x98\xd3\xdb\xaa\xc8\x40\xb7\xf6\x10\xb9\x3d\x44\xd4\xc3\xa6\x93\x29\xe1\xc5\x6d\xf0\x07\xb7\x4d\xc1\x4a\xc3\x9b\xad\xc0\x93\xa7\xbc\x1e\x9e\xf9\x33\x78\xa5\x3b\xc1\x85\x2d\x0b\xb5\x78\x0f\x9c\xc9\x1f\xe5\xc7\xe2\x70\x69\x4a\x05\x6d\x1c\x1f\xba\x6e\x5d\xfe\xb8\x38\xc7\x17\xda\x5b\x85\xef\x30\xdf\xbe\xbc\xd4\xca\x02\x94\x68\xb8\x1e\x9f\x5f\x69\x7c\x66\x84\x16\xe4\x4b\x9a\xd4\x19\x97\x38\x1a\xf6\xb6\x53\xe1\x43\x89\xbe\x0f\xca\xb3\x57\xfe\xe1\x22\xa5\xf4\x6d\x30\xd0\x0d\xd1\x8e\xd7\x06\xce\x95\xbf\xee\x91\xc7\xa2\x56\xff\xf6\x7d\x33\x17\xb3\x18\xd5\x49\x42\x55\x9c\x27\x58\xc1\x5c\x75\x50\x40\xd4\xde\x53\xff\xf7\xdc\x9a\xf0\x6c\x87\x49\x7c\x41\x26\x9f\x8c\xdc\x4b\xd1\xb7\x71\xb0\x28\x24\x95\x79\x09\xf3\x45\xc5\xbf\x69\x1e\xa7\xd1\x6c\xda\xe4\x22\x97\x15\x3f\xc4\x27\xdf\xf6\x6e\x5a\xe2\xb6\xe4\xa6\xde\xf2\xbc\x48\x9f\x2d\x0a\xd9\x52\xed\xa7\x25\x07\xa9\x3b\x78\x36\x69\xee\x52\xf6\xa6\x2a\xfb\x52\xdd\xfc\x18\x57\xa6\xe9\x42\x84\xa6\x56\x18\x1c\xb4\x00\x7f\x51\xca\x76\x4c\x65\x68\x2f\x0b\xb0\x1d\x58\x20\x6d\x1d\x58\x4f\x43\x09\x4a\x76\x46\x39\x23\x46\x98\xe7\x40\xaa\x42\x46\xa5\x43\x3c\xcc\xa6\x0b\x7d\x88\x81\x45\x8e\x58\xad\x32\xc6\x32\xf4\xad\xd5\x6e\xf7\x05\x39\xd6\x9c\x3a\x7e\x35\xc3\x71\x98\x8f\x60\x11\xd7\x61\x8d\x84\xd5\x20\xc7\x29\x20\x01\xa9\x99\xbb\xab\xdd\xee\x2c\x55\xf1\x45\x4a\xa1\x14\x7b\x56\xb1\xa1\x1c\x9d\x6b\xb7\x1b\xa7\x14\x33\xc1\x7d\xee\x71\x2e\xdf\x19\xee\x30\xc5\x91\xd2\x1b\xa3\xe6\xd3\x16\x26\xd6\x04\xbb\x48\xe5\x6a\x50\x08\x3b\x01\xeb\x5c\x84\x64\xfa\x83\x76\x65\x9a\x64\x1d\xc2\x91\x52\xab\xf2\xf8\xff\xe8\xe7\x37\xa8\xcd\x66\x99\x26\x91\x29\x99\xa9\xaa\x2e\xcc\xb0\x42\x1b\x1b\xec\xdd\x0c\xa8\x44\x75\x0d\xd1\x32\x71\x2a\x8b\xa6\x87\x86\x80\xe7\x30\x93\x6c\xee\x6e\x85\xf9\xc4\x77\x7d\x66\x77\xd5\x1f\x86\x7c\x93\x69\x98\x63\xbd\x06\xa1\x66\x03\xa4\xcd\xda\x65\xd4\xf1\x9d\x9a\x02\xe6\x29\x51\xc4\x92\x52\x3c\xca\x9c\xd3\xb9\x13\x3e\xe8\x96\x94\xb2\x9d\x8c\x94\xd6\x8a\x49\xb6\x44\x4c\x02\x80\x45\xb2\xd0\xd4\x98\x61\x51\xbf\x50\x2d\xb1\x77\xa8\x09\x16\x16\x63\x6b\x47\x8a\xc6\x34\x1c\x86\xe5\x40\xe7\xe9\x16\x30\x62\x20\xae\xda\x03\xe9\x7c\x02\x8f\x26\xfa\x11\xbb\x83\x92\x79\xef\x3c\x75\x69\xf0\x3e\x29\x14\xcf\x27\xee\x43\x27\x37\x64\x6d\xa3\x7e\xbf\x5f\xd7\xec\xc1\x03\x1a\xda\xfb\xf4\x03\x08\xbd\xf4\xf7\xe4\x43\xab\xf5\x83\xf6\xec\xad\x44\x5a\x61\x9d\x6a\xa6\x79\x36\x95\x79\xb1\x80\x9b\xe1\x24\xbb\xc2\x8b\xb6\x67\xa3\x37\x69\xc3\xc3\x82\x3c\x43\x2e\x03\x00\x24\xaf\xb1\x82\x00\x15\xb2\x4b\x8d\x55\x07\x77\x14\xd7\x9f\x12\xe2\x63\xce\xee\x79\x26\x54\x96\x2a\xca\xd1\xca\x45\x21\x90\x4c\xe1\xc5\x1e\xa0\x99\x82\x15\xfe\x98\x62\x25\x72\xd9\x96\xaa\x08\x07\x49\xac\xc6\x32\x12\x4d\x54\x03\x8e\x42\xb4\xdf\xf3\x46\x53\x21\x12\x26\x6c\xba\xb3\x56\x39\xe2\xe0\x33\x4c\x0b\xc0\x6b\x1f\xec\x40\x5c\x7e\xcb\x31\xb0\x6c\x0f\x2b\x19\xc1\x72\x5e\x4c\xcf\x06\x56\xae\x1b\x4b\xce\x35\x11\x36\x40\x57\x06\x5c\x5e\xc7\x40\x75\x65\x2d\xd0\x97\x1f\x34\x36\x7e\x12\x7d\x71\x49\xb6\x10\xd6\xca\x8e\x0a\x98\x17\xac\x29\x67\x82\x66\xc2\xf2\x09\xf0\x86\x7d\xa1\x8c\xbb\x34\xb6\x39\x95\x85\xf8\xa4\x9d\x3b\xdd\x4d\xc1\x39\xf0\x3a\xed\xba\xf9\x72\x3f\x89\x7d\x07\x94\x78\xf0\x40\x7b\xd2\x78\x27\x8a\x07\xfb\x09\xaf\x06\xf6\x27\xfe\x49\xe7\xcc\x5e\xf0\x3f\xf9\xae\x4e\xdd\x75\x71\x78\x1d\x23\xb7\xb9\x42\x0b\xa7\xbb\x83\x83\xac\x18\x13\xa2\x38\x43\xf2\xbb\xbe\x5a\xd6\x9d\xcd\x1e\x6b\xfb\xa1\x12\x17\xe2\xaa\x06\x33\x55\x66\x93\x19\xeb\xa5\xb7\xdb\xf0\x89\xdd\x00\x2e\x45\x5f\x7c\xb2\x99\xa0\x0f\xb0\x26\x1d\xd9\x4a\xfc\x43\x12\x08\x25\x29\x4a\xda\xac\x77\xcd\x86\x09\xf1\xc9\xf1\x42\x5f\xf5\xbb\xbe\x62\xc1\xac\x2b\xe2\x34\x89\x53\x0c\x68\x4c\x31\xc2\x14\x9e\x61\x2e\x96\xd7\x07\xaf\x5e\x1d\x9e\x9e\x91\x0c\xf8\xa3\x22\x50\x50\x82\x43\x86\x8a\x98\xaf\x73\x9d\xc8\xc8\x21\xec\x64\xf6\x76\x6f\xb8\xaa\x2c\x31\x50\x2b\x2b\x35\xf0\xe5\x8c\x62\x6b\xbf\x75\xea\x32\x2c\x50\xa2\xcf\x1e\xa9\xc0\xf1\x10\x94\xb4\x33\xb5\x9f\x47\xe6\x73\xff\x3e\xec\x9c\x38\x6b\xab\x10\x15\x8b\x45\x36\xa2\x48\x52\x19\x61\xd2\x37\x5d\x36\x0b\xcd\x24\xc3\x8a\x49\xdc\xd3\xbc\x62\x50\xbc\x6e\x0c\xf2\x8f\x68\xc6\x23\xa1\x75\x55\x9b\x2d\x07\x52\xa9\xbe\xb9\x63\x37\x26\x8b\x49\x9c\x8a\x44\x27\xfe\x28\x1b\x60\x4c\x13\x63\xc0\x05\xfe\xeb\x95\x61\xb6\xc5\x9f\x2d\x09\xb2\x7e\xa7\x4e\x31\x68\xdb\xd0\xc8\xd9\xe6\xe2\xe0\x39\xca\x38\xf9\xd9\x59\xbf\xda\x2c\x4b\xc7\x11\x0e\x78\x03\x26\x07\x77\x16\x20\x5e\x4f\x30\x47\xec\xed\x1f\x22\x15\x31\x9e\x2d\x09\x06\xdd\x95\x1a\x24\xa6\x81\xf1\xcf\x49\xae\x81\xb0\x38\x6e\x38\xbc\xcc\xa5\x2c\xdc\x5e\x48\x4e\x32\x64\x3c\x6c\x71\x20\x3f\x06\x5c\xb9\x09\x73\x6c\x82\x65\xd7\x4e\xa9\x4d\x8b\xc9\xb0\xe5\x98\x27\x45\xe3\xfe\xb0\x21\xd6\x00\xac\x75\xcc\x29\x25\x5b\xa7\xca\xe8\x32\x97\xf0\x95\xae\x4f\xe5\xe1\x8c\x1b\xfe\xec\x74\xce\x2a\x6b\x5f\x61\x3e\x74\xb2\x67\xfb\xb1\x46\x64\xb6\xf6\x95\x1d\xe5\x99\x16\x6e\x85\xd5\xc8\x9b\xaa\xae\x73\x52\xb1\x76\xf8\xd9\xba\xe9\xb3\x7b\xe5\x35\xc6\x4d\x6b\xf7\xab\x16\x96\x3d\xe7\x13\x2f\x02\x0a\x36\x02\x81\x19\x51\xdc\x1d\x24\x75\xe3\x84\xad\xb9\x43\xb5\xd9\xc1\x61\xc3\xdb\x6d\x73\xd0\xc9\xff\x75\xee\xac\xb0\x39\xd2\x6d\xd1\xab\x59\x5b\x37\x34\x73\xcf\xd9\x75\xcf\x17\x60\xdf\xea\x74\xd6\x06\x61\xc4\x8d\xd6\x5a\x06\xf5\x6a\x76\x42\x53\xb9\xba\xb9\xd5\xa4\x3c\xa9\xdb\x82\xe8\xbb\xb7\x00\x97\x40\x6f\x82\x55\xd7\x2f\xdd\x82\x08\xd5\x9d\x76\x13\xaa\x1b\x60\x86\xba\x6c\x0b\x6e\x5c\x92\x8c\xe5\x89\x60\xd5\xa7\x61\x9c\x8b\x9f\x85\x97\x8b\xbe\xe4\xc3\x91\x5d\xc9\x3c\x09\x17\x62\x20\x8b\x39\x56\x68\xb2\x87\x9d\xa2\x62\xe0\xaf\x0d\x3a\xf4\xb1\x12\xd9\xe5\xae\xed\x5e\xef\x4f\xb3\x39\x3b\x4a\x8b\x56\x53\xb5\x9f\xea\x9b\x0f\xc8\x2e\xed\xa7\x49\x5c\x40\x43\x0c\x15\xdc\x10\x5b\xeb\xc9\x75\x60\x9a\xf2\x04\xd6\x6c\x58\xaa\x71\xca\x34\x5b\x6a\x9c\x32\x93\x6b\x14\x86\x34\x39\xb4\x2a\x4c\x6f\xc3\x8d\x9e\xc6\x1c\xb8\x1f\x16\xb4\xa4\x6d\x17\x59\x2a\x7d\xed\x32\x6a\x59\x14\xdc\xa2\x95\xe5\x09\x03\x54\xa5\x02\x03\xa3\x4a\x2d\xba\x8c\x3a\xc0\x7a\xb7\x3c\xa2\xe9\xfb\xc3\x99\x28\x9a\xe9\xfb\x9c\xdd\x94\x17\x0e\x05\xa2\x66\xa8\xeb\xfd\x72\x38\xd4\xf2\x98\x24\x13\x8e\x84\x2d\xdc\x48\xec\x21\x56\xc9\xff\x9e\x10\x23\x03\x6b\x49\xa4\x91\x0d\x31\xe2\xfc\x1a\x30\x5f\xe3\xab\x43\x73\x2e\x47\xe7\xcd\xe2\x24\x42\x4d\xdf\xef\x8e\x3e\xfa\x8e\xd0\xa3\x25\x31\x47\x4e\x84\xff\xf7\x44\x11\xdd\x21\x7e\x48\x67\x48\xa8\x46\x01\x61\xb2\x84\xfa\x30\x9d\x72\x94\x0e\x5e\xf2\xaa\x8e\x2a\x4e\x08\x7f\xbb\xb7\xf7\x7d\x81\xfb\xd8\xab\x2f\x22\xa1\x4f\xdf\x9c\xee\x5e\x94\x60\x54\x97\x71\x34\xda\x65\xdf\x20\xa8\x0b\xe0\xc1\xf0\x02\x5d\x5b\x33\x54\x85\xee\xab\xd0\x63\xe6\xa2\x79\x14\xa2\xf4\x5e\xcb\xe5\x1f\x3a\x5c\x16\x3d\xa5\x2a\x8f\xf0\x2e\xa5\xb2\xf5\xf8\xf7\xd6\x7a\xfa\x81\x4a\x7d\xf2\xaf\x8d\xde\x87\x8e\x03\x67\xf3\x83\xc6\xb8\x99\x42\x1d\x1c\xdb\x85\x9c\x0b\x99\x51\x2d\x9a\xc8\x97\xbe\x13\xf2\x52\x76\x15\x4b\xc5\xbe\xce\x61\x51\xaa\xf9\x5b\xab\x88\x2e\x71\x15\xbe\x9c\x6c\x6c\xd8\xfe\x3f\x88\xbe\xbb\x49\xe9\x9e\xf9\xd4\xe8\x30\xfa\xa6\xc0\x71\x49\x14\x5a\x6e\x51\xaa\xa9\x01\x01\xeb\x38\xbd\xfc\x77\x8c\xe5\xf0\x26\xa1\xc9\x47\xcb\xb5\xf8\xb1\xae\x7a\xc8\x85\x1d\x7c\x96\x8a\x76\x3c\x15\xb0\x8d\x0d\x19\x5a\xb9\x01\x52\x46\x5b\x41\x13\xf7\x15\xee\x33\xa6\x12\x3c\x16\x6f\xc0\x54\x52\x6c\xab\x9b\xea\x04\xa5\x44\x61\x4e\x33\x9b\x3d\x4a\xe7\x6b\x44\x6f\x23\x25\xe0\x80\xe7\x22\x4b\xc5\x5c\x72\xc1\x72\xdd\x35\x9b\x0e\xe7\x99\xb5\x3b\x57\x71\xd9\x6e\xba\x09\xc0\x30\x7b\xbf\x2f\xb6\x8c\x5f\x25\xad\xff\x92\x1d\x6a\x9a\x2d\xda\x17\x5b\xe2\x67\xb1\xb1\x61\x1e\xec\x72\xac\xb3\xde\x0e\x14\x42\xea\xec\x0b\xce\x9e\xb2\xd5\x7f\xb3\x14\x8f\xd3\x6e\xef\xd9\xd8\xa2\x6f\x05\xdf\xb4\xfb\x42\x79\x3d\xd6\xb8\x25\x1a\x05\x41\xca\xb4\x75\x13\x84\x8a\x9e\x50\x99\x88\x0b\x1b\x6d\x41\x5a\xc2\x52\x44\x1e\xb4\xf5\xa2\x2a\x1d\x44\x75\x0d\xa5\x86\xe6\xd8\x58\xdb\x44\xa6\xdd\xad\x8d\x9e\xe8\x74\x84\x5d\xc4\x10\x2b\xdd\x86\x57\xd6\x3f\x00\xaf\xaf\xb4\x87\x46\x1d\x85\x85\x59\xa0\x91\xa2\x62\xb3\x26\x08\x83\x79\xed\xae\xef\x37\x9b\xd2\xa5\xc9\x6c\xe8\xd3\xa7\xa2\xd7\x5d\x8f\xd3\x42\x74\xb7\xd6\xbb\x2d\x38\xaf\x54\x92\x9e\x14\xc5\xb5\x1a\xab\xb4\xb5\x67\x0e\x89\x4f\xbc\x3c\x89\x60\xb0\xe0\x64\x82\x32\x4a\x16\x70\x1b\x1f\x70\x25\x15\xe4\x8d\x58\x6b\x68\x9e\xe9\x98\x0c\xa6\x6d\x29\x67\x6f\xe3\x21\x33\x8e\xf9\x39\x70\x1c\xc2\x7a\x0d\x54\x90\x13\xa2\xe2\xb7\xce\x42\x95\xe2\x8c\xba\xdd\xe9\x67\xca\xd3\xec\x4f\x04\x01\x01\x1d\xe1\xe6\x1e\xb1\x1d\x9a\xfa\x70\xdd\xf5\xf5\x75\xa1\x21\x88\xf5\x75\x7e\xec\x04\xf5\xf5\xba\xeb\x9a\x08\xaf\x77\x3f\xec\xb9\x6a\x1d\xff\x95\x6d\x62\xf7\xa1\xdd\xe6\x16\x75\xeb\xed\x35\x6f\xed\x99\xf1\xb0\x74\x3b\x59\x3a\x06\x54\x0e\x38\x73\xc3\x05\xab\x99\xa0\x3b\xd6\x76\xdb\x8d\x8b\xec\xb3\x99\xf4\x52\xca\x29\xae\x6c\x39\xe6\xbb\xb2\x50\x4b\xc0\x4c\xac\x06\x4b\x17\xb0\xb6\x8c\x91\x35\xa9\x30\x42\x4a\xb1\xeb\x7b\xf9\xd6\x11\x88\x5a\xe6\xb1\x71\x4b\x84\x49\x99\x94\x34\x1d\x7e\xf1\xb4\x6f\x5e\x4f\x3e\x88\x9f\x5d\x56\xb2\xeb\xbc\x69\xd9\xd8\xcb\x65\xd1\x9a\xfd\x9a\x28\x16\xfd\x26\xd5\x74\x80\x6c\x3e\x69\x24\xe2\x14\x6f\x79\xb8\xae\x7a\x2d\xe2\xd4\x8b\x35\xbd\x0d\x8b\x52\xf4\x91\xba\x3b\xde\xb8\xd1\x5e\x2e\x09\xe8\x63\xf6\xb9\xd5\xa5\x7b\xb7\x04\xc1\x89\x00\x1c\x70\x24\x1a\x16\x8f\x0a\xbe\x95\x60\xa0\x23\x7e\x25\x2f\x8b\x34\x9b\xd3\xd1\xf7\x22\x01\x9c\xe0\xb2\x8e\xe7\x92\x52\x0a\xa5\x77\xc9\xa9\x17\xeb\x02\x97\x6f\xcc\x63\xc0\xce\x1c\x15\xe8\x26\xb3\x95\xb8\x25\x22\xc5\x06\x6f\xfd\xb0\x9b\xd4\x29\x8c\x2e\x74\x6f\xae\xbe\xa2\xd0\x2b\x44\x5d\x4e\x6e\x90\xd9\x7a\x51\x78\x7b\x60\x9c\x29\x85\x3d\x97\x0d\x52\xc3\x30\x35\x57\x02\x7f\xc6\xdf\x6b\x81\x28\x9b\x20\x40\x82\x19\x86\x69\x4a\x52\xed\x92\x48\x1c\x8d\xf3\x85\xf2\x25\xea\x5a\x19\xc4\x8b\x9d\x59\x1a\x83\xe2\x3b\x6f\x54\x03\x94\x8c\x50\x3e\xcd\xe5\x15\x89\xae\x5e\x4d\x56\x14\xee\x55\x21\xe4\x24\x2e\x0a\x9b\x47\xcf\xaa\x3b\x67\xb9\xb1\x07\xfb\x3d\xdb\x72\x76\xfa\x8a\x3a\xb4\xf1\xca\x3a\xe0\xc7\x09\x83\xd8\xac\xca\x1b\x3e\x18\x1b\xf8\x63\x61\x68\x2f\xf5\xcd\x8a\xc6\xd7\x4d\xd2\x6b\xb0\xa1\x34\x10\xf7\x3a\x43\x70\x1e\x7b\xba\x5e\x10\xdc\x3d\x38\xb6\x4d\x9c\x9a\x36\x7e\x25\xd0\x09\x96\x44\xf3\xdb\xb0\xce\xd6\x4c\xd8\x15\xe0\xdd\xde\x7b\xdb\xec\x1f\xe7\x82\xdf\xd6\x56\x08\x5c\x25\x2b\x34\x6e\x60\xd6\xc0\x1a\x31\x9d\x12\x22\xc1\x58\xa8\x92\xb8\x13\x8e\x6f\x2f\x1c\x4b\x42\x53\x68\x3b\xb9\xa4\x1c\x5a\xa4\x05\xc7\x07\x39\x3b\xd5\x4c\xeb\x3b\x77\x04\xcd\x8d\x0d\x1a\xfe\xbe\x33\xbf\x07\x0f\x0c\xf8\xbe\xe9\xc0\x0a\xa2\x26\xba\xc5\xbb\x96\x00\x30\x03\x4a\xaf\x8a\x2b\xbd\x6a\x77\x1d\x06\x5d\xe2\x76\x5c\xda\xb0\x06\x26\x7d\x6e\xee\x52\x8e\x86\xda\x79\xc5\x87\xc2\x77\x0c\xaa\xeb\x69\x63\xc3\x06\x9b\xda\x2f\x75\x76\xec\xf2\xa7\xcb\x66\xd8\x17\xbd\xcd\xba\xb9\xd9\x54\xd8\xb7\x42\x5a\xd2\x90\x93\x5d\x57\x9a\x0a\x5b\xdb\xd0\x1e\x23\xe2\x94\x86\x16\xf0\xf1\x76\xb2\x13\xd4\xe1\xf0\x12\x2c\xae\xe0\xf1\x92\x4d\xa8\x45\x07\x17\xe2\xa3\x3b\xc0\xab\x6b\xf7\xb8\xae\xdd\xc3\x1f\x1f\x13\x7b\xea\x5b\x2c\x2a\x9c\x2b\x4e\x5d\x7b\x1d\x5c\x9d\x5d\x77\x0c\xe2\xbf\x31\x3a\x5e\xf0\x46\xd6\x25\x84\xfb\x43\xf8\xd4\xef\xe1\x52\x7f\x32\xaa\xff\x97\x19\x55\x57\xc7\xa0\xf3\x96\x6f\xf4\x30\xb2\x9d\x97\x7b\xbd\x2b\x2c\x63\x09\x13\xf2\x0c\x56\x92\x3b\xfc\x6f\x33\xb9\xff\x67\xf9\x14\xdc\xb1\x4b\x16\x28\xec\x22\xb0\xc4\xba\xb5\xe7\x66\xbc\x23\x58\x5e\x8d\xeb\x5b\xb8\xd7\x37\x98\xd7\x12\x1b\x58\x75\x04\x8e\xed\x6d\x96\x16\x3a\x7d\x80\x35\x25\x19\xab\x0e\x0d\xef\x69\x5f\x6c\xe3\x72\x69\xf6\xf5\x28\x10\x6b\x62\xfb\xfc\xd1\xcf\x6b\x06\x96\xd7\x25\x33\xc4\xba\x3e\x3d\xab\x17\x01\x6c\x8b\xed\x40\xdf\xbb\xee\xc0\x2e\x4b\x1d\x11\xc7\xfc\x9e\xae\xb6\x5b\x4b\xf8\x69\x05\x32\xb1\xd4\x3b\xc3\xee\xf5\x02\xf1\xb8\xf5\x7d\x1c\x57\xfc\xc9\x70\xef\xce\x70\x6f\x51\xb1\x69\x3b\x99\x97\x31\x1f\x4b\xcf\xa1\xdf\x20\xd9\x13\xc8\x95\x83\x19\xae\x29\xbd\x60\x92\xad\x97\x4b\x4f\xb0\x3b\x46\xad\x45\x89\x11\xc2\x75\xa3\x87\x15\x1a\x24\x54\x92\x99\x4b\x04\x43\x87\xd9\xa8\x1e\x7a\x99\x89\x5a\xc2\xfc\xc2\xbb\xee\xba\xc6\xc0\x52\x5a\x3f\x2d\x79\xa0\x6a\xc1\x15\x3d\x98\x8f\x7a\x17\x5d\xc7\x9d\x1d\x7e\x24\xe7\x9e\x86\x96\x1c\x55\xab\xdf\x47\xfa\xfb\xa8\xf2\x3d\x0d\xf6\x19\xd6\x02\xa8\xb9\x74\xb3\x95\xd8\x37\xc0\xe1\x49\x62\xc5\x05\x36\xd7\x36\xc1\x14\xf3\x97\x61\x84\x8f\x72\x7d\x23\x5c\x35\xa6\x09\x9f\xd4\xb5\x06\xe5\xf5\x50\x4e\xb5\x2a\xff\xb6\xca\x1b\x4a\xc7\x2d\xb3\x49\x7d\x67\x63\x67\xe3\xa1\x4d\x64\x4e\xe2\xd8\x8c\x6c\xa3\x62\xd9\x46\x78\x99\x7f\xfd\x92\x1e\x1a\x53\x2a\x96\x12\x1a\xdb\x12\x73\xc9\xc3\x2a\x20\xb6\x80\x74\x44\x33\x9c\x4e\xd3\xac\x90\x9d\xe2\xba\x10\x2a\x5c\x70\x3e\x88\x6d\x4e\x78\x24\x45\x88\x05\x0f\x38\xec\x1b\x93\x49\xc4\x4a\x3c\x2c\x67\xeb\x71\x70\x52\xf4\x6d\xfd\x26\x0c\xc8\x75\xdf\x01\x89\xf7\x9e\xd8\x1c\x3e\xec\xb3\xcf\x57\x0d\x7d\x70\xde\x3b\xdf\xd6\x24\x8d\x2b\xb1\x2c\xf2\x06\x74\xe8\x03\x2e\x2f\xdb\xbd\x35\x0a\x14\x99\x1b\xe3\x55\x46\x27\x36\x30\xcf\x8c\x90\xe8\xa5\xdc\xd9\x16\xeb\xfe\x64\x51\x22\xd8\x10\x3b\xfc\xff\x0f\x6b\x93\x3e\x88\xb5\xdf\xd2\x68\xc1\x2e\x73\xbb\x02\xfe\xbc\x9f\x44\x94\x07\x1d\xfe\x5a\xf3\x53\x4a\xa8\xf6\x53\xee\x32\x80\xbf\xad\x41\x85\xf3\x42\x30\xad\x71\xe9\xc0\x8f\xbc\x79\xb0\x72\x14\xa8\x18\xa5\xe2\x21\x3f\x41\xba\x61\xe8\xb4\xec\x9e\x57\xe0\xae\x83\xe9\x26\x97\xe8\x37\xca\xd5\x70\x31\x0a\xd7\xd5\x2f\x2c\x7b\xcf\xe8\xbb\x4b\x39\x13\x36\xe1\xf4\xd3\xbe\xd8\xda\x79\x1c\x88\xc8\xfc\xc4\xc0\x39\xf3\xeb\x61\xdd\xb5\x27\x4c\x08\xe1\xd8\x41\x89\x46\x12\xf1\x7f\xb9\xf1\xb7\x2e\x41\x70\xa5\x59\xd2\x74\xaf\x2e\xab\x81\x49\x31\x53\x76\x50\xcc\xc3\xb4\xe2\x46\xac\xe5\x6b\xe3\x20\x68\x58\x8a\xce\x7a\x60\xc2\xcb\xdd\x65\x40\x0f\x73\xbb\x10\xf0\xd3\x5d\x8a\x40\xac\x61\xf8\x23\xe5\x6d\xc7\xe7\x3a\x61\x49\x09\xdc\x7e\xdf\x44\x22\x5a\x90\xfb\x7d\x53\xdb\xcd\x01\xbc\x6f\x4f\x7e\x29\x47\x4a\x91\x65\x62\x12\xa6\x0b\xbf\xa7\x9a\x53\x32\x48\x18\x6d\x76\x05\xa7\xcd\x2b\x79\x90\x61\x47\x6d\xda\xe8\x1d\xce\xe0\x93\x15\x62\x63\x6b\x67\x07\xcb\x8f\x16\xe4\xcb\x91\x0a\x97\xae\xd1\x39\xf6\xfc\xa0\x34\xa0\x5e\x20\x04\x07\x2a\x7a\x1f\x0c\x4c\x57\x0f\x03\x21\x1e\xda\x9e\xda\xdb\xdf\xe8\x07\xe9\x21\xec\x24\x5d\x3a\xf0\xaf\x7d\x8b\x0f\xf0\xdb\x5e\x3c\x96\x2f\x42\x24\x31\xf9\xc9\x5a\x60\x36\xfc\x3d\x34\xfd\xa0\x9d\x0e\xbd\xd1\xd6\xd0\x4d\xfc\xb8\x42\x30\x49\x2a\xd5\x71\xd5\xf5\x7d\x13\x53\x45\x03\x39\xd2\x26\x81\xf1\x51\x85\x3a\x87\x47\x4c\x82\x3c\x95\x81\xc7\xf1\xcd\xba\x71\x7e\xa5\x6a\x68\x75\x6d\xbf\x49\x5c\xfc\xde\x8e\x59\x74\x88\x4a\x1d\x57\xdc\x80\x97\x11\xe6\x58\xdd\xa1\xeb\x1f\x24\x68\x52\xb2\x12\x5b\xf8\x94\xaa\x66\xc6\x4a\x60\xd9\xd2\x2c\x17\x54\xdd\xd4\xd5\xe7\xd8\xd2\xc5\x61\x72\x91\xe5\x71\x31\x9e\xec\x02\xac\x36\xb5\x89\xad\x9f\xff\x30\x4b\x23\xac\x56\xa5\xb8\x36\x15\x9a\x84\xc2\x22\x56\xa3\x58\x46\xbb\x3a\xcd\x74\x0b\xa4\x89\x5c\x72\x46\x13\x10\x16\xdb\xd3\x2c\x2f\xb8\x24\x59\x5a\xe4\x59\x82\x6e\xcd\xe1\xb0\x90\x39\x81\xa2\x00\x10\xf2\xd5\xd2\xce\x54\x42\xac\x0d\x92\x10\x2b\xfb\xa9\x62\x0d\x73\x33\x3c\x0a\x44\xef\x61\xa7\xb3\xb5\x13\x88\xad\x27\x9d\xce\x76\xaf\xa5\x33\x42\x0f\x74\xa7\xb1\xf2\xbd\x34\xa6\x79\x9c\x72\xd7\xba\xcb\xdb\x7a\x9c\x8f\x31\x27\x05\xf5\xf8\x93\xf8\x72\x76\xf0\xec\x26\x10\xbd\x4d\xf1\xe5\xd5\x4b\xf8\x63\x5b\x7c\x79\xfe\xf6\x26\x10\xdb\x5b\x94\x6f\xa4\x43\x2b\xc5\x35\x63\x31\x1d\xe4\x3c\x56\x92\x1f\x9f\x79\xcb\x3b\x0d\xf3\x22\x0e\x93\x64\x71\xeb\x72\x80\xfc\x25\x42\x1a\xd2\xda\x45\x1e\x2e\x78\x34\x28\x82\xc5\x4a\xc4\x17\x29\x06\xe9\xa1\xc5\x28\x56\x68\x63\x22\xfe\xe3\x6f\x1f\x96\x04\xfc\xf2\xec\xf0\xd5\x4d\x20\x9e\x88\x2f\xcf\x4e\x61\xf8\x3d\xf1\xe5\xef\x67\xf0\xc7\x96\xf8\xf2\x12\x26\xb4\xf5\x48\x7c\x39\x7d\x07\x73\xdc\x7a\x2c\xbe\x1c\x9e\x3e\xbf\x59\x96\xe0\x8e\x4d\x82\x58\x5d\x2c\x1b\x09\x73\x42\x8d\x5d\xd0\x67\x86\x34\xac\x73\x53\x7c\x57\x5f\x38\xba\x70\x87\x09\x87\x97\xe7\x93\x50\x5d\x6a\x57\x66\xe0\xdd\xf8\x1b\xab\x39\x86\xc3\xcb\x36\xcc\x19\xcd\xd3\x85\xce\x28\xa6\x64\x41\x82\xaf\x8f\x07\x14\x7f\x0f\xb8\x40\x9f\x6d\x5e\x8f\xb6\x47\xa3\xe1\xe6\xe3\x11\x86\x8f\xa7\x61\xbe\x10\xbd\x5e\xaf\xb7\xb9\xd9\x73\xfe\xd9\xa4\x7f\xf8\x97\x11\x3d\x29\xb7\x90\x19\x5d\xdf\x81\x66\x5c\xd2\x4c\x12\x08\x3c\x6a\x40\x9c\x01\xc1\x0b\x79\x8d\x62\x6d\x73\xcd\x1d\xff\x5a\x8b\x66\x50\x1f\x69\xdc\x17\xdb\x3d\xd4\x1a\x05\x6e\xa7\x54\x6f\xc0\x15\x62\x9b\xce\xdb\x07\xf0\xea\xc1\x03\xb4\x7d\x2f\x0d\x4a\x26\x21\xd6\x4a\xb1\x2c\xdf\xe9\xd2\xc6\x55\x3f\x29\x3b\x17\x3b\x0f\x3c\x09\xf5\xf3\x20\xc9\xda\xf6\xff\x53\x5d\xff\xe2\xeb\x57\x2f\x12\xb9\x6c\x1d\x30\x5f\x59\xe7\x2f\xfb\xed\xf6\x6d\x3e\x65\x66\x3a\x40\x9f\x34\xf3\x31\x6b\xbb\xbd\xc5\x61\xdc\xec\xc5\x5e\x71\x5a\xfb\xf6\xca\x55\x17\x4e\xf7\x54\x71\x2f\xb3\x64\xce\xdf\x78\x20\xb5\xfe\x12\xd2\x0a\xee\xea\x4b\x1f\xa6\x53\xcd\x65\x38\x11\x32\x46\xd7\x89\x58\x09\x39\x99\x16\x0b\x68\x39\x0e\xe1\x6a\x96\xa0\xc6\x39\x12\x4d\x24\x03\xa5\xad\x40\xd7\x32\x6b\x61\xaf\x6c\x71\xa9\xdc\x92\x1b\xcd\x3f\x0a\x13\x25\x7f\x48\xe4\x4f\x4d\x94\x3d\x71\x21\x53\x9e\x50\x67\xdf\x4c\xe5\x5c\xfc\x3b\x89\x07\x4e\x2d\x20\x87\x78\x98\x54\x5b\x18\xb9\xcd\x18\x77\xaf\x9a\x6d\xeb\x0b\x7b\x72\xf8\x39\xce\xbc\xcc\x12\xd5\x34\x06\xda\xfd\x9a\x35\x09\xba\x80\x9a\x4d\xd2\xe0\xe9\x1b\xdc\xb4\x11\x1c\x14\x1b\xdd\xd6\x2e\xf2\xda\x45\x6e\x3b\x3f\x73\x83\xd3\x8e\x65\xad\xa0\x94\xe2\x41\x7b\x74\xdc\x1e\x0f\x5e\x9b\xdf\x80\xf3\x38\xe3\xbd\x8a\xef\x47\xf4\x68\x14\x27\x5a\xc1\xe1\xe5\x54\xf8\xc1\xd5\x88\xdc\xc0\xf2\xea\x56\xd3\xdb\x52\x68\x38\x3f\xc4\x4b\x6b\x12\xaa\xe2\xd6\xf8\x70\x13\x1c\xae\xef\x36\xd3\x99\x9e\x3e\x05\x87\x27\x17\x0e\xc0\xbd\xb2\x61\xa5\xf2\x3d\xde\xc0\x42\x37\xba\xab\x8b\xb1\xee\x24\x0d\x01\x17\x56\x8e\xfa\x0d\xdb\x11\x5e\xc3\xfa\xea\x1b\x98\x27\x51\x37\xbd\xc2\xe8\xfb\xfb\x74\xcd\x6f\x22\x80\x9f\x45\x0f\x5d\x2a\x51\x98\x16\x4e\x14\x85\x5f\xf8\x5c\xd4\x45\xd0\xbb\xcb\x04\xf8\x4d\xb2\x2a\x3a\x1d\xf3\x1d\x9b\x8b\x89\xfd\xa0\xbd\x85\x45\x21\xba\xc5\x09\x57\x78\xcc\x19\x46\xf7\xe9\x0b\x61\x92\x65\x97\x21\x8c\x07\x97\x89\xab\xee\x77\xa8\x6c\x27\xe7\x76\x56\x20\x65\x51\xa6\x92\x6c\xc4\x79\xc7\x1f\x8b\x49\xb8\x10\xb9\x9c\x84\x98\x9d\xba\x94\x16\xa2\x86\x68\x60\x18\xbe\x16\x35\xbc\xf5\xf7\x2a\xd0\xc3\xf2\xeb\x9b\xcb\xb2\x30\x8c\x52\xdd\x53\xe1\xd6\xcb\xf9\x51\xa7\xa5\xa4\x40\x75\xb3\x9f\xd5\x07\x54\xec\x7a\x65\xec\x94\x1e\xf5\x2a\x67\x17\xc2\xfc\x6b\x88\x21\x24\x28\x71\xe6\x0c\x0c\xce\x01\xb8\x32\xb2\xdb\x05\x0f\x51\xff\x17\x27\x65\x7b\x2e\xac\x2c\x4e\xfd\xc7\x1c\xd1\xc0\x94\x61\x84\xd3\x95\x65\x22\x4b\xa2\xff\xc1\x63\x8b\x05\x37\x48\x5d\x36\x08\x9c\x38\x8f\xc1\x9e\xa7\xf8\x85\xf5\x74\x83\x40\x52\xe6\xcb\x9e\x39\xd4\xaa\x30\x37\xf7\x2a\xba\x97\xef\x57\xb0\x5b\x9d\xb5\xa7\x1e\x13\xb3\x34\x91\x4a\x95\xe8\x2c\x4c\x16\x7d\xc7\x23\x57\x6a\x4b\xe4\x95\x4c\x74\x02\x13\xe3\xcf\xe9\x5e\x1b\x71\x2d\x62\xa5\x85\x67\x16\x0a\xbd\x58\xea\x8e\x2a\xf2\x49\xc7\xc8\xf6\x68\xb0\xf9\xd7\xf9\xbb\xe3\xbf\x1d\x9f\xfc\x7a\xec\xfb\x6e\xfb\xdf\xd5\x5d\x0b\x3c\xbb\x53\xc5\x1f\xf9\x5b\xa6\x82\xaa\xa2\xde\xe1\xd5\x36\x53\x7a\x55\x39\x00\x43\xa8\x55\x9d\xba\xea\x52\x0d\xc3\x2a\x52\x2b\xca\xd3\xea\x00\xa2\x6f\x0f\x00\x75\x04\x7f\xc8\x08\x78\xd1\x4a\x3e\x9c\x4b\x90\xd4\xd4\x7e\x2a\x45\x6b\x51\x1d\x5e\x61\xec\x11\x8e\xf7\x87\x8d\xe1\x46\xb3\x45\x32\x8b\xbc\xb4\x1c\x25\xd3\x46\x87\xa1\x74\xcd\x6e\x2e\x35\xb3\x18\x82\x46\x65\xa9\x8a\x79\xa6\x69\x18\x0c\xfa\x42\x16\xd6\xf6\xa5\x87\xe6\x2a\x2b\xef\x66\xff\x12\xb6\x6c\x82\x7f\x1c\xcb\xc6\x30\xeb\xd5\x7b\x0b\x0d\xee\x78\x25\xbf\x68\x65\x6c\x49\x03\xef\x8a\x24\x0c\x09\x21\x47\x65\xa3\xf2\x17\xdb\x62\x43\x3c\x6e\x61\x6d\xb8\x6d\x4f\x52\xb5\x1f\xbb\xe5\x46\x4a\xdf\xdf\x82\x53\xd9\x14\xd0\x67\xd6\xbc\x9f\xcc\x5a\x1a\x99\xcc\x2f\x24\x0b\xf7\x93\x19\x9c\x27\x71\x7f\x56\x4a\x7c\xec\x0c\x37\xf0\xad\x05\x76\x68\x25\xd3\x81\x47\xfd\xab\x48\x6a\xc2\x1d\x5b\x8e\x37\x83\x3b\xd1\xfd\xbe\xe9\xb2\x25\xbe\xb8\xab\xe5\x51\xdc\x9b\xd5\x72\xd1\xc5\x6e\x57\xb0\x91\x1f\x84\xe2\x7b\x7d\xd1\x04\xfe\xb2\xde\xda\x0c\xc4\x5a\x92\x29\x14\x0e\xb4\x79\xbf\x1e\x2a\xfe\xd2\x63\x17\x1b\x62\x87\x12\x5f\x52\x98\x8d\x4f\x42\x39\x2a\x84\xa9\x67\xd3\x6b\xf6\xd0\x9f\x03\x5c\xca\x69\x44\x7d\xd1\xee\xb5\x9c\xfc\x19\x0f\x77\x11\xbb\xe7\x59\x1e\x59\xb3\x9d\xc6\x1b\xe7\xa8\x9c\xc1\xa1\x92\x34\x03\x98\x18\xb1\x44\x0e\x22\x32\x09\x4f\x60\x24\xaf\x8e\xce\xce\x9f\xbd\x7b\x79\x7a\xf4\xaf\x43\xf1\x54\xfc\x8a\x35\x38\xf4\x21\x39\xd1\x3a\x28\x76\xa0\x6e\x70\xac\xcb\x34\xcf\x86\x74\xa4\x27\x94\xb8\x25\x4c\xa9\xa5\x66\xa3\xc8\xbd\xb0\xec\xb8\x4b\x0a\x5c\x56\x09\x22\x40\x20\x06\x72\x18\xce\x94\x25\x12\x20\x21\x50\xc1\x46\xec\x67\x20\xa9\x4c\x07\xea\x6c\x66\x43\xe8\x73\x34\x4b\x3a\xe2\xc8\x1f\xf6\x7e\x9f\x7a\x0f\x44\x4c\x31\xd7\x12\xb3\xb7\x61\xc9\x2a\x38\x60\x99\x19\x44\x1e\xa6\x8a\x94\x62\x9a\xaf\xa5\x45\x56\xda\x28\xff\xa8\xdf\xfd\x4e\x51\x2d\x4d\xa8\x0a\xb8\x74\x5f\x2c\x98\xa7\xbd\x3c\xfa\xc7\xe1\x0b\x54\x65\xb8\xf8\xd3\xf7\x90\x77\xb5\xaa\x3f\x6f\x56\xc4\xcd\x25\xd2\x3e\x3b\x5b\x94\xd3\x5c\xf8\xa9\x08\x4b\x05\xe5\x2b\x65\x48\xbd\x9e\x5f\xfc\xf3\xf8\x8e\xdd\x56\xed\x55\x15\xeb\x3a\xa5\x00\xa8\x18\xd1\xe9\x71\xd9\x6c\xb9\x74\x32\xbe\x01\xdf\xdc\x92\x1d\xc3\x81\xd0\x46\x22\xd5\x7e\x6a\x99\x0f\xc5\x2a\xf6\x3d\xdd\x39\x07\xd0\x3b\x1c\x4a\xc5\xff\x96\x6b\xb6\x22\x92\x66\x28\x9c\xb7\x5b\x89\x49\x18\x49\x31\xc9\x22\xb1\xf5\x5f\xdb\x5b\x01\x1e\x40\x10\x71\xd8\x35\x90\x73\xc6\xec\xf4\xb6\xc4\xeb\x67\xab\x26\xdc\x6f\xf6\x2a\x4b\x2f\x44\xac\xd3\x9a\x49\xb8\xe8\x88\xed\x2d\x5d\xfe\x56\xd4\x5e\xa1\x99\x4c\x20\x66\x99\xda\x48\x4e\xbe\x30\x3b\xdd\x6a\x12\x7f\x9c\x10\xcc\xd7\x10\x6d\x92\x03\xfc\xd5\x78\xfa\x74\xdb\xb3\x84\x55\x3e\x68\x3f\x5e\xc7\xee\x7f\x54\xde\xa7\x53\x38\xe2\x36\x37\x42\x9c\x8e\x32\x32\xab\x86\x09\x17\xf0\xb1\x7e\x95\xec\x99\x20\xde\xb2\x2b\x0b\xa5\x59\xd3\xf9\xba\xbc\x7b\x8c\x49\xb7\x86\x34\xa6\x92\x39\x0e\x0e\x34\xf6\x60\x53\x0e\x24\xdf\x8c\x87\x36\x09\xe1\x38\x4d\xcb\x37\xb3\xb3\x94\x9a\x25\xa6\x80\xa3\x9b\x69\xa3\x6d\xf3\x6c\x2c\xcf\xd3\xd2\xef\x53\x96\x16\x54\x78\x77\xf1\x42\x31\x2b\xce\x75\x2d\xcc\x38\x35\x7f\x46\x26\xb2\x70\x59\x72\x13\x27\x91\x0a\x66\x43\x11\x18\x34\x6d\xcb\x78\x3f\xb9\xad\x00\x75\x3d\x10\xaa\x8b\xc5\x09\x98\x75\xe3\x9a\xd6\x49\xa5\x35\x26\x3b\x1f\x7a\x1d\xea\x57\xec\xec\x5d\x9f\x42\x05\x6e\x6d\x26\x6f\x49\x69\xcd\x4c\x84\x94\xd5\xca\x26\xc3\x3a\x6f\xf0\x52\xe9\x65\xce\x45\xa9\x3d\xc5\x7f\x47\x82\x14\x9d\xf9\xc3\xfd\x47\x67\x01\xe9\xdf\x92\xfc\xc3\xc9\x1d\xa1\xc6\x2d\x2e\xc1\x8e\x7f\xbf\x3e\xf8\xc7\xf9\x8b\xa3\xd3\xb3\xa6\x6a\xe9\xa4\x57\xe6\xa8\xe2\x07\xc9\x10\x18\x1f\x55\x19\x87\x8f\x71\x3c\x16\xa5\x96\xb4\xf2\xaa\xbf\x73\x57\x26\x9f\x88\x58\x33\xa7\x63\x57\x00\x69\xc4\x81\x9b\x3c\x14\xee\xba\x36\xcb\x79\x60\x4a\xc9\x5e\x5a\xf5\x4e\xf8\x6e\xe6\x52\x6f\x28\x75\x9b\x84\xa9\xa7\x9a\xf7\x5a\xa4\xd8\x31\x17\xd1\x28\x56\xe1\x20\x21\xb3\x15\xea\x7d\x23\x39\x0a\x67\x49\xa1\x82\x55\x2c\xb3\x00\x62\x8a\x4c\xd1\x26\x16\x53\xfa\x07\xbe\x7e\x02\x79\x0b\x8b\x78\x10\x27\x71\xb1\x00\xe0\x5c\x0d\xe1\xec\xed\xbb\xe3\xe7\x07\x67\x87\xa4\xae\xc1\xb3\x0b\xe4\x3f\x5f\xa0\xea\x69\x06\xd7\xe1\x78\xc4\xb2\xc5\x34\xcf\x46\x31\x19\xdc\xe0\x6a\x50\x64\xd3\x1a\x0a\x84\xba\x7c\xa6\x02\x24\xec\xd9\x43\x03\x08\xdf\x1b\x8d\x46\x2d\x42\x6b\x90\xf5\xec\x4d\x7a\xcb\x66\x63\xec\xda\xa2\xc0\x61\x2a\x66\xd3\xa9\xcc\x29\x17\xa4\xe3\xad\x65\xf8\x96\x9b\x97\x12\x85\x55\x43\x22\x30\x60\x4f\x77\xbe\xfe\xc4\xba\x85\xb8\xef\x55\x91\x63\x4a\x3d\x2a\x64\x0e\x53\x38\xc7\xdf\xf0\x35\x37\x40\x9b\x48\x64\xd3\xd6\x47\xe5\x14\xed\x91\xcd\xd1\xae\x31\xce\x19\xc5\x46\xdf\xdf\x7a\xf8\x78\xdd\xb5\x96\xac\x8b\xe6\x8e\xd8\xf0\x72\xcd\x44\x9c\xc3\x9e\xe1\xdd\x54\xe7\x86\xf6\xad\x6d\xfd\x41\x5d\x3d\x1b\xb3\xec\xf7\x67\x40\x2c\xe9\x76\x9c\xcd\x0a\xf1\x7f\xee\x27\x51\xf3\x7e\x12\xdd\xbf\x8f\x95\x5b\x34\x84\xea\xad\xc3\xa3\xb1\x0e\xe9\x2d\x37\xe9\x6d\x6e\xbe\x12\x6d\xe7\x8b\x75\x78\xd2\x35\x8d\x5b\x66\x22\x24\x1c\xea\xfc\xb7\xfb\x6e\x82\xab\xa7\x4f\x7b\x2d\x1b\x7f\x0d\xb8\xe1\xcc\x76\x5f\x34\x0d\x34\xff\x43\x77\xd1\x73\xcb\x21\xfd\x95\x83\x7f\x53\x1d\x0c\xc7\x4f\xcb\xc5\x4c\xc0\x47\xd5\x71\x93\xd5\xb4\x6d\xf5\x93\x5f\x25\x67\x17\xc0\x6c\x98\x71\xb1\xe0\x64\x14\xce\xd7\x5a\x98\xcf\x46\x62\x9e\x87\xd3\x30\x47\x6c\x0d\x0b\xf1\xe8\xe1\xdf\x48\x1a\xca\x52\xd1\x7b\xc4\x16\xda\xe1\x38\x4e\xd9\x1b\x51\x37\x74\xa5\x70\x2a\x11\x90\x4b\x60\xa9\xc3\x02\xcb\x44\x11\x8c\x47\x0f\xff\xd6\xee\xf1\xfd\x98\x85\xa7\x9b\xd5\x55\x79\x3d\xcd\xf2\x42\x75\xb4\xb5\x07\x18\x9b\xfe\x7b\xcf\x7b\xeb\x0a\xf3\xfc\x91\xfb\xc8\xff\xd8\xd1\x54\x6a\x88\xce\x23\xff\x5b\x12\x5b\xfa\x56\xc0\xf0\x5f\x53\x56\xd7\xbe\x55\x2d\xef\xad\xae\xde\x04\x5f\xd6\x3a\x9d\x2e\xe6\x56\xed\x0e\xb3\xc9\x24\x4b\xd7\x76\xb7\x1f\xde\x7c\x08\x1e\x3e\xdc\x7d\xaf\x45\x96\x26\xbb\x4e\x06\x93\x2c\x9a\x25\x32\x60\xa8\xad\x2f\xab\x0d\x5a\x35\x58\xa1\xc6\x1e\x51\xcb\xe7\x2d\xd1\xfb\xe9\xa7\x9d\xf6\xd6\x66\x6f\x5b\xfc\x55\x86\x69\x3b\xc9\x66\x53\xf1\x97\x30\x86\xd1\xc1\x6a\xbf\x0e\xf3\x4b\x71\x10\x25\x32\xd7\x0d\xb6\x36\x7b\x0f\xa1\xc1\x63\xf1\xf7\xb8\x08\x93\x85\x78\x33\xfb\x77\x1e\x93\xc6\xe7\x20\x8d\x72\xb9\x10\x67\xb3\x69\x5c\xa8\x38\x65\x82\x80\x04\x59\x65\xa3\x62\x1e\x92\x9f\xc4\x34\xcf\xa8\x98\x43\x23\x54\xed\x58\x35\x02\x53\xb5\x2b\x4c\x17\x42\x5e\x23\xa1\x02\x29\x07\xc4\xe0\x58\x46\x00\x64\x1e\xe6\x79\x98\x16\x8b\x8e\x38\x4a\x45\x9a\x61\xc6\x8b\x42\xcc\xe3\x24\x21\x5d\xce\xac\x18\x67\xe8\xd3\x21\xc6\x18\xd3\x8b\xc5\x6d\xb8\xc6\xce\x42\x44\xe1\x24\xbc\x90\x0a\x00\x85\x79\xcc\x85\x26\xb3\x09\x89\x05\xba\xf8\xaf\x33\xca\x0e\x0f\xfd\x8d\xcc\x27\x31\xdd\x34\x63\x25\x2e\x60\x04\x54\x84\x2c\x4c\x17\x59\x2a\x6d\xc9\x10\x77\x86\xba\xd3\xe9\x2c\x9f\x66\x4a\x06\x94\x13\x51\x6b\xb0\x60\xe7\x64\x8e\x39\x37\xc2\xe9\x34\x89\x87\xda\x37\x17\xa5\xd9\x4c\x84\x49\x21\x73\xe0\x1f\xe4\x8c\x6d\x6a\xa2\x01\x7f\x02\x48\xa3\x5c\xca\x64\x11\x08\x35\x1b\x7c\x92\x43\x93\x67\xc8\x7a\x7b\xe8\x63\x80\x69\x8a\x78\x1e\x3d\x72\xb4\xcd\xf2\xf8\x22\x4e\x2b\xb3\x25\x21\x98\x2a\x0e\x8a\x49\xac\x9c\xaa\x2b\x7b\x62\x91\xcd\xcc\x7b\x22\x11\xc3\x24\x8c\x27\xe4\x16\x02\x2f\xe7\x79\xa6\x6b\x2f\x23\xf8\x30\xb1\xcb\x08\x97\x6f\xf8\xa6\xb2\x48\x04\x09\xd0\x06\xb0\x21\x9a\x0d\x0b\x58\x00\x11\x0e\x2f\xd3\x6c\x9e\xc8\xe8\x82\xd3\xd4\x20\x5c\xfe\x42\x44\xd9\x70\x36\xd1\x2a\x3f\xbe\xfa\x0f\x18\x54\x38\x9d\xe6\x72\x18\xa3\xdd\x7a\x30\x2b\x74\x26\x1a\x3e\x0d\x11\x6c\xa8\xd8\xea\x88\x03\x58\x5d\x10\xbe\xb3\x59\x3e\x94\xe2\x4a\xe6\x0a\xdd\x8a\xf4\x35\x60\x9a\x84\x71\x9a\x2c\xc4\x24\xcc\x2f\x65\x84\x0e\x72\xb3\xe1\x98\x36\xc7\x59\x25\xea\xd3\x5f\x2a\xf8\x98\xd2\xf4\xd4\xaf\x05\xb4\xd9\xe6\x7c\xc0\x69\x56\xc4\x43\x89\x46\x26\x5e\x76\xca\x0e\x11\x09\xcc\x3f\x45\x63\x44\x0c\x05\x44\xe2\xc1\xba\xe5\xf1\x3a\xab\xf6\x92\xf2\xaf\x53\x34\x65\x37\x8d\x9f\x0b\x27\xb7\xd0\xca\x15\x12\x1f\x61\xf9\x3b\xf4\xb0\x8f\x29\xa1\xf6\x80\x1d\xfd\xf5\x94\x32\xc0\x8c\xe2\xa1\x55\xb0\xcc\x25\x69\x54\xd2\x8c\xd4\xba\x32\x57\x1a\x00\xd6\x1e\x8b\x4d\x22\x1f\xcf\x27\x94\x14\x39\xe1\x55\x18\x27\x78\xf8\x42\x3d\x08\xdb\x3f\xbe\xf4\xdb\x93\x4a\xd8\x42\x71\x95\x42\xb9\x0c\x61\xab\xc4\x48\x8b\xeb\x08\x04\x5b\x94\x06\x01\x33\x66\x23\x13\x4e\xd9\xe6\xc7\x61\xbb\x53\xee\x2e\x03\x7f\xf9\xdf\x5d\x87\x6c\x56\x38\x63\x20\x6b\x21\xd7\xb0\x95\x42\x4d\x43\xca\x9e\xc3\x9d\x95\x17\xc1\x6f\x5c\x5e\x05\x76\xb5\xa0\xa6\x4b\x56\xc0\x87\x40\x41\x7e\x79\x9e\xe5\x62\x22\x95\x0a\x2f\x64\x60\x6c\x5b\x40\x2f\xf1\x8d\x05\x31\x51\x17\xa2\x2f\x1a\x8d\xee\xfa\xbf\xce\xe1\x33\xca\x75\xc1\xae\xa1\x57\x31\xa5\x0b\x1a\x2c\x3c\x1a\xe5\x34\xa7\x3b\x2f\x2f\x20\x7b\x57\x49\x55\xb0\x00\x1c\x0e\x32\xb6\xf6\x19\x57\xc0\xdd\x5a\xb3\x0e\xc2\x72\xcd\x34\x5b\x30\x1e\xb6\xe7\x98\x21\x85\xc0\x7f\xb6\xb7\xd8\x75\x9f\x15\xf0\xb3\xd4\x11\x69\x75\x36\x76\xbd\xc2\xd0\xc0\x64\xad\x27\x4e\xd8\x61\x4e\x28\xfa\xfa\xc0\x10\x4f\x05\xfe\xb9\x73\x17\xfe\xd9\x34\x07\xae\xc9\x2a\xcd\x2a\x53\x45\x77\x11\x7e\xdb\x61\xe2\xa2\x3d\x8d\x4a\x8f\x3b\xa8\xbf\x3a\x19\x35\x1b\x57\x9b\x9d\x86\x16\xf0\xbf\xf9\x6d\xcf\x7e\xfb\xe0\xc1\xad\xdf\x3d\x81\x2f\x1d\xbf\xa2\xca\x32\x7c\xc1\x63\x73\x16\x0f\x2f\x77\xcd\x5f\xe2\x66\x6f\xd5\xb9\xef\x56\xda\x70\x87\xb0\xac\x66\x39\x74\xdb\xe6\x28\x0d\x44\x98\x5f\xf4\xf0\xdf\x5b\xf8\x6f\x2e\x0e\x84\x39\xbb\x16\x53\x99\x8d\xc4\x88\x82\xf0\x1a\xba\x79\xc3\x78\xd3\x8c\xf3\x6c\x4e\x1e\x2a\x8b\xa9\x3c\x04\x7c\x6d\x36\xd6\x86\x61\x92\x0c\xc2\xe1\xe5\x1a\x40\x43\xea\x6f\x0b\x61\x0a\x0b\x43\xab\xb8\x6c\x09\x49\xfd\x39\xdc\x97\x74\x95\x34\x78\x1b\xe6\x17\x2a\x10\x31\x2a\x11\xe6\x31\x5c\xb5\x9b\x26\xdc\x0b\x53\xb2\x6f\xee\xea\xbf\x7a\xbb\xae\xdb\x97\x5e\x6b\x67\xba\xd8\x2d\x7e\xba\xf5\x8d\x4f\xf5\x5a\x85\xa3\x42\xe6\xf0\xe8\x24\x95\x4d\x6b\xb0\x1c\xa5\x1d\x98\x68\x13\x8e\x13\xad\xa1\xb6\x4e\xda\x2e\xb6\xbf\xb7\x8b\xb3\x79\x76\x6b\x17\xb4\x4d\xd5\x8e\x1e\x7e\x77\x47\xe3\x5c\xde\x3e\x1b\x0f\x23\xdc\x0e\xf9\x36\x4e\x3d\xc2\xd6\x78\x95\x15\x31\xf5\x96\x51\xf0\xc6\x36\x2c\x90\xc3\x41\x63\xb1\x8f\x8d\x78\x8b\xed\x08\xe0\xe1\xfb\x98\xea\x5c\x18\x44\x78\x1f\x7b\x75\xfb\xef\x3e\x3f\x7f\x6a\x40\x11\x17\x76\x6e\xca\x9b\x0f\x05\xf2\xdd\xb4\x68\x01\x80\x18\x05\x4c\x50\x9a\x8d\x73\xee\xaa\xd1\x6a\xa1\x30\xaf\x7f\xaf\xed\x3e\x7c\x04\x54\xe8\xd1\x5d\xa8\x50\xb7\x2b\xd4\x38\x9e\xa0\x90\x49\xae\xd4\x0c\x05\x0d\x81\x79\x36\x57\x32\x5f\xa5\x70\x70\x7a\xdc\xaf\x39\xf8\x37\x24\xff\x0f\x43\xd4\x86\xa1\x9c\x31\x1f\x87\x05\x5a\x42\xb8\x3e\x24\x8a\xe9\x28\xd9\x00\xfb\xa1\xd4\xa7\x40\xe0\xf3\x59\x9a\xca\x9c\x03\xb3\x54\x31\x1b\xb0\x58\x4a\x9a\x14\x0c\x5b\x02\x1a\x9c\x5e\xa8\x8e\x10\xcf\xa8\x1a\x15\x16\xb4\x2e\x32\xbc\xe8\xa1\x66\x04\xc4\xbe\x22\x5f\x88\x21\xeb\x72\x09\xef\x50\x67\x82\xb2\x7e\x1e\x4e\xa7\xa4\xb2\x21\xd2\x0a\x53\xe0\xfc\x78\xe4\x9f\x13\x65\x52\x41\x7f\x91\x1c\xc5\xa9\x44\x21\x89\xc6\x0d\xbd\x1e\x15\x0d\xac\xf4\x1e\x47\x52\x84\x28\x32\x9b\x48\x44\x66\xec\x45\xbe\xe8\x0e\xf9\x4a\x1d\x49\x4c\xd1\x09\x77\x52\x18\x88\xcc\x8b\x30\x4e\x85\x4c\x2f\x62\xac\xb1\x8b\x6b\x49\x0b\x75\x2a\x8b\xb3\x78\x22\xb3\x59\xb1\xe7\x3c\x7d\x9e\xc8\x30\x37\xcf\x5d\x3f\x64\xc4\x6c\x6a\x94\xcd\x8a\x66\x95\xce\x31\x8d\x53\x06\x2e\xfa\x5f\x92\x40\x28\x53\x9e\x5c\xd4\x40\x95\x7a\x19\xae\xdb\xad\x58\x0e\x7b\xe8\x7e\xb6\x1c\xba\xc3\xdb\xac\x73\xe3\xc2\x09\x90\x76\x08\xb8\x33\xdc\x7e\x2d\x21\xd7\xff\x94\x57\x4d\xf4\x9d\xb6\x36\xa4\xba\x92\x72\x7a\x49\xdb\xf2\x82\x3a\x10\x38\xfc\x96\xd0\xa9\x29\xdd\x81\xdc\x19\xd0\xcd\xed\xb3\xf6\x16\xf2\x2e\xf3\xf6\x36\xa8\xef\xb5\xbf\xd3\xdc\x4b\xed\x6b\xb6\xfd\x7b\x16\xe0\xae\xd0\x6e\x56\x6f\x44\xb3\xd5\xb2\xe8\x96\xcf\x52\xfe\x00\x70\xc4\x75\x67\xae\xae\x6c\xdf\xdd\x60\x77\x0c\xdd\x6e\x9a\xe5\x93\x30\x11\x32\xbd\x8a\xf3\x8c\x12\x57\xc0\xe9\x0e\x53\x29\x54\x5c\xcc\x48\xbe\x34\xdf\x33\x69\xb6\xc0\xa0\xef\xc0\xe4\x7e\xbc\xd1\xaa\xea\xd8\xc3\xc6\x79\x88\x34\xc1\x5e\x40\x06\xf4\x50\x24\x61\x01\x77\x6a\xc6\x78\xeb\xde\x5e\x3b\x83\x32\x76\x88\xaf\x5f\xc5\xbd\xf2\x97\x68\x75\xaf\x9f\xeb\x1d\xb1\xfe\x4e\x53\xf4\xb1\x11\x28\xe3\x58\xa6\xf4\x2f\x95\x4d\xe4\x20\x8b\x16\x78\xa8\xd5\x30\x97\x73\x19\x91\x96\xcd\x59\x11\x58\x80\x34\x13\x47\x9d\xc3\x8e\x98\x84\x51\x94\x82\xe8\x56\x1a\x41\x79\xbc\xa5\x71\x10\x4e\x35\x65\xcb\x8e\xc3\x1f\x15\x8f\xec\x57\x1c\x19\x39\xa5\xc7\x29\x75\xa9\x23\x6f\x29\x03\x30\x8e\x14\x49\x8f\xbc\x0a\x13\xbc\x83\xd3\x67\x9a\x98\x17\xf9\x8c\xcb\x3d\x31\x0f\xca\x48\xc3\x81\xf3\x05\x7e\x2a\x23\x41\x78\x94\x2c\xbc\xee\x97\xcc\xc4\x15\x42\xbc\x49\x2d\x9b\x18\x4f\x45\x85\x13\x09\x97\x79\x32\xe7\x22\x12\xc1\x08\x62\x60\x2b\xa1\x56\x19\xc0\x35\x04\x47\x8f\x8c\x10\x45\xd2\xb1\x36\x51\xfa\xc3\x07\x4e\xdd\x00\x49\xa0\x11\x88\x71\x36\x1d\xcd\x92\x64\x21\xb2\x59\x8e\x31\x38\x94\x11\x25\xcf\xe1\x43\x13\xc4\x03\x9c\x90\x35\x5b\x40\xce\x43\x0d\x10\xef\x70\x77\x9f\x39\x4a\x1f\x35\x33\xd7\x6e\x6f\x2e\x57\xc9\x67\xa9\x4b\x0c\x9a\xa8\xff\xc8\xab\xc7\xfd\x79\x99\x0c\xba\x74\xed\x0f\x38\xf2\xc3\x9a\x41\x54\x0f\xbd\x47\x8c\x7f\xe7\xb1\xaf\xcc\xa4\x8e\xb1\xda\xb3\xff\xdc\x9b\xe7\x83\x07\x4b\x27\xfe\x1d\xd4\xff\x8e\x73\xfe\xbf\x47\x05\xea\x50\x60\xaf\xcc\x5b\x7e\x3c\x21\xf8\x83\x28\x81\x3b\x1b\x97\x16\x78\x13\x5b\x3a\xb9\xff\x4f\x10\x83\x4e\x79\xb8\xa7\xd9\xc4\xd1\x6a\xea\x61\xe1\x60\x6c\xcd\xec\x7c\x96\x70\x3c\x8c\x77\x90\xae\x94\x83\x35\xdf\xb3\xac\x44\x68\xaa\xcb\x6a\x08\xcd\xea\x0d\x0a\xcc\x9f\x67\x72\x26\x45\x5f\xbc\xff\x40\x02\x74\x94\xb3\xc2\xcc\x84\x06\x71\x42\x2a\x18\xe5\xff\x0f\x3e\xde\xb3\xed\x8e\xd8\x81\xb2\xdd\x73\xa5\x6c\x98\x40\xfa\x6e\x7a\xac\x2f\x6f\x2e\xc5\xba\x67\xe0\xe3\x31\x76\xc0\xba\xe7\x55\x17\xce\xb7\x23\xae\x0e\x4b\xd8\x24\x42\x06\x46\xe5\xce\x29\xcc\xfc\xbc\xcf\x86\x59\x3a\x0c\x8b\x26\xbe\x33\x87\xa9\x24\xf5\x55\x26\x68\x07\x03\xdd\x7e\x5e\xd2\x1f\x0e\x14\x7b\x69\x1a\x82\xe1\x2a\x66\xdc\xf7\xce\xba\xe8\xf9\xdd\xbe\x0a\x98\xa6\xdf\x10\x30\x47\x0c\x2c\x2d\x39\xf7\xec\x2c\x1a\x59\x13\x0d\x10\x52\xc7\xb8\x73\x70\xee\xf0\xcd\x52\x22\x26\x77\xe9\x74\xab\xbd\xca\x02\xbf\x77\xea\x82\xb0\x2a\x60\x63\xc3\x59\xc4\x7d\x51\x02\x5b\xb7\x81\xe5\xf7\xe5\xee\xdf\x5b\x80\x1f\x3a\xf9\x2c\x6d\x3a\xa8\x2d\xbc\x4a\x2e\x37\xb7\x6f\x24\xfc\xb3\x6c\x11\xa8\x69\x69\xd6\x5a\xa9\xba\x0c\x15\xcb\xcc\x9a\xb7\x89\x5c\xaf\xca\xfa\x0c\x68\x6a\x2e\x77\x8e\x08\xaf\x75\x61\x9e\xc2\xa5\xac\x34\x73\xb5\x2f\x23\x51\x7d\xfd\xd4\x06\x8c\x0a\x6d\xf7\x07\xc0\x31\xe6\x61\x17\xac\x9f\xf1\xf5\x70\x22\x76\x0b\xa8\xd3\x3f\xa4\xaf\xd1\xb5\xf4\xab\x1a\x1b\x97\x9c\x98\x75\xee\x4c\x67\x6a\x8c\x95\x87\x8f\x0a\x39\x21\xb9\x15\x15\x32\xce\x88\xdd\x15\x47\x2e\x8f\x09\x24\xee\xd5\x1e\x01\x8b\xe2\xf6\xe0\xd8\x73\x45\x2a\x93\xab\x27\x22\x89\x2f\x25\x2a\x47\xa2\x78\x58\xa0\x9a\x9c\x68\xbb\xb2\x07\xcf\x1d\x4f\x1e\x2e\xec\xed\x3c\x56\x9d\xd1\x2c\xa5\x2d\xd9\xb3\xcf\xf0\x2b\x9c\x78\x1e\x2e\x60\x17\x01\x40\x67\x9a\x67\x45\x06\xd7\x4f\xc0\x3e\x6f\x1b\xcb\x00\x3d\x9d\x94\x85\x08\x08\xb1\x67\x10\xa2\x88\x8b\x04\xb0\xab\xc1\x5a\xa2\x86\x7d\xc5\x4f\xcc\xd9\xd5\xcf\x65\x7a\xc5\xea\x22\xfd\x24\xcc\x2f\xae\xf8\x00\x96\xd5\xdc\x7d\xd1\x68\xa0\x2d\x45\x47\x65\xe5\x1c\xe8\x4e\xae\x00\xb9\xbc\x90\xd7\x53\x11\x2b\x35\x93\xaa\xdc\xd8\x68\xa5\xac\x52\x39\xcb\xa6\x30\x4f\x07\xa3\x33\xca\xb5\x9e\x4d\x9d\xe1\x44\xd1\xab\x58\x15\x32\xc5\xc1\xfb\xef\xb2\x74\x28\xab\x0f\x47\xa3\xca\x33\x32\xbd\x2d\x85\x43\xaf\x0f\x92\x44\x7f\xa1\x2a\x9f\xc8\x09\xd6\x29\xf6\x1f\x4e\x73\x39\x95\xe9\xf2\xf1\xf1\xfb\x93\x74\x58\xed\xdb\x7c\x94\x38\x7d\xda\xfd\x4f\xc3\x09\x90\x2f\xcd\x97\xdf\x7f\x10\xce\x32\x0d\x62\xaa\x26\x53\xd3\xa0\x5e\x47\x54\x6e\xc8\xa6\x53\x35\x9b\x4e\x31\x57\x7b\x83\xf0\xc8\x74\x30\x9c\x47\x65\x6c\xd4\x23\x69\x74\x1b\xc2\xc1\x96\xe1\x38\x8a\x73\xef\xdb\x28\xce\xbf\x39\x0e\x6a\xb5\x64\x14\xfa\xa3\x19\x07\xca\x1b\x8d\xa9\x33\x8a\xcd\x3d\x18\x84\x36\xee\x3c\xfe\x4e\xe3\x0e\xc9\x57\xad\x2f\xab\xdd\xf5\x7b\x62\x5c\x14\x53\xb5\xdb\xed\x4e\x8a\xb1\xea\x0c\x64\x77\x3a\x4b\x17\xa8\x87\xbc\xea\x75\x1e\x76\x7a\x62\xb0\x10\xff\x39\x09\x8b\x71\x1c\xa2\x75\x6c\xaf\x69\xbb\xca\x32\xbc\x17\xac\xae\x74\xd7\x29\xb8\x63\x58\x90\x65\xf0\x2a\xcc\xd1\x3b\x01\x5b\xac\x00\xb9\x84\xc7\x87\x46\x3d\xcb\x1a\x27\xa3\xaf\xed\x8b\x06\x51\x98\x06\xd0\x2e\xfd\xf8\xc1\x83\xd5\x95\x95\x7b\xda\x69\x24\xcd\x22\x79\xb6\x98\x4a\xe7\x8b\x3d\x0b\xfb\x35\x4e\xd7\x82\x9e\xf0\x6f\x1f\x32\x3f\x25\xc0\xac\x34\x76\xe1\xd2\x23\x07\xec\x5f\x48\x12\x35\x60\x59\x32\x2d\x81\xa5\xa7\x7b\xab\x2b\x40\x8f\x57\x57\x56\x6c\xcb\x8e\x69\xd0\x77\xe1\x7d\xfd\xea\x7f\x45\xd5\x82\xbf\xf5\x95\x92\xc9\xa8\xf4\xcd\xea\x0a\x6c\xc0\xca\x0a\x6c\x85\x70\x5f\xec\xad\xae\xdc\xd0\xc6\xac\xae\x08\xf2\xdd\xfe\xa8\x77\xf6\x23\x93\xf3\x0e\xbe\xfa\x4f\x38\x39\x42\xbf\xa3\x47\x68\xaa\x3c\xc1\x8f\xe0\x01\xef\xa1\xfe\x26\xe0\x1d\xff\x25\xbe\x18\x4b\x55\x88\x69\xa6\xe2\x22\xbe\x82\x4b\x2f\x7a\xf7\x6e\x6f\xb5\x07\x71\x21\x46\x49\x16\x16\x6c\xd1\x04\x10\x93\xf0\xfa\x08\xb3\x02\x6e\xf5\x1e\x3e\x7e\xf8\x64\xfb\xd1\xc3\xc7\x01\x10\xd3\xf0\x32\xec\x88\xcd\xeb\xc7\x2f\xe9\x1f\x91\xe5\x62\xeb\xbf\xb6\x7b\xed\x1e\x77\xf3\x2c\xcb\x0a\x26\xb5\xd3\x30\x0f\x27\x12\x73\x79\x00\xc4\x41\xa8\x60\xcb\xb7\x1f\x05\xab\x2b\xc5\x6b\x34\x97\xf7\xf0\x4f\xac\xba\xb3\x05\x8f\xd5\xa5\x9c\xc3\x27\x4f\x82\xd5\x95\x28\x9c\x4c\x45\x5f\x3c\xde\xdc\x0c\x56\x57\xb8\x92\xd0\x33\x40\xeb\xbe\x78\xbc\x65\x1f\x1d\x03\x98\xad\x27\x38\xb6\xcd\xeb\x27\x9b\xab\x2b\x91\x4c\xe2\x49\x5c\x20\xf5\x6a\xb4\x1b\xf8\xa6\xf1\xdb\xf5\xd6\x8b\x06\x0f\xf1\xad\xbc\x98\x25\x58\xd4\x51\x87\x6d\xd0\x00\x91\x23\xbc\xd1\x07\xaa\x2f\xba\xff\x75\x9d\xb6\xdb\xdd\x80\xdf\x1c\x67\xe9\xc1\xe9\xf3\xa3\x23\x78\xf3\xfe\xbf\x7e\xbb\xde\xda\x6c\xff\x76\xfd\xf8\xf0\x43\x17\x7b\x98\xa5\x36\xc1\x0a\x7d\x36\x1c\x87\xb9\x12\x1b\x98\x15\xc3\x79\xc2\xd0\x4e\x25\x2c\x4f\x91\x21\x25\xed\xbe\xff\xed\x7a\xeb\xf0\xb7\xd9\xf6\xe6\xe6\xd6\x6f\xb3\x97\x2f\x37\x0f\xe1\xdf\x8f\x7a\x1f\xba\x17\x08\xfc\xed\xcb\xe7\x62\xfb\xe1\x4f\x9b\x42\x99\x56\x3c\x97\x43\xd7\xc0\x4e\xd3\xc0\x8b\x18\x32\xb0\xd5\x95\x95\x86\xae\xc7\xd6\xd8\x15\x8d\x13\xfe\x7b\x97\x9d\x1a\x52\x29\x23\x25\xe6\x71\x24\x73\xac\x3d\x72\x81\x86\x94\x4c\x9b\x6a\x1a\x01\x00\x48\xb3\xa2\x3d\x08\x55\x3c\x04\x08\x47\x49\x22\x2f\xc2\x84\xdb\x3f\xed\xe3\x92\x8b\x26\x10\xc6\x50\xe0\x57\x64\x15\x41\xf7\x84\x16\x01\x88\x53\x0c\xd2\x6f\x63\x1b\x04\x42\x0f\x08\x48\x63\x75\xe5\x46\xa3\xe8\xf3\x2c\xbd\x92\x69\x2c\x81\x51\x62\xf5\xef\xe1\xac\xb0\xb8\xf3\x3a\x4e\x67\xea\x8c\x10\x07\x71\xa9\x2d\x00\x8d\x82\xd5\x95\x51\x92\x65\xb0\xdb\xaf\xc3\x62\xdc\xc1\x1f\x80\x4b\x88\x84\x2f\xf3\x6c\xf2\x7c\x1c\xe6\xcf\x69\x4b\x4f\xf1\x61\x67\xe4\x3c\xd5\x9d\x9f\xc9\xc9\x34\xcb\xc3\x7c\x61\xe8\x21\xf6\x7c\x29\x17\x7b\xf8\x45\xfb\x0f\xfb\x67\xbd\xeb\x9c\xf5\x03\xaa\xeb\x10\x0f\xd9\x23\x62\x56\xa0\x83\xaf\xe1\x23\x7c\xec\xa7\x79\x7c\x15\x16\x7c\xe0\xf1\x60\x89\x2f\x34\x99\x1b\x0a\x8b\xc7\x6a\x3c\x08\x01\x25\x34\xfa\x90\xf8\x8f\x12\x5f\x10\x4d\x6e\xc4\x19\xb0\x38\x25\x42\xf1\xf1\x6d\x98\x5e\x90\x4d\xfb\xa3\xad\xe6\xcb\xbe\x15\x30\x75\xcf\x71\xa3\xc3\x64\xc5\xf0\x24\x7c\x8b\x96\x08\x22\x68\x96\x75\x5a\xb8\x4d\xc2\xc3\xf7\xf0\xd5\x87\x56\x89\xc2\xd9\x59\x7f\x44\x41\xff\x3f\x26\xe1\xf4\xe3\xf7\xcc\x1d\x5b\xdd\x90\x80\x4a\xb1\x2e\xf8\x57\x91\x79\x85\xd1\x3a\x5e\x9b\x97\x0c\xf6\x46\x68\x23\x3e\xe5\x25\xd2\xb3\x42\x65\xc9\x85\x2c\x94\x56\xe9\x60\x3a\xb9\x2b\x99\x2f\x08\x3a\x02\x8b\x41\x12\x2e\xad\x2e\x0f\xe6\x00\x57\x80\x06\x92\x8d\x88\x96\x2a\x96\x01\xa8\xc2\x0c\x3a\x3e\xeb\xbe\xbd\x59\xba\xab\x3b\x09\xa7\x4d\x84\x12\x88\x51\x4a\x0b\xcc\xf7\x56\x72\x79\xc6\x77\xe6\xd6\x46\x2f\x73\xa9\x66\x49\xc1\x92\xf0\xca\x8a\xad\x91\x7f\x51\x8c\x29\x13\xe4\xca\xca\x0a\x7d\xf4\x9e\x9e\xc2\xc5\x66\x94\x52\x47\xfa\x11\x6c\xd3\xca\x0d\x70\x28\x12\x5c\xa8\x41\x65\xef\x14\x86\x03\xb9\x5b\xd7\x86\x4b\x08\xdb\x49\x73\x34\xad\x66\xf9\x25\x21\x56\x94\x61\xd2\x02\xe4\x5b\xba\x7e\x22\xac\xeb\x24\x8c\x13\x84\x17\x46\x11\x7a\xcd\xa8\x3b\xa0\x3a\x03\x83\x6d\x73\xe1\x6a\x78\x1a\xd6\x1f\xb5\xef\x08\xc6\xa4\xa4\xba\x75\xdb\x99\xe7\x65\x23\x37\x85\xd5\xb2\xbd\x47\x40\xb7\xed\xff\x0b\x9c\x5c\x93\x80\xfa\x68\x30\x0d\x49\x2a\xa3\x77\x1d\x35\x4d\xe2\xa2\xd9\xf8\xcf\x46\xab\x82\x0a\x8d\x06\x3c\x02\x29\x07\xdb\x94\xee\xc8\x2b\x2b\x2b\xdd\xae\x38\x4a\xfd\x95\x93\x2a\xa0\x30\xcb\xa2\xb4\xc4\xae\x03\x1b\x71\xc8\xa8\x23\x5e\xc9\xf0\x4a\x32\x24\x8c\x91\xcc\x86\x61\x82\x23\x14\xcd\xb8\x23\x3b\xb4\x8a\x68\x7e\x17\xb3\x29\xe0\xc5\xc7\xff\xfc\xd8\x02\x5e\x13\xa2\x40\xa3\x51\x52\xf4\x69\x5a\xef\x37\x3f\x88\x0d\xd1\xf8\x4f\x1c\x38\x53\x70\xf3\xae\xf7\x41\x63\x67\xb7\x2b\x0e\xf0\x0e\xf7\x91\x66\x8f\x0c\xb5\xf5\x11\xf7\xed\xe8\xf0\x89\x1f\x2a\xd1\x11\xa7\x52\x8a\xff\xe8\x3d\x86\xfe\x0c\x48\x5e\xbd\x5c\x4e\x93\x70\x28\x9b\x25\x96\x1c\xa0\xc0\x70\x68\xd7\x34\x09\x07\x32\xa9\xae\x7a\xc7\x7e\xa1\xd3\x48\xf4\xf1\xf8\xd2\xf7\xb8\x71\x9d\x4f\x59\x9c\x9a\x4f\xbd\x83\x25\x36\x74\xb3\xd2\x11\xa3\xb2\x52\x0a\x3d\x50\x91\x9c\x0c\xb3\xb4\x08\x6d\xc9\xb1\x74\x36\x41\xe2\x69\x79\x2d\xea\x56\x31\xf5\xe5\xbb\x34\x36\xa2\xa1\xcd\xf4\xc6\x9e\xab\x3c\x7c\xf1\x2b\xd2\x87\xbf\x86\x57\xe1\x29\xa9\xc0\x67\x4a\x2a\xf1\xee\xf9\x69\x7b\xcb\x54\x21\x4b\x16\x01\x02\x41\x3f\x59\x83\x9c\xa8\xfa\x1d\x02\xa3\xce\x81\xe7\x63\x75\xda\x6c\x24\xd4\x2c\xcf\xb3\x0b\xa0\xbb\xe3\x30\xb9\x92\x4a\x34\x71\x30\x3a\x81\x09\x02\x22\xf0\x70\x1b\x80\xce\x42\xa5\xa5\x19\x27\x23\x9d\x6a\x99\xa0\xd6\x38\xbd\xe0\x02\x81\x1c\xcb\x8f\x30\x30\xf0\x00\x96\xe1\xdd\xd9\xcb\x76\xef\x11\x1f\x49\x25\x1d\x81\xb9\x33\x1b\xaa\xad\x0e\x2d\xec\x47\xfb\x7e\xdf\x5c\x9d\xe8\x7a\x34\x58\xa4\x32\xc5\x3b\x54\x9a\x15\x52\x75\x3f\x85\x57\x21\xd9\x03\xda\x3a\xcc\xfd\x29\xb5\x9e\xc8\xc9\x40\xe6\x27\x23\xe1\xf5\xe0\x88\xe3\x91\xb4\xc2\x78\x89\x60\x31\xc2\x01\xbd\xe1\x8d\x61\xd9\x89\x5f\x34\x71\x51\x5a\x4b\x48\xcb\x19\x57\xd3\x32\x3c\xc5\xd9\xf0\x0a\xd9\x80\x41\xd1\x48\x98\x6e\x58\x9a\x61\xfc\x4b\xdf\x7f\x00\x91\x4c\xe8\xbc\xe6\xe4\x94\xa8\x1f\xd9\x98\x1a\xc2\x12\x1d\x2b\x42\x6f\x91\x9d\xe9\x1f\x54\x0f\xdd\x32\x1a\x0d\x6d\x5f\x58\xad\xf0\x0a\xf4\x9d\xa0\x02\x91\x01\x0e\x59\xe4\x3a\x28\x74\x83\x8d\x0d\x3c\x15\x48\xa4\xe8\x63\x94\x29\x5f\x3c\xd9\x44\x77\x42\x7a\xb4\x8f\x8f\x9e\xbd\x7c\x69\x52\xd8\x57\x7b\x02\x9a\x30\x8e\x2f\xc6\x16\x11\x03\x9d\xe5\x96\x73\x21\x72\xb5\x07\x8d\x69\xd8\x48\x17\x89\xfe\xe6\xf8\x70\x80\x5c\x2c\xfa\x81\xd8\xbc\x7e\xf9\x7c\x73\xb3\x85\x45\xe8\xaf\x5f\xe0\x9f\x5f\x40\x4c\x4f\xb2\xb9\xed\x1f\x9b\xad\xd0\xca\x93\x66\xb0\xc9\x53\x04\x00\xdb\x2f\x5f\xb6\x30\x2e\x79\x13\x03\x93\x2d\x64\x7c\xb1\x21\x36\xaf\x31\x35\x1f\xf7\x6e\x14\xf4\x2b\x3c\x55\x1b\x3a\x68\xfa\xdb\x23\xba\x0d\x1c\x18\xe7\x1d\x53\xca\x6c\x31\x4b\x29\x0c\x88\x7c\x9a\xa8\x3e\xdb\x75\x61\x20\x99\x6f\x74\xb0\xa0\xbf\x8a\x80\x74\xa1\xf3\x13\xce\x7b\x75\x66\x38\x2f\x1e\xeb\x0a\x2f\x5d\xbb\xcd\x63\x5f\x2d\x4f\x60\x49\xcb\x1b\x5f\xf6\xa0\xaf\x96\x11\x46\x7d\x7e\xe0\x22\x80\x21\xc9\x86\x54\x66\xa3\x3a\xf2\xb8\x9c\x50\xd0\x91\xf9\x78\xc7\xa3\x4e\x64\xa5\x4e\x14\x85\xe7\x6f\x88\x14\x5b\x79\xf4\xd6\xc1\x98\xd3\xae\x89\x85\x3e\xee\x9a\x52\xd4\xd0\x88\xf2\x81\xa7\xf1\x34\x8d\x5a\xd7\x2c\x9f\x2b\x44\x6a\x15\x10\x2d\xb6\x3e\x9a\x0e\x59\x20\x49\xc1\x3d\x85\x80\xe3\x2f\x01\x15\x69\xcb\xe8\x69\xbb\xaf\xf1\x72\xcf\xd9\x48\x0c\x8f\xab\x5c\xb6\x34\xa0\xa7\x4f\x45\x6f\x53\x63\xb6\xf8\xca\x87\x9b\x71\x45\xd3\x07\x3a\x45\xe2\xab\xf0\x0e\x88\xc1\x8a\x3b\x74\x44\x00\xcb\xa8\xb3\x72\xa3\xd9\x6f\xa3\x7c\x03\x79\x4e\x2c\x4c\xd5\xdc\x5b\x35\x0b\x8a\xe2\x8b\xb8\xe8\xf2\xc5\xd8\x45\x20\x7c\x71\x96\x3d\x83\x76\xcd\xd6\xc7\xe5\x62\xeb\x31\xfa\xcf\x3b\xb8\x81\x5b\x4c\xfd\x55\xf1\x82\x66\x5f\x46\x0e\x0d\xe3\xcc\xe1\xfb\xc6\xf1\xbc\x66\xf0\x4d\xf2\xc4\x04\x3e\x83\x90\x4c\x44\x08\xaa\x52\xf9\x96\xdf\xd2\x02\x41\x0e\xf7\x35\xf1\x71\xf3\x23\x0a\x67\x7c\xad\xee\x7d\xc4\x4c\x54\xf8\xf3\xa3\x88\x47\x2c\x06\xb8\xdc\xd8\xd6\x8f\x35\xf0\x45\xe8\x4c\xc0\xc5\x53\x1c\xe2\x59\xf6\x02\x56\xad\x69\x96\x82\x50\x8b\xaa\x84\xe8\xd5\x69\x8b\x87\x4f\xc4\x3e\x57\x0b\xb1\xfb\xe9\x7e\xb0\xb5\xa5\xa5\xc0\x72\xd3\x47\x3b\x62\x5f\x6c\x3d\x5a\xde\xf4\xd1\xce\xb2\xa6\x3f\x3d\xfe\x46\xd3\x9f\x1e\x97\x6e\x46\xb0\x34\xcb\x31\xca\xc3\x1c\x8d\x4e\xe5\x9d\x72\x31\xca\x5b\xa2\xbb\x60\x14\xf6\x70\x57\x9c\xb8\x0d\xa5\x2a\xf8\x33\x1f\x67\x4a\x32\xb4\x26\xfa\x16\xcc\xb8\xf8\xd5\xad\xe8\xa4\xf8\x58\x7c\x0c\xd8\x25\x96\x94\x4b\x54\xab\xca\x45\x36\x84\x52\x41\x38\x8c\xcc\xfa\x38\x4a\xc2\x8b\x8f\xa4\x69\x4f\xdb\xff\x96\x79\x46\xb9\xeb\x31\x7e\x18\xd9\x17\xa6\x3f\x89\x15\xc2\x80\x61\xed\x21\x5f\xe1\x0c\xf7\xd9\xdc\xff\x8a\xca\x7e\xd3\x2c\xe5\x38\xbc\x8a\x33\xd4\xe2\xcf\x52\xed\x81\x83\xf7\xf9\xba\x6e\x51\x74\xe0\xf9\xb0\x97\x6a\x69\x10\x15\x24\xf7\x68\x02\xfe\x08\x04\xc0\x25\x9c\xea\x76\x85\xd8\xec\x74\xb6\x76\x80\x2e\xc3\xcc\x49\x21\x18\x76\x3a\xff\x86\x93\x76\xd0\xe9\xfc\x8b\xbe\xda\x7a\xd4\xe9\x6c\x97\xbe\xda\xec\x74\x7e\xb2\x98\x47\x3b\xbf\x21\xb6\xb6\xc4\x86\x78\xbc\x23\xd6\x05\x75\xc7\x18\xdc\x16\xcd\x26\xf4\x2b\xee\x61\xa0\xc5\xfe\x3e\xe6\x60\xf7\x10\x15\xb5\xa8\x61\x14\x4e\x39\x70\xcd\x3a\x98\x2b\x01\xd7\x77\xc5\x69\x94\xb7\x3b\x0f\x01\x9f\x58\xf9\xb8\x45\x58\xa4\xa5\xe8\x22\xcb\x12\xd5\x89\x65\x31\xea\x64\xf9\x45\x77\x5c\x4c\x92\x6e\x3e\x1a\xc2\x87\xff\xc1\x00\xda\xdb\x9d\x87\x15\x4c\x76\xd7\x0c\xc7\xd0\x8c\x64\x52\x84\x01\xe0\x31\xb1\xcf\x80\x32\x74\x9e\xc5\x13\x69\x25\x58\xca\xf9\xbe\xba\xb2\x82\x5f\x8b\xbe\xfd\x46\xfc\x2c\x50\xe5\x47\x70\x44\x57\x44\xe1\x64\xda\x12\xbb\x82\x7e\x03\xff\xb1\xed\x36\xfa\xa5\x8f\x4d\xaf\xc8\x40\xd0\x5e\x8c\x31\x47\xba\x76\x7d\xfc\x6f\x5a\xa3\xf5\xee\x9e\x06\x28\x7c\x65\xe4\xba\x40\x0d\x36\xf6\x23\x2e\xa1\x07\x78\xcf\xa4\xc4\x8c\xd6\xeb\xd4\x03\x50\xd6\xb9\xd0\xa7\x97\x20\x15\xfa\x1d\x71\x5e\x02\x0d\x84\xa1\x6d\x08\x75\x29\xe7\xad\x5b\xd8\x9b\xd1\x68\x5b\x15\x05\xe2\x55\x1b\xe5\x45\xb5\x98\x0c\xb2\x04\x0f\x6a\xe8\x7c\xe1\xde\x22\xf9\x93\xce\x12\x11\xa9\xf6\xde\x43\x97\x1c\x38\x7a\x77\xea\xfe\x36\x89\x88\xee\xca\xd0\xb4\x32\x3c\xaf\xb9\x77\x1a\xe9\x1e\x84\xa3\x30\x27\xf0\x05\x86\x04\x00\x6b\x44\x81\x6a\xf9\xdd\x08\x9b\xbd\xd2\xb7\x21\xfc\x55\xba\x0c\x65\xb3\xc2\x7c\xec\x5e\xa1\x52\xfc\x9e\x0c\x13\xfa\xd9\x80\x8c\x16\x8e\x09\xc3\xbc\x01\x62\xa1\x7f\x7c\xb2\xbd\x47\xf2\xda\x74\x94\x44\xb1\xfe\x7b\xae\xff\xb8\xd4\x7f\x10\x9d\xe1\x1f\xe6\x0f\x54\xa5\x53\x28\xc5\x30\x4c\x86\xb3\x84\x50\x98\xd6\x91\xf4\xe9\xba\x7b\x46\xaf\xbd\x55\x5a\xa1\x5f\xc2\x34\x4a\x38\xa9\x5b\x89\x2f\xa8\x5d\x91\xc8\x82\x39\xd5\x47\x20\xea\x7e\x45\x1d\xda\x70\xc2\x07\x00\xc5\x5a\x89\x81\x1c\x65\x9c\x6b\x0f\x03\x02\x8d\x71\x86\x24\x8c\xcd\x8f\x9c\x6c\x91\x2e\x69\x69\x96\x12\x31\x4f\x31\xc3\xeb\xaa\x51\x2c\x71\x1a\xdf\xf2\x98\x74\xb0\x31\xdf\x28\x60\x16\xf4\x8d\xd9\xb5\x50\x15\x47\x1c\x83\x66\xba\x6e\x69\xb5\x18\x7d\xbb\x2f\xb4\xb8\xa1\xdb\x6e\xd2\x91\xd4\x04\xe1\x13\x25\x8d\xf8\x24\xf6\x69\x04\x7b\x62\x63\xe3\x93\x55\xa1\x61\x76\x8d\x06\x09\x43\x55\xde\xab\xe5\x6a\x1a\x8f\x73\xc3\xfc\xd4\xd2\xf6\x13\x2d\x64\x93\x56\xdd\x31\xb8\xb4\xca\x12\x30\xdd\x99\x6a\x40\xb5\xcc\x88\xbb\x5d\xf1\x3a\x8c\xf9\x04\x60\xed\xfc\x2c\x9b\xee\x0a\xca\x90\xf1\x69\xa6\x0a\x0a\x23\xaa\xd9\x11\x98\x48\x98\x2e\x9c\x19\x78\x3b\x39\x87\x3d\x1a\x66\xd3\x18\xb8\x2e\x81\x0b\x0b\x4e\x0d\x78\x11\xa7\xa8\x9b\x72\xd2\xfe\xeb\xc5\x33\x79\x06\x11\xea\x53\xb1\x29\x7e\xe6\xbf\x37\x28\x0f\xd7\x1e\x27\x01\xdd\x77\x8f\x1d\x17\x05\x11\x23\x0c\x59\xb6\x86\x3a\x41\xe9\x22\x78\xe5\x3f\x62\xcb\x8f\xfa\xe6\x6a\x92\x89\xea\x4b\xae\xa3\xff\x22\x39\x64\x98\xa5\x6a\x36\x91\x51\x87\x01\xbc\x40\x32\x21\x42\xae\xad\x9d\xc4\xff\x96\x91\x31\xff\xb4\x59\x1f\xe2\x89\x71\x1f\x91\xea\x7e\x0c\x18\x00\x89\x3a\xa8\x3b\x0e\xa3\x88\xa2\x8a\x3e\xc6\x1f\x39\xba\x9d\xcd\x6d\x94\x81\x8b\x3d\x19\x64\xa8\x62\xd2\x3e\x10\xea\xcc\x61\xdc\xc3\x5c\x82\x60\xf1\x31\xfe\x08\x3c\x78\x2e\xc5\x45\xc6\xc7\x40\xcd\x06\x05\x4c\x41\x64\xa3\x11\x96\xf1\xc4\x95\x8f\xd3\x0b\x86\x40\x72\x5a\xa8\x53\xd9\xe2\x00\xb2\x01\x86\x0c\xf1\x50\x71\xae\xb8\x15\x40\x4b\xe0\x64\x04\x62\x8e\xb6\x57\x64\xaa\x28\xc8\xf2\x6a\x9b\xb2\x16\xc8\xee\x3c\x5e\x66\x94\x20\xa6\xda\x94\xb3\x5b\x1a\x81\x35\x06\xfb\x16\x3f\xad\xc3\x20\x18\x24\xab\xf4\xfd\x4b\x41\x05\xa3\xb1\x97\x8d\x0d\x4c\x9a\xa8\x7b\xa6\x96\x4f\xd9\xf8\xf7\xf5\x2b\x4b\x42\x4f\x99\x63\x36\xd9\x62\xdd\x16\x71\x4b\x74\xc5\xbc\x55\x1e\x95\xb1\x84\xfa\x03\x8a\x61\x9a\x04\x6a\x5d\xcc\xe9\x15\x0c\xf0\x52\xec\xf7\x89\x76\xff\x8c\x76\x46\xb1\x2b\x9a\x97\xd8\x3d\x3c\xdb\x20\xae\xff\x33\xfd\x67\x57\x5c\x8a\x36\xbe\xa8\x0e\x78\x5f\x14\x66\x24\x5c\x45\xcb\xe9\xdd\xd2\x60\xc7\xaa\x69\x55\x4e\x73\x33\x3d\x9e\x9d\x2b\x3c\xdc\x75\x86\x73\xb1\xde\x2f\x13\x7b\x7e\x47\xce\x94\x4c\x5c\x74\xb6\x1b\x12\x98\x56\x98\x6f\x91\x90\x16\x8b\x36\xf1\x22\x64\x7d\x82\x50\x89\x6b\x5e\xea\xc3\xf8\x11\xbd\xdc\xd1\x41\x46\x39\x01\x76\x9c\x4a\x05\xa3\xfa\x3e\x66\xb3\x82\x24\xff\x4d\x73\x86\x10\xfd\x27\x7c\xa3\xf8\x98\x7e\xe4\x0a\x4e\xf1\x44\x06\x42\x65\x62\x2e\x1b\x49\x22\x46\xf1\x35\xd9\x69\xd2\x6c\xbe\xab\x69\x2a\xad\x4c\x2c\xba\x02\x7d\xde\x9f\x0a\x83\x02\x69\x89\xa6\x96\x56\x86\x26\x9f\x5a\x71\x50\xc3\x20\x35\x88\xb8\x8f\x6b\x62\xa6\x76\x94\x62\x4e\x3e\x18\x5b\xa8\x1d\x28\xb2\x14\x67\xcc\xd4\x86\x56\xd0\x21\xd4\x6a\x9a\xc4\x43\xd9\x8c\x37\x36\x02\xb1\x19\x88\x94\xd6\x09\xfb\x65\x39\xcf\xd1\xde\x50\x9b\x5b\x44\xb8\xa5\x82\x8f\x68\xca\xce\x45\x07\x6e\x9c\x8e\xa9\x06\x8d\x0f\x2d\x94\xe8\x10\xd0\xf7\x48\x60\xdf\x2b\xdd\xdd\x2e\x92\x7d\x53\xa2\xbb\xfb\xd0\x3c\xf3\x73\x5a\x96\xee\xb0\x20\x89\x91\x8a\xf0\x42\xc1\x3f\xc6\x28\xd2\x44\xcf\xdf\x3c\xcf\x66\x69\xe1\x49\x5e\xaf\x3c\x91\x6e\xe0\x08\x66\x46\x16\x9b\xe8\x3f\x3e\x57\x64\x2f\x03\x8b\x9d\x65\xff\xee\xea\xc7\x6b\x84\x4a\x90\xca\x3e\x3a\x44\xf3\x23\x99\x52\xc6\x19\x67\x05\xf6\x6b\x99\x69\xae\x0b\x74\x1c\x1b\x7d\xec\x58\xc1\xcd\x81\xf2\xbd\x32\x9f\xbf\x1c\x6f\x92\x99\x3a\x49\x65\x50\x11\x08\xcd\xb4\x7d\xf9\x90\x51\x92\xb9\x2d\xcc\x30\x4e\xd9\xac\x53\x64\xf6\xce\xb0\xa2\xd3\x7a\x38\x26\x09\xda\x2c\x03\x08\x86\xea\xa4\x7f\xd5\x6d\x6a\x85\x6e\xdd\xa8\x54\xda\x01\x53\x3e\xac\xc2\x31\xb6\x32\xb7\x7b\x43\x44\x29\xae\x2a\x7c\xdf\x45\xd6\xad\x91\xfc\x3c\xe1\xc4\xca\x7f\xee\xe6\xeb\x61\xbf\xff\xf4\xc1\xa8\x53\xbd\xf7\xfb\x9e\xb8\xe7\x8a\x74\x35\x6a\x4d\xb7\x65\xcb\xd5\x90\xaf\xae\xac\xf8\xbb\xa8\xb9\xa9\x59\x3c\x8f\x9e\xeb\xf9\x7e\xf4\x1b\x19\xa9\xa9\x1e\xef\x90\xd6\x9a\x34\xb6\x1a\x6d\xf6\x18\x94\xd3\x5d\x0d\x9c\xca\x72\x76\x78\x08\x2f\xe3\x34\x56\x63\x67\xc9\xf9\xd4\xb7\x6d\x86\x3a\xac\x9d\x87\xfe\xba\x6d\x72\x1f\x08\xad\x80\xea\x4a\xed\x9e\xe0\xe1\xae\xa4\x2f\xe5\x7b\x22\xb1\xa9\x20\x80\x22\xb1\x35\x5e\x95\x56\x73\xbf\x2c\xda\x30\x17\x38\x48\x12\x54\x10\x55\x6f\x21\xfb\x22\xad\xae\x95\xae\xba\xdd\x81\x69\x47\x9e\xe1\xa5\xdb\xd5\x29\x57\xb3\x54\xee\x1a\xf9\x6c\x82\xc6\x63\xe0\x60\x81\xf8\x36\xe6\xdd\x8a\x7a\x55\xdc\x7b\xda\x17\x29\x57\xcc\x76\x11\x72\x62\x64\x88\x89\x0d\x14\xc1\x97\xae\xf5\xc6\x32\x42\x2d\xa9\x92\x6c\xa9\xab\x5a\x00\xab\x89\xae\x28\x23\xfd\x58\xdb\x43\xf3\x86\x12\xfb\x69\x10\x3f\xa5\x93\x0a\x1f\xed\x4f\x82\xcd\xa7\x9a\xef\x0f\x66\x85\xae\x4f\x7e\x11\xc6\xa9\x2a\x8c\xc0\x0c\x1f\xd4\x12\x2a\xd1\x2f\x11\x30\x23\xac\xc0\x7c\x27\xc0\xf8\x6b\xe4\x41\x1c\x2b\xc8\x84\xb5\x30\x5b\x77\x11\x15\x8c\xf6\x88\x3a\x69\x89\xf5\x7a\x60\x7b\x24\x57\xf4\xc5\x84\x84\x87\x3b\x52\x91\xe5\x7b\x59\xbf\x99\xfb\xb4\x97\x1b\x1b\x5a\x25\x45\x73\xbd\xab\xc4\x5b\x06\xd7\xef\x5b\x81\x09\x76\xe6\xad\x51\xe9\x13\xfc\x50\xdd\xed\x8a\x44\x00\x70\xce\x9f\x31\xa8\x1b\x15\x7b\xdf\x71\xcb\xc0\xf6\xff\x3d\xe9\x9b\x40\x60\xa8\x85\x27\x7a\x7b\xc2\x37\xe3\xf5\xca\xca\xca\x67\x23\x7c\x7f\xb6\x92\xf7\xad\x62\xb9\x4f\x6e\x34\xf0\x1a\x02\xee\x69\x84\x01\x53\x75\x5f\xf7\x5d\x46\x2b\x36\x5b\x2d\x06\x62\x46\xff\xd9\x68\x0c\x75\x13\x4f\xec\xe7\xcf\x78\x37\xbf\xc5\x47\xbc\x61\x7c\xc6\xfe\x34\x04\x4f\xc2\xe7\xdd\xaa\x17\x10\xca\xc7\xae\xef\xb1\x1c\x0d\xcf\xe3\xbc\x2b\x2b\x2b\x1b\x1b\x7e\xb3\x0a\x49\x61\x04\xde\xa3\xbf\x53\x96\x91\x4b\x76\xbc\x3b\x58\xf0\xca\x62\xa4\x67\xa4\x08\xcb\xae\x62\x61\xc9\xe7\x89\xcc\x5b\x46\x7e\xe9\x88\x13\xed\x00\xa5\xe1\x46\xec\x75\xc5\xd2\x3e\x89\x37\x28\xbe\x91\x52\x01\xc6\x21\xa3\x40\xc4\x1d\x36\xdf\xc5\x85\x09\x1e\x9d\x50\xd4\x6f\x4c\x89\xe7\x86\x61\x92\xc0\xdb\x2c\xb5\x62\x3d\xf3\x5a\xa5\x39\x06\x65\x8e\x47\xff\x1d\x0d\xda\x1d\xde\x7f\x4f\x0d\x1b\xdd\xea\x38\x27\x8a\xcc\xed\xb8\xda\x6d\xad\x3c\xaf\x45\x7f\xbf\x06\x86\x5e\xad\x8b\xf8\x4a\xa6\xa6\x7f\xd2\x28\x93\xbf\x45\x59\xae\x2f\x32\x86\xe4\x8a\xf6\xd6\x9e\xcd\x4e\x71\xf8\xce\xb1\x6a\xbb\xce\x2e\xd6\xbf\xca\x71\xe5\xee\x14\x52\x15\xfa\x33\x44\xc1\x9f\x85\xe7\x28\xd3\x51\x78\x59\x7b\xd8\xea\x14\xd9\xab\x6c\x2e\xf3\xe7\xa1\x92\x4d\x3e\x97\xbb\x3c\x5a\x32\x27\x2f\xc7\xc1\x92\xd1\xfe\xfb\x50\x50\xaf\xbb\x19\xb2\xc5\x41\xeb\x3e\xee\xe1\xa0\x0b\xb0\x8a\x89\x84\x84\x1d\xd9\xf9\x36\x26\x6a\x29\x8b\xe0\x01\x2e\x36\x2c\x26\xb2\x0d\x19\xfb\xff\x9d\x88\xf7\x0d\x74\xd3\x83\x0e\x90\xcb\x90\x9f\x98\xb7\x92\xb7\x21\x9e\x39\xf7\xb7\x61\x9e\x3f\x00\x84\x56\x75\x16\xf5\xd1\x10\xe7\xfb\xc7\x20\xa1\x8e\x1a\xa8\x43\xc2\xc6\x75\xda\x6e\x37\x8c\x17\xa0\xf7\x76\x09\xda\xfd\xf1\x5e\xe8\xe2\x05\xe5\x2c\xc2\xc4\x96\xb3\x41\x12\x0f\xc5\xc1\x9b\x23\x5c\x91\xa9\x8d\x85\x40\x13\x0a\x20\x3d\x7b\x00\xd7\x20\xb9\x9b\x49\xda\xe0\xf1\x27\x65\x62\xd2\xe9\x82\xd0\x21\x10\x75\x68\x64\x83\x59\x68\x8f\xf1\x09\x5c\x5c\x1b\x0c\xa2\xb1\x2b\x1a\x18\xe6\x84\x81\x05\x76\x38\xa9\x8e\x66\xcf\x46\x62\x22\x8b\x71\x16\xb9\x98\x45\x9a\x27\xeb\xeb\x88\xc9\x98\xc8\xc5\xd1\x73\x07\x73\x8d\xdb\x84\x46\xec\x78\xe3\x50\x41\x57\xec\x27\x07\xb3\x41\x38\xbc\xd4\x73\xfa\xfd\x6e\x86\xdf\x5e\x12\x1d\xdf\xa3\x97\x04\xae\xd6\x8d\x5d\xc2\xb7\x06\x51\xb3\xc6\xae\x73\xe1\x46\x29\xbb\x41\x88\xc5\x2f\xb4\xef\xd2\xca\x0d\xc6\x65\x98\x46\xb6\x81\xfd\x9e\xfe\xc0\x67\x7c\x1c\x1a\xbb\xfa\x60\xf0\x53\x5e\x12\x7c\x6e\xae\xfe\x37\x7b\x3a\x30\x05\xdd\x3c\xdd\x30\x26\x18\xb7\xce\x08\x70\xf0\xfa\x05\x55\x1e\x12\x3a\xd9\x55\xae\x02\x8c\x64\x15\x79\xe7\x93\x0a\xb8\x68\x05\x88\x92\x3a\x0d\xa6\x23\x37\x4e\x91\x90\xa5\x0a\xe1\x61\x23\x2f\xe3\xec\xae\x09\xed\xe2\x38\x30\xce\xca\xe5\x25\x49\xa2\xb0\x32\xef\x83\x4e\x38\x89\x4a\xc1\x62\xa8\x4e\xd0\xef\x74\xf8\x16\x3d\x69\x36\xf4\xd4\x1a\x81\x17\xf5\xe7\x50\x00\xfd\x85\x3d\xc4\xb6\xc2\x8a\x1b\x63\xf7\xe0\x81\x13\x16\x67\x1d\x63\xca\x89\xd2\xfa\x6e\x60\x9e\x63\x80\x4a\xc5\x31\x9d\xb5\x40\xc4\x19\xfe\x27\xcb\xc5\xdb\x38\xbd\xc8\xfe\x7a\x2a\xae\x36\x3b\x4f\x3a\x9b\x1b\x78\x1b\x31\x7d\xb8\x19\x14\xdd\x31\x3a\x6e\x7a\x0c\x38\xcc\xe7\xe3\x30\x29\x01\x7c\xdc\xd9\x6c\x9b\xeb\xcd\xa5\x04\x3e\x61\xe0\x68\x89\xdb\x78\xd0\x8d\x43\x75\x32\x4f\xdf\xe4\xd9\x54\xe6\xc5\x02\x3e\xa7\x1a\x41\xce\x5c\xde\x5f\xca\xc5\x07\x67\x2c\xf8\xdb\xf3\x0a\x74\x46\x46\x03\x7b\x3b\x8e\xd3\x0c\x59\xa9\x98\xcb\x81\xc9\x34\x47\xc1\x75\x1d\x87\x72\x39\xf3\xbb\x59\x5d\xbd\xc1\xe4\x10\x68\x57\xf0\x92\xe2\xf9\x11\x83\xf7\xfa\x7d\xb1\x66\xfc\x44\xd6\xc4\xcf\xfa\xc5\xae\x30\x49\xc7\x92\x51\xcd\x67\xf8\xd8\x7c\xc4\x81\x82\xd5\xcf\xf8\xc5\xae\xf8\x72\xd3\xd2\x61\xa1\x4f\xee\x98\x6d\xef\x79\x36\x5d\xe4\xf1\xc5\xb8\x10\x7f\xcd\x16\x58\x07\xe6\x28\x1d\x76\xa8\xaa\x21\xd6\xcf\x3d\x26\x3a\x95\x52\x6e\xde\x2c\x57\xf5\xc9\xa3\xc7\x32\x97\x83\x85\xce\x21\x1d\x50\x28\x28\x87\x2f\x5c\xc8\x80\x93\x4a\x8b\xa9\xcc\x15\x70\xd4\x81\xf6\x3f\xc7\x0c\x76\xc3\x6c\xba\xa8\xa6\x6d\x86\x31\x84\x4a\x65\x9c\xf6\xd8\x4f\x8f\x4c\xa5\x66\x9a\xc5\x18\x93\x15\xaf\x9d\x72\xa3\xb5\x16\x76\x15\x49\x8c\x2a\xc3\x83\xac\x5f\x99\x2c\xdc\x4e\x06\xe9\xc0\x66\xae\xc6\xcc\x7c\xfc\x05\xea\x7c\x42\x8e\xe6\x90\x02\xd7\x47\x71\x36\xec\x00\x47\x1b\x88\x49\x16\xc5\x23\xf8\xaf\xc4\xf9\x21\xaf\x53\x94\x0a\xdf\x26\xb5\xc6\x3c\xd6\x20\x0d\xa6\x8a\x3c\x88\xbb\x40\x82\x24\xfa\xbc\x4f\x63\x69\xc4\x2f\x3d\x46\x93\x26\x7b\x0a\x8b\x8b\x99\x07\x69\xc5\xb0\xf7\xf9\x98\x73\x7a\x9f\x3a\xd9\xc6\x47\xb3\x3c\x8d\xd5\x98\x84\xfa\x28\x13\x2a\x2b\x27\xcf\xc6\x1c\x81\x26\x7f\xb6\x2d\x36\xbf\x6b\x12\x98\x9b\xda\x3e\x06\x19\x38\x83\x73\xa8\x7d\x7f\xa7\x76\xb3\xf9\x95\x1a\x87\x24\x26\xd2\x0a\x52\x1a\xf3\x38\x15\xa1\x33\xb9\x1c\x46\xa2\x8a\x30\x2d\xe2\x30\x11\x80\x75\x3a\x6f\x8b\x3b\x0b\x8d\x50\x67\xbf\x1c\x8a\xd3\x93\x97\x67\xbf\x1e\xbc\x3d\x14\x47\xa7\xe2\xcd\xdb\x93\xbf\x1f\xbd\x38\x7c\x21\xd6\x0e\x4e\xc5\xd1\xe9\x5a\x20\x7e\x3d\x3a\xfb\xe5\xe4\xdd\x99\xf8\xf5\xe0\xed\xdb\x83\xe3\xb3\x7f\x8a\x93\x97\xe2\xe0\xf8\x9f\xe2\x6f\x47\xc7\x2f\x02\x71\xf8\x8f\x37\x6f\x0f\x4f\x4f\x01\xd4\xc9\x5b\x71\xf4\xfa\xcd\xab\xa3\xc3\x17\x81\x38\x3a\x7e\xfe\xea\xdd\x8b\xa3\xe3\xbf\x88\x67\xef\xce\xc4\xf1\xc9\x99\x78\x75\xf4\xfa\xe8\xec\xf0\x85\x38\x3b\xc1\x3e\x19\xda\xd1\xe1\xa9\x38\x79\x09\xad\x5f\x1f\xbe\x7d\xfe\xcb\xc1\xf1\xd9\xc1\xb3\xa3\x57\x47\x67\xff\x0c\xc4\xcb\xa3\xb3\xe3\xc3\xd3\x53\xf1\xf2\xe4\xad\x38\x10\x6f\x0e\xde\x9e\x1d\x3d\x7f\xf7\xea\xe0\xad\x78\xf3\xee\xed\x9b\x93\xd3\x43\x71\x70\xfc\x42\x1c\x9f\x1c\x1f\x1d\xbf\x7c\x7b\x74\xfc\x97\xc3\xd7\x87\xc7\x67\x1d\x71\x74\x0c\xc0\x8e\x4f\xc4\xe1\xdf\x0f\x8f\xcf\xc4\xe9\x2f\x07\xaf\x5e\x61\x87\x07\xef\xce\x7e\x39\x79\x7b\x0a\xa3\x7c\x7e\xf2\xe6\x9f\x6f\x8f\xfe\xf2\xcb\x99\xf8\xe5\xe4\xd5\x8b\xc3\xb7\xa7\xe2\xd9\xa1\x78\x75\x74\xf0\xec\xd5\x21\xf5\x76\xfc\x4f\xf1\xfc\xd5\xc1\xd1\x6b\x44\xac\x17\x07\xaf\x0f\xfe\x72\x88\x0d\x4f\xce\x7e\x39\x7c\x8b\x5f\xf2\x18\x7f\xfd\xe5\x10\x1f\x1d\x1d\x8b\x83\x63\x71\xf0\xfc\xec\xe8\xe4\x18\xd6\xe7\xf9\xc9\xf1\xd9\xdb\x83\xe7\x67\x81\x38\x3b\x79\x7b\x26\x4e\xde\xe2\xfa\xc0\xa7\xbf\x1e\x9d\x1e\x06\xe2\xe0\xed\xd1\x29\x2c\xce\xcb\xb7\x27\xaf\x03\x01\xab\x7b\xf2\x12\xd7\xef\x18\x9a\x1e\x1f\x12\x20\x58\x79\x7f\x83\x4e\xde\xc2\x6f\x00\xf6\xee\xf4\xd0\x8e\xe8\xc5\xe1\xc1\xab\xa3\xe3\xbf\x9c\x42\x7b\xf7\xfb\xce\x6a\x4d\x86\xfe\xa3\x11\x88\x5a\x25\x92\x6e\xf3\x27\x65\x57\x32\xcf\xe3\x28\xc2\x1a\xbc\x3a\x37\x12\x1f\xd5\x6a\xbb\xe6\x34\xcf\xa6\x2d\xbe\xbd\xe4\x32\xbc\xc4\x94\xe4\xa7\x52\xee\x1a\x2f\xb3\x8b\xb8\x18\xcf\x06\x9d\x61\x36\xe9\x7e\x42\x6a\xd7\x4d\xb3\x48\x76\x29\x69\x43\xb7\xf7\x78\xf3\xb1\xcd\xd0\x50\x02\x9e\x0d\x3e\x05\x82\x7a\xf8\x62\x4b\x46\x90\x18\xe5\xa4\xb2\xf0\x5b\x11\x47\xb0\x4d\xeb\xf3\x35\x1b\x3a\xfd\x59\x05\x42\xc9\x69\x20\xe4\x67\x2c\x35\x09\x87\x45\x97\xdc\x9d\x62\xa2\xbd\xa9\xf8\xfa\x55\x34\x1e\x34\xf6\x56\x85\x90\x9f\x45\x1f\xfe\x05\x4f\xfa\x0d\x9d\xff\x37\x1b\x7c\xd2\xc9\x26\xbc\x04\x8f\x9f\x15\xe5\x25\x26\x51\xbb\x01\xad\x3e\x2b\x37\x73\x48\xb9\x0c\x7c\x36\xf8\x64\x6a\x7a\x53\x1c\x18\x26\xb8\xe8\x8b\xee\x6f\x1b\xdd\x0b\x78\xf5\x19\x06\xff\x59\x71\xf4\x92\x92\x53\xaa\x8d\xc3\x35\x5a\xff\x26\x17\xf0\xbe\x87\xee\xdd\x34\x14\x9e\x12\xb0\x6b\x1e\x15\x3f\xe9\x98\xef\x61\x88\x24\xd9\x9b\xbc\x93\x16\x56\xe9\x6b\x6f\x78\x9c\x81\xc6\x4d\x87\xdc\xed\x9a\xb6\xfb\x7d\xb1\x29\x26\x32\x4c\xd9\x14\x31\x37\x11\x68\x69\xc6\xe4\x5e\x5c\xc2\x87\x18\x6d\xc0\xc3\xd5\x8d\x9f\x52\x32\x6a\xe8\xe1\xa9\x86\xa8\x07\x47\xdd\x96\x07\xe4\x25\x8a\xd9\xa4\x44\x31\x58\x68\x77\x63\x23\x76\x13\xd4\x5c\xe3\x90\xdf\xc7\x1f\xfc\xc8\xb1\x69\x20\x1a\xf7\xb7\x36\x1b\xad\xc0\xa6\xea\x8c\xe0\xdb\x6b\x93\x01\x5b\x7e\x76\x5e\x5e\xaa\x22\x0f\xc4\x15\xfe\xfb\x32\x10\x57\x4e\x69\x48\x68\xf7\xd4\xab\xbd\x0f\x1f\x23\x28\x24\xcd\x79\x73\x33\x00\xe0\x26\xf9\xcf\x55\xe9\x35\x00\xb0\x45\xe8\x4a\xa9\x9d\x34\xac\x52\xe3\x46\xc3\xab\x3d\x7b\x89\xca\x5b\x10\x9a\xde\xbd\x3d\x7a\x9e\x4d\xa6\x59\x2a\xd3\xa2\x09\x8d\x19\xec\x55\xfd\x17\x57\xf4\x85\xcd\x78\x55\x77\x26\x2f\x5b\x76\x6e\xd9\xe0\xd3\xfb\x4b\x90\xfc\xae\xbc\xe1\xe2\x42\x28\x4a\x01\x44\x9f\x54\xda\x70\xf8\x48\xfd\x34\x0d\xd8\xf7\xf4\x57\x20\xae\x9c\x54\xcb\x37\x4e\x09\x19\x3c\x34\x70\xf6\x70\xf3\xa9\x4b\xd1\xa7\xec\x43\x1d\xfd\xfb\xeb\x57\x27\x63\xc8\xb5\xba\x9d\xa0\x14\x19\x07\x99\x23\x29\x81\xaf\xf1\x8c\xbc\xe7\x2b\x2a\x42\xfc\xd0\xa0\x4e\x59\xf4\xfb\xe9\x4f\xd1\xef\x4f\xd1\xef\x4f\xd1\xef\x4f\xd1\xef\x7f\xad\xe8\x07\xd4\x91\x04\x91\x78\xb4\x78\x93\xc3\x91\x8b\xaf\xa4\x2b\x0a\x5d\xb1\xdc\xc3\x25\x0c\x58\x5c\xb8\xd2\x64\x1b\x03\x27\xb4\x2c\xb3\xcb\x64\x9a\x49\xa8\x66\x7f\xf4\xcd\x20\xcb\x12\x19\xa6\x95\x8f\xc4\xcf\xa2\x51\xe4\x33\xd9\x10\xbb\xa2\x81\xc9\xe7\x1a\x5e\x3b\x16\x42\x4a\xcd\x62\xf5\x32\x4e\xe3\x42\xc2\xf8\x7e\x16\x57\xd0\x56\x37\xf3\x52\xfd\x9b\x06\xc4\x0a\x29\xbf\xda\x72\xc1\x0f\x19\x99\x91\xfc\x6c\x36\xab\xbb\x89\x7d\x28\x5a\x81\xd8\xd7\xa7\xdc\x7a\x7a\x91\x48\x14\x34\x9a\x82\x3d\xb7\xe4\xb2\x96\xbf\xb8\x99\xd6\x51\x95\x64\xc0\x49\x38\x6d\xd2\x1b\x10\x6f\xe0\xcf\x96\xa3\x9c\xba\xb4\x4c\x14\x63\x2a\x60\x4a\xa4\xe8\xf3\xb8\x78\x75\xa3\x9b\xc0\xb3\x37\x84\xfc\xac\xe5\x86\x5b\x19\x74\x79\x34\xc8\x80\xcb\x88\x52\xfa\xf4\x52\x19\x35\xf8\xb7\xc6\x72\xd5\x72\x73\x7a\x72\x80\x1f\x09\xb3\xfc\xac\x9c\xce\xf2\xfb\xfb\xd0\x73\x32\x20\x57\xab\x9d\xb9\xbb\x73\x8f\x50\xc0\xc3\x21\xfe\x71\xb7\x0e\xb1\x3d\xad\xb1\xd8\xb0\xcb\x73\xe7\xd1\xb6\x5a\xff\x83\x62\x8c\x9b\xb9\x02\x20\x07\x62\x64\xcb\xac\x5c\x83\xf8\x3f\x35\x6b\x43\x3f\x9b\xa3\xd6\x9e\xb9\xa6\x28\x93\x41\xb3\x4e\x0c\xbf\xae\x4d\xd4\x98\x4b\x45\x12\xe0\xa8\x79\x0d\xf2\x78\x20\xe2\x96\x29\xba\x62\x93\x2c\xe0\xfd\x8d\x6f\x59\x7c\x28\x44\x5f\x4f\x16\xef\x0f\xde\xa2\xc0\x42\x62\x07\x4b\x07\xc6\xca\x4e\xf3\x21\xcd\xf1\xee\xb7\xca\x4b\xb9\x68\xb5\xec\xe8\xe1\x67\xed\xa8\x8d\x70\xb8\xb3\xf9\x3b\x6a\xe9\xe9\x2c\x6c\x24\xa2\xc3\x29\xe7\x07\xd3\x30\xc7\x24\x5c\xa6\x06\x48\xa7\xcb\x66\x80\x96\x2d\xf8\x47\x48\xe7\xb4\x32\x28\xe7\xb7\x64\x63\x41\x4b\xd7\x02\x64\x50\x6b\xbb\x0f\x9f\x04\x6b\xfa\xf5\xda\xee\xc3\x9f\x60\x1a\xbd\xbb\x4c\xa3\x42\x70\x9d\xde\x92\x78\xd0\x3d\x57\x58\x28\xe9\x3c\x9a\x4d\x13\x79\xdd\xf9\xa4\x9c\xce\x6b\xdf\xaf\xed\xee\x6c\x41\xef\x5b\x7f\x4a\xd8\x7f\x4a\xd8\x7f\x4a\xd8\x7f\x4a\xd8\xff\x7b\x24\xec\x6e\x57\x84\x82\x08\x95\x20\xb2\x05\xf8\x4b\x11\x5a\xfa\x01\xaa\xbe\x62\x25\x06\x59\x31\xc6\xe2\x83\x54\xc7\x30\x8d\xc4\x3c\xa7\x3a\xce\xa4\x32\x8d\xd3\xa1\x14\x7f\x3d\x35\x9e\x1e\xe8\x8c\x3a\x99\x25\x45\x3c\x4d\xb0\x5c\x25\xb2\x25\x24\x02\x63\x09\x2d\xd3\xa1\x0c\x38\x47\x48\x12\x2a\x2c\x72\x64\xbf\x4a\x16\xfa\x3b\x45\xb6\xf3\xb7\xdc\xb3\x49\xa9\x92\x62\x6e\x47\x15\x17\xf1\x10\x3f\x87\xaf\x00\xc6\xaf\x66\x54\x15\xdd\xf1\xfa\x3e\x6b\xcc\x80\x68\x3d\x5d\xef\x12\x5b\x9e\xa6\xa1\x4b\xe5\x39\xf1\x60\x3b\x95\xd7\x45\x3c\xbc\x6c\x87\xf9\x05\x92\xf8\xee\xfa\x7e\xb7\xdc\xbc\x0a\xf1\x77\xf2\xf9\x4b\xfa\xf8\x9b\x8c\x1e\xbe\x2b\x71\x6d\x2d\x58\xa2\x2a\xf1\xa6\x7e\x9c\x15\x9e\xf6\x02\xf7\xbc\x76\x4d\xa0\xe3\x59\x11\x27\xee\x9a\x0c\xb3\x5c\xb6\xe1\x61\x3b\xc6\xb5\x80\x3f\x3b\x66\x7f\x9c\x0f\xf5\xb3\x65\x0b\x06\xc0\xf5\x4e\xfa\xac\x55\xb3\x4d\x8d\x61\x00\x01\xbe\xd6\xdb\x59\xff\xb5\x46\x41\xe4\xc1\xde\xa8\x9a\x34\xc5\xc0\x74\x07\x5f\x7c\x21\x05\x2f\x25\x5f\x56\xc3\x6c\x2a\xc5\x30\x97\x70\x85\x02\xea\x87\x9b\xc0\xb9\xae\xc2\x94\x70\x0c\x3d\x9a\x92\x44\x0e\x0b\xac\x96\xe1\xec\x95\x73\xc5\x31\x28\x67\x84\xaf\x96\xb7\x8f\x57\x24\x49\x5e\x89\x7d\xda\x40\x2d\x4b\x5e\x59\x59\x12\xf5\xdf\xe8\x36\x22\xfa\xf8\xd1\x7b\xad\x2d\x44\xd1\x9e\x26\x63\xe1\xbf\xa7\x6f\x3f\xb4\xc4\xb2\x37\xa2\x2f\xaa\xc3\xd2\x2f\x4d\x55\x36\x83\x8e\x04\xa6\xe9\xd9\x0f\xb0\x67\x34\x4d\x8b\x38\xa5\xca\xfb\xd9\x88\xbf\x6c\x19\x61\x3a\x95\xf3\x72\x6b\xbc\x97\xe8\x75\x77\xcb\x21\xd8\x0f\x84\x1d\x5d\xed\xfb\xaa\xf2\x5f\xeb\xf1\x0d\x09\xc2\xbc\xb6\x70\x07\x6f\x51\x7a\x6f\xfb\x42\xe7\x85\x5f\x0e\x64\x6e\xb0\xaa\x04\xc4\xbe\x70\x80\x50\xf6\x70\x60\xd7\xbf\x84\xc9\xe8\x64\x8a\xea\x7b\xca\x0a\xbe\xb4\x87\xd2\xe7\xa5\x6e\xca\xc0\x4a\x7d\x65\xe9\x50\x36\x1b\x32\x8d\x1a\x81\x80\x1b\x57\x44\x46\x20\xa6\x25\x74\x35\x37\x0a\xed\x32\x06\x04\xa2\xa1\x67\xf1\x4b\x7c\x31\xfe\x35\x2c\x64\xfe\x3a\xcc\x2f\x1b\x81\xf8\xa2\x0d\x1c\x14\x09\x5a\x80\x74\x9d\xc4\xc3\xb8\x60\x91\x42\x1b\xd3\x74\x10\x04\xe6\xf5\x00\x40\xd4\xce\xd4\x27\x37\x75\x38\x54\x36\xb1\xb4\x5d\x8a\x49\x98\xc6\x53\x1d\xf7\x13\xa7\xd4\x6a\xa6\x64\x9e\x20\xbf\x88\x93\x44\x8c\xc2\x38\x59\x15\x0e\xe8\x5d\x9a\x7c\xb0\x2a\xc4\x85\x2c\x76\x6b\x32\xba\xeb\x82\xec\xb0\x32\xe6\xc4\x9f\x16\x61\x21\x3b\x63\x77\x82\x8c\xd5\x2d\x32\x13\x92\xdf\x62\x7b\x1c\x26\xa3\x76\x06\xab\x2c\xd3\x51\x96\x0f\x65\x6e\x91\x1e\x97\x56\x97\x08\xd6\x91\xb0\xb8\x35\xc2\x36\xc3\xc0\x01\xf4\x66\xa1\x28\x71\xc3\xf6\x04\x16\xd3\x93\x69\x24\xa3\x80\x00\x14\x54\xe6\xa5\x91\x4b\x91\x5d\x76\xb4\xd2\xa4\xba\xdf\x5f\xbf\xd6\x4e\x06\x41\xb5\x4c\xd9\x09\x82\x99\x66\x62\x92\xe5\x5c\x34\x16\xc8\xd2\x80\x46\x50\xc8\xb4\x43\x5f\x3c\x9b\x15\x3c\x68\xfc\x10\x5e\x4a\x14\x4e\xc7\x98\x87\x8b\x84\xee\x58\x09\xe0\x66\xd0\x64\x9a\x86\xb6\xb0\x63\x96\x1e\xa6\xd1\xf1\x19\x31\x62\xc2\x32\x67\x79\xf0\x5d\x53\xc9\x64\xa4\x55\x4b\xc9\xa8\x83\x6b\xf6\x7d\xf8\x18\x81\x7c\x9f\x2d\x64\xc4\x38\xb8\x64\xa3\xcd\x72\x19\x2e\x70\x4a\x25\x75\xfb\x8e\x46\x6a\xc9\xea\xf9\x1f\x59\xfd\x8e\xce\x68\x61\x2b\x45\xdc\x54\x91\xca\xeb\xae\x63\x46\x8b\x36\xc7\x9a\x8d\x32\x1f\x20\xc6\x05\xb8\x30\xde\x84\x4c\x92\x2b\xc1\xc5\x89\xa4\x88\x2f\x52\x9d\x84\x80\xe2\xa5\x19\x9b\x88\x91\xe9\x0f\xbd\x6a\x84\x26\xfd\x87\x8c\xc4\x42\x16\x3f\x78\x89\x3c\xeb\x1b\x1c\xf6\x70\x78\x39\x0f\xf3\xc8\xcf\x64\x19\xe8\xf2\xf0\x98\xc6\x46\x93\x0f\xae\x38\x84\xa4\x25\x0d\x2f\x80\xb8\x98\x35\xb2\x45\x19\x96\x2e\x73\x9f\x96\xc4\x29\xfe\xb0\x6c\xc1\xdd\x4f\xf9\xa8\x97\xd1\xad\x73\xce\x5f\x7b\x39\xf6\x65\x9e\x07\x62\x38\xa0\x49\x63\x17\x54\x28\x63\x96\x24\xc8\x8d\xf0\x11\x63\x76\xf9\x8c\x0c\x07\x81\x90\x79\x4e\xda\x2d\xba\xe8\x97\xa5\x95\xb5\xdd\x9d\x87\xc1\x5a\x55\x2e\x59\xdb\xdd\x79\x14\xac\xb9\xe2\xd3\xda\xee\xd6\xe3\x60\x4d\x4b\x29\x6b\xbb\xdb\xbd\x60\xad\x4e\xe4\x5c\xdb\x7d\xb8\x73\xf3\x21\xd8\xd9\xfe\x53\x6b\xf0\xa7\xd6\xe0\x4f\xad\xc1\x9f\x5a\x83\xff\x65\x5a\x83\x69\xa8\x54\x31\xce\x31\xf4\x92\x88\x1e\xaa\x01\x30\x22\x0b\xef\xe3\x9f\x74\xb9\xba\x49\xa6\x0a\x31\x89\xd3\x78\x12\x26\x42\x65\x39\xba\xc8\x9f\xe5\x61\xaa\x30\x47\x9a\xd3\xf8\x10\xf3\x9c\xb3\x74\x23\x86\xe3\x59\x7a\x49\x79\x4d\x38\x94\x3d\x54\xed\x58\x55\xef\xf5\x95\xdb\xed\x9b\x50\xa9\x33\x1a\x1b\x9b\x23\x6c\x77\xb5\xd7\xc8\x42\xbf\xc6\x7b\xe4\xff\xe5\x3b\xb1\x7f\x6d\x75\xc6\x1e\xd8\x61\xb7\x5c\x0b\x87\xf3\xc9\x5d\x2e\x6c\xce\xe7\xfe\xad\xad\x0e\x0e\x72\x3f\xd3\x6d\xfd\xdd\xec\x66\x75\xd5\x69\xea\x72\xde\xc2\x59\x66\xcb\x7b\x71\x23\x03\x13\xfa\x6c\xf9\xf0\x70\xc0\xe5\x99\xf0\x8b\x3a\xfe\x6a\x00\xae\xed\xee\xec\x7c\x8b\x91\x02\xbb\x7c\xf8\x9d\x85\x6d\x98\xf5\x06\xb6\xc0\xcd\x9f\xac\xf4\x4f\x56\xfa\x27\x2b\xfd\x93\x95\xfe\x8f\x78\x37\xff\xe1\x1a\xea\x0a\x6f\xd4\x6a\xb9\xa5\x7c\xce\x5a\xee\x2d\x07\x53\xa8\x15\xfd\x3e\x2d\xb8\x56\x31\xd7\xb5\x30\xba\xc1\xb7\xfe\x25\x56\x78\xbf\x97\x0e\xf1\xf0\xd0\x1d\x9d\xbc\x92\x29\x70\xd7\xce\x21\xfc\x71\x38\x01\xe9\x21\x67\xbe\x7f\x78\xa8\x8b\xc5\xe9\x2c\x25\xce\x95\x90\xbe\x0c\x84\xae\x21\x63\xdd\x25\xe8\x8d\x2d\x34\x47\x65\x66\x8c\x97\xf0\x12\x2d\x7b\xfd\x60\x4f\xc9\x8c\xe2\xc9\x1d\x3a\xf6\xaf\x4b\x6c\x4e\xf1\x7f\xef\xbe\xc0\x08\xf9\xd9\x6c\x34\xc2\xec\xf9\x06\xb2\x0a\x47\xb2\x3d\xc0\xc7\x8d\x56\x87\xde\x93\x1a\xfd\x64\x96\xbf\x8b\xd3\xe2\x89\xde\x5b\xe2\x77\x1d\xe7\x99\x67\x9c\x68\xa1\x33\xb8\xf9\x7d\x3e\x33\xdf\x9d\x65\x04\x96\xb8\xba\xb7\x6c\xf4\x02\x0b\x1b\x35\x0d\x47\x77\x80\xc4\xca\x76\x67\xcd\x1f\x7e\xe3\x58\x31\x78\x7c\xff\xf5\x2b\x3a\x1b\x39\xc2\x8c\x37\x0f\x14\x45\xee\xbe\x13\x3f\x4c\x82\xab\xef\x2e\x92\x83\xd9\xc5\xbb\x52\x9f\xd0\x87\x36\x6d\xe0\x07\xa2\x2f\xd0\x1a\xb1\xb9\xb7\x8a\xf9\xda\x4c\xa3\x07\x0f\x2c\x84\x0e\xfe\x95\x64\x5c\x9b\x53\x37\xac\xbe\x6f\x36\x2c\x26\x39\x2e\x48\xba\x41\x79\x83\x6f\x96\x1a\x69\x68\x17\x5e\xc5\xaa\xf8\x06\xe6\xda\x0f\xed\xb4\x50\xfd\x72\x34\x99\x26\xdf\x68\xcb\x5f\xea\x86\xe4\xec\x43\xf9\x10\xf3\x8a\x3d\xc7\x1a\x00\xe9\x44\xb5\xf8\x88\x5f\xbe\xc9\xb3\xeb\x05\x9e\x7d\x34\xa1\x35\x30\xf1\x48\x23\x10\x8d\x61\x92\x29\xd9\xb0\xea\x47\xf8\x73\x1a\xce\xe8\x59\x2e\xd5\x6c\x22\x1b\x1f\x5c\xc1\xba\x54\x9d\xd2\x52\x08\x24\x31\xba\x04\x0e\xd5\x94\x0e\x23\x8c\x8d\x07\x51\x9b\x54\x76\x58\x08\x9a\x6c\xa3\x8a\xf4\xe2\x49\x3c\xc8\xc3\x1c\xb8\xfe\x60\xa6\xf3\x3c\xc5\xb9\xc8\xe6\xac\x18\x47\xa8\x9a\xd8\x08\xac\x67\x64\x85\x39\x5d\x10\x6b\xd2\xf1\x9d\xef\x34\x6d\xaa\x54\xd2\xf4\x22\x4b\x5b\x65\x52\x56\x99\x9a\x99\x91\x56\x34\x9f\xf1\x5c\x42\x31\x0e\x87\x97\x20\x27\x4d\xc2\x4b\x29\xd4\x0c\xb5\x96\x61\x81\x15\xb9\xa9\x24\x17\x65\xd4\x40\x0d\x60\x58\x14\x94\xf1\x8b\x93\xac\x86\xe9\xa2\xa4\xf5\xcf\x52\xa9\x3a\x42\x1c\x1f\xfe\x1d\x58\x21\x88\x17\x47\xa7\x1d\xd3\x1b\x66\x5d\xc5\x44\x6b\xda\xb8\x60\xab\x46\x60\xf6\x6e\xd6\xac\x63\x24\x75\x11\xa7\x33\xe9\x57\x76\xca\x92\x48\xe6\x5e\x71\x6f\x0e\x43\xa5\x31\x47\x19\xee\x0d\xcb\x63\x46\x4b\x5f\xd9\xe9\x16\x1b\xdf\x28\x69\xe6\x45\x06\xa2\x32\xca\x97\xb8\x4e\x33\xbc\xd0\x52\xcd\x53\x1a\xdf\x38\x1c\x1a\x05\xff\x3d\xbd\xc6\xe7\xc4\x89\xb0\xb2\x76\xe9\xd9\x7b\xfc\xcf\x87\x96\xd9\x8f\x2c\x75\xb7\xa0\x12\x70\xb0\xa4\xb9\x6d\xef\xbf\xe8\xcc\x52\x35\x8e\x47\x45\xd3\x00\xab\xff\x0e\xce\xc7\x28\x0d\x96\xbc\xfd\xe0\xab\xff\x3d\x5e\xac\x2f\x88\x01\xdf\xd7\xe9\x20\x10\x8f\x37\xf6\x64\x98\x79\xcd\xed\x9a\x1c\x0c\x1a\x84\x69\xda\x54\x66\x02\x73\xa0\x11\x47\x1e\x81\x38\xe7\x3a\x23\x28\x2c\x98\xbf\xdc\xf1\x20\xc0\xfc\x4d\x6a\x1c\xe6\xce\xd6\x62\x71\x7a\x0d\x5b\x97\xad\xc4\xb7\xbf\x64\x73\x79\x05\xc7\x19\x4f\xe7\x30\x54\x58\x19\x0d\x87\x2b\x94\x2c\x30\x81\x80\x6e\x08\x17\x07\x5d\x1b\x9e\x5a\x73\x29\xb5\x51\x46\x79\x6b\xbd\x01\x55\xcc\x42\x36\x45\x86\x3b\x9f\x8e\x3e\x69\x52\xd9\x21\xb2\x4d\x67\x9a\x67\x57\x71\x24\x23\x53\x90\x28\x59\x00\x21\xd1\xdd\xfc\xe3\x1f\xff\xf0\xa6\xfe\x8f\x7f\xfc\xa3\xc3\xf6\xe8\x58\x99\x6d\xd0\x3e\x1c\x65\x6b\xad\x5e\x5d\x76\x9c\xe4\xcf\x46\x49\x78\xd1\x11\xef\x38\x4f\x26\x9e\x76\xe8\xae\x99\xb6\xb4\xb5\x22\xe5\xbb\x97\x31\x1b\xa2\x79\x8c\x92\xa7\x91\xf0\x01\x57\x3d\xbc\xb3\xa6\x91\xae\xdd\x83\x61\xf3\x4a\x5c\x64\x22\x9c\x87\x0b\x63\xd2\xc4\xae\x5f\x93\x53\xdf\xbd\x7b\xda\x4c\x6a\x1f\x1b\x73\xad\x9e\x4f\xab\xa6\x61\xf9\x09\x1c\xb5\x7b\x65\xcb\xf0\x89\x0f\x53\x1f\x79\xac\x2c\x10\x16\x9c\x2f\x37\x86\x65\xc8\xa6\x4a\x87\x07\x0a\xd4\xe5\x37\x31\xd1\xc2\x28\xf6\x26\x49\x30\x8e\xb3\x42\xee\x8a\x4d\x22\x91\x54\x3c\x92\xca\x11\x71\x88\xd8\x5a\x84\xa9\xbd\x31\xa5\x09\xc2\x02\x22\x23\x27\xd3\x22\xbe\x82\xbd\x04\xcc\x5b\xe3\x1d\x1b\xcf\x27\x4e\x60\x5a\xc5\x86\x49\x8e\x9f\x34\x97\x5f\xbc\x4f\xcd\xd3\xba\x26\xec\x4b\x4e\x2d\xca\x0b\xf5\xb3\xe8\x3d\x12\xbb\xf0\xaf\x75\xd1\xdb\xdc\x7a\x68\x56\x1b\xc6\xf2\xf5\x2b\x0d\x89\x02\xfa\xb0\xa9\x37\x28\xd1\x87\xf7\x2e\x95\x62\x8c\x7b\xf0\x40\x34\xdd\x91\xe2\xf9\x77\x06\x8e\x00\x97\x40\x74\x3e\x24\xc8\xb5\x5f\xd9\x49\xe9\xbd\x1c\x86\x0a\x6f\xf1\x94\xd4\x4f\xd4\x37\xb3\x55\x38\x9b\xd5\xf7\x86\xe5\x1d\x88\x24\x4e\x2f\x65\x24\x40\xd0\xd7\xc5\x1a\x00\xb6\x2a\xac\xc9\x15\x04\x59\xd2\xa7\xc1\x9e\x66\x23\x5b\xe5\xc7\x72\x2c\x26\x3f\x2e\x34\x38\xd6\xcc\x31\x24\xf1\x75\x76\x64\xf2\xb3\x55\x8f\x42\x45\x99\xb0\x43\x16\x0a\xa8\xb0\x22\x51\xf3\x96\x9e\xde\x40\x4b\xfa\xa9\x9c\x3b\xa2\x59\xd3\x9a\xae\x4c\xdd\xac\x4d\xf3\x68\x1a\x4f\xd1\x7b\x58\x57\xce\xb7\x0f\xf5\x5d\xc8\x7e\x3b\x62\x4d\x48\xe9\x6b\xb4\x48\xbb\x75\xf6\xf5\x53\xba\x65\x55\x5f\xc1\xa6\x7a\xa5\xf9\x79\x52\x48\x6b\x38\x01\x36\x12\xc9\x22\x13\x85\x4c\x12\x6d\x05\x25\x51\xa8\x61\x9c\x7f\xba\x0d\x58\xfc\x06\xda\x18\xa9\x2b\x36\xd1\x4f\x26\x32\x8a\x91\x3a\xa2\x49\x1e\x53\x58\x25\x21\x2e\x61\x3c\xbc\xec\x08\xf1\x2b\xd2\x72\xb6\x78\x67\xe8\xa5\x01\x87\x1e\x93\xb7\x07\x7a\xcb\x78\x54\xe9\x42\x84\x43\xa6\xf7\x20\x2d\x50\x74\x27\x39\xaf\xa1\xe9\x7c\x96\x82\x24\xbe\x86\x1d\xac\xe9\xe0\x4f\x4e\x42\x07\xf4\x39\x51\x99\xb6\xd2\x9b\x36\x4e\xb6\x79\xca\x18\x8f\xb4\x00\xc8\x82\xc1\x56\xb5\x48\x87\xc6\x83\x84\x00\xcc\xc7\x32\x05\x12\x21\xe6\xd2\xa8\x68\xb9\x72\x3d\xfa\x14\xe0\xa4\xec\x32\xaa\x70\xa1\x29\x1b\x06\xa6\x36\x40\xf4\x9a\x87\x31\x67\x7a\xb2\x0b\x69\x85\x4c\xd4\x54\x99\x21\x80\x6c\xf5\xb6\xe2\x30\xa3\x37\x98\x96\x7c\xe9\x7b\x0d\x9d\xc4\x27\x6f\xbf\xcd\x17\x20\x5d\x9f\x82\x64\x38\x4b\x5c\x3c\x59\x35\x66\xee\x98\xad\xdc\xae\xa1\x18\xdb\xba\xc6\x5e\xaf\xd5\xf3\x7c\x31\x85\x83\xaf\xc4\x65\x9c\xe2\x51\xcc\x92\x08\x39\xcf\x30\x9f\xa9\x62\xd1\x11\xe2\x97\x18\x8e\x2e\x59\x20\x02\xcc\x55\xce\x04\x84\x23\x87\x58\xf0\xd6\x49\x38\x63\x25\x1a\x83\x38\x0d\xf3\x45\x83\xd2\x3c\x93\xd7\xa2\xe6\x86\x2c\x8a\xa6\xa3\xf8\x62\x96\x93\x4f\x21\xb6\x3f\xb4\x15\x25\x89\x26\x92\x4e\x74\x96\xc6\x20\x88\x4a\x2a\x64\xd8\x98\x15\xa3\x27\x0d\xd8\x40\xd4\x92\xdb\xd9\xe1\x78\x0e\xf5\x10\x2c\x71\x2f\xbf\xf9\xfa\x95\x61\xb8\x5c\xcc\x66\x38\x45\x3f\x8f\x9c\x31\x37\xf4\xf7\x3f\xca\x31\xd7\x28\x6e\x7d\x9c\x0a\x3c\xf5\xcd\x96\x32\xae\x4c\xf0\xe5\x0b\xfc\x06\x89\x80\x71\x7f\x01\x8c\x0c\x44\x28\x26\xe1\x62\x20\x61\xfb\x5f\x03\x2a\x9b\xd0\x7a\xa5\xf7\xb3\x74\xdc\xf1\xab\x8a\x13\x13\x67\xe0\xac\xd2\x14\x33\x73\xfd\xdc\x71\xa1\x32\xaf\x5d\x9f\x90\x7b\xde\xcd\xb0\xe5\x5f\x14\x3d\xfd\x07\xbe\x38\xe7\x9e\xbb\x8d\x56\xa7\x74\xa7\x34\x0e\x06\xce\xe0\xe4\xdc\x07\x58\x1d\x8a\xd3\x4e\x56\xf7\x4d\x3f\xaa\x3a\xd5\xe9\x03\xe4\x5b\x69\x7e\x87\xd0\x5c\x6f\xd8\x31\x9e\x8d\x9e\x55\xa7\xd2\xa9\xdd\x91\xb2\xcf\x88\xf7\x7d\x49\xcc\x67\x7f\x20\x66\x6c\xf2\x22\x1c\x2e\xca\xc7\xdf\x25\x61\xce\x16\x7a\xde\x3c\x7e\xc4\x3e\x92\xc2\xf2\x4d\xd5\x0e\xad\x24\xe9\x38\x41\xdc\x25\x38\xc6\xc3\xa3\x16\x94\xf5\xff\x28\x7d\x6f\x82\xd9\x48\x83\x60\xad\x5b\xb7\xb9\x33\x19\x5d\xe5\x8f\x72\x68\xfa\x63\x7c\x95\xfe\x67\x5c\x91\xee\xd5\x8c\xe9\x7f\xa7\x63\x11\x7b\x0b\x55\x77\xd3\x22\x93\xab\xb9\xb2\x28\x53\xd3\xe2\x1c\xf6\xae\xae\x91\x79\x5e\xdf\xec\xf7\x38\x26\x0d\x07\x4d\xe3\x7b\x84\x86\x98\x30\x25\x75\x84\x1a\x83\x6c\x09\x57\x59\xe2\x44\x58\x1a\x44\xdf\x4c\x9b\x2d\xbe\xbb\x74\x56\xb5\x6a\x47\x27\x2f\x44\x89\x88\x77\xdc\x17\x9b\xbd\x1d\x1f\xc7\x05\xec\x34\xda\x58\x54\x3c\x89\x93\x10\x0b\x98\x8c\xb3\xb9\xf5\xdc\x45\x16\xd4\x6c\x55\x40\x2f\xb2\x19\x0b\x4b\x68\x41\xe4\xaf\xf0\xd6\x3d\xc9\x72\xd9\xa9\x5b\x1c\x98\xf5\x6d\x56\x63\xeb\x2b\xaf\x98\x78\xd5\x6c\xbd\xbe\x0a\xa9\xcb\x78\xfa\x1c\xda\x3f\x87\xbb\xa8\x25\xa1\xd8\xd4\xb9\x16\xd5\x90\x2a\xf2\x3a\xe8\x3b\x59\x4f\x2c\x3e\x3b\xc4\x5f\x3a\x5c\x5a\x31\xd6\x79\xec\xdb\x8d\x52\x35\x1f\xdf\xeb\xf7\xf9\xeb\x32\x9b\xc3\x18\x62\xea\xba\xaa\x47\x77\x56\xc1\x46\x9d\x3a\x83\xd1\xa9\x33\x34\xbd\x10\xa5\x05\x70\xbc\x95\x39\xfb\x84\x1b\x9d\xba\xf4\x5b\x37\x47\x85\x5e\xe6\x83\x28\xc2\x6f\xd9\x29\xa0\x62\xda\x27\x5f\xde\x12\x4c\x8b\xbd\xef\x48\x4f\xa5\x45\xe9\xf5\x30\x99\x87\x0b\xb5\x0e\xd7\x02\x8b\xc9\x51\x9c\xcb\x61\x91\x2c\x44\x36\x43\x5f\x11\x42\xe8\x3a\xa4\x61\xb5\x57\x15\x6f\x3c\xd3\xc2\xed\x63\x67\x31\x1b\x25\x1f\x72\xd1\x2e\x05\x94\x56\x9a\x13\x9d\xac\x99\x7c\x18\x45\x67\xd9\xcb\x3c\x4b\x8b\xca\x0a\x54\xb0\x97\x35\x42\x55\xfc\xc5\xcc\xd8\x06\x09\xdd\xd0\x6c\xc2\x9c\xca\x15\x0b\xa3\xb6\xd3\xc3\x6c\xe4\x8f\x0e\xbf\xa6\x10\x11\x77\xb7\xb1\x4e\x78\xee\x84\x16\x94\x07\x8a\x42\x11\x0e\xe0\x88\x4a\xe8\x34\xd9\x03\x5a\x9b\x74\x0c\x56\xe7\x16\x79\x79\x36\x70\x71\x68\x1a\x05\xbc\xcc\x5b\x95\x8c\x2a\xe5\x13\x08\xe7\x87\x66\xfb\xe0\x01\xfd\x61\x4b\xc4\x3b\xf9\x67\x2a\x07\xd4\x4b\x4b\xf4\xe0\x81\xa8\x1c\x6d\x78\xc8\x0c\xfd\x42\x16\x6f\x34\xca\x9c\x8c\x34\x82\x00\x04\x3e\x69\x36\x6c\xa3\xe6\x34\x2e\xb7\x7d\xd9\x43\xe7\x8c\xd2\xe2\x80\x0b\xcc\x4e\xdd\x5e\x9e\x5b\xf5\xab\x06\x32\xd9\x21\xe5\x4e\xe7\xf7\x5a\xb9\xdb\xe2\xb2\x59\x32\x8d\x48\xb6\x6f\xb4\x58\xdb\x1b\x96\x51\xd3\xdd\x32\x42\xee\x72\x64\xba\x37\x22\x57\x08\x59\xb2\x99\xd5\x61\x21\x9f\xd2\x63\x3a\x3c\x79\xd9\x68\x2d\x8f\x7e\xbf\x05\x75\xfd\xe5\xd1\x72\x39\x6c\x69\x1d\x8d\xb4\xfb\xe2\x7d\xcf\xac\xc8\xdf\x17\x1f\x72\x0d\xce\x69\x54\xbb\x47\x8a\xaf\x6f\xac\x22\x13\x07\x9c\x99\x77\x41\xaa\x39\x72\x4b\x96\x41\xdc\xb1\x0f\x0b\xc1\x8f\xfd\xb7\x5b\x77\xaf\x0e\xcf\x6e\x59\xe5\x72\xce\x21\xb8\xff\xc3\xd8\x5f\x84\x45\xd8\xd4\xe3\x76\xef\x2e\xdf\x18\x68\xb9\x7b\xbb\xce\x5a\x95\xf4\xe0\x01\x8f\xc7\x4d\x17\xe6\x1c\x55\xb5\x48\x87\x96\xb2\x39\x18\x87\x9a\x1f\x9f\xdc\xf0\x7b\x64\x04\x9b\x55\x9a\xd6\xed\x8a\xd9\x34\xc2\xfa\x0e\x56\x33\x1d\xa7\xa3\xac\xe3\xd0\x4d\x5d\x59\x4a\x63\x8e\xaf\x1c\x15\xbb\x1e\x4a\x58\x2a\xe7\x4e\x94\x1a\xb2\x60\xa5\x4f\x25\x8f\x13\x87\xe3\x7d\x80\xe7\x43\xcf\x62\xd5\x47\x46\x57\xfd\x42\x46\x1d\x73\x6d\x53\xda\xba\x49\x9b\x76\x3b\xa6\xb9\x3b\xb6\x9c\x66\x1b\xe6\x43\x84\x1f\xf1\xc7\xb7\xc6\xf3\x77\x36\xc7\x5a\x3d\x95\xb5\x4f\x6d\xac\x41\x1d\xf1\xd5\xfb\x6a\x2e\xd8\x67\x8b\xa9\x64\xea\xc1\x23\xc4\x9c\xe2\x04\xba\xcb\x3b\x86\xd0\x1b\xe5\x5c\x04\x30\xe6\x1b\x14\x1e\x74\x91\xc3\x69\xc8\x9e\xa5\x58\x26\x7e\x8e\xda\xbf\x49\x98\x5f\x06\x70\xb9\x19\x86\xa9\x40\x59\x32\x4e\x5d\x89\x13\x6b\xa7\xa8\x2c\xe0\x20\x1f\x54\xf3\xa4\x19\xa9\x78\x41\xcc\xd5\x4d\xe1\x72\x1d\x61\x43\x68\x82\x01\x35\x83\x45\x81\x16\x4c\x6d\xb2\xd4\xf6\x47\xae\x29\x46\x76\xa4\x39\x1a\x32\xc7\xf3\x49\x7f\x93\x44\xe6\xd9\x70\x2c\x42\xc5\x02\xf9\x34\xe9\x08\xdb\x3f\x65\xb9\x46\xe2\x59\xe4\xf1\xc5\x85\xcc\x65\x44\x4e\x7f\xe6\x66\xcd\xb6\x41\x6d\x5b\xc2\x6b\x11\xdc\x56\x65\x44\xd2\x10\x96\x6e\xa1\x12\xca\x2d\xea\xab\x18\x87\xe8\x1b\xe7\x29\xf6\xb0\x16\x1a\xcc\x4e\x6b\x11\xb3\xd9\xc5\x18\xb5\xe7\xb8\x44\x30\x3d\xac\x6f\x46\x3a\xa4\x14\xbd\x1b\x01\x48\x45\x7f\xa8\xb3\xbb\x9b\xf1\x76\x2c\xde\xd5\x90\x12\x57\xfa\xba\xe7\x70\x19\x34\x18\x54\x4f\x80\x15\xa2\xf9\x90\xee\xf3\x4f\xff\x7e\x52\xfe\xaa\xcf\xc5\xdf\x6e\x6a\xaf\x75\xb1\x7a\x13\xa2\x3e\xbf\x5f\xb9\x98\xdf\x72\x9f\x36\x8a\xf0\xbe\x21\x9f\x2c\xba\xea\x6b\xab\xf2\xef\xad\xb5\x97\x19\x25\x5d\x05\x9f\x73\xd9\xd3\x24\xef\x8f\xd6\x6a\xd5\x5f\x83\x97\xab\xb8\x60\x20\xcb\xda\xf9\xb7\x9c\x3d\x7f\xbd\xcc\x72\x50\x21\xdb\x3c\x8c\xc9\x00\x82\x06\xa4\xa7\xe2\xc9\xeb\x67\xe8\x94\xf1\xfa\xe0\x1f\xe7\xbf\xfc\xfa\x5a\x50\x71\xd1\x4d\x4c\xe7\x68\x09\x55\x36\x99\xce\x0a\x79\x2c\xe7\x9e\x1d\xab\x99\xda\xb5\x49\xc5\xd3\xbe\x06\xa2\x89\x49\x2a\xcc\xa3\x3a\x0e\xf0\x17\x59\xd8\xa2\x9b\x80\x38\x52\x15\x62\x9a\xcd\x49\x5b\x8a\xc5\xc1\xa6\xb9\x56\x89\x62\x09\x21\x98\x23\x0c\x5b\x5e\x0f\xa5\x52\x64\xa6\xc3\xa0\x45\xd2\xb6\xc6\xe9\x42\x84\x93\x6c\x96\x16\x8a\xfa\x6f\xb7\xf7\x78\x20\x5f\xfb\x22\x15\x4f\xa9\xac\x73\xe9\xc9\x56\xe5\xc9\xc3\xca\x93\x27\x55\x38\x8f\xf8\xd1\xc6\x46\x89\xfc\xa5\x9a\xfa\x21\xf9\x31\x6b\x18\x2b\x11\x49\x15\x5f\xa4\x64\xb0\x42\x9f\xd3\x24\x4e\xc9\x2a\xae\x32\x31\x4d\xb0\x46\x52\x11\x5e\x02\x5d\xcb\x25\x1a\x18\x38\xf0\x13\xdd\x8b\xc7\x61\x7a\x21\x4d\xf1\x5a\x5b\x27\x3f\x8b\x16\xce\xd9\x1e\x67\xf3\xd7\xb3\xe1\xf8\x2c\x7b\x8b\x86\x61\xcd\x78\x9c\x7d\xc2\x24\x99\xb5\x27\xd3\x4a\x00\x5e\x60\xa3\x30\x99\x3d\xab\x5c\x83\xbf\xe8\xed\x19\xf0\xf7\x74\x5d\x20\xde\x15\x2c\x49\x81\x05\x4d\xb3\xd4\xb0\x7a\x20\x5e\x58\xac\xb1\xc4\x65\x97\x88\x22\xa6\x1f\x8f\x5d\x8f\x65\x18\x75\x80\x1f\x68\x11\x00\xd1\xcb\xfb\xd2\xca\x06\x37\xa4\x17\x3d\x1a\x69\xdb\x8b\xc2\x88\xda\x51\x96\x13\xcf\x28\xc6\x14\x40\x6e\x8a\x11\x8c\xe7\x13\xa6\xc2\xde\x91\xe9\x58\x7c\xaf\x23\x79\xad\x5a\x3a\xd8\xbf\xe5\x04\xed\xb9\x1b\x53\x3b\xe9\x94\xb3\x9c\xd2\x01\x46\x46\x48\x15\xb4\x7c\x25\x89\x77\x2b\xa8\x21\xd9\xae\x4a\xc1\xdd\x58\x07\x75\xfd\x45\x23\x2c\xa6\xaa\x1f\x26\x4b\xaf\x14\x32\x46\x97\x7a\xd4\x6d\x93\x0f\x0e\x1a\xf6\x60\x7d\x42\xb4\x93\x9d\x6b\x9f\x84\x81\x4c\xb2\x79\x2d\xb9\x65\xdd\xb1\xa5\xb3\xa9\xe3\x27\xd7\x44\x66\xd6\xa0\xfa\x97\x44\x45\x30\x03\xd1\x51\x5a\x00\x42\xf7\x36\x4d\x16\xa8\x3b\x28\x96\xd2\x93\x3c\x46\xcb\x85\xd1\x29\xa5\xfa\xf6\xc0\xcb\xb6\xcc\x74\xe6\x84\x18\x03\xc2\x44\x19\xd5\xae\x40\x81\x96\x0c\x95\xc8\x59\x45\x58\x11\x02\x06\xb3\x42\xcc\xb5\xc9\x92\x6b\xa2\xe0\xb6\x85\x62\x30\x4b\x87\x63\x20\x6f\x28\xc7\xb0\x19\x8a\xf0\x99\xb1\x8d\xa2\x70\x08\xb6\xb5\x22\x55\xf8\x3b\x08\x1a\x68\xab\x26\x13\x21\x4d\xac\x74\x8a\xbd\xed\xb7\x8c\x5c\x5f\xd7\xfb\xb7\xf3\x6c\xc2\x27\x8d\x50\xce\xce\xec\x7a\xe2\x6f\x23\xf0\xd0\x26\xf0\x5a\xef\x95\xce\xf7\xad\xd4\x46\xa6\x66\xb4\xac\xe3\x37\x8e\x51\xa5\xe7\x2e\x0e\x6b\x93\x14\xde\x95\x00\x57\x96\x50\x40\x7f\x43\xaf\x74\x1c\x38\xf9\xe8\xe0\x0e\xa7\xd9\x5c\x0c\x13\x19\xea\x9d\x18\x51\xe1\xc1\xb8\x10\xb3\xe9\xd2\x35\xf6\x4e\x5d\xfd\x44\xeb\x66\xb6\x74\x06\x5c\x32\x10\x4f\xd3\xb0\x98\x61\xb5\x11\x8a\xaa\x4a\x65\x4e\x8e\x86\x49\x76\x11\x0f\xc9\xd7\x8e\x38\x09\x35\x5b\xc7\xe3\xb6\x4e\x44\x0c\x9d\x7e\x32\x3a\x8a\x28\x09\xa3\x96\x59\x11\x1f\xa2\x04\x31\xa9\x18\xca\xbc\x08\x75\xd0\xbf\x5a\xa4\xc5\x58\x16\x54\x5f\x51\x86\x13\x12\x93\x03\x23\x17\x57\xc3\xc7\x54\x40\xf0\xb5\xaf\xd1\x02\x7d\x05\x90\xd4\x25\x12\xdd\xa1\x80\x1c\x8c\xf3\x2c\xcd\x66\x4a\x64\x53\x3d\x7e\x72\xe7\x81\xef\x89\xa7\x39\x9e\x60\x78\x9e\xd9\x11\x0b\x69\x84\x3e\x1a\xe4\x6c\x85\xf6\x5b\x2a\x1e\x88\xe7\x07\x58\xa4\x4e\x74\xa0\x6d\xf8\x39\x09\xd1\xeb\x69\x56\xac\xf3\xc7\x64\x04\x66\x37\x50\xaa\x91\x2d\x54\x21\xa7\xe8\xad\xb6\x4b\xcf\x7b\x1d\xf1\x32\xbe\x98\xe5\x58\x95\x57\xcc\xc7\x5c\x1c\xdb\x19\x51\x9c\x5e\x28\x23\x56\x93\x0e\x65\x0e\x64\x41\x3b\x4c\xe0\x78\xad\xc3\x08\x2b\xf3\x6d\xcf\x5b\x1d\xe0\x3e\xb8\xf6\xb6\x94\x2d\xc1\x47\xa8\x96\x9e\xe0\xaa\x3a\xb9\xd0\x79\x1b\xad\x57\x13\x41\x21\x0a\xcc\xcb\xee\x2c\x35\x92\x63\xe7\x77\x47\x88\x7f\xc2\x4e\x62\xad\x4c\x02\x12\x49\x39\x4d\x16\x62\x76\x91\x2c\xa8\xe2\x72\x5c\x48\x71\xf0\xe6\x48\x11\xd0\x79\xb8\x20\x2a\x46\x4e\x16\x05\x0c\xcf\xd4\x83\x92\xda\xf1\xa5\xd0\x8b\x64\x68\x0c\xa6\x05\xd2\xaa\xe2\x81\x44\x9a\x17\x4f\x28\x49\x45\xb2\xc0\x62\x4d\x8e\x9f\xa0\x1e\x8a\x27\x14\xc1\xb8\xbb\xc4\x47\xc2\x8b\x34\x53\x45\x3c\xd4\x4e\x78\x20\x19\xa5\x30\x7b\xbe\x91\x9d\x1b\x3f\x0d\x40\x6a\x6c\x92\xe5\xcc\x83\x9a\xb1\x34\x37\x37\xf3\x99\x75\x65\xa0\x93\x47\xa6\xb1\x96\xbd\x50\xcd\xa5\xb8\x04\x2a\x30\x1f\x4b\xe4\x71\x59\x4e\xce\xa8\x70\x87\x55\xe1\x08\xfd\x0c\x80\x1c\x11\x20\x97\x26\x17\x43\x77\xab\xb7\x3b\xe2\x60\xc8\x4e\xa8\xd3\x19\x1f\x67\xb8\x1d\x48\x55\xc8\x48\x7b\x28\xb1\xb2\xdc\xd1\x80\x00\x2d\xa2\xa1\x75\x5c\x6a\x85\x67\xbd\x86\xcf\xe8\x3b\x22\xbe\xd6\x81\x53\x13\x9a\x30\xd6\xc0\x62\x37\x33\xa4\x84\x46\x01\xe7\x72\x85\x3d\xcb\x73\x11\x48\x6e\x89\x3a\xb5\xf2\xc9\xa6\x16\x8e\x12\xe6\x67\x09\x56\xe3\xd2\x92\x93\xc7\x47\x78\x74\x61\xa2\x32\xda\x00\xbc\xa1\x2f\xe5\x05\x65\x79\xb4\x2d\xd2\xfa\x3b\xa5\xe1\x47\x7a\x52\x56\xa8\xe1\x89\x30\x04\x3b\x36\xd4\x37\x4c\x28\x9f\x8a\x99\x95\x25\xb7\x63\xed\x64\x5a\xe6\x0c\x38\x01\xa4\x28\x0d\x25\xd2\x8c\xfc\x11\x89\x61\x18\xa9\x80\xd9\x3b\x41\xe2\x75\xe7\x96\x88\x35\xb3\x34\x95\x70\x57\x09\xf3\x45\x67\x55\x94\x75\xb8\x76\xda\xdc\xb4\x32\x3b\x47\x21\xe8\x70\x60\xf4\x7b\xcd\x69\x9c\xa5\x49\x59\x85\x23\x3f\xf5\xf9\x77\x44\xbb\xd1\x30\x6a\x3a\x5f\xff\x68\x17\xd3\xaa\xfc\xbc\xc7\xec\x75\x62\x4a\x30\xc3\xc9\xb3\x48\xf1\x6f\x99\x67\x16\x2d\xd7\x01\xa5\xd6\x2b\x78\xdb\xb9\x95\x55\x7e\x43\x70\x45\x77\x42\x38\xf0\xba\x16\x17\xe2\x16\x89\xa1\x25\xf3\x72\xb3\x0e\x7b\x6a\x26\xe7\x2c\x31\x5d\x10\xd8\x17\x74\x86\xf1\x88\xc8\x67\x1c\x62\x9a\x2c\x78\x82\x1f\x79\xd5\x3e\x1a\x9e\x60\xb2\xe2\xb0\xaf\x5a\xe4\x9e\xcd\x5c\xb6\xe5\x55\x98\xcc\x80\xdc\x8f\xb3\xb9\x98\x00\x5b\x25\x26\x26\xd9\xf5\x90\xae\xec\x99\xd1\x1f\x75\x1c\x93\x8f\x8f\x24\x35\x62\x0e\x88\xb9\x9e\x09\xc9\x16\x74\x28\xf6\x9c\x3b\xcb\x26\x5e\x2b\x60\xda\x79\x36\x41\x97\x44\x2b\x21\xe9\xfb\x93\x71\xf4\xe1\x76\xf8\xa8\xd6\xb4\xb5\x74\x9f\x52\xed\xac\xe8\x1b\x2e\xbd\x23\xde\xa7\x9b\x8d\x49\x87\x5b\x87\x0e\x5f\x9c\x7d\xb1\x5a\x40\x6d\x3f\xaf\x4a\xcf\x73\xe0\xfe\x29\x2a\xcc\x80\x92\x9b\xcd\x50\x42\x65\x59\x0a\xff\x05\xc4\x8c\xb2\x75\x71\x21\x8b\x3a\x5b\xbc\xe5\xdb\x75\x97\xab\x5b\x66\xed\x0f\xb4\xc8\x63\xbd\xef\x68\xdb\x37\x1a\xd0\xc3\x93\x97\x3c\x54\x60\x24\x68\x19\xe2\x00\x5d\x54\x83\xe8\x94\x3f\xbc\x61\x78\x79\xc1\x1b\xf5\x1d\xa4\x65\x77\x2d\x61\xcb\xee\x99\x2d\x33\x3e\x82\x46\x57\x9f\xcb\x82\x48\xbb\xb1\xb8\x16\x25\x23\xea\x52\x03\x65\xc9\x7a\x50\xca\x81\x54\x63\x1a\x72\x33\xa6\xd5\xdb\x82\x38\x8d\x8b\x9e\x76\xad\x79\xb1\x6c\x34\xa9\xd3\xd9\xbb\xef\x7f\x87\xf5\xe0\x86\x6f\xc3\x2e\x85\xf6\x9d\x3e\x71\xcf\x1c\xbe\x0f\xc2\x82\x17\x77\x13\x17\x94\xff\x60\x1a\x0f\x2f\x65\xc4\x17\x87\x7a\x6b\xc1\x8d\xa3\x95\x43\xb8\x86\x4c\x52\xf4\x72\x38\x0f\x31\x99\x20\x92\xa9\x49\x16\xc9\xa0\x14\x71\x03\x6c\x97\xef\x89\x48\x6f\x28\xd4\x9d\x11\x0e\xa9\x64\x1f\x75\x14\xc3\x4b\x53\x23\x5b\x2b\xc5\x51\xc0\x8b\x0b\x31\xc1\x9e\x5c\x28\x42\x27\xd1\x11\xb9\x1c\xce\xa8\x06\xe3\x3c\xcc\x53\xe4\x6b\x5a\x24\x6c\x90\xdb\x89\xca\xc4\x20\x74\x15\xcb\x75\x13\xbd\xbb\x1d\xbd\xf6\x70\x19\xea\xec\x1e\x46\xff\xca\x5e\x62\x71\xb5\x97\x53\x56\x2c\x79\xf4\xbf\x7a\xf3\xb7\xf4\xcb\x22\x31\x59\xbd\xbc\xf4\x42\x6e\x0f\xe7\x26\xbe\xa6\x7a\x5b\x3d\xf7\x4d\x43\xae\xe9\xa7\xf6\x33\x57\x05\xe2\x61\x04\xb1\x6b\xcf\xe6\xe6\xbf\x82\xe9\x95\x31\x4b\xdf\x10\x58\x6c\x31\x56\x09\x90\x7f\xa7\xe8\xee\x1b\x0e\xe0\x8e\x26\x49\xca\xa9\xa8\x18\x82\x55\xe6\x62\xae\x19\xa3\xc5\x81\x5d\x6a\x36\xe1\x5c\x72\xa8\x80\x13\x24\x3f\xc3\x65\x84\xfc\x71\xb5\xd5\x81\xe3\xe9\x91\xc6\x68\x0c\x35\xfa\x21\x00\x1c\xc0\x6b\xba\x11\x62\x46\x7e\x5f\x16\x11\xf1\x08\x21\x50\xf9\x4d\xb8\x05\x5e\x50\xf1\x55\x37\x38\xc8\x08\x63\x94\x01\x0f\x65\xb7\x2c\xb7\xd2\x98\xb6\xc9\x18\x53\xc5\x78\x3e\x09\x56\x75\xf6\xb7\x8b\x4c\x84\x63\x60\xf8\xf8\x59\xbe\xd0\x44\xdb\xda\xa2\xbc\xb0\x90\x8e\x9b\xb7\x7c\xb9\xa1\xcf\xda\x0c\x3c\xd6\x0d\x5f\xd6\x3a\x87\xb0\x43\xae\x45\x40\x0f\xe1\xbc\x9e\x0c\xc6\xf9\xec\xfe\x66\x75\xc9\xc8\xce\xeb\x86\x66\x6b\x29\x95\x15\xa5\xf3\x71\x9c\xc8\xf2\xb8\x1d\x9b\xa1\xa3\xa2\x2d\x1b\x8a\xbe\x6d\x11\x2a\x1d\x55\xdf\x6b\x19\x57\x7d\xb3\xb1\xd4\x82\x4c\x0b\x9a\x70\x72\x46\x4f\x55\xca\x94\x1f\xd3\x56\x60\x38\x00\x70\xf7\x30\x5d\x20\x76\x06\x18\x37\x24\xd4\x94\x22\x38\x3a\xfc\x31\x55\x76\xc7\x43\x5b\xbf\x12\x96\x15\xd4\x7a\x4d\xf3\x29\x1b\xa8\x22\x0f\x87\x85\x09\x47\xe4\x7b\xac\x2d\x6a\x86\x34\x5c\x97\x23\x2d\xc5\x8c\xe2\x85\x59\x12\x3e\x23\xc5\x46\xe7\xc1\x00\x87\xdd\x62\x13\x25\x69\x0a\xb1\xb8\x15\xc2\xa2\x01\x76\x28\x21\x46\x2e\xae\xe2\x1c\xd5\x44\x4d\x6b\x9e\x0d\xd0\x54\x4b\x0c\xb2\x65\x95\x35\x6b\xd4\x72\x0d\x6f\xcb\xd9\x44\xce\xd9\x00\x19\xe6\x83\xb8\xc8\xc3\x7c\x41\x47\x65\x2a\xf3\x71\x38\x25\x0a\x8f\xe9\x7d\xe0\xc6\x1f\xa7\x17\xa3\x59\x52\xab\xcb\x3d\x5f\xa6\xcc\x75\xa4\x8e\x1a\x9f\x14\x1d\xbd\xc5\xc1\xb8\x66\x61\x64\xd4\xd0\x65\x09\xea\x9c\x0e\xe3\xa9\xf4\xfa\x8a\xa4\x2a\x02\x01\x8f\x4f\xa6\x85\x72\xb8\x4d\x3e\x64\xc5\xf0\x9d\x94\xc5\x4e\x11\x12\xda\x72\x1b\x76\xe3\x15\x23\xd9\xdc\xf5\x84\x0c\x1d\xb1\x03\xa3\xd8\xf3\xf0\xca\x36\xe9\xd5\x37\x79\xef\xfc\x0c\x10\xc0\x87\x1a\x08\xa5\x72\x23\x4e\x1b\x92\x7c\xa0\x5d\xab\xd2\xce\x62\xae\x13\x3d\xb4\xd1\x27\x33\x0d\x9f\x3d\x5c\x49\xac\x83\xd6\xbf\x8f\x05\x75\x55\xff\xfe\x27\xc3\x2f\x6d\x3b\x67\x71\x4d\xdd\xb7\x28\x3b\x4c\x61\xcb\x9b\xf7\xf4\x3b\xb8\xc9\xea\xbf\x81\x20\xa0\xf0\xc9\xf9\x53\x31\x2e\x5e\x91\x3c\xca\x99\x30\x3a\xaa\x88\xb2\x59\xb1\xec\x95\xcc\x73\xd3\x97\x4c\xa3\x97\x70\x3a\xa9\xcf\x9f\x29\x05\xa8\xd8\x15\xb3\x14\xfa\xdb\x2b\xcb\xa2\xc6\x55\xcb\xe7\xd8\x00\x44\xbb\x7c\xe4\x43\x2f\x5d\x2b\xbf\x5b\xc5\xa5\x51\x45\x27\x4b\x9b\x0d\x02\x8e\xb9\x5c\xe9\x4f\xe2\xb2\x56\x36\xa6\xa7\x26\x94\x2e\xe0\xe1\x1c\xa5\xa3\xac\x44\xe3\xf4\xb7\x0d\x87\x86\x79\x19\x71\x55\x3e\xf4\xdd\xe6\x2c\x28\x58\x1f\xfb\xab\x33\x0e\xd5\x3b\xfc\x15\xb9\xe9\x69\xad\xb3\xd2\x92\x4f\x1d\xae\x82\x48\x99\xc8\x30\x9d\x4d\x9b\xe5\x32\x25\xa6\xaa\x5d\x5d\xb2\x55\x67\x3a\xb0\x6a\x2d\x8d\x9d\xaa\xb0\xc2\xfb\x8d\x13\x19\x45\xa1\xb4\xb0\xb5\x18\xd9\x42\xda\xc7\x5c\x46\xb3\xa1\x24\x17\x0b\x27\xa2\x05\x91\x50\x1b\x3b\xf8\x32\xa4\xb2\x59\x3e\x94\x46\x5c\x65\x85\x22\xb1\x63\x99\xc8\x8b\x30\x35\x35\xe8\x69\x33\x5b\x5a\xb9\xc7\x81\xee\x29\xc9\x44\x2d\x12\x5a\xc3\x28\xd2\x31\xaf\x18\xe2\xc7\x65\xc8\x65\x58\xc8\x28\x59\x18\xb5\x68\x91\x65\x42\xa1\xcd\x8a\xab\x2c\xa6\x11\xc7\xdc\x20\x6e\xa7\x38\xde\x26\x6c\xd8\x9e\x8b\x2d\xf8\x11\x22\x0b\xfe\x65\xcf\x09\x2e\xb5\x8c\xde\x4d\x5d\x41\xd6\x5a\xd5\xf5\x46\xf8\x2b\xcc\x8f\xf5\x1a\x03\x67\xa0\x27\x6c\xf9\xe1\x29\x2a\xf1\xff\x67\xef\x5d\xbb\xdb\x36\x92\x04\xd0\xcf\xe2\xaf\x68\x2b\x3b\x26\x69\xf3\x21\xc9\xb1\x93\x50\x51\x1c\xc7\x96\xd7\xba\x9b\xd8\xbe\x7e\x6c\xb2\x57\xd1\x38\x20\xd9\x14\x61\x81\x00\x03\x80\x92\x98\x48\xff\xfd\x9e\xae\x47\x77\x75\x03\xa0\xe4\x49\x66\x67\xce\x9e\xcc\x99\x13\x53\x8d\x7e\x77\x75\x75\xbd\xcb\xac\x1b\x4d\x53\xcc\x55\x8e\x0b\x35\xce\xb3\x33\x9d\xba\x93\x41\x6f\x46\xeb\x32\x6f\xc3\x2b\x64\x29\xfc\x92\x87\x18\x56\x45\xdd\x07\xd4\xc5\x9f\x9b\x2a\x57\xd7\xdf\x58\x95\x1f\x82\x2c\x85\x5f\x9b\xaa\xd6\xdf\x41\x05\xf7\xb7\xd2\xad\x17\x78\x79\x73\xad\x1b\x3b\x23\x16\x39\x4b\xe1\x15\xe6\x74\x51\xe2\x28\x7d\x86\x5f\x48\x99\xd1\x15\x82\xbd\xba\x66\x90\x67\x5a\x7a\x76\x91\x76\x20\x2e\xb8\xad\xa5\x0b\xd0\x37\xcc\x4a\x0e\x09\xe2\x91\xdb\x8b\x41\x9c\x81\xce\x86\x45\x19\xe5\x25\xb7\x66\x52\x2c\x3a\x8d\xe2\x74\xc0\xa5\x6f\xd9\x66\x89\xa2\x43\x04\x4e\x66\x4e\x50\x02\x9a\x46\x94\xa6\x95\x86\x93\x1d\xf8\x22\x0c\xf4\x8e\x3e\x4b\xb3\x0b\x96\xe5\x16\x40\xf5\xb3\xa4\x1c\x6c\x14\xc4\x52\xb3\x54\x87\xa2\x3d\x71\xc9\xef\xde\x55\x9d\x3b\x70\xce\x41\x88\xdb\xab\x2b\x55\x53\x0c\x6c\x20\xb4\xec\x76\x19\xae\x7c\x2c\x73\x34\x73\x2c\x0d\xc8\xea\x0a\x11\x76\x19\x89\x58\xe4\x0a\x4c\xbf\x66\x8e\x10\x51\x0d\xa5\x30\x10\xf3\x39\x49\x40\xfa\xb2\x5a\x92\x80\x3b\xa5\x13\xa7\xed\x74\xfc\xc5\x05\xc5\xbb\x60\xc1\x12\x19\xa3\x78\x38\x0c\xee\xa2\xe7\xab\x0a\x63\x81\x68\x10\x1a\x03\x3f\x97\xa5\x5a\xd1\x6d\x61\x88\x20\xcd\xb9\x4d\xbb\x80\xc1\xa0\x49\xe5\x71\xf0\x8d\x3a\x4a\xcb\x3c\x33\x68\x53\x45\xea\x74\x15\xe5\x20\x2e\x12\xe6\x30\x6e\x0e\x36\xba\x00\x4d\x6f\xfa\x44\x3a\x0d\x5a\xf4\x83\xcf\x5f\x15\xca\x3d\xc4\x6f\xca\xa4\x5d\xbe\x40\xff\xd0\x8e\xdf\xb2\xcd\x43\x59\x01\x24\x51\x48\x35\x36\xbf\x90\xd3\xde\xd4\x87\x17\xcd\x54\x35\x7c\x45\x4d\xbf\xee\x9d\x0b\xce\x7e\x45\xcf\xdc\x74\x65\x48\x5f\xf5\x8b\x18\xa8\xfb\x0b\x29\xbd\xd4\x32\x2b\x8a\x18\xa3\xa2\x53\x17\x65\x86\x12\xc0\x72\x35\x39\x83\x88\x6f\x10\x1d\x2e\x4a\x51\x90\xbd\x44\x43\x34\x24\x19\x63\xd2\xda\x41\xa7\xae\x07\x52\x6d\x90\x22\x09\x16\x31\x70\x5f\x0f\xbe\x51\xe8\x9d\xc1\xba\x24\x98\xd8\x2f\x40\x7b\x83\x3e\x2d\x32\x68\x9b\xdd\xa3\xe2\x14\xf8\x81\x81\xa0\x02\x2a\x74\x28\xec\xd0\xae\xe3\xb3\x88\x90\x3c\xc0\xbd\x75\xaa\x04\xd1\xe2\x1b\xac\xcf\xd9\x64\x2b\x14\x27\xda\xd4\xf7\x77\x81\x46\xbb\x63\x51\x9c\xa4\x29\xe8\xdc\xf1\x8c\x50\x4f\x98\xeb\x62\x99\x41\x2c\x40\x8e\xcd\x63\x60\x2a\xb0\x49\x73\x70\x29\x8c\xa3\x37\xd6\x43\x43\x2a\xda\x80\x5a\xc0\x92\x74\x8c\xf5\x9b\xc9\x27\x03\x98\x06\xd3\x33\xd7\x02\x47\x10\x6a\x86\xfd\x99\x47\x85\x8a\x52\x8c\x87\x43\x08\x0d\xd8\x42\x3a\x05\x10\x00\xc7\x1c\x78\xc4\xea\x84\x10\x09\x16\xab\xe5\x32\x47\x7d\x92\xc1\x7f\x39\xa2\x5d\x50\x70\xc6\x59\x4e\x97\x38\x86\x5b\x2b\xa9\x27\x60\x74\x9c\xfc\xd3\x51\x50\xa1\xbb\x05\x51\x93\x9f\xfe\x70\x1a\x40\x09\x22\xa6\x11\x47\x44\x0d\xba\x2c\x48\x47\x52\xad\xce\xdb\x83\x37\xeb\x07\x2b\xc4\xbc\x55\xdc\x20\x3f\x5c\x50\x4b\x55\x22\xf4\x78\xf3\x90\x13\xa7\x20\xf8\x59\x39\x57\x40\x87\x00\x59\x46\xc6\x16\xa4\x3b\x66\x5d\x38\x6e\x0c\xd2\x70\x80\x46\x0d\x9e\x0d\xb6\x19\xfa\x10\x44\xd4\x27\x50\x33\x72\xdf\xaf\x1d\x45\x67\x78\x83\x3a\x5a\x49\x0c\x8a\xdd\x54\x89\x63\x1a\x69\xd3\x49\xd6\x53\x61\x1b\xa6\x52\x37\x7b\x39\x1b\x6e\xea\xcf\xc5\xe7\x3a\xcc\x35\xa1\x7a\x96\x65\xe4\x83\x87\xb0\x0e\xf6\x9e\xa0\x71\x48\xd9\x2e\xd4\x58\x1b\x28\x47\xec\x0a\x11\x65\x04\x0c\x11\x69\x86\xa4\x30\x19\x90\x18\xd2\x04\x6d\x13\x93\xec\x02\x6d\xbf\xcd\xad\x33\x17\x08\x9d\xd1\x4d\x05\x3d\x65\x9d\xe9\xc0\x97\x90\xb1\x84\xd6\x5f\x05\x90\xb6\x14\xf9\xcb\x23\xd9\x4c\x89\x20\x08\x48\x8d\x81\x7c\xb8\xa7\xc7\x08\x29\x77\x69\x4f\x5c\xf5\xff\xf5\x04\xd5\x15\x6c\xb5\x1f\x4e\x8d\x3a\xb6\x6c\x73\x05\xeb\xd5\xd1\x42\xdd\x4a\x65\xb6\x53\xad\xa5\x9c\xac\xc1\x51\x78\xd1\x8b\x7c\xd2\x53\xf8\x8e\x77\x43\xed\x88\x0b\x0f\x22\x91\x26\x8a\x89\x89\x7d\x21\x54\xd9\x64\x8d\x8d\xd0\x52\x91\xb5\x7c\x92\x57\xa7\xe0\x64\x0f\xd4\xef\xca\x31\xa5\x94\x42\x44\x5d\x57\xcc\xec\xd2\xac\x64\x94\x1c\xa5\x6b\x90\x80\x11\xb6\xc6\xc8\x60\x73\x92\xe0\xb9\xad\x0a\x5e\xc8\x9d\xae\x6f\xfd\x8c\xfd\x03\xad\x6b\xc8\x2f\xf9\xda\x2a\x8c\x74\x3d\xc9\x16\x0b\xc3\x8e\x45\xf8\x80\x37\xf6\xbc\x2b\xd4\x91\xcb\xa8\x30\x04\x02\x50\x7e\x84\x9f\x62\x56\x8b\xd8\x68\xbb\x3e\x49\x0c\xb7\x4b\x0a\x3c\xc4\x20\xd5\x39\xd3\xdd\xc0\x2d\x87\x26\x5e\x03\xc7\x7e\x9c\x66\x25\xc4\x7f\x28\x27\x73\xe9\x3c\x13\xc6\x92\xa9\x11\x08\x91\x86\xb6\x0a\x32\x82\x80\xe3\x89\x7b\x0f\x88\xe5\xcc\xd0\x2d\x53\x88\x3e\x3c\xbb\x36\x16\xbe\x31\x9e\x31\x9c\x35\xee\xb2\xc8\x32\x66\x60\x4c\x9c\x49\x31\xb0\xae\xbf\x0e\xda\xc8\xb8\x02\xcc\x1d\x29\x2a\x0b\x07\x50\x2a\x20\x84\xa0\xb7\x31\xfc\x51\x0a\x75\xdd\xaa\x2b\x7b\xf1\xc7\xf6\x08\xbe\xd5\x25\x20\x4d\x74\xea\xa5\x1e\x45\xec\x59\x1c\xc7\x27\xb7\xdc\xc4\xeb\x86\x5d\x24\x15\xc5\x2c\x26\xad\x86\x07\x69\x48\xff\x4f\x21\x58\x45\x33\xd5\xc7\x42\x33\xaa\x49\x24\x60\x08\x81\x52\xd6\x58\x2c\x93\x78\xa2\xb1\x41\x4f\xed\x76\xf7\xeb\x04\x8c\xfd\x03\x67\x07\xde\x74\x81\xfc\x8d\x17\x7f\x1d\xef\x9c\x38\x11\xdc\xcd\x3b\xd4\xe0\xe3\x50\xe8\x52\xad\x96\xc8\x03\x52\x6c\x3f\xa4\x01\xd7\x18\x70\xa5\x38\x33\xa4\x7a\x06\xaa\xce\xc3\x14\x88\x1d\x2b\x8b\xb3\xb1\x63\x65\x08\x41\xcf\x4a\xa0\x0e\x4d\x66\xa9\xef\x2f\x72\xee\x82\x4e\xba\x74\xb0\x14\xbd\x42\xb6\x92\x81\xda\xa9\x91\xb5\xb7\xd0\xe7\xe8\xce\x8e\xa8\xdd\x5d\x81\xb7\xf0\xc2\x32\x0c\x82\x23\x0f\x99\x0c\x98\x66\x36\x1d\x20\x28\x94\x6d\x38\x06\xe2\x65\xec\x6d\xde\xe4\x43\x73\xa7\x92\xa0\x4b\x3c\xb3\xce\xb2\x88\xe7\xe7\x74\x90\x35\xaf\x67\xc3\xb3\x10\x5a\x55\x70\x5c\x2a\xa7\x4e\xaa\xc4\x2a\xaa\x73\x97\x0c\x83\x19\xdd\x60\x8e\xd2\xac\xf2\xf5\xfc\x5a\xeb\x6c\x6d\x1c\x2b\xe4\x49\x94\xd3\x37\x58\xe1\x25\x15\xd8\xf8\x2b\xc4\x9e\x84\x3e\xbb\xa1\x11\x83\x6a\xb4\x6b\xae\x08\x64\x83\x14\xbf\x35\x40\x18\x4d\x45\x58\x51\x55\x0b\xa5\x92\x24\x0a\xe7\x2e\xf2\x45\x09\x23\x33\xd8\x20\xb3\xde\x12\xad\x01\x9c\x72\x0e\x92\x4a\x59\xc5\x1c\xea\xc1\x88\x07\x23\x11\x2b\x82\x0d\xdc\xb9\x5c\x2f\xd2\xc8\x5c\xc4\x8c\xed\xc6\x4e\xa3\xc9\xda\x5d\x3b\x02\xdb\x27\xaf\x8f\x5a\x21\x67\x5f\xa0\xac\x98\xfd\x30\x48\x41\x03\x9c\x5a\x96\x4c\xc1\x26\xa2\xc1\xbb\x00\x04\x55\x55\x37\xb2\x5b\xc0\xe7\x8d\x14\x69\x40\x8c\x36\x52\x5b\xb4\x09\x78\xc3\xa5\xa2\xb6\x06\x73\x89\xc8\x05\xd0\xe8\x26\x5d\xb2\x17\xaa\x2b\xd4\x27\x87\x71\xbc\x1a\x74\xca\x58\xf1\x16\xca\x64\xaa\x78\x3b\x05\x77\xed\x66\xdd\xa8\xd9\xbd\x6e\xb5\x9a\xe7\xef\x24\x57\x15\xca\x18\x1f\xe7\xc0\x2e\xc2\x1d\x8f\x6f\x15\xd1\xe0\x67\x14\xce\x3f\x9c\x5d\x3d\x75\x0c\xe0\x5e\x03\x61\x2c\xc3\x8f\x92\x04\xaf\x04\xa3\x6b\x54\xae\x6d\x40\xbe\x76\x86\x48\x19\x1b\x54\xbc\xa9\x76\xc0\x26\x81\x20\x46\x86\xbd\x6a\xf2\x92\x94\x08\x4f\x28\x68\x45\x07\x9b\x21\x54\xee\xe9\xed\x4d\x7b\x58\x8a\x94\x64\x17\xb5\x26\x39\x64\x74\x50\x39\x1c\x79\x18\x5d\x61\xd0\xf6\xfb\x35\xa1\x9d\x8b\x3c\x5a\xaa\x28\x35\xf8\xa0\x5f\x94\x6b\x87\x4f\xc8\x93\x17\xad\xc1\xd1\x88\x13\x55\x4a\x2d\x11\x39\x19\x9d\x04\x96\x51\x5e\x4a\xa7\x03\x89\x96\xc0\xce\x74\x16\x51\xbb\x23\x10\x26\x46\x29\x1a\xce\xaf\xd2\x59\x96\x97\xab\xd4\xac\x7d\xa1\x0b\xc0\x70\x73\x08\x67\x57\xef\x63\x0a\x73\x95\x20\x13\x6e\xe3\x07\x90\xd9\x1f\x38\x12\xec\x96\x6c\xd6\xd2\xba\xcd\x5a\xa2\x94\x36\x2e\x4b\x59\xeb\x51\x65\x75\xe9\x4c\xcc\xac\x0c\x87\x2f\xd4\x7a\xf5\xc1\x1d\x6a\xfc\x5d\x6e\x69\xd3\xb7\xd1\xaa\xef\x83\x0b\xa1\x24\x05\xc3\x14\xa2\xe3\x43\x4d\x80\xa5\xeb\x6e\xb8\x44\x92\x65\xd7\x86\x94\xa9\x2c\xd4\x13\x60\x57\x6d\x15\x6f\x13\xad\x82\x09\x32\x92\x0e\x9e\xc5\x4b\xb0\xf7\x80\xfd\x5f\x73\xdc\x61\xcc\x03\x4c\x36\x87\xc1\x68\x7e\xd4\x93\x20\x7a\x8c\x8b\xb0\xe2\x47\x1d\xb3\x46\x96\x2e\xa6\x44\x6d\x6f\x77\xb0\xf1\xd5\x95\xba\xe3\x6d\xb5\x97\xa8\x52\xca\xe6\x1b\x8e\x00\x46\xc8\xb5\x08\x57\x61\x01\xcd\xa7\xac\x90\xb8\xad\x08\x61\xad\x64\x68\x99\x67\x97\x6b\x1b\x87\x18\x8d\xc0\xd0\x5c\x86\x15\x1d\xf1\x62\x99\xe5\x25\x28\x75\x41\x3b\x63\x8e\x0a\xf4\x4a\x71\x02\x21\x13\x0d\x55\x81\xf1\xf5\x50\xd6\x28\x38\xae\x38\xf5\x02\x5c\x3b\x22\xf7\x38\x3e\x09\x92\x2c\xba\x60\x09\xd8\x82\x6b\xc8\x80\x74\xbc\x54\xdb\x83\x80\x2a\x9c\xb3\xa4\xe1\x1a\xe5\x48\xde\x67\x1a\x8d\x52\xf9\x0e\xa2\xe5\x32\x59\xdb\xe7\x34\xca\x4f\x21\x23\x50\x21\x83\x88\x58\x4a\xb0\x13\xd7\x88\xb5\x71\x3f\xc9\x7b\x4b\xec\x1d\x72\x3c\xde\xfe\xe0\x23\x09\xce\x14\x32\xec\xbe\x4d\x68\x9c\x3a\x0e\xd5\xdd\x27\x59\xf3\x38\x3d\xe9\xb9\x87\x62\x30\x8e\xd3\x29\xd1\x34\x41\xad\x6e\xd5\x06\x00\xec\xa0\xd7\x15\x8b\x41\x17\xa3\xa1\xa7\x8a\x78\x01\x8e\x48\xe9\xd2\x0f\xcc\x6b\x0e\x2d\x4f\xd6\xe8\x22\xc5\x91\xb8\xbd\xb8\x83\x15\x73\xa3\xca\x45\xff\xe0\xb9\x91\x22\x60\x20\x04\xd7\x40\xb4\xc7\x07\xd8\x67\xc7\xb1\x3f\x56\x5a\x56\xf7\x3a\x7e\x42\x1c\xc2\xda\x80\xd0\xff\x37\x12\xfd\xfa\x14\xc7\x86\x44\xbf\xfa\x72\x99\x15\xc8\x88\xab\x12\x64\x3f\xa7\x6a\xb9\xca\x4d\x61\x01\x62\x7e\xf1\x7c\x7e\x60\x3f\x05\xe1\xb2\x80\xbd\xbc\x4e\x56\x93\x33\x95\xcd\x66\x2a\x45\x68\x42\xf5\xba\x0d\xf6\x9c\xcd\xc8\x98\x1f\xcd\xeb\xbe\xb7\xfe\x2a\xe0\x20\x99\x2d\xc6\x80\x13\xf0\x22\xc0\xdb\xed\x07\x4a\x2f\xd8\xbf\x20\x89\x8b\x72\xf0\x2f\xf3\xe7\xaf\xba\x69\x30\xa8\xb0\x1b\x04\x4e\x17\x38\xfc\x26\x2f\x0a\xcf\xd1\xb4\xea\x17\x12\xbe\x22\xec\x22\xe2\x19\xda\x53\x44\x2b\xf1\xf8\x40\x5a\xe4\xd4\xf9\x11\xfb\x2c\x2e\xf9\x43\x19\x50\x8e\x28\x5e\x5b\x3a\xe1\x88\x3f\x66\x4f\x9b\x1e\xe0\x9a\xb1\x3f\x66\x71\xda\x69\xb7\xc5\xe0\xde\x67\xb1\xd8\xdd\xda\xf6\x36\x52\x80\x74\x71\xf1\x6a\x4c\x32\x33\x39\x9f\x57\x97\x1c\x1e\x57\x4b\x74\x94\x77\x6a\xe3\x19\xa1\xd3\x10\x91\x92\x76\x7d\xbe\xaf\xcd\xeb\x28\x2f\xe3\x28\xb1\x67\x39\x60\xdf\x15\x7f\x0b\x42\xad\x06\x3a\x67\x00\xd0\x1f\x5e\x82\xb5\x69\x41\x46\x05\xe8\x0b\xcb\x10\x80\x74\x2e\x04\x9b\x2e\xe3\x62\xb6\x46\x0a\x18\x02\x62\x38\xef\xc3\x7f\x3d\x28\x8b\x5d\x30\xfb\xd4\x53\xf3\xa8\xc0\x60\x27\x85\x14\x9c\x09\xb7\xa5\xaf\xf1\x12\x86\x01\x1f\x04\xa8\x15\x49\x3c\xd1\x7c\xb9\x21\xa1\x84\x41\x2e\x7c\x93\x21\x42\x10\x8e\x20\x4e\x25\xe8\x13\xba\xe8\xec\xb8\xf7\xc2\xff\xde\xd4\x20\x0d\xa5\x63\xa8\xb1\xb9\x69\xc2\x18\x69\x1c\x29\x35\x48\x50\xb0\xd4\xf9\x4c\x4f\x4a\x94\xe4\x87\xb3\xe4\xcb\x57\x0b\x77\x05\x44\xcb\x5e\x46\x69\x21\x42\x59\xb8\x60\x1b\xa2\x2f\xb7\xd1\xea\x31\xe4\xc9\x7b\x9e\x67\x0b\x8c\x90\x87\xe5\x7c\x26\x5d\x35\x0a\xbe\xdb\x2f\x01\x8b\x28\x60\xf3\x29\x26\xcc\x8b\xd8\xaa\x49\x4f\x19\xf8\x28\x85\x62\x34\x01\x62\xce\xfa\x48\x43\xd8\x7d\x8b\xa6\x09\x7e\x11\xa0\x56\xe9\x59\xf1\xaf\x83\xd4\xcd\x5b\xc3\x20\xba\x94\x20\xc1\xbc\xd8\x44\x91\x14\xdc\x91\xd7\x4b\x44\x3d\x10\x9e\xa0\x0f\x46\x2e\x55\x73\xfb\x25\xd4\x4b\xf5\x65\xe9\xcb\x52\x73\xaf\x3d\x85\xb4\x18\x2b\x88\x42\x63\x3e\x33\xee\x7b\x2c\xff\x18\xa9\xd4\x51\x3c\xa6\x36\x28\x9b\x72\x19\x57\x04\xfd\xa2\x72\x87\x0f\xf1\xef\xea\x25\x80\x29\xa7\x63\xd1\x9f\xef\x9a\xd7\x38\x88\xa3\x83\xef\xdf\x9f\x08\xcb\x0e\x43\x84\xd1\x42\xed\xe6\xd9\xc5\x93\x39\xbe\x28\x87\xdf\x65\x04\x39\xb9\x9c\x9e\xa6\x26\x52\x9f\xd7\x99\x1b\x6f\xc9\x97\xd7\xad\x2e\x1d\x77\x43\x2b\x12\x61\x71\x8d\x45\x34\x67\xf3\x07\x74\xec\x7c\x16\x65\x7c\xa5\xdb\x02\xbf\x20\x4f\x1a\xe1\xfe\xdf\x0c\xe8\xab\xe0\x8e\xc0\x4c\x01\x38\xa3\x24\xc9\x26\xef\xd3\x22\x9a\x31\x06\xbc\xf9\x46\xe0\x51\x0c\xcc\x38\x1d\xf4\x3f\x24\xf0\x5a\x7a\x51\x7c\x6e\xba\x14\xe3\xd5\x6c\xd3\xa5\x18\xaf\x66\xee\x52\x88\x3f\xec\xa5\x30\x65\x3c\x87\x9e\xb8\x8d\xaa\xaf\xd2\x9e\x32\xa0\x3f\xfe\x47\x60\xdf\x0d\xf5\xef\x07\xfb\x66\x6e\xff\x2c\xd8\x77\x2e\x6d\xc2\x21\xf5\x13\x05\x84\x22\x36\x13\x68\xdc\xc0\xef\x85\xec\x8c\x90\x75\x04\x7b\x00\xa6\xcf\x91\x75\x24\xf7\xfc\x08\x65\x72\xc4\x06\xad\xc0\x2d\x38\xcd\xa6\x7a\xa0\xd4\x5b\x34\x26\x42\xcb\x59\x4c\xf6\x31\xa8\xa3\x92\xbf\xc1\x24\x3a\x79\x76\x21\x1d\x54\xb6\xe5\x82\xba\xdb\xec\x06\x07\xc9\x63\xd3\xbe\x5e\x2c\xcb\xb5\x72\xb9\xfb\x2a\xb1\x98\xac\x23\x82\x94\xce\xfb\x3e\xa5\x2a\x94\xc9\x8b\x11\x5f\xbe\xb3\x01\x3c\x9b\x9d\x08\x65\xf5\x8e\x5f\x9b\xb9\x04\x34\x42\x64\x9b\x5d\xe1\x1d\x65\x08\x84\x24\x2a\x4a\x45\x61\x31\x07\x4d\x2b\xa8\x8f\x0b\x5a\x59\x97\x4b\x30\x23\x83\x08\x58\xf1\x6d\x55\xdd\xe6\x07\xad\x65\xe9\xa3\xbf\x42\xd6\x61\x5f\x16\x3d\x75\x89\x43\xfa\xca\xf6\x9e\x32\x97\xe3\xd2\x09\x34\x40\xf7\xee\x69\xde\xcd\xa2\x2e\xad\x34\xe8\xd2\x72\x43\x71\x40\xc9\xf4\x77\x0d\x3c\x5f\x77\x85\x66\xd6\x06\xf4\xfb\x40\xce\x29\xed\x6e\x8f\x24\x48\x98\x8e\x13\x44\xd2\xdb\x56\xc2\xb4\xad\x1e\xf3\x87\x91\x15\x35\xe9\x64\x56\x53\x0d\x8a\x6d\xa5\x8b\x38\x9d\x66\x17\x35\xd5\xe8\xc3\x48\xfd\x7e\xdd\x0d\x32\x6d\xa3\x3c\x6c\x7b\xf4\x70\xaf\xb7\xbd\x31\xcd\xe3\xf6\xe8\xe1\x17\xb5\x55\x28\xba\xfd\xf6\xe8\xe1\x97\xb5\xdf\xf1\xdf\xed\xd1\xc3\xaf\x7a\xdb\xbc\x03\xdb\xa3\xcf\x1f\xd5\xa5\xf5\x46\xd9\xd3\xf6\x68\xef\x4b\x3f\xc5\x77\x6f\x9b\x72\xd1\x6e\x8f\x1e\x3c\xe8\x6d\xd7\x65\xc2\xdd\x1e\x7d\xfe\xb0\xb7\x2d\x32\xa1\x6e\x8f\x1e\x99\x02\x3f\x88\xe2\xf6\xe8\xd1\x4e\x6f\xdb\x8c\xb9\x3d\xda\xdb\xbb\x3e\xe9\x3d\x7c\x78\x9b\xcc\xe1\x7f\x65\x07\xff\x2b\x3b\xf8\x5f\xd9\xc1\xff\xca\x0e\xfe\xbf\x93\x1d\x1c\x22\x28\x94\x79\x94\x16\xb3\x2c\x5f\x38\x93\x1c\x11\x04\x67\xe8\xd2\x4e\xe2\x57\xf4\xf2\x5d\x67\x2b\x35\xcd\xc0\x86\xc9\x06\x25\xe1\x8c\xb2\xec\x63\xff\xd6\x7c\x89\x17\xba\x40\x5b\x43\x22\x48\x22\xb5\x8d\x6a\x92\x6d\xd8\xc0\x20\x46\x43\xa4\x4e\x73\x1d\x95\x2a\x65\x99\x48\x5c\xf6\x54\x11\xa3\xeb\x58\x84\x7e\xb7\xc8\xb8\xd0\x98\x66\x36\x3c\x0d\x35\x8e\x4b\x8c\xfc\xa6\x28\xf4\x5b\xcf\xa1\x4d\xcc\xf5\x49\x02\x7c\xcc\x50\x33\x1d\x28\xd5\x79\x07\xb4\x06\xe7\x12\x81\x90\x70\x18\x3f\x5a\x5f\x46\x8b\x65\x02\x28\x53\x6c\x52\x0f\x50\x68\xb6\xca\x0b\x3d\xe8\xd2\x35\xf9\x11\xe8\x7f\x50\x16\xad\xca\xe5\x0a\x28\xbc\x49\xb4\x2a\x28\xab\x6b\x02\xc8\x92\xd8\x99\x38\x5d\xae\xca\x9e\xb3\xbe\x8c\x30\xa6\x32\x06\x5d\x8a\x21\x08\xdd\x62\xa1\x0d\x36\x0c\xc2\xa2\xb9\x29\xb0\x35\xe8\xf3\x2c\xe7\x49\x62\xf0\x03\xf5\x5b\x12\x8f\xf9\x9c\x28\x56\x86\xe1\xb2\x9c\xf9\x62\x12\xc5\x69\xbf\xd4\x97\xe4\x1d\x52\x74\xba\x36\xde\x40\xda\xe2\x80\x21\x91\xd9\xf0\xd3\x04\xa4\xce\xe0\x47\xc0\x31\xc0\x70\x93\xcd\x91\x32\x26\x9f\xad\xca\x95\x43\x17\x2f\x30\xf6\xd4\x3c\xbb\xa0\xb8\x6c\x59\x7e\xe6\xe1\xb4\x77\x21\xa8\x81\x97\x03\xc7\x0f\x34\xac\xa8\x33\xbc\xc9\xeb\x12\xb2\xc2\x49\x53\xbc\x3f\xf2\x45\x57\xea\x47\x43\x59\x1b\x80\x94\x5a\xcf\x1e\xc2\x8b\x01\xba\x42\x7d\x10\x5f\x7a\x93\x71\x17\x11\x23\x92\x0f\x09\xf9\x91\x73\x8e\x19\xb4\x67\x40\x33\x3c\x58\x4e\xa4\x92\x0c\xf8\xdf\xa5\x4e\xc1\x2d\x13\xb7\x0e\x81\x97\x38\xe2\xd5\x52\xce\x03\xcc\x29\xd0\x08\xc0\x9f\x06\x47\x92\x80\xb4\x7f\x14\xd2\x01\xc6\x20\xc9\x28\x8f\x60\xd7\x0e\x0c\x91\x1c\x85\x36\xf3\x28\xad\xb9\xb8\x3d\x9b\x26\xb6\xd4\xa9\xf5\xc3\x87\xd4\xdb\x53\xf4\x19\x22\xb1\x30\x4e\xd5\xf4\x63\x67\x14\xf3\xfd\x04\x17\x24\xdb\x33\x0a\x28\x7f\x5d\xe9\x15\x0c\x4f\xf1\x09\x38\xa3\x29\xbd\x64\x76\x7e\xb8\xcd\x6a\x32\x36\xbb\x06\x09\xf8\x48\x91\x56\xb0\xb4\x40\x19\xae\x49\xb0\x48\x04\x69\x9c\xc5\xc7\xcc\x1b\x21\x0d\x1d\x0a\x49\x58\x18\xa7\x0e\x84\xe9\x86\x61\x7f\x2e\xe8\x19\x0a\x28\x4d\x3f\x58\xc1\xdc\xb8\x71\xcc\x1b\xcf\xf0\x34\x19\xe3\x59\x9b\x37\x50\xff\xba\xd2\x29\x77\x84\x06\xd7\xa7\x90\xf4\x33\xa3\x83\xf1\x23\x3a\x5a\xb5\x93\x74\x72\x0c\xe3\xeb\xc4\x33\x25\xe2\xa7\x31\xdc\xdb\x08\x85\xd1\xe4\xac\x0f\x17\x6a\x85\x84\x42\xc4\x41\xf7\xa6\xba\x34\xaf\x79\x6a\x26\xbd\xb6\x63\x83\x36\x31\x9e\x6a\x4a\x91\x64\x70\x20\x6a\x13\xcd\xad\x41\xc9\x0a\xe1\x54\xc8\x28\x1a\xe5\x25\x3b\xa5\xe3\xde\x1a\xe6\x10\x35\xea\xca\x7a\x07\x22\x9e\x58\x46\xe5\x3c\x83\xb8\x9c\x40\x94\xcd\x12\x50\x74\xac\x97\x18\x3a\xd2\x82\xd5\x24\x4a\x69\xb9\x36\x82\x35\xed\x07\x51\x67\x06\x7a\x03\x44\xa4\xe2\x45\x74\x1a\xa7\x06\x8d\x7a\x0f\x86\x86\xd8\x0c\x86\x17\x36\x63\x00\x16\x54\x71\x61\x2f\xe2\x32\xd7\xe0\x6b\x01\xe6\x2a\xa6\xe4\x54\xe7\x28\x81\xda\xe9\xef\x3d\x7c\xe8\xb0\x14\xc1\x04\xa9\xbb\x20\x88\x4b\xba\x06\x28\x04\xa1\x55\x36\x23\x00\x30\x40\xce\x9e\x94\x73\xad\x3e\xa7\xef\xbf\xcf\x66\x3d\xfe\xff\x75\x08\x65\xa6\x9b\xdd\xb3\xb1\x8d\x77\x8b\x1e\x25\xb6\xbf\xa3\x94\x23\x19\x19\xd2\x11\x2e\x3a\xb4\x47\xa8\x8f\x30\xfa\x44\xb1\x88\x12\xb8\xda\x4e\x9c\x46\x28\xdf\xac\x00\x3d\x38\xd9\x15\x1c\x1a\x40\xa4\x7d\x51\x5b\x0c\xe7\xe2\xfc\xd7\x9d\x98\x99\xdb\x42\x4f\xe6\x51\x1a\x17\x78\xf7\x73\xdd\x06\xb7\xf3\x34\x33\x00\xc7\x29\x50\x19\x9c\x8b\x75\x51\xea\x05\x65\x9f\x5d\x52\x80\x60\xf0\x10\xe3\x03\x1f\x28\xf5\x84\x71\xff\xe7\x3f\x7c\x47\x0b\x9b\xf0\xdb\x68\x93\xd1\x8a\xae\xf2\x55\xca\x81\x21\x17\x7a\x91\x39\xb0\xb7\xee\xa8\x86\xd3\x02\xab\x87\x9a\x85\xe0\x4e\x82\x6e\xc8\x3e\x3a\x1e\x1e\x00\xc4\xc0\xde\xf4\x84\x4c\xa6\x02\x18\xf0\xaa\x14\xec\x80\x7c\x11\xc5\xa5\xea\xac\xd2\xbe\x5d\x92\x9e\xfa\xd8\xd6\x82\x0f\xbd\x32\xcb\x5c\x9f\xc7\xde\xeb\x6a\x1f\xbb\x0b\x9d\xbb\x31\x07\xad\x56\x7b\x05\x09\x38\x0c\x9f\xd2\xde\x6f\xb5\x90\x75\x1b\x10\xeb\xa6\x0e\xdc\xe3\xb6\xdf\x82\x10\xf5\x36\x0d\xe3\xe6\xe4\x8b\xc3\x7b\x5f\xe7\x1a\x90\xb4\x61\xa5\xbe\xb9\x37\x84\xc6\x86\x71\x94\x4d\x25\x07\x6b\x9a\x99\x9f\x03\x66\x5c\x65\x45\x2e\x33\x95\x86\xf7\xbe\x1e\x06\x7d\xfb\x0d\x3b\xef\x1c\x59\x43\x39\xb1\xa5\xf1\x1c\x44\x8d\xb5\x55\x44\xa4\x17\x96\x93\x95\x85\xb5\xf4\xb2\xfb\x67\x4d\xbd\xca\x62\x60\x0b\x43\x27\x04\x10\xb4\x8e\x4d\xe3\x02\x6d\x95\x26\x63\x27\x93\xe2\x64\x75\xbe\xbe\xbe\x31\x32\x0b\x41\x69\x94\x24\x06\xc1\x32\x4a\xb4\x0f\x06\x50\xa0\x6d\x61\xee\x61\x87\x24\xcb\x29\x9b\x3c\xd4\x4e\x25\x0c\x28\x08\xc8\xe0\x0e\x1b\xf3\x21\x32\x36\xa0\xaa\x7f\x5d\x45\x49\x81\xf9\xc8\x51\x81\x97\x95\x73\xf5\x8b\xa9\xf6\x0b\xc0\xe8\x2f\x56\x38\xf2\x8b\xb3\x60\xc4\x40\x28\xd6\x57\x1f\x42\xe8\xb8\x18\x0c\x79\xd1\x6c\x3c\x97\xd7\xe4\x3f\xa6\x08\x1d\x45\x25\xdf\x45\x5e\xb8\xd0\x46\x79\x98\xa0\x9a\xf6\x57\x44\x9f\xac\x54\xa9\x4a\xb7\x1c\x24\x78\x89\x38\xeb\x73\x87\xda\xca\x7e\xf2\xd0\x6a\x1f\xb0\x72\x04\x3e\xe9\x64\x50\x93\x5c\xd4\x07\x31\x75\x40\x8b\xf0\xa1\x74\x14\xfc\xed\x4c\x80\xba\x18\xeb\xd2\xec\x93\xa8\x2d\xa2\x60\x4a\x68\xf5\x3e\x10\x58\x8c\x30\x95\x9b\x28\x32\x10\x54\x29\xe5\xf4\x16\xf8\xc1\x5a\xe1\x58\x97\x43\x83\x2e\x45\x38\xff\x30\xde\x28\xfa\xe6\x33\xf5\x26\xd0\xd2\xa0\x21\x9d\x46\x53\x78\x47\xcc\xc5\xc9\x41\x8d\x39\x5a\x91\x08\x45\xcc\xd1\xf0\xc1\x5a\x2d\x4b\xb5\x30\x77\xc3\xf0\xd1\x22\x6e\xb2\xc8\xf8\x92\x96\x45\x35\x07\xb5\x0b\x6e\x0c\x3a\x9e\x55\x8a\x39\xb2\xb5\x0d\xd6\x3d\xa1\x70\x00\xb3\x24\x3a\x6d\x5a\x89\x1f\xe1\xf4\xd6\x49\x5f\x1d\xc1\x52\x9f\xae\x55\x7c\xaf\xb6\x69\xce\x01\x3b\x4b\x20\x63\x64\x6d\x97\xf4\xcd\xaf\x2b\x0d\xca\x7e\xe4\xd7\xc9\xb1\xcf\xf1\x54\x93\xdb\xb0\x55\x07\x60\x37\x00\x10\x29\xe5\x7b\xce\xf5\x02\xe5\x70\x76\x93\xb2\xb4\xd3\x5e\xe6\xda\xba\xd5\xda\xdf\x41\x7a\x26\x5b\xde\xd9\x60\xa2\x2b\xd6\xe9\xad\xa4\xd6\xac\x50\xd4\xe8\xc8\x84\xa2\xf2\x19\x00\x43\xb6\x2c\xd5\x9d\x0f\xe4\x1c\xc4\x5f\x49\x45\x53\x35\x02\x80\xda\x58\x19\x53\x23\x3a\x4b\x59\xb3\x1e\x77\x73\x3f\x35\x77\x67\x1d\x96\x18\x78\xd7\x5d\xa2\x4d\x42\x4a\x84\x79\xfc\xb1\x24\x22\xaa\x26\xc8\x24\xe7\x2d\x9b\xae\xc9\x90\x11\xe6\x62\x4b\xc9\x88\x2a\xca\xd5\x6c\x76\x07\x18\x12\xce\x44\x51\xfa\x6a\xd2\x74\x53\x74\xb5\x36\xe6\xaa\x22\xfb\x6d\x24\x97\x91\x96\x27\xfa\xea\xa9\xe1\x31\x7f\x41\x4b\x63\x7d\x01\x81\x4f\xbb\xbf\x80\x9c\x32\x2a\x0c\x4f\x9d\x19\xe2\x4e\xd0\x34\x48\x56\xb6\x30\x94\x84\x6f\x3a\x1e\x83\xf6\xe9\x7f\xb2\x15\x06\xb9\x37\x1d\xb7\x4d\xc7\x6d\x08\x90\xac\x6c\xca\x11\xf3\x90\xfa\xc3\x53\xee\xd8\x5f\x50\x85\x6b\x56\x1e\x41\xea\x89\x54\xb3\x30\x28\x2e\x2c\x0b\x72\x84\x79\x5b\xcd\xfc\x30\x54\xa3\x17\xdc\x00\x64\x40\x49\xa2\x96\x2b\x4a\xbd\xb5\x32\xa8\x92\xee\xd0\x3c\x33\x9c\x1f\x47\xe4\xb7\x7d\xa1\xe8\xe4\x9c\x52\x57\x99\x97\xb4\x4b\xbd\xad\xb3\x95\xe9\x0c\x3f\x62\x70\x3d\x44\x6c\xb4\x87\x75\x40\xe6\xe1\x89\x46\x50\x93\xb9\x74\x03\x0d\x9c\xeb\xa0\x21\x4e\x1c\x82\x4e\xed\xd8\x48\xc4\xdc\x6a\xdc\xdb\x10\x5e\x8e\x90\x99\x8c\xf7\x6b\x68\x1e\xf8\x57\x7e\xa8\xc9\x3c\x6b\xdd\x8b\x02\x42\x4e\x2a\xb7\x37\x51\x2b\x84\x6c\x8a\xe0\x0a\x22\x69\xf2\x69\xd4\xca\x2d\xe8\x14\x4e\x1a\x45\x51\xff\xa3\x12\x12\x1e\x70\xc8\xff\x28\x3f\x45\xf9\x1f\x70\xac\x20\xf9\x70\xa7\x3d\xcd\xb4\x93\x42\x5d\x64\xf9\x19\x19\x35\xa0\x0e\xf2\x34\x23\x05\xef\x42\x47\x69\xe1\xb2\x08\x78\xf7\x87\x9e\x45\x1b\xd1\xa7\x01\xc2\x9a\x6c\x81\x6f\x38\xd2\x96\xdd\x4a\x71\x88\xec\x5d\x02\x66\xe2\xee\xc4\xef\xde\x55\x4d\x07\x56\x25\xc8\x9d\xea\x33\x18\xd8\x1f\xab\x57\x01\x13\x28\xf1\x09\xad\x5a\x6b\xaf\x45\x94\x3b\x6d\x2e\xa5\x05\x10\xa2\x54\x97\x19\x6e\x4d\xc6\x80\x20\x2c\xcb\x40\x66\x6c\x13\x65\x81\xd8\xc5\x5c\x62\x92\x6e\x18\x0e\x10\x22\x19\x63\xbf\xed\x73\xe1\x29\x4b\x31\x51\x60\xb1\x21\xea\x77\x69\x87\x1b\xaf\xe1\x8d\x09\xb4\xed\xa3\xba\x27\x5f\xd5\xca\x23\xc2\x1d\x79\x6e\xb3\xa6\x1f\xaf\xdb\x3d\x1b\xab\x71\x8c\x7f\xee\x3b\x27\x92\x3d\x62\x78\x30\xfc\x86\x75\x24\xf1\x9c\x9b\xe0\x25\x65\xd9\x9f\xff\x2c\x73\xfe\x5c\xcf\xa4\xbf\x2e\xa0\xca\x9f\xcd\xe2\xc8\xdc\xad\x8e\xc9\xb1\xc1\x6d\x28\x39\x81\x17\x11\x1d\x71\x9f\x17\x17\x1d\x25\x3b\xe6\xc2\x09\x1a\x94\x9b\xc1\x2d\x03\xa0\x00\xf4\x3e\xd6\x94\x6e\x45\xd8\x14\xa3\xd9\x86\x1f\xa2\x8b\xad\x5d\x2a\x78\xfb\x29\x8b\x33\x05\x46\x48\xc9\x2c\xe9\xa2\x70\x39\x5c\xd1\x25\x30\x18\x23\x20\x37\xfc\x7b\xf7\x49\x43\x61\x9c\x25\xd9\x41\xdb\xf3\x1c\x97\x3b\x4b\x24\xd3\xf5\x06\x1d\x7b\x55\xe7\x2d\xf5\xdc\xd7\x27\xbd\x87\x8f\x6e\xa3\x90\x16\x84\x1f\x5d\xbf\x1e\x9a\x0c\xf4\x0a\x5d\x1e\x2d\x16\x7a\x1a\x47\xa5\xfe\x4b\x73\xfd\x97\xe6\xfa\x2f\xcd\xf5\x5f\x9a\xeb\xff\x4d\xcd\xf5\x13\x50\xf0\x80\x42\x17\x24\x16\x51\x1a\xba\xc3\x22\x2b\x75\xc4\x24\x38\xf8\xda\x80\x8c\x61\xe0\x29\x04\x7d\x1a\x9b\x32\xe6\x00\x33\x82\xf1\xc4\x54\xe4\x84\xe8\x32\x3c\xa6\x66\x28\x36\x0d\xac\x5e\xa4\x2a\x29\xae\x4a\x78\x41\xc4\xbb\x4c\x23\x29\xb8\xad\x33\x35\x6a\x12\xe2\x56\x64\xcf\x3f\xd2\x4b\x07\xa3\x29\x6f\x38\x75\x6f\xe8\x28\x06\x53\x4f\xbf\xd1\xbf\x6e\xe2\x6a\xe2\x62\x50\x65\x13\x40\x02\x5b\xcf\x23\x60\x0b\x16\xbf\x5a\x8e\xc3\x94\x42\xc0\x0f\x16\xa6\xa2\xe1\xf1\x51\xa9\x0a\xad\x17\xa0\x56\x8d\x53\x43\xb5\x81\x79\x31\x46\x24\x22\xae\xc9\x6a\x46\x6d\xae\x1a\x50\x11\xec\xd1\x65\x2f\xd0\x32\x40\x47\x13\x4e\xed\xe6\x16\xf8\x34\xcb\xcf\x0c\x67\x01\xde\x23\x9d\x20\x82\x7c\x45\x1a\x52\x9d\xa4\x5d\x6a\x99\xaf\xc3\x42\x8a\xf9\x56\xf5\xa2\x57\x2a\x4b\x71\xe0\xe7\x28\x80\xf9\x50\x09\xa3\x60\x96\x6f\x4e\x66\x18\x1e\x4d\x83\xfc\x1f\xe0\xf4\x47\x62\x0a\xef\x70\xac\xe9\x71\x9e\x5d\x14\xe8\xdf\x7c\xdc\x3e\xdf\x19\xec\xee\xb4\x7b\xca\xfc\xf8\x6a\xd0\x3e\x19\xb0\xf5\x21\xd7\x3e\xd7\x90\x0f\xc3\x19\xc9\x3f\xec\x76\xd5\x37\xaa\xbf\x0b\xf6\x7c\xee\xf1\x56\x23\xcf\xac\xb3\x1e\xe4\xea\xa7\x89\x84\x6f\x7d\x0b\x86\xc9\xc1\x8f\x5e\x00\x55\x07\xac\xcc\xdd\xfc\x2f\x6b\x40\xea\x87\x63\x73\x80\xf7\x38\x2c\x06\x47\x58\xe6\x7a\x12\x95\x7a\xe4\x3a\x87\x09\xd8\x0f\xed\xae\x21\xc8\x6f\x3f\x08\x06\xd6\xf1\x55\x42\x0d\x66\x8c\xb7\x9f\x3d\xf4\x8c\xe6\x93\x5e\x52\x67\x67\xa0\xd8\xee\x0e\xf0\xfb\x3e\xd4\x7d\xb5\xca\x5d\x66\x76\x75\x40\x26\xa0\x03\x51\x76\x75\xe5\xc3\xf8\xb5\x48\xae\xfc\x61\x65\xeb\xbd\xcb\xc8\xf8\x5e\xf8\xaf\x13\xb1\x4a\x76\xf7\xb3\x3c\x5b\x58\x27\xed\x6b\xd1\x89\x97\x1c\x3e\x1b\x7f\xac\x6b\x1c\x17\xd4\x3d\x7c\xbf\xba\x52\xd9\xf8\xa3\x54\x31\x78\xeb\x40\xfc\x52\xb3\x61\x1c\x78\x2b\xcf\xd6\xe6\x25\xb8\x61\xf3\xa9\x26\x50\xde\xbe\xaa\x8c\xa1\xb6\x47\xa7\xe8\x69\xca\xd2\x0c\xe2\x62\x4b\x71\xac\x07\xe5\x2c\xc5\xf6\xed\x9d\xad\x86\x90\x7e\x5c\x5d\xdd\xa0\x2b\x54\x2c\x70\x76\xa2\x67\xd3\xe8\x77\xab\x61\xa0\x8e\x44\xd6\x42\x64\xd8\x6a\x8d\x69\x30\x0e\x5c\x31\xb7\xb9\x0d\xad\x33\x1a\xf7\x8d\x3e\x96\xe4\xf4\x6e\x35\xba\x60\x05\x84\x59\xe9\x69\xba\x06\x9d\x80\x3e\x9a\x1b\x1a\xf2\x31\x06\xab\x90\x94\xb2\x0f\x52\x94\x01\x0e\x20\xec\x4d\xa8\x22\x27\xb7\x64\xdd\x54\xae\x87\x13\x2b\xc2\x0b\xc0\x23\x4d\xa2\x54\x72\x80\xaa\xd0\xcb\x28\x8f\x20\x9d\x27\x24\x4e\xc4\x61\x7e\xfa\xe9\x27\x6f\xe9\x3f\xfd\xf4\x93\x8d\x3f\x56\xd8\x63\xb0\x41\x34\x2c\x88\x31\x7e\xa3\x60\xef\x48\x09\x53\xb5\x59\x12\x9d\x62\x7c\xe5\x69\x0c\x9e\xa2\x41\x1a\x46\x64\x40\xf0\x7d\xc2\xb8\xe8\x59\x6a\x38\x95\xc2\xfa\xf9\x65\x39\x75\x59\x38\x61\xbf\x8b\x8d\x70\xa0\xee\xdc\x61\xfd\x82\x2b\xb6\x0c\x28\xcf\xbb\x5b\xd3\x30\x2c\xb9\xba\x12\x7d\xf1\x1e\xbc\xf2\xfb\xa4\xf3\x87\xf4\x3b\x2a\x2a\x29\xc9\x0d\x45\x26\x46\xd5\x15\x27\xa2\x04\xd5\x55\x94\x70\xe8\xe8\x97\x99\x41\x91\x3b\x68\x37\x88\xb6\x73\x70\xda\x3d\x29\x32\xbb\x30\x64\xd4\x45\xb4\x2e\x6c\x10\x02\xb2\xb3\x72\x43\xeb\xb4\x34\xb0\x44\xc9\x25\x49\x80\x0a\xda\x07\x3d\x55\x31\xbf\x56\x10\x55\x95\xe7\x45\x67\x38\xbf\x90\xba\x9d\x8a\x2b\xb7\xa9\xc2\xab\x7e\xe1\x55\xb5\xa5\x75\x4d\x28\x99\x05\xb6\x08\xb7\xf4\xb1\xda\x7d\xa4\x46\xe6\x3f\xf7\xd4\xee\xce\xde\xe7\xf6\x5c\xcc\x5c\xae\xae\x70\x4a\xe8\x79\x00\x4d\xc3\x0c\xdb\xf3\x8b\x85\x73\x0f\xb6\x30\x78\xf7\xae\xea\xc8\x99\x5e\x5d\xf9\x13\x87\x0e\x1b\x7a\x14\x15\xb1\xe7\xda\x5a\x6e\x51\x7c\xea\x13\xc8\xf5\x06\xa6\x4f\x0e\x0e\xc3\x66\x3f\x44\xe5\x7c\x30\x4b\xb2\x2c\xef\x54\xbf\x4b\x19\xcf\x87\x59\x9c\x46\x09\x98\x28\x41\x14\x55\x54\xc7\x0b\x12\x2a\x4a\x9e\xa2\x86\x3e\xc8\x5c\xed\x05\x9e\x97\x4a\x42\x1b\x5a\x5d\x6a\x6f\x38\x61\x94\x66\xa5\xea\xcc\x5a\xa5\x41\x24\x17\x47\xc8\x85\xea\x72\x8e\xf6\x80\xc9\x22\x82\x79\x4a\x53\x40\x37\x6b\x76\x83\xa9\xf4\xc1\xb1\x6e\x0d\xb0\x52\xac\x36\x9f\x58\xac\x2e\x73\x8e\x86\x71\x30\x26\x3d\x36\xae\x91\x2d\x08\x5b\x51\x9c\xe1\x0b\xad\xd0\xbf\x80\xdd\x83\x31\xba\x18\xe3\x13\xd2\xca\x2e\x23\xb4\x00\x2b\x33\xb2\xc8\x7b\xcc\x77\x0c\x15\x56\x40\x59\xb3\xe8\x15\x90\x79\x9a\x4d\x75\xdf\x10\x58\xf6\xe5\x80\x14\xea\xcb\x32\x5e\xc4\xbf\xf1\x60\x22\x63\x05\x08\x5b\x4a\xb0\x8c\xbc\xd0\xb9\x4a\xf4\xb9\x4e\x18\x9f\xa6\xd9\x33\x9c\xa2\xbb\x65\x38\x67\x76\xe5\xb5\xb9\x40\xf6\xdd\xb2\xbd\xef\xea\x0e\xf7\xc1\xcb\x7f\x9a\xaf\x97\x06\x42\x0b\x75\x16\xa7\x53\xb0\x92\x4a\x30\x03\xd6\x24\x5f\x15\xe5\x7a\xa0\xd4\x0b\x88\x64\x14\x4f\xd0\xa0\xd3\x90\x84\x04\xe9\xde\xec\x2d\x0b\x13\x17\xaa\x3d\x8e\xd3\x28\x5f\xb7\xcd\x56\xb0\xa2\x9c\x93\xe3\xa1\xe2\x2a\x4b\x67\xf1\xe9\x0a\x62\x4b\xd0\xdb\x73\x78\xae\x73\x52\xd4\xe2\xe5\x45\xa1\xce\x2a\x8d\x0d\xb1\xad\x31\x06\x5c\x7b\x55\xce\xbe\x84\xe8\x59\x9c\xcd\x99\x56\x09\xf3\x39\x74\x5c\x94\xdb\x1f\xff\xcb\xd5\x15\xf5\xc1\xeb\x07\x43\xe1\x94\x33\x6c\x13\x82\xbc\xd0\xea\x4c\xeb\xa5\x2a\x73\x48\x99\x37\xa3\xd4\x21\x06\xe9\x16\xab\x1c\x08\x20\x7a\xb6\x66\x2e\x85\x27\xe5\x18\x88\x6c\x8e\x01\x90\xab\xaf\x58\xe6\x03\xd0\xe0\x82\x99\x10\xf0\x65\x93\x33\x5d\x9a\xd7\x6a\x16\xe3\x4e\xc0\x7a\xd8\xbd\x4a\xed\xf0\x34\x23\xfb\x26\x16\x9a\xe5\xa7\x30\x1e\x6d\xd3\x22\x9e\x4e\xd9\xa0\x1a\x00\xd3\xf6\xc5\x49\x0f\x02\xb0\xc7\xd4\x2c\xf9\x0a\x58\x70\xb2\xbb\xb5\x3c\xa1\x33\x8b\x4d\x0d\xcd\x3e\x58\xa5\x93\x2c\x3f\xa3\x5c\x82\x96\x2f\x05\xb6\xac\x7e\x92\x63\xad\x80\xe2\x20\x3b\x39\x0e\xbf\x9e\xa5\x6c\xc6\xea\xac\x62\xe5\xf3\xd3\xa3\x5d\xcd\xcd\x3b\x14\xa9\xc4\x60\x41\x4c\x84\xa9\xd4\x8f\x40\x0a\x21\xf8\x40\xce\x7d\x33\xf5\x12\x6d\x24\x5c\x3e\xc4\x28\xa5\x0c\xbc\xd1\x84\xc8\x25\xb8\x89\x70\xc7\xd3\x76\x49\xbe\x7f\xb4\xae\x6d\x18\x60\x9b\x51\x00\x26\x56\x4f\x0c\x79\x93\x14\x99\x03\x0f\x6a\x53\x31\xcc\x70\xd6\x51\x76\xb3\xbd\x2c\xb9\xe1\xa6\x40\x42\x69\x1b\xde\x58\xd8\x93\xb2\xa5\x5c\xb2\x76\x3b\x1f\x97\x7a\x51\xf4\x90\x54\x70\x69\xd5\x27\xac\x4b\xfb\xc0\xd4\x83\x95\x0e\x10\x20\x00\x91\x59\x42\x18\x4a\x91\xcb\x1a\xc2\x53\xf1\x3d\x05\x3b\xc9\x38\x85\x60\x69\xe7\x3a\x4f\x30\x46\x0e\x9f\x4d\x11\x97\x2b\x9b\x82\x00\x16\x85\x73\x7a\xed\xe6\x1b\x80\x12\xa7\x99\x87\x69\x90\xc3\x01\x45\x45\xb6\x78\x52\x18\x88\x5b\xdb\x8b\xaa\x62\xd6\x45\xc8\xa7\xaf\x42\x05\xc3\xcc\x7e\xc3\x98\x2e\x58\x64\xb1\x5a\xa2\x23\x03\xa7\x33\xa7\xb1\xad\x40\x46\x4c\xa2\xc6\x2a\x8d\x3a\x27\xab\x51\xf6\x2a\x45\x7b\x55\x36\xa0\x84\xcb\x43\x8a\x65\x0b\xc8\xde\x8d\xd3\x18\x73\x78\xc7\xc9\x42\xf8\x64\x49\x80\x12\x4a\x40\x92\xa8\x28\xbf\x6b\xa8\x42\xa0\xb8\x5a\x8c\x0d\x09\xec\xac\xe5\xcd\x72\xfb\xb4\xdc\xa9\xf2\x8d\xf5\x0a\xf1\x30\x2d\x56\x85\x79\x16\xd5\x0e\xc3\xb0\x7d\x5c\x89\xc4\x0f\x1e\x58\xea\x1f\xf6\x65\xc7\x4b\x78\x6a\x0d\x61\xdc\x8d\x4e\xd6\xec\x2f\xe2\xe1\x3f\x50\x18\x16\xce\x6e\xbd\x60\x0e\x03\x1f\xca\x5c\x27\xfa\x3c\xa2\xb4\x27\xd2\x15\x23\xf4\x63\x28\xec\xa4\x78\xe8\xea\x13\xfe\x0e\xf3\x43\x22\xa5\x0b\xd9\x0a\x2e\xc0\xf9\x01\x82\xcb\xf3\xe2\xd0\x3a\x9d\xfc\x80\x33\xd8\x0f\xd0\x21\xa5\x98\xe5\xc5\x12\x24\xa6\xbd\xf3\x60\xf5\xc6\x81\xf4\x54\xee\x8a\x52\x20\x95\xa2\xe1\x84\x45\xd8\x68\xc2\x04\x49\x92\xd9\xb8\x37\x88\x42\x3c\x99\x1a\x19\x1a\x03\xb1\x0f\xf4\x3c\xe7\xc1\xd2\xb6\x29\xae\x02\x94\x36\xac\xe6\xa0\xec\xd2\x8b\x28\x06\x16\xc8\xe0\x44\x88\x65\x5e\x5e\x64\x3e\xa6\xa6\x51\x8a\xe7\xa6\xf5\x01\xa8\xce\x7c\x91\x1e\x45\x9e\xbd\x76\xf2\x25\x54\xbc\x39\xdd\xeb\xa9\x2e\xad\x34\xc4\xde\x5a\x5b\x28\x8c\xa3\x28\x11\x38\x13\xf7\xc1\xce\x30\x17\x90\xad\x4c\x8d\xe3\x13\xe1\xe8\x4f\x0d\x2d\x1a\x58\x95\x14\x8d\x8e\xca\x51\x8d\xeb\xba\xa7\x5f\xe8\x36\xef\x7b\xf1\x66\x2b\x4a\x00\xd0\x09\x85\x8a\x65\xbe\xa6\xfe\xeb\xc3\x75\x35\x2c\xbf\xa7\xda\x24\xf4\xe9\x59\xfb\x2c\x88\x86\x25\x05\x5c\x03\x2b\xc1\xaa\x0c\x8b\xff\x93\x86\xb7\x62\xeb\xac\x2f\x7e\x4f\xb5\x03\xed\xaa\xe3\xda\x6c\xdf\xd3\x81\x7a\x5f\xd0\x2b\xe0\x2a\xba\xe3\x69\xab\xfb\xaa\x6d\x98\x6d\x1d\x4d\x07\xed\x9e\x6a\x3f\x3b\x7c\xbd\xb3\xb3\xf3\xa0\xdd\xf5\x4c\xc7\x26\x11\xe4\x39\xfc\x80\x61\x34\xbb\x1d\x8a\xca\xf5\xce\x20\x9f\x20\x39\x13\xdc\x67\x14\xd8\x44\xe0\x32\x96\xa9\x68\x82\x17\xc2\x7c\xf2\xa5\x23\xa0\x05\xb9\x98\x67\x85\x8c\x3b\x36\x99\x63\x7a\xa4\x64\x8d\x9c\x30\x20\x68\x1b\xdd\xab\x85\x81\x25\xa2\xe4\x45\x54\x1c\x91\x94\x60\xbf\x25\x6c\xea\xde\xae\x17\xe3\x2c\x09\xcc\xe9\x0c\x57\x87\x1f\x06\x73\xd7\x4e\x84\xf7\x7b\x4e\x35\xdd\x29\x1e\x57\xeb\xd7\xc7\xfe\x0b\x26\xa3\x0e\x6e\xd9\x99\xd9\xda\xcd\x70\xd5\xab\x99\x73\xcf\x9a\xfe\x24\x2b\x2d\x03\xac\x21\x63\xec\x07\x9a\x08\xa6\xe6\x19\xf7\x62\x75\x17\xc4\x5d\xc4\x67\xe4\x78\x88\x60\xe0\xc2\x93\xe9\x7a\x52\x03\xb2\xd9\x74\x97\x08\xe5\x32\x77\xef\xb2\xc0\x2a\x00\x0b\x21\xd0\x09\x64\xcf\x4a\x04\x7f\x14\xb6\x2b\xd5\x5d\x6d\x5a\xaa\x3f\x03\x31\x90\x8d\x83\xef\x1b\x69\xf2\xf8\xbe\x59\xeb\x3f\x20\x08\x1c\x0e\x6d\x5f\x6a\x52\xe2\x3b\x16\xd1\x23\x5b\x66\xd4\x11\x18\x9a\x66\x19\x31\x2f\xbf\x04\xcb\x82\xec\x4e\xd6\x5f\xc9\x52\xa7\x2b\x24\xf7\x12\x73\x11\x7e\x71\x2b\xfa\x85\x48\x72\x72\x99\x71\xa7\xd1\x53\x51\xa1\xd2\x4c\xfd\xe2\xef\xfa\x2f\x5e\x10\x40\x4e\xc7\x33\xb0\xaf\xe1\x9a\x18\x10\xf6\x29\x99\xac\x8a\x32\x5b\x78\x23\xc2\xa5\xb5\xab\x74\x0a\x21\x48\x65\x05\x71\x40\x9c\x89\xf1\xcb\x6c\xaa\x07\x1f\x0b\xf5\x7d\xf4\xdb\xda\x3d\xcf\xbe\x85\x25\x51\xaa\xe8\x75\x08\x61\x31\xca\x3c\x3e\x8f\x23\xb0\x2e\x32\x54\xfc\x2c\xa3\xb4\x8e\x95\xb5\x94\xd6\x4b\x54\x25\x3a\x9a\xa2\xbc\xc4\x3c\xf5\x90\x60\x8a\x32\x8f\xdb\x98\x14\xb5\xa0\xef\x2e\x16\xbc\x61\x60\xa9\x55\x31\x9b\x27\x99\x5e\x00\x5e\xe6\x19\xac\x40\x8e\x73\x68\x00\xdb\xad\x8b\x40\xcb\x22\xdb\x04\x32\x68\x7a\x43\x71\xa9\x18\xe0\xdc\xa3\x0b\x43\x4b\xf2\xdb\x99\x61\x13\xa5\x5c\x6b\x2f\xcd\x54\xb4\x57\xb7\xd9\xf4\x1a\x3e\x9f\x6f\xea\xeb\x3c\xec\xec\xbc\xb9\x37\x6b\xd4\x55\xdb\x9d\x33\xf9\x0a\xea\x6f\xb0\x0c\x07\x11\x57\x83\x65\x38\x7e\xf3\xeb\xda\xa3\xa2\xcc\x0a\x16\x15\xda\x78\xf4\xaf\x6c\x20\xcc\xa5\xce\x96\xe6\x4e\x47\x98\x0b\xc8\xc1\xbf\x4d\x8c\x8c\x40\x1c\x93\xd3\xe2\x45\x9e\xa5\xa7\x03\xa7\x6d\xdb\x90\x7c\xf8\x36\x79\x8e\x9f\x46\x29\xe5\xb4\xd1\x3d\x20\x41\x5d\xd6\x84\xd0\xfc\x0c\xf6\xfd\xc9\xac\xd4\xf9\x61\x3a\xb5\x4c\x90\xb4\x94\x03\x1a\xac\xe2\xaa\x03\x76\x83\x2e\x80\xb3\xc1\x06\xaf\x9e\xbd\x1a\xa9\xa9\x36\x54\x01\xd2\xc6\x94\x0d\x63\x92\xa5\x05\x64\x0a\x28\x93\x35\xba\x10\x52\x8a\x1d\x33\x33\x58\x3e\xa0\x8e\x71\x18\x56\x3d\xc8\x19\xe6\x45\xad\x99\x8c\xa9\x9c\x22\x61\xcd\xf5\xe4\x8c\x58\xf0\x28\xe0\x56\x6c\xbc\x3b\x90\x6a\xf7\x94\x86\x68\x59\xc0\x7d\xb3\x22\x63\x19\xe5\x65\x3c\x59\x25\x11\x24\xe9\x58\x64\x53\xf2\x90\xb3\xae\xf4\x71\x3a\x50\x4f\x91\x00\x44\x2e\xa4\x90\x62\x71\xb2\xa4\x03\x44\x7c\xae\x73\x43\xae\xe8\x65\x89\x06\x30\x86\x68\xb6\xd6\x75\x43\x97\x2f\x9b\x75\x29\x51\x4e\xac\x8d\x21\xbc\x2f\x28\xbd\x0f\x3e\x44\x98\x6b\xc0\x9e\x14\x4c\x1f\x6c\xc4\xfd\xb0\xf8\xd6\xba\x5d\x1e\x1a\x4a\xf0\x9d\xb9\xa4\x3d\x48\xdf\x2f\xc3\x0f\x02\xcd\x78\xc1\x9e\xf8\xbb\xf5\x52\xd3\xa9\xff\x10\xad\xe1\xbc\xf0\xf4\xc1\x66\x95\x56\x00\xbe\x88\xac\xed\xf4\xa2\x12\xd2\x8d\x73\xa6\xae\x6d\x5c\x7b\xdb\x46\xe4\x86\x52\x2f\x58\x72\x25\xbc\xf4\xa6\x49\x1d\xa5\xb8\x4e\xb7\xad\x43\x22\x61\xd1\xf2\xde\x06\x0e\x64\x4b\xca\xdf\x6b\xa2\x00\x85\x89\xf1\xea\xe1\x8c\x28\xa6\xd8\x13\x21\x0b\x1e\x00\xbe\x79\x2c\x8d\x17\x85\xfd\x93\x0c\xc3\xfd\xf0\xeb\x17\x21\xb5\xe3\x02\xa3\xd9\x89\xa0\x0e\xec\x3b\x88\x52\x56\x1b\xa0\xdb\xd7\xd5\x8a\x98\xe2\xa8\xb9\x30\x2d\xcd\xe6\x87\x4a\x5b\xac\x68\x2d\x5c\xc9\xa2\xa4\x59\x7b\x6c\x71\xa4\x38\x7e\x67\x71\x52\xeb\x9f\x02\xbc\xbf\x34\x45\x51\xa2\x85\x95\x5c\x5c\x7b\x73\xed\xca\x2a\xcc\x2a\x89\x28\xb1\xce\xa5\x44\xd4\xe3\x78\xa7\x9e\x98\x36\xf4\xa7\x99\x8c\x11\x50\xc5\x34\x51\x68\x93\x2d\x85\xd5\xa8\x08\x4a\xef\xe3\x4f\xf2\x36\x19\x77\xa5\x5a\xc8\x6c\xee\xd5\x95\xbc\xbf\xc2\xb2\x44\xde\x5e\x3f\xbe\x95\x95\x8d\x70\x92\x4a\x3c\x73\x18\xf0\x55\x4e\xdb\xee\xf5\x04\x43\x55\x9c\x5d\x70\x3e\xb5\xe1\x5d\xf7\x6b\xa1\xd5\x30\xf1\xb7\x4a\x64\x12\x40\xa6\x4d\x97\x81\x52\x00\x33\xed\x86\x11\x50\xca\xfb\x0f\x8e\xe1\x8e\x00\xc7\xf1\x77\x0d\xcb\xfa\x7d\x99\xd0\x0c\xbf\xb0\x78\xda\x21\x19\x92\x2b\xbb\x02\x2b\xf6\x71\x45\x15\x91\xa4\x8d\x4c\x16\x88\x1a\xba\x90\xae\xb9\xe6\x5c\x84\x73\x43\xcd\x56\x14\xba\x7c\x56\xd1\x29\xd8\x6d\xa9\x7e\xed\xf8\xee\x52\x20\x38\x9e\xea\xd1\xe8\x75\x94\x17\xda\x56\xea\x32\xeb\x51\x90\x76\x47\x26\x9a\xab\xbd\x97\x84\x99\xbd\x1b\xc3\x3f\x07\x65\xf6\xbd\xe9\xe5\x69\xc4\xd1\xf6\xd1\x5d\xf4\xb8\x3d\xd7\x97\x86\xe7\x27\x5d\x89\xf9\xb7\x0f\x3f\xa2\x62\x12\xc7\xe6\x07\xa9\x67\xcc\xaf\xa8\xd0\x8f\x3e\x87\x5a\x93\x62\x8f\xfe\xed\xef\x51\xb3\xdd\x47\x89\xe6\x1e\xf8\x77\x1e\x5d\x08\x83\x28\xbb\x70\x75\x5f\xb5\xdb\x5d\x7f\x4e\x68\x12\xd5\x95\xc6\xda\xe2\x99\x78\x9f\x9e\xa5\xd9\x45\xaa\x9c\x53\x67\x5b\xdd\x97\xce\x60\xb5\xe4\x77\x8d\xae\x47\xa2\xa9\xe6\x74\x25\xa8\x09\xe3\x97\x5a\xde\x71\xff\xec\x1a\xb3\x29\xc8\xc8\xcc\xac\x50\xb3\x69\xb2\x84\xc8\xc1\xbd\xde\xee\xf8\x7c\x4c\x5d\xb1\xe0\xe9\xf9\xcb\x16\x0f\x18\x99\x09\x5e\x37\x45\x96\xaf\xc2\x6e\x4f\xb5\x6b\x55\xef\xff\x37\x22\xcb\xfb\xb0\xb0\x21\xb2\xbc\xd5\xb3\xb0\x18\x98\x11\x8d\x0d\xaa\x44\xfe\x10\x40\xea\xa2\x6b\x1c\x07\xcd\x70\x91\x59\x48\xbc\x1a\xc5\x25\xa4\xc2\x35\x13\x19\x28\xc7\x51\x60\xbc\x16\x12\x72\xb7\x6c\xe0\x4a\x9f\x85\xe7\x24\xeb\xe4\xa3\x23\x94\xf1\xa0\xa2\x41\xa5\x56\xc4\x9a\x79\x9f\x05\xb0\x2f\x4a\x40\x5b\x6e\x78\x53\x1c\x10\xd3\xa3\xec\x5c\xca\xd8\x9b\x11\x6c\x15\x6e\xbc\x0d\xce\xd1\x4c\x78\x45\xb1\x3f\xa4\x13\x47\x11\x7d\x23\xe5\x4c\x75\x64\x00\x7d\xb2\x91\x01\xa8\x23\x99\xd2\xa2\x9a\xac\xd1\x37\x0a\x51\x23\x2f\x61\x8c\x78\xda\x48\x5f\x7a\xff\x00\x92\x2d\xb6\x3c\x6a\xcc\xab\xf1\x35\xfd\x59\x01\x1c\xf4\xe8\x06\x45\x89\xc6\x6c\x80\x70\x26\x36\x86\x85\xb3\x94\x00\x30\x26\x05\x42\xae\xe1\xf4\x32\x97\xf3\xdb\x65\x4a\x71\x79\xe8\xfc\xa4\xd5\xde\x5b\xc9\x40\x69\x53\x76\xfb\x8f\x27\xec\x47\x24\x32\x7e\xd6\x68\x89\x64\x6c\xfa\x7a\x25\xd2\xef\x72\xef\x69\x0f\x7b\xc1\x51\x8d\x1c\x10\xc9\x83\x1d\x11\xa4\x71\x0f\xa4\x5c\x1a\xa9\xc9\x98\xcb\x0c\x51\x6e\xfd\xf1\x6d\xc2\x12\xb3\x44\x33\x1b\x07\x28\xe6\x2f\x36\x08\xbe\x61\x31\x41\x54\xdb\xda\x87\xfd\x16\xbd\x54\x82\xf6\x07\xaa\x99\xfb\x14\x8d\x38\x70\xa1\xfe\xd1\x53\x3c\xd2\xe5\xa0\xbb\x9c\xe8\xf4\x53\x28\x39\xcf\xa1\xac\xb6\x5f\x14\xb0\x6c\xe8\x18\xa6\xe5\x80\x85\xf4\x8a\x00\xe6\x5e\xb9\xf0\x48\xf5\x41\xcb\x5d\xcd\x42\x46\x02\xe0\x42\x73\x50\x38\x09\x9b\xf0\x8c\xc4\x40\xfc\x34\xd1\x55\x44\x85\x2c\x91\xd0\x5e\xcd\x2a\xdb\x14\x34\x09\xc7\x26\x06\x49\x6e\x0f\xd5\x45\xd2\x20\xd8\x23\xd3\x0a\x9d\xf0\x78\x3f\xfa\xfd\x80\x18\x77\xd7\x6a\x9d\x4e\x44\x6c\x7d\x94\x7b\x78\xca\x62\x78\x18\xd0\x7c\x13\x74\xba\x64\x85\x20\x74\x90\xc9\x9a\x9b\x97\x99\x8a\xce\xb3\x78\xaa\x96\x31\x18\xe6\xac\x96\x14\xbe\x81\xdd\xa7\x8b\x32\x9a\x9c\xdd\xc0\x9f\xb2\x16\x76\x12\xa5\xa8\x44\x45\x7a\x96\x9d\x21\x58\xee\x0a\x06\x7c\x68\x6a\xc0\xcd\x48\x9a\x63\xf6\xa4\x3a\x06\xf6\xf2\x43\xb4\x1e\xeb\xba\xcc\x7d\x4a\xd5\xbb\xea\x05\xfa\xcd\x4a\x84\xde\xfa\xc4\xf0\x81\xef\x29\x6f\xa8\x99\xdd\xe5\x12\x5c\x98\xc8\x2c\xc3\xb7\x95\x00\x13\x44\x34\x5f\xc3\xd8\xcc\x66\x97\x9d\x5b\xe6\x9f\x3f\xd1\x0d\xbb\x3d\x5e\xf1\x6f\x40\xf3\x76\x8f\x71\xe3\xd1\xf1\x4a\xec\xb5\xd8\xde\xce\x4d\x79\x11\x09\x78\x61\xde\xef\x97\xd3\x08\xae\xb9\x75\x8f\x08\xaf\x63\x90\xc5\x30\x34\x41\x08\xde\xb4\xfe\x41\x70\xfb\xf7\xeb\xf0\xc1\x4e\xed\x6d\x92\xd6\x13\x8d\x01\xb8\x6b\x05\x19\x74\x51\xdd\xad\xdd\x97\x91\x85\xbc\x89\xa3\xed\x74\xd3\x0e\xb8\x4c\xb6\x79\xf7\xf6\x97\x7c\xdf\x07\x37\x8c\x5c\xed\x28\x3a\x8e\xed\x86\x84\x1d\xa6\x40\xb6\x67\x8c\x99\xd8\xe0\xe8\xd7\xba\xb4\xcf\xa8\xb0\x1d\x30\x6f\x32\x79\x93\x88\x49\xd2\xdb\x5d\xc3\x6c\x56\x18\xd2\x4f\xe0\x3e\xed\xdb\x2b\xb8\xd0\xba\xcb\x7a\xed\xa6\x20\x51\x98\x52\x55\xa7\x04\x2c\x77\x5e\x2c\x1d\x40\x13\xf0\x33\x40\x04\x3d\xbb\x6a\xfb\x46\x51\x97\xa1\x29\x7f\xcd\xab\xeb\x7a\xad\xbc\x85\xd5\x4e\xaf\x2b\x77\xe2\x96\xcd\x1d\xb5\xca\xc5\x16\x4c\x28\x51\x7f\x65\xb3\x02\xd4\x8f\x19\xf3\x27\x63\x64\x81\x37\x5d\x5b\x14\x4a\xff\x60\x68\xbc\x59\x96\x4f\xa4\x01\x91\x8c\xf8\x47\xd9\x94\xdf\xd5\xdb\x50\xb1\x25\x4c\x1b\xe8\xf8\xb6\xb4\x0a\xb3\x26\x59\x18\xd8\x0c\xa2\x63\x60\x0c\x93\x36\xdc\xf9\x36\x11\x07\x2d\xb6\xd9\xc7\x27\x00\x55\x66\x93\xb9\x55\xab\x83\x3e\x4f\x45\x76\x08\x4e\x47\x3d\xa8\x5c\xf0\xba\x2d\xb2\x3b\x5a\x8d\xd4\xee\xe0\xd4\x92\xa5\xbe\x98\xa6\xd6\x1e\x38\xc0\xb8\x38\x29\x87\x05\x7d\xff\x73\x17\xb2\x96\xd8\x28\xb6\xa8\x44\xb3\x20\xe2\x86\xc8\xf6\x4d\xc5\xa5\x48\x3a\xd1\x78\x43\x04\x16\xad\x31\x45\xf3\x64\xe9\xe4\x5b\x56\x7b\x19\x2b\xfe\xe5\xa4\xed\xba\x7b\x97\xda\xf1\x0f\x2f\xcf\xc4\x70\xa8\x9e\x1b\x0a\x1c\xe3\xe9\xa1\xc8\x58\x3b\x53\x55\xd4\xe8\x32\xc5\xd4\x75\x54\x7b\xd3\x2c\x44\xea\x79\x4a\x61\x31\xb3\x32\x74\x14\x03\x27\x5d\xf7\x79\x9e\x25\x53\xf8\x2c\x31\x91\x34\xe4\xc1\xaa\x58\xcd\xba\xd6\xc1\xbf\x22\xb7\xe3\xc4\x4f\x60\x0f\x4e\x70\x49\xf2\x1d\x99\x36\xcb\xb7\x95\xac\x70\xa0\x03\x87\x83\x70\x92\xc7\xd0\xcd\x89\xeb\xdf\x19\x15\xdc\xc1\x7d\x23\x86\xd3\xeb\xdb\xcb\xa6\xe7\x4d\xd0\xda\xec\x00\x7e\xf4\x28\x72\x26\xde\xc7\x36\xc5\x88\xeb\xd0\xfd\x41\x2b\x6c\xa0\xac\xcd\xa2\x7a\xde\x5b\xda\xb3\x81\x10\xda\xed\x1e\xef\x99\x8d\xf7\x64\x49\x46\xec\x0e\xad\xb0\xc0\x92\x8a\x48\x84\x08\x9f\x28\x4b\x52\x16\x1a\x13\x6c\x9d\x6b\x15\x81\xbf\x6c\x36\x83\x40\x3e\x96\xb2\xc0\xbb\x3f\xcf\x4a\x88\xcc\xa8\x74\x3a\x2d\x30\x76\x0f\x0d\xb1\x49\xaa\xbc\x89\x9f\x73\x09\x40\xc0\x29\x02\xd7\x21\x61\x56\x35\x82\x8b\x3a\x50\xa2\x3e\x6f\xbe\x28\xf2\xba\xaf\xe5\xc3\x6e\x69\x4c\xe6\x3f\x6e\x37\x70\x62\x04\x9a\x21\x99\xf9\xd6\x90\x64\xf2\xe2\x51\x44\xd9\x2c\xd5\xfd\xf1\xba\x9f\xa5\x7a\x03\xd0\xca\x7c\xb4\x08\x6f\x13\x27\x70\x60\x74\x21\x64\x88\xa6\x86\xaf\xf0\x10\x14\x0f\x75\x40\xef\x85\xfc\xfc\x69\xe2\x8a\x3f\xc8\x61\x6e\xbe\x43\xcd\x1b\x8c\x6f\x24\x93\xe2\x33\x91\xff\xc3\x1a\x14\xb3\x39\xae\xb4\xc6\xc6\xd8\xd5\xae\x61\x19\x78\x1d\x81\x44\xab\xcc\x50\x3e\x86\x26\xd5\x71\x09\x31\x7f\x06\xae\x55\x94\x14\x59\x4f\x44\x1d\x71\xd6\xba\x78\x3a\xe0\x6a\x30\x06\x86\x6c\xc2\xba\x5c\xd7\x1a\x79\x34\x11\x9d\xa6\xc8\xd4\x22\x3b\xd7\xf2\x6d\x01\xdc\xa1\x73\xb5\x8c\x50\x69\xbd\x18\x08\xd4\xe4\x51\xdf\xd2\x0e\x4f\x24\xbb\x71\x79\xf6\xed\xad\xa2\x5d\xb6\x2a\xd8\xdb\xdc\x47\x91\xbb\xbc\x2a\xac\xb0\x38\xb3\xf1\x21\x73\x5c\x71\x8d\x42\xe2\x53\xa2\x58\x4d\xc6\x1d\x19\x3a\x8b\xc9\x92\xba\xb0\x59\xdd\x46\x65\x90\xb3\x05\x21\x1b\xe4\x9a\x3a\x3a\x9d\xfe\x49\xea\xd3\x40\xdd\xe7\x24\xe8\xf5\x8a\x49\x71\x93\xc3\x50\xa3\xf5\x7a\xca\x8a\xf6\xfb\xcf\x55\x7f\x56\xc3\x46\xd5\xe8\xd1\xbb\xc2\x3a\xbc\x46\xec\x8f\x42\x48\x4c\x96\xad\x66\xab\x04\x72\xe1\x1a\x64\x5b\xdc\x52\xbb\xa6\xec\xe3\x09\xe3\xb0\xcf\xc6\xbe\x08\x9d\x88\xb1\xf9\xd5\x2a\x75\xa6\x69\x38\x1e\xc4\xf2\xae\xe6\xfd\xf1\x15\x73\x8e\x42\xd7\xe9\xd4\xda\x4c\xf9\x5a\xd3\x71\x68\xc9\x52\x61\xb6\xa4\x37\x72\x38\xd0\x26\x92\xb5\x72\xa5\xc4\x6e\x37\x2b\x0a\xe9\xe2\x7b\x1e\xd2\x66\xb1\xcf\xe3\x34\x4a\xea\xe9\x4c\x24\x0e\xc1\xb8\xc8\x0b\xcd\x98\x37\x28\x82\x19\xb9\x22\x97\x9b\xcb\x47\xb8\x56\x50\x91\xd7\xbc\x8a\xbe\x71\x7b\x83\xac\xc3\x45\xaa\xa4\x1e\x6e\x90\x51\xf8\x7e\xe1\x2e\x86\x65\x03\xbf\x70\xa7\x3a\x15\x6f\x6b\xd9\xbb\xb0\xc6\x4e\xcd\xdb\xb4\xc6\x44\xda\x0d\xa4\x0e\x7f\xf0\x1d\x18\xa5\x3e\xc1\x97\xad\xf1\xe9\xd5\x4b\xbd\x6a\x69\x96\xa6\xed\xbd\x69\x83\xab\x6c\x6d\xf3\x96\x5b\x44\x07\xaf\x62\xad\x94\x81\xb2\xc4\x69\xb7\x87\x4d\x87\xe2\x20\x2a\xd8\xb4\x30\xed\x5c\x00\xf8\x1b\x16\x57\xb7\x32\x61\x05\xa9\xa7\x95\x1c\x6e\xf6\x8a\x87\x86\x4d\x9e\x54\xda\xba\x81\xf2\xc8\x9b\xa1\x12\xd0\xe5\x58\xc2\x50\x88\x5c\x02\x49\xaa\x2f\x71\xce\xd2\x89\xb6\x6b\x11\x92\xf7\xa6\xb4\x6a\xd4\x4c\x98\x5e\xd6\x0a\x9f\xbd\x10\x23\x06\x6f\xbe\xd1\xbf\xda\xf5\xda\x4b\x2d\x59\x4c\xaa\x34\xb0\xef\xba\x57\x20\x1e\x89\x3a\xea\x74\x23\x5d\xd9\x80\x5e\x28\x20\x28\x3f\x46\x75\x44\xe0\x75\xcd\x4b\x21\x09\xf5\xba\x57\x43\x7e\x67\x0e\x80\x96\x52\x21\xc9\x37\x30\x00\xb2\xc9\x27\x6a\xab\xad\x67\x2e\x69\xa8\x1b\xd4\xc0\x6c\xbc\x5e\x31\xc7\xf5\xdf\x58\xbe\x18\xbe\x51\xbb\xc3\xb7\x1b\xb4\xc9\x76\x22\xb0\x8a\x9e\x81\x1e\x7f\x2a\x20\xb4\x11\x82\x81\x0b\xcd\x2f\xaa\xa1\x46\xe1\x2b\xbb\x21\xd9\xe0\x04\xd6\x33\x19\x55\x86\x10\xb0\x3f\x2e\xe3\x28\x89\x7f\xd3\x53\x2b\xa1\xc4\x60\xa0\xd5\x39\x85\xeb\xf1\x84\x85\x86\x3c\x8e\x26\x67\x17\x51\x3e\x85\x7c\x32\x51\x19\x8f\xe3\x24\x2e\x91\x70\x47\x67\xb8\xb8\xb0\x4a\x7e\xa7\xd6\x58\x44\x69\x74\x6a\x2e\xad\xf4\x92\x6e\xb2\xb6\x70\x6e\xd3\xb0\x40\xa1\x65\xaf\xa1\x08\x9d\xc5\xaf\x88\x0b\xe2\xac\x7e\xeb\xe8\x4c\x73\x76\x75\x8d\x6c\x79\x7d\xb3\x1b\xc3\x49\xb2\x7b\x39\x52\x40\xf6\xf6\x5c\xef\xff\x1b\x27\xf6\xb3\xb3\xd9\x2e\xe3\x85\xce\x8b\xed\xee\xc0\x0b\x05\xf8\x69\x79\xff\xfe\xcc\xa4\x7e\x7e\x22\xbf\x4f\xc8\xdd\x47\x0b\x19\x7d\xb1\x8b\x29\xfb\x5c\x84\x9f\xed\xd1\x17\x0f\xaf\x4f\x7a\x0f\xbf\xb8\x4d\xac\xc4\x20\xee\x97\x8b\x76\x03\x91\x9d\x0d\xd5\x00\x4a\x82\x4e\x6c\xdd\x69\x9e\x66\x69\x51\xe6\xab\x49\x99\x19\xec\x4d\xb6\x51\xfc\x59\xfa\x05\xc8\x8a\xa6\x66\x9d\xb1\xd2\x36\xd9\x6e\x03\xbb\x1c\x61\x38\x69\xc8\xa8\x62\xa1\x6f\xbb\xbb\xaf\xae\xcd\xcd\xfc\xd4\x90\x41\x61\x30\x26\xf3\x77\xdb\x8b\x80\x33\xc9\x96\x6b\x16\x8c\xe6\x93\x9e\x2a\xa3\xfc\x54\x97\x3d\x95\xcd\x66\x85\x26\xa1\x4f\x91\x4f\x30\x95\x6d\xf0\x11\x1e\xba\x4a\x4c\xb3\x10\xbb\xda\xbf\x5d\xaa\x48\x8b\x77\xc3\x1d\x46\x7a\xdf\x55\x64\xd1\x19\xc6\xae\xc0\x28\xbc\x8e\x19\x83\xd2\x4a\xe2\xda\x8a\x93\x3b\xe1\x34\xd7\xeb\x86\x08\xe5\xe0\x0f\x78\x2e\x9f\x52\x7e\x0d\x7f\x87\x28\xad\x23\x75\xde\x13\x56\x09\xd2\x22\x41\x8e\xfb\x8d\x8d\x1f\x62\xa6\xc7\x4f\x1f\x3e\xe7\x22\xc6\x07\x2e\x48\x48\x3c\xe5\x8a\x44\xf1\xfd\xfb\xa2\xf3\x7d\xeb\xaa\x5c\xbb\x22\xca\xb3\x2a\x17\x45\x45\xb7\x5c\x97\x9b\x5a\xc3\xe2\x64\x78\x94\xea\x5c\x1b\x56\xf6\x29\x4b\xa8\x2c\x80\xf2\xd2\x87\x8f\xb5\x3f\x1f\xf9\x88\x39\x0b\x1d\x3b\x1d\x91\xc8\xb9\xae\x83\xdd\xae\x37\xf3\x0a\x68\x55\x4e\xcd\x75\xec\xc4\x64\xfd\x7e\xb0\x48\xdf\x64\x63\xe3\xa2\x41\x45\x21\x17\x0d\x05\x1d\x2f\xa6\x7f\xd3\xe4\x1a\xe1\xbe\x79\xb8\x8f\x19\x2a\x62\x78\x34\xf3\x77\xa7\xb8\xd5\x16\xab\x76\xdb\xed\xf2\x52\x6e\x45\xb8\xf9\xed\xb6\xba\xef\xa5\xd0\x6e\xcc\xb8\xad\x6c\x76\xf8\xa0\xc5\xf5\xed\x37\x30\x4b\x27\x91\x07\x36\x58\xd2\x49\x6f\xb7\x2a\x99\x72\xbc\xb3\xd3\xdd\x08\x2a\x92\xd0\x0b\x80\x6b\x73\x0e\x73\xf5\xcd\x37\x06\x37\xdc\xb8\x7f\xb1\xd3\xa8\xf0\x9e\x09\x7d\xaf\xc3\xd9\xb8\x55\x90\x5f\xbc\xa7\x62\x2b\xc7\x8d\xcd\x56\x56\xf2\x9d\x03\x53\xe8\x12\x81\x57\x09\x57\x6f\x93\xbd\x6d\x31\x7b\xbd\xdf\xba\x06\x27\x5e\xb3\x27\xf0\xb0\xdc\xbd\xab\x28\xd6\x1a\xa4\x00\x0c\xff\x1e\xa0\x6b\x20\xce\xdb\x7f\x26\x84\x93\x6b\x4d\x8b\x93\xda\x58\x8d\xe0\xd4\x3d\xfe\xa8\x0e\xbc\x41\x3a\xbf\x2b\x5c\xe0\xc8\xbb\x00\xd7\xdd\xfd\x0a\x45\x3e\x71\x6f\xf1\x00\xf2\x54\xde\x57\x6d\x30\x0b\xce\xc6\x1f\xf7\xd9\xe5\xd3\x10\x41\x15\x3a\x43\xa6\x03\xfe\xf2\x1f\xa0\x28\xfe\xfc\x48\xa2\xc3\xa1\xe1\x4b\x28\x1a\xb2\x9e\x82\x8a\x5a\x3d\x79\x7d\xd4\x03\x6e\x9b\x62\xaa\x1b\x4a\x0b\x5d\xae\xcc\x5f\x10\x9d\x78\x62\x2a\x49\xbb\x65\xa0\xe2\x1a\x62\xa5\xcb\x90\x9b\xe4\x41\x0d\x2e\x65\xcf\x04\xdd\x5e\x56\x93\x08\x80\xb9\x72\x4d\x9a\x18\x8f\x05\x92\xb1\xbd\xaa\xfd\xf9\x5c\x98\xed\xaf\x91\xa5\x6a\x59\xd7\xe5\x60\x82\x22\x10\x97\x2d\x94\xe8\xc0\x49\x0b\x02\x26\x58\x48\x75\x75\x0e\x91\x3b\x6b\x79\x28\x08\xd1\x56\x37\x39\x69\x61\xd4\x75\x63\xf8\x79\xd8\x17\x71\x09\x24\xe0\xcb\x77\xe8\xdc\x59\x95\xe0\x79\x26\xe7\x4e\xd6\x7a\x81\xf1\x6a\x1c\x03\xc5\x41\x6b\xc8\x62\x60\x16\x83\xc3\x19\xfa\xe4\xd9\xa8\x1d\xe0\x68\x96\x4f\x35\x39\xcb\x72\xd0\xa4\xb8\x54\xb9\xee\x9b\xb7\x1a\xa8\x57\x03\xfd\xa6\xe6\x24\x2a\xb4\x05\x10\x91\x69\x12\xd4\x8c\x71\x2a\x82\x81\xb4\x24\x03\xed\x9d\x79\x35\x61\x55\x3d\xf7\xe7\x42\xfc\x8b\xa0\xf3\x18\xcc\x23\xf2\x83\x09\x72\x6a\x02\x11\x79\x10\x92\xb8\x44\x85\xd8\x8d\xa8\x50\x17\x1a\x6c\x46\x1b\x18\x7b\x7f\x5e\xcd\x5c\xa9\x37\x2f\xcf\xef\x14\xa0\xe2\xea\x8a\x52\xe1\xd4\x8a\x72\x29\x29\x1a\xa8\xfe\xa5\xe8\xb6\x19\x06\x3e\x84\x40\x80\x9d\x7c\xd8\xc8\xbc\x53\xe2\x81\x5b\x9b\xb8\x59\x85\x94\x83\xf0\xe6\x5b\x40\xa2\xde\x8a\xf3\x83\xe0\x20\x2c\x2f\xdd\x71\xe2\xde\x3f\x00\x0a\x42\xa8\x52\x57\xb5\x26\x91\x5a\x7d\xc5\x4a\xf0\xb7\xc6\x6a\x95\x80\x2c\xd2\xa1\xed\x1f\x87\x9d\xca\xc0\xc1\xf9\x34\xcd\xaf\x52\xad\x61\xb9\x7e\xbd\x6a\xf8\x9a\xc6\x1e\x6b\x83\xd0\x84\xb2\x68\x01\x97\x9d\x42\x27\x33\x21\xa9\x34\x7f\xd6\x2a\x1e\xea\xb8\x41\x0c\xc8\x0b\xbb\x32\xe2\x1f\xbd\x96\x72\x50\x33\x72\x3f\x41\x7e\xd2\xfb\xbd\x51\x02\x60\x9e\xdf\xaf\x6e\xf3\xfc\x56\x66\x61\xdf\x58\xf4\x4f\x6e\x77\x07\x87\xe6\x07\xee\x42\xbe\xdf\x82\x61\xf1\xdb\xf6\x68\xef\xcb\xeb\x93\xde\xa3\x9d\xbf\xd2\xfe\xff\x95\x3c\xe1\xaf\xe4\x09\x7f\x25\x4f\xf8\xf7\x49\x9e\x70\x3b\xae\xe2\xb6\xf2\xc1\xa6\xa0\xdb\x71\x21\xdc\x1f\xad\x77\xb8\x0c\x72\x29\xa8\x1d\xcf\xbb\x51\xba\x66\x49\x77\x4b\xd0\x95\x5d\xc4\x10\x0e\xca\xd6\x01\x83\xc8\x3a\x67\x53\x6b\x26\x61\xe8\x4f\x70\x37\x1d\xe1\x4f\x70\x39\x75\xbf\xfb\xf6\x0f\x74\x3d\xa5\x3f\xc8\xfd\x94\xff\x42\x17\x54\x6e\x35\x29\xf6\xc4\xef\xfe\x9e\xe8\x0e\x5c\x50\x45\xef\xf2\xef\x3c\xba\x68\x8f\x7c\xdd\x8f\xa3\xa7\xc8\x67\x74\xd4\xa0\x1b\xba\xf6\x4d\x16\x3e\xa4\x59\xbe\x00\x05\x8d\x74\xef\x15\x8a\x72\xf8\x8b\x05\x2d\x14\x4d\xd4\x4a\x15\xf2\x18\xb9\x27\x92\x09\x98\x49\x58\xbd\x9b\xdb\x60\x41\xcc\x89\x8d\x0b\x8b\xfa\xae\x4c\x55\x07\x14\x55\x61\xd3\xc2\xa2\x7e\xa5\x8c\xb7\xb0\x32\x8e\x57\xec\x0d\x05\x5f\xfc\xd1\x20\x41\xf6\x6e\xd0\x0b\x9f\x69\xa5\x0f\xaa\xed\x77\xc1\x67\xee\x15\x12\x8c\x78\x65\x00\x5b\x61\x9f\x1a\xfd\x11\x6a\x4e\x96\x79\x4c\x38\x05\x2b\x6f\x54\xc8\x8a\xa3\xca\xc5\xd6\xd4\xe0\xe2\xd0\xe1\x6b\xd0\xad\xfa\x53\xdb\x41\x4d\x6f\x1e\x81\x7e\xed\x67\xc6\x53\xa8\x1b\x98\xcc\xb5\xfa\xa5\x72\x1d\x29\x85\x23\xe4\xf9\xc2\x20\xca\x74\xbd\xd2\x68\xa1\x41\x8b\x50\x64\x0b\x4d\x21\x4e\x56\xe6\xc5\x5f\x64\xe9\x99\x5e\xf7\x97\x10\x9d\x0d\xd3\xe1\x17\xab\xa5\x79\x5a\x54\x34\xc5\x87\x2d\x4a\x6c\x3f\x85\x8c\x95\xdf\x08\xb8\x68\x99\x00\x4b\x6e\x80\xef\x7d\xdf\x08\x0b\x2a\x87\xe1\x41\x3a\x55\x64\x73\x70\x70\xa0\x7c\xdc\x73\xc7\xfd\x09\x1d\x77\x6b\xb2\x75\x35\x3a\x7f\xc3\x34\xac\x55\x42\x3a\x31\x1d\xc2\x79\xa3\xa9\x39\x3a\x5e\x63\x08\xe3\x9c\x43\xd3\xdb\xcc\xf6\xf9\x2c\x9a\x50\x06\x93\xd9\x2c\x9e\xc4\x18\x18\xa6\x58\x26\x31\xc6\xd0\x8f\x54\xa1\x73\x24\x49\x20\xaf\x3d\x19\x15\x43\xa4\x67\xf1\x4d\xfd\x3f\x6f\x6d\x14\x68\x26\x97\xc0\x5c\x10\xfa\x00\x5e\x16\x72\x60\xf7\xc7\x6b\x74\xfb\x35\x04\x60\x34\x29\xb5\x21\x1c\x59\x7c\xe6\xcf\xf4\xc0\x9f\xb9\x48\xfa\xe0\x95\x77\x6a\xd2\xae\x4a\xc3\xb3\xba\x83\x73\xde\xba\x70\xc6\x63\x89\xca\xbd\x0e\x7c\xac\x1d\x22\x03\x94\x58\xa3\x16\x04\xbe\xbd\x13\xa6\xa5\xac\x4c\xe5\x6f\x87\xe9\x94\x3f\xa5\x63\x75\xa0\x3e\xe7\xbf\x84\x55\x65\x0d\x62\x2b\x31\x7c\x77\x92\x7c\x8f\x4e\xad\xe6\xe3\x73\xfa\xf3\x96\xfd\x05\x98\x43\xce\x1a\x3f\x35\x4c\x1b\x3f\x86\xf3\x7e\x50\x33\x4e\x80\x52\x9c\xd1\x9e\x3a\xa0\x94\x48\x3f\x62\x88\xad\xca\x18\xf8\x55\x8c\xe1\xf4\x1d\xd7\x32\xce\xeb\x4b\xcd\x71\x93\x45\xe1\xbb\xac\x84\xe8\x56\x7e\xe9\xd3\x39\x68\x1c\xea\xe4\xd4\x63\x64\xe7\x3c\xf8\xd9\x18\xdd\x66\xcc\xde\xe0\xe6\x96\x8f\x57\xb3\x4d\x9a\x03\x78\xcc\xf8\x47\xbc\x2f\x59\x6d\x5e\x81\xf5\xcf\x67\x91\x20\x1f\x2c\x0c\xe4\x64\xf3\x79\x68\xa2\x11\xa8\x28\x62\x6e\xcf\x1d\x4b\x5d\x49\xb0\x5b\x9e\x39\x4a\xec\x74\x87\x14\x85\x46\x7d\xad\xdc\xba\xec\x40\xb9\x7a\xac\x72\x75\xdf\xc1\x8a\x99\x60\x4f\xc5\x5d\x35\xaa\x96\x09\xf4\x03\xc2\x23\x33\x4b\x83\xe7\x9b\xb6\xd9\x5e\x8a\x2f\xe1\xdc\x0d\x36\x78\x03\xcd\x0b\x0c\x20\x35\xc9\x0c\x4c\x80\xed\x3a\xe3\x08\xe0\x20\xe8\x48\x1b\xfb\x75\x37\xf1\x4b\x84\x68\xc8\xcb\x55\x96\x7a\xb1\x44\x36\xcd\x76\x1c\x61\xa0\xac\x28\x81\x80\x4b\xef\xdf\x3d\xef\x7f\xe9\x06\x23\x07\x15\x83\xa8\x0a\x35\xcb\xb3\xc5\xcd\x23\x8b\xfb\xd9\x00\x3b\xfe\xd1\x7c\x7d\xe0\x6d\x3a\x9e\x8d\x29\x41\x7d\xb4\x84\xe4\x5e\x08\xee\x7d\xff\x98\x7b\x6a\xa7\xe7\x97\xd4\xe8\x08\xb8\xb3\x41\x99\xe1\x12\x7c\x2c\xe7\xf7\x01\xc3\x58\x1b\xb1\x3f\x30\x2b\xb1\xc4\xfd\xca\x5d\xee\xcb\x2d\xb0\x59\xac\x6d\xf8\x33\x0d\x36\x20\x18\x9c\x1d\xcf\xc7\x9c\x47\xcf\x66\x35\x89\xcb\x76\xa1\x9e\xbc\x7d\x7a\x74\xd4\x53\x11\x04\x41\xe4\x33\xeb\x19\xfe\x92\xc4\x07\x69\x19\xa7\x18\x99\x1b\x3e\x0d\xd4\xd1\x0c\xdf\x3d\x0c\x80\x65\xca\x30\x46\x6c\xa9\x27\x20\x9e\xe8\xef\x61\xa4\x65\xcc\xb8\x20\xbc\xc7\x0c\x50\xc1\xe4\xbe\x5b\x97\xba\x63\x1a\x0a\xbc\x60\xba\xf9\xfa\x40\xed\x5c\x7e\xf1\xdc\xde\xa0\x1d\x17\x38\x09\xbe\x7f\xf3\x8d\x7a\x88\x68\xe3\x72\xe7\x91\xad\xb5\x57\xad\xf5\x39\xd7\x3a\xb4\xb5\x1e\x54\x6b\x3d\xa0\x5a\xbb\xae\xd6\xe7\xe2\x1e\x72\xb5\x47\xdc\xd9\x9e\x7a\xac\xfa\xbb\x6a\xa4\xfa\x7b\x41\xa8\x39\x0e\x7e\xfc\x80\x20\x9e\x3c\x0d\x34\x66\x36\x60\xd0\xb7\x42\x76\x14\xa3\x98\xfd\x52\x51\x8a\xbc\xbd\xbd\x56\xee\x85\x57\xc1\x9d\x1a\x80\x34\xa1\x04\x50\x71\x41\xb9\x71\xc0\xce\x5e\x4f\x3d\x80\x53\xfb\xbc\x8b\x39\xb4\x41\xd5\x23\xef\xab\x99\x50\x78\x4b\x3b\xf1\x0c\x43\x8c\x4e\x30\x24\x6b\x94\xeb\x8d\x07\x77\x64\xe7\x49\x92\x3f\xc6\x68\x4c\xea\x7d\x54\x12\x24\x55\x1f\x4d\xc3\xcd\xa6\x7f\x54\x5f\x9b\x8a\xf6\x64\x2d\xdd\x40\xd8\x46\x00\xc6\x6a\x76\xfc\xf1\xc4\xd9\xad\x8e\xd5\x37\xc2\xf6\x94\x8b\x4c\x09\x88\x1b\x05\xae\x4e\xc7\x3c\xa2\xa3\xe5\xc6\x12\x53\xf7\xfb\x30\x0d\x90\xce\xa3\x4d\x6b\x7f\xcf\x9f\xd3\x9f\x3f\x9f\xbd\x7f\xdd\x7c\x64\xec\x5e\xea\x7f\xaf\x8b\x5d\xd2\xd5\xaa\x9d\xf1\x83\x1a\x35\x93\x9b\xb7\x9b\x1d\x5e\x81\xff\x36\x68\x20\x2a\x91\xa5\x58\x44\xe9\xba\x8a\x33\x30\x49\x54\xb4\x01\xb6\x55\x54\x08\xb0\x35\x95\x73\xad\xa2\xf3\x28\x4e\xc0\x00\x8f\x02\xdc\x14\x5a\x53\x94\xd7\xca\x10\x94\xaa\xff\x42\x53\x64\x80\x16\x46\x30\xef\x99\x92\x6d\x92\x65\x6c\xb3\xbd\x24\xcc\x77\x5a\x37\x4f\xcc\x3d\x5d\x68\x9d\xaa\x22\x53\xb3\x28\x07\x42\x1c\x42\x37\x72\xfe\x64\x9c\xb9\x10\x8f\xc8\xfb\xd4\xfe\x79\x35\x9b\xcd\xa6\x6d\x14\x95\x2e\x80\x93\x3a\xff\xb2\x5d\x50\x2b\x08\x7f\x43\x02\xd1\xb1\x9e\x47\xe7\x71\x46\xd7\xba\xba\x20\x4c\xd0\x0c\xe1\x26\x51\x08\x68\xb8\x19\x4d\x49\xfb\x59\x00\x6b\x88\x53\x0c\x7a\xad\x73\x4c\xa9\x41\x02\xc0\xc6\x33\x70\x93\xd5\x97\x71\x51\x7a\xf9\x1b\xc8\xef\x91\x92\x3a\x82\x27\x62\x91\x61\x3e\x63\x90\x54\x5e\x44\x6b\xb4\x3e\x2b\x12\x90\x64\x2e\x75\x3e\x33\xac\x01\x5a\xb6\x4d\x72\x1d\x15\x68\xe2\xa6\x23\x40\x7c\x48\x04\xc0\x3b\x92\x64\xd9\xb2\x0e\xa3\x1c\x5e\x96\x79\x64\xc0\xba\x90\x18\x65\xe9\x1e\x06\x00\xf7\x9d\x13\x75\x57\xed\x5c\x3e\xdd\xe9\x02\x6b\xb8\x73\xf9\xa5\x85\xee\x10\x82\x77\xbc\xeb\xc6\xe7\xe1\x99\x29\x7b\x2d\xbe\x51\xbb\x86\xc3\x14\x48\xeb\x1b\xb5\x2b\x2f\x13\x4c\x60\xb7\x79\x02\xd5\x29\xec\xfa\x74\xb8\x37\x09\xbe\x56\x75\x13\xd9\xab\x4c\x64\xcf\xbf\xc3\x30\x95\xbd\x4d\x53\xa9\x4e\x66\x6f\xbf\x22\x1a\xf1\xa6\xe3\x9c\xd0\x9c\x63\x75\x03\xbd\xb7\xe1\xfa\x36\x92\x7b\xc1\x99\x3f\x97\xb4\xba\x7d\x35\x96\x92\x14\xaf\xa5\x85\x2c\x6f\x20\xb1\xa1\x80\x1d\xd4\x8e\x12\xec\x30\x66\xcc\x43\x47\x28\x26\xb0\x6b\xf9\x8a\x4f\x23\x28\x97\xff\x2a\x9a\x71\xf9\xe9\x64\xa1\xc7\x1d\xa0\x0e\x81\xce\x34\x38\x46\x8f\x45\x00\xa4\x6b\x50\x03\x11\x2f\xa8\x95\xcc\x52\xbc\xcf\x4c\xfb\xdb\xb6\x3d\xf2\xad\xa4\x3f\xdb\x05\x93\x42\x79\x25\xaf\x0f\x66\x0b\x04\x09\x34\x68\x36\x42\x62\xc6\xc7\xfd\x3e\x00\xbd\x93\x7c\x14\xc3\x4f\x49\x3c\x6c\x1d\x9d\x22\x20\x23\x76\xd1\x0a\x03\x8e\x92\x29\xbe\xd5\xcc\x9d\x14\xc7\x31\x8c\xbb\xb5\xfc\x32\x8c\xb9\x6f\xbd\x33\xa6\x21\xe1\xd3\x29\xeb\xe0\x18\xfa\x6a\x3a\xda\x9d\x9e\xe9\x48\xb2\x82\xf5\x13\xe2\x6a\x78\xb0\xcf\xb3\x1c\xcf\xd1\x10\xf1\xf5\xcf\x92\xc1\xe4\x53\x73\x7a\x9c\x26\x0d\x12\x3b\xa6\x8e\x85\xf3\x84\x49\xc1\x8e\x1f\xa6\x53\xff\xb6\xe6\xb8\xd4\x00\x59\x3d\x96\x6e\x86\x50\x7f\x44\xac\x76\x0d\x07\x6f\x39\xdd\xfb\x1e\x36\x72\xf7\x13\x97\x66\x96\xb5\xfb\xe8\xfb\x43\xc3\xc7\x60\x1e\x30\xa0\x10\x0a\x55\x5e\x64\x04\x2b\x4b\x08\xef\x6b\x61\x70\xbc\x2a\x21\xc6\x1d\x79\x1b\x43\x06\xb0\x08\xc3\xde\xd5\x42\x1a\x43\x59\x4f\xfa\x15\x4f\x5c\xdc\x17\x24\xe1\x53\xc7\x1e\x0d\xe7\xf1\x29\xd0\x03\xc5\x2a\xcf\xb3\xd3\x08\x18\xa2\x14\x9d\x8b\xc9\x65\x3c\x70\x50\xe6\xb0\xd2\x60\xe9\xeb\x26\x2e\x78\x01\xd0\x6b\x62\x86\x35\x53\x11\x22\xaf\xb9\xc3\xc3\xf0\x88\xc9\xda\x3f\x16\x94\x93\x79\x37\x81\x5f\x08\x07\x83\x71\x57\xfd\x4d\xed\xf9\xbe\x5b\xe2\x04\x7d\xd0\xa2\x40\x9b\xb1\x14\xa1\x04\x6e\xed\xea\x40\xe5\x03\x33\xb3\xa7\xd9\x54\x3f\x29\x3b\xb9\xa0\xf3\x3d\xb3\x94\x09\x90\xa4\x97\xcf\xbe\xdc\x01\x4f\xca\x09\x72\x76\xcf\xbe\x7b\xfe\x5c\x3e\x55\xa1\xa8\x45\x3c\x55\x95\xeb\xf6\x79\xcd\x37\x73\x6b\x0c\x69\x00\x8b\x39\xf6\x56\xbe\x77\xd2\x54\x7f\xb7\xb6\xfe\xee\x49\xe5\x99\xcc\x5d\x96\xe5\xbe\x5b\xdd\x75\x8d\x69\x64\x93\xa0\x6d\xb7\x16\x71\xec\x55\x04\x6d\x0d\x6b\xc0\x39\x35\x61\x02\x3e\xae\x5e\xc0\x6f\x55\xf0\x02\x5c\x20\x88\x23\x83\xd1\x35\xad\x5b\x8e\x82\x98\x59\x53\x45\x11\xd0\xeb\x71\x47\x81\xf7\xa0\x45\x19\xbc\x24\xd2\x90\xf7\xce\x10\xe7\xf1\x62\x99\xac\x55\xa2\x4b\x75\xfe\x25\xe7\x59\x37\xf7\x22\x04\xdc\x7f\x06\x42\x91\xc6\xeb\xd3\x5b\x51\x13\x4a\x22\xa1\x86\xc7\x5a\xec\xb3\xc0\xcd\xd7\x21\xa6\xb2\xcb\x73\x92\xe0\xca\x13\x95\xaa\x03\x55\x73\x39\x1f\x58\x2e\x2e\x10\x87\xfa\xe7\x6d\xc3\xe5\xc6\x35\xcf\xfd\x81\x7a\xa0\xfa\x2a\xad\x05\xb6\xa0\xff\x5d\xcf\x42\xe9\x56\xf0\xe7\x89\x3e\x3f\xe5\xea\xdd\xfe\xda\x5d\x37\x81\xb9\x5b\x76\x00\xe5\x69\xb7\x6e\xe3\xff\xc9\x2f\x55\x13\x90\xd8\x59\xee\xf4\xe0\x24\xaa\x0f\x7e\xf8\xae\xbd\x8e\x0a\x26\x8f\xc0\x0c\x26\xcf\x56\xa7\x73\x4c\x49\x06\x3c\x26\xd2\xd8\x56\xd1\xa6\x3a\x7a\x70\x3a\x50\xa0\xa7\xec\x29\x54\x6c\xf6\xd4\x5c\x5f\x76\xdd\x0e\x08\x0d\x81\xdb\x83\xba\x4d\xf5\x55\x33\xfe\x36\x5a\x45\x42\x5d\x17\xb7\xdc\xc5\x5a\x3b\xe9\xeb\x93\xde\xa3\xdd\x3f\x66\x9e\x35\x18\xba\xb4\x15\x03\xb3\x81\xef\x70\xdb\x5a\xe4\x9c\xc6\x5f\xb7\x47\x8f\xf6\xcc\x70\x7b\xb7\x19\xce\x8d\xb3\x69\xe0\x24\x1e\x5b\xdf\x37\x1e\x66\xf0\x11\x0c\xb0\x85\xd6\x0d\xd3\xc0\x53\x81\xfb\xc2\x99\xa6\xea\xbe\xfd\xe8\xdc\x83\x1b\x86\x63\xfb\xbc\x60\x38\x9b\x5d\xa8\xa1\x19\xda\xc5\x06\x8d\x5c\x0e\x9d\xc6\x76\x25\x57\x09\x9a\x8a\xfd\x6e\x6e\xbc\x8c\x8a\x82\x60\x99\x9a\xd3\xd1\xd4\xce\x8c\xdd\x07\x9b\x7b\xd8\x1e\x3d\x7c\x10\xd6\x10\xdb\xbf\x3d\x7a\xf8\x79\xf8\x59\xce\x7f\x7b\xf4\xf0\x61\xf8\x5d\x6c\xe7\xf6\xe8\xe1\x23\x03\x27\x0f\xfe\x44\xb0\xb4\x3b\xdc\x04\x94\x9f\xff\xd1\xc1\x36\xc0\x46\xcd\x66\xd7\x2c\xf7\xe1\xad\x6c\x17\xef\x29\x5d\x24\x71\x5a\xf6\xa7\x71\x01\x00\x9a\x66\x53\x3d\x4c\x33\xe7\x45\x39\xed\x47\xcb\x58\xdd\x1b\xb6\xbc\x68\x62\x76\xa6\x6c\x52\xe4\x9b\x1d\x91\x7c\x89\x14\x41\x20\x55\x4b\xc0\x39\xb4\x8c\xcf\x29\xb3\xa0\xe1\x4c\xc8\x89\xfb\x4c\xaf\x51\x68\x95\x25\x53\x35\xce\xb3\x8b\x42\xe7\x85\xef\x9e\xf8\x3a\xcf\x96\x85\x42\xf7\xc4\x29\xc7\x3d\x34\x4d\x3a\x66\xdc\x33\xbd\x36\x64\x76\x91\x5b\xb3\x97\x69\x51\x1e\x9f\xe9\xb5\x79\x8b\x8a\x7c\x02\x3f\x49\xec\x61\x50\xbf\x88\x8f\x6e\x90\x9d\x54\x7e\x86\x7f\xa3\x32\xb4\xbe\xf4\x6d\x92\x5d\xd4\x79\xb6\xd8\x0d\x90\x79\xc9\xc8\x4c\x94\x83\xa0\xc7\x2c\x3f\xa9\xee\xa4\x72\x2b\xee\x70\x40\x31\x3e\xb2\x96\xe2\x9f\x03\xbb\xd9\x6f\xa3\x99\xa6\x9d\x96\x38\xde\x15\xab\x4e\x94\x9f\xba\x58\x30\xaf\xf2\x57\xe0\xbb\xd9\x53\x52\x02\xe2\xb9\xfa\xdc\xd0\x80\x75\x22\x66\x3d\x45\x19\x95\xf1\x44\x2d\x74\x39\xcf\xa6\xb4\x26\x9a\x8d\x5b\xc6\x77\xb4\x0c\x37\xa7\x6e\xab\xe5\xfe\xc0\x93\x90\xea\xc0\x5b\x4c\x58\x98\x92\x44\x39\xc5\xd9\x41\xb6\xaf\xed\x88\x9f\x9a\xb4\x00\x4f\xf2\x53\x30\x81\xc5\x60\xdc\x14\x68\x3b\x52\xdc\xd4\x27\x53\x6e\xbd\x1d\x62\x31\x08\x47\x72\x35\x45\xfc\x1b\xc4\xa5\x4c\x92\xba\x64\x00\xec\xe4\x1d\xff\xa6\xd1\x1e\xe6\xd3\x57\x51\xb7\x02\xba\xaf\x56\xb9\x0f\xb3\xe8\xd2\x98\x66\x2e\xa1\xd0\xac\x12\x75\xa5\x21\x55\x84\x88\xda\x07\xba\xdc\x4e\xb0\x30\xe9\x59\x50\x5b\xb7\xeb\xe4\x90\xb2\x96\xad\xb3\xd3\xad\xd0\x8a\x75\x5b\x4c\x57\x33\xdc\xe8\x7f\xfa\xc6\xfa\xa0\x81\xbb\xda\x38\x3d\x08\x31\xf7\xaf\x9a\x22\xa1\x61\x33\x87\x70\xb6\xe6\x0d\x61\xb2\x6d\x0f\xc8\xb6\x47\x7f\x19\xbb\xff\x65\xec\xfe\x97\xb1\xfb\x5f\xc6\xee\xff\x3e\xc6\xee\x15\xb2\x0a\xb9\xaf\x7d\x34\x52\x3f\x3c\xbc\x85\x57\x0f\x98\x97\x51\x6c\x11\x59\x9d\xcb\x80\xa0\xe6\x3f\x3a\x6f\x29\x9c\xd4\xe1\x61\x77\xbf\x45\x09\x1f\x05\x5f\x67\x5b\x33\xb9\xdf\x47\xfa\x7b\x18\x30\x8b\xd4\xb2\x8e\xeb\x0b\x5b\x06\xb4\x3d\xb5\xac\xb2\x7d\x61\x3b\x8f\xf1\xa3\x56\xb5\x7c\x5f\xd8\x30\xe4\xfc\xa8\x6d\x03\xe3\x17\xb6\xae\x61\xfd\x86\x43\xf5\x1d\x45\x09\x2a\xfa\x18\x26\x08\xa3\xd0\x1a\x56\x42\xed\x0c\x3e\x1f\x5c\xf2\x20\x96\x79\xb6\xe7\x08\xcd\xb3\x64\xda\x2f\xca\xb5\xcb\x93\x39\x50\xea\x65\x56\x6a\x17\xc9\x13\xd2\x61\x22\x89\x09\x18\x1c\x4d\xdf\x38\xc7\x3b\xab\xa9\xec\x83\x00\x11\x45\xc0\x5d\x35\x3b\xd7\x79\x1e\x4f\xa7\x10\x16\x09\xba\xb2\xc7\x09\x95\x06\x2d\xcf\x50\x56\x47\x0b\xf2\x60\x3c\x3c\x0c\x33\x7d\xd2\x1a\x1a\x73\x74\x76\xa6\x90\x62\xdd\x4b\xb6\x0a\x71\x29\xb3\x55\x3e\xd1\xd2\x8f\x5a\xc4\x05\x9b\x46\x65\x44\x49\xf4\x04\xfd\x65\x7a\xb2\x21\xc5\x7c\xcd\x30\x26\x83\x32\x04\x99\xad\xa4\xb9\x83\xbb\x77\x69\xb0\xc1\x32\x5a\x15\x9e\x7b\xa8\x2c\xef\xd4\xc8\xb8\x31\xb4\x28\x56\xca\xd2\x4e\xdb\xcc\xab\xdd\xa3\x09\x76\x2b\xb3\x86\xb0\xe0\x5e\x8c\x35\x6c\xca\xe0\x22\xa6\x92\xeb\x62\xb5\x10\x73\xf1\x8a\x3b\x5e\xb4\x38\x72\x13\xc4\x09\x40\x14\xf0\x1e\x0f\x66\xe3\x57\x92\xaa\xb2\xad\xd3\x69\x9b\xf6\x9a\x03\x8f\x72\xea\xcf\x1e\xf6\x82\x81\x27\x21\xf9\x85\x8b\xbd\x7e\x81\x01\x67\x87\x43\x3e\x16\x17\x42\x1d\x7b\xcc\x55\x7b\x92\x64\x85\x6e\x53\x1a\xd3\x81\x52\xaf\x0c\xac\x89\x2e\xb3\x74\xe2\x52\xf1\x40\xf9\x87\xb8\x78\x5b\x4e\xe3\x0c\x5d\xc4\x09\x02\xd4\xd5\x95\xcd\x24\xab\xd3\xa9\x4b\xe5\xe5\x12\xfe\xb9\xfd\x36\x83\x9b\xc5\xb2\xe8\xd9\xfb\x88\x13\x32\x9f\xe1\x97\x8b\xb8\x69\xc0\x6b\x1a\x4f\x5f\xa5\x87\xa9\xe7\xc6\x29\x8e\x0a\xa7\x2c\x40\x8b\xaa\xfb\xb1\x52\x44\x27\x36\x89\x90\x12\x6b\xa6\x11\xfd\xae\x61\x32\xff\x70\xe7\x82\xfa\x85\x71\x9a\x32\xfd\xca\x8f\x7e\xb0\x51\x4c\xc4\x90\xe8\xe8\x5c\xab\x69\x94\x9e\x42\x06\x15\x73\x29\x0b\x54\x7f\x96\x68\x2a\x93\x6b\xf4\x81\x87\xf0\xa3\x72\x67\x80\x98\x76\xe9\x41\x27\x89\x8e\xd2\xd5\xb2\x23\xd4\x62\x87\x87\x03\x8e\x8d\x0f\x61\x8e\x49\xc7\x4c\x2e\xaf\xdd\x30\x56\x22\x12\xeb\x3a\x07\x7f\x90\xf7\x29\x6a\x46\xa6\xec\xb4\x8e\x8e\xf8\x31\xa6\x06\x1e\x34\xde\x3c\x76\xa7\xa5\x09\xc2\x6c\xec\xad\xa8\x7e\xc4\xad\xc8\x35\xc4\x2c\xe6\x58\xcb\x00\xba\x36\xac\xbf\x8d\xa7\x6c\x76\x63\x3a\xd5\x53\x6f\x23\xec\xb2\x7d\xa0\xc4\x1e\xbf\xa7\x2e\xaa\x08\xc1\xc2\x47\xa5\x62\xdd\xc5\x6d\xec\xb6\x11\xee\xc3\x8a\xd5\x3b\xb0\xb1\xdb\x9a\x4d\x6c\x98\x6f\xed\x96\xde\x30\x5f\xda\xb3\xdb\xcd\xd8\x55\x6e\x9e\x44\xb5\x6e\x0d\x60\x54\x86\xae\x41\x11\xde\x60\x16\x6c\x9a\xbf\x52\x5c\xd2\x78\x69\x3e\x63\x7f\x16\xa8\x9e\x40\xc6\x9a\x59\x96\xab\x55\x1a\x5f\xf6\x93\xf8\x4c\xab\x55\x11\x9d\xea\x91\x7a\x02\x8f\x5f\xe7\xbb\x2e\xfe\xfb\xb4\xeb\x78\xce\x29\x64\x42\xb8\xae\xf8\x53\x87\x21\xde\x1a\x09\x9a\xed\xd1\xc3\x9a\xcf\xa1\xc4\xf8\x51\x4d\x1d\x4f\x66\xfc\x68\xaf\x5a\xc1\x97\x1a\x3f\x7a\x50\xad\xe1\x09\x52\x1f\x7d\x6e\xf8\xe2\x5b\x85\x8f\x13\x81\x7c\x31\x78\x5f\xf7\x77\x20\x3d\x9f\x26\xb1\x4e\x4b\x17\xa5\x3b\x90\xf0\xe6\xf8\x81\xc4\xa7\xb9\x2e\x96\x59\x5a\xd4\x68\x09\xf8\x0b\x55\xd4\x97\x25\x6a\x3f\x6d\x35\x28\xa0\xaf\x45\x19\x95\xab\xe2\x69\x36\xd5\x85\x2f\xa9\x8d\x93\x32\x4e\xfb\xf8\xb9\x3f\x31\xdf\xa9\xc5\x2a\xf7\x23\xc4\xe5\x49\xbb\x8b\x34\xf6\xbc\x2c\x97\x4e\xa1\xd1\x6a\x99\xbf\x07\xb9\x5d\x8e\x5b\x75\xb6\x2c\x0b\x0e\x1f\xb3\xe5\xe7\x5d\x2f\x7c\xf9\x51\x6b\x6b\x0b\x0b\xcd\xb0\x83\x65\x94\x17\x90\xde\xbe\xe8\xb6\xb6\x74\x52\x68\xf7\x19\x57\x49\xdf\x5a\x5b\x86\x33\x02\xf7\x24\x0a\x1c\xaf\x96\xd1\x29\xf0\xb3\x49\x16\x41\xb4\x9b\x3c\x5b\xe0\x7c\x33\x9c\x77\x01\xc1\xdc\x81\x32\x58\xea\x49\x3c\x5b\xa3\x87\x16\x10\x70\x93\x2c\x81\x1e\x81\x3c\x30\xb4\x48\x52\xa2\x49\x54\x07\xac\x46\xbb\xb6\x56\x3f\xd7\x09\x4a\xad\xcd\x6c\xd5\x8b\xec\x42\x9f\x6b\xb2\xe8\x57\x17\xf0\x02\x5d\x64\xf9\x99\x8a\x67\xd0\x1f\xcc\x8b\x9a\xaa\x58\xa6\x2b\xd1\x18\x7d\xdf\x5c\xa2\xf6\x2c\x4e\xf4\xa8\xdd\xda\x82\xf7\x1b\xbd\x81\x5e\x73\xa3\x03\x8a\xfe\x38\x48\xb2\x09\x08\x14\x06\xdc\xdf\xa0\xd0\x51\x3e\x99\x77\x86\x7f\x87\xd5\x3d\x1e\xfd\xc7\x10\x9f\xa0\xfe\xae\x7a\xac\xda\xa6\x70\xd4\x06\xe5\x5c\x0b\xbb\x5e\xba\x3e\xcd\x26\xda\x8e\x0c\x65\x12\x0c\x8b\x0d\xe6\x19\x9c\x2a\x54\x36\xbf\x21\x42\x12\x92\x31\x58\x40\xfd\x66\xb9\xad\x66\x7e\x53\x69\x04\x41\xc7\xb0\xd4\xfc\xbe\xba\x52\xed\x61\x9b\x4e\xce\xc6\x03\x37\xf8\xe4\xe8\xf5\xf9\x23\xf3\x14\xe5\xba\x28\x74\x81\xf0\x02\x63\xdf\xbd\x0b\x73\xb0\xd9\x5f\xdb\xa3\x36\x1a\x3f\xf6\x77\x0d\xdc\xd0\xfc\xda\xc7\x6d\x75\x1f\x27\x7b\x5f\xb5\x4f\x68\x88\x77\x90\x9e\x3d\x5a\xa3\x40\xcc\x3f\xb6\x77\x73\xcd\x8a\x05\x55\xcc\xb3\x55\x32\xe5\xa4\x1b\xa6\xb2\x21\x58\xcb\x0c\x1d\xfc\x96\xb9\x2e\x55\x5c\xaa\x49\x96\xe7\x7a\x52\x26\xeb\x41\x0b\xe0\x71\x80\x77\x04\xa7\xf9\x58\x75\xec\x5e\xde\x57\xed\xe1\x90\xe7\x83\xba\xd1\xae\xba\xaf\x3a\xb0\x49\x8f\x55\x7b\x04\xf1\xcf\xcc\x1f\xfc\xc9\x6c\x0e\x75\x4a\x2c\xcd\x01\xde\x1f\xfe\xd3\x6c\xdc\x7f\x1e\xbe\x83\x6c\xb7\xef\x97\x4b\xf6\x18\xa5\x36\x73\x1d\x4d\x31\x53\x89\xf7\xe7\xd5\x95\xfa\xfd\x1a\x77\xe2\x49\x52\x64\x94\xb5\x1c\xaa\x44\xab\x72\xde\xc3\x9f\x8b\x6c\xaa\x09\x3a\x72\xfd\x2b\x27\xd6\x90\x48\x8a\xef\x22\xc5\x84\x69\x6d\x6d\xe5\xfa\x57\x78\x45\x2c\x12\x82\x7b\xde\xda\xb2\x01\xc3\x7e\x35\xec\x11\x60\x86\x53\xed\x61\x05\xf3\xa7\x8f\x19\xdc\xc0\x12\x93\xb8\x3a\x2d\x18\x0d\x68\xce\xda\x01\x42\x7c\xea\xfd\x8d\x55\xc0\x24\x30\x4e\x4f\x7f\x30\x00\x77\x8a\xc8\x14\x27\x1e\x7e\xa2\x3e\x9f\x9c\xea\xb4\x0c\xc3\x8d\x5d\x8b\x6f\x9c\x12\xf8\x87\xe8\xf2\x6d\x36\x39\xd3\x80\x9d\x3e\xe7\x25\xc3\x6d\xe5\x3e\xcc\x76\xba\x86\x9d\x2e\x55\x7a\xfb\xee\xc9\xbb\xf7\x6f\x3f\x3c\x7d\xf5\xec\xf0\x2d\x65\xf3\x20\x0c\x4d\x15\x7e\x38\x7c\xf7\xe2\xd5\x33\xf3\xed\xb8\xb5\xd5\x7e\xfa\xe2\xf0\xe9\x7f\xbd\x7a\xff\xae\xdd\x33\x7f\xa0\x4c\x85\x7e\xbf\xfe\x1f\xf8\xf1\xec\xf0\xfb\xc3\x77\x87\xf0\xd3\x40\x8a\xf9\xf7\xc5\xe1\x93\x67\xf0\xe3\xfb\x57\x4f\xff\x0b\x7e\xfc\xd0\x7f\x7b\xf8\xe4\xcd\xd3\x17\xf8\xc7\xe1\x9b\xff\xc4\x06\x3f\xfc\xd7\x93\xa7\xef\x8e\xfe\xfb\xe8\xdd\xff\xd0\x9f\x4f\x5f\x7d\x8f\xbf\x5e\xfd\x37\xd6\x78\xf9\xea\xdd\xd1\x73\xfc\xfa\xea\xf5\xbb\xa3\x57\x2f\xdf\xc2\xef\xd7\x4f\xde\x51\x67\xaf\x5f\xbd\xc5\x41\x5f\xbf\x79\xf5\xfa\xf9\xd1\xcb\x67\xf6\x0f\x51\xe7\x3d\x0f\xf8\x9a\x56\xf2\xe6\xf0\xf5\xab\x37\xf8\x53\x4c\xec\xed\xfb\xef\xde\x3e\x7d\x73\xf4\x1d\xd6\x7d\xf7\xe6\xc9\x53\xfc\xf5\xfe\xa5\x5d\xc8\xfb\x97\xae\x52\xeb\xc4\x8f\xaf\xfb\x2f\x8b\xa5\xdb\x15\x7a\x58\x82\xe3\xed\xd1\xa3\xaf\x7a\xdb\xfe\x93\xbd\x3d\xfa\x62\xa7\xb7\x5d\xf7\xf8\x6e\x8f\xf6\x1e\xf5\xb6\x57\x79\xb2\x3d\xfa\xe2\x41\x6f\x1b\x5e\xbb\xed\xd1\x17\x10\x79\xe6\x56\x11\xe6\xea\x88\x0e\xd6\x0e\xce\x74\x39\x31\xe8\x38\x2e\x9e\x73\x3f\xf4\xae\xc0\x17\x10\x16\x54\xbf\xbd\xb1\x71\x91\x0c\x35\xd4\x6d\xd9\xee\x5c\xf8\x20\x92\xe0\x54\xdb\xfe\xe8\x55\x11\x6d\xa3\x71\x96\x97\x4f\xb3\xb4\xcc\x33\xc8\xe8\x58\xd7\xf8\x89\x5f\x47\xb4\x1e\x27\xd9\x58\x44\xd0\x65\x36\xb7\x55\xe6\x6b\x83\x50\xcc\x85\xfb\x2e\xc9\xc6\x9d\x63\x9b\xe0\x8a\x54\x1d\xbb\xdd\x13\x43\x52\x34\x76\x63\x78\xd1\xd6\xb5\x9a\x44\x18\x32\x01\xee\x3c\x0b\xb7\x2f\xe7\x80\xa6\x00\xc9\x94\x99\xd2\x97\xd1\x62\x99\xe8\xc1\x24\x5b\xc0\x0b\x73\x1e\x67\x49\x54\x52\x7a\x6a\xab\x1c\x38\xd7\xea\xe9\xdb\xd7\x6a\x92\xa5\xb3\xf8\x74\x95\xc3\xe3\x5d\x80\x14\xb6\xc8\x5c\x72\xc1\x7c\x95\xa6\x94\xbe\x2c\xb2\x6f\x12\x30\x68\xe4\x82\x5f\xa8\x5f\xe0\x88\x7e\xe9\x51\x6e\x50\x03\xeb\xa6\xc5\xa9\x2e\x7f\x7a\xf1\xa6\x03\x6e\x5f\xa4\xe9\x58\x2d\xb4\xf5\xdc\x87\x68\x7f\x3a\x2f\xa3\x38\x55\x33\x1d\x95\xab\x5c\x9b\xe7\x2d\xc9\x2e\x06\x40\xca\x5d\xce\xf3\x96\xc4\xcc\x3f\xbd\x78\x83\x81\x15\xcd\x93\xf1\x14\x62\x0b\x94\xb4\x74\x08\xc4\x8d\x4f\x80\xf9\xb3\xde\xb8\xde\xf4\x87\x75\xe8\x0c\x7f\xfa\xe1\xfb\x17\x65\xb9\x14\xa9\x09\xb7\xb6\x4c\x73\xc4\x8a\xb5\x95\x0c\x96\xdf\x42\xa9\xce\x4f\xcf\xb2\x45\x14\xa7\x8c\xda\x63\x61\xb3\xab\x3a\x31\x4a\xfc\x7a\xe4\xfe\x62\x7a\x5d\xb0\xd6\x01\xe8\x2f\xec\x66\x92\x67\x45\xa1\xa6\xd0\x51\xb7\xa7\x56\x85\x76\x84\xa2\x25\xa7\x5c\x76\x6d\xa8\x20\xce\x16\x3b\x79\x99\x95\x1a\xfd\x76\x21\xd3\x90\xa1\xf0\x6c\x42\x48\x88\x95\x17\xa5\x48\x66\x12\x80\x0c\x5a\x5b\x5b\x04\x8c\xb0\xde\x41\xb6\xd4\x69\x07\xd1\xb2\x5d\xb5\xbf\xb8\xc7\x86\x30\x32\xf4\x00\x10\x72\xa3\xe1\x50\x4c\x02\x08\x64\x02\x4b\x80\x4a\xea\x96\xe2\xbc\x9a\x8f\xad\x2d\xab\x37\x85\x19\xbf\xd5\xf9\x79\x3c\xd1\xb0\x11\x86\x14\x40\xc1\x08\x98\x44\xff\xf4\xe2\x4d\xcb\x6f\x7e\x6d\xdf\x55\x73\x80\xd2\x60\x00\xac\xa1\xdf\xad\x97\xfa\x2d\x41\x14\xd0\xf0\xf6\xd9\xc6\x4e\x2c\x10\xc2\xc9\xdf\xb9\x9c\xe7\x5d\x2f\xdc\x49\xcb\xee\x85\xd9\x0a\x46\x82\xa6\x57\x73\xe5\xd6\x4b\x0d\x04\x05\x8f\x1f\x54\x38\xe0\x2a\xc1\xb5\xdc\xf2\x46\x70\x56\xaf\x70\xff\x0a\xc3\xd5\x9d\x9a\x7b\x18\x15\x59\x0a\x36\x06\x51\x1e\xab\x2f\x06\x3b\x2a\xd7\x78\xa1\xbc\x37\x62\x20\x90\x04\x72\x26\x98\x56\xab\x0d\xee\x50\xb6\xf5\x2e\x58\xcd\x46\x39\x65\x9d\x3d\xd7\x6a\x16\x5f\x6a\x52\x6e\x8d\x57\xa7\x78\xa9\xcc\x07\xaf\xbf\x0d\x63\x81\x7e\xd7\xde\xa3\xb6\x6d\xff\x36\x89\x41\x3e\x1c\xf6\x55\x8b\xa1\x45\x05\x19\x2d\xd9\x74\xd1\x6d\x51\x86\x78\xc4\xfd\x86\xfb\xc0\x83\xd4\x53\x4a\x8b\x18\x99\xc6\x9c\x30\x91\x04\xa3\xb6\x8e\x2a\xb3\x6c\xa0\xde\x9e\xc5\x4b\xc6\x38\xe8\x2c\xe0\x03\x45\xa7\xdb\x53\x45\x0c\x99\x24\xd1\x12\x3e\x49\x0a\x0b\x14\x2e\x38\x85\x1c\xc9\xb2\x8f\xf4\x28\x5d\x5d\xa9\x4e\xcd\x5a\x2b\x23\xb5\x45\x27\xed\x6e\x97\x91\x73\x21\x2c\xec\x4b\x5d\x94\x85\x5a\xa5\x80\x28\xa3\x71\xb2\x36\xd4\xfd\x85\xba\x88\xf2\x14\xec\x29\xe3\x54\x3d\x9d\xe7\xd9\x42\x0f\xd4\x5b\x98\x34\xce\x40\x64\x44\x46\x07\x3d\x83\x09\xa6\x06\x47\x83\xa7\xb4\x70\x16\x80\xe4\xfd\x12\xfa\xd8\xca\x1f\x93\xf3\x21\x82\x86\x48\x94\x34\xa4\xdb\x82\x45\x51\xf0\x63\x79\xc7\xdf\x00\xc3\xe5\xd8\x73\xaf\x5d\xf9\xa2\x20\x81\x44\xbb\xeb\xfa\xcb\x7e\x03\x39\xbf\x9e\xfa\x9b\x5b\xdf\xb9\xbf\xb9\xad\xad\x9a\x31\xb2\xdf\xfa\xd4\x61\xdf\xdb\xe9\x1b\xc1\x88\x94\x2a\xfa\x87\x78\x81\x17\xf7\x96\xb0\x54\x05\x93\x4a\x4f\x75\xb0\xc2\xcd\xd4\x63\xef\x3e\x70\x67\x61\x1f\x86\x07\x43\x39\xbb\x23\x22\xce\xc7\xb0\x1f\xb5\xa4\xc7\x7f\x7f\x07\xdf\xba\x02\x13\xba\x4a\x22\x27\x07\x23\x21\xba\xe0\x98\x8d\xc3\x97\x56\x1b\xd4\xe4\x70\xad\x1a\x0e\xd5\x0b\x9d\x2c\xd5\xe9\xa4\xf5\xef\x44\xb3\x1a\xfa\xf2\x56\x21\x14\x05\x7d\x49\xe1\x18\x7b\x38\xb3\x1e\xd9\x70\xa1\x8c\x6b\x12\x2d\x23\xcc\x0b\xe2\x0b\xae\x5c\x39\x89\x99\x36\xeb\x61\x37\x88\xc0\x02\xf1\x97\xbd\x57\x4d\x6a\x4a\xaa\x57\x66\x3e\x6a\xb6\xd5\xcb\x2c\x84\x78\x53\xfd\x13\x18\x47\x98\x2a\x84\xd2\x2c\x64\x35\xc8\x17\x8d\xc5\x32\x33\xbf\x9e\x18\xf0\xcc\xa6\xda\xec\xa3\x9e\xe9\xfc\x3b\x88\x65\x05\x04\xca\x73\xa4\xc6\x49\x68\xe6\xb6\xcc\xdd\x66\xaf\x12\x03\x61\x1b\x3e\xb7\x2d\x25\x10\x34\xae\xc5\x15\x7e\x07\x4d\xd7\xbf\xb1\x4b\x42\x67\x41\x2f\x16\x51\x35\xb5\x93\xc8\xea\xee\x5d\x25\x37\xc0\xef\xea\x36\x93\xe0\x7b\xbc\xb1\xa3\x52\x5f\x96\xa3\xf3\x31\xf4\xd7\xf6\x68\x25\x59\xc3\x7c\x69\x51\x3a\x8d\x50\xaa\xb0\x21\x9f\x05\x48\x47\x98\x24\x82\x0b\x88\x8a\xdd\xd6\x56\xe1\x2b\xfd\xf1\xba\x9b\x1a\xdd\x56\x6b\x0b\x9c\x75\x3f\x90\x60\xd3\xfc\xc3\x45\xe3\x6c\x6a\xae\xcd\xf1\x09\x17\x38\xf1\x8e\x21\x7c\xcc\xfa\xad\x0c\xc7\x50\x86\x50\xa9\xd0\xe5\x0b\xa8\xd6\x69\x3f\x59\x95\xf3\x2c\x8f\x7f\x03\xda\xb6\xdd\x53\xed\xef\xa2\x22\x9e\x40\xb0\x2b\x60\x8d\x90\x17\x72\x5d\x54\xdd\x19\xba\xdd\xd6\x96\x30\xc4\xed\x48\xa9\x52\x77\x30\xcb\xf2\xc3\x68\x32\x17\xa8\x20\x8d\x16\x44\x96\x06\x73\x31\x1f\x7a\x9e\x50\xea\xd8\x14\x19\x2e\xec\xba\x6b\x45\x92\xee\xd4\xb0\x84\xc1\x9b\x39\x32\xb7\xe4\x85\xb9\x31\x80\x60\xc9\x38\xb9\x8f\x40\x0f\x8f\x42\x9b\xa8\xef\x77\xf1\x42\x67\xab\xb2\x0d\x6e\x76\x66\x7b\xef\xde\x55\x77\x24\xf8\x05\x8c\x65\x97\x89\x66\x52\x24\x1b\x16\x20\x9b\x19\x3a\x99\x05\x83\x63\x4d\xb3\xcc\xf5\x74\x60\xb8\x81\xc0\x29\x51\x4f\x0d\xc5\x2f\xa6\x4d\x74\xef\x96\x5c\x9b\x5d\x8d\x80\xe3\x60\x51\x58\x9d\xae\x0f\x5b\x56\xf2\xd4\x6c\x29\x86\xbf\x9e\xc7\xa7\x73\xb5\xcc\xe3\x2c\x37\x58\x76\xbc\x2a\x15\x86\xc3\xf3\xd3\x32\x19\xae\x10\x7b\x30\x2b\x8b\x26\x93\x55\x1e\x4d\xd6\x6c\x3c\xd5\x9e\x64\x69\xa9\xd3\xb2\x6f\xde\x8b\xb6\xc2\x23\x52\x51\xae\xd3\x76\x59\x9d\x3d\x2d\xaa\x79\xfa\x51\x92\x64\x17\xfd\x8b\x3c\x4b\x4f\xfb\x5e\xcf\x8d\xcb\x58\x64\xb9\x56\xf1\xc2\xdc\xa9\x28\x2d\x0d\xfd\x08\x49\x03\x0b\xc3\xbd\xa4\xa7\xcd\x73\xac\x4e\x4e\x1e\x70\xf8\xfc\x7b\x73\xbe\xe3\x26\xcd\x62\x6c\x01\x55\x28\xd5\x6b\xd7\x7c\xa2\xb3\x99\x45\x45\xe9\xd6\xf3\xbe\xd0\xbc\xed\xf1\x4c\x41\xfc\x24\xb7\xbe\x45\xb4\x06\x99\xf1\x6a\x59\x42\x32\x15\x45\xce\xa0\x72\x41\xb4\x1e\x88\xde\x02\x3e\x40\x4b\xad\xa7\x37\x00\x8e\x19\xbb\x12\xdc\xee\x88\x42\xf2\x20\x0d\x02\x96\xf3\x3c\x7f\xc3\x3e\x5e\x33\x2e\xc1\x05\x89\x07\xa8\xe9\xfd\xe1\x06\x70\xc1\xcc\x95\xb2\xfc\x22\x7d\xc9\x52\x91\x14\xcf\xcf\xcb\xb0\xc5\xc8\x2d\xa5\xf4\x76\x78\xdf\xaf\x85\x59\x95\x87\x5f\x39\xad\xa2\xc5\x94\xdd\x56\xcb\xab\x20\xf9\x1a\x46\x2e\x1e\x0e\x46\x44\xe3\x08\xb3\x0a\x2a\x86\xbc\xc9\xd9\x85\xce\x5f\x46\x0b\xc8\x1e\x1d\x2d\xb4\x1f\x7d\xd1\x69\x0c\x6c\xf4\x8d\x34\x2b\x95\x4d\x5b\x8a\x0e\xc6\x71\x69\x00\x14\x54\x98\x8e\xa7\x00\x3d\x13\x7b\x29\xa8\x68\x9c\xad\x4a\x55\x68\x8c\xff\xb7\x02\x9b\x5f\xe8\x9c\x50\xe0\x40\xbd\x83\xdc\xff\xf3\x2c\x35\x6f\xcb\x51\x7b\x81\xce\x99\x69\x19\xe7\xda\xf0\x2b\xab\x5c\xab\x79\x3c\xa5\x1b\x50\x68\xc1\xbc\x98\x9b\x7f\x9a\x65\xc0\x73\xa6\xa7\x30\x25\xec\xba\x2c\x97\x7d\x9a\x41\x3c\x5b\xab\x69\x3c\x55\x71\x09\xda\xae\x23\xa4\xc5\x0d\xf9\x8d\x98\x14\x67\xf4\x82\x26\xc3\x7a\x15\xbb\x39\x52\xbb\x82\xaf\x63\x2b\x78\x88\x8e\x6d\xdd\x13\x08\xe5\xbd\xb5\x65\x76\x73\x04\x7b\xda\x6b\x6d\x6d\xc1\x31\x8c\x58\x64\x04\x4f\x6a\xd3\x69\x9e\x36\x9e\xa6\x3d\xc6\x39\x7f\xc7\xa8\xe5\xf2\x1d\xf1\x0f\xf0\x84\xb4\x46\x50\xc1\xcd\x9e\x3a\x18\xd0\x74\x38\xa6\x8d\x81\xe4\x0d\x13\x43\x75\xfc\x4d\x73\xf3\x40\x6c\xaa\x21\xae\x82\xbf\x55\x75\xd3\xdc\x30\xac\xbd\x32\x95\x5c\x27\x95\xf1\x70\xb5\x38\x9a\x0d\x30\x2f\x0e\x0d\x1a\x10\x79\xe1\x68\x8d\x96\xdc\xd4\xe2\x15\x24\x4e\xf1\x66\x8c\xdf\x89\x06\x41\xf9\x90\x43\xf5\xa8\x8c\x02\xa9\xc5\x7f\x1e\xbe\x83\xf0\x9c\x95\x0f\xa0\x74\x40\x2c\xd0\x4c\xf7\x91\x10\x8b\x86\xf1\xa8\x72\x76\xc5\xa1\x34\x3d\x8e\x26\xea\xa2\x18\xac\x8e\x08\x0c\x44\xb9\x7e\xef\x42\xd4\x08\x62\x61\xd7\xe3\x60\x11\x2d\x3b\x5e\xc0\x39\x37\x35\xcb\xdb\x79\x73\xa3\x2a\xa6\xc2\x75\xb7\x47\x35\xcd\xc9\x8d\x18\xf0\xcc\x9e\x1e\xfb\x8f\xd6\x09\x6a\xe2\xba\x08\x82\x18\xe1\x0f\x7b\x70\x0b\x82\x9e\x90\x21\x86\xc8\x0b\x14\x0c\x54\x2c\xa3\x71\x5b\x1c\xfd\xd6\x25\x51\x20\xea\xfc\x26\xb9\x8e\x4a\xad\x66\x49\x54\x96\x3a\xd5\x53\xb0\xfe\x31\x4f\xbf\x77\xd2\xf4\xc7\xf7\x31\x90\xb9\x86\xe8\x94\x94\x9f\x5b\x53\x1d\xdd\x77\xa6\xd7\x2f\x2d\xe9\x07\x9e\xce\x88\x5c\xc5\x4e\x50\x95\x13\x48\xad\x43\xb5\x88\x4f\xae\xad\x46\xb7\x14\x40\x07\x36\x7e\x10\x17\xf0\x2f\x71\xdd\x74\x3a\xf0\x47\xcd\x8c\xce\xf9\xf4\xc4\xb2\x20\x9b\x5b\xe7\x98\x9e\x88\x93\x6e\xed\xd6\x37\xd6\x37\x03\x9d\xf0\xc6\x76\xbd\x5b\xe7\x88\x03\xa4\x42\xdd\x3e\x14\xf1\x29\x64\x25\x66\xf9\xac\x29\xab\x3e\xa4\xd5\x0b\x12\x50\xa6\xbc\xd6\x1c\x7d\x27\x58\x57\x02\x6a\x0d\xbf\x2a\x1c\xfd\x96\x1d\xd6\x55\x1f\x60\x19\x7c\x75\xef\xf9\x93\x8a\xfe\xc5\xb5\x68\x99\xba\x66\x62\x9b\xe8\x69\xb8\xf5\xfe\x77\x8c\x48\xc4\xfb\x5f\x43\x3c\xd0\x1d\x2c\x34\xb7\xe8\x84\x54\x03\xb7\x43\x13\xa4\x60\xf8\x2e\x56\x70\xdb\x5f\xb7\x12\xaa\xb4\x61\xad\xb8\xc9\xb8\x5f\x5b\xd7\xbd\xba\x95\x20\x84\xc0\x91\xb7\xb6\xb6\xa4\x8e\xac\xe3\x10\xe9\x60\x95\x27\x84\x00\x10\xfb\x8d\x04\x96\x25\x84\xd8\x13\x90\x35\x92\x37\xad\xc7\xf7\x7a\x84\x98\xf6\xea\xca\x69\x53\xe0\x9b\x01\xad\x91\xa1\x7d\xf3\xa2\x0d\x05\x93\x5c\x4f\x35\xb8\x40\x14\x23\x9c\xf3\x45\x5c\xce\x9f\xba\x52\xf5\x58\xb5\xc9\x8b\x02\xf4\x08\x45\xb4\xd0\xfd\x2c\x8f\x4f\xe3\x14\x7b\x40\x40\x18\x29\x0b\x10\xd7\xdd\x41\x39\xd7\xa9\x38\x05\x96\x5a\xd0\x69\x88\x4d\x7c\x23\x85\x30\xf8\xd3\xd5\x98\x64\x69\xaa\x27\xb8\xa7\xd7\x92\x16\x44\xf9\x3b\xf5\x46\xfb\x08\xf9\xeb\x18\x00\x42\x28\xe9\x32\xec\xdd\xa9\x79\xd7\x3c\xe0\x60\x1b\x3d\x1a\xa2\x85\x57\x5a\xdc\x68\xa7\x9f\xc0\xae\x6e\xa3\x76\xaa\xea\x6c\xaa\x47\xaa\x42\x10\x80\x68\xeb\x4e\x41\x63\x73\xfd\x6c\x19\x2a\x1e\x44\x64\x2e\xad\x4f\x15\xe0\x1b\xb2\xa6\x58\x1c\x65\x5f\x73\x04\x46\xd0\xcb\xa5\x6d\x20\x2f\x95\xa7\x29\xc9\x52\xb3\x17\x86\x23\xf5\x5c\x66\xed\x55\x76\x55\xe1\x22\x5f\xce\x71\x90\x1a\x95\x8c\x43\x6e\x03\x08\x63\x0d\x26\x37\xc7\x3b\x27\x2d\xee\x2c\x80\xbc\x4a\x7f\x21\x64\x1e\xa8\x3b\x77\xea\x40\x96\x3b\x0c\xb1\x29\xc8\x62\x0c\x96\x69\x87\x9c\x5c\x65\xa8\xb0\x42\x07\x1a\x0f\x97\x49\x14\xa7\xfb\xe0\x37\x56\xe8\xf2\xe0\xb2\xbf\x2a\x74\xde\x67\x35\x4b\xb7\xd5\xda\x8c\xe1\x9c\x8a\x6d\x50\x12\x72\x3b\xa8\x43\x14\x76\x16\xa9\xab\xb6\xf1\x88\xeb\x50\x9a\x45\x34\xf2\x09\xaa\xbe\x6c\x44\xd6\xba\x99\x15\x9a\xe9\x47\x12\xb6\x60\x8d\xe3\x9d\x93\x1e\xa1\x9a\xe3\xdd\x13\xba\x18\x96\x23\x13\xc2\x54\x7a\x82\x70\xfe\x20\xa6\x84\x5c\xdb\x93\x39\xa8\xce\x6a\x16\xc2\x01\xbe\x11\x64\x58\xac\xc9\xab\x84\x50\xd9\x24\x00\x1d\x7c\xff\xea\xc9\xb3\xa3\x97\xff\x39\xaa\x7e\x79\xf6\xea\xe5\xe1\x48\xa0\xfa\x0f\x59\xfa\xd3\x8b\x37\xaf\xf3\xec\x34\xd7\x45\x41\x68\x79\x0b\x42\x63\xbb\xcd\xd9\xaa\xda\x8b\x09\x31\x42\xaa\x9e\xc7\xb9\x9e\x65\x97\xac\x86\x92\x30\x6d\x58\xa6\x57\x2f\xbf\xff\x1f\xc5\xa1\xf8\xa1\x2f\x73\xce\xe9\x92\x06\xc5\x5c\x78\x50\x54\xd9\x06\xf0\x5a\xf1\x17\xac\x0e\xd4\x83\x06\xc0\x6d\xd4\x9f\x08\xac\x62\x87\x6d\x86\x95\xba\x3d\xb1\x50\x82\x9d\xa0\xe5\x78\x4d\x0f\x0d\x3c\x81\xc0\x23\x75\x28\x47\x08\x12\x7e\x7a\xf1\x46\x91\x31\x7b\x97\xc7\xf4\xf0\x62\xa1\xd3\x69\x07\x08\xcf\xff\x15\xa4\x87\xfc\xe3\xf0\xde\xbd\x96\xba\xc7\x21\x77\xe3\x19\x9c\x09\x5a\xce\x60\xc0\x61\x72\x32\x89\xd2\x29\xc4\x08\xfd\x4d\xe7\x59\x4f\xc5\xe9\x34\x9e\x44\xc0\x86\xa7\x19\xae\x6a\x60\xba\x39\x3c\x07\x5f\x00\xf0\x6c\x82\x00\x98\x4b\x3d\x51\x45\xb4\x2e\x0c\x7b\xef\x64\x7e\xce\xda\x20\x06\xe4\xca\x00\xf0\xa0\x67\x3a\x89\x26\x66\x99\x00\x81\x25\xda\xf9\x43\x4e\x00\x7d\x39\xd1\xe4\x83\x92\xaa\xa3\xc3\x2f\x5b\xea\xde\x50\x44\x59\x81\x29\x43\xd8\x54\xb8\x48\xb0\x23\xbc\xbd\xce\x52\x57\x1d\x88\x05\x3a\x4e\xb6\x43\x5f\x0d\xa5\x05\xea\xa4\xbb\x77\x95\x28\xda\xe9\x06\x6a\x72\xd7\x92\x65\x77\x37\xf0\x9e\x02\xec\x6e\xcb\x80\xde\x11\x4b\xea\xd8\xa7\xb6\x6b\x48\x9a\x66\xde\xb4\x25\x1f\x79\x4b\x75\xb4\xaa\x04\x45\x2b\xc0\x5b\xd5\xbb\xb1\x69\x41\xd4\xcf\x1f\xe7\xa5\xc3\x69\x10\x25\x11\xe8\x80\xdc\xf2\x99\x4a\xf0\x68\xa7\x9e\x78\x59\xbd\x0a\x4c\xfa\x04\x4b\x95\xde\x1d\x56\x33\x67\xef\x59\xe3\x1d\xba\xb6\xbb\xc6\x6f\x8e\xb5\xd1\x0c\xf7\x7b\xd3\xde\x55\x63\xf9\x03\x66\x73\x4e\xfd\x9e\x01\xa7\xbf\x99\x82\xc3\x06\x5e\x0a\x9d\xd1\x5a\x5b\x93\xf1\xe6\x03\x03\xd2\x3c\x34\xe1\xac\x4d\xf5\x7f\xc3\x79\x6e\x05\x47\x69\x45\xa8\xb7\x24\x42\x1d\x34\x54\x81\xd3\x81\x62\xb5\x7b\xd7\x8e\x88\x14\xfb\x87\x63\x3b\xac\xfc\x62\x33\x17\x73\x0b\x0e\x66\xc3\x4e\xa2\x2f\x80\xdb\x25\x4c\x07\x7c\xe3\xd1\x49\x33\x7d\x10\x59\x87\xae\x57\x06\xf2\x26\x63\x75\x00\x5f\x5b\x5b\x5b\x58\x49\x64\xba\x81\x07\x23\xd4\x7b\x79\xf3\x72\x5a\xb0\x9e\xaa\x99\xd6\xa6\x55\xcd\x92\x55\x31\x7f\x61\xb5\x61\x81\x75\xee\x06\x89\xf1\xbb\x7a\xf2\x6c\x63\x9b\x97\xd9\x33\x9d\x44\x15\x60\xdb\xd8\x06\x6d\x81\xff\x4b\xeb\xe5\x93\x24\x3e\xaf\x50\x51\x64\x4d\x18\x9d\xe9\xd4\xf9\x26\x8c\x86\xc3\x8b\x8b\x8b\xc1\xc5\x83\x41\x96\x9f\x0e\xdf\xbd\x19\xfa\x8c\xc9\xf0\xb3\x72\xae\xfb\x85\x2e\x89\x76\x44\xd2\xee\x6f\x7b\x5f\xfe\x6d\xef\xab\x3e\xf2\x24\xe8\xb0\x21\xa5\xba\x64\x34\x6c\x9e\xa8\x65\xd9\x27\x32\x18\xec\x66\xa9\x88\xb7\xdc\x96\x15\x45\x9f\x44\x00\x7d\x1a\xa8\x4f\xf4\xe8\xa6\x2a\x38\x3e\xd4\x20\x5c\x0b\x2a\x47\xfc\x13\x04\x60\x18\x0f\x85\x8a\xb2\xb3\x58\x8b\x9f\x7b\xf0\x7b\x1a\x95\x58\x38\x4d\x71\x8a\x18\xc4\x1b\x7e\xce\xb3\x02\x7f\x9c\x69\xbd\xec\x47\x66\x4f\xe1\x4f\xc7\xd7\xb6\x41\x7b\xa1\x73\xf8\x4d\x1d\x95\x79\x14\x27\x5c\x04\xfe\x3d\x3a\xf7\x57\xbc\x5a\x9e\xe6\xd1\x14\x6b\x9f\xc7\x51\xbb\x75\x12\x98\x63\x58\xbb\x80\x0f\x44\xce\xb4\xbb\xff\x3a\x13\x0d\x3b\x1b\x0e\xcf\xc1\xd9\xda\xd8\xde\xd8\x89\x90\xb6\x47\x8f\xbe\xec\x6d\x0f\x02\x53\x63\x5e\xc4\xf6\xe8\xf3\x47\x3d\x11\xe3\xe3\x06\x07\x2c\xf4\x98\xf2\x2d\x23\xb6\x47\x5f\xec\x5d\x9f\xf4\xbe\xb8\x55\x1e\xcc\x7f\x81\xb5\xc8\x6d\x0c\x41\x02\x5b\x0d\xb6\x08\x12\xa6\x1a\xa8\xd6\x78\xff\xf2\xed\xe1\xcb\x77\x23\xb5\xd3\x6b\x6d\xbd\x7a\x7d\xf8\xf2\xf0\xd9\x48\xed\xf6\x5a\x5b\x2f\x0e\x9f\x3c\x3b\x7c\xf3\xf6\xc3\x9b\xc3\xa7\x87\x47\xff\x6d\x4a\xf7\x7a\xad\x2d\xe6\x79\x0c\x79\xb8\x05\x6c\x8e\xfa\x9c\xad\x09\xaa\x76\x24\x3c\x68\xf5\x8b\xdb\x33\x20\x24\x72\x4b\x3d\x20\xdd\x20\xde\xa9\x4d\x36\x07\x6c\xb6\x5d\x67\x73\x40\x3a\x40\x70\xfc\xc0\x22\xdf\xc2\x00\x8a\xf2\xe8\x42\x20\x13\xb6\x45\xa0\xab\x15\xd6\x7c\xe7\x8a\x8f\x4f\x50\xfa\xfc\x3c\x3a\xd3\xa4\xc0\x15\xce\xd3\xa8\x44\x03\x57\xfd\xcc\xb0\x6a\xe8\x62\x3d\x8b\x73\x5d\x08\xb5\x22\xfa\x35\x86\x7c\x03\x19\x62\x33\x5f\x01\x0a\x3a\xcb\x13\x96\x19\xeb\xe5\x70\x50\x76\xa3\x23\xc3\x0d\x44\xb7\x93\x88\xa2\xd2\x1b\xe2\x7c\x16\xa7\x86\xc2\x49\xb2\x6c\xd9\xba\x0d\xd7\x22\x48\x2a\x5c\x91\x15\x3a\xb1\x54\xb8\x5e\x1e\x7c\x83\x14\x8d\x6b\xb0\xc3\x1d\x11\x17\xab\x3c\xb1\xe6\x14\xd6\x35\x44\x56\xb0\xbc\x81\xa8\x53\x63\xa6\x84\x1f\xde\xe9\xcb\xb2\xb5\xb5\x05\x04\x2d\x7d\x60\x65\x64\x93\xa4\xa1\xa7\xce\xf4\xba\xeb\x56\xce\x0a\xad\x33\xbd\x0e\xf4\x59\x56\x92\x6f\xeb\x3a\xd8\x41\xfa\xef\x4c\xaf\x59\x26\xe1\x04\x12\x81\xec\xdb\x77\x27\x10\xa2\xef\x0b\x17\x32\xc3\xd0\xdc\xbe\x4f\x41\x07\x19\x4a\x20\x56\x47\x21\xad\x6a\x85\xca\x36\xb7\xdb\x85\x7a\x9d\x67\x8b\xb8\xd0\xbe\xd0\x33\x4b\xce\xb5\xb9\x69\x1f\xf5\xa4\xb4\x8d\x6a\x59\x02\xfb\x71\x0b\x6b\xb3\xc0\xc2\xe9\xa5\xb0\x09\x2c\x5b\x58\xdb\xe0\x7c\xba\x5e\x7b\x18\x36\xec\xc0\x7e\xb7\xc4\xe6\x6a\x61\xcd\x4a\xa8\x0d\xb7\xc0\x7f\xaf\x59\x94\x8d\xc2\x16\x03\x9a\xa3\x1a\xc9\x42\x2d\xe9\x1b\x48\x5e\x37\xc9\x5e\x69\x46\xb8\xb0\x55\x92\x78\xa3\x02\x45\x3a\xaa\xe6\x3b\xbf\x5d\x9f\xf5\x92\x00\x5c\x1f\xc2\x8a\x93\x40\x38\x00\x46\xf6\x22\x5e\xea\x77\x59\xc7\x06\xc6\x18\xa0\x91\x7c\xfd\x44\xfe\x9c\x1d\x68\x9a\x6d\x28\x66\xf1\x0d\xd6\xd5\x70\xa8\x70\xb2\x1c\xb4\x24\x06\x3f\x02\x7a\xf1\x07\x24\xd6\x9d\xc5\xe9\x54\x45\x6a\xac\xcb\x52\xe7\x90\x73\xa3\xcc\xd8\x75\x03\x4c\x9b\x09\xcb\xb3\x50\x6c\x46\xd9\xf6\x41\x26\x06\x21\x0e\x02\xb7\x9c\x2c\xe7\x61\xd1\xac\xc7\x09\x35\x48\xe0\x90\xb3\x8a\xdb\xdf\xd8\x53\x5d\xbe\x41\xb1\xa2\x59\x97\xdd\x4f\x53\xdb\xc2\x14\x36\x85\x77\xb3\x53\xa7\x4b\x58\x25\xf6\x36\x35\x8a\xa5\xc4\x86\x6d\x61\x1e\x4d\xd3\x6c\x30\xcd\x52\xfd\x69\xe7\x56\x07\x9d\xb2\xf3\xeb\x56\x50\xcb\x5d\x4e\x1a\x93\x14\x8c\x74\x8c\xd1\x94\x04\x6f\x1b\x61\xea\x36\x53\xdb\x00\x51\x37\x09\xc2\xae\x5b\x6e\x2a\x02\x41\x48\x8d\xc6\xe5\x3c\xb7\x25\xcb\xcc\xbc\xc0\x3b\xc1\x9b\x22\xc5\xa1\xef\xdf\x7c\x5f\xfb\xac\x78\xd2\xa6\xda\x17\xc5\xd5\xa0\xc7\x44\x28\x8f\xe9\xf3\xa9\x2e\x9f\x24\x09\x3f\x72\xf4\x02\x74\xba\xa4\x45\x18\xfe\x9c\x3f\xfe\x39\x1d\x76\x9d\xa4\xfb\x26\x29\xb7\x19\x01\xd2\xe8\x00\x41\x46\x66\x1c\x50\xd0\x19\xfe\xbd\x73\xfc\xf7\xd1\xc9\xfd\xee\xe8\xe7\xe2\x5e\x67\x70\xaf\x3b\xb4\xaa\x23\x6a\xc1\x27\xc4\xc1\x40\x0f\xb8\xab\xe3\xdd\x93\xd0\xf0\x87\x5a\x42\x35\xf0\x4b\xd7\x65\x9f\xb8\x15\x0f\x8b\x85\x0f\xe1\x49\x98\x66\xf0\x77\x89\x28\xfc\x8a\x40\x43\x09\xb4\x5d\xa9\x82\x60\xc9\x93\xdc\x3b\x21\xb4\xa2\x7c\x79\x81\xd7\x69\x25\x5a\x63\xc3\xe0\xf7\x0f\x54\xbb\x07\x06\xa0\xae\xfb\x56\xf5\xd1\xa9\x9b\x75\xd8\xc0\xdd\xa2\xf0\x91\x77\xdb\xdb\x53\xc1\x2a\xae\x03\x2d\x04\x31\xa4\xea\x40\xb5\x03\xd5\x0c\xd1\x05\x9b\xac\xf9\x24\x70\x38\x1f\x81\x60\x4a\xc7\x6d\xf3\x8d\xcc\x2f\x2c\x64\xf8\x3d\xa0\x62\x1d\xa7\xf2\x43\x84\x2f\x2c\x57\x61\x30\xdb\xff\xb9\xb8\xc7\x5a\xa4\xce\xf1\xdf\xf7\x4f\xba\x9d\xfd\xab\xff\x20\x68\x43\x12\x46\x74\xe0\x1f\x81\x58\xa6\xac\x54\x0f\x7f\xd7\xbc\x4f\x12\x5d\x50\x33\xa1\xfc\x94\x5b\x87\xc9\x9a\x15\x78\xab\x14\xa5\x3a\x5d\xe9\xa2\x10\x22\x73\x6b\x6a\x17\xb0\x18\xd6\xd8\x8e\x59\x84\x6e\xab\x15\x54\x91\x72\x40\xc0\xf8\xb7\x10\xa0\x92\xa9\xbe\xa1\x4f\xac\x0e\x51\x50\x2f\x2d\xc6\xee\xa6\x82\x24\x8c\x7d\x0a\x87\x94\x52\x82\x38\x82\xb5\x6c\x98\xdf\x27\x0b\xad\x6b\x14\xc3\x6e\xfa\xbe\x72\x8c\x35\x5e\x8e\x6d\x22\x09\x18\xa4\x85\xf5\x8c\xca\x47\x8a\x1c\xd0\x8e\x0e\xbf\xe2\x53\x0c\xf4\x46\xe6\xb6\x4a\x35\x18\x1e\xab\x55\x75\x39\x12\x87\xed\x10\x67\x51\x9c\x14\xac\x46\x90\xb4\x8f\xaf\xc8\x26\x6f\x95\x8e\xc4\xf3\xdf\x91\x61\x10\x7e\xe9\x56\xe9\x91\x96\x7b\x6f\xb1\x4b\xd6\x29\x78\x3a\x9a\x9a\x97\x12\xa5\xa1\xc1\xdc\xa1\x3b\x60\xfa\x92\xa4\xb0\x41\xed\x71\xe6\x5b\xde\x86\xb5\x47\x76\xad\x8a\xd7\x09\xf6\x89\x66\xb1\x48\xc1\xf8\xaa\x36\xec\xe5\xab\x81\x7a\x8b\x87\x01\x4c\x56\x94\x4e\x5d\x82\x15\xaf\xfe\xe7\xe1\x46\x79\x0a\x6e\x7c\xb9\x2a\x4a\x92\x2d\x9f\x31\x0e\xdd\x05\x2a\x2b\x95\x1b\xe7\x12\x76\xd9\x37\x58\xe2\x97\x54\x5f\x3c\x43\x19\xa9\x63\xc9\x56\xe3\xa2\xcc\x3b\xae\x7a\x40\x21\xd9\x2b\x7e\x50\xc5\x8f\x16\xc3\x78\xa1\xb7\xc5\x09\xd1\x78\x9c\x20\x0a\x2b\xdb\xa8\xd8\x98\xbe\x56\xc5\xea\x6b\xe5\x57\xdc\x57\xf1\xfd\xfb\x4c\xe6\x62\xbf\xc7\xf1\x09\x76\x0d\xd5\x44\xe6\x97\xb8\x0b\x49\xc8\x66\xb3\x56\x48\x79\x09\xeb\xb8\xba\xa7\x85\xa1\xe9\x19\x48\x7d\x6b\x50\x9c\x78\x5d\x88\x96\x09\x76\xd9\x9e\x00\x9f\x07\x65\x71\x17\xba\xd6\xd1\x2d\x6f\x1f\x64\x0d\x97\xc0\x11\x80\x74\x03\x08\xb5\x9a\xae\x86\xf9\xf9\x3e\x4e\xcb\x2f\xf1\xca\xb9\x9b\xd2\xad\xce\xb7\x49\x4f\x0c\x48\xa4\x8c\xce\xb4\xba\x98\x67\x40\xa1\x6f\x9a\xc6\x0d\x8b\x24\x79\x14\xac\xb3\x61\x8d\x7f\x7c\x21\xd6\xd7\x67\xf4\xa7\x4c\x36\x98\x9f\xc7\x9f\x08\x8c\xf7\xc3\x5b\xe4\x6e\x04\x87\xc2\xcc\xc8\x0d\xfa\x75\xbc\xb9\xc4\xb6\x00\xd5\x3f\x5e\x97\xfa\xfb\xc6\x2b\x7c\xcb\x2d\x92\x1d\x62\xe6\x20\xd7\x13\x6d\x5c\x08\xd7\xf5\x73\x08\x68\x01\xbb\xa8\x24\xab\x7b\x85\xeb\xd9\x1e\x46\xc6\xb6\x31\x1b\x0b\x3c\x7e\xfc\x18\x70\xee\xab\x67\xaf\x46\xcc\x47\x4a\x26\xee\x49\x21\x4d\x5d\x3d\x98\xa1\x23\xb9\xe6\xb8\x3a\x5a\xd9\xa3\xc7\x24\xe9\x18\xd9\xae\x80\x14\x3c\x85\x5e\x46\x79\x54\xea\x64\xcd\x8a\x73\xbb\x86\x4e\x37\x50\x92\x79\x86\x15\xe1\x15\xbd\x7b\x57\xa8\x4c\xd1\xba\x58\xb8\xc1\x3a\x22\x42\xae\x1f\xe8\x85\xff\x43\xb2\xfc\x3f\x20\xbb\xbf\x3e\xe9\x7d\x71\xab\xcc\x2b\x82\x01\x2b\x74\x79\xb4\x58\xe8\x69\x1c\x95\xba\x07\x6c\xad\xfd\x93\xa4\xf5\x56\xfe\x2a\x64\xec\x34\xc7\x21\x99\x9d\x41\x1c\x58\x2b\x4a\xc5\x88\xbb\xd1\x72\x99\x18\x2e\x8c\xdd\x68\xa5\xda\xd7\x7c\xc2\x5a\x05\x39\xbe\xa3\xe9\x6f\xe0\xcd\x4e\xa1\x7b\x79\x3e\x47\x53\x14\x43\xef\xdb\x69\x1d\xb9\x4f\x98\x0d\x14\xe2\x1d\xbf\xfa\x41\x3d\x79\x7d\x54\xf4\x30\x1c\x06\xe5\x06\x4c\x0d\xb1\x6c\x9d\x81\x6b\x55\x84\x1d\x2f\x0b\x02\x04\x5c\x27\x0e\x1f\x26\xcc\x92\x75\x6e\xd9\xa3\x63\xee\xa9\x88\x82\xb1\x17\x5d\x8c\xaf\xc7\x92\x81\x2e\x04\xc1\x13\x63\x1e\xa5\xa5\xce\xcf\xc1\x62\xf7\x53\x07\xe5\xa6\x1b\x46\xe5\x2a\xfe\xb0\x72\x42\xea\xc0\x2f\xae\x9b\x0f\x59\xb6\x75\xd5\xef\x8a\x7e\x0e\x28\xca\xe7\xbe\xba\xde\x17\x3e\xad\x3c\xcf\x78\x4a\xe3\x3f\x4f\x71\x2d\xe8\xb7\x11\x9b\x23\x89\xa7\x36\x53\xd5\x07\xaa\x63\xb8\x23\xfc\xb5\xdf\xba\x6e\x51\x27\xe2\xe4\x57\x69\xae\x0d\xf5\x5e\xfd\x82\xe5\x72\xe3\xae\xf7\x6b\x3a\x80\xd9\x56\x77\xd8\x9b\x04\x6e\x2b\xef\x24\x4f\xb8\x6b\xd3\xaa\x3f\xcb\x34\x05\x94\x2d\xa3\x1c\x35\x0c\x66\x33\x28\x18\x40\xa1\xcb\x42\xad\x96\x50\xbc\xd0\x8b\xb1\xce\x0b\xeb\x16\xc8\xfb\xab\xd3\x3c\x4b\xbc\x8d\x8d\x4b\xbd\xe8\xa9\x45\xa1\x27\x14\x19\xd8\x13\x22\x99\xaf\x66\x0e\x89\xa6\x92\x23\x8c\x86\x59\x29\x37\x4c\xab\xe9\x03\xe7\xca\xc3\xad\xd2\xfa\x01\xff\xe0\x48\xfd\x5d\x7f\x98\x0f\x70\x3a\x4f\x30\xd2\x8d\x53\x6a\x45\x5c\xf0\x8f\x8d\x4d\x61\x6c\x61\x59\x06\x68\xc2\x4a\x9c\xae\x0b\x2b\x78\x09\xb0\xab\xfd\x01\x9f\x57\xb5\x38\xcf\x52\x2e\xf2\x83\x29\x63\x0f\xf6\x6b\xd7\x86\x4b\x0e\x3e\xd8\x30\xc5\x7c\x84\x18\x9f\x93\xe0\xe5\xdd\x3c\x2a\xdb\x08\x31\xf3\xec\x02\xc2\x5e\x0f\x3e\x16\x0a\x52\x6c\xc1\x1d\x55\x71\x09\x9a\x30\x08\xcd\x7a\xb9\xcc\x0a\x3d\x55\xd1\x32\x56\x71\x61\x33\x32\x0f\x3c\x4c\xc1\x98\xcd\x85\x13\xf1\x4b\xcd\x9b\xc3\x8b\xc3\x97\x49\x7c\x75\x92\xf9\xce\x2c\x75\x61\xa8\xe1\x4a\x06\x78\xf3\xfe\x7d\xce\x6b\x1a\xe5\xa7\x66\xf7\x2d\x5a\x61\x46\xe7\x6b\xb5\xa7\x1e\x53\xe4\x8b\x11\x22\x6c\xbc\x3e\xb6\x66\x0f\x32\x11\x9a\x43\x12\xa8\xfa\x38\x9e\x9e\xc8\x70\xbf\x55\x45\x5b\x96\xbe\xe4\x32\x19\x41\x38\xec\xc4\x9d\xd7\x70\xa8\x66\x74\x75\x21\xb2\xf7\x2c\x2a\x4a\x9d\xab\x22\x53\x17\x1a\xe2\x2c\x2f\xe2\xdf\x6c\x74\x0e\x83\xf9\x17\x59\xaa\x56\x85\xee\x43\xe6\x6c\xdb\xc7\xb7\x85\xd6\x6c\x89\xf1\xb1\x58\xea\x7c\x36\x98\x64\x8b\xa1\xe9\xb7\x0f\x48\xb7\x5f\xe8\xd3\x95\x80\x11\xb3\x33\x32\x92\xf6\x2c\xc5\x27\x0c\x48\x10\x40\xc4\x85\x8b\xa7\xed\x27\x3d\x51\x76\xc6\x40\xae\xf8\x51\xb7\x61\x36\xaf\x49\x8b\x19\x73\xe6\x9c\x44\x47\x67\x71\x7a\x4a\x35\x7c\x7c\xcd\x5b\xd3\x89\xa7\x32\x6c\x36\xee\x3e\xbd\x21\x06\xe7\xca\x3b\xeb\xb7\x74\xf0\x14\x96\x87\x10\x15\x7c\x17\x30\x15\x53\xa6\x18\x72\x80\x0b\x0f\x0c\x86\xaf\xa5\xc8\xb6\x0d\x12\xcd\x8b\xed\xae\x07\xe2\x35\x9f\x03\x42\x04\x48\xa5\x2a\xcd\x81\x24\x12\x35\x1a\x7d\xb1\x6b\xe8\x9f\x5b\xa5\x82\xf3\x12\x55\x55\xb2\x2f\xd9\x9c\x55\x1b\x62\x00\x50\xce\x3c\xe1\x45\x4e\xcc\x79\x5c\xa8\x71\x34\x39\xd3\x53\x35\x5e\xab\x48\x70\x0d\x3d\x15\x31\xc0\x9e\xeb\x1c\x92\x62\x80\x1c\x04\x43\x57\x19\x30\x1b\xaf\x66\x90\x50\x3d\x4a\x27\xe6\x7c\x5c\xd3\xd0\x61\xdd\x0e\x05\xfa\x1d\x55\xac\x50\x72\xd1\x73\xe9\xa8\x35\x88\x89\xf3\x04\xe2\x9d\x0a\x22\x9f\xc4\xad\xe3\xd5\x0c\x78\x10\x4c\x62\x84\x31\xac\x39\xe5\x9f\xe0\x8f\x4c\x39\x14\xa1\x27\x9a\xfb\x62\xf5\x41\x36\xe5\xe0\x98\xbb\x17\xf2\x6b\x82\x33\xd1\x03\x51\x7b\x35\x36\x66\x66\x75\x2e\x28\x97\x48\xab\x7b\xaa\x4b\x0c\xd8\x0a\xc9\x7f\xb3\xe5\xba\x76\x60\x62\xc2\xfc\x75\xf5\x54\xb0\xce\xfb\xc1\x02\x85\xfb\x9c\x48\x09\x16\x17\xce\xf7\xaf\x2b\x2c\x11\xe2\xc2\x62\xeb\x24\xbb\xb0\x87\x88\x81\xb5\xf9\x24\xd1\x80\x3c\x4a\xd7\xca\x6e\xf8\x70\xe8\xde\x81\x88\x14\x4a\xe7\x98\x8c\x40\x7a\x6e\x74\x49\xc5\x02\x47\x09\x69\xb5\x90\x05\x16\x7c\xa7\x48\x04\x4e\x95\x13\x9d\x7a\xb9\xa8\x5b\xf5\xb2\x9f\x44\xa7\x28\xf0\xc1\xbd\xb6\x43\xa0\xc8\x67\xbc\x9a\x1d\xc7\x27\x56\xfb\x04\x5b\x6b\xab\xd8\x93\xdd\xe4\x8c\x5e\x93\x8d\xe8\x3b\x8e\xab\x42\x0c\x5a\x98\x6b\xe8\x8b\x5b\xe5\xe2\xfb\x2b\xd7\xd0\x5f\xb9\x86\xfe\xca\x35\xf4\x57\xae\xa1\xff\x9d\x5c\x43\xed\x55\x01\xb1\x04\xe3\x49\xd9\xa6\x04\x43\xcb\x55\xba\x9e\xb0\x25\x16\x0b\x3f\xa8\xac\xdd\x45\x49\xc4\xaa\x8c\x13\xdf\x90\xd1\x94\x40\x62\x1c\xa6\xc1\x20\xc4\x39\x86\x3b\x7f\x6d\x7e\x3a\xf6\xdc\xa9\xd0\x56\x79\xf2\x06\xff\xa8\x7c\x45\x0f\x6d\xaf\x0e\x16\xb9\x9a\xb3\x2c\x5f\x44\x54\xe5\x39\xfc\x16\xc3\xbf\x07\xbb\x80\xf7\x79\x22\xf9\xf7\xf7\x79\x22\x59\x63\x11\x29\xdc\x90\xaa\x96\x6f\x2f\x92\xa8\x40\x85\xbc\x57\x1c\xad\xca\x79\x58\x46\xb1\xb9\xbd\x32\x0a\x14\x5e\xa9\x47\x9e\xe3\x7e\x79\x54\x54\xfa\xc4\x80\xe7\x61\xe9\xaf\x2b\x9d\xaf\x2b\x43\x45\xe5\xbc\xae\x5b\x8a\x4a\xee\x0f\x85\xc2\x04\x2c\x43\x33\xed\x37\x60\x58\x9c\x4e\xf4\x48\xbd\x79\xfe\x54\x3d\xf8\xea\xcb\x47\x3d\xf8\xb5\xfb\xe5\xce\x97\xf8\x6b\xef\xc1\x57\x8f\x5a\x98\xc1\x7f\x16\xa7\x9a\xa2\x75\x40\x3c\xd2\x22\x53\x11\x64\x22\x01\x93\x1d\xbd\x46\x9b\x47\x08\x1a\x59\x66\x6a\xac\xf1\x15\x59\x2c\xe3\x44\x4f\xd1\x14\x92\x70\xf7\x2c\xce\x8b\x92\xad\x16\x93\x2c\x9a\x62\x54\x49\x3e\x8e\xd7\x51\x59\xea\xdc\xbc\xf2\xc3\xbf\x77\x8e\xa3\xfe\x6f\x3b\xfd\xaf\x06\xf7\xfb\x27\xf7\x47\xdd\x61\xdc\x03\x16\xc0\x6c\xb1\xa8\x36\x3a\xde\xe9\x7f\x75\x72\xef\x3f\x86\x3d\xcc\x36\x31\x1c\xaa\xb7\x94\xf5\x1d\x24\xb7\x86\x40\x88\x28\xfd\x33\x46\x6c\x7f\xff\xe6\x7b\xcc\x62\x01\x65\xaf\xa3\x72\xee\x8d\xfa\xf3\xf0\xe7\xe1\xe3\xce\xe3\x3b\x3f\x0f\xbb\xc7\x7f\xff\xf9\xf1\xcf\xc5\xc9\xbd\x6e\xe7\xe7\xc7\xc7\x7f\x87\x5f\x8f\xe5\x40\xbc\x49\x23\x99\x54\x1e\xe3\xfb\xe8\x29\x8c\x3c\xd5\xf0\x76\x19\x44\xff\xfe\xcd\xf7\xc5\x80\x5b\xfe\xa8\x5d\x88\x55\x10\xb2\x44\xab\x32\xeb\xeb\x62\x12\x2d\x69\x9f\x07\x94\x3b\x23\x89\x17\x60\x77\xda\xfe\xba\xdd\x53\xed\x6f\xcc\x7f\xb6\xcd\x7f\x7e\x01\x93\x07\xf3\x9f\x9f\x73\xf8\x2f\xc4\xc2\xfa\xb9\x6c\x9f\xdc\x30\x3f\xc3\xb5\x43\x28\x23\x9a\xe2\x79\x94\xc7\xd9\xaa\x20\x57\x63\x9a\xe2\x2a\x05\xca\xd4\x8c\xfb\xbb\xe9\xf7\xda\xfc\xe7\x0a\x46\xf8\xd9\xfc\xf7\xef\x38\x85\x13\x8e\xd7\x80\xf3\xec\xba\xa1\x9f\xd0\x08\xe3\xb5\x99\x45\x81\x86\xb1\x93\x88\x83\x4f\xbd\x7d\xab\xa2\xb2\x8c\x26\x67\xc5\x40\xa9\x27\x18\x98\xbe\xba\x7a\xb3\x29\x87\x58\x6a\x66\xf2\x73\xdb\x0d\x88\x13\xec\xf6\x78\xbc\xa7\x6e\x81\x40\xa2\x9a\xd7\x38\xd5\xe7\x3a\x57\xf0\x1f\x5e\x30\xc4\x20\xe6\x0b\x69\x4f\xc3\xa5\xde\x32\x34\x51\x4c\xb1\x86\x40\x77\x07\x1d\x45\x49\x91\x91\x0a\x60\xda\x63\xc1\x06\xf1\xd8\xc3\x21\x54\xc1\x14\x5d\x5a\x8c\x7e\x0f\x0d\xfd\xf5\xf4\x1e\x5e\x09\x55\x68\x9d\xf6\x88\x7d\x37\xac\x51\x1f\xc2\xe2\x53\x1f\xe5\x5c\x2f\x70\x3e\x69\x96\xbe\xc8\x30\x13\x3b\x1e\xfc\xdf\xcc\x5e\x0f\xcd\x7f\x1e\x9b\xff\xec\x9b\xff\x7c\xe6\x76\xc2\x6d\x12\xed\x86\x59\xde\x61\x6a\x68\x28\xd7\x87\x6b\xfe\x99\x01\x10\xae\x66\x76\xe1\x87\xe8\xf2\x7b\xa0\xab\xf7\x1e\x3e\xf4\xbf\xbc\x8e\xbc\x9b\xf6\xf7\xe3\xfb\x78\x21\x9f\xf4\xff\xbf\x0f\xfd\x93\xdf\x77\x7a\x8f\x1e\x5c\x9b\xeb\x10\xb6\x79\x0b\x52\x44\xbc\xc2\x35\x4d\xba\x9d\xc1\xbd\x2e\xb7\x33\x14\x15\xdd\xfd\x82\x03\xac\xa6\x78\x5c\x6a\x1b\x9d\x3e\xb6\x81\xec\xd9\xc6\x13\xdf\xc6\x63\x61\x28\x35\xdf\x45\x22\x09\x96\x43\xb4\x3f\x46\xe7\x51\x31\xc9\xe3\x65\xd9\x1e\x81\x50\xa6\x57\xfd\x32\xa2\x4f\x24\xe8\x6a\x98\x0e\x02\x11\x60\xb6\x10\x72\xcc\x5f\x89\x2e\x8a\x7f\xee\x04\x28\x6d\x83\x21\xf9\x23\x00\xdf\xe1\x50\x8d\xe3\x12\xa7\x80\xcf\xd5\xb4\x6e\x06\xf3\xb2\x5c\x86\x63\x43\xf4\xe5\xb0\x70\x56\xad\x77\x9a\x2d\xe7\xa0\xb0\xf5\x2b\xc6\x89\xae\xeb\x71\x54\x3b\x4c\xa5\x74\x56\x53\x13\x07\xaa\x56\x85\x74\x21\xd5\xdd\x81\x87\x10\x43\xc7\x48\x12\x44\x14\x03\x1d\x62\x1f\x7d\x26\x40\x3a\x10\xca\x00\xc8\x92\xff\xd7\xd4\xc5\x80\x32\x3d\xda\xbe\xe2\x99\x4e\xb3\x52\xbf\xc8\x38\xcd\x36\x84\x91\xca\xc1\xff\xd4\xd0\x36\x83\xb8\x40\xfa\xc3\x14\x42\x1c\x79\xf3\x51\xca\x2e\x4c\x31\xb1\x92\x2b\x20\x3b\x50\xc6\xb8\x62\xa6\x36\x87\xa7\x78\x45\xb9\x5f\x6e\x3d\x99\x7d\x27\xe6\x5a\xc1\xbb\xfd\x3e\x4f\x64\x3a\x3e\x22\xb3\x2c\x63\xf9\xe9\xab\xbc\x43\xeb\xa3\x08\x3b\x66\x7d\xdd\x0d\x89\x78\xb7\x5f\x47\x79\xb4\xd0\xa5\xce\x15\xe4\xcc\x11\x1c\x70\x41\x83\x99\xe7\x65\x5b\xdd\x67\xb1\x9b\xe9\x51\xa6\x30\x03\x56\x7f\x02\x11\x8a\x7b\xea\xe8\xb0\xa7\xb2\xa5\xce\x23\x10\x22\xc1\x34\xfb\x80\x66\xcd\xf9\x8e\xf5\x3c\x3a\x8f\xc1\xa5\x59\x51\xc6\x45\x5e\x89\x1a\xeb\x59\x46\x48\x17\x69\x23\x82\x89\x53\x5d\x9a\x8b\x72\xae\x29\x24\xaf\x79\xe0\x2e\xa2\x7c\xca\x0d\xb1\xab\xb7\x5a\x8f\x14\x07\x22\x37\xa4\xed\xe0\x34\xcb\x4e\x31\x18\xf9\x70\x39\x84\xd9\xc5\xab\xc5\x30\x2e\x8a\x95\x2e\x86\x53\x5d\x46\x71\xf2\x38\x9e\x1e\xec\x3d\xfc\x6a\xf7\x11\x9d\x2d\x8c\x7b\x94\x4e\x21\x69\xe5\x2a\x4f\x5c\x06\x97\xc7\xed\x2e\x03\x32\x98\x86\x9a\xdd\x3a\xb0\x02\x52\xa5\x3a\xa2\x29\xc6\x22\x33\x20\x25\x0a\xbf\xf6\xfb\xfb\xac\xdd\xed\xaa\xc7\x06\x7d\xab\x91\xc1\xdf\xdc\xf9\xea\xad\xe9\x9d\x46\x47\x23\x54\x1e\xcf\x4d\xc0\xac\xfb\x8d\x3e\x85\x59\x0e\x7f\xfe\x79\x78\x0a\x80\x08\x2d\x8f\x77\x4e\x4c\x63\xfe\x3d\xc8\xf5\x32\x89\x26\xba\xe3\xda\xc0\xbb\x03\xc7\x87\xa6\xb6\x58\x77\xf0\x31\x8b\x53\x37\x94\x85\xf6\x1c\x43\x89\xf2\x05\x30\x8f\x5a\x1e\x2f\xf8\xac\x40\x9e\xa9\xcd\xab\x44\x07\x6a\x45\x4c\x99\x0d\xe8\x8f\x00\x5d\x94\xab\xd9\x0c\xf3\x06\x6d\x2b\x96\x5c\xcf\xb2\x0c\x92\x11\xa8\x9f\xd3\x6d\xb8\x15\x94\x5c\xaa\x28\x07\x66\x94\x0e\x49\xe4\xc1\xb8\x30\x04\x77\xba\xb1\x1c\xee\xe3\xb3\x76\x97\x85\xfd\x07\x07\x07\x6a\x97\x01\xde\xcc\x29\x5f\xc3\xd3\x8c\x84\x62\x6e\xf6\x60\x09\xdf\x30\xea\x11\xd3\x8b\xea\xa0\x4a\x3c\x0e\xf4\xa5\x9e\x74\xcc\x84\x44\x3a\x3d\x57\x4b\xe6\xcc\x73\x44\x7a\x0e\xa9\xc3\x44\x39\x11\xea\x95\x72\x41\xec\xbb\x3e\x8f\x77\x4f\xf6\x85\xdc\x5e\x7c\xd8\x3b\x91\x02\x7c\x9f\xb3\xf0\xaa\xed\x3b\x05\xd0\x4c\x75\x42\xd4\x21\x3b\x09\x58\x11\x81\x72\x09\xab\x89\x51\xd8\x06\x6c\xb7\xdb\x75\x03\x54\x54\x05\x41\x8f\xb5\xed\x45\x73\x5f\xe3\x70\xd3\x74\xfd\x35\xb7\xdb\xfb\xad\xda\x41\x7f\xbf\x0e\x75\x14\x56\xa8\x1c\x17\x41\xa6\x4e\xcb\xa7\xa8\x83\x90\x5f\x09\x0e\x1f\x26\x67\x6a\xf0\x8c\xbc\x66\xc7\x3b\xb4\xed\x36\x68\xe3\x6b\xf9\xd9\xb7\x9e\xdd\x6f\x39\x18\x70\x8f\xbc\x6b\x85\xdf\xe5\x75\xa0\xbd\xc3\xbe\x48\x7e\x2a\x31\x30\xa4\xea\xd0\x2a\x5b\x95\x36\xfc\xfb\xa9\x61\x09\x80\x9c\xc1\x2a\xab\x42\xe7\xdf\x02\x17\x03\x12\xfe\x7b\x48\x82\xdc\x73\xf9\xa2\xf4\x54\x45\x85\xa0\x87\x50\x4e\xb6\xca\x13\x4e\xce\x58\x64\xc9\xaa\xb4\x42\xff\x32\xd7\x51\xa9\xe0\x12\x0f\xc7\x51\x6e\xda\x9a\x96\x07\xb3\x2c\xeb\x19\xc8\x3e\x30\x85\x63\x8d\xec\x41\x09\xca\x45\xec\x68\x9e\x5d\xa0\x0a\x80\xb2\x86\x90\x80\xa0\x70\xc9\xae\x98\xab\x82\x0b\x50\xb9\xf8\x57\x57\xb4\xf5\x57\x57\xb8\x39\x6c\x5e\x6f\x98\xbc\xe3\xbf\x7f\xfb\xf3\xf0\xe4\xfe\xb7\xf4\xef\xd0\xbe\x7c\x68\xa9\xc1\x72\x00\xb9\xa9\x3b\x3d\xb5\x87\x19\xc8\xda\xc3\x61\x5b\xdc\x73\xaa\x7d\xf7\xae\xba\x83\x3b\xcf\x89\xbd\x24\x7d\x78\x0c\x5f\x4e\xba\x0e\x4e\x6b\xce\x6d\xaf\xeb\x5d\x7c\x37\x0f\x54\x2d\x7a\x10\x09\xe8\xae\x61\x14\x75\xf7\x2e\xf5\x63\x67\x77\x75\xa5\xdc\xe4\xee\x04\xa4\xa3\x9d\x9c\x99\x9d\xe0\x4a\x72\xdd\x2e\xea\x78\x26\xc7\xcc\x33\x21\x64\x18\xbb\x61\x4f\x3d\xee\xa9\x7d\x08\xf8\xfa\x99\xd2\xe9\x14\x55\x08\x90\xe2\x8c\x5a\x72\x07\xa8\xdd\x41\xa1\x69\x94\xaa\x6f\x59\x3e\xec\x60\x0a\x42\xef\xa7\x59\xda\x07\x49\x0b\xb2\x63\xf7\xa2\x5c\xdf\x63\x76\xce\xce\x05\xe4\xaa\x2a\xd1\xb3\x92\x85\x99\x89\xc1\xe2\xdf\x42\x34\xb0\x9e\x5a\xa5\x66\x83\x30\x79\x86\xe9\xab\xaf\x81\x3d\x72\x5c\x31\x77\x34\xc9\x16\xba\x50\xf7\xf0\xc9\xba\x07\x1d\x7d\xdb\x37\x7d\xd8\x65\x1b\x78\x03\xf6\x2e\x1b\xa7\xd9\xa5\x61\x9c\xc3\x75\xe9\xcb\x11\xff\xa4\xb7\x2b\xfa\x76\xfc\xed\x64\xa8\x0e\xbe\x81\x8b\x35\x8a\xbe\x1d\xc3\x2c\x46\x93\x6a\xbd\xc7\xdf\x4e\x5c\x3d\xaa\x05\x8f\xd1\x68\xf8\xf8\xdb\x89\x3d\x97\xf3\x9d\xc1\xee\x1e\x58\xba\x75\xe2\x22\x8a\x26\x45\x77\x64\xdf\x53\x43\x80\xfd\xba\x8a\x4b\x0d\xb7\x07\x93\x41\x40\x5e\x17\x0c\xaa\xea\x64\x10\x6f\xf4\x79\xac\x2f\x54\xb6\xca\xd1\xf5\x0a\xc4\x25\xd1\x69\x64\xce\xd3\x85\x7b\x85\x18\xc6\x93\x6c\xb1\xcc\xf5\x5c\xa7\x45\x7c\xae\x93\xf5\xc0\x4e\x04\x1c\xba\xea\x41\xc1\xb0\xd2\x01\x2b\x6a\x6f\x17\x95\x93\xc9\x85\x29\xad\xd3\xe3\x04\xad\x3d\x5b\x5e\x7b\x85\xd0\x4f\x67\xc2\xb7\x88\xa9\xa6\xa0\xed\x71\x7c\xd2\x95\x6f\xa5\x69\xe1\x68\xaf\x8e\x9d\x0f\x16\x5d\x5d\x41\x97\x76\x06\x5d\x67\x27\xe1\x66\x3e\xd7\x13\xbe\x8e\x56\x10\x50\x92\x74\x3e\x8b\xd3\xb2\xa7\x74\x0c\x1a\x9b\x0b\x4d\xec\x63\xaa\xf4\xe5\x32\x89\x27\x71\x89\x35\x28\xb7\x4f\x39\x77\x92\x84\x55\x39\x67\xb9\xbc\x61\x84\xcd\x59\x9e\x66\x6a\x19\x41\x9e\xed\x5c\x42\xb6\x81\x5d\xd6\xd0\x61\xb8\xe3\x7c\x60\xf7\x17\xf3\xdf\x45\xe5\xdb\xf8\x34\x75\x58\xca\x5f\xa5\x67\x68\x80\x55\x81\xf7\x36\xd4\x7c\xba\x86\xa9\x0d\xa8\x02\x7d\xa5\x2d\x36\x13\x38\x62\xe2\xf4\xdb\x36\x6b\xe6\xfd\xe7\xdd\xf5\xc9\x2c\x82\xe1\x5d\xc5\xf2\x06\xae\xa2\x03\xff\xe1\xe4\xdb\xa9\x81\x7f\x00\xfc\x31\xd4\x1f\x45\x04\xff\x93\x6f\xa7\xb7\x99\x4e\xcf\x1e\x5a\x78\x3a\x2f\xb3\x0b\x77\x16\x76\x97\x2f\xe6\x31\xe6\xfc\x00\x21\x67\x0c\x66\x9d\x10\x4c\x7c\x55\xce\xed\x55\x79\xbd\x82\x3c\xc3\x91\x41\x2f\xb3\x81\xdd\x50\x9a\xc8\x9d\x60\x3f\x49\x58\x8c\x58\x1d\x34\xb5\x3b\x7c\x18\x16\x08\x3d\xcc\x0f\x75\xa8\xb3\xfb\x6a\xd7\x7f\x01\xa8\xb7\xa9\x36\x9c\xca\xfb\x37\x47\x4f\xb3\xc5\x32\x4b\x75\x0a\x92\x9f\x79\x65\x95\x8c\x42\x19\x36\x72\xbd\x20\xd5\x5e\x0d\x96\xc4\x5b\xeb\xa1\xd8\x96\x0f\xe5\x9b\xee\xa7\x94\x54\x7d\xd2\xe5\x94\x0d\xff\xb9\x37\x93\x36\x05\x72\x91\xa9\xa2\x34\xc4\x08\x9c\x3f\x98\x2e\xc5\x25\x04\x91\x2e\x29\x75\x36\x85\xa8\x46\x34\x49\x51\xe8\xed\xbb\x55\x73\x7f\x5a\xe1\xb8\x08\x8e\xb8\x0f\x2d\x47\xb7\x91\x9e\xc0\x07\x07\x1f\x48\xab\xd0\xe0\xbe\x5b\xb1\x90\x81\x41\x43\xb5\x19\xc8\x1d\x08\xb2\xd0\x50\xc1\x66\x3b\x3b\xa2\xf2\x85\x6e\x9f\x6b\x0e\x10\x06\x39\x9c\x00\x37\xf1\x73\xeb\x1e\x59\x6e\x50\x64\x0a\xd5\xf4\x44\x12\xea\xc5\xb2\x5c\xf7\x54\x5c\xaa\x79\x54\x90\x00\x13\x42\xd7\xa7\x72\x6c\xa1\xda\xf0\xff\x86\x20\xc0\x6e\x3a\xf1\xcc\x8e\xa8\xc6\xfa\x34\x4e\x0b\xb4\x1c\x38\x06\xba\x11\xc8\x04\xf8\xfb\xc4\x22\x42\xcc\xf4\x06\xd3\xc6\x0c\x45\xa9\x97\x43\xd5\xa1\xba\x78\x79\xfe\xe8\x45\xc3\x34\x80\xc3\x3d\xc0\xf4\xa9\x96\x1c\x0a\xa6\x7e\xec\xfd\xc5\x8c\x61\x5f\xed\x52\xd3\x13\xb1\x0c\x90\x0b\x47\xa5\x41\x1f\x86\xf9\x4d\xb4\x83\x8d\x3b\x72\x1e\xc1\x05\xc8\x8a\x72\x19\xa1\x49\x8d\x3f\x18\x7b\x8e\x0e\x86\xf6\x0a\xf8\xf7\xac\xa7\x0c\xb5\x6f\x3b\x70\x97\x4c\x7d\xad\x92\xe0\xae\x11\x83\x82\xa2\x57\xdb\xe4\x38\x0e\x78\xbc\x3b\xa6\xb8\x0b\xe2\xc4\x38\x65\x8a\xd2\xfb\x48\x44\x72\x8d\x14\xb8\xeb\x33\x84\xe4\x00\x44\x43\x4a\x1e\x4b\xac\xe3\x23\xae\xe3\xcc\xb0\x37\xa6\x73\x5e\xc2\x47\xf5\xb5\x3a\xdb\x57\x1f\xfd\x25\x28\xc7\x89\x96\xd2\x29\xe7\x63\x57\x7d\xa3\x76\xf7\xbe\x08\xeb\x12\xb0\x2b\x92\x5d\x00\x2a\x7b\xf2\xf6\xe9\xd1\x11\xbe\x8f\x68\x9e\xa2\x4a\xbd\x58\x66\x79\x94\xaf\x15\xd4\x9a\x67\xc9\x94\x68\xbe\xb0\x1f\xb4\xc3\x99\xa3\x58\x02\x72\xdf\x41\xb8\xfa\x22\xfe\x0d\x68\x1a\x0b\xc4\x48\x67\x55\xbb\x18\xe7\xd9\x99\x4e\xd5\x78\x4d\x33\xc2\xd8\x7c\x3c\xa7\xf1\xda\xb4\x9a\x3b\x73\x37\xfe\x1f\xef\xe2\xfd\x03\xd5\xbe\xf4\xf6\xb1\x96\x6f\x0e\x9a\x98\x7f\x8f\x3f\x9e\x04\xcd\x5a\xf5\xbf\x71\x9d\x40\xf0\x01\xad\x87\x7b\x24\xf6\x2c\x4b\x93\x75\xcb\x3f\x8d\x3b\x34\xd8\xad\x21\x03\x61\x03\xae\xcb\x6b\x82\x7c\x07\xc4\x16\x07\xc6\xdd\xfd\x4a\x9b\x34\x2b\x5f\x20\xbe\x0c\x1b\xc4\xde\xd3\xe8\x5a\x8c\x41\x06\xd6\x30\x3d\x50\x45\x04\x8d\xc0\x24\x2c\x2e\xab\xa0\xe4\xe6\x4b\xfe\x5e\x71\x79\xbc\x7b\x12\xb4\x56\x3c\xc5\xc1\x2a\x2d\xe6\xf1\xac\x84\x6a\x7b\x61\xb5\xeb\xca\x90\xdc\x2c\xb1\x36\x65\x7e\xb7\xf4\x06\xb4\x21\xb5\x32\x57\x06\x51\x5b\x7b\x00\x59\x94\xa5\x50\xa8\x6e\x90\x10\x23\x8b\xe5\xd8\x6e\xfc\xf6\xe0\xf6\xb2\x5f\x0b\x28\xd7\x9e\x58\x84\xc8\x0b\x30\x73\xab\x43\x97\xdf\x04\xda\xa4\x40\xda\x25\x26\xc5\x58\xa2\x4a\x2e\x72\x25\x56\xb9\x81\xd6\x03\x04\x1d\xc0\x99\x0c\x1a\x3a\xf4\xe7\x53\x23\x3b\x11\x73\x6f\x40\xd2\x86\x19\x7d\xf6\xf2\x89\xa2\x44\x71\x23\xf5\x06\x64\x40\xe6\x9d\x64\xe3\x87\xa9\xb9\xcf\xf8\xfc\xa1\x1d\x52\x36\x53\xdb\x98\x76\x73\x5b\x50\xb2\x47\x14\xfc\x87\x64\xd0\x85\x42\xbc\x4f\xd4\x16\xd6\xc7\x28\xf2\xe6\x65\x13\x6b\x47\x9a\x44\xe2\x2e\x54\x66\xf6\x54\x3c\xd0\x03\xf3\x0c\x73\x66\xce\x05\x5c\x38\x15\xcf\x5c\xeb\x75\xb6\x82\xa4\x73\xa6\x1a\x61\x3c\x1a\x8a\x14\x48\xe0\x84\x64\x70\x16\x74\xdf\x37\x53\x6c\xda\x4e\x5e\xf0\xa0\xcc\xa0\xb2\x7f\xde\xfe\x96\xc2\x7b\xc3\x47\xe0\x65\xff\x76\x25\x23\x7b\xe2\xf0\x14\x36\x11\x0a\x2a\x20\x96\xe6\xea\xbe\x5a\xca\xe2\x5c\xcf\x0c\xaa\xb3\x75\xdc\xa3\x5c\x94\x79\xbc\x24\x4a\xe2\x04\x6d\x8a\xa5\x18\xa1\x42\x17\xcf\x62\x9d\x4c\x89\x16\xcc\x75\x69\xd8\x5d\xd0\xbe\xf6\x28\x64\xaa\x85\x96\x7a\x60\xd9\x0c\x7f\x2c\xb8\xec\xa9\x06\xb2\x62\xcf\x23\x76\xcd\x95\x36\x44\x0a\xf8\x7e\x0d\xdb\x12\x29\x78\xe8\x40\x5e\xfd\x6b\x5f\x06\x34\x1c\xaa\x34\xbb\xc0\xea\x71\x01\x81\xb3\x89\xd0\x5f\x66\x45\x89\x74\x3d\x48\xd4\x49\xec\x3e\x99\x67\x4b\xc3\xc5\x00\x7f\x0e\x6a\x7b\xa7\x51\x45\x8d\x90\xa7\x54\x3d\x76\xa2\xc6\x13\x29\x19\x7a\x6e\x38\x87\x1e\x3e\x91\xbb\x3b\x3b\x7f\xc3\x77\xd2\xea\xd0\xb7\x9d\x56\x9a\x34\xb6\xea\x54\x97\x56\x44\x02\x1f\xa6\x3d\x4b\x72\x42\xf4\x3a\x8f\xb9\xb1\xf0\x6e\x9e\xcb\x33\xb0\x31\xe1\xd6\x6c\x2b\x3b\x26\x9c\x50\x47\x32\xb9\xe1\x37\xd2\x4c\xc0\x2b\x6b\xaf\xbe\x20\x98\xf8\x84\x2c\xdf\x12\xe9\x6e\x40\xfc\xab\x0a\x21\x65\xba\xd4\x85\x61\x79\xaa\x8b\x32\x1d\xc8\xce\xa1\xde\xc1\x81\x8a\xb4\x3c\x79\x6a\x0d\xb3\x91\x2d\xae\xeb\x58\x47\xa0\x20\x23\xdd\x45\x14\xaf\x8b\x49\xd7\x93\x11\x06\x67\x6e\x6f\x47\x19\xc5\x09\x72\x7f\x03\x92\x6c\x93\x35\x92\xb7\xde\xf6\x67\x6d\x2b\xcf\x86\xef\x3e\xa7\x3b\x1c\x92\xe4\x78\x96\x47\xa7\x60\x10\x4b\x0a\x01\x71\x6f\x45\xaf\x74\x37\x4c\x51\x23\xdb\x63\x38\x23\xfe\x7e\xcd\x9a\xb6\x45\x65\x5e\x8f\xdd\xbc\x7e\x5d\x04\xb3\xf2\x25\xff\x72\xe4\x5f\x17\x52\x9c\xce\x2a\x00\xbf\x86\x20\x32\x36\xab\x18\x6e\xa3\x0d\x81\xe2\xae\xe4\x45\x6b\x57\x4c\xf3\xba\x85\x66\x03\x2e\xbb\xa7\xf2\x44\x73\x94\xb0\xbe\x45\x6f\x10\x25\x8e\x04\xa5\xf5\x2a\x91\x1a\x75\xc8\x75\xcb\xc1\x7e\xb7\xa2\x7f\x62\x5c\xe4\xe4\xde\xd3\x3a\x64\xe1\x18\x2e\x1f\x63\xde\xbd\xab\xee\x78\x5d\x7a\xe7\x26\xc6\x69\xa3\x80\x9d\x90\x9c\xd0\x12\xce\xcb\x72\xc9\x91\xea\x5b\x82\x28\xb1\x6d\xaf\xae\xe4\x5a\xa5\x54\xdf\xbd\x56\xa2\xae\x7c\xa0\x0a\x5f\x11\x55\x79\x9e\x48\x6f\xb7\x54\xf7\x55\xe1\x2b\x55\xd2\x28\x49\xc0\x27\x61\xc2\x89\x7a\xf0\xc9\x31\x0f\xd7\x38\x2a\xc0\x0c\x4e\x5d\x18\xfc\x68\x18\xea\xb1\xd6\xa9\x65\x27\xa7\x83\xc0\x4e\x0f\x7e\xa3\x89\x63\x47\x1a\x01\xa0\x52\x8a\x9c\xb0\xc8\x04\x32\xc2\xc3\x9f\x2a\xcc\xe9\xac\xe2\xb4\xcc\x54\x04\x0a\x5b\xca\xb1\x23\xad\x21\xd0\x56\xb2\x93\x8d\x3f\xe2\xb6\x18\x64\x9c\x02\xea\x66\x2e\x1b\xbb\xe9\x51\xa8\xf1\xd2\x6a\xf6\x41\x83\xda\x62\xc9\xbd\xa8\x8d\x4f\x1d\x8a\x15\xd2\xac\x9f\x2d\xa9\x16\x94\x5e\x44\xeb\x1e\xd1\x27\x29\xd2\x28\xab\x3c\xf9\xc0\x4b\x53\x10\x32\xdc\xf4\x4e\xfa\x9e\x32\x03\x3f\x9c\x54\xad\x96\x6a\x99\x95\x98\x48\x21\x59\xab\x8b\x2c\x3d\x5b\x9b\xa6\xf6\x99\xf2\xed\x16\xcc\x7a\xba\x66\x32\xc2\xe8\x14\x0a\x19\x50\xef\x98\xbf\x42\x93\x0d\x6b\xb3\xe1\x9b\x55\xe0\xec\xd0\x9f\x87\xfb\xa0\x8a\xd9\xf8\xa3\x38\x97\x8a\x41\x86\xb5\x4a\x0d\x9c\x31\x59\x24\xcb\x47\x0b\xbf\x2d\x68\x81\x24\x71\xe5\x58\x02\xaa\x59\xf7\x7c\x38\x81\x1f\x55\x02\x29\x25\x2b\xee\x87\x7f\x7b\xf0\x64\x18\xf7\x0c\x0d\x26\x6b\x19\xa6\xf2\x5b\x77\x97\xa4\xb9\xa5\xbd\x0e\xfc\x37\x4c\x8a\x8d\x07\xc4\x65\xac\xb9\x34\x5c\x8b\x50\xbc\x43\xf7\xfe\x57\xa4\xe7\xc0\x9f\x8e\xcb\x18\xdb\x90\x84\xc8\xe3\x2a\x78\x13\xa8\x1d\x2e\x40\x92\x7d\x1e\x9e\xf4\x89\xd3\xda\xa6\x01\xc3\x62\x9f\x90\x51\x9b\xdf\x72\xf5\xb8\x5e\x32\xa4\x46\xb6\xbc\x7d\xdc\x96\xb3\x80\xaf\xf7\x55\xfb\xa4\x2d\x9e\x0a\x4b\xf3\xba\x37\x02\x66\x62\xb6\xdf\x27\x8a\x6b\xb4\x78\x02\x0b\x5b\xbc\xe9\x9b\x1e\x89\x07\xc5\x55\x91\xb9\xac\x44\x85\x80\xc7\xac\x7b\xa5\xf0\x9f\x78\xb6\x0e\x5f\x2a\x0b\x23\xf6\xa5\x08\xf0\x61\x87\xa7\xa9\xcc\x3b\xac\xee\x63\xb7\xdd\xae\x90\xf9\x59\xfd\xb7\x01\x29\xc8\x5c\x8b\xbf\xf9\x99\x35\x8f\x35\x90\xbc\xe6\x10\x6c\x45\xdc\x28\xb6\x1d\x01\x3e\x0a\xdd\x8f\xbc\x37\x06\x08\x49\xf8\x30\x1c\x0e\x14\x64\x2b\x5d\x44\x71\x52\x66\xa3\x9e\xba\x5c\x2c\x97\xa3\x9e\xd2\xe5\x84\x70\x10\x29\xfe\xc0\x42\x79\x1e\x81\xa6\x6a\x81\xa4\xe3\x29\x49\x3e\x06\xf2\x00\x9c\xa2\x94\xf6\xb7\x73\x47\xde\x8c\x5a\x8d\xe9\x24\x4b\x4e\xba\xac\xed\x85\x55\x61\x2a\x6e\x1f\x18\xdb\x43\xa0\xe3\x41\x36\x81\x1b\xe5\x11\x19\x74\xaf\xcc\x56\xd1\x6f\x10\x7e\x3d\x29\x3b\x3b\x5d\xc7\x1c\xf8\x8f\xa3\xe1\x90\xa8\x20\xb8\x15\x77\x6a\x2e\x52\xdb\x21\x00\x4b\xcd\x41\xe2\xf4\x62\x1e\x0e\xf5\x59\xbb\xcb\x97\xba\xfd\x99\x19\xc6\xfc\x61\x5f\x7c\x84\x03\x08\x5d\x01\xa6\x1a\x41\xe3\xc7\xed\xae\x83\x1c\x84\x0f\xfc\x13\xce\x55\xac\xc0\x2e\xd4\x62\xaf\xe3\xc7\x9f\x9d\x0c\x4f\x45\x32\x80\x05\x07\x1d\x53\xce\x2e\xa3\x06\x2b\x62\xb5\x7d\xf2\x0c\x55\x6e\x78\x9a\x21\x0f\xd0\xfe\xac\xdd\x53\xed\xbf\xed\x3d\x68\x7b\x0e\xa4\x0e\xfe\xe8\xbe\xba\x59\xf2\xdc\xed\x1e\x5c\x07\xc6\x85\xe4\x9d\xd0\x29\xb2\x55\x3e\x81\x18\xab\x68\x96\xe0\x45\x39\xb0\x0f\x12\xd7\x42\x64\x88\x99\x95\xd8\xe7\xa1\x63\x9b\xd6\xbc\x2b\xce\x6b\x42\xf8\x90\xd5\x8c\x04\x40\xec\x39\x51\x74\xec\xe0\xdc\xc0\x1f\xbe\x2b\x9f\xb3\xfa\xc5\x51\x47\xf5\x4b\x44\x83\x2b\xf8\x64\x5f\x53\xae\xb1\xff\x89\x5b\x40\x03\xdd\x62\x23\xac\x83\x48\xc3\x76\x54\x09\x04\xfb\x5d\x52\x83\xb9\x4e\x9c\x81\x66\xc7\xf2\x24\x09\x91\xf0\xf5\x3b\x66\x6b\x45\x14\x04\x20\xd7\x89\x87\x37\x31\xe8\x4d\xd8\x31\x64\x67\x37\x78\x5a\x1d\x54\xb0\x36\x54\xb0\x5c\x6c\x79\x86\x1a\xb6\xf2\x4c\x7d\x8d\x4d\x2c\x0b\x5b\x9e\x39\xe6\x95\x3b\x34\x08\xda\x54\x3a\x2e\xcf\x4e\x2c\x57\xb5\x4a\xca\xe3\x92\x42\x1c\x9a\x11\xf0\x0f\x49\xb0\xc2\x05\x37\x34\x1b\xca\xd9\x28\x0a\xe1\x54\xa7\x3d\xc3\x61\x90\x90\xc9\x90\xab\x84\x49\x81\x53\x37\xe4\xe9\xc1\xf6\x36\x1a\xf5\x60\x0a\x51\x85\x96\xc8\x14\xe9\xc7\xb2\x7b\xb8\x3b\x03\xbc\x35\x2d\xd6\x01\xa1\x3e\x92\x76\x0e\x6c\x68\xad\xa2\x89\x95\x70\x60\x6e\x42\x42\x72\x54\x55\xa2\x1b\x1d\xab\xa3\x91\x2f\xe1\xee\x81\x5c\x36\x68\xa7\xed\xd0\x04\x4e\xc4\xda\xd1\x99\xbf\x24\x29\xad\x1c\x98\x9a\x6f\xde\x9e\xe4\x7a\x56\xa0\xe1\xa1\xb0\x55\x22\xf3\xeb\x95\x93\xab\xf0\x6b\x16\x4e\x47\x5a\x01\xd9\x42\xae\x2d\x58\x38\x08\x81\xa5\xcf\x75\xbe\xc6\x65\x62\x4e\x1d\xaf\x6f\xe4\xd4\xb9\x13\x07\xb1\x35\x10\x24\xee\x8b\x27\x0d\xc9\x09\x8e\x72\x03\x47\xb9\x07\x47\xf9\x59\x28\x04\xc9\x11\x92\xa0\xda\x71\x7e\xe6\x8b\x40\xcc\xb7\x3b\x98\x24\x1a\x67\xd7\xee\x4a\x31\x95\x01\xb6\x9c\x80\x8d\x27\x83\x05\x81\x6e\x9a\xb1\x80\x8a\x96\x4b\x34\x0d\xca\xa3\x18\x6c\x7d\x81\xf2\x37\xe4\x3d\xee\xbe\xc8\x1b\xa1\x2f\xa3\xc5\x12\x4d\x73\xed\x7b\x19\xbe\xc3\x74\xca\xf6\x39\x96\xba\x3e\x86\x07\xc9\x7e\x72\xfd\x80\x01\xb5\x95\x9d\x71\xa6\xac\xe6\x58\x52\xbb\xa4\x7f\x18\xd8\x3c\xb0\x91\x94\x52\xb5\x10\xc2\x88\xf9\x0b\x14\xa0\xc4\xea\xda\x48\x9d\xa5\xd9\x05\x20\x5a\x0b\x43\x74\xa9\x20\xd5\x17\xab\x9c\x48\x10\x6a\x7b\x07\xbb\xa0\x0b\x1d\xe7\x94\x72\xb9\xe0\x5a\x33\x94\xef\x71\xff\x86\x13\x04\xa3\x7c\xea\xf4\x42\xab\x1f\xde\xbf\x7d\x27\xfd\x22\xac\x2a\xd9\x70\x8e\x31\x1b\x77\x5d\x80\x9d\xa0\xe7\xe9\x22\xc9\xaf\xfa\xee\x4c\xf5\x81\xb7\x44\xf0\xac\x15\xe3\x4b\x2b\x87\x69\x9e\x2d\x97\x7a\x6a\xc7\xf7\x0d\x09\x69\x63\x4a\xca\x49\x8d\xb6\x72\x03\x37\x57\xbe\x83\x09\x26\x53\x43\xc5\x33\xc9\x17\x55\x34\x06\x43\x46\xa9\xe7\xad\x02\x5f\x70\x62\x27\xfe\xcd\xba\xf9\xc6\x8a\x3b\x7b\x8e\x57\xf6\x5c\x7d\xad\xbc\x0b\x7b\x5e\x55\xf4\x9a\xdb\x0d\xb7\xf5\x5c\x28\xfe\xe8\x36\x9e\x79\x57\xd1\xdd\xe6\x6b\x1f\xce\x37\xc1\x6d\x0d\xe4\x86\x60\x2f\x98\xc8\xca\x26\x38\xe2\xd6\x61\xc2\x39\x99\x62\x57\x2d\x16\x6f\xda\xc3\x5c\x27\x64\x76\x2d\x6e\x8d\xc7\x8c\x72\x14\x66\xb6\x57\x37\xff\xbb\x98\xc7\x89\x86\x16\xa6\x31\x8b\xe0\xc1\x44\xd3\x9f\xd3\x01\x0f\x30\x40\x85\x5e\xb7\xeb\x49\x69\xfd\x15\x74\x55\xd8\xd8\x29\xbe\xab\xb5\x11\xbf\x54\x8a\x2a\xad\x68\x02\x56\x17\xd0\xee\xda\x39\xb1\x9a\xb1\xdd\xee\xd6\xb4\x10\x61\x6b\x36\x36\xa9\x22\x33\xae\x8c\xba\xc1\x61\x83\x1d\x57\x6d\x3b\xff\x04\x02\xf9\x26\x04\x09\x74\xe2\x57\x7e\x1b\x89\x09\x10\x95\x9c\x00\x96\xea\x40\x81\x57\xc5\x1d\x8f\xd8\x71\x21\x93\xa3\x6a\xd6\xe0\x8a\xaa\x99\xbf\x2b\xfd\x84\xd3\x97\x2a\x28\xaf\xd0\x6b\x49\x0e\xbd\x6e\xd1\x96\x7f\x47\x54\xd6\x20\x94\xb4\x02\x54\x6f\xf3\xd0\x0a\xd9\x6d\x90\x0f\xe5\xcb\x9a\x37\x47\xac\xd5\x09\x28\xfd\x4d\xf6\xaa\xf8\x2f\x98\x15\x53\x86\xc7\x23\x8d\x9b\x65\x81\xdc\x0a\x2a\xdb\xff\x63\x2f\x1d\xe8\x65\x8a\xb7\x40\xf6\x3f\x19\x17\x78\x85\xfd\x35\xc2\xb3\xe7\x15\x09\xa6\xf2\x80\x98\x5f\x96\x1d\xc5\xc5\x1b\x9d\x50\x47\x16\xed\xa9\x0a\x84\xd4\x7d\xf2\x07\x0c\x0a\xab\x43\x52\x17\x76\xe4\xc5\x0a\x2c\xb2\x68\x6c\x3b\x8f\xab\x2b\x6f\x7d\xde\xd0\xee\x7f\x1d\x09\xd0\x75\xe3\x77\xed\x38\x48\x57\x3f\x49\x92\x67\x19\x18\x4e\xb8\x71\xad\x53\x4f\x3e\x79\x5d\x4f\xa2\xd4\x6c\xa5\xc3\x8b\x66\xaa\xc7\x27\x6e\x98\xc4\x76\x72\xab\x0d\x6a\xea\x68\x59\xac\x27\xf3\xac\x8c\x27\xaa\x42\xa8\xd4\xda\x99\x87\xd4\x5a\xc0\x1f\x10\x5b\x10\x81\x3a\x9c\xda\x2a\xcc\x44\x8c\xd1\x93\x2d\x49\x3c\x1c\xaa\x24\x4e\xcf\x88\x66\x1c\x0c\x86\x83\x81\xcc\x6e\x39\x4e\xb4\x13\x2a\xe7\xd1\x45\x02\x31\xec\xb2\xc0\xc6\x3c\x32\xe4\x4f\x92\x0c\x94\xb5\x9f\x2e\xca\x3c\x4a\x4f\xf5\xc0\xba\x32\x78\x2b\x9a\x1b\x7a\x86\x14\xea\x20\xc4\x2f\x74\x89\x76\x3d\x17\xd4\xe2\xfb\xc8\xb0\x4e\x59\xda\x53\x4b\x8a\x80\x86\x56\x96\x70\x27\xc1\x64\x07\x44\xf4\xbe\x3e\x9a\x79\x09\xbb\x99\x21\x3f\x53\x7d\x38\x7c\x04\xc5\xee\xfe\x1e\xe2\x91\x72\x20\x22\x9d\x11\x74\xac\x61\x5c\xbb\xab\x64\x91\x1c\x8e\x51\x0a\x3c\x07\x54\xc9\xbe\x2c\x72\x80\x1a\x04\x13\xbc\x8c\xb5\xe4\xae\x24\xbb\xab\xcf\xa3\x5b\x8f\xf2\x91\x6f\xf0\xcd\xe7\x07\xbd\xf5\x56\x5e\xd6\x03\xff\x65\xe5\x15\x57\x50\xbf\x5d\x75\xf8\x9e\xfa\x03\x55\xa9\x2a\x9f\x2e\x70\xd3\xc4\x1a\x1e\x02\x11\x7f\xdc\xbd\x5b\x33\x4b\x90\x37\x56\x0e\xcb\x63\x20\x18\x05\x49\x76\x00\x78\x01\x8f\x68\xf5\x4f\xa4\x53\x79\x4a\x83\x59\xd3\x16\x3d\xae\xc1\x62\x7e\xcd\x51\x15\x56\xaa\xb0\xda\xb9\xf9\xb5\xc5\x9a\x1b\x86\xad\x87\x90\x51\x38\xda\xfe\x9f\x4a\x7f\x48\x14\x0b\x27\x63\xdf\xfc\x59\x04\xa6\xe0\x18\x02\x9e\xee\xf1\x34\x2b\xa5\xdf\x6a\x82\xb8\x40\x48\x64\x7d\x62\x2d\x3c\x30\x8f\xcd\x07\x0e\x2d\xcf\x2e\x54\x04\xe9\x71\x20\x80\x62\x5c\x40\x04\x09\xc3\x00\x51\x44\x22\xce\x3e\x96\xea\x0b\x44\x2c\x71\x5a\x94\x3a\x9a\x4a\x46\x05\x97\xd0\x15\x6b\x39\x3e\xf1\x56\x37\x58\x66\x4b\x7e\xbd\x5d\x25\xfe\x48\xe1\x05\x68\xea\xdd\x3f\x73\x7f\xa5\xac\x9a\xe4\x74\x2f\x57\x49\xf2\x2a\x7f\xcf\x61\x85\x3b\x41\xc7\x5d\xb1\x67\x10\x2f\xc3\x5a\x43\x83\x8a\x00\x05\xbd\x5c\x01\x65\x08\xb9\x9e\x1d\xb4\x1f\xcf\xb2\xac\x2d\xcc\xf8\xc9\x41\x23\x9a\x19\x1c\x0d\x31\x1b\xc0\x45\xa3\xbc\xc8\xc0\xc8\xac\xb0\xcc\x63\x5c\xa2\xa3\x64\x3c\x8b\x35\x1a\xd2\x8f\xb3\x2c\xd1\x51\x5a\x38\xb1\x7d\x88\xab\xeb\xc9\x4d\x79\xfd\x78\x6f\x89\xcf\x60\x0c\x32\x1c\x66\x93\x09\xd8\x95\x45\xc2\xfb\x00\x74\xa6\xa7\x1a\xcc\x77\x26\x67\xa8\x10\x89\x53\x76\xd3\xc3\x76\xb0\x1a\x5d\x60\xc0\x13\x88\xc0\xb2\x5c\xea\x14\xb2\x2a\xe0\x7a\xcc\x5e\xd8\xda\xab\x3c\x09\x84\xad\x6d\xd2\x9d\x24\xd9\x24\x4a\x76\xbf\x45\xb3\xb1\xdd\x76\x4f\xb5\xa1\x64\x8f\x4a\xf6\xac\xc4\x87\x55\x99\x47\xe9\x0b\x6b\xd6\xee\x13\x36\xf6\x4f\xa7\x6b\xfb\xb6\xdd\x55\xdf\xa8\x9d\xc6\xeb\xed\xb5\x22\x3a\xc3\xb4\x19\xa1\xe4\x55\xe2\x7a\x37\x76\x60\x2c\x25\xf8\x00\x57\x27\xdc\xe8\x2a\x63\x11\x9e\x57\x73\xdb\xeb\x7f\x02\x9b\xb3\xc9\xae\x41\x55\xee\x47\x48\x39\x03\x21\x56\x57\x21\xb8\x33\x21\x5b\x50\xa1\xc0\x1f\x57\x08\xc9\x11\xa0\xe3\xfb\x1b\x69\x59\x5a\xfd\xe3\x60\x37\x46\x4e\xb9\x75\xfd\xc7\xa5\x64\x8c\xc6\xaa\xa8\x33\xcd\x10\xf3\x81\x85\xa3\x21\xe0\x74\x54\xac\xed\x55\x47\x07\x08\xa6\xd4\x28\x76\x8b\xb8\xf1\xe8\x64\x0e\x61\xd6\xbc\x77\xb2\x26\xaa\xd2\x6d\x8e\xa9\x81\xad\xfb\xff\x89\xbb\x9a\xdd\xb6\x71\x20\x7c\xd7\x53\x30\xbe\xc4\x0a\x64\x39\x29\xd2\x64\x6b\xa3\xe8\xfe\xa4\x87\x3d\xb4\x59\xa0\xbd\x05\xc6\x8a\xb1\x28\x45\x70\x22\x09\x94\x9d\x36\x48\xfd\xee\x0b\xce\xf0\x5f\x74\xac\xa4\x59\x74\x0f\x5b\x38\x26\x87\x43\x7a\x28\xce\x8c\x3e\x7e\xe3\xae\xbb\xc6\xf2\x99\xa6\xfb\x62\xee\x80\x1b\xf1\x33\x19\xee\xaa\x90\xd0\x90\x8f\x9f\x2f\xe0\x21\x91\x92\x86\x93\x34\x95\xce\x75\x25\x29\x0d\x91\x85\x52\x67\x67\xc1\x0b\x4f\xf5\x8d\x5c\x76\xcf\xb8\xcc\x0c\xe2\xd5\x8d\xaa\xf6\xf2\x68\xda\x75\x7f\x48\x14\x16\xc4\x92\xfe\xf9\xf2\xeb\xce\x11\xe0\x4a\x34\x75\x9f\x95\x00\x93\x9a\x9c\xc4\xf2\xde\xb4\x04\xab\x7d\x95\x7d\xbf\xdc\xe2\x3b\x07\x15\x0d\x3a\x91\x56\xcf\xbf\x31\x5e\x95\x81\x2e\x9f\x58\x2f\xd4\xc7\x38\xb8\x70\x47\x52\xf0\xc1\xac\xcf\x29\x46\x3e\xe6\x2f\xf2\x3d\xa2\xc6\xa0\x76\x55\x5d\xde\x82\x37\xd0\x25\xba\x58\x50\xde\x6c\xae\xe5\x1f\x81\x48\x90\x72\x40\x37\x56\xdc\x89\x7a\xe0\xb7\x5e\x73\x38\x6b\x1a\x52\x36\x92\x00\x10\x5e\x98\x34\xcd\x3a\x21\xd9\xa6\xcd\x70\xb5\x37\xad\x78\x96\x2a\x86\x91\x16\x99\xe0\x3d\x14\xa4\x3b\xc7\x39\xa9\x80\x46\x7a\x4e\xaa\xc9\x44\x19\xa7\xbb\xca\x1a\xf5\x28\x8c\xd9\x5e\x03\x63\xcb\xfa\xf7\x68\x11\x8e\x9f\x68\xa0\x9c\x75\x9c\x7b\xcb\xb5\xbf\x2f\x21\x9b\x16\x49\x99\x1d\x39\x9b\x76\x68\xe7\xc9\xc4\x83\x53\x78\x8b\x0a\xef\xb8\x90\xfc\x29\xbc\xb2\x9c\x75\xeb\x86\x33\x72\xcb\x28\x5c\x0a\x4e\xd3\x4e\x3d\x7b\x5c\x27\xfd\xc0\x89\xcc\x95\x7e\xb0\xee\x73\x54\x84\x84\xd4\xd6\xc9\xb8\x34\x3d\x8c\x03\xd0\x0f\x77\x10\xcb\xe7\xc7\x44\xa0\x65\x9b\x07\xd6\x97\x4e\x78\x10\x00\x0b\x28\x3d\x7a\x5a\x78\x41\x44\x6f\x27\x89\x68\x44\x75\xd2\xa9\xc1\x1e\x70\x23\x30\x02\x5c\x99\xb0\xc5\x63\xea\xe7\x0f\x19\x8d\x58\xb6\x66\x07\x39\x6a\x6e\xd6\x77\xce\x2a\x04\x52\x41\x6a\xd3\xa9\xf0\x1a\x36\xf6\x35\x5d\xae\x86\xc7\xd0\xae\x17\x60\x29\xf9\x41\x68\x35\xdb\xe5\xa6\x38\xff\x79\xcf\x91\x0f\xbe\x73\x67\x41\xdf\x5f\xe6\xdf\x3d\xc7\xbb\x7b\x05\xdf\xee\xff\xf0\xec\x86\xf8\x75\xbb\xbc\xba\xa1\x3e\xdd\x4b\x3d\x3a\xbd\x09\x77\xc5\xe5\x3f\x7e\xf4\xd2\x76\x9e\x33\x32\x0f\xef\xe1\x03\x63\x50\x43\xb7\xe1\x0e\x37\xe7\x29\xa7\x24\xec\x25\x38\xae\x44\xbf\x7b\x6f\x67\x87\x21\xb6\xd2\xbd\x49\x85\xaf\x13\xbd\x9e\x23\xfa\x8a\x6e\xe8\x50\x27\x74\x1b\x3d\xf9\x96\xc0\x4a\xc9\xab\x97\x06\x2f\xcc\x91\xef\x75\xcb\x3c\xa7\x6c\x3b\x0f\xd2\x79\xc9\xbd\x17\x00\x90\x4a\x03\x77\xa0\x90\xf0\xda\x00\x93\x62\x16\x2d\x26\xb2\xd1\xe8\x1c\x15\x3c\x13\x2d\x5c\xa2\xd5\x41\x53\xd1\xa8\x36\x06\x96\xe7\xd2\x15\x99\x2e\x3e\x37\x0f\x3a\xa5\x37\xe6\xce\x9e\xc5\x95\x72\x63\xee\xbb\x91\x09\xf6\x76\x08\x69\xcc\xb5\xea\xb8\x77\xaf\x06\xa7\x28\x56\x09\x0b\x07\x09\xeb\x1a\xcd\xce\x4f\x93\x91\xba\xa2\x34\x9a\x9d\x9e\x27\x23\x0b\xd4\x38\x9a\xbd\x3d\xde\x2e\x92\xf3\xd3\x21\x5c\xdb\x1e\xfb\x6d\x8f\xfc\x1e\x70\x44\x12\x3e\x64\x15\x03\xa0\xbc\xf4\x10\x69\x48\x74\x86\x5f\x60\x79\x55\x24\xa2\x83\x29\x26\x20\x05\x1f\xc8\xcf\x93\x82\x38\x6c\x71\xfc\x13\xca\x4b\x5d\xbf\xd0\x92\x2a\x36\xda\x93\x32\x45\xbf\xf7\xe1\x7e\x56\xaa\x65\x80\x08\x23\x41\xfd\x20\x62\x99\xdf\x3e\xb3\xf6\x12\x16\x9d\x8a\x1f\xa3\x68\x7a\x74\x14\x91\x23\xf2\x09\x59\x60\x15\x6d\x6f\x44\x8e\xa6\x81\x1f\x22\x67\x2d\x67\x4b\xba\x66\x73\xd3\x91\xf2\x95\xbc\x6b\xa4\xca\x4d\xcb\xc4\x7f\xdd\x00\xd7\xc4\xa6\x03\x50\xfd\x91\x75\x93\x0f\xf8\xc1\x2b\x96\x9b\xaa\x06\xc8\xfc\xf0\x8d\x8a\xef\x81\xa2\xf6\xfa\x81\xe4\xac\xa0\x62\xe3\x46\x04\x06\xfa\xbb\x20\x19\x1c\x96\x5f\xd6\x0d\xa7\x25\x4b\xeb\xe6\x42\xaa\x23\x24\x20\x29\x4f\x26\xef\x5d\x99\x20\xca\xc1\xc2\x87\x05\x41\x8e\x6f\xaf\x2c\x3d\x77\xa3\x76\x27\xc4\x21\xab\x12\xa6\x09\x6b\xa4\xa5\xc7\xe2\x92\x55\x7d\xdf\xac\x70\xee\xe1\x61\x39\x5d\xb2\x9f\x1b\x16\x87\x20\xd9\xb2\xa9\xbb\xe6\x56\x8a\x1c\xc7\x99\x4a\x41\x92\xa6\x30\x5f\x42\x6d\xb6\x71\x9c\x29\x85\x7e\x6f\x29\xa7\x77\xe4\x51\x95\xc9\xda\x92\xa2\x26\x13\x7c\x4b\xa2\x7e\x17\xe0\x8b\x97\x0a\xd8\x7d\x70\x2f\x6e\xc9\x5d\x57\xca\x2e\xf2\x66\x82\x08\xab\x78\x55\x6b\x80\x96\x1c\x1c\x57\x24\x2b\x6a\x98\x9d\x5c\x19\x10\xc8\xa5\x55\x58\x6a\x50\x48\xa5\x8e\xcc\xcc\x47\xba\xe4\x81\x98\x4f\x51\x67\xd0\x93\xb6\x15\x52\xcb\x2f\xd1\x5a\xb5\xd2\xba\x23\x19\x17\x75\x22\x74\x34\x50\xc4\x65\x53\x17\x55\x39\x3e\x74\x8c\xe7\x30\xf6\xb6\x5a\x51\x3b\x9e\xb3\xb0\x4b\x96\x2b\xe8\x3c\x44\x78\xbd\xb1\x72\xa7\x92\xcc\x01\x76\x71\x5f\xf8\xa8\xb1\x7d\x7b\x3b\x8c\x5d\xb6\x34\xb7\xc4\x81\x50\x5f\xe7\xbd\x4c\x54\xa6\x85\x79\x56\xe4\x0a\x73\x0d\x23\x20\xaa\xdf\x54\x68\xee\xb6\x94\xff\xea\x55\x70\xd9\xaf\xac\x45\x93\xb5\x69\xa0\xf0\x8a\x55\x24\x4c\xaf\xa5\x6c\x68\xd6\x0c\x09\xb0\xf1\x41\xf2\xd7\x0d\x5b\xae\x3a\x77\x8f\x64\x10\xd2\xc9\x6c\x2f\x81\xaa\xe9\x9d\xae\xb2\x53\x56\xf7\xc2\xa6\xc4\x19\xd5\xb3\x69\x65\x9f\x78\xeb\xd4\x36\xb3\x3f\x51\xd8\xd6\x98\x10\xaf\xee\xd1\xba\x6d\x1b\xc2\xe5\x25\x63\x03\x4a\x9b\x4e\x09\x5d\x2e\x59\xd7\x01\xb9\x25\x56\x87\xb4\x75\x85\x10\x62\xcd\xab\xb2\x64\x9c\x50\x72\x71\xf9\xe9\x23\x60\x09\xa1\x08\x44\x4d\x3a\x5a\xe7\xd7\xcd\x77\x96\x93\xaa\xe0\xf4\x0e\xf8\x2f\xb1\x0e\xaf\xb6\x99\x80\x50\x0d\xe4\xd5\x96\xa7\x0b\xca\xfe\xeb\xdb\xac\x6e\x11\xe9\x2b\xff\xe4\x7d\x48\xd3\x2b\x31\xa9\x85\x72\x47\xc4\x79\x22\xce\x95\x7b\x7a\xdb\x1f\x4d\x7e\x96\xc8\x5d\xd1\xc4\xbd\xd6\x8d\xe7\xa3\x30\x88\xc3\x79\xaf\x1a\xe2\x2f\xab\x7c\x18\xab\x63\xf1\x6c\xc8\xb1\xa8\x0d\xf5\xea\x74\x71\x75\xf2\x6e\x21\x22\x5d\x34\x64\xd9\x26\x31\xa6\x0c\x0e\x50\xbe\x69\x47\xb3\x93\x77\x62\x80\xf3\x67\x0f\xf0\xe6\x78\xff\x00\xe9\x54\x3a\xff\x53\x55\x11\x66\x34\x3b\x3f\xf3\x0b\x34\x82\x1a\x6f\x8e\xdd\xea\x8c\x42\xa9\xdf\x86\x28\xd5\x3b\xdb\xd9\xf7\x35\xab\x73\xac\x3d\x70\x43\xbb\xcb\x6f\xf5\x3f\x50\xfa\x66\xfd\x60\x20\x73\xc6\x41\x76\x5b\xd8\x68\x75\x94\x33\x76\xb0\xd1\x94\x97\x50\x48\xfc\x51\xa2\xd6\x42\x0c\x46\x7e\xf5\xaf\x20\xa5\x0a\x62\xd6\xed\x5a\x61\x57\xd5\x22\xd2\x4d\xb4\xdc\x15\x83\xf8\x5d\xa1\xe1\xfb\xa4\x26\xae\xfe\xb2\xd6\xa1\x04\xc4\xaf\xd8\x43\x8f\x43\x03\x9e\xcc\x30\x0d\x55\xae\x1e\x5b\xc3\x27\xa7\xa5\xcf\xdb\xa0\x81\x7a\xe8\x5b\x82\x0c\x59\x97\x66\xbb\x10\xff\x4b\xae\x4e\xce\x16\xf1\x3c\xfa\x2f\x00\x00\xff\xff\xf2\xcc\xc4\xd5\x21\xce\x09\x00") func staticsJsBundleJsBytes() ([]byte, error) { return bindataRead( @@ -3397,9 +3334,6 @@ func AssetNames() []string { var _bindata = map[string]func() (*asset, error){ "js/api.js": jsApiJs, "js/browser.js": jsBrowserJs, - "js/otto.js": jsOttoJs, - "js/promise-7.0.4.min.js": jsPromise704MinJs, - "js/promise-done-7.0.4.min.js": jsPromiseDone704MinJs, "rbac/policy.csv": rbacPolicyCsv, "statics/index.html": staticsIndexHtml, "statics/css/bootstrap.3.3.7.min.css": staticsCssBootstrap337MinCss, @@ -3595,11 +3529,8 @@ type bintree struct { var _bintree = &bintree{nil, map[string]*bintree{ "js": {nil, map[string]*bintree{ - "api.js": {jsApiJs, map[string]*bintree{}}, - "browser.js": {jsBrowserJs, map[string]*bintree{}}, - "otto.js": {jsOttoJs, map[string]*bintree{}}, - "promise-7.0.4.min.js": {jsPromise704MinJs, map[string]*bintree{}}, - "promise-done-7.0.4.min.js": {jsPromiseDone704MinJs, map[string]*bintree{}}, + "api.js": {jsApiJs, map[string]*bintree{}}, + "browser.js": {jsBrowserJs, map[string]*bintree{}}, }}, "rbac": {nil, map[string]*bintree{ "policy.csv": {rbacPolicyCsv, map[string]*bintree{}}, diff --git a/statics/js/bundle.js b/statics/js/bundle.js index 9da4f1fe32..c945706144 100644 --- a/statics/js/bundle.js +++ b/statics/js/bundle.js @@ -172,38 +172,6 @@ var Alert = /** @class */ (function (_super) { return Alert; }(APIObject)); exports.Alert = Alert; -var Capture = /** @class */ (function (_super) { - __extends(Capture, _super); - function Capture() { - return _super !== null && _super.apply(this, arguments) || this; - } - return Capture; -}(APIObject)); -exports.Capture = Capture; -var EdgeRule = /** @class */ (function (_super) { - __extends(EdgeRule, _super); - function EdgeRule() { - return _super !== null && _super.apply(this, arguments) || this; - } - return EdgeRule; -}(APIObject)); -exports.EdgeRule = EdgeRule; -var NodeRule = /** @class */ (function (_super) { - __extends(NodeRule, _super); - function NodeRule() { - return _super !== null && _super.apply(this, arguments) || this; - } - return NodeRule; -}(APIObject)); -exports.NodeRule = NodeRule; -var PacketInjection = /** @class */ (function (_super) { - __extends(PacketInjection, _super); - function PacketInjection() { - return _super !== null && _super.apply(this, arguments) || this; - } - return PacketInjection; -}(APIObject)); -exports.PacketInjection = PacketInjection; var Workflow = /** @class */ (function (_super) { __extends(Workflow, _super); function Workflow() { @@ -390,13 +358,6 @@ var G = /** @class */ (function (_super) { } return new (E.bind.apply(E, [void 0, this.api, this].concat(params)))(); }; - G.prototype.Flows = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Flows.bind.apply(Flows, [void 0, this.api, this].concat(params)))(); - }; return G; }(Step)); exports.G = G; @@ -584,27 +545,6 @@ var V = /** @class */ (function (_super) { } return new (SortV.bind.apply(SortV, [void 0, this.api, this].concat(params)))(); }; - V.prototype.Metrics = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Metrics.bind.apply(Metrics, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Sockets = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Sockets.bind.apply(Sockets, [void 0, this.api, this].concat(params)))(); - }; - V.prototype.Flows = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Flows.bind.apply(Flows, [void 0, this.api, this].concat(params)))(); - }; return V; }(Step)); exports.V = V; @@ -1009,10436 +949,9322 @@ exports.FOREVER = new Predicate("FOREVER"); exports.NOW = new Predicate("NOW"); exports.DESC = new Predicate("DESC"); exports.ASC = new Predicate("ASC"); -var Metric = /** @class */ (function () { - function Metric() { - } - return Metric; -}()); -exports.Metric = Metric; -var FlowLayer = /** @class */ (function () { - function FlowLayer() { - } - return FlowLayer; -}()); -exports.FlowLayer = FlowLayer; -var ICMPLayer = /** @class */ (function () { - function ICMPLayer() { +var Nodes = /** @class */ (function (_super) { + __extends(Nodes, _super); + function Nodes() { + return _super !== null && _super.apply(this, arguments) || this; } - return ICMPLayer; -}()); -exports.ICMPLayer = ICMPLayer; -var FlowMetric = /** @class */ (function () { - function FlowMetric() { + Nodes.prototype.name = function () { return "Nodes"; }; + return Nodes; +}(V)); +exports.Nodes = Nodes; +var Value = /** @class */ (function (_super) { + __extends(Value, _super); + function Value() { + return _super !== null && _super.apply(this, arguments) || this; } - return FlowMetric; -}()); -exports.FlowMetric = FlowMetric; -var RawPacket = /** @class */ (function () { - function RawPacket() { + Value.prototype.serialize = function (data) { + return data; + }; + return Value; +}(Step)); +exports.Value = Value; +var Count = /** @class */ (function (_super) { + __extends(Count, _super); + function Count() { + return _super !== null && _super.apply(this, arguments) || this; } - return RawPacket; -}()); -exports.RawPacket = RawPacket; -var TCPMetric = /** @class */ (function () { - function TCPMetric() { + Count.prototype.name = function () { return "Count"; }; + return Count; +}(Value)); +exports.Count = Count; +var Values = /** @class */ (function (_super) { + __extends(Values, _super); + function Values() { + return _super !== null && _super.apply(this, arguments) || this; } - return TCPMetric; -}()); -exports.TCPMetric = TCPMetric; -var Flow = /** @class */ (function () { - function Flow() { + Values.prototype.name = function () { return "Values"; }; + return Values; +}(Value)); +exports.Values = Values; +var Keys = /** @class */ (function (_super) { + __extends(Keys, _super); + function Keys() { + return _super !== null && _super.apply(this, arguments) || this; } - return Flow; -}()); -exports.Flow = Flow; -var Flows = /** @class */ (function (_super) { - __extends(Flows, _super); - function Flows() { + Keys.prototype.name = function () { return "Keys"; }; + return Keys; +}(Value)); +exports.Keys = Keys; +var Sum = /** @class */ (function (_super) { + __extends(Sum, _super); + function Sum() { return _super !== null && _super.apply(this, arguments) || this; } - Flows.prototype.name = function () { return "Flows"; }; - Flows.prototype.serialize = function (data) { - return SerializationHelper.unmarshalArray(data, Flow); - }; - Flows.prototype.Has = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasFlows.bind.apply(HasFlows, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.HasEither = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasEitherFlows.bind.apply(HasEitherFlows, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.Count = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new Count(this.api, this); - }; - Flows.prototype.Values = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Values.bind.apply(Values, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.Keys = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Keys.bind.apply(Keys, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.Sum = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Keys.bind.apply(Keys, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.Sort = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (SortFlows.bind.apply(SortFlows, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.Out = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Out.bind.apply(Out, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.In = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (In.bind.apply(In, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.Both = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Both.bind.apply(Both, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.Nodes = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Nodes.bind.apply(Nodes, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.Hops = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; + Sum.prototype.name = function () { return "Sum"; }; + return Sum; +}(Value)); +exports.Sum = Sum; +var Client = /** @class */ (function () { + function Client(options) { + options = options || {}; + this.baseURL = options["baseURL"] || ""; + this.username = options["username"] || ""; + this.password = options["password"] || ""; + this.cookie = options["cookie"] || ""; + this.alerts = new API(this, "alert", Alert); + this.workflows = new API(this, "workflow", Workflow); + this.gremlin = new GremlinAPI(this); + this.G = this.gremlin.G(); + } + Client.prototype.login = function () { + var self = this; + if (this.username && this.password) { + return makeRequest(this, "/login", "POST", querystring.stringify({ "username": this.username, "password": this.password }), { "contentType": "application/x-www-form-urlencoded", + "dataType": "" }); } - return new (Hops.bind.apply(Hops, [void 0, this.api, this].concat(params)))(); + return Promise.resolve(); }; - Flows.prototype.CaptureNode = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; + Client.prototype.request = function (url, method, data, opts) { + if (this.cookie) { + opts["headers"] = { "Cookie": this.cookie }; } - return new (CaptureNode.bind.apply(CaptureNode, [void 0, this.api, this].concat(params)))(); + return makeRequest(this, url, method, data, opts); }; - Flows.prototype.Metrics = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Metrics.bind.apply(Metrics, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.RawPackets = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (RawPackets.bind.apply(RawPackets, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.Sockets = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Sockets.bind.apply(Sockets, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.Dedup = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (DedupFlows.bind.apply(DedupFlows, [void 0, this.api, this].concat(params)))(); - }; - Flows.prototype.Group = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (GroupFlows.bind.apply(GroupFlows, [void 0, this.api, this].concat(params)))(); - }; - return Flows; -}(Step)); -exports.Flows = Flows; -var GroupFlows = /** @class */ (function (_super) { - __extends(GroupFlows, _super); - function GroupFlows() { - return _super !== null && _super.apply(this, arguments) || this; - } - GroupFlows.prototype.name = function () { return "Group"; }; - GroupFlows.prototype.serialize = function (data) { - return SerializationHelper.unmarshalMapArray(data[0], Flow); - }; - GroupFlows.prototype.MoreThan = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (GroupFlows.bind.apply(GroupFlows, [void 0, this.api, this].concat(params)))(); - }; - return GroupFlows; -}(Step)); -exports.GroupFlows = GroupFlows; -var HasFlows = /** @class */ (function (_super) { - __extends(HasFlows, _super); - function HasFlows() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HasFlows; -}(MixinStep(Flows, "Has"))); -var HasEitherFlows = /** @class */ (function (_super) { - __extends(HasEitherFlows, _super); - function HasEitherFlows() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HasEitherFlows; -}(MixinStep(Flows, "HasEither"))); -var SortFlows = /** @class */ (function (_super) { - __extends(SortFlows, _super); - function SortFlows() { - return _super !== null && _super.apply(this, arguments) || this; - } - return SortFlows; -}(MixinStep(Flows, "Sort"))); -var DedupFlows = /** @class */ (function (_super) { - __extends(DedupFlows, _super); - function DedupFlows() { - return _super !== null && _super.apply(this, arguments) || this; - } - return DedupFlows; -}(MixinStep(Flows, "Dedup"))); -var Nodes = /** @class */ (function (_super) { - __extends(Nodes, _super); - function Nodes() { - return _super !== null && _super.apply(this, arguments) || this; - } - Nodes.prototype.name = function () { return "Nodes"; }; - return Nodes; -}(V)); -exports.Nodes = Nodes; -var Hops = /** @class */ (function (_super) { - __extends(Hops, _super); - function Hops() { - return _super !== null && _super.apply(this, arguments) || this; - } - Hops.prototype.name = function () { return "Hops"; }; - return Hops; -}(V)); -exports.Hops = Hops; -var CaptureNode = /** @class */ (function (_super) { - __extends(CaptureNode, _super); - function CaptureNode() { - return _super !== null && _super.apply(this, arguments) || this; - } - CaptureNode.prototype.name = function () { return "CaptureNode"; }; - return CaptureNode; -}(V)); -exports.CaptureNode = CaptureNode; -var Value = /** @class */ (function (_super) { - __extends(Value, _super); - function Value() { - return _super !== null && _super.apply(this, arguments) || this; - } - Value.prototype.serialize = function (data) { - return data; - }; - return Value; -}(Step)); -exports.Value = Value; -var Count = /** @class */ (function (_super) { - __extends(Count, _super); - function Count() { - return _super !== null && _super.apply(this, arguments) || this; - } - Count.prototype.name = function () { return "Count"; }; - return Count; -}(Value)); -exports.Count = Count; -var Values = /** @class */ (function (_super) { - __extends(Values, _super); - function Values() { - return _super !== null && _super.apply(this, arguments) || this; - } - Values.prototype.name = function () { return "Values"; }; - return Values; -}(Value)); -exports.Values = Values; -var Keys = /** @class */ (function (_super) { - __extends(Keys, _super); - function Keys() { - return _super !== null && _super.apply(this, arguments) || this; - } - Keys.prototype.name = function () { return "Keys"; }; - return Keys; -}(Value)); -exports.Keys = Keys; -var Sum = /** @class */ (function (_super) { - __extends(Sum, _super); - function Sum() { - return _super !== null && _super.apply(this, arguments) || this; - } - Sum.prototype.name = function () { return "Sum"; }; - return Sum; -}(Value)); -exports.Sum = Sum; -var Metrics = /** @class */ (function (_super) { - __extends(Metrics, _super); - function Metrics() { - return _super !== null && _super.apply(this, arguments) || this; - } - Metrics.prototype.name = function () { return "Metrics"; }; - Metrics.prototype.serialize = function (data) { - return SerializationHelper.unmarshalMapArray(data[0], Metric); - }; - Metrics.prototype.Sum = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Sum.bind.apply(Sum, [void 0, this.api, this].concat(params)))(); - }; - Metrics.prototype.Aggregates = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Aggregates.bind.apply(Aggregates, [void 0, this.api, this].concat(params)))(); - }; - Metrics.prototype.Count = function () { - return new Count(this.api, this); - }; - return Metrics; -}(Step)); -exports.Metrics = Metrics; -var Aggregates = /** @class */ (function (_super) { - __extends(Aggregates, _super); - function Aggregates() { - return _super !== null && _super.apply(this, arguments) || this; - } - Aggregates.prototype.name = function () { return "Aggregates"; }; - return Aggregates; -}(Metrics)); -exports.Aggregates = Aggregates; -var RawPackets = /** @class */ (function (_super) { - __extends(RawPackets, _super); - function RawPackets() { - return _super !== null && _super.apply(this, arguments) || this; - } - RawPackets.prototype.name = function () { return "RawPackets"; }; - RawPackets.prototype.serialize = function (data) { - return SerializationHelper.unmarshalMapArray(data[0], RawPacket); - }; - RawPackets.prototype.BPF = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (BPF.bind.apply(BPF, [void 0, this.api, this].concat(params)))(); - }; - return RawPackets; -}(Step)); -exports.RawPackets = RawPackets; -var BPF = /** @class */ (function (_super) { - __extends(BPF, _super); - function BPF() { - return _super !== null && _super.apply(this, arguments) || this; - } - BPF.prototype.name = function () { return "BPF"; }; - return BPF; -}(RawPackets)); -exports.BPF = BPF; -var Socket = /** @class */ (function () { - function Socket() { - } - return Socket; -}()); -var Sockets = /** @class */ (function (_super) { - __extends(Sockets, _super); - function Sockets() { - return _super !== null && _super.apply(this, arguments) || this; - } - Sockets.prototype.name = function () { return "Sockets"; }; - Sockets.prototype.serialize = function (data) { - return SerializationHelper.unmarshalMapArray(data[0], Socket); - }; - Sockets.prototype.Values = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (Values.bind.apply(Values, [void 0, this.api, this].concat(params)))(); - }; - Sockets.prototype.Has = function () { - var params = []; - for (var _i = 0; _i < arguments.length; _i++) { - params[_i] = arguments[_i]; - } - return new (HasSockets.bind.apply(HasSockets, [void 0, this.api, this].concat(params)))(); - }; - return Sockets; -}(Step)); -exports.Sockets = Sockets; -var HasSockets = /** @class */ (function (_super) { - __extends(HasSockets, _super); - function HasSockets() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HasSockets; -}(MixinStep(Sockets, "Has"))); -var Client = /** @class */ (function () { - function Client(options) { - options = options || {}; - this.baseURL = options["baseURL"] || ""; - this.username = options["username"] || ""; - this.password = options["password"] || ""; - this.cookie = options["cookie"] || ""; - this.alerts = new API(this, "alert", Alert); - this.captures = new API(this, "capture", Capture); - this.packetInjections = new API(this, "injectpacket", PacketInjection); - this.nodeRules = new API(this, "noderule", NodeRule); - this.edgeRules = new API(this, "edgerule", EdgeRule); - this.workflows = new API(this, "workflow", Workflow); - this.gremlin = new GremlinAPI(this); - this.G = this.gremlin.G(); - } - Client.prototype.login = function () { - var self = this; - if (this.username && this.password) { - return makeRequest(this, "/login", "POST", querystring.stringify({ "username": this.username, "password": this.password }), { "contentType": "application/x-www-form-urlencoded", - "dataType": "" }); - } - return Promise.resolve(); - }; - Client.prototype.request = function (url, method, data, opts) { - if (this.cookie) { - opts["headers"] = { "Cookie": this.cookie }; - } - return makeRequest(this, url, method, data, opts); - }; - return Client; -}()); -exports.Client = Client; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"browser-or-node":8,"lodash.defaultsdeep":25,"najax":26,"qs":43}],2:[function(require,module,exports){ -"use strict"; -/* - * Copyright (C) 2018 Red Hat, 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 ofthe 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 specificlanguage governing permissions and - * limitations under the License. - * - */ -Object.defineProperty(exports, "__esModule", { value: true }); -var apiLib = require("./api"); -window.api = apiLib; -window.Metadata = apiLib.Metadata; -window.NE = apiLib.NE; -window.GT = apiLib.GT; -window.LT = apiLib.LT; -window.GTE = apiLib.GTE; -window.LTE = apiLib.LTE; -window.IPV4RANGE = apiLib.IPV4RANGE; -window.REGEX = apiLib.REGEX; -window.WITHIN = apiLib.WITHIN; -window.WITHOUT = apiLib.WITHOUT; -window.INSIDE = apiLib.INSIDE; -window.OUTSIDE = apiLib.OUTSIDE; -window.BETWEEN = apiLib.BETWEEN; -window.Alert = apiLib.Alert; -window.Capture = apiLib.Capture; -window.EdgeRule = apiLib.EdgeRule; -window.NodeRule = apiLib.NodeRule; -window.PacketInjection = apiLib.PacketInjection; -window.Workflow = apiLib.Workflow; - -},{"./api":1}],3:[function(require,module,exports){ -(function (global){ -'use strict'; - -// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js -// original notice: - -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -function compare(a, b) { - if (a === b) { - return 0; - } - - var x = a.length; - var y = b.length; - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break; - } - } - - if (x < y) { - return -1; - } - if (y < x) { - return 1; - } - return 0; -} -function isBuffer(b) { - if (global.Buffer && typeof global.Buffer.isBuffer === 'function') { - return global.Buffer.isBuffer(b); - } - return !!(b != null && b._isBuffer); -} - -// based on node assert, original notice: - -// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 -// -// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! -// -// Originally from narwhal.js (http://narwhaljs.org) -// Copyright (c) 2009 Thomas Robinson <280north.com> -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the 'Software'), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -var util = require('util/'); -var hasOwn = Object.prototype.hasOwnProperty; -var pSlice = Array.prototype.slice; -var functionsHaveNames = (function () { - return function foo() {}.name === 'foo'; -}()); -function pToString (obj) { - return Object.prototype.toString.call(obj); -} -function isView(arrbuf) { - if (isBuffer(arrbuf)) { - return false; - } - if (typeof global.ArrayBuffer !== 'function') { - return false; - } - if (typeof ArrayBuffer.isView === 'function') { - return ArrayBuffer.isView(arrbuf); - } - if (!arrbuf) { - return false; - } - if (arrbuf instanceof DataView) { - return true; - } - if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { - return true; - } - return false; -} -// 1. The assert module provides functions that throw -// AssertionError's when particular conditions are not met. The -// assert module must conform to the following interface. - -var assert = module.exports = ok; - -// 2. The AssertionError is defined in assert. -// new assert.AssertionError({ message: message, -// actual: actual, -// expected: expected }) - -var regex = /\s*function\s+([^\(\s]*)\s*/; -// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js -function getName(func) { - if (!util.isFunction(func)) { - return; - } - if (functionsHaveNames) { - return func.name; - } - var str = func.toString(); - var match = str.match(regex); - return match && match[1]; -} -assert.AssertionError = function AssertionError(options) { - this.name = 'AssertionError'; - this.actual = options.actual; - this.expected = options.expected; - this.operator = options.operator; - if (options.message) { - this.message = options.message; - this.generatedMessage = false; - } else { - this.message = getMessage(this); - this.generatedMessage = true; - } - var stackStartFunction = options.stackStartFunction || fail; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, stackStartFunction); - } else { - // non v8 browsers so we can have a stacktrace - var err = new Error(); - if (err.stack) { - var out = err.stack; - - // try to strip useless frames - var fn_name = getName(stackStartFunction); - var idx = out.indexOf('\n' + fn_name); - if (idx >= 0) { - // once we have located the function frame - // we need to strip out everything before it (and its line) - var next_line = out.indexOf('\n', idx + 1); - out = out.substring(next_line + 1); - } - - this.stack = out; - } - } -}; - -// assert.AssertionError instanceof Error -util.inherits(assert.AssertionError, Error); - -function truncate(s, n) { - if (typeof s === 'string') { - return s.length < n ? s : s.slice(0, n); - } else { - return s; - } -} -function inspect(something) { - if (functionsHaveNames || !util.isFunction(something)) { - return util.inspect(something); - } - var rawname = getName(something); - var name = rawname ? ': ' + rawname : ''; - return '[Function' + name + ']'; -} -function getMessage(self) { - return truncate(inspect(self.actual), 128) + ' ' + - self.operator + ' ' + - truncate(inspect(self.expected), 128); -} - -// At present only the three keys mentioned above are used and -// understood by the spec. Implementations or sub modules can pass -// other keys to the AssertionError's constructor - they will be -// ignored. - -// 3. All of the following functions must throw an AssertionError -// when a corresponding condition is not met, with a message that -// may be undefined if not provided. All assertion methods provide -// both the actual and expected values to the assertion error for -// display purposes. - -function fail(actual, expected, message, operator, stackStartFunction) { - throw new assert.AssertionError({ - message: message, - actual: actual, - expected: expected, - operator: operator, - stackStartFunction: stackStartFunction - }); -} - -// EXTENSION! allows for well behaved errors defined elsewhere. -assert.fail = fail; - -// 4. Pure assertion tests whether a value is truthy, as determined -// by !!guard. -// assert.ok(guard, message_opt); -// This statement is equivalent to assert.equal(true, !!guard, -// message_opt);. To test strictly for the value true, use -// assert.strictEqual(true, guard, message_opt);. - -function ok(value, message) { - if (!value) fail(value, true, message, '==', assert.ok); -} -assert.ok = ok; - -// 5. The equality assertion tests shallow, coercive equality with -// ==. -// assert.equal(actual, expected, message_opt); - -assert.equal = function equal(actual, expected, message) { - if (actual != expected) fail(actual, expected, message, '==', assert.equal); -}; - -// 6. The non-equality assertion tests for whether two objects are not equal -// with != assert.notEqual(actual, expected, message_opt); - -assert.notEqual = function notEqual(actual, expected, message) { - if (actual == expected) { - fail(actual, expected, message, '!=', assert.notEqual); - } -}; - -// 7. The equivalence assertion tests a deep equality relation. -// assert.deepEqual(actual, expected, message_opt); - -assert.deepEqual = function deepEqual(actual, expected, message) { - if (!_deepEqual(actual, expected, false)) { - fail(actual, expected, message, 'deepEqual', assert.deepEqual); - } -}; - -assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { - if (!_deepEqual(actual, expected, true)) { - fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual); - } -}; - -function _deepEqual(actual, expected, strict, memos) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - } else if (isBuffer(actual) && isBuffer(expected)) { - return compare(actual, expected) === 0; - - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (util.isDate(actual) && util.isDate(expected)) { - return actual.getTime() === expected.getTime(); - - // 7.3 If the expected value is a RegExp object, the actual value is - // equivalent if it is also a RegExp object with the same source and - // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). - } else if (util.isRegExp(actual) && util.isRegExp(expected)) { - return actual.source === expected.source && - actual.global === expected.global && - actual.multiline === expected.multiline && - actual.lastIndex === expected.lastIndex && - actual.ignoreCase === expected.ignoreCase; - - // 7.4. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if ((actual === null || typeof actual !== 'object') && - (expected === null || typeof expected !== 'object')) { - return strict ? actual === expected : actual == expected; - - // If both values are instances of typed arrays, wrap their underlying - // ArrayBuffers in a Buffer each to increase performance - // This optimization requires the arrays to have the same type as checked by - // Object.prototype.toString (aka pToString). Never perform binary - // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their - // bit patterns are not identical. - } else if (isView(actual) && isView(expected) && - pToString(actual) === pToString(expected) && - !(actual instanceof Float32Array || - actual instanceof Float64Array)) { - return compare(new Uint8Array(actual.buffer), - new Uint8Array(expected.buffer)) === 0; - - // 7.5 For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else if (isBuffer(actual) !== isBuffer(expected)) { - return false; - } else { - memos = memos || {actual: [], expected: []}; - - var actualIndex = memos.actual.indexOf(actual); - if (actualIndex !== -1) { - if (actualIndex === memos.expected.indexOf(expected)) { - return true; - } - } - - memos.actual.push(actual); - memos.expected.push(expected); - - return objEquiv(actual, expected, strict, memos); - } -} - -function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -} - -function objEquiv(a, b, strict, actualVisitedObjects) { - if (a === null || a === undefined || b === null || b === undefined) - return false; - // if one is a primitive, the other must be same - if (util.isPrimitive(a) || util.isPrimitive(b)) - return a === b; - if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) - return false; - var aIsArgs = isArguments(a); - var bIsArgs = isArguments(b); - if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) - return false; - if (aIsArgs) { - a = pSlice.call(a); - b = pSlice.call(b); - return _deepEqual(a, b, strict); - } - var ka = objectKeys(a); - var kb = objectKeys(b); - var key, i; - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length !== kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] !== kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) - return false; - } - return true; -} - -// 8. The non-equivalence assertion tests for any deep inequality. -// assert.notDeepEqual(actual, expected, message_opt); - -assert.notDeepEqual = function notDeepEqual(actual, expected, message) { - if (_deepEqual(actual, expected, false)) { - fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); - } -}; - -assert.notDeepStrictEqual = notDeepStrictEqual; -function notDeepStrictEqual(actual, expected, message) { - if (_deepEqual(actual, expected, true)) { - fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); - } -} - - -// 9. The strict equality assertion tests strict equality, as determined by ===. -// assert.strictEqual(actual, expected, message_opt); - -assert.strictEqual = function strictEqual(actual, expected, message) { - if (actual !== expected) { - fail(actual, expected, message, '===', assert.strictEqual); - } -}; - -// 10. The strict non-equality assertion tests for strict inequality, as -// determined by !==. assert.notStrictEqual(actual, expected, message_opt); - -assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (actual === expected) { - fail(actual, expected, message, '!==', assert.notStrictEqual); - } -}; - -function expectedException(actual, expected) { - if (!actual || !expected) { - return false; - } - - if (Object.prototype.toString.call(expected) == '[object RegExp]') { - return expected.test(actual); - } - - try { - if (actual instanceof expected) { - return true; - } - } catch (e) { - // Ignore. The instanceof check doesn't work for arrow functions. - } - - if (Error.isPrototypeOf(expected)) { - return false; - } - - return expected.call({}, actual) === true; -} - -function _tryBlock(block) { - var error; - try { - block(); - } catch (e) { - error = e; - } - return error; -} - -function _throws(shouldThrow, block, expected, message) { - var actual; - - if (typeof block !== 'function') { - throw new TypeError('"block" argument must be a function'); - } - - if (typeof expected === 'string') { - message = expected; - expected = null; - } - - actual = _tryBlock(block); - - message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + - (message ? ' ' + message : '.'); - - if (shouldThrow && !actual) { - fail(actual, expected, 'Missing expected exception' + message); - } - - var userProvidedMessage = typeof message === 'string'; - var isUnwantedException = !shouldThrow && util.isError(actual); - var isUnexpectedException = !shouldThrow && actual && !expected; - - if ((isUnwantedException && - userProvidedMessage && - expectedException(actual, expected)) || - isUnexpectedException) { - fail(actual, expected, 'Got unwanted exception' + message); - } - - if ((shouldThrow && actual && expected && - !expectedException(actual, expected)) || (!shouldThrow && actual)) { - throw actual; - } -} - -// 11. Expected to throw an error: -// assert.throws(block, Error_opt, message_opt); - -assert.throws = function(block, /*optional*/error, /*optional*/message) { - _throws(true, block, error, message); -}; - -// EXTENSION! This is annoying to write outside this module. -assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { - _throws(false, block, error, message); -}; - -assert.ifError = function(err) { if (err) throw err; }; - -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - if (hasOwn.call(obj, key)) keys.push(key); - } - return keys; -}; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"util/":6}],4:[function(require,module,exports){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} - -},{}],5:[function(require,module,exports){ -module.exports = function isBuffer(arg) { - return arg && typeof arg === 'object' - && typeof arg.copy === 'function' - && typeof arg.fill === 'function' - && typeof arg.readUInt8 === 'function'; -} -},{}],6:[function(require,module,exports){ -(function (process,global){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(' '); - } - - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } - } - return str; -}; - - -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. -exports.deprecate = function(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(global.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } - - if (process.noDeprecation === true) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -}; - - -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; -}; - - -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} -exports.inspect = inspect; - - -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; - -// Don't use 'blue' not visible on cmd.exe -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; - - -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; - } -} - - -function stylizeNoColor(str, styleType) { - return str; -} - - -function arrayToHash(array) { - var hash = {}; - - array.forEach(function(val, idx) { - hash[val] = true; - }); - - return hash; -} - - -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } - - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } - - var base = '', array = false, braces = ['{', '}']; - - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } - - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } - - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } - - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - - return reduceToSingleString(output, base, braces); -} - - -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); -} - - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} - - -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} - - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} - - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = require('./support/isBuffer'); - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - - -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} - - -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; - -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} - - -// log is just a thin wrapper to console.log that prepends a timestamp -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; - - -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ -exports.inherits = require('inherits'); - -exports._extend = function(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -}; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./support/isBuffer":5,"_process":40,"inherits":4}],7:[function(require,module,exports){ -'use strict' - -exports.byteLength = byteLength -exports.toByteArray = toByteArray -exports.fromByteArray = fromByteArray - -var lookup = [] -var revLookup = [] -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array - -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] - revLookup[code.charCodeAt(i)] = i -} - -// Support decoding URL-safe base64 strings, as Node.js does. -// See: https://en.wikipedia.org/wiki/Base64#URL_applications -revLookup['-'.charCodeAt(0)] = 62 -revLookup['_'.charCodeAt(0)] = 63 - -function getLens (b64) { - var len = b64.length - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - var validLen = b64.indexOf('=') - if (validLen === -1) validLen = len - - var placeHoldersLen = validLen === len - ? 0 - : 4 - (validLen % 4) - - return [validLen, placeHoldersLen] -} - -// base64 is 4/3 + up to two characters of the original data -function byteLength (b64) { - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function _byteLength (b64, validLen, placeHoldersLen) { - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function toByteArray (b64) { - var tmp - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) - - var curByte = 0 - - // if there are placeholders, only get up to the last complete 4 chars - var len = placeHoldersLen > 0 - ? validLen - 4 - : validLen - - for (var i = 0; i < len; i += 4) { - tmp = - (revLookup[b64.charCodeAt(i)] << 18) | - (revLookup[b64.charCodeAt(i + 1)] << 12) | - (revLookup[b64.charCodeAt(i + 2)] << 6) | - revLookup[b64.charCodeAt(i + 3)] - arr[curByte++] = (tmp >> 16) & 0xFF - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 2) { - tmp = - (revLookup[b64.charCodeAt(i)] << 2) | - (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 1) { - tmp = - (revLookup[b64.charCodeAt(i)] << 10) | - (revLookup[b64.charCodeAt(i + 1)] << 4) | - (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk( - uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) - )) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1] - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ) - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1] - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ) - } - - return parts.join('') -} - -},{}],8:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/* global window */ - -var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; - -var isNode = typeof module !== 'undefined' && typeof module.exports !== 'undefined'; - -exports.isBrowser = isBrowser; -exports.isNode = isNode; -},{}],9:[function(require,module,exports){ - -},{}],10:[function(require,module,exports){ -(function (process,Buffer){ -'use strict'; -/* eslint camelcase: "off" */ - -var assert = require('assert'); - -var Zstream = require('pako/lib/zlib/zstream'); -var zlib_deflate = require('pako/lib/zlib/deflate.js'); -var zlib_inflate = require('pako/lib/zlib/inflate.js'); -var constants = require('pako/lib/zlib/constants'); - -for (var key in constants) { - exports[key] = constants[key]; -} - -// zlib modes -exports.NONE = 0; -exports.DEFLATE = 1; -exports.INFLATE = 2; -exports.GZIP = 3; -exports.GUNZIP = 4; -exports.DEFLATERAW = 5; -exports.INFLATERAW = 6; -exports.UNZIP = 7; - -var GZIP_HEADER_ID1 = 0x1f; -var GZIP_HEADER_ID2 = 0x8b; - -/** - * Emulate Node's zlib C++ layer for use by the JS layer in index.js - */ -function Zlib(mode) { - if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) { - throw new TypeError('Bad argument'); - } - - this.dictionary = null; - this.err = 0; - this.flush = 0; - this.init_done = false; - this.level = 0; - this.memLevel = 0; - this.mode = mode; - this.strategy = 0; - this.windowBits = 0; - this.write_in_progress = false; - this.pending_close = false; - this.gzip_id_bytes_read = 0; -} - -Zlib.prototype.close = function () { - if (this.write_in_progress) { - this.pending_close = true; - return; - } - - this.pending_close = false; - - assert(this.init_done, 'close before init'); - assert(this.mode <= exports.UNZIP); - - if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) { - zlib_deflate.deflateEnd(this.strm); - } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) { - zlib_inflate.inflateEnd(this.strm); - } - - this.mode = exports.NONE; - - this.dictionary = null; -}; - -Zlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) { - return this._write(true, flush, input, in_off, in_len, out, out_off, out_len); -}; - -Zlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) { - return this._write(false, flush, input, in_off, in_len, out, out_off, out_len); -}; - -Zlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) { - assert.equal(arguments.length, 8); - - assert(this.init_done, 'write before init'); - assert(this.mode !== exports.NONE, 'already finalized'); - assert.equal(false, this.write_in_progress, 'write already in progress'); - assert.equal(false, this.pending_close, 'close is pending'); - - this.write_in_progress = true; - - assert.equal(false, flush === undefined, 'must provide flush value'); - - this.write_in_progress = true; - - if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) { - throw new Error('Invalid flush value'); - } - - if (input == null) { - input = Buffer.alloc(0); - in_len = 0; - in_off = 0; - } - - this.strm.avail_in = in_len; - this.strm.input = input; - this.strm.next_in = in_off; - this.strm.avail_out = out_len; - this.strm.output = out; - this.strm.next_out = out_off; - this.flush = flush; - - if (!async) { - // sync version - this._process(); - - if (this._checkError()) { - return this._afterSync(); - } - return; - } - - // async version - var self = this; - process.nextTick(function () { - self._process(); - self._after(); - }); - - return this; -}; - -Zlib.prototype._afterSync = function () { - var avail_out = this.strm.avail_out; - var avail_in = this.strm.avail_in; - - this.write_in_progress = false; - - return [avail_in, avail_out]; -}; - -Zlib.prototype._process = function () { - var next_expected_header_byte = null; - - // If the avail_out is left at 0, then it means that it ran out - // of room. If there was avail_out left over, then it means - // that all of the input was consumed. - switch (this.mode) { - case exports.DEFLATE: - case exports.GZIP: - case exports.DEFLATERAW: - this.err = zlib_deflate.deflate(this.strm, this.flush); - break; - case exports.UNZIP: - if (this.strm.avail_in > 0) { - next_expected_header_byte = this.strm.next_in; - } - - switch (this.gzip_id_bytes_read) { - case 0: - if (next_expected_header_byte === null) { - break; - } - - if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) { - this.gzip_id_bytes_read = 1; - next_expected_header_byte++; - - if (this.strm.avail_in === 1) { - // The only available byte was already read. - break; - } - } else { - this.mode = exports.INFLATE; - break; - } - - // fallthrough - case 1: - if (next_expected_header_byte === null) { - break; - } - - if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) { - this.gzip_id_bytes_read = 2; - this.mode = exports.GUNZIP; - } else { - // There is no actual difference between INFLATE and INFLATERAW - // (after initialization). - this.mode = exports.INFLATE; - } - - break; - default: - throw new Error('invalid number of gzip magic number bytes read'); - } - - // fallthrough - case exports.INFLATE: - case exports.GUNZIP: - case exports.INFLATERAW: - this.err = zlib_inflate.inflate(this.strm, this.flush - - // If data was encoded with dictionary - );if (this.err === exports.Z_NEED_DICT && this.dictionary) { - // Load it - this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary); - if (this.err === exports.Z_OK) { - // And try to decode again - this.err = zlib_inflate.inflate(this.strm, this.flush); - } else if (this.err === exports.Z_DATA_ERROR) { - // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR. - // Make it possible for After() to tell a bad dictionary from bad - // input. - this.err = exports.Z_NEED_DICT; - } - } - while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) { - // Bytes remain in input buffer. Perhaps this is another compressed - // member in the same archive, or just trailing garbage. - // Trailing zero bytes are okay, though, since they are frequently - // used for padding. + return Client; +}()); +exports.Client = Client; - this.reset(); - this.err = zlib_inflate.inflate(this.strm, this.flush); - } - break; - default: - throw new Error('Unknown mode ' + this.mode); - } -}; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"browser-or-node":2,"lodash.defaultsdeep":7,"najax":8,"qs":11}],2:[function(require,module,exports){ +'use strict'; -Zlib.prototype._checkError = function () { - // Acceptable error states depend on the type of zlib stream. - switch (this.err) { - case exports.Z_OK: - case exports.Z_BUF_ERROR: - if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) { - this._error('unexpected end of file'); - return false; - } - break; - case exports.Z_STREAM_END: - // normal statuses, not fatal - break; - case exports.Z_NEED_DICT: - if (this.dictionary == null) { - this._error('Missing dictionary'); - } else { - this._error('Bad dictionary'); - } - return false; - default: - // something else. - this._error('Zlib error'); - return false; - } +Object.defineProperty(exports, "__esModule", { + value: true +}); +/* global window */ - return true; -}; +var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; -Zlib.prototype._after = function () { - if (!this._checkError()) { - return; - } +var isNode = typeof module !== 'undefined' && typeof module.exports !== 'undefined'; - var avail_out = this.strm.avail_out; - var avail_in = this.strm.avail_in; +exports.isBrowser = isBrowser; +exports.isNode = isNode; +},{}],3:[function(require,module,exports){ - this.write_in_progress = false; +module.exports = require('./lib/jquery-deferred'); +},{"./lib/jquery-deferred":6}],4:[function(require,module,exports){ +var jQuery = module.exports = require("./jquery-core.js"), + core_rspace = /\s+/; +/** +* jQuery Callbacks +* +* Code from: https://github.com/jquery/jquery/blob/master/src/callbacks.js +* +*/ - // call the write() cb - this.callback(avail_in, avail_out); - if (this.pending_close) { - this.close(); - } -}; +// String to Object options format cache +var optionsCache = {}; -Zlib.prototype._error = function (message) { - if (this.strm.msg) { - message = this.strm.msg; - } - this.onerror(message, this.err +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.split( core_rspace ), function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + return jQuery.inArray( fn, list ) > -1; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( list && ( !fired || stack ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; - // no hope of rescue. - );this.write_in_progress = false; - if (this.pending_close) { - this.close(); - } + return self; }; -Zlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) { - assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])'); - - assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits'); - assert(level >= -1 && level <= 9, 'invalid compression level'); - - assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel'); - - assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy'); - - this._init(level, windowBits, memLevel, strategy, dictionary); - this._setDictionary(); -}; -Zlib.prototype.params = function () { - throw new Error('deflateParams Not supported'); -}; +},{"./jquery-core.js":5}],5:[function(require,module,exports){ +/** +* jQuery core object. +* +* Worker with jQuery deferred +* +* Code from: https://github.com/jquery/jquery/blob/master/src/core.js +* +*/ -Zlib.prototype.reset = function () { - this._reset(); - this._setDictionary(); +var jQuery = module.exports = { + type: type + , isArray: isArray + , isFunction: isFunction + , isPlainObject: isPlainObject + , each: each + , extend: extend + , noop: function() {} }; -Zlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) { - this.level = level; - this.windowBits = windowBits; - this.memLevel = memLevel; - this.strategy = strategy; - - this.flush = exports.Z_NO_FLUSH; - - this.err = exports.Z_OK; - - if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) { - this.windowBits += 16; - } - - if (this.mode === exports.UNZIP) { - this.windowBits += 32; - } - - if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) { - this.windowBits = -1 * this.windowBits; - } - - this.strm = new Zstream(); - - switch (this.mode) { - case exports.DEFLATE: - case exports.GZIP: - case exports.DEFLATERAW: - this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy); - break; - case exports.INFLATE: - case exports.GUNZIP: - case exports.INFLATERAW: - case exports.UNZIP: - this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits); - break; - default: - throw new Error('Unknown mode ' + this.mode); - } - - if (this.err !== exports.Z_OK) { - this._error('Init error'); - } - - this.dictionary = dictionary; - - this.write_in_progress = false; - this.init_done = true; -}; +var toString = Object.prototype.toString; -Zlib.prototype._setDictionary = function () { - if (this.dictionary == null) { - return; - } +var class2type = {}; +// Populate the class2type map +"Boolean Number String Function Array Date RegExp Object".split(" ").forEach(function(name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); - this.err = exports.Z_OK; - switch (this.mode) { - case exports.DEFLATE: - case exports.DEFLATERAW: - this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary); - break; - default: - break; - } +function type( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; +} - if (this.err !== exports.Z_OK) { - this._error('Failed to set dictionary'); - } -}; +function isFunction( obj ) { + return jQuery.type(obj) === "function"; +} -Zlib.prototype._reset = function () { - this.err = exports.Z_OK; +function isArray( obj ) { + return jQuery.type(obj) === "array"; +} - switch (this.mode) { - case exports.DEFLATE: - case exports.DEFLATERAW: - case exports.GZIP: - this.err = zlib_deflate.deflateReset(this.strm); - break; - case exports.INFLATE: - case exports.INFLATERAW: - case exports.GUNZIP: - this.err = zlib_inflate.inflateReset(this.strm); - break; - default: - break; - } +function each( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || isFunction( object ); - if (this.err !== exports.Z_OK) { - this._error('Failed to reset stream'); - } -}; + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } -exports.Zlib = Zlib; -}).call(this,require('_process'),require("buffer").Buffer) -},{"_process":40,"assert":3,"buffer":12,"pako/lib/zlib/constants":30,"pako/lib/zlib/deflate.js":32,"pako/lib/zlib/inflate.js":34,"pako/lib/zlib/zstream":38}],11:[function(require,module,exports){ -(function (process){ -'use strict'; + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } -var Buffer = require('buffer').Buffer; -var Transform = require('stream').Transform; -var binding = require('./binding'); -var util = require('util'); -var assert = require('assert').ok; -var kMaxLength = require('buffer').kMaxLength; -var kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes'; + return object; +} -// zlib doesn't provide these, so kludge them in following the same -// const naming scheme zlib uses. -binding.Z_MIN_WINDOWBITS = 8; -binding.Z_MAX_WINDOWBITS = 15; -binding.Z_DEFAULT_WINDOWBITS = 15; +function isPlainObject( obj ) { + // Must be an Object. + if ( !obj || jQuery.type(obj) !== "object" ) { + return false; + } + return true; +} -// fewer than 64 bytes per chunk is stupid. -// technically it could work with as few as 8, but even 64 bytes -// is absurdly low. Usually a MB or more is best. -binding.Z_MIN_CHUNK = 64; -binding.Z_MAX_CHUNK = Infinity; -binding.Z_DEFAULT_CHUNK = 16 * 1024; +function extend() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; -binding.Z_MIN_MEMLEVEL = 1; -binding.Z_MAX_MEMLEVEL = 9; -binding.Z_DEFAULT_MEMLEVEL = 8; + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } -binding.Z_MIN_LEVEL = -1; -binding.Z_MAX_LEVEL = 9; -binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION; + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } -// expose all the zlib constants -var bkeys = Object.keys(binding); -for (var bk = 0; bk < bkeys.length; bk++) { - var bkey = bkeys[bk]; - if (bkey.match(/^Z/)) { - Object.defineProperty(exports, bkey, { - enumerable: true, value: binding[bkey], writable: false - }); - } -} + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } -// translation table for return codes. -var codes = { - Z_OK: binding.Z_OK, - Z_STREAM_END: binding.Z_STREAM_END, - Z_NEED_DICT: binding.Z_NEED_DICT, - Z_ERRNO: binding.Z_ERRNO, - Z_STREAM_ERROR: binding.Z_STREAM_ERROR, - Z_DATA_ERROR: binding.Z_DATA_ERROR, - Z_MEM_ERROR: binding.Z_MEM_ERROR, - Z_BUF_ERROR: binding.Z_BUF_ERROR, - Z_VERSION_ERROR: binding.Z_VERSION_ERROR -}; + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; -var ckeys = Object.keys(codes); -for (var ck = 0; ck < ckeys.length; ck++) { - var ckey = ckeys[ck]; - codes[codes[ckey]] = ckey; -} + // Prevent never-ending loop + if ( target === copy ) { + continue; + } -Object.defineProperty(exports, 'codes', { - enumerable: true, value: Object.freeze(codes), writable: false -}); + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; -exports.Deflate = Deflate; -exports.Inflate = Inflate; -exports.Gzip = Gzip; -exports.Gunzip = Gunzip; -exports.DeflateRaw = DeflateRaw; -exports.InflateRaw = InflateRaw; -exports.Unzip = Unzip; + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } -exports.createDeflate = function (o) { - return new Deflate(o); -}; + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); -exports.createInflate = function (o) { - return new Inflate(o); -}; + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } -exports.createDeflateRaw = function (o) { - return new DeflateRaw(o); + // Return the modified object + return target; }; -exports.createInflateRaw = function (o) { - return new InflateRaw(o); -}; -exports.createGzip = function (o) { - return new Gzip(o); -}; -exports.createGunzip = function (o) { - return new Gunzip(o); -}; +},{}],6:[function(require,module,exports){ -exports.createUnzip = function (o) { - return new Unzip(o); -}; +/*! +* jquery-deferred +* Copyright(c) 2011 Hidden +* MIT Licensed +*/ -// Convenience methods. -// compress/decompress a string or buffer in one step. -exports.deflate = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new Deflate(opts), buffer, callback); -}; +/** +* Library version. +*/ -exports.deflateSync = function (buffer, opts) { - return zlibBufferSync(new Deflate(opts), buffer); -}; +var jQuery = module.exports = require("./jquery-callbacks.js"), + core_slice = Array.prototype.slice; -exports.gzip = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new Gzip(opts), buffer, callback); -}; +/** +* jQuery deferred +* +* Code from: https://github.com/jquery/jquery/blob/master/src/deferred.js +* Doc: http://api.jquery.com/category/deferred-object/ +* +*/ -exports.gzipSync = function (buffer, opts) { - return zlibBufferSync(new Gzip(opts), buffer); -}; +jQuery.extend({ -exports.deflateRaw = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new DeflateRaw(opts), buffer, callback); -}; + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ]( jQuery.isFunction( fn ) ? + function() { + var returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + } : + newDefer[ action ] + ); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; -exports.deflateRawSync = function (buffer, opts) { - return zlibBufferSync(new DeflateRaw(opts), buffer); -}; + // Keep pipe for back-compat + promise.pipe = promise.then; -exports.unzip = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new Unzip(opts), buffer, callback); -}; + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; -exports.unzipSync = function (buffer, opts) { - return zlibBufferSync(new Unzip(opts), buffer); -}; + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; -exports.inflate = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new Inflate(opts), buffer, callback); -}; + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; -exports.inflateSync = function (buffer, opts) { - return zlibBufferSync(new Inflate(opts), buffer); -}; + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } -exports.gunzip = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new Gunzip(opts), buffer, callback); -}; + // deferred[ resolve | reject | notify ] = list.fire + deferred[ tuple[0] ] = list.fire; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); -exports.gunzipSync = function (buffer, opts) { - return zlibBufferSync(new Gunzip(opts), buffer); -}; + // Make the deferred a promise + promise.promise( deferred ); -exports.inflateRaw = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new InflateRaw(opts), buffer, callback); -}; + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } -exports.inflateRawSync = function (buffer, opts) { - return zlibBufferSync(new InflateRaw(opts), buffer); -}; + // All done! + return deferred; + }, -function zlibBuffer(engine, buffer, callback) { - var buffers = []; - var nread = 0; + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, - engine.on('error', onError); - engine.on('end', onEnd); + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - engine.end(buffer); - flow(); + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - function flow() { - var chunk; - while (null !== (chunk = engine.read())) { - buffers.push(chunk); - nread += chunk.length; - } - engine.once('readable', flow); - } + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, - function onError(err) { - engine.removeListener('end', onEnd); - engine.removeListener('readable', flow); - callback(err); - } + progressValues, progressContexts, resolveContexts; - function onEnd() { - var buf; - var err = null; + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } - if (nread >= kMaxLength) { - err = new RangeError(kRangeErrorMessage); - } else { - buf = Buffer.concat(buffers, nread); - } + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } - buffers = []; - engine.close(); - callback(err, buf); - } -} + return deferred.promise(); + } +}); -function zlibBufferSync(engine, buffer) { - if (typeof buffer === 'string') buffer = Buffer.from(buffer); +},{"./jquery-callbacks.js":4}],7:[function(require,module,exports){ +(function (global){ +/** + * Lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ - if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer'); +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; - var flushFlag = engine._finishFlushFlag; +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; - return engine._processChunk(buffer, flushFlag); -} +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; -// generic zlib -// minimal 2-byte header -function Deflate(opts) { - if (!(this instanceof Deflate)) return new Deflate(opts); - Zlib.call(this, opts, binding.DEFLATE); -} +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; -function Inflate(opts) { - if (!(this instanceof Inflate)) return new Inflate(opts); - Zlib.call(this, opts, binding.INFLATE); -} +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + nullTag = '[object Null]', + objectTag = '[object Object]', + proxyTag = '[object Proxy]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + undefinedTag = '[object Undefined]', + weakMapTag = '[object WeakMap]'; -// gzip - bigger header, same deflate compression -function Gzip(opts) { - if (!(this instanceof Gzip)) return new Gzip(opts); - Zlib.call(this, opts, binding.GZIP); -} +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; -function Gunzip(opts) { - if (!(this instanceof Gunzip)) return new Gunzip(opts); - Zlib.call(this, opts, binding.GUNZIP); -} +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; -// raw - no header -function DeflateRaw(opts) { - if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts); - Zlib.call(this, opts, binding.DEFLATERAW); -} +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; -function InflateRaw(opts) { - if (!(this instanceof InflateRaw)) return new InflateRaw(opts); - Zlib.call(this, opts, binding.INFLATERAW); -} +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; -// auto-detect header. -function Unzip(opts) { - if (!(this instanceof Unzip)) return new Unzip(opts); - Zlib.call(this, opts, binding.UNZIP); -} +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; -function isValidFlushFlag(flag) { - return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK; -} +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; -// the Zlib class they all inherit from -// This thing manages the queue of requests, and returns -// true or false if there is anything in the queue when -// you call the .write() method. +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; -function Zlib(opts, mode) { - var _this = this; +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); - this._opts = opts = opts || {}; - this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK; +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - Transform.call(this, opts); +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - if (opts.flush && !isValidFlushFlag(opts.flush)) { - throw new Error('Invalid flush flag: ' + opts.flush); - } - if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) { - throw new Error('Invalid flush flag: ' + opts.finishFlush); - } +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; - this._flushFlag = opts.flush || binding.Z_NO_FLUSH; - this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH; +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; - if (opts.chunkSize) { - if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) { - throw new Error('Invalid chunk size: ' + opts.chunkSize); - } - } +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; - if (opts.windowBits) { - if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) { - throw new Error('Invalid windowBits: ' + opts.windowBits); + if (types) { + return types; } - } - if (opts.level) { - if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) { - throw new Error('Invalid compression level: ' + opts.level); - } - } + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); - if (opts.memLevel) { - if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) { - throw new Error('Invalid memLevel: ' + opts.memLevel); - } +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); } + return func.apply(thisArg, args); +} - if (opts.strategy) { - if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) { - throw new Error('Invalid strategy: ' + opts.strategy); - } - } +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); - if (opts.dictionary) { - if (!Buffer.isBuffer(opts.dictionary)) { - throw new Error('Invalid dictionary: it should be a Buffer instance'); - } + while (++index < n) { + result[index] = iteratee(index); } + return result; +} - this._handle = new binding.Zlib(mode); - - var self = this; - this._hadError = false; - this._handle.onerror = function (message, errno) { - // there is no way to cleanly recover. - // continuing only obscures problems. - _close(self); - self._hadError = true; - - var error = new Error(message); - error.errno = errno; - error.code = exports.codes[errno]; - self.emit('error', error); +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); }; +} - var level = exports.Z_DEFAULT_COMPRESSION; - if (typeof opts.level === 'number') level = opts.level; +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} - var strategy = exports.Z_DEFAULT_STRATEGY; - if (typeof opts.strategy === 'number') strategy = opts.strategy; +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} - this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary); +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; - this._buffer = Buffer.allocUnsafe(this._chunkSize); - this._offset = 0; - this._level = level; - this._strategy = strategy; +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; - this.once('end', this.close); +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; - Object.defineProperty(this, '_closed', { - get: function () { - return !_this._handle; - }, - configurable: true, - enumerable: true - }); -} +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; -util.inherits(Zlib, Transform); +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); -Zlib.prototype.params = function (level, strategy, callback) { - if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) { - throw new RangeError('Invalid compression level: ' + level); - } - if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) { - throw new TypeError('Invalid strategy: ' + strategy); - } +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; - if (this._level !== level || this._strategy !== strategy) { - var self = this; - this.flush(binding.Z_SYNC_FLUSH, function () { - assert(self._handle, 'zlib binding closed'); - self._handle.params(level, strategy); - if (!self._hadError) { - self._level = level; - self._strategy = strategy; - if (callback) callback(); - } - }); - } else { - process.nextTick(callback); - } -}; +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); -Zlib.prototype.reset = function () { - assert(this._handle, 'zlib binding closed'); - return this._handle.reset(); -}; +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); -// This is the _flush function called by the transform class, -// internally, when the last chunk has been written. -Zlib.prototype._flush = function (callback) { - this._transform(Buffer.alloc(0), '', callback); -}; +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined, + Symbol = root.Symbol, + Uint8Array = root.Uint8Array, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + symToStringTag = Symbol ? Symbol.toStringTag : undefined; -Zlib.prototype.flush = function (kind, callback) { - var _this2 = this; +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); - var ws = this._writableState; +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeMax = Math.max, + nativeNow = Date.now; - if (typeof kind === 'function' || kind === undefined && !callback) { - callback = kind; - kind = binding.Z_FULL_FLUSH; - } +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'), + nativeCreate = getNative(Object, 'create'); - if (ws.ended) { - if (callback) process.nextTick(callback); - } else if (ws.ending) { - if (callback) this.once('end', callback); - } else if (ws.needDrain) { - if (callback) { - this.once('drain', function () { - return _this2.flush(kind, callback); - }); +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ +var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; } - } else { - this._flushFlag = kind; - this.write(Buffer.alloc(0), '', callback); - } -}; - -Zlib.prototype.close = function (callback) { - _close(this, callback); - process.nextTick(emitCloseNT, this); -}; - -function _close(engine, callback) { - if (callback) process.nextTick(callback); + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; +}()); - // Caller may invoke .close after a zlib error (which will null _handle). - if (!engine._handle) return; +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - engine._handle.close(); - engine._handle = null; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } } -function emitCloseNT(self) { - self.emit('close'); +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; } -Zlib.prototype._transform = function (chunk, encoding, cb) { - var flushFlag; - var ws = this._writableState; - var ending = ws.ending || ws.ended; - var last = ending && (!chunk || ws.length === chunk.length); - - if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input')); - - if (!this._handle) return cb(new Error('zlib binding closed')); +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} - // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag - // (or whatever flag was provided using opts.finishFlush). - // If it's explicitly flushing at some other time, then we use - // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression - // goodness. - if (last) flushFlag = this._finishFlushFlag;else { - flushFlag = this._flushFlag; - // once we've flushed the last of the queue, stop flushing and - // go back to the normal behavior. - if (chunk.length >= ws.length) { - this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH; - } +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} - this._processChunk(chunk, flushFlag, cb); -}; - -Zlib.prototype._processChunk = function (chunk, flushFlag, cb) { - var availInBefore = chunk && chunk.length; - var availOutBefore = this._chunkSize - this._offset; - var inOff = 0; - - var self = this; - - var async = typeof cb === 'function'; +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} - if (!async) { - var buffers = []; - var nread = 0; +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} - var error; - this.on('error', function (er) { - error = er; - }); +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; - assert(this._handle, 'zlib binding closed'); - do { - var res = this._handle.writeSync(flushFlag, chunk, // in - inOff, // in_off - availInBefore, // in_len - this._buffer, // out - this._offset, //out_off - availOutBefore); // out_len - } while (!this._hadError && callback(res[0], res[1])); +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - if (this._hadError) { - throw error; - } + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} - if (nread >= kMaxLength) { - _close(this); - throw new RangeError(kRangeErrorMessage); - } +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} - var buf = Buffer.concat(buffers, nread); - _close(this); +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - return buf; + if (index < 0) { + return false; } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} - assert(this._handle, 'zlib binding closed'); - var req = this._handle.write(flushFlag, chunk, // in - inOff, // in_off - availInBefore, // in_len - this._buffer, // out - this._offset, //out_off - availOutBefore); // out_len - - req.buffer = chunk; - req.callback = callback; - - function callback(availInAfter, availOutAfter) { - // When the callback is used in an async write, the callback's - // context is the `req` object that was created. The req object - // is === this._handle, and that's why it's important to null - // out the values after they are done being used. `this._handle` - // can stay in memory longer than the callback and buffer are needed. - if (this) { - this.buffer = null; - this.callback = null; - } +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - if (self._hadError) return; + return index < 0 ? undefined : data[index][1]; +} - var have = availOutBefore - availOutAfter; - assert(have >= 0, 'have should not go down'); +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} - if (have > 0) { - var out = self._buffer.slice(self._offset, self._offset + have); - self._offset += have; - // serve some output to the consumer. - if (async) { - self.push(out); - } else { - buffers.push(out); - nread += out.length; - } - } +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); - // exhausted the output buffer, or used all the input create a new one. - if (availOutAfter === 0 || self._offset >= self._chunkSize) { - availOutBefore = self._chunkSize; - self._offset = 0; - self._buffer = Buffer.allocUnsafe(self._chunkSize); - } + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} - if (availOutAfter === 0) { - // Not actually done. Need to reprocess. - // Also, update the availInBefore to the availInAfter value, - // so that if we have to hit it a third (fourth, etc.) time, - // it'll have the correct byte counts. - inOff += availInBefore - availInAfter; - availInBefore = availInAfter; +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; - if (!async) return true; +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize); - newReq.callback = callback; // this same function - newReq.buffer = chunk; - return; - } + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} - if (!async) return false; +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} - // finished with the chunk. - cb(); - } -}; +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} -util.inherits(Deflate, Zlib); -util.inherits(Inflate, Zlib); -util.inherits(Gzip, Zlib); -util.inherits(Gunzip, Zlib); -util.inherits(DeflateRaw, Zlib); -util.inherits(InflateRaw, Zlib); -util.inherits(Unzip, Zlib); -}).call(this,require('_process')) -},{"./binding":10,"_process":40,"assert":3,"buffer":12,"stream":65,"util":76}],12:[function(require,module,exports){ -(function (Buffer){ -/*! - * The buffer module from node.js, for the browser. +/** + * Gets the map value for `key`. * - * @author Feross Aboukhadijeh - * @license MIT + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. */ -/* eslint-disable no-proto */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} -'use strict' +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} -var base64 = require('base64-js') -var ieee754 = require('ieee754') +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} -var K_MAX_LENGTH = 0x7fffffff -exports.kMaxLength = K_MAX_LENGTH +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; /** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. + * Creates a stack cache object to store key-value pairs. * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. */ -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() - -if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && - typeof console.error === 'function') { - console.error( - 'This browser lacks typed array (Uint8Array) support which is required by ' + - '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' - ) +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; } -function typedArraySupport () { - // Can typed array instances can be augmented? - try { - var arr = new Uint8Array(1) - arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } - return arr.foo() === 42 - } catch (e) { - return false - } +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; } -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.buffer - } -}) +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.byteOffset - } -}) + this.size = data.size; + return result; +} -function createBuffer (length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"') - } - // Return an augmented `Uint8Array` instance - var buf = new Uint8Array(length) - buf.__proto__ = Buffer.prototype - return buf +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); } /** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. + * Sets the stack `key` to `value`. * - * The `Uint8Array` prototype remains unmodified. + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. */ - -function Buffer (arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ) +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; } - return allocUnsafe(arg) + data = this.__data__ = new MapCache(pairs); } - return from(arg, encodingOrOffset, length) -} - -// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 -if (typeof Symbol !== 'undefined' && Symbol.species != null && - Buffer[Symbol.species] === Buffer) { - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true, - enumerable: false, - writable: false - }) + data.set(key, value); + this.size = data.size; + return this; } -Buffer.poolSize = 8192 // not used by this implementation - -function from (value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - if (ArrayBuffer.isView(value)) { - return fromArrayLike(value) - } - - if (value == null) { - throw TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) - } - - if (isInstance(value, ArrayBuffer) || - (value && isInstance(value.buffer, ArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; - if (typeof value === 'number') { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ) - } +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; - var valueOf = value.valueOf && value.valueOf() - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length) + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } } + return result; +} - var b = fromObject(value) - if (b) return b - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && - typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from( - value[Symbol.toPrimitive]('string'), encodingOrOffset, length - ) +/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); } - - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) } /** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length) + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } } -// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 -Buffer.prototype.__proto__ = Uint8Array.prototype -Buffer.__proto__ = Uint8Array - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number') - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } } + return -1; } -function alloc (size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(size).fill(fill, encoding) - : createBuffer(size).fill(fill) +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; } - return createBuffer(size) } /** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding) + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); } -function allocUnsafe (size) { - assertSize(size) - return createBuffer(size < 0 ? 0 : checked(size) | 0) +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; } /** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size) + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); } + /** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size) +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; } -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); } + var isProto = isPrototype(object), + result = []; - var length = byteLength(string, encoding) | 0 - var buf = createBuffer(length) - - var actual = buf.write(string, encoding) - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual) + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } } - - return buf + return result; } -function fromArrayLike (array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0 - var buf = createBuffer(length) - for (var i = 0; i < length; i += 1) { - buf[i] = array[i] & 255 +/** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; } - return buf -} + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; -function fromArrayBuffer (array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds') - } + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); +} - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds') - } +/** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); - var buf - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array) - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset) - } else { - buf = new Uint8Array(array, byteOffset, length) + if (stacked) { + assignMergeValue(object, key, stacked); + return; } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; - // Return an augmented `Uint8Array` instance - buf.__proto__ = Buffer.prototype - return buf -} + var isCommon = newValue === undefined; -function fromObject (obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0 - var buf = createBuffer(len) + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); - if (buf.length === 0) { - return buf + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } } - - obj.copy(buf, 0, 0, len) - return buf - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0) + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } } - return fromArrayLike(obj) + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); } + assignMergeValue(object, key, newValue); +} - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data) +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); +} + +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); +}; + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); } -} + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); -function checked (length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') - } - return length | 0 + buffer.copy(result); + return result; } -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; } -Buffer.isBuffer = function isBuffer (b) { - return b != null && b._isBuffer === true && - b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); } -Buffer.compare = function compare (a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ) - } - - if (a === b) return 0 - - var x = a.length - var y = b.length +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; } - - if (x < y) return -1 - if (y < x) return 1 - return 0 + return array; } -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); -Buffer.concat = function concat (list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } + var index = -1, + length = props.length; - if (list.length === 0) { - return Buffer.alloc(0) - } + while (++index < length) { + var key = props[index]; - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; - var buffer = Buffer.allocUnsafe(length) - var pos = 0 - for (i = 0; i < list.length; ++i) { - var buf = list[i] - if (isInstance(buf, Uint8Array)) { - buf = Buffer.from(buf) + if (newValue === undefined) { + newValue = source[key]; } - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); } - buf.copy(buffer, pos) - pos += buf.length } - return buffer + return object; } -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + - 'Received type ' + typeof string - ) - } +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; - var len = string.length - var mustMatch = (arguments.length > 2 && arguments[2] === true) - if (!mustMatch && len === 0) return 0 + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 - } - encoding = ('' + encoding).toLowerCase() - loweredCase = true + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - var loweredCase = false - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0 - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} - if (!encoding) encoding = 'utf8' +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) +/** + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. + */ +function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; +} - case 'ascii': - return asciiSlice(this, start, end) +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} - case 'base64': - return base64Slice(this, start, end) +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; } } + return result; } -// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -Buffer.prototype._isBuffer = true +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} -function swap (b, n, m) { - var i = b[n] - b[n] = b[m] - b[m] = i +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); } -Buffer.prototype.swap16 = function swap16 () { - var len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1) + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); } - return this + return false; } -Buffer.prototype.swap32 = function swap32 () { - var len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); } -Buffer.prototype.swap64 = function swap64 () { - var len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } } - return this + return result; } -Buffer.prototype.toString = function toString () { - var length = this.length - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); } -Buffer.prototype.toLocaleString = Buffer.prototype.toString - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() - if (this.length > max) str += ' ... ' - return '' + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; } -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength) - } - if (!Buffer.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. ' + - 'Received type ' + (typeof target) - ) - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') +/** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; } - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 + if (key == '__proto__') { + return; } - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 + return object[key]; +} - if (this === target) return 0 +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = shortOut(baseSetToString); - var x = thisEnd - thisStart - var y = end - start - var len = Math.min(x, y) +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; - var thisCopy = this.slice(thisStart, thisEnd) - var targetCopy = target.slice(start, end) + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 + return func.apply(undefined, arguments); + }; } -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1) +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} } + return ''; +} - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; - throw new TypeError('val must be string, number or Buffer') +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); } -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1 - var arrLength = arr.length - var valLength = val.length +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} - var i - if (dir) { - var foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - var found = true - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} - return -1 +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); } -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; } -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; } -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } +/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ +function toPlainObject(value) { + return copyObject(value, keysIn(value)); +} - var strLen = string.length +/** + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaults + * @example + * + * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); + * // => { 'a': { 'b': 2, 'c': 3 } } + */ +var defaultsDeep = baseRest(function(args) { + args.push(undefined, customDefaultsMerge); + return apply(mergeWith, undefined, args); +}); - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (numberIsNaN(parsed)) return i - buf[offset + i] = parsed - } - return i +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); } -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +/** + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } + * } + * + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } + */ +var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); +}); + +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; } -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; } -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; } -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} +module.exports = defaultsDeep; -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],8:[function(require,module,exports){ +(function (Buffer){ +/* najax + * jquery ajax-stye http requests in node + * https://github.com/alanclarke/najax + */ -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0 - if (isFinite(length)) { - length = length >>> 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) +var https = require('https') +var http = require('http') +var querystring = require('qs') +var url = require('url') +var zlib = require('zlib') +var $ = require('jquery-deferred') +var defaultsDeep = require('lodash.defaultsdeep') +var parseOptions = require('./parse-options') +var defaults = { + method: 'GET', + rejectUnauthorized: true, + processData: true, + data: '', + contentType: 'application/x-www-form-urlencoded', + headers: {}, + setRequestHeader: function (name, value) { + this.headers[name] = value } +} - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining +/* + method overloading, can use: + -function(url, opts, callback) or + -function(url, callback) + -function(opts) +*/ +function najax (uri, options, callback) { + var dfd = new $.Deferred() + var o = defaultsDeep({}, parseOptions(uri, options, callback), defaults) + var l = url.parse(o.url) + var ssl = l.protocol.indexOf('https') === 0 - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') + // DATA + // Per jquery docs / source: encoding is only done + // if processData is true (defaults to true) + // and the data is not already a string + // https://github.com/jquery/jquery/blob/master/src/ajax.js#L518 + if (o.data && o.processData && o.method === 'GET') { + o.data = querystring.stringify(o.data, { arrayFormat: 'brackets' }) + } else if (o.data && o.processData && typeof o.data !== 'string' && o.method !== 'GET') { + switch (true) { + case o.contentType.startsWith('application/json'): + o.data = JSON.stringify(o.data) + break + case o.contentType.startsWith('application/x-www-form-urlencoded'): + o.data = querystring.stringify(o.data) + break + default: + o.data = String(o.data) + } } - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) + /* if get, use querystring method for data */ + if (o.data) { + if (o.method === 'GET') { + if (l.search) { + l.search += '&' + o.data + } else { + l.search = '?' + o.data + } + } else { + /* set data content type */ + o.headers = Object.assign({ + 'Content-Type': o.contentType, + 'Content-Length': Buffer.byteLength(o.data) + }, o.headers) + } + } - case 'ascii': - return asciiWrite(this, string, offset, length) + if (o.beforeSend) o.beforeSend(o) - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) + options = { + host: l.hostname, + path: l.pathname + (l.search || ''), + method: o.method, + port: Number(l.port) || (ssl ? 443 : 80), + headers: o.headers, + rejectUnauthorized: o.rejectUnauthorized + } - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) + // AUTHENTICATION + /* add authentication to http request */ + if (l.auth) { + options.auth = l.auth + } else if (o.username && o.password) { + options.auth = o.username + ':' + o.password + } else if (o.auth) { + options.auth = o.auth + } - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) + if (options.auth) o.auth = options.auth + if (options.agent) o.agent = options.agent + /* for debugging, method to get options and return */ + if (o.getopts) { + var getopts = [ssl, options, o.data || false, o.success || false, o.error || false] + return getopts + } - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true + // REQUEST + function notImplemented (name) { + return function () { + console.error('najax: method jqXHR."' + name + '" not implemented') + console.trace() } } -} -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) + var jqXHR = { + readyState: 0, + status: 0, + statusText: 'error', // one of: "success", "notmodified", "error", "timeout", "abort", or "parsererror" + setRequestHeader: notImplemented('setRequestHeader'), + getAllResponseHeaders: notImplemented('getAllResponseHeaders'), + statusCode: notImplemented('statusCode'), + abort: notImplemented('abort') } -} -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} + var req = (ssl ? https : http).request(options, function (res) { + // Allow getting Response Headers from the XMLHTTPRequest object + dfd.getResponseHeader = jqXHR.getResponseHeader = function getResponseHeader (header) { + return res.headers[header.toLowerCase()] + } + dfd.getAllResponseHeaders = jqXHR.getAllResponseHeaders = function getAllResponseHeaders () { + var headers = [] + for (var key in res.headers) { + headers.push(key + ': ' + res.headers[key]) + } + return headers.join('\n') + } -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] + function dataHandler (data) { + jqXHR.responseText = data + + var statusCode = res.statusCode + // + // Determine if successful + // (per https://github.com/jquery/jquery/blob/master/src/ajax.js#L679) + var isSuccess = statusCode >= 200 && statusCode < 300 || statusCode === 304 + // Set readyState + jqXHR.readyState = statusCode > 0 ? 4 : 0 + jqXHR.status = statusCode + + if (o.dataType === 'json' || o.dataType === 'jsonp') { + // replace control characters + try { + data = JSON.parse(data.replace(/[\cA-\cZ]/gi, '')) + } catch (e) { + jqXHR.statusText = 'parseerror' + return onError(e) + } + } - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 + if (isSuccess) { + jqXHR.statusText = 'success' - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint + if (statusCode === 204 || options.method === 'HEAD') { + jqXHR.statusText = 'nocontent' + } else if (statusCode === 304) { + jqXHR.statusText = 'notmodified' + } - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } + // success, statusText, jqXHR + dfd.resolve(data, jqXHR.statusText, jqXHR) + } else { + // jqXHR, statusText, error + // When an HTTP error occurs, errorThrown receives the textual portion of the + // HTTP status, such as "Not Found" or "Internal Server Error." + jqXHR.statusText = 'error' + onError(new Error(http.STATUS_CODES[statusCode])) + } + } + var chunks = [] + res.on('data', function (chunk) { chunks.push(chunk) }) + res.on('end', function () { + var buffer = Buffer.concat(chunks) + var encoding = res.headers['content-encoding'] + if (encoding === 'gzip') { + zlib.gunzip(buffer, function (err, buffer) { + if (err) { + onError(err) + } else { + dataHandler(buffer.toString()) } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } + }) + } else if (encoding === 'deflate') { + zlib.inflate(buffer, function (err, buffer) { + if (err) { + onError(err) + } else { + dataHandler(buffer.toString()) } + }) + } else { + dataHandler(buffer.toString()) } - } + }) + }) - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } + // ERROR + req.on('error', onError) - res.push(codePoint) - i += bytesPerSequence + function onError (e) { + // jqXHR, statusText, error + dfd.reject(jqXHR, jqXHR.statusText, e) } - return decodeCodePointsArray(res) -} + // SET TIMEOUT + if (o.timeout && o.timeout > 0) { + req.setTimeout(o.timeout, function () { + req.abort() + jqXHR.statusText = 'timeout' + onError(new Error('timeout')) + }) + } -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000 + // SEND DATA + if (o.method !== 'GET' && o.data) req.write(o.data, 'utf-8') + req.end() -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } + // DEFERRED + dfd.done(o.success) + dfd.done(o.complete) + dfd.fail(o.error) + dfd.fail(o.complete) + dfd.success = dfd.done + dfd.error = dfd.fail + return dfd +} - // Decode in chunks to avoid "call stack size exceeded". - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res +najax.defaults = function mergeDefaults (opts) { + return defaultsDeep(defaults, opts) } -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) +/* auto rest interface go! */ +;['GET', 'POST', 'PUT', 'DELETE'].forEach(handleMethod) - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) +function handleMethod (method) { + najax[method.toLowerCase()] = function methodHandler (uri, options, callback) { + return najax(defaultsDeep(parseOptions(uri, options, callback), { method: method })) } - return ret } -function latin1Slice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) +module.exports = najax - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) +}).call(this,require("buffer").Buffer) +},{"./parse-options":9,"buffer":25,"http":67,"https":29,"jquery-deferred":3,"lodash.defaultsdeep":7,"qs":11,"url":73,"zlib":24}],9:[function(require,module,exports){ +module.exports = function parseOptions (url, options, callback) { + var opts = {} + if (typeof url === 'string') { + opts.url = url + } else { + opts = Object.assign(opts, url) } - return ret + if (typeof options === 'function') { + opts.success = options + } else { + if (typeof callback === 'function') opts.success = callback + opts = Object.assign(opts, options) + } + + // support legacy jquery options.type + if (!opts.method && opts.type) { + opts.method = opts.type + } + + return opts } -function hexSlice (buf, start, end) { - var len = buf.length +},{}],10:[function(require,module,exports){ +'use strict'; - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len +var replace = String.prototype.replace; +var percentTwenties = /%20/g; - var out = '' - for (var i = start; i < end; ++i) { - out += toHex(buf[i]) - } - return out -} +var util = require('./utils'); -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) - } - return res -} +var Format = { + RFC1738: 'RFC1738', + RFC3986: 'RFC3986' +}; -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end +module.exports = util.assign( + { + 'default': Format.RFC3986, + formatters: { + RFC1738: function (value) { + return replace.call(value, percentTwenties, '+'); + }, + RFC3986: function (value) { + return String(value); + } + } + }, + Format +); - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } +},{"./utils":14}],11:[function(require,module,exports){ +'use strict'; - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } +var stringify = require('./stringify'); +var parse = require('./parse'); +var formats = require('./formats'); + +module.exports = { + formats: formats, + parse: parse, + stringify: stringify +}; + +},{"./formats":10,"./parse":12,"./stringify":13}],12:[function(require,module,exports){ +'use strict'; + +var utils = require('./utils'); - if (end < start) end = start +var has = Object.prototype.hasOwnProperty; +var isArray = Array.isArray; - var newBuf = this.subarray(start, end) - // Return an augmented `Uint8Array` instance - newBuf.__proto__ = Buffer.prototype - return newBuf -} +var defaults = { + allowDots: false, + allowPrototypes: false, + arrayLimit: 20, + charset: 'utf-8', + charsetSentinel: false, + comma: false, + decoder: utils.decode, + delimiter: '&', + depth: 5, + ignoreQueryPrefix: false, + interpretNumericEntities: false, + parameterLimit: 1000, + parseArrays: true, + plainObjects: false, + strictNullHandling: false +}; -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} +var interpretNumericEntities = function (str) { + return str.replace(/&#(\d+);/g, function ($0, numberStr) { + return String.fromCharCode(parseInt(numberStr, 10)); + }); +}; -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) +// This is what browsers will submit when the ✓ character occurs in an +// application/x-www-form-urlencoded body and the encoding of the page containing +// the form is iso-8859-1, or when the submitted form has an accept-charset +// attribute of iso-8859-1. Presumably also with other charsets that do not contain +// the ✓ character, such as us-ascii. +var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } +// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. +var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') - return val -} +var parseValues = function parseQueryStringValues(str, options) { + var obj = {}; + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; + var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; + var parts = cleanStr.split(options.delimiter, limit); + var skipIndex = -1; // Keep track of where the utf8 sentinel was found + var i; -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } + var charset = options.charset; + if (options.charsetSentinel) { + for (i = 0; i < parts.length; ++i) { + if (parts[i].indexOf('utf8=') === 0) { + if (parts[i] === charsetSentinel) { + charset = 'utf-8'; + } else if (parts[i] === isoSentinel) { + charset = 'iso-8859-1'; + } + skipIndex = i; + i = parts.length; // The eslint settings do not allow break; + } + } + } - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } + for (i = 0; i < parts.length; ++i) { + if (i === skipIndex) { + continue; + } + var part = parts[i]; - return val -} + var bracketEqualsPos = part.indexOf(']='); + var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} + var key, val; + if (pos === -1) { + key = options.decoder(part, defaults.decoder, charset, 'key'); + val = options.strictNullHandling ? null : ''; + } else { + key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); + val = options.decoder(part.slice(pos + 1), defaults.decoder, charset, 'value'); + } -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} + if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { + val = interpretNumericEntities(val); + } -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} + if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { + val = val.split(','); + } -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) + if (part.indexOf('[]=') > -1) { + val = isArray(val) ? [val] : val; + } - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} + if (has.call(obj, key)) { + obj[key] = utils.combine(obj[key], val); + } else { + obj[key] = val; + } + } -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) + return obj; +}; - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} +var parseObject = function (chain, val, options) { + var leaf = val; -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) + for (var i = chain.length - 1; i >= 0; --i) { + var obj; + var root = chain[i]; - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 + if (root === '[]' && options.parseArrays) { + obj = [].concat(leaf); + } else { + obj = options.plainObjects ? Object.create(null) : {}; + var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; + var index = parseInt(cleanRoot, 10); + if (!options.parseArrays && cleanRoot === '') { + obj = { 0: leaf }; + } else if ( + !isNaN(index) + && root !== cleanRoot + && String(index) === cleanRoot + && index >= 0 + && (options.parseArrays && index <= options.arrayLimit) + ) { + obj = []; + obj[index] = leaf; + } else { + obj[cleanRoot] = leaf; + } + } - if (val >= mul) val -= Math.pow(2, 8 * byteLength) + leaf = obj; + } - return val -} + return leaf; +}; -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) +var parseKeys = function parseQueryStringKeys(givenKey, val, options) { + if (!givenKey) { + return; + } - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 + // Transform dot notation to bracket notation + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - if (val >= mul) val -= Math.pow(2, 8 * byteLength) + // The regex chunks - return val -} + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} + // Get the parent -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} + var segment = options.depth > 0 && brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} + // Stash the parent if it exists -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) + var keys = []; + if (parent) { + // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys.push(parent); + } - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} + // Loop through children appending to the array until we hit depth -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) + var i = 0; + while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { + if (!options.allowPrototypes) { + return; + } + } + keys.push(segment[1]); + } - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} + // If there's a remainder, just add whatever is left -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} + if (segment) { + keys.push('[' + key.slice(segment.index) + ']'); + } -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} + return parseObject(keys, val, options); +}; -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} +var normalizeParseOptions = function normalizeParseOptions(opts) { + if (!opts) { + return defaults; + } -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} + if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') { + throw new TypeError('Decoder has to be a function.'); + } -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new Error('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } + return { + allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, + allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, + arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, + decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, + delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, + // eslint-disable-next-line no-implicit-coercion, no-extra-parens + depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, + ignoreQueryPrefix: opts.ignoreQueryPrefix === true, + interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, + parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, + parseArrays: opts.parseArrays !== false, + plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling + }; +}; - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } +module.exports = function (str, opts) { + var options = normalizeParseOptions(opts); - return offset + byteLength -} + if (str === '' || str === null || typeof str === 'undefined') { + return options.plainObjects ? Object.create(null) : {}; + } -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } + var tempObj = typeof str === 'string' ? parseValues(str, options) : str; + var obj = options.plainObjects ? Object.create(null) : {}; - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } + // Iterate over the keys and setup the new object - return offset + byteLength -} + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options); + obj = utils.merge(obj, newObj, options); + } -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - this[offset] = (value & 0xff) - return offset + 1 -} + return utils.compact(obj); +}; -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} +},{"./utils":14}],13:[function(require,module,exports){ +'use strict'; -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} +var utils = require('./utils'); +var formats = require('./formats'); +var has = Object.prototype.hasOwnProperty; -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - return offset + 4 -} +var arrayPrefixGenerators = { + brackets: function brackets(prefix) { + return prefix + '[]'; + }, + comma: 'comma', + indices: function indices(prefix, key) { + return prefix + '[' + key + ']'; + }, + repeat: function repeat(prefix) { + return prefix; + } +}; -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} +var isArray = Array.isArray; +var push = Array.prototype.push; +var pushToArray = function (arr, valueOrArray) { + push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); +}; -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) +var toISO = Date.prototype.toISOString; - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } +var defaultFormat = formats['default']; +var defaults = { + addQueryPrefix: false, + allowDots: false, + charset: 'utf-8', + charsetSentinel: false, + delimiter: '&', + encode: true, + encoder: utils.encode, + encodeValuesOnly: false, + format: defaultFormat, + formatter: formats.formatters[defaultFormat], + // deprecated + indices: false, + serializeDate: function serializeDate(date) { + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false +}; - var i = 0 - var mul = 1 - var sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 +var isNonNullishPrimitive = function isNonNullishPrimitive(v) { + return typeof v === 'string' + || typeof v === 'number' + || typeof v === 'boolean' + || typeof v === 'symbol' + || typeof v === 'bigint'; +}; + +var stringify = function stringify( + object, + prefix, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly, + charset +) { + var obj = object; + if (typeof filter === 'function') { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (generateArrayPrefix === 'comma' && isArray(obj)) { + obj = obj.join(','); } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } + if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key') : prefix; + } - var i = byteLength - 1 - var mul = 1 - var sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 + obj = ''; } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} + if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key'); + return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value'))]; + } + return [formatter(prefix) + '=' + formatter(String(obj))]; + } -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} + var values = []; -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - return offset + 4 -} + if (typeof obj === 'undefined') { + return values; + } -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} + var objKeys; + if (isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; -function writeFloat (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} + if (skipNulls && obj[key] === null) { + continue; + } -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} + if (isArray(obj)) { + pushToArray(values, stringify( + obj[key], + typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly, + charset + )); + } else { + pushToArray(values, stringify( + obj[key], + prefix + (allowDots ? '.' + key : '[' + key + ']'), + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly, + charset + )); + } + } -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} + return values; +}; -function writeDouble (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} +var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { + if (!opts) { + return defaults; + } -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} + if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') { + throw new TypeError('Encoder has to be a function.'); + } -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} + var charset = opts.charset || defaults.charset; + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); + } -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start + var format = formats['default']; + if (typeof opts.format !== 'undefined') { + if (!has.call(formats.formatters, opts.format)) { + throw new TypeError('Unknown format option provided.'); + } + format = opts.format; + } + var formatter = formats.formatters[format]; - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 + var filter = defaults.filter; + if (typeof opts.filter === 'function' || isArray(opts.filter)) { + filter = opts.filter; + } - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('Index out of range') - if (end < 0) throw new RangeError('sourceEnd out of bounds') + return { + addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, + allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, + encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, + encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, + encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, + filter: filter, + formatter: formatter, + serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, + skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, + sort: typeof opts.sort === 'function' ? opts.sort : null, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling + }; +}; - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } +module.exports = function (object, opts) { + var obj = object; + var options = normalizeStringifyOptions(opts); - var len = end - start + var objKeys; + var filter; - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end) - } else if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (var i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start] + if (typeof options.filter === 'function') { + filter = options.filter; + obj = filter('', obj); + } else if (isArray(options.filter)) { + filter = options.filter; + objKeys = filter; } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ) - } - return len -} + var keys = []; -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) + if (typeof obj !== 'object' || obj === null) { + return ''; } - if (val.length === 1) { - var code = val.charCodeAt(0) - if ((encoding === 'utf8' && code < 128) || - encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code - } + + var arrayFormat; + if (opts && opts.arrayFormat in arrayPrefixGenerators) { + arrayFormat = opts.arrayFormat; + } else if (opts && 'indices' in opts) { + arrayFormat = opts.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = 'indices'; } - } else if (typeof val === 'number') { - val = val & 255 - } - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } + var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; - if (end <= start) { - return this - } + if (!objKeys) { + objKeys = Object.keys(obj); + } - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 + if (options.sort) { + objKeys.sort(options.sort); + } - if (!val) val = 0 + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; - var i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : Buffer.from(val, encoding) - var len = bytes.length - if (len === 0) { - throw new TypeError('The value "' + val + - '" is invalid for argument "value"') - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] + if (options.skipNulls && obj[key] === null) { + continue; + } + pushToArray(keys, stringify( + obj[key], + key, + generateArrayPrefix, + options.strictNullHandling, + options.skipNulls, + options.encode ? options.encoder : null, + options.filter, + options.sort, + options.allowDots, + options.serializeDate, + options.formatter, + options.encodeValuesOnly, + options.charset + )); } - } - return this -} + var joined = keys.join(options.delimiter); + var prefix = options.addQueryPrefix === true ? '?' : ''; -// HELPER FUNCTIONS -// ================ + if (options.charsetSentinel) { + if (options.charset === 'iso-8859-1') { + // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark + prefix += 'utf8=%26%2310003%3B&'; + } else { + // encodeURIComponent('✓') + prefix += 'utf8=%E2%9C%93&'; + } + } -var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g + return joined.length > 0 ? prefix + joined : ''; +}; -function base64clean (str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0] - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = str.trim().replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} +},{"./formats":10,"./utils":14}],14:[function(require,module,exports){ +'use strict'; -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} +var has = Object.prototype.hasOwnProperty; +var isArray = Array.isArray; -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] +var hexTable = (function () { + var array = []; + for (var i = 0; i < 256; ++i) { + array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); + } - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) + return array; +}()); - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } +var compactQueue = function compactQueue(queue) { + while (queue.length > 1) { + var item = queue.pop(); + var obj = item.obj[item.prop]; - // valid lead - leadSurrogate = codePoint + if (isArray(obj)) { + var compacted = []; - continue - } + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== 'undefined') { + compacted.push(obj[j]); + } + } - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } + item.obj[item.prop] = compacted; + } + } +}; - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) +var arrayToObject = function arrayToObject(source, options) { + var obj = options && options.plainObjects ? Object.create(null) : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== 'undefined') { + obj[i] = source[i]; + } } - leadSurrogate = null + return obj; +}; - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') +var merge = function merge(target, source, options) { + /* eslint no-param-reassign: 0 */ + if (!source) { + return target; } - } - - return bytes -} -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} + if (typeof source !== 'object') { + if (isArray(target)) { + target.push(source); + } else if (target && typeof target === 'object') { + if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) { + target[source] = true; + } + } else { + return [target, source]; + } -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break + return target; + } - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } + if (!target || typeof target !== 'object') { + return [target].concat(source); + } - return byteArray -} + var mergeTarget = target; + if (isArray(target) && !isArray(source)) { + mergeTarget = arrayToObject(target, options); + } -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} + if (isArray(target) && isArray(source)) { + source.forEach(function (item, i) { + if (has.call(target, i)) { + var targetItem = target[i]; + if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { + target[i] = merge(targetItem, item, options); + } else { + target.push(item); + } + } else { + target[i] = item; + } + }); + return target; + } -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} + return Object.keys(source).reduce(function (acc, key) { + var value = source[key]; -// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function isInstance (obj, type) { - return obj instanceof type || - (obj != null && obj.constructor != null && obj.constructor.name != null && - obj.constructor.name === type.name) -} -function numberIsNaN (obj) { - // For IE11 support - return obj !== obj // eslint-disable-line no-self-compare -} + if (has.call(acc, key)) { + acc[key] = merge(acc[key], value, options); + } else { + acc[key] = value; + } + return acc; + }, mergeTarget); +}; -}).call(this,require("buffer").Buffer) -},{"base64-js":7,"buffer":12,"ieee754":17}],13:[function(require,module,exports){ -module.exports = { - "100": "Continue", - "101": "Switching Protocols", - "102": "Processing", - "200": "OK", - "201": "Created", - "202": "Accepted", - "203": "Non-Authoritative Information", - "204": "No Content", - "205": "Reset Content", - "206": "Partial Content", - "207": "Multi-Status", - "208": "Already Reported", - "226": "IM Used", - "300": "Multiple Choices", - "301": "Moved Permanently", - "302": "Found", - "303": "See Other", - "304": "Not Modified", - "305": "Use Proxy", - "307": "Temporary Redirect", - "308": "Permanent Redirect", - "400": "Bad Request", - "401": "Unauthorized", - "402": "Payment Required", - "403": "Forbidden", - "404": "Not Found", - "405": "Method Not Allowed", - "406": "Not Acceptable", - "407": "Proxy Authentication Required", - "408": "Request Timeout", - "409": "Conflict", - "410": "Gone", - "411": "Length Required", - "412": "Precondition Failed", - "413": "Payload Too Large", - "414": "URI Too Long", - "415": "Unsupported Media Type", - "416": "Range Not Satisfiable", - "417": "Expectation Failed", - "418": "I'm a teapot", - "421": "Misdirected Request", - "422": "Unprocessable Entity", - "423": "Locked", - "424": "Failed Dependency", - "425": "Unordered Collection", - "426": "Upgrade Required", - "428": "Precondition Required", - "429": "Too Many Requests", - "431": "Request Header Fields Too Large", - "451": "Unavailable For Legal Reasons", - "500": "Internal Server Error", - "501": "Not Implemented", - "502": "Bad Gateway", - "503": "Service Unavailable", - "504": "Gateway Timeout", - "505": "HTTP Version Not Supported", - "506": "Variant Also Negotiates", - "507": "Insufficient Storage", - "508": "Loop Detected", - "509": "Bandwidth Limit Exceeded", - "510": "Not Extended", - "511": "Network Authentication Required" -} +var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function (acc, key) { + acc[key] = source[key]; + return acc; + }, target); +}; -},{}],14:[function(require,module,exports){ -(function (Buffer){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. +var decode = function (str, decoder, charset) { + var strWithoutPlus = str.replace(/\+/g, ' '); + if (charset === 'iso-8859-1') { + // unescape never throws, no try...catch needed: + return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); + } + // utf-8 + try { + return decodeURIComponent(strWithoutPlus); + } catch (e) { + return strWithoutPlus; + } +}; -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. +var encode = function encode(str, defaultEncoder, charset) { + // This code was originally written by Brian White (mscdex) for the io.js core querystring library. + // It has been adapted here for stricter adherence to RFC 3986 + if (str.length === 0) { + return str; + } -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); - } - return objectToString(arg) === '[object Array]'; -} -exports.isArray = isArray; + var string = str; + if (typeof str === 'symbol') { + string = Symbol.prototype.toString.call(str); + } else if (typeof str !== 'string') { + string = String(str); + } -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; + if (charset === 'iso-8859-1') { + return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { + return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; + }); + } -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; + var out = ''; + for (var i = 0; i < string.length; ++i) { + var c = string.charCodeAt(i); -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; + if ( + c === 0x2D // - + || c === 0x2E // . + || c === 0x5F // _ + || c === 0x7E // ~ + || (c >= 0x30 && c <= 0x39) // 0-9 + || (c >= 0x41 && c <= 0x5A) // a-z + || (c >= 0x61 && c <= 0x7A) // A-Z + ) { + out += string.charAt(i); + continue; + } -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; + if (c < 0x80) { + out = out + hexTable[c]; + continue; + } -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; + if (c < 0x800) { + out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; + if (c < 0xD800 || c >= 0xE000) { + out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); + out += hexTable[0xF0 | (c >> 18)] + + hexTable[0x80 | ((c >> 12) & 0x3F)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + } -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; + return out; +}; -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; +var compact = function compact(value) { + var queue = [{ obj: { o: value }, prop: 'o' }]; + var refs = []; -function isDate(d) { - return objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; -function isError(e) { - return (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { + queue.push({ obj: obj, prop: key }); + refs.push(val); + } + } + } -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; + compactQueue(queue); -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; + return value; +}; -exports.isBuffer = Buffer.isBuffer; +var isRegExp = function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +}; -function objectToString(o) { - return Object.prototype.toString.call(o); -} +var isBuffer = function isBuffer(obj) { + if (!obj || typeof obj !== 'object') { + return false; + } -}).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":19}],15:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); +}; -var objectCreate = Object.create || objectCreatePolyfill -var objectKeys = Object.keys || objectKeysPolyfill -var bind = Function.prototype.bind || functionBindPolyfill +var combine = function combine(a, b) { + return [].concat(a, b); +}; -function EventEmitter() { - if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) { - this._events = objectCreate(null); - this._eventsCount = 0; - } +module.exports = { + arrayToObject: arrayToObject, + assign: assign, + combine: combine, + compact: compact, + decode: decode, + encode: encode, + isBuffer: isBuffer, + isRegExp: isRegExp, + merge: merge +}; - this._maxListeners = this._maxListeners || undefined; +},{}],15:[function(require,module,exports){ +"use strict"; +/* + * Copyright (C) 2018 Red Hat, 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 ofthe 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 specificlanguage governing permissions and + * limitations under the License. + * + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var graffiti = require("../graffiti/js/api"); +var Capture = /** @class */ (function (_super) { + __extends(Capture, _super); + function Capture() { + return _super !== null && _super.apply(this, arguments) || this; + } + return Capture; +}(graffiti.APIObject)); +exports.Capture = Capture; +var PacketInjection = /** @class */ (function (_super) { + __extends(PacketInjection, _super); + function PacketInjection() { + return _super !== null && _super.apply(this, arguments) || this; + } + return PacketInjection; +}(graffiti.APIObject)); +exports.PacketInjection = PacketInjection; +var Metric = /** @class */ (function () { + function Metric() { + } + return Metric; +}()); +exports.Metric = Metric; +var FlowLayer = /** @class */ (function () { + function FlowLayer() { + } + return FlowLayer; +}()); +exports.FlowLayer = FlowLayer; +var ICMPLayer = /** @class */ (function () { + function ICMPLayer() { + } + return ICMPLayer; +}()); +exports.ICMPLayer = ICMPLayer; +var FlowMetric = /** @class */ (function () { + function FlowMetric() { + } + return FlowMetric; +}()); +exports.FlowMetric = FlowMetric; +var RawPacket = /** @class */ (function () { + function RawPacket() { + } + return RawPacket; +}()); +exports.RawPacket = RawPacket; +var TCPMetric = /** @class */ (function () { + function TCPMetric() { + } + return TCPMetric; +}()); +exports.TCPMetric = TCPMetric; +var Flow = /** @class */ (function () { + function Flow() { + } + return Flow; +}()); +exports.Flow = Flow; +var Hops = /** @class */ (function (_super) { + __extends(Hops, _super); + function Hops() { + return _super !== null && _super.apply(this, arguments) || this; + } + Hops.prototype.name = function () { return "Hops"; }; + return Hops; +}(graffiti.V)); +exports.Hops = Hops; +var CaptureNode = /** @class */ (function (_super) { + __extends(CaptureNode, _super); + function CaptureNode() { + return _super !== null && _super.apply(this, arguments) || this; + } + CaptureNode.prototype.name = function () { return "CaptureNode"; }; + return CaptureNode; +}(graffiti.V)); +exports.CaptureNode = CaptureNode; +var Metrics = /** @class */ (function (_super) { + __extends(Metrics, _super); + function Metrics() { + return _super !== null && _super.apply(this, arguments) || this; + } + Metrics.prototype.name = function () { return "Metrics"; }; + Metrics.prototype.serialize = function (data) { + return graffiti.SerializationHelper.unmarshalMapArray(data[0], Metric); + }; + Metrics.prototype.Sum = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + var _a; + return new ((_a = graffiti.Sum).bind.apply(_a, [void 0, this.api, this].concat(params)))(); + }; + Metrics.prototype.Aggregates = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Aggregates.bind.apply(Aggregates, [void 0, this.api, this].concat(params)))(); + }; + Metrics.prototype.Count = function () { + return new graffiti.Count(this.api, this); + }; + return Metrics; +}(graffiti.Step)); +exports.Metrics = Metrics; +var Aggregates = /** @class */ (function (_super) { + __extends(Aggregates, _super); + function Aggregates() { + return _super !== null && _super.apply(this, arguments) || this; + } + Aggregates.prototype.name = function () { return "Aggregates"; }; + return Aggregates; +}(Metrics)); +exports.Aggregates = Aggregates; +var RawPackets = /** @class */ (function (_super) { + __extends(RawPackets, _super); + function RawPackets() { + return _super !== null && _super.apply(this, arguments) || this; + } + RawPackets.prototype.name = function () { return "RawPackets"; }; + RawPackets.prototype.serialize = function (data) { + return graffiti.SerializationHelper.unmarshalMapArray(data[0], RawPacket); + }; + RawPackets.prototype.BPF = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (BPF.bind.apply(BPF, [void 0, this.api, this].concat(params)))(); + }; + return RawPackets; +}(graffiti.Step)); +exports.RawPackets = RawPackets; +var BPF = /** @class */ (function (_super) { + __extends(BPF, _super); + function BPF() { + return _super !== null && _super.apply(this, arguments) || this; + } + BPF.prototype.name = function () { return "BPF"; }; + return BPF; +}(RawPackets)); +exports.BPF = BPF; +function MixinStep(Base, name) { + return /** @class */ (function (_super) { + __extends(class_1, _super); + function class_1() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return _super.apply(this, args) || this; + } + class_1.prototype.name = function () { return name; }; + return class_1; + }(Base)); } -module.exports = EventEmitter; - -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -var defaultMaxListeners = 10; - -var hasDefineProperty; -try { - var o = {}; - if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 }); - hasDefineProperty = o.x === 0; -} catch (err) { hasDefineProperty = false } -if (hasDefineProperty) { - Object.defineProperty(EventEmitter, 'defaultMaxListeners', { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - // check whether the input is a positive number (whose value is zero or - // greater and not a NaN). - if (typeof arg !== 'number' || arg < 0 || arg !== arg) - throw new TypeError('"defaultMaxListeners" must be a positive number'); - defaultMaxListeners = arg; +var Socket = /** @class */ (function () { + function Socket() { + } + return Socket; +}()); +var Sockets = /** @class */ (function (_super) { + __extends(Sockets, _super); + function Sockets() { + return _super !== null && _super.apply(this, arguments) || this; + } + Sockets.prototype.name = function () { return "Sockets"; }; + Sockets.prototype.serialize = function (data) { + return graffiti.SerializationHelper.unmarshalMapArray(data[0], Socket); + }; + Sockets.prototype.Values = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + var _a; + return new ((_a = graffiti.Values).bind.apply(_a, [void 0, this.api, this].concat(params)))(); + }; + Sockets.prototype.Has = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (HasSockets.bind.apply(HasSockets, [void 0, this.api, this].concat(params)))(); + }; + return Sockets; +}(graffiti.Step)); +exports.Sockets = Sockets; +var HasSockets = /** @class */ (function (_super) { + __extends(HasSockets, _super); + function HasSockets() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HasSockets; +}(MixinStep(Sockets, "Has"))); +var Flows = /** @class */ (function (_super) { + __extends(Flows, _super); + function Flows() { + return _super !== null && _super.apply(this, arguments) || this; + } + Flows.prototype.name = function () { return "Flows"; }; + Flows.prototype.serialize = function (data) { + return graffiti.SerializationHelper.unmarshalArray(data, Flow); + }; + Flows.prototype.Has = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (HasFlows.bind.apply(HasFlows, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.HasEither = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (HasEitherFlows.bind.apply(HasEitherFlows, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Count = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new graffiti.Count(this.api, this); + }; + Flows.prototype.Values = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + var _a; + return new ((_a = graffiti.Values).bind.apply(_a, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Keys = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + var _a; + return new ((_a = graffiti.Keys).bind.apply(_a, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Sum = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + var _a; + return new ((_a = graffiti.Keys).bind.apply(_a, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Sort = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (SortFlows.bind.apply(SortFlows, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Out = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + var _a; + return new ((_a = graffiti.Out).bind.apply(_a, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.In = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + var _a; + return new ((_a = graffiti.In).bind.apply(_a, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Both = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + var _a; + return new ((_a = graffiti.Both).bind.apply(_a, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Nodes = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + var _a; + return new ((_a = graffiti.Nodes).bind.apply(_a, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Hops = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Hops.bind.apply(Hops, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.CaptureNode = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (CaptureNode.bind.apply(CaptureNode, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Metrics = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Metrics.bind.apply(Metrics, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.RawPackets = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (RawPackets.bind.apply(RawPackets, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Sockets = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Sockets.bind.apply(Sockets, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Dedup = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (DedupFlows.bind.apply(DedupFlows, [void 0, this.api, this].concat(params)))(); + }; + Flows.prototype.Group = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (GroupFlows.bind.apply(GroupFlows, [void 0, this.api, this].concat(params)))(); + }; + return Flows; +}(graffiti.Step)); +exports.Flows = Flows; +var HasFlows = /** @class */ (function (_super) { + __extends(HasFlows, _super); + function HasFlows() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HasFlows; +}(MixinStep(Flows, "Has"))); +var HasEitherFlows = /** @class */ (function (_super) { + __extends(HasEitherFlows, _super); + function HasEitherFlows() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HasEitherFlows; +}(MixinStep(Flows, "HasEither"))); +var SortFlows = /** @class */ (function (_super) { + __extends(SortFlows, _super); + function SortFlows() { + return _super !== null && _super.apply(this, arguments) || this; + } + return SortFlows; +}(MixinStep(Flows, "Sort"))); +var DedupFlows = /** @class */ (function (_super) { + __extends(DedupFlows, _super); + function DedupFlows() { + return _super !== null && _super.apply(this, arguments) || this; } - }); -} else { - EventEmitter.defaultMaxListeners = defaultMaxListeners; -} - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== 'number' || n < 0 || isNaN(n)) - throw new TypeError('"n" argument must be a positive number'); - this._maxListeners = n; - return this; + return DedupFlows; +}(MixinStep(Flows, "Dedup"))); +var GroupFlows = /** @class */ (function (_super) { + __extends(GroupFlows, _super); + function GroupFlows() { + return _super !== null && _super.apply(this, arguments) || this; + } + GroupFlows.prototype.name = function () { return "Group"; }; + GroupFlows.prototype.serialize = function (data) { + return graffiti.SerializationHelper.unmarshalMapArray(data[0], Flow); + }; + GroupFlows.prototype.MoreThan = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (GroupFlows.bind.apply(GroupFlows, [void 0, this.api, this].concat(params)))(); + }; + return GroupFlows; +}(graffiti.Step)); +exports.GroupFlows = GroupFlows; +graffiti.G.prototype.Flows = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Flows.bind.apply(Flows, [void 0, this.api, this].concat(params)))(); }; - -function $getMaxListeners(that) { - if (that._maxListeners === undefined) - return EventEmitter.defaultMaxListeners; - return that._maxListeners; -} - -EventEmitter.prototype.getMaxListeners = function getMaxListeners() { - return $getMaxListeners(this); +graffiti.V.prototype.Metrics = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return new (Metrics.bind.apply(Metrics, [void 0, this.api, this].concat(params)))(); }; - -// These standalone emit* functions are used to optimize calling of event -// handlers for fast cases because emit() itself often has a variable number of -// arguments and can be deoptimized because of that. These functions always have -// the same number of arguments and thus do not get deoptimized, so the code -// inside them can execute faster. -function emitNone(handler, isFn, self) { - if (isFn) - handler.call(self); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self); - } -} -function emitOne(handler, isFn, self, arg1) { - if (isFn) - handler.call(self, arg1); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self, arg1); - } -} -function emitTwo(handler, isFn, self, arg1, arg2) { - if (isFn) - handler.call(self, arg1, arg2); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self, arg1, arg2); - } -} -function emitThree(handler, isFn, self, arg1, arg2, arg3) { - if (isFn) - handler.call(self, arg1, arg2, arg3); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self, arg1, arg2, arg3); - } -} - -function emitMany(handler, isFn, self, args) { - if (isFn) - handler.apply(self, args); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].apply(self, args); - } -} - -EventEmitter.prototype.emit = function emit(type) { - var er, handler, len, args, i, events; - var doError = (type === 'error'); - - events = this._events; - if (events) - doError = (doError && events.error == null); - else if (!doError) - return false; - - // If there is no 'error' event listener then throw. - if (doError) { - if (arguments.length > 1) - er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } else { - // At least give some kind of context to the user - var err = new Error('Unhandled "error" event. (' + er + ')'); - err.context = er; - throw err; +graffiti.V.prototype.Sockets = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; } - return false; - } - - handler = events[type]; - - if (!handler) - return false; - - var isFn = typeof handler === 'function'; - len = arguments.length; - switch (len) { - // fast cases - case 1: - emitNone(handler, isFn, this); - break; - case 2: - emitOne(handler, isFn, this, arguments[1]); - break; - case 3: - emitTwo(handler, isFn, this, arguments[1], arguments[2]); - break; - case 4: - emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]); - break; - // slower - default: - args = new Array(len - 1); - for (i = 1; i < len; i++) - args[i - 1] = arguments[i]; - emitMany(handler, isFn, this, args); - } - - return true; + return new (Sockets.bind.apply(Sockets, [void 0, this.api, this].concat(params)))(); }; - -function _addListener(target, type, listener, prepend) { - var m; - var events; - var existing; - - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - - events = target._events; - if (!events) { - events = target._events = objectCreate(null); - target._eventsCount = 0; - } else { - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (events.newListener) { - target.emit('newListener', type, - listener.listener ? listener.listener : listener); - - // Re-assign `events` because a newListener handler could have caused the - // this._events to be assigned to a new object - events = target._events; +graffiti.V.prototype.Flows = function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; } - existing = events[type]; - } - - if (!existing) { - // Optimize the case of one listener. Don't need the extra array object. - existing = events[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === 'function') { - // Adding the second element, need to change to array. - existing = events[type] = - prepend ? [listener, existing] : [existing, listener]; - } else { - // If we've already got an array, just append. - if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } + return new (Flows.bind.apply(Flows, [void 0, this.api, this].concat(params)))(); +}; +var EdgeRule = /** @class */ (function (_super) { + __extends(EdgeRule, _super); + function EdgeRule() { + return _super !== null && _super.apply(this, arguments) || this; + } + return EdgeRule; +}(graffiti.APIObject)); +exports.EdgeRule = EdgeRule; +var NodeRule = /** @class */ (function (_super) { + __extends(NodeRule, _super); + function NodeRule() { + return _super !== null && _super.apply(this, arguments) || this; + } + return NodeRule; +}(graffiti.APIObject)); +exports.NodeRule = NodeRule; +var Client = /** @class */ (function (_super) { + __extends(Client, _super); + function Client(options) { + var _this = _super.call(this, options) || this; + _this.captures = new graffiti.API(_this, "capture", Capture); + _this.edgeRules = new graffiti.API(_this, "edgerule", EdgeRule); + _this.nodeRules = new graffiti.API(_this, "noderule", NodeRule); + _this.packetInjections = new graffiti.API(_this, "injectpacket", PacketInjection); + return _this; } + return Client; +}(graffiti.Client)); - // Check for listener leak - if (!existing.warned) { - m = $getMaxListeners(target); - if (m && m > 0 && existing.length > m) { - existing.warned = true; - var w = new Error('Possible EventEmitter memory leak detected. ' + - existing.length + ' "' + String(type) + '" listeners ' + - 'added. Use emitter.setMaxListeners() to ' + - 'increase limit.'); - w.name = 'MaxListenersExceededWarning'; - w.emitter = target; - w.type = type; - w.count = existing.length; - if (typeof console === 'object' && console.warn) { - console.warn('%s: %s', w.name, w.message); - } - } +},{"../graffiti/js/api":1}],16:[function(require,module,exports){ +"use strict"; +/* + * Copyright (C) 2018 Red Hat, 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 ofthe 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 specificlanguage governing permissions and + * limitations under the License. + * + */ +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; } - } - - return target; -} - -EventEmitter.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); + return t; }; +Object.defineProperty(exports, "__esModule", { value: true }); +var gapi = require("../graffiti/js/api"); +var sapi = require("./api"); +var api = __assign({}, gapi, sapi); +window.api = api; +window.Metadata = gapi.Metadata; +window.NE = gapi.NE; +window.GT = gapi.GT; +window.LT = gapi.LT; +window.GTE = gapi.GTE; +window.LTE = gapi.LTE; +window.IPV4RANGE = gapi.IPV4RANGE; +window.REGEX = gapi.REGEX; +window.WITHIN = gapi.WITHIN; +window.WITHOUT = gapi.WITHOUT; +window.INSIDE = gapi.INSIDE; +window.OUTSIDE = gapi.OUTSIDE; +window.BETWEEN = gapi.BETWEEN; +window.Alert = gapi.Alert; +window.Workflow = gapi.Workflow; +window.Capture = api.Capture; +window.EdgeRule = api.EdgeRule; +window.NodeRule = api.NodeRule; +window.PacketInjection = api.PacketInjection; + +},{"../graffiti/js/api":1,"./api":15}],17:[function(require,module,exports){ +(function (global){ +'use strict'; -EventEmitter.prototype.on = EventEmitter.prototype.addListener; +// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js +// original notice: -EventEmitter.prototype.prependListener = - function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +function compare(a, b) { + if (a === b) { + return 0; + } -function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - switch (arguments.length) { - case 0: - return this.listener.call(this.target); - case 1: - return this.listener.call(this.target, arguments[0]); - case 2: - return this.listener.call(this.target, arguments[0], arguments[1]); - case 3: - return this.listener.call(this.target, arguments[0], arguments[1], - arguments[2]); - default: - var args = new Array(arguments.length); - for (var i = 0; i < args.length; ++i) - args[i] = arguments[i]; - this.listener.apply(this.target, args); + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; } } -} -function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; - var wrapped = bind.call(onceWrapper, state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; + if (x < y) { + return -1; + } + if (y < x) { + return 1; + } + return 0; +} +function isBuffer(b) { + if (global.Buffer && typeof global.Buffer.isBuffer === 'function') { + return global.Buffer.isBuffer(b); + } + return !!(b != null && b._isBuffer); } -EventEmitter.prototype.once = function once(type, listener) { - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - this.on(type, _onceWrap(this, type, listener)); - return this; -}; - -EventEmitter.prototype.prependOnceListener = - function prependOnceListener(type, listener) { - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - -// Emits a 'removeListener' event if and only if the listener was removed. -EventEmitter.prototype.removeListener = - function removeListener(type, listener) { - var list, events, position, i, originalListener; - - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - - events = this._events; - if (!events) - return this; - - list = events[type]; - if (!list) - return this; - - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = objectCreate(null); - else { - delete events[type]; - if (events.removeListener) - this.emit('removeListener', type, list.listener || listener); - } - } else if (typeof list !== 'function') { - position = -1; - - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - - if (position < 0) - return this; - - if (position === 0) - list.shift(); - else - spliceOne(list, position); +// based on node assert, original notice: - if (list.length === 1) - events[type] = list[0]; +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - if (events.removeListener) - this.emit('removeListener', type, originalListener || listener); - } +var util = require('util/'); +var hasOwn = Object.prototype.hasOwnProperty; +var pSlice = Array.prototype.slice; +var functionsHaveNames = (function () { + return function foo() {}.name === 'foo'; +}()); +function pToString (obj) { + return Object.prototype.toString.call(obj); +} +function isView(arrbuf) { + if (isBuffer(arrbuf)) { + return false; + } + if (typeof global.ArrayBuffer !== 'function') { + return false; + } + if (typeof ArrayBuffer.isView === 'function') { + return ArrayBuffer.isView(arrbuf); + } + if (!arrbuf) { + return false; + } + if (arrbuf instanceof DataView) { + return true; + } + if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { + return true; + } + return false; +} +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. - return this; - }; +var assert = module.exports = ok; -EventEmitter.prototype.removeAllListeners = - function removeAllListeners(type) { - var listeners, events, i; +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) - events = this._events; - if (!events) - return this; +var regex = /\s*function\s+([^\(\s]*)\s*/; +// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js +function getName(func) { + if (!util.isFunction(func)) { + return; + } + if (functionsHaveNames) { + return func.name; + } + var str = func.toString(); + var match = str.match(regex); + return match && match[1]; +} +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; - // not listening for removeListener, no need to emit - if (!events.removeListener) { - if (arguments.length === 0) { - this._events = objectCreate(null); - this._eventsCount = 0; - } else if (events[type]) { - if (--this._eventsCount === 0) - this._events = objectCreate(null); - else - delete events[type]; - } - return this; + // try to strip useless frames + var fn_name = getName(stackStartFunction); + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); } - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - var keys = objectKeys(events); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = objectCreate(null); - this._eventsCount = 0; - return this; - } + this.stack = out; + } + } +}; - listeners = events[type]; +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); - if (typeof listeners === 'function') { - this.removeListener(type, listeners); - } else if (listeners) { - // LIFO order - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } +function truncate(s, n) { + if (typeof s === 'string') { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} +function inspect(something) { + if (functionsHaveNames || !util.isFunction(something)) { + return util.inspect(something); + } + var rawname = getName(something); + var name = rawname ? ': ' + rawname : ''; + return '[Function' + name + ']'; +} +function getMessage(self) { + return truncate(inspect(self.actual), 128) + ' ' + + self.operator + ' ' + + truncate(inspect(self.expected), 128); +} - return this; - }; +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. -function _listeners(target, type, unwrap) { - var events = target._events; +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. - if (!events) - return []; +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} - var evlistener = events[type]; - if (!evlistener) - return []; +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; - if (typeof evlistener === 'function') - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); } +assert.ok = ok; -EventEmitter.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); -}; +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); -EventEmitter.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); }; -EventEmitter.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === 'function') { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); } }; -EventEmitter.prototype.listenerCount = listenerCount; -function listenerCount(type) { - var events = this._events; +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); - if (events) { - var evlistener = events[type]; +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; - if (typeof evlistener === 'function') { - return 1; - } else if (evlistener) { - return evlistener.length; - } +assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual); } +}; - return 0; -} +function _deepEqual(actual, expected, strict, memos) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + } else if (isBuffer(actual) && isBuffer(expected)) { + return compare(actual, expected) === 0; -EventEmitter.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; -}; + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); -// About 1.5x faster than the two-arg version of Array#splice(). -function spliceOne(list, index) { - for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) - list[i] = list[k]; - list.pop(); -} + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; -function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; -} + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if ((actual === null || typeof actual !== 'object') && + (expected === null || typeof expected !== 'object')) { + return strict ? actual === expected : actual == expected; -function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; + // If both values are instances of typed arrays, wrap their underlying + // ArrayBuffers in a Buffer each to increase performance + // This optimization requires the arrays to have the same type as checked by + // Object.prototype.toString (aka pToString). Never perform binary + // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their + // bit patterns are not identical. + } else if (isView(actual) && isView(expected) && + pToString(actual) === pToString(expected) && + !(actual instanceof Float32Array || + actual instanceof Float64Array)) { + return compare(new Uint8Array(actual.buffer), + new Uint8Array(expected.buffer)) === 0; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else if (isBuffer(actual) !== isBuffer(expected)) { + return false; + } else { + memos = memos || {actual: [], expected: []}; + + var actualIndex = memos.actual.indexOf(actual); + if (actualIndex !== -1) { + if (actualIndex === memos.expected.indexOf(expected)) { + return true; + } + } + + memos.actual.push(actual); + memos.expected.push(expected); + + return objEquiv(actual, expected, strict, memos); } - return ret; } -function objectCreatePolyfill(proto) { - var F = function() {}; - F.prototype = proto; - return new F; +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; } -function objectKeysPolyfill(obj) { - var keys = []; - for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) { - keys.push(k); + +function objEquiv(a, b, strict, actualVisitedObjects) { + if (a === null || a === undefined || b === null || b === undefined) + return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) + return a === b; + if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) + return false; + var aIsArgs = isArguments(a); + var bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b, strict); + } + var ka = objectKeys(a); + var kb = objectKeys(b); + var key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length !== kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] !== kb[i]) + return false; } - return k; -} -function functionBindPolyfill(context) { - var fn = this; - return function () { - return fn.apply(context, arguments); - }; + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) + return false; + } + return true; } -},{}],16:[function(require,module,exports){ -var http = require('http') -var url = require('url') +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); -var https = module.exports +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; -for (var key in http) { - if (http.hasOwnProperty(key)) https[key] = http[key] +assert.notDeepStrictEqual = notDeepStrictEqual; +function notDeepStrictEqual(actual, expected, message) { + if (_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); + } } -https.request = function (params, cb) { - params = validateParams(params) - return http.request.call(this, params, cb) -} -https.get = function (params, cb) { - params = validateParams(params) - return http.get.call(this, params, cb) -} +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); -function validateParams (params) { - if (typeof params === 'string') { - params = url.parse(params) +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); } - if (!params.protocol) { - params.protocol = 'https:' +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); } - if (params.protocol !== 'https:') { - throw new Error('Protocol "' + params.protocol + '" not supported. Expected "https:"') +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; } - return params -} -},{"http":66,"url":72}],17:[function(require,module,exports){ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var nBits = -7 - var i = isLE ? (nBytes - 1) : 0 - var d = isLE ? -1 : 1 - var s = buffer[offset + i] + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } - i += d + try { + if (actual instanceof expected) { + return true; + } + } catch (e) { + // Ignore. The instanceof check doesn't work for arrow functions. + } - e = s & ((1 << (-nBits)) - 1) - s >>= (-nBits) - nBits += eLen - for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + if (Error.isPrototypeOf(expected)) { + return false; + } - m = e & ((1 << (-nBits)) - 1) - e >>= (-nBits) - nBits += mLen - for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + return expected.call({}, actual) === true; +} - if (e === 0) { - e = 1 - eBias - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen) - e = e - eBias +function _tryBlock(block) { + var error; + try { + block(); + } catch (e) { + error = e; } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) + return error; } -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) - var i = isLE ? 0 : (nBytes - 1) - var d = isLE ? 1 : -1 - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 - - value = Math.abs(value) - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0 - e = eMax - } else { - e = Math.floor(Math.log(value) / Math.LN2) - if (value * (c = Math.pow(2, -e)) < 1) { - e-- - c *= 2 - } - if (e + eBias >= 1) { - value += rt / c - } else { - value += rt * Math.pow(2, 1 - eBias) - } - if (value * c >= 2) { - e++ - c /= 2 - } +function _throws(shouldThrow, block, expected, message) { + var actual; - if (e + eBias >= eMax) { - m = 0 - e = eMax - } else if (e + eBias >= 1) { - m = ((value * c) - 1) * Math.pow(2, mLen) - e = e + eBias - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) - e = 0 - } + if (typeof block !== 'function') { + throw new TypeError('"block" argument must be a function'); } - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + if (typeof expected === 'string') { + message = expected; + expected = null; + } - e = (e << mLen) | m - eLen += mLen - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + actual = _tryBlock(block); - buffer[offset + i - d] |= s * 128 -} + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); -},{}],18:[function(require,module,exports){ -arguments[4][4][0].apply(exports,arguments) -},{"dup":4}],19:[function(require,module,exports){ -/*! - * Determine if an object is a Buffer - * - * @author Feross Aboukhadijeh - * @license MIT - */ + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -module.exports = function (obj) { - return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) -} + var userProvidedMessage = typeof message === 'string'; + var isUnwantedException = !shouldThrow && util.isError(actual); + var isUnexpectedException = !shouldThrow && actual && !expected; -function isBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} + if ((isUnwantedException && + userProvidedMessage && + expectedException(actual, expected)) || + isUnexpectedException) { + fail(actual, expected, 'Got unwanted exception' + message); + } -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } } -},{}],20:[function(require,module,exports){ -var toString = {}.toString; +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws(true, block, error, message); }; -},{}],21:[function(require,module,exports){ - -module.exports = require('./lib/jquery-deferred'); -},{"./lib/jquery-deferred":24}],22:[function(require,module,exports){ -var jQuery = module.exports = require("./jquery-core.js"), - core_rspace = /\s+/; -/** -* jQuery Callbacks -* -* Code from: https://github.com/jquery/jquery/blob/master/src/callbacks.js -* -*/ +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { + _throws(false, block, error, message); +}; +assert.ifError = function(err) { if (err) throw err; }; -// String to Object options format cache -var optionsCache = {}; +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.split( core_rspace ), function( _, flag ) { - object[ flag ] = true; - }); - return object; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"util/":20}],18:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } } -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { +},{}],19:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],20:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } - var // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Control if a given callback is in the list - has: function( fn ) { - return jQuery.inArray( fn, list ) > -1; - }, - // Remove all callbacks from the list - empty: function() { - list = []; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( list && ( !fired || stack ) ) { - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; - return self; + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; }; -},{"./jquery-core.js":23}],23:[function(require,module,exports){ /** -* jQuery core object. -* -* Worker with jQuery deferred -* -* Code from: https://github.com/jquery/jquery/blob/master/src/core.js -* -*/ + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; -var jQuery = module.exports = { - type: type - , isArray: isArray - , isFunction: isFunction - , isPlainObject: isPlainObject - , each: each - , extend: extend - , noop: function() {} + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] }; -var toString = Object.prototype.toString; +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; -var class2type = {}; -// Populate the class2type map -"Boolean Number String Function Array Date RegExp Object".split(" ").forEach(function(name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; -function type( obj ) { - return obj == null ? - String( obj ) : - class2type[ toString.call(obj) ] || "object"; + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } } -function isFunction( obj ) { - return jQuery.type(obj) === "function"; + +function stylizeNoColor(str, styleType) { + return str; } -function isArray( obj ) { - return jQuery.type(obj) === "array"; + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; } -function each( object, callback, args ) { - var name, i = 0, - length = object.length, - isObj = length === undefined || isFunction( object ); - if ( args ) { - if ( isObj ) { - for ( name in object ) { - if ( callback.apply( object[ name ], args ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.apply( object[ i++ ], args ) === false ) { - break; - } - } - } +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); - // A special, fast, case for the most common use of each - } else { - if ( isObj ) { - for ( name in object ) { - if ( callback.call( object[ name ], name, object[ name ] ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { - break; - } - } - } - } + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } - return object; -} + ctx.seen.pop(); -function isPlainObject( obj ) { - // Must be an Object. - if ( !obj || jQuery.type(obj) !== "object" ) { - return false; - } - return true; + return reduceToSingleString(output, base, braces); } -function extend() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } + return name + ': ' + str; +} - // Return the modified object - return target; -}; +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } -},{}],24:[function(require,module,exports){ + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} -/*! -* jquery-deferred -* Copyright(c) 2011 Hidden -* MIT Licensed -*/ -/** -* Library version. -*/ +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; -var jQuery = module.exports = require("./jquery-callbacks.js"), - core_slice = Array.prototype.slice; +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; -/** -* jQuery deferred -* -* Code from: https://github.com/jquery/jquery/blob/master/src/deferred.js -* Doc: http://api.jquery.com/category/deferred-object/ -* -*/ +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; -jQuery.extend({ +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var action = tuple[ 0 ], - fn = fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ]( jQuery.isFunction( fn ) ? - function() { - var returned = fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); - } - } : - newDefer[ action ] - ); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; - // Keep pipe for back-compat - promise.pipe = promise.then; +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; - // deferred[ resolve | reject | notify ] = list.fire - deferred[ tuple[0] ] = list.fire; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; - // Make the deferred a promise - promise.promise( deferred ); +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; - // All done! - return deferred; - }, +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = core_slice.call( arguments ), - length = resolveValues.length, +exports.isBuffer = require('./support/isBuffer'); - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, +function objectToString(o) { + return Object.prototype.toString.call(o); +} - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; - if( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} - progressValues, progressContexts, resolveContexts; - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} - return deferred.promise(); - } -}); -},{"./jquery-callbacks.js":22}],25:[function(require,module,exports){ -(function (global){ -/** - * Lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); -/** Used to detect hot functions by number of calls within a span of milliseconds. */ -var HOT_COUNT = 800, - HOT_SPAN = 16; +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - asyncTag = '[object AsyncFunction]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - nullTag = '[object Null]', - objectTag = '[object Object]', - proxyTag = '[object Proxy]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - undefinedTag = '[object Undefined]', - weakMapTag = '[object WeakMap]'; +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":19,"_process":46,"inherits":18}],21:[function(require,module,exports){ +'use strict' -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} -/** Used to identify `toStringTag` values of typed arrays. */ -var typedArrayTags = {}; -typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = -typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = -typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = -typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = -typedArrayTags[uint32Tag] = true; -typedArrayTags[argsTag] = typedArrayTags[arrayTag] = -typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = -typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = -typedArrayTags[errorTag] = typedArrayTags[funcTag] = -typedArrayTags[mapTag] = typedArrayTags[numberTag] = -typedArrayTags[objectTag] = typedArrayTags[regexpTag] = -typedArrayTags[setTag] = typedArrayTags[stringTag] = -typedArrayTags[weakMapTag] = false; +// Support decoding URL-safe base64 strings, as Node.js does. +// See: https://en.wikipedia.org/wiki/Base64#URL_applications +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; +function getLens (b64) { + var len = b64.length -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len -/** Detect free variable `exports`. */ -var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + return [validLen, placeHoldersLen] +} -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} -/** Detect free variable `process` from Node.js. */ -var freeProcess = moduleExports && freeGlobal.process; +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} -/** Used to access faster Node.js helpers. */ -var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] - if (types) { - return types; - } + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} -}()); + var curByte = 0 -/* Node.js helper references. */ -var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen -/** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ -function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); + for (var i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF } - return func.apply(thisArg, args); -} -/** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ -function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } - while (++index < n) { - result[index] = iteratee(index); + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF } - return result; + + return arr } -/** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ -function baseUnary(func) { - return function(value) { - return func(value); - }; +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] } -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') } -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk( + uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) + )) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') } -/** Used for built-in method references. */ -var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; +},{}],22:[function(require,module,exports){ -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; +},{}],23:[function(require,module,exports){ +(function (process,Buffer){ +'use strict'; +/* eslint camelcase: "off" */ -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; +var assert = require('assert'); -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; +var Zstream = require('pako/lib/zlib/zstream'); +var zlib_deflate = require('pako/lib/zlib/deflate.js'); +var zlib_inflate = require('pako/lib/zlib/inflate.js'); +var constants = require('pako/lib/zlib/constants'); -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); +for (var key in constants) { + exports[key] = constants[key]; +} + +// zlib modes +exports.NONE = 0; +exports.DEFLATE = 1; +exports.INFLATE = 2; +exports.GZIP = 3; +exports.GUNZIP = 4; +exports.DEFLATERAW = 5; +exports.INFLATERAW = 6; +exports.UNZIP = 7; + +var GZIP_HEADER_ID1 = 0x1f; +var GZIP_HEADER_ID2 = 0x8b; /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. + * Emulate Node's zlib C++ layer for use by the JS layer in index.js */ -var nativeObjectToString = objectProto.toString; +function Zlib(mode) { + if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) { + throw new TypeError('Bad argument'); + } -/** Used to infer the `Object` constructor. */ -var objectCtorString = funcToString.call(Object); + this.dictionary = null; + this.err = 0; + this.flush = 0; + this.init_done = false; + this.level = 0; + this.memLevel = 0; + this.mode = mode; + this.strategy = 0; + this.windowBits = 0; + this.write_in_progress = false; + this.pending_close = false; + this.gzip_id_bytes_read = 0; +} -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); +Zlib.prototype.close = function () { + if (this.write_in_progress) { + this.pending_close = true; + return; + } -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined, - Symbol = root.Symbol, - Uint8Array = root.Uint8Array, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, - getPrototype = overArg(Object.getPrototypeOf, Object), - objectCreate = Object.create, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - splice = arrayProto.splice, - symToStringTag = Symbol ? Symbol.toStringTag : undefined; + this.pending_close = false; -var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} -}()); + assert(this.init_done, 'close before init'); + assert(this.mode <= exports.UNZIP); -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, - nativeMax = Math.max, - nativeNow = Date.now; + if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) { + zlib_deflate.deflateEnd(this.strm); + } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) { + zlib_inflate.inflateEnd(this.strm); + } -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'), - nativeCreate = getNative(Object, 'create'); + this.mode = exports.NONE; -/** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ -var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; -}()); + this.dictionary = null; +}; -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; +Zlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) { + return this._write(true, flush, input, in_off, in_len, out, out_off, out_len); +}; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} +Zlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) { + return this._write(false, flush, input, in_off, in_len, out, out_off, out_len); +}; -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; -} +Zlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) { + assert.equal(arguments.length, 8); -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; -} + assert(this.init_done, 'write before init'); + assert(this.mode !== exports.NONE, 'already finalized'); + assert.equal(false, this.write_in_progress, 'write already in progress'); + assert.equal(false, this.pending_close, 'close is pending'); -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; + this.write_in_progress = true; + + assert.equal(false, flush === undefined, 'must provide flush value'); + + this.write_in_progress = true; + + if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) { + throw new Error('Invalid flush value'); } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); -} + if (input == null) { + input = Buffer.alloc(0); + in_len = 0; + in_off = 0; + } + + this.strm.avail_in = in_len; + this.strm.input = input; + this.strm.next_in = in_off; + this.strm.avail_out = out_len; + this.strm.output = out; + this.strm.next_out = out_off; + this.flush = flush; + + if (!async) { + // sync version + this._process(); + + if (this._checkError()) { + return this._afterSync(); + } + return; + } + + // async version + var self = this; + process.nextTick(function () { + self._process(); + self._after(); + }); -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; return this; -} +}; -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; +Zlib.prototype._afterSync = function () { + var avail_out = this.strm.avail_out; + var avail_in = this.strm.avail_in; -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; + this.write_in_progress = false; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} + return [avail_in, avail_out]; +}; -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; - this.size = 0; -} +Zlib.prototype._process = function () { + var next_expected_header_byte = null; -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); + // If the avail_out is left at 0, then it means that it ran out + // of room. If there was avail_out left over, then it means + // that all of the input was consumed. + switch (this.mode) { + case exports.DEFLATE: + case exports.GZIP: + case exports.DEFLATERAW: + this.err = zlib_deflate.deflate(this.strm, this.flush); + break; + case exports.UNZIP: + if (this.strm.avail_in > 0) { + next_expected_header_byte = this.strm.next_in; + } - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; -} + switch (this.gzip_id_bytes_read) { + case 0: + if (next_expected_header_byte === null) { + break; + } -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); + if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) { + this.gzip_id_bytes_read = 1; + next_expected_header_byte++; - return index < 0 ? undefined : data[index][1]; -} + if (this.strm.avail_in === 1) { + // The only available byte was already read. + break; + } + } else { + this.mode = exports.INFLATE; + break; + } -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} + // fallthrough + case 1: + if (next_expected_header_byte === null) { + break; + } -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); + if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) { + this.gzip_id_bytes_read = 2; + this.mode = exports.GUNZIP; + } else { + // There is no actual difference between INFLATE and INFLATERAW + // (after initialization). + this.mode = exports.INFLATE; + } - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; + break; + default: + throw new Error('invalid number of gzip magic number bytes read'); + } + + // fallthrough + case exports.INFLATE: + case exports.GUNZIP: + case exports.INFLATERAW: + this.err = zlib_inflate.inflate(this.strm, this.flush + + // If data was encoded with dictionary + );if (this.err === exports.Z_NEED_DICT && this.dictionary) { + // Load it + this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary); + if (this.err === exports.Z_OK) { + // And try to decode again + this.err = zlib_inflate.inflate(this.strm, this.flush); + } else if (this.err === exports.Z_DATA_ERROR) { + // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR. + // Make it possible for After() to tell a bad dictionary from bad + // input. + this.err = exports.Z_NEED_DICT; + } + } + while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) { + // Bytes remain in input buffer. Perhaps this is another compressed + // member in the same archive, or just trailing garbage. + // Trailing zero bytes are okay, though, since they are frequently + // used for padding. + + this.reset(); + this.err = zlib_inflate.inflate(this.strm, this.flush); + } + break; + default: + throw new Error('Unknown mode ' + this.mode); } - return this; -} +}; -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; +Zlib.prototype._checkError = function () { + // Acceptable error states depend on the type of zlib stream. + switch (this.err) { + case exports.Z_OK: + case exports.Z_BUF_ERROR: + if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) { + this._error('unexpected end of file'); + return false; + } + break; + case exports.Z_STREAM_END: + // normal statuses, not fatal + break; + case exports.Z_NEED_DICT: + if (this.dictionary == null) { + this._error('Missing dictionary'); + } else { + this._error('Bad dictionary'); + } + return false; + default: + // something else. + this._error('Zlib error'); + return false; + } -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; + return true; +}; + +Zlib.prototype._after = function () { + if (!this._checkError()) { + return; + } + + var avail_out = this.strm.avail_out; + var avail_in = this.strm.avail_in; + + this.write_in_progress = false; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); + // call the write() cb + this.callback(avail_in, avail_out); + + if (this.pending_close) { + this.close(); } -} +}; -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; -} +Zlib.prototype._error = function (message) { + if (this.strm.msg) { + message = this.strm.msg; + } + this.onerror(message, this.err -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; -} + // no hope of rescue. + );this.write_in_progress = false; + if (this.pending_close) { + this.close(); + } +}; -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} +Zlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) { + assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])'); -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} + assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits'); + assert(level >= -1 && level <= 9, 'invalid compression level'); -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; + assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel'); - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; -} + assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy'); -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; + this._init(level, windowBits, memLevel, strategy, dictionary); + this._setDictionary(); +}; -/** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; -} +Zlib.prototype.params = function () { + throw new Error('deflateParams Not supported'); +}; -/** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ -function stackClear() { - this.__data__ = new ListCache; - this.size = 0; -} +Zlib.prototype.reset = function () { + this._reset(); + this._setDictionary(); +}; -/** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); +Zlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) { + this.level = level; + this.windowBits = windowBits; + this.memLevel = memLevel; + this.strategy = strategy; - this.size = data.size; - return result; -} + this.flush = exports.Z_NO_FLUSH; -/** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function stackGet(key) { - return this.__data__.get(key); -} + this.err = exports.Z_OK; -/** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function stackHas(key) { - return this.__data__.has(key); -} + if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) { + this.windowBits += 16; + } -/** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ -function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); + if (this.mode === exports.UNZIP) { + this.windowBits += 32; } - data.set(key, value); - this.size = data.size; - return this; -} -// Add methods to `Stack`. -Stack.prototype.clear = stackClear; -Stack.prototype['delete'] = stackDelete; -Stack.prototype.get = stackGet; -Stack.prototype.has = stackHas; -Stack.prototype.set = stackSet; + if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) { + this.windowBits = -1 * this.windowBits; + } -/** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ -function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; + this.strm = new Zstream(); - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } + switch (this.mode) { + case exports.DEFLATE: + case exports.GZIP: + case exports.DEFLATERAW: + this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy); + break; + case exports.INFLATE: + case exports.GUNZIP: + case exports.INFLATERAW: + case exports.UNZIP: + this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits); + break; + default: + throw new Error('Unknown mode ' + this.mode); } - return result; -} -/** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); + if (this.err !== exports.Z_OK) { + this._error('Init error'); } -} -/** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); + this.dictionary = dictionary; + + this.write_in_progress = false; + this.init_done = true; +}; + +Zlib.prototype._setDictionary = function () { + if (this.dictionary == null) { + return; } -} -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } + this.err = exports.Z_OK; + + switch (this.mode) { + case exports.DEFLATE: + case exports.DEFLATERAW: + this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary); + break; + default: + break; } - return -1; -} -/** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; + if (this.err !== exports.Z_OK) { + this._error('Failed to set dictionary'); } -} +}; -/** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseFor = createBaseFor(); +Zlib.prototype._reset = function () { + this.err = exports.Z_OK; -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; + switch (this.mode) { + case exports.DEFLATE: + case exports.DEFLATERAW: + case exports.GZIP: + this.err = zlib_deflate.deflateReset(this.strm); + break; + case exports.INFLATE: + case exports.INFLATERAW: + case exports.GUNZIP: + this.err = zlib_inflate.inflateReset(this.strm); + break; + default: + break; } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); -} -/** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ -function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; -} + if (this.err !== exports.Z_OK) { + this._error('Failed to reset stream'); + } +}; -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; +exports.Zlib = Zlib; +}).call(this,require('_process'),require("buffer").Buffer) +},{"_process":46,"assert":17,"buffer":25,"pako/lib/zlib/constants":36,"pako/lib/zlib/deflate.js":38,"pako/lib/zlib/inflate.js":40,"pako/lib/zlib/zstream":44}],24:[function(require,module,exports){ +(function (process){ +'use strict'; + +var Buffer = require('buffer').Buffer; +var Transform = require('stream').Transform; +var binding = require('./binding'); +var util = require('util'); +var assert = require('assert').ok; +var kMaxLength = require('buffer').kMaxLength; +var kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes'; + +// zlib doesn't provide these, so kludge them in following the same +// const naming scheme zlib uses. +binding.Z_MIN_WINDOWBITS = 8; +binding.Z_MAX_WINDOWBITS = 15; +binding.Z_DEFAULT_WINDOWBITS = 15; + +// fewer than 64 bytes per chunk is stupid. +// technically it could work with as few as 8, but even 64 bytes +// is absurdly low. Usually a MB or more is best. +binding.Z_MIN_CHUNK = 64; +binding.Z_MAX_CHUNK = Infinity; +binding.Z_DEFAULT_CHUNK = 16 * 1024; + +binding.Z_MIN_MEMLEVEL = 1; +binding.Z_MAX_MEMLEVEL = 9; +binding.Z_DEFAULT_MEMLEVEL = 8; + +binding.Z_MIN_LEVEL = -1; +binding.Z_MAX_LEVEL = 9; +binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION; + +// expose all the zlib constants +var bkeys = Object.keys(binding); +for (var bk = 0; bk < bkeys.length; bk++) { + var bkey = bkeys[bk]; + if (bkey.match(/^Z/)) { + Object.defineProperty(exports, bkey, { + enumerable: true, value: binding[bkey], writable: false + }); } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); } -/** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ -function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +// translation table for return codes. +var codes = { + Z_OK: binding.Z_OK, + Z_STREAM_END: binding.Z_STREAM_END, + Z_NEED_DICT: binding.Z_NEED_DICT, + Z_ERRNO: binding.Z_ERRNO, + Z_STREAM_ERROR: binding.Z_STREAM_ERROR, + Z_DATA_ERROR: binding.Z_DATA_ERROR, + Z_MEM_ERROR: binding.Z_MEM_ERROR, + Z_BUF_ERROR: binding.Z_BUF_ERROR, + Z_VERSION_ERROR: binding.Z_VERSION_ERROR +}; + +var ckeys = Object.keys(codes); +for (var ck = 0; ck < ckeys.length; ck++) { + var ckey = ckeys[ck]; + codes[codes[ckey]] = ckey; } -/** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; +Object.defineProperty(exports, 'codes', { + enumerable: true, value: Object.freeze(codes), writable: false +}); + +exports.Deflate = Deflate; +exports.Inflate = Inflate; +exports.Gzip = Gzip; +exports.Gunzip = Gunzip; +exports.DeflateRaw = DeflateRaw; +exports.InflateRaw = InflateRaw; +exports.Unzip = Unzip; - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; -} +exports.createDeflate = function (o) { + return new Deflate(o); +}; -/** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined; +exports.createInflate = function (o) { + return new Inflate(o); +}; - if (newValue === undefined) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); -} +exports.createDeflateRaw = function (o) { + return new DeflateRaw(o); +}; -/** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), - srcValue = safeGet(source, key), - stacked = stack.get(srcValue); +exports.createInflateRaw = function (o) { + return new InflateRaw(o); +}; - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; +exports.createGzip = function (o) { + return new Gzip(o); +}; - var isCommon = newValue === undefined; +exports.createGunzip = function (o) { + return new Gunzip(o); +}; - if (isCommon) { - var isArr = isArray(srcValue), - isBuff = !isArr && isBuffer(srcValue), - isTyped = !isArr && !isBuff && isTypedArray(srcValue); +exports.createUnzip = function (o) { + return new Unzip(o); +}; - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } - else { - isCommon = false; - } +// Convenience methods. +// compress/decompress a string or buffer in one step. +exports.deflate = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); + return zlibBuffer(new Deflate(opts), buffer, callback); +}; + +exports.deflateSync = function (buffer, opts) { + return zlibBufferSync(new Deflate(opts), buffer); +}; + +exports.gzip = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; } - assignMergeValue(object, key, newValue); -} + return zlibBuffer(new Gzip(opts), buffer, callback); +}; -/** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ -function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); -} +exports.gzipSync = function (buffer, opts) { + return zlibBufferSync(new Gzip(opts), buffer); +}; -/** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); +exports.deflateRaw = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return zlibBuffer(new DeflateRaw(opts), buffer, callback); }; -/** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ -function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); +exports.deflateRawSync = function (buffer, opts) { + return zlibBufferSync(new DeflateRaw(opts), buffer); +}; + +exports.unzip = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + return zlibBuffer(new Unzip(opts), buffer, callback); +}; - buffer.copy(result); - return result; -} +exports.unzipSync = function (buffer, opts) { + return zlibBufferSync(new Unzip(opts), buffer); +}; -/** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ -function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; -} +exports.inflate = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return zlibBuffer(new Inflate(opts), buffer, callback); +}; -/** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ -function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); -} +exports.inflateSync = function (buffer, opts) { + return zlibBufferSync(new Inflate(opts), buffer); +}; + +exports.gunzip = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return zlibBuffer(new Gunzip(opts), buffer, callback); +}; -/** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ -function copyArray(source, array) { - var index = -1, - length = source.length; +exports.gunzipSync = function (buffer, opts) { + return zlibBufferSync(new Gunzip(opts), buffer); +}; - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; +exports.inflateRaw = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; } - return array; -} + return zlibBuffer(new InflateRaw(opts), buffer, callback); +}; -/** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ -function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); +exports.inflateRawSync = function (buffer, opts) { + return zlibBufferSync(new InflateRaw(opts), buffer); +}; - var index = -1, - length = props.length; +function zlibBuffer(engine, buffer, callback) { + var buffers = []; + var nread = 0; - while (++index < length) { - var key = props[index]; + engine.on('error', onError); + engine.on('end', onEnd); - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; + engine.end(buffer); + flow(); - if (newValue === undefined) { - newValue = source[key]; + function flow() { + var chunk; + while (null !== (chunk = engine.read())) { + buffers.push(chunk); + nread += chunk.length; } - if (isNew) { - baseAssignValue(object, key, newValue); + engine.once('readable', flow); + } + + function onError(err) { + engine.removeListener('end', onEnd); + engine.removeListener('readable', flow); + callback(err); + } + + function onEnd() { + var buf; + var err = null; + + if (nread >= kMaxLength) { + err = new RangeError(kRangeErrorMessage); } else { - assignValue(object, key, newValue); + buf = Buffer.concat(buffers, nread); } + + buffers = []; + engine.close(); + callback(err, buf); } - return object; } -/** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ -function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; +function zlibBufferSync(engine, buffer) { + if (typeof buffer === 'string') buffer = Buffer.from(buffer); - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; + if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer'); - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); + var flushFlag = engine._finishFlushFlag; + + return engine._processChunk(buffer, flushFlag); } -/** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; +// generic zlib +// minimal 2-byte header +function Deflate(opts) { + if (!(this instanceof Deflate)) return new Deflate(opts); + Zlib.call(this, opts, binding.DEFLATE); +} - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; +function Inflate(opts) { + if (!(this instanceof Inflate)) return new Inflate(opts); + Zlib.call(this, opts, binding.INFLATE); } -/** - * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source - * objects into destination objects that are passed thru. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to merge. - * @param {Object} object The parent object of `objValue`. - * @param {Object} source The parent object of `srcValue`. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - * @returns {*} Returns the value to assign. - */ -function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); - stack['delete'](srcValue); - } - return objValue; +// gzip - bigger header, same deflate compression +function Gzip(opts) { + if (!(this instanceof Gzip)) return new Gzip(opts); + Zlib.call(this, opts, binding.GZIP); } -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; +function Gunzip(opts) { + if (!(this instanceof Gunzip)) return new Gunzip(opts); + Zlib.call(this, opts, binding.GUNZIP); } -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; +// raw - no header +function DeflateRaw(opts) { + if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts); + Zlib.call(this, opts, binding.DEFLATERAW); +} + +function InflateRaw(opts) { + if (!(this instanceof InflateRaw)) return new InflateRaw(opts); + Zlib.call(this, opts, binding.INFLATERAW); +} + +// auto-detect header. +function Unzip(opts) { + if (!(this instanceof Unzip)) return new Unzip(opts); + Zlib.call(this, opts, binding.UNZIP); +} + +function isValidFlushFlag(flag) { + return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK; } -/** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ -function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; +// the Zlib class they all inherit from +// This thing manages the queue of requests, and returns +// true or false if there is anything in the queue when +// you call the .write() method. + +function Zlib(opts, mode) { + var _this = this; + + this._opts = opts = opts || {}; + this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK; + + Transform.call(this, opts); + + if (opts.flush && !isValidFlushFlag(opts.flush)) { + throw new Error('Invalid flush flag: ' + opts.flush); + } + if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) { + throw new Error('Invalid flush flag: ' + opts.finishFlush); + } + + this._flushFlag = opts.flush || binding.Z_NO_FLUSH; + this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH; + + if (opts.chunkSize) { + if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) { + throw new Error('Invalid chunk size: ' + opts.chunkSize); + } + } + + if (opts.windowBits) { + if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) { + throw new Error('Invalid windowBits: ' + opts.windowBits); + } + } + + if (opts.level) { + if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) { + throw new Error('Invalid compression level: ' + opts.level); + } + } - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} + if (opts.memLevel) { + if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) { + throw new Error('Invalid memLevel: ' + opts.memLevel); + } + } - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; + if (opts.strategy) { + if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) { + throw new Error('Invalid strategy: ' + opts.strategy); } } - return result; -} -/** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; -} + if (opts.dictionary) { + if (!Buffer.isBuffer(opts.dictionary)) { + throw new Error('Invalid dictionary: it should be a Buffer instance'); + } + } -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; + this._handle = new binding.Zlib(mode); - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); + var self = this; + this._hadError = false; + this._handle.onerror = function (message, errno) { + // there is no way to cleanly recover. + // continuing only obscures problems. + _close(self); + self._hadError = true; + + var error = new Error(message); + error.errno = errno; + error.code = exports.codes[errno]; + self.emit('error', error); + }; + + var level = exports.Z_DEFAULT_COMPRESSION; + if (typeof opts.level === 'number') level = opts.level; + + var strategy = exports.Z_DEFAULT_STRATEGY; + if (typeof opts.strategy === 'number') strategy = opts.strategy; + + this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary); + + this._buffer = Buffer.allocUnsafe(this._chunkSize); + this._offset = 0; + this._level = level; + this._strategy = strategy; + + this.once('end', this.close); + + Object.defineProperty(this, '_closed', { + get: function () { + return !_this._handle; + }, + configurable: true, + enumerable: true + }); } -/** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ -function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; +util.inherits(Zlib, Transform); + +Zlib.prototype.params = function (level, strategy, callback) { + if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) { + throw new RangeError('Invalid compression level: ' + level); } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); + if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) { + throw new TypeError('Invalid strategy: ' + strategy); } - return false; -} -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} + if (this._level !== level || this._strategy !== strategy) { + var self = this; + this.flush(binding.Z_SYNC_FLUSH, function () { + assert(self._handle, 'zlib binding closed'); + self._handle.params(level, strategy); + if (!self._hadError) { + self._level = level; + self._strategy = strategy; + if (callback) callback(); + } + }); + } else { + process.nextTick(callback); + } +}; -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} +Zlib.prototype.reset = function () { + assert(this._handle, 'zlib binding closed'); + return this._handle.reset(); +}; -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; +// This is the _flush function called by the transform class, +// internally, when the last chunk has been written. +Zlib.prototype._flush = function (callback) { + this._transform(Buffer.alloc(0), '', callback); +}; - return value === proto; -} +Zlib.prototype.flush = function (kind, callback) { + var _this2 = this; -/** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); + var ws = this._writableState; + + if (typeof kind === 'function' || kind === undefined && !callback) { + callback = kind; + kind = binding.Z_FULL_FLUSH; + } + + if (ws.ended) { + if (callback) process.nextTick(callback); + } else if (ws.ending) { + if (callback) this.once('end', callback); + } else if (ws.needDrain) { + if (callback) { + this.once('drain', function () { + return _this2.flush(kind, callback); + }); } + } else { + this._flushFlag = kind; + this.write(Buffer.alloc(0), '', callback); } - return result; -} +}; -/** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ -function objectToString(value) { - return nativeObjectToString.call(value); +Zlib.prototype.close = function (callback) { + _close(this, callback); + process.nextTick(emitCloseNT, this); +}; + +function _close(engine, callback) { + if (callback) process.nextTick(callback); + + // Caller may invoke .close after a zlib error (which will null _handle). + if (!engine._handle) return; + + engine._handle.close(); + engine._handle = null; } -/** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ -function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; +function emitCloseNT(self) { + self.emit('close'); } -/** - * Gets the value at `key`, unless `key` is "__proto__" or "constructor". - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function safeGet(object, key) { - if (key === 'constructor' && typeof object[key] === 'function') { - return; - } +Zlib.prototype._transform = function (chunk, encoding, cb) { + var flushFlag; + var ws = this._writableState; + var ending = ws.ending || ws.ended; + var last = ending && (!chunk || ws.length === chunk.length); - if (key == '__proto__') { - return; + if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input')); + + if (!this._handle) return cb(new Error('zlib binding closed')); + + // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag + // (or whatever flag was provided using opts.finishFlush). + // If it's explicitly flushing at some other time, then we use + // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression + // goodness. + if (last) flushFlag = this._finishFlushFlag;else { + flushFlag = this._flushFlag; + // once we've flushed the last of the queue, stop flushing and + // go back to the normal behavior. + if (chunk.length >= ws.length) { + this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH; + } } - return object[key]; -} + this._processChunk(chunk, flushFlag, cb); +}; -/** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var setToString = shortOut(baseSetToString); +Zlib.prototype._processChunk = function (chunk, flushFlag, cb) { + var availInBefore = chunk && chunk.length; + var availOutBefore = this._chunkSize - this._offset; + var inOff = 0; -/** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ -function shortOut(func) { - var count = 0, - lastCalled = 0; + var self = this; - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); + var async = typeof cb === 'function'; - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; + if (!async) { + var buffers = []; + var nread = 0; + + var error; + this.on('error', function (er) { + error = er; + }); + + assert(this._handle, 'zlib binding closed'); + do { + var res = this._handle.writeSync(flushFlag, chunk, // in + inOff, // in_off + availInBefore, // in_len + this._buffer, // out + this._offset, //out_off + availOutBefore); // out_len + } while (!this._hadError && callback(res[0], res[1])); + + if (this._hadError) { + throw error; } - return func.apply(undefined, arguments); - }; -} -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} + if (nread >= kMaxLength) { + _close(this); + throw new RangeError(kRangeErrorMessage); + } + + var buf = Buffer.concat(buffers, nread); + _close(this); + + return buf; } - return ''; -} -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} + assert(this._handle, 'zlib binding closed'); + var req = this._handle.write(flushFlag, chunk, // in + inOff, // in_off + availInBefore, // in_len + this._buffer, // out + this._offset, //out_off + availOutBefore); // out_len -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); -}; + req.buffer = chunk; + req.callback = callback; -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; + function callback(availInAfter, availOutAfter) { + // When the callback is used in an async write, the callback's + // context is the `req` object that was created. The req object + // is === this._handle, and that's why it's important to null + // out the values after they are done being used. `this._handle` + // can stay in memory longer than the callback and buffer are needed. + if (this) { + this.buffer = null; + this.callback = null; + } -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); -} + if (self._hadError) return; -/** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ -function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); -} + var have = availOutBefore - availOutAfter; + assert(have >= 0, 'have should not go down'); -/** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ -var isBuffer = nativeIsBuffer || stubFalse; + if (have > 0) { + var out = self._buffer.slice(self._offset, self._offset + have); + self._offset += have; + // serve some output to the consumer. + if (async) { + self.push(out); + } else { + buffers.push(out); + nread += out.length; + } + } -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; -} + // exhausted the output buffer, or used all the input create a new one. + if (availOutAfter === 0 || self._offset >= self._chunkSize) { + availOutBefore = self._chunkSize; + self._offset = 0; + self._buffer = Buffer.allocUnsafe(self._chunkSize); + } -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} + if (availOutAfter === 0) { + // Not actually done. Need to reprocess. + // Also, update the availInBefore to the availInAfter value, + // so that if we have to hit it a third (fourth, etc.) time, + // it'll have the correct byte counts. + inOff += availInBefore - availInAfter; + availInBefore = availInAfter; -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); -} + if (!async) return true; -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return value != null && typeof value == 'object'; -} + var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize); + newReq.callback = callback; // this same function + newReq.buffer = chunk; + return; + } -/** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ -function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; + if (!async) return false; + + // finished with the chunk. + cb(); } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString.call(Ctor) == objectCtorString; -} +}; -/** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true +util.inherits(Deflate, Zlib); +util.inherits(Inflate, Zlib); +util.inherits(Gzip, Zlib); +util.inherits(Gunzip, Zlib); +util.inherits(DeflateRaw, Zlib); +util.inherits(InflateRaw, Zlib); +util.inherits(Unzip, Zlib); +}).call(this,require('_process')) +},{"./binding":23,"_process":46,"assert":17,"buffer":25,"stream":66,"util":77}],25:[function(require,module,exports){ +(function (Buffer){ +/*! + * The buffer module from node.js, for the browser. * - * _.isTypedArray([]); - * // => false + * @author Feross Aboukhadijeh + * @license MIT */ -var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; +/* eslint-disable no-proto */ + +'use strict' + +var base64 = require('base64-js') +var ieee754 = require('ieee754') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +var K_MAX_LENGTH = 0x7fffffff +exports.kMaxLength = K_MAX_LENGTH /** - * Converts `value` to a plain object flattening inherited enumerable string - * keyed properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. */ -function toPlainObject(value) { - return copyObject(value, keysIn(value)); +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ) +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + var arr = new Uint8Array(1) + arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}) + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}) + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + var buf = new Uint8Array(length) + buf.__proto__ = Buffer.prototype + return buf } /** - * This method is like `_.defaults` except that it recursively assigns - * default properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaults - * @example + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. * - * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); - * // => { 'a': { 'b': 2, 'c': 3 } } + * The `Uint8Array` prototype remains unmodified. */ -var defaultsDeep = baseRest(function(args) { - args.push(undefined, customDefaultsMerge); - return apply(mergeWith, undefined, args); -}); + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 +if (typeof Symbol !== 'undefined' && Symbol.species != null && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true, + enumerable: false, + writable: false + }) +} + +Buffer.poolSize = 8192 // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayLike(value) + } + + if (value == null) { + throw TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + var valueOf = value.valueOf && value.valueOf() + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + var b = fromObject(value) + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from( + value[Symbol.toPrimitive]('string'), encodingOrOffset, length + ) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ -function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) } -/** - * This method is like `_.merge` except that it accepts `customizer` which - * is invoked to produce the merged values of the destination and source - * properties. If `customizer` returns `undefined`, merging is handled by the - * method instead. The `customizer` is invoked with six arguments: - * (objValue, srcValue, key, object, source, stack). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} customizer The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * function customizer(objValue, srcValue) { - * if (_.isArray(objValue)) { - * return objValue.concat(srcValue); - * } - * } - * - * var object = { 'a': [1], 'b': [2] }; - * var other = { 'a': [3], 'b': [4] }; - * - * _.mergeWith(object, other, customizer); - * // => { 'a': [1, 3], 'b': [2, 4] } - */ -var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { - baseMerge(object, source, srcIndex, customizer); -}); +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Buffer.prototype.__proto__ = Uint8Array.prototype +Buffer.__proto__ = Uint8Array -/** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new constant function. - * @example - * - * var objects = _.times(2, _.constant({ 'a': 1 })); - * - * console.log(objects); - * // => [{ 'a': 1 }, { 'a': 1 }] - * - * console.log(objects[0] === objects[1]); - * // => true - */ -function constant(value) { - return function() { - return value; - }; +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } } -/** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ -function identity(value) { - return value; +function alloc (size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) } /** - * This method returns `false`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `false`. - * @example - * - * _.times(2, _.stubFalse); - * // => [false, false] - */ -function stubFalse() { - return false; + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) } -module.exports = defaultsDeep; +function allocUnsafe (size) { + assertSize(size) + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],26:[function(require,module,exports){ -(function (Buffer){ -/* najax - * jquery ajax-stye http requests in node - * https://github.com/alanclarke/najax +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +} -var https = require('https') -var http = require('http') -var querystring = require('qs') -var url = require('url') -var zlib = require('zlib') -var $ = require('jquery-deferred') -var defaultsDeep = require('lodash.defaultsdeep') -var parseOptions = require('./parse-options') -var defaults = { - method: 'GET', - rejectUnauthorized: true, - processData: true, - data: '', - contentType: 'application/x-www-form-urlencoded', - headers: {}, - setRequestHeader: function (name, value) { - this.headers[name] = value +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' } -} -/* - method overloading, can use: - -function(url, opts, callback) or - -function(url, callback) - -function(opts) -*/ -function najax (uri, options, callback) { - var dfd = new $.Deferred() - var o = defaultsDeep({}, parseOptions(uri, options, callback), defaults) - var l = url.parse(o.url) - var ssl = l.protocol.indexOf('https') === 0 + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } - // DATA - // Per jquery docs / source: encoding is only done - // if processData is true (defaults to true) - // and the data is not already a string - // https://github.com/jquery/jquery/blob/master/src/ajax.js#L518 - if (o.data && o.processData && o.method === 'GET') { - o.data = querystring.stringify(o.data, { arrayFormat: 'brackets' }) - } else if (o.data && o.processData && typeof o.data !== 'string' && o.method !== 'GET') { - switch (true) { - case o.contentType.startsWith('application/json'): - o.data = JSON.stringify(o.data) - break - case o.contentType.startsWith('application/x-www-form-urlencoded'): - o.data = querystring.stringify(o.data) - break - default: - o.data = String(o.data) - } + var length = byteLength(string, encoding) | 0 + var buf = createBuffer(length) + + var actual = buf.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual) } - /* if get, use querystring method for data */ - if (o.data) { - if (o.method === 'GET') { - if (l.search) { - l.search += '&' + o.data - } else { - l.search = '?' + o.data - } - } else { - /* set data content type */ - o.headers = Object.assign({ - 'Content-Type': o.contentType, - 'Content-Length': Buffer.byteLength(o.data) - }, o.headers) - } + return buf +} + +function fromArrayLike (array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + var buf = createBuffer(length) + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255 } + return buf +} - if (o.beforeSend) o.beforeSend(o) +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } - options = { - host: l.hostname, - path: l.pathname + (l.search || ''), - method: o.method, - port: Number(l.port) || (ssl ? 443 : 80), - headers: o.headers, - rejectUnauthorized: o.rejectUnauthorized + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') } - // AUTHENTICATION - /* add authentication to http request */ - if (l.auth) { - options.auth = l.auth - } else if (o.username && o.password) { - options.auth = o.username + ':' + o.password - } else if (o.auth) { - options.auth = o.auth + var buf + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array) + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset) + } else { + buf = new Uint8Array(array, byteOffset, length) } - if (options.auth) o.auth = options.auth - if (options.agent) o.agent = options.agent - /* for debugging, method to get options and return */ - if (o.getopts) { - var getopts = [ssl, options, o.data || false, o.success || false, o.error || false] - return getopts + // Return an augmented `Uint8Array` instance + buf.__proto__ = Buffer.prototype + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + var buf = createBuffer(len) + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len) + return buf } - // REQUEST - function notImplemented (name) { - return function () { - console.error('najax: method jqXHR."' + name + '" not implemented') - console.trace() + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) } + return fromArrayLike(obj) } - var jqXHR = { - readyState: 0, - status: 0, - statusText: 'error', // one of: "success", "notmodified", "error", "timeout", "abort", or "parsererror" - setRequestHeader: notImplemented('setRequestHeader'), - getAllResponseHeaders: notImplemented('getAllResponseHeaders'), - statusCode: notImplemented('statusCode'), - abort: notImplemented('abort') + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) } +} - var req = (ssl ? https : http).request(options, function (res) { - // Allow getting Response Headers from the XMLHTTPRequest object - dfd.getResponseHeader = jqXHR.getResponseHeader = function getResponseHeader (header) { - return res.headers[header.toLowerCase()] - } - dfd.getAllResponseHeaders = jqXHR.getAllResponseHeaders = function getAllResponseHeaders () { - var headers = [] - for (var key in res.headers) { - headers.push(key + ': ' + res.headers[key]) - } - return headers.join('\n') - } +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} - function dataHandler (data) { - jqXHR.responseText = data +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} - var statusCode = res.statusCode - // - // Determine if successful - // (per https://github.com/jquery/jquery/blob/master/src/ajax.js#L679) - var isSuccess = statusCode >= 200 && statusCode < 300 || statusCode === 304 - // Set readyState - jqXHR.readyState = statusCode > 0 ? 4 : 0 - jqXHR.status = statusCode +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +} - if (o.dataType === 'json' || o.dataType === 'jsonp') { - // replace control characters - try { - data = JSON.parse(data.replace(/[\cA-\cZ]/gi, '')) - } catch (e) { - jqXHR.statusText = 'parseerror' - return onError(e) - } - } +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } - if (isSuccess) { - jqXHR.statusText = 'success' + if (a === b) return 0 - if (statusCode === 204 || options.method === 'HEAD') { - jqXHR.statusText = 'nocontent' - } else if (statusCode === 304) { - jqXHR.statusText = 'notmodified' - } + var x = a.length + var y = b.length - // success, statusText, jqXHR - dfd.resolve(data, jqXHR.statusText, jqXHR) - } else { - // jqXHR, statusText, error - // When an HTTP error occurs, errorThrown receives the textual portion of the - // HTTP status, such as "Not Found" or "Internal Server Error." - jqXHR.statusText = 'error' - onError(new Error(http.STATUS_CODES[statusCode])) - } + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break } - var chunks = [] - res.on('data', function (chunk) { chunks.push(chunk) }) - res.on('end', function () { - var buffer = Buffer.concat(chunks) - var encoding = res.headers['content-encoding'] - if (encoding === 'gzip') { - zlib.gunzip(buffer, function (err, buffer) { - if (err) { - onError(err) - } else { - dataHandler(buffer.toString()) - } - }) - } else if (encoding === 'deflate') { - zlib.inflate(buffer, function (err, buffer) { - if (err) { - onError(err) - } else { - dataHandler(buffer.toString()) - } - }) - } else { - dataHandler(buffer.toString()) - } - }) - }) + } - // ERROR - req.on('error', onError) + if (x < y) return -1 + if (y < x) return 1 + return 0 +} - function onError (e) { - // jqXHR, statusText, error - dfd.reject(jqXHR, jqXHR.statusText, e) +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false } +} - // SET TIMEOUT - if (o.timeout && o.timeout > 0) { - req.setTimeout(o.timeout, function () { - req.abort() - jqXHR.statusText = 'timeout' - onError(new Error('timeout')) - }) +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') } - // SEND DATA - if (o.method !== 'GET' && o.data) req.write(o.data, 'utf-8') - req.end() + if (list.length === 0) { + return Buffer.alloc(0) + } - // DEFERRED - dfd.done(o.success) - dfd.done(o.complete) - dfd.fail(o.error) - dfd.fail(o.complete) - dfd.success = dfd.done - dfd.error = dfd.fail - return dfd -} + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } -najax.defaults = function mergeDefaults (opts) { - return defaultsDeep(defaults, opts) + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (isInstance(buf, Uint8Array)) { + buf = Buffer.from(buf) + } + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer } -/* auto rest interface go! */ -;['GET', 'POST', 'PUT', 'DELETE'].forEach(handleMethod) +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } -function handleMethod (method) { - najax[method.toLowerCase()] = function methodHandler (uri, options, callback) { - return najax(defaultsDeep(parseOptions(uri, options, callback), { method: method })) + var len = string.length + var mustMatch = (arguments.length > 2 && arguments[2] === true) + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } } } +Buffer.byteLength = byteLength -module.exports = najax +function slowToString (encoding, start, end) { + var loweredCase = false -}).call(this,require("buffer").Buffer) -},{"./parse-options":27,"buffer":12,"http":66,"https":16,"jquery-deferred":21,"lodash.defaultsdeep":25,"qs":43,"url":72,"zlib":11}],27:[function(require,module,exports){ -module.exports = function parseOptions (url, options, callback) { - var opts = {} - if (typeof url === 'string') { - opts.url = url - } else { - opts = Object.assign(opts, url) + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 } - if (typeof options === 'function') { - opts.success = options - } else { - if (typeof callback === 'function') opts.success = callback - opts = Object.assign(opts, options) + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' } - // support legacy jquery options.type - if (!opts.method && opts.type) { - opts.method = opts.type + if (end === undefined || end > this.length) { + end = this.length } - return opts -} - -},{}],28:[function(require,module,exports){ -'use strict'; - + if (end <= 0) { + return '' + } -var TYPED_OK = (typeof Uint8Array !== 'undefined') && - (typeof Uint16Array !== 'undefined') && - (typeof Int32Array !== 'undefined'); + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 -function _has(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} + if (end <= start) { + return '' + } -exports.assign = function (obj /*from1, from2, from3, ...*/) { - var sources = Array.prototype.slice.call(arguments, 1); - while (sources.length) { - var source = sources.shift(); - if (!source) { continue; } + if (!encoding) encoding = 'utf8' - if (typeof source !== 'object') { - throw new TypeError(source + 'must be non-object'); - } + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) - for (var p in source) { - if (_has(source, p)) { - obj[p] = source[p]; - } - } - } + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) - return obj; -}; + case 'ascii': + return asciiSlice(this, start, end) + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) -// reduce buffer size, avoiding mem copy -exports.shrinkBuf = function (buf, size) { - if (buf.length === size) { return buf; } - if (buf.subarray) { return buf.subarray(0, size); } - buf.length = size; - return buf; -}; + case 'base64': + return base64Slice(this, start, end) + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) -var fnTyped = { - arraySet: function (dest, src, src_offs, len, dest_offs) { - if (src.subarray && dest.subarray) { - dest.set(src.subarray(src_offs, src_offs + len), dest_offs); - return; - } - // Fallback to ordinary array - for (var i = 0; i < len; i++) { - dest[dest_offs + i] = src[src_offs + i]; + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true } - }, - // Join array of chunks to single array. - flattenChunks: function (chunks) { - var i, l, len, pos, chunk, result; + } +} - // calculate data length - len = 0; - for (i = 0, l = chunks.length; i < l; i++) { - len += chunks[i].length; - } +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true - // join chunks - result = new Uint8Array(len); - pos = 0; - for (i = 0, l = chunks.length; i < l; i++) { - chunk = chunks[i]; - result.set(chunk, pos); - pos += chunk.length; - } +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} - return result; +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') } -}; - -var fnUntyped = { - arraySet: function (dest, src, src_offs, len, dest_offs) { - for (var i = 0; i < len; i++) { - dest[dest_offs + i] = src[src_offs + i]; - } - }, - // Join array of chunks to single array. - flattenChunks: function (chunks) { - return [].concat.apply([], chunks); + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) } -}; - + return this +} -// Enable/Disable typed arrays use, for testing -// -exports.setTyped = function (on) { - if (on) { - exports.Buf8 = Uint8Array; - exports.Buf16 = Uint16Array; - exports.Buf32 = Int32Array; - exports.assign(exports, fnTyped); - } else { - exports.Buf8 = Array; - exports.Buf16 = Array; - exports.Buf32 = Array; - exports.assign(exports, fnUntyped); +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') } -}; - -exports.setTyped(TYPED_OK); - -},{}],29:[function(require,module,exports){ -'use strict'; - -// Note: adler32 takes 12% for level 0 and 2% for level 6. -// It isn't worth it to make additional optimizations as in original. -// Small size is preferable. - -// (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -function adler32(adler, buf, len, pos) { - var s1 = (adler & 0xffff) |0, - s2 = ((adler >>> 16) & 0xffff) |0, - n = 0; - - while (len !== 0) { - // Set limit ~ twice less than 5552, to keep - // s2 in 31-bits, because we force signed ints. - // in other case %= will fail. - n = len > 2000 ? 2000 : len; - len -= n; - - do { - s1 = (s1 + buf[pos++]) |0; - s2 = (s2 + s1) |0; - } while (--n); + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} - s1 %= 65521; - s2 %= 65521; +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') } - - return (s1 | (s2 << 16)) |0; + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this } +Buffer.prototype.toString = function toString () { + var length = this.length + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} -module.exports = adler32; +Buffer.prototype.toLocaleString = Buffer.prototype.toString -},{}],30:[function(require,module,exports){ -'use strict'; +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} -// (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() + if (this.length > max) str += ' ... ' + return '' +} -module.exports = { +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength) + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } - /* Allowed flush values; see deflate() and inflate() below for details */ - Z_NO_FLUSH: 0, - Z_PARTIAL_FLUSH: 1, - Z_SYNC_FLUSH: 2, - Z_FULL_FLUSH: 3, - Z_FINISH: 4, - Z_BLOCK: 5, - Z_TREES: 6, + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } - /* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - Z_OK: 0, - Z_STREAM_END: 1, - Z_NEED_DICT: 2, - Z_ERRNO: -1, - Z_STREAM_ERROR: -2, - Z_DATA_ERROR: -3, - //Z_MEM_ERROR: -4, - Z_BUF_ERROR: -5, - //Z_VERSION_ERROR: -6, + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } - /* compression levels */ - Z_NO_COMPRESSION: 0, - Z_BEST_SPEED: 1, - Z_BEST_COMPRESSION: 9, - Z_DEFAULT_COMPRESSION: -1, + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 - Z_FILTERED: 1, - Z_HUFFMAN_ONLY: 2, - Z_RLE: 3, - Z_FIXED: 4, - Z_DEFAULT_STRATEGY: 0, + if (this === target) return 0 - /* Possible values of the data_type field (though see inflate()) */ - Z_BINARY: 0, - Z_TEXT: 1, - //Z_ASCII: 1, // = Z_TEXT (deprecated) - Z_UNKNOWN: 2, + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) - /* The deflate compression method */ - Z_DEFLATED: 8 - //Z_NULL: null // Use -1 or null inline, depending on var type -}; + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) -},{}],31:[function(require,module,exports){ -'use strict'; + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } -// Note: we can't get significant speed boost here. -// So write code to minimize size - no pregenerated tables -// and array tools dependencies. + if (x < y) return -1 + if (y < x) return 1 + return 0 +} -// (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. // -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 -// Use ordinary array, since untyped makes no boost here -function makeTable() { - var c, table = []; + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } - for (var n = 0; n < 256; n++) { - c = n; - for (var k = 0; k < 8; k++) { - c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1)); + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 } - table[n] = c; + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) } - return table; + throw new TypeError('val must be string, number or Buffer') } -// Create table on load. Just 255 signed longs. Not a problem. -var crcTable = makeTable(); - +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length -function crc32(crc, buf, len, pos) { - var t = crcTable, - end = pos + len; + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } - crc ^= -1; + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } - for (var i = pos; i < end; i++) { - crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF]; + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } } - return (crc ^ (-1)); // >>> 0; + return -1 } +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} -module.exports = crc32; - -},{}],32:[function(require,module,exports){ -'use strict'; - -// (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -var utils = require('../utils/common'); -var trees = require('./trees'); -var adler32 = require('./adler32'); -var crc32 = require('./crc32'); -var msg = require('./messages'); - -/* Public constants ==========================================================*/ -/* ===========================================================================*/ - +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} -/* Allowed flush values; see deflate() and inflate() below for details */ -var Z_NO_FLUSH = 0; -var Z_PARTIAL_FLUSH = 1; -//var Z_SYNC_FLUSH = 2; -var Z_FULL_FLUSH = 3; -var Z_FINISH = 4; -var Z_BLOCK = 5; -//var Z_TREES = 6; +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } -/* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ -var Z_OK = 0; -var Z_STREAM_END = 1; -//var Z_NEED_DICT = 2; -//var Z_ERRNO = -1; -var Z_STREAM_ERROR = -2; -var Z_DATA_ERROR = -3; -//var Z_MEM_ERROR = -4; -var Z_BUF_ERROR = -5; -//var Z_VERSION_ERROR = -6; + var strLen = string.length + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} -/* compression levels */ -//var Z_NO_COMPRESSION = 0; -//var Z_BEST_SPEED = 1; -//var Z_BEST_COMPRESSION = 9; -var Z_DEFAULT_COMPRESSION = -1; +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} -var Z_FILTERED = 1; -var Z_HUFFMAN_ONLY = 2; -var Z_RLE = 3; -var Z_FIXED = 4; -var Z_DEFAULT_STRATEGY = 0; +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} -/* Possible values of the data_type field (though see inflate()) */ -//var Z_BINARY = 0; -//var Z_TEXT = 1; -//var Z_ASCII = 1; // = Z_TEXT -var Z_UNKNOWN = 2; +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} -/* The deflate compression method */ -var Z_DEFLATED = 8; +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0 + if (isFinite(length)) { + length = length >>> 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } -/*============================================================================*/ + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } -var MAX_MEM_LEVEL = 9; -/* Maximum value for memLevel in deflateInit2 */ -var MAX_WBITS = 15; -/* 32K LZ77 window */ -var DEF_MEM_LEVEL = 8; + if (!encoding) encoding = 'utf8' + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) -var LENGTH_CODES = 29; -/* number of length codes, not counting the special END_BLOCK code */ -var LITERALS = 256; -/* number of literal bytes 0..255 */ -var L_CODES = LITERALS + 1 + LENGTH_CODES; -/* number of Literal or Length codes, including the END_BLOCK code */ -var D_CODES = 30; -/* number of distance codes */ -var BL_CODES = 19; -/* number of codes used to transfer the bit lengths */ -var HEAP_SIZE = 2 * L_CODES + 1; -/* maximum heap size */ -var MAX_BITS = 15; -/* All codes must not exceed MAX_BITS bits */ + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) -var MIN_MATCH = 3; -var MAX_MATCH = 258; -var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1); + case 'ascii': + return asciiWrite(this, string, offset, length) -var PRESET_DICT = 0x20; + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) -var INIT_STATE = 42; -var EXTRA_STATE = 69; -var NAME_STATE = 73; -var COMMENT_STATE = 91; -var HCRC_STATE = 103; -var BUSY_STATE = 113; -var FINISH_STATE = 666; + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) -var BS_NEED_MORE = 1; /* block not completed, need more input or more output */ -var BS_BLOCK_DONE = 2; /* block flush performed */ -var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */ -var BS_FINISH_DONE = 4; /* finish done, accept no more input or output */ + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) -var OS_CODE = 0x03; // Unix :) . Don't detect, use this default. + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} -function err(strm, errorCode) { - strm.msg = msg[errorCode]; - return errorCode; +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } } -function rank(f) { - return ((f) << 1) - ((f) > 4 ? 9 : 0); +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } } -function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } } +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 -/* ========================================================================= - * Flush as much pending output as possible. All deflate() output goes - * through this function so some applications may wish to modify it - * to avoid allocating a large strm->output buffer and copying into it. - * (See also read_buf()). - */ -function flush_pending(strm) { - var s = strm.state; + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint - //_tr_flush_bits(s); - var len = s.pending; - if (len > strm.avail_out) { - len = strm.avail_out; - } - if (len === 0) { return; } + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } - utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out); - strm.next_out += len; - s.pending_out += len; - strm.total_out += len; - strm.avail_out -= len; - s.pending -= len; - if (s.pending === 0) { - s.pending_out = 0; + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence } + + return decodeCodePointsArray(res) } +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 -function flush_block_only(s, last) { - trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last); - s.block_start = s.strstart; - flush_pending(s.strm); +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res } +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) -function put_byte(s, b) { - s.pending_buf[s.pending++] = b; + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret } +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) -/* ========================================================================= - * Put a short in the pending buffer. The 16-bit value is put in MSB order. - * IN assertion: the stream state is correct and there is enough room in - * pending_buf. - */ -function putShortMSB(s, b) { -// put_byte(s, (Byte)(b >> 8)); -// put_byte(s, (Byte)(b & 0xff)); - s.pending_buf[s.pending++] = (b >>> 8) & 0xff; - s.pending_buf[s.pending++] = b & 0xff; + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret } +function hexSlice (buf, start, end) { + var len = buf.length -/* =========================================================================== - * Read a new buffer from the current input stream, update the adler32 - * and total number of bytes read. All deflate() input goes through - * this function so some applications may wish to modify it to avoid - * allocating a large strm->input buffer and copying from it. - * (See also flush_pending()). - */ -function read_buf(strm, buf, start, size) { - var len = strm.avail_in; + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len - if (len > size) { len = size; } - if (len === 0) { return 0; } + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} - strm.avail_in -= len; +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) + } + return res +} - // zmemcpy(buf, strm->next_in, len); - utils.arraySet(buf, strm.input, strm.next_in, len, start); - if (strm.state.wrap === 1) { - strm.adler = adler32(strm.adler, buf, len, start); +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len } - else if (strm.state.wrap === 2) { - strm.adler = crc32(strm.adler, buf, len, start); + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len } - strm.next_in += len; - strm.total_in += len; + if (end < start) end = start - return len; + var newBuf = this.subarray(start, end) + // Return an augmented `Uint8Array` instance + newBuf.__proto__ = Buffer.prototype + return newBuf } - -/* =========================================================================== - * Set match_start to the longest match starting at the given string and - * return its length. Matches shorter or equal to prev_length are discarded, - * in which case the result is equal to prev_length and match_start is - * garbage. - * IN assertions: cur_match is the head of the hash chain for the current - * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 - * OUT assertion: the match length is not greater than s->lookahead. +/* + * Need to make sure that buffer isn't trying to write out of bounds. */ -function longest_match(s, cur_match) { - var chain_length = s.max_chain_length; /* max hash chain length */ - var scan = s.strstart; /* current string */ - var match; /* matched string */ - var len; /* length of current match */ - var best_len = s.prev_length; /* best match length so far */ - var nice_match = s.nice_match; /* stop if match long enough */ - var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ? - s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/; - - var _win = s.window; // shortcut - - var wmask = s.w_mask; - var prev = s.prev; +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} - /* Stop when cur_match becomes <= limit. To simplify the code, - * we prevent matches with the string of window index 0. - */ +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) - var strend = s.strstart + MAX_MATCH; - var scan_end1 = _win[scan + best_len - 1]; - var scan_end = _win[scan + best_len]; + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } - /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. - * It is easy to get rid of this optimization if necessary. - */ - // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); + return val +} - /* Do not waste too much time if we already have a good match: */ - if (s.prev_length >= s.good_match) { - chain_length >>= 2; +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) } - /* Do not look for matches beyond the end of the input. This is necessary - * to make deflate deterministic. - */ - if (nice_match > s.lookahead) { nice_match = s.lookahead; } - // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } - do { - // Assert(cur_match < s->strstart, "no future"); - match = cur_match; + return val +} - /* Skip to next match if the match length cannot increase - * or if the match length is less than 2. Note that the checks below - * for insufficient lookahead only occur occasionally for performance - * reasons. Therefore uninitialized memory will be accessed, and - * conditional jumps will be made that depend on those values. - * However the length of the match is limited to the lookahead, so - * the output of deflate is not affected by the uninitialized values. - */ +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} - if (_win[match + best_len] !== scan_end || - _win[match + best_len - 1] !== scan_end1 || - _win[match] !== _win[scan] || - _win[++match] !== _win[scan + 1]) { - continue; - } +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scan += 2; - match++; - // Assert(*scan == *match, "match[2]?"); +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - /*jshint noempty:false*/ - } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && - scan < strend); +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) - // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} - len = MAX_MATCH - (strend - scan); - scan = strend - MAX_MATCH; +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) - if (len > best_len) { - s.match_start = cur_match; - best_len = len; - if (len >= nice_match) { - break; - } - scan_end1 = _win[scan + best_len - 1]; - scan_end = _win[scan + best_len]; - } - } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} - if (best_len <= s.lookahead) { - return best_len; +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul } - return s.lookahead; + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val } +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) -/* =========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead. - * - * IN assertion: lookahead < MIN_LOOKAHEAD - * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD - * At least one byte has been read, or avail_in == 0; reads are - * performed for at least two bytes (required for the zip translate_eol - * option -- not supported here). - */ -function fill_window(s) { - var _w_size = s.w_size; - var p, n, m, more, str; + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 - //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); + if (val >= mul) val -= Math.pow(2, 8 * byteLength) - do { - more = s.window_size - s.lookahead - s.strstart; + return val +} - // JS ints have 32 bit, block below not needed - /* Deal with !@#$% 64K limit: */ - //if (sizeof(int) <= 2) { - // if (more == 0 && s->strstart == 0 && s->lookahead == 0) { - // more = wsize; - // - // } else if (more == (unsigned)(-1)) { - // /* Very unlikely, but possible on 16 bit machine if - // * strstart == 0 && lookahead == 1 (input done a byte at time) - // */ - // more--; - // } - //} +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} - utils.arraySet(s.window, s.window, _w_size, _w_size, 0); - s.match_start -= _w_size; - s.strstart -= _w_size; - /* we now have strstart >= MAX_DIST */ - s.block_start -= _w_size; +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) - /* Slide the hash table (could be avoided with 32 bit values - at the expense of memory usage). We slide even when level == 0 - to keep the hash table consistent if we switch back to level > 0 - later. (Using level 0 permanently is not an optimal usage of - zlib, so we don't care about this pathological case.) - */ + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} - n = s.hash_size; - p = n; - do { - m = s.head[--p]; - s.head[p] = (m >= _w_size ? m - _w_size : 0); - } while (--n); +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) - n = _w_size; - p = n; - do { - m = s.prev[--p]; - s.prev[p] = (m >= _w_size ? m - _w_size : 0); - /* If n is not on any hash chain, prev[n] is garbage but - * its value will never be used. - */ - } while (--n); + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} - more += _w_size; - } - if (s.strm.avail_in === 0) { - break; - } +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} - /* If there was no sliding: - * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && - * more == window_size - lookahead - strstart - * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) - * => more >= window_size - 2*WSIZE + 2 - * In the BIG_MEM or MMAP case (not yet supported), - * window_size == input_size + MIN_LOOKAHEAD && - * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. - * Otherwise, window_size == 2*WSIZE so more >= 2. - * If there was sliding, more >= WSIZE. So in all cases, more >= 2. - */ - //Assert(more >= 2, "more < 2"); - n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); - s.lookahead += n; +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} - /* Initialize the hash value now that we have some input: */ - if (s.lookahead + s.insert >= MIN_MATCH) { - str = s.strstart - s.insert; - s.ins_h = s.window[str]; +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} - /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */ - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask; -//#if MIN_MATCH != 3 -// Call update_hash() MIN_MATCH-3 more times -//#endif - while (s.insert) { - /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} - s.prev[str & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = str; - str++; - s.insert--; - if (s.lookahead + s.insert < MIN_MATCH) { - break; - } - } - } - /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, - * but this is not important since only literal bytes will be emitted. - */ +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } - } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } - /* If the WIN_INIT bytes after the end of the current data have never been - * written, then zero those bytes in order to avoid memory check reports of - * the use of uninitialized (or uninitialised as Julian writes) bytes by - * the longest match routines. Update the high water mark for the next - * time through here. WIN_INIT is set to MAX_MATCH since the longest match - * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. - */ -// if (s.high_water < s.window_size) { -// var curr = s.strstart + s.lookahead; -// var init = 0; -// -// if (s.high_water < curr) { -// /* Previous high water mark below current data -- zero WIN_INIT -// * bytes or up to end of window, whichever is less. -// */ -// init = s.window_size - curr; -// if (init > WIN_INIT) -// init = WIN_INIT; -// zmemzero(s->window + curr, (unsigned)init); -// s->high_water = curr + init; -// } -// else if (s->high_water < (ulg)curr + WIN_INIT) { -// /* High water mark at or above current data, but below current data -// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up -// * to end of window, whichever is less. -// */ -// init = (ulg)curr + WIN_INIT - s->high_water; -// if (init > s->window_size - s->high_water) -// init = s->window_size - s->high_water; -// zmemzero(s->window + s->high_water, (unsigned)init); -// s->high_water += init; -// } -// } -// -// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, -// "not enough room for search"); + return offset + byteLength } -/* =========================================================================== - * Copy without compression as much as possible from the input stream, return - * the current block state. - * This function does not insert new strings in the dictionary since - * uncompressible data is probably not useful. This function is used - * only for the level=0 compression option. - * NOTE: this function should be optimized to avoid extra copying from - * window to pending_buf. - */ -function deflate_stored(s, flush) { - /* Stored blocks are limited to 0xffff bytes, pending_buf is limited - * to pending_buf_size, and each stored block has a 5 byte header: - */ - var max_block_size = 0xffff; +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } - if (max_block_size > s.pending_buf_size - 5) { - max_block_size = s.pending_buf_size - 5; + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF } - /* Copy as much as possible from input to output: */ - for (;;) { - /* Fill the window as much as possible: */ - if (s.lookahead <= 1) { + return offset + byteLength +} - //Assert(s->strstart < s->w_size+MAX_DIST(s) || - // s->block_start >= (long)s->w_size, "slide too late"); -// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) || -// s.block_start >= s.w_size)) { -// throw new Error("slide too late"); -// } +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + this[offset] = (value & 0xff) + return offset + 1 +} - fill_window(s); - if (s.lookahead === 0 && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} - if (s.lookahead === 0) { - break; - } - /* flush the current block */ - } - //Assert(s->block_start >= 0L, "block gone"); -// if (s.block_start < 0) throw new Error("block gone"); +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} - s.strstart += s.lookahead; - s.lookahead = 0; +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + return offset + 4 +} - /* Emit a stored block if pending_buf will be full: */ - var max_start = s.block_start + max_block_size; +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} - if (s.strstart === 0 || s.strstart >= max_start) { - /* strstart == 0 is possible when wraparound on 16-bit machine */ - s.lookahead = s.strstart - max_start; - s.strstart = max_start; - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 } - /* Flush if we may have to slide, otherwise block_start may become - * negative and the data will be gone: - */ - if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } - s.insert = 0; + return offset + byteLength +} - if (flush === Z_FINISH) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - return BS_FINISH_DONE; +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) } - if (s.strstart > s.block_start) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 } - /***/ + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } - return BS_NEED_MORE; + return offset + byteLength } -/* =========================================================================== - * Compress as much as possible from the input stream, return the current - * block state. - * This function does not perform lazy evaluation of matches and inserts - * new strings in the dictionary only for unmatched strings or for short - * matches. It is used only for the fast compression options. - */ -function deflate_fast(s, flush) { - var hash_head; /* head of the hash chain */ - var bflush; /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s.lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { - break; /* flush the current block */ - } - } - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - hash_head = 0/*NIL*/; - if (s.lookahead >= MIN_MATCH) { - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - } +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} - /* Find the longest match, discarding those <= prev_length. - * At this point we have always match_length < MIN_MATCH - */ - if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s.match_length = longest_match(s, hash_head); - /* longest_match() sets match_start */ - } - if (s.match_length >= MIN_MATCH) { - // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} - /*** _tr_tally_dist(s, s.strstart - s.match_start, - s.match_length - MIN_MATCH, bflush); ***/ - bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} - s.lookahead -= s.match_length; +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + return offset + 4 +} - /* Insert new strings in the hash table only if the match length - * is not too large. This saves time but degrades compression. - */ - if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) { - s.match_length--; /* string at strstart already in table */ - do { - s.strstart++; - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. - */ - } while (--s.match_length !== 0); - s.strstart++; - } else - { - s.strstart += s.match_length; - s.match_length = 0; - s.ins_h = s.window[s.strstart]; - /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */ - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask; +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} -//#if MIN_MATCH != 3 -// Call UPDATE_HASH() MIN_MATCH-3 more times -//#endif - /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not - * matter since it will be recomputed at next deflate call. - */ - } - } else { - /* No match, output a literal byte */ - //Tracevv((stderr,"%c", s.window[s.strstart])); - /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} - s.lookahead--; - s.strstart++; - } - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - } - s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1); - if (flush === Z_FINISH) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - return BS_FINISH_DONE; - } - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) } - return BS_BLOCK_DONE; + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 } -/* =========================================================================== - * Same as above, but achieves better compression. We use a lazy - * evaluation for matches: a match is finally adopted only if there is - * no better match at the next window position. - */ -function deflate_slow(s, flush) { - var hash_head; /* head of hash chain */ - var bflush; /* set if current block must be flushed */ +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} - var max_insert; +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} - /* Process the input block. */ - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s.lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { break; } /* flush the current block */ - } +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - hash_head = 0/*NIL*/; - if (s.lookahead >= MIN_MATCH) { - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - } +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} - /* Find the longest match, discarding those <= prev_length. - */ - s.prev_length = s.match_length; - s.prev_match = s.match_start; - s.match_length = MIN_MATCH - 1; +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} - if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match && - s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s.match_length = longest_match(s, hash_head); - /* longest_match() sets match_start */ +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start - if (s.match_length <= 5 && - (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) { + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 - /* If prev_match is also MIN_MATCH, match_start is garbage - * but we will ignore the current match anyway. - */ - s.match_length = MIN_MATCH - 1; - } - } - /* If there was a match at the previous step and the current - * match is not better, output the previous match: - */ - if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { - max_insert = s.strstart + s.lookahead - MIN_MATCH; - /* Do not insert strings in hash table beyond this. */ + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') - //check_match(s, s.strstart-1, s.prev_match, s.prev_length); + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } - /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match, - s.prev_length - MIN_MATCH, bflush);***/ - bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); - /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. If there is not - * enough lookahead, the last two strings are not inserted in - * the hash table. - */ - s.lookahead -= s.prev_length - 1; - s.prev_length -= 2; - do { - if (++s.strstart <= max_insert) { - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - } - } while (--s.prev_length !== 0); - s.match_available = 0; - s.match_length = MIN_MATCH - 1; - s.strstart++; + var len = end - start - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end) + } else if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (var i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ) + } - } else if (s.match_available) { - /* If there was no match at the previous position, output a - * single literal. If there was a match but the current match - * is longer, truncate the previous match to a single literal. - */ - //Tracevv((stderr,"%c", s->window[s->strstart-1])); - /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ - bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); + return len +} - if (bflush) { - /*** FLUSH_BLOCK_ONLY(s, 0) ***/ - flush_block_only(s, false); - /***/ - } - s.strstart++; - s.lookahead--; - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code } - } else { - /* There is no previous match to compare with, wait for - * the next step to decide. - */ - s.match_available = 1; - s.strstart++; - s.lookahead--; } + } else if (typeof val === 'number') { + val = val & 255 } - //Assert (flush != Z_NO_FLUSH, "no flush?"); - if (s.match_available) { - //Tracevv((stderr,"%c", s->window[s->strstart-1])); - /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ - bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); - s.match_available = 0; + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') } - s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; - if (flush === Z_FINISH) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - return BS_FINISH_DONE; + + if (end <= start) { + return this } - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding) + var len = bytes.length + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] } - /***/ } - return BS_BLOCK_DONE; + return this } +// HELPER FUNCTIONS +// ================ -/* =========================================================================== - * For Z_RLE, simply look for runs of bytes, generate matches only of distance - * one. Do not maintain a hash table. (It will be regenerated if this run of - * deflate switches away from Z_RLE.) - */ -function deflate_rle(s, flush) { - var bflush; /* set if current block must be flushed */ - var prev; /* byte at distance one to match */ - var scan, strend; /* scan goes up to strend for length of run */ +var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g - var _win = s.window; +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0] + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the longest run, plus one for the unrolled loop. - */ - if (s.lookahead <= MAX_MATCH) { - fill_window(s); - if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { break; } /* flush the current block */ - } +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} - /* See how many times the previous byte repeats */ - s.match_length = 0; - if (s.lookahead >= MIN_MATCH && s.strstart > 0) { - scan = s.strstart - 1; - prev = _win[scan]; - if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { - strend = s.strstart + MAX_MATCH; - do { - /*jshint noempty:false*/ - } while (prev === _win[++scan] && prev === _win[++scan] && - prev === _win[++scan] && prev === _win[++scan] && - prev === _win[++scan] && prev === _win[++scan] && - prev === _win[++scan] && prev === _win[++scan] && - scan < strend); - s.match_length = MAX_MATCH - (strend - scan); - if (s.match_length > s.lookahead) { - s.match_length = s.lookahead; +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue } - } - //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); - } - - /* Emit match if have run of MIN_MATCH or longer, else emit literal */ - if (s.match_length >= MIN_MATCH) { - //check_match(s, s.strstart, s.strstart - 1, s.match_length); - /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/ - bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH); + // valid lead + leadSurrogate = codePoint - s.lookahead -= s.match_length; - s.strstart += s.match_length; - s.match_length = 0; - } else { - /* No match, output a literal byte */ - //Tracevv((stderr,"%c", s->window[s->strstart])); - /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + continue + } - s.lookahead--; - s.strstart++; - } - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue } - /***/ - } - } - s.insert = 0; - if (flush === Z_FINISH) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) } - /***/ - return BS_FINISH_DONE; - } - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') } - /***/ } - return BS_BLOCK_DONE; + + return bytes } -/* =========================================================================== - * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. - * (It will be regenerated if this run of deflate switches away from Huffman.) - */ -function deflate_huff(s, flush) { - var bflush; /* set if current block must be flushed */ +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} - for (;;) { - /* Make sure that we have a literal to write. */ - if (s.lookahead === 0) { - fill_window(s); - if (s.lookahead === 0) { - if (flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - break; /* flush the current block */ - } - } +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break - /* Output a literal byte */ - s.match_length = 0; - //Tracevv((stderr,"%c", s->window[s->strstart])); - /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - s.lookahead--; - s.strstart++; - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - } - s.insert = 0; - if (flush === Z_FINISH) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - return BS_FINISH_DONE; + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) } - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] } - return BS_BLOCK_DONE; + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +}).call(this,require("buffer").Buffer) +},{"base64-js":21,"buffer":25,"ieee754":30}],26:[function(require,module,exports){ +module.exports = { + "100": "Continue", + "101": "Switching Protocols", + "102": "Processing", + "200": "OK", + "201": "Created", + "202": "Accepted", + "203": "Non-Authoritative Information", + "204": "No Content", + "205": "Reset Content", + "206": "Partial Content", + "207": "Multi-Status", + "208": "Already Reported", + "226": "IM Used", + "300": "Multiple Choices", + "301": "Moved Permanently", + "302": "Found", + "303": "See Other", + "304": "Not Modified", + "305": "Use Proxy", + "307": "Temporary Redirect", + "308": "Permanent Redirect", + "400": "Bad Request", + "401": "Unauthorized", + "402": "Payment Required", + "403": "Forbidden", + "404": "Not Found", + "405": "Method Not Allowed", + "406": "Not Acceptable", + "407": "Proxy Authentication Required", + "408": "Request Timeout", + "409": "Conflict", + "410": "Gone", + "411": "Length Required", + "412": "Precondition Failed", + "413": "Payload Too Large", + "414": "URI Too Long", + "415": "Unsupported Media Type", + "416": "Range Not Satisfiable", + "417": "Expectation Failed", + "418": "I'm a teapot", + "421": "Misdirected Request", + "422": "Unprocessable Entity", + "423": "Locked", + "424": "Failed Dependency", + "425": "Unordered Collection", + "426": "Upgrade Required", + "428": "Precondition Required", + "429": "Too Many Requests", + "431": "Request Header Fields Too Large", + "451": "Unavailable For Legal Reasons", + "500": "Internal Server Error", + "501": "Not Implemented", + "502": "Bad Gateway", + "503": "Service Unavailable", + "504": "Gateway Timeout", + "505": "HTTP Version Not Supported", + "506": "Variant Also Negotiates", + "507": "Insufficient Storage", + "508": "Loop Detected", + "509": "Bandwidth Limit Exceeded", + "510": "Not Extended", + "511": "Network Authentication Required" } -/* Values for max_lazy_match, good_match and max_chain_length, depending on - * the desired pack level (0..9). The values given below have been tuned to - * exclude worst case performance for pathological files. Better values may be - * found for specific files. - */ -function Config(good_length, max_lazy, nice_length, max_chain, func) { - this.good_length = good_length; - this.max_lazy = max_lazy; - this.nice_length = nice_length; - this.max_chain = max_chain; - this.func = func; -} +},{}],27:[function(require,module,exports){ +(function (Buffer){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. -var configuration_table; +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. -configuration_table = [ - /* good lazy nice chain */ - new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */ - new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */ - new Config(4, 5, 16, 8, deflate_fast), /* 2 */ - new Config(4, 6, 32, 32, deflate_fast), /* 3 */ +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; - new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */ - new Config(8, 16, 32, 32, deflate_slow), /* 5 */ - new Config(8, 16, 128, 128, deflate_slow), /* 6 */ - new Config(8, 32, 128, 256, deflate_slow), /* 7 */ - new Config(32, 128, 258, 1024, deflate_slow), /* 8 */ - new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */ -]; +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; -/* =========================================================================== - * Initialize the "longest match" routines for a new zlib stream - */ -function lm_init(s) { - s.window_size = 2 * s.w_size; +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; - /*** CLEAR_HASH(s); ***/ - zero(s.head); // Fill with NIL (= 0); +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; - /* Set the default configuration parameters: - */ - s.max_lazy_match = configuration_table[s.level].max_lazy; - s.good_match = configuration_table[s.level].good_length; - s.nice_match = configuration_table[s.level].nice_length; - s.max_chain_length = configuration_table[s.level].max_chain; +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; - s.strstart = 0; - s.block_start = 0; - s.lookahead = 0; - s.insert = 0; - s.match_length = s.prev_length = MIN_MATCH - 1; - s.match_available = 0; - s.ins_h = 0; +function isSymbol(arg) { + return typeof arg === 'symbol'; } +exports.isSymbol = isSymbol; +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; -function DeflateState() { - this.strm = null; /* pointer back to this zlib stream */ - this.status = 0; /* as the name implies */ - this.pending_buf = null; /* output still pending */ - this.pending_buf_size = 0; /* size of pending_buf */ - this.pending_out = 0; /* next pending byte to output to the stream */ - this.pending = 0; /* nb of bytes in the pending buffer */ - this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ - this.gzhead = null; /* gzip header information to write */ - this.gzindex = 0; /* where in extra, name, or comment */ - this.method = Z_DEFLATED; /* can only be DEFLATED */ - this.last_flush = -1; /* value of flush param for previous deflate call */ +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; - this.w_size = 0; /* LZ77 window size (32K by default) */ - this.w_bits = 0; /* log2(w_size) (8..16) */ - this.w_mask = 0; /* w_size - 1 */ +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; - this.window = null; - /* Sliding window. Input bytes are read into the second half of the window, - * and move to the first half later to keep a dictionary of at least wSize - * bytes. With this organization, matches are limited to a distance of - * wSize-MAX_MATCH bytes, but this ensures that IO is always - * performed with a length multiple of the block size. - */ +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; - this.window_size = 0; - /* Actual size of window: 2*wSize, except when the user input buffer - * is directly used as sliding window. - */ +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; - this.prev = null; - /* Link to older string with same hash index. To limit the size of this - * array to 64K, this link is maintained only for the last 32K strings. - * An index in this array is thus a window index modulo 32K. - */ +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; - this.head = null; /* Heads of the hash chains or NIL. */ +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; - this.ins_h = 0; /* hash index of string to be inserted */ - this.hash_size = 0; /* number of elements in hash table */ - this.hash_bits = 0; /* log2(hash_size) */ - this.hash_mask = 0; /* hash_size-1 */ +exports.isBuffer = Buffer.isBuffer; - this.hash_shift = 0; - /* Number of bits by which ins_h must be shifted at each input - * step. It must be such that after MIN_MATCH steps, the oldest - * byte no longer takes part in the hash key, that is: - * hash_shift * MIN_MATCH >= hash_bits - */ +function objectToString(o) { + return Object.prototype.toString.call(o); +} - this.block_start = 0; - /* Window position at the beginning of the current output block. Gets - * negative when the window is moved backwards. - */ +}).call(this,{"isBuffer":require("../../is-buffer/index.js")}) +},{"../../is-buffer/index.js":32}],28:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - this.match_length = 0; /* length of best match */ - this.prev_match = 0; /* previous match */ - this.match_available = 0; /* set if previous match exists */ - this.strstart = 0; /* start of string to insert */ - this.match_start = 0; /* start of matching string */ - this.lookahead = 0; /* number of valid bytes ahead in window */ +var objectCreate = Object.create || objectCreatePolyfill +var objectKeys = Object.keys || objectKeysPolyfill +var bind = Function.prototype.bind || functionBindPolyfill - this.prev_length = 0; - /* Length of the best match at previous step. Matches not greater than this - * are discarded. This is used in the lazy match evaluation. - */ +function EventEmitter() { + if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) { + this._events = objectCreate(null); + this._eventsCount = 0; + } - this.max_chain_length = 0; - /* To speed up deflation, hash chains are never searched beyond this - * length. A higher limit improves compression ratio but degrades the - * speed. - */ + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; - this.max_lazy_match = 0; - /* Attempt to find a better match only when the current match is strictly - * smaller than this value. This mechanism is used only for compression - * levels >= 4. - */ - // That's alias to max_lazy_match, don't use directly - //this.max_insert_length = 0; - /* Insert new strings in the hash table only if the match length is not - * greater than this length. This saves time but degrades compression. - * max_insert_length is used only for compression levels <= 3. - */ +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; - this.level = 0; /* compression level (1..9) */ - this.strategy = 0; /* favor or force Huffman coding*/ +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; - this.good_match = 0; - /* Use a faster search when the previous match is longer than this */ +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; - this.nice_match = 0; /* Stop searching when current match exceeds this */ +var hasDefineProperty; +try { + var o = {}; + if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 }); + hasDefineProperty = o.x === 0; +} catch (err) { hasDefineProperty = false } +if (hasDefineProperty) { + Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + // check whether the input is a positive number (whose value is zero or + // greater and not a NaN). + if (typeof arg !== 'number' || arg < 0 || arg !== arg) + throw new TypeError('"defaultMaxListeners" must be a positive number'); + defaultMaxListeners = arg; + } + }); +} else { + EventEmitter.defaultMaxListeners = defaultMaxListeners; +} - /* used by trees.c: */ +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || isNaN(n)) + throw new TypeError('"n" argument must be a positive number'); + this._maxListeners = n; + return this; +}; - /* Didn't use ct_data typedef below to suppress compiler warning */ +function $getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} - // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ - // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ - // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return $getMaxListeners(this); +}; - // Use flat array of DOUBLE size, with interleaved fata, - // because JS does not support effective - this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2); - this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2); - this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2); - zero(this.dyn_ltree); - zero(this.dyn_dtree); - zero(this.bl_tree); +// These standalone emit* functions are used to optimize calling of event +// handlers for fast cases because emit() itself often has a variable number of +// arguments and can be deoptimized because of that. These functions always have +// the same number of arguments and thus do not get deoptimized, so the code +// inside them can execute faster. +function emitNone(handler, isFn, self) { + if (isFn) + handler.call(self); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self); + } +} +function emitOne(handler, isFn, self, arg1) { + if (isFn) + handler.call(self, arg1); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1); + } +} +function emitTwo(handler, isFn, self, arg1, arg2) { + if (isFn) + handler.call(self, arg1, arg2); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1, arg2); + } +} +function emitThree(handler, isFn, self, arg1, arg2, arg3) { + if (isFn) + handler.call(self, arg1, arg2, arg3); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1, arg2, arg3); + } +} - this.l_desc = null; /* desc. for literal tree */ - this.d_desc = null; /* desc. for distance tree */ - this.bl_desc = null; /* desc. for bit length tree */ +function emitMany(handler, isFn, self, args) { + if (isFn) + handler.apply(self, args); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].apply(self, args); + } +} - //ush bl_count[MAX_BITS+1]; - this.bl_count = new utils.Buf16(MAX_BITS + 1); - /* number of codes at each bit length for an optimal tree */ +EventEmitter.prototype.emit = function emit(type) { + var er, handler, len, args, i, events; + var doError = (type === 'error'); - //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ - this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */ - zero(this.heap); + events = this._events; + if (events) + doError = (doError && events.error == null); + else if (!doError) + return false; - this.heap_len = 0; /* number of elements in the heap */ - this.heap_max = 0; /* element of largest frequency */ - /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. - * The same heap array is used to build all trees. - */ + // If there is no 'error' event listener then throw. + if (doError) { + if (arguments.length > 1) + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + // At least give some kind of context to the user + var err = new Error('Unhandled "error" event. (' + er + ')'); + err.context = er; + throw err; + } + return false; + } - this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1]; - zero(this.depth); - /* Depth of each subtree used as tie breaker for trees of equal frequency - */ + handler = events[type]; - this.l_buf = 0; /* buffer index for literals or lengths */ + if (!handler) + return false; - this.lit_bufsize = 0; - /* Size of match buffer for literals/lengths. There are 4 reasons for - * limiting lit_bufsize to 64K: - * - frequencies can be kept in 16 bit counters - * - if compression is not successful for the first block, all input - * data is still in the window so we can still emit a stored block even - * when input comes from standard input. (This can also be done for - * all blocks if lit_bufsize is not greater than 32K.) - * - if compression is not successful for a file smaller than 64K, we can - * even emit a stored file instead of a stored block (saving 5 bytes). - * This is applicable only for zip (not gzip or zlib). - * - creating new Huffman trees less frequently may not provide fast - * adaptation to changes in the input data statistics. (Take for - * example a binary file with poorly compressible code followed by - * a highly compressible string table.) Smaller buffer sizes give - * fast adaptation but have of course the overhead of transmitting - * trees more frequently. - * - I can't count above 4 - */ + var isFn = typeof handler === 'function'; + len = arguments.length; + switch (len) { + // fast cases + case 1: + emitNone(handler, isFn, this); + break; + case 2: + emitOne(handler, isFn, this, arguments[1]); + break; + case 3: + emitTwo(handler, isFn, this, arguments[1], arguments[2]); + break; + case 4: + emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]); + break; + // slower + default: + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + emitMany(handler, isFn, this, args); + } - this.last_lit = 0; /* running index in l_buf */ + return true; +}; - this.d_buf = 0; - /* Buffer index for distances. To simplify the code, d_buf and l_buf have - * the same number of elements. To use different lengths, an extra flag - * array would be necessary. - */ +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; - this.opt_len = 0; /* bit length of current block with optimal trees */ - this.static_len = 0; /* bit length of current block with static trees */ - this.matches = 0; /* number of string matches in current block */ - this.insert = 0; /* bytes at end of window left to insert */ + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + events = target._events; + if (!events) { + events = target._events = objectCreate(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); - this.bi_buf = 0; - /* Output buffer. bits are inserted starting at the bottom (least - * significant bits). - */ - this.bi_valid = 0; - /* Number of valid bits in bi_buf. All bits above the last valid bit - * are always zero. - */ + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } - // Used for window memory init. We safely ignore it for JS. That makes - // sense only for pointers and memory check tools. - //this.high_water = 0; - /* High water mark offset in window for initialized bytes -- bytes above - * this are set to zero in order to avoid memory check warnings when - * longest match routines access bytes past the input. This is then - * updated to the new high water mark. - */ -} + if (!existing) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + } else { + // If we've already got an array, just append. + if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + } + // Check for listener leak + if (!existing.warned) { + m = $getMaxListeners(target); + if (m && m > 0 && existing.length > m) { + existing.warned = true; + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' "' + String(type) + '" listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit.'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + if (typeof console === 'object' && console.warn) { + console.warn('%s: %s', w.name, w.message); + } + } + } + } -function deflateResetKeep(strm) { - var s; + return target; +} - if (!strm || !strm.state) { - return err(strm, Z_STREAM_ERROR); - } +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; - strm.total_in = strm.total_out = 0; - strm.data_type = Z_UNKNOWN; +EventEmitter.prototype.on = EventEmitter.prototype.addListener; - s = strm.state; - s.pending = 0; - s.pending_out = 0; +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; - if (s.wrap < 0) { - s.wrap = -s.wrap; - /* was made negative by deflate(..., Z_FINISH); */ +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + switch (arguments.length) { + case 0: + return this.listener.call(this.target); + case 1: + return this.listener.call(this.target, arguments[0]); + case 2: + return this.listener.call(this.target, arguments[0], arguments[1]); + case 3: + return this.listener.call(this.target, arguments[0], arguments[1], + arguments[2]); + default: + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) + args[i] = arguments[i]; + this.listener.apply(this.target, args); + } } - s.status = (s.wrap ? INIT_STATE : BUSY_STATE); - strm.adler = (s.wrap === 2) ? - 0 // crc32(0, Z_NULL, 0) - : - 1; // adler32(0, Z_NULL, 0) - s.last_flush = Z_NO_FLUSH; - trees._tr_init(s); - return Z_OK; } - -function deflateReset(strm) { - var ret = deflateResetKeep(strm); - if (ret === Z_OK) { - lm_init(strm.state); - } - return ret; +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = bind.call(onceWrapper, state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; } +EventEmitter.prototype.once = function once(type, listener) { + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; -function deflateSetHeader(strm, head) { - if (!strm || !strm.state) { return Z_STREAM_ERROR; } - if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; } - strm.state.gzhead = head; - return Z_OK; -} +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; -function deflateInit2(strm, level, method, windowBits, memLevel, strategy) { - if (!strm) { // === Z_NULL - return Z_STREAM_ERROR; - } - var wrap = 1; + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); - if (level === Z_DEFAULT_COMPRESSION) { - level = 6; - } + events = this._events; + if (!events) + return this; - if (windowBits < 0) { /* suppress zlib wrapper */ - wrap = 0; - windowBits = -windowBits; - } + list = events[type]; + if (!list) + return this; - else if (windowBits > 15) { - wrap = 2; /* write gzip wrapper instead */ - windowBits -= 16; - } + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = objectCreate(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } - if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || - windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || - strategy < 0 || strategy > Z_FIXED) { - return err(strm, Z_STREAM_ERROR); - } + if (position < 0) + return this; + if (position === 0) + list.shift(); + else + spliceOne(list, position); - if (windowBits === 8) { - windowBits = 9; - } - /* until 256-byte window bug fixed */ + if (list.length === 1) + events[type] = list[0]; - var s = new DeflateState(); + if (events.removeListener) + this.emit('removeListener', type, originalListener || listener); + } - strm.state = s; - s.strm = strm; + return this; + }; - s.wrap = wrap; - s.gzhead = null; - s.w_bits = windowBits; - s.w_size = 1 << s.w_bits; - s.w_mask = s.w_size - 1; +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; - s.hash_bits = memLevel + 7; - s.hash_size = 1 << s.hash_bits; - s.hash_mask = s.hash_size - 1; - s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); + events = this._events; + if (!events) + return this; - s.window = new utils.Buf8(s.w_size * 2); - s.head = new utils.Buf16(s.hash_size); - s.prev = new utils.Buf16(s.w_size); + // not listening for removeListener, no need to emit + if (!events.removeListener) { + if (arguments.length === 0) { + this._events = objectCreate(null); + this._eventsCount = 0; + } else if (events[type]) { + if (--this._eventsCount === 0) + this._events = objectCreate(null); + else + delete events[type]; + } + return this; + } - // Don't need mem init magic for JS. - //s.high_water = 0; /* nothing written to s->window yet */ + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = objectKeys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = objectCreate(null); + this._eventsCount = 0; + return this; + } - s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ + listeners = events[type]; - s.pending_buf_size = s.lit_bufsize * 4; + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } - //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); - //s->pending_buf = (uchf *) overlay; - s.pending_buf = new utils.Buf8(s.pending_buf_size); + return this; + }; - // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`) - //s->d_buf = overlay + s->lit_bufsize/sizeof(ush); - s.d_buf = 1 * s.lit_bufsize; +function _listeners(target, type, unwrap) { + var events = target._events; - //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; - s.l_buf = (1 + 2) * s.lit_bufsize; + if (!events) + return []; - s.level = level; - s.strategy = strategy; - s.method = method; + var evlistener = events[type]; + if (!evlistener) + return []; - return deflateReset(strm); -} + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; -function deflateInit(strm, level) { - return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); + return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); } +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; -function deflate(strm, flush) { - var old_flush, s; - var beg, val; // for gzip header write only +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; - if (!strm || !strm.state || - flush > Z_BLOCK || flush < 0) { - return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR; +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); } +}; - s = strm.state; +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; - if (!strm.output || - (!strm.input && strm.avail_in !== 0) || - (s.status === FINISH_STATE && flush !== Z_FINISH)) { - return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR); + if (events) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener) { + return evlistener.length; + } } - s.strm = strm; /* just in case */ - old_flush = s.last_flush; - s.last_flush = flush; + return 0; +} - /* Write the header */ - if (s.status === INIT_STATE) { +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; +}; - if (s.wrap === 2) { // GZIP header - strm.adler = 0; //crc32(0L, Z_NULL, 0); - put_byte(s, 31); - put_byte(s, 139); - put_byte(s, 8); - if (!s.gzhead) { // s->gzhead == Z_NULL - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, s.level === 9 ? 2 : - (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? - 4 : 0)); - put_byte(s, OS_CODE); - s.status = BUSY_STATE; - } - else { - put_byte(s, (s.gzhead.text ? 1 : 0) + - (s.gzhead.hcrc ? 2 : 0) + - (!s.gzhead.extra ? 0 : 4) + - (!s.gzhead.name ? 0 : 8) + - (!s.gzhead.comment ? 0 : 16) - ); - put_byte(s, s.gzhead.time & 0xff); - put_byte(s, (s.gzhead.time >> 8) & 0xff); - put_byte(s, (s.gzhead.time >> 16) & 0xff); - put_byte(s, (s.gzhead.time >> 24) & 0xff); - put_byte(s, s.level === 9 ? 2 : - (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? - 4 : 0)); - put_byte(s, s.gzhead.os & 0xff); - if (s.gzhead.extra && s.gzhead.extra.length) { - put_byte(s, s.gzhead.extra.length & 0xff); - put_byte(s, (s.gzhead.extra.length >> 8) & 0xff); - } - if (s.gzhead.hcrc) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0); - } - s.gzindex = 0; - s.status = EXTRA_STATE; - } - } - else // DEFLATE header - { - var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8; - var level_flags = -1; +// About 1.5x faster than the two-arg version of Array#splice(). +function spliceOne(list, index) { + for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) + list[i] = list[k]; + list.pop(); +} - if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { - level_flags = 0; - } else if (s.level < 6) { - level_flags = 1; - } else if (s.level === 6) { - level_flags = 2; - } else { - level_flags = 3; - } - header |= (level_flags << 6); - if (s.strstart !== 0) { header |= PRESET_DICT; } - header += 31 - (header % 31); +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} - s.status = BUSY_STATE; - putShortMSB(s, header); +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} - /* Save the adler32 of the preset dictionary: */ - if (s.strstart !== 0) { - putShortMSB(s, strm.adler >>> 16); - putShortMSB(s, strm.adler & 0xffff); - } - strm.adler = 1; // adler32(0L, Z_NULL, 0); - } +function objectCreatePolyfill(proto) { + var F = function() {}; + F.prototype = proto; + return new F; +} +function objectKeysPolyfill(obj) { + var keys = []; + for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) { + keys.push(k); } + return k; +} +function functionBindPolyfill(context) { + var fn = this; + return function () { + return fn.apply(context, arguments); + }; +} -//#ifdef GZIP - if (s.status === EXTRA_STATE) { - if (s.gzhead.extra/* != Z_NULL*/) { - beg = s.pending; /* start of bytes to update crc */ +},{}],29:[function(require,module,exports){ +var http = require('http') +var url = require('url') - while (s.gzindex < (s.gzhead.extra.length & 0xffff)) { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - break; - } - } - put_byte(s, s.gzhead.extra[s.gzindex] & 0xff); - s.gzindex++; - } - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (s.gzindex === s.gzhead.extra.length) { - s.gzindex = 0; - s.status = NAME_STATE; - } - } - else { - s.status = NAME_STATE; - } - } - if (s.status === NAME_STATE) { - if (s.gzhead.name/* != Z_NULL*/) { - beg = s.pending; /* start of bytes to update crc */ - //int val; +var https = module.exports - do { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - val = 1; - break; - } - } - // JS specific: little magic to add zero terminator to end of string - if (s.gzindex < s.gzhead.name.length) { - val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff; - } else { - val = 0; - } - put_byte(s, val); - } while (val !== 0); +for (var key in http) { + if (http.hasOwnProperty(key)) https[key] = http[key] +} - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (val === 0) { - s.gzindex = 0; - s.status = COMMENT_STATE; - } - } - else { - s.status = COMMENT_STATE; - } - } - if (s.status === COMMENT_STATE) { - if (s.gzhead.comment/* != Z_NULL*/) { - beg = s.pending; /* start of bytes to update crc */ - //int val; +https.request = function (params, cb) { + params = validateParams(params) + return http.request.call(this, params, cb) +} - do { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - val = 1; - break; - } - } - // JS specific: little magic to add zero terminator to end of string - if (s.gzindex < s.gzhead.comment.length) { - val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff; - } else { - val = 0; - } - put_byte(s, val); - } while (val !== 0); +https.get = function (params, cb) { + params = validateParams(params) + return http.get.call(this, params, cb) +} - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (val === 0) { - s.status = HCRC_STATE; - } - } - else { - s.status = HCRC_STATE; - } +function validateParams (params) { + if (typeof params === 'string') { + params = url.parse(params) } - if (s.status === HCRC_STATE) { - if (s.gzhead.hcrc) { - if (s.pending + 2 > s.pending_buf_size) { - flush_pending(strm); - } - if (s.pending + 2 <= s.pending_buf_size) { - put_byte(s, strm.adler & 0xff); - put_byte(s, (strm.adler >> 8) & 0xff); - strm.adler = 0; //crc32(0L, Z_NULL, 0); - s.status = BUSY_STATE; - } - } - else { - s.status = BUSY_STATE; - } + if (!params.protocol) { + params.protocol = 'https:' } -//#endif + if (params.protocol !== 'https:') { + throw new Error('Protocol "' + params.protocol + '" not supported. Expected "https:"') + } + return params +} - /* Flush as much pending output as possible */ - if (s.pending !== 0) { - flush_pending(strm); - if (strm.avail_out === 0) { - /* Since avail_out is 0, deflate will be called again with - * more output space, but possibly with both pending and - * avail_in equal to zero. There won't be anything to do, - * but this is not an error situation so make sure we - * return OK instead of BUF_ERROR at next call of deflate: - */ - s.last_flush = -1; - return Z_OK; - } +},{"http":67,"url":73}],30:[function(require,module,exports){ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] - /* Make sure there is something to do and avoid duplicate consecutive - * flushes. For repeated and useless calls with Z_FINISH, we keep - * returning Z_STREAM_END instead of Z_BUF_ERROR. - */ - } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && - flush !== Z_FINISH) { - return err(strm, Z_BUF_ERROR); - } + i += d - /* User must not provide more input after the first FINISH: */ - if (s.status === FINISH_STATE && strm.avail_in !== 0) { - return err(strm, Z_BUF_ERROR); + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} - /* Start a new block or continue the current one. - */ - if (strm.avail_in !== 0 || s.lookahead !== 0 || - (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) { - var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) : - (s.strategy === Z_RLE ? deflate_rle(s, flush) : - configuration_table[s.level].func(s, flush)); +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 - if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { - s.status = FINISH_STATE; + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 } - if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { - if (strm.avail_out === 0) { - s.last_flush = -1; - /* avoid BUF_ERROR next call, see above */ - } - return Z_OK; - /* If flush != Z_NO_FLUSH && avail_out == 0, the next call - * of deflate should use the same flush parameter to make sure - * that the flush is complete. So we don't have to output an - * empty block here, this will be done at next call. This also - * ensures that for a very small output buffer, we emit at most - * one empty block. - */ + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 } - if (bstate === BS_BLOCK_DONE) { - if (flush === Z_PARTIAL_FLUSH) { - trees._tr_align(s); - } - else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ - - trees._tr_stored_block(s, 0, 0, false); - /* For a full flush, this empty block will be recognized - * as a special marker by inflate_sync(). - */ - if (flush === Z_FULL_FLUSH) { - /*** CLEAR_HASH(s); ***/ /* forget history */ - zero(s.head); // Fill with NIL (= 0); - if (s.lookahead === 0) { - s.strstart = 0; - s.block_start = 0; - s.insert = 0; - } - } - } - flush_pending(strm); - if (strm.avail_out === 0) { - s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */ - return Z_OK; - } + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 } } - //Assert(strm->avail_out > 0, "bug2"); - //if (strm.avail_out <= 0) { throw new Error("bug2");} - if (flush !== Z_FINISH) { return Z_OK; } - if (s.wrap <= 0) { return Z_STREAM_END; } + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - /* Write the trailer */ - if (s.wrap === 2) { - put_byte(s, strm.adler & 0xff); - put_byte(s, (strm.adler >> 8) & 0xff); - put_byte(s, (strm.adler >> 16) & 0xff); - put_byte(s, (strm.adler >> 24) & 0xff); - put_byte(s, strm.total_in & 0xff); - put_byte(s, (strm.total_in >> 8) & 0xff); - put_byte(s, (strm.total_in >> 16) & 0xff); - put_byte(s, (strm.total_in >> 24) & 0xff); - } - else - { - putShortMSB(s, strm.adler >>> 16); - putShortMSB(s, strm.adler & 0xffff); - } + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - flush_pending(strm); - /* If avail_out is zero, the application will call deflate again - * to flush the rest. - */ - if (s.wrap > 0) { s.wrap = -s.wrap; } - /* write the trailer only once! */ - return s.pending !== 0 ? Z_OK : Z_STREAM_END; + buffer[offset + i - d] |= s * 128 } -function deflateEnd(strm) { - var status; +},{}],31:[function(require,module,exports){ +arguments[4][18][0].apply(exports,arguments) +},{"dup":18}],32:[function(require,module,exports){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ - if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { - return Z_STREAM_ERROR; - } +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +} - status = strm.state.status; - if (status !== INIT_STATE && - status !== EXTRA_STATE && - status !== NAME_STATE && - status !== COMMENT_STATE && - status !== HCRC_STATE && - status !== BUSY_STATE && - status !== FINISH_STATE - ) { - return err(strm, Z_STREAM_ERROR); - } +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} - strm.state = null; +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} + +},{}],33:[function(require,module,exports){ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +},{}],34:[function(require,module,exports){ +'use strict'; + + +var TYPED_OK = (typeof Uint8Array !== 'undefined') && + (typeof Uint16Array !== 'undefined') && + (typeof Int32Array !== 'undefined'); - return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK; +function _has(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); } +exports.assign = function (obj /*from1, from2, from3, ...*/) { + var sources = Array.prototype.slice.call(arguments, 1); + while (sources.length) { + var source = sources.shift(); + if (!source) { continue; } -/* ========================================================================= - * Initializes the compression dictionary from the given byte - * sequence without producing any compressed output. - */ -function deflateSetDictionary(strm, dictionary) { - var dictLength = dictionary.length; - - var s; - var str, n; - var wrap; - var avail; - var next; - var input; - var tmpDict; + if (typeof source !== 'object') { + throw new TypeError(source + 'must be non-object'); + } - if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { - return Z_STREAM_ERROR; + for (var p in source) { + if (_has(source, p)) { + obj[p] = source[p]; + } + } } - s = strm.state; - wrap = s.wrap; + return obj; +}; - if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) { - return Z_STREAM_ERROR; - } - /* when using zlib wrappers, compute Adler-32 for provided dictionary */ - if (wrap === 1) { - /* adler32(strm->adler, dictionary, dictLength); */ - strm.adler = adler32(strm.adler, dictionary, dictLength, 0); - } +// reduce buffer size, avoiding mem copy +exports.shrinkBuf = function (buf, size) { + if (buf.length === size) { return buf; } + if (buf.subarray) { return buf.subarray(0, size); } + buf.length = size; + return buf; +}; - s.wrap = 0; /* avoid computing Adler-32 in read_buf */ - /* if dictionary would fill window, just replace the history */ - if (dictLength >= s.w_size) { - if (wrap === 0) { /* already empty otherwise */ - /*** CLEAR_HASH(s); ***/ - zero(s.head); // Fill with NIL (= 0); - s.strstart = 0; - s.block_start = 0; - s.insert = 0; +var fnTyped = { + arraySet: function (dest, src, src_offs, len, dest_offs) { + if (src.subarray && dest.subarray) { + dest.set(src.subarray(src_offs, src_offs + len), dest_offs); + return; } - /* use the tail */ - // dictionary = dictionary.slice(dictLength - s.w_size); - tmpDict = new utils.Buf8(s.w_size); - utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0); - dictionary = tmpDict; - dictLength = s.w_size; - } - /* insert dictionary into window and hash */ - avail = strm.avail_in; - next = strm.next_in; - input = strm.input; - strm.avail_in = dictLength; - strm.next_in = 0; - strm.input = dictionary; - fill_window(s); - while (s.lookahead >= MIN_MATCH) { - str = s.strstart; - n = s.lookahead - (MIN_MATCH - 1); - do { - /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; + // Fallback to ordinary array + for (var i = 0; i < len; i++) { + dest[dest_offs + i] = src[src_offs + i]; + } + }, + // Join array of chunks to single array. + flattenChunks: function (chunks) { + var i, l, len, pos, chunk, result; - s.prev[str & s.w_mask] = s.head[s.ins_h]; + // calculate data length + len = 0; + for (i = 0, l = chunks.length; i < l; i++) { + len += chunks[i].length; + } - s.head[s.ins_h] = str; - str++; - } while (--n); - s.strstart = str; - s.lookahead = MIN_MATCH - 1; - fill_window(s); + // join chunks + result = new Uint8Array(len); + pos = 0; + for (i = 0, l = chunks.length; i < l; i++) { + chunk = chunks[i]; + result.set(chunk, pos); + pos += chunk.length; + } + + return result; } - s.strstart += s.lookahead; - s.block_start = s.strstart; - s.insert = s.lookahead; - s.lookahead = 0; - s.match_length = s.prev_length = MIN_MATCH - 1; - s.match_available = 0; - strm.next_in = next; - strm.input = input; - strm.avail_in = avail; - s.wrap = wrap; - return Z_OK; -} +}; +var fnUntyped = { + arraySet: function (dest, src, src_offs, len, dest_offs) { + for (var i = 0; i < len; i++) { + dest[dest_offs + i] = src[src_offs + i]; + } + }, + // Join array of chunks to single array. + flattenChunks: function (chunks) { + return [].concat.apply([], chunks); + } +}; -exports.deflateInit = deflateInit; -exports.deflateInit2 = deflateInit2; -exports.deflateReset = deflateReset; -exports.deflateResetKeep = deflateResetKeep; -exports.deflateSetHeader = deflateSetHeader; -exports.deflate = deflate; -exports.deflateEnd = deflateEnd; -exports.deflateSetDictionary = deflateSetDictionary; -exports.deflateInfo = 'pako deflate (from Nodeca project)'; -/* Not implemented -exports.deflateBound = deflateBound; -exports.deflateCopy = deflateCopy; -exports.deflateParams = deflateParams; -exports.deflatePending = deflatePending; -exports.deflatePrime = deflatePrime; -exports.deflateTune = deflateTune; -*/ +// Enable/Disable typed arrays use, for testing +// +exports.setTyped = function (on) { + if (on) { + exports.Buf8 = Uint8Array; + exports.Buf16 = Uint16Array; + exports.Buf32 = Int32Array; + exports.assign(exports, fnTyped); + } else { + exports.Buf8 = Array; + exports.Buf16 = Array; + exports.Buf32 = Array; + exports.assign(exports, fnUntyped); + } +}; -},{"../utils/common":28,"./adler32":29,"./crc32":31,"./messages":36,"./trees":37}],33:[function(require,module,exports){ +exports.setTyped(TYPED_OK); + +},{}],35:[function(require,module,exports){ 'use strict'; +// Note: adler32 takes 12% for level 0 and 2% for level 6. +// It isn't worth it to make additional optimizations as in original. +// Small size is preferable. + // (C) 1995-2013 Jean-loup Gailly and Mark Adler // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin // @@ -11458,332 +10284,165 @@ exports.deflateTune = deflateTune; // misrepresented as being the original software. // 3. This notice may not be removed or altered from any source distribution. -// See state defs from inflate.js -var BAD = 30; /* got a data error -- remain here until reset */ -var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ - -/* - Decode literal, length, and distance codes and write out the resulting - literal and match bytes until either not enough input or output is - available, an end-of-block is encountered, or a data error is encountered. - When large enough input and output buffers are supplied to inflate(), for - example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. - - Entry assumptions: - - state.mode === LEN - strm.avail_in >= 6 - strm.avail_out >= 258 - start >= strm.avail_out - state.bits < 8 - - On return, state.mode is one of: - - LEN -- ran out of enough output space or enough available input - TYPE -- reached end of block code, inflate() to interpret next block - BAD -- error in block data - - Notes: - - - The maximum input bits used by a length/distance pair is 15 bits for the - length code, 5 bits for the length extra, 15 bits for the distance code, - and 13 bits for the distance extra. This totals 48 bits, or six bytes. - Therefore if strm.avail_in >= 6, then there is enough input to avoid - checking for available input while decoding. - - - The maximum bytes that a single length/distance pair can output is 258 - bytes, which is the maximum length that can be coded. inflate_fast() - requires strm.avail_out >= 258 for each loop to avoid checking for - output space. - */ -module.exports = function inflate_fast(strm, start) { - var state; - var _in; /* local strm.input */ - var last; /* have enough input while in < last */ - var _out; /* local strm.output */ - var beg; /* inflate()'s initial strm.output */ - var end; /* while out < end, enough space available */ -//#ifdef INFLATE_STRICT - var dmax; /* maximum distance from zlib header */ -//#endif - var wsize; /* window size or zero if not using window */ - var whave; /* valid bytes in the window */ - var wnext; /* window write index */ - // Use `s_window` instead `window`, avoid conflict with instrumentation tools - var s_window; /* allocated sliding window, if wsize != 0 */ - var hold; /* local strm.hold */ - var bits; /* local strm.bits */ - var lcode; /* local strm.lencode */ - var dcode; /* local strm.distcode */ - var lmask; /* mask for first level of length codes */ - var dmask; /* mask for first level of distance codes */ - var here; /* retrieved table entry */ - var op; /* code bits, operation, extra bits, or */ - /* window position, window bytes to copy */ - var len; /* match length, unused bytes */ - var dist; /* match distance */ - var from; /* where to copy match from */ - var from_source; +function adler32(adler, buf, len, pos) { + var s1 = (adler & 0xffff) |0, + s2 = ((adler >>> 16) & 0xffff) |0, + n = 0; + while (len !== 0) { + // Set limit ~ twice less than 5552, to keep + // s2 in 31-bits, because we force signed ints. + // in other case %= will fail. + n = len > 2000 ? 2000 : len; + len -= n; - var input, output; // JS specific, because we have no pointers + do { + s1 = (s1 + buf[pos++]) |0; + s2 = (s2 + s1) |0; + } while (--n); - /* copy state to local variables */ - state = strm.state; - //here = state.here; - _in = strm.next_in; - input = strm.input; - last = _in + (strm.avail_in - 5); - _out = strm.next_out; - output = strm.output; - beg = _out - (start - strm.avail_out); - end = _out + (strm.avail_out - 257); -//#ifdef INFLATE_STRICT - dmax = state.dmax; -//#endif - wsize = state.wsize; - whave = state.whave; - wnext = state.wnext; - s_window = state.window; - hold = state.hold; - bits = state.bits; - lcode = state.lencode; - dcode = state.distcode; - lmask = (1 << state.lenbits) - 1; - dmask = (1 << state.distbits) - 1; + s1 %= 65521; + s2 %= 65521; + } + return (s1 | (s2 << 16)) |0; +} - /* decode literals and length/distances until end-of-block or not enough - input data or output space */ - top: - do { - if (bits < 15) { - hold += input[_in++] << bits; - bits += 8; - hold += input[_in++] << bits; - bits += 8; - } +module.exports = adler32; - here = lcode[hold & lmask]; +},{}],36:[function(require,module,exports){ +'use strict'; - dolen: - for (;;) { // Goto emulation - op = here >>> 24/*here.bits*/; - hold >>>= op; - bits -= op; - op = (here >>> 16) & 0xff/*here.op*/; - if (op === 0) { /* literal */ - //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - // "inflate: literal '%c'\n" : - // "inflate: literal 0x%02x\n", here.val)); - output[_out++] = here & 0xffff/*here.val*/; - } - else if (op & 16) { /* length base */ - len = here & 0xffff/*here.val*/; - op &= 15; /* number of extra bits */ - if (op) { - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - } - len += hold & ((1 << op) - 1); - hold >>>= op; - bits -= op; - } - //Tracevv((stderr, "inflate: length %u\n", len)); - if (bits < 15) { - hold += input[_in++] << bits; - bits += 8; - hold += input[_in++] << bits; - bits += 8; - } - here = dcode[hold & dmask]; +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. - dodist: - for (;;) { // goto emulation - op = here >>> 24/*here.bits*/; - hold >>>= op; - bits -= op; - op = (here >>> 16) & 0xff/*here.op*/; +module.exports = { - if (op & 16) { /* distance base */ - dist = here & 0xffff/*here.val*/; - op &= 15; /* number of extra bits */ - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - } - } - dist += hold & ((1 << op) - 1); -//#ifdef INFLATE_STRICT - if (dist > dmax) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD; - break top; - } -//#endif - hold >>>= op; - bits -= op; - //Tracevv((stderr, "inflate: distance %u\n", dist)); - op = _out - beg; /* max distance in output */ - if (dist > op) { /* see if copy from window */ - op = dist - op; /* distance back in window */ - if (op > whave) { - if (state.sane) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD; - break top; - } + /* Allowed flush values; see deflate() and inflate() below for details */ + Z_NO_FLUSH: 0, + Z_PARTIAL_FLUSH: 1, + Z_SYNC_FLUSH: 2, + Z_FULL_FLUSH: 3, + Z_FINISH: 4, + Z_BLOCK: 5, + Z_TREES: 6, -// (!) This block is disabled in zlib defaults, -// don't enable it for binary compatibility -//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR -// if (len <= op - whave) { -// do { -// output[_out++] = 0; -// } while (--len); -// continue top; -// } -// len -= op - whave; -// do { -// output[_out++] = 0; -// } while (--op > whave); -// if (op === 0) { -// from = _out - dist; -// do { -// output[_out++] = output[from++]; -// } while (--len); -// continue top; -// } -//#endif - } - from = 0; // window index - from_source = s_window; - if (wnext === 0) { /* very common case */ - from += wsize - op; - if (op < len) { /* some from window */ - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; /* rest from output */ - from_source = output; - } - } - else if (wnext < op) { /* wrap around window */ - from += wsize + wnext - op; - op -= wnext; - if (op < len) { /* some from end of window */ - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = 0; - if (wnext < len) { /* some from start of window */ - op = wnext; - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; /* rest from output */ - from_source = output; - } - } - } - else { /* contiguous in window */ - from += wnext - op; - if (op < len) { /* some from window */ - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; /* rest from output */ - from_source = output; - } - } - while (len > 2) { - output[_out++] = from_source[from++]; - output[_out++] = from_source[from++]; - output[_out++] = from_source[from++]; - len -= 3; - } - if (len) { - output[_out++] = from_source[from++]; - if (len > 1) { - output[_out++] = from_source[from++]; - } - } - } - else { - from = _out - dist; /* copy direct from output */ - do { /* minimum length is three */ - output[_out++] = output[from++]; - output[_out++] = output[from++]; - output[_out++] = output[from++]; - len -= 3; - } while (len > 2); - if (len) { - output[_out++] = output[from++]; - if (len > 1) { - output[_out++] = output[from++]; - } - } - } - } - else if ((op & 64) === 0) { /* 2nd level distance code */ - here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; - continue dodist; - } - else { - strm.msg = 'invalid distance code'; - state.mode = BAD; - break top; - } + /* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + Z_OK: 0, + Z_STREAM_END: 1, + Z_NEED_DICT: 2, + Z_ERRNO: -1, + Z_STREAM_ERROR: -2, + Z_DATA_ERROR: -3, + //Z_MEM_ERROR: -4, + Z_BUF_ERROR: -5, + //Z_VERSION_ERROR: -6, - break; // need to emulate goto via "continue" - } - } - else if ((op & 64) === 0) { /* 2nd level length code */ - here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; - continue dolen; - } - else if (op & 32) { /* end-of-block */ - //Tracevv((stderr, "inflate: end of block\n")); - state.mode = TYPE; - break top; - } - else { - strm.msg = 'invalid literal/length code'; - state.mode = BAD; - break top; - } + /* compression levels */ + Z_NO_COMPRESSION: 0, + Z_BEST_SPEED: 1, + Z_BEST_COMPRESSION: 9, + Z_DEFAULT_COMPRESSION: -1, - break; // need to emulate goto via "continue" - } - } while (_in < last && _out < end); - /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ - len = bits >> 3; - _in -= len; - bits -= len << 3; - hold &= (1 << bits) - 1; + Z_FILTERED: 1, + Z_HUFFMAN_ONLY: 2, + Z_RLE: 3, + Z_FIXED: 4, + Z_DEFAULT_STRATEGY: 0, - /* update state and return */ - strm.next_in = _in; - strm.next_out = _out; - strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last)); - strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end)); - state.hold = hold; - state.bits = bits; - return; + /* Possible values of the data_type field (though see inflate()) */ + Z_BINARY: 0, + Z_TEXT: 1, + //Z_ASCII: 1, // = Z_TEXT (deprecated) + Z_UNKNOWN: 2, + + /* The deflate compression method */ + Z_DEFLATED: 8 + //Z_NULL: null // Use -1 or null inline, depending on var type }; -},{}],34:[function(require,module,exports){ +},{}],37:[function(require,module,exports){ +'use strict'; + +// Note: we can't get significant speed boost here. +// So write code to minimize size - no pregenerated tables +// and array tools dependencies. + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +// Use ordinary array, since untyped makes no boost here +function makeTable() { + var c, table = []; + + for (var n = 0; n < 256; n++) { + c = n; + for (var k = 0; k < 8; k++) { + c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1)); + } + table[n] = c; + } + + return table; +} + +// Create table on load. Just 255 signed longs. Not a problem. +var crcTable = makeTable(); + + +function crc32(crc, buf, len, pos) { + var t = crcTable, + end = pos + len; + + crc ^= -1; + + for (var i = pos; i < end; i++) { + crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF]; + } + + return (crc ^ (-1)); // >>> 0; +} + + +module.exports = crc32; + +},{}],38:[function(require,module,exports){ 'use strict'; // (C) 1995-2013 Jean-loup Gailly and Mark Adler @@ -11805,1888 +10464,2208 @@ module.exports = function inflate_fast(strm, start) { // misrepresented as being the original software. // 3. This notice may not be removed or altered from any source distribution. -var utils = require('../utils/common'); -var adler32 = require('./adler32'); -var crc32 = require('./crc32'); -var inflate_fast = require('./inffast'); -var inflate_table = require('./inftrees'); +var utils = require('../utils/common'); +var trees = require('./trees'); +var adler32 = require('./adler32'); +var crc32 = require('./crc32'); +var msg = require('./messages'); + +/* Public constants ==========================================================*/ +/* ===========================================================================*/ + + +/* Allowed flush values; see deflate() and inflate() below for details */ +var Z_NO_FLUSH = 0; +var Z_PARTIAL_FLUSH = 1; +//var Z_SYNC_FLUSH = 2; +var Z_FULL_FLUSH = 3; +var Z_FINISH = 4; +var Z_BLOCK = 5; +//var Z_TREES = 6; + + +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ +var Z_OK = 0; +var Z_STREAM_END = 1; +//var Z_NEED_DICT = 2; +//var Z_ERRNO = -1; +var Z_STREAM_ERROR = -2; +var Z_DATA_ERROR = -3; +//var Z_MEM_ERROR = -4; +var Z_BUF_ERROR = -5; +//var Z_VERSION_ERROR = -6; + + +/* compression levels */ +//var Z_NO_COMPRESSION = 0; +//var Z_BEST_SPEED = 1; +//var Z_BEST_COMPRESSION = 9; +var Z_DEFAULT_COMPRESSION = -1; + + +var Z_FILTERED = 1; +var Z_HUFFMAN_ONLY = 2; +var Z_RLE = 3; +var Z_FIXED = 4; +var Z_DEFAULT_STRATEGY = 0; + +/* Possible values of the data_type field (though see inflate()) */ +//var Z_BINARY = 0; +//var Z_TEXT = 1; +//var Z_ASCII = 1; // = Z_TEXT +var Z_UNKNOWN = 2; + + +/* The deflate compression method */ +var Z_DEFLATED = 8; + +/*============================================================================*/ + + +var MAX_MEM_LEVEL = 9; +/* Maximum value for memLevel in deflateInit2 */ +var MAX_WBITS = 15; +/* 32K LZ77 window */ +var DEF_MEM_LEVEL = 8; + + +var LENGTH_CODES = 29; +/* number of length codes, not counting the special END_BLOCK code */ +var LITERALS = 256; +/* number of literal bytes 0..255 */ +var L_CODES = LITERALS + 1 + LENGTH_CODES; +/* number of Literal or Length codes, including the END_BLOCK code */ +var D_CODES = 30; +/* number of distance codes */ +var BL_CODES = 19; +/* number of codes used to transfer the bit lengths */ +var HEAP_SIZE = 2 * L_CODES + 1; +/* maximum heap size */ +var MAX_BITS = 15; +/* All codes must not exceed MAX_BITS bits */ + +var MIN_MATCH = 3; +var MAX_MATCH = 258; +var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1); + +var PRESET_DICT = 0x20; + +var INIT_STATE = 42; +var EXTRA_STATE = 69; +var NAME_STATE = 73; +var COMMENT_STATE = 91; +var HCRC_STATE = 103; +var BUSY_STATE = 113; +var FINISH_STATE = 666; + +var BS_NEED_MORE = 1; /* block not completed, need more input or more output */ +var BS_BLOCK_DONE = 2; /* block flush performed */ +var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */ +var BS_FINISH_DONE = 4; /* finish done, accept no more input or output */ + +var OS_CODE = 0x03; // Unix :) . Don't detect, use this default. + +function err(strm, errorCode) { + strm.msg = msg[errorCode]; + return errorCode; +} + +function rank(f) { + return ((f) << 1) - ((f) > 4 ? 9 : 0); +} + +function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } } + + +/* ========================================================================= + * Flush as much pending output as possible. All deflate() output goes + * through this function so some applications may wish to modify it + * to avoid allocating a large strm->output buffer and copying into it. + * (See also read_buf()). + */ +function flush_pending(strm) { + var s = strm.state; + + //_tr_flush_bits(s); + var len = s.pending; + if (len > strm.avail_out) { + len = strm.avail_out; + } + if (len === 0) { return; } + + utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out); + strm.next_out += len; + s.pending_out += len; + strm.total_out += len; + strm.avail_out -= len; + s.pending -= len; + if (s.pending === 0) { + s.pending_out = 0; + } +} + -var CODES = 0; -var LENS = 1; -var DISTS = 2; +function flush_block_only(s, last) { + trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last); + s.block_start = s.strstart; + flush_pending(s.strm); +} -/* Public constants ==========================================================*/ -/* ===========================================================================*/ +function put_byte(s, b) { + s.pending_buf[s.pending++] = b; +} -/* Allowed flush values; see deflate() and inflate() below for details */ -//var Z_NO_FLUSH = 0; -//var Z_PARTIAL_FLUSH = 1; -//var Z_SYNC_FLUSH = 2; -//var Z_FULL_FLUSH = 3; -var Z_FINISH = 4; -var Z_BLOCK = 5; -var Z_TREES = 6; + +/* ========================================================================= + * Put a short in the pending buffer. The 16-bit value is put in MSB order. + * IN assertion: the stream state is correct and there is enough room in + * pending_buf. + */ +function putShortMSB(s, b) { +// put_byte(s, (Byte)(b >> 8)); +// put_byte(s, (Byte)(b & 0xff)); + s.pending_buf[s.pending++] = (b >>> 8) & 0xff; + s.pending_buf[s.pending++] = b & 0xff; +} -/* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. +/* =========================================================================== + * Read a new buffer from the current input stream, update the adler32 + * and total number of bytes read. All deflate() input goes through + * this function so some applications may wish to modify it to avoid + * allocating a large strm->input buffer and copying from it. + * (See also flush_pending()). */ -var Z_OK = 0; -var Z_STREAM_END = 1; -var Z_NEED_DICT = 2; -//var Z_ERRNO = -1; -var Z_STREAM_ERROR = -2; -var Z_DATA_ERROR = -3; -var Z_MEM_ERROR = -4; -var Z_BUF_ERROR = -5; -//var Z_VERSION_ERROR = -6; +function read_buf(strm, buf, start, size) { + var len = strm.avail_in; -/* The deflate compression method */ -var Z_DEFLATED = 8; + if (len > size) { len = size; } + if (len === 0) { return 0; } + strm.avail_in -= len; -/* STATES ====================================================================*/ -/* ===========================================================================*/ + // zmemcpy(buf, strm->next_in, len); + utils.arraySet(buf, strm.input, strm.next_in, len, start); + if (strm.state.wrap === 1) { + strm.adler = adler32(strm.adler, buf, len, start); + } + else if (strm.state.wrap === 2) { + strm.adler = crc32(strm.adler, buf, len, start); + } -var HEAD = 1; /* i: waiting for magic header */ -var FLAGS = 2; /* i: waiting for method and flags (gzip) */ -var TIME = 3; /* i: waiting for modification time (gzip) */ -var OS = 4; /* i: waiting for extra flags and operating system (gzip) */ -var EXLEN = 5; /* i: waiting for extra length (gzip) */ -var EXTRA = 6; /* i: waiting for extra bytes (gzip) */ -var NAME = 7; /* i: waiting for end of file name (gzip) */ -var COMMENT = 8; /* i: waiting for end of comment (gzip) */ -var HCRC = 9; /* i: waiting for header crc (gzip) */ -var DICTID = 10; /* i: waiting for dictionary check value */ -var DICT = 11; /* waiting for inflateSetDictionary() call */ -var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ -var TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */ -var STORED = 14; /* i: waiting for stored size (length and complement) */ -var COPY_ = 15; /* i/o: same as COPY below, but only first time in */ -var COPY = 16; /* i/o: waiting for input or output to copy stored block */ -var TABLE = 17; /* i: waiting for dynamic block table lengths */ -var LENLENS = 18; /* i: waiting for code length code lengths */ -var CODELENS = 19; /* i: waiting for length/lit and distance code lengths */ -var LEN_ = 20; /* i: same as LEN below, but only first time in */ -var LEN = 21; /* i: waiting for length/lit/eob code */ -var LENEXT = 22; /* i: waiting for length extra bits */ -var DIST = 23; /* i: waiting for distance code */ -var DISTEXT = 24; /* i: waiting for distance extra bits */ -var MATCH = 25; /* o: waiting for output space to copy string */ -var LIT = 26; /* o: waiting for output space to write literal */ -var CHECK = 27; /* i: waiting for 32-bit check value */ -var LENGTH = 28; /* i: waiting for 32-bit length (gzip) */ -var DONE = 29; /* finished check, done -- remain here until reset */ -var BAD = 30; /* got a data error -- remain here until reset */ -var MEM = 31; /* got an inflate() memory error -- remain here until reset */ -var SYNC = 32; /* looking for synchronization bytes to restart inflate() */ + strm.next_in += len; + strm.total_in += len; -/* ===========================================================================*/ + return len; +} +/* =========================================================================== + * Set match_start to the longest match starting at the given string and + * return its length. Matches shorter or equal to prev_length are discarded, + * in which case the result is equal to prev_length and match_start is + * garbage. + * IN assertions: cur_match is the head of the hash chain for the current + * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 + * OUT assertion: the match length is not greater than s->lookahead. + */ +function longest_match(s, cur_match) { + var chain_length = s.max_chain_length; /* max hash chain length */ + var scan = s.strstart; /* current string */ + var match; /* matched string */ + var len; /* length of current match */ + var best_len = s.prev_length; /* best match length so far */ + var nice_match = s.nice_match; /* stop if match long enough */ + var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ? + s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/; -var ENOUGH_LENS = 852; -var ENOUGH_DISTS = 592; -//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); + var _win = s.window; // shortcut -var MAX_WBITS = 15; -/* 32K LZ77 window */ -var DEF_WBITS = MAX_WBITS; + var wmask = s.w_mask; + var prev = s.prev; + /* Stop when cur_match becomes <= limit. To simplify the code, + * we prevent matches with the string of window index 0. + */ -function zswap32(q) { - return (((q >>> 24) & 0xff) + - ((q >>> 8) & 0xff00) + - ((q & 0xff00) << 8) + - ((q & 0xff) << 24)); -} + var strend = s.strstart + MAX_MATCH; + var scan_end1 = _win[scan + best_len - 1]; + var scan_end = _win[scan + best_len]; + /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. + * It is easy to get rid of this optimization if necessary. + */ + // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); -function InflateState() { - this.mode = 0; /* current inflate mode */ - this.last = false; /* true if processing last block */ - this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ - this.havedict = false; /* true if dictionary provided */ - this.flags = 0; /* gzip header method and flags (0 if zlib) */ - this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */ - this.check = 0; /* protected copy of check value */ - this.total = 0; /* protected copy of output count */ - // TODO: may be {} - this.head = null; /* where to save gzip header information */ + /* Do not waste too much time if we already have a good match: */ + if (s.prev_length >= s.good_match) { + chain_length >>= 2; + } + /* Do not look for matches beyond the end of the input. This is necessary + * to make deflate deterministic. + */ + if (nice_match > s.lookahead) { nice_match = s.lookahead; } - /* sliding window */ - this.wbits = 0; /* log base 2 of requested window size */ - this.wsize = 0; /* window size or zero if not using window */ - this.whave = 0; /* valid bytes in the window */ - this.wnext = 0; /* window write index */ - this.window = null; /* allocated sliding window, if needed */ + // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); - /* bit accumulator */ - this.hold = 0; /* input bit accumulator */ - this.bits = 0; /* number of bits in "in" */ + do { + // Assert(cur_match < s->strstart, "no future"); + match = cur_match; - /* for string and stored block copying */ - this.length = 0; /* literal or length of data to copy */ - this.offset = 0; /* distance back to copy string from */ + /* Skip to next match if the match length cannot increase + * or if the match length is less than 2. Note that the checks below + * for insufficient lookahead only occur occasionally for performance + * reasons. Therefore uninitialized memory will be accessed, and + * conditional jumps will be made that depend on those values. + * However the length of the match is limited to the lookahead, so + * the output of deflate is not affected by the uninitialized values. + */ - /* for table and code decoding */ - this.extra = 0; /* extra bits needed */ + if (_win[match + best_len] !== scan_end || + _win[match + best_len - 1] !== scan_end1 || + _win[match] !== _win[scan] || + _win[++match] !== _win[scan + 1]) { + continue; + } - /* fixed and dynamic code tables */ - this.lencode = null; /* starting table for length/literal codes */ - this.distcode = null; /* starting table for distance codes */ - this.lenbits = 0; /* index bits for lencode */ - this.distbits = 0; /* index bits for distcode */ + /* The check at best_len-1 can be removed because it will be made + * again later. (This heuristic is not always a win.) + * It is not necessary to compare scan[2] and match[2] since they + * are always equal when the other bytes match, given that + * the hash keys are equal and that HASH_BITS >= 8. + */ + scan += 2; + match++; + // Assert(*scan == *match, "match[2]?"); - /* dynamic table building */ - this.ncode = 0; /* number of code length code lengths */ - this.nlen = 0; /* number of length code lengths */ - this.ndist = 0; /* number of distance code lengths */ - this.have = 0; /* number of code lengths in lens[] */ - this.next = null; /* next available space in codes[] */ + /* We check for insufficient lookahead only every 8th comparison; + * the 256th check will be made at strstart+258. + */ + do { + /*jshint noempty:false*/ + } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + scan < strend); - this.lens = new utils.Buf16(320); /* temporary storage for code lengths */ - this.work = new utils.Buf16(288); /* work area for code table building */ + // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - /* - because we don't have pointers in js, we use lencode and distcode directly - as buffers so we don't need codes - */ - //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */ - this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */ - this.distdyn = null; /* dynamic table for distance codes (JS specific) */ - this.sane = 0; /* if false, allow invalid distance too far */ - this.back = 0; /* bits back of last unprocessed length/lit */ - this.was = 0; /* initial length of match */ -} + len = MAX_MATCH - (strend - scan); + scan = strend - MAX_MATCH; -function inflateResetKeep(strm) { - var state; + if (len > best_len) { + s.match_start = cur_match; + best_len = len; + if (len >= nice_match) { + break; + } + scan_end1 = _win[scan + best_len - 1]; + scan_end = _win[scan + best_len]; + } + } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); - if (!strm || !strm.state) { return Z_STREAM_ERROR; } - state = strm.state; - strm.total_in = strm.total_out = state.total = 0; - strm.msg = ''; /*Z_NULL*/ - if (state.wrap) { /* to support ill-conceived Java test suite */ - strm.adler = state.wrap & 1; + if (best_len <= s.lookahead) { + return best_len; } - state.mode = HEAD; - state.last = 0; - state.havedict = 0; - state.dmax = 32768; - state.head = null/*Z_NULL*/; - state.hold = 0; - state.bits = 0; - //state.lencode = state.distcode = state.next = state.codes; - state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS); - state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS); - - state.sane = 1; - state.back = -1; - //Tracev((stderr, "inflate: reset\n")); - return Z_OK; + return s.lookahead; } -function inflateReset(strm) { - var state; - if (!strm || !strm.state) { return Z_STREAM_ERROR; } - state = strm.state; - state.wsize = 0; - state.whave = 0; - state.wnext = 0; - return inflateResetKeep(strm); +/* =========================================================================== + * Fill the window when the lookahead becomes insufficient. + * Updates strstart and lookahead. + * + * IN assertion: lookahead < MIN_LOOKAHEAD + * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD + * At least one byte has been read, or avail_in == 0; reads are + * performed for at least two bytes (required for the zip translate_eol + * option -- not supported here). + */ +function fill_window(s) { + var _w_size = s.w_size; + var p, n, m, more, str; -} + //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); -function inflateReset2(strm, windowBits) { - var wrap; - var state; + do { + more = s.window_size - s.lookahead - s.strstart; - /* get the state */ - if (!strm || !strm.state) { return Z_STREAM_ERROR; } - state = strm.state; + // JS ints have 32 bit, block below not needed + /* Deal with !@#$% 64K limit: */ + //if (sizeof(int) <= 2) { + // if (more == 0 && s->strstart == 0 && s->lookahead == 0) { + // more = wsize; + // + // } else if (more == (unsigned)(-1)) { + // /* Very unlikely, but possible on 16 bit machine if + // * strstart == 0 && lookahead == 1 (input done a byte at time) + // */ + // more--; + // } + //} - /* extract wrap request from windowBits parameter */ - if (windowBits < 0) { - wrap = 0; - windowBits = -windowBits; - } - else { - wrap = (windowBits >> 4) + 1; - if (windowBits < 48) { - windowBits &= 15; - } - } - /* set number of window bits, free window if different */ - if (windowBits && (windowBits < 8 || windowBits > 15)) { - return Z_STREAM_ERROR; - } - if (state.window !== null && state.wbits !== windowBits) { - state.window = null; - } + /* If the window is almost full and there is insufficient lookahead, + * move the upper half to the lower one to make room in the upper half. + */ + if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { - /* update state and reset the rest of it */ - state.wrap = wrap; - state.wbits = windowBits; - return inflateReset(strm); -} + utils.arraySet(s.window, s.window, _w_size, _w_size, 0); + s.match_start -= _w_size; + s.strstart -= _w_size; + /* we now have strstart >= MAX_DIST */ + s.block_start -= _w_size; -function inflateInit2(strm, windowBits) { - var ret; - var state; + /* Slide the hash table (could be avoided with 32 bit values + at the expense of memory usage). We slide even when level == 0 + to keep the hash table consistent if we switch back to level > 0 + later. (Using level 0 permanently is not an optimal usage of + zlib, so we don't care about this pathological case.) + */ - if (!strm) { return Z_STREAM_ERROR; } - //strm.msg = Z_NULL; /* in case we return an error */ + n = s.hash_size; + p = n; + do { + m = s.head[--p]; + s.head[p] = (m >= _w_size ? m - _w_size : 0); + } while (--n); - state = new InflateState(); + n = _w_size; + p = n; + do { + m = s.prev[--p]; + s.prev[p] = (m >= _w_size ? m - _w_size : 0); + /* If n is not on any hash chain, prev[n] is garbage but + * its value will never be used. + */ + } while (--n); - //if (state === Z_NULL) return Z_MEM_ERROR; - //Tracev((stderr, "inflate: allocated\n")); - strm.state = state; - state.window = null/*Z_NULL*/; - ret = inflateReset2(strm, windowBits); - if (ret !== Z_OK) { - strm.state = null/*Z_NULL*/; - } - return ret; -} + more += _w_size; + } + if (s.strm.avail_in === 0) { + break; + } -function inflateInit(strm) { - return inflateInit2(strm, DEF_WBITS); -} + /* If there was no sliding: + * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && + * more == window_size - lookahead - strstart + * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) + * => more >= window_size - 2*WSIZE + 2 + * In the BIG_MEM or MMAP case (not yet supported), + * window_size == input_size + MIN_LOOKAHEAD && + * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. + * Otherwise, window_size == 2*WSIZE so more >= 2. + * If there was sliding, more >= WSIZE. So in all cases, more >= 2. + */ + //Assert(more >= 2, "more < 2"); + n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); + s.lookahead += n; + /* Initialize the hash value now that we have some input: */ + if (s.lookahead + s.insert >= MIN_MATCH) { + str = s.strstart - s.insert; + s.ins_h = s.window[str]; -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ -var virgin = true; + /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask; +//#if MIN_MATCH != 3 +// Call update_hash() MIN_MATCH-3 more times +//#endif + while (s.insert) { + /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; -var lenfix, distfix; // We have no pointers in JS, so keep tables separate + s.prev[str & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = str; + str++; + s.insert--; + if (s.lookahead + s.insert < MIN_MATCH) { + break; + } + } + } + /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, + * but this is not important since only literal bytes will be emitted. + */ -function fixedtables(state) { - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - var sym; + } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); + + /* If the WIN_INIT bytes after the end of the current data have never been + * written, then zero those bytes in order to avoid memory check reports of + * the use of uninitialized (or uninitialised as Julian writes) bytes by + * the longest match routines. Update the high water mark for the next + * time through here. WIN_INIT is set to MAX_MATCH since the longest match + * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. + */ +// if (s.high_water < s.window_size) { +// var curr = s.strstart + s.lookahead; +// var init = 0; +// +// if (s.high_water < curr) { +// /* Previous high water mark below current data -- zero WIN_INIT +// * bytes or up to end of window, whichever is less. +// */ +// init = s.window_size - curr; +// if (init > WIN_INIT) +// init = WIN_INIT; +// zmemzero(s->window + curr, (unsigned)init); +// s->high_water = curr + init; +// } +// else if (s->high_water < (ulg)curr + WIN_INIT) { +// /* High water mark at or above current data, but below current data +// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up +// * to end of window, whichever is less. +// */ +// init = (ulg)curr + WIN_INIT - s->high_water; +// if (init > s->window_size - s->high_water) +// init = s->window_size - s->high_water; +// zmemzero(s->window + s->high_water, (unsigned)init); +// s->high_water += init; +// } +// } +// +// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, +// "not enough room for search"); +} + +/* =========================================================================== + * Copy without compression as much as possible from the input stream, return + * the current block state. + * This function does not insert new strings in the dictionary since + * uncompressible data is probably not useful. This function is used + * only for the level=0 compression option. + * NOTE: this function should be optimized to avoid extra copying from + * window to pending_buf. + */ +function deflate_stored(s, flush) { + /* Stored blocks are limited to 0xffff bytes, pending_buf is limited + * to pending_buf_size, and each stored block has a 5 byte header: + */ + var max_block_size = 0xffff; - lenfix = new utils.Buf32(512); - distfix = new utils.Buf32(32); + if (max_block_size > s.pending_buf_size - 5) { + max_block_size = s.pending_buf_size - 5; + } - /* literal/length table */ - sym = 0; - while (sym < 144) { state.lens[sym++] = 8; } - while (sym < 256) { state.lens[sym++] = 9; } - while (sym < 280) { state.lens[sym++] = 7; } - while (sym < 288) { state.lens[sym++] = 8; } + /* Copy as much as possible from input to output: */ + for (;;) { + /* Fill the window as much as possible: */ + if (s.lookahead <= 1) { - inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 }); + //Assert(s->strstart < s->w_size+MAX_DIST(s) || + // s->block_start >= (long)s->w_size, "slide too late"); +// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) || +// s.block_start >= s.w_size)) { +// throw new Error("slide too late"); +// } - /* distance table */ - sym = 0; - while (sym < 32) { state.lens[sym++] = 5; } + fill_window(s); + if (s.lookahead === 0 && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } - inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 }); + if (s.lookahead === 0) { + break; + } + /* flush the current block */ + } + //Assert(s->block_start >= 0L, "block gone"); +// if (s.block_start < 0) throw new Error("block gone"); - /* do this just once */ - virgin = false; - } + s.strstart += s.lookahead; + s.lookahead = 0; - state.lencode = lenfix; - state.lenbits = 9; - state.distcode = distfix; - state.distbits = 5; -} + /* Emit a stored block if pending_buf will be full: */ + var max_start = s.block_start + max_block_size; + if (s.strstart === 0 || s.strstart >= max_start) { + /* strstart == 0 is possible when wraparound on 16-bit machine */ + s.lookahead = s.strstart - max_start; + s.strstart = max_start; + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ -/* - Update the window with the last wsize (normally 32K) bytes written before - returning. If window does not exist yet, create it. This is only called - when a window is already in use, or when output has been written during this - inflate call, but the end of the deflate stream has not been reached yet. - It is also called to create a window for dictionary data when a dictionary - is loaded. - Providing output buffers larger than 32K to inflate() should provide a speed - advantage, since only the last 32K of output is copied to the sliding window - upon return from inflate(), and since all distances after the first 32K of - output will fall in the output data, making match copies simpler and faster. - The advantage may be dependent on the size of the processor's data caches. - */ -function updatewindow(strm, src, end, copy) { - var dist; - var state = strm.state; + } + /* Flush if we may have to slide, otherwise block_start may become + * negative and the data will be gone: + */ + if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } - /* if it hasn't been done already, allocate space for the window */ - if (state.window === null) { - state.wsize = 1 << state.wbits; - state.wnext = 0; - state.whave = 0; + s.insert = 0; - state.window = new utils.Buf8(state.wsize); + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; } - /* copy state->wsize or less output bytes into the circular window */ - if (copy >= state.wsize) { - utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0); - state.wnext = 0; - state.whave = state.wsize; - } - else { - dist = state.wsize - state.wnext; - if (dist > copy) { - dist = copy; - } - //zmemcpy(state->window + state->wnext, end - copy, dist); - utils.arraySet(state.window, src, end - copy, dist, state.wnext); - copy -= dist; - if (copy) { - //zmemcpy(state->window, end - copy, copy); - utils.arraySet(state.window, src, end - copy, copy, 0); - state.wnext = copy; - state.whave = state.wsize; - } - else { - state.wnext += dist; - if (state.wnext === state.wsize) { state.wnext = 0; } - if (state.whave < state.wsize) { state.whave += dist; } + if (s.strstart > s.block_start) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; } + /***/ } - return 0; -} - -function inflate(strm, flush) { - var state; - var input, output; // input/output buffers - var next; /* next input INDEX */ - var put; /* next output INDEX */ - var have, left; /* available input and output */ - var hold; /* bit buffer */ - var bits; /* bits in bit buffer */ - var _in, _out; /* save starting available input and output */ - var copy; /* number of stored or match bytes to copy */ - var from; /* where to copy match bytes from */ - var from_source; - var here = 0; /* current decoding table entry */ - var here_bits, here_op, here_val; // paked "here" denormalized (JS specific) - //var last; /* parent table entry */ - var last_bits, last_op, last_val; // paked "last" denormalized (JS specific) - var len; /* length to copy for repeats, bits to drop */ - var ret; /* return code */ - var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */ - var opts; - var n; // temporary var for NEED_BITS + return BS_NEED_MORE; +} - var order = /* permutation of code lengths */ - [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; +/* =========================================================================== + * Compress as much as possible from the input stream, return the current + * block state. + * This function does not perform lazy evaluation of matches and inserts + * new strings in the dictionary only for unmatched strings or for short + * matches. It is used only for the fast compression options. + */ +function deflate_fast(s, flush) { + var hash_head; /* head of the hash chain */ + var bflush; /* set if current block must be flushed */ + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { + break; /* flush the current block */ + } + } - if (!strm || !strm.state || !strm.output || - (!strm.input && strm.avail_in !== 0)) { - return Z_STREAM_ERROR; - } + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } - state = strm.state; - if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */ + /* Find the longest match, discarding those <= prev_length. + * At this point we have always match_length < MIN_MATCH + */ + if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ + } + if (s.match_length >= MIN_MATCH) { + // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only + /*** _tr_tally_dist(s, s.strstart - s.match_start, + s.match_length - MIN_MATCH, bflush); ***/ + bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); - //--- LOAD() --- - put = strm.next_out; - output = strm.output; - left = strm.avail_out; - next = strm.next_in; - input = strm.input; - have = strm.avail_in; - hold = state.hold; - bits = state.bits; - //--- + s.lookahead -= s.match_length; - _in = have; - _out = left; - ret = Z_OK; + /* Insert new strings in the hash table only if the match length + * is not too large. This saves time but degrades compression. + */ + if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) { + s.match_length--; /* string at strstart already in table */ + do { + s.strstart++; + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + /* strstart never exceeds WSIZE-MAX_MATCH, so there are + * always MIN_MATCH bytes ahead. + */ + } while (--s.match_length !== 0); + s.strstart++; + } else + { + s.strstart += s.match_length; + s.match_length = 0; + s.ins_h = s.window[s.strstart]; + /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask; - inf_leave: // goto emulation - for (;;) { - switch (state.mode) { - case HEAD: - if (state.wrap === 0) { - state.mode = TYPEDO; - break; - } - //=== NEEDBITS(16); - while (bits < 16) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */ - state.check = 0/*crc32(0L, Z_NULL, 0)*/; - //=== CRC2(state.check, hold); - hbuf[0] = hold & 0xff; - hbuf[1] = (hold >>> 8) & 0xff; - state.check = crc32(state.check, hbuf, 2, 0); - //===// +//#if MIN_MATCH != 3 +// Call UPDATE_HASH() MIN_MATCH-3 more times +//#endif + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ + } + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s.window[s.strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = FLAGS; - break; - } - state.flags = 0; /* expect zlib header */ - if (state.head) { - state.head.done = false; - } - if (!(state.wrap & 1) || /* check if zlib header allowed */ - (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) { - strm.msg = 'incorrect header check'; - state.mode = BAD; - break; - } - if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) { - strm.msg = 'unknown compression method'; - state.mode = BAD; - break; - } - //--- DROPBITS(4) ---// - hold >>>= 4; - bits -= 4; - //---// - len = (hold & 0x0f)/*BITS(4)*/ + 8; - if (state.wbits === 0) { - state.wbits = len; - } - else if (len > state.wbits) { - strm.msg = 'invalid window size'; - state.mode = BAD; - break; - } - state.dmax = 1 << len; - //Tracev((stderr, "inflate: zlib header ok\n")); - strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; - state.mode = hold & 0x200 ? DICTID : TYPE; - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - break; - case FLAGS: - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.flags = hold; - if ((state.flags & 0xff) !== Z_DEFLATED) { - strm.msg = 'unknown compression method'; - state.mode = BAD; - break; - } - if (state.flags & 0xe000) { - strm.msg = 'unknown header flags set'; - state.mode = BAD; - break; - } - if (state.head) { - state.head.text = ((hold >> 8) & 1); - } - if (state.flags & 0x0200) { - //=== CRC2(state.check, hold); - hbuf[0] = hold & 0xff; - hbuf[1] = (hold >>> 8) & 0xff; - state.check = crc32(state.check, hbuf, 2, 0); - //===// - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = TIME; - /* falls through */ - case TIME: - //=== NEEDBITS(32); */ - while (bits < 32) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - if (state.head) { - state.head.time = hold; - } - if (state.flags & 0x0200) { - //=== CRC4(state.check, hold) - hbuf[0] = hold & 0xff; - hbuf[1] = (hold >>> 8) & 0xff; - hbuf[2] = (hold >>> 16) & 0xff; - hbuf[3] = (hold >>> 24) & 0xff; - state.check = crc32(state.check, hbuf, 4, 0); - //=== - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = OS; - /* falls through */ - case OS: - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - if (state.head) { - state.head.xflags = (hold & 0xff); - state.head.os = (hold >> 8); - } - if (state.flags & 0x0200) { - //=== CRC2(state.check, hold); - hbuf[0] = hold & 0xff; - hbuf[1] = (hold >>> 8) & 0xff; - state.check = crc32(state.check, hbuf, 2, 0); - //===// - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = EXLEN; - /* falls through */ - case EXLEN: - if (state.flags & 0x0400) { - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.length = hold; - if (state.head) { - state.head.extra_len = hold; - } - if (state.flags & 0x0200) { - //=== CRC2(state.check, hold); - hbuf[0] = hold & 0xff; - hbuf[1] = (hold >>> 8) & 0xff; - state.check = crc32(state.check, hbuf, 2, 0); - //===// - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - } - else if (state.head) { - state.head.extra = null/*Z_NULL*/; - } - state.mode = EXTRA; - /* falls through */ - case EXTRA: - if (state.flags & 0x0400) { - copy = state.length; - if (copy > have) { copy = have; } - if (copy) { - if (state.head) { - len = state.head.extra_len - state.length; - if (!state.head.extra) { - // Use untyped array for more convenient processing later - state.head.extra = new Array(state.head.extra_len); - } - utils.arraySet( - state.head.extra, - input, - next, - // extra field is limited to 65536 bytes - // - no need for additional size check - copy, - /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ - len - ); - //zmemcpy(state.head.extra + len, next, - // len + copy > state.head.extra_max ? - // state.head.extra_max - len : copy); - } - if (state.flags & 0x0200) { - state.check = crc32(state.check, input, copy, next); - } - have -= copy; - next += copy; - state.length -= copy; - } - if (state.length) { break inf_leave; } - } - state.length = 0; - state.mode = NAME; - /* falls through */ - case NAME: - if (state.flags & 0x0800) { - if (have === 0) { break inf_leave; } - copy = 0; - do { - // TODO: 2 or 1 bytes? - len = input[next + copy++]; - /* use constant limit because in js we should not preallocate memory */ - if (state.head && len && - (state.length < 65536 /*state.head.name_max*/)) { - state.head.name += String.fromCharCode(len); - } - } while (len && copy < have); + s.lookahead--; + s.strstart++; + } + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1); + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} - if (state.flags & 0x0200) { - state.check = crc32(state.check, input, copy, next); - } - have -= copy; - next += copy; - if (len) { break inf_leave; } - } - else if (state.head) { - state.head.name = null; - } - state.length = 0; - state.mode = COMMENT; - /* falls through */ - case COMMENT: - if (state.flags & 0x1000) { - if (have === 0) { break inf_leave; } - copy = 0; - do { - len = input[next + copy++]; - /* use constant limit because in js we should not preallocate memory */ - if (state.head && len && - (state.length < 65536 /*state.head.comm_max*/)) { - state.head.comment += String.fromCharCode(len); - } - } while (len && copy < have); - if (state.flags & 0x0200) { - state.check = crc32(state.check, input, copy, next); - } - have -= copy; - next += copy; - if (len) { break inf_leave; } - } - else if (state.head) { - state.head.comment = null; - } - state.mode = HCRC; - /* falls through */ - case HCRC: - if (state.flags & 0x0200) { - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - if (hold !== (state.check & 0xffff)) { - strm.msg = 'header crc mismatch'; - state.mode = BAD; - break; - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - } - if (state.head) { - state.head.hcrc = ((state.flags >> 9) & 1); - state.head.done = true; - } - strm.adler = state.check = 0; - state.mode = TYPE; - break; - case DICTID: - //=== NEEDBITS(32); */ - while (bits < 32) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - strm.adler = state.check = zswap32(hold); - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = DICT; - /* falls through */ - case DICT: - if (state.havedict === 0) { - //--- RESTORE() --- - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - //--- - return Z_NEED_DICT; - } - strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; - state.mode = TYPE; - /* falls through */ - case TYPE: - if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; } - /* falls through */ - case TYPEDO: - if (state.last) { - //--- BYTEBITS() ---// - hold >>>= bits & 7; - bits -= bits & 7; - //---// - state.mode = CHECK; - break; - } - //=== NEEDBITS(3); */ - while (bits < 3) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.last = (hold & 0x01)/*BITS(1)*/; - //--- DROPBITS(1) ---// - hold >>>= 1; - bits -= 1; - //---// +/* =========================================================================== + * Same as above, but achieves better compression. We use a lazy + * evaluation for matches: a match is finally adopted only if there is + * no better match at the next window position. + */ +function deflate_slow(s, flush) { + var hash_head; /* head of hash chain */ + var bflush; /* set if current block must be flushed */ - switch ((hold & 0x03)/*BITS(2)*/) { - case 0: /* stored block */ - //Tracev((stderr, "inflate: stored block%s\n", - // state.last ? " (last)" : "")); - state.mode = STORED; - break; - case 1: /* fixed block */ - fixedtables(state); - //Tracev((stderr, "inflate: fixed codes block%s\n", - // state.last ? " (last)" : "")); - state.mode = LEN_; /* decode codes */ - if (flush === Z_TREES) { - //--- DROPBITS(2) ---// - hold >>>= 2; - bits -= 2; - //---// - break inf_leave; - } - break; - case 2: /* dynamic block */ - //Tracev((stderr, "inflate: dynamic codes block%s\n", - // state.last ? " (last)" : "")); - state.mode = TABLE; - break; - case 3: - strm.msg = 'invalid block type'; - state.mode = BAD; - } - //--- DROPBITS(2) ---// - hold >>>= 2; - bits -= 2; - //---// - break; - case STORED: - //--- BYTEBITS() ---// /* go to byte boundary */ - hold >>>= bits & 7; - bits -= bits & 7; - //---// - //=== NEEDBITS(32); */ - while (bits < 32) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) { - strm.msg = 'invalid stored block lengths'; - state.mode = BAD; - break; - } - state.length = hold & 0xffff; - //Tracev((stderr, "inflate: stored length %u\n", - // state.length)); - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = COPY_; - if (flush === Z_TREES) { break inf_leave; } - /* falls through */ - case COPY_: - state.mode = COPY; - /* falls through */ - case COPY: - copy = state.length; - if (copy) { - if (copy > have) { copy = have; } - if (copy > left) { copy = left; } - if (copy === 0) { break inf_leave; } - //--- zmemcpy(put, next, copy); --- - utils.arraySet(output, input, next, copy, put); - //---// - have -= copy; - next += copy; - left -= copy; - put += copy; - state.length -= copy; - break; - } - //Tracev((stderr, "inflate: stored end\n")); - state.mode = TYPE; - break; - case TABLE: - //=== NEEDBITS(14); */ - while (bits < 14) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; + var max_insert; + + /* Process the input block. */ + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { break; } /* flush the current block */ + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + + /* Find the longest match, discarding those <= prev_length. + */ + s.prev_length = s.match_length; + s.prev_match = s.match_start; + s.match_length = MIN_MATCH - 1; + + if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match && + s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ + + if (s.match_length <= 5 && + (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) { + + /* If prev_match is also MIN_MATCH, match_start is garbage + * but we will ignore the current match anyway. + */ + s.match_length = MIN_MATCH - 1; + } + } + /* If there was a match at the previous step and the current + * match is not better, output the previous match: + */ + if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { + max_insert = s.strstart + s.lookahead - MIN_MATCH; + /* Do not insert strings in hash table beyond this. */ + + //check_match(s, s.strstart-1, s.prev_match, s.prev_length); + + /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match, + s.prev_length - MIN_MATCH, bflush);***/ + bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); + /* Insert in hash table all strings up to the end of the match. + * strstart-1 and strstart are already inserted. If there is not + * enough lookahead, the last two strings are not inserted in + * the hash table. + */ + s.lookahead -= s.prev_length - 1; + s.prev_length -= 2; + do { + if (++s.strstart <= max_insert) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ } - //===// - state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257; - //--- DROPBITS(5) ---// - hold >>>= 5; - bits -= 5; - //---// - state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1; - //--- DROPBITS(5) ---// - hold >>>= 5; - bits -= 5; - //---// - state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4; - //--- DROPBITS(4) ---// - hold >>>= 4; - bits -= 4; - //---// -//#ifndef PKZIP_BUG_WORKAROUND - if (state.nlen > 286 || state.ndist > 30) { - strm.msg = 'too many length or distance symbols'; - state.mode = BAD; - break; + } while (--s.prev_length !== 0); + s.match_available = 0; + s.match_length = MIN_MATCH - 1; + s.strstart++; + + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; } -//#endif - //Tracev((stderr, "inflate: table sizes ok\n")); - state.have = 0; - state.mode = LENLENS; - /* falls through */ - case LENLENS: - while (state.have < state.ncode) { - //=== NEEDBITS(3); - while (bits < 3) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.lens[order[state.have++]] = (hold & 0x07);//BITS(3); - //--- DROPBITS(3) ---// - hold >>>= 3; - bits -= 3; - //---// + /***/ + } + + } else if (s.match_available) { + /* If there was no match at the previous position, output a + * single literal. If there was a match but the current match + * is longer, truncate the previous match to a single literal. + */ + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); + + if (bflush) { + /*** FLUSH_BLOCK_ONLY(s, 0) ***/ + flush_block_only(s, false); + /***/ + } + s.strstart++; + s.lookahead--; + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } else { + /* There is no previous match to compare with, wait for + * the next step to decide. + */ + s.match_available = 1; + s.strstart++; + s.lookahead--; + } + } + //Assert (flush != Z_NO_FLUSH, "no flush?"); + if (s.match_available) { + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); + + s.match_available = 0; + } + s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + return BS_BLOCK_DONE; +} + + +/* =========================================================================== + * For Z_RLE, simply look for runs of bytes, generate matches only of distance + * one. Do not maintain a hash table. (It will be regenerated if this run of + * deflate switches away from Z_RLE.) + */ +function deflate_rle(s, flush) { + var bflush; /* set if current block must be flushed */ + var prev; /* byte at distance one to match */ + var scan, strend; /* scan goes up to strend for length of run */ + + var _win = s.window; + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the longest run, plus one for the unrolled loop. + */ + if (s.lookahead <= MAX_MATCH) { + fill_window(s); + if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { break; } /* flush the current block */ + } + + /* See how many times the previous byte repeats */ + s.match_length = 0; + if (s.lookahead >= MIN_MATCH && s.strstart > 0) { + scan = s.strstart - 1; + prev = _win[scan]; + if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { + strend = s.strstart + MAX_MATCH; + do { + /*jshint noempty:false*/ + } while (prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + scan < strend); + s.match_length = MAX_MATCH - (strend - scan); + if (s.match_length > s.lookahead) { + s.match_length = s.lookahead; } - while (state.have < 19) { - state.lens[order[state.have++]] = 0; + } + //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); + } + + /* Emit match if have run of MIN_MATCH or longer, else emit literal */ + if (s.match_length >= MIN_MATCH) { + //check_match(s, s.strstart, s.strstart - 1, s.match_length); + + /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/ + bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH); + + s.lookahead -= s.match_length; + s.strstart += s.match_length; + s.match_length = 0; + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + + s.lookahead--; + s.strstart++; + } + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = 0; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} + +/* =========================================================================== + * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. + * (It will be regenerated if this run of deflate switches away from Huffman.) + */ +function deflate_huff(s, flush) { + var bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we have a literal to write. */ + if (s.lookahead === 0) { + fill_window(s); + if (s.lookahead === 0) { + if (flush === Z_NO_FLUSH) { + return BS_NEED_MORE; } - // We have separate tables & no pointers. 2 commented lines below not needed. - //state.next = state.codes; - //state.lencode = state.next; - // Switch to use dynamic table - state.lencode = state.lendyn; - state.lenbits = 7; + break; /* flush the current block */ + } + } + + /* Output a literal byte */ + s.match_length = 0; + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + s.lookahead--; + s.strstart++; + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = 0; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} + +/* Values for max_lazy_match, good_match and max_chain_length, depending on + * the desired pack level (0..9). The values given below have been tuned to + * exclude worst case performance for pathological files. Better values may be + * found for specific files. + */ +function Config(good_length, max_lazy, nice_length, max_chain, func) { + this.good_length = good_length; + this.max_lazy = max_lazy; + this.nice_length = nice_length; + this.max_chain = max_chain; + this.func = func; +} + +var configuration_table; + +configuration_table = [ + /* good lazy nice chain */ + new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */ + new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */ + new Config(4, 5, 16, 8, deflate_fast), /* 2 */ + new Config(4, 6, 32, 32, deflate_fast), /* 3 */ + + new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */ + new Config(8, 16, 32, 32, deflate_slow), /* 5 */ + new Config(8, 16, 128, 128, deflate_slow), /* 6 */ + new Config(8, 32, 128, 256, deflate_slow), /* 7 */ + new Config(32, 128, 258, 1024, deflate_slow), /* 8 */ + new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */ +]; + + +/* =========================================================================== + * Initialize the "longest match" routines for a new zlib stream + */ +function lm_init(s) { + s.window_size = 2 * s.w_size; + + /*** CLEAR_HASH(s); ***/ + zero(s.head); // Fill with NIL (= 0); + + /* Set the default configuration parameters: + */ + s.max_lazy_match = configuration_table[s.level].max_lazy; + s.good_match = configuration_table[s.level].good_length; + s.nice_match = configuration_table[s.level].nice_length; + s.max_chain_length = configuration_table[s.level].max_chain; + + s.strstart = 0; + s.block_start = 0; + s.lookahead = 0; + s.insert = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + s.ins_h = 0; +} + + +function DeflateState() { + this.strm = null; /* pointer back to this zlib stream */ + this.status = 0; /* as the name implies */ + this.pending_buf = null; /* output still pending */ + this.pending_buf_size = 0; /* size of pending_buf */ + this.pending_out = 0; /* next pending byte to output to the stream */ + this.pending = 0; /* nb of bytes in the pending buffer */ + this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ + this.gzhead = null; /* gzip header information to write */ + this.gzindex = 0; /* where in extra, name, or comment */ + this.method = Z_DEFLATED; /* can only be DEFLATED */ + this.last_flush = -1; /* value of flush param for previous deflate call */ + + this.w_size = 0; /* LZ77 window size (32K by default) */ + this.w_bits = 0; /* log2(w_size) (8..16) */ + this.w_mask = 0; /* w_size - 1 */ + + this.window = null; + /* Sliding window. Input bytes are read into the second half of the window, + * and move to the first half later to keep a dictionary of at least wSize + * bytes. With this organization, matches are limited to a distance of + * wSize-MAX_MATCH bytes, but this ensures that IO is always + * performed with a length multiple of the block size. + */ + + this.window_size = 0; + /* Actual size of window: 2*wSize, except when the user input buffer + * is directly used as sliding window. + */ + + this.prev = null; + /* Link to older string with same hash index. To limit the size of this + * array to 64K, this link is maintained only for the last 32K strings. + * An index in this array is thus a window index modulo 32K. + */ + + this.head = null; /* Heads of the hash chains or NIL. */ + + this.ins_h = 0; /* hash index of string to be inserted */ + this.hash_size = 0; /* number of elements in hash table */ + this.hash_bits = 0; /* log2(hash_size) */ + this.hash_mask = 0; /* hash_size-1 */ + + this.hash_shift = 0; + /* Number of bits by which ins_h must be shifted at each input + * step. It must be such that after MIN_MATCH steps, the oldest + * byte no longer takes part in the hash key, that is: + * hash_shift * MIN_MATCH >= hash_bits + */ + + this.block_start = 0; + /* Window position at the beginning of the current output block. Gets + * negative when the window is moved backwards. + */ + + this.match_length = 0; /* length of best match */ + this.prev_match = 0; /* previous match */ + this.match_available = 0; /* set if previous match exists */ + this.strstart = 0; /* start of string to insert */ + this.match_start = 0; /* start of matching string */ + this.lookahead = 0; /* number of valid bytes ahead in window */ + + this.prev_length = 0; + /* Length of the best match at previous step. Matches not greater than this + * are discarded. This is used in the lazy match evaluation. + */ + + this.max_chain_length = 0; + /* To speed up deflation, hash chains are never searched beyond this + * length. A higher limit improves compression ratio but degrades the + * speed. + */ + + this.max_lazy_match = 0; + /* Attempt to find a better match only when the current match is strictly + * smaller than this value. This mechanism is used only for compression + * levels >= 4. + */ + // That's alias to max_lazy_match, don't use directly + //this.max_insert_length = 0; + /* Insert new strings in the hash table only if the match length is not + * greater than this length. This saves time but degrades compression. + * max_insert_length is used only for compression levels <= 3. + */ + + this.level = 0; /* compression level (1..9) */ + this.strategy = 0; /* favor or force Huffman coding*/ + + this.good_match = 0; + /* Use a faster search when the previous match is longer than this */ + + this.nice_match = 0; /* Stop searching when current match exceeds this */ + + /* used by trees.c: */ + + /* Didn't use ct_data typedef below to suppress compiler warning */ + + // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ + // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ + // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ + + // Use flat array of DOUBLE size, with interleaved fata, + // because JS does not support effective + this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2); + this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2); + this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2); + zero(this.dyn_ltree); + zero(this.dyn_dtree); + zero(this.bl_tree); + + this.l_desc = null; /* desc. for literal tree */ + this.d_desc = null; /* desc. for distance tree */ + this.bl_desc = null; /* desc. for bit length tree */ + + //ush bl_count[MAX_BITS+1]; + this.bl_count = new utils.Buf16(MAX_BITS + 1); + /* number of codes at each bit length for an optimal tree */ - opts = { bits: state.lenbits }; - ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); - state.lenbits = opts.bits; + //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ + this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */ + zero(this.heap); - if (ret) { - strm.msg = 'invalid code lengths set'; - state.mode = BAD; - break; - } - //Tracev((stderr, "inflate: code lengths ok\n")); - state.have = 0; - state.mode = CODELENS; - /* falls through */ - case CODELENS: - while (state.have < state.nlen + state.ndist) { - for (;;) { - here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/ - here_bits = here >>> 24; - here_op = (here >>> 16) & 0xff; - here_val = here & 0xffff; + this.heap_len = 0; /* number of elements in the heap */ + this.heap_max = 0; /* element of largest frequency */ + /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. + * The same heap array is used to build all trees. + */ - if ((here_bits) <= bits) { break; } - //--- PULLBYTE() ---// - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - //---// - } - if (here_val < 16) { - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - state.lens[state.have++] = here_val; - } - else { - if (here_val === 16) { - //=== NEEDBITS(here.bits + 2); - n = here_bits + 2; - while (bits < n) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - if (state.have === 0) { - strm.msg = 'invalid bit length repeat'; - state.mode = BAD; - break; - } - len = state.lens[state.have - 1]; - copy = 3 + (hold & 0x03);//BITS(2); - //--- DROPBITS(2) ---// - hold >>>= 2; - bits -= 2; - //---// - } - else if (here_val === 17) { - //=== NEEDBITS(here.bits + 3); - n = here_bits + 3; - while (bits < n) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - len = 0; - copy = 3 + (hold & 0x07);//BITS(3); - //--- DROPBITS(3) ---// - hold >>>= 3; - bits -= 3; - //---// - } - else { - //=== NEEDBITS(here.bits + 7); - n = here_bits + 7; - while (bits < n) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - len = 0; - copy = 11 + (hold & 0x7f);//BITS(7); - //--- DROPBITS(7) ---// - hold >>>= 7; - bits -= 7; - //---// - } - if (state.have + copy > state.nlen + state.ndist) { - strm.msg = 'invalid bit length repeat'; - state.mode = BAD; - break; - } - while (copy--) { - state.lens[state.have++] = len; - } - } - } + this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1]; + zero(this.depth); + /* Depth of each subtree used as tie breaker for trees of equal frequency + */ + + this.l_buf = 0; /* buffer index for literals or lengths */ + + this.lit_bufsize = 0; + /* Size of match buffer for literals/lengths. There are 4 reasons for + * limiting lit_bufsize to 64K: + * - frequencies can be kept in 16 bit counters + * - if compression is not successful for the first block, all input + * data is still in the window so we can still emit a stored block even + * when input comes from standard input. (This can also be done for + * all blocks if lit_bufsize is not greater than 32K.) + * - if compression is not successful for a file smaller than 64K, we can + * even emit a stored file instead of a stored block (saving 5 bytes). + * This is applicable only for zip (not gzip or zlib). + * - creating new Huffman trees less frequently may not provide fast + * adaptation to changes in the input data statistics. (Take for + * example a binary file with poorly compressible code followed by + * a highly compressible string table.) Smaller buffer sizes give + * fast adaptation but have of course the overhead of transmitting + * trees more frequently. + * - I can't count above 4 + */ + + this.last_lit = 0; /* running index in l_buf */ + + this.d_buf = 0; + /* Buffer index for distances. To simplify the code, d_buf and l_buf have + * the same number of elements. To use different lengths, an extra flag + * array would be necessary. + */ + + this.opt_len = 0; /* bit length of current block with optimal trees */ + this.static_len = 0; /* bit length of current block with static trees */ + this.matches = 0; /* number of string matches in current block */ + this.insert = 0; /* bytes at end of window left to insert */ + + + this.bi_buf = 0; + /* Output buffer. bits are inserted starting at the bottom (least + * significant bits). + */ + this.bi_valid = 0; + /* Number of valid bits in bi_buf. All bits above the last valid bit + * are always zero. + */ + + // Used for window memory init. We safely ignore it for JS. That makes + // sense only for pointers and memory check tools. + //this.high_water = 0; + /* High water mark offset in window for initialized bytes -- bytes above + * this are set to zero in order to avoid memory check warnings when + * longest match routines access bytes past the input. This is then + * updated to the new high water mark. + */ +} + + +function deflateResetKeep(strm) { + var s; + + if (!strm || !strm.state) { + return err(strm, Z_STREAM_ERROR); + } + + strm.total_in = strm.total_out = 0; + strm.data_type = Z_UNKNOWN; + + s = strm.state; + s.pending = 0; + s.pending_out = 0; + + if (s.wrap < 0) { + s.wrap = -s.wrap; + /* was made negative by deflate(..., Z_FINISH); */ + } + s.status = (s.wrap ? INIT_STATE : BUSY_STATE); + strm.adler = (s.wrap === 2) ? + 0 // crc32(0, Z_NULL, 0) + : + 1; // adler32(0, Z_NULL, 0) + s.last_flush = Z_NO_FLUSH; + trees._tr_init(s); + return Z_OK; +} + + +function deflateReset(strm) { + var ret = deflateResetKeep(strm); + if (ret === Z_OK) { + lm_init(strm.state); + } + return ret; +} + + +function deflateSetHeader(strm, head) { + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; } + strm.state.gzhead = head; + return Z_OK; +} + + +function deflateInit2(strm, level, method, windowBits, memLevel, strategy) { + if (!strm) { // === Z_NULL + return Z_STREAM_ERROR; + } + var wrap = 1; + + if (level === Z_DEFAULT_COMPRESSION) { + level = 6; + } + + if (windowBits < 0) { /* suppress zlib wrapper */ + wrap = 0; + windowBits = -windowBits; + } + + else if (windowBits > 15) { + wrap = 2; /* write gzip wrapper instead */ + windowBits -= 16; + } + + + if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || + windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || + strategy < 0 || strategy > Z_FIXED) { + return err(strm, Z_STREAM_ERROR); + } - /* handle error breaks in while */ - if (state.mode === BAD) { break; } - /* check for end-of-block code (better have one) */ - if (state.lens[256] === 0) { - strm.msg = 'invalid code -- missing end-of-block'; - state.mode = BAD; - break; - } + if (windowBits === 8) { + windowBits = 9; + } + /* until 256-byte window bug fixed */ - /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h - concerning the ENOUGH constants, which depend on those values */ - state.lenbits = 9; + var s = new DeflateState(); - opts = { bits: state.lenbits }; - ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); - // We have separate tables & no pointers. 2 commented lines below not needed. - // state.next_index = opts.table_index; - state.lenbits = opts.bits; - // state.lencode = state.next; + strm.state = s; + s.strm = strm; - if (ret) { - strm.msg = 'invalid literal/lengths set'; - state.mode = BAD; - break; - } + s.wrap = wrap; + s.gzhead = null; + s.w_bits = windowBits; + s.w_size = 1 << s.w_bits; + s.w_mask = s.w_size - 1; - state.distbits = 6; - //state.distcode.copy(state.codes); - // Switch to use dynamic table - state.distcode = state.distdyn; - opts = { bits: state.distbits }; - ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); - // We have separate tables & no pointers. 2 commented lines below not needed. - // state.next_index = opts.table_index; - state.distbits = opts.bits; - // state.distcode = state.next; + s.hash_bits = memLevel + 7; + s.hash_size = 1 << s.hash_bits; + s.hash_mask = s.hash_size - 1; + s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); - if (ret) { - strm.msg = 'invalid distances set'; - state.mode = BAD; - break; - } - //Tracev((stderr, 'inflate: codes ok\n')); - state.mode = LEN_; - if (flush === Z_TREES) { break inf_leave; } - /* falls through */ - case LEN_: - state.mode = LEN; - /* falls through */ - case LEN: - if (have >= 6 && left >= 258) { - //--- RESTORE() --- - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - //--- - inflate_fast(strm, _out); - //--- LOAD() --- - put = strm.next_out; - output = strm.output; - left = strm.avail_out; - next = strm.next_in; - input = strm.input; - have = strm.avail_in; - hold = state.hold; - bits = state.bits; - //--- + s.window = new utils.Buf8(s.w_size * 2); + s.head = new utils.Buf16(s.hash_size); + s.prev = new utils.Buf16(s.w_size); - if (state.mode === TYPE) { - state.back = -1; - } - break; - } - state.back = 0; - for (;;) { - here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/ - here_bits = here >>> 24; - here_op = (here >>> 16) & 0xff; - here_val = here & 0xffff; + // Don't need mem init magic for JS. + //s.high_water = 0; /* nothing written to s->window yet */ - if (here_bits <= bits) { break; } - //--- PULLBYTE() ---// - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - //---// - } - if (here_op && (here_op & 0xf0) === 0) { - last_bits = here_bits; - last_op = here_op; - last_val = here_val; - for (;;) { - here = state.lencode[last_val + - ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; - here_bits = here >>> 24; - here_op = (here >>> 16) & 0xff; - here_val = here & 0xffff; + s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ - if ((last_bits + here_bits) <= bits) { break; } - //--- PULLBYTE() ---// - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - //---// - } - //--- DROPBITS(last.bits) ---// - hold >>>= last_bits; - bits -= last_bits; - //---// - state.back += last_bits; - } - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - state.back += here_bits; - state.length = here_val; - if (here_op === 0) { - //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - // "inflate: literal '%c'\n" : - // "inflate: literal 0x%02x\n", here.val)); - state.mode = LIT; - break; - } - if (here_op & 32) { - //Tracevv((stderr, "inflate: end of block\n")); - state.back = -1; - state.mode = TYPE; - break; - } - if (here_op & 64) { - strm.msg = 'invalid literal/length code'; - state.mode = BAD; - break; - } - state.extra = here_op & 15; - state.mode = LENEXT; - /* falls through */ - case LENEXT: - if (state.extra) { - //=== NEEDBITS(state.extra); - n = state.extra; - while (bits < n) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; - //--- DROPBITS(state.extra) ---// - hold >>>= state.extra; - bits -= state.extra; - //---// - state.back += state.extra; + s.pending_buf_size = s.lit_bufsize * 4; + + //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); + //s->pending_buf = (uchf *) overlay; + s.pending_buf = new utils.Buf8(s.pending_buf_size); + + // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`) + //s->d_buf = overlay + s->lit_bufsize/sizeof(ush); + s.d_buf = 1 * s.lit_bufsize; + + //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; + s.l_buf = (1 + 2) * s.lit_bufsize; + + s.level = level; + s.strategy = strategy; + s.method = method; + + return deflateReset(strm); +} + +function deflateInit(strm, level) { + return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); +} + + +function deflate(strm, flush) { + var old_flush, s; + var beg, val; // for gzip header write only + + if (!strm || !strm.state || + flush > Z_BLOCK || flush < 0) { + return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR; + } + + s = strm.state; + + if (!strm.output || + (!strm.input && strm.avail_in !== 0) || + (s.status === FINISH_STATE && flush !== Z_FINISH)) { + return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR); + } + + s.strm = strm; /* just in case */ + old_flush = s.last_flush; + s.last_flush = flush; + + /* Write the header */ + if (s.status === INIT_STATE) { + + if (s.wrap === 2) { // GZIP header + strm.adler = 0; //crc32(0L, Z_NULL, 0); + put_byte(s, 31); + put_byte(s, 139); + put_byte(s, 8); + if (!s.gzhead) { // s->gzhead == Z_NULL + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, OS_CODE); + s.status = BUSY_STATE; + } + else { + put_byte(s, (s.gzhead.text ? 1 : 0) + + (s.gzhead.hcrc ? 2 : 0) + + (!s.gzhead.extra ? 0 : 4) + + (!s.gzhead.name ? 0 : 8) + + (!s.gzhead.comment ? 0 : 16) + ); + put_byte(s, s.gzhead.time & 0xff); + put_byte(s, (s.gzhead.time >> 8) & 0xff); + put_byte(s, (s.gzhead.time >> 16) & 0xff); + put_byte(s, (s.gzhead.time >> 24) & 0xff); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, s.gzhead.os & 0xff); + if (s.gzhead.extra && s.gzhead.extra.length) { + put_byte(s, s.gzhead.extra.length & 0xff); + put_byte(s, (s.gzhead.extra.length >> 8) & 0xff); } - //Tracevv((stderr, "inflate: length %u\n", state.length)); - state.was = state.length; - state.mode = DIST; - /* falls through */ - case DIST: - for (;;) { - here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/ - here_bits = here >>> 24; - here_op = (here >>> 16) & 0xff; - here_val = here & 0xffff; - - if ((here_bits) <= bits) { break; } - //--- PULLBYTE() ---// - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - //---// + if (s.gzhead.hcrc) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0); } - if ((here_op & 0xf0) === 0) { - last_bits = here_bits; - last_op = here_op; - last_val = here_val; - for (;;) { - here = state.distcode[last_val + - ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; - here_bits = here >>> 24; - here_op = (here >>> 16) & 0xff; - here_val = here & 0xffff; + s.gzindex = 0; + s.status = EXTRA_STATE; + } + } + else // DEFLATE header + { + var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8; + var level_flags = -1; - if ((last_bits + here_bits) <= bits) { break; } - //--- PULLBYTE() ---// - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - //---// - } - //--- DROPBITS(last.bits) ---// - hold >>>= last_bits; - bits -= last_bits; - //---// - state.back += last_bits; - } - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - state.back += here_bits; - if (here_op & 64) { - strm.msg = 'invalid distance code'; - state.mode = BAD; - break; - } - state.offset = here_val; - state.extra = (here_op) & 15; - state.mode = DISTEXT; - /* falls through */ - case DISTEXT: - if (state.extra) { - //=== NEEDBITS(state.extra); - n = state.extra; - while (bits < n) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; - //--- DROPBITS(state.extra) ---// - hold >>>= state.extra; - bits -= state.extra; - //---// - state.back += state.extra; - } -//#ifdef INFLATE_STRICT - if (state.offset > state.dmax) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD; - break; - } -//#endif - //Tracevv((stderr, "inflate: distance %u\n", state.offset)); - state.mode = MATCH; - /* falls through */ - case MATCH: - if (left === 0) { break inf_leave; } - copy = _out - left; - if (state.offset > copy) { /* copy from window */ - copy = state.offset - copy; - if (copy > state.whave) { - if (state.sane) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD; - break; - } -// (!) This block is disabled in zlib defaults, -// don't enable it for binary compatibility -//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR -// Trace((stderr, "inflate.c too far\n")); -// copy -= state.whave; -// if (copy > state.length) { copy = state.length; } -// if (copy > left) { copy = left; } -// left -= copy; -// state.length -= copy; -// do { -// output[put++] = 0; -// } while (--copy); -// if (state.length === 0) { state.mode = LEN; } -// break; -//#endif - } - if (copy > state.wnext) { - copy -= state.wnext; - from = state.wsize - copy; - } - else { - from = state.wnext - copy; - } - if (copy > state.length) { copy = state.length; } - from_source = state.window; - } - else { /* copy from output */ - from_source = output; - from = put - state.offset; - copy = state.length; - } - if (copy > left) { copy = left; } - left -= copy; - state.length -= copy; - do { - output[put++] = from_source[from++]; - } while (--copy); - if (state.length === 0) { state.mode = LEN; } - break; - case LIT: - if (left === 0) { break inf_leave; } - output[put++] = state.length; - left--; - state.mode = LEN; - break; - case CHECK: - if (state.wrap) { - //=== NEEDBITS(32); - while (bits < 32) { - if (have === 0) { break inf_leave; } - have--; - // Use '|' instead of '+' to make sure that result is signed - hold |= input[next++] << bits; - bits += 8; - } - //===// - _out -= left; - strm.total_out += _out; - state.total += _out; - if (_out) { - strm.adler = state.check = - /*UPDATE(state.check, put - _out, _out);*/ - (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out)); + if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { + level_flags = 0; + } else if (s.level < 6) { + level_flags = 1; + } else if (s.level === 6) { + level_flags = 2; + } else { + level_flags = 3; + } + header |= (level_flags << 6); + if (s.strstart !== 0) { header |= PRESET_DICT; } + header += 31 - (header % 31); + + s.status = BUSY_STATE; + putShortMSB(s, header); + + /* Save the adler32 of the preset dictionary: */ + if (s.strstart !== 0) { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } + strm.adler = 1; // adler32(0L, Z_NULL, 0); + } + } + +//#ifdef GZIP + if (s.status === EXTRA_STATE) { + if (s.gzhead.extra/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + while (s.gzindex < (s.gzhead.extra.length & 0xffff)) { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); } - _out = left; - // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too - if ((state.flags ? hold : zswap32(hold)) !== state.check) { - strm.msg = 'incorrect data check'; - state.mode = BAD; + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { break; } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - //Tracev((stderr, "inflate: check matches trailer\n")); } - state.mode = LENGTH; - /* falls through */ - case LENGTH: - if (state.wrap && state.flags) { - //=== NEEDBITS(32); - while (bits < 32) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; + put_byte(s, s.gzhead.extra[s.gzindex] & 0xff); + s.gzindex++; + } + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (s.gzindex === s.gzhead.extra.length) { + s.gzindex = 0; + s.status = NAME_STATE; + } + } + else { + s.status = NAME_STATE; + } + } + if (s.status === NAME_STATE) { + if (s.gzhead.name/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; + + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); } - //===// - if (hold !== (state.total & 0xffffffff)) { - strm.msg = 'incorrect length check'; - state.mode = BAD; + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; break; } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - //Tracev((stderr, "inflate: length matches trailer\n")); } - state.mode = DONE; - /* falls through */ - case DONE: - ret = Z_STREAM_END; - break inf_leave; - case BAD: - ret = Z_DATA_ERROR; - break inf_leave; - case MEM: - return Z_MEM_ERROR; - case SYNC: - /* falls through */ - default: - return Z_STREAM_ERROR; + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.name.length) { + val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); + + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.gzindex = 0; + s.status = COMMENT_STATE; + } + } + else { + s.status = COMMENT_STATE; } } + if (s.status === COMMENT_STATE) { + if (s.gzhead.comment/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; - // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave" - - /* - Return from inflate(), updating the total counts and the check value. - If there was no progress during the inflate() call, return a buffer - error. Call updatewindow() to create and/or update the window state. - Note: a memory error from inflate() is non-recoverable. - */ - - //--- RESTORE() --- - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - //--- + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; + break; + } + } + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.comment.length) { + val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); - if (state.wsize || (_out !== strm.avail_out && state.mode < BAD && - (state.mode < CHECK || flush !== Z_FINISH))) { - if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) { - state.mode = MEM; - return Z_MEM_ERROR; + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.status = HCRC_STATE; + } + } + else { + s.status = HCRC_STATE; } } - _in -= strm.avail_in; - _out -= strm.avail_out; - strm.total_in += _in; - strm.total_out += _out; - state.total += _out; - if (state.wrap && _out) { - strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ - (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out)); - } - strm.data_type = state.bits + (state.last ? 64 : 0) + - (state.mode === TYPE ? 128 : 0) + - (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); - if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) { - ret = Z_BUF_ERROR; + if (s.status === HCRC_STATE) { + if (s.gzhead.hcrc) { + if (s.pending + 2 > s.pending_buf_size) { + flush_pending(strm); + } + if (s.pending + 2 <= s.pending_buf_size) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + strm.adler = 0; //crc32(0L, Z_NULL, 0); + s.status = BUSY_STATE; + } + } + else { + s.status = BUSY_STATE; + } } - return ret; -} +//#endif -function inflateEnd(strm) { + /* Flush as much pending output as possible */ + if (s.pending !== 0) { + flush_pending(strm); + if (strm.avail_out === 0) { + /* Since avail_out is 0, deflate will be called again with + * more output space, but possibly with both pending and + * avail_in equal to zero. There won't be anything to do, + * but this is not an error situation so make sure we + * return OK instead of BUF_ERROR at next call of deflate: + */ + s.last_flush = -1; + return Z_OK; + } - if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) { - return Z_STREAM_ERROR; + /* Make sure there is something to do and avoid duplicate consecutive + * flushes. For repeated and useless calls with Z_FINISH, we keep + * returning Z_STREAM_END instead of Z_BUF_ERROR. + */ + } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && + flush !== Z_FINISH) { + return err(strm, Z_BUF_ERROR); } - var state = strm.state; - if (state.window) { - state.window = null; + /* User must not provide more input after the first FINISH: */ + if (s.status === FINISH_STATE && strm.avail_in !== 0) { + return err(strm, Z_BUF_ERROR); } - strm.state = null; - return Z_OK; -} - -function inflateGetHeader(strm, head) { - var state; - - /* check state */ - if (!strm || !strm.state) { return Z_STREAM_ERROR; } - state = strm.state; - if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; } - - /* save header structure */ - state.head = head; - head.done = false; - return Z_OK; -} - -function inflateSetDictionary(strm, dictionary) { - var dictLength = dictionary.length; - - var state; - var dictid; - var ret; - - /* check state */ - if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; } - state = strm.state; - if (state.wrap !== 0 && state.mode !== DICT) { - return Z_STREAM_ERROR; - } + /* Start a new block or continue the current one. + */ + if (strm.avail_in !== 0 || s.lookahead !== 0 || + (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) { + var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) : + (s.strategy === Z_RLE ? deflate_rle(s, flush) : + configuration_table[s.level].func(s, flush)); - /* check for correct dictionary identifier */ - if (state.mode === DICT) { - dictid = 1; /* adler32(0, null, 0)*/ - /* dictid = adler32(dictid, dictionary, dictLength); */ - dictid = adler32(dictid, dictionary, dictLength, 0); - if (dictid !== state.check) { - return Z_DATA_ERROR; + if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { + s.status = FINISH_STATE; } - } - /* copy dictionary to window using updatewindow(), which will amend the - existing dictionary if appropriate */ - ret = updatewindow(strm, dictionary, dictLength, dictLength); - if (ret) { - state.mode = MEM; - return Z_MEM_ERROR; - } - state.havedict = 1; - // Tracev((stderr, "inflate: dictionary set\n")); - return Z_OK; -} - -exports.inflateReset = inflateReset; -exports.inflateReset2 = inflateReset2; -exports.inflateResetKeep = inflateResetKeep; -exports.inflateInit = inflateInit; -exports.inflateInit2 = inflateInit2; -exports.inflate = inflate; -exports.inflateEnd = inflateEnd; -exports.inflateGetHeader = inflateGetHeader; -exports.inflateSetDictionary = inflateSetDictionary; -exports.inflateInfo = 'pako inflate (from Nodeca project)'; - -/* Not implemented -exports.inflateCopy = inflateCopy; -exports.inflateGetDictionary = inflateGetDictionary; -exports.inflateMark = inflateMark; -exports.inflatePrime = inflatePrime; -exports.inflateSync = inflateSync; -exports.inflateSyncPoint = inflateSyncPoint; -exports.inflateUndermine = inflateUndermine; -*/ - -},{"../utils/common":28,"./adler32":29,"./crc32":31,"./inffast":33,"./inftrees":35}],35:[function(require,module,exports){ -'use strict'; + if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { + if (strm.avail_out === 0) { + s.last_flush = -1; + /* avoid BUF_ERROR next call, see above */ + } + return Z_OK; + /* If flush != Z_NO_FLUSH && avail_out == 0, the next call + * of deflate should use the same flush parameter to make sure + * that the flush is complete. So we don't have to output an + * empty block here, this will be done at next call. This also + * ensures that for a very small output buffer, we emit at most + * one empty block. + */ + } + if (bstate === BS_BLOCK_DONE) { + if (flush === Z_PARTIAL_FLUSH) { + trees._tr_align(s); + } + else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ -// (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. + trees._tr_stored_block(s, 0, 0, false); + /* For a full flush, this empty block will be recognized + * as a special marker by inflate_sync(). + */ + if (flush === Z_FULL_FLUSH) { + /*** CLEAR_HASH(s); ***/ /* forget history */ + zero(s.head); // Fill with NIL (= 0); -var utils = require('../utils/common'); + if (s.lookahead === 0) { + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + } + } + flush_pending(strm); + if (strm.avail_out === 0) { + s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */ + return Z_OK; + } + } + } + //Assert(strm->avail_out > 0, "bug2"); + //if (strm.avail_out <= 0) { throw new Error("bug2");} -var MAXBITS = 15; -var ENOUGH_LENS = 852; -var ENOUGH_DISTS = 592; -//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); + if (flush !== Z_FINISH) { return Z_OK; } + if (s.wrap <= 0) { return Z_STREAM_END; } -var CODES = 0; -var LENS = 1; -var DISTS = 2; + /* Write the trailer */ + if (s.wrap === 2) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + put_byte(s, (strm.adler >> 16) & 0xff); + put_byte(s, (strm.adler >> 24) & 0xff); + put_byte(s, strm.total_in & 0xff); + put_byte(s, (strm.total_in >> 8) & 0xff); + put_byte(s, (strm.total_in >> 16) & 0xff); + put_byte(s, (strm.total_in >> 24) & 0xff); + } + else + { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } -var lbase = [ /* Length codes 257..285 base */ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 -]; + flush_pending(strm); + /* If avail_out is zero, the application will call deflate again + * to flush the rest. + */ + if (s.wrap > 0) { s.wrap = -s.wrap; } + /* write the trailer only once! */ + return s.pending !== 0 ? Z_OK : Z_STREAM_END; +} -var lext = [ /* Length codes 257..285 extra */ - 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78 -]; +function deflateEnd(strm) { + var status; -var dbase = [ /* Distance codes 0..29 base */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, - 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, - 8193, 12289, 16385, 24577, 0, 0 -]; + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR; + } -var dext = [ /* Distance codes 0..29 extra */ - 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, - 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, - 28, 28, 29, 29, 64, 64 -]; + status = strm.state.status; + if (status !== INIT_STATE && + status !== EXTRA_STATE && + status !== NAME_STATE && + status !== COMMENT_STATE && + status !== HCRC_STATE && + status !== BUSY_STATE && + status !== FINISH_STATE + ) { + return err(strm, Z_STREAM_ERROR); + } -module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) -{ - var bits = opts.bits; - //here = opts.here; /* table entry for duplication */ + strm.state = null; - var len = 0; /* a code's length in bits */ - var sym = 0; /* index of code symbols */ - var min = 0, max = 0; /* minimum and maximum code lengths */ - var root = 0; /* number of index bits for root table */ - var curr = 0; /* number of index bits for current table */ - var drop = 0; /* code bits to drop for sub-table */ - var left = 0; /* number of prefix codes available */ - var used = 0; /* code entries in table used */ - var huff = 0; /* Huffman code */ - var incr; /* for incrementing code, index */ - var fill; /* index for replicating entries */ - var low; /* low bits for current root entry */ - var mask; /* mask for low root bits */ - var next; /* next available space in table */ - var base = null; /* base value table to use */ - var base_index = 0; -// var shoextra; /* extra bits table to use */ - var end; /* use base and extra for symbol > end */ - var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */ - var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */ - var extra = null; - var extra_index = 0; + return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK; +} - var here_bits, here_op, here_val; - /* - Process a set of code lengths to create a canonical Huffman code. The - code lengths are lens[0..codes-1]. Each length corresponds to the - symbols 0..codes-1. The Huffman code is generated by first sorting the - symbols by length from short to long, and retaining the symbol order - for codes with equal lengths. Then the code starts with all zero bits - for the first code of the shortest length, and the codes are integer - increments for the same length, and zeros are appended as the length - increases. For the deflate format, these bits are stored backwards - from their more natural integer increment ordering, and so when the - decoding tables are built in the large loop below, the integer codes - are incremented backwards. +/* ========================================================================= + * Initializes the compression dictionary from the given byte + * sequence without producing any compressed output. + */ +function deflateSetDictionary(strm, dictionary) { + var dictLength = dictionary.length; - This routine assumes, but does not check, that all of the entries in - lens[] are in the range 0..MAXBITS. The caller must assure this. - 1..MAXBITS is interpreted as that code length. zero means that that - symbol does not occur in this code. + var s; + var str, n; + var wrap; + var avail; + var next; + var input; + var tmpDict; - The codes are sorted by computing a count of codes for each length, - creating from that a table of starting indices for each length in the - sorted table, and then entering the symbols in order in the sorted - table. The sorted table is work[], with that space being provided by - the caller. + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR; + } - The length counts are used for other purposes as well, i.e. finding - the minimum and maximum length codes, determining if there are any - codes at all, checking for a valid set of lengths, and looking ahead - at length counts to determine sub-table sizes when building the - decoding tables. - */ + s = strm.state; + wrap = s.wrap; - /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ - for (len = 0; len <= MAXBITS; len++) { - count[len] = 0; + if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) { + return Z_STREAM_ERROR; } - for (sym = 0; sym < codes; sym++) { - count[lens[lens_index + sym]]++; + + /* when using zlib wrappers, compute Adler-32 for provided dictionary */ + if (wrap === 1) { + /* adler32(strm->adler, dictionary, dictLength); */ + strm.adler = adler32(strm.adler, dictionary, dictLength, 0); } - /* bound code lengths, force root to be within code lengths */ - root = bits; - for (max = MAXBITS; max >= 1; max--) { - if (count[max] !== 0) { break; } + s.wrap = 0; /* avoid computing Adler-32 in read_buf */ + + /* if dictionary would fill window, just replace the history */ + if (dictLength >= s.w_size) { + if (wrap === 0) { /* already empty otherwise */ + /*** CLEAR_HASH(s); ***/ + zero(s.head); // Fill with NIL (= 0); + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + /* use the tail */ + // dictionary = dictionary.slice(dictLength - s.w_size); + tmpDict = new utils.Buf8(s.w_size); + utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0); + dictionary = tmpDict; + dictLength = s.w_size; } - if (root > max) { - root = max; + /* insert dictionary into window and hash */ + avail = strm.avail_in; + next = strm.next_in; + input = strm.input; + strm.avail_in = dictLength; + strm.next_in = 0; + strm.input = dictionary; + fill_window(s); + while (s.lookahead >= MIN_MATCH) { + str = s.strstart; + n = s.lookahead - (MIN_MATCH - 1); + do { + /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; + + s.prev[str & s.w_mask] = s.head[s.ins_h]; + + s.head[s.ins_h] = str; + str++; + } while (--n); + s.strstart = str; + s.lookahead = MIN_MATCH - 1; + fill_window(s); } - if (max === 0) { /* no symbols to code at all */ - //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */ - //table.bits[opts.table_index] = 1; //here.bits = (var char)1; - //table.val[opts.table_index++] = 0; //here.val = (var short)0; - table[table_index++] = (1 << 24) | (64 << 16) | 0; + s.strstart += s.lookahead; + s.block_start = s.strstart; + s.insert = s.lookahead; + s.lookahead = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + strm.next_in = next; + strm.input = input; + strm.avail_in = avail; + s.wrap = wrap; + return Z_OK; +} - //table.op[opts.table_index] = 64; - //table.bits[opts.table_index] = 1; - //table.val[opts.table_index++] = 0; - table[table_index++] = (1 << 24) | (64 << 16) | 0; +exports.deflateInit = deflateInit; +exports.deflateInit2 = deflateInit2; +exports.deflateReset = deflateReset; +exports.deflateResetKeep = deflateResetKeep; +exports.deflateSetHeader = deflateSetHeader; +exports.deflate = deflate; +exports.deflateEnd = deflateEnd; +exports.deflateSetDictionary = deflateSetDictionary; +exports.deflateInfo = 'pako deflate (from Nodeca project)'; - opts.bits = 1; - return 0; /* no symbols, but wait for decoding to report error */ - } - for (min = 1; min < max; min++) { - if (count[min] !== 0) { break; } - } - if (root < min) { - root = min; - } +/* Not implemented +exports.deflateBound = deflateBound; +exports.deflateCopy = deflateCopy; +exports.deflateParams = deflateParams; +exports.deflatePending = deflatePending; +exports.deflatePrime = deflatePrime; +exports.deflateTune = deflateTune; +*/ - /* check for an over-subscribed or incomplete set of lengths */ - left = 1; - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; - left -= count[len]; - if (left < 0) { - return -1; - } /* over-subscribed */ - } - if (left > 0 && (type === CODES || max !== 1)) { - return -1; /* incomplete set */ - } +},{"../utils/common":34,"./adler32":35,"./crc32":37,"./messages":42,"./trees":43}],39:[function(require,module,exports){ +'use strict'; - /* generate offsets into symbol table for each length for sorting */ - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) { - offs[len + 1] = offs[len] + count[len]; - } +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. - /* sort symbols by length, by symbol order within each length */ - for (sym = 0; sym < codes; sym++) { - if (lens[lens_index + sym] !== 0) { - work[offs[lens[lens_index + sym]]++] = sym; - } - } +// See state defs from inflate.js +var BAD = 30; /* got a data error -- remain here until reset */ +var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ - /* - Create and fill in decoding tables. In this loop, the table being - filled is at next and has curr index bits. The code being used is huff - with length len. That code is converted to an index by dropping drop - bits off of the bottom. For codes where len is less than drop + curr, - those top drop + curr - len bits are incremented through all values to - fill the table with replicated entries. +/* + Decode literal, length, and distance codes and write out the resulting + literal and match bytes until either not enough input or output is + available, an end-of-block is encountered, or a data error is encountered. + When large enough input and output buffers are supplied to inflate(), for + example, a 16K input buffer and a 64K output buffer, more than 95% of the + inflate execution time is spent in this routine. - root is the number of index bits for the root table. When len exceeds - root, sub-tables are created pointed to by the root entry with an index - of the low root bits of huff. This is saved in low to check for when a - new sub-table should be started. drop is zero when the root table is - being filled, and drop is root when sub-tables are being filled. + Entry assumptions: - When a new sub-table is needed, it is necessary to look ahead in the - code lengths to determine what size sub-table is needed. The length - counts are used for this, and so count[] is decremented as codes are - entered in the tables. + state.mode === LEN + strm.avail_in >= 6 + strm.avail_out >= 258 + start >= strm.avail_out + state.bits < 8 - used keeps track of how many table entries have been allocated from the - provided *table space. It is checked for LENS and DIST tables against - the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in - the initial root table size constants. See the comments in inftrees.h - for more information. + On return, state.mode is one of: - sym increments through all symbols, and the loop terminates when - all codes of length max, i.e. all codes, have been processed. This - routine permits incomplete codes, so another loop after this one fills - in the rest of the decoding tables with invalid code markers. - */ + LEN -- ran out of enough output space or enough available input + TYPE -- reached end of block code, inflate() to interpret next block + BAD -- error in block data - /* set up for code type */ - // poor man optimization - use if-else instead of switch, - // to avoid deopts in old v8 - if (type === CODES) { - base = extra = work; /* dummy value--not used */ - end = 19; + Notes: - } else if (type === LENS) { - base = lbase; - base_index -= 257; - extra = lext; - extra_index -= 257; - end = 256; + - The maximum input bits used by a length/distance pair is 15 bits for the + length code, 5 bits for the length extra, 15 bits for the distance code, + and 13 bits for the distance extra. This totals 48 bits, or six bytes. + Therefore if strm.avail_in >= 6, then there is enough input to avoid + checking for available input while decoding. - } else { /* DISTS */ - base = dbase; - extra = dext; - end = -1; - } + - The maximum bytes that a single length/distance pair can output is 258 + bytes, which is the maximum length that can be coded. inflate_fast() + requires strm.avail_out >= 258 for each loop to avoid checking for + output space. + */ +module.exports = function inflate_fast(strm, start) { + var state; + var _in; /* local strm.input */ + var last; /* have enough input while in < last */ + var _out; /* local strm.output */ + var beg; /* inflate()'s initial strm.output */ + var end; /* while out < end, enough space available */ +//#ifdef INFLATE_STRICT + var dmax; /* maximum distance from zlib header */ +//#endif + var wsize; /* window size or zero if not using window */ + var whave; /* valid bytes in the window */ + var wnext; /* window write index */ + // Use `s_window` instead `window`, avoid conflict with instrumentation tools + var s_window; /* allocated sliding window, if wsize != 0 */ + var hold; /* local strm.hold */ + var bits; /* local strm.bits */ + var lcode; /* local strm.lencode */ + var dcode; /* local strm.distcode */ + var lmask; /* mask for first level of length codes */ + var dmask; /* mask for first level of distance codes */ + var here; /* retrieved table entry */ + var op; /* code bits, operation, extra bits, or */ + /* window position, window bytes to copy */ + var len; /* match length, unused bytes */ + var dist; /* match distance */ + var from; /* where to copy match from */ + var from_source; - /* initialize opts for loop */ - huff = 0; /* starting code */ - sym = 0; /* starting code symbol */ - len = min; /* starting code length */ - next = table_index; /* current table to fill in */ - curr = root; /* current table index bits */ - drop = 0; /* current bits to drop from code for index */ - low = -1; /* trigger new sub-table when len > root */ - used = 1 << root; /* use root table entries */ - mask = used - 1; /* mask for comparing low */ - /* check available table space */ - if ((type === LENS && used > ENOUGH_LENS) || - (type === DISTS && used > ENOUGH_DISTS)) { - return 1; - } + var input, output; // JS specific, because we have no pointers - /* process all codes and make table entries */ - for (;;) { - /* create table entry */ - here_bits = len - drop; - if (work[sym] < end) { - here_op = 0; - here_val = work[sym]; - } - else if (work[sym] > end) { - here_op = extra[extra_index + work[sym]]; - here_val = base[base_index + work[sym]]; - } - else { - here_op = 32 + 64; /* end of block */ - here_val = 0; - } + /* copy state to local variables */ + state = strm.state; + //here = state.here; + _in = strm.next_in; + input = strm.input; + last = _in + (strm.avail_in - 5); + _out = strm.next_out; + output = strm.output; + beg = _out - (start - strm.avail_out); + end = _out + (strm.avail_out - 257); +//#ifdef INFLATE_STRICT + dmax = state.dmax; +//#endif + wsize = state.wsize; + whave = state.whave; + wnext = state.wnext; + s_window = state.window; + hold = state.hold; + bits = state.bits; + lcode = state.lencode; + dcode = state.distcode; + lmask = (1 << state.lenbits) - 1; + dmask = (1 << state.distbits) - 1; - /* replicate for those indices with low len bits equal to huff */ - incr = 1 << (len - drop); - fill = 1 << curr; - min = fill; /* save offset to next table */ - do { - fill -= incr; - table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0; - } while (fill !== 0); - /* backwards increment the len-bit code huff */ - incr = 1 << (len - 1); - while (huff & incr) { - incr >>= 1; - } - if (incr !== 0) { - huff &= incr - 1; - huff += incr; - } else { - huff = 0; - } + /* decode literals and length/distances until end-of-block or not enough + input data or output space */ - /* go to next symbol, update count, len */ - sym++; - if (--count[len] === 0) { - if (len === max) { break; } - len = lens[lens_index + work[sym]]; + top: + do { + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; } - /* create new sub-table if needed */ - if (len > root && (huff & mask) !== low) { - /* if first time, transition to sub-tables */ - if (drop === 0) { - drop = root; + here = lcode[hold & lmask]; + + dolen: + for (;;) { // Goto emulation + op = here >>> 24/*here.bits*/; + hold >>>= op; + bits -= op; + op = (here >>> 16) & 0xff/*here.op*/; + if (op === 0) { /* literal */ + //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + // "inflate: literal '%c'\n" : + // "inflate: literal 0x%02x\n", here.val)); + output[_out++] = here & 0xffff/*here.val*/; } + else if (op & 16) { /* length base */ + len = here & 0xffff/*here.val*/; + op &= 15; /* number of extra bits */ + if (op) { + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + len += hold & ((1 << op) - 1); + hold >>>= op; + bits -= op; + } + //Tracevv((stderr, "inflate: length %u\n", len)); + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; + } + here = dcode[hold & dmask]; - /* increment past last table */ - next += min; /* here min is 1 << curr */ + dodist: + for (;;) { // goto emulation + op = here >>> 24/*here.bits*/; + hold >>>= op; + bits -= op; + op = (here >>> 16) & 0xff/*here.op*/; - /* determine length of next table */ - curr = len - drop; - left = 1 << curr; - while (curr + drop < max) { - left -= count[curr + drop]; - if (left <= 0) { break; } - curr++; - left <<= 1; - } + if (op & 16) { /* distance base */ + dist = here & 0xffff/*here.val*/; + op &= 15; /* number of extra bits */ + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + } + dist += hold & ((1 << op) - 1); +//#ifdef INFLATE_STRICT + if (dist > dmax) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break top; + } +//#endif + hold >>>= op; + bits -= op; + //Tracevv((stderr, "inflate: distance %u\n", dist)); + op = _out - beg; /* max distance in output */ + if (dist > op) { /* see if copy from window */ + op = dist - op; /* distance back in window */ + if (op > whave) { + if (state.sane) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break top; + } - /* check for enough space */ - used += 1 << curr; - if ((type === LENS && used > ENOUGH_LENS) || - (type === DISTS && used > ENOUGH_DISTS)) { - return 1; +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility +//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR +// if (len <= op - whave) { +// do { +// output[_out++] = 0; +// } while (--len); +// continue top; +// } +// len -= op - whave; +// do { +// output[_out++] = 0; +// } while (--op > whave); +// if (op === 0) { +// from = _out - dist; +// do { +// output[_out++] = output[from++]; +// } while (--len); +// continue top; +// } +//#endif + } + from = 0; // window index + from_source = s_window; + if (wnext === 0) { /* very common case */ + from += wsize - op; + if (op < len) { /* some from window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + else if (wnext < op) { /* wrap around window */ + from += wsize + wnext - op; + op -= wnext; + if (op < len) { /* some from end of window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = 0; + if (wnext < len) { /* some from start of window */ + op = wnext; + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + } + else { /* contiguous in window */ + from += wnext - op; + if (op < len) { /* some from window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + while (len > 2) { + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + len -= 3; + } + if (len) { + output[_out++] = from_source[from++]; + if (len > 1) { + output[_out++] = from_source[from++]; + } + } + } + else { + from = _out - dist; /* copy direct from output */ + do { /* minimum length is three */ + output[_out++] = output[from++]; + output[_out++] = output[from++]; + output[_out++] = output[from++]; + len -= 3; + } while (len > 2); + if (len) { + output[_out++] = output[from++]; + if (len > 1) { + output[_out++] = output[from++]; + } + } + } + } + else if ((op & 64) === 0) { /* 2nd level distance code */ + here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; + continue dodist; + } + else { + strm.msg = 'invalid distance code'; + state.mode = BAD; + break top; + } + + break; // need to emulate goto via "continue" + } + } + else if ((op & 64) === 0) { /* 2nd level length code */ + here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; + continue dolen; + } + else if (op & 32) { /* end-of-block */ + //Tracevv((stderr, "inflate: end of block\n")); + state.mode = TYPE; + break top; + } + else { + strm.msg = 'invalid literal/length code'; + state.mode = BAD; + break top; } - /* point entry in root table to sub-table */ - low = huff & mask; - /*table.op[low] = curr; - table.bits[low] = root; - table.val[low] = next - opts.table_index;*/ - table[low] = (root << 24) | (curr << 16) | (next - table_index) |0; + break; // need to emulate goto via "continue" } - } + } while (_in < last && _out < end); - /* fill in remaining table entry if code is incomplete (guaranteed to have - at most one remaining entry, since if the code is incomplete, the - maximum code length that was allowed to get this far is one bit) */ - if (huff !== 0) { - //table.op[next + huff] = 64; /* invalid code marker */ - //table.bits[next + huff] = len - drop; - //table.val[next + huff] = 0; - table[next + huff] = ((len - drop) << 24) | (64 << 16) |0; - } + /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ + len = bits >> 3; + _in -= len; + bits -= len << 3; + hold &= (1 << bits) - 1; - /* set return parameters */ - //opts.table_index += used; - opts.bits = root; - return 0; + /* update state and return */ + strm.next_in = _in; + strm.next_out = _out; + strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last)); + strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end)); + state.hold = hold; + state.bits = bits; + return; }; -},{"../utils/common":28}],36:[function(require,module,exports){ +},{}],40:[function(require,module,exports){ 'use strict'; // (C) 1995-2013 Jean-loup Gailly and Mark Adler @@ -13708,2873 +12687,3966 @@ module.exports = function inflate_table(type, lens, lens_index, codes, table, ta // misrepresented as being the original software. // 3. This notice may not be removed or altered from any source distribution. -module.exports = { - 2: 'need dictionary', /* Z_NEED_DICT 2 */ - 1: 'stream end', /* Z_STREAM_END 1 */ - 0: '', /* Z_OK 0 */ - '-1': 'file error', /* Z_ERRNO (-1) */ - '-2': 'stream error', /* Z_STREAM_ERROR (-2) */ - '-3': 'data error', /* Z_DATA_ERROR (-3) */ - '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */ - '-5': 'buffer error', /* Z_BUF_ERROR (-5) */ - '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */ -}; +var utils = require('../utils/common'); +var adler32 = require('./adler32'); +var crc32 = require('./crc32'); +var inflate_fast = require('./inffast'); +var inflate_table = require('./inftrees'); -},{}],37:[function(require,module,exports){ -'use strict'; +var CODES = 0; +var LENS = 1; +var DISTS = 2; -// (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. +/* Public constants ==========================================================*/ +/* ===========================================================================*/ -/* eslint-disable space-unary-ops */ -var utils = require('../utils/common'); +/* Allowed flush values; see deflate() and inflate() below for details */ +//var Z_NO_FLUSH = 0; +//var Z_PARTIAL_FLUSH = 1; +//var Z_SYNC_FLUSH = 2; +//var Z_FULL_FLUSH = 3; +var Z_FINISH = 4; +var Z_BLOCK = 5; +var Z_TREES = 6; -/* Public constants ==========================================================*/ + +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ +var Z_OK = 0; +var Z_STREAM_END = 1; +var Z_NEED_DICT = 2; +//var Z_ERRNO = -1; +var Z_STREAM_ERROR = -2; +var Z_DATA_ERROR = -3; +var Z_MEM_ERROR = -4; +var Z_BUF_ERROR = -5; +//var Z_VERSION_ERROR = -6; + +/* The deflate compression method */ +var Z_DEFLATED = 8; + + +/* STATES ====================================================================*/ /* ===========================================================================*/ -//var Z_FILTERED = 1; -//var Z_HUFFMAN_ONLY = 2; -//var Z_RLE = 3; -var Z_FIXED = 4; -//var Z_DEFAULT_STRATEGY = 0; +var HEAD = 1; /* i: waiting for magic header */ +var FLAGS = 2; /* i: waiting for method and flags (gzip) */ +var TIME = 3; /* i: waiting for modification time (gzip) */ +var OS = 4; /* i: waiting for extra flags and operating system (gzip) */ +var EXLEN = 5; /* i: waiting for extra length (gzip) */ +var EXTRA = 6; /* i: waiting for extra bytes (gzip) */ +var NAME = 7; /* i: waiting for end of file name (gzip) */ +var COMMENT = 8; /* i: waiting for end of comment (gzip) */ +var HCRC = 9; /* i: waiting for header crc (gzip) */ +var DICTID = 10; /* i: waiting for dictionary check value */ +var DICT = 11; /* waiting for inflateSetDictionary() call */ +var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ +var TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */ +var STORED = 14; /* i: waiting for stored size (length and complement) */ +var COPY_ = 15; /* i/o: same as COPY below, but only first time in */ +var COPY = 16; /* i/o: waiting for input or output to copy stored block */ +var TABLE = 17; /* i: waiting for dynamic block table lengths */ +var LENLENS = 18; /* i: waiting for code length code lengths */ +var CODELENS = 19; /* i: waiting for length/lit and distance code lengths */ +var LEN_ = 20; /* i: same as LEN below, but only first time in */ +var LEN = 21; /* i: waiting for length/lit/eob code */ +var LENEXT = 22; /* i: waiting for length extra bits */ +var DIST = 23; /* i: waiting for distance code */ +var DISTEXT = 24; /* i: waiting for distance extra bits */ +var MATCH = 25; /* o: waiting for output space to copy string */ +var LIT = 26; /* o: waiting for output space to write literal */ +var CHECK = 27; /* i: waiting for 32-bit check value */ +var LENGTH = 28; /* i: waiting for 32-bit length (gzip) */ +var DONE = 29; /* finished check, done -- remain here until reset */ +var BAD = 30; /* got a data error -- remain here until reset */ +var MEM = 31; /* got an inflate() memory error -- remain here until reset */ +var SYNC = 32; /* looking for synchronization bytes to restart inflate() */ -/* Possible values of the data_type field (though see inflate()) */ -var Z_BINARY = 0; -var Z_TEXT = 1; -//var Z_ASCII = 1; // = Z_TEXT -var Z_UNKNOWN = 2; +/* ===========================================================================*/ -/*============================================================================*/ -function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } } +var ENOUGH_LENS = 852; +var ENOUGH_DISTS = 592; +//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); -// From zutil.h +var MAX_WBITS = 15; +/* 32K LZ77 window */ +var DEF_WBITS = MAX_WBITS; -var STORED_BLOCK = 0; -var STATIC_TREES = 1; -var DYN_TREES = 2; -/* The three kinds of block type */ -var MIN_MATCH = 3; -var MAX_MATCH = 258; -/* The minimum and maximum match lengths */ +function zswap32(q) { + return (((q >>> 24) & 0xff) + + ((q >>> 8) & 0xff00) + + ((q & 0xff00) << 8) + + ((q & 0xff) << 24)); +} + + +function InflateState() { + this.mode = 0; /* current inflate mode */ + this.last = false; /* true if processing last block */ + this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ + this.havedict = false; /* true if dictionary provided */ + this.flags = 0; /* gzip header method and flags (0 if zlib) */ + this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */ + this.check = 0; /* protected copy of check value */ + this.total = 0; /* protected copy of output count */ + // TODO: may be {} + this.head = null; /* where to save gzip header information */ + + /* sliding window */ + this.wbits = 0; /* log base 2 of requested window size */ + this.wsize = 0; /* window size or zero if not using window */ + this.whave = 0; /* valid bytes in the window */ + this.wnext = 0; /* window write index */ + this.window = null; /* allocated sliding window, if needed */ + + /* bit accumulator */ + this.hold = 0; /* input bit accumulator */ + this.bits = 0; /* number of bits in "in" */ + + /* for string and stored block copying */ + this.length = 0; /* literal or length of data to copy */ + this.offset = 0; /* distance back to copy string from */ + + /* for table and code decoding */ + this.extra = 0; /* extra bits needed */ + + /* fixed and dynamic code tables */ + this.lencode = null; /* starting table for length/literal codes */ + this.distcode = null; /* starting table for distance codes */ + this.lenbits = 0; /* index bits for lencode */ + this.distbits = 0; /* index bits for distcode */ + + /* dynamic table building */ + this.ncode = 0; /* number of code length code lengths */ + this.nlen = 0; /* number of length code lengths */ + this.ndist = 0; /* number of distance code lengths */ + this.have = 0; /* number of code lengths in lens[] */ + this.next = null; /* next available space in codes[] */ + + this.lens = new utils.Buf16(320); /* temporary storage for code lengths */ + this.work = new utils.Buf16(288); /* work area for code table building */ + + /* + because we don't have pointers in js, we use lencode and distcode directly + as buffers so we don't need codes + */ + //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */ + this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */ + this.distdyn = null; /* dynamic table for distance codes (JS specific) */ + this.sane = 0; /* if false, allow invalid distance too far */ + this.back = 0; /* bits back of last unprocessed length/lit */ + this.was = 0; /* initial length of match */ +} + +function inflateResetKeep(strm) { + var state; + + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + strm.total_in = strm.total_out = state.total = 0; + strm.msg = ''; /*Z_NULL*/ + if (state.wrap) { /* to support ill-conceived Java test suite */ + strm.adler = state.wrap & 1; + } + state.mode = HEAD; + state.last = 0; + state.havedict = 0; + state.dmax = 32768; + state.head = null/*Z_NULL*/; + state.hold = 0; + state.bits = 0; + //state.lencode = state.distcode = state.next = state.codes; + state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS); + state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS); + + state.sane = 1; + state.back = -1; + //Tracev((stderr, "inflate: reset\n")); + return Z_OK; +} + +function inflateReset(strm) { + var state; + + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + state.wsize = 0; + state.whave = 0; + state.wnext = 0; + return inflateResetKeep(strm); + +} + +function inflateReset2(strm, windowBits) { + var wrap; + var state; + + /* get the state */ + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + + /* extract wrap request from windowBits parameter */ + if (windowBits < 0) { + wrap = 0; + windowBits = -windowBits; + } + else { + wrap = (windowBits >> 4) + 1; + if (windowBits < 48) { + windowBits &= 15; + } + } -// From deflate.h -/* =========================================================================== - * Internal compression state. - */ + /* set number of window bits, free window if different */ + if (windowBits && (windowBits < 8 || windowBits > 15)) { + return Z_STREAM_ERROR; + } + if (state.window !== null && state.wbits !== windowBits) { + state.window = null; + } -var LENGTH_CODES = 29; -/* number of length codes, not counting the special END_BLOCK code */ + /* update state and reset the rest of it */ + state.wrap = wrap; + state.wbits = windowBits; + return inflateReset(strm); +} -var LITERALS = 256; -/* number of literal bytes 0..255 */ +function inflateInit2(strm, windowBits) { + var ret; + var state; -var L_CODES = LITERALS + 1 + LENGTH_CODES; -/* number of Literal or Length codes, including the END_BLOCK code */ + if (!strm) { return Z_STREAM_ERROR; } + //strm.msg = Z_NULL; /* in case we return an error */ -var D_CODES = 30; -/* number of distance codes */ + state = new InflateState(); -var BL_CODES = 19; -/* number of codes used to transfer the bit lengths */ + //if (state === Z_NULL) return Z_MEM_ERROR; + //Tracev((stderr, "inflate: allocated\n")); + strm.state = state; + state.window = null/*Z_NULL*/; + ret = inflateReset2(strm, windowBits); + if (ret !== Z_OK) { + strm.state = null/*Z_NULL*/; + } + return ret; +} -var HEAP_SIZE = 2 * L_CODES + 1; -/* maximum heap size */ +function inflateInit(strm) { + return inflateInit2(strm, DEF_WBITS); +} -var MAX_BITS = 15; -/* All codes must not exceed MAX_BITS bits */ -var Buf_size = 16; -/* size of bit buffer in bi_buf */ +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +var virgin = true; +var lenfix, distfix; // We have no pointers in JS, so keep tables separate -/* =========================================================================== - * Constants - */ +function fixedtables(state) { + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + var sym; -var MAX_BL_BITS = 7; -/* Bit length codes must not exceed MAX_BL_BITS bits */ + lenfix = new utils.Buf32(512); + distfix = new utils.Buf32(32); -var END_BLOCK = 256; -/* end of block literal code */ + /* literal/length table */ + sym = 0; + while (sym < 144) { state.lens[sym++] = 8; } + while (sym < 256) { state.lens[sym++] = 9; } + while (sym < 280) { state.lens[sym++] = 7; } + while (sym < 288) { state.lens[sym++] = 8; } -var REP_3_6 = 16; -/* repeat previous bit length 3-6 times (2 bits of repeat count) */ + inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 }); -var REPZ_3_10 = 17; -/* repeat a zero length 3-10 times (3 bits of repeat count) */ + /* distance table */ + sym = 0; + while (sym < 32) { state.lens[sym++] = 5; } -var REPZ_11_138 = 18; -/* repeat a zero length 11-138 times (7 bits of repeat count) */ + inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 }); -/* eslint-disable comma-spacing,array-bracket-spacing */ -var extra_lbits = /* extra bits for each length code */ - [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]; + /* do this just once */ + virgin = false; + } -var extra_dbits = /* extra bits for each distance code */ - [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]; + state.lencode = lenfix; + state.lenbits = 9; + state.distcode = distfix; + state.distbits = 5; +} -var extra_blbits = /* extra bits for each bit length code */ - [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]; -var bl_order = - [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]; -/* eslint-enable comma-spacing,array-bracket-spacing */ +/* + Update the window with the last wsize (normally 32K) bytes written before + returning. If window does not exist yet, create it. This is only called + when a window is already in use, or when output has been written during this + inflate call, but the end of the deflate stream has not been reached yet. + It is also called to create a window for dictionary data when a dictionary + is loaded. -/* The lengths of the bit length codes are sent in order of decreasing - * probability, to avoid transmitting the lengths for unused bit length codes. + Providing output buffers larger than 32K to inflate() should provide a speed + advantage, since only the last 32K of output is copied to the sliding window + upon return from inflate(), and since all distances after the first 32K of + output will fall in the output data, making match copies simpler and faster. + The advantage may be dependent on the size of the processor's data caches. */ +function updatewindow(strm, src, end, copy) { + var dist; + var state = strm.state; -/* =========================================================================== - * Local data. These are initialized only once. - */ + /* if it hasn't been done already, allocate space for the window */ + if (state.window === null) { + state.wsize = 1 << state.wbits; + state.wnext = 0; + state.whave = 0; -// We pre-fill arrays with 0 to avoid uninitialized gaps + state.window = new utils.Buf8(state.wsize); + } -var DIST_CODE_LEN = 512; /* see definition of array dist_code below */ + /* copy state->wsize or less output bytes into the circular window */ + if (copy >= state.wsize) { + utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0); + state.wnext = 0; + state.whave = state.wsize; + } + else { + dist = state.wsize - state.wnext; + if (dist > copy) { + dist = copy; + } + //zmemcpy(state->window + state->wnext, end - copy, dist); + utils.arraySet(state.window, src, end - copy, dist, state.wnext); + copy -= dist; + if (copy) { + //zmemcpy(state->window, end - copy, copy); + utils.arraySet(state.window, src, end - copy, copy, 0); + state.wnext = copy; + state.whave = state.wsize; + } + else { + state.wnext += dist; + if (state.wnext === state.wsize) { state.wnext = 0; } + if (state.whave < state.wsize) { state.whave += dist; } + } + } + return 0; +} -// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1 -var static_ltree = new Array((L_CODES + 2) * 2); -zero(static_ltree); -/* The static literal tree. Since the bit lengths are imposed, there is no - * need for the L_CODES extra codes used during heap construction. However - * The codes 286 and 287 are needed to build a canonical tree (see _tr_init - * below). - */ +function inflate(strm, flush) { + var state; + var input, output; // input/output buffers + var next; /* next input INDEX */ + var put; /* next output INDEX */ + var have, left; /* available input and output */ + var hold; /* bit buffer */ + var bits; /* bits in bit buffer */ + var _in, _out; /* save starting available input and output */ + var copy; /* number of stored or match bytes to copy */ + var from; /* where to copy match bytes from */ + var from_source; + var here = 0; /* current decoding table entry */ + var here_bits, here_op, here_val; // paked "here" denormalized (JS specific) + //var last; /* parent table entry */ + var last_bits, last_op, last_val; // paked "last" denormalized (JS specific) + var len; /* length to copy for repeats, bits to drop */ + var ret; /* return code */ + var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */ + var opts; -var static_dtree = new Array(D_CODES * 2); -zero(static_dtree); -/* The static distance tree. (Actually a trivial tree since all codes use - * 5 bits.) - */ + var n; // temporary var for NEED_BITS -var _dist_code = new Array(DIST_CODE_LEN); -zero(_dist_code); -/* Distance codes. The first 256 values correspond to the distances - * 3 .. 258, the last 256 values correspond to the top 8 bits of - * the 15 bit distances. - */ + var order = /* permutation of code lengths */ + [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; -var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1); -zero(_length_code); -/* length code for each normalized match length (0 == MIN_MATCH) */ -var base_length = new Array(LENGTH_CODES); -zero(base_length); -/* First normalized length for each code (0 = MIN_MATCH) */ + if (!strm || !strm.state || !strm.output || + (!strm.input && strm.avail_in !== 0)) { + return Z_STREAM_ERROR; + } -var base_dist = new Array(D_CODES); -zero(base_dist); -/* First normalized distance for each code (0 = distance of 1) */ + state = strm.state; + if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */ -function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { + //--- LOAD() --- + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + //--- - this.static_tree = static_tree; /* static tree or NULL */ - this.extra_bits = extra_bits; /* extra bits for each code or NULL */ - this.extra_base = extra_base; /* base index for extra_bits */ - this.elems = elems; /* max number of elements in the tree */ - this.max_length = max_length; /* max bit length for the codes */ + _in = have; + _out = left; + ret = Z_OK; + + inf_leave: // goto emulation + for (;;) { + switch (state.mode) { + case HEAD: + if (state.wrap === 0) { + state.mode = TYPEDO; + break; + } + //=== NEEDBITS(16); + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */ + state.check = 0/*crc32(0L, Z_NULL, 0)*/; + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// - // show if `static_tree` has data or dummy - needed for monomorphic objects - this.has_stree = static_tree && static_tree.length; -} + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = FLAGS; + break; + } + state.flags = 0; /* expect zlib header */ + if (state.head) { + state.head.done = false; + } + if (!(state.wrap & 1) || /* check if zlib header allowed */ + (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) { + strm.msg = 'incorrect header check'; + state.mode = BAD; + break; + } + if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) { + strm.msg = 'unknown compression method'; + state.mode = BAD; + break; + } + //--- DROPBITS(4) ---// + hold >>>= 4; + bits -= 4; + //---// + len = (hold & 0x0f)/*BITS(4)*/ + 8; + if (state.wbits === 0) { + state.wbits = len; + } + else if (len > state.wbits) { + strm.msg = 'invalid window size'; + state.mode = BAD; + break; + } + state.dmax = 1 << len; + //Tracev((stderr, "inflate: zlib header ok\n")); + strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; + state.mode = hold & 0x200 ? DICTID : TYPE; + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + break; + case FLAGS: + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.flags = hold; + if ((state.flags & 0xff) !== Z_DEFLATED) { + strm.msg = 'unknown compression method'; + state.mode = BAD; + break; + } + if (state.flags & 0xe000) { + strm.msg = 'unknown header flags set'; + state.mode = BAD; + break; + } + if (state.head) { + state.head.text = ((hold >> 8) & 1); + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = TIME; + /* falls through */ + case TIME: + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (state.head) { + state.head.time = hold; + } + if (state.flags & 0x0200) { + //=== CRC4(state.check, hold) + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + hbuf[2] = (hold >>> 16) & 0xff; + hbuf[3] = (hold >>> 24) & 0xff; + state.check = crc32(state.check, hbuf, 4, 0); + //=== + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = OS; + /* falls through */ + case OS: + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (state.head) { + state.head.xflags = (hold & 0xff); + state.head.os = (hold >> 8); + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = EXLEN; + /* falls through */ + case EXLEN: + if (state.flags & 0x0400) { + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.length = hold; + if (state.head) { + state.head.extra_len = hold; + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + } + else if (state.head) { + state.head.extra = null/*Z_NULL*/; + } + state.mode = EXTRA; + /* falls through */ + case EXTRA: + if (state.flags & 0x0400) { + copy = state.length; + if (copy > have) { copy = have; } + if (copy) { + if (state.head) { + len = state.head.extra_len - state.length; + if (!state.head.extra) { + // Use untyped array for more convenient processing later + state.head.extra = new Array(state.head.extra_len); + } + utils.arraySet( + state.head.extra, + input, + next, + // extra field is limited to 65536 bytes + // - no need for additional size check + copy, + /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ + len + ); + //zmemcpy(state.head.extra + len, next, + // len + copy > state.head.extra_max ? + // state.head.extra_max - len : copy); + } + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + state.length -= copy; + } + if (state.length) { break inf_leave; } + } + state.length = 0; + state.mode = NAME; + /* falls through */ + case NAME: + if (state.flags & 0x0800) { + if (have === 0) { break inf_leave; } + copy = 0; + do { + // TODO: 2 or 1 bytes? + len = input[next + copy++]; + /* use constant limit because in js we should not preallocate memory */ + if (state.head && len && + (state.length < 65536 /*state.head.name_max*/)) { + state.head.name += String.fromCharCode(len); + } + } while (len && copy < have); + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { break inf_leave; } + } + else if (state.head) { + state.head.name = null; + } + state.length = 0; + state.mode = COMMENT; + /* falls through */ + case COMMENT: + if (state.flags & 0x1000) { + if (have === 0) { break inf_leave; } + copy = 0; + do { + len = input[next + copy++]; + /* use constant limit because in js we should not preallocate memory */ + if (state.head && len && + (state.length < 65536 /*state.head.comm_max*/)) { + state.head.comment += String.fromCharCode(len); + } + } while (len && copy < have); + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { break inf_leave; } + } + else if (state.head) { + state.head.comment = null; + } + state.mode = HCRC; + /* falls through */ + case HCRC: + if (state.flags & 0x0200) { + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (hold !== (state.check & 0xffff)) { + strm.msg = 'header crc mismatch'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + } + if (state.head) { + state.head.hcrc = ((state.flags >> 9) & 1); + state.head.done = true; + } + strm.adler = state.check = 0; + state.mode = TYPE; + break; + case DICTID: + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + strm.adler = state.check = zswap32(hold); + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = DICT; + /* falls through */ + case DICT: + if (state.havedict === 0) { + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + return Z_NEED_DICT; + } + strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; + state.mode = TYPE; + /* falls through */ + case TYPE: + if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; } + /* falls through */ + case TYPEDO: + if (state.last) { + //--- BYTEBITS() ---// + hold >>>= bits & 7; + bits -= bits & 7; + //---// + state.mode = CHECK; + break; + } + //=== NEEDBITS(3); */ + while (bits < 3) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.last = (hold & 0x01)/*BITS(1)*/; + //--- DROPBITS(1) ---// + hold >>>= 1; + bits -= 1; + //---// -var static_l_desc; -var static_d_desc; -var static_bl_desc; + switch ((hold & 0x03)/*BITS(2)*/) { + case 0: /* stored block */ + //Tracev((stderr, "inflate: stored block%s\n", + // state.last ? " (last)" : "")); + state.mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + //Tracev((stderr, "inflate: fixed codes block%s\n", + // state.last ? " (last)" : "")); + state.mode = LEN_; /* decode codes */ + if (flush === Z_TREES) { + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + break inf_leave; + } + break; + case 2: /* dynamic block */ + //Tracev((stderr, "inflate: dynamic codes block%s\n", + // state.last ? " (last)" : "")); + state.mode = TABLE; + break; + case 3: + strm.msg = 'invalid block type'; + state.mode = BAD; + } + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + break; + case STORED: + //--- BYTEBITS() ---// /* go to byte boundary */ + hold >>>= bits & 7; + bits -= bits & 7; + //---// + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) { + strm.msg = 'invalid stored block lengths'; + state.mode = BAD; + break; + } + state.length = hold & 0xffff; + //Tracev((stderr, "inflate: stored length %u\n", + // state.length)); + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = COPY_; + if (flush === Z_TREES) { break inf_leave; } + /* falls through */ + case COPY_: + state.mode = COPY; + /* falls through */ + case COPY: + copy = state.length; + if (copy) { + if (copy > have) { copy = have; } + if (copy > left) { copy = left; } + if (copy === 0) { break inf_leave; } + //--- zmemcpy(put, next, copy); --- + utils.arraySet(output, input, next, copy, put); + //---// + have -= copy; + next += copy; + left -= copy; + put += copy; + state.length -= copy; + break; + } + //Tracev((stderr, "inflate: stored end\n")); + state.mode = TYPE; + break; + case TABLE: + //=== NEEDBITS(14); */ + while (bits < 14) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257; + //--- DROPBITS(5) ---// + hold >>>= 5; + bits -= 5; + //---// + state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1; + //--- DROPBITS(5) ---// + hold >>>= 5; + bits -= 5; + //---// + state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4; + //--- DROPBITS(4) ---// + hold >>>= 4; + bits -= 4; + //---// +//#ifndef PKZIP_BUG_WORKAROUND + if (state.nlen > 286 || state.ndist > 30) { + strm.msg = 'too many length or distance symbols'; + state.mode = BAD; + break; + } +//#endif + //Tracev((stderr, "inflate: table sizes ok\n")); + state.have = 0; + state.mode = LENLENS; + /* falls through */ + case LENLENS: + while (state.have < state.ncode) { + //=== NEEDBITS(3); + while (bits < 3) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.lens[order[state.have++]] = (hold & 0x07);//BITS(3); + //--- DROPBITS(3) ---// + hold >>>= 3; + bits -= 3; + //---// + } + while (state.have < 19) { + state.lens[order[state.have++]] = 0; + } + // We have separate tables & no pointers. 2 commented lines below not needed. + //state.next = state.codes; + //state.lencode = state.next; + // Switch to use dynamic table + state.lencode = state.lendyn; + state.lenbits = 7; + opts = { bits: state.lenbits }; + ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); + state.lenbits = opts.bits; -function TreeDesc(dyn_tree, stat_desc) { - this.dyn_tree = dyn_tree; /* the dynamic tree */ - this.max_code = 0; /* largest code with non zero frequency */ - this.stat_desc = stat_desc; /* the corresponding static tree */ -} + if (ret) { + strm.msg = 'invalid code lengths set'; + state.mode = BAD; + break; + } + //Tracev((stderr, "inflate: code lengths ok\n")); + state.have = 0; + state.mode = CODELENS; + /* falls through */ + case CODELENS: + while (state.have < state.nlen + state.ndist) { + for (;;) { + here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + if ((here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if (here_val < 16) { + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.lens[state.have++] = here_val; + } + else { + if (here_val === 16) { + //=== NEEDBITS(here.bits + 2); + n = here_bits + 2; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + if (state.have === 0) { + strm.msg = 'invalid bit length repeat'; + state.mode = BAD; + break; + } + len = state.lens[state.have - 1]; + copy = 3 + (hold & 0x03);//BITS(2); + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + } + else if (here_val === 17) { + //=== NEEDBITS(here.bits + 3); + n = here_bits + 3; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + len = 0; + copy = 3 + (hold & 0x07);//BITS(3); + //--- DROPBITS(3) ---// + hold >>>= 3; + bits -= 3; + //---// + } + else { + //=== NEEDBITS(here.bits + 7); + n = here_bits + 7; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + len = 0; + copy = 11 + (hold & 0x7f);//BITS(7); + //--- DROPBITS(7) ---// + hold >>>= 7; + bits -= 7; + //---// + } + if (state.have + copy > state.nlen + state.ndist) { + strm.msg = 'invalid bit length repeat'; + state.mode = BAD; + break; + } + while (copy--) { + state.lens[state.have++] = len; + } + } + } + /* handle error breaks in while */ + if (state.mode === BAD) { break; } -function d_code(dist) { - return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; -} + /* check for end-of-block code (better have one) */ + if (state.lens[256] === 0) { + strm.msg = 'invalid code -- missing end-of-block'; + state.mode = BAD; + break; + } + /* build code tables -- note: do not change the lenbits or distbits + values here (9 and 6) without reading the comments in inftrees.h + concerning the ENOUGH constants, which depend on those values */ + state.lenbits = 9; -/* =========================================================================== - * Output a short LSB first on the stream. - * IN assertion: there is enough room in pendingBuf. - */ -function put_short(s, w) { -// put_byte(s, (uch)((w) & 0xff)); -// put_byte(s, (uch)((ush)(w) >> 8)); - s.pending_buf[s.pending++] = (w) & 0xff; - s.pending_buf[s.pending++] = (w >>> 8) & 0xff; -} + opts = { bits: state.lenbits }; + ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); + // We have separate tables & no pointers. 2 commented lines below not needed. + // state.next_index = opts.table_index; + state.lenbits = opts.bits; + // state.lencode = state.next; + if (ret) { + strm.msg = 'invalid literal/lengths set'; + state.mode = BAD; + break; + } -/* =========================================================================== - * Send a value on a given number of bits. - * IN assertion: length <= 16 and value fits in length bits. - */ -function send_bits(s, value, length) { - if (s.bi_valid > (Buf_size - length)) { - s.bi_buf |= (value << s.bi_valid) & 0xffff; - put_short(s, s.bi_buf); - s.bi_buf = value >> (Buf_size - s.bi_valid); - s.bi_valid += length - Buf_size; - } else { - s.bi_buf |= (value << s.bi_valid) & 0xffff; - s.bi_valid += length; - } -} + state.distbits = 6; + //state.distcode.copy(state.codes); + // Switch to use dynamic table + state.distcode = state.distdyn; + opts = { bits: state.distbits }; + ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); + // We have separate tables & no pointers. 2 commented lines below not needed. + // state.next_index = opts.table_index; + state.distbits = opts.bits; + // state.distcode = state.next; + if (ret) { + strm.msg = 'invalid distances set'; + state.mode = BAD; + break; + } + //Tracev((stderr, 'inflate: codes ok\n')); + state.mode = LEN_; + if (flush === Z_TREES) { break inf_leave; } + /* falls through */ + case LEN_: + state.mode = LEN; + /* falls through */ + case LEN: + if (have >= 6 && left >= 258) { + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + inflate_fast(strm, _out); + //--- LOAD() --- + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + //--- -function send_code(s, c, tree) { - send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/); -} + if (state.mode === TYPE) { + state.back = -1; + } + break; + } + state.back = 0; + for (;;) { + here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + if (here_bits <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if (here_op && (here_op & 0xf0) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (;;) { + here = state.lencode[last_val + + ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; -/* =========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ -function bi_reverse(code, len) { - var res = 0; - do { - res |= code & 1; - code >>>= 1; - res <<= 1; - } while (--len > 0); - return res >>> 1; -} + if ((last_bits + here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + //--- DROPBITS(last.bits) ---// + hold >>>= last_bits; + bits -= last_bits; + //---// + state.back += last_bits; + } + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.back += here_bits; + state.length = here_val; + if (here_op === 0) { + //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + // "inflate: literal '%c'\n" : + // "inflate: literal 0x%02x\n", here.val)); + state.mode = LIT; + break; + } + if (here_op & 32) { + //Tracevv((stderr, "inflate: end of block\n")); + state.back = -1; + state.mode = TYPE; + break; + } + if (here_op & 64) { + strm.msg = 'invalid literal/length code'; + state.mode = BAD; + break; + } + state.extra = here_op & 15; + state.mode = LENEXT; + /* falls through */ + case LENEXT: + if (state.extra) { + //=== NEEDBITS(state.extra); + n = state.extra; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; + //--- DROPBITS(state.extra) ---// + hold >>>= state.extra; + bits -= state.extra; + //---// + state.back += state.extra; + } + //Tracevv((stderr, "inflate: length %u\n", state.length)); + state.was = state.length; + state.mode = DIST; + /* falls through */ + case DIST: + for (;;) { + here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + if ((here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if ((here_op & 0xf0) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (;;) { + here = state.distcode[last_val + + ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; -/* =========================================================================== - * Flush the bit buffer, keeping at most 7 bits in it. - */ -function bi_flush(s) { - if (s.bi_valid === 16) { - put_short(s, s.bi_buf); - s.bi_buf = 0; - s.bi_valid = 0; + if ((last_bits + here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + //--- DROPBITS(last.bits) ---// + hold >>>= last_bits; + bits -= last_bits; + //---// + state.back += last_bits; + } + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.back += here_bits; + if (here_op & 64) { + strm.msg = 'invalid distance code'; + state.mode = BAD; + break; + } + state.offset = here_val; + state.extra = (here_op) & 15; + state.mode = DISTEXT; + /* falls through */ + case DISTEXT: + if (state.extra) { + //=== NEEDBITS(state.extra); + n = state.extra; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; + //--- DROPBITS(state.extra) ---// + hold >>>= state.extra; + bits -= state.extra; + //---// + state.back += state.extra; + } +//#ifdef INFLATE_STRICT + if (state.offset > state.dmax) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break; + } +//#endif + //Tracevv((stderr, "inflate: distance %u\n", state.offset)); + state.mode = MATCH; + /* falls through */ + case MATCH: + if (left === 0) { break inf_leave; } + copy = _out - left; + if (state.offset > copy) { /* copy from window */ + copy = state.offset - copy; + if (copy > state.whave) { + if (state.sane) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break; + } +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility +//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR +// Trace((stderr, "inflate.c too far\n")); +// copy -= state.whave; +// if (copy > state.length) { copy = state.length; } +// if (copy > left) { copy = left; } +// left -= copy; +// state.length -= copy; +// do { +// output[put++] = 0; +// } while (--copy); +// if (state.length === 0) { state.mode = LEN; } +// break; +//#endif + } + if (copy > state.wnext) { + copy -= state.wnext; + from = state.wsize - copy; + } + else { + from = state.wnext - copy; + } + if (copy > state.length) { copy = state.length; } + from_source = state.window; + } + else { /* copy from output */ + from_source = output; + from = put - state.offset; + copy = state.length; + } + if (copy > left) { copy = left; } + left -= copy; + state.length -= copy; + do { + output[put++] = from_source[from++]; + } while (--copy); + if (state.length === 0) { state.mode = LEN; } + break; + case LIT: + if (left === 0) { break inf_leave; } + output[put++] = state.length; + left--; + state.mode = LEN; + break; + case CHECK: + if (state.wrap) { + //=== NEEDBITS(32); + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + // Use '|' instead of '+' to make sure that result is signed + hold |= input[next++] << bits; + bits += 8; + } + //===// + _out -= left; + strm.total_out += _out; + state.total += _out; + if (_out) { + strm.adler = state.check = + /*UPDATE(state.check, put - _out, _out);*/ + (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out)); - } else if (s.bi_valid >= 8) { - s.pending_buf[s.pending++] = s.bi_buf & 0xff; - s.bi_buf >>= 8; - s.bi_valid -= 8; + } + _out = left; + // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too + if ((state.flags ? hold : zswap32(hold)) !== state.check) { + strm.msg = 'incorrect data check'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + //Tracev((stderr, "inflate: check matches trailer\n")); + } + state.mode = LENGTH; + /* falls through */ + case LENGTH: + if (state.wrap && state.flags) { + //=== NEEDBITS(32); + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (hold !== (state.total & 0xffffffff)) { + strm.msg = 'incorrect length check'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + //Tracev((stderr, "inflate: length matches trailer\n")); + } + state.mode = DONE; + /* falls through */ + case DONE: + ret = Z_STREAM_END; + break inf_leave; + case BAD: + ret = Z_DATA_ERROR; + break inf_leave; + case MEM: + return Z_MEM_ERROR; + case SYNC: + /* falls through */ + default: + return Z_STREAM_ERROR; + } } -} - - -/* =========================================================================== - * Compute the optimal bit lengths for a tree and update the total bit length - * for the current block. - * IN assertion: the fields freq and dad are set, heap[heap_max] and - * above are the tree nodes sorted by increasing frequency. - * OUT assertions: the field len is set to the optimal bit length, the - * array bl_count contains the frequencies for each bit length. - * The length opt_len is updated; static_len is also updated if stree is - * not null. - */ -function gen_bitlen(s, desc) -// deflate_state *s; -// tree_desc *desc; /* the tree descriptor */ -{ - var tree = desc.dyn_tree; - var max_code = desc.max_code; - var stree = desc.stat_desc.static_tree; - var has_stree = desc.stat_desc.has_stree; - var extra = desc.stat_desc.extra_bits; - var base = desc.stat_desc.extra_base; - var max_length = desc.stat_desc.max_length; - var h; /* heap index */ - var n, m; /* iterate over the tree elements */ - var bits; /* bit length */ - var xbits; /* extra bits */ - var f; /* frequency */ - var overflow = 0; /* number of elements with bit length too large */ - for (bits = 0; bits <= MAX_BITS; bits++) { - s.bl_count[bits] = 0; - } + // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave" - /* In a first pass, compute the optimal bit lengths (which may - * overflow in the case of the bit length tree). + /* + Return from inflate(), updating the total counts and the check value. + If there was no progress during the inflate() call, return a buffer + error. Call updatewindow() to create and/or update the window state. + Note: a memory error from inflate() is non-recoverable. */ - tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */ - - for (h = s.heap_max + 1; h < HEAP_SIZE; h++) { - n = s.heap[h]; - bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1; - if (bits > max_length) { - bits = max_length; - overflow++; - } - tree[n * 2 + 1]/*.Len*/ = bits; - /* We overwrite tree[n].Dad which is no longer needed */ - if (n > max_code) { continue; } /* not a leaf node */ + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- - s.bl_count[bits]++; - xbits = 0; - if (n >= base) { - xbits = extra[n - base]; - } - f = tree[n * 2]/*.Freq*/; - s.opt_len += f * (bits + xbits); - if (has_stree) { - s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits); + if (state.wsize || (_out !== strm.avail_out && state.mode < BAD && + (state.mode < CHECK || flush !== Z_FINISH))) { + if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) { + state.mode = MEM; + return Z_MEM_ERROR; } } - if (overflow === 0) { return; } - - // Trace((stderr,"\nbit length overflow\n")); - /* This happens for example on obj2 and pic of the Calgary corpus */ - - /* Find the first bit length which could increase: */ - do { - bits = max_length - 1; - while (s.bl_count[bits] === 0) { bits--; } - s.bl_count[bits]--; /* move one leaf down the tree */ - s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */ - s.bl_count[max_length]--; - /* The brother of the overflow item also moves one step up, - * but this does not affect bl_count[max_length] - */ - overflow -= 2; - } while (overflow > 0); - - /* Now recompute all bit lengths, scanning in increasing frequency. - * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all - * lengths instead of fixing only the wrong ones. This idea is taken - * from 'ar' written by Haruhiko Okumura.) - */ - for (bits = max_length; bits !== 0; bits--) { - n = s.bl_count[bits]; - while (n !== 0) { - m = s.heap[--h]; - if (m > max_code) { continue; } - if (tree[m * 2 + 1]/*.Len*/ !== bits) { - // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); - s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/; - tree[m * 2 + 1]/*.Len*/ = bits; - } - n--; - } + _in -= strm.avail_in; + _out -= strm.avail_out; + strm.total_in += _in; + strm.total_out += _out; + state.total += _out; + if (state.wrap && _out) { + strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ + (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out)); + } + strm.data_type = state.bits + (state.last ? 64 : 0) + + (state.mode === TYPE ? 128 : 0) + + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); + if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) { + ret = Z_BUF_ERROR; } + return ret; } +function inflateEnd(strm) { -/* =========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ -function gen_codes(tree, max_code, bl_count) -// ct_data *tree; /* the tree to decorate */ -// int max_code; /* largest code with non zero frequency */ -// ushf *bl_count; /* number of codes at each bit length */ -{ - var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */ - var code = 0; /* running code value */ - var bits; /* bit index */ - var n; /* code index */ - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - for (bits = 1; bits <= MAX_BITS; bits++) { - next_code[bits] = code = (code + bl_count[bits - 1]) << 1; + if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) { + return Z_STREAM_ERROR; } - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */ - length = 0; - for (code = 0; code < LENGTH_CODES - 1; code++) { - base_length[code] = length; - for (n = 0; n < (1 << extra_lbits[code]); n++) { - _length_code[length++] = code; - } - } - //Assert (length == 256, "tr_static_init: length != 256"); - /* Note that the length 255 (match length 258) can be represented - * in two different ways: code 284 + 5 bits or code 285, so we - * overwrite length_code[255] to use the best encoding: - */ - _length_code[length - 1] = code; +function inflateSetDictionary(strm, dictionary) { + var dictLength = dictionary.length; - /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ - dist = 0; - for (code = 0; code < 16; code++) { - base_dist[code] = dist; - for (n = 0; n < (1 << extra_dbits[code]); n++) { - _dist_code[dist++] = code; - } - } - //Assert (dist == 256, "tr_static_init: dist != 256"); - dist >>= 7; /* from now on, all distances are divided by 128 */ - for (; code < D_CODES; code++) { - base_dist[code] = dist << 7; - for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { - _dist_code[256 + dist++] = code; - } - } - //Assert (dist == 256, "tr_static_init: 256+dist != 512"); + var state; + var dictid; + var ret; - /* Construct the codes of the static literal tree */ - for (bits = 0; bits <= MAX_BITS; bits++) { - bl_count[bits] = 0; - } + /* check state */ + if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; } + state = strm.state; - n = 0; - while (n <= 143) { - static_ltree[n * 2 + 1]/*.Len*/ = 8; - n++; - bl_count[8]++; - } - while (n <= 255) { - static_ltree[n * 2 + 1]/*.Len*/ = 9; - n++; - bl_count[9]++; + if (state.wrap !== 0 && state.mode !== DICT) { + return Z_STREAM_ERROR; } - while (n <= 279) { - static_ltree[n * 2 + 1]/*.Len*/ = 7; - n++; - bl_count[7]++; + + /* check for correct dictionary identifier */ + if (state.mode === DICT) { + dictid = 1; /* adler32(0, null, 0)*/ + /* dictid = adler32(dictid, dictionary, dictLength); */ + dictid = adler32(dictid, dictionary, dictLength, 0); + if (dictid !== state.check) { + return Z_DATA_ERROR; + } } - while (n <= 287) { - static_ltree[n * 2 + 1]/*.Len*/ = 8; - n++; - bl_count[8]++; + /* copy dictionary to window using updatewindow(), which will amend the + existing dictionary if appropriate */ + ret = updatewindow(strm, dictionary, dictLength, dictLength); + if (ret) { + state.mode = MEM; + return Z_MEM_ERROR; } - /* Codes 286 and 287 do not exist, but we must include them in the - * tree construction to get a canonical Huffman tree (longest code - * all ones) - */ - gen_codes(static_ltree, L_CODES + 1, bl_count); + state.havedict = 1; + // Tracev((stderr, "inflate: dictionary set\n")); + return Z_OK; +} - /* The static distance tree is trivial: */ - for (n = 0; n < D_CODES; n++) { - static_dtree[n * 2 + 1]/*.Len*/ = 5; - static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5); - } +exports.inflateReset = inflateReset; +exports.inflateReset2 = inflateReset2; +exports.inflateResetKeep = inflateResetKeep; +exports.inflateInit = inflateInit; +exports.inflateInit2 = inflateInit2; +exports.inflate = inflate; +exports.inflateEnd = inflateEnd; +exports.inflateGetHeader = inflateGetHeader; +exports.inflateSetDictionary = inflateSetDictionary; +exports.inflateInfo = 'pako inflate (from Nodeca project)'; - // Now data ready and we can init static trees - static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); - static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS); - static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS); +/* Not implemented +exports.inflateCopy = inflateCopy; +exports.inflateGetDictionary = inflateGetDictionary; +exports.inflateMark = inflateMark; +exports.inflatePrime = inflatePrime; +exports.inflateSync = inflateSync; +exports.inflateSyncPoint = inflateSyncPoint; +exports.inflateUndermine = inflateUndermine; +*/ - //static_init_done = true; -} +},{"../utils/common":34,"./adler32":35,"./crc32":37,"./inffast":39,"./inftrees":41}],41:[function(require,module,exports){ +'use strict'; +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. -/* =========================================================================== - * Initialize a new block. - */ -function init_block(s) { - var n; /* iterates over tree elements */ +var utils = require('../utils/common'); - /* Initialize the trees. */ - for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; } - for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; } - for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; } +var MAXBITS = 15; +var ENOUGH_LENS = 852; +var ENOUGH_DISTS = 592; +//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); - s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1; - s.opt_len = s.static_len = 0; - s.last_lit = s.matches = 0; -} +var CODES = 0; +var LENS = 1; +var DISTS = 2; +var lbase = [ /* Length codes 257..285 base */ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 +]; -/* =========================================================================== - * Flush the bit buffer and align the output on a byte boundary - */ -function bi_windup(s) -{ - if (s.bi_valid > 8) { - put_short(s, s.bi_buf); - } else if (s.bi_valid > 0) { - //put_byte(s, (Byte)s->bi_buf); - s.pending_buf[s.pending++] = s.bi_buf; - } - s.bi_buf = 0; - s.bi_valid = 0; -} +var lext = [ /* Length codes 257..285 extra */ + 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78 +]; -/* =========================================================================== - * Copy a stored block, storing first the length and its - * one's complement if requested. - */ -function copy_block(s, buf, len, header) -//DeflateState *s; -//charf *buf; /* the input data */ -//unsigned len; /* its length */ -//int header; /* true if block header must be written */ +var dbase = [ /* Distance codes 0..29 base */ + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, + 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, + 8193, 12289, 16385, 24577, 0, 0 +]; + +var dext = [ /* Distance codes 0..29 extra */ + 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, + 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, + 28, 28, 29, 29, 64, 64 +]; + +module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) { - bi_windup(s); /* align on byte boundary */ + var bits = opts.bits; + //here = opts.here; /* table entry for duplication */ - if (header) { - put_short(s, len); - put_short(s, ~len); - } -// while (len--) { -// put_byte(s, *buf++); -// } - utils.arraySet(s.pending_buf, s.window, buf, len, s.pending); - s.pending += len; -} + var len = 0; /* a code's length in bits */ + var sym = 0; /* index of code symbols */ + var min = 0, max = 0; /* minimum and maximum code lengths */ + var root = 0; /* number of index bits for root table */ + var curr = 0; /* number of index bits for current table */ + var drop = 0; /* code bits to drop for sub-table */ + var left = 0; /* number of prefix codes available */ + var used = 0; /* code entries in table used */ + var huff = 0; /* Huffman code */ + var incr; /* for incrementing code, index */ + var fill; /* index for replicating entries */ + var low; /* low bits for current root entry */ + var mask; /* mask for low root bits */ + var next; /* next available space in table */ + var base = null; /* base value table to use */ + var base_index = 0; +// var shoextra; /* extra bits table to use */ + var end; /* use base and extra for symbol > end */ + var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */ + var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */ + var extra = null; + var extra_index = 0; -/* =========================================================================== - * Compares to subtrees, using the tree depth as tie breaker when - * the subtrees have equal frequency. This minimizes the worst case length. - */ -function smaller(tree, n, m, depth) { - var _n2 = n * 2; - var _m2 = m * 2; - return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ || - (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m])); -} + var here_bits, here_op, here_val; -/* =========================================================================== - * Restore the heap property by moving down the tree starting at node k, - * exchanging a node with the smallest of its two sons if necessary, stopping - * when the heap property is re-established (each father smaller than its - * two sons). - */ -function pqdownheap(s, tree, k) -// deflate_state *s; -// ct_data *tree; /* the tree to restore */ -// int k; /* node to move down */ -{ - var v = s.heap[k]; - var j = k << 1; /* left son of k */ - while (j <= s.heap_len) { - /* Set j to the smallest of the two sons: */ - if (j < s.heap_len && - smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { - j++; - } - /* Exit if v is smaller than both sons */ - if (smaller(tree, v, s.heap[j], s.depth)) { break; } + /* + Process a set of code lengths to create a canonical Huffman code. The + code lengths are lens[0..codes-1]. Each length corresponds to the + symbols 0..codes-1. The Huffman code is generated by first sorting the + symbols by length from short to long, and retaining the symbol order + for codes with equal lengths. Then the code starts with all zero bits + for the first code of the shortest length, and the codes are integer + increments for the same length, and zeros are appended as the length + increases. For the deflate format, these bits are stored backwards + from their more natural integer increment ordering, and so when the + decoding tables are built in the large loop below, the integer codes + are incremented backwards. - /* Exchange v with the smallest son */ - s.heap[k] = s.heap[j]; - k = j; + This routine assumes, but does not check, that all of the entries in + lens[] are in the range 0..MAXBITS. The caller must assure this. + 1..MAXBITS is interpreted as that code length. zero means that that + symbol does not occur in this code. + + The codes are sorted by computing a count of codes for each length, + creating from that a table of starting indices for each length in the + sorted table, and then entering the symbols in order in the sorted + table. The sorted table is work[], with that space being provided by + the caller. + + The length counts are used for other purposes as well, i.e. finding + the minimum and maximum length codes, determining if there are any + codes at all, checking for a valid set of lengths, and looking ahead + at length counts to determine sub-table sizes when building the + decoding tables. + */ - /* And continue down the tree, setting j to the left son of k */ - j <<= 1; + /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ + for (len = 0; len <= MAXBITS; len++) { + count[len] = 0; + } + for (sym = 0; sym < codes; sym++) { + count[lens[lens_index + sym]]++; } - s.heap[k] = v; -} - -// inlined manually -// var SMALLEST = 1; + /* bound code lengths, force root to be within code lengths */ + root = bits; + for (max = MAXBITS; max >= 1; max--) { + if (count[max] !== 0) { break; } + } + if (root > max) { + root = max; + } + if (max === 0) { /* no symbols to code at all */ + //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */ + //table.bits[opts.table_index] = 1; //here.bits = (var char)1; + //table.val[opts.table_index++] = 0; //here.val = (var short)0; + table[table_index++] = (1 << 24) | (64 << 16) | 0; -/* =========================================================================== - * Send the block data compressed using the given Huffman trees - */ -function compress_block(s, ltree, dtree) -// deflate_state *s; -// const ct_data *ltree; /* literal tree */ -// const ct_data *dtree; /* distance tree */ -{ - var dist; /* distance of matched string */ - var lc; /* match length or unmatched char (if dist == 0) */ - var lx = 0; /* running index in l_buf */ - var code; /* the code to send */ - var extra; /* number of extra bits to send */ - if (s.last_lit !== 0) { - do { - dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]); - lc = s.pending_buf[s.l_buf + lx]; - lx++; + //table.op[opts.table_index] = 64; + //table.bits[opts.table_index] = 1; + //table.val[opts.table_index++] = 0; + table[table_index++] = (1 << 24) | (64 << 16) | 0; - if (dist === 0) { - send_code(s, lc, ltree); /* send a literal byte */ - //Tracecv(isgraph(lc), (stderr," '%c' ", lc)); - } else { - /* Here, lc is the match length - MIN_MATCH */ - code = _length_code[lc]; - send_code(s, code + LITERALS + 1, ltree); /* send the length code */ - extra = extra_lbits[code]; - if (extra !== 0) { - lc -= base_length[code]; - send_bits(s, lc, extra); /* send the extra length bits */ - } - dist--; /* dist is now the match distance - 1 */ - code = d_code(dist); - //Assert (code < D_CODES, "bad d_code"); + opts.bits = 1; + return 0; /* no symbols, but wait for decoding to report error */ + } + for (min = 1; min < max; min++) { + if (count[min] !== 0) { break; } + } + if (root < min) { + root = min; + } - send_code(s, code, dtree); /* send the distance code */ - extra = extra_dbits[code]; - if (extra !== 0) { - dist -= base_dist[code]; - send_bits(s, dist, extra); /* send the extra distance bits */ - } - } /* literal or match pair ? */ + /* check for an over-subscribed or incomplete set of lengths */ + left = 1; + for (len = 1; len <= MAXBITS; len++) { + left <<= 1; + left -= count[len]; + if (left < 0) { + return -1; + } /* over-subscribed */ + } + if (left > 0 && (type === CODES || max !== 1)) { + return -1; /* incomplete set */ + } - /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ - //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, - // "pendingBuf overflow"); + /* generate offsets into symbol table for each length for sorting */ + offs[1] = 0; + for (len = 1; len < MAXBITS; len++) { + offs[len + 1] = offs[len] + count[len]; + } - } while (lx < s.last_lit); + /* sort symbols by length, by symbol order within each length */ + for (sym = 0; sym < codes; sym++) { + if (lens[lens_index + sym] !== 0) { + work[offs[lens[lens_index + sym]]++] = sym; + } } - send_code(s, END_BLOCK, ltree); -} + /* + Create and fill in decoding tables. In this loop, the table being + filled is at next and has curr index bits. The code being used is huff + with length len. That code is converted to an index by dropping drop + bits off of the bottom. For codes where len is less than drop + curr, + those top drop + curr - len bits are incremented through all values to + fill the table with replicated entries. + root is the number of index bits for the root table. When len exceeds + root, sub-tables are created pointed to by the root entry with an index + of the low root bits of huff. This is saved in low to check for when a + new sub-table should be started. drop is zero when the root table is + being filled, and drop is root when sub-tables are being filled. -/* =========================================================================== - * Construct one Huffman tree and assigns the code bit strings and lengths. - * Update the total bit length for the current block. - * IN assertion: the field freq is set for all tree elements. - * OUT assertions: the fields len and code are set to the optimal bit length - * and corresponding code. The length opt_len is updated; static_len is - * also updated if stree is not null. The field max_code is set. - */ -function build_tree(s, desc) -// deflate_state *s; -// tree_desc *desc; /* the tree descriptor */ -{ - var tree = desc.dyn_tree; - var stree = desc.stat_desc.static_tree; - var has_stree = desc.stat_desc.has_stree; - var elems = desc.stat_desc.elems; - var n, m; /* iterate over heap elements */ - var max_code = -1; /* largest code with non zero frequency */ - var node; /* new node being created */ + When a new sub-table is needed, it is necessary to look ahead in the + code lengths to determine what size sub-table is needed. The length + counts are used for this, and so count[] is decremented as codes are + entered in the tables. - /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. - * heap[0] is not used. + used keeps track of how many table entries have been allocated from the + provided *table space. It is checked for LENS and DIST tables against + the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in + the initial root table size constants. See the comments in inftrees.h + for more information. + + sym increments through all symbols, and the loop terminates when + all codes of length max, i.e. all codes, have been processed. This + routine permits incomplete codes, so another loop after this one fills + in the rest of the decoding tables with invalid code markers. */ - s.heap_len = 0; - s.heap_max = HEAP_SIZE; - for (n = 0; n < elems; n++) { - if (tree[n * 2]/*.Freq*/ !== 0) { - s.heap[++s.heap_len] = max_code = n; - s.depth[n] = 0; + /* set up for code type */ + // poor man optimization - use if-else instead of switch, + // to avoid deopts in old v8 + if (type === CODES) { + base = extra = work; /* dummy value--not used */ + end = 19; - } else { - tree[n * 2 + 1]/*.Len*/ = 0; - } + } else if (type === LENS) { + base = lbase; + base_index -= 257; + extra = lext; + extra_index -= 257; + end = 256; + + } else { /* DISTS */ + base = dbase; + extra = dext; + end = -1; } - /* The pkzip format requires that at least one distance code exists, - * and that at least one bit should be sent even if there is only one - * possible code. So to avoid special checks later on we force at least - * two codes of non zero frequency. - */ - while (s.heap_len < 2) { - node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0); - tree[node * 2]/*.Freq*/ = 1; - s.depth[node] = 0; - s.opt_len--; + /* initialize opts for loop */ + huff = 0; /* starting code */ + sym = 0; /* starting code symbol */ + len = min; /* starting code length */ + next = table_index; /* current table to fill in */ + curr = root; /* current table index bits */ + drop = 0; /* current bits to drop from code for index */ + low = -1; /* trigger new sub-table when len > root */ + used = 1 << root; /* use root table entries */ + mask = used - 1; /* mask for comparing low */ - if (has_stree) { - s.static_len -= stree[node * 2 + 1]/*.Len*/; - } - /* node is 0 or 1 so it does not have extra bits */ + /* check available table space */ + if ((type === LENS && used > ENOUGH_LENS) || + (type === DISTS && used > ENOUGH_DISTS)) { + return 1; } - desc.max_code = max_code; - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, - * establish sub-heaps of increasing lengths: - */ - for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); } + /* process all codes and make table entries */ + for (;;) { + /* create table entry */ + here_bits = len - drop; + if (work[sym] < end) { + here_op = 0; + here_val = work[sym]; + } + else if (work[sym] > end) { + here_op = extra[extra_index + work[sym]]; + here_val = base[base_index + work[sym]]; + } + else { + here_op = 32 + 64; /* end of block */ + here_val = 0; + } - /* Construct the Huffman tree by repeatedly combining the least two - * frequent nodes. - */ - node = elems; /* next internal node of the tree */ - do { - //pqremove(s, tree, n); /* n = node of least frequency */ - /*** pqremove ***/ - n = s.heap[1/*SMALLEST*/]; - s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--]; - pqdownheap(s, tree, 1/*SMALLEST*/); - /***/ + /* replicate for those indices with low len bits equal to huff */ + incr = 1 << (len - drop); + fill = 1 << curr; + min = fill; /* save offset to next table */ + do { + fill -= incr; + table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0; + } while (fill !== 0); + + /* backwards increment the len-bit code huff */ + incr = 1 << (len - 1); + while (huff & incr) { + incr >>= 1; + } + if (incr !== 0) { + huff &= incr - 1; + huff += incr; + } else { + huff = 0; + } - m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */ + /* go to next symbol, update count, len */ + sym++; + if (--count[len] === 0) { + if (len === max) { break; } + len = lens[lens_index + work[sym]]; + } - s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */ - s.heap[--s.heap_max] = m; + /* create new sub-table if needed */ + if (len > root && (huff & mask) !== low) { + /* if first time, transition to sub-tables */ + if (drop === 0) { + drop = root; + } - /* Create a new node father of n and m */ - tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/; - s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; - tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node; + /* increment past last table */ + next += min; /* here min is 1 << curr */ - /* and insert the new node in the heap */ - s.heap[1/*SMALLEST*/] = node++; - pqdownheap(s, tree, 1/*SMALLEST*/); + /* determine length of next table */ + curr = len - drop; + left = 1 << curr; + while (curr + drop < max) { + left -= count[curr + drop]; + if (left <= 0) { break; } + curr++; + left <<= 1; + } - } while (s.heap_len >= 2); + /* check for enough space */ + used += 1 << curr; + if ((type === LENS && used > ENOUGH_LENS) || + (type === DISTS && used > ENOUGH_DISTS)) { + return 1; + } - s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/]; + /* point entry in root table to sub-table */ + low = huff & mask; + /*table.op[low] = curr; + table.bits[low] = root; + table.val[low] = next - opts.table_index;*/ + table[low] = (root << 24) | (curr << 16) | (next - table_index) |0; + } + } - /* At this point, the fields freq and dad are set. We can now - * generate the bit lengths. - */ - gen_bitlen(s, desc); + /* fill in remaining table entry if code is incomplete (guaranteed to have + at most one remaining entry, since if the code is incomplete, the + maximum code length that was allowed to get this far is one bit) */ + if (huff !== 0) { + //table.op[next + huff] = 64; /* invalid code marker */ + //table.bits[next + huff] = len - drop; + //table.val[next + huff] = 0; + table[next + huff] = ((len - drop) << 24) | (64 << 16) |0; + } - /* The field len is now set, we can generate the bit codes */ - gen_codes(tree, max_code, s.bl_count); -} + /* set return parameters */ + //opts.table_index += used; + opts.bits = root; + return 0; +}; +},{"../utils/common":34}],42:[function(require,module,exports){ +'use strict'; -/* =========================================================================== - * Scan a literal or distance tree to determine the frequencies of the codes - * in the bit length tree. - */ -function scan_tree(s, tree, max_code) -// deflate_state *s; -// ct_data *tree; /* the tree to be scanned */ -// int max_code; /* and its largest code of non zero frequency */ -{ - var n; /* iterates over all tree elements */ - var prevlen = -1; /* last emitted length */ - var curlen; /* length of current code */ +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. - var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ +module.exports = { + 2: 'need dictionary', /* Z_NEED_DICT 2 */ + 1: 'stream end', /* Z_STREAM_END 1 */ + 0: '', /* Z_OK 0 */ + '-1': 'file error', /* Z_ERRNO (-1) */ + '-2': 'stream error', /* Z_STREAM_ERROR (-2) */ + '-3': 'data error', /* Z_DATA_ERROR (-3) */ + '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */ + '-5': 'buffer error', /* Z_BUF_ERROR (-5) */ + '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */ +}; - var count = 0; /* repeat count of the current code */ - var max_count = 7; /* max repeat count */ - var min_count = 4; /* min repeat count */ +},{}],43:[function(require,module,exports){ +'use strict'; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */ +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; +/* eslint-disable space-unary-ops */ - if (++count < max_count && curlen === nextlen) { - continue; +var utils = require('../utils/common'); - } else if (count < min_count) { - s.bl_tree[curlen * 2]/*.Freq*/ += count; +/* Public constants ==========================================================*/ +/* ===========================================================================*/ - } else if (curlen !== 0) { - if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; } - s.bl_tree[REP_3_6 * 2]/*.Freq*/++; +//var Z_FILTERED = 1; +//var Z_HUFFMAN_ONLY = 2; +//var Z_RLE = 3; +var Z_FIXED = 4; +//var Z_DEFAULT_STRATEGY = 0; - } else if (count <= 10) { - s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++; +/* Possible values of the data_type field (though see inflate()) */ +var Z_BINARY = 0; +var Z_TEXT = 1; +//var Z_ASCII = 1; // = Z_TEXT +var Z_UNKNOWN = 2; - } else { - s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++; - } +/*============================================================================*/ - count = 0; - prevlen = curlen; - if (nextlen === 0) { - max_count = 138; - min_count = 3; +function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } } - } else if (curlen === nextlen) { - max_count = 6; - min_count = 3; +// From zutil.h - } else { - max_count = 7; - min_count = 4; - } - } -} +var STORED_BLOCK = 0; +var STATIC_TREES = 1; +var DYN_TREES = 2; +/* The three kinds of block type */ +var MIN_MATCH = 3; +var MAX_MATCH = 258; +/* The minimum and maximum match lengths */ +// From deflate.h /* =========================================================================== - * Send a literal or distance tree in compressed form, using the codes in - * bl_tree. + * Internal compression state. */ -function send_tree(s, tree, max_code) -// deflate_state *s; -// ct_data *tree; /* the tree to be scanned */ -// int max_code; /* and its largest code of non zero frequency */ -{ - var n; /* iterates over all tree elements */ - var prevlen = -1; /* last emitted length */ - var curlen; /* length of current code */ - - var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ - - var count = 0; /* repeat count of the current code */ - var max_count = 7; /* max repeat count */ - var min_count = 4; /* min repeat count */ - - /* tree[max_code+1].Len = -1; */ /* guard already set */ - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; - - if (++count < max_count && curlen === nextlen) { - continue; +var LENGTH_CODES = 29; +/* number of length codes, not counting the special END_BLOCK code */ - } else if (count < min_count) { - do { send_code(s, curlen, s.bl_tree); } while (--count !== 0); +var LITERALS = 256; +/* number of literal bytes 0..255 */ - } else if (curlen !== 0) { - if (curlen !== prevlen) { - send_code(s, curlen, s.bl_tree); - count--; - } - //Assert(count >= 3 && count <= 6, " 3_6?"); - send_code(s, REP_3_6, s.bl_tree); - send_bits(s, count - 3, 2); +var L_CODES = LITERALS + 1 + LENGTH_CODES; +/* number of Literal or Length codes, including the END_BLOCK code */ - } else if (count <= 10) { - send_code(s, REPZ_3_10, s.bl_tree); - send_bits(s, count - 3, 3); +var D_CODES = 30; +/* number of distance codes */ - } else { - send_code(s, REPZ_11_138, s.bl_tree); - send_bits(s, count - 11, 7); - } +var BL_CODES = 19; +/* number of codes used to transfer the bit lengths */ - count = 0; - prevlen = curlen; - if (nextlen === 0) { - max_count = 138; - min_count = 3; +var HEAP_SIZE = 2 * L_CODES + 1; +/* maximum heap size */ - } else if (curlen === nextlen) { - max_count = 6; - min_count = 3; +var MAX_BITS = 15; +/* All codes must not exceed MAX_BITS bits */ - } else { - max_count = 7; - min_count = 4; - } - } -} +var Buf_size = 16; +/* size of bit buffer in bi_buf */ /* =========================================================================== - * Construct the Huffman tree for the bit lengths and return the index in - * bl_order of the last bit length code to send. + * Constants */ -function build_bl_tree(s) { - var max_blindex; /* index of last bit length code of non zero freq */ - /* Determine the bit length frequencies for literal and distance trees */ - scan_tree(s, s.dyn_ltree, s.l_desc.max_code); - scan_tree(s, s.dyn_dtree, s.d_desc.max_code); +var MAX_BL_BITS = 7; +/* Bit length codes must not exceed MAX_BL_BITS bits */ - /* Build the bit length tree: */ - build_tree(s, s.bl_desc); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. - */ +var END_BLOCK = 256; +/* end of block literal code */ - /* Determine the number of bit length codes to send. The pkzip format - * requires that at least 4 bit length codes be sent. (appnote.txt says - * 3 but the actual value used is 4.) - */ - for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { - if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) { - break; - } - } - /* Update opt_len to include the bit length tree and counts */ - s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; - //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", - // s->opt_len, s->static_len)); +var REP_3_6 = 16; +/* repeat previous bit length 3-6 times (2 bits of repeat count) */ - return max_blindex; -} +var REPZ_3_10 = 17; +/* repeat a zero length 3-10 times (3 bits of repeat count) */ +var REPZ_11_138 = 18; +/* repeat a zero length 11-138 times (7 bits of repeat count) */ -/* =========================================================================== - * Send the header for a block using dynamic Huffman trees: the counts, the - * lengths of the bit length codes, the literal tree and the distance tree. - * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. - */ -function send_all_trees(s, lcodes, dcodes, blcodes) -// deflate_state *s; -// int lcodes, dcodes, blcodes; /* number of codes for each tree */ -{ - var rank; /* index in bl_order */ +/* eslint-disable comma-spacing,array-bracket-spacing */ +var extra_lbits = /* extra bits for each length code */ + [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]; - //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); - //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, - // "too many codes"); - //Tracev((stderr, "\nbl counts: ")); - send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ - send_bits(s, dcodes - 1, 5); - send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ - for (rank = 0; rank < blcodes; rank++) { - //Tracev((stderr, "\nbl code %2d ", bl_order[rank])); - send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3); - } - //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); +var extra_dbits = /* extra bits for each distance code */ + [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]; - send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */ - //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); +var extra_blbits = /* extra bits for each bit length code */ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]; - send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */ - //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); -} +var bl_order = + [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]; +/* eslint-enable comma-spacing,array-bracket-spacing */ +/* The lengths of the bit length codes are sent in order of decreasing + * probability, to avoid transmitting the lengths for unused bit length codes. + */ /* =========================================================================== - * Check if the data type is TEXT or BINARY, using the following algorithm: - * - TEXT if the two conditions below are satisfied: - * a) There are no non-portable control characters belonging to the - * "black list" (0..6, 14..25, 28..31). - * b) There is at least one printable character belonging to the - * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). - * - BINARY otherwise. - * - The following partially-portable control characters form a - * "gray list" that is ignored in this detection algorithm: - * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). - * IN assertion: the fields Freq of dyn_ltree are set. + * Local data. These are initialized only once. */ -function detect_data_type(s) { - /* black_mask is the bit mask of black-listed bytes - * set bits 0..6, 14..25, and 28..31 - * 0xf3ffc07f = binary 11110011111111111100000001111111 - */ - var black_mask = 0xf3ffc07f; - var n; - - /* Check for non-textual ("black-listed") bytes. */ - for (n = 0; n <= 31; n++, black_mask >>>= 1) { - if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) { - return Z_BINARY; - } - } - - /* Check for textual ("white-listed") bytes. */ - if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 || - s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) { - return Z_TEXT; - } - for (n = 32; n < LITERALS; n++) { - if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) { - return Z_TEXT; - } - } - /* There are no "black-listed" or "white-listed" bytes: - * this stream either is empty or has tolerated ("gray-listed") bytes only. - */ - return Z_BINARY; -} +// We pre-fill arrays with 0 to avoid uninitialized gaps +var DIST_CODE_LEN = 512; /* see definition of array dist_code below */ -var static_init_done = false; +// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1 +var static_ltree = new Array((L_CODES + 2) * 2); +zero(static_ltree); +/* The static literal tree. Since the bit lengths are imposed, there is no + * need for the L_CODES extra codes used during heap construction. However + * The codes 286 and 287 are needed to build a canonical tree (see _tr_init + * below). + */ -/* =========================================================================== - * Initialize the tree data structures for a new zlib stream. +var static_dtree = new Array(D_CODES * 2); +zero(static_dtree); +/* The static distance tree. (Actually a trivial tree since all codes use + * 5 bits.) */ -function _tr_init(s) -{ - if (!static_init_done) { - tr_static_init(); - static_init_done = true; - } +var _dist_code = new Array(DIST_CODE_LEN); +zero(_dist_code); +/* Distance codes. The first 256 values correspond to the distances + * 3 .. 258, the last 256 values correspond to the top 8 bits of + * the 15 bit distances. + */ - s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); - s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); - s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); +var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1); +zero(_length_code); +/* length code for each normalized match length (0 == MIN_MATCH) */ - s.bi_buf = 0; - s.bi_valid = 0; +var base_length = new Array(LENGTH_CODES); +zero(base_length); +/* First normalized length for each code (0 = MIN_MATCH) */ - /* Initialize the first block of the first file: */ - init_block(s); -} +var base_dist = new Array(D_CODES); +zero(base_dist); +/* First normalized distance for each code (0 = distance of 1) */ -/* =========================================================================== - * Send a stored block - */ -function _tr_stored_block(s, buf, stored_len, last) -//DeflateState *s; -//charf *buf; /* input block */ -//ulg stored_len; /* length of input block */ -//int last; /* one if this is the last block for a file */ -{ - send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */ - copy_block(s, buf, stored_len, true); /* with header */ -} +function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { + this.static_tree = static_tree; /* static tree or NULL */ + this.extra_bits = extra_bits; /* extra bits for each code or NULL */ + this.extra_base = extra_base; /* base index for extra_bits */ + this.elems = elems; /* max number of elements in the tree */ + this.max_length = max_length; /* max bit length for the codes */ -/* =========================================================================== - * Send one empty static block to give enough lookahead for inflate. - * This takes 10 bits, of which 7 may remain in the bit buffer. - */ -function _tr_align(s) { - send_bits(s, STATIC_TREES << 1, 3); - send_code(s, END_BLOCK, static_ltree); - bi_flush(s); + // show if `static_tree` has data or dummy - needed for monomorphic objects + this.has_stree = static_tree && static_tree.length; } -/* =========================================================================== - * Determine the best encoding for the current block: dynamic trees, static - * trees or store, and output the encoded block to the zip file. - */ -function _tr_flush_block(s, buf, stored_len, last) -//DeflateState *s; -//charf *buf; /* input block, or NULL if too old */ -//ulg stored_len; /* length of input block */ -//int last; /* one if this is the last block for a file */ -{ - var opt_lenb, static_lenb; /* opt_len and static_len in bytes */ - var max_blindex = 0; /* index of last bit length code of non zero freq */ - - /* Build the Huffman trees unless a stored block is forced */ - if (s.level > 0) { +var static_l_desc; +var static_d_desc; +var static_bl_desc; - /* Check if the file is binary or text */ - if (s.strm.data_type === Z_UNKNOWN) { - s.strm.data_type = detect_data_type(s); - } - /* Construct the literal and distance trees */ - build_tree(s, s.l_desc); - // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, - // s->static_len)); +function TreeDesc(dyn_tree, stat_desc) { + this.dyn_tree = dyn_tree; /* the dynamic tree */ + this.max_code = 0; /* largest code with non zero frequency */ + this.stat_desc = stat_desc; /* the corresponding static tree */ +} - build_tree(s, s.d_desc); - // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, - // s->static_len)); - /* At this point, opt_len and static_len are the total bit lengths of - * the compressed block data, excluding the tree representations. - */ - /* Build the bit length tree for the above two trees, and get the index - * in bl_order of the last bit length code to send. - */ - max_blindex = build_bl_tree(s); - /* Determine the best encoding. Compute the block lengths in bytes. */ - opt_lenb = (s.opt_len + 3 + 7) >>> 3; - static_lenb = (s.static_len + 3 + 7) >>> 3; +function d_code(dist) { + return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; +} - // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", - // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, - // s->last_lit)); - if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; } +/* =========================================================================== + * Output a short LSB first on the stream. + * IN assertion: there is enough room in pendingBuf. + */ +function put_short(s, w) { +// put_byte(s, (uch)((w) & 0xff)); +// put_byte(s, (uch)((ush)(w) >> 8)); + s.pending_buf[s.pending++] = (w) & 0xff; + s.pending_buf[s.pending++] = (w >>> 8) & 0xff; +} + +/* =========================================================================== + * Send a value on a given number of bits. + * IN assertion: length <= 16 and value fits in length bits. + */ +function send_bits(s, value, length) { + if (s.bi_valid > (Buf_size - length)) { + s.bi_buf |= (value << s.bi_valid) & 0xffff; + put_short(s, s.bi_buf); + s.bi_buf = value >> (Buf_size - s.bi_valid); + s.bi_valid += length - Buf_size; } else { - // Assert(buf != (char*)0, "lost buf"); - opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ + s.bi_buf |= (value << s.bi_valid) & 0xffff; + s.bi_valid += length; } +} - if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) { - /* 4: two words for the lengths */ - /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. - * Otherwise we can't have processed more than WSIZE input bytes since - * the last block flush, because compression would have been - * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to - * transform a block into a stored block. - */ - _tr_stored_block(s, buf, stored_len, last); +function send_code(s, c, tree) { + send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/); +} - } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) { - send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); - compress_block(s, static_ltree, static_dtree); +/* =========================================================================== + * Reverse the first len bits of a code, using straightforward code (a faster + * method would use a table) + * IN assertion: 1 <= len <= 15 + */ +function bi_reverse(code, len) { + var res = 0; + do { + res |= code & 1; + code >>>= 1; + res <<= 1; + } while (--len > 0); + return res >>> 1; +} - } else { - send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); - send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); - compress_block(s, s.dyn_ltree, s.dyn_dtree); - } - // Assert (s->compressed_len == s->bits_sent, "bad compressed size"); - /* The above check is made mod 2^32, for files larger than 512 MB - * and uLong implemented on 32 bits. - */ - init_block(s); - if (last) { - bi_windup(s); +/* =========================================================================== + * Flush the bit buffer, keeping at most 7 bits in it. + */ +function bi_flush(s) { + if (s.bi_valid === 16) { + put_short(s, s.bi_buf); + s.bi_buf = 0; + s.bi_valid = 0; + + } else if (s.bi_valid >= 8) { + s.pending_buf[s.pending++] = s.bi_buf & 0xff; + s.bi_buf >>= 8; + s.bi_valid -= 8; } - // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, - // s->compressed_len-7*last)); } + /* =========================================================================== - * Save the match info and tally the frequency counts. Return true if - * the current block must be flushed. + * Compute the optimal bit lengths for a tree and update the total bit length + * for the current block. + * IN assertion: the fields freq and dad are set, heap[heap_max] and + * above are the tree nodes sorted by increasing frequency. + * OUT assertions: the field len is set to the optimal bit length, the + * array bl_count contains the frequencies for each bit length. + * The length opt_len is updated; static_len is also updated if stree is + * not null. */ -function _tr_tally(s, dist, lc) +function gen_bitlen(s, desc) // deflate_state *s; -// unsigned dist; /* distance of matched string */ -// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ +// tree_desc *desc; /* the tree descriptor */ { - //var out_length, in_length, dcode; - - s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff; - s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff; - - s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff; - s.last_lit++; - - if (dist === 0) { - /* lc is the unmatched char */ - s.dyn_ltree[lc * 2]/*.Freq*/++; - } else { - s.matches++; - /* Here, lc is the match length - MIN_MATCH */ - dist--; /* dist = match distance - 1 */ - //Assert((ush)dist < (ush)MAX_DIST(s) && - // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && - // (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); + var tree = desc.dyn_tree; + var max_code = desc.max_code; + var stree = desc.stat_desc.static_tree; + var has_stree = desc.stat_desc.has_stree; + var extra = desc.stat_desc.extra_bits; + var base = desc.stat_desc.extra_base; + var max_length = desc.stat_desc.max_length; + var h; /* heap index */ + var n, m; /* iterate over the tree elements */ + var bits; /* bit length */ + var xbits; /* extra bits */ + var f; /* frequency */ + var overflow = 0; /* number of elements with bit length too large */ - s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++; - s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++; + for (bits = 0; bits <= MAX_BITS; bits++) { + s.bl_count[bits] = 0; } -// (!) This block is disabled in zlib defaults, -// don't enable it for binary compatibility - -//#ifdef TRUNCATE_BLOCK -// /* Try to guess if it is profitable to stop the current block here */ -// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) { -// /* Compute an upper bound for the compressed length */ -// out_length = s.last_lit*8; -// in_length = s.strstart - s.block_start; -// -// for (dcode = 0; dcode < D_CODES; dcode++) { -// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]); -// } -// out_length >>>= 3; -// //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", -// // s->last_lit, in_length, out_length, -// // 100L - out_length*100L/in_length)); -// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) { -// return true; -// } -// } -//#endif - - return (s.last_lit === s.lit_bufsize - 1); - /* We avoid equality with lit_bufsize because of wraparound at 64K - * on 16 bit machines and because stored blocks are restricted to - * 64K-1 bytes. + /* In a first pass, compute the optimal bit lengths (which may + * overflow in the case of the bit length tree). */ -} + tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */ -exports._tr_init = _tr_init; -exports._tr_stored_block = _tr_stored_block; -exports._tr_flush_block = _tr_flush_block; -exports._tr_tally = _tr_tally; -exports._tr_align = _tr_align; + for (h = s.heap_max + 1; h < HEAP_SIZE; h++) { + n = s.heap[h]; + bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1; + if (bits > max_length) { + bits = max_length; + overflow++; + } + tree[n * 2 + 1]/*.Len*/ = bits; + /* We overwrite tree[n].Dad which is no longer needed */ -},{"../utils/common":28}],38:[function(require,module,exports){ -'use strict'; + if (n > max_code) { continue; } /* not a leaf node */ -// (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. + s.bl_count[bits]++; + xbits = 0; + if (n >= base) { + xbits = extra[n - base]; + } + f = tree[n * 2]/*.Freq*/; + s.opt_len += f * (bits + xbits); + if (has_stree) { + s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits); + } + } + if (overflow === 0) { return; } -function ZStream() { - /* next input byte */ - this.input = null; // JS specific, because we have no pointers - this.next_in = 0; - /* number of bytes available at input */ - this.avail_in = 0; - /* total number of input bytes read so far */ - this.total_in = 0; - /* next output byte should be put there */ - this.output = null; // JS specific, because we have no pointers - this.next_out = 0; - /* remaining free space at output */ - this.avail_out = 0; - /* total number of bytes output so far */ - this.total_out = 0; - /* last error message, NULL if no error */ - this.msg = ''/*Z_NULL*/; - /* not visible by applications */ - this.state = null; - /* best guess about the data type: binary or text */ - this.data_type = 2/*Z_UNKNOWN*/; - /* adler32 value of the uncompressed data */ - this.adler = 0; -} + // Trace((stderr,"\nbit length overflow\n")); + /* This happens for example on obj2 and pic of the Calgary corpus */ + + /* Find the first bit length which could increase: */ + do { + bits = max_length - 1; + while (s.bl_count[bits] === 0) { bits--; } + s.bl_count[bits]--; /* move one leaf down the tree */ + s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */ + s.bl_count[max_length]--; + /* The brother of the overflow item also moves one step up, + * but this does not affect bl_count[max_length] + */ + overflow -= 2; + } while (overflow > 0); -module.exports = ZStream; + /* Now recompute all bit lengths, scanning in increasing frequency. + * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all + * lengths instead of fixing only the wrong ones. This idea is taken + * from 'ar' written by Haruhiko Okumura.) + */ + for (bits = max_length; bits !== 0; bits--) { + n = s.bl_count[bits]; + while (n !== 0) { + m = s.heap[--h]; + if (m > max_code) { continue; } + if (tree[m * 2 + 1]/*.Len*/ !== bits) { + // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); + s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/; + tree[m * 2 + 1]/*.Len*/ = bits; + } + n--; + } + } +} -},{}],39:[function(require,module,exports){ -(function (process){ -'use strict'; -if (!process.version || - process.version.indexOf('v0.') === 0 || - process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { - module.exports = { nextTick: nextTick }; -} else { - module.exports = process -} +/* =========================================================================== + * Generate the codes for a given tree and bit counts (which need not be + * optimal). + * IN assertion: the array bl_count contains the bit length statistics for + * the given tree and the field len is set for all tree elements. + * OUT assertion: the field code is set for all tree elements of non + * zero code length. + */ +function gen_codes(tree, max_code, bl_count) +// ct_data *tree; /* the tree to decorate */ +// int max_code; /* largest code with non zero frequency */ +// ushf *bl_count; /* number of codes at each bit length */ +{ + var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */ + var code = 0; /* running code value */ + var bits; /* bit index */ + var n; /* code index */ -function nextTick(fn, arg1, arg2, arg3) { - if (typeof fn !== 'function') { - throw new TypeError('"callback" argument must be a function'); + /* The distribution counts are first used to generate the code values + * without bit reversal. + */ + for (bits = 1; bits <= MAX_BITS; bits++) { + next_code[bits] = code = (code + bl_count[bits - 1]) << 1; } - var len = arguments.length; - var args, i; - switch (len) { - case 0: - case 1: - return process.nextTick(fn); - case 2: - return process.nextTick(function afterTickOne() { - fn.call(null, arg1); - }); - case 3: - return process.nextTick(function afterTickTwo() { - fn.call(null, arg1, arg2); - }); - case 4: - return process.nextTick(function afterTickThree() { - fn.call(null, arg1, arg2, arg3); - }); - default: - args = new Array(len - 1); - i = 0; - while (i < args.length) { - args[i++] = arguments[i]; - } - return process.nextTick(function afterTick() { - fn.apply(null, args); - }); + /* Check that the bit counts in bl_count are consistent. The last code + * must be all ones. + */ + //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */ + length = 0; + for (code = 0; code < LENGTH_CODES - 1; code++) { + base_length[code] = length; + for (n = 0; n < (1 << extra_lbits[code]); n++) { + _length_code[length++] = code; } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); + } + //Assert (length == 256, "tr_static_init: length != 256"); + /* Note that the length 255 (match length 258) can be represented + * in two different ways: code 284 + 5 bits or code 285, so we + * overwrite length_code[255] to use the best encoding: + */ + _length_code[length - 1] = code; + + /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ + dist = 0; + for (code = 0; code < 16; code++) { + base_dist[code] = dist; + for (n = 0; n < (1 << extra_dbits[code]); n++) { + _dist_code[dist++] = code; } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } + } + //Assert (dist == 256, "tr_static_init: dist != 256"); + dist >>= 7; /* from now on, all distances are divided by 128 */ + for (; code < D_CODES; code++) { + base_dist[code] = dist << 7; + for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { + _dist_code[256 + dist++] = code; } + } + //Assert (dist == 256, "tr_static_init: 256+dist != 512"); + /* Construct the codes of the static literal tree */ + for (bits = 0; bits <= MAX_BITS; bits++) { + bl_count[bits] = 0; + } -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } + n = 0; + while (n <= 143) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; + } + while (n <= 255) { + static_ltree[n * 2 + 1]/*.Len*/ = 9; + n++; + bl_count[9]++; + } + while (n <= 279) { + static_ltree[n * 2 + 1]/*.Len*/ = 7; + n++; + bl_count[7]++; + } + while (n <= 287) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; + } + /* Codes 286 and 287 do not exist, but we must include them in the + * tree construction to get a canonical Huffman tree (longest code + * all ones) + */ + gen_codes(static_ltree, L_CODES + 1, bl_count); + /* The static distance tree is trivial: */ + for (n = 0; n < D_CODES; n++) { + static_dtree[n * 2 + 1]/*.Len*/ = 5; + static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5); + } + // Now data ready and we can init static trees + static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); + static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS); + static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS); + //static_init_done = true; } -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } + +/* =========================================================================== + * Initialize a new block. + */ +function init_block(s) { + var n; /* iterates over tree elements */ + + /* Initialize the trees. */ + for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; } + + s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1; + s.opt_len = s.static_len = 0; + s.last_lit = s.matches = 0; } -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); +/* =========================================================================== + * Flush the bit buffer and align the output on a byte boundary + */ +function bi_windup(s) +{ + if (s.bi_valid > 8) { + put_short(s, s.bi_buf); + } else if (s.bi_valid > 0) { + //put_byte(s, (Byte)s->bi_buf); + s.pending_buf[s.pending++] = s.bi_buf; + } + s.bi_buf = 0; + s.bi_valid = 0; } -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; +/* =========================================================================== + * Copy a stored block, storing first the length and its + * one's complement if requested. + */ +function copy_block(s, buf, len, header) +//DeflateState *s; +//charf *buf; /* the input data */ +//unsigned len; /* its length */ +//int header; /* true if block header must be written */ +{ + bi_windup(s); /* align on byte boundary */ -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; + if (header) { + put_short(s, len); + put_short(s, ~len); + } +// while (len--) { +// put_byte(s, *buf++); +// } + utils.arraySet(s.pending_buf, s.window, buf, len, s.pending); + s.pending += len; } -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; -function noop() {} +/* =========================================================================== + * Compares to subtrees, using the tree depth as tie breaker when + * the subtrees have equal frequency. This minimizes the worst case length. + */ +function smaller(tree, n, m, depth) { + var _n2 = n * 2; + var _m2 = m * 2; + return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ || + (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m])); +} -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; +/* =========================================================================== + * Restore the heap property by moving down the tree starting at node k, + * exchanging a node with the smallest of its two sons if necessary, stopping + * when the heap property is re-established (each father smaller than its + * two sons). + */ +function pqdownheap(s, tree, k) +// deflate_state *s; +// ct_data *tree; /* the tree to restore */ +// int k; /* node to move down */ +{ + var v = s.heap[k]; + var j = k << 1; /* left son of k */ + while (j <= s.heap_len) { + /* Set j to the smallest of the two sons: */ + if (j < s.heap_len && + smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { + j++; + } + /* Exit if v is smaller than both sons */ + if (smaller(tree, v, s.heap[j], s.depth)) { break; } -process.listeners = function (name) { return [] } + /* Exchange v with the smallest son */ + s.heap[k] = s.heap[j]; + k = j; -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; + /* And continue down the tree, setting j to the left son of k */ + j <<= 1; + } + s.heap[k] = v; +} -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; -},{}],41:[function(require,module,exports){ -(function (global){ -/*! https://mths.be/punycode v1.4.1 by @mathias */ -;(function(root) { +// inlined manually +// var SMALLEST = 1; - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } +/* =========================================================================== + * Send the block data compressed using the given Huffman trees + */ +function compress_block(s, ltree, dtree) +// deflate_state *s; +// const ct_data *ltree; /* literal tree */ +// const ct_data *dtree; /* distance tree */ +{ + var dist; /* distance of matched string */ + var lc; /* match length or unmatched char (if dist == 0) */ + var lx = 0; /* running index in l_buf */ + var code; /* the code to send */ + var extra; /* number of extra bits to send */ - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, + if (s.last_lit !== 0) { + do { + dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]); + lc = s.pending_buf[s.l_buf + lx]; + lx++; - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + if (dist === 0) { + send_code(s, lc, ltree); /* send a literal byte */ + //Tracecv(isgraph(lc), (stderr," '%c' ", lc)); + } else { + /* Here, lc is the match length - MIN_MATCH */ + code = _length_code[lc]; + send_code(s, code + LITERALS + 1, ltree); /* send the length code */ + extra = extra_lbits[code]; + if (extra !== 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); /* send the extra length bits */ + } + dist--; /* dist is now the match distance - 1 */ + code = d_code(dist); + //Assert (code < D_CODES, "bad d_code"); - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' + send_code(s, code, dtree); /* send the distance code */ + extra = extra_dbits[code]; + if (extra !== 0) { + dist -= base_dist[code]; + send_bits(s, dist, extra); /* send the extra distance bits */ + } + } /* literal or match pair ? */ + + /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ + //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, + // "pendingBuf overflow"); - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + } while (lx < s.last_lit); + } - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, + send_code(s, END_BLOCK, ltree); +} - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - /** Temporary variable */ - key; +/* =========================================================================== + * Construct one Huffman tree and assigns the code bit strings and lengths. + * Update the total bit length for the current block. + * IN assertion: the field freq is set for all tree elements. + * OUT assertions: the fields len and code are set to the optimal bit length + * and corresponding code. The length opt_len is updated; static_len is + * also updated if stree is not null. The field max_code is set. + */ +function build_tree(s, desc) +// deflate_state *s; +// tree_desc *desc; /* the tree descriptor */ +{ + var tree = desc.dyn_tree; + var stree = desc.stat_desc.static_tree; + var has_stree = desc.stat_desc.has_stree; + var elems = desc.stat_desc.elems; + var n, m; /* iterate over heap elements */ + var max_code = -1; /* largest code with non zero frequency */ + var node; /* new node being created */ - /*--------------------------------------------------------------------------*/ + /* Construct the initial heap, with least frequent element in + * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. + * heap[0] is not used. + */ + s.heap_len = 0; + s.heap_max = HEAP_SIZE; - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw new RangeError(errors[type]); - } + for (n = 0; n < elems; n++) { + if (tree[n * 2]/*.Freq*/ !== 0) { + s.heap[++s.heap_len] = max_code = n; + s.depth[n] = 0; - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } + } else { + tree[n * 2 + 1]/*.Len*/ = 0; + } + } - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } + /* The pkzip format requires that at least one distance code exists, + * and that at least one bit should be sent even if there is only one + * possible code. So to avoid special checks later on we force at least + * two codes of non zero frequency. + */ + while (s.heap_len < 2) { + node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0); + tree[node * 2]/*.Freq*/ = 1; + s.depth[node] = 0; + s.opt_len--; - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } + if (has_stree) { + s.static_len -= stree[node * 2 + 1]/*.Len*/; + } + /* node is 0 or 1 so it does not have extra bits */ + } + desc.max_code = max_code; - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } + /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + * establish sub-heaps of increasing lengths: + */ + for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); } - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } + /* Construct the Huffman tree by repeatedly combining the least two + * frequent nodes. + */ + node = elems; /* next internal node of the tree */ + do { + //pqremove(s, tree, n); /* n = node of least frequency */ + /*** pqremove ***/ + n = s.heap[1/*SMALLEST*/]; + s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--]; + pqdownheap(s, tree, 1/*SMALLEST*/); + /***/ - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } + m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */ - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } + s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */ + s.heap[--s.heap_max] = m; + + /* Create a new node father of n and m */ + tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/; + s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; + tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node; + + /* and insert the new node in the heap */ + s.heap[1/*SMALLEST*/] = node++; + pqdownheap(s, tree, 1/*SMALLEST*/); - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; + } while (s.heap_len >= 2); - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. + s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/]; - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } + /* At this point, the fields freq and dad are set. We can now + * generate the bit lengths. + */ + gen_bitlen(s, desc); - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } + /* The field len is now set, we can generate the bit codes */ + gen_codes(tree, max_code, s.bl_count); +} - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { +/* =========================================================================== + * Scan a literal or distance tree to determine the frequencies of the codes + * in the bit length tree. + */ +function scan_tree(s, tree, max_code) +// deflate_state *s; +// ct_data *tree; /* the tree to be scanned */ +// int max_code; /* and its largest code of non zero frequency */ +{ + var n; /* iterates over all tree elements */ + var prevlen = -1; /* last emitted length */ + var curlen; /* length of current code */ - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ - if (index >= inputLength) { - error('invalid-input'); - } + var count = 0; /* repeat count of the current code */ + var max_count = 7; /* max repeat count */ + var min_count = 4; /* min repeat count */ - digit = basicToDigit(input.charCodeAt(index++)); + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } + tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */ - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (++count < max_count && curlen === nextlen) { + continue; - if (digit < t) { - break; - } + } else if (count < min_count) { + s.bl_tree[curlen * 2]/*.Freq*/ += count; - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } + } else if (curlen !== 0) { - w *= baseMinusT; + if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; } + s.bl_tree[REP_3_6 * 2]/*.Freq*/++; - } + } else if (count <= 10) { + s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++; - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); + } else { + s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++; + } - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } + count = 0; + prevlen = curlen; - n += floor(i / out); - i %= out; + if (nextlen === 0) { + max_count = 138; + min_count = 3; - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; - } + } else { + max_count = 7; + min_count = 4; + } + } +} - return ucs2encode(output); - } - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; +/* =========================================================================== + * Send a literal or distance tree in compressed form, using the codes in + * bl_tree. + */ +function send_tree(s, tree, max_code) +// deflate_state *s; +// ct_data *tree; /* the tree to be scanned */ +// int max_code; /* and its largest code of non zero frequency */ +{ + var n; /* iterates over all tree elements */ + var prevlen = -1; /* last emitted length */ + var curlen; /* length of current code */ - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); + var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ - // Cache the length - inputLength = input.length; + var count = 0; /* repeat count of the current code */ + var max_count = 7; /* max repeat count */ + var min_count = 4; /* min repeat count */ - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; + /* tree[max_code+1].Len = -1; */ /* guard already set */ + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; - handledCPCount = basicLength = output.length; + if (++count < max_count && curlen === nextlen) { + continue; - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. + } else if (count < min_count) { + do { send_code(s, curlen, s.bl_tree); } while (--count !== 0); - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } + } else if (curlen !== 0) { + if (curlen !== prevlen) { + send_code(s, curlen, s.bl_tree); + count--; + } + //Assert(count >= 3 && count <= 6, " 3_6?"); + send_code(s, REP_3_6, s.bl_tree); + send_bits(s, count - 3, 2); - // Main encoding loop: - while (handledCPCount < inputLength) { + } else if (count <= 10) { + send_code(s, REPZ_3_10, s.bl_tree); + send_bits(s, count - 3, 3); - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } + } else { + send_code(s, REPZ_11_138, s.bl_tree); + send_bits(s, count - 11, 7); + } + + count = 0; + prevlen = curlen; + if (nextlen === 0) { + max_count = 138; + min_count = 3; + + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; + + } else { + max_count = 7; + min_count = 4; + } + } +} - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - delta += (m - n) * handledCPCountPlusOne; - n = m; +/* =========================================================================== + * Construct the Huffman tree for the bit lengths and return the index in + * bl_order of the last bit length code to send. + */ +function build_bl_tree(s) { + var max_blindex; /* index of last bit length code of non zero freq */ - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; + /* Determine the bit length frequencies for literal and distance trees */ + scan_tree(s, s.dyn_ltree, s.l_desc.max_code); + scan_tree(s, s.dyn_dtree, s.d_desc.max_code); - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } + /* Build the bit length tree: */ + build_tree(s, s.bl_desc); + /* opt_len now includes the length of the tree representations, except + * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + */ - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } + /* Determine the number of bit length codes to send. The pkzip format + * requires that at least 4 bit length codes be sent. (appnote.txt says + * 3 but the actual value used is 4.) + */ + for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { + if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) { + break; + } + } + /* Update opt_len to include the bit length tree and counts */ + s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; + //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", + // s->opt_len, s->static_len)); - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } + return max_blindex; +} - ++delta; - ++n; - } - return output.join(''); - } +/* =========================================================================== + * Send the header for a block using dynamic Huffman trees: the counts, the + * lengths of the bit length codes, the literal tree and the distance tree. + * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. + */ +function send_all_trees(s, lcodes, dcodes, blcodes) +// deflate_state *s; +// int lcodes, dcodes, blcodes; /* number of codes for each tree */ +{ + var rank; /* index in bl_order */ - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } + //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); + //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, + // "too many codes"); + //Tracev((stderr, "\nbl counts: ")); + send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes - 1, 5); + send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ + for (rank = 0; rank < blcodes; rank++) { + //Tracev((stderr, "\nbl code %2d ", bl_order[rank])); + send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3); + } + //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } + send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */ + //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); - /*--------------------------------------------------------------------------*/ + send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */ + //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); +} - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.4.1', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { - // in Node.js, io.js, or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { - // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { - // in Rhino or a web browser - root.punycode = punycode; - } +/* =========================================================================== + * Check if the data type is TEXT or BINARY, using the following algorithm: + * - TEXT if the two conditions below are satisfied: + * a) There are no non-portable control characters belonging to the + * "black list" (0..6, 14..25, 28..31). + * b) There is at least one printable character belonging to the + * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). + * - BINARY otherwise. + * - The following partially-portable control characters form a + * "gray list" that is ignored in this detection algorithm: + * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). + * IN assertion: the fields Freq of dyn_ltree are set. + */ +function detect_data_type(s) { + /* black_mask is the bit mask of black-listed bytes + * set bits 0..6, 14..25, and 28..31 + * 0xf3ffc07f = binary 11110011111111111100000001111111 + */ + var black_mask = 0xf3ffc07f; + var n; -}(this)); + /* Check for non-textual ("black-listed") bytes. */ + for (n = 0; n <= 31; n++, black_mask >>>= 1) { + if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) { + return Z_BINARY; + } + } -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],42:[function(require,module,exports){ -'use strict'; + /* Check for textual ("white-listed") bytes. */ + if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 || + s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) { + return Z_TEXT; + } + for (n = 32; n < LITERALS; n++) { + if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) { + return Z_TEXT; + } + } -var replace = String.prototype.replace; -var percentTwenties = /%20/g; + /* There are no "black-listed" or "white-listed" bytes: + * this stream either is empty or has tolerated ("gray-listed") bytes only. + */ + return Z_BINARY; +} -var util = require('./utils'); -var Format = { - RFC1738: 'RFC1738', - RFC3986: 'RFC3986' -}; +var static_init_done = false; -module.exports = util.assign( - { - 'default': Format.RFC3986, - formatters: { - RFC1738: function (value) { - return replace.call(value, percentTwenties, '+'); - }, - RFC3986: function (value) { - return String(value); - } - } - }, - Format -); +/* =========================================================================== + * Initialize the tree data structures for a new zlib stream. + */ +function _tr_init(s) +{ -},{"./utils":46}],43:[function(require,module,exports){ -'use strict'; + if (!static_init_done) { + tr_static_init(); + static_init_done = true; + } -var stringify = require('./stringify'); -var parse = require('./parse'); -var formats = require('./formats'); + s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); + s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); + s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); -module.exports = { - formats: formats, - parse: parse, - stringify: stringify -}; + s.bi_buf = 0; + s.bi_valid = 0; -},{"./formats":42,"./parse":44,"./stringify":45}],44:[function(require,module,exports){ -'use strict'; + /* Initialize the first block of the first file: */ + init_block(s); +} -var utils = require('./utils'); -var has = Object.prototype.hasOwnProperty; -var isArray = Array.isArray; +/* =========================================================================== + * Send a stored block + */ +function _tr_stored_block(s, buf, stored_len, last) +//DeflateState *s; +//charf *buf; /* input block */ +//ulg stored_len; /* length of input block */ +//int last; /* one if this is the last block for a file */ +{ + send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */ + copy_block(s, buf, stored_len, true); /* with header */ +} -var defaults = { - allowDots: false, - allowPrototypes: false, - arrayLimit: 20, - charset: 'utf-8', - charsetSentinel: false, - comma: false, - decoder: utils.decode, - delimiter: '&', - depth: 5, - ignoreQueryPrefix: false, - interpretNumericEntities: false, - parameterLimit: 1000, - parseArrays: true, - plainObjects: false, - strictNullHandling: false -}; -var interpretNumericEntities = function (str) { - return str.replace(/&#(\d+);/g, function ($0, numberStr) { - return String.fromCharCode(parseInt(numberStr, 10)); - }); -}; +/* =========================================================================== + * Send one empty static block to give enough lookahead for inflate. + * This takes 10 bits, of which 7 may remain in the bit buffer. + */ +function _tr_align(s) { + send_bits(s, STATIC_TREES << 1, 3); + send_code(s, END_BLOCK, static_ltree); + bi_flush(s); +} -// This is what browsers will submit when the ✓ character occurs in an -// application/x-www-form-urlencoded body and the encoding of the page containing -// the form is iso-8859-1, or when the submitted form has an accept-charset -// attribute of iso-8859-1. Presumably also with other charsets that do not contain -// the ✓ character, such as us-ascii. -var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') -// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. -var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') +/* =========================================================================== + * Determine the best encoding for the current block: dynamic trees, static + * trees or store, and output the encoded block to the zip file. + */ +function _tr_flush_block(s, buf, stored_len, last) +//DeflateState *s; +//charf *buf; /* input block, or NULL if too old */ +//ulg stored_len; /* length of input block */ +//int last; /* one if this is the last block for a file */ +{ + var opt_lenb, static_lenb; /* opt_len and static_len in bytes */ + var max_blindex = 0; /* index of last bit length code of non zero freq */ -var parseValues = function parseQueryStringValues(str, options) { - var obj = {}; - var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; - var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split(options.delimiter, limit); - var skipIndex = -1; // Keep track of where the utf8 sentinel was found - var i; + /* Build the Huffman trees unless a stored block is forced */ + if (s.level > 0) { - var charset = options.charset; - if (options.charsetSentinel) { - for (i = 0; i < parts.length; ++i) { - if (parts[i].indexOf('utf8=') === 0) { - if (parts[i] === charsetSentinel) { - charset = 'utf-8'; - } else if (parts[i] === isoSentinel) { - charset = 'iso-8859-1'; - } - skipIndex = i; - i = parts.length; // The eslint settings do not allow break; - } - } + /* Check if the file is binary or text */ + if (s.strm.data_type === Z_UNKNOWN) { + s.strm.data_type = detect_data_type(s); } - for (i = 0; i < parts.length; ++i) { - if (i === skipIndex) { - continue; - } - var part = parts[i]; + /* Construct the literal and distance trees */ + build_tree(s, s.l_desc); + // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); - var bracketEqualsPos = part.indexOf(']='); - var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; + build_tree(s, s.d_desc); + // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); + /* At this point, opt_len and static_len are the total bit lengths of + * the compressed block data, excluding the tree representations. + */ - var key, val; - if (pos === -1) { - key = options.decoder(part, defaults.decoder, charset, 'key'); - val = options.strictNullHandling ? null : ''; - } else { - key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); - val = options.decoder(part.slice(pos + 1), defaults.decoder, charset, 'value'); - } + /* Build the bit length tree for the above two trees, and get the index + * in bl_order of the last bit length code to send. + */ + max_blindex = build_bl_tree(s); - if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { - val = interpretNumericEntities(val); - } + /* Determine the best encoding. Compute the block lengths in bytes. */ + opt_lenb = (s.opt_len + 3 + 7) >>> 3; + static_lenb = (s.static_len + 3 + 7) >>> 3; - if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { - val = val.split(','); - } + // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", + // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, + // s->last_lit)); - if (part.indexOf('[]=') > -1) { - val = isArray(val) ? [val] : val; - } + if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; } - if (has.call(obj, key)) { - obj[key] = utils.combine(obj[key], val); - } else { - obj[key] = val; - } - } + } else { + // Assert(buf != (char*)0, "lost buf"); + opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ + } - return obj; -}; + if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) { + /* 4: two words for the lengths */ -var parseObject = function (chain, val, options) { - var leaf = val; + /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. + * Otherwise we can't have processed more than WSIZE input bytes since + * the last block flush, because compression would have been + * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to + * transform a block into a stored block. + */ + _tr_stored_block(s, buf, stored_len, last); - for (var i = chain.length - 1; i >= 0; --i) { - var obj; - var root = chain[i]; + } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) { - if (root === '[]' && options.parseArrays) { - obj = [].concat(leaf); - } else { - obj = options.plainObjects ? Object.create(null) : {}; - var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var index = parseInt(cleanRoot, 10); - if (!options.parseArrays && cleanRoot === '') { - obj = { 0: leaf }; - } else if ( - !isNaN(index) - && root !== cleanRoot - && String(index) === cleanRoot - && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { - obj = []; - obj[index] = leaf; - } else { - obj[cleanRoot] = leaf; - } - } + send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); + compress_block(s, static_ltree, static_dtree); - leaf = obj; - } + } else { + send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); + send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); + compress_block(s, s.dyn_ltree, s.dyn_dtree); + } + // Assert (s->compressed_len == s->bits_sent, "bad compressed size"); + /* The above check is made mod 2^32, for files larger than 512 MB + * and uLong implemented on 32 bits. + */ + init_block(s); - return leaf; -}; + if (last) { + bi_windup(s); + } + // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, + // s->compressed_len-7*last)); +} -var parseKeys = function parseQueryStringKeys(givenKey, val, options) { - if (!givenKey) { - return; - } +/* =========================================================================== + * Save the match info and tally the frequency counts. Return true if + * the current block must be flushed. + */ +function _tr_tally(s, dist, lc) +// deflate_state *s; +// unsigned dist; /* distance of matched string */ +// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ +{ + //var out_length, in_length, dcode; - // Transform dot notation to bracket notation - var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; + s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff; + s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff; - // The regex chunks + s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff; + s.last_lit++; + + if (dist === 0) { + /* lc is the unmatched char */ + s.dyn_ltree[lc * 2]/*.Freq*/++; + } else { + s.matches++; + /* Here, lc is the match length - MIN_MATCH */ + dist--; /* dist = match distance - 1 */ + //Assert((ush)dist < (ush)MAX_DIST(s) && + // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && + // (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); - var brackets = /(\[[^[\]]*])/; - var child = /(\[[^[\]]*])/g; + s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++; + s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++; + } - // Get the parent +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility - var segment = options.depth > 0 && brackets.exec(key); - var parent = segment ? key.slice(0, segment.index) : key; +//#ifdef TRUNCATE_BLOCK +// /* Try to guess if it is profitable to stop the current block here */ +// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) { +// /* Compute an upper bound for the compressed length */ +// out_length = s.last_lit*8; +// in_length = s.strstart - s.block_start; +// +// for (dcode = 0; dcode < D_CODES; dcode++) { +// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]); +// } +// out_length >>>= 3; +// //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", +// // s->last_lit, in_length, out_length, +// // 100L - out_length*100L/in_length)); +// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) { +// return true; +// } +// } +//#endif - // Stash the parent if it exists + return (s.last_lit === s.lit_bufsize - 1); + /* We avoid equality with lit_bufsize because of wraparound at 64K + * on 16 bit machines and because stored blocks are restricted to + * 64K-1 bytes. + */ +} - var keys = []; - if (parent) { - // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties - if (!options.plainObjects && has.call(Object.prototype, parent)) { - if (!options.allowPrototypes) { - return; - } - } +exports._tr_init = _tr_init; +exports._tr_stored_block = _tr_stored_block; +exports._tr_flush_block = _tr_flush_block; +exports._tr_tally = _tr_tally; +exports._tr_align = _tr_align; - keys.push(parent); - } +},{"../utils/common":34}],44:[function(require,module,exports){ +'use strict'; - // Loop through children appending to the array until we hit depth +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. - var i = 0; - while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { - i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { - if (!options.allowPrototypes) { - return; - } - } - keys.push(segment[1]); - } +function ZStream() { + /* next input byte */ + this.input = null; // JS specific, because we have no pointers + this.next_in = 0; + /* number of bytes available at input */ + this.avail_in = 0; + /* total number of input bytes read so far */ + this.total_in = 0; + /* next output byte should be put there */ + this.output = null; // JS specific, because we have no pointers + this.next_out = 0; + /* remaining free space at output */ + this.avail_out = 0; + /* total number of bytes output so far */ + this.total_out = 0; + /* last error message, NULL if no error */ + this.msg = ''/*Z_NULL*/; + /* not visible by applications */ + this.state = null; + /* best guess about the data type: binary or text */ + this.data_type = 2/*Z_UNKNOWN*/; + /* adler32 value of the uncompressed data */ + this.adler = 0; +} - // If there's a remainder, just add whatever is left +module.exports = ZStream; - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } +},{}],45:[function(require,module,exports){ +(function (process){ +'use strict'; - return parseObject(keys, val, options); -}; +if (!process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = { nextTick: nextTick }; +} else { + module.exports = process +} -var normalizeParseOptions = function normalizeParseOptions(opts) { - if (!opts) { - return defaults; +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} - if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') { - throw new TypeError('Decoder has to be a function.'); - } - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new Error('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; +}).call(this,require('_process')) +},{"_process":46}],46:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; - return { - allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, - allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, - arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, - decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, - delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, - // eslint-disable-next-line no-implicit-coercion, no-extra-parens - depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, - ignoreQueryPrefix: opts.ignoreQueryPrefix === true, - interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, - parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, - parseArrays: opts.parseArrays !== false, - plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling - }; -}; +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. -module.exports = function (str, opts) { - var options = normalizeParseOptions(opts); +var cachedSetTimeout; +var cachedClearTimeout; - if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? Object.create(null) : {}; +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; } - - var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var newObj = parseKeys(key, tempObj[key], options); - obj = utils.merge(obj, newObj, options); + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } } - return utils.compact(obj); -}; - -},{"./utils":46}],45:[function(require,module,exports){ -'use strict'; - -var utils = require('./utils'); -var formats = require('./formats'); -var has = Object.prototype.hasOwnProperty; -var arrayPrefixGenerators = { - brackets: function brackets(prefix) { - return prefix + '[]'; - }, - comma: 'comma', - indices: function indices(prefix, key) { - return prefix + '[' + key + ']'; - }, - repeat: function repeat(prefix) { - return prefix; +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } } -}; -var isArray = Array.isArray; -var push = Array.prototype.push; -var pushToArray = function (arr, valueOrArray) { - push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); -}; -var toISO = Date.prototype.toISOString; -var defaultFormat = formats['default']; -var defaults = { - addQueryPrefix: false, - allowDots: false, - charset: 'utf-8', - charsetSentinel: false, - delimiter: '&', - encode: true, - encoder: utils.encode, - encodeValuesOnly: false, - format: defaultFormat, - formatter: formats.formatters[defaultFormat], - // deprecated - indices: false, - serializeDate: function serializeDate(date) { - return toISO.call(date); - }, - skipNulls: false, - strictNullHandling: false -}; +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; -var isNonNullishPrimitive = function isNonNullishPrimitive(v) { - return typeof v === 'string' - || typeof v === 'number' - || typeof v === 'boolean' - || typeof v === 'symbol' - || typeof v === 'bigint'; -}; +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} -var stringify = function stringify( - object, - prefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly, - charset -) { - var obj = object; - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } else if (obj instanceof Date) { - obj = serializeDate(obj); - } else if (generateArrayPrefix === 'comma' && isArray(obj)) { - obj = obj.join(','); +function drainQueue() { + if (draining) { + return; } + var timeout = runTimeout(cleanUpNextTick); + draining = true; - if (obj === null) { - if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key') : prefix; + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } } - - obj = ''; + queueIndex = -1; + len = queue.length; } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} - if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { - if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key'); - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value'))]; +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; } - return [formatter(prefix) + '=' + formatter(String(obj))]; } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; - var values = []; +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; - if (typeof obj === 'undefined') { - return values; - } +function noop() {} - var objKeys; - if (isArray(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; +process.listeners = function (name) { return [] } - if (skipNulls && obj[key] === null) { - continue; - } +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; - if (isArray(obj)) { - pushToArray(values, stringify( - obj[key], - typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly, - charset - )); - } else { - pushToArray(values, stringify( - obj[key], - prefix + (allowDots ? '.' + key : '[' + key + ']'), - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly, - charset - )); - } - } +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],47:[function(require,module,exports){ +(function (global){ +/*! https://mths.be/punycode v1.4.1 by @mathias */ +;(function(root) { + + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } - return values; -}; + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, -var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { - if (!opts) { - return defaults; - } + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') { - throw new TypeError('Encoder has to be a function.'); - } + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' - var charset = opts.charset || defaults.charset; - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - var format = formats['default']; - if (typeof opts.format !== 'undefined') { - if (!has.call(formats.formatters, opts.format)) { - throw new TypeError('Unknown format option provided.'); - } - format = opts.format; - } - var formatter = formats.formatters[format]; + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, - var filter = defaults.filter; - if (typeof opts.filter === 'function' || isArray(opts.filter)) { - filter = opts.filter; - } + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, - return { - addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, - allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, - encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, - encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, - encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, - filter: filter, - formatter: formatter, - serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, - skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, - sort: typeof opts.sort === 'function' ? opts.sort : null, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling - }; -}; + /** Temporary variable */ + key; -module.exports = function (object, opts) { - var obj = object; - var options = normalizeStringifyOptions(opts); + /*--------------------------------------------------------------------------*/ - var objKeys; - var filter; + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw new RangeError(errors[type]); + } - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } else if (isArray(options.filter)) { - filter = options.filter; - objKeys = filter; - } + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } - var keys = []; + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } - if (typeof obj !== 'object' || obj === null) { - return ''; - } + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } - var arrayFormat; - if (opts && opts.arrayFormat in arrayPrefixGenerators) { - arrayFormat = opts.arrayFormat; - } else if (opts && 'indices' in opts) { - arrayFormat = opts.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = 'indices'; - } + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } - var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } - if (!objKeys) { - objKeys = Object.keys(obj); - } + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } - if (options.sort) { - objKeys.sort(options.sort); - } + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; - if (options.skipNulls && obj[key] === null) { - continue; - } - pushToArray(keys, stringify( - obj[key], - key, - generateArrayPrefix, - options.strictNullHandling, - options.skipNulls, - options.encode ? options.encoder : null, - options.filter, - options.sort, - options.allowDots, - options.serializeDate, - options.formatter, - options.encodeValuesOnly, - options.charset - )); - } + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. - var joined = keys.join(options.delimiter); - var prefix = options.addQueryPrefix === true ? '?' : ''; + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } - if (options.charsetSentinel) { - if (options.charset === 'iso-8859-1') { - // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark - prefix += 'utf8=%26%2310003%3B&'; - } else { - // encodeURIComponent('✓') - prefix += 'utf8=%E2%9C%93&'; - } - } + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } - return joined.length > 0 ? prefix + joined : ''; -}; + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. -},{"./formats":42,"./utils":46}],46:[function(require,module,exports){ -'use strict'; + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { -var has = Object.prototype.hasOwnProperty; -var isArray = Array.isArray; + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { -var hexTable = (function () { - var array = []; - for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); - } + if (index >= inputLength) { + error('invalid-input'); + } - return array; -}()); + digit = basicToDigit(input.charCodeAt(index++)); -var compactQueue = function compactQueue(queue) { - while (queue.length > 1) { - var item = queue.pop(); - var obj = item.obj[item.prop]; + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } - if (isArray(obj)) { - var compacted = []; + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - for (var j = 0; j < obj.length; ++j) { - if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); - } - } + if (digit < t) { + break; + } - item.obj[item.prop] = compacted; - } - } -}; + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } -var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? Object.create(null) : {}; - for (var i = 0; i < source.length; ++i) { - if (typeof source[i] !== 'undefined') { - obj[i] = source[i]; - } - } + w *= baseMinusT; - return obj; -}; + } -var merge = function merge(target, source, options) { - /* eslint no-param-reassign: 0 */ - if (!source) { - return target; - } + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); - if (typeof source !== 'object') { - if (isArray(target)) { - target.push(source); - } else if (target && typeof target === 'object') { - if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) { - target[source] = true; - } - } else { - return [target, source]; - } + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } - return target; - } + n += floor(i / out); + i %= out; - if (!target || typeof target !== 'object') { - return [target].concat(source); - } + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); - var mergeTarget = target; - if (isArray(target) && !isArray(source)) { - mergeTarget = arrayToObject(target, options); - } + } - if (isArray(target) && isArray(source)) { - source.forEach(function (item, i) { - if (has.call(target, i)) { - var targetItem = target[i]; - if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { - target[i] = merge(targetItem, item, options); - } else { - target.push(item); - } - } else { - target[i] = item; - } - }); - return target; - } + return ucs2encode(output); + } - return Object.keys(source).reduce(function (acc, key) { - var value = source[key]; + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; - if (has.call(acc, key)) { - acc[key] = merge(acc[key], value, options); - } else { - acc[key] = value; - } - return acc; - }, mergeTarget); -}; + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); -var assign = function assignSingleSource(target, source) { - return Object.keys(source).reduce(function (acc, key) { - acc[key] = source[key]; - return acc; - }, target); -}; + // Cache the length + inputLength = input.length; -var decode = function (str, decoder, charset) { - var strWithoutPlus = str.replace(/\+/g, ' '); - if (charset === 'iso-8859-1') { - // unescape never throws, no try...catch needed: - return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); - } - // utf-8 - try { - return decodeURIComponent(strWithoutPlus); - } catch (e) { - return strWithoutPlus; - } -}; + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; -var encode = function encode(str, defaultEncoder, charset) { - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } - var string = str; - if (typeof str === 'symbol') { - string = Symbol.prototype.toString.call(str); - } else if (typeof str !== 'string') { - string = String(str); - } + handledCPCount = basicLength = output.length; - if (charset === 'iso-8859-1') { - return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { - return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; - }); - } + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. - var out = ''; - for (var i = 0; i < string.length; ++i) { - var c = string.charCodeAt(i); + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } - if ( - c === 0x2D // - - || c === 0x2E // . - || c === 0x5F // _ - || c === 0x7E // ~ - || (c >= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - ) { - out += string.charAt(i); - continue; - } + // Main encoding loop: + while (handledCPCount < inputLength) { - if (c < 0x80) { - out = out + hexTable[c]; - continue; - } + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } - if (c < 0x800) { - out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } - if (c < 0xD800 || c >= 0xE000) { - out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } + delta += (m - n) * handledCPCountPlusOne; + n = m; - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); - out += hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - } + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; - return out; -}; + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } -var compact = function compact(value) { - var queue = [{ obj: { o: value }, prop: 'o' }]; - var refs = []; + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } - for (var i = 0; i < queue.length; ++i) { - var item = queue[i]; - var obj = item.obj[item.prop]; + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - var val = obj[key]; - if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); - } - } - } + ++delta; + ++n; - compactQueue(queue); + } + return output.join(''); + } - return value; -}; + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } -var isRegExp = function isRegExp(obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } -var isBuffer = function isBuffer(obj) { - if (!obj || typeof obj !== 'object') { - return false; - } + /*--------------------------------------------------------------------------*/ - return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); -}; + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.4.1', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; -var combine = function combine(a, b) { - return [].concat(a, b); -}; + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + typeof define == 'function' && + typeof define.amd == 'object' && + define.amd + ) { + define('punycode', function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { + // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { + // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + // in Rhino or a web browser + root.punycode = punycode; + } -module.exports = { - arrayToObject: arrayToObject, - assign: assign, - combine: combine, - compact: compact, - decode: decode, - encode: encode, - isBuffer: isBuffer, - isRegExp: isRegExp, - merge: merge -}; +}(this)); -},{}],47:[function(require,module,exports){ +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],48:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -16660,7 +16732,7 @@ var isArray = Array.isArray || function (xs) { return Object.prototype.toString.call(xs) === '[object Array]'; }; -},{}],48:[function(require,module,exports){ +},{}],49:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -16747,16 +16819,16 @@ var objectKeys = Object.keys || function (obj) { return res; }; -},{}],49:[function(require,module,exports){ +},{}],50:[function(require,module,exports){ 'use strict'; exports.decode = exports.parse = require('./decode'); exports.encode = exports.stringify = require('./encode'); -},{"./decode":47,"./encode":48}],50:[function(require,module,exports){ +},{"./decode":48,"./encode":49}],51:[function(require,module,exports){ module.exports = require('./lib/_stream_duplex.js'); -},{"./lib/_stream_duplex.js":51}],51:[function(require,module,exports){ +},{"./lib/_stream_duplex.js":52}],52:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -16888,7 +16960,7 @@ Duplex.prototype._destroy = function (err, cb) { pna.nextTick(cb, err); }; -},{"./_stream_readable":53,"./_stream_writable":55,"core-util-is":14,"inherits":18,"process-nextick-args":39}],52:[function(require,module,exports){ +},{"./_stream_readable":54,"./_stream_writable":56,"core-util-is":27,"inherits":31,"process-nextick-args":45}],53:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -16936,7 +17008,7 @@ function PassThrough(options) { PassThrough.prototype._transform = function (chunk, encoding, cb) { cb(null, chunk); }; -},{"./_stream_transform":54,"core-util-is":14,"inherits":18}],53:[function(require,module,exports){ +},{"./_stream_transform":55,"core-util-is":27,"inherits":31}],54:[function(require,module,exports){ (function (process,global){ // Copyright Joyent, Inc. and other Node contributors. // @@ -17958,7 +18030,7 @@ function indexOf(xs, x) { return -1; } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./_stream_duplex":51,"./internal/streams/BufferList":56,"./internal/streams/destroy":57,"./internal/streams/stream":58,"_process":40,"core-util-is":14,"events":15,"inherits":18,"isarray":20,"process-nextick-args":39,"safe-buffer":64,"string_decoder/":59,"util":9}],54:[function(require,module,exports){ +},{"./_stream_duplex":52,"./internal/streams/BufferList":57,"./internal/streams/destroy":58,"./internal/streams/stream":59,"_process":46,"core-util-is":27,"events":28,"inherits":31,"isarray":33,"process-nextick-args":45,"safe-buffer":65,"string_decoder/":60,"util":22}],55:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -18173,7 +18245,7 @@ function done(stream, er, data) { return stream.push(null); } -},{"./_stream_duplex":51,"core-util-is":14,"inherits":18}],55:[function(require,module,exports){ +},{"./_stream_duplex":52,"core-util-is":27,"inherits":31}],56:[function(require,module,exports){ (function (process,global,setImmediate){ // Copyright Joyent, Inc. and other Node contributors. // @@ -18863,7 +18935,7 @@ Writable.prototype._destroy = function (err, cb) { cb(err); }; }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) -},{"./_stream_duplex":51,"./internal/streams/destroy":57,"./internal/streams/stream":58,"_process":40,"core-util-is":14,"inherits":18,"process-nextick-args":39,"safe-buffer":64,"timers":70,"util-deprecate":74}],56:[function(require,module,exports){ +},{"./_stream_duplex":52,"./internal/streams/destroy":58,"./internal/streams/stream":59,"_process":46,"core-util-is":27,"inherits":31,"process-nextick-args":45,"safe-buffer":65,"timers":71,"util-deprecate":75}],57:[function(require,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -18943,7 +19015,7 @@ if (util && util.inspect && util.inspect.custom) { return this.constructor.name + ' ' + obj; }; } -},{"safe-buffer":64,"util":9}],57:[function(require,module,exports){ +},{"safe-buffer":65,"util":22}],58:[function(require,module,exports){ 'use strict'; /**/ @@ -19018,10 +19090,10 @@ module.exports = { destroy: destroy, undestroy: undestroy }; -},{"process-nextick-args":39}],58:[function(require,module,exports){ +},{"process-nextick-args":45}],59:[function(require,module,exports){ module.exports = require('events').EventEmitter; -},{"events":15}],59:[function(require,module,exports){ +},{"events":28}],60:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -19318,10 +19390,10 @@ function simpleWrite(buf) { function simpleEnd(buf) { return buf && buf.length ? this.write(buf) : ''; } -},{"safe-buffer":64}],60:[function(require,module,exports){ +},{"safe-buffer":65}],61:[function(require,module,exports){ module.exports = require('./readable').PassThrough -},{"./readable":61}],61:[function(require,module,exports){ +},{"./readable":62}],62:[function(require,module,exports){ exports = module.exports = require('./lib/_stream_readable.js'); exports.Stream = exports; exports.Readable = exports; @@ -19330,13 +19402,13 @@ exports.Duplex = require('./lib/_stream_duplex.js'); exports.Transform = require('./lib/_stream_transform.js'); exports.PassThrough = require('./lib/_stream_passthrough.js'); -},{"./lib/_stream_duplex.js":51,"./lib/_stream_passthrough.js":52,"./lib/_stream_readable.js":53,"./lib/_stream_transform.js":54,"./lib/_stream_writable.js":55}],62:[function(require,module,exports){ +},{"./lib/_stream_duplex.js":52,"./lib/_stream_passthrough.js":53,"./lib/_stream_readable.js":54,"./lib/_stream_transform.js":55,"./lib/_stream_writable.js":56}],63:[function(require,module,exports){ module.exports = require('./readable').Transform -},{"./readable":61}],63:[function(require,module,exports){ +},{"./readable":62}],64:[function(require,module,exports){ module.exports = require('./lib/_stream_writable.js'); -},{"./lib/_stream_writable.js":55}],64:[function(require,module,exports){ +},{"./lib/_stream_writable.js":56}],65:[function(require,module,exports){ /* eslint-disable node/no-deprecated-api */ var buffer = require('buffer') var Buffer = buffer.Buffer @@ -19400,7 +19472,7 @@ SafeBuffer.allocUnsafeSlow = function (size) { return buffer.SlowBuffer(size) } -},{"buffer":12}],65:[function(require,module,exports){ +},{"buffer":25}],66:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -19529,7 +19601,7 @@ Stream.prototype.pipe = function(dest, options) { return dest; }; -},{"events":15,"inherits":18,"readable-stream/duplex.js":50,"readable-stream/passthrough.js":60,"readable-stream/readable.js":61,"readable-stream/transform.js":62,"readable-stream/writable.js":63}],66:[function(require,module,exports){ +},{"events":28,"inherits":31,"readable-stream/duplex.js":51,"readable-stream/passthrough.js":61,"readable-stream/readable.js":62,"readable-stream/transform.js":63,"readable-stream/writable.js":64}],67:[function(require,module,exports){ (function (global){ var ClientRequest = require('./lib/request') var response = require('./lib/response') @@ -19617,7 +19689,7 @@ http.METHODS = [ 'UNSUBSCRIBE' ] }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./lib/request":68,"./lib/response":69,"builtin-status-codes":13,"url":72,"xtend":77}],67:[function(require,module,exports){ +},{"./lib/request":69,"./lib/response":70,"builtin-status-codes":26,"url":73,"xtend":78}],68:[function(require,module,exports){ (function (global){ exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream) @@ -19694,7 +19766,7 @@ function isFunction (value) { xhr = null // Help gc }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],68:[function(require,module,exports){ +},{}],69:[function(require,module,exports){ (function (process,global,Buffer){ var capability = require('./capability') var inherits = require('inherits') @@ -20025,7 +20097,7 @@ var unsafeHeaders = [ ] }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) -},{"./capability":67,"./response":69,"_process":40,"buffer":12,"inherits":18,"readable-stream":61,"to-arraybuffer":71}],69:[function(require,module,exports){ +},{"./capability":68,"./response":70,"_process":46,"buffer":25,"inherits":31,"readable-stream":62,"to-arraybuffer":72}],70:[function(require,module,exports){ (function (process,global,Buffer){ var capability = require('./capability') var inherits = require('inherits') @@ -20253,7 +20325,7 @@ IncomingMessage.prototype._onXHRProgress = function () { } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) -},{"./capability":67,"_process":40,"buffer":12,"inherits":18,"readable-stream":61}],70:[function(require,module,exports){ +},{"./capability":68,"_process":46,"buffer":25,"inherits":31,"readable-stream":62}],71:[function(require,module,exports){ (function (setImmediate,clearImmediate){ var nextTick = require('process/browser.js').nextTick; var apply = Function.prototype.apply; @@ -20332,7 +20404,7 @@ exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : delete immediateIds[id]; }; }).call(this,require("timers").setImmediate,require("timers").clearImmediate) -},{"process/browser.js":40,"timers":70}],71:[function(require,module,exports){ +},{"process/browser.js":46,"timers":71}],72:[function(require,module,exports){ var Buffer = require('buffer').Buffer module.exports = function (buf) { @@ -20361,7 +20433,7 @@ module.exports = function (buf) { } } -},{"buffer":12}],72:[function(require,module,exports){ +},{"buffer":25}],73:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -21095,7 +21167,7 @@ Url.prototype.parseHost = function() { if (host) this.hostname = host; }; -},{"./util":73,"punycode":41,"querystring":49}],73:[function(require,module,exports){ +},{"./util":74,"punycode":47,"querystring":50}],74:[function(require,module,exports){ 'use strict'; module.exports = { @@ -21113,7 +21185,7 @@ module.exports = { } }; -},{}],74:[function(require,module,exports){ +},{}],75:[function(require,module,exports){ (function (global){ /** @@ -21184,11 +21256,11 @@ function config (name) { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],75:[function(require,module,exports){ -arguments[4][5][0].apply(exports,arguments) -},{"dup":5}],76:[function(require,module,exports){ -arguments[4][6][0].apply(exports,arguments) -},{"./support/isBuffer":75,"_process":40,"dup":6,"inherits":18}],77:[function(require,module,exports){ +},{}],76:[function(require,module,exports){ +arguments[4][19][0].apply(exports,arguments) +},{"dup":19}],77:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"./support/isBuffer":76,"_process":46,"dup":20,"inherits":31}],78:[function(require,module,exports){ module.exports = extend var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -21209,4 +21281,4 @@ function extend() { return target } -},{}]},{},[2]); +},{}]},{},[16]); diff --git a/tests/alert_test.go b/tests/alert_test.go index cecb4f9791..59f24bdcf6 100644 --- a/tests/alert_test.go +++ b/tests/alert_test.go @@ -33,9 +33,10 @@ import ( "github.com/gorilla/websocket" "github.com/hydrogen18/stoppableListener" - "github.com/skydive-project/skydive/alert" - "github.com/skydive-project/skydive/api/types" + "github.com/skydive-project/skydive/config" + "github.com/skydive-project/skydive/graffiti/alert" + "github.com/skydive-project/skydive/graffiti/api/types" "github.com/skydive-project/skydive/graffiti/graph" ws "github.com/skydive-project/skydive/graffiti/websocket" ) @@ -86,7 +87,7 @@ func newClient(endpoint string) (*websocket.Conn, error) { } headers := http.Header{ - "X-Host-ID": {"host-test"}, + "X-Host-ID": {"host-test"}, "X-Client-Type": {"alert-srv"}, } diff --git a/tests/api_test.go b/tests/api_test.go index 1aa3b1c725..33f257532f 100644 --- a/tests/api_test.go +++ b/tests/api_test.go @@ -27,6 +27,7 @@ import ( "github.com/skydive-project/skydive/api/client" "github.com/skydive-project/skydive/api/types" + gtypes "github.com/skydive-project/skydive/graffiti/api/types" "github.com/skydive-project/skydive/graffiti/graph" shttp "github.com/skydive-project/skydive/graffiti/http" g "github.com/skydive-project/skydive/gremlin" @@ -45,13 +46,13 @@ func TestAlertAPI(t *testing.T) { t.Fatal(err) } - alert := types.NewAlert() + alert := gtypes.NewAlert() alert.Expression = g.G.V().Has("MTU", g.Gt(1500)).String() if err := client.Create("alert", alert, nil); err != nil { t.Errorf("Failed to create alert: %s", err.Error()) } - alert2 := types.NewAlert() + alert2 := gtypes.NewAlert() alert2.Expression = g.G.V().Has("MTU", g.Gt(1500)).String() if err := client.Get("alert", alert.UUID, &alert2); err != nil { t.Error(err) @@ -61,7 +62,7 @@ func TestAlertAPI(t *testing.T) { t.Errorf("Alert corrupted: %+v != %+v", alert, alert2) } - var alerts map[string]types.Alert + var alerts map[string]gtypes.Alert if err := client.List("alert", &alerts); err != nil { t.Error(err) } else { @@ -78,7 +79,7 @@ func TestAlertAPI(t *testing.T) { t.Errorf("Failed to delete alert: %s", err.Error()) } - var alerts2 map[string]types.Alert + var alerts2 map[string]gtypes.Alert if err := client.List("alert", &alerts2); err != nil { t.Errorf("Failed to list alerts: %s", err.Error()) } else { diff --git a/tests/workflow_test.go b/tests/workflow_test.go index cd4287a7fe..e21846fb35 100644 --- a/tests/workflow_test.go +++ b/tests/workflow_test.go @@ -25,12 +25,12 @@ import ( "github.com/mitchellh/mapstructure" - "github.com/skydive-project/skydive/api/types" + "github.com/skydive-project/skydive/graffiti/api/types" "github.com/skydive-project/skydive/graffiti/graph" "github.com/skydive-project/skydive/graffiti/graph/traversal" shttp "github.com/skydive-project/skydive/graffiti/http" + "github.com/skydive-project/skydive/graffiti/js" g "github.com/skydive-project/skydive/gremlin" - "github.com/skydive-project/skydive/js" ) func lookupWorkflow(client *shttp.CrudClient, name string) (*types.Workflow, error) {