diff --git a/crds/operators.coreos.com_catalogsources.yaml b/crds/operators.coreos.com_catalogsources.yaml index cd32b7891..49b39f969 100644 --- a/crds/operators.coreos.com_catalogsources.yaml +++ b/crds/operators.coreos.com_catalogsources.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.3.0 + controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null name: catalogsources.operators.coreos.com spec: diff --git a/crds/operators.coreos.com_clusterserviceversions.yaml b/crds/operators.coreos.com_clusterserviceversions.yaml index 6008cc0c3..ceb41bdf4 100644 --- a/crds/operators.coreos.com_clusterserviceversions.yaml +++ b/crds/operators.coreos.com_clusterserviceversions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.3.0 + controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null name: clusterserviceversions.operators.coreos.com spec: @@ -4100,6 +4100,7 @@ spec: Must be UDP, TCP, or SCTP. Defaults to "TCP". type: string + default: TCP readinessProbe: description: Probes are not allowed for ephemeral containers. diff --git a/crds/operators.coreos.com_installplans.yaml b/crds/operators.coreos.com_installplans.yaml index 1a837e145..62b85efef 100644 --- a/crds/operators.coreos.com_installplans.yaml +++ b/crds/operators.coreos.com_installplans.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.3.0 + controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null name: installplans.operators.coreos.com spec: diff --git a/crds/operators.coreos.com_operatorconditions.yaml b/crds/operators.coreos.com_operatorconditions.yaml index 56b22b3d3..0804de47a 100644 --- a/crds/operators.coreos.com_operatorconditions.yaml +++ b/crds/operators.coreos.com_operatorconditions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.3.0 + controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null name: operatorconditions.operators.coreos.com spec: diff --git a/crds/operators.coreos.com_operatorgroups.yaml b/crds/operators.coreos.com_operatorgroups.yaml index 2381cb446..dcd4c3ca2 100644 --- a/crds/operators.coreos.com_operatorgroups.yaml +++ b/crds/operators.coreos.com_operatorgroups.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.3.0 + controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null name: operatorgroups.operators.coreos.com spec: diff --git a/crds/operators.coreos.com_operators.yaml b/crds/operators.coreos.com_operators.yaml index 10fd4a2c8..78a501574 100644 --- a/crds/operators.coreos.com_operators.yaml +++ b/crds/operators.coreos.com_operators.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.3.0 + controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null name: operators.operators.coreos.com spec: diff --git a/crds/operators.coreos.com_subscriptions.yaml b/crds/operators.coreos.com_subscriptions.yaml index 03b000332..a73099cdf 100644 --- a/crds/operators.coreos.com_subscriptions.yaml +++ b/crds/operators.coreos.com_subscriptions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.3.0 + controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null name: subscriptions.operators.coreos.com spec: diff --git a/crds/zz_defs.go b/crds/zz_defs.go index 3aafed754..a95c6dac1 100644 --- a/crds/zz_defs.go +++ b/crds/zz_defs.go @@ -84,7 +84,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _operatorsCoreosCom_catalogsourcesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\x4b\x8f\x1b\xb9\xf1\xbf\xcf\xa7\x28\xe0\x7f\xf0\x65\xd4\xb3\xfb\x77\x10\x04\xc2\x66\x01\x67\x26\x0f\x21\xf6\x7a\x30\x63\x1b\xc8\xb1\x44\x96\xba\xb9\xc3\x26\x7b\x59\x6c\xc9\xda\x20\xdf\x3d\x28\xb2\xbb\xf5\xea\x96\x46\x46\xcc\x8b\x2d\x36\x59\xef\xfa\x55\x15\x07\x1b\xf3\x85\x02\x1b\xef\xe6\x80\x8d\xa1\xaf\x91\x9c\xfc\xe2\xe2\xe5\x4f\x5c\x18\x7f\xb7\xfe\xf1\xe6\xc5\x38\x3d\x87\xfb\x96\xa3\xaf\x9f\x88\x7d\x1b\x14\x3d\xd0\xca\x38\x13\x8d\x77\x37\x35\x45\xd4\x18\x71\x7e\x03\x80\xce\xf9\x88\xb2\xcd\xf2\x13\x40\x79\x17\x83\xb7\x96\xc2\xac\x24\x57\xbc\xb4\x4b\x5a\xb6\xc6\x6a\x0a\x89\x78\xcf\x7a\xfd\x43\xf1\xb6\xf8\xe1\x06\x40\x05\x4a\xd7\x3f\x99\x9a\x38\x62\xdd\xcc\xc1\xb5\xd6\xde\x00\x38\xac\x69\x0e\x0a\x23\x5a\x5f\x66\x21\xb8\xf0\x0d\x05\x8c\x3e\x70\xa1\x7c\x20\x2f\xff\xd4\x37\xdc\x90\x12\xee\x65\xf0\x6d\x33\x87\xd1\x33\x99\x5e\x2f\x24\x46\x2a\x7d\x30\xfd\xef\x19\x78\x5b\xa7\xff\x75\xaa\x67\xa6\xcf\x89\x69\xda\xb7\x86\xe3\x3f\x4f\xbf\xbd\x37\x1c\xd3\xf7\xc6\xb6\x01\xed\xb1\xb8\xe9\x13\x57\x3e\xc4\x5f\x76\xcc\x67\x72\x88\x83\xca\x1f\x8d\x2b\x5b\x8b\xe1\xe8\xe6\x0d\x00\x2b\xdf\xd0\x1c\xd2\xc5\x06\x15\xe9\x1b\x80\xce\x7c\x89\xd0\x0c\x50\xeb\xe4\x10\xb4\x8f\xc1\xb8\x48\xe1\xde\xdb\xb6\x76\x03\x1b\x4d\xac\x82\x69\x62\x32\xf8\xa7\x8a\xa0\x09\x14\xe3\x36\x19\x02\xfc\x0a\x62\x45\x3d\xd7\x74\x03\xe0\x57\xf6\xee\x11\x63\x35\x87\x42\x6c\x5a\x68\xc3\x8d\xc5\xad\xc8\xd0\x9d\xc8\x4e\x79\xc8\xfb\xdd\x5e\xdc\x8a\xa0\x1c\x83\x71\xe5\x14\x6b\x39\xf3\x3a\x9e\xd9\x00\x9f\xb6\xcd\x21\xcb\xbd\x8d\xd7\xf0\x6b\xda\xa5\x35\x5c\x51\x78\x1d\xd3\xe1\xf8\x01\xcf\xc7\xa3\xdd\x11\xc6\x7b\x84\xfa\xb4\x28\x4e\x42\xfa\x80\xe8\xbb\xf2\x50\x0f\x8d\x31\x6f\xe4\xcf\xeb\x1f\xd1\x36\x15\xfe\x98\xa3\x43\x55\x54\xe3\xbc\x3b\xef\x1b\x72\xef\x1e\x17\x5f\xde\x3e\x1f\x6c\xc3\xa1\xf6\x07\xf1\x09\x86\x01\x21\x50\xe3\xd9\x44\x1f\xb6\x62\x8d\xfb\xe7\x2f\x7c\x0b\xf7\x4f\x0f\x7c\x0b\xe8\xf4\x90\x2e\xd0\xa0\x7a\xc1\x92\xb8\x18\x08\x67\x09\xfd\xf2\x57\x52\x71\xd8\x0c\xf4\x5b\x6b\x02\xe9\x1d\xff\x19\xf4\xba\xef\x6d\x89\x5d\x87\x9f\x4d\x10\x2e\x71\x48\xb8\xbc\xf6\xb0\x68\x6f\xf7\x48\x9f\x37\xa2\x72\x3e\x05\x5a\x40\x88\x38\x39\xb4\xcb\x05\xd2\x9d\x95\xb2\xa3\x0d\x8b\xb6\x81\x98\x5c\x86\xa5\x03\xc2\x20\x87\xd0\x75\x1a\x15\xf0\x4c\x41\xc8\x48\x8a\xb6\x56\x0b\x76\xad\x29\x44\x08\xa4\x7c\xe9\xcc\xef\x03\x6d\x86\xe8\x13\x53\x8b\x91\x38\x1e\xd1\x4c\xb9\xe7\xd0\xc2\x1a\x6d\x4b\xd9\xa8\x35\x6e\x21\x90\x70\x81\xd6\xed\xd1\x4b\x47\xb8\x80\x0f\x3e\x10\x18\xb7\xf2\x73\xa8\x62\x6c\x78\x7e\x77\x57\x9a\xd8\x63\xb0\xf2\x75\xdd\x3a\x13\xb7\x77\x09\x4e\xcd\xb2\x15\x38\xbb\xd3\xb4\x26\x7b\xc7\xa6\x9c\x61\x50\x95\x89\xa4\x62\x1b\xe8\x0e\x1b\x33\x4b\xa2\xbb\x84\xc3\x45\xad\xff\x2f\x74\xa8\xcd\x6f\x0e\x64\x3d\x09\xe0\xbc\x12\xe8\x9d\xf1\x80\x00\x5f\x8e\xa4\x7c\x35\x6b\xb1\x33\xb4\x6c\x89\x75\x9e\xfe\xfa\xfc\x09\x7a\xd6\xc9\x19\xc7\xd6\x4f\x76\xdf\x5d\xe4\x9d\x0b\xc4\x60\xc6\xad\x28\x64\x27\xae\x82\xaf\x13\x4d\x72\xba\xf1\xc6\xc5\x9c\xc4\xd6\x90\x3b\x36\x3f\xb7\xcb\xda\x44\x4e\x71\x49\x1c\xc5\x57\x05\xdc\xa7\xc2\x04\x4b\x82\xb6\x91\x0c\xd3\x05\x2c\x1c\xdc\x63\x4d\xf6\x1e\x99\xbe\xbb\x03\xc4\xd2\x3c\x13\xc3\xbe\xce\x05\xfb\x35\xf5\xf8\xf0\x51\xfe\x01\xf4\xf5\xee\xe2\xc1\xb1\x64\x85\x9c\x9d\xc7\x28\x9b\xd7\x78\x9e\xca\x42\xad\x03\xf1\xc9\xf6\x49\xb2\xe6\x63\x39\x5a\x2a\xcf\xe2\x37\x8c\xf0\xf1\xfd\x07\x50\xe8\xa0\x65\x92\x54\x52\xde\x39\x09\x84\xe8\x01\xa5\x2a\xcd\xe8\xab\xe1\x78\x68\x91\x9d\x06\xa5\xe1\x18\xb6\x05\xfc\xcd\x87\x1a\xe3\x1c\x7e\xea\xb7\x66\x89\x81\x0f\x60\x9a\x9f\xe7\x3f\x35\x3e\xc4\x9f\xe1\xa3\xb3\x5b\x61\xa3\x61\x53\x91\x83\xe7\x71\x3d\xf3\xfa\xf3\xde\xe7\xbf\x87\x46\x15\xb0\x28\x9d\x0f\xfd\x5d\x89\xb8\x45\x8d\x25\xc1\xca\x90\x4d\x19\xc0\x14\x8b\x37\x27\x94\x26\x7c\x0a\xb9\x1d\x5a\x99\xf2\x03\x36\x17\x0c\x77\xdf\x9f\x13\x2e\xc2\x78\xbf\x48\xef\x3e\x46\x9f\x42\x5a\xd4\x8b\x7e\x44\xa3\x25\xaa\x17\xc0\x8e\x6b\x8d\xcd\x8c\x53\x7a\xed\x19\x71\xd2\x3e\x07\xd6\xb8\xef\x09\x8c\xf0\xf0\x61\xef\xe0\xa2\xc3\xbe\xe2\x1a\xa3\xec\x6b\x7e\xd5\xbd\x5d\x3b\x72\xc1\x9c\x1f\x8e\xeb\xd1\x2b\xa8\x1b\x35\x2d\xce\x48\x66\xc1\x64\x76\x41\xca\xb0\x25\x32\xfd\xf1\x0f\xa3\x42\x48\xbd\xd4\x06\xe3\x58\x54\x4e\x67\x20\x24\xff\xf6\x44\xc7\xbe\x9e\x55\x0f\x12\xca\x74\x6c\xaf\xbe\x6d\x24\x0f\x2e\x18\x3d\xe7\x8a\x64\xbe\x1b\x9a\x8a\x59\x1f\x79\x69\x30\x40\xe3\x28\x64\x5a\x12\xca\xc6\x71\x44\x17\x4d\xdf\x01\x1d\x2e\x1c\xa2\xb6\x8f\xe2\x8d\x89\xd5\x6b\x23\x38\xe5\xf3\x08\xd5\xc5\x0a\xba\xe2\x73\x9b\x72\xab\xc3\xb5\x5d\x8a\x9b\x0c\x01\x57\x05\x74\x13\x8c\x0f\x26\x6e\x2f\xa1\xe3\x63\x77\xae\xe3\x86\xcc\xa6\x74\x82\x94\x1b\x32\x65\x15\xfb\x2e\xa3\xeb\x55\x81\x77\xf3\xc7\x91\x28\xbe\x67\x69\x7e\x97\x42\x4b\x35\xb0\xcf\x48\x6b\x62\x02\xda\x25\x89\xc1\xb9\xad\x49\xc3\x72\x9b\xa8\x6a\x6a\xc8\x69\x72\x6a\x3b\x8a\xb2\xec\xed\x9a\x42\x01\x9f\x59\x3c\x0d\xff\x30\xa5\x74\xcf\x9d\x60\xc6\x69\x23\x43\x13\x67\x26\xa9\x44\x5f\x94\xd2\xb0\x98\x7a\x45\x41\x10\xd5\x8b\x03\xad\xdf\x0c\x34\x49\x1f\x51\x60\xd0\x6d\xea\x2e\x2e\x0b\xda\x8a\x3d\x8b\xd4\xe8\x07\x74\xe5\x00\x94\xbd\x1f\xba\x06\x45\x0c\x51\xfa\xdc\x4b\xa4\x0e\xd8\xac\x27\xac\xe9\xa8\x44\xf9\x0a\x26\xc3\xfe\x40\xd5\xb8\xf8\xf6\xff\x33\x27\x4d\x2b\x6c\x6d\xec\x68\xa7\xd2\x75\x38\x54\xec\xaf\xae\x07\x92\x88\x85\xd6\x65\x47\x93\xde\x09\xb8\x49\x0d\xe7\x92\xe0\x87\x4c\xfc\xd0\x14\xe9\xde\x98\xa4\x15\x01\x4b\x61\x38\x54\x94\x61\x63\xac\x15\x6a\x01\xdd\x0b\x69\xb0\xf4\xd5\x28\x5f\x06\x6c\x2a\xa3\xd0\xda\x6d\x02\x0e\x3d\x06\xe6\x0e\xa4\x77\x92\x6a\x33\x59\xd8\xa4\xbf\x2d\x87\x21\xa8\x5f\xc3\xc8\x74\x15\x84\x33\xa9\x40\xf1\x52\x1b\xf1\x9c\x4f\xed\x1a\x45\x29\xbc\xe2\x8e\xee\x7a\x8e\xc2\x2e\xce\xa7\xab\x21\x2a\x25\xa9\x9d\x52\xca\xbb\x28\x0d\xe7\xd1\x38\x58\xc0\x22\x4a\x9c\x2e\x89\x53\xf6\xbd\x10\x35\x39\xba\xad\x39\xe9\xf3\x93\xfc\x35\x5a\x7b\x2b\x63\xbb\x22\x20\x54\x55\x36\xbd\xa3\x24\x83\x88\x13\x83\x21\x0d\x2b\x1f\x80\xd6\x24\xb8\xd7\x79\x96\x9c\xd4\xdf\x09\x5b\x61\x08\x78\x1a\xed\x26\x52\x3d\x5a\x06\xce\x19\x78\x40\xc0\x4b\x36\xde\xe1\x66\xd7\x72\xf4\x33\xfa\x44\x42\x9f\x61\x9a\x7b\xec\xe7\x18\x30\x52\x79\x09\x05\x3f\x1f\x1c\x1e\x66\xba\xca\x6f\xfa\x5e\xfd\x38\x1b\x52\xc1\x38\x9e\x25\x20\xbd\xe3\xa4\x08\xd0\x86\x95\xe0\x0b\x69\x69\x95\xd8\x70\xf6\x33\xba\x3c\x9a\xad\xd1\xe6\x80\xe9\x59\x35\xde\xda\x04\x34\x6d\x18\x9b\x11\x65\xc9\x0c\x87\x0e\xa8\x5e\x92\xd6\x32\x07\xf6\xe2\x8e\x16\xed\xb3\x4d\xc2\xf9\x8a\xde\xd7\xb8\x47\x6f\xed\xb9\xaa\x3c\x41\xfc\x32\x03\xe8\x27\xd4\x35\x4e\x30\x80\x93\x42\xde\x5b\xcd\x70\x9f\x5d\xa0\x29\x52\xa8\x8d\xa3\x1c\x2a\xa6\xa6\x81\xea\x24\x51\x80\x25\xc5\x0d\x91\x03\x55\x91\x7a\x19\x92\x2f\x4f\xd1\xc7\x5e\xee\x06\xfa\x84\x87\x67\x48\xf6\xb7\x76\xcf\x16\xde\xda\x34\xa0\x33\x11\x98\x15\x20\x38\xda\xf4\xd4\xc6\x9f\x7f\xc6\x16\xef\x1e\x4c\xd6\x68\x2c\x2e\x2d\x15\xd2\x2d\x0c\xbf\x6e\xf7\x65\x37\x7d\xaf\xd3\xb4\xd6\x8e\x22\x6b\xbf\x24\x92\xca\xa7\xc7\x7b\x88\x01\x57\x2b\xa3\xe4\x92\x36\x81\x54\xcc\x86\x9d\x34\xc8\x58\xf7\x92\xd7\x44\x26\x72\xc4\xd8\xf2\x2b\x07\xc3\xe9\xa0\x19\x46\x96\x27\xa9\xdd\xe4\xd4\x08\x92\x7c\x73\x57\xec\x76\x4f\x89\xc7\xdb\xe9\x95\xf3\xca\xec\xb1\xc8\x31\xe3\xc9\x27\x33\x36\x14\xc0\xe5\x9e\x18\x04\xab\xd3\x5c\x29\x64\x66\x12\xd9\x23\xa7\xdc\xe8\xcc\xf1\x0a\xf2\x83\x66\xdf\x74\xbb\x7f\x4c\x19\x7d\x26\x7b\x25\x8d\xd6\x8c\x78\x02\x4e\x50\x79\xf1\x90\x87\xf6\x54\x05\x12\x5c\x56\xde\x6a\x86\xd6\x99\xdf\x5a\x82\xc5\x43\xd7\x6b\xdc\x82\x71\xca\xb6\x7a\xca\x9a\x00\x9f\x3f\x2f\x1e\xb8\x00\xf8\x0b\x29\x94\x81\x7f\x43\xa0\xbd\x7b\x13\xe1\xe3\x2f\xef\xff\x95\x9e\x00\xd2\x89\xdb\x5c\x68\xf3\xbc\x80\xd6\xa4\x57\xb6\x09\x92\x59\xb9\x44\x53\x80\xbb\x93\x52\x61\x13\xdb\x40\x9c\x90\xc8\xc5\x94\x6a\x15\xd9\x86\xa1\xc6\x17\x02\x6e\x43\xd6\x64\x4a\xce\xc5\x03\xa7\x3b\xc9\x47\xa0\x3d\x38\x1f\xa1\xa4\x98\x52\xc0\xa6\x57\xa3\x6b\x0d\xde\xbd\x6c\x18\xef\x9e\x23\xc6\xff\x65\xe6\x48\xa8\x7f\x5c\xa6\x49\x48\x27\xda\x57\xa6\xca\xe4\x03\xce\x05\x8d\xa0\x4b\xb3\xfb\xac\xd9\x77\xcc\xb1\x13\x0d\xaf\xe6\x95\x71\x34\xcd\xa1\x4f\x67\xeb\xea\xc9\xdf\x0b\x84\x77\xae\x6a\xe9\xc1\xe5\xf0\x0d\x3d\x61\xfd\x30\xc8\x56\x28\xfd\x22\x8d\x75\x0d\x52\x8a\x32\xaa\x93\xeb\xa2\x8f\x76\xa5\xa2\x6d\x66\xd1\xcf\xf4\x98\xeb\xce\xda\xef\x92\xed\x6a\x62\xbe\x3c\x9d\xbf\x83\xaa\xad\xd1\x41\x20\xd4\x52\xce\xfa\x6b\xfd\x6c\x97\x27\xaf\x88\xc6\x32\xe0\xd2\xb7\x11\x36\xd5\xd8\x00\x36\x62\x1f\xce\x63\x93\xcc\x84\xde\xe5\xbf\x49\x5d\x35\x3e\x07\x42\x1e\x03\xb7\x03\xf9\x9f\xd2\xa1\xbe\x57\xcd\x57\x46\x84\xd9\x08\x8c\x04\x74\x9c\xc4\x18\xad\xcc\xd1\xa7\x99\x47\xb5\x21\xa4\xd1\x42\x42\xed\x4a\x79\x73\x28\x3c\x53\x58\x9b\xab\xcb\xe3\xf9\x34\x4d\x7f\x3c\x22\xfd\xee\x7b\x26\x5a\xe3\xc3\xb7\x91\x6f\x82\x8f\x5e\xf9\xb3\x8d\xea\xe4\x65\xce\xd6\x1a\x7f\xbd\xbb\xee\xfe\x35\x05\x35\xe3\xc9\x1c\x62\x68\xb3\x2d\x38\xfa\x90\x9e\x38\x76\x3b\xed\x72\xf8\x83\x49\x4f\xb5\x6b\xa6\xe0\xdf\xff\xb9\xf9\x6f\x00\x00\x00\xff\xff\xda\xfa\xc4\xca\x33\x1f\x00\x00") +var _operatorsCoreosCom_catalogsourcesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\xdd\x8f\xdb\xb8\x11\x7f\xdf\xbf\x62\x80\x3e\xe4\x65\xad\xbd\xf4\x0e\x45\x61\x5c\x0f\x48\x77\xfb\x61\xf4\x72\x59\xec\x26\x01\xfa\x38\x26\xc7\x12\x6f\x29\x52\xc7\xa1\xec\xf8\x8a\xfe\xef\xc5\x90\x92\xfc\x25\xd9\xeb\xa0\xe1\x4b\x62\x8a\x9c\xef\xf9\xcd\x0c\x17\x1b\xf3\x99\x02\x1b\xef\xe6\x80\x8d\xa1\x2f\x91\x9c\xfc\xe2\xe2\xe5\xcf\x5c\x18\x7f\xb7\x7e\x7b\xf3\x62\x9c\x9e\xc3\x7d\xcb\xd1\xd7\x4f\xc4\xbe\x0d\x8a\x1e\x68\x65\x9c\x89\xc6\xbb\x9b\x9a\x22\x6a\x8c\x38\xbf\x01\x40\xe7\x7c\x44\xd9\x66\xf9\x09\xa0\xbc\x8b\xc1\x5b\x4b\x61\x56\x92\x2b\x5e\xda\x25\x2d\x5b\x63\x35\x85\x44\xbc\x67\xbd\xfe\xae\xf8\xa1\x78\x7b\x03\xa0\x02\xa5\xeb\x1f\x4d\x4d\x1c\xb1\x6e\xe6\xe0\x5a\x6b\x6f\x00\x1c\xd6\x34\x07\x85\x11\xad\x2f\xb3\x10\x5c\xf8\x86\x02\x46\x1f\xb8\x50\x3e\x90\x97\x7f\xea\x1b\x6e\x48\x09\xf7\x32\xf8\xb6\x99\xc3\xe8\x99\x4c\xaf\x17\x12\x23\x95\x3e\x98\xfe\xf7\x0c\xbc\xad\xd3\xff\x3a\xd5\x33\xd3\xe7\xc4\x34\xed\x5b\xc3\xf1\x5f\xa7\xdf\x7e\x36\x1c\xd3\xf7\xc6\xb6\x01\xed\xb1\xb8\xe9\x13\x57\x3e\xc4\x5f\x76\xcc\x67\x72\x88\x83\xca\x1f\x8d\x2b\x5b\x8b\xe1\xe8\xe6\x0d\x00\x2b\xdf\xd0\x1c\xd2\xc5\x06\x15\xe9\x1b\x80\xce\x7c\x89\xd0\x0c\x50\xeb\xe4\x10\xb4\x8f\xc1\xb8\x48\xe1\xde\xdb\xb6\x76\x03\x1b\x4d\xac\x82\x69\x62\x32\xf8\xc7\x8a\xa0\x09\x14\xe3\x36\x19\x02\xfc\x0a\x62\x45\x3d\xd7\x74\x03\xe0\x57\xf6\xee\x11\x63\x35\x87\x42\x6c\x5a\x68\xc3\x8d\xc5\xad\xc8\xd0\x9d\xc8\x4e\x79\xc8\xfb\xdd\x5e\xdc\x8a\xa0\x1c\x83\x71\xe5\x14\x6b\x39\xf3\x3a\x9e\xd9\x00\x1f\xb7\xcd\x21\xcb\xbd\x8d\xd7\xf0\x6b\xda\xa5\x35\x5c\x51\x78\x1d\xd3\xe1\xf8\x01\xcf\xc7\xa3\xdd\x11\xc6\x7b\x84\xfa\xb4\x28\x4e\x42\xfa\x80\xe8\xbb\xf2\x50\x0f\x8d\x31\x6f\xe4\xcf\xeb\xb7\x68\x9b\x0a\xdf\xe6\xe8\x50\x15\xd5\x38\xef\xce\xfb\x86\xdc\xbb\xc7\xc5\xe7\xef\x9f\x0f\xb6\xe1\x50\xfb\x83\xf8\x04\xc3\x80\x10\xa8\xf1\x6c\xa2\x0f\x5b\xb1\xc6\xfd\xf3\x67\xbe\x85\xfb\xa7\x07\xbe\x05\x74\x7a\x48\x17\x68\x50\xbd\x60\x49\x5c\x0c\x84\xb3\x84\x7e\xf9\x2b\xa9\x38\x6c\x06\xfa\xad\x35\x81\xf4\x8e\xff\x0c\x7a\xdd\xf7\xb6\xc4\xae\xc3\xcf\x26\x08\x97\x38\x24\x5c\x5e\x7b\x58\xb4\xb7\x7b\xa4\xcf\x1b\x51\x39\x9f\x02\x2d\x20\x44\x9c\x1c\xda\xe5\x02\xe9\xce\x4a\xd9\xd1\x86\x45\xdb\x40\x4c\x2e\xc3\xd2\x01\x61\x90\x43\xe8\x3a\x8d\x0a\x78\xa6\x20\x64\x24\x45\x5b\xab\x05\xbb\xd6\x14\x22\x04\x52\xbe\x74\xe6\xf7\x81\x36\x43\xf4\x89\xa9\xc5\x48\x1c\x8f\x68\xa6\xdc\x73\x68\x61\x8d\xb6\xa5\x6c\xd4\x1a\xb7\x10\x48\xb8\x40\xeb\xf6\xe8\xa5\x23\x5c\xc0\x7b\x1f\x08\x8c\x5b\xf9\x39\x54\x31\x36\x3c\xbf\xbb\x2b\x4d\xec\x31\x58\xf9\xba\x6e\x9d\x89\xdb\xbb\x04\xa7\x66\xd9\x0a\x9c\xdd\x69\x5a\x93\xbd\x63\x53\xce\x30\xa8\xca\x44\x52\xb1\x0d\x74\x87\x8d\x99\x25\xd1\x5d\xc2\xe1\xa2\xd6\x7f\x08\x1d\x6a\xf3\x9b\x03\x59\x4f\x02\x38\xaf\x04\x7a\x67\x3c\x20\xc0\x97\x23\x29\x5f\xcd\x5a\xec\x0c\x2d\x5b\x62\x9d\xa7\xbf\x3d\x7f\x84\x9e\x75\x72\xc6\xb1\xf5\x93\xdd\x77\x17\x79\xe7\x02\x31\x98\x71\x2b\x0a\xd9\x89\xab\xe0\xeb\x44\x93\x9c\x6e\xbc\x71\x31\x27\xb1\x35\xe4\x8e\xcd\xcf\xed\xb2\x36\x91\x53\x5c\x12\x47\xf1\x55\x01\xf7\xa9\x30\xc1\x92\xa0\x6d\x24\xc3\x74\x01\x0b\x07\xf7\x58\x93\xbd\x47\xa6\x6f\xee\x00\xb1\x34\xcf\xc4\xb0\xaf\x73\xc1\x7e\x4d\x3d\x3e\x7c\x94\x7f\x00\x7d\xbd\xbb\x78\x70\x2c\x59\x21\x67\xe7\x31\xca\xe6\x35\x9e\xa7\xb2\x50\xeb\x40\x7c\xb2\x7d\x92\xac\xf9\x58\x8e\x96\xca\xb3\xf8\x0d\x23\x7c\xf8\xf9\x3d\x28\x74\xd0\x32\x49\x2a\x29\xef\x9c\x04\x42\xf4\x80\x52\x95\x66\xf4\xc5\x70\x3c\xb4\xc8\x4e\x83\xd2\x70\x0c\xdb\x02\xfe\xee\x43\x8d\x71\x0e\x3f\xf6\x5b\xb3\xc4\xc0\x07\x30\xcd\x4f\xf3\x1f\x1b\x1f\xe2\x4f\xf0\xc1\xd9\xad\xb0\xd1\xb0\xa9\xc8\xc1\xf3\xb8\x9e\x79\xfd\x65\xef\xf3\x3f\x42\xa3\x0a\x58\x94\xce\x87\xfe\xae\x44\xdc\xa2\xc6\x92\x60\x65\xc8\xa6\x0c\x60\x8a\xc5\x9b\x13\x4a\x13\x3e\x85\xdc\x0e\xad\x4c\xf9\x1e\x9b\x0b\x86\xbb\xef\xcf\x09\x17\x61\xbc\x5f\xa4\x77\x1f\xa3\x4f\x21\x2d\xea\x45\x3f\xa2\xd1\x12\xd5\x0b\x60\xc7\xb5\xc6\x66\xc6\x29\xbd\xf6\x8c\x38\x69\x9f\x03\x6b\xdc\xf7\x04\x46\x78\xf8\xb0\x77\x70\xd1\x61\x5f\x71\x8d\x51\xf6\x35\xbf\xea\xde\xae\x1d\xb9\x60\xce\xf7\xc7\xf5\xe8\x15\xd4\x8d\x9a\x16\x67\x24\xb3\x60\x32\xbb\x20\x65\xd8\x12\x99\xfe\xf4\xc3\xa8\x10\x52\x2f\xb5\xc1\x38\x16\x95\xd3\x19\x08\xc9\xbf\x3d\xd1\xb1\xaf\x67\xd5\x83\x84\x32\x1d\xdb\xab\x6f\x1b\xc9\x83\x0b\x46\xcf\xb9\x22\x99\xef\x86\xa6\x62\xd6\x47\x5e\x1a\x0c\xd0\x38\x0a\x99\x96\x84\xb2\x71\x1c\xd1\x45\xd3\x77\x40\x87\x0b\x87\xa8\xed\xa3\x78\x63\x62\xf5\xda\x08\x4e\xf9\x3c\x42\x75\xb1\x82\xae\xf8\xdc\xa6\xdc\xea\x70\x6d\x97\xe2\x26\x43\xc0\x55\x01\xdd\x04\xe3\x83\x89\xdb\x4b\xe8\xf8\xd8\x9d\xeb\xb8\x21\xb3\x29\x9d\x20\xe5\x86\x4c\x59\xc5\xbe\xcb\xe8\x7a\x55\xe0\xdd\xfc\x71\x24\x8a\xef\x59\x9a\xdf\xa5\xd0\x52\x0d\xec\x33\xd2\x9a\x98\x80\x76\x49\x62\x70\x6e\x6b\xd2\xb0\xdc\x26\xaa\x9a\x1a\x72\x9a\x9c\xda\x8e\xa2\x2c\x7b\xbb\xa6\x50\xc0\x27\x16\x4f\xc3\x3f\x4d\x29\xdd\x73\x27\x98\x71\xda\xc8\xd0\xc4\x99\x49\x2a\xd1\x17\xa5\x34\x2c\xa6\x5e\x51\x10\x44\xf5\xe2\x40\xeb\x37\x03\x4d\xd2\x47\x14\x18\x74\x9b\xba\x8b\xcb\x82\xb6\x62\xcf\x22\x35\xfa\x01\x5d\x39\x00\x65\xef\x87\xae\x41\x11\x43\x94\x3e\xf7\x12\xa9\x03\x36\xeb\x09\x6b\x3a\x2a\x51\xbe\x82\xc9\xb0\x3f\x50\x35\x2e\x7e\xff\xc7\xcc\x49\xd3\x0a\x5b\x1b\x3b\xda\xa9\x74\x1d\x0e\x15\xfb\xab\xeb\x81\x24\x62\xa1\x75\xd9\xd1\xa4\x77\x02\x6e\x52\xc3\xb9\x24\xf8\x2e\x13\x3f\x34\x45\xba\x37\x26\x69\x45\xc0\x52\x18\x0e\x15\x65\xd8\x18\x6b\x85\x5a\x40\xf7\x42\x1a\x2c\x7d\x31\xca\x97\x01\x9b\xca\x28\xb4\x76\x9b\x80\x43\x8f\x81\xb9\x03\xe9\x9d\xa4\xda\x4c\x16\x36\xe9\x6f\xcb\x61\x08\xea\xd7\x30\x32\x5d\x05\xe1\x4c\x2a\x50\xbc\xd4\x46\x3c\xe7\x53\xbb\x46\x51\x0a\xaf\xb8\xa3\xbb\x9e\xa3\xb0\x8b\xf3\xe9\x6a\x88\x4a\x49\x6a\xa7\x94\xf2\x2e\x4a\xc3\x79\x34\x0e\x16\xb0\x88\x12\xa7\x4b\xe2\x94\x7d\x2f\x44\x4d\x8e\x6e\x6b\x4e\xfa\xfc\x24\x7f\x8d\xd6\xde\xca\xd8\xae\x08\x08\x55\x95\x4d\xef\x28\xc9\x20\xe2\xc4\x60\x48\xc3\xca\x07\xa0\x35\x09\xee\x75\x9e\x25\x27\xf5\x77\xc2\x56\x18\x02\x9e\x46\xbb\x89\x54\x8f\x96\x81\x73\x06\x1e\x10\xf0\x92\x8d\x77\xb8\xd9\xb5\x1c\xfd\x8c\x3e\x91\xd0\x67\x98\xe6\x1e\xfb\x39\x06\x8c\x54\x5e\x42\xc1\x4f\x07\x87\x87\x99\xae\xf2\x9b\xbe\x57\x3f\xce\x86\x54\x30\x8e\x67\x09\x48\xef\x38\x29\x02\xb4\x61\x25\xf8\x42\x5a\x5a\x25\x36\x9c\xfd\x8c\x2e\x8f\x66\x6b\xb4\x39\x60\x7a\x56\x8d\xb7\x36\x01\x4d\x1b\xc6\x66\x44\x59\x32\xc3\xa1\x03\xaa\x97\xa4\xb5\xcc\x81\xbd\xb8\xa3\x45\xfb\x6c\x93\x70\xbe\xa2\xf7\x35\xee\xd1\x5b\x7b\xae\x2a\x4f\x10\xbf\xcc\x00\xfa\x09\x75\x8d\x13\x0c\xe0\xa4\x90\xf7\x56\x33\xdc\x67\x17\x68\x8a\x14\x6a\xe3\x28\x87\x8a\xa9\x69\xa0\x3a\x49\x14\x60\x49\x71\x43\xe4\x40\x55\xa4\x5e\x86\xe4\xcb\x53\xf4\xb1\x97\xbb\x81\x3e\xe1\xe1\x19\x92\xfd\xad\xdd\xb3\x85\xb7\x36\x0d\xe8\x4c\x04\x66\x05\x08\x8e\x36\x3d\xb5\xf1\xe7\x9f\xb1\xc5\xbb\x07\x93\x35\x1a\x8b\x4b\x4b\x85\x74\x0b\xc3\xaf\xdb\x7d\xd9\x4d\xdf\xeb\x34\xad\xb5\xa3\xc8\xda\x2f\x89\xa4\xf2\xe9\xf1\x1e\x62\xc0\xd5\xca\x28\xb9\xa4\x4d\x20\x15\xb3\x61\x27\x0d\x32\xd6\xbd\xe4\x35\x91\x89\x1c\x31\xb6\xfc\xca\xc1\x70\x3a\x68\x86\x91\xe5\x49\x6a\x37\x39\x35\x82\x24\x5f\xdd\x15\xbb\xdd\x53\xe2\xf1\x76\x7a\xe5\xbc\x32\x7b\x2c\x72\xcc\x78\xf2\xd1\x8c\x0d\x05\x70\xb9\x27\x06\xc1\xea\x34\x57\x0a\x99\x99\x44\xf6\xc8\x29\x37\x3a\x73\xbc\x82\xfc\xa0\xd9\x57\xdd\xee\x1f\x53\x46\x9f\xc9\x5e\x49\xa3\x35\x23\x9e\x80\x13\x54\x5e\x3c\xe4\xa1\x3d\x55\x81\x04\x97\x95\xb7\x9a\xa1\x75\xe6\xb7\x96\x60\xf1\xd0\xf5\x1a\xb7\x60\x9c\xb2\xad\x9e\xb2\x26\xc0\xa7\x4f\x8b\x07\x2e\x00\xfe\x4a\x0a\x65\xe0\xdf\x10\x68\xef\xde\x44\xf8\xf0\xcb\xcf\xff\x4e\x4f\x00\xe9\xc4\x6d\x2e\xb4\x79\x5e\x40\x6b\xd2\x2b\xdb\x04\xc9\xac\x5c\xa2\x29\xc0\xdd\x49\xa9\xb0\x89\x6d\x20\x4e\x48\xe4\x62\x4a\xb5\x8a\x6c\xc3\x50\xe3\x0b\x01\xb7\x21\x6b\x32\x25\xe7\xe2\x81\xd3\x9d\xe4\x23\xd0\x1e\x9c\x8f\x50\x52\x4c\x29\x60\xd3\xab\xd1\xb5\x06\xef\x5e\x36\x8c\x77\xcf\x11\xe3\xff\x33\x73\x24\xd4\x3f\x2c\xd3\x24\xa4\x13\xed\x2b\x53\x65\xf2\x01\xe7\x82\x46\xd0\xa5\xd9\x7d\xd6\xec\x1b\xe6\xd8\x89\x86\x57\xf3\xca\x38\x9a\xe6\xd0\xa7\xb3\x75\xf5\xe4\xef\x05\xc2\x3b\x57\xb5\xf4\xe0\x72\xf8\x86\x9e\xb0\x7e\x18\x64\x2b\x94\x7e\x91\xc6\xba\x06\x29\x45\x19\xd5\xc9\x75\xd1\x47\xbb\x52\xd1\x36\xb3\xe8\x67\x7a\xcc\x75\x67\xed\x77\xc9\x76\x35\x31\x5f\x9e\xce\xdf\x41\xd5\xd6\xe8\x20\x10\x6a\x29\x67\xfd\xb5\x7e\xb6\xcb\x93\x57\x44\x63\x19\x70\xe9\xdb\x08\x9b\x6a\x6c\x00\x1b\xb1\x0f\xe7\xb1\x49\x66\x42\xef\xf2\xdf\xa4\xae\x1a\x9f\x03\x21\x8f\x81\xdb\x81\xfc\x4f\xe9\x50\xdf\xab\xe6\x2b\x23\xc2\x6c\x04\x46\x02\x3a\x4e\x62\x8c\x56\xe6\xe8\xd3\xcc\xa3\xda\x10\xd2\x68\x21\xa1\x76\xa5\xbc\x39\x14\x9e\x29\xac\xcd\xd5\xe5\xf1\x7c\x9a\xa6\x3f\x1e\x91\x7e\xf7\x2d\x13\xad\xf1\xe1\xeb\xc8\x37\xc1\x47\xaf\xfc\xd9\x46\x75\xf2\x32\x67\x6b\x8d\xbf\xde\x5d\x77\xff\x9a\x82\x9a\xf1\x64\x0e\x31\xb4\xd9\x16\x1c\x7d\x48\x4f\x1c\xbb\x9d\x76\x39\xfc\xc1\xa4\xa7\xda\x35\x53\xf0\x9f\xff\xde\xfc\x2f\x00\x00\xff\xff\xf4\x0c\x64\x04\x33\x1f\x00\x00") func operatorsCoreosCom_catalogsourcesYamlBytes() ([]byte, error) { return bindataRead( @@ -99,12 +99,12 @@ func operatorsCoreosCom_catalogsourcesYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "operators.coreos.com_catalogsources.yaml", size: 7987, mode: os.FileMode(436), modTime: time.Unix(1606762434, 0)} + info := bindataFileInfo{name: "operators.coreos.com_catalogsources.yaml", size: 7987, mode: os.FileMode(420), modTime: time.Unix(1607724217, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _operatorsCoreosCom_clusterserviceversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7b\x73\x24\xb7\x91\x2f\xfa\xbf\x3f\x45\xc6\x58\x7b\x48\xae\xd8\xcd\x19\x7b\xed\xbb\x3b\xc7\xf7\x28\xb8\x33\x94\xcc\xab\x19\x0e\x63\x48\x49\xc7\x21\x6b\xb5\xe8\x2a\x74\x37\x96\x55\x40\x19\x40\x35\xa7\xf7\xe8\x7c\xf7\x1b\x48\xa0\x5e\xdd\x4d\xb2\x0b\x00\x4d\x8e\x8c\x74\x84\x35\x7c\x65\xe3\x99\x99\xc8\xfc\x65\x26\xa9\xd8\xf7\x54\x2a\x26\xf8\x6b\x20\x15\xa3\x9f\x34\xe5\xe6\x2b\x35\xbd\xf9\x57\x35\x65\xe2\x64\xf5\xea\x37\x37\x8c\xe7\xaf\xe1\x4d\xad\xb4\x28\x3f\x52\x25\x6a\x99\xd1\xb7\x74\xce\x38\xd3\x4c\xf0\xdf\x94\x54\x93\x9c\x68\xf2\xfa\x37\x00\x84\x73\xa1\x89\xf9\xb6\x32\x5f\x02\x64\x82\x6b\x29\x8a\x82\xca\xc9\x82\xf2\xe9\x4d\x3d\xa3\xb3\x9a\x15\x39\x95\xc8\xbc\xf9\xe8\xd5\xcb\xe9\xef\xa7\x2f\x7f\x03\x90\x49\x8a\x7f\x7e\xcd\x4a\xaa\x34\x29\xab\xd7\xc0\xeb\xa2\xf8\x0d\x00\x27\x25\x7d\x0d\x59\x51\x2b\x4d\xa5\xa2\x72\xc5\x32\xea\xfe\x5e\x4d\x45\x45\x25\xd1\x42\xaa\x69\x26\x24\x15\xe6\x3f\xe5\x6f\x54\x45\x33\x33\x8a\x85\x14\x75\xf5\x1a\x76\xfe\x8e\xe5\xdb\x0c\x96\x68\xba\x10\x92\x35\x5f\x4f\x40\x14\x25\xfe\xcb\x2d\x81\xfd\xf0\x2b\xfb\xe1\x6e\xdd\xf0\xe7\x05\x53\xfa\xdb\xbb\x7f\xe7\x1d\x53\x1a\x7f\xaf\x2a\x6a\x49\x8a\xbb\xa6\x81\xbf\xa2\x96\x42\xea\x8b\x6e\x50\x13\xc8\xd4\xaa\xfb\x97\xfb\x25\xc6\x17\x75\x41\xe4\x1d\x9c\x7e\x03\xa0\x32\x51\xd1\xd7\x80\x8c\x2a\x92\xd1\xfc\x37\x00\xcd\xe7\x18\xc6\x13\x20\x79\x8e\x1b\x48\x8a\x4b\xc9\xb8\xa6\xf2\x8d\x28\xea\x92\xb7\x1f\x9b\x53\x95\x49\x56\x69\xdc\xa0\xeb\x25\xc5\x95\x02\x31\x07\xbd\xa4\xf0\xe6\xea\x7b\xfc\x35\x80\xff\x52\x82\x5f\x12\xbd\x7c\x0d\x53\xb3\xe0\xd3\x9c\xa9\xaa\x20\x6b\xf3\xc1\xee\x37\xec\xce\xbd\xb5\xdf\x77\xdf\xd3\x6b\x33\x3a\xa5\x25\xe3\x8b\xbb\x3e\xcf\x0d\xf7\xe1\x8f\x5c\xf5\x76\xa2\xf9\xb8\xef\x07\xdf\xdb\xe7\xe3\x9a\xe9\x11\xf3\x49\xa0\x97\x44\x83\x5e\x32\x05\x82\x53\x90\xb4\x2a\x48\x46\xd5\x1d\x03\xd8\xf8\xb1\x1d\xc1\xc7\xe1\x37\x77\x0c\xa1\xcf\x46\x13\x5d\xab\x69\xb5\x24\x6a\xb8\x6c\x97\xbd\xef\x6c\xb1\xb0\xbf\xb2\x7a\x45\x8a\x6a\x49\x5e\xd9\x93\x91\x2d\x69\x49\x5e\xbb\xbf\x10\x15\xe5\xa7\x97\xe7\xdf\xff\xfe\x6a\xf0\x6d\x18\xce\x7e\xe7\x99\x05\xa6\xcc\x52\xe0\xad\x87\xe6\xda\xe3\x5e\xac\x2b\x0a\xff\xb9\xf3\x6f\xae\x2a\x9a\xfd\xe7\xb4\xfd\x10\x3b\x5e\x31\xfb\x2f\x9a\xe9\xf6\x9b\x92\xfe\xad\x66\x92\xe6\xdd\x58\x26\xd0\x88\x90\xde\xb7\xcc\xba\xb6\x5f\x56\xd2\x5c\x5e\xdd\x5e\x4c\x4b\x3d\xd9\xd5\xfb\xee\xc6\xdc\x0e\xcc\xf4\xdd\x8c\x72\x23\xb4\xa8\xc2\xd3\xe4\xce\x0c\xcd\xdd\x8a\xd9\x53\xc6\x94\xd9\x6a\x49\x15\xe5\x56\x8c\x0d\x18\x03\x1e\x0f\xee\x66\x34\x05\x33\x79\x2a\x95\xb9\xb2\x75\x91\x1b\x59\xb7\xa2\x52\x83\xa4\x99\x58\x70\xf6\xdf\x2d\x6f\x05\x5a\xe0\x87\x16\x44\x53\xa5\x37\x78\xe2\xdd\xe3\xa4\x80\x15\x29\x6a\x7a\x0c\x84\xe7\x50\x92\x35\x48\x6a\x3e\x05\x6a\xde\xe3\x87\xbf\xa2\xa6\xf0\x5e\x48\x0a\x8c\xcf\xc5\x6b\x58\x6a\x5d\xa9\xd7\x27\x27\x0b\xa6\x1b\x99\x9d\x89\xb2\xac\x39\xd3\xeb\x13\x14\xbf\x6c\x56\x1b\xb1\x77\x92\xd3\x15\x2d\x4e\x14\x5b\x4c\x88\xcc\x96\x4c\xd3\x4c\xd7\x92\x9e\x90\x8a\x4d\x70\xe8\x1c\xe5\xf6\xb4\xcc\x7f\x2b\xdd\x76\xab\x83\xc1\x58\xb7\xce\x9f\x25\x14\x8e\xf7\xec\x80\x11\x8c\xf6\x34\xd9\x3f\xb5\xb3\xe8\x16\xda\x7c\xcb\xac\xce\xc7\xb3\xab\x6b\x68\x3e\x1a\x37\x63\x73\xf5\x71\xdd\xbb\x3f\x54\xdd\x16\x98\x05\x63\x7c\x4e\xa5\xdd\xc4\xb9\x14\x25\xf2\xa4\x3c\xaf\x04\xe3\x1a\xbf\xc8\x0a\x46\xf9\xe6\xf2\xab\x7a\x56\x32\xad\xf0\x5c\x52\xa5\xcd\x5e\x4d\xe1\x0d\x2a\x32\x98\x51\xa8\xab\x9c\x68\x9a\x4f\xe1\x9c\xc3\x1b\x52\xd2\xe2\x0d\x51\xf4\xd1\x37\xc0\xac\xb4\x9a\x98\x85\xdd\x6f\x0b\xfa\x3a\x78\xf3\x97\x37\xee\x1f\x40\xa3\x17\xef\xd8\xaf\x3b\x6f\x36\xe4\x34\x2b\x88\xb4\xea\x1d\x34\x2d\x0a\xf8\xf0\xee\x3d\x2c\xc5\xad\x39\xdf\x8c\x2b\x4d\x50\x53\xf7\xc9\xdc\x16\xa7\x77\xad\x48\xcd\x08\x87\x92\x70\xb2\xa0\x40\xaa\x4a\xc1\x5c\x48\x20\xb0\x60\x2b\xca\x9b\x3b\x39\xdd\x67\x12\xbb\x04\x09\x58\xc1\xbe\xa5\x80\x9a\x9f\xec\x1a\xe2\x6e\xd1\x62\x87\xbe\x61\xcb\xdc\xb9\x62\xa7\xdd\x6f\xe2\x39\xe7\x50\x73\xa5\x65\x8d\xdb\x9b\xc3\x0d\x5d\xbb\x23\x5f\x92\x0a\x94\x16\xe6\x9b\xb7\x4c\x2f\xb7\xb8\x02\x90\xfe\x05\x20\x1a\xcf\xf5\x8c\x82\xa2\x1a\x66\x6b\x30\xe6\x19\x8a\x0a\x2d\x44\x81\x52\x05\xb9\xa1\xc8\x90\x54\x4b\x46\x57\x74\x17\x53\x39\x63\x5a\x12\xb9\x6e\xcf\xc9\x74\xeb\xb7\xee\x5c\x66\x64\xd0\x33\x15\xee\x5a\x2e\xb8\xfb\x74\x82\x15\xd6\xce\x46\xc9\x5b\xd3\xf1\xc1\x75\xbd\x3c\x77\xa7\xb0\x33\x37\x95\x3b\x85\x54\x01\x29\x8a\xc6\x36\x68\xed\x56\xfc\x9c\x1d\x23\xb3\x47\x2e\x07\x21\xdb\x73\x63\x16\xb4\x7f\x3c\x67\xd4\x08\x22\x49\xb8\xf9\xc1\xce\x4b\x30\x72\xd5\xee\x3e\x5a\x86\xc4\x2d\xdf\x3c\xbb\x43\xae\x44\xca\xd6\x5c\x1a\x12\xd3\xb4\xdc\xc9\xf3\xde\x15\x6c\xbf\x6d\x06\xb6\x62\x39\x35\x4b\xa9\x09\xb3\x07\xc9\xdc\x64\x32\x13\xf5\xf6\x34\x1a\x32\x2b\xdb\xfc\x69\x0e\x2b\x46\x80\x2c\x16\x92\x2e\x76\xe9\xc9\xbd\xd6\xc7\xd2\xee\x6b\xdc\xd1\xc4\xda\xef\x77\xfe\xd4\x08\xc9\x3b\x7f\xc8\x37\x85\x40\xff\x87\x43\xb3\x71\x93\xee\xdf\x3d\x4b\x24\x33\x73\x6f\x96\x56\xc8\x7b\x7e\xf5\xe1\x5d\xb5\x74\xef\xde\x5a\x1a\xee\xf0\xc6\x10\xdc\x4f\x67\xe6\x7e\x74\x02\x7b\xa7\x58\xd8\x9e\x49\x27\xa2\x67\x14\x2a\x2a\xe7\x42\x96\xe6\xd2\x70\x20\x90\x59\x4b\xb0\x15\x4f\x28\x4c\x79\x76\x3f\xe3\x3d\xf6\xdf\xd2\x43\xa7\xc0\xd2\x04\x2a\xb2\x53\x6c\x76\xb4\xcf\xb6\x59\xea\x2f\xe3\x03\xbf\x7a\xaf\x64\xdb\xe2\xdb\xe9\x9f\xa8\x7c\xcd\xd4\xa3\x32\x44\x9d\xf4\x30\xc7\xc1\x71\xfb\x48\x6e\xdf\x53\xa5\x8c\xfa\x46\x8b\x4e\x92\x5b\xa0\x3c\x13\x46\x24\xfc\x7f\x57\x1f\x2e\x2c\xd3\x6d\x41\xb9\x4d\xe7\x1a\x58\x59\x15\xb4\x34\x86\x1c\xbc\x27\x52\x2d\x49\x41\x25\xea\xb2\xef\x78\x39\xf8\x3a\x23\x77\xdd\xd2\x3e\x19\x6b\x4d\xd1\xdc\x48\xb3\x9c\x16\x64\x6d\x07\x94\xd3\x4c\xe4\x46\xb2\x0b\x09\x95\x31\xa5\xcb\xaa\xd6\x14\x08\xfe\x74\x0f\xae\x38\x3b\xc6\x17\x0f\xcf\x69\xc4\xd2\x83\xb1\x7b\x4a\xa2\x5f\xc3\x6c\xad\x1f\xba\x9b\x9f\x26\xf9\x7e\x12\xa6\x3f\x8c\x87\xe4\x8c\xa5\x3d\xa4\x4d\x9f\xe9\x03\x73\x33\xc6\x2e\x61\x9c\xca\x4b\x21\xf5\xc3\xa2\xd0\x3c\x7c\x16\x54\xde\xf3\x7b\xcd\x22\x31\xae\x7f\xff\xbb\x3b\x7f\x2f\xa7\x55\x21\xd6\xe6\x1c\x3d\x74\xe7\xf6\x9a\xc5\x9e\x72\x61\x3f\x5e\xfb\xc9\x82\xbd\x78\x59\x37\x56\x28\x97\xed\xc7\x9a\x07\x13\x1e\x63\x3e\xed\x23\xf3\x09\x94\xe6\xe5\x79\xe3\xd1\xf8\x48\xe7\x54\x52\x9e\x39\x79\xf6\x6d\x3d\xa3\x92\x53\x4d\x55\x3b\xbe\x07\x6e\x07\xba\x43\x50\xee\x18\x7b\x72\x53\x4d\xfe\x7d\xb5\xe3\x3d\xb6\x50\xf3\x2b\xf7\x58\x44\xcd\xaf\xdc\x6f\x17\x59\xda\x5f\xcd\x3e\x74\xe0\x2c\x8d\x90\x9d\x0f\x1d\xbe\xd1\x0c\x57\xbb\x9c\x48\xde\x3c\xcd\xeb\xfa\x49\x2d\xc2\xab\xc1\x00\x06\xf6\xe0\x9c\xd1\x22\x07\x66\xcc\xb9\x81\x7f\x6d\x37\xcd\x0a\x91\xdd\x38\x8f\xe8\xc7\xb7\xa0\x84\x35\x0f\xcd\x4b\xc1\x98\x88\x99\xe0\xaa\x2e\x29\xb0\xfb\xcf\x6e\x32\x01\xe3\xf1\x4d\x26\xe0\x03\x94\x4c\xc0\xde\x30\x9e\xc2\x04\xb4\x71\x8c\xa7\x95\x7f\x1b\x43\xb8\x53\x02\xe2\xef\x25\x19\x98\x64\x60\x92\x81\x0f\x73\x4d\x32\x10\xf6\x9d\xdb\x1e\xf6\xe4\x03\x7c\xee\x17\x03\xc9\x3d\xdc\xa3\xe4\x1e\xde\xa4\xe4\x1e\xbe\x87\x92\x5e\x4c\x7a\x31\xe9\xc5\xe4\x1e\xf6\x9f\x45\x72\x0f\x27\xf7\x70\x72\x0f\x27\xf7\xb0\x27\xcf\xe4\x1e\xde\x35\xc9\x64\x02\xc6\xe0\x9b\x4c\xc0\x07\x28\x99\x80\xbd\x61\x24\xf7\x70\x72\x0f\x27\x19\x98\x64\x60\x92\x81\x0f\xfd\xee\x73\x72\x0f\xdb\x07\x44\xf3\x7e\xd8\x1f\x4b\xfd\xe2\xae\xfc\xbd\xdd\x80\xea\x37\x1f\xdf\xaa\x06\x34\xbd\x63\xa0\x61\x30\x6a\xf8\xeb\xae\x83\x7a\xde\x7e\x32\xa0\x27\x19\x53\x3c\x8c\x2c\x36\xdf\xfd\x70\xcb\x69\x8e\x69\x76\xc7\xc0\xb4\xf9\x05\x73\x2d\x58\xc6\x74\xb1\x6e\x87\x32\x7d\xb1\xc5\xf6\xb9\x03\xb4\xdf\x7c\x7c\xbb\xb7\xeb\xdd\x2c\xc4\x9d\x87\xc6\x6c\xd8\x1d\x3f\x8c\xe2\x65\x4f\x7e\xf4\xe4\x47\xef\x51\x32\x20\x92\x01\x91\x0c\x88\xa7\x31\x20\x9e\xab\x07\x3a\xf9\x8e\x93\xef\x38\xf9\x8e\x07\x94\x7c\xc7\xbb\x29\xf9\x4d\x06\x94\xcc\x9e\x64\xf6\x3c\xf4\x9b\xff\xf0\x66\x4f\xf2\x1d\xdf\x3d\xd1\x24\x03\x63\xf0\x4d\x32\xf0\x01\x4a\x32\xb0\x37\x8c\xcf\xcf\x77\x0c\x7f\x47\x68\x71\x72\x6c\x26\xc7\x66\x72\x6c\xb6\x94\xb4\x5b\xd2\x6e\x0f\xfd\xe6\x3f\xbc\x76\x4b\x8e\xcd\xe4\xd8\x4c\x8e\xcd\xe4\xd8\x4c\x8e\xcd\x64\xf6\x44\xe3\x9b\xcc\x9e\x07\x28\x99\x3d\xbd\x61\x24\xc7\x66\x72\x6c\x26\x19\x98\x64\x60\x92\x81\x0f\xfd\xee\x73\x72\x6c\xde\x7b\x1f\xef\xfb\xbb\xfb\xee\xdb\x3d\x7f\xc7\xb2\xbb\x3f\x68\xf7\xea\xdd\xb9\x5a\x0f\x88\xb9\xfb\x84\xdb\x04\x66\x44\xd1\x3f\xfe\xcb\xa0\x72\x7e\xff\xc7\x25\xcd\x19\x31\x1f\xb0\xe3\xa7\x0f\x09\xbb\x8e\xf5\x5d\x7b\xf2\xe0\xbe\xb6\x1f\xef\xc1\xc1\x95\xea\x7e\x00\xd4\x6c\x36\x2e\x3f\xb7\xbf\x7a\xa5\x25\xd1\x74\xb1\xee\x95\x87\x47\xe4\x70\xa7\x8d\xf8\x3d\x0d\x3c\x86\xd4\x3a\x29\x6f\x97\x54\x52\x64\xe3\x06\x64\x46\x6b\x3f\x86\x29\x7c\x0f\xb0\x39\xa3\xf9\xc8\xc2\xd0\x77\x6f\xea\xa4\xe5\xbf\xf5\xa3\xfb\x37\x6c\xbb\xa6\xfb\xce\x05\x6b\x16\xe9\xad\xf5\xc2\xbf\x6d\x53\xa3\x37\x57\xad\x22\xd2\xc8\x43\xe7\xad\xbf\x63\xff\x50\xc5\xf7\x78\x6c\xec\xc4\x6e\xb1\xf7\xa0\x5e\xbf\x5f\x9f\x4f\x7a\xf9\xdc\xbb\xc7\xf5\xb0\x1a\x77\x3d\x53\x2e\xa9\x2c\x99\x52\xbb\xc1\xf3\xc3\xe1\xde\x2f\x12\x1f\x14\x85\x77\xec\x41\x33\x8f\xde\x40\x5a\xc3\xeb\xde\x98\x88\x21\x39\x23\x19\xc8\xba\x30\x26\x1a\xcf\xc1\x15\x57\x07\x92\x65\xa2\xe6\x1a\x38\xa5\xb9\xf5\xaf\xec\x3a\xbd\x0f\x8a\xd9\x07\xed\xae\x7d\xac\xae\x89\x1d\xdf\xbd\xbf\xe1\xc6\x7d\x6a\x87\xbd\x55\xb4\x7f\x48\xfb\x5a\x68\xf8\xb1\x0f\xe9\xa6\xfd\x95\xdd\x9e\xaa\x6e\xb0\xcb\x97\xa2\x60\xd9\xfa\x63\x5d\x50\x58\x8a\x22\x57\xd8\x2c\xc2\xe8\xed\x36\x4c\xd2\x9a\xd8\x7b\xe8\x50\x02\x15\xf2\xc3\x99\x1d\xc3\xac\xd6\x90\x0b\xaa\x80\x0b\xdd\x94\x55\xe8\x7f\xc0\x3e\x1c\x31\xf0\x76\xbb\xb4\x8d\x49\x0c\x5b\x20\x55\x55\x30\x8a\xa1\x39\x21\xe1\x76\xc9\xb2\xa5\xed\x8e\x54\x91\x07\x3d\x7a\x86\x76\x30\xda\xd7\xf2\xd9\xc3\xcc\x87\xbd\x4d\x7d\x68\x3c\x72\xb3\x87\x97\x76\x7f\x9b\x1f\x6c\x8d\xa3\x6f\xa4\xa8\xab\xbd\x7e\x79\xdb\x7f\x6a\xff\xd6\x68\x0e\xbd\xd1\x4e\xa9\xf9\xe1\x5e\x6c\xc1\x85\xd9\xec\xbe\x5b\x66\xad\x63\x78\x8a\x89\x34\x65\x5d\x68\x56\x15\xc8\x78\x4f\x9e\x0b\x3b\x38\x22\x69\xa7\xd7\x8e\x81\xf0\x75\x13\xdb\x73\x0d\x52\x68\x0e\x64\x61\x3e\xf7\xe1\xed\xb2\x24\x78\x3b\x4d\xca\xeb\x92\x1a\x09\x94\x77\x03\xc6\x87\x25\x5f\x9b\x91\xde\x5b\xca\x69\x93\x6e\x59\x51\x18\xbb\x9d\x14\x85\xb8\xdd\xa5\x82\x77\xd1\x18\x03\x17\xc6\x18\xb9\x30\xd6\x88\x07\xe0\x82\x37\x0e\xf5\xef\x3e\xbe\xf3\x39\x52\x17\x43\x0e\xae\xc7\x0e\xd5\x66\xb9\x2b\x22\x35\x23\x9b\xed\x58\xee\xa2\x5a\x16\xca\x9e\x2a\x62\x1e\x42\xb2\x69\x69\xb4\x24\x2b\x54\x29\x54\xd9\xbe\x38\xf0\xcf\xfb\x48\x2b\xc0\x9e\x23\xed\xd6\x58\x79\x25\x78\xb1\x06\x62\x4f\xeb\xbc\x2e\x8a\x63\x98\x33\x4e\x8c\x4a\xa2\xfb\x6e\xb9\xcb\x05\x33\xaf\x59\xb8\x62\x3c\xa3\x66\x0d\x27\xad\xb1\x86\x6b\x60\x3e\x97\x8b\x7d\xcf\x66\x2b\xde\xf2\x63\xd7\x38\xc8\xfa\x3a\x94\x1b\xae\x11\x64\x19\x99\x15\xd4\x3c\xba\xf6\xe4\xe9\x8c\xcc\x8f\xa2\xc0\x80\x88\x0b\x95\xe4\xb6\x27\x11\xe9\xff\xf8\xdf\x19\xdf\xef\x79\x68\xe9\x23\x2a\xfb\x8c\x70\xa0\x4c\x2f\xcd\xfb\xb6\xaa\x8a\xb5\x11\xd7\xe6\xee\x74\x17\xea\x50\xd5\xd9\xfd\x9e\x8e\x8e\x88\x82\x17\x95\xc8\xd5\x0b\x23\xf2\x5f\x28\x9a\x49\xaa\xd5\x8b\x23\xf3\xd5\xe6\xda\xee\xc9\xd1\xec\x8e\x1b\x03\x72\x3f\x21\x15\x7b\x71\x74\x0c\x78\x08\xb0\xa9\x92\xd0\xcb\xcf\xef\xb6\x36\x2b\xd1\xeb\xcc\xf7\x10\x0d\xbd\x1f\xfd\xbf\x77\x5d\x82\x44\x65\x9b\xea\x18\x5d\xfb\xe0\x53\xbe\xa1\x82\x29\xbc\xe0\x78\x74\x9b\x36\x75\xdb\x8a\x17\xe0\x74\x1f\x33\xc0\x10\x2d\x2b\xbd\x46\xb9\x51\x52\xc2\x1d\x4f\xba\xa2\x72\xad\x97\x8c\x2f\x70\xb0\x9f\xab\x90\xdd\x2b\x60\xda\xd1\xce\x2d\x73\x82\xb5\x59\xf8\x96\xe5\xde\xca\x9a\xa9\x1d\xdb\xd3\x70\x3f\x2d\x8a\xde\xe3\x6b\xdf\x6b\x8b\x7f\xd4\xa8\xfc\xcf\x6e\x57\xd0\x36\xf3\xd8\x91\xef\xcd\xdf\x0d\x77\xc3\x7e\xcb\xaa\x2e\x23\x0e\xf7\x1d\xb0\x80\xd3\x77\xef\x6c\xdb\x39\xb7\x8e\xdf\x32\x9e\xdb\xb7\xd4\xa9\xb6\x3d\xdb\xe8\x47\x6a\xa6\x84\xe6\xcf\xbe\x3b\xd3\x14\x39\xcb\xad\xb6\x72\x5b\x3f\x05\x1c\xa8\xf7\x5e\x63\x27\xb8\xcf\x69\x9f\xb7\x9f\x75\xfb\x3d\xc7\xee\x65\xdd\x7b\xf9\x3f\xed\x83\x1d\xbb\xe1\x0d\xec\x6f\x23\x8d\x8f\x1f\x0e\x10\x9b\xd3\x55\x90\x19\x2d\x6c\xe3\x3b\xf3\x97\xdd\xa4\xe0\xf4\xdd\xfb\xb6\x97\xa4\xa4\xe4\x5e\x95\x10\xf5\x99\xfe\x00\xc0\x61\xf2\xd0\xc4\xf6\x7d\x45\xe1\xd4\xc7\x04\x57\xe0\x8a\x6a\x7b\xdf\x4b\x52\x99\xeb\x6e\x39\xd8\x48\xc1\x30\x0e\xf0\xe0\x09\x7e\x87\xeb\xfe\xd0\x25\x1a\xf1\x1e\xdd\xb7\x2b\xde\xae\x0f\xd8\xe3\x0a\xed\x83\xd9\xd8\xff\x3e\xde\xe9\x1f\xec\x68\xb0\xf0\x1b\x87\xdd\xbd\x59\xdd\xcb\x30\xb3\x6e\x0c\x31\x7f\x78\xb6\x78\xc2\x95\x2d\x14\x41\x97\x64\xc5\x84\x6c\x5e\x83\xdd\x47\x44\xdc\x94\x7d\x5d\x04\x13\x50\xb4\xa0\x99\x7e\xd0\xac\x9f\x80\xa6\x65\x55\xdc\x7f\x1b\x61\xa4\x2b\xa1\x64\xfc\x23\x25\xf9\xfa\x8a\x66\x82\xe7\x7b\x89\xdf\xc1\xee\xbc\x67\x9c\x95\x75\x09\xbc\x2e\x67\x14\x17\x54\x59\x4e\x28\x56\xd0\x75\xb3\x97\x44\x27\xc0\xe9\x6d\xb1\x76\xe2\x26\x87\x4a\xe4\x8d\x04\x9a\x51\x90\x66\x88\xd8\xa9\x52\xd4\xda\x3c\xd2\xf7\xe2\x29\xe6\xc0\xb4\xea\xaa\x7d\x42\x26\x89\x32\x86\xe4\x31\x0e\x8e\x69\xa3\x7c\x67\x14\xe3\xc0\x2c\xa7\x72\x67\x81\x91\x1d\x43\x5d\x11\x56\x98\xa7\xd8\x14\xde\xd2\x39\xa9\x0b\x6c\xd5\x0a\x2f\xe1\xd0\x0c\xba\xf1\x06\xf8\x32\x35\x4f\x15\x25\x04\x37\xff\xb5\xf5\x45\x70\xf2\x47\xfb\xb8\xbd\xf0\x70\x3e\x5c\xad\xb4\xa1\xfd\xaa\x96\x36\x54\x91\x5a\xed\xe3\xf0\xda\x38\x20\xe7\x3c\x37\xb7\xb4\xff\x42\xe8\x29\x1a\xa6\x1c\xdf\x7d\x4c\x0a\x3b\xbf\x99\x10\x05\xdd\x23\x96\x5a\x49\xb1\x90\x54\xa9\xb7\x94\xe4\x05\xe3\xd4\xf7\x84\x5f\x2f\x29\x94\xe4\x13\x9e\x72\xcd\x4a\x6a\xcc\xa9\xfe\x19\x27\xbd\xf9\xec\x67\x17\x09\x28\xc9\x0d\x6d\x07\x08\x33\x3a\xc7\x26\xbe\xb8\x1c\xdd\xb9\xb1\xa7\x73\x2f\x96\x73\xc2\x0a\x9a\x4f\x71\xac\xbd\xd5\xed\x7a\xde\xdb\x63\x69\xbe\x66\xbc\xde\x8f\xa7\x16\x66\x84\xe8\x70\xb1\xec\xfb\x56\x0f\xda\x0f\xc4\x30\xb4\x9a\x67\x2f\x8e\xe6\xfe\x02\x81\xcb\x8d\x8d\x39\xfb\x94\xd9\x10\x81\xa4\x44\x09\xde\xdc\xa0\xbd\x58\xaa\x5a\xce\x49\xd6\xd8\xb8\x83\xc9\xbb\x46\xe6\x70\x21\xb4\x6b\x61\xdb\x2c\xf8\x9e\x83\x2d\x0a\x70\xad\x97\xa9\xd2\xac\x44\xb1\x94\xd7\xb2\x69\x12\x8d\x67\x61\xf4\xe6\x77\x07\x7e\x20\x3c\xfe\xf8\xf2\xe5\x5e\x56\xf5\xe3\x5e\x71\x49\xd1\xcb\x34\xfe\x8e\x5c\xb4\xd2\xbf\x51\xb1\x95\xc8\x95\x39\x8f\xcc\xbd\x92\xb0\xf7\xf5\x5e\x43\xc6\x93\x97\x33\xa5\x19\x5f\xd4\x4c\x2d\x61\x46\xf5\x2d\xa5\x1c\xe8\x27\x5b\x67\x09\xfe\x9b\x4a\x81\x07\xd0\x6c\xcf\x3d\xa1\xcf\x5d\xd4\x5f\xf4\x57\xcf\x61\xc5\x57\x4c\x31\xc1\xff\xcc\x94\x16\x72\xfd\x8e\x95\xec\xde\x82\xd4\x0d\x6d\x49\xa8\x4e\xff\x8a\x22\xc7\x8e\xff\x2c\x23\x57\xd4\x4e\x54\x52\xa3\x00\xf7\x5d\x7b\x74\xb1\x80\x91\x1b\x33\x92\xdd\xec\xd8\xc4\x8d\x0d\xda\x8b\xef\xbe\x9b\xd8\x6e\xd0\xbe\xa3\x7d\xf5\xf2\xe9\x77\xb1\x31\xe0\x46\xef\x1c\xbe\x04\xda\x3f\x47\x75\x62\x2f\xce\xd9\x27\xbb\xbe\xfd\x9d\xdc\x4f\x6c\x2d\x85\xa2\xc8\xc4\x06\x50\x90\x75\x13\x7e\x65\xaa\x35\x4f\x8c\x04\x13\x7c\x4f\xd7\x11\x99\xcf\x87\x5c\x3a\xa1\x87\x6f\x9f\xb2\x56\x1a\x4a\xa2\xb3\xe5\x83\xc1\xe2\x86\x8c\xa9\xd4\x98\xb3\x07\xca\x3d\x45\xf7\xdf\xc9\x3d\xc3\x74\x63\xc3\x6a\x60\x67\x71\xf6\xa9\x32\x7a\xe2\xfe\x78\xfc\x90\x06\xdb\xba\xc9\x64\xe8\x28\xc2\xb9\xee\xc9\xb6\x3b\x5b\xcd\x7b\x02\xd5\xaf\xd5\xf4\xfd\xef\x98\xdd\xde\x9b\xe7\xe9\xc5\xdb\x7d\xe5\xe5\x78\x37\xce\x48\x47\xce\x66\x70\xd2\x2e\xcf\xce\x69\xef\xcd\x11\x9a\x00\x94\xe3\x31\x8c\x52\xe2\x9b\x5d\x1d\x03\x81\x1b\xba\x3e\x1e\xc1\x14\x6d\x9e\x5e\x81\x41\x64\x2b\x69\xe1\xac\x5b\x8a\xfd\xf5\xc9\x03\x49\x1c\x43\xb2\x63\xd9\x77\x2b\x46\x9f\x7e\x4b\xfb\x07\xab\x1b\x9a\x98\xa9\x8c\xf8\xed\x66\x49\xf6\xfe\x93\xb1\xd7\xd2\xd2\x0d\x5d\x8f\xf9\xf5\x8d\xa3\x65\x76\xc7\x79\x0f\xec\x19\x33\xdf\x30\x7b\x38\x8a\xa5\xf5\x24\xb4\x47\x6b\x0c\xc2\x60\xc0\x64\x9c\x9f\xba\xa1\x66\xa1\x03\x96\xa1\x3d\xbe\x3d\xa0\x15\x5e\x85\x83\x7d\xfd\xc0\x0d\xe1\xd1\x37\xf2\x6d\xc9\x2a\x34\x1c\x9a\x90\xaf\x3b\xd5\xf0\x3d\x29\xd8\x98\xdb\xd0\x9f\xa1\xd5\x5f\xe7\xfc\xd8\x18\xf0\xe6\x3f\xa8\x12\xd5\xc8\xfb\x65\xe8\xad\xa0\xea\x42\x68\xfc\xfb\xbf\xcb\x26\xd9\xe9\x07\x6c\x91\x65\xe0\x62\x73\x28\x79\xd1\xb1\x32\x76\x1c\xdd\x58\xa6\x4d\x4d\xd3\x76\xf3\x99\x82\x73\x0e\x42\xba\xd5\xf5\xb8\x02\x6e\x90\x76\x78\x68\x01\xcc\x6c\x18\x1c\xa3\x78\xe3\x16\x1a\x76\x8d\xcf\x6d\xb8\x90\x83\x1d\x8c\x36\x54\x3b\x4c\xb4\x6e\x47\xb2\xb4\x7c\xd0\x33\x53\x15\xf8\xfa\x74\xcf\x42\xd2\xc0\xda\xd8\x43\xd9\x59\x9b\x54\x52\xb9\x40\x3c\x41\xb6\x67\x44\xba\x9d\xde\x68\xed\x6c\x69\xa4\x8e\xee\x7f\xd8\x88\x73\x88\x86\x90\x75\x77\xfb\x1b\x52\xf6\xef\x07\xce\xf7\xff\x63\x34\x37\xee\xea\xff\xdd\x5f\xe5\x10\x26\xd5\x14\x4e\x41\x31\xbe\x28\x68\x9f\x47\xe3\x3d\xe8\x7d\xdc\xde\x6c\xcd\x88\x98\x02\xa3\x62\x57\xa4\xa0\x1c\x9d\x8a\x84\x03\xb5\xd1\x00\x33\xda\x4d\x73\x70\xff\x23\x6c\xad\x79\xa3\xa7\x5a\x38\xc8\x8b\x1b\xba\x7e\x71\xbc\x79\x59\xf6\xe6\xf8\xe2\x9c\xbf\x38\x46\x4b\x66\xeb\x62\xb4\x06\x12\x22\x4e\x5e\xe0\xcf\x5e\xec\x7f\x1a\x77\x59\xa4\x3e\x96\xe6\x28\xe3\xc6\x2f\xf2\x31\xfc\xc0\x3d\xcf\x73\x83\x58\xf5\x7a\x9e\x0f\xfc\x52\x0e\xb7\xad\x05\xd4\x8a\xda\xf7\x39\xca\x91\xbd\xc6\x4d\x9b\x97\x21\xbe\xf1\xd0\xa5\xc6\xe9\x2d\xbe\xe5\x9e\xc1\xf3\x49\x8a\xa2\x60\x7c\xf1\x5d\x95\x13\xbd\x47\x5a\x8e\xa5\xc1\x6a\x1d\x7c\xb4\x2c\xa0\x46\x1e\xe6\x54\xce\xd9\x02\x2a\x22\x49\x39\xc2\x50\xbe\x74\x55\xbb\xf1\x2c\xb3\x79\x3f\x8a\xe4\xd6\xff\x7a\x5d\x51\xf8\x7f\xe1\x63\x7f\xc4\xfb\xf3\x9f\x4c\x26\x70\xfd\xe1\xed\x87\xd7\x60\xff\xd2\xbe\x8b\xb5\x80\xb9\x40\xf7\x89\xa8\xa5\x19\xfa\x8a\xf2\xbd\xdd\xa3\x60\xfd\x0e\x66\x2b\x3f\xcc\x8f\xe1\x76\x49\x34\x5d\x51\x09\xb7\xe6\xf8\x64\x2c\xa7\x6d\xc4\x62\x7a\xf0\x78\x37\xca\xc7\x32\x2f\xc9\xa7\xab\x5a\x2e\xf6\xde\x70\xd8\xda\xf4\xbe\x93\xbd\x73\x65\x99\x23\x3e\x4e\x1b\xf6\xaa\xbe\xa8\x6c\x49\xf3\xba\xa0\x39\x90\x99\x58\xd1\x7e\x00\x70\x14\xcf\xe1\x70\xd0\xa8\xad\x69\xf3\x21\xc6\x3e\x9b\x29\x51\xd4\x7b\xa3\xa6\x06\x4c\x0f\xe9\xa7\xd7\xf0\x07\x04\xb9\x11\xa8\xa8\xcc\x28\xd7\x64\x41\x7b\x8e\xd4\x51\x5c\x51\x24\x20\xcf\x57\x2f\xff\xe9\xc8\x79\xee\xcc\x48\x9d\x1f\xfb\xa5\xb9\x09\xef\xc9\xa7\xef\x78\x1b\x6e\x1a\x67\x34\x28\x78\x39\x85\x53\x37\xe1\x66\x12\xf8\x19\x45\x56\x17\xe8\x21\x9f\x4b\x51\x8e\x1b\x74\x37\xed\xd9\x1a\xa4\xa8\x11\x8a\x08\x75\x35\xf0\x90\x8f\x62\xf9\xbb\x3f\xfc\xd3\x14\xce\x3e\x91\xb2\x2a\xe8\x6b\xb8\x5d\x52\x07\x80\x61\x0a\x5f\x28\x5a\xc0\xef\x5f\xfe\xd3\x38\x43\x12\xa1\x15\xf4\xb6\xe7\x8f\xeb\xce\x19\x31\x87\xac\xae\x80\x95\x36\xd1\x88\xee\x0d\xfe\xb1\xe4\x06\x48\x1b\xe9\xd9\x88\x3e\xa5\x89\xd4\xea\x18\x10\xc1\x38\xfa\xa1\x8a\x31\x0a\xa1\x49\xb1\xe1\x1b\x46\x9f\x2b\xbd\xb5\x87\x25\x1f\xb7\xb0\xe6\x1c\x51\x0c\xd7\xc0\xab\xdf\xbf\xfc\xa7\x6d\x87\xff\x87\x87\xea\x28\x6d\x92\x19\x11\x8e\x04\x01\xbe\x33\x4a\x39\xdc\xb0\xa2\xa0\xf9\xf1\xc6\x72\x8f\xe2\xba\xb5\x35\xf3\x5a\xea\x25\x95\xc7\x40\xb9\x6a\x42\x38\x63\xd7\x73\x63\x2d\x71\xd4\xb2\xe6\x1c\x2d\x7f\x8c\x4a\x63\x4c\x68\xdc\xb3\xaf\x8b\x27\xb9\x4d\x37\x66\xae\x86\x52\x28\xbd\xb9\xc4\xa3\x45\xc1\xde\x6a\x02\xd0\xb9\xb5\xfe\x30\x1f\x23\xc0\x27\xa3\x9d\xea\x9b\x7f\x39\xfa\x41\xfb\x69\x72\xd3\x56\x78\x99\x30\xae\x27\x42\x4e\x2c\x93\xd7\xa0\xe5\x9e\x71\x4d\xb0\x0a\xab\x27\x03\x9f\x95\xda\xaa\xbb\x71\x6d\x9f\x8e\x71\x6f\xc3\xbb\x34\xd5\x86\xf6\x19\x77\x5f\xef\xd4\x54\x9b\xda\x67\x14\xdb\x87\x75\x4a\xef\x43\x47\x71\xee\xeb\x94\x5c\xdc\xf2\xdd\x5a\x71\x14\xcb\xf7\xce\xdc\x71\xfa\xb0\x1f\x52\x1c\x68\x1e\x1f\x25\xb0\xa5\xa5\xec\x4b\x6f\x10\xd3\x0b\x10\x85\x66\x05\x0c\xe7\xff\x67\x5b\x78\x8f\xb3\x04\x3a\x55\xf7\x80\xfa\x1a\x77\x0e\x3e\x60\x2e\x45\xa3\x9d\xcc\x0b\x12\xd1\x2f\xc7\x91\x57\xa0\x55\x07\xd6\x5a\xc7\xc8\xd6\x28\x9e\x86\x99\x9d\xea\x0e\xcb\xa0\xd3\x32\xe3\xa5\xc0\x2e\xad\x6d\xd7\xc2\xcb\x62\x33\x7a\xa9\x28\x50\x2f\xa9\x3b\x95\x4d\x41\xc9\xde\x39\x54\x96\x76\x1c\x9f\xa4\x6c\x76\xd1\x7d\x49\xe7\x9b\x34\x74\x1a\x98\xd7\x29\x2e\x71\x17\x69\x7d\x63\x0f\xf2\x8b\x8f\xd4\xa2\xe4\xb6\x9b\x4c\xdd\x45\x42\xc2\x8b\xc1\x43\xf7\x45\x2b\xb6\xcc\x19\xf0\x7a\x03\x8f\x5a\xd6\x26\xd4\x3b\xde\x79\xe2\xfe\xb0\x57\x07\x06\x33\xaf\xcc\x95\xc0\x0b\x73\xcb\x8a\xfd\x82\xa9\x33\xda\x80\x0b\x9f\x81\x9f\xa4\xa4\x9a\xdc\x57\xd2\x60\x93\x86\x66\xc7\x95\x26\x3c\x27\x32\x77\xe3\x3b\x38\x50\x2d\xc3\x29\xbc\x17\x23\x22\xc1\x8c\xcf\xc5\x6b\x58\x6a\x5d\xa9\xd7\x27\x27\x0b\xa6\xa7\x37\xff\xaa\xa6\x4c\x9c\x64\xa2\x2c\x6b\xce\xf4\xfa\x04\x41\x64\x6c\x56\x6b\x21\xd5\x49\x4e\x57\xb4\x38\x51\x6c\x31\x21\x32\x5b\x32\x4d\x33\x5d\x4b\x7a\x42\x2a\x36\xe9\xbc\x1d\x6a\x5a\xe6\xbf\x6d\x06\xf4\x88\xae\x8a\xc1\x0d\xc5\x58\x96\x5c\xd1\x49\xcd\x6f\xb8\xb8\xe5\x13\xf4\x98\xaa\x11\x77\x75\x1f\x64\x72\x43\x1b\xfb\xb1\x01\x46\xde\x09\x36\xde\xff\xb2\xce\x9b\x23\x6e\x37\xf3\x11\x37\xc9\x4c\x79\x42\x78\x3e\xb1\x60\xb9\x47\xdc\xab\xb1\x31\xe8\x49\x07\xdb\xdd\xd7\x32\xf1\xf1\x5c\x91\x4c\xb3\x15\xf5\x80\x88\x36\x34\x38\x08\x1f\x9a\x34\xba\xbc\x96\xf6\x2c\x74\x58\xd1\xd1\x6f\xf7\x4a\xe4\x50\x92\x35\xda\xee\x38\x4a\x10\xd6\xcc\xe2\x22\xa7\x2e\xf6\xfa\x60\x35\xe4\x0d\xb6\x02\xae\x8c\x51\x76\xcd\x4a\xda\xa0\x4e\x31\x9a\xbd\x56\x9a\x96\x16\x1b\x64\x3f\x6b\xa4\x07\x43\xcb\xb5\x85\xb5\xca\x1b\x60\xba\xc1\x8b\x12\x9e\xe3\x63\x1e\x88\x52\x22\x33\xd6\xe2\xb8\x37\x6c\x77\x02\x1a\xaf\x5b\x13\xbb\x23\x50\x09\xc5\x70\x51\x9c\x45\x30\xc6\xcc\xf4\x35\x25\x7a\xa0\xb0\x3f\xfe\xcb\xfe\x47\x6c\x8e\x0d\x2e\x47\x21\x17\x86\x08\xea\x79\x3f\x0f\xde\x1d\x8d\x03\xd5\x38\x38\xc7\x9a\x99\x99\xe0\x4a\x4b\xc2\xf6\xcf\xfb\x02\x5f\xe0\x89\x2f\xce\x03\xf0\x8c\x9f\x7a\x2c\x1c\x6c\x67\x8f\x34\x66\x03\x5e\x9b\x66\x33\x46\xb2\x84\xde\x62\xbb\x52\x27\x4d\xd6\x94\x11\xd3\x5e\x61\xd4\xd1\x6b\x09\x01\xeb\x69\xff\x96\xce\xa9\x94\x34\x7f\x8b\xef\x80\xab\x76\x46\xe7\x0b\x2e\xda\x6f\x9f\x7d\xa2\x59\xbd\x5f\x3d\xb9\x6d\xda\x8a\x7b\x35\x4e\x78\xb9\xbf\x9d\xb6\x7b\xd8\x46\xbc\x34\xcc\x9c\xf5\x27\x70\x4b\xc7\x06\xef\x2d\xa1\xe9\xa8\x88\x66\x6a\x6e\xeb\xd2\x34\x07\x03\x68\x17\xa7\xf5\xe2\xdc\x5e\xd5\x16\x2c\x89\x86\x88\x2d\x3d\xf0\x40\xa5\xc1\xbb\xc8\xa8\x81\x6c\x29\x84\x32\x92\x0f\xcf\x31\x8e\x7f\xc5\x04\x62\xcf\xbc\x78\x62\x31\x0c\x09\xa5\xd1\x01\x4d\x51\x8c\x6e\xea\x63\x8f\xb4\xa5\xeb\x46\x3b\xe1\xf0\x98\xb2\x6e\xcc\xf6\xdc\x79\xf1\x74\x88\x2d\x33\x5c\x0c\x76\x9a\x2f\x16\x68\xc7\x2b\x0d\xaa\x1e\x17\x6b\x68\x48\xcc\xe1\x96\xb2\xc5\x52\xab\x63\x60\x53\x3a\xc5\xdb\x4c\x49\xb6\xc4\xe1\xfb\x9f\xa8\x92\x52\x3d\xe8\x5e\xec\x29\xa3\x1b\x1a\xc4\xd3\x0f\xdb\x1a\x08\xae\x00\xca\x58\x28\xcc\x80\xe7\x96\x14\xf0\x97\x8d\x80\x61\xe9\x0e\xde\x00\x54\x67\xd3\xa3\x63\x68\xcb\x14\xfa\x5d\xa4\xba\x34\x57\x88\x69\x6a\x6c\x29\xf4\x5b\x48\x51\x2f\xec\x09\xa0\xfb\xe6\x5a\xee\x22\xdc\x9b\xb6\xc4\x06\xa2\x3a\x73\xf4\x0f\xbe\xb0\x87\x62\xff\x77\x75\x9f\xb4\x2d\x60\x64\x86\xcd\xe6\x9d\xa1\x86\xe0\x0f\x6f\x29\x45\x21\x13\x52\x52\x55\x09\xeb\xc1\xdc\x84\x92\xfc\x4f\x6f\xbe\x66\x70\x87\xea\xa8\xbb\x54\x4b\xb6\x58\x86\xdc\x29\xe2\x8c\xc9\xe1\x9d\xf7\x11\x24\xbe\x98\x26\x4b\x5e\xc8\x26\x4b\x43\x24\x32\x77\xf5\x28\xc2\xe4\xd7\xc0\x74\xd0\x54\x96\xcd\x89\x30\x62\xc2\x93\xa3\x35\x1d\x1c\xfa\xa3\x69\x3f\xee\x24\x9a\x27\xcb\x97\x70\x88\x82\x90\xe9\x03\x85\x4a\x66\x22\xaa\xa3\x29\x9c\x02\xaf\xbd\x87\xd9\x2e\xdc\x5d\x4b\xe0\xc9\x97\x8b\x76\x05\xdc\xa0\xcd\x62\x2a\xd1\x8d\xdb\xef\x56\xf8\x9b\x65\x96\xc6\xe3\xac\xfb\x34\x71\xeb\x45\xc7\x86\x50\x3b\x06\x01\x27\x20\xc4\xb0\x6c\x38\x34\xa3\xf7\xe5\xb0\x95\x0a\x80\x02\x74\xcf\xec\xe8\xfb\xc8\x9c\xb9\xe3\xde\x2b\xb4\x15\x7a\x01\x3c\x87\x72\xd9\xae\xbc\xdf\xb9\x83\x18\x67\x0f\xa2\xec\x21\x04\x64\xc0\xec\xa6\xcd\xe4\x0e\x9b\x03\x13\xc4\x12\x86\xe7\x62\x60\x24\x05\x32\x9e\xad\x91\xf7\xa8\x84\xa4\xbb\x29\x4c\x8f\x75\x14\xa0\xd1\x3a\xda\x71\xb5\x02\x39\xee\xce\x4d\x0a\x66\xba\x9d\xba\x13\xcc\x72\x3b\xf5\x27\x98\xe5\x0d\x5d\x1f\x6f\x26\x04\x05\x33\xdd\x95\x50\x14\xcc\xd4\x0c\x72\x6c\x9a\xd1\x1d\xc3\x8b\x21\xa4\x2c\x85\xa9\xca\x8e\xc6\x25\x2a\xdd\xc5\x23\xd2\x06\xc6\x91\xbf\x96\x46\xa7\x3a\xed\xa6\x4d\x87\x4c\x04\x96\x10\x96\x3d\xb5\x9b\x76\xe5\x54\xc5\x61\x3c\x32\x2f\xeb\x0e\x2e\x7e\x21\xe4\xdd\xe4\x97\xc3\xb5\x9b\x36\xca\xc4\x8d\x2c\xe8\x75\x3f\xb9\xa4\xb0\x41\x9a\x57\xa4\x3d\xd9\x4a\x15\x8b\xc2\x17\xd3\xcd\xba\x04\xb2\x38\x8b\x30\x48\x42\x8b\xc2\xd2\xe6\x35\x1d\x07\xe4\xa5\xdd\x45\xdf\x68\xab\x93\xde\x45\xe1\x17\xf5\xd0\xfb\xe4\xc4\xed\xa6\x8d\x47\x7a\xa4\x5d\x0e\xc9\xb1\xdb\x4d\xc3\xcc\xbb\x28\x2c\x87\xd9\x7b\x71\x58\x36\x19\x80\xd1\x06\xb9\x95\x6c\x17\x85\x6b\x48\x6e\xe1\x6e\xda\xc8\x38\x8c\xc2\x33\x5a\xd6\xe2\x6e\xda\x4c\xd9\x8a\xc2\x74\x98\x0f\xf9\x9c\x97\xf6\x1b\x6d\x96\xf5\x9d\x7e\xee\x67\xd5\xd6\xaa\x76\x79\x86\x51\x38\x3a\x77\xf7\xf1\x88\x82\x6a\x0f\x51\x53\x08\x04\x2b\xba\x54\x92\x8e\x0d\xce\xdf\x45\x04\x93\x96\x3d\xa2\xf2\x77\x13\x02\x76\x9b\xa4\xdb\x28\x1c\x37\x12\x77\x23\x99\x4b\x6d\xf2\xaf\x4d\xe7\x8d\xc2\xd5\x23\x25\x78\x37\xc5\x72\x46\x58\x8a\xe2\x92\xe8\x0f\x2c\x58\xf1\xa2\xdb\xea\x6b\x8b\xf9\xfa\x87\xf4\x58\x59\xbc\x5b\xf2\x58\xdd\x4b\xc9\x63\x95\x3c\x56\x7e\x94\x3c\x56\x0f\x50\xf2\x58\x25\x8f\xd5\x1e\x94\x3c\x56\x3d\x4a\x1e\xab\xe4\xb1\xf2\xa3\xe4\xb1\x7a\xee\x5e\x80\xe4\xb1\x4a\x1e\xab\xe4\xb1\x4a\x1e\xab\xe4\xb1\xf2\xa4\x5f\xb3\xc7\xca\xe2\xc5\x22\x01\xe5\x7e\x40\x66\xbe\x59\x56\x1b\x03\x63\x7a\x69\x7d\x69\x4d\xaa\xf8\x00\xe8\x16\xc0\x99\x8b\x9c\x5e\xb9\x07\xd3\x35\x02\xf2\x6c\xd5\xbd\x00\x96\x92\xf0\x05\x85\x57\x93\x57\x2f\xf7\x2a\x02\xbe\x9b\x7c\xb3\xc1\x86\x34\xae\x60\xf8\x26\xdd\x85\xc9\x7f\xa4\xcc\x1c\xa7\xed\xda\x9c\x97\x60\x7f\xe4\x1d\x49\x2f\x23\x7b\x60\x0e\xa9\xa4\x1a\x88\x1e\x40\x87\x59\x49\xdb\x04\x38\x2f\x9e\xfd\xa6\x0e\x5d\x7d\x30\xc1\x2d\x76\xdf\x8b\xa5\x39\xd6\xd3\xbf\xdf\x8a\x66\x94\x28\xcf\x04\x15\xec\x75\xd3\xac\xaa\x28\xa9\x2d\xe7\x1f\xa2\x50\x2a\x91\x03\x6d\x4e\x25\x1c\xd2\xe9\x62\x0a\x79\x4d\x6d\x05\x4c\x2f\x8e\xb6\x2e\xc5\xd1\x71\x3f\x2d\xb5\x34\x0f\x1d\x69\xfe\xe3\xb9\x41\xba\xc9\x4f\xa5\x2b\xca\x75\x4d\x8a\x62\x0d\x74\xc5\x32\xed\xbd\xe9\x66\xe2\x58\x94\x86\x69\x9b\x58\xe8\x9f\xe6\xe0\xed\x9c\x0c\x71\x48\x4e\xb6\xa4\xb1\xcf\x29\x0d\xf5\x1e\x6e\x8d\xc1\x57\x1f\x6e\xf8\x94\xec\xba\x4c\x5d\xf0\xc6\x5b\xa4\x8b\xf9\x46\xd8\x46\x9b\x31\x4e\x83\x9c\x92\xc8\x02\xc5\xe2\x87\x8f\x7e\xc9\x31\x10\xc5\x32\x0a\xb4\x86\x36\x43\x33\x75\x51\x98\x2b\x8a\x0f\xb2\x40\x13\x61\xb8\xdc\x81\x99\x22\x30\xc8\x16\xd9\xee\x9a\x10\xc0\xd6\x26\xf8\x95\xbd\x2a\xb7\xc8\xfd\x5a\x54\xa2\x10\x8b\x75\xff\x5c\x07\x7c\x8a\xd9\xe9\x5e\x6b\x41\x63\xb2\xd7\x33\x35\xb2\x00\xd2\xae\x81\xc3\xc5\xc6\xe5\x4b\xb9\x0b\x5b\xf4\xb9\x46\x82\x53\xee\xc2\x1e\x94\x22\xc1\x29\x12\xec\x47\x29\x12\xfc\x00\xa5\x48\x70\x8a\x04\xef\x41\x29\x12\xdc\xa3\x14\x09\x4e\x91\x60\x3f\x4a\x91\xe0\xe7\x1e\x5d\x4b\x91\xe0\x14\x09\x4e\x91\xe0\x14\x09\x4e\x91\x60\x4f\xfa\x35\x47\x82\x21\xe5\x2e\xa4\xdc\x85\xbd\x28\x79\xac\x92\xc7\xca\x8f\x92\xc7\xea\x01\x4a\x1e\xab\xe4\xb1\xda\x83\x92\xc7\xaa\x47\xc9\x63\x95\x3c\x56\x7e\x94\x3c\x56\xcf\xdd\x0b\x90\x3c\x56\xc9\x63\x95\x3c\x56\xc9\x63\x95\x3c\x56\x9e\xf4\xeb\xf3\x58\x55\x22\x8f\xdc\x90\xa3\x12\x79\xc4\x7e\x1c\x16\x7d\x9c\x89\x49\x21\xb2\xa6\x1f\xf7\x68\xae\x66\x48\x36\x2b\x01\x14\x29\x6d\x91\xf4\x63\xf8\x6f\xc1\xa9\x2d\x6a\x0f\x64\x3c\x4f\x84\x5a\x0b\xbd\xa4\xd2\xb0\x3f\x54\x47\xa3\xcb\x53\xa7\x7e\x21\xe3\x87\x9d\xfa\x85\xa4\x7e\x21\xa9\x5f\x48\xea\x17\xf2\xd9\xf5\x0b\x59\x12\x35\xbe\x1d\x6f\x43\x68\xb0\xb6\x0d\x26\xe2\x64\xef\xf5\x14\xff\x35\x95\xe5\xff\xdc\xea\x1e\xe2\x79\xfc\x07\x1d\x47\x7e\x75\xdd\x43\x8c\x68\x73\x22\xc3\x9c\x9f\x80\x5e\x1f\xf6\x6c\xd8\x3d\xcd\x5d\xae\x27\xcd\x2f\x87\xbb\xe2\xc9\xdc\xc6\xdd\x70\xf1\x49\x9e\xd3\x1c\x2a\x2a\x27\x56\x22\x0b\x6f\x96\x3c\xdf\xb1\x93\xcd\x89\xf1\x3b\x2c\x4f\xde\x99\x23\xc2\x6a\x3f\x75\x7b\x8e\xe1\x14\x22\xe5\xfe\xf4\x93\xad\x7c\x93\x32\x2d\xb5\x06\xd5\x66\xb3\x8e\x00\x9e\xad\x01\xf0\x0c\x9b\x75\x84\xc7\xe4\x26\xa0\x5d\xb2\xd1\xb7\x01\x51\xb9\x38\x61\x34\x0c\x52\x35\xe9\x44\x71\x31\x0c\x18\xfe\xfa\x5b\x4d\x65\xe8\x4b\x5a\xac\xa8\xec\x42\x21\x8d\x71\xa4\x42\x9d\x85\xcc\xb5\xed\xcf\x88\xb2\x2f\x8d\x18\x30\x86\x08\x61\xdf\x78\xf1\xd1\xb8\x59\x55\xb0\xb9\xc7\x9b\xec\x63\x38\x4c\x14\x90\x06\xfd\x62\x4f\x50\x04\xa6\x3b\x21\x30\x31\x9c\x45\x11\xb3\x12\x1b\xea\xb2\x12\xc3\x61\x12\x11\x5d\x59\xd1\x1c\x59\xbb\x84\x44\x14\xff\xd8\xa3\x80\x6c\x60\x13\x68\x13\x29\x3e\x41\x74\x0b\xb6\x89\xe8\xa0\x3f\xb6\xb1\xe8\x38\x41\x94\xd8\xa0\x1d\xd8\x01\xdc\x89\xc2\xf4\x86\xae\x23\x82\x77\x20\x2e\x80\x07\x22\x82\x78\x20\x12\x90\x07\x62\x82\x79\x20\x32\xa0\x07\xe2\x81\x7a\x60\x53\xdc\xc4\x59\x3a\x4b\xce\x5b\x15\x4f\x7e\x81\x3b\xca\x78\x47\x62\xdd\x0d\xe8\x0b\xc6\x98\x78\x21\x88\x86\x19\x82\xd8\x10\x0a\x88\x8c\x1d\x82\xcd\x63\x14\x55\x24\x82\x0d\xb3\xc5\x04\x24\xc1\x63\x82\x92\x60\x08\x4c\x8a\xc6\xb3\x81\x81\x20\x38\x29\x1a\xd7\xb8\x20\x27\x78\x1c\xa0\x13\xb4\x60\x27\xa3\xc7\xa2\xb1\x8c\x8f\x9b\x7a\x84\x8b\x1a\x0f\xef\x04\x9b\xd7\xd4\xb2\x8e\x29\xf0\x09\x8f\x88\x27\x01\xeb\x22\x8c\xb8\x96\x30\x40\x53\xc5\xbb\xed\xb1\x21\x2a\x60\x57\xf3\x9c\x77\xa8\xaa\xa8\x83\x8d\xbc\xf1\x91\x51\x2f\xf0\x28\x28\x2d\x78\x24\x38\x11\xf4\xd1\x5a\xf1\xce\xfd\x63\xa0\xbe\xe0\x73\xda\xfe\xc8\x5b\xdf\x41\x7f\x62\xee\x7a\x03\xff\x89\xc6\xd3\xc2\x88\xfa\x10\xa0\x68\xac\x11\x4a\x14\x0f\x06\x04\xd1\xa1\x40\x10\x17\x0e\x04\x71\xb5\x31\xba\xf2\xde\x61\xf9\xa1\xc7\x70\x12\x5a\xce\xb1\xfc\x83\x25\xa9\x8c\xea\xfc\x3f\x37\x74\x7d\x8c\xb7\xfd\xff\xc6\x78\xc4\x12\x26\xd5\x14\x4e\xe3\xe1\x11\x7b\xe3\x0b\xaf\x98\xda\x50\x6f\x39\xcd\x3a\xc4\x59\x52\xfa\xb7\x9a\xad\x48\x41\xb9\xf6\x0f\x1f\xf6\x89\xf0\x26\x6e\x6f\xf6\x69\xd3\x4d\x1c\x43\xdc\xdf\x2e\x85\xc2\xbc\x2f\x1b\x09\x8d\xb3\x0c\x2f\x6e\xe8\xfa\xc5\x71\x6c\x25\x6a\x18\x9f\xf3\x17\x36\xe5\x20\xce\x21\x18\xe0\x71\x23\x3a\x12\x05\x2f\xd6\xf0\x02\xb9\xbf\x08\x2b\x97\xd8\xd1\x00\xd9\x42\x64\x0c\x96\x51\xfd\xe3\x91\xdc\x7c\x24\xcf\x99\x11\x78\xa4\xb8\x8c\xea\x0d\x8b\x24\xe3\x39\x29\xa9\xaa\x48\x16\x3a\xa8\x81\x68\xef\x98\x06\x4e\xb4\x81\xd2\x29\x87\x83\x89\xc6\xb8\x75\xd1\x5d\xc5\x75\x82\x69\x01\x87\x0d\x58\x87\x2c\xcc\xed\xd3\x47\xff\x33\x90\xe7\xa0\x16\xa7\x8d\x81\x95\x94\x04\xdf\xeb\x17\x18\xe3\xac\x44\x7e\xa0\xba\x75\xf5\x03\x3e\x35\xf4\xac\x12\xb6\x23\x5d\x90\x5e\x44\x3e\xe2\x0d\xb9\x76\x6b\x1f\x7a\x3f\x96\xa2\x2e\x72\xf3\x6e\x68\x61\xd2\xa1\x2c\x0f\x1b\xd8\xc6\x91\x39\x73\x5c\xe8\x98\xac\xb9\x66\x93\x8e\xbf\x37\xd4\xac\x23\x57\x3a\x5c\x0d\x0a\xdc\x07\xf2\x1c\xca\x85\x28\x06\x5a\x07\x09\xee\x24\x58\xa8\xb5\x73\xbb\xa4\xb2\xbf\xef\xe1\xb9\x1d\x39\x9d\x33\x4e\x73\x20\x0a\x64\xcd\xb9\x59\x4d\x11\x9a\x25\xe7\xd0\xca\xd6\x2c\x43\x03\x22\xdc\x39\xdc\x0a\x6f\x0b\x07\xc2\xe0\x48\x04\xdc\x8c\xa5\x0e\x6a\x49\xd0\x48\x25\x3c\x94\x23\x2e\x80\xe0\x4e\x85\x11\xbe\x8e\xb3\x02\x36\x7c\x43\x73\x7b\xfe\x83\x37\xdf\xed\xf8\x14\xce\x50\xcd\xc4\x5b\x50\xa6\x50\x8a\x90\xa2\x10\xb7\xa1\xd6\xd9\x73\xeb\xd3\x71\xfb\x59\xf4\xe9\xd8\x00\x0a\xa6\x36\x1d\x1d\xa5\x36\x1d\xdb\x94\xda\x74\x7c\xd6\x6d\x3a\xbc\xf7\xc8\xaa\xd4\x3b\xfa\x75\x78\x71\xb4\x3d\x3e\xee\xeb\xd7\xe1\xb7\xa0\xf6\x20\x6e\xf4\xeb\x80\x1f\x96\x14\xe5\x9a\xa7\x2b\xc1\x5c\x99\xb2\x2e\x34\xab\x8a\x2e\xbb\xc4\x2e\x43\xe1\x1d\xe4\x70\x1d\x27\xd4\x06\x5e\xd9\xac\x04\xf1\x4c\x44\xde\x90\xe6\x38\x6e\x4c\x42\x56\x68\x0e\xf8\x99\x95\x98\x02\x45\x8a\xc2\xb5\xb3\x68\x72\xda\x6d\x7e\x1c\xfb\x9c\xd3\x36\xde\xa2\x51\xab\x42\x81\x09\x68\x64\x1d\x1a\xeb\xbd\x30\x62\xc1\x58\xb3\x8d\xae\xf6\xe4\xb8\xed\x82\xb0\x98\x8c\x55\x40\xaa\x06\xa6\xc6\xb1\x15\xe5\xdd\x3b\xe3\x50\x1d\x1d\x85\xd4\x19\x6a\xbc\x04\x31\xdf\x9a\x8f\xf0\xc6\xdc\xf5\xb6\x3c\xb6\x6f\x24\x4f\x8e\x83\x97\xd5\x8e\xb7\x91\x27\x5b\xc1\x77\xbf\x89\x02\x2c\xb2\x8d\xb7\xd0\x9f\x7a\xb6\xfb\xff\xf2\x64\xb9\xe3\x15\xd4\xbc\x63\x7c\xed\x6e\xfb\xfa\xc1\xa3\xd4\xa4\x46\x5a\xdc\xbe\x77\x6e\x9c\x8d\x45\x06\xec\xc6\x93\x67\x21\x85\xbe\xb2\xc2\x01\x96\x91\xd2\x3c\x1e\x25\xc5\xe3\x11\xd2\x3b\x22\xa6\x76\xfc\x63\x34\xc9\x89\x9c\xca\xb1\x9d\xc6\x11\x0b\x41\x3f\x48\xe1\x88\x9d\x80\x11\x29\xf9\xe2\x59\xf9\xc7\x1f\x25\xe1\x22\x55\x34\x4d\x15\x4d\xfd\x28\x55\x34\x7d\x80\x1e\xa3\xa2\x69\xac\xc4\x87\x7e\xd2\x43\x34\xa6\x4d\xc2\x43\xdc\x1c\x2b\x17\xe7\xfd\x87\x2a\x6c\x1a\x15\xf9\xd9\x25\x25\x34\xc9\x04\x91\xd8\x76\x09\x09\x71\xc0\x46\x90\xaa\xa4\x62\xe2\x40\x74\xc0\xff\xe7\x50\xd8\x34\x22\xd8\xb7\x07\xf0\x8f\x95\xd8\x62\xd7\x2e\xea\xb1\x7c\xa4\x9a\x91\xd1\xc1\xf8\x8f\x5a\x83\x33\x95\x38\xfd\x5c\x4a\x9c\xa6\x9a\x94\xd1\x04\xf1\xaf\xa9\x26\xe5\x90\xa2\x81\xcf\x1f\x09\x78\xfe\x38\xa0\xf3\x0d\xc0\x79\x44\xce\xae\x10\x66\x5c\xa8\xf8\x26\x4c\x1c\x48\x28\x66\xe8\x11\x21\xe2\x1b\xf0\xf0\x0e\xdc\x1d\x01\x90\xd3\xaf\x2e\x8e\xc0\xee\x50\xa7\x93\x2b\xbb\x15\x51\x9c\xb7\x6e\x8f\x01\xa0\x3b\x90\xe9\xa6\xaf\x2d\x02\x98\x3b\x9a\xaf\x2d\x82\x6b\xe2\x31\x00\xdc\x11\xe4\x63\x0c\xe0\xf6\x1d\xa0\xed\x0e\x76\x1d\x02\x67\xda\x00\x6c\x6f\xc7\x3b\x03\x98\x77\x8f\xf8\xb8\x70\xeb\x47\x80\x5a\x47\x86\x59\xc7\x50\xf9\xc1\x8a\x3e\xc2\xf1\x8d\x02\xab\xde\x09\xa9\x76\x81\xea\x80\xe9\x0d\x42\xdc\xbd\x60\x75\x48\x28\x6b\x33\xcc\xbd\x19\xb0\x0e\x05\x0e\xc6\x06\x42\xef\x02\x41\x77\xd8\xa8\x90\x2b\xd6\x01\xa0\xb7\x20\xcc\x21\x81\xbd\x5d\x21\xfa\x30\xf8\x72\xec\x30\x3d\x6c\x87\xea\xe3\xa0\x6c\xef\x0a\xd6\x87\x9c\xd7\x21\x5c\x79\x00\x38\x0e\x60\xeb\xa0\xca\x8f\x03\x36\x8e\x05\x34\x0e\x2a\xa8\xcf\x35\x7b\x8c\xa2\xfa\x7d\x59\x31\x7a\x62\x77\x54\xd6\x27\x2b\xc1\x72\xa8\x6a\xad\x7d\xc4\x78\x8b\x0b\xba\xaf\xba\xfe\x68\xae\x44\xa5\xea\xfa\xf7\xd0\x67\x5c\x5d\x3f\xe8\x04\xc3\xb0\xbe\xf8\x36\x48\xd7\x8b\xe3\xa0\x2c\xff\x76\x89\x7d\xff\x89\x37\x65\xf9\x77\x94\xd8\x0f\x9d\xfa\x74\xab\xc4\xbe\x17\xc7\x8d\x52\xce\x1b\x25\xf6\x3d\x67\x3e\x2c\xcb\xbf\x55\x62\xdf\x6f\x8f\xfa\x65\xf9\xb7\x4b\xec\x7b\x8f\xb4\x2f\x13\x77\x96\xd8\xf7\xc6\x83\x51\xa5\x8f\xef\xcc\x2b\xf0\xe2\x3a\xb8\x3b\xbb\xea\xec\x7b\x71\x6d\x6b\xf3\xdf\x59\x67\xdf\x7b\x71\x1b\xf4\xf4\x76\x9d\x7d\xbf\xf9\x0f\x6b\xf3\x0f\xeb\xec\x7b\x0f\x72\x50\x9b\x7f\x58\x67\xdf\x9b\xe7\x10\xe5\xbd\x59\x67\x3f\x68\xa8\x4d\x6d\xfe\xcd\x3a\xfb\x7e\x2b\x9a\x6a\xf3\xef\xa6\x54\x9b\xff\x19\xa0\x62\x53\x6d\xfe\x8e\x52\x6d\xfe\x54\x9b\x7f\x8b\x52\x6d\xfe\x54\x9b\x7f\x04\xa5\xda\xfc\x7d\x4a\xb5\xf9\x47\x53\xaa\xcd\x9f\x6a\xf3\xa7\xda\xfc\xde\x94\x6a\xf3\x8f\xa3\x54\x9b\x3f\xd5\xe6\x8f\x40\xa9\x36\x7f\x9f\x52\x6d\xfe\x54\x9b\x3f\xd5\xe6\x8f\x40\xa9\x36\x7f\xaa\xcd\x9f\x6a\xf3\xa7\xda\xfc\xc1\x94\x6a\xf3\xa7\xda\xfc\x41\x94\x6a\xf3\xa7\xda\xfc\xa9\x36\x7f\xaa\xcd\x9f\x6a\xf3\x7b\x52\xaa\xcd\x1f\x40\xa9\x36\x7f\xaa\xcd\x1f\x36\x98\x54\x9b\x7f\x24\xa5\xda\xfc\xa9\x36\x7f\xaa\xcd\x9f\x6a\xf3\xa7\xda\xfc\xbb\x29\xd5\xe6\x4f\xb5\xf9\xc7\xd0\xce\xda\xfc\xc1\x89\x2a\x83\xc7\x53\xc4\x4c\x95\xa6\xa8\xff\x76\x81\x7e\x2f\x9e\x83\xa2\xfe\xbb\x0b\xf4\x7b\xf1\x6d\x8a\xfa\x6f\x14\xe8\x7f\xbe\xcb\x8a\x95\xfd\xb7\xab\xf4\x7b\x71\xec\x57\xf6\xdf\x55\xa5\xdf\x8b\x69\xbf\xb2\xff\x8e\x2a\xfd\x5e\x3c\xbb\xca\xfe\xf7\x56\xe9\xf7\xe2\x8d\x95\xfd\xef\xab\xd2\xef\x77\x5e\xd1\xa6\xba\xbb\x4a\xbf\x17\xd3\xc2\x56\x62\xba\xab\x4a\xbf\xdf\xf4\x49\xb6\x4c\x55\xfa\x1f\xa4\x54\xa5\x3f\x55\xe9\x4f\x55\xfa\x53\x95\xfe\x07\xe9\xc9\xf3\x91\x52\x95\xfe\xfb\x28\x55\xe9\xdf\x93\x52\x95\xfe\x54\xa5\x7f\x34\xa5\x2a\xfd\xa9\x4a\x7f\xaa\xd2\x7f\x07\x8f\x54\xa5\x7f\x14\xa5\x2a\xfd\xa9\x4a\x7f\x30\xdb\x54\xa5\x3f\x55\xe9\x0f\xa1\x54\xa5\x3f\x55\xe9\x4f\x55\xfa\x53\x95\xfe\x54\xa5\xdf\x8f\x52\x95\xfe\xb1\x94\xaa\xf4\xa7\x2a\xfd\x96\x52\x95\xfe\x54\xa5\x7f\xf4\xe0\x52\x95\x7e\x5f\x4a\x55\xfa\x53\x95\xfe\x54\xa5\xdf\x51\xaa\xd2\x9f\xaa\xf4\xa7\x2a\xfd\x4f\x5c\xa5\x9f\xd4\x5a\x94\xa2\xe6\xfa\x8a\xca\x15\xcb\xe8\x69\x96\x99\xaf\xae\xc5\x0d\x1d\x05\x20\x1d\x46\xe5\xee\x61\x3a\x6a\x7a\x8c\xe7\x2c\xc3\x18\xd2\xed\x92\x62\x01\x7c\x02\xca\xf2\x04\x62\x99\x82\x1e\xcd\xb5\x43\x04\xe1\xec\x89\x66\x19\x29\x8a\x35\xe0\x90\xc7\xed\x80\x5d\xf3\x99\x10\x05\x1d\xf1\x7c\x70\xe6\x2c\x95\xa3\xb4\xd9\x60\x89\xdf\xb9\x58\x74\xc7\x0a\x66\xb4\x10\x7c\x31\x56\xb5\x39\x68\x6a\x25\xf2\x29\xbc\xe9\x98\x65\x84\xa3\xe0\xaf\xa5\xa4\x5c\x8f\x84\x3d\xce\x9a\x72\xbe\x18\x50\x2d\xc5\x8a\xe6\x18\xda\x46\xa4\xa2\x75\xc9\x8c\x8c\x85\x16\x94\x98\xf9\x72\xda\x4d\xd8\x08\x77\x02\x97\x38\x6e\x3b\xd8\xd9\x38\xc9\x61\x11\xa3\x1e\xdb\x3d\xd6\x8a\xf1\xb0\x5b\x36\x82\xdc\xee\x45\x8d\xe6\x63\x86\xe1\x86\x6e\x1d\x46\xca\x0b\x14\xb6\x6b\x51\xc3\x2d\xb1\xcf\x5e\x59\x73\x14\xec\xb8\x9c\xe6\x18\x8c\x3b\x3e\xbe\xcf\x15\xbf\xb8\xe9\x04\xf5\xf0\xa8\x3f\xf1\x8f\x65\x12\xb9\xf0\x30\x37\x07\x5b\x77\x70\x2a\x17\xb5\x7d\x5d\xba\x8b\x46\xb9\x96\x6b\x04\x45\xfb\x48\x7a\xf3\x66\xcd\x45\x76\x63\x8e\x7f\x49\x16\xf4\xe0\x40\xc1\x9b\xf7\x6f\x8d\x0e\xa9\x95\x97\x8a\x63\xae\x20\xbd\xd3\x42\x95\x14\x2b\x96\x9b\xfb\xfa\x3d\x91\x8c\xcc\xbc\x4a\x08\x60\xd1\x6d\xca\xcd\xeb\xe9\x8b\xc3\xef\x4f\x3f\xfe\x7c\x71\xfa\xfe\xec\x08\xa3\x45\xf4\x53\x45\x78\xee\x35\xd2\x5a\x75\xa9\x26\xee\xec\x9b\xe9\x53\xbe\x62\x52\x70\xb3\xc8\x3e\x2b\x7a\x3e\x07\x02\x2b\x37\xd7\x46\xec\xcd\x28\xc2\xb6\x8a\x95\x1f\x2e\x59\xa3\x67\xc1\xad\x41\x63\x84\x32\x5e\xd5\xda\xff\xf1\x81\xe9\x08\x33\x0a\x35\xcf\x96\x84\x2f\x9c\x44\xed\xaf\xaf\x07\x53\xb5\xe6\x9a\x7c\x32\xb3\x46\x37\xb9\xca\x48\x45\x73\x6b\xe6\x11\xc8\x45\xed\xb7\xfd\x5f\x7c\x71\x0c\x8c\xbe\x86\x2f\x7a\x83\x9b\xc2\x99\xe3\xde\x1d\x0e\xdf\x55\xe0\x74\x45\x25\x0e\xd8\x1d\xa6\x63\x90\x74\x41\x64\x5e\x50\xe5\xc3\x54\xcc\x5b\xf3\xc2\xfa\xad\xdc\x61\xa0\x4d\xbc\xc3\x83\x27\x17\xba\xa7\x97\x5a\x5d\x03\xef\x05\xc2\xde\xe7\xc2\xe7\xf5\xb8\xd4\xba\x52\xaf\x4f\x4e\x6e\xea\x19\x95\x9c\x6a\xaa\xa6\x4c\x9c\xe4\x22\x53\x27\x9a\xa8\x1b\x75\xc2\xb8\x91\xc3\x93\x9c\x68\x32\xe9\x29\x8b\x13\xfb\xc4\x98\x64\xa2\x2c\x09\xcf\x27\xc4\x09\xa5\x49\x7b\x91\x4e\x7e\xeb\x4c\xdb\x09\x69\x7f\x8b\xf1\x09\x99\xa8\x25\x2d\x8a\x83\xd1\x63\x0d\x79\xee\x7b\x3f\xf3\x03\x9e\xf7\x6e\xce\xa1\xd2\xfe\xac\x15\xee\x76\xee\x53\xb8\x10\x3e\x5e\x3c\x9b\x23\xe3\xae\x22\x2a\x66\xdc\x87\x69\x4f\xfe\xfb\x88\xfa\x46\x63\x9c\x5d\x5c\x7f\xfc\xcb\xe5\x87\xf3\x8b\xeb\x46\x71\x34\x6a\xc0\x87\xeb\x5d\x8a\x23\xec\xa6\xdf\xa5\x38\x3a\x35\xe0\xc1\xf4\x4e\xc5\x31\x54\x03\x3e\x9c\xb7\x15\xc7\x50\x0d\xf8\xac\xec\xb6\xe2\xd8\xa1\x06\x3c\xad\x88\xfe\xfa\xee\x54\x03\x5e\xd2\xb9\xa7\x38\x76\xab\x01\x0f\xae\xdb\x8a\x63\xa8\x06\xbc\xee\xd7\xb6\xe2\xe8\xa9\x01\x4f\x95\xbf\xad\x38\xfa\x6a\xc0\x83\xe9\x6e\xc5\x91\xd4\xc0\x3e\x1f\xea\xa5\x06\x28\x5f\x05\xaa\x80\xe6\x5d\xde\x13\x2e\xed\xb9\xf0\x11\x83\x5a\x20\x16\xcc\x89\x82\x76\xa3\xe2\x1c\xaa\xcf\x63\x3f\x07\xeb\x7b\xc6\x57\xdf\x13\x39\x00\xf3\xf9\xf9\x4a\x77\x6d\x10\x38\xa6\xc0\xfc\x78\x92\xce\x83\xe2\x9f\x78\xe8\x1d\xfa\x0b\x41\x22\x7b\xbc\xab\x2d\x85\x22\x85\xcd\xc7\xfa\x06\x52\x06\x07\xe3\x82\x94\x8d\x9f\xbb\xbf\xb7\xde\xde\xd4\xe6\x4c\x4c\xe1\x7d\xe3\xb2\x82\x37\x3f\x9f\xbf\x3d\xbb\xb8\x3e\xff\xfa\xfc\xec\xa3\xaf\x9f\x36\x38\x06\x85\x1e\xfd\x28\x4b\x76\x10\xc7\x52\xb3\x74\xbf\xbd\xe6\xef\xd4\x5e\xe2\xad\x5c\x31\x51\x77\x91\x92\x98\xfb\xab\xb6\x64\xab\x37\x4b\x9b\x44\xb1\x6e\x3d\xd4\x51\x87\x39\xdd\xe9\xa9\xf0\xe6\x1b\xd5\x50\xb5\x74\x8f\xb9\xea\xcd\x33\xaa\xb7\xc3\xd2\xdd\x3e\x0f\xff\x8d\x8f\x6d\xf2\x5a\xba\xd7\xf0\x0d\xd9\xf9\x3b\xcc\x5f\x6f\x96\xf7\x78\x4f\xbc\x79\x36\xc6\xf3\x5b\x3a\x27\x75\x61\xfd\xa7\x2f\x5e\x4c\xc7\xdb\xa0\x96\xe2\x88\xdd\xaf\xa5\xf0\xee\x5c\x37\x10\xbd\x57\x98\x12\x8a\xbd\x5c\x43\x02\xb3\xbb\x8c\x98\x03\x97\x1c\xe6\x7f\xee\x7a\x6e\x2b\xe7\x1a\xb0\x51\xe4\x00\xc0\xab\xe1\x17\x84\xc2\x8d\x00\x8b\x8a\x91\xd4\x94\x09\x3e\x67\x8b\xf7\xa4\xfa\x96\xae\x3f\xd2\x79\x08\x18\x65\x78\x1e\x30\x46\xed\x32\x53\x82\x40\x5a\x62\x6e\xcd\x50\x3b\xcc\x10\x2c\x5a\x24\x24\x5a\x8c\x04\xb9\xd0\xe4\xb8\x58\xf9\x6c\x11\x72\xd9\xb6\xba\xb4\xc6\x48\x3b\xc3\x57\xa2\x39\x41\x71\x12\x23\x23\xa4\xc8\x84\xd8\xf5\x0d\x0d\x8d\x55\x67\xe0\x87\xaf\x55\x67\xec\x68\xeb\x56\x09\x66\xf9\xa0\x5b\x26\x13\x3c\xa3\x95\x56\x27\x62\x65\x6c\x43\x7a\x7b\x72\x2b\xe4\x0d\xe3\x8b\x89\xb1\x3b\x26\xf6\x8e\xa9\x13\xc4\x18\x9d\xfc\x16\xff\x13\x3c\xa8\xeb\x0f\x6f\x3f\xbc\x86\xd3\x3c\x07\x81\xca\xb9\x56\x74\x5e\x87\x67\x4a\xdb\x96\xbd\x53\x20\x15\xfb\x9e\x4a\xc5\x44\x84\xfc\x9a\x1b\xc6\xf3\x63\xa8\x59\xfe\x95\xaf\x7a\x6f\x28\xda\xf9\x15\x95\xc5\xce\x46\x3d\xc3\x57\x88\x43\x0b\xbf\xee\x7d\x7b\xab\x15\xf5\xc1\x5c\x85\xc4\xa2\x54\x37\x74\xdd\xa0\x34\x82\x59\xba\x07\x5b\x94\x4d\x1d\x0b\xb2\xd9\x24\x3c\xb8\x31\x75\xf6\x41\xab\xb4\x83\xe6\x67\x01\xfd\xce\x73\x51\x89\xfc\x35\xa8\xba\xaa\x84\x0c\x2c\xfe\x50\x52\x4d\x72\xa2\xc9\xd4\x48\x93\xe3\xe1\x97\x88\x63\x0c\xbb\xb6\xff\xd9\x32\x44\x68\xa0\xfa\xf1\xe0\xe0\x4f\xdf\x9e\xfd\xe5\x7f\x1d\x1c\xfc\xf4\x9f\xb1\x38\xa3\x19\x6a\x93\x6b\xe3\xb1\x57\x15\xcd\xa6\x5c\xe4\xf4\x02\xd7\x05\xbf\x54\x03\x98\x1a\xfe\x20\xec\x33\x34\xd1\xb5\x9a\x2e\x85\xd2\xe7\x97\xc7\xcd\x97\x95\xc8\xcf\x2f\xa3\x30\x46\x4e\xca\xfb\x2d\x04\xcf\xcd\xb8\xc3\x2b\x70\x49\x82\xea\x2b\xc7\x32\xf1\x3a\xbd\x16\x55\xf4\x3b\x9e\xe1\x42\xda\x61\x5a\xb3\x25\x2d\x49\x94\x3e\x0c\x5f\x37\x8b\x0f\x4c\xc1\xad\x64\x5a\x7b\x96\x23\xec\x13\xe3\xae\x22\x9f\x98\x1f\x1b\x2d\x80\x4f\xf8\x18\x66\xee\x8b\xd5\xab\xe0\xc4\x9f\x68\x46\x42\x7b\x6e\xa3\x1e\x15\xdc\x8b\x48\x86\xae\x55\x2e\xed\xf3\x20\xca\xbe\xf6\x01\xf5\x70\x7a\x79\x1e\xcc\x74\x65\xef\xc6\xb3\xd8\xd6\xa6\x5a\xd7\xd7\xcf\xd4\x5a\x68\xc6\xd7\x08\x82\xd6\x6b\x1d\x76\x04\x31\xaf\xae\xad\x54\x06\x05\x2b\x59\xe0\x7d\x25\x3c\x47\xed\x40\x95\x56\x70\x68\x19\x4e\xb3\xaa\x0e\x53\x80\x8e\x4f\x49\x4b\x21\xd7\xc7\xcd\x97\xb4\x5a\xd2\x92\x4a\x52\x4c\x94\x16\x92\x2c\x02\xd5\x77\x33\x6c\x1c\x6e\xf7\x95\xfd\xd0\x68\x8b\xb2\x3d\xea\x90\x64\x1a\x5b\x8b\xa3\x85\x6b\x37\x36\x24\xcd\x7f\x3d\x56\x42\x73\x3c\x9f\x81\x91\xd0\xde\xba\x8b\xe8\x6e\x8e\x37\xc1\x61\xa8\x86\xd0\x05\xd3\xae\x3d\xcc\x23\x14\x82\x58\x89\xa2\x2e\xa9\x3a\x6e\x9f\xc7\xe1\xee\x04\x21\x81\xf2\x15\xac\x88\x54\xcf\xe6\xf1\x9f\xb3\x15\x53\xe1\xf5\x8c\x76\xbc\xfd\x63\x34\xae\xc6\x9c\xed\x5a\x57\xb5\x76\xe5\xe4\x63\x19\x95\xf4\x53\x25\x14\xc6\x9b\x22\x54\xac\xb4\x94\xf7\xa3\x37\xaf\xc2\xfa\xf5\x60\x01\x0a\x4d\x25\x7f\x0d\xff\x71\xf8\xd7\x2f\x7f\x99\x1c\x7d\x75\x78\xf8\xe3\xcb\xc9\xbf\xfd\xf4\xe5\xe1\x5f\xa7\xf8\x8f\x7f\x3e\xfa\xea\xe8\x97\xe6\x8b\x2f\x8f\x8e\x0e\x0f\x7f\xfc\xf6\xfd\x37\xd7\x97\x67\x3f\xb1\xa3\x5f\x7e\xe4\x75\x79\x63\xbf\xfa\xe5\xf0\x47\x7a\xf6\xd3\x9e\x4c\x8e\x8e\xbe\xfa\x22\x70\xe0\x84\xaf\x3f\x04\x99\x12\x60\xcb\xae\x46\xe9\x41\x30\xe4\x16\xa5\x1c\xd2\xa7\x49\xe7\xf4\x9c\x30\xae\x27\x42\x4e\x2c\xe3\xd7\xa0\x65\x1d\xf6\x48\x69\x8e\x63\x5c\x39\xfb\x31\x52\xdd\xbe\x9e\x49\xd6\x9a\xd9\xcf\x42\x90\x29\x9a\x49\xaa\x9f\x77\x9c\xca\x8e\xb1\x79\x55\x60\xb2\x79\x70\xd4\x01\x9d\x5b\xbf\x16\x9b\x27\x85\xbd\xee\xa3\x36\xc1\x17\x4f\x51\xbc\x57\xee\x5c\x8a\x72\x0a\x3d\xe0\xd7\x2a\x4a\x3b\x7f\x37\xce\x1b\x1a\x5c\x8b\x2a\x85\xe9\x7c\x28\x85\xe9\xc2\x28\x85\xe9\xc6\x51\x3f\x4c\x77\x85\x77\x3f\xc5\xe8\x76\x11\xe5\x2b\x3f\x60\xd5\x4e\xe4\x7d\xe3\xc3\xd2\x02\x2a\x51\xd5\x05\xd1\x5e\x19\x22\xbb\xf0\xfb\xdb\x30\x7c\x0f\xce\x4e\xf9\x75\x68\xd6\x2e\xc7\xcb\xd7\xbd\x51\xee\x46\x28\xc3\x69\x51\x00\xe3\xbe\xca\x0b\x07\xd9\xe4\x1b\x49\x6a\xdd\x49\x40\xb0\xaa\x28\xf6\x43\xf2\xe0\x79\xbb\xa4\x1b\x4b\x08\x4c\x81\xd2\x44\x6a\xc6\xbd\x9a\x41\xfd\x60\x38\xa2\x39\xda\xa4\xdd\x30\xde\xf5\x43\x0a\x78\xc8\xb6\x25\xcc\x7a\x0d\xf3\xba\x9a\x35\x05\x51\x3e\xf3\x77\x2f\x05\x5c\x55\x4d\x6e\x10\xdb\x9c\xd1\x9c\xf2\x8c\x4e\xe1\x7b\xdf\xda\xaf\xcd\x49\x9a\xad\xcd\xde\x9c\xf1\x55\x9b\x89\x55\xdb\xe4\x1f\x9f\x43\x65\x56\x74\xf7\x38\xff\x71\x53\x4f\x8c\x98\x72\xd0\xcd\x2e\x03\xc5\x4b\x72\xa2\xdd\xda\x7a\xf2\xdb\x82\xcf\x2d\x9a\xc3\x2b\x57\x28\xec\xe5\x12\xfa\x5a\x68\xb1\x91\x01\x0f\xce\xad\x67\x42\xbb\x20\x21\xb5\xb5\xed\xb3\x00\xcd\x7a\x4f\x1e\xcf\x04\x7e\x1a\x6a\xae\xef\x34\xd5\x83\xa3\xc8\x43\x33\xfd\xf9\x99\xd9\x8f\x60\x62\xef\x30\xaf\xad\x79\x1c\xc4\x35\xd4\xb4\x8e\x62\x56\xc7\x30\xa9\x77\x99\xd3\x01\xc9\xb5\x1d\x0d\x10\x6f\x51\x4c\xe0\x70\xf3\x37\x1c\x9e\x56\x49\x3a\x67\x9f\xa2\xc8\xcc\x53\xde\x6e\x20\xb0\x9c\x72\xcd\xe6\x2c\x60\xcd\x8d\x11\x2d\x69\x45\x39\x82\x08\xb0\x8f\xa3\xb1\x0b\x3c\xf3\x23\x61\x73\x07\x9f\x5d\x72\x9d\x75\xd1\xc4\x54\x60\x57\xb1\x9c\x53\x49\x7b\x25\xed\x95\xb4\xd7\x43\xf4\xec\xb5\x97\x93\x07\xcd\x93\xfd\x69\xd5\x0f\x56\x84\x09\x2d\x7a\xf3\xb6\x57\x8f\x0c\xef\xb8\xb7\xbb\x76\xff\xbb\xd7\x95\x3d\x3c\xc1\xcf\xf5\xb9\x62\x58\x78\xb7\x2d\xa7\xde\x6a\x4d\x2d\x6c\x29\x4e\x0f\x8e\x4b\xb6\x30\x37\xb4\xa0\x2b\x5a\xb8\xe7\x10\x94\x84\x93\x85\xad\x0b\xef\xf5\x82\x71\x11\x74\x10\x12\xfb\x4a\x4a\x96\x0f\x9c\x27\xbe\x93\x67\x1c\x8c\xd8\x2a\x04\xc9\x91\x9d\x14\x45\x41\xa5\x82\x82\xdd\x50\x78\x4b\xab\x42\xac\x7d\x1b\x10\x12\x9e\xc3\x95\x26\xda\x88\xa9\x2b\xaa\x7d\x70\xca\x01\xa2\x00\x57\xe4\xb2\x2e\x8a\x4b\x51\xb0\xcc\x23\x6e\x35\x3c\xdc\xe7\x78\xaa\xab\xba\x28\xa0\x42\x86\x53\xf8\xc0\x7d\xce\xb6\x98\xc3\x69\x71\x4b\xd6\xea\x18\x2e\xe8\x8a\xca\x63\x38\x9f\x5f\x08\x7d\x69\x9d\x08\x3e\x06\x4f\x3f\x33\xd6\xb2\x06\x36\x87\xd7\xd8\x73\x4f\x83\x26\x3e\x42\x94\xf5\x1a\xc9\x1f\x9b\x33\xd7\x1f\xa4\x55\x40\xb7\x4c\x79\xe5\x96\xde\x5b\x0c\xcd\xef\xd2\xff\x16\x39\x19\xd5\x6b\xbf\xfe\xbb\x1e\xb4\x82\xcd\x69\xb6\xce\x8a\x50\xf9\x79\x9a\x61\x86\x43\xd7\x36\xae\x93\x18\x3e\x0e\x46\xdb\xc5\xde\x95\xb8\x45\xd7\x1d\xe3\x60\x5b\xb8\x2b\xcf\x0e\xdd\x9d\xb8\x69\xe7\x6c\x1d\xc0\xea\x49\x7d\x81\x9e\xf6\x6c\x98\x25\x5b\x09\xa5\xaf\x34\x91\x3a\x42\x8b\xf7\x83\xcb\x86\x19\x60\x6b\xdf\xa2\xf0\x36\x04\x58\x59\xd2\x9c\x11\x4d\x8b\x35\x90\xb9\xc6\x42\xc9\xa1\x05\x2d\xcc\x98\x24\xb5\x37\xd5\x75\x94\x5a\x12\x9e\x17\x54\xc2\x9c\xb0\xc2\x1b\x1d\xb6\xe5\xfe\xd7\x54\x96\x8c\x07\x14\x52\xb7\xb0\x5a\x8c\x22\xd0\x1c\x0b\x43\xcb\x1c\x8b\xc4\x09\xf0\x87\x31\x3b\x86\x9d\xd8\x47\xeb\x3b\xe8\x72\x42\x87\x59\xe8\x16\x60\x56\x88\xec\x46\x41\xcd\x35\xf3\xb5\xea\x71\x6b\x84\xb8\x81\x4c\x94\x55\x81\xc2\x33\xac\xd0\x24\xdc\x5f\x6c\x72\x97\x44\x6e\xff\x39\x69\x85\xc4\xc4\x8c\x49\x9d\xfc\xb6\xfb\x11\x7e\xc3\xef\x8d\x10\xfc\x86\x0d\x7f\xc1\xd2\x4f\x34\x8b\xd4\xf4\xe1\x03\xa7\x78\x6a\x05\x1f\x59\x5a\x7b\x48\x82\xb7\x89\x00\x73\x61\x8c\x56\x73\xea\x63\xf4\x91\x68\x8d\x80\x29\x9c\x7d\xa2\x59\x94\xce\x2a\x66\x94\x04\x95\x1d\xd6\x42\x26\x37\x01\x25\x2a\x9e\x51\x13\x73\xef\xd2\xa1\x7d\x1a\x1c\x8e\x37\x96\x63\x78\x83\x39\x2b\x68\x2c\xb3\x82\x71\x4f\xf5\xdf\x27\x57\x98\x14\x18\x57\xe6\x21\x32\x90\x64\x31\x7a\x51\x39\x57\x0a\xe4\x4c\x62\x07\x8f\x50\x10\x86\x2b\xb0\xd2\xae\x42\xf8\x9a\x4a\x21\x34\x1c\x1e\x9c\x1c\x1c\x6d\xa1\x01\x82\x3b\xca\xce\x59\x41\xad\x01\x67\xcb\x1d\xb9\x51\x07\x72\x35\x36\x3d\x2b\xab\x62\x8d\xbb\x77\x90\x1f\x03\x0b\x05\xa2\xb8\x9a\xaf\xb2\xe6\xcd\x49\x08\xed\x43\x8e\x05\x26\x8f\x41\x09\xd0\x92\x34\x8d\xab\x62\xf0\x34\x03\xd4\xb2\x76\x46\xf6\xe1\xc1\x2f\x07\xa1\xe7\x94\xea\xec\x08\x6e\x05\x3f\xd0\x78\x5c\xa7\x70\x1d\x7a\xab\x6a\x45\x9b\x12\xbf\xc7\x58\x9b\x9f\xd3\x70\x40\x8e\x00\xfa\xa9\x2a\x58\xc6\x74\xb1\x46\xe3\x12\x44\x1d\xba\xef\x58\xc3\x9e\xe8\xa6\x1a\xf1\xd9\xa7\xe0\x93\x64\x33\x9a\x8d\x12\x7b\x89\xa6\xa0\x35\x38\x03\x99\x12\x05\x05\x5b\xd1\x93\x25\x25\x85\x5e\xae\x21\xfc\x0e\x71\xc1\x27\xff\x4d\xa5\xc0\x7a\xc9\xdc\xf1\x8d\xd1\xe8\x2d\xbc\x3b\x5e\x94\xf6\x97\x11\x7c\xaf\xc6\x5e\xfc\x86\x7a\xbe\x8b\x60\x53\x07\xfe\xf9\xfa\xfa\xf2\x1b\xaa\xa3\x19\x1e\x66\x74\x4d\xea\x1d\x46\xb5\xa8\x9c\x0b\x59\x3e\xb1\x05\x12\x0e\x12\x9f\x40\x25\xe4\x53\x9b\x40\x4b\xa1\x02\xf6\x1d\xb6\xf6\x5e\x28\xed\x5b\x8f\xb4\x4f\x5a\x18\xdd\xcc\x69\x66\x76\x3c\x5a\x1a\x7a\xd7\x30\x07\xce\x2f\xa7\xf0\x17\x51\x9b\x55\x9c\x91\x59\x90\x25\x6f\xa8\xe9\xc8\xa2\xa8\x86\x17\x66\x11\x5e\x84\x04\x5a\x2d\x99\x73\xff\x67\x4a\x72\x2a\x15\x6a\x42\x4a\xa2\xf4\xa7\x0c\x86\xee\xf6\xc6\x15\xd3\x72\xae\x95\x16\x25\x2c\x2d\xe3\xf0\x8d\xee\x95\x5e\x76\xb2\x23\x14\xb9\x6f\xe4\x9a\x8d\x2f\x28\x90\xb4\x8a\xa1\xed\xdc\x6c\x7f\x45\xda\x68\x4b\x13\xd8\x93\x12\xc8\xb5\xe1\x3b\xa3\x0a\x08\x64\x78\x54\x82\x59\xda\xc5\x37\x67\xc5\x95\x4b\x0c\xe6\xc8\xb8\x3d\x24\x46\xa8\x04\xe7\x17\x44\xeb\x26\x1b\x27\xa1\x09\x42\x4a\x4d\x0f\x99\x20\x34\x37\x90\x4b\xac\xfc\x28\x88\x94\x49\x03\x3b\x00\x24\x11\x58\xb6\xa7\xd4\x06\x3b\x23\x2c\x3f\xc4\xcc\xe1\x80\xd0\xa2\xd6\x7d\x7a\xfc\xe5\x8b\x71\xf0\x20\xde\xfa\x55\xc1\xe5\x67\xb6\x8b\xcf\x68\x01\x24\xcb\xfc\x9a\x29\xf5\x49\x58\xd5\x89\xe2\x4c\x51\xb9\xf2\x4b\x98\xe8\x28\xd6\x92\x09\xdf\xf0\x4d\x43\x3b\x2a\xcf\x4b\xe0\x75\x39\x0b\x56\x52\x6d\x1d\x38\xa9\x63\x6f\x43\xaf\x79\xc4\x45\x8c\xa1\x36\x10\x96\xc6\x40\x22\x7c\x11\x7a\x2f\x5e\x99\x39\xff\xf1\x0f\x7f\xf8\xfd\x1f\xa6\x76\x59\xcd\x67\x04\xf2\x9c\x51\x20\x1c\xce\x4f\x2f\x4e\x7f\xbe\xfa\xfe\x0d\xd6\xe4\x0e\x3b\x85\x11\x92\xf9\x63\xa6\xf2\x47\x4c\xe4\x7f\xc4\x34\x7e\x2c\x58\x16\x28\xe1\x87\xb8\x2c\x64\x18\xee\xd1\xae\x95\x2d\xc3\xed\x5e\x8a\x36\x6c\x18\xc1\x93\x6d\xde\xc4\x83\xea\xe5\x11\x1e\x0e\x4f\x2e\x3d\x75\x56\x5d\x89\xec\x26\x9a\x97\xe7\xe0\xfa\xcd\xa5\x65\x18\xc5\xd1\x43\x78\x13\x60\x62\x7c\x25\x8a\x95\xd9\x4c\x02\xd7\x6f\x2e\x03\x95\xc5\xd4\xf0\xc0\x08\xab\xf5\x7b\xaf\x83\x32\x39\xdb\xd2\x4c\x0e\xda\xc9\xca\xaa\x08\x89\x28\x03\x76\x20\x90\x94\x14\x4c\x69\x96\xe1\x58\xdb\x18\x6c\x90\x57\x47\xdc\xf8\xe3\x39\x93\x7f\xac\xa3\xc8\xfe\xb1\x83\x0f\x91\xb2\x9e\x5b\x47\x5b\xcf\x55\x16\xec\x34\x39\x1e\x14\xfd\x09\xaf\x50\xe9\x1c\x6d\x61\x29\xe7\xcf\xd4\x72\x44\x33\xcc\xaf\xc1\x68\x9f\x78\xaf\xf7\x91\xb3\x1c\x43\x23\x28\x68\x77\x6e\x5b\x8e\x81\x6c\xdd\x84\x87\x96\x63\xa8\x5f\xc2\xd8\x9d\x5b\x96\x63\x24\xdb\x36\x59\x8e\xfb\xd1\x23\x58\x8e\x95\xa4\x57\x5a\x54\x51\x70\x76\x96\x55\x54\x94\xdd\x8c\xce\x85\xa4\x71\x60\x76\x1d\x00\x0e\xf2\x1a\x85\x31\xe1\x01\x95\x55\x9b\x30\x97\xe8\xc3\xd5\xbc\x53\xf6\x01\x4d\x96\x6c\xd9\x44\x55\x39\x55\xea\x04\xa1\x71\x75\x65\x9d\x94\x9e\x4c\xe7\x84\x15\xb5\xa4\xc7\x66\xa7\x69\x89\x7b\x75\x1c\x5a\xe4\xd1\x6c\x06\xe5\x96\x15\xd5\x99\x85\x51\x38\xd4\xa2\xff\xfe\x18\x9b\xcf\x1e\x1c\xdb\x27\x37\xbc\x59\x58\x26\x89\x5a\x52\x6c\x11\x4a\x3f\x31\xad\xec\x40\x25\x25\xca\xbb\x46\x34\x42\x5d\xdc\x41\x42\x13\x58\x41\x45\x94\xa2\xb9\xbf\x36\xe8\x41\x3e\xed\x00\x2f\x45\x7e\x70\xa0\xfa\x1f\xe3\xc9\x79\x21\x49\x46\xa1\xa2\x92\x89\x1c\xb0\xea\x7a\x2e\x6e\x39\xcc\xe8\x82\x71\xdf\x17\x80\xbb\x91\x66\xd0\xcd\x85\x37\x26\x2c\x0d\x00\x52\x35\x7d\x98\xa7\xf0\x71\xd0\x27\xd6\x5f\x6b\x89\x5a\x67\xa2\xd3\xd6\x6e\x75\x8f\x03\x38\x76\x48\x52\xac\xd6\x80\xd7\xbc\x26\x45\xb1\xee\xc4\x8a\x27\x67\x57\x98\x44\x3f\xd6\xc6\x7f\x66\x98\x5a\x73\x59\x43\x39\xf6\x2f\x68\x7f\x29\xfc\x65\x93\xa4\x24\x5b\x86\x25\x53\x24\xe8\xee\x03\x94\xa0\xbb\x09\xba\x7b\x27\x25\xe8\x6e\x82\xee\x26\xe8\x6e\x82\xee\x26\xe8\x6e\x82\xee\x8e\xa4\x04\xdd\x7d\x88\x12\x74\xf7\x4e\x7a\x96\xa1\x89\x04\xdd\x4d\xd0\xdd\xbd\x29\x41\x77\x13\x74\x77\x1c\xdf\x04\xdd\xf5\xa2\x04\xdd\xbd\x97\x12\x74\x37\x84\x12\x74\xd7\x97\x12\x74\x77\x34\x25\xe8\x6e\x82\xee\x06\x50\x02\x60\x78\x50\x82\xee\x46\x78\x38\x3c\xb9\xf4\x4c\xd0\xdd\x04\xdd\xdd\x93\x92\x7f\xac\xa3\x04\xdd\x0d\xa0\x04\xdd\x7d\x90\x12\x74\x37\x41\x77\x03\x78\x3d\x3f\xcb\xb1\x81\x88\x5e\x4a\x31\x0b\x2e\x2d\x7d\x89\xe0\x28\x96\x59\x8f\x9a\xb9\x27\x21\xc0\xcb\x66\x68\x53\x78\x33\xc4\xcc\x61\x7f\x2b\x57\x3e\xd2\x83\xaf\xc3\x84\xda\x31\x62\x69\xcc\xe9\x8e\x6a\xb7\x1e\x8c\x47\x42\xba\x9a\x82\xce\xea\xa4\x12\xf6\xff\x3a\x40\x57\x0f\xc9\x65\xbd\x93\xbe\xb5\x72\x9f\xa4\xea\xaa\x3f\x7c\xeb\x4e\xe8\x16\x08\xaf\x32\xce\xd0\x3d\xf4\x37\x61\x5b\x43\xf0\x95\x27\xef\x21\x64\x6b\x08\xbc\xf2\xb5\xfc\xbd\xe1\x5a\xcf\x00\xb8\x17\x0c\xd1\xba\x03\x9e\x15\xa8\xbd\x36\xa0\x59\x0d\xb8\x2a\x80\xe3\x4e\x58\x56\xe0\x28\xb7\x20\x59\x0d\xa8\x2a\xc2\xcc\x11\x7b\xda\x07\x54\x05\x46\xf9\x7b\x50\xac\x3e\x98\x2a\x80\x6b\x0f\x86\xb5\x0d\xa4\x0a\xd9\x29\xbd\x0b\x44\xe5\x30\x40\x21\x8f\xcb\x01\x80\x6a\x07\x04\x2a\x80\x37\x82\xa7\x22\xc3\x9f\x76\x42\x9f\xc2\xec\xd7\x1d\xb0\xa7\x06\xb8\x14\xb2\xb0\x1d\xe4\xa9\x0f\x5a\x0a\x39\x02\x2d\xdc\x69\x13\xb0\x14\xe4\x02\xc9\x63\x83\x95\x62\x84\x86\x83\xc3\xc2\x81\x96\xaa\x4b\x13\xba\x5e\x4a\xaa\x96\xa2\xf0\x54\x05\x03\x35\xf0\x9e\x71\x56\xd6\xa5\x91\x39\xca\xc8\x6d\xb6\x0a\xcc\x61\x52\x2d\x5a\xd5\x1a\x81\x18\x53\xf6\xd6\x78\x28\x51\x24\xcd\x91\xbb\x39\x62\x58\xd0\x7d\x49\x56\xfe\xa6\xbe\xaa\xb3\x8c\xd2\x9c\xe6\x03\xbf\x26\xfc\x7e\xda\xac\x85\x27\x5f\xdb\x20\x95\x29\x78\x15\x62\x61\x84\xbc\x88\xe6\x42\x96\x44\x23\x8f\xdf\xff\xce\x83\x43\x10\xf6\xed\x51\x70\x6f\xd1\x31\x6f\xc1\x66\x5c\x98\x2f\x2f\xc0\x8f\x17\x6e\x3f\x86\xf9\xef\x76\x63\xdb\xc2\x74\xdc\x2e\x5c\x5b\x18\xc7\x47\xc0\xb4\xed\xc4\xb3\xf5\x91\x5f\x61\x96\x6e\x18\x96\x2d\x12\xe2\x35\x18\xc3\xf6\x38\xf8\xb5\xdd\xd8\x35\x94\x2e\x21\xc6\xc5\x10\xb7\x16\x8e\x3c\x7b\x16\xa6\xc5\x63\xa0\xcd\xb6\x91\x66\x6e\xb1\xc2\xbc\xd8\x2d\xca\x2c\x1e\x4a\x2c\x12\x42\x2c\x06\x3a\x2c\x18\x19\x16\x8e\x0a\x8b\x85\x08\x8b\x81\x06\xdb\xea\x02\x1a\xe1\x04\x41\xd3\xb8\x31\x0a\xbe\x3a\x96\xf7\x38\x0a\xfa\xeb\x71\x97\x2b\x06\xea\x2b\xc2\x7a\x85\xa1\xbd\x1e\x07\xe9\x15\x13\xe5\x15\x63\x89\x82\x62\x74\x8f\x83\xec\xda\x89\xea\x02\xef\xfc\x77\xd8\x74\x77\x4d\xfb\x91\xb5\x00\xa6\x1b\x68\xae\x7e\x54\x2d\x80\x6b\x8b\xe4\x8a\x1b\x51\x0b\x8c\xa6\xc5\x8a\xa4\x45\x8a\xa2\x3d\x12\xf6\x2a\x14\x77\xb5\x1b\x73\x65\x6c\x90\x80\x03\xb1\x85\xb7\xea\x10\x53\x01\x5c\xfb\x3e\x89\x30\xb4\x54\xe0\x86\x32\xce\x34\x23\xc5\x5b\x5a\x90\xf5\x15\xcd\x04\xcf\x3d\xad\x89\x8d\x5e\xd5\x0e\x2d\x30\x07\x65\x99\x7a\xce\xcf\x7a\x82\x86\xb5\x2e\x96\x44\x81\x7f\xec\x12\xba\xc2\x29\x4d\x78\xd4\x19\xa6\x40\x30\xf8\x68\xd6\xc3\x33\x7c\x09\xcf\x2e\x84\x09\xcf\xc2\xe5\x64\x4b\x7e\xc4\x3b\x5e\x7f\x16\xb7\x20\xe6\x9a\x72\x38\x64\xbc\x39\x61\x47\xbe\xde\xa7\xd6\xd9\xd4\xf9\x33\x5b\xa7\xa1\x3f\xcf\x57\x2f\x9b\x81\xb5\x2e\xc7\x20\xc3\xec\x73\x76\x39\xa2\x33\x56\xa9\xe7\xe9\xd1\x76\x83\x7b\x2c\x97\xb6\x63\x3f\xaf\x0b\x2b\xcc\x7c\xfd\x37\xe8\x0c\x77\x0e\xf2\xa1\x4f\xdb\xf3\x58\x00\xbc\x77\x66\xce\x2b\x9c\x79\x2b\x0d\x09\xcf\xc1\x95\x3b\xf3\xe6\xdc\x3f\xf0\x9f\xf5\xd1\x0d\x44\x11\x3f\x16\x82\xf8\x4e\xf4\xb0\xc5\x00\x7b\x72\xdd\x42\x0e\x77\xf8\x5f\x5f\x8e\x43\xd4\x70\x1f\xfb\x1b\x30\xc6\xae\x2b\xb3\x3f\xee\x37\xc5\x08\xfc\xfe\xf6\x4e\x7c\x2f\x86\x0b\x02\x4c\xe2\x0d\x6c\x6f\xac\x34\xf8\x61\x0a\x7c\x28\x46\xfc\xd9\xbc\xf6\x1b\x34\x6e\xa8\x6f\x2c\xbd\xf6\xd3\x6b\xff\x01\x7a\x84\xd7\xbe\x66\x25\x15\xb5\x7e\xb6\x0f\xce\xdb\x25\xcb\x96\x7d\x5b\x90\x95\xde\xaa\x5a\xd4\x7a\xc3\x5e\x73\x43\x8c\x08\x45\x48\xaf\xce\x0d\xf2\x8b\x69\xec\x70\xa8\x86\x57\xbf\x6d\x11\xb2\x40\x14\x10\x78\x7b\x71\xf5\xf3\xbb\xd3\x7f\x3f\x7b\x37\x85\x33\x92\x2d\x83\x58\x33\x0e\x04\x35\x1b\x8a\xb0\x25\x59\x51\x20\x50\x73\xf6\xb7\x9a\xfa\xea\x85\xc3\x76\x7c\x47\x51\x30\xdd\x01\x12\xc8\xe8\x24\x0f\xd9\x30\xd8\xc4\x77\x4c\x69\xb3\x89\xc8\xcb\xd5\x19\x13\x5e\xfe\xc0\xb9\x14\xe5\xa6\x6a\x3b\x33\xcc\xac\xe9\xed\x69\xcd\x2d\xa9\xa4\xb0\x60\x2b\x87\x7c\xb6\x18\x50\x20\x79\x40\x55\x39\x23\x05\xcc\xc5\x31\x8f\x03\x32\x43\x40\xe1\x92\x02\xa7\xda\x5c\xfa\xd6\x95\xe9\x87\xae\xec\x15\xff\x86\x5a\x51\x75\x0c\xb3\x1a\xc1\xa1\x95\x64\x25\x91\xcc\x0b\x82\xd1\x1b\x30\x29\xa6\x70\x21\x9a\xe7\xd1\x1a\x97\xd6\xc7\xdf\x64\xac\x19\x5c\xda\xb7\x1f\xce\xae\xe0\xe2\xc3\x35\x54\x12\xeb\x04\xfb\x22\x2b\x91\x23\x1e\x81\x19\x35\xa3\xb2\xc7\x28\x9f\xc2\x29\x5f\xfb\xee\xbd\x55\x32\x4c\x81\x79\x0f\x51\x6e\xd8\xba\xf0\x54\xee\xed\x7c\x7a\xf1\x72\x8a\xff\x7b\x61\xce\x90\x34\xa6\x5c\x0b\xd7\x0d\x11\x34\x4d\xd2\x88\x35\x0f\xd9\xac\xa0\xdd\x7d\x70\x27\xcb\xc7\x5a\x8a\x26\x5f\xfc\x50\x19\xde\x68\x8c\x0d\x88\xbd\x5b\xd7\x4b\x73\x46\x24\xad\x24\x55\x94\x7b\xbe\x59\x48\x7b\x51\xf1\xc4\xa1\x80\x37\x12\xa6\x08\x4c\x6c\x0b\x7c\xed\x86\xbc\x75\x27\xdd\xc8\x2f\xfd\x2e\x4a\xe8\x83\x77\xf0\xf9\xbe\x66\xf9\xce\xe7\xd7\x3c\x2c\x63\xb7\xd5\x47\xcd\xc5\xaf\x44\x7e\xa0\xe0\xdc\x1f\xf7\xe4\x6e\xfd\x14\xae\x97\x4c\x75\x2f\x1b\x63\x2b\x32\xff\x72\x4f\x78\x16\x6d\x60\xf9\x18\x5e\xc2\x9f\xe0\x13\xfc\x09\x1f\x5f\x7f\xf4\x7d\x23\xc5\x78\xe0\x84\xba\xf6\xac\x1f\xe4\xfc\x32\xca\x89\xf8\x61\x49\x34\xf2\x83\xf3\xcb\x10\x70\xe3\x8c\xf1\x1c\x8f\x02\xfd\xa4\xa9\xe4\xa4\x68\x9e\xe6\x61\x2b\x1d\xf0\x04\x34\x93\x7a\xf6\x17\xc7\x56\xb0\x38\x9f\x7b\x73\x6c\xad\xf4\x63\xd0\x83\xab\xe3\xcd\x11\xaf\xdc\xce\xab\xe3\xcd\xd2\x5e\x39\x38\x9f\xa3\xaf\xed\xc2\x69\x0a\xa6\x7a\xa3\xf7\x5f\xd2\x76\xd6\x25\xd1\xd9\x72\xa8\xd6\xfc\x5d\x21\xef\xcd\x95\xe8\x4a\xef\x43\x2e\xd0\xb7\x1c\x54\x34\xd8\x0c\xf5\xf3\x16\x3c\x21\x90\xbb\xc1\x7d\x3a\x9f\x6f\x9e\x5c\xef\x55\xbd\xcb\x0d\x16\x54\x91\xd8\x3d\x46\x7b\x8d\x35\x2a\x91\xdb\x97\xaf\x37\x4f\xb3\x78\x79\xcf\x3e\x1a\x3c\x80\xfd\x35\x67\xff\xe1\xec\x2a\x3a\x85\x26\x0f\x5a\xd1\x6d\x34\x43\x46\xb8\x4d\xba\x9e\x53\x29\x43\x8e\xbe\x80\xd9\x1a\x91\x6b\x2c\xa3\x81\x97\x20\x40\x27\x54\x52\x68\x91\x09\xef\xa2\x1e\x43\x70\x9f\x63\x86\xcb\x1d\x12\xbe\xea\x22\x9a\xdf\xbd\xbd\x3c\x86\xeb\x37\x97\xc7\x20\x24\x5c\xbd\x09\xc1\xd7\xf4\x3d\x77\x2f\xae\xdf\x5c\xbe\x78\xb2\x45\x87\xe6\x5d\xf8\xda\xab\x4c\xd0\xc0\x8d\x6b\x9e\x9c\x93\x92\x54\x93\x1b\xba\xf6\xb0\xaa\x43\x6d\xfa\x49\x7b\x82\x22\x4c\xc3\x2e\x6c\x49\xaa\x91\xbc\x24\x25\x39\x7b\xa6\x95\x1b\xdc\x0d\xef\xc6\xb8\x59\xc2\xc1\x83\x27\xca\x9f\x52\xac\x68\x6e\x1f\xef\xcd\x67\x50\x9e\x57\x82\xf9\xbd\x58\x53\x25\x88\x87\x29\x55\x82\xd8\x8f\x52\x25\x88\x21\xa5\x4a\x10\x01\x3c\x53\x25\x88\x54\x09\xc2\x52\xaa\x04\x91\x2a\x41\x78\x52\xaa\x04\xf1\xf0\xe0\x52\x25\x88\xcf\x16\xdb\x9a\x2a\x41\x3c\x4c\x09\xe5\x99\x2a\x41\xa4\x4a\x10\x5b\x94\x2a\x41\x3c\xb5\x69\x91\x2a\x41\xa4\x4a\x10\x0d\xa5\x4a\x10\x23\x28\x55\x82\x18\x47\xa9\x12\xc4\x83\xf4\xcc\x72\x43\x52\x25\x88\x94\x1b\xb2\x2f\x9f\xe7\x97\x1b\x02\xa9\x12\x84\x1f\xa5\x4a\x10\xe3\x29\x55\x82\x18\x47\xa9\x12\xc4\x78\x9e\xa9\x12\x44\x47\xa9\x12\x44\xaa\x04\xf1\x99\x1e\xdd\x54\x09\x22\x55\x82\xd8\x4d\x29\x46\x90\x2a\x41\x8c\xa3\x54\x09\xc2\x9f\x69\x7a\xed\xfb\xf3\x79\x7e\xaf\xfd\x54\x09\x22\x55\x82\x78\x90\x42\x4c\x37\x49\x95\xa8\x65\xe6\xa3\x22\x87\xe7\xea\x8d\x28\xab\x5a\x53\xf8\xd8\x30\x6c\xf5\xbe\xc7\x9c\x66\x6b\x9b\x70\xd5\x93\x8e\x4f\x01\x9b\xce\x04\x9f\xb3\x45\x2d\x31\xf9\xfe\xa4\x24\x9c\x2c\xe8\x24\xb3\x13\x9d\xb4\x2b\x37\x69\x47\x79\xf2\x59\x41\xa7\x0b\x56\x32\x9f\x0a\x12\xb0\xb5\xf7\xef\x90\x53\x17\x1f\x0d\x80\xb7\x94\xe4\x13\x3e\x88\x48\x29\x6a\xae\x6d\x9e\x00\xae\xb7\x27\xcf\x76\x97\x6c\x9c\xdb\x3c\x09\xbb\x43\x10\x00\x11\x78\x06\x47\x07\x62\x18\xe7\x5d\x2d\x8d\xcb\x60\x6b\xb9\x22\x5a\x53\xc9\x5f\xc3\x7f\x1c\xfe\xf5\xcb\x5f\x26\x47\x5f\x1d\x1e\xfe\xf8\x72\xf2\x6f\x3f\x7d\x79\xf8\xd7\x29\xfe\xe3\x9f\x8f\xbe\x3a\xfa\xa5\xf9\xe2\xcb\xa3\xa3\xc3\xc3\x1f\xbf\x7d\xff\xcd\xf5\xe5\xd9\x4f\xec\xe8\x97\x1f\x79\x5d\xde\xd8\xaf\x7e\x39\xfc\x91\x9e\xfd\xb4\x27\x93\xa3\xa3\xaf\xbe\xf0\x7e\x1c\x06\x98\x1f\x71\x8c\x8f\x28\xa6\xc7\x23\x18\x1e\x0e\x5d\x12\x45\x3c\x7c\x74\xbc\xe2\x08\x08\xe7\x31\x89\x2f\x20\x1a\x7d\x85\x19\xc4\xcd\x98\xfd\x9d\x90\xa2\x64\x5a\xd3\x1c\x5d\x46\xbd\xf2\x22\xbe\x38\x70\xa6\x07\xcd\xb8\x9d\xc8\xc5\x04\x23\x6f\x08\x34\x53\x7d\x5c\x75\x2f\x53\x56\xe8\x25\x95\xb7\xcc\x3b\x1e\x64\x1e\x48\xbc\xf3\x66\xa0\x10\x9c\xe4\x74\xce\xb8\xb7\x83\x04\x8d\xb8\xd1\xf6\x5b\x12\xc3\x49\x0c\x8f\xe1\xf2\x9c\xc4\xb0\xa2\x59\x2d\x99\x5e\xbf\x11\x5c\xd3\x4f\x1e\x0e\x91\xa1\x14\xbe\x72\xec\x40\xe0\x77\x7c\xf3\x9c\x2a\x91\x37\x59\x6d\xb2\xe6\x98\xba\x1e\x68\x52\xed\x73\x8f\x2b\x51\xb0\x6c\x7d\xd2\x2c\x09\x5e\x58\xfa\x49\x9f\x3c\xda\x1b\x40\x13\x75\xd3\x89\x0f\x3a\x31\x2f\xbf\x4e\x4a\x6c\x8d\xe3\xb3\x32\xfc\xd1\x12\xbe\x94\x6c\xc5\x0a\xba\xa0\x67\x2a\x23\x05\xca\xc7\x18\xba\xfe\xf4\x0e\xde\xfe\xf1\x21\x2d\x45\xa1\xe0\x76\x49\x8d\x4e\x02\x62\xe6\x8e\xae\xb7\x8c\xf8\x32\x5d\x10\xc6\xa1\x34\xc7\xa0\x6a\x06\x6a\x6e\x83\xd1\x58\xde\x0a\xbf\x22\x92\x72\xdd\x0c\xce\x15\x18\x9a\x09\x51\xb8\x14\x3b\x6f\xcc\x75\xbb\x02\x2e\x97\x98\x8b\x9f\x39\xbd\xfd\xd9\x8c\xdc\x77\xac\xf3\x82\x2c\xda\x9a\x65\x8a\xea\x06\xec\x15\x92\x91\x0d\xf6\x54\xda\xc9\x47\x3e\x04\x98\x53\x55\x53\x20\xc5\x2d\x59\xe3\x51\x88\x33\x5e\xa6\x5e\xc3\xab\x23\x14\x63\x44\x41\x3b\xde\x1c\x7e\xe7\x1b\x22\x5f\x12\x05\x6f\x4e\x2f\x7f\xbe\xfa\xcb\xd5\xcf\xa7\x6f\xdf\x9f\x5f\x84\x98\x13\xe6\xf4\x50\xaf\x43\x9e\x91\x8a\xcc\x58\xc1\xfc\xad\x88\x2d\xdc\x65\x9f\x65\x80\x51\x98\xe7\x27\xb9\x14\x95\xdd\x43\x59\x73\x2c\xeb\xd7\xd5\xbf\xf1\xf5\x24\xf7\xbd\x86\xbd\x0a\x81\xe6\x70\xfb\x3a\x23\xe7\x83\x29\xc3\x42\x12\x6e\xac\x79\xf4\x4c\x05\x44\xbb\x1d\x34\x47\xd6\x5c\xb3\xf2\xf3\x4d\xbe\x26\x79\xac\xc4\xeb\xd3\x3c\xa7\x79\x8c\xe3\xf5\x1c\x13\x0f\xde\x34\xd3\x0a\xc9\xb8\x81\xae\x6a\x22\x5c\x7e\xb8\x3a\xff\xdf\x71\x56\x0b\xdc\x8a\x85\x04\xb0\x22\xd4\x6c\x91\xa2\x8a\x74\x92\x3e\xba\xea\x1d\xe9\x2c\xdd\x47\xbf\xd2\xb3\xd4\x5a\x72\x31\x30\x53\x1f\x6b\xde\x93\xd5\xde\x05\x0c\xba\x31\x41\x29\x72\x3a\x85\x4b\x6b\x20\x51\x15\x85\x67\xaf\x6c\x1c\x91\x14\x0c\x63\xae\x19\x29\xbc\x4d\x4d\xfa\xb7\x9a\xad\x48\x41\x6d\x82\x1f\x96\x70\xe8\xd7\x0f\x8c\xa0\x9b\xe7\xa4\x50\x41\x4a\xcf\xdf\x26\x32\xc6\xe9\x7b\x51\xf3\x18\xf8\xa4\x96\x17\xe4\x94\x0b\x1d\xe4\xcf\x34\xf3\xc2\x82\x8f\x52\x64\x60\x7d\x9a\x41\x50\xec\x06\x9b\xd7\x33\xaa\xd0\x80\xf3\x2f\x9a\x0c\xd6\x04\x77\xfb\x78\xd9\xce\xdd\xc6\x7e\x6b\x15\x34\xfd\x2d\x93\x28\x14\xca\x62\xe6\x2f\x29\xc9\xb1\x92\x4f\x45\xf4\xd2\xe2\xf4\x4a\xa2\x6e\xbc\x7d\x8f\xc8\xc6\xbd\xe9\x9c\x97\xd8\x16\xe0\x69\x17\xe3\xda\x5f\xf8\xcd\x29\xd1\xb5\xa4\xf6\x55\x66\x93\x01\x29\x27\xb3\xc2\x17\x59\x1d\x28\x48\xcd\xda\x7d\xe0\xc5\xfa\xa3\x10\xfa\xeb\xb6\xda\x4a\x84\x4b\xf3\x83\x7b\xc1\x0f\x03\xbb\x01\x0f\x2d\x84\xc8\xe5\x13\xdc\x68\x14\x56\xe1\xc5\x61\xdc\x19\x37\xc7\xfd\x09\x45\x95\xac\xf9\xa9\xfa\x46\x8a\xda\xd3\x32\xda\x7a\xbc\x7d\x73\xfe\x16\x25\x7a\xcd\x03\x1e\x2f\x94\x6b\xb9\xc6\x4a\x68\x31\xda\x3e\x40\xdf\x5f\xf0\x9d\x51\x89\x1b\xf7\xdf\x57\x50\xcd\xa1\xe6\x8a\xea\x29\xbc\x27\x6b\x20\x85\x12\x8d\x93\xc3\x5b\xe5\x5e\x22\x22\xbf\xef\x8a\x9d\x02\x56\x16\xf5\x7e\x5c\x32\x0e\x33\xa1\x97\xb0\xc1\x36\xa0\x94\xe8\xf6\x18\xb1\x42\x54\x10\x90\xbe\xeb\xcc\xc1\xf8\xe6\x50\x7d\x25\x3e\xb9\xa1\x0a\x2a\x49\x33\x9a\x53\x9e\x05\xdd\xaf\x48\x88\x99\x3f\xfe\x8b\xef\x0d\xbd\x10\xdc\x08\xc9\x08\x77\xf4\x9c\xe7\x2c\x23\xda\x7a\x21\x75\x14\x07\x03\x62\xf5\x9c\x67\x8b\x60\xf1\x20\x23\x22\x3d\xd9\xd6\x8a\x4a\x8c\x8a\x6a\x59\x53\x7b\xb0\xbe\xad\x67\xb4\xa0\xda\xb7\xd8\x22\x34\x15\xa0\x89\xb6\x95\xcd\x58\x49\x16\x14\x88\x6e\xc4\x80\xbf\x8f\x89\x72\x65\xd4\x29\xae\x24\xd3\x90\x0b\xda\x96\xe4\xf2\x75\x76\x28\xf8\xee\xfc\x2d\xbc\x84\x43\xb3\x86\x47\x68\x4f\xcc\x09\x2b\xfc\x6b\x73\x60\xd6\xc0\x86\xfd\xc3\xe6\xcd\x70\x7d\xb5\xd7\xb9\x93\x7d\x20\xa4\x55\x5f\xc7\xc0\x05\xa8\x3a\x5b\x36\x6b\xed\xef\x83\x6d\xdc\xc5\x2e\x03\x08\x71\x34\x4e\xc0\x7a\x72\x6c\xc5\xf2\x5d\x02\xd6\x77\x6d\x2d\xd3\x5d\x02\xd6\x3b\x3e\x99\xdf\x25\x60\x83\x10\x89\xcf\x5c\xc0\x06\x1a\x30\xdf\x29\x2a\x23\xd9\x2f\xdf\x3d\x73\xfb\xa5\xff\xc4\x35\xb2\xb2\xdb\x59\x7f\x03\xc1\x0a\xc4\x92\x6a\x92\x13\x4d\x9c\x5d\x13\x5a\x43\x74\xdb\x26\x4a\x97\xef\x79\x5e\xbe\xa7\xb4\x6e\x14\x7d\xc7\x78\xfd\xc9\x26\xac\xc4\x0a\x20\x5d\x9d\x21\x53\xc8\xc2\x96\x18\x8f\x2e\xa9\xaa\x82\x61\x45\xc9\x8d\x1c\x8a\x20\xc5\xd9\x6f\x14\x10\x2e\x1c\x9a\xe7\x0c\x2a\x4e\x52\x14\xc2\x18\x78\xe6\xcd\x4a\x78\x2e\x7c\x91\xec\x1b\x8b\x88\xce\x0e\x3a\x68\x93\x37\xc5\x4b\xee\x7b\xd7\x92\x68\xf8\x0c\x44\xc3\x93\x06\xfe\x0a\xba\xa2\xde\x7d\x0d\x36\xbb\x0f\x1a\x5e\xc0\x54\x73\xac\x03\xa2\x07\x38\x2c\x28\xc8\x8c\x16\xd6\xf2\xb7\x22\x22\x42\x3e\x5c\xb0\x70\x89\x12\x26\x93\xa2\x88\x55\xef\xe3\xa3\x28\x30\x19\x86\x44\x58\x76\x33\xac\x5f\xf1\xaa\x23\x8b\x38\xab\x7e\xbd\xae\xa2\xad\x3a\x86\x0c\x7e\xbd\xab\x5e\x7b\x3f\x1c\x60\x73\xd5\xcd\x1b\x24\xd6\xaa\xa3\x61\xff\xeb\x5c\x75\x45\xb3\x4c\x94\xd5\xa5\x14\x73\xe6\x2b\x67\xb6\x0c\x3e\xc7\xb4\x81\x9b\xfa\x1b\x7c\xb5\xa2\xbb\x12\xc2\x02\x0c\x91\xc1\xc0\x30\x78\x5a\x49\xb1\x62\xb9\xf7\x7b\x8d\x68\x6b\xd7\x34\x09\xd4\xff\x23\xd8\x7c\x44\x85\xb6\x61\x89\x06\x2e\xa5\x58\x51\x29\x9b\x4e\x02\x66\x94\x8e\xdd\x67\x5a\x3a\xd8\x1b\x6f\x10\xc1\x08\x12\x19\x29\xb0\xf1\x5f\xc8\x8d\x81\xcd\x5b\xb3\xc9\x36\x40\xb4\xb0\xd6\xa3\x8c\x80\x59\xc3\x0d\xc2\xf2\x2f\xa0\x69\xa8\x8d\xbc\x1c\x2e\x80\x8b\x9c\x3a\x34\x78\x00\x5b\x57\xfe\xd4\xc6\xa9\x9b\xd1\x86\xa7\xc1\x1b\x6b\xbb\xc1\x6f\xe7\x6e\xc4\x01\x1c\x71\xae\x5a\xb8\xfe\x08\xef\x83\x1b\x20\xda\xcd\xa7\x3c\x67\x7c\x81\x11\xe6\x63\x90\xb4\x20\x01\x05\x7a\xa0\xd3\x29\x37\xd6\x3d\x7f\x80\x12\xd3\x2d\x41\x00\xd7\x46\x64\x36\x9b\x83\xaf\x59\x26\x78\x48\x49\x01\x5c\x41\x0c\xde\x36\x2f\xce\x79\x28\x86\x88\x29\x78\xf1\xae\xb9\x44\xde\x9d\xc8\x9e\x9b\xe9\xf8\x02\xed\xbd\xf6\x46\x07\xac\x8f\x45\x6c\xdc\x30\x9e\xbb\xfc\xff\xfe\xa6\x86\xf0\x6d\xfa\x5f\x5b\xbf\xcc\x14\xbe\xc7\xe6\x9e\x61\xea\xca\x10\x91\xf4\x35\xfc\x95\x43\xbb\xa9\x30\xe9\x04\x5a\xd0\xcd\x43\x51\xb8\x25\xd0\x42\xc5\x43\xd7\xee\xc9\x0a\xb4\x8f\xd6\x09\x14\x56\x23\x0d\xac\xba\xdb\x05\x96\x09\x5b\x02\x84\x3a\x34\x57\xba\x1d\x7a\x98\x89\x9c\x4f\xe1\x3b\x8e\x32\xc7\xac\xef\x04\xb8\x88\xb0\x5d\xdd\xb2\x36\x27\xec\xc5\x53\xdd\xed\x5b\xc6\x73\x71\xab\xe2\xfa\x46\x7f\xb0\x4c\x1b\xc7\x93\x6f\xc5\x27\x45\xb5\x66\x7c\xa1\xfa\xfe\x51\x52\x14\x11\xf0\xf5\xbb\x1c\xa4\x61\xb7\xbb\xed\x8f\xbf\xed\xc0\x0b\x8c\x50\xda\x43\x68\xf1\x19\x8d\xc3\xd1\xd7\xdd\xba\x8d\xcf\xd8\xe5\x70\x0c\x80\xbf\x25\x87\xe3\x43\xb4\x28\x15\x79\x23\xcd\x24\x34\x23\xc5\x55\xe5\xdb\xee\x0f\x36\x2f\xde\x37\xef\xaf\x4e\x87\x8c\xc3\x2c\x8f\xdb\x25\x95\xf6\x6d\x65\x38\x03\xc9\x4b\xa6\x94\x7f\xc0\xdd\xd0\x2d\x9d\x2d\x85\xb8\x81\xc3\x26\x51\x71\xc1\xf4\xb2\x9e\x4d\x33\x51\xf6\x72\x16\x27\x8a\x2d\xd4\x89\x13\x4c\x13\xb3\x5e\xbe\xe9\x4b\x38\x13\x5e\x30\xee\xe0\x8d\x18\x66\xe0\x5a\x81\xf0\xef\x1c\x0e\xdd\x92\x64\xed\x6a\xe3\x89\x0f\x51\xb6\xd8\xe3\xd8\xe6\xe2\xec\xd8\xc8\x8b\xb0\x52\x5f\x58\x1c\xfe\x49\xad\xc7\xed\x43\x7f\x11\xd4\x7b\xe0\x81\x83\x1f\xb8\x5e\xb6\x67\xa2\xad\x4b\xe7\x42\xeb\xe6\x33\x02\x38\x6e\x9c\x14\xe7\x05\x7a\x5a\x0f\x7c\x83\x69\x88\xb8\x13\x88\x6d\x70\x2c\xc3\x9e\xe5\x8d\x05\xd1\xa1\x24\x7a\x78\x87\x00\xd6\x9b\x48\x89\x16\xf3\x10\xc0\x73\x33\x59\x2f\x0a\x62\x02\x1e\x11\x35\x01\x7b\x23\x27\x02\x3e\x60\x68\xb0\x44\xb2\x02\xe0\xee\x28\x69\xa0\x40\x7f\x34\xc3\x05\xa2\x19\x2f\x10\x76\xf1\x5d\x65\xdf\x28\xdd\xaf\xaf\x7a\xbc\x82\x5e\xf2\x0d\x3e\xd4\xec\xa8\xad\xef\xde\x56\x4d\x2e\xd6\x4d\x8d\x7a\xf6\xdf\x7e\x67\xdd\x1c\xc1\xce\xc6\xe7\xc2\x96\x81\xe9\x15\x7d\xf7\xe0\xe9\xda\xdf\xe6\x60\x1e\xac\x45\xe3\xc4\x2f\xab\xc2\x58\x2e\x83\xd1\x7b\x8e\x18\x39\xf6\x1a\x6c\x1f\xb7\xcb\x13\xd2\x07\xdc\x95\xcd\x3f\x86\xff\xaa\x95\x06\xd2\x66\xdf\x37\xb5\x9f\x71\x27\x3d\x98\x37\x65\xa9\x31\x95\x24\x23\xbc\x6d\xfd\xa4\x45\x13\x83\xf0\xe0\x9a\xb3\xf9\x9c\x36\xf5\x07\x66\x14\x2a\x22\x49\x49\x35\x66\x86\xf9\xc2\x89\x67\x74\xc1\x6c\x7a\xb6\x98\x03\x31\x0b\x7a\x70\xa0\xba\x82\xc2\x3e\xf2\x03\x93\xbe\x99\x86\x92\x2d\x96\x1a\x2f\x39\x10\x28\x04\x5f\x60\xd9\x48\x3f\x34\x6d\x21\x48\x0e\x28\xeb\x85\x84\x5b\x22\x4b\x20\x90\x91\x6c\x89\x30\x65\x2f\xf0\x62\x5e\x4b\xec\xdc\xad\x29\xc9\xd7\x13\xa5\x89\x36\x6f\x5d\x6a\x4b\x08\xd9\x9d\xf3\xe0\x9a\x6d\x95\x2f\xb4\x67\x00\x83\x93\x33\xaa\x7d\xfc\xc8\x4d\xe6\x90\x4b\x17\x6a\xec\xe1\xbe\xb0\x09\xe0\x3a\x2f\xc8\xe2\xb9\xd5\xcb\x4c\x8d\xe6\x1d\xa5\x46\xf3\xfb\x52\x6a\x34\xbf\x37\xa5\x46\xf3\xa9\xd1\x7c\x6a\x34\x9f\x1a\xcd\xa7\x46\xf3\x1b\x94\x1a\xcd\xa7\x46\xf3\xf7\x50\x6a\x34\xff\x30\xc3\xa7\x46\x8b\xfd\x3a\x9a\xc8\xa4\x46\xf3\xa9\xd1\xfc\x80\x52\xa3\xf9\xa7\x36\x2d\x52\xa3\xf9\xd4\x68\xbe\xa1\xd4\x68\x7e\x04\xa5\x46\xf3\xe3\x28\x35\x9a\x7f\x90\x9e\x59\xeb\xb9\xd4\x68\x3e\xb5\x9e\xdb\x97\xcf\xf3\x6b\x3d\x07\xa9\xd1\xbc\x1f\xa5\x46\xf3\xe3\x29\x35\x9a\x1f\x47\xa9\xd1\xfc\x78\x9e\xa9\xd1\x7c\x47\xa9\xd1\x7c\x6a\x34\xff\x99\x1e\xdd\xd4\x68\x3e\x35\x9a\xdf\x4d\x29\x46\x90\x1a\xcd\x8f\xa3\xd4\x68\xde\x9f\x69\x7a\xed\xfb\xf3\x79\x7e\xaf\xfd\xd4\x68\x3e\x35\x9a\x7f\x90\x42\x4c\x37\xa5\x73\xe6\xd1\x61\xf0\x71\x5a\x08\x38\xb4\x6c\xaf\x2c\xe3\xac\x9e\xcf\xa9\x44\xb3\x1b\x47\xea\xe5\xb8\xd9\x9d\xa4\x3f\x6d\xd2\x14\x7c\x78\x5a\xc3\x4f\x51\x7d\x8c\xdd\x0e\x94\x4d\x9c\xc6\x21\xfa\x01\x1e\x87\x43\x74\xd5\x29\xb1\xaf\x9e\xa4\xca\xef\x7d\xcd\x38\x9c\x7d\xf8\x7a\x1a\xa1\x7b\x42\x48\xe1\x61\x5c\x93\x0f\x3c\x0b\x4d\xd6\xe9\x0e\x59\x58\x11\xd0\xa6\x00\xa8\x3b\x6b\x59\x21\x94\xc5\xd6\xda\xcd\xcb\x96\x84\x73\xea\x93\xa0\x62\x05\x22\xd3\xe8\x76\x9b\x51\xca\x41\x54\x94\x5b\xfc\x3f\x01\xc5\xf8\xc2\xab\xd8\x02\xd1\x9a\x64\xcb\xa9\x99\x3f\x6f\x0e\x98\x6b\xbc\xd8\x8e\xda\xe7\xaa\x69\x49\x49\x69\x0f\x9a\xa4\x25\x61\x76\xb8\x40\x32\x29\x94\x82\xb2\x2e\x34\xab\x02\x06\x0c\x8a\x62\x9a\xb5\xb2\x39\xff\xcd\x21\x00\xaf\xeb\xa6\xa8\x05\x7b\x62\x99\xfb\x76\x0d\xdc\xf2\x7a\x99\x60\xdd\x55\xc3\x07\xfc\x31\xf6\xdc\x2e\x2b\xbd\xb6\x09\x51\x9e\x17\x78\xce\xa4\xd2\x90\x15\x0c\x5f\x70\xb8\x0e\x14\x35\x19\x8e\xd9\x07\x01\x4c\x78\x6e\x38\x73\xb7\x47\xca\x6d\x12\xcf\xd1\x00\xad\xbc\x0c\x7e\x4c\xcb\x69\xf2\xbe\x68\x33\xdc\x9c\x29\xf7\xa0\x50\x5e\x03\x6d\x1a\x0f\xd9\xcb\xd5\xec\x11\x5e\xaf\xdc\xb3\x83\x46\x33\x67\xc7\xa4\x37\xe4\x80\xfb\x8f\xbd\x82\x9c\x57\xbc\x55\x01\xb6\xcb\x4f\x23\x20\xbd\xe6\xbf\x9d\x8c\xdb\xf4\x8d\x40\x05\xe1\xc1\xb2\xa7\x52\xf0\x9a\x72\xba\x32\xda\x8b\x66\x94\xad\x8c\x11\xee\xc1\x72\xa7\x3e\xf8\xbb\xaa\x03\x4d\x65\xc9\x38\x26\x6d\xbd\xa7\x4a\x91\x05\xbd\xf4\x8a\x7e\xdf\xf5\xb6\xc6\x00\x78\x73\x18\xbd\xaf\x71\x61\x4b\x8a\xb5\xc6\x6d\x97\x82\x70\xe0\x95\x1e\xda\x4d\x1a\x4a\x3b\xeb\xb6\x2e\xca\xad\x64\x5a\x53\x2f\xc3\x46\xd9\xc6\x64\x08\x1c\xda\x2c\x5a\xe9\x37\xd0\x5e\x7a\x05\xbc\x6f\x06\x6a\x07\x68\x3e\xce\x18\xa9\xdc\xaf\x1c\xa3\x45\x39\xcd\x24\xa3\x73\x98\x33\xcc\x62\x40\xbc\xfd\xb1\x6d\x84\x41\x7c\x46\x4b\x38\x10\xa5\xa8\xc4\x75\x75\x78\xeb\x66\x7d\xa7\xf0\x83\x77\x9e\xa9\x96\x35\xcf\x48\xd7\x56\xd6\x16\x91\x62\x73\x58\x20\xb2\xdf\x47\xea\x60\x1b\xeb\x7f\x79\xf9\x6f\x7f\x84\xd9\xda\x3c\x34\x10\xcb\xa2\x85\x26\x45\x33\x60\x0f\xa6\x05\xe5\x0b\x73\xda\xad\xca\x1e\x96\x14\x0a\x48\xb3\x2d\x58\xc9\xb4\xcd\x7d\x7d\xf5\xbb\x9b\xd9\xe0\x4d\xe6\xc1\xf1\x24\xa7\xab\x93\xde\x0d\x98\x14\x62\x31\x85\x37\x4d\xe2\xa5\x07\xc7\x26\x55\xd3\x37\x51\xd1\xeb\x99\xbf\x43\x70\x61\xf3\xfb\x40\xd1\xd5\xf4\x18\x82\xa5\xb8\xb5\x8d\x07\xbb\xcf\xf1\x58\x9a\x46\xba\x74\x79\x87\x95\xa8\xea\xc2\x66\xb6\x7e\xed\x57\xee\x0b\x25\x55\xad\xe8\x66\xed\x99\x3b\x64\xb9\x9f\x70\x68\x86\xb9\xf1\x10\xb2\x42\x22\x60\x21\x84\x2b\xdc\xe0\xa2\x4b\x6d\x93\xa0\x5a\x7a\x65\x3e\x7e\x4d\x8a\x62\x46\xb2\x9b\x6b\xf1\x4e\x2c\xd4\x07\x7e\x26\xa5\x90\x83\x15\xf2\xb9\xc7\xc4\x58\x8d\xcb\x9a\xdf\x60\x7f\xeb\x76\xf2\x85\x58\x80\xa8\x75\x55\x7b\xbd\xfe\xe6\x9b\xc7\xa9\x5d\x13\xcf\xb2\x6f\xad\x89\xec\x8c\xd2\xde\x48\xe9\x27\xe6\x17\xfa\xb8\x65\x46\x80\x71\xa0\x66\x1d\xad\x54\xec\x66\xed\xf7\x58\xe8\x89\xaf\xdf\xbd\xfc\x97\x7f\xb5\x02\x17\x84\x84\x7f\x7d\x89\x49\x99\x5e\xe6\x2d\x9a\x02\x68\x7f\x31\x05\xaa\x24\x45\x41\x65\xa8\x60\x34\xd7\xb1\x27\x08\x5b\xb1\xf6\x77\x95\x6a\x3a\x54\x80\x3d\xa2\xf3\xe7\xfa\xfa\x2f\xe8\xf9\x61\x5a\xd1\x62\xee\x65\x95\x17\x4a\x74\xad\x41\x0f\xd0\x98\x3e\x70\xb6\x88\x79\x4d\xfa\x88\x80\xa7\x75\xa7\xac\x44\x51\x97\xf4\x2d\x5d\xb1\xcc\x27\xac\x35\xd8\xba\x01\x2f\xff\xcc\xe7\x82\x29\xec\xdd\x34\x2b\x44\x76\x03\xb9\x63\xd7\xc1\xda\x7d\xac\x90\x75\x68\x09\xf6\x90\x24\x04\xef\xe4\x83\x3b\x57\xb7\x4b\x1d\xf0\x72\xf0\x12\x28\x49\x55\xb5\x45\x3f\x24\xb9\x1d\x2c\xb6\x17\x4f\x23\x79\xb1\xce\x6a\x50\x9d\xfb\xc0\xe0\x70\x48\x68\x78\xe2\x66\xef\x69\x73\x78\xe7\x25\x84\x46\x95\xbb\x51\xfb\x06\xbe\x06\xc7\xac\x63\x17\x5a\xbb\xa0\x42\x1e\x36\x69\x3d\x52\x2b\xb6\x5e\x65\x24\x3b\xce\xf6\xd9\x6b\x0e\x74\x40\x55\x31\x2d\x7c\x83\x8e\xc1\x91\xbe\x90\x2c\x90\xc1\xce\xf1\x36\xa6\x5a\x12\xed\xe5\xac\xb0\xd4\x2f\xf2\x47\xa0\xa2\x52\x31\x65\x6c\xf4\xef\x51\x00\xbd\x29\x08\xf3\x0d\x9c\xb5\xc1\x93\x4a\xf8\x6e\x55\xc0\x72\x5b\x01\x8a\x7d\xbc\x43\x35\xdd\xa5\xc8\x1d\x3b\x54\x4c\xe8\x36\xf1\x8a\xa8\x6c\xb9\x59\x42\x4b\x52\x44\x33\xff\x9e\x52\xd5\x7d\xdf\xed\x54\xb8\xa6\x33\x5c\x5a\x55\x67\x39\x3b\x65\xe5\xc9\xf1\xf3\x55\x70\xb8\x16\x9f\x9b\x7e\x6b\x07\x1d\x45\x48\xa2\x62\x73\xb6\x4a\x88\x72\xeb\xde\xaa\x5d\xa4\x62\x49\x9d\x50\xf0\xe6\xda\xb9\x59\x9c\x27\x76\xea\xc0\xa2\xdc\xbb\xa9\x73\x3b\x54\x38\x78\x7d\xf0\x64\x4a\xce\x6e\xa2\x14\x15\x59\xa0\xef\x20\xca\x5e\x6e\x32\x0d\x40\x78\x59\xb7\x06\x55\xe8\x36\x43\xbe\xbe\x95\x10\x2d\x55\x6e\x54\x34\xef\x4a\xa0\x63\x63\x83\x80\xf4\xfb\xde\x91\x73\x0e\x13\x5b\xb8\xf1\x36\x20\x2f\x9a\x48\x51\xf3\xdc\x45\x83\x5b\x08\xc2\xfb\x8d\x85\xbd\xf0\xaf\x60\x86\x6e\x9e\xa6\xed\x8b\x79\xe2\x62\xa2\x24\x53\xbe\xc5\xf0\x1c\x4f\x0e\xaf\xa6\xaf\x5e\x7e\xfe\x36\x1b\xae\x49\x24\x9b\xed\xa2\xb5\xd9\xac\x96\x7b\xb2\xd5\x91\x94\xe4\x1f\x78\xe1\xe1\x09\xb2\x34\xcc\x37\x70\x21\x29\xc3\x74\x22\x78\x40\xad\x09\xd6\x34\xb6\x47\x56\xb7\x92\x69\x77\x83\x6e\x59\x40\xa2\xda\x21\x3a\x6d\x40\xc8\x7e\x09\xe2\xa3\xce\x97\x17\xf0\x24\xf1\xf5\x07\xb9\xbf\x0f\xec\xee\x0d\xa0\xea\xd9\xb3\xd3\xbb\x56\xc1\x5a\xa1\xba\x2b\x9e\xea\xbf\xde\x8e\xf3\xb6\x0a\xf6\xe6\xd8\xc7\x1e\xbe\x78\x01\x87\xf6\x13\x0e\x6c\x35\xbb\xa3\x27\xbb\x9e\x6e\x5b\xcf\x3e\x55\xde\xfd\x17\x07\x5b\x7b\xf6\xa9\x22\x3c\xa7\xb9\x7d\xf0\x07\x98\xd6\xd0\x14\x9d\xde\xb5\xc7\xe1\x6a\xf3\x40\x0d\xf7\xd8\x9b\x63\xdf\x3c\xfb\x77\xba\x24\x2b\x8a\x35\xff\x58\x41\x64\x80\x78\xd2\x02\xae\xec\xce\xc0\xac\xd6\x40\xf9\x8a\x49\xc1\x4b\x1a\x50\xd8\x7d\x45\x24\x23\xb3\x82\x82\xa4\x58\x38\x38\xa3\x0a\xbe\x38\xfc\xfe\xf4\x23\xc2\xac\xfd\xdb\x47\x10\x49\x81\x36\xbb\x5e\x2b\x4c\xcf\x8d\x74\x0b\x7b\xd3\x9e\x6e\x5c\x20\x7f\x11\xbd\x71\xf1\x9a\x75\x36\x37\xc0\x7f\x0d\x78\xde\xee\x97\x59\x8f\xb2\xd6\x35\x29\xb0\xec\x63\x56\xd4\x8a\xad\x9e\x42\xff\xba\x32\x9c\x6f\x99\xc7\xcd\xde\x28\x5f\xda\x5d\x9a\xad\xda\x9e\x9e\x25\xbc\xd1\xbc\x8c\xd7\x7d\xdd\x01\x2f\x0f\x54\xdb\xe3\xaa\xdf\x1a\xc8\x3b\x28\xe7\xca\x56\xcf\x68\xaf\xa5\x1e\x78\x2b\xad\xce\x66\xc7\x96\x05\x4f\x17\x9e\xcb\xb9\x7a\x83\xf3\x19\x73\x30\x86\x79\xfd\x83\x52\xc1\x6f\x2f\xae\x7a\xf5\xc7\x47\xcd\xc1\xba\x15\x45\x3e\x85\xcb\xae\x80\x79\xd7\x62\x00\xfb\xeb\x8c\x46\x9b\x18\x99\x4c\xe5\xc2\xc6\x69\xcd\x00\x17\x94\x53\x89\x0f\x30\x33\xd4\x66\x2f\xc7\xbf\x13\x67\x44\xd9\xb6\x92\x6f\x2f\xae\x2c\x42\x63\xcc\x8e\x79\xba\x7b\x7c\x7d\x26\xe6\x5d\x62\xab\xab\x8c\x76\xb6\x0c\xf6\xfa\xb4\x0d\xc2\x99\xc5\x43\x67\xb0\x65\x3b\xfa\xb0\x9e\x5f\x02\xc9\x73\x89\xf0\x45\xf7\x04\xec\xb5\x11\xf4\x43\x7f\xb9\x1d\x36\x3b\xd3\x9f\x71\xb7\xe5\xa3\x39\xa2\xa9\xd1\x6d\x30\xbc\xad\xab\x82\x59\xc8\x56\xef\x03\x46\xb3\x6d\x66\x2a\x69\x29\x56\xe3\xaf\xba\xbf\x23\xd6\xd3\x0d\xeb\xad\x79\x84\x5f\x9f\xbc\x7b\xce\x9c\xa4\x4a\x14\x3e\x07\xae\xe9\x76\x3c\x3c\x6b\x4e\x36\x18\xe3\x74\xfc\xaa\x34\x67\xad\xe9\x24\xdd\x89\x96\x8d\x73\x33\x9a\x75\xef\x9c\x51\xae\xa5\x11\xae\x81\x67\x06\xe0\xa3\x59\xb9\x1a\x01\x3a\xed\x80\xd9\x8a\x72\xa3\xc4\x3e\x78\x36\xf3\xc3\x41\xf5\x1a\x4b\xdb\x1c\x07\xdb\x1d\x9d\x12\xe9\x93\xa2\xd2\xae\xaa\xf7\xf2\xfd\xdd\xaf\xc7\x66\x08\xe8\xed\xc5\x95\xd5\xa9\x76\x59\x5d\xbb\x51\x1f\xdb\xb7\x7f\xe2\xdb\x5d\x6b\xf5\xa4\xe7\x3d\x7e\x92\xfe\x09\xfe\x9e\xb1\xc1\xea\x7e\x74\x71\x8e\x90\xea\x05\xde\x4f\xe4\x80\x4a\x73\xde\x9f\xac\x28\x91\xd9\x72\xfc\x9a\xdf\x23\x42\x2d\x4b\xc8\x05\x66\x3d\x8c\xd7\x89\x42\xa2\xcb\x7a\x82\xea\xbf\x10\xe2\xa6\xae\x86\x52\x75\x34\xcb\x46\xe3\x0f\x34\xb8\x1b\x66\x45\xf4\x72\xfc\x20\xef\x14\xc5\x3d\xd1\x3a\x9a\x69\x7f\x44\xff\x18\x3a\x3c\xe7\x6a\x3c\xfa\x78\xf8\x3a\xa0\xda\xbe\x09\x90\x4d\x57\xd1\x65\xac\xf8\x1a\x3c\xf9\xdf\x14\xb5\xd2\x54\x7e\xcd\xa4\xd2\x2f\x9a\x76\xd3\x78\x3b\xc7\x9d\x14\xf3\x3e\x3f\xe8\x33\xfb\x81\xe9\xe5\x9f\x85\xd2\x17\x54\x1f\x1c\x0f\x7f\x74\x30\xee\xe5\x78\xe0\x06\x7c\x00\x42\xc2\xc1\x85\xe0\xf4\x60\xba\xf1\x38\xb2\xea\x77\x14\x57\x86\xcf\x0d\xab\x5c\x76\xd9\x30\x6e\x6d\xcd\x52\x8f\x94\x32\x05\xcd\x74\xc3\xa4\x77\x5b\xae\x05\x2c\xc9\xca\x3e\xeb\x7c\x3a\xfe\x2a\xaa\x81\x60\x8f\x27\xe4\xbc\xb4\x6b\x7b\x2b\xe4\x8d\x6d\xd8\x80\xcc\x47\xc6\xbe\xec\x93\x70\xdd\x3f\x56\xbd\xae\x0d\x5a\xdc\xbd\xa5\xe3\x5f\x68\x23\xef\x8b\x6d\xc5\x74\x45\xe5\x8a\x65\xf4\x1d\xe3\x37\xa3\x2e\xea\x30\xd7\xe8\x6c\x8b\x97\x67\xeb\xb8\x5b\x87\x9c\x65\xdc\x26\x70\x1b\x93\x84\xcc\x44\xad\xf1\xed\x86\x20\x4a\x0f\xc7\x27\xd6\x7f\xf8\x2f\x7b\x6a\x10\xaf\x52\xd9\x16\x61\x3d\x47\x5d\xeb\x67\x1c\x09\x85\xc6\x90\x57\xe3\x3c\x54\x6b\xae\xc9\x27\xd4\x5d\x22\xbb\xa1\x12\x0a\xb3\x14\x53\x68\x53\xb1\xbc\xc5\x08\x02\x73\xc7\xe4\x76\xf8\x45\x4e\x68\xb5\xa4\x25\x95\xa4\x68\x7d\x67\xfe\x87\xe2\x9d\x53\xe3\x2d\xcf\x5e\x26\xce\xa8\x75\xb0\x7d\x63\x5c\xf7\x3c\x91\x4f\xe1\x2c\x94\x63\x49\xd6\xa8\x0e\x2d\x63\xc2\x81\x7e\x62\x0a\x01\x36\x95\xc8\x7b\x35\xdd\x46\x31\xad\x15\x95\x93\xb6\x02\xa0\xab\xb0\xa4\x9a\x54\x2e\xc8\xe9\xac\x5e\x2c\x18\x5f\x8c\xd3\x25\x68\xab\xa0\x45\xd4\xb5\x65\xeb\xfc\x4c\xd8\xa6\x2e\x93\x94\xe8\xb1\xb6\x1a\x5a\xe5\xc7\xe8\x01\x66\x7d\xde\xa5\xc8\x2d\xeb\xd9\xda\x7a\xf7\xc6\x32\x6e\xea\xe5\x98\x41\x4e\xe1\x9c\x83\x90\x39\x95\x58\x1e\x26\xcf\x71\xad\x9b\xdd\x1b\xc5\xb6\x73\x42\x1a\x4e\xc3\x1d\x3b\xf6\xca\x33\x31\x32\x40\x75\xa3\xe9\xa5\x89\xa9\x7a\x66\x1e\x32\xb5\x1c\xdb\xce\x73\x88\x0e\x20\x45\xb5\x24\x93\x82\xae\x68\x01\xae\xab\xd2\xe8\xd8\xef\x52\x70\x21\xed\x6e\x34\x1e\x22\x7c\xb3\x5a\xe1\x8d\x8b\x7d\xb6\x7d\x67\x47\x7d\x84\x6b\xa2\x37\x5e\xdf\x8c\x35\x08\x3d\x8c\xc1\xe1\xcb\x80\xef\x98\xeb\xf8\x7c\x98\x7e\x56\x32\xae\xa5\x93\x06\x24\x47\xab\x9e\x96\x95\x90\x44\xb2\xd1\x51\xb0\xed\x73\x89\x16\xe4\x50\x2c\x8c\x1d\x6b\xa6\xd9\x8a\x99\x77\xec\x0e\x39\xd2\xad\xc6\x48\xae\xbd\xa3\x8e\x36\x0d\x17\xd0\x9c\x77\x63\x01\xaa\x6c\x49\xf3\xba\x18\xff\xee\x5c\xd4\x44\x12\xae\x29\x55\xc7\x0d\xbc\x67\xed\xd2\xb4\xad\x70\x69\x93\xcc\xc7\x86\x84\x8c\x98\x43\x6e\xf4\x13\xd3\xd8\x3e\xd3\x7c\x07\x65\x98\x4d\x5e\xc7\x77\xcd\x48\xae\x42\x6e\x64\xbd\xf7\x85\x93\x77\x58\x27\x23\xb5\xc2\x6e\x08\x4e\x95\xd0\x4f\x19\x35\x66\x87\x56\xed\x22\x8f\x3d\x04\x36\xfb\x87\x09\x7e\xdc\x4a\x57\x77\x66\xe9\x8a\x65\x1e\xf1\x97\x5d\x0a\x14\x59\xba\x7d\xc2\xab\x30\x92\xe7\x6c\xed\x82\x6b\x45\xa7\x38\x36\x94\xc1\xf5\x92\x8e\xbd\x54\x6d\x79\x2d\xbc\x9c\x2b\x46\x1a\x96\xbb\x45\xf7\x48\xee\x3d\x41\xbf\x79\x62\x7d\x9d\x82\xfd\x19\x83\xe0\x99\x1b\x7a\xaf\x85\xea\x58\x8e\xa8\x46\xee\x6a\xa0\x1a\x2a\xfc\x37\x7a\xa8\x8e\xd3\xf4\xbe\x1e\x3a\x3f\x00\xb0\x07\x78\xd7\xdf\x0d\x48\xe4\x22\xd4\xb9\x7a\x70\x2a\x17\x75\x89\x79\xc1\xce\x55\xd4\xb5\xb9\xf7\x71\x09\x5e\x2f\x29\xe4\xf6\x59\x81\x71\x58\xf3\x80\x79\xf3\xfe\x6d\x83\x4d\xf4\xe0\xc8\x5c\xa1\x0f\x57\xb9\xc9\x35\x75\xce\xa7\xf0\xbd\x7b\x0b\xf9\x44\xb4\x77\xa2\x34\x06\x68\x0b\x0f\xae\xbb\xf0\x19\xc3\xf7\x9b\x67\x3c\x9f\x74\xf8\x92\xce\x06\x76\x5e\x6c\xaf\xf8\xbb\xed\x42\xe4\xd6\xa0\x49\x15\x61\xbc\x32\x2f\x58\x5f\x5f\x6e\x8b\x09\xe0\xd9\x92\xf0\x85\x95\x26\x34\x10\x05\xe3\xde\xaa\xae\xb1\x37\x55\x19\xa9\x1a\x9f\x0a\x81\x5c\xd4\x7e\xdb\xff\xc5\x17\xc7\xc0\xe8\x6b\xf8\xa2\x37\xb8\x29\x9c\x39\xee\xdd\xe1\xf0\x5d\x05\x5b\xef\x65\xd6\x1d\xa6\x63\x90\x74\x41\x64\x5e\xf8\xb5\xf6\x10\xf3\xd6\xe5\x80\xa8\xad\xe6\x30\xa0\x19\xa7\x40\xf8\x80\x3a\xb8\xd0\xbb\x30\x12\xbd\x32\x7b\x1e\x4c\xef\x29\xcc\xa7\x89\xba\x51\x27\xd6\xc1\x31\xc9\x89\x26\x13\x52\x59\xbf\x31\x13\xfc\xc4\x06\x74\x26\xae\xb5\xeb\x84\x38\xa1\x34\x69\x2f\xd2\xc9\x6f\x65\x8d\xdd\xd3\x27\xa4\xfd\x2d\xc6\x27\x64\x82\x8d\x40\x7d\xeb\x49\xfc\x9d\x53\x6f\x02\xa2\x25\xde\x3d\x93\x37\x5d\x60\x8d\x70\xb7\x73\x9f\xc2\x85\x57\xbe\x83\xeb\x8d\x9c\x77\xc9\xa8\xae\x21\x6b\x27\xff\x7d\x44\x7d\xa3\x31\xce\x2e\xae\x3f\xfe\xe5\xf2\xc3\xf9\xc5\x75\xa3\x38\x1a\x35\xe0\xc3\xf5\x2e\xc5\x11\x76\xd3\xef\x52\x1c\x9d\x1a\x08\x41\x31\x6d\x2a\x8e\xa1\x1a\xf0\xe1\xbc\xad\x38\x86\x6a\xc0\x67\x65\xb7\x15\xc7\x0e\x35\xe0\x69\x45\xf4\xd7\x77\xa7\x1a\xf0\x92\xce\x3d\xc5\xb1\x5b\x0d\x78\x70\xdd\x56\x1c\x43\x35\xe0\x75\xbf\xb6\x15\x47\x4f\x0d\x78\xaa\xfc\x6d\xc5\xd1\x57\x03\x1e\x4c\x77\x2b\x8e\xa4\x06\xf6\xf9\x50\x2f\x35\x40\xf9\x2a\x50\x05\xb4\x0e\xef\x5d\x51\x05\x9f\xc9\x0c\x5a\x5b\xf6\x8a\x62\xc7\x38\x54\x9f\xc7\x7e\x0e\x31\xfa\x7c\xf5\x3d\x91\x20\x69\x25\xa9\xc2\x77\x95\x67\x4e\xc8\xae\x0d\x02\xc7\xd4\xb7\x35\x3f\xe9\xe0\xc6\x9f\x5d\x4a\xed\x13\x25\xc5\x46\x4b\x40\x6b\x92\xc6\xec\x1b\x3b\x5e\xca\xc1\xb4\x6d\x72\x42\xe0\xcd\xcf\xe7\x6f\xcf\x2e\xae\xcf\xbf\x3e\x3f\xfb\xf8\x64\x59\x2f\x41\xed\x23\x87\xe6\x6a\x1c\x4b\xcd\xd2\xfd\xf6\x9a\x37\x5b\x5b\x41\x9d\xae\x98\xa8\x95\xc3\xa5\xe5\x51\xf7\x57\x6d\xc9\x56\x6f\x96\x58\x7d\x96\xaf\x9b\x28\x75\xdc\x61\x4e\x77\x7a\x2a\xbc\xf9\x46\x35\x54\x2d\xdd\x63\xae\x7a\xf3\x8c\xea\xed\xb0\x74\xb7\xcf\xc3\x7f\xe3\x63\x9b\xbc\x96\xee\x35\x7c\x43\x76\xfe\x0e\xf3\xd7\x9b\xe5\x3d\xde\x13\x6f\x9e\x8d\xf1\x3c\x4c\x9d\xf2\x6e\xbf\x12\x47\xec\x7e\x2d\x45\x19\x45\xf4\x5e\xd9\x40\x9b\x43\x97\x79\x2f\xd2\x2e\x23\xe6\x40\xd9\xb1\xfa\x9f\xbb\x9e\xdb\xca\xb9\x06\x9a\x46\x11\xde\x2c\x0d\x3f\xac\x91\x18\xa6\x36\x83\x1a\x77\xc7\xe8\x76\x6d\xd3\x6f\xde\x93\xea\x5b\xba\xfe\x48\x03\x3a\xb4\x6c\xa1\x0e\x0b\x9a\x19\x63\x16\x6e\x46\x87\xc7\x86\x84\x60\xeb\x37\xcd\x30\x43\x5a\xdb\x3c\xab\x5e\xe9\x61\xcb\x12\xab\xd1\xf9\x0d\xf5\xae\x05\xd0\xd0\x56\xe3\xee\xd0\x0d\x87\xe6\x95\x68\x4e\x50\xc8\x7e\x43\xcc\x26\xe7\xd1\x5b\xc2\x1f\x38\x03\x3f\x7c\xad\x3a\x63\x47\x5b\xb7\x4a\x30\xcb\xfd\xdb\xe6\x88\x95\xb1\x0d\xe9\xed\x89\xcb\x45\x9d\x18\xbb\x63\x62\xef\x98\x3a\xc1\x14\xad\x93\xdf\xe2\x7f\x82\x07\x65\x1b\xe7\x9d\xe6\xb9\xab\xae\x52\x2b\x3a\xaf\x7d\x2a\x5f\x0f\x09\x91\x4d\x6a\x0a\xa4\x62\xdf\x53\xa9\x98\xf0\x6a\xdf\x30\xa4\x1b\xc6\xf3\x63\xa8\x59\xfe\x95\x7f\x77\x35\x4b\xd1\xce\xaf\xf0\x42\x6b\x6e\xd3\x8e\xcc\xd3\xf0\xeb\xde\xb7\xb7\x5a\x51\x1f\xcc\xd5\x16\x94\x35\xf2\xa8\x41\x5c\x04\xb3\x74\x0f\xb6\x28\x9b\x1a\x52\x00\x04\x9a\x83\x1b\x53\x67\x1f\xb4\x4a\x3b\x68\x7e\x16\x2a\xd8\x76\xd1\xcb\x5f\x37\x2d\x33\xc3\x44\x40\x49\x35\xc9\x89\x26\x53\x23\x4d\x8e\x87\x5f\xaa\x8a\x64\x5e\xcd\x3c\x3a\xfa\xcf\x96\x61\x41\x66\xb4\x50\x3f\x1e\x1c\xfc\xe9\xdb\xb3\xbf\xfc\xaf\x83\x83\x9f\xfe\x33\x16\x67\x34\x43\xd1\x73\x1d\x91\x3d\xa2\x90\xb8\xc8\xe9\x05\xae\x0b\x7e\xe9\x1e\xec\xa7\x59\x26\x6a\xae\xf1\x07\x61\x9f\x81\xc5\xd9\xa7\x4b\xa1\xf4\xf9\xe5\x71\xf3\x65\x25\xf2\xf3\xcb\x28\x8c\x91\x93\x0a\x68\x45\xf9\xcc\x8c\x3b\xbc\x02\x9e\xe5\xfc\x1a\x8a\x65\xe2\x75\x7a\x2d\xaa\xe8\x77\x3c\xc3\x85\xb4\x95\x13\x2a\x5b\xd2\x92\x04\xbd\x1d\x1b\xfa\xba\x59\x7c\x60\x2a\xa0\xe9\xca\x90\x18\xc7\x02\xfb\x0a\xc4\x3c\x4a\x0f\x56\x4b\x5a\xc0\x8b\xd5\xab\x17\xcf\xc6\xc8\x6d\xcf\x6d\xd4\xa3\x82\x7b\x11\xc9\xd0\xb5\xca\xa5\x7d\x1e\x44\xd9\xd7\x65\x3f\xf9\xe0\xf4\xf2\x3c\x98\xe9\xca\xde\x8d\x67\xb1\xad\x0d\x14\xf4\xeb\x67\x6a\x2d\x74\x18\xed\x8d\x42\xd4\x61\x47\x50\xf0\x62\xdd\xf2\x56\xb6\x55\x44\xd8\x7d\x25\x3c\x47\xed\x40\x95\x56\x70\x68\x19\x4e\xb3\xaa\x0e\x53\x80\x8e\x4f\x49\x4b\x21\xd7\xc7\xcd\x97\x2d\x08\x78\xa2\xb4\x90\x64\x11\xa8\xbe\x9b\x61\xe3\x70\xbb\xaf\xec\x87\x46\x5b\x94\xed\x51\xfb\xfb\xb4\xc1\xe5\x86\x66\xb5\x34\xcf\xda\x62\xdd\xb5\x5d\xff\xf5\x58\x09\x9e\xc8\xf9\x3e\xc5\x32\x12\xda\x5b\x77\x11\xdd\xcd\xf1\x26\x38\x0c\xd5\x10\xba\x60\xda\xb5\x87\xb9\x17\x8e\x71\x48\xae\x54\xf8\x71\xfb\x3c\x0e\x77\x27\x08\x09\x94\xaf\x60\x45\xa4\x67\x9b\xe0\x8e\xa2\xe9\xf5\x9c\xad\x98\x12\x81\x22\xf5\xae\xaa\x53\x51\xf4\xba\xeb\x03\x64\xf3\x63\x63\x19\x95\xf4\x53\x85\xfd\x24\x5b\x3d\x10\xee\xd9\xc9\xfb\xd1\x9b\x57\xfe\x95\xef\x2c\x55\x44\x6b\x2a\xf9\x6b\xf8\x8f\xc3\xbf\x7e\xf9\xcb\xe4\xe8\xab\xc3\xc3\x1f\x5f\x4e\xfe\xed\xa7\x2f\x0f\xff\x3a\xc5\x7f\xfc\xf3\xd1\x57\x47\xbf\x34\x5f\x7c\x79\x74\x74\x78\xf8\xe3\xb7\xef\xbf\xb9\xbe\x3c\xfb\x89\x1d\xfd\xf2\x23\xaf\xcb\x1b\xfb\xd5\x2f\x87\x3f\xd2\xb3\x9f\xf6\x64\x72\x74\xf4\xd5\x17\x81\x03\x0f\x6c\xe7\x6e\x29\x56\x53\xf7\x21\xb7\x08\xd7\xe5\x51\x1a\xbc\x77\xd4\x1c\xc7\xb8\x72\xf6\x63\x04\x9d\x34\x1c\x5f\x67\x66\x3f\x0b\x41\xa6\x68\x26\xa9\x7e\xde\x71\x2a\x3b\xc6\x5e\x33\x8d\x80\x82\x9b\xd0\x94\x8d\xab\x48\x90\x8d\xf0\xac\x6c\x9e\x14\xf6\xba\x8f\x1a\x67\x88\x3d\x45\xf1\x5e\xb9\x73\x29\xca\xa6\x61\x01\x02\xbf\x56\xa4\x60\xa1\x5e\xec\xe6\x46\x9a\x99\x3f\x8b\xa7\x2e\xa4\x30\x5d\x0a\xd3\x8d\xa1\x14\xa6\x1b\x47\xfd\x30\xdd\x15\xde\xfd\x14\xa3\xdb\x45\x94\xaf\xfc\x80\x55\x3b\x91\xf7\x8d\x0f\xab\xd7\x3b\xd7\x63\x6e\x3b\xf1\xfb\xdb\x30\x7c\x0f\xce\x4e\xf9\x75\x68\xd6\x2e\xc7\xcb\xd7\xbd\x51\xee\x46\x28\xc3\x69\x51\x00\xe3\xbe\xca\x0b\x07\xd9\x55\x8d\xb3\xee\x24\x20\x0a\x4b\x24\xac\xfc\x40\xad\x4d\x11\x87\x7e\x3d\x69\x05\x58\x7f\x61\x74\x55\x1c\x4b\x3f\xd8\x22\x10\x37\xb6\x2e\x84\xd2\xb8\x49\x65\x5d\x68\x56\x15\x14\x02\x1e\xb2\x16\xcc\x58\xd4\x14\x88\x52\x22\xb3\x05\x7d\xda\x9a\x65\x05\x51\x3e\xf3\x77\x2f\x05\x5c\x55\x4d\x6e\x10\xdb\x9c\xd1\x9c\xf2\x8c\x62\x59\xb8\xb1\x05\xe1\x2c\x35\x27\x69\xb6\x36\x7b\x73\xc6\x57\x6d\x26\x56\x53\x3b\xd0\x6f\xfb\xef\x18\xe7\x3f\x6e\xea\x89\x11\x53\x0e\xba\xd9\x65\xa0\x78\x49\x4e\xb4\x5b\x5b\x4f\x3e\xc1\x24\x1f\x31\xef\xd0\x1c\x5e\xb9\x42\x61\x2f\x97\xd0\xd7\x42\x8b\x8d\x0c\x78\x70\x6e\x3d\x13\xda\x05\x09\x69\x38\x65\x9f\x05\x68\xd6\x7b\xf2\x78\x26\xf0\xd3\x50\x73\x7d\xa7\xa9\x1e\x1c\x45\x1e\x9a\xe9\xcf\xcf\xcc\x7e\x04\x13\x7b\x87\x79\x6d\xcd\xe3\x20\xae\xa1\xa6\x75\x14\xb3\x3a\x86\x49\xbd\xcb\x9c\x0e\x48\xae\xed\x68\x80\x78\x8b\x62\x02\x87\x9b\xbf\xe1\xf0\xb4\x4a\xd2\x39\xfb\x14\x45\x66\x9e\xf2\x76\x03\x81\xe5\x94\x6b\x36\x67\x21\x5d\x8a\x85\x19\x5c\x45\xb9\x2d\x63\x45\xb2\x25\xda\x05\x81\x7d\x91\x3a\x78\xfa\x73\x4b\xae\xb3\x2e\x9a\x98\x0a\xec\x2a\x96\x73\x2a\x69\xaf\xa4\xbd\x92\xf6\x7a\x88\x9e\xbd\xf6\x72\xf2\xa0\x79\xb2\x3f\xad\xfa\xc1\x8a\x30\xa1\x45\x6f\xde\xf6\xea\x91\xe1\x1d\xf7\x76\xd7\xee\x7f\xf7\xba\x6a\x7f\x27\xf8\xb9\x1e\xd8\x81\x80\xe3\x86\x1f\x79\x59\x17\xc5\xf8\x5a\xf3\x96\x86\x0b\x78\x8e\x2b\x57\xd5\x45\xe1\xca\x83\x4f\xe1\x83\x57\x9f\x5a\x31\x87\xd3\xe2\x96\xac\xd5\x31\x5c\xd0\x15\x95\xc7\x70\x3e\xbf\x10\xfa\xd2\x3e\x54\x7d\x94\x6a\x3f\xfb\xd2\xb2\x06\x36\x87\xd7\x05\xd1\x54\x69\xd0\xc4\xe7\xa2\x32\xd5\xef\x9e\x26\xe4\x60\x90\x5d\x23\xd3\x38\x4d\xe3\xc7\x0a\xf5\xad\x83\xf5\xdb\xa6\x8e\xe5\xe4\x09\x0e\x5a\xc1\xe6\x34\x5b\x67\x45\xe8\x1d\x7d\xd7\xf0\x69\xaa\x35\x91\xa2\x10\xb7\x5e\x62\x07\x01\x3b\x3b\x4a\x87\x7e\x56\xcd\x5d\x2a\xa1\xf4\x95\x26\x52\x47\xe8\xf0\x72\x70\xd9\x30\x33\x8b\x9b\x91\xa2\xf0\x16\xe7\xac\x2c\x69\xce\x88\xa6\xc5\x1a\xc8\x5c\x53\xd9\xaf\x53\xec\xcb\x53\xd9\xda\xe0\xae\xbc\x2d\xf6\xef\x26\x3c\x2f\xa8\x84\x39\x61\x85\x37\xc6\x67\xcb\x89\x6b\x3b\x8f\x7b\xf5\x29\xb1\x64\xc1\x91\xae\x16\x2f\x90\x2c\x13\x32\xc7\x52\x5f\x02\xfc\xc1\xa8\x8e\x61\x27\x58\xd1\x86\x2a\x09\x27\x0b\x1a\x50\x98\x61\x13\x7d\x0b\xb3\x42\x64\x37\x0a\x6a\xae\x99\xaf\x6d\x66\x5b\xab\x8b\x1b\xc8\x44\x59\x15\x28\x9e\xc2\xca\x05\xc2\xfd\x25\x03\x77\xc9\xbc\xf6\x9f\x93\x56\xf4\x4c\xcc\x98\xd4\xc9\x6f\xbb\x1f\xe1\x37\xfc\x2c\xbd\xe0\x97\x48\xf8\x3b\x84\x7e\xa2\x99\xbf\x75\x38\xb8\xfa\x1f\x38\xc5\x53\x1b\xd4\xcd\x1b\x40\xf0\x16\xce\x3d\x17\x46\x30\x9b\x53\x1f\xd8\xda\x17\x06\x3d\x02\xa6\x70\xf6\x89\x66\xed\xd7\x21\x0f\x12\x33\x4a\xdb\xd6\x00\x2b\xda\x92\x9b\x80\x42\x03\x51\xa0\x36\x71\x40\x2e\xde\x05\x20\xfb\xb4\xd1\x79\x16\x39\x86\x54\x4d\xb0\x64\x05\x8d\x65\x56\x30\x3e\xba\xfd\xcc\x36\xb9\xf2\x92\xc0\xb8\xb2\x6d\xf0\x7a\x92\x2c\x14\x26\x60\x98\x6d\x35\xda\x0d\xe4\xd9\x34\x61\x6a\x56\x21\x7c\x4d\xa5\x10\x1a\x0e\x0f\x4e\x0e\x8e\xb6\x62\xba\x81\x10\x34\xf3\xba\x2e\xa8\x5a\x2b\x4d\x4b\x5b\xb4\xc6\x8d\x3a\x90\x2b\xc3\xd6\xdc\x15\xf6\x65\xa6\xd9\x41\x7e\x0c\x2c\x14\x4e\xe0\x6c\x41\xdb\x01\x05\x4f\x42\x58\x6e\x0a\xd8\x2a\xa5\xc7\xa0\x04\x68\x49\x72\x16\x05\x23\x8e\x3c\xcd\x00\xb5\xac\x5d\x3b\x95\xc3\x83\x5f\x46\x76\xb7\xda\x26\xaa\xb3\x23\xb8\x15\xfc\x40\xe3\x71\x9d\xc2\x75\xe8\xad\xaa\x15\x6d\x0a\xb5\xda\x5e\x51\x9c\x86\xc3\x2a\x44\xbf\x55\x94\x31\x2e\x41\xd4\xa1\xfb\x8e\x95\xc8\x89\x6e\x6a\xca\x9e\x7d\x0a\x3e\x49\x36\x2f\xd5\x28\xb1\x97\x68\x0a\x5a\x83\x33\x90\x29\x51\x50\xb0\x15\x3d\x59\x52\x52\xe8\xe5\x1a\xc2\xef\x10\x17\x7c\xf2\xdf\x54\x0a\xac\x7a\xcb\x1d\xdf\x30\x2c\x5e\x48\x58\xba\x4f\xde\x21\xea\xed\xc1\x04\x79\xd0\x8c\xbd\xf8\x0d\xf5\x7c\x17\xc1\xa6\x0e\xfc\xf3\xf5\xf5\xe5\x37\x54\x47\x33\x3c\xcc\xe8\x9a\x04\xaa\x5e\x8b\xa6\x27\xb6\x40\xc2\xa1\xbe\x13\xa8\x84\x7c\x6a\x13\x68\x29\x54\xc0\xbe\xc3\xd6\xde\x0b\xa5\x7d\xab\x4a\xf6\x49\x0b\xa3\x9b\x39\xcd\xcc\x8e\x47\x4b\x26\x76\xdd\x18\x2a\x91\xc3\xf9\xe5\x14\xfe\x22\x6a\xb3\x8a\x33\x32\x0b\xb2\xe4\x0d\xdd\x12\xae\x9b\xb2\xad\x2f\xcc\x22\xbc\x08\x09\x97\x59\x32\xe7\xfe\xcf\x94\xe4\x54\x2a\xd4\x84\x94\x78\x36\x94\x6d\x28\x12\x00\xb3\x37\xae\x98\x96\x73\xad\xb4\x28\x61\x69\x19\x87\x6f\x74\xaf\x80\xae\x93\x1d\xa1\xf8\x6b\x23\xd7\xac\x0f\x4d\x81\xa4\x55\x0c\x6d\xe7\x66\xfb\x2b\xd2\x46\x5b\x9a\xc0\x9e\x94\x40\xae\x0d\xdf\x19\xf6\x57\xca\xf0\xa8\x04\xb3\xb4\x8b\x6f\xce\x8a\x2b\x7a\x17\xcc\x91\x71\x7b\x48\x8c\x50\x09\x46\x89\x47\x4a\x49\x81\x48\x69\x29\x10\x52\x30\x78\xc8\x04\x01\x96\x81\x5c\x62\x65\xb9\x40\xa4\x7c\x08\xd8\x01\x03\x88\xc0\xb2\x3d\xa5\xb6\xa6\x43\x84\xe5\x87\x98\x48\x7c\x08\x2d\x4d\xdc\xa7\xc7\x5f\xbe\x18\x07\x0f\xe2\xad\x5f\x15\x5c\x44\x64\xbb\x84\x88\x16\x40\xb2\xcc\xaf\x25\x4e\x9f\x84\x55\x9d\x28\xce\x6c\xff\xc9\x67\x61\x7b\x18\x8b\x39\xe2\x92\x59\x38\x89\x04\x5e\x97\xb3\x60\x25\xd5\x56\xf3\x92\x3a\xf6\x36\xf4\x5a\x00\x5c\xc4\x18\x6a\x03\x44\x68\x0c\x24\xc2\x17\xa1\xf7\xe2\x95\x99\xf3\x1f\xff\xf0\x87\xdf\xff\x61\x6a\x97\xd5\x7c\x46\x20\xcf\x19\x05\xc2\xe1\xfc\xf4\xe2\xf4\xe7\xab\xef\xdf\x60\x65\xe5\xb0\x53\x18\x21\x25\x3b\x66\x42\x76\xc4\x74\xec\x47\x4c\xc6\xc6\xb2\x53\x81\x12\x7e\x88\xae\x41\x86\xe1\x1e\xed\x5a\xd9\x62\xca\xee\xa5\x68\xc3\x86\x11\x3c\xd9\xe6\x4d\x3c\xa8\x41\x1d\xe1\xe1\xf0\xe4\xd2\x53\x67\xd5\x95\xc8\x6e\xa2\x79\x79\x0e\xae\xdf\x5c\x5a\x86\x51\x1c\x3d\x84\x37\x01\x26\xc6\x57\xa2\x58\x99\xcd\x24\x70\xfd\xe6\x32\x50\x59\x4c\x0d\x0f\x8c\xb0\x5a\xbf\xf7\x3a\x28\x1f\xaf\x2d\xb0\xe3\x00\x7a\xac\xac\x8a\x90\x88\x32\x60\x1d\x79\x49\x49\xc1\x94\x66\x19\x8e\xb5\x8d\xc1\x06\x79\x75\xc4\x8d\x3f\x2a\x2f\xf9\xc7\x3a\x8a\xec\x1f\x3b\xf8\x10\x29\x77\xb5\x75\xb4\xf5\x5c\x65\xc1\x4e\x93\xe3\x41\xe9\x96\xf0\x3a\x83\xce\xd1\x16\x96\x38\xfc\x4c\x2d\x47\x34\xc3\xfc\xda\x44\xf6\x89\xf7\x3a\xd8\x38\xcb\x31\x34\x82\x82\x76\xe7\xb6\xe5\x18\xc8\xd6\x4d\x78\x68\x39\x86\xfa\x25\x8c\xdd\xb9\x65\x39\x46\xb2\x6d\x93\xe5\xb8\x1f\x3d\x82\xe5\x58\x49\x7a\xa5\x45\x15\x05\x67\x67\x59\x45\x45\xd9\xcd\xe8\x5c\x48\x1a\x07\x66\xd7\x01\xe0\x20\xaf\x51\x18\x13\x1e\x50\x1f\xb3\x09\x73\x89\x3e\x5c\xcd\x3b\xf1\x1a\xd0\x64\xc9\x96\x4d\x54\x95\x53\xa5\x4e\x10\x1a\x57\x57\xd6\x49\xe9\xc9\x74\x4e\x58\x51\x4b\x7a\x6c\x76\x9a\x96\x95\xed\x50\x1f\x58\xaa\xcf\x6c\x06\xe5\x96\x15\xd5\xb6\x69\x7c\x83\x5a\xf4\xdf\x1f\x63\xf3\xd9\x83\x63\xbb\x9d\x86\xb7\x7c\xca\x24\x51\x4b\x8a\x8d\x1e\xe9\x27\xa6\x95\x1d\xa8\xa4\x44\x79\x57\xfa\x45\xa8\x8b\x3b\x48\x68\x02\x2b\xa8\x88\x52\x34\xf7\xd7\x06\x3d\xc8\xa7\x1d\xe0\xa5\xc8\x0f\x0e\x54\xff\x63\x3c\x39\x2f\x24\xc9\x28\x54\x54\x32\x91\x03\xd6\xce\xce\xc5\x2d\x87\x19\x5d\x30\xee\xfb\x02\x70\x37\xd2\x0c\xba\xb9\xf0\xc6\x84\xa5\x01\x40\xaa\xa6\x9b\xee\x14\x3e\x0e\xba\x7d\xfa\x6b\x2d\x51\xeb\x4c\x74\xda\xda\xad\xee\x71\x00\xc7\x0e\x49\x8a\x39\xf7\x78\xcd\x6b\x52\x14\xeb\x4e\xac\x78\x72\x76\xe5\x25\xf4\x63\x6d\xfc\x67\x86\xa9\x35\x97\x35\x94\x63\xff\x82\xf6\x97\xc2\x5f\x36\x49\x4a\xb2\x65\x58\xba\x42\x82\xee\x3e\x40\x09\xba\x9b\xa0\xbb\x77\x52\x82\xee\x26\xe8\x6e\x82\xee\x26\xe8\x6e\x82\xee\x26\xe8\xee\x48\x4a\xd0\xdd\x87\x28\x41\x77\xef\xa4\x67\x19\x9a\x48\xd0\xdd\x04\xdd\xdd\x9b\x12\x74\x37\x41\x77\xc7\xf1\x4d\xd0\x5d\x2f\x4a\xd0\xdd\x7b\x29\x41\x77\x43\x28\x41\x77\x7d\x29\x41\x77\x47\x53\x82\xee\x26\xe8\x6e\x00\x25\x00\x86\x07\x25\xe8\x6e\x84\x87\xc3\x93\x4b\xcf\x04\xdd\x4d\xd0\xdd\x3d\x29\xf9\xc7\x3a\x4a\xd0\xdd\x00\x4a\xd0\xdd\x07\x29\x41\x77\x13\x74\x37\x80\xd7\xf3\xb3\x1c\x1b\x88\xe8\xa5\x14\xb3\xd0\xe2\xa3\xc8\x43\x61\x7f\xea\x54\x7a\x34\x00\xc3\x74\x27\x7e\x09\x84\x57\xb5\x60\xe8\x5e\xbb\x9b\xd8\xa5\x21\x02\xc9\x93\xf7\x10\xb7\x34\x44\x1f\xf9\x9a\xbf\xde\x98\xa5\x67\x80\x5e\x0b\xc6\x29\xdd\x81\x51\x0a\x14\xe1\x1b\xf8\xa4\x06\x61\x14\xc0\x71\x27\x36\x29\x70\x94\x5b\xb8\xa4\x06\x59\x14\x61\xe6\x08\xc0\xec\xa3\x8a\x02\x43\xdd\x3d\x3c\x52\x1f\x51\x14\xc0\xb5\x87\x45\xda\x46\x13\x85\xec\x94\xde\x85\x24\x72\x40\x98\x90\x17\xd6\x00\x45\xb4\x03\x07\x14\xc0\x1b\x11\x44\x91\x31\x40\x3b\xf1\x3f\x61\x46\xdc\x0e\xec\x4f\x83\xde\x09\x59\xd8\x0e\xf7\xd3\x47\xee\x84\x1c\x81\x16\xf3\xb3\x89\xda\x09\xf2\x03\xe4\xb1\x11\x3b\x31\xe2\xa3\xc1\xb1\xd1\x40\x73\xcd\xe5\xca\x5c\x2f\x25\x55\x4b\x51\x78\xaa\x82\x81\x1a\x78\xcf\x38\x2b\xeb\xd2\xc8\x1c\x65\xe4\x36\x5b\x05\x26\xf2\xa8\x16\xb2\x89\xf1\x4f\x1b\x58\xf5\xd6\x78\x28\x51\x24\xcd\x91\xbb\x39\x62\x58\xd5\x7c\x49\x56\xfe\xf6\xae\xaa\xb3\x8c\xd2\x9c\xe6\x03\xe7\x1e\xfc\x7e\xda\xac\x85\x27\x5f\xdb\xeb\x91\x29\x78\x15\x62\x61\x84\x3c\x0b\xe6\x42\x96\x44\x23\x8f\xdf\xff\xce\x83\x43\x10\x00\xec\x51\xc0\x5f\xd1\x81\x5f\xc1\x66\x5c\x98\x43\x2b\xc0\x99\x15\x6e\x3f\x86\x39\xb1\x76\x03\xbc\xc2\x74\xdc\x2e\x70\x57\x18\xc7\x47\x00\x76\xed\x04\x75\xf5\xe1\x4f\x61\x96\x6e\x18\xa0\x2b\x12\xec\x33\x18\xc8\xf5\x38\x20\xae\xdd\x00\x2e\x94\x2e\x21\xc6\xc5\x10\xbc\x15\x0e\xbf\x7a\x16\xa6\xc5\x63\x40\xae\xb6\xe1\x56\x6e\xb1\xc2\x5c\xb9\x2d\xd4\x2a\x1e\x54\x2a\x12\x4c\x2a\x06\x44\x2a\x18\x1e\x15\x0e\x8d\x8a\x05\x8b\x8a\x01\x89\xda\x6a\x68\x18\xe1\x04\x41\xd3\x83\x2e\x0a\xc8\x38\x96\x0b\x35\x0a\x04\xea\x71\x97\x2b\x06\xf4\x29\xc2\x7a\x85\x41\x9e\x1e\x07\xee\x14\x13\xea\x14\x63\x89\x82\x02\x55\x8f\x03\x6f\xda\x09\x6d\x02\xef\x24\x70\xd8\x74\x77\x4d\xfb\xe1\xa5\x00\xa6\x1b\x90\xa6\x7e\x68\x29\x80\x6b\x0b\x67\x8a\x1b\x56\x0a\x0c\x29\xc5\x0a\x27\x45\x0a\x25\x3d\x12\x00\x29\x14\x7c\xb4\x1b\x78\x64\x6c\x90\x80\x03\xb1\x05\x3a\xea\x60\x43\x01\x5c\xfb\x3e\x89\x30\xc8\x50\xe0\x86\x32\xce\x34\x23\xc5\x5b\x5a\x90\xf5\x15\xcd\x04\xcf\x3d\xad\x89\x8d\xb6\xbb\x2e\x64\x3e\x07\x65\x99\x7a\xce\xcf\x7a\x82\x86\x05\x1f\x96\x44\x81\xeb\xff\xe6\xc9\xd5\x55\x0f\x69\xc2\x97\xce\x30\xc5\xd8\xa3\x5d\x0f\xed\x1f\xcf\x1a\x59\x9a\xe1\x56\xc8\x9b\x42\x90\x5c\x9d\x54\xc2\xfe\x5f\x57\x98\xa1\x57\x91\xc1\x8e\x30\xa4\x24\xc3\x53\xba\x9c\x6c\xdd\x8b\x78\xc7\xeb\xcf\xe2\x16\xc4\x5c\x53\x0e\x87\x8c\x37\x27\xec\xc8\xd7\xfb\xd4\x3a\x9b\x3a\x7f\x66\xeb\x34\xf4\xe7\xf9\xea\x65\x33\xb0\xd6\xe5\x18\x64\x98\x7d\xce\x2e\x47\x74\xc6\x2a\xf5\x3c\x3d\xda\x6e\x70\x8f\xe5\xd2\x76\xec\xe7\x75\x61\x85\x99\xaf\xff\x06\x9d\xe1\xce\x41\x3e\xf4\x69\x7b\x1e\x0b\x68\xbb\xea\xbf\xc2\x99\xb7\xd2\x90\xf0\x1c\x5c\xcd\x2f\x6f\xce\xfd\x03\xff\x59\x1f\xdd\x40\x28\xed\x63\xc1\x68\xef\x84\xd0\x5a\x20\xac\x27\xd7\x2d\xf8\x6c\x07\x82\xf5\xe5\x38\x84\xce\xf6\x01\xb0\x01\x63\x6c\x35\x64\x00\xf8\x35\xc5\x08\xfc\xfe\xf6\x4e\x90\x2b\x86\x0b\x02\x4c\xe2\x0d\x80\x6b\xac\x5c\xf0\x61\x1e\x78\x28\x50\xfa\xd9\xbc\xf6\x1b\x48\x6a\xa8\x6f\x2c\xbd\xf6\xd3\x6b\xff\x01\x7a\x84\xd7\xbe\x66\x25\x15\xb5\x7e\xb6\x0f\xce\xdb\x25\xcb\x96\x7d\x5b\x90\x95\xde\xaa\x5a\xd4\x7a\xc3\x5e\x73\x43\x8c\x08\x45\x48\xaf\xce\x0d\xf2\x8b\x69\xec\x70\xa8\x5a\xf1\xd8\xe2\x89\x3d\x26\xd2\x39\x2e\x5a\xac\x2c\x10\x05\x04\xde\x5e\x5c\xfd\xfc\xee\xf4\xdf\xcf\xde\xf9\x08\x9a\xeb\x25\x53\x56\x65\x36\xe2\xab\xe6\xec\x6f\x35\x05\x52\x0a\x63\x0b\x16\x41\x43\x55\xc7\xe8\x08\xe9\x7d\xc3\xb3\x38\x53\x4c\x20\xb6\x97\x18\x33\x8a\xcd\x43\xc0\x0c\xa3\x0f\x86\xc7\x33\x44\xa6\xfb\xc5\xa2\xbd\x63\xd0\x1b\xc0\x62\x37\x7a\xb3\x38\x20\x69\x25\xa9\xa2\xdc\xd3\x52\x23\xc0\xa9\x36\x32\xc9\xda\x21\x8c\x03\x01\xc5\xf8\xa2\x08\xcc\x69\x09\xb4\xf1\x43\x2c\xfc\x49\x37\xf2\x4b\x3f\x43\x3f\xd4\xcc\x1f\x7c\xbe\xaf\x31\xb2\xd3\xe8\x9c\x87\x25\xeb\xd9\x92\x77\x42\xd1\x26\x1a\x57\x89\xfc\x40\xc1\xb9\x3f\xda\x83\xe4\xb9\xa4\x0a\x0b\x6b\x33\xd5\xd9\x73\x46\x43\x32\xff\x4a\x2f\x78\x16\x6d\x38\xed\x18\x5e\xc2\x9f\xe0\x13\xfc\x09\x4d\xce\x3f\xfa\x5a\x86\x31\xcc\xba\x50\x87\x86\x7d\xfd\x9d\x5f\x46\x39\x11\x3f\x2c\x89\x46\x7e\x70\x7e\x19\x02\xe9\x9a\x31\x9e\x5b\x45\xfb\x49\x53\xc9\x49\xd1\x3c\x48\xc2\x56\x3a\xc0\xf0\x35\x93\x7a\xf6\x17\xc7\x26\xaf\x9f\xcf\xbd\x39\xb6\x16\xc9\x31\xe8\xc1\xd5\xf1\xe6\x88\x57\x6e\xe7\xd5\xf1\x66\x69\xaf\x1c\x9c\xcf\xd1\xc3\x70\xe1\x34\x05\x53\xbd\xd1\xfb\x2f\x69\x3b\xeb\x92\xe8\x6c\x39\x54\x6b\xfe\x0f\xc0\xf7\xe6\x4a\xf4\x8c\xa7\x5c\xa0\xe9\x10\x54\x2f\xd4\x0c\xf5\xf3\x16\x3c\x21\x40\xa3\xc1\x7d\x3a\x9f\x6f\x9e\x5c\xef\x55\xbd\xeb\xf1\x1f\x54\x8c\xd4\x99\xe2\xbd\x9a\xfa\x95\xc8\xa7\x70\x46\xb2\xa5\x37\x4f\xb3\x78\x79\xcf\x3e\xaa\x44\x6e\x07\xbf\x24\xde\xa1\x0f\x63\x79\xb9\xb1\x1a\xf6\xae\x98\x4b\x68\xca\x94\x15\xdd\x46\x33\x64\x84\x9b\xb5\x95\x74\x4e\xa5\x0c\x39\xfa\x02\x66\x6b\xc4\xeb\xb0\x8c\x06\x5e\x82\x00\x9d\x50\x49\xa1\x45\x26\xbc\xf3\xf9\x37\xf3\x5d\x91\x19\x2e\x77\x88\xd3\xbe\x8b\xe3\x7c\xf7\xf6\xf2\x18\xae\xdf\x5c\x1e\x83\x90\x70\xf5\x26\x04\x55\xd0\xf7\x57\xbc\xb8\x7e\x73\xf9\xe2\x09\x16\x5d\x52\x92\xb3\x94\x5e\xbc\x9b\x52\x7a\xf1\x7e\x94\xd2\x8b\x87\x94\xd2\x8b\x03\x78\xa6\xf4\xe2\x94\x5e\x6c\x29\xa5\x17\xa7\xf4\x62\x4f\x4a\xe9\xc5\x0f\x0f\x2e\xa5\x17\x7f\xb6\x80\xa9\x94\x5e\xfc\x30\x25\xe8\x50\x4a\x2f\x4e\xe9\xc5\x5b\x94\xd2\x8b\x9f\xda\xb4\x48\xe9\xc5\x29\xbd\xb8\xa1\x94\x5e\x3c\x82\x52\x7a\xf1\x38\x4a\xe9\xc5\x0f\xd2\x33\x03\x1c\xa7\xf4\xe2\x04\x38\xde\x97\xcf\xf3\x03\x1c\x43\x4a\x2f\xf6\xa3\x94\x5e\x3c\x9e\x52\x7a\xf1\x38\x4a\xe9\xc5\xe3\x79\xa6\xf4\xe2\x8e\x52\x7a\x71\x4a\x2f\xfe\x4c\x8f\x6e\x4a\x2f\x4e\xe9\xc5\xbb\x29\xc5\x08\x52\x7a\xf1\x38\x4a\xe9\xc5\xfe\x4c\xd3\x6b\xdf\x9f\xcf\xf3\x7b\xed\xa7\xf4\xe2\x94\x5e\xfc\x20\x85\x98\x6e\x92\x2a\x51\xcb\xcc\x47\x45\x0e\xce\xd5\xc7\x86\xcf\x63\x02\x93\xe1\x2c\x46\xf6\xb2\x42\x7c\x9a\xaa\xcc\x40\x65\x37\xec\x42\x52\x92\xfb\x44\x2c\xcd\x44\x33\x0c\x9d\x76\x2a\xf4\xb3\xc2\x50\x17\xac\x64\x3e\xa9\xc5\xb0\x25\x5c\xde\x21\xa7\x2e\x50\x1a\x80\x73\x29\xc9\x27\x7c\x19\x91\x52\xd4\x5c\x1b\x79\x95\x89\xb2\xf2\x47\xd2\xf6\x77\x1a\x0f\x66\x5f\x16\x04\x60\x05\x1e\x92\x20\x99\xe0\x73\xb6\xa8\x25\x31\x4b\x74\x52\x12\x4e\x16\x74\xe2\xa6\x32\x69\x07\x35\x69\x4f\xe7\xc9\x13\x59\xe9\x24\x6f\xf0\xa5\x97\xc1\x66\x73\x45\xb4\xa6\x92\xbf\x86\xff\x38\xfc\xeb\x97\xbf\x4c\x8e\xbe\x3a\x3c\xfc\xf1\xe5\xe4\xdf\x7e\xfa\xf2\xf0\xaf\x53\xfc\xc7\x3f\x1f\x7d\x75\xf4\x4b\xf3\xc5\x97\x47\x47\x87\x87\x3f\x7e\xfb\xfe\x9b\xeb\xcb\xb3\x9f\xd8\xd1\x2f\x3f\xf2\xba\xbc\xb1\x5f\xfd\x72\xf8\x23\x3d\xfb\x69\x4f\x26\x47\x47\x5f\x7d\xe1\xfd\x4a\x0c\xb0\x43\xe2\x58\x21\x51\x6c\x90\x47\xb0\x40\x1c\xcc\x24\x8a\x78\xf8\xe8\x78\xc5\x11\x10\xce\x75\x12\x5f\x40\x34\x0f\x56\xcc\xd4\x6c\xc6\xec\xef\x8d\x14\x25\xd3\x46\x3b\x18\xb5\x46\x7a\x10\x7e\x5f\x8e\x7a\xd0\xef\xd4\x89\x5c\x36\x0f\xc1\x42\x33\xd5\x07\x58\xf7\x32\x12\x85\x5e\x52\x79\xcb\xbc\x03\x43\xe6\xa5\xc4\x3b\xb7\x06\x0a\xc1\x49\x4e\xe7\x8c\x7b\x7b\x4a\xd0\x9a\x1b\x6d\xc8\x25\x31\x9c\xc4\xf0\x18\x2e\xcf\x49\x0c\x2b\x9a\xd5\x92\xe9\xf5\x1b\xc1\x35\xfd\xe4\xe1\x19\x19\xc6\x7b\x87\xdc\x5c\xc6\x8a\xa7\xdd\x7b\xeb\xe4\xda\x67\x9f\x47\x88\x93\xb9\x94\x6c\xc5\x0a\xba\xa0\x67\x2a\x23\x05\x8a\x8a\x18\x6a\xef\xf4\x0e\xde\xfe\x31\x13\x2d\x45\xa1\xe0\x76\x49\x8d\x78\x06\x62\xe6\x8e\xee\xa8\x8c\xf8\x32\x5d\x10\xc6\xa1\x34\x32\xb5\x6a\x06\xaa\x8c\x46\xe1\xc0\xbc\x75\x9f\x79\x61\x71\xdd\x0c\xce\xd5\x34\x99\x09\x51\xb8\xb4\x33\x6f\x1c\x72\xbb\x02\xcc\x3a\xe5\xb8\xf8\x99\xd3\xdb\x9f\xcd\xc8\x7d\xc7\x3a\x2f\xc8\x02\x6e\x59\x51\x60\xae\x26\xd5\x5b\x9d\xa8\x7d\xd7\xa0\x99\x7c\xe4\x43\x80\x79\x46\x35\x05\x52\xdc\x92\x35\x1e\x85\x38\xe3\x65\xea\x35\xbc\x3a\xc2\xfc\x35\xa2\xa0\x1d\x6f\x0e\xbf\xf3\x0d\x1b\x2f\x89\x82\x37\xa7\x97\x3f\x5f\xfd\xe5\xea\xe7\xd3\xb7\xef\xcf\x2f\x42\x34\xab\x39\x3d\xd4\xeb\x90\x67\xa4\x22\x33\x56\x30\x7f\x85\xba\x85\x45\xec\xb3\x0c\xb0\x8f\xf2\xfc\x24\x97\xa2\xb2\x7b\x28\x6b\xce\x19\x5f\x04\x89\x51\x4b\x6f\x87\x4d\xf1\x1b\xa3\xd1\x1c\x6e\x5f\x07\xdd\x7c\x30\x65\x58\x48\xc2\x8d\x61\x3b\x5b\x07\x64\x8e\x76\x70\x15\x59\x73\xcd\xca\xcf\x37\x21\x99\xe4\xb1\x92\x91\x4f\xf3\x9c\xe6\x31\x8e\xd7\x73\x04\xe3\xbf\x69\xa6\x15\x92\x85\x02\x5d\xa1\x36\xb8\xfc\x70\x75\xfe\xbf\xe3\xac\x16\xb8\x15\x0b\x09\xea\x84\x9b\x8f\x46\x1a\x44\x3a\x49\x1f\x69\x29\x56\xe9\x2c\x3d\x40\xbf\xd2\xb3\xd4\x5a\x72\x31\x70\x44\x1f\x6b\xde\x93\xd5\xde\x49\xfd\xdd\x98\xa0\x14\x39\x9d\xc2\xa5\x35\x90\xa8\x8a\xc2\xb3\x5f\xe6\x53\x52\x30\x8c\xb9\x66\xa4\xf0\x36\x35\xe9\xdf\x6a\xb6\x22\x05\xb5\x49\x6f\x58\xd6\xa0\x5f\xb2\x2c\x82\x6e\x9e\x93\x42\x05\x29\x3d\x7f\x9b\xc8\x18\xa7\xef\x45\xcd\x63\x60\x76\x5a\x5e\x90\x53\x2e\x74\x90\x6b\xcf\xcc\x0b\x6b\xcc\x49\x91\x81\x75\xef\x05\xc1\x93\x1b\xbc\x5a\x3f\x94\x74\xdd\x99\x44\xfe\x26\xb8\xdb\xc7\xcb\x76\xee\x36\x1e\x5a\xab\xa0\xe9\x6f\x99\x44\xa1\xf0\x0e\x33\x7f\x49\x49\x8e\xd5\x6d\x2a\xa2\x97\x16\xbb\x56\x12\x75\xe3\xed\x86\x43\x36\xee\x4d\xe7\x1c\xa6\xb6\x28\x4d\xbb\x18\xd7\xfe\xc2\x6f\x4e\x89\xae\x25\xb5\xaf\x32\x9b\x20\x47\x39\x99\x15\xbe\x68\xe3\x40\x41\x6a\xd6\xee\x03\x2f\xd6\x1f\x85\xd0\x5f\xb7\x15\x48\x22\x5c\x9a\x1f\xdc\x0b\x1e\x8b\xf7\x85\x3e\xdd\x96\x58\x8b\xd9\x8c\x75\x82\x1b\x8d\xc2\x2a\xbc\x60\x8a\x3b\xe3\xe6\xb8\x3f\xa1\xa8\x92\x35\x3f\x55\xdf\x48\x51\x7b\x5a\x46\x5b\x8f\xb7\x6f\xce\xdf\xa2\x44\xaf\x79\xc0\xe3\x85\x72\x2d\xd7\x95\x60\x36\xfe\x10\xd5\x5f\xf0\x9d\x51\x89\x1b\xf7\xdf\x57\x50\xcd\xa1\xe6\x8a\xea\x29\xbc\x27\x6b\x20\x85\x12\x8d\x93\xc3\x5b\xe5\x5e\x22\x4a\xbd\xef\x47\x9c\x02\x16\x33\xf4\x7e\x5c\x32\x0e\x33\xa1\x97\x5b\xee\x49\xff\xea\x85\xdb\x63\xc4\xaa\x49\x41\xe0\xf2\xae\xf0\x39\xe3\x9b\x43\xf5\x95\xf8\xe4\x86\x2a\xa8\x24\xcd\x68\x4e\x79\x16\x74\xbf\x22\xa1\x48\xfe\xf8\x2f\xbe\x37\xf4\x42\x70\x23\x24\x23\xdc\xd1\x73\x9e\xb3\x8c\x68\xeb\x85\xd4\x51\x1c\x0c\x88\x5f\x73\x9e\x2d\x82\x05\x75\x8c\x88\xf4\x64\x5b\x2b\x2a\x31\x40\xa8\x65\x4d\xed\xc1\xfa\xb6\x9e\xd1\x82\x6a\x74\x23\xfa\x07\xb7\x58\x4e\xb4\xad\xf6\xc5\x4a\xb2\xa0\x40\x74\x23\x06\xfc\x7d\x4c\x94\x2b\xa3\x4e\x71\x25\x99\x86\x5c\xd0\xb6\x4c\x95\xaf\xb3\x43\xc1\x77\xe7\x6f\xe1\x25\x1c\x9a\x35\x3c\x42\x7b\x62\x4e\x58\xe1\x5f\xaf\x02\x91\xf4\x1b\xf6\x0f\x9b\x37\xc3\xf5\xd5\x5e\xe7\x4e\xf6\x81\x90\x56\x7d\x1d\x03\x17\xa0\xea\x6c\xd9\xac\xb5\xbf\x0f\xb6\x71\x17\xbb\xac\x18\x84\x94\x38\x01\xeb\xc9\xb1\x15\xcb\x77\x09\x58\xdf\xb5\xb5\x4c\x77\x09\x58\xef\x50\x5d\x7e\x97\x80\x0d\x42\xe9\x3d\x73\x01\x1b\x68\xc0\x7c\xa7\xa8\x8c\x64\xbf\x7c\xf7\xcc\xed\x97\xfe\x13\xd7\xc8\xca\x6e\x67\xfd\x0d\x04\x2b\x10\x4b\xaa\x49\x4e\x34\x71\x76\x4d\x68\x5d\xcd\x6d\x9b\x28\x5d\xbe\xe7\x79\xf9\x9e\xd2\xba\x51\xf4\x1d\xe3\xf5\x27\x9b\xc4\x11\x2b\x80\x74\x75\x86\x4c\xf1\xd2\x05\x2c\x31\x1e\x5d\x52\x55\x05\xeb\x30\xa8\x41\xdd\x46\xa0\x55\x9c\xfd\xda\xe4\xe1\xc2\xa1\x79\xce\xa0\xe2\x6c\x60\xb3\xe6\xcd\x4a\x78\x2e\x7c\xd1\xdd\x1b\x8b\x68\xe1\x08\x24\x5b\xf6\x53\x2b\xcc\x25\xf7\xbd\x6b\x49\x34\x7c\x06\xa2\xe1\x49\x03\x7f\x05\x5d\x51\xef\x52\xea\x1b\x62\xe1\x9d\xe1\x05\x4c\x35\xc7\x3a\x20\x7a\x80\xc3\x82\x82\xcc\x68\x61\x2d\x7f\x2b\x22\x22\xe4\x88\x05\x0b\x97\x28\x61\x32\x29\x8a\x58\x35\x30\x3e\x8a\x02\x13\x44\x48\x84\x65\x37\xc3\xfa\x15\xaf\x3a\xb2\x88\xb3\xea\xd7\xeb\x2a\xda\xaa\x63\xc8\xe0\xd7\xbb\xea\xb5\xf7\xc3\x01\x36\x57\xdd\xbc\x41\x62\xad\x3a\x1a\xf6\xbf\xce\x55\x57\x34\xcb\x44\x59\x5d\x4a\x31\x67\xbe\x72\x66\xcb\xe0\x73\x4c\x41\x54\x21\x65\xbb\xed\x8b\xca\xc2\x6e\xfa\x71\x83\x80\x06\x4a\x1b\x03\xc3\xe0\x69\x25\xc5\x8a\xe5\xde\xef\x35\xa2\xad\x5d\xd3\x24\x15\xff\x8f\x60\xf3\x11\x15\xda\x86\x25\x1a\xb8\x94\x62\x45\xa5\x6c\xaa\xeb\x9b\x51\x3a\x76\x9f\x69\x39\x5d\x6f\xbc\x41\x04\x23\x48\x64\xa4\xc0\x5e\x63\x21\x37\x06\x36\x6f\xcd\x26\xdb\x00\xd1\xc2\x5a\x8f\x32\x02\x66\x0d\x37\x08\x4b\x45\xb0\x5c\x81\x60\x94\xad\xc1\x05\x70\x91\x53\xd7\xf7\x23\x80\xad\x2b\x09\x6a\xe3\xd4\xcd\x68\xc3\x53\xc3\x8d\xb5\xed\x32\x21\x68\xee\x46\x1c\xc0\x11\xe7\xaa\x85\xeb\x19\xf0\x3e\xb8\xe7\x9a\xdd\x7c\xca\x73\xc6\x17\x18\x61\x3e\x06\x49\x0b\x12\x50\xb4\x06\x3a\x9d\x72\x63\xdd\xf3\x07\x28\x31\xdd\x12\x04\x70\x6d\x44\x66\xb3\x39\xf8\x9a\x65\x82\x87\xa4\xd9\xe3\x0a\x62\xf0\xb6\x79\x71\xce\x43\x31\x44\x4c\xc1\x8b\x77\xcd\x25\xf2\x6e\x7e\xf4\xdc\x4c\xc7\x17\x68\xef\xb5\x37\x3a\x60\x7d\x2c\x62\xe3\x86\xf1\xdc\xe5\xc4\xf7\x37\x35\x84\xaf\x0b\x0e\x38\xbf\xcc\x14\xbe\xc7\x7e\x82\x61\xea\xca\x10\x91\xf4\x35\xfc\x95\x43\xbb\xa9\x30\xe9\x04\x5a\xd0\xcd\x43\x51\xb8\x25\xd0\x42\xc5\x43\xd7\x02\xc9\x0a\xb4\x8f\xd6\x09\x14\x56\x37\x0c\xac\xba\xdb\x05\x96\x09\x5b\x02\x84\x3a\x34\x57\xba\x1d\x7a\x98\x89\x9c\x4f\xe1\x3b\x8e\x32\xc7\xac\xef\x04\xb8\x88\xb0\x5d\xdd\xb2\x36\x27\xec\xc5\x53\xdd\xed\x5b\xc6\x73\x71\xab\xe2\xfa\x46\x7f\xb0\x4c\x1b\xc7\x93\x6f\x15\x24\x45\xb5\x66\x7c\xa1\xfa\xfe\x51\x52\x84\xa5\x29\x59\xda\xe5\x20\x0d\xbb\xdd\x73\x29\x6c\x69\xbd\x6d\x07\x5e\x60\x84\xd2\x1e\x42\x8b\xcf\x68\x1c\x8e\xbe\xee\xd6\x6d\x7c\xc6\x2e\x87\x63\x00\xfc\x2d\x39\x1c\x1f\xa2\x45\xa9\xc8\x1b\x69\x26\xa1\x19\x29\xae\x2a\xdf\x16\x78\xb0\x79\xf1\xbe\x79\x7f\x75\x3a\x64\x1c\x66\x79\xdc\x2e\xa9\xb4\x6f\x2b\xc3\x19\x48\x5e\x32\xa5\xfc\x03\xee\x86\x6e\xe9\x6c\x29\xc4\x0d\x1c\x36\x59\xbf\x0b\xa6\x97\xf5\x6c\x9a\x89\xb2\x97\x00\x3c\x51\x6c\xa1\x4e\x9c\x60\x9a\x98\xf5\xf2\x4d\x5f\xc2\x99\xf0\x82\x71\x07\x6f\xc4\x30\x03\xd7\x0a\x84\x7f\xb3\x62\xe8\x96\x24\x6b\x57\x1b\x4f\x7c\x88\xb2\xc5\xb6\xaa\x36\x17\x67\xc7\x46\x5e\x84\x95\xbf\xc2\x82\xe9\x4f\x6a\x3d\x6e\x1f\xfa\x8b\xa0\x7a\xfc\x0f\x1c\xfc\xc0\xf5\xb2\x7d\x04\x6d\xad\x36\x17\x5a\x37\x9f\x11\xc0\x71\xe3\xa4\x38\x2f\xd0\xd3\x7a\xe0\x1b\x4c\x43\xc4\x9d\x40\x6c\x83\x63\x19\xf6\x2c\x6f\x2c\x88\x0e\x25\xd1\xc3\x3b\x04\xb0\xde\x44\x4a\xb4\x98\x87\x00\x9e\x9b\xc9\x7a\x51\x10\x13\xf0\x88\xa8\x09\xd8\x1b\x39\x11\xf0\x01\x43\x83\x25\x92\x15\x00\x77\x47\x49\x03\x05\xfa\xa3\x19\x2e\x10\xcd\x78\x81\xb0\x8b\xef\xaa\xdd\xa6\x36\xc6\xdb\xf4\xff\xb3\xf7\x36\xde\x71\xdc\xc6\x9e\xe8\xbf\x82\xc3\x64\x1f\xc9\x84\x33\x94\xec\xdc\xdc\x44\x9b\x17\x1f\x46\xa2\x1c\x3e\x4b\x14\x9f\x28\xcb\x2f\xcf\xf2\x4d\x30\xdd\x98\x19\x5c\x76\x03\x1d\x00\x3d\xe4\x64\xbd\xff\xfb\x1e\x54\x01\xfd\x31\x33\xb2\xdc\x85\x96\x48\x39\x83\x3d\x67\x6d\x29\xd7\x35\x68\x7c\xd4\x17\x7e\xf5\xab\x7d\x1b\xe3\x9f\x37\xf6\x6d\x8c\xfb\x63\xdf\xc6\x38\x25\x18\xd8\xb7\x31\xde\xb7\x31\x86\xb1\x6f\x63\xbc\x6f\x63\x4c\x1c\xfb\x36\xc6\x1f\x9e\xdc\xbe\x8d\xf1\x67\xdb\x98\x61\xdf\xc6\xf8\xc3\x63\xdf\xa2\x60\xdf\xc6\x78\xdf\xc6\x78\x6b\xec\xdb\x18\xdf\xb7\x6b\xb1\x6f\x63\xbc\x6f\x63\x1c\xc7\xbe\x8d\xf1\x80\xb1\x6f\x63\x3c\x6c\xec\xdb\x18\x7f\x70\x3c\xb0\xc6\x46\xfb\x36\xc6\xfb\xc6\x46\x3f\x57\xce\xc3\x6b\x6c\xc4\xf6\x6d\x8c\x69\x63\xdf\xc6\x78\xf8\xd8\xb7\x31\x1e\x36\xf6\x6d\x8c\x87\xcb\xdc\xb7\x31\x6e\xc7\xbe\x8d\xf1\xbe\x8d\xf1\x67\x7a\x74\xf7\x6d\x8c\xf7\x6d\x8c\x77\x8f\xfd\x1b\xc1\xbe\x8d\xf1\xb0\xb1\x6f\x63\x4c\x17\xba\x8f\xf6\xe9\x72\x1e\x5e\xb4\xbf\x6f\x63\xbc\x6f\x63\xfc\xc1\x91\xe2\xba\x59\x97\x4b\x42\xaf\xae\x8f\x43\xc6\x1d\xd0\xb2\x1d\x82\xb3\x59\x3d\x9f\x0b\x03\x6e\x37\xcc\x94\x94\xb8\xd9\x5d\xee\x8a\x1c\xb4\x4b\x49\x39\xae\x01\xe5\x67\x85\x3b\x01\xde\x70\x8b\x25\x88\x30\x45\x1a\xe0\xb1\x3f\xc5\xc0\xf3\x06\x1d\xaa\x8c\xb0\xb4\xf8\x5a\x2a\x76\xfe\xea\xf9\x74\x04\x1e\xf2\x14\x0a\x4f\x58\x93\x57\x2a\x4b\x85\xbd\xb7\x87\x2c\x8d\x4e\x2f\x52\xe9\x85\xb3\x96\x15\xda\x22\xb6\x16\x37\x2f\x5b\x72\xa5\x04\x85\x85\x18\x15\xa2\x74\x90\x76\x9b\x09\xa1\x98\xae\x84\xc2\xca\x32\xce\xac\x54\x0b\x52\xd9\x32\x77\x8e\x67\xcb\xa9\xff\x7e\x15\x0f\x58\x68\x61\xd6\xcc\x9a\x72\xd5\x9c\x11\xbc\xc4\x83\x66\x44\xc9\x25\x4e\x97\xf1\xcc\x68\x6b\x59\x59\x17\x4e\x56\x09\x13\x66\x56\x40\xc1\xa2\xc5\xea\xd9\x78\x08\x18\xe9\xba\x59\x81\x60\x4f\x20\x8c\x6e\xd6\x20\x2c\x2f\xc9\x05\x6b\xaf\x1a\x04\xf0\x27\xd0\xc8\xb5\xac\xdc\x9a\xf9\xe3\x41\xd9\x7e\xc0\xfd\x4b\x63\x1d\xcb\x0a\x09\x11\x1c\xac\x83\x00\x4b\x06\x73\xa6\x20\x80\xb9\xca\xbd\x64\x15\xf6\xc8\x86\x4d\x52\x39\x38\xa0\x15\xc9\xe1\x87\x62\x26\xf8\x4c\xbc\x4c\x38\xdd\x5c\xda\x10\x50\x58\xd2\x44\x63\x0b\x0f\xbc\x5c\x71\x8f\xe0\x7a\xe5\x44\x2e\xfa\xf8\xcd\x41\x48\x67\xca\x09\xf7\x1f\xba\x6e\x84\xac\x78\x63\x02\xb0\x5f\x46\x54\x90\xa4\xef\xdf\x2e\x6b\x8b\x0c\xec\x60\x20\x08\x22\x3b\x26\x05\xae\xa9\x12\x2b\x6f\xbd\x44\x26\xe4\xca\x3b\xe1\x04\x91\x3b\xed\xc1\x27\x35\x07\x8e\x9b\x85\x70\x4f\xe3\x5a\xd1\xea\x1f\xfb\x7c\xf7\x73\xb4\xc3\x1b\x55\xa3\x49\x4a\x01\x96\xfe\x4a\xe7\xd7\x50\x2f\x8a\x34\xfa\x24\xcd\xb5\xa3\xbe\x2a\x2c\x01\x76\xd2\x19\x49\x64\xa4\x2b\xa0\xd1\xd2\x07\x0f\xc9\x2f\x9e\xad\x78\x26\x2c\x3b\xba\xb8\x7a\x7a\xc2\xae\x2e\x9e\x61\x65\x00\x41\xa6\x9e\xef\xe0\x58\x8b\x4e\x13\xa8\x34\xa2\x8e\xdd\xf5\xf9\xd2\x86\x82\x0b\x82\xcc\xdb\x25\x77\x70\xb1\x3a\x9f\xcf\x8d\xf7\x0f\xb8\xc1\x1e\xbd\xc4\x89\x56\x3a\x9f\xb2\x4b\xed\x44\xd3\x87\x61\x14\xbf\x05\x82\xf0\x90\x6d\x0c\xba\x0b\x7b\xfe\x50\xdd\x3a\x52\xd0\xeb\x84\x29\xa5\x02\xda\xa6\x97\xc2\x5a\xbe\x10\x57\x24\x10\xcb\xfb\x52\x64\x80\x63\x89\x36\x85\x6c\x8d\x0b\xe4\xd8\x6a\x62\xd4\xb6\x92\xe8\x90\x72\x99\x3b\x1f\xcd\x4a\xfc\xea\xe6\xe6\xdd\x1a\xe9\x1c\xe9\x50\x4b\x8b\x9d\xba\x00\xff\xb7\xc9\xe2\x48\x9b\x68\xa7\x4a\x8a\xbd\x8c\x13\xc5\x09\xfa\x9f\xf3\xb1\xa6\xa2\xf1\x13\x22\x58\x71\x66\xa4\x98\xb3\xb9\x84\x62\x24\x28\x9b\x39\xc1\xce\x10\x9c\x32\x5b\xae\x18\xb7\x56\x18\x58\xd7\x50\x36\x11\xd7\x77\xca\xbe\xa3\xf5\x04\x99\x09\xef\x2e\xaa\x8c\xb7\x7d\x56\x91\x55\x49\xce\xd9\x02\x0a\x74\x68\xf7\x9a\x2b\xf6\xbb\x47\x7f\xfc\x3d\x9b\xad\x9d\x08\xcd\xd0\x9c\x76\xbc\x88\x13\x26\x08\x2d\x84\x5a\xf8\xd3\x8e\x9e\x77\x9f\x63\x87\xda\x12\x65\x26\x58\x21\x4b\xe9\x90\xb7\xe7\xf1\x17\x37\xb3\x5e\x6a\x85\x20\xf1\x34\x17\xab\xd3\xce\x0d\x98\x14\x7a\x31\x65\x4f\xb9\xf2\x3a\x9d\xf4\xfe\x57\x57\x39\xe0\x07\x86\xa7\x4d\xc6\x55\x5c\xba\x90\xd9\x3a\xd5\x09\x09\x84\x6a\x6c\xa9\x6f\xb1\x13\x5f\xfb\x3b\x84\xa5\x89\xda\xa5\x2d\x1f\xae\x74\x55\x17\xb0\x5c\xec\x39\x8d\xff\x0a\x34\x55\x6d\xc5\x26\x19\xcb\x7b\x74\x39\x4d\x39\xc4\x69\x6e\xe4\x33\x50\x49\x24\x2c\x84\x0e\x4c\x06\xe1\x91\xb8\xe9\x9a\x43\xb2\x7b\x8c\x3d\xe7\x45\x31\xe3\xd9\xcd\x1b\xfd\x42\x2f\xec\x2b\x75\x6e\x8c\x36\xbd\x15\xa2\xdc\x63\xee\x83\xbf\x65\xad\x6e\xa0\xe1\x73\xf3\xf1\x85\x5e\x30\x5d\xbb\xaa\x26\x25\x71\xe6\x9b\xc7\xa9\x59\x13\x22\x0f\x5a\x13\xe9\x86\xd8\xb2\x33\x53\x71\x27\x69\x2f\x98\xb7\xd2\x2b\x30\xc5\x84\x5f\x47\xd4\x8a\xed\x57\xd3\x62\xfe\x8e\xfa\xfa\xe2\xd1\xef\xfe\x80\x0a\x97\x69\xc3\xfe\xf0\x08\x6a\xab\x49\x51\x2a\xb8\x02\xe0\xed\x49\xcb\x6c\xc9\x8b\xc2\x3b\xa6\x69\x8a\xd1\x5f\xc7\x8e\x22\x6c\xd4\xda\x27\xd5\x6a\x2e\x55\x81\x7d\xc4\x1c\xee\x9b\x37\x7f\x83\x04\xae\x74\x56\x14\x73\x52\x70\x5d\x58\xdd\xf6\xca\x3c\x84\x98\xf8\x30\xf8\x22\xce\xd4\x24\x15\x70\xbf\x59\xd1\x95\x2e\xea\x52\x3c\x13\x2b\x99\x51\x5e\xa7\x7b\x5b\xd7\x93\x45\x27\x30\x28\xa4\x85\x66\x46\xb3\x42\x67\x37\x2c\x0f\xe2\xda\xea\x14\x8a\x17\xb2\x4e\xe5\x24\x4f\xa9\x25\x22\xd7\x10\xbd\x77\x75\xdb\x0a\x20\xd2\x3b\x0d\x67\x25\xaf\x2a\xa9\x16\x7e\x99\x39\x33\xfc\xb6\xb7\xd8\x24\x99\x5e\xf3\x02\xf1\x68\x12\xf1\x7b\x22\xc6\x23\x05\xe1\x31\x09\x5f\x4f\xf4\x39\xc8\xe5\x45\xa9\xe0\x90\x76\xd6\xd4\xf7\xeb\xde\x31\x6b\xc5\xa5\x52\x90\x54\x20\x03\xb9\x27\x46\xea\x4d\xc6\xda\x14\x06\xce\xb3\x09\x7b\xfd\x81\x4e\xa0\xd9\x72\x9a\x8a\x1d\x48\x7e\xb0\x4f\x29\xe6\xea\xed\x9c\x6a\xa0\x11\x25\x77\xa4\x64\x05\x8e\x6e\xfe\x92\xb3\x4a\x18\x2b\xad\xf7\xd1\xdf\x82\x02\x7a\x5a\x70\x49\x7d\xff\x6e\x32\x7c\x95\xa6\x6e\x55\xc2\x72\xa3\x02\x85\xc6\xd6\xa9\x96\xee\x4a\xe7\x41\x1c\x18\x26\x48\x9b\x90\xf2\x9d\x5b\x69\x96\x54\x66\x99\xd1\xdc\xbf\xfb\x34\x75\x6f\xdb\x9d\x4a\xb7\x74\x5e\x4a\x63\xea\x50\x72\x30\x56\x44\x89\x9f\xaf\x81\x83\xb5\xf8\xdc\xec\x5b\x33\xe9\x51\x94\x24\x18\xb6\xe0\xab\xa4\x18\xb7\x36\x56\x6d\x1f\x1c\x97\x22\x28\x05\xb2\xd4\x36\xcd\x12\x32\xb1\xd3\x80\xf9\x56\xe4\x2e\xc7\xcd\x54\xd9\xe1\x93\xc3\x7b\x33\x72\xb8\x89\x46\x57\x7c\x01\xb9\x83\x51\xf6\x72\x53\x28\x79\x85\x72\x81\x69\x0d\x61\x21\x6d\x06\x72\xe1\xf1\x85\xee\xfb\x84\x59\x89\xbc\xe5\x04\x07\xa6\xff\x04\x16\x8d\xce\x91\x0b\x09\x13\x0d\x91\xf2\x6d\x02\xbd\x01\x37\xba\x56\x79\x00\x75\x34\x48\xa2\x97\x1b\x0b\x7b\x49\x27\x22\x84\x34\x4f\xec\x83\xe2\x43\x5c\xa8\x77\x96\x96\xcd\x84\xa3\x77\x19\x91\x8a\x3d\x9e\x3e\x7e\xf4\xf9\xfb\x6c\xb0\x26\x23\xf9\x6c\x97\x8d\xcf\x86\x56\xee\xde\x56\xc7\x08\x9e\xbf\x52\x05\x21\x13\x84\xa3\x5f\x36\x14\x9e\xa4\xbc\xd0\x89\x56\x09\x94\x31\x32\x76\x7a\x07\x51\xb7\x46\xba\x70\x83\x6e\x65\x42\xbd\xe9\x11\x24\x6d\x98\x36\x5d\x4e\xde\xe3\x36\x97\x97\x10\x92\x50\xf3\x41\xe1\xbf\x4f\x6c\x77\xcd\x98\xad\x67\x0f\xce\xee\xa2\x81\x45\xa5\xba\xeb\x3d\x95\xbe\xde\x41\xf2\xb6\x09\x26\x4b\xec\x42\x88\x0f\x0e\xd8\x11\xfe\xc2\x21\x92\x52\x1e\xdf\xdb\xf5\x0c\xdb\x7a\x7e\x57\x91\x1b\x12\xf6\xb6\xf6\xfc\xae\xe2\x2a\x17\x39\x06\xfc\x09\xae\x35\x8b\x2c\xcc\xbb\xf6\x38\xdd\x6c\x1e\xda\xfe\x1e\x93\x25\x76\xdd\xb3\xbf\x88\x25\x5f\x09\xa0\xee\x94\x05\x37\x09\xea\xc9\x69\x76\x8d\x3b\xc3\x66\xb5\x63\x42\xad\xa4\xd1\xaa\x14\x09\x4c\xe7\x2b\x6e\x24\x9f\x15\x82\x19\x31\x17\x46\xa8\x4c\x58\xf6\xeb\xa3\xb7\x67\xaf\xa1\x5a\x82\xde\x4f\x81\x1b\xc1\x44\xdc\xf5\xda\x42\x95\xfd\x48\xb7\xb0\xf3\xd9\xd3\x8d\x0b\x44\x57\xd1\x1b\x17\x2f\xae\xb3\xbf\x01\xf4\x35\x50\x79\xb3\x5f\x7e\x3d\xca\xda\xd5\xbc\x00\xf6\xd6\xac\xa8\xad\x5c\xdd\x87\xfd\x0d\x6c\xba\xcf\x24\xe1\x66\x6f\xb0\x10\xb7\x97\x66\x8b\xa2\x97\xf2\x61\x11\x73\x35\x5e\x3b\xf2\x80\x43\x3a\xb4\x4d\xd3\xa7\x6e\xaf\x1c\xf2\xa3\x1c\x2b\xe5\x62\x09\x09\x94\x4e\x9b\x3d\xb2\xd1\xea\x40\xc3\x4a\x40\x91\xdc\xd7\xf3\x9c\x0f\x3e\xce\x0a\xc9\xed\xb0\x30\x7c\x8b\x5d\x30\xc8\x80\xf6\xb3\x2a\x74\x4b\xe2\xc3\x80\x21\xf1\x7d\xc7\x4f\x09\x1f\xd0\x2f\xae\x02\x42\x35\xee\xa0\x54\xff\x2d\xb2\xa1\x2f\xc0\x4d\x36\xad\xd2\xf9\xa1\x0d\xe2\x01\x7b\x25\xe7\x54\xd6\x73\xf0\xcf\xa5\x45\x3a\xf6\x15\xf4\x7f\x9b\x6b\x03\x1c\xb8\x5e\xfe\xa5\x70\xfe\x76\x0c\x12\x59\xe9\x7c\x10\xa7\x1d\x2d\x1d\x47\x48\xc4\xed\xde\x6b\xb6\xd4\x45\x8e\x2c\xef\xe1\xd1\x68\xe0\x81\x9d\x09\x77\x2b\x84\x62\x17\x57\xb0\xd7\x7e\xd9\x00\xe1\xd8\xdb\xf1\x81\x32\xe3\xf9\x60\x1c\x8e\x21\x34\x05\xe9\xe4\x96\xe3\xee\x0f\x94\xea\xcf\xca\xb0\xe3\x41\xce\xe6\xd1\x93\x62\xcd\xfa\x25\x6a\xf8\xbf\x36\xfb\x10\x49\x14\xf8\x4c\x93\x28\x19\xfc\xc6\xe6\xb9\x21\xf5\x4f\xb9\x97\x5c\x73\x82\x81\x95\x55\x2a\x3e\xab\x59\xac\xf8\x26\xb6\xa4\x15\x61\x83\x62\x83\x83\xff\x09\x2d\xc8\xc5\xd5\x53\xb2\xf5\x38\xfc\x36\x40\xbe\xbc\xa0\xc3\x43\xcb\x64\x95\xb5\x58\xe7\x61\x1f\xd1\xe2\x73\x23\x7a\xa2\x89\x96\x87\x80\xf8\x68\x21\x72\x47\xf1\x27\x99\x52\xa6\x50\x88\xf7\xad\x02\x87\x2a\x01\xe7\x0d\x38\x19\x80\x78\xf7\xd6\xd7\x46\xe9\xd4\x25\x8e\x05\x29\x68\xe2\x01\xa6\x14\x8b\x1b\x2a\x6d\x9c\x1d\xce\x78\xdf\x75\xcf\x9a\x12\xee\xd6\x2e\x93\x08\x7c\x28\x49\x12\xfa\xae\x5f\x5d\x3c\x1b\xef\xf8\x57\x32\xff\x6c\x8f\xff\xd0\xfc\x67\x9f\xe7\xad\xd7\x3a\x26\x8a\xa3\x54\xcb\x5c\xe9\xfc\x3d\x81\x45\xeb\x04\x0c\x7e\xb5\x8a\xc7\x34\xd4\xfa\x71\x86\x8f\xb1\x93\xd8\x5d\x17\x8a\xb8\x87\x9f\xb7\x81\xda\x16\xc2\x85\xab\xba\x28\xae\x45\x66\xc4\xb0\x07\xeb\xfe\xb9\xbb\xd8\x90\x34\x86\xeb\xde\xc9\x27\x00\x17\x74\x10\x8c\x0e\x98\x1d\xba\xe2\xcd\x2d\x08\xdc\x7f\xe0\x91\x54\x75\x51\x00\x47\x8e\x5a\x53\x8e\x06\xac\x1f\xbe\x3c\x20\xfa\x4b\xda\x58\x47\x85\x85\xa0\xcd\x79\x19\xa8\x6d\x85\x15\xcd\x07\xc7\xa3\x52\x71\x6b\x11\x21\x2a\x55\x2e\x57\x32\xaf\x07\xae\xab\xff\x58\x88\x11\x03\xeb\x0e\xbc\xba\x34\x9e\x59\x49\xea\x14\xf8\x5c\x1b\x26\xee\xb8\x17\x79\xd2\xd4\x9e\x73\x0b\x17\x2d\xd7\xd9\x8d\x30\x27\x6c\x70\x3e\xfd\x19\xfc\x87\x4f\x21\x32\x86\x83\xdd\xac\x05\x37\xfe\x2e\x2b\x6d\x86\x86\x58\x03\x89\x10\xda\x92\x84\x53\xdc\xe3\x5f\xe1\x56\xae\xa5\x5a\x4c\xe0\x6f\xfc\x62\x86\x59\x4d\xb4\x9a\xf0\x89\x57\x06\x0f\x3e\xe0\x82\x66\xe0\xaf\x20\x92\x78\x1d\x6f\x57\x4c\x1f\x0c\x0d\x64\x84\xd2\xf5\x62\x09\x8b\x6a\x4a\x1e\x5a\x73\xb1\x42\x38\xe8\x81\x83\x78\xd8\x81\x22\x91\xe8\x3d\xcc\x2b\x0f\x21\x4f\xb7\x23\xd4\xe0\x5b\xcf\xa8\xd6\xef\x1e\x82\x2e\xda\x7b\xdf\x06\xdf\x49\xa7\x91\x68\x58\x49\x12\xed\xd7\xc0\xfb\xa2\x57\xc2\xac\xa4\xb8\x3d\x0d\xae\xe6\xe4\x56\xba\xe5\x04\x57\xcf\x9e\xc2\x16\x9c\xfe\x0a\xfe\x41\x98\x0b\x92\x85\x9d\xe5\x79\x78\x8a\xae\xad\x98\xd7\x05\x3e\xf2\xda\x29\xe3\x95\x7c\x2b\x8c\x95\x9a\x54\x72\x7e\x23\x55\x7e\xc2\x6a\x99\x7f\xf5\x89\x0a\x73\xa4\x92\x6d\x41\x70\x82\xc5\x7d\x11\xac\x64\x60\x6a\x95\xff\xc2\x2b\xd8\x6a\xae\x41\x9f\x33\x13\x85\x56\x8b\x0e\x93\x2d\x38\xfb\x17\x4a\x3a\xaa\x44\x4c\xdf\x43\x37\x38\x48\x6d\x6a\x93\x43\xb1\xb8\xf4\xe6\x46\xd3\xe7\x09\x7d\x06\x3b\x05\xed\xde\x74\xcb\xde\x3c\xa1\x54\x66\x60\xc1\x44\xe4\x02\xc3\x72\x80\x48\xd2\xe8\x34\x5b\xf2\x95\x68\xfa\x0f\x0d\xac\xeb\x97\x96\x2d\xb9\xca\xe1\x3f\xcd\x32\x6d\xf2\xb0\xbe\xd2\x35\x55\xf9\x58\x8e\x35\x34\x5d\x18\xa0\x93\xde\x72\x73\xb5\xf9\xf5\x90\x39\x34\xe5\x40\xe7\xa0\xfd\xef\x63\xd0\x54\x2b\xf9\xcf\x5a\x30\x5e\x6a\xef\x20\x25\xf4\xc2\xdf\x38\x45\xac\xe4\x6b\xf0\xa6\x61\x69\x5f\x44\x7e\xa1\x61\x87\x0b\x1b\xc1\x9d\xb0\xd7\x82\xe7\xb2\x43\xd6\x7b\xc2\x5e\xf4\xd9\x7b\x87\x1d\x03\x6d\xd8\x35\x52\x5c\x86\xff\x1c\xab\x7b\x8c\xb0\xba\x36\x99\x78\x8d\xc0\x38\xef\x3c\x0d\x3b\xb6\x7a\xbe\x63\xa3\xfc\x0d\x71\xfc\x46\x28\x4c\x2a\xfb\x23\x32\x14\xe1\x99\xd7\x06\xee\x43\xb6\x14\x79\x0d\x9e\xec\x6c\xcd\xe6\xde\x3f\x0c\xaf\x65\x4b\xb9\x58\x8a\x81\xa9\x9f\x90\x26\x38\x85\x9a\x24\xec\x9b\xca\xb3\x65\xb3\x08\xa0\xf6\x86\x2d\x6b\xc3\xeb\xd1\x3e\xe3\x95\xfc\xce\xaf\x0a\x98\x2a\xee\x08\x14\xb8\x21\x9f\x68\xeb\x32\xda\x3b\x3c\xf5\xdd\x63\xca\x5e\xf8\x4f\x18\xae\xb7\x78\x55\x15\x32\xfa\xda\xfd\xc3\x0b\xd5\x07\xe1\x1d\x76\x90\xdc\x39\xb7\x4b\xa9\xd5\x96\x52\x65\x19\x3e\xd6\x64\xb5\xf1\xc6\x7a\xa0\xab\x3c\x13\x8c\xe7\xb9\xf7\x95\x0c\x33\xa2\xd4\x2b\xaf\x15\x13\x9f\x7f\xd2\x48\xc3\xfc\x82\x4d\x3a\xfe\xf3\xc3\x77\x8a\xcf\x02\x5d\x11\x6e\x7b\xb6\x61\x47\x07\xbb\xb0\x1c\x1d\xe0\xd8\x39\xca\xd4\xaa\x2d\x5b\xf1\x56\xf5\xd3\xb8\xa1\x34\x0c\x2f\x01\x7f\x4b\xf7\x77\xb9\x59\xa4\xbe\x2f\x1c\x9e\x99\x45\x0d\xea\x38\xfa\x2d\x6d\xeb\x76\x8a\xdb\xeb\x95\x3d\x86\xad\x18\xdb\x1f\x1e\x5a\xf6\xf4\xe5\xb3\x08\x2f\x24\x48\x94\x21\xc3\x19\x38\xd4\x2a\xa3\x57\x12\xda\x0f\xbe\x0d\xb0\x09\xca\xa3\xf4\x4e\xa0\x45\x0f\x30\x41\x90\xba\x0b\x62\x71\x68\x7b\x58\x09\xda\x93\x3c\x6f\x21\x22\x59\xa3\x99\xbc\x35\x29\x56\xb4\x27\xf4\x5e\x98\x18\xb3\x0e\x52\x55\xb5\xa3\x23\x96\x9a\xbc\xb1\xca\x96\x5c\x2d\x10\x4a\x2a\x12\x81\x2c\x76\xad\x1c\xbf\xf3\x5f\xed\x45\x0b\x9b\xf1\x4a\xe4\xa1\x7c\x98\xe5\xba\xa6\x6d\xff\xaf\x7f\x7d\xc2\xa4\x78\xc2\x7e\xdd\x99\xdc\x94\x9d\x07\xe9\xed\xe1\xa0\xae\x02\x32\x2f\xcd\xda\xc3\x74\xc2\x8c\x58\x70\x93\x17\xb4\x26\x3b\x7a\xce\x6e\x3b\x74\x76\xcd\x61\x10\x77\xd2\x3a\xcb\x48\x94\x33\x4a\xbb\x5d\x76\xae\x63\xbb\x08\x42\x7f\xc2\xda\x39\x6e\x6f\xbc\x6d\xf3\x7a\x78\x92\x73\xc7\x27\x1d\x63\x71\x8a\x59\xdb\x49\x68\xb2\x3c\xe1\x41\x29\xb5\x66\xf0\xf4\x57\xa6\x56\xca\x07\xc6\xbc\xf9\xbf\x92\x6a\xc2\x27\xd0\x92\x97\x1a\x79\x7e\x3e\x2f\x9a\xe4\xee\xe5\x7d\x6d\x7f\xde\x28\x77\xfc\x76\x60\x1c\x22\x7c\x49\x13\x97\x36\x86\x39\xb4\x46\x6e\xf5\x3f\x45\xd5\x47\x8b\x71\x7e\xf9\xe6\xf5\xdf\xae\x5e\x5d\x5c\xbe\x89\x86\x23\x9a\x01\x8a\xd4\xf7\x19\x8e\xb4\x9b\xfe\x3e\xc3\xd1\x9a\x81\x14\x20\xd2\xa6\xe1\xe8\x9b\x01\x8a\xe4\x6d\xc3\xd1\x37\x03\x94\x95\xdd\x36\x1c\x3b\xcc\x00\xd1\x8b\xe8\xae\xef\x4e\x33\x40\xd2\xce\x1d\xc3\xb1\xdb\x0c\x10\xa4\x6e\x1b\x8e\xbe\x19\x20\xdd\xaf\x6d\xc3\xd1\x31\x03\x44\x93\xbf\x6d\x38\xba\x66\x80\x20\x74\xb7\xe1\xd8\x9b\x81\x9f\xf3\xa3\x24\x33\x20\xd4\x2a\xd1\x04\xc4\xac\x67\x47\xb9\x34\xe7\x82\x44\x72\xd6\x6b\x32\xdb\xa1\xef\x1b\xe3\x50\x7d\x1e\xfb\xd9\x87\xd9\xab\xd5\x5b\x6e\x98\x11\x95\x11\x16\xe2\x2a\x62\x59\xc7\xae\x0d\x62\x41\x28\x8d\xba\x90\x31\xde\x22\x86\x3f\xbb\xaa\xd8\x7b\xaa\x6b\x1d\xad\x86\xac\xfb\xb0\x34\x66\xd5\xc0\xb4\x69\x37\xc4\xd9\xd3\xbf\x5f\x3c\x3b\xbf\x7c\x73\xf1\xfc\xe2\xfc\xf5\xbd\x15\xae\x24\x35\x72\xed\xbb\xab\xe3\x78\x6a\x38\x7e\xda\x5f\x23\x8b\xc5\x5e\x06\x62\x25\x75\x0d\x10\x77\x00\x9f\x8c\xb9\xbf\x76\x4b\xb7\x92\x45\x02\x0f\xb4\x5a\x43\x83\x56\x99\x8d\x7b\x0c\xed\x74\x67\xa6\x82\x2c\x77\x54\x47\x15\xc7\x4f\xb8\xab\x64\x99\xa3\x66\x3b\x70\xbc\x3f\xe7\x41\xdf\xf8\xb1\x5d\x5e\x1c\x3f\xe9\xf8\xa6\xec\xfc\x7b\xdc\x5f\xb2\xc8\x9f\xc8\x9e\x90\x65\x46\xe7\xb9\x5f\xfd\x44\x6e\x84\x34\x8e\xda\x7d\x6e\x74\x39\x8a\xea\xbd\xc6\x97\xaa\x00\x6d\x22\x2f\xd2\x2e\x27\xe6\xd0\x0e\x07\xe7\xf5\x47\x27\x6d\x15\x52\x03\xb1\x65\x0b\x59\xa4\x97\x07\x34\x87\x69\x66\x33\xa9\x85\xfe\x18\x7d\xe7\xb1\x1a\xea\x25\xaf\xbe\x11\xeb\xd7\x22\xa1\x57\xd2\xe6\x79\x10\x85\xc8\xbc\x33\xcb\x6e\x04\xbd\x78\x92\x85\x97\x5c\xf6\x34\x4e\x33\xa5\xc9\xd4\x08\x4b\xce\x92\xfb\xcd\xe1\x98\x24\x2e\xcb\x18\x5b\xef\xc7\x8d\x20\x97\xf3\xc7\xb1\xd5\x42\x3f\x75\xc3\x59\x8c\x12\xfd\x09\x4a\xd9\x6f\x36\x4e\xb7\x38\x1c\x29\x7e\x7d\x1c\x3b\x91\x63\xe9\x6b\xd5\x45\x9e\x41\x5a\x25\x59\xe4\x03\xc1\xa1\xf5\xc7\x6e\x54\x5a\xb2\xd8\x71\x50\x6d\xfd\x91\x82\x71\xeb\x8f\xd1\xce\x6f\x04\x86\x8f\x7a\x86\x11\xf3\x9f\x7e\xdd\xbb\xfe\x56\xa3\xea\x93\xa5\x22\x27\xac\xd7\x47\x11\x62\x95\x2c\x32\x04\x6c\xa3\x6c\x6a\x0a\x87\x07\x8b\x07\x77\x4c\x9b\x7d\xd8\x18\xed\xa4\xef\x43\x2e\xa0\xa6\x9f\x65\xfe\x24\xb6\x93\x48\x53\x01\xa5\x70\x3c\xe7\x8e\x4f\xbd\x36\x39\xe9\xff\x11\xe0\xc6\x69\xd7\xf6\x1f\x8d\xc0\x82\xcf\x44\x61\xbf\x3f\x3c\xfc\xd3\x37\xe7\x7f\xfb\xf3\xe1\xe1\x0f\xff\x18\x4b\x32\xb8\xa1\x58\x04\x30\x9e\x78\x5b\x89\x6c\xaa\x74\x2e\x2e\x61\x5d\xe0\x8f\x21\x60\x3f\x43\x80\x1b\xfc\x0f\x69\xbf\x01\xfc\xea\x53\xac\x15\x3c\x89\x7f\xac\x74\x7e\x71\x35\x8a\x60\x90\x64\x13\x9a\xc2\x3e\x30\xe7\x0e\xae\x00\x91\x91\x2f\x8e\xb1\x5c\xbc\xd6\xae\x8d\xaa\xfa\x83\xcc\x74\x25\x8d\x7a\xc2\x66\x4b\x51\xf2\xa4\xd8\x31\x8e\xe7\x71\xf1\x99\xb4\x09\x7d\x53\xfa\x43\x2a\xe0\xc8\xb7\x4c\xcf\x47\xe9\x86\x8c\xc3\x69\x76\xb0\x7a\x7c\xf0\x60\x9c\xdc\xe6\xdc\x8e\x7a\x54\x60\x2f\x46\x72\x74\xd1\xb8\x34\xe1\xc1\x28\xfb\xba\xec\xd4\xab\xb2\xb3\xab\x8b\x64\xa1\x2b\xbc\x1b\x0f\x62\x5b\x23\x88\xf8\xf9\x03\xf5\x16\x1a\x90\xf3\x26\x97\x74\xda\x11\x04\x66\x8f\x28\xdb\x62\xb7\x87\xb4\xfb\xca\x55\x1e\x81\xda\x96\x1d\xa1\xc0\x69\x56\xd5\x69\x06\x30\xc8\x29\x45\xa9\xcd\xfa\x24\xfe\xb1\x69\x42\x36\xb1\x4e\x1b\xbe\x48\x34\xdf\x71\xda\x30\xdd\xf6\x4f\xf8\xa3\xa3\x2d\xca\xf6\xac\xe9\x39\x6d\x16\x70\xe1\x0d\x46\x3b\xfa\x90\xa4\x7e\x3e\xed\x78\x50\x5e\x42\x3c\x9e\x0f\xc0\x49\xc8\xd2\x1a\x26\xf6\x47\x5f\x4d\x3c\x4d\x7e\x86\x8a\x03\x52\x30\xcd\xda\x13\x5b\xe7\xf5\x47\x60\xfb\x3e\xa1\xd5\x4d\xef\x1a\x50\xbd\xa1\x56\x6c\xc5\x0d\xb1\x61\x77\x3b\x46\xb3\xeb\xb9\x5c\x49\xab\x13\x55\xea\xfb\xea\xfd\x47\xb1\xeb\xa1\x95\x0f\x56\xb6\x8e\xe5\x54\x8a\xbb\x0a\x3a\xbb\x36\x76\x20\x3d\xb3\x93\x77\x5f\x6f\x1e\xd3\xc9\xeb\x70\x54\xdc\x39\x61\xd4\x13\xf6\x5f\x47\xef\x7e\xfb\xe3\xe4\xf8\xab\xa3\xa3\xef\x1f\x4d\xfe\xf8\xc3\x6f\x8f\xde\x4d\xe1\x5f\x7e\x73\xfc\xd5\xf1\x8f\xf1\x0f\xbf\x3d\x3e\x3e\x3a\xfa\xfe\x9b\x97\x5f\xbf\xb9\x3a\xff\x41\x1e\xff\xf8\xbd\xaa\xcb\x1b\xfc\xd3\x8f\x47\xdf\x8b\xf3\x1f\x7e\xa6\x90\xe3\xe3\xaf\x7e\x9d\x38\x71\xae\xd6\xaf\x92\x5c\x09\x06\x1a\x30\xbd\x37\xfd\xb6\xb4\x11\xae\x0b\x63\x77\x93\x36\xe9\x39\x91\xca\x4d\xb4\x99\xa0\xe0\x27\xc0\x36\x3b\x8a\xcb\x33\xae\x9e\x7d\x3d\x82\x4d\xea\xcf\xaf\x75\xb3\x1f\x84\x22\xc3\xe2\xff\x87\xfd\x4e\x85\x73\xec\x71\x96\x25\xbf\x3a\x40\x72\xeb\x97\xe2\xf3\xec\x9f\xbd\x7e\x6a\xc4\x64\x08\x9e\xa2\xf1\xa2\xdc\xb9\xd1\x65\xec\x39\x00\xc0\x2f\xe0\x3c\x4c\x16\x1b\xe6\x79\x23\xc8\xaf\xe0\x71\xec\x9f\xe9\x28\x63\xff\x4c\x97\x36\xf6\xcf\x74\xc3\x46\xf7\x99\x0e\x69\xa7\xf6\x6f\x74\xbb\x86\x50\x2b\x1a\xb0\x6a\x27\xf2\x3e\xe6\xb0\x3a\xed\x6f\x09\xdf\xb6\x13\xbf\xbf\x0d\xc3\x27\x48\x0e\xc6\xaf\x45\xb3\xb6\x35\x5e\xd4\xf4\x46\xb9\x1b\xa1\xcc\xce\x8a\x82\x49\x45\x35\x5e\x30\xc9\x58\x6f\x64\x04\xa6\x93\x22\xd7\xec\x8a\x06\x6a\xbd\x5d\x8a\x8d\x25\x04\x4e\x45\xc7\x8d\x93\x6a\x41\x59\x4e\xe8\xd9\x02\xee\x68\x2c\xbb\x91\x8a\x95\x75\xe1\x64\x55\x08\x96\x10\xc8\x22\x98\xb1\xa8\x05\xe3\xd6\xea\x4c\xf2\x58\x8f\x07\xff\x4b\xc1\x49\x7c\xa5\x21\x52\x80\x55\x75\xfc\x06\xb0\xcd\x99\xc8\x85\xca\xc4\x94\xbd\xf5\xbf\x46\xb1\x28\xf1\x24\xcd\xd6\x7e\x6f\xce\xd5\xaa\xa9\xc4\xaa\xb1\xf8\x87\x72\xa8\xfc\x8a\xee\x9e\xe7\xbf\x6f\xe9\x89\x57\x53\x01\xba\xd9\x56\xa0\x90\x34\x27\xf8\xad\x4d\x26\x9f\x43\x91\x8f\x9e\xb7\x68\x0e\x52\xad\x50\x5a\xe4\x92\x1a\x2d\x34\xd8\xc8\x84\x80\x73\x2b\x4c\x68\x16\x24\xa5\x67\x14\x86\x05\xe0\xd6\x13\x65\x3c\x10\xf8\x69\xaa\xbb\xfe\x5e\x2e\xb6\xc4\x04\x4d\xd7\x4d\x7f\x78\x6e\xf6\x47\x70\xb1\x77\xb8\xd7\xe8\x1e\x27\x49\x4d\x75\xad\x47\x71\xab\xc7\x70\xa9\x77\xb9\xd3\x09\xc5\xb5\xed\xe8\x21\xde\x46\x71\x81\xd3\xdd\xdf\x74\x78\x5a\x65\xc4\x5c\xde\x8d\xa2\x33\xcf\x5a\x4e\x5b\x26\x73\xa1\x9c\x9c\xcb\x94\x46\xc3\xda\x4f\xae\x12\x0a\x40\x04\x40\xb3\xe5\xfd\x82\xc4\xd6\x46\x2d\x3c\xfd\xa1\x15\xd7\x61\x8a\x66\x4c\x03\x76\x3d\x56\x72\x6a\x6f\xbd\xf6\xd6\x6b\x6f\xbd\x3e\x34\x1e\xbc\xf5\x0a\xfa\x20\x86\xec\xf7\x6b\x7e\x80\x11\x26\x95\xf4\xe6\x59\x87\x8f\x0c\xee\x38\x39\x5d\x9b\xc0\x7f\x4d\x4a\xc4\x74\x3b\xb1\x36\x56\xd3\x69\xc6\x8b\x42\xdf\x12\x24\x02\x99\xa5\x61\x85\x58\x89\x22\x84\x43\xac\xe4\x8a\x2f\x80\x91\x93\x16\xc1\xc4\xb6\x5e\xda\x30\xaf\x70\x8c\xcc\xc5\x66\x3f\x2d\x12\x6b\x8f\x62\x91\x17\x11\xc4\x19\x5d\x14\xc2\x58\x56\xc8\x1b\xc1\x9e\x89\xaa\xd0\xeb\xe1\x2c\xa2\x38\xa0\x27\x9c\xe3\xce\xab\xa9\x6b\xe1\x28\x38\xe5\x94\xde\x34\x91\xe8\x1f\x99\x6b\x53\x0f\x37\xf4\x0d\x00\x66\x7a\x56\x21\x15\x2e\x7b\x45\x6a\x03\xac\xe7\xec\xac\xb8\xe5\x6b\x7b\xc2\x2e\xc5\x4a\x98\x13\x76\x31\xbf\xd4\xee\x0a\x93\x08\x14\x87\xa7\x5b\x19\x8b\xa2\x99\x9c\xb3\x27\x05\x77\xc2\x3a\xe6\x38\x45\x89\x4a\xdb\xed\x21\xa1\x4d\x6f\x92\x6d\x9f\xd8\x71\x7a\xf2\xa7\x93\xde\x83\xa4\x86\xf2\x9e\x00\x20\x4a\x38\x68\x45\x24\x06\x4e\x3c\x62\x67\x48\x15\x8c\xc4\x9c\xc8\x3c\x1b\x35\x06\x25\xc1\x08\x6d\x3a\x62\xff\x56\x48\xdd\x49\xc5\x8c\xb0\x95\x56\x56\xd0\x54\x50\xab\x6e\x9a\x6f\xc6\x04\xb0\xbd\xd7\x5c\x20\xd1\x9f\x4d\xf3\x64\x2b\x6d\x1d\x30\x30\xd3\x1c\x8c\xbe\x72\xb9\x8a\xc2\x80\xd6\x9b\x17\x05\xd9\x11\x90\x65\x29\x72\xc9\x9d\x28\xd6\x8c\xcf\x9d\x30\x8c\x27\x13\x5a\xf8\x39\x19\xc1\x23\x8f\x39\xb0\x35\x03\x5b\x38\x89\xc0\xbc\x1d\x5b\xe9\x7f\x6c\x3b\xcf\x87\x76\x3a\x6c\x07\xc2\x6a\x03\xe9\xfa\x16\x95\x39\x51\x68\x10\xd8\xaa\x7d\xf0\xbe\x93\x2e\x27\x6b\x31\x0b\xed\x02\xcc\x0a\x9d\xdd\x58\x56\x2b\x27\xa9\x5e\x3d\x76\x10\xd2\x37\x2c\xd3\x65\x55\x80\xf2\x4c\x23\x9a\x64\x3f\x4d\x36\xb9\x4b\x23\x37\xff\x3a\x69\x94\xc4\xc4\xcf\xc9\x9e\xfe\xaa\xfd\x9f\xe0\x2f\x68\x31\x42\x72\x0c\x9b\x1e\xc1\x8a\x3b\x91\xd1\xe3\x8a\xde\xd5\x7f\xa5\x04\x9c\xda\xa4\x56\xee\x8c\x69\xd5\x14\x02\xcc\xb5\x77\x5a\x81\x6c\x3d\xad\xaf\x33\xdb\x68\x48\x76\x7e\x27\xb2\xe6\xcf\x29\xa1\x2c\x74\x57\xcc\x62\x1f\x16\x6f\x9a\xe8\x30\x98\x51\x40\x5a\xe3\xc0\xa3\xc8\xd4\xa1\xdd\xb1\xd1\x76\x18\x24\xa6\xf0\x6d\xe0\x40\x45\x83\xc2\x0a\xa9\x88\xe6\xbf\x3b\x02\x31\x69\xb7\xe5\x4d\x73\xbb\x53\x01\x26\x5e\xd8\x56\x97\xe5\x44\x99\xb1\xab\x67\x5c\x85\xf4\x35\x35\x5a\x3b\x76\x74\x78\x7a\x78\xbc\x85\x06\x48\x04\x2f\x62\x37\x4b\x74\xe0\x90\xee\x28\xcc\x3a\x51\xaa\x84\xbe\xec\x15\x34\xe5\x16\xd9\x61\x7e\xc2\x64\x2a\x10\x25\x70\xbe\x9a\x5a\xc5\x93\x90\x56\xd5\xc4\x90\xdf\xf6\x84\x59\xcd\x9c\xe1\xb9\x1c\xa5\xba\x00\x64\xfa\x09\x3a\x53\x07\x27\xfb\xe8\xf0\xc7\xc3\xd4\x73\x2a\x5c\x76\xcc\x6e\xb5\x3a\x74\x70\x5c\xa7\xec\x4d\xea\xad\xaa\xad\x88\x14\xbf\x27\xc0\xcd\xaf\x44\x3a\x20\x47\x33\x71\x57\x15\x32\x93\xae\x58\x83\x73\xc9\x74\x9d\xba\xef\xc0\x61\xcf\x5d\x64\x23\x3e\xbf\x4b\x3e\x49\x58\xd1\xec\x8d\xd8\x23\x70\x05\xd1\xe1\x4c\x14\xca\x2d\x2b\xe4\x4a\x9c\x2e\x05\x2f\xdc\x72\x3d\xb8\x2f\xce\xf6\x50\x5a\x4d\xfe\x25\x8c\x06\xbe\x64\x15\xe4\xa6\xa1\x38\x53\x00\x0d\xdd\x41\x06\x37\x6c\x4f\x26\x29\xf7\xea\xfd\xc5\xaf\x05\x31\x2e\x62\x5b\xad\x61\xdf\xbc\xb9\xfa\x5a\xb8\xd1\x1c\x0f\x3f\xbb\x58\x7a\x07\xaf\x5a\xc2\xcc\xb5\x29\xef\xd9\x03\x49\x07\x89\x4f\xa0\x0f\xed\x3d\xbb\x40\x4b\x6d\x13\xf6\x9d\xed\x6e\x0b\x4c\xe3\x23\xed\x0e\xec\xe2\xa5\x44\xe6\x77\x7c\xb4\x32\xf4\xb6\xff\x18\xbb\xb8\x9a\xb2\xbf\xe9\x1a\x5a\x31\xf1\x59\x92\x27\xef\x47\xec\xc8\x62\x85\x63\x07\x7e\x11\x0e\x52\x1e\x5a\x71\xf8\x73\xff\x57\xc1\x73\x6c\x0d\x64\x9d\xe0\x24\xc6\xf0\x76\x8c\x04\xdd\xed\xcc\x6b\x4c\xcf\xb9\xb6\x4e\x97\x6c\x89\x82\xd3\x37\xba\x43\xbd\x1c\x74\x47\x2a\x72\xdf\xeb\x35\x7c\x5f\xb0\xcc\x88\x6a\x0c\x6b\x17\xbe\xf6\x17\x64\x8d\xb6\x2c\x01\x9e\x94\x44\xa9\x51\xee\x4c\x58\xc6\x59\x06\x47\x25\x59\x24\x2e\xbe\x3f\x2b\x81\x2e\x31\x59\xa2\x54\x78\x48\xb0\xbf\xdb\x28\x76\x3d\xb9\x98\x89\x8d\x54\xd0\xc4\x52\xa8\xa6\xfb\x42\x86\x37\x64\xdb\x1e\x63\xd5\x47\xb1\x91\x2a\x69\xd8\x0e\x00\xc9\x08\x22\x9b\x53\x8a\x8f\x9d\x23\x2c\x3f\x1b\xb3\x86\x83\xa5\x92\x5a\x77\xc7\xc7\x5f\xbe\x31\x0e\x1e\x1b\x6f\xfd\xaa\x64\xfa\x99\x6d\xf2\x19\x6c\xf6\x48\x6b\xa6\xd4\x1d\x1a\x4d\x27\xa8\x33\x2b\xcc\x8a\x56\x30\xd1\x8e\xb1\x96\x4c\x53\x9f\x6f\xe2\xd8\xc1\x3c\x6f\x98\xaa\xcb\x59\xb2\x91\x6a\x78\xe0\x8c\x1b\x7b\x1b\x3a\xcd\x23\x2e\xc7\x98\x6a\x84\xb0\x44\x07\x89\xab\x45\xea\xbd\x78\xec\xbf\xf9\xf7\xff\xf1\x1f\x5f\xfe\xc7\x14\x97\xd5\xff\x46\xa2\xcc\x99\x60\x5c\xb1\x8b\xb3\xcb\xb3\xbf\x5f\xbf\x7d\x0a\x9c\xdc\x69\xa7\x70\x84\x62\xfe\x31\x4b\xf9\x47\x2c\xe4\xff\x88\x65\xfc\x40\x58\x96\xa8\xe1\xfb\xb8\x2c\x10\x98\x9e\xd1\xae\x2d\xd2\x70\x87\x48\x11\x9f\x0d\x47\xc8\x64\xfb\x98\xb8\xc7\x5e\x3e\x42\xe0\x70\xef\xda\xd3\x65\xd5\xb5\xce\x6e\x46\xcb\xf2\x1c\xbe\x79\x7a\x85\x02\x47\x49\xf4\x70\x15\x1f\x98\xa4\x5a\xe9\x62\xe5\x37\x93\xb3\x37\x4f\xaf\x12\x8d\xc5\xd4\xcb\x80\x17\x56\xcc\x7b\xaf\x93\x2a\x39\x1b\x6a\xa6\x00\xed\x94\x65\x55\xa4\xbc\x28\x33\xe8\x40\x60\x04\x2f\xa4\x75\x32\x83\xb9\x16\xa4\xae\xd5\xfd\xe1\xbf\x97\x8e\xe7\xdc\xe7\xc7\xda\x31\x72\x7e\xec\xf0\xd5\x48\x55\xcf\x4d\xa2\xad\x93\x2a\x4b\x4e\x9a\x9c\xf4\x48\x7f\xd2\x19\x2a\x43\xa2\x2d\xad\xe4\xfc\x81\x7a\x8e\xe0\x86\xd1\x1a\x8c\x76\x87\xea\xf4\x3e\x0a\x9e\x63\xea\x0b\x0a\xf8\x9d\xdb\x9e\x63\xa2\xd8\xf0\xc1\x7d\xcf\x31\x35\x2f\xe1\xfd\xce\x2d\xcf\x71\x24\xdf\x76\xef\x39\xfe\xbc\xf1\x11\x3c\xc7\xca\x88\x6b\xa7\xab\x51\x70\x76\x28\x6a\x54\x94\xdd\x4c\xcc\xb5\x11\xe3\xc0\xec\x5a\x00\x1c\xcb\x6b\x50\xc6\x5c\x25\x30\xab\xc6\x67\x2e\xdd\x85\xab\x91\x4b\xf6\x19\xb8\x2c\xd9\x32\xbe\xaa\x2a\x61\xed\x29\x40\xe3\xea\x0a\x93\x94\x44\xa1\x73\x2e\x8b\xda\x88\x13\xbf\xd3\xa2\x84\xbd\x3a\x49\x25\x79\xf4\x9b\x21\x14\x8a\x12\x2e\x43\x18\x45\x40\x2d\xd2\xf7\xc7\xfb\x7c\x78\x70\xb0\x4f\x6e\x7a\xb3\xb0\xcc\x70\xbb\x14\xd0\x22\x54\xdc\x49\x67\x71\xa2\x46\x70\x4b\xe6\x88\x06\xa8\x4b\x38\x48\xe0\x02\x5b\x56\x71\x6b\x45\x4e\xb7\x06\x1d\xc8\x27\x4e\xf0\x4a\xe7\x87\x87\xb6\xfb\x33\x44\xc9\x0b\xc3\x33\xc1\x2a\x61\xa4\xce\x19\xb0\xae\xe7\xfa\x56\xb1\x99\x58\x48\x45\x8d\x00\xc2\x8d\xf4\x93\x8e\x17\xde\xbb\xb0\x22\x01\x48\x15\xfb\x30\x4f\xd9\xeb\x5e\x9f\x58\xba\xd5\xd2\xb5\xcb\x74\x6b\xad\xc3\xea\x9e\x24\x48\x6c\x91\xa4\xc0\xd6\x00\xd7\xbc\xe6\x45\xb1\x6e\xd5\x0a\x51\x72\x20\x26\x71\x1f\x6b\xe3\x3f\x33\x4c\xad\xbf\xac\xa9\x12\xbb\x17\xb4\xbb\x14\x74\xdd\x64\x04\xcf\x96\x69\xc5\x14\x7b\xe8\xee\x07\xc6\x1e\xba\xbb\x87\xee\xbe\x77\xec\xa1\xbb\x7b\xe8\xee\x1e\xba\xbb\x87\xee\xee\xa1\xbb\x7b\xe8\xee\xc0\xb1\x87\xee\x7e\x68\xec\xa1\xbb\xef\x1d\x0f\xf2\x69\x62\x0f\xdd\xdd\x43\x77\x7f\xf6\xd8\x43\x77\xf7\xd0\xdd\x61\x72\xf7\xd0\x5d\xd2\xd8\x43\x77\x7f\x72\xec\xa1\xbb\x29\x63\x0f\xdd\xa5\x8e\x3d\x74\x77\xf0\xd8\x43\x77\xf7\xd0\xdd\x84\xb1\x07\x60\x10\xc6\x1e\xba\x3b\x42\xe0\x70\xef\xda\x73\x0f\xdd\xdd\x43\x77\x7f\xe6\xd8\xe7\xc7\xda\xb1\x87\xee\x26\x8c\x3d\x74\xf7\x83\x63\x0f\xdd\xdd\x43\x77\x13\x64\x3d\x3c\xcf\x31\x42\x44\xaf\x8c\x9e\x25\x53\x4b\x5f\x01\x38\x4a\x66\x98\x51\xf3\xf7\x24\x05\x78\x19\xa7\x36\x65\x4f\xfb\x98\x39\xe8\x6f\x15\xe8\x23\x09\x72\x03\x26\x14\xe7\x08\xd4\x98\xd3\x1d\x6c\xb7\x04\xc1\x03\x21\x5d\x91\xd0\xd9\x9e\x56\x1a\xff\xbf\x16\xd0\xd5\x41\x72\x61\x76\x92\xca\x95\x7b\x2f\xac\xab\x74\xf8\xd6\x7b\xa1\x5b\x4c\x93\x68\x9c\x59\x1b\xe8\x6f\xc2\xb6\xfa\xe0\x2b\xa2\xec\x3e\x64\xab\x0f\xbc\xa2\x7a\xfe\x64\xb8\xd6\x03\x00\xee\x25\x43\xb4\xde\x03\xcf\x4a\xb4\x5e\x1b\xd0\xac\x08\xae\x4a\x90\xb8\x13\x96\x95\x38\xcb\x2d\x48\x56\x04\x55\x8d\xf0\xe5\x80\x3d\xed\x02\xaa\x12\x5f\xf9\x3b\x50\xac\x2e\x98\x2a\x41\x6a\x07\x86\xb5\x0d\xa4\x4a\xd9\x29\xb7\x0b\x44\x15\x30\x40\x29\xc1\x65\x0f\x40\xb5\x03\x02\x95\x20\x1b\xc0\x53\x23\xc3\x9f\x76\x42\x9f\xd2\xfc\xd7\x1d\xb0\xa7\x08\x5c\x4a\x59\xd8\x16\xf2\xd4\x05\x2d\xa5\x1c\x81\x06\xee\xb4\x09\x58\x4a\x4a\x81\xe4\x63\x83\x95\xc6\x78\x1a\x4e\x7e\x16\x4e\xf4\x54\x43\x99\xd0\x9b\xa5\x11\x76\xa9\x0b\xa2\x29\xe8\x99\x81\x97\x52\xc9\xb2\x2e\xbd\xce\xb1\x5e\x6f\xcb\x55\x62\x0d\x93\x6d\xd0\xaa\xe8\x04\xc2\x9b\x32\xd9\xe2\x81\x46\x31\x22\x07\xe9\xfe\x88\x01\xa1\xfb\x92\xaf\xe8\xae\xbe\xad\xb3\x4c\x88\x5c\xe4\xbd\xbc\x26\xfb\x72\x1a\xd7\x82\x28\x17\x1b\xa4\x4a\xcb\x1e\xa7\x78\x18\x29\x11\xd1\x5c\x9b\x92\x3b\x90\xf1\xe5\x17\x04\x09\x49\xd8\xb7\x8f\x82\x7b\x1b\x1d\xf3\x96\xec\xc6\xa5\xe5\xf2\x12\xf2\x78\xe9\xfe\x63\x5a\xfe\x6e\x37\xb6\x2d\xcd\xc6\xed\xc2\xb5\xa5\x49\xfc\x08\x98\xb6\x9d\x78\xb6\x2e\xf2\x2b\xcd\xd3\x4d\xc3\xb2\x8d\x84\x78\x4d\xc6\xb0\x7d\x1c\xfc\xda\x6e\xec\x1a\x68\x97\x14\xe7\xa2\x8f\x5b\x4b\x47\x9e\x3d\x08\xd7\xe2\x63\xa0\xcd\xb6\x91\x66\x61\xb1\xd2\xb2\xd8\x0d\xca\x6c\x3c\x94\xd8\x48\x08\xb1\x31\xd0\x61\xc9\xc8\xb0\x74\x54\xd8\x58\x88\xb0\x31\xd0\x60\x5b\x5d\x40\x47\x38\x41\x2c\x36\x6e\x1c\x05\x5f\x3d\x56\xf6\x78\x14\xf4\xd7\xc7\x5d\xae\x31\x50\x5f\x23\xac\x57\x1a\xda\xeb\xe3\x20\xbd\xc6\x44\x79\x8d\xb1\x44\x49\x6f\x74\x1f\x07\xd9\xb5\x13\xd5\xc5\xc8\xf5\xef\x6c\x33\xdd\x35\xed\xbe\xac\x25\x08\xdd\x40\x73\x75\x5f\xd5\x12\xa4\x36\x48\xae\x71\x5f\xd4\x12\x5f\xd3\xc6\x7a\x49\x1b\xe9\x15\xed\x23\x61\xaf\x52\x71\x57\xbb\x31\x57\xde\x07\x49\x38\x10\x5b\x78\xab\x16\x31\x95\x20\xb5\x9b\x93\x48\x43\x4b\x25\x6e\xa8\x54\xd2\x49\x5e\x3c\x13\x05\x5f\x5f\x8b\x4c\xab\x9c\xe8\x4d\x6c\xf4\xaa\x0e\x68\x81\x39\xb3\x28\x94\xf8\x7d\x98\x09\xea\x73\x5d\x2c\xb9\x65\xf4\xb7\x4b\xd6\x12\xa7\xc4\xe7\xd1\xe0\x98\x32\x0e\x8f\x8f\x7e\x3d\x88\xcf\x97\xec\xc1\x3d\x61\xb2\x07\x91\x72\x42\xca\x8f\xf1\x8e\xd7\x5f\xf5\x2d\xd3\x73\x27\x14\x3b\x92\x2a\x9e\xb0\x63\x6a\xf6\xa9\x49\x36\xb5\xf9\xcc\x26\x69\x48\x97\xf9\xf8\x51\x9c\x58\x93\x72\x4c\x72\xcc\x3e\xe7\x94\x23\x24\x63\xad\x7d\x98\x19\xed\x30\xb9\x8f\x95\xd2\x0e\xe2\xe7\x75\x81\xca\x8c\x9a\xbf\x81\x64\x78\x48\x90\xf7\x73\xda\xc4\x63\xc1\xd8\xcb\xe0\xe6\x3c\x86\x2f\x6f\xb4\x21\x57\x39\x0b\x74\x67\x64\xc9\xdd\x03\xff\x59\x1f\xdd\x44\x14\xf1\xc7\x42\x10\xbf\x17\x3d\x8c\x18\x60\xa2\xd4\x2d\xe4\x70\x8b\xff\xa5\x4a\xec\xa3\x86\xbb\xd8\xdf\x84\x39\xb6\x5d\x99\xe9\xb8\xdf\xfd\x1b\x01\xed\xbf\x7d\x2f\xbe\x17\x9e\x0b\x12\x5c\xe2\x0d\x6c\xef\x58\x65\xf0\xfd\x12\xf8\x54\x8c\xf8\x83\x89\xf6\x23\x1a\x37\x35\x37\xb6\x8f\xf6\xf7\xd1\xfe\x07\xc6\x47\x88\xf6\x9d\x2c\x85\xae\xdd\x83\x0d\x38\x6f\x97\x32\x5b\x76\x7d\x41\x59\x92\x4d\xb5\xae\xdd\x86\xbf\x16\xa6\x38\x22\x14\x61\x1f\x75\x6e\x0c\xda\x9b\xc6\x8e\x84\x6a\x3a\xfb\x6d\x83\x90\x65\xdc\x32\xce\x9e\x5d\x5e\xff\xfd\xc5\xd9\x5f\xce\x5f\x4c\xd9\x39\xcf\x96\x49\xa2\xa5\x62\x1c\x2c\x1b\xa8\xb0\x25\x5f\x09\xc6\x59\xad\xe4\x3f\x6b\x41\xb5\x0b\x47\xcd\xfc\x8e\x47\xc1\x74\x27\x68\x20\x6f\x93\x08\xba\xa1\xb7\x89\x2f\xa4\x75\x7e\x13\x41\x56\xe0\x19\xd3\xa4\x7c\xe0\xdc\xe8\x72\xd3\xb4\x9d\x7b\x61\xe8\x7a\x13\xbd\xb9\xa5\x30\x82\x2d\xe4\x2a\x20\x9f\x11\x03\xca\x78\x9e\xc0\x2a\xe7\xb5\x80\xbf\x38\x3e\x38\xe0\x33\x00\x14\x2e\x05\x53\xc2\xf9\x4b\xdf\xa4\x32\x69\xe8\xca\x0e\xf9\x37\xab\xad\xb0\x27\x6c\x56\x03\x38\xb4\x32\xb2\xe4\x46\x92\x20\x18\x9d\x09\xf3\x62\xca\x2e\x75\x0c\x8f\xd6\xb0\xb4\x94\x7c\x93\xf7\x66\x60\x69\x9f\xbd\x3a\xbf\x66\x97\xaf\xde\xb0\xca\x00\x4f\x30\x15\x59\x09\x12\xe1\x08\xcc\x84\x9f\x15\x1e\xa3\x7c\xca\xce\xd4\x9a\xba\xf7\x68\x64\xa4\x65\x3e\x1e\x12\xca\x8b\x0d\xcf\x53\x39\x39\xf9\x74\xf0\x68\x0a\xff\xef\xc0\x9f\x21\xe3\x5d\xb9\x06\xae\x9b\xa2\x68\x62\xd1\x08\xba\x87\x72\x56\x88\xf6\x3e\x84\x93\x45\xf1\x96\x46\xd3\x2f\x34\x54\x06\x19\x8d\xb1\x01\xb1\x0f\xeb\x7a\xe5\xcf\x88\x11\x95\x11\x56\x28\x62\xcc\xc2\x9b\x8b\x0a\x27\x0e\x14\xbc\xd7\x30\x45\x62\x61\x5b\x62\xb4\x9b\x12\xeb\x4e\xda\x99\x5f\xd1\x2e\x4a\x6a\xc0\xdb\xfb\x7d\xaa\x5b\xbe\x33\xfc\x9a\xa7\x55\xec\x36\xf6\x28\x5e\xfc\x4a\xe7\x87\x96\x5d\xd0\x71\x4f\xe1\xd6\x4f\xd9\x9b\xa5\xb4\x6d\x64\xe3\x7d\x45\x49\xa7\x7b\x82\xb3\x88\x0f\xcb\x27\xec\x11\xfb\x13\xbb\x63\x7f\x82\xe0\xeb\xf7\xd4\x18\x69\x8c\x00\x27\x35\xb5\x87\x79\x90\x8b\xab\x51\x4e\xc4\x77\x4b\xee\x40\x1e\xbb\xb8\x4a\x01\x37\xce\xa4\xca\xe1\x28\x88\x3b\x27\x8c\xe2\x45\x0c\xcd\xd3\x56\x3a\x21\x04\xf4\x1f\xf5\xe0\x2f\x0e\x32\x58\x5c\xcc\xc9\x12\x1b\x2f\xfd\x84\xb9\xde\xd5\x21\x4b\x84\x2b\xb7\xf3\xea\x90\x45\xe2\x95\x63\x17\x73\xc8\xb5\x5d\x06\x4b\x21\x6d\x67\xf6\xf4\x25\x6d\xbe\xba\xe4\x2e\x5b\xf6\xcd\x1a\x3d\x15\xf2\xd2\x5f\x89\x96\x7a\x9f\xe5\x1a\x72\xcb\x49\xa4\xc1\x7e\xaa\x9f\xb7\xe2\x49\x81\xdc\xf5\xee\xd3\xc5\x7c\xf3\xe4\x92\x57\xf5\x7d\x69\xb0\x24\x46\xe2\x10\x8c\x76\x1a\x6b\x54\x3a\xc7\xc8\x97\x2c\xd3\x2f\x5e\xde\xf1\x8f\x7a\x01\x30\xdd\x72\x76\x03\xe7\xc0\xe8\x94\x5a\x3c\x88\xaa\xdb\x5b\x86\x8c\x2b\x2c\xba\x9e\x0b\x63\x52\x8e\xbe\x66\xb3\x35\x20\xd7\x64\x26\x12\x2f\x41\x82\x4d\xa8\x8c\x76\x3a\xd3\x64\x52\x8f\x3e\xb8\x2f\x08\x83\xe5\x4e\x79\xbe\x6a\x5f\x34\xbf\x7d\x76\x75\xc2\xde\x3c\xbd\x3a\x61\xda\xb0\xeb\xa7\x29\xf8\x9a\x6e\xe6\xee\xe0\xcd\xd3\xab\x83\x7b\x5b\x74\x16\xe3\xc2\x27\x24\x9a\xa0\x5e\x1a\xd7\x87\x9c\x93\x92\x57\x93\x1b\xb1\x26\x78\xd5\xa9\x3e\xfd\xa4\x39\x41\x23\x7c\x06\x2e\x6c\xc9\xab\x81\xb2\x8c\xe0\xb9\x7c\xa0\xcc\x0d\xe1\x86\xb7\x73\xdc\xa4\x70\x20\xc8\x04\xfd\x53\xea\x95\xc8\x31\x78\x8f\xbf\x21\x54\x5e\x69\x49\x8b\x58\xf7\x4c\x10\x1f\x1e\x7b\x26\x88\x9f\x37\xf6\x4c\x10\xfd\xb1\x67\x82\x48\x90\xb9\x67\x82\xd8\x33\x41\xe0\xd8\x33\x41\xec\x99\x20\x88\x63\xcf\x04\xf1\xe1\xc9\xed\x99\x20\x3e\x5b\x6c\xeb\x9e\x09\xe2\xc3\x63\x8f\xf2\xdc\x33\x41\xec\x99\x20\xb6\xc6\x9e\x09\xe2\xbe\x5d\x8b\x3d\x13\xc4\x9e\x09\x22\x8e\x3d\x13\xc4\x80\xb1\x67\x82\x18\x36\xf6\x4c\x10\x1f\x1c\x0f\xac\x36\x64\xcf\x04\xb1\xaf\x0d\xf9\xb9\x72\x1e\x5e\x6d\x08\xdb\x33\x41\xd0\xc6\x9e\x09\x62\xf8\xd8\x33\x41\x0c\x1b\x7b\x26\x88\xe1\x32\xf7\x4c\x10\xed\xd8\x33\x41\xec\x99\x20\x3e\xd3\xa3\xbb\x67\x82\xd8\x33\x41\xec\x1e\xfb\x37\x82\x3d\x13\xc4\xb0\xb1\x67\x82\xa0\x0b\xdd\x47\xfb\x74\x39\x0f\x2f\xda\xdf\x33\x41\xec\x99\x20\x3e\x38\x52\x5c\x37\x23\xac\xae\x4d\x46\x31\x91\xfd\x73\xf5\x54\x97\x55\xed\x04\x7b\x1d\x05\x36\x76\x9f\xf0\x4d\xb3\x35\x16\x5c\x75\xb4\xe3\x7d\xc0\xa6\x33\xad\xe6\x72\x51\x1b\x28\xbe\x3f\x2d\xb9\xe2\x0b\x31\xc9\xf0\x43\x27\xcd\xca\x4d\x9a\x59\x9e\x7e\x56\xd0\xe9\x42\x96\x92\xc2\x20\xc1\xb6\xf6\xfe\x05\x48\x6a\xdf\x47\x13\xe0\x2d\x25\xbf\x83\x80\x88\x97\xba\x56\x0e\xeb\x04\x60\xbd\x89\x32\x9b\x5d\xc2\x77\x6e\x1f\x12\xb6\x87\x20\x01\x22\xf0\x00\x8e\x0e\x1b\xc3\x39\x6f\xb9\x34\xae\x92\xbd\xe5\x8a\x3b\x27\x8c\x7a\xc2\xfe\xeb\xe8\xdd\x6f\x7f\x9c\x1c\x7f\x75\x74\xf4\xfd\xa3\xc9\x1f\x7f\xf8\xed\xd1\xbb\x29\xfc\xcb\x6f\x8e\xbf\x3a\xfe\x31\xfe\xe1\xb7\xc7\xc7\x47\x47\xdf\x7f\xf3\xf2\xeb\x37\x57\xe7\x3f\xc8\xe3\x1f\xbf\x57\x75\x79\x83\x7f\xfa\xf1\xe8\x7b\x71\xfe\xc3\xcf\x14\x72\x7c\xfc\xd5\xaf\xc9\xc1\x61\x82\xfb\x31\x8e\xf3\x31\x8a\xeb\xf1\x11\x1c\x8f\x80\x2e\x19\x45\x3d\xbc\x0e\xb2\xc6\x51\x10\x21\x63\x32\xbe\x82\x88\xf6\x0a\x2a\x88\xe3\x9c\xe9\x49\x48\x5d\x4a\xe7\x44\x0e\x29\xa3\x0e\xbd\x08\x15\x07\x2e\x5d\xaf\x19\x77\x50\xb9\x50\x60\x44\x86\x40\x4b\xdb\xc5\x55\x77\x2a\x65\xb5\x5b\x0a\x73\x2b\xc9\xef\x41\x3e\x40\x52\x6d\x36\x03\x94\xe0\x24\x17\x73\xa9\xc8\x09\x12\x70\xe2\x06\xfb\x6f\x7b\x35\xbc\x57\xc3\x43\xa4\x3c\x24\x35\x6c\x45\x56\x1b\xe9\xd6\x4f\xb5\x72\xe2\x8e\x90\x10\xe9\x6b\xe1\xeb\x20\x8e\x69\xf8\x1b\x6a\x9d\x53\xa5\xf3\x58\xd5\x66\x6a\x05\xa5\xeb\x89\x2e\xd5\xcf\xb9\xc7\x95\x2e\x64\xb6\x3e\x8d\x4b\x02\x17\x56\xdc\xb9\xd3\x8f\x16\x03\x38\x6e\x6f\x5a\xf5\x21\x26\x3e\xf2\x6b\xb5\xc4\xd6\x3c\x3e\x2b\xc7\x1f\x3c\xe1\x2b\x23\x57\xb2\x10\x0b\x71\x6e\x33\x5e\x80\x7e\x1c\xc3\xd6\x9f\xbd\x47\x36\xfd\x7d\xc8\x19\x5d\x58\x76\xbb\x14\xde\x26\x31\xee\xbf\x1d\x52\x6f\x19\xa7\x0a\x5d\x70\xa9\x58\xe9\x8f\x41\x15\x27\xea\x6f\x83\xb7\x58\x64\x83\x5f\x71\x23\x94\x8b\x93\x0b\x04\x43\x33\xad\x8b\x50\x62\x47\xc6\x5c\x37\x2b\x10\x6a\x89\x95\xfe\xbb\x12\xb7\x7f\xf7\x33\xa7\xce\x75\x5e\xf0\x45\xc3\x59\x66\x85\x8b\x60\xaf\x94\x8a\x6c\x86\xa7\x12\x3f\x7e\xe4\x43\x00\x35\x55\xb5\x60\xbc\xb8\xe5\x6b\x38\x0a\xe3\xcc\x57\xda\x27\xec\xf1\x31\xa8\x31\x6e\x59\x33\xdf\x9c\x7d\x41\x7d\x22\x5f\x72\xcb\x9e\x9e\x5d\xfd\xfd\xfa\x6f\xd7\x7f\x3f\x7b\xf6\xf2\xe2\x32\xc5\x9d\xf0\xa7\x47\x90\x0e\x79\xc6\x2b\x3e\x93\x85\xa4\x7b\x11\x5b\xb8\xcb\xae\xc8\x04\xa7\x30\xcf\x4f\x73\xa3\x2b\xdc\x43\x53\x2b\xa0\xf5\x6b\xf9\x6f\xa8\x99\xe4\x6e\xd6\xb0\xc3\x10\xe8\x0f\x37\x35\x19\x39\xef\x7d\x32\x5b\x18\xae\xbc\x37\x0f\x99\xa9\x84\xd7\xee\x00\xcd\x31\xb5\x72\xb2\xfc\x7c\x8b\xaf\x79\x3e\x56\xe1\xf5\x59\x9e\x8b\x7c\x8c\xe3\xf5\x10\x0b\x0f\x9e\xc6\xcf\x4a\xa9\xb8\x61\x2d\x6b\x22\xbb\x7a\x75\x7d\xf1\xff\x8d\xb3\x5a\x2c\xac\x58\xca\x03\xd6\x08\x9c\x2d\x46\x57\x23\x9d\xa4\xd7\x81\xbd\x63\x7f\x96\x7e\x6a\xfc\x42\xcf\x52\xe3\xc9\x8d\x81\x99\x7a\x5d\xab\x8e\xae\x26\x13\x18\xb4\x73\x62\xa5\xce\xc5\x94\x5d\xa1\x83\x24\xec\x28\x32\x3b\xb4\x71\xdc\x08\xe6\x05\x2b\x27\x79\x41\x76\x35\xc5\x3f\x6b\xb9\xe2\x85\xc0\x02\x3f\xa0\x70\xe8\xf2\x07\x8e\x60\x9b\xe7\xbc\xb0\x49\x46\x8f\xee\x13\x79\xe7\xf4\xa5\xae\xd5\x18\xf8\xa4\x46\x16\xcb\x85\xd2\x2e\x29\x9f\xe9\xbf\x0b\x08\x1f\x8d\xce\x18\xe6\x34\x93\xa0\xd8\x11\x9b\xd7\x71\xaa\xc0\x81\xa3\x93\x26\x33\x74\xc1\xc3\x3e\x5e\x35\xdf\x8e\x6f\xbf\xb5\x4d\xfa\xfc\x2d\x97\x28\x15\xca\xe2\xbf\xdf\x08\x9e\x03\x93\x4f\xc5\xdd\x12\x71\x7a\x25\xb7\x37\xe4\xdc\x23\x88\x09\x31\x5d\xc8\x12\x23\x01\x4f\xb3\x18\x6f\xe8\xca\x6f\x2e\xb8\xab\x8d\xc0\xa8\x0c\x8b\x01\x85\xe2\xb3\x82\x8a\xac\x4e\x54\xa4\x7e\xed\x5e\xa9\x62\xfd\x5a\x6b\xf7\xbc\x61\x5b\x19\xe1\xd2\x7c\x17\x22\xf8\xfe\xc3\x6e\x42\xa0\x05\x10\xb9\x7c\x02\x1b\x0d\xca\x2a\x9d\x1c\x26\x9c\x71\x7f\xdc\xef\x51\x55\x99\x5a\x9d\xd9\xaf\x8d\xae\x89\x9e\xd1\x56\xf0\xf6\xf5\xc5\x33\xd0\xe8\xb5\x4a\x08\x5e\x84\x72\x66\x0d\x4c\x68\x63\xb4\x7d\x60\xdd\x7c\xc1\xb7\xde\x24\x6e\xdc\x7f\xaa\xa2\x9a\xb3\x5a\x59\xe1\xa6\xec\x25\x5f\x33\x5e\x58\x1d\x93\x1c\x64\x93\x7b\x05\x88\xfc\x6e\x2a\x76\xca\x80\x59\x94\x1c\x5c\x4a\xc5\x66\xda\x2d\xd9\x86\xd8\x04\x2a\xd1\xed\x39\x02\x43\x54\x12\x90\xbe\xed\xcc\x21\xd5\xe6\x54\xa9\x1a\x9f\xdf\x08\xcb\x2a\x23\x32\x91\x0b\x95\x25\xdd\xaf\x91\x10\x33\xbf\xff\x1d\xf5\x86\x5e\x6a\xe5\x95\xe4\x08\x77\xf4\x42\xe5\x32\xe3\x0e\xb3\x90\x6e\x94\x04\x03\x60\xf5\x42\x66\x8b\x03\x79\x90\x57\x91\x44\xb1\xb5\x15\x06\x5e\x45\x9d\xa9\x05\x1e\xac\x6f\xea\x99\x28\x84\xa3\x92\x2d\xb2\xc8\x00\xcd\x1d\x32\x9b\xc9\x92\x2f\x04\xe3\x2e\xaa\x01\x7a\x8e\x49\x28\xeb\xcd\x29\xac\xa4\x74\x2c\xd7\xa2\xa1\xe4\xa2\x26\x3b\x2c\xfb\xf6\xe2\x19\x7b\xc4\x8e\xfc\x1a\x1e\x83\x3f\x31\xe7\xb2\xa0\x73\x73\x40\xd5\xc0\x86\xff\x23\xe7\x71\xba\x54\xeb\x75\x11\x74\x1f\xd3\x06\xcd\xd7\x09\x53\x9a\xd9\x3a\x5b\xc6\xb5\xa6\xe7\x60\x63\xba\x38\x54\x00\x01\x8e\x26\x28\x58\xa2\xc4\x46\x2d\xbf\x4f\xc1\x52\xd7\x16\x85\xee\x52\xb0\xe4\xf7\xc9\xfc\x7d\x0a\x36\x09\x91\xf8\xc0\x15\x6c\xa2\x03\xf3\xad\x15\x66\x24\xff\xe5\xdb\x07\xee\xbf\x74\x43\x5c\xaf\x2b\xdb\x9d\xa5\x3b\x08\xa8\x10\x4b\xe1\x78\xce\x1d\x0f\x7e\x4d\x2a\x87\xe8\xb6\x4f\xb4\xbf\x7c\x0f\xf3\xf2\xdd\xa7\x77\x63\xc5\x0b\xa9\xea\x3b\x2c\x58\x19\xeb\x01\xe9\xfa\x1c\x84\xb2\x2c\x6d\x89\xe1\xe8\xf2\xaa\x2a\x24\x30\x4a\x6e\xd4\x50\x24\x19\xce\x6e\xa3\x80\x74\xe5\x10\xc3\x19\x30\x9c\xbc\x28\xb4\x77\xf0\x7c\xcc\xca\x55\xae\xa9\x48\xf6\x8d\x45\x84\x64\x87\xe8\xb5\xc9\x9b\xc2\x25\xa7\xde\xb5\xbd\x6a\xf8\x0c\x54\xc3\xbd\x3e\xfc\x15\x62\x25\xc8\x7d\x0d\x36\xbb\x0f\x7a\x59\x4c\xda\x78\xac\x13\x5e\x0f\x60\x5a\xac\xe0\x33\x51\xa0\xe7\x8f\x2a\x62\x84\x7a\xb8\x64\xe5\x32\xca\x33\x99\xd1\xc5\x58\x7c\x1f\xaf\x75\x01\xc5\x30\x7c\x84\x65\xf7\xd3\xfa\x05\xaf\x3a\x88\x18\x67\xd5\xdf\xac\xab\xd1\x56\x1d\x9e\x0c\x7e\xb9\xab\x5e\x93\x03\x07\xb6\xb9\xea\x3e\x06\x19\x6b\xd5\xc1\xb1\xff\x65\xae\xba\x15\x59\xa6\xcb\xea\xca\xe8\xb9\xa4\xea\x99\x2d\x87\x2f\x08\x8d\x70\x53\xba\xc3\x57\x5b\xb1\xab\x20\x2c\xc1\x11\xe9\x4d\x0c\x1e\x4f\x2b\xa3\x57\x32\x27\xc7\x6b\xdc\xa1\x5f\x13\x0b\xa8\xff\xaf\x64\xf7\x11\x0c\xda\x86\x27\x9a\xb8\x94\x7a\x25\x8c\x89\x9d\x04\xfc\x2c\x83\xb8\xcf\x94\x3a\x98\x8c\x37\x18\xc1\x09\xd2\x19\x2f\xa0\xf1\x5f\xca\x8d\x61\x9b\xb7\x66\x53\x6c\x82\x6a\x91\x4d\x46\x19\x00\xb3\x5e\x1a\x4b\xab\xbf\x60\xb1\xa1\x36\xc8\x0a\xb8\x00\xa5\x73\x11\xd0\xe0\x09\x62\x03\xfd\x29\xbe\x53\xc7\xd9\xa6\x97\xc1\x7b\x6f\x3b\xe2\xb7\xf3\x30\xe3\x04\x89\xf0\xad\x4e\x87\xfe\x08\x2f\x93\x1b\x20\xe2\xe6\x0b\x95\x4b\xb5\x80\x17\xe6\x13\x66\x44\xc1\x13\x08\x7a\x58\x6b\x53\x6e\x30\x3d\x7f\x08\x1a\x33\x2c\x41\x82\xd4\xa8\x32\xe3\xe6\x40\x34\x2b\xb5\x4a\xa1\x14\x80\x15\x84\xc7\xdb\x18\x71\xce\x53\x31\x44\xd2\xb2\x83\x17\xf1\x12\x91\x3b\x91\x3d\x34\xd7\xf1\x00\xfc\xbd\xe6\x46\x27\xac\x0f\x22\x36\x6e\xa4\xca\x43\xfd\x7f\x77\x53\x53\xe4\xc6\xfe\xd7\x98\x97\x99\xb2\xb7\xd0\xdc\x33\xcd\x5c\xf9\xc1\x8d\x78\xc2\xde\x29\xd6\x6c\x2a\x9b\xb4\x0a\x2d\xe9\xe6\x81\x2a\xdc\x52\x68\xa9\xea\xa1\x6d\xf7\x84\x0a\xed\x35\x26\x81\xd2\x38\xd2\x18\x9a\xbb\x5d\x60\x99\xb4\x25\x00\xa8\x43\xbc\xd2\xcd\xd4\xd3\x5c\xe4\x7c\xca\xbe\x55\xa0\x73\xfc\xfa\x4e\x98\xd2\x23\x6c\x57\xbb\xac\xf1\x84\x1d\xdc\xd7\xdd\xbe\x95\x2a\xd7\xb7\x76\xdc\xdc\xe8\x77\x28\x34\x26\x9e\xa8\x8c\x4f\x56\x38\x27\xd5\xc2\x76\xf3\xa3\xbc\x28\x46\xc0\xd7\xef\x4a\x90\xa6\xdd\xee\xa6\x3f\xfe\x76\x02\x2f\xf1\x85\x12\x0f\x21\xe2\x33\x62\xc2\x91\x9a\x6e\xdd\xc6\x67\xec\x4a\x38\x26\xc0\xdf\xf6\x09\xc7\x0f\x8d\x45\x69\xf9\x53\xe3\x3f\xc2\x49\x5e\x5c\x57\xd4\x76\x7f\x6c\xf3\xe2\x7d\xfd\xf2\xfa\xac\x2f\x38\xcd\xf3\xb8\x5d\x0a\x83\xb1\x95\x97\xcc\x78\x5e\x4a\x6b\xe9\x0f\xee\x7e\xdc\x8a\xd9\x52\xeb\x1b\x76\x14\x0b\x15\x17\xd2\x2d\xeb\xd9\x34\xd3\x65\xa7\x66\x71\x62\xe5\xc2\x9e\x06\xc5\x34\xf1\xeb\x45\x2d\x5f\x82\x2f\x51\x85\x54\x01\xde\x08\xcf\x0c\xca\x59\xa6\xe9\x9d\xc3\x59\xbb\x24\x59\xb3\xda\x70\xe2\x53\x8c\x2d\xf4\x38\xc6\x5a\x9c\x1d\x1b\x79\x99\x46\xf5\x05\xe4\xf0\xf7\xea\x3d\x6e\x1f\xfa\xcb\xa4\xde\x03\x1f\x38\xf8\x89\xeb\x85\x3d\x13\x91\x97\x2e\x3c\xad\xfb\xdf\x48\x90\xb8\x71\x52\x42\x16\xe8\x7e\x33\xf0\x11\xd3\x30\xe2\x4e\x00\xb6\x21\x88\x4c\x0b\xcb\xa3\x07\xd1\xa2\x24\x3a\x78\x87\x04\xd1\x9b\x48\x89\x06\xf3\x90\x20\x73\xb3\x58\x6f\x14\xc4\x04\xfb\x88\xa8\x09\xf6\xb3\x91\x13\x09\x3f\xd0\x77\x58\x46\xf2\x02\xd8\xfb\x5f\x49\x13\x15\xfa\x47\x73\x5c\xd8\x68\xce\x0b\x4b\xbb\xf8\x81\xd9\x77\x94\xee\xd7\xd7\x1d\x59\x49\x91\x7c\xc4\x87\xfa\x1d\x45\x7e\xf7\x86\x35\xb9\x58\x47\x8e\x7a\xf9\x2f\xda\x59\xf7\x47\xb0\xf5\xf1\x95\x46\x1a\x98\x0e\xe9\x3b\x41\x66\x68\x7f\x9b\x33\x1f\xb0\x16\x31\x89\x5f\x56\x85\xf7\x5c\x7a\xb3\x27\xce\x18\x24\x76\x1a\x6c\x9f\x34\xcb\x93\xd2\x07\x3c\xd0\xe6\x9f\xb0\xff\xae\xad\x63\xbc\xa9\xbe\x8f\xdc\xcf\xb0\x93\x04\xe1\x91\x96\x1a\x4a\x49\x32\xae\x9a\xd6\x4f\x4e\xc7\x37\x08\x82\xd4\x5c\xce\xe7\x22\xf2\x0f\xcc\x04\xab\xb8\xe1\xa5\x70\x50\x19\x46\x85\x13\xcf\xc4\x42\x62\x79\xb6\x9e\x33\xee\x17\xf4\xf0\xd0\xb6\x84\xc2\x14\xfd\x01\x45\xdf\xd2\xb1\x52\x2e\x96\x0e\x2e\x39\xe3\xac\xd0\x6a\x01\xb4\x91\x34\x34\x6d\xa1\x79\xce\x40\xd7\x6b\xc3\x6e\xb9\x29\x19\x67\x19\xcf\x96\x00\x53\x26\x81\x17\xf3\xda\x40\xe7\x6e\x27\x78\xbe\x9e\x58\xc7\x9d\x8f\x75\x05\x52\x08\xe1\xce\x11\xa4\x66\x5b\xf4\x85\x78\x06\xe0\x71\x72\x26\x1c\x25\x8f\x1c\x2b\x87\x42\xb9\x50\xf4\x87\xbb\xca\x26\x41\xea\xbc\xe0\x8b\x87\xc6\x97\xb9\x6f\x34\x1f\xc6\xbe\xd1\xfc\xcf\x1d\xfb\x46\xf3\x3f\x7b\xec\x1b\xcd\xef\x1b\xcd\xef\x1b\xcd\xef\x1b\xcd\xef\x1b\xcd\x6f\x8c\x7d\xa3\xf9\x7d\xa3\xf9\x9f\x18\xfb\x46\xf3\x1f\x16\x78\xdf\x68\xb1\x5f\x46\x13\x99\x7d\xa3\xf9\x7d\xa3\xf9\xde\xd8\x37\x9a\xbf\x6f\xd7\x62\xdf\x68\x7e\xdf\x68\x3e\x8e\x7d\xa3\xf9\x01\x63\xdf\x68\x7e\xd8\xd8\x37\x9a\xff\xe0\x78\x60\xad\xe7\xf6\x8d\xe6\xf7\xad\xe7\x7e\xae\x9c\x87\xd7\x7a\x8e\xed\x1b\xcd\xd3\xc6\xbe\xd1\xfc\xf0\xb1\x6f\x34\x3f\x6c\xec\x1b\xcd\x0f\x97\xb9\x6f\x34\xdf\x8e\x7d\xa3\xf9\x7d\xa3\xf9\xcf\xf4\xe8\xee\x1b\xcd\xef\x1b\xcd\xef\x1e\xfb\x37\x82\x7d\xa3\xf9\x61\x63\xdf\x68\x9e\x2e\x74\x1f\xed\xd3\xe5\x3c\xbc\x68\x7f\xdf\x68\x7e\xdf\x68\xfe\x83\x23\xc5\x75\xb3\x2e\x97\x84\x0e\x83\x1f\xa7\x85\x40\x40\xcb\x76\x68\x19\x67\xf5\x7c\x2e\x0c\xb8\xdd\x30\x53\x52\xe2\x66\x77\x91\xfe\x34\x96\x29\x50\x64\xa2\xe3\x67\x85\x3b\x81\x6e\x07\x16\x0b\xa7\x61\x8a\x34\xc0\x63\x7f\x8a\x81\x9d\x12\xfa\xea\x19\x61\x69\xf1\xb5\x54\xec\xfc\xd5\xf3\xe9\x08\xdd\x13\x52\x88\x87\x61\x4d\x5e\xa9\x2c\xb5\x58\xa7\x3d\x64\x69\x24\xa0\x91\x00\x34\x9c\xb5\xac\xd0\x16\xb1\xb5\xb8\x79\xd9\x92\x2b\x25\x28\x05\x2a\xa8\x10\xa5\x83\xb4\xdb\x4c\x08\xc5\x74\x25\x14\xe2\xff\x39\xb3\x52\x2d\x48\x64\x0b\xdc\x39\x9e\x2d\xa7\xfe\xfb\x55\x3c\x60\xa1\xf1\x62\x33\x6b\xca\x55\x73\x46\xf0\x12\x0f\x9a\x11\x25\x97\x38\x5d\xc6\x33\xa3\xad\x65\x65\x5d\x38\x59\x25\x4c\x98\x59\x01\x65\xd6\x16\x6b\xfe\xe3\x21\x60\xa4\xeb\x66\x05\x82\x3d\x81\xe6\xbe\x59\x83\xb0\xbc\x24\x17\xac\xbd\x6a\x10\xc0\x9f\x40\xcf\xed\xb2\x72\x6b\x2c\x88\x22\x5e\xe0\xb9\x34\xd6\xb1\xac\x90\x10\xc1\xc1\x3a\x08\xb0\x64\x30\x67\x0a\x02\x98\xab\xdc\x4b\x56\x61\x8f\x6c\xd8\x24\x95\x83\x03\x5a\x91\x1c\x7e\x28\xcb\x89\x75\x5f\x22\x4e\x37\x97\x36\x04\x14\x96\x34\xd1\xd8\x78\x08\x2f\x57\xdc\x23\xb8\x5e\x39\xb1\x83\x46\xfc\xe6\x20\xa4\x33\xe5\x84\xfb\x0f\xbd\x82\x42\x56\xbc\x31\x01\xd8\xe5\x27\x2a\x48\xd2\xf7\x6f\x17\xe3\xc6\xbe\x11\x60\x20\x08\x22\x3b\x26\x05\xae\xa9\x12\x2b\x6f\xbd\x44\x26\xe4\xca\x3b\xe1\x04\x91\x3b\xed\xc1\x27\x35\x07\x4e\x98\x52\x2a\x28\xda\x7a\x29\xac\xe5\x0b\x71\x45\x7a\xfd\x7e\x5f\x6c\x0d\x0f\xe0\xf1\x30\x92\xaf\x71\x81\x94\x62\x8d\x73\xdb\x96\x20\x1c\x92\xca\x43\xdb\x8f\x66\x25\x7e\x75\xc3\x8b\x72\x6b\xa4\x73\x82\xe4\xd8\x58\x6c\x4c\x06\xc0\xa1\x4d\xd2\x4a\xda\x44\x3b\xe5\x15\xec\x65\x9c\x28\x4e\xd0\xff\x9c\x77\x52\x15\x8d\x8e\x11\x51\x4e\x33\x23\xc5\x9c\xcd\x25\x54\x31\x00\xde\xfe\x04\x1b\x61\x70\xca\x6c\xb9\x62\xdc\x5a\x61\x60\x5d\x03\xde\x3a\xae\xef\x94\x7d\x47\xae\x33\x75\xa6\x56\x19\x6f\xdb\xca\x22\x89\x94\x9c\xb3\x05\x20\xfb\x29\x5a\x07\xda\x58\xff\xee\xd1\x1f\x7f\xcf\x66\x6b\x1f\x68\x00\x96\xc5\x69\xc7\x8b\x38\x61\x82\xd0\x42\xa8\x85\x3f\xed\x68\xb2\xfb\x94\x42\x09\x65\xb6\x85\x2c\xa5\xc3\xda\xd7\xc7\x5f\xdc\xcc\x7a\x31\x19\x41\xe2\x69\x2e\x56\xa7\x9d\x1b\x30\x29\xf4\x62\xca\x9e\xc6\xc2\x4b\x82\xc4\x58\xaa\x49\x2d\x54\x24\x85\xf9\x3b\x14\x17\x34\xbf\x4f\x54\x5d\xb1\xc7\x10\x5b\xea\x5b\x6c\x3c\xd8\xfe\x0e\x61\x69\xa2\x76\x69\xeb\x0e\x2b\x5d\xd5\x05\x56\xb6\x3e\xa7\xd1\x7d\x81\xa6\xaa\xad\xd8\xe4\x9e\x79\x8f\x2e\xa7\x29\x87\x38\xcd\x8d\x40\x08\x95\x44\xc2\x42\xe8\x40\xdc\x10\x5e\x97\x9a\x26\x41\xb5\x21\x55\x3e\x3e\xe7\x45\x31\xe3\xd9\xcd\x1b\xfd\x42\x2f\xec\x2b\x75\x6e\x8c\x36\xbd\x15\xa2\xdc\x63\xee\xbd\xc6\x65\xad\x6e\xa0\xbf\x75\xf3\xf1\x85\x5e\x30\x5d\xbb\xaa\x26\x45\x7f\xf3\xcd\xe3\xd4\xac\x09\x91\xf6\xad\x71\x91\x83\x53\xda\x99\xa9\xb8\x93\xb4\xa7\x8f\x5b\xe9\x15\x98\x62\xc2\xaf\x23\x6a\xc5\xf6\xab\x69\xc1\x42\x47\x7d\x7d\xf1\xe8\x77\x7f\x40\x85\xcb\xb4\x61\x7f\x78\x04\x45\x99\x24\xf7\x16\x5c\x01\xf0\xbf\xa4\x65\xb6\xe4\x45\x21\x4c\xaa\x62\xf4\xd7\xb1\xa3\x08\x1b\xb5\xf6\x49\xb5\x9a\x4b\x55\x60\x1f\x31\xf9\xf3\xe6\xcd\xdf\x20\xf3\x23\x9d\x15\xc5\x9c\xe4\x95\x17\x56\xb7\xad\x41\x0f\xc1\x99\x3e\x0c\xbe\x88\x8f\x26\x29\x2a\xe0\x7e\xd3\x29\x2b\x5d\xd4\xa5\x78\x26\x56\x32\xa3\x3c\x6b\xf5\xb6\xae\x27\x8b\x5e\xf9\x5c\x48\x0b\xbd\x9b\x66\x85\xce\x6e\x58\x1e\xc4\xb5\xb0\x76\x8a\x17\xb2\x4e\xa5\x60\x4f\x29\x42\x20\x17\x1f\xbc\x77\x75\xdb\xd2\x01\x52\x82\x97\xb3\x92\x57\x55\x43\xfa\x61\xf8\x6d\x6f\xb1\x49\x32\xbd\xe6\x05\x9e\xd5\x24\x9e\xfb\xc4\xc7\xe1\x94\xa7\xe1\x49\xf8\x7a\xa2\xcf\x41\xae\x4b\x48\x7d\x55\x6e\x67\x4d\x7d\xf8\xea\x1d\xb3\x56\x5c\x2a\x77\x41\x05\x32\xb0\x68\x7d\xa4\x56\x6c\x1d\x66\x24\x9c\x67\x13\xf6\xfa\x03\x9d\xc0\x2a\xe6\x34\xf5\xd1\x31\xf9\xa5\x2f\xa5\x0a\xa4\xb7\x73\xaa\x79\x53\x2d\xb9\x23\x25\x2b\x70\x74\x49\xfe\x38\xab\x84\xb1\xd2\x7a\x1f\xfd\x2d\x28\xa0\xa7\x05\x97\xd4\x87\xb3\xe6\xf1\xa4\xd2\xd4\xad\x4a\x58\x6e\x54\xa0\xd0\xc7\x3b\xd5\xd2\x5d\xe9\x3c\x88\x03\xc3\x04\x69\x13\xd2\x8b\xca\x56\x9a\x25\x95\x92\x62\x34\xf7\xef\x3e\x4d\xdd\xdb\x76\xa7\xd2\x2d\x9d\x97\xd2\x98\x3a\x94\x1c\x8c\x15\x51\xe2\xe7\x6b\xe0\x60\x2d\x3e\x37\xfb\xd6\x4c\x7a\x14\x25\x09\x86\x2d\xf8\x2a\x29\xc6\xad\x8d\x55\xdb\x97\x8a\xa5\x08\x4a\x81\x2c\xb5\x4d\xb3\x84\x4c\xec\x34\x80\x45\x15\xb9\xa9\x73\x33\x55\x76\xf8\xe4\xf0\xde\x8c\x1c\x6e\xa2\xd1\x15\x5f\x40\xee\x60\x94\xbd\xdc\x14\x9a\x80\xf0\xc2\xb4\x86\xb0\x90\x36\x03\xb9\x54\x26\x44\x1c\x55\x98\x95\xc8\x5b\x0a\x74\x68\x6c\x90\x50\x7e\xdf\x39\x72\x21\x61\x82\xc4\x8d\xb7\x09\x75\xd1\xdc\xe8\x5a\xe5\xe1\x35\xb8\x81\x20\xbc\xdc\x58\xd8\x4b\x3a\x83\x19\xa4\x79\x62\xdb\x17\x1f\xe2\x42\xa1\xa4\xb4\x54\x32\xbc\x20\x53\xb1\xc7\xd3\xc7\x8f\x3e\x7f\x9f\x0d\xd6\x64\x24\x9f\xed\xb2\xf1\xd9\xd0\xca\xdd\xdb\xea\x18\xc1\xf3\x57\xaa\x20\x64\x82\x70\xf4\xeb\x0d\xc2\x93\x94\x17\x3a\xd1\x2a\x81\x6b\x42\xc6\xc6\xf6\x20\xea\xd6\x48\x17\x6e\xd0\xad\x4c\x28\x54\x3b\x82\xa4\x0d\xd3\xa6\x4b\x41\x7c\xdc\xe6\xf2\x12\x42\x12\x6a\x3e\x28\xfc\xf7\x89\xdd\xbd\x19\xb3\xf5\xec\xc1\xd9\x5d\x34\xb0\xa8\x54\x77\xbd\xa7\xd2\xd7\x3b\x48\xde\x36\xc1\x64\x89\x5d\xec\xe1\xc1\x01\x3b\xc2\x5f\x38\x44\x36\xbb\xe3\x7b\xbb\x9e\x61\x5b\xcf\xef\x2a\x72\xff\xc5\xde\xd6\x9e\xdf\x55\x5c\xe5\x22\xc7\x80\x3f\xc1\xb5\x66\x91\x74\x7a\xd7\x1e\xa7\x9b\xcd\x43\xdb\xdf\x63\xb2\xc4\xae\x7b\xf6\x17\xb1\xe4\x2b\x01\x9c\x7f\xb2\xe0\x26\x41\x3d\x39\xcd\xae\x71\x67\xd8\xac\x76\x4c\xa8\x95\x34\x5a\x95\x22\x81\xd8\x7d\xc5\x8d\xe4\xb3\x42\x30\x23\x80\x38\x38\x13\x96\xfd\xfa\xe8\xed\xd9\x6b\x80\x59\xd3\xdb\x47\x70\x23\x98\x88\xbb\x5e\x5b\x28\xcf\x1d\xe9\x16\x76\x3e\x7b\xba\x71\x81\xe8\x2a\x7a\xe3\xe2\xc5\x75\xf6\x37\x80\xbe\x06\x2a\x6f\xf6\xcb\xaf\x47\x59\xbb\x9a\x17\x40\xfb\x98\x15\xb5\x95\xab\xfb\xb0\xbf\x81\x86\xf3\x99\x24\xdc\xec\x0d\xfa\xd2\xf6\xd2\x6c\x71\x7b\x12\x29\xbc\xc1\xbd\x1c\xaf\xfb\x7a\x00\x5e\x1e\xda\xa6\xc7\x55\xb7\x35\x10\xf9\x51\x2e\xd0\x56\xcf\x44\xa7\xa5\x1e\x23\x1b\xad\xd6\x67\x87\x96\x05\xf7\xf7\x3c\xa7\x74\x2e\x86\xb6\xb4\xe8\x17\xbe\x04\x01\x48\x65\xdd\x21\x8c\xb3\xd9\x52\xe4\xf5\xc0\x17\x60\xa4\x73\xd7\x39\xd3\xca\x69\xc6\x9b\x96\x58\x30\x4f\x80\xd1\xc9\xc1\xcf\xb5\x4a\xab\x09\x3c\x28\xe3\xd9\x8a\xf3\x32\x91\x8f\x35\xfe\xc5\x30\xa9\xfd\x99\x42\xfa\xd9\xcf\xf1\x84\x71\x6b\xeb\x12\x55\xdf\x40\xce\x50\xe9\xd8\x5c\x3a\xc0\x0d\xea\xda\x64\x22\x66\x75\xbc\xd2\x1b\xc4\x93\x45\x3e\x09\xd7\xa2\x80\xab\x4c\x3e\x0d\x87\x97\x1d\x29\x78\x24\x6c\xf8\xd3\xa0\xa5\x08\x57\x2e\x14\x02\x01\x0a\xb9\x29\x06\xd6\xf0\xe6\x3e\x97\xc3\x16\x57\x2b\xc6\xc3\x29\x6a\xe6\xd7\xf9\x15\x08\xb3\x06\xb6\xf3\xf4\xd2\x80\x15\x9f\xcf\x44\x61\x37\x27\x38\x6b\x8f\xda\x30\x97\x02\x28\x71\xc2\x71\x1a\x5c\x48\x12\x95\x13\xc4\xe7\xa7\xdc\x5a\xb9\x50\x93\x4a\xe7\x13\x2f\xed\x74\x08\x92\x89\x98\x91\xe4\x79\xe4\x0f\xbe\x22\x26\xf8\x48\xa7\x57\xaf\x84\x59\x0a\x3e\x28\x01\xba\x81\xed\x0c\x12\x98\x11\x95\x11\x16\xc0\x47\xc8\x7f\x87\xb7\x71\xd8\x1e\x46\x61\xdc\x5a\x9d\x01\x7f\x05\x62\x50\x4c\x8d\x5d\x15\xf8\xe0\xb7\x0e\x7f\xbc\x38\x5b\xc8\x95\x50\xb1\xb1\xe4\xd3\x82\x5b\xdb\x4b\xa0\x0c\x46\xe3\xcd\x04\xe3\xb5\xd3\x0d\x7a\x8b\x71\xd7\xf6\x2e\x43\x90\xf5\x6c\x98\xef\xea\xd7\xac\x3b\xbf\x8e\x38\x6f\xf5\x8c\x06\x4c\xcb\x20\x91\x17\xf3\x9f\x27\x75\x98\xb6\xb5\xb1\x73\xc2\x49\xbb\x5d\x65\x48\xaa\xb6\x7d\x7e\x06\xc9\xbc\xd2\x39\xcb\x00\xbc\x19\x2d\x61\x80\x60\x76\xa7\x3e\x48\xe2\xae\xcf\x8c\xd5\x14\xfe\x66\x76\x7e\x72\x90\xdc\x38\xbd\xa0\x03\x7d\xb0\x82\xa9\xc3\xe6\xe0\x16\x46\xf0\x7c\xd8\xd6\x5b\xe1\xc0\x46\xf7\x36\x4a\x76\x9b\x10\x0f\x46\xe8\xa3\xf5\x68\x5c\x2d\x68\x65\x54\x89\xec\x84\x35\xd7\x95\x72\xe4\x63\xa1\x47\xd3\xc9\xa8\xd3\x11\x16\xfd\x4f\x63\x84\xad\x34\x74\x67\x1e\x24\xbc\xfb\xe9\x27\x6d\x1a\xc9\xdb\xf6\x4e\x0d\xcc\x20\x91\xb5\xf2\xd3\x85\xdc\x6e\xcb\xf8\xfd\x2f\x61\x74\xd7\x38\x0c\x92\xd8\xe9\x27\x38\xbd\xf9\x03\x58\x11\xa1\x96\x5c\x65\xe8\x6a\x9c\xde\x88\xca\x9e\x5a\xb9\x40\xa3\xf1\xc5\xa3\xc7\x7f\x7c\xf4\xc5\x17\xbf\x07\x33\x12\xcf\xc7\xb4\x1c\xb6\x8f\xfd\x24\x2f\x2f\xaa\x25\x9f\x40\x93\x7b\xff\x31\x7a\xce\xbe\x69\x6c\xda\x20\xb1\xab\xc7\xd3\xc7\xbf\x3f\x61\x81\x60\x1f\xba\x6a\x2c\xb5\xd2\x06\x31\xd5\x48\x28\x37\xd4\xaf\xe3\x2e\x28\x86\x78\xe0\x9a\xa3\x16\x7a\xa3\x0c\x02\x04\xdf\x9b\x19\xad\xb8\x73\xc2\xa8\x27\xec\xbf\x8e\xde\xfd\xf6\xc7\xc9\xf1\x57\x47\x47\xdf\x3f\x9a\xfc\xf1\x87\xdf\x1e\xbd\x9b\xc2\xbf\xfc\xe6\xf8\xab\xe3\x1f\xe3\x1f\x7e\x7b\x7c\x7c\x74\xf4\xfd\x37\x2f\xbf\x7e\x73\x75\xfe\x83\x3c\xfe\xf1\x7b\x55\x97\x37\xf8\xa7\x1f\x8f\xbe\x17\xe7\x3f\xfc\x4c\x21\xc7\xc7\x5f\xfd\x7a\x98\x82\x1b\x5e\x9a\x9d\x52\x8e\x9d\x50\x82\x3d\x5a\xd9\x75\x65\x84\x8f\x47\xa4\x56\xc3\xa1\xdd\xfd\xe4\xe9\x86\xa0\xd8\x8a\x11\xff\x34\xd8\xbb\x88\xf3\x52\x0b\xef\x9c\x58\x74\x58\x0a\x7d\x0b\xa5\x46\x52\x1b\xe9\x06\x86\xf8\xaf\x14\x3c\x3c\x5c\x8a\x95\x30\x27\x71\xb6\x2f\xbc\xc0\xab\x28\x8f\x96\x0f\x77\x7a\xa7\xb4\xd0\xf0\xcf\x5b\xa1\xc1\x7d\x9a\x7a\x0f\x50\xa8\x9a\x4e\xd8\xa2\x5b\x9d\x71\xa9\xd5\x55\xb3\x42\xf1\x27\x87\xfd\x06\xea\x8f\x89\x17\xfb\xd1\xe3\xb9\xb8\x65\xe4\xd3\xf5\x06\xaa\xed\xc3\xca\x82\x99\x9c\xb2\xb7\xdc\x48\x3d\x10\x28\x8f\xa0\x15\x68\xfb\xa6\x15\xb8\xd5\x08\x61\x6f\x0c\x02\x44\x73\x03\xfd\x02\xd7\x9d\x5c\xc3\x99\x11\x5f\x2c\x49\xbb\x73\xd6\xb8\x5a\x4f\x5b\x57\xab\xeb\x25\x4a\xe7\xaf\xc8\xca\x7f\xc2\x30\x03\x6e\x85\x89\x95\xdb\xd8\xa3\xbb\xf3\xf5\xe8\x1f\xd2\xda\x05\x77\x5c\xc2\xe8\xc0\xdb\xee\xc2\xc2\x4f\xc6\xb5\x00\x97\xe4\x92\x0f\x7d\xff\x03\x32\x5c\xb9\x88\x25\xd1\x70\x0e\x30\x91\xd2\xf9\x5b\x8a\x7a\xa0\xea\x70\x1a\x0b\x41\xb5\xb9\x0a\xe4\x6b\xd1\x6f\x93\xd8\x74\x73\x1c\x9c\x08\xac\x74\x7e\x68\xdb\x95\x63\x07\x78\x4f\xc0\xe7\x9a\x64\x46\x3a\x99\xf1\x62\x58\x72\xdb\xbb\x41\x51\x4c\x56\xd4\xd6\x09\xd3\x4a\x82\x6c\xb4\xbb\x1d\x86\x33\x80\x2f\xe5\x05\xbb\x11\xeb\x5b\x6d\xf2\x18\x2e\xc4\xaf\x6e\xcf\xc1\x40\x2e\x99\xf0\xd9\x52\x04\x2b\x83\xdd\xcc\x4c\x29\x0c\x9b\x89\xf8\x6e\x90\x20\x78\x3d\x65\x67\x6a\x1d\x80\x10\xaa\x4b\x2a\x13\x3c\xfd\x61\x11\xc3\x1a\x43\x2c\x0c\xdc\x7b\x17\x2a\x78\x76\xf0\x15\xc3\xfd\x4c\x3f\xb3\xe9\x7b\x72\xe0\x95\xce\x9b\xaf\x19\x96\x3b\x0b\xe9\xee\x98\xfe\xd6\x86\x61\x43\x1f\xd0\x92\x46\x20\xab\xc4\x20\x91\x41\xd4\x47\xb7\x59\x3e\xe4\x94\x4a\x58\xfb\xb5\xbf\x52\xf4\x5c\x4e\xff\x8e\x72\x88\xbb\x82\xe4\x41\xdf\xbd\x80\x9b\x1d\x17\x54\x78\xe5\x87\xd8\x1d\xef\x2d\xe9\xbc\x95\x3a\x4c\xa7\x9e\xc1\x7f\x0c\x15\xe2\x3c\x5f\x63\x63\x4c\x3f\x49\xe9\x3a\xa5\x2d\x03\xf3\x04\x46\x04\x69\x67\x97\xcf\x62\x8d\x26\x86\x10\x96\xd8\x5d\xb9\xe9\xff\x10\xbe\x31\xac\x06\xa4\x0a\x42\x13\x2b\xf1\xcf\x9a\x0f\x0b\xbe\x9d\x66\x07\x6f\x4c\x2d\x0e\x76\x25\x36\x3f\x1c\x8f\x0a\x77\xab\xcd\xcd\xe9\xa3\x47\x8f\xfe\x13\xc2\x51\xf8\xe4\xff\xf1\xc5\x5f\xfe\xc7\x17\x7f\x99\x96\xf9\xf0\xb8\x6c\x28\x9a\x95\x80\x63\xdd\x04\x08\xbf\xee\x9e\xf1\xb8\xdd\x43\x1f\x46\x71\x63\xc2\xe3\x2d\xf0\x84\xc1\x91\x6a\xf6\x9c\x90\x70\x25\x60\x4f\x69\xa8\xd3\x49\x3b\xcd\x37\xeb\x6a\xa0\xd1\x24\x83\x46\x7b\xbf\x99\xfe\x0a\xda\xca\xc2\x7d\x20\x95\xeb\x6b\x44\x0d\xa3\xac\x0e\x06\xfe\xd0\x12\x77\x12\x07\x14\x4a\x81\x59\x85\x57\x0d\x30\xa7\xeb\x8a\x5c\x40\x36\x58\x87\x03\xeb\x45\x62\x68\x7b\xf8\x1a\xc5\xb0\x0a\x23\x5b\xc8\x7e\xf7\x2a\xcf\x07\xda\xc4\x88\x30\xc2\x28\x21\x44\xa6\x67\x40\x7d\x74\xc2\x5e\xa9\xe7\x58\xab\x3b\xec\x79\x18\x02\xdb\x96\xe8\xc2\xe9\x20\x70\x54\xfa\xaf\xd3\x5f\x85\x15\x9d\xe0\x52\x0c\x57\x72\x43\x37\xb0\x93\xc2\x4c\xf2\x94\x0f\x5f\x6f\x48\x0a\x57\x65\x28\xd8\x95\xf7\x13\xca\xc1\xe3\x0a\xdb\x09\xaf\x64\x68\x34\x86\x99\x76\xa3\xeb\xea\x24\xf8\xb3\x2d\xb8\x2b\x76\xe3\x36\xb5\x1a\x4e\xda\x05\x47\x0b\xdd\xb9\xfe\x94\x9b\x17\x5d\xb8\x90\x83\x5f\x9a\xb1\xee\x26\x67\x19\x66\x95\xa3\x77\x88\x6c\x2d\xf8\x58\x61\x6a\x35\xf8\x4d\x05\x13\xcb\xda\xb0\xce\xeb\xf8\x41\x21\x16\x3c\x5b\x1f\xd0\x5f\x2c\x7a\x68\x8b\x18\x2f\x58\xc6\x15\xb0\xce\xca\x4c\x3a\xfc\x8e\xc1\xf7\x17\xea\xb7\xa1\x30\x1c\x7c\x78\x54\x9a\xe0\x46\xd7\x96\x10\x7f\x45\xf7\x38\x12\x75\x2d\xb9\xca\xa1\xda\x9a\xe4\x98\xe8\x5c\x9c\x06\x49\x13\xf8\x3c\x52\x82\xbc\x69\x07\xde\xb4\xe1\x4e\xce\x8e\xff\x8e\x90\xad\x1e\xa8\x30\x1a\x44\xc5\x88\x71\x75\xf7\x8c\x0f\x7d\xdd\xc9\xa5\xad\xe0\x9e\xe1\x23\x40\x14\xda\xce\x73\xf0\x4d\x79\x4f\x78\xd6\x44\x5a\xcd\x0f\x0e\x0d\x2b\xe3\x21\x24\x4d\x8d\xb6\x59\x22\xab\x21\x7a\xd5\xca\x89\xbb\x41\xf4\xb7\x7d\xe5\x7e\xdd\x17\xc4\x96\xba\xc8\x01\x11\x83\xc9\xd3\x81\xaf\x7c\x28\x8b\x71\xe7\x8c\x9c\xd5\x3e\xce\xe0\x2a\x87\xe6\xc9\xe1\xe9\x73\x38\x1c\x2c\xe4\xda\xec\x94\xb5\xb4\x4d\x5d\xe4\x20\xe8\x92\x29\x63\xd7\x62\x20\x46\xc9\x3b\x7d\x9d\xb5\x00\xdf\x24\x6e\x24\xe4\xc7\xfc\x9d\x1d\x24\x52\xf0\x6c\x19\xd2\x81\x9f\xe0\x6d\x89\xea\x44\xcf\xed\xd7\xde\x68\x0e\x75\x9e\x7b\xc7\xe6\xe0\xac\xc9\x29\xd9\xba\x0a\x2c\xe4\x03\x63\x48\x16\xcd\x37\x6a\x7f\x5e\x55\x85\xc4\x82\xcb\x04\x0f\x91\x61\xc4\xcb\xd1\x88\x5f\xeb\xb2\xc1\x1b\xfb\x55\xb6\xd8\xbe\x70\xb8\x07\xbd\x14\xa0\xbc\x0b\x7c\x70\xce\x96\xc0\x95\x0c\x0f\xed\xb7\x7e\x8a\x4b\x59\x0d\x96\x09\xd9\x6e\xee\x9a\xe9\x01\xd4\xc8\x8b\x8b\x2f\x15\x83\x25\x56\x3a\x7f\xc2\xde\x29\xf6\x18\x93\xd1\xfa\x16\x20\x2a\x5f\x5f\x3c\x8b\x1a\x8e\xf4\xdd\xcf\xaf\xe1\xb8\xb0\x2f\x50\xaa\x15\x6e\x21\x73\x36\xc3\xe6\xe5\x56\x0c\x87\x2f\x1f\x29\x71\x8b\x65\xb0\x01\xf1\xd0\xbc\xd7\xaf\x62\xf9\x26\x81\x8b\xaa\xbb\x78\x61\xca\xc7\xec\x4b\x9c\x73\x25\x0c\x25\x2f\x0f\x62\x25\x96\x8a\xb1\x57\xaf\x0f\x23\xf6\xe7\x76\x62\x6e\x27\x93\xc9\xc4\xaf\xf5\xc5\x30\x0d\xc1\x22\x10\xe0\xa4\x77\xa6\x1a\x17\xb0\xd4\xb9\x9c\x0f\x07\x99\xf7\x4e\x22\xa8\xdc\xf6\x93\xc1\xf3\xe0\x6a\xb8\x50\xdc\x8d\xe9\x50\x60\x76\x0a\x41\x71\xe7\x51\xe0\xf7\xbf\xa3\x28\xb5\xa7\x70\x33\x69\x54\x5b\x7d\xbb\xb8\x43\x60\x48\x3a\x0f\x57\x48\x33\xb1\xe4\x2b\xa9\x81\x46\x1b\x74\x07\x14\x2c\x77\xf7\x6b\xf8\x5d\x6f\xf6\x37\x3e\x9b\x85\xcb\x13\x7a\x30\x41\xfa\x7d\xb0\x54\x71\x57\x69\xec\x2c\x0a\xb4\x0e\x57\x3a\x4f\x83\xa5\x31\xc0\x41\x16\x6b\x50\xee\x6b\xaf\xe3\x7a\xca\x38\x44\x6d\xd8\x0b\x63\xb0\xe0\xb0\x43\x6c\xc6\xfd\x94\x9b\xe5\x3c\xda\x38\xfe\x84\x4a\x9c\x8b\x70\x23\x21\x47\xaa\x34\x13\xf3\xb9\x0f\x55\xb5\x62\xa2\x5a\x8a\x52\x18\x82\xa5\xeb\x7d\x78\x20\x31\x7c\xe2\x3d\x26\xe3\x95\x01\x42\xab\x4a\x5e\x0d\x3f\x5c\xfe\x73\xc1\x07\xca\xa5\x99\xb2\xb7\xbc\x90\x79\x74\x5f\xbc\xde\x3a\x78\xa5\x5e\x6b\xed\x5e\x4a\x0b\x41\xeb\xf0\x32\x0b\x78\x8d\xc2\x84\xc8\xc1\xf6\x23\x07\xbd\x95\x84\xd3\xad\xd8\xa1\xd4\x7c\x64\xf0\x87\xa9\xd5\xd9\x08\xee\x8f\x37\x2a\xde\xae\x36\x19\x06\xc1\x84\x72\x66\x5d\x69\x49\xa8\xe7\xd9\x64\x4f\x89\x8c\xb0\x53\xf6\xad\x8f\x88\x43\x3c\x4a\xc8\x75\x06\xe6\xa9\x06\x4d\xf1\x92\xaf\x91\xe3\x0a\xb1\x73\x14\xc7\x6a\x23\x5c\xc0\x3c\x49\x68\x33\x3d\xd3\x04\xea\x81\xcd\xf8\xc3\x1f\xb7\x2b\x68\x6a\xd6\xfd\xeb\xe1\xf5\x1e\x2d\x28\xb0\x3d\xab\xdb\xf3\x1f\x2e\x96\xdf\x08\xcb\x2a\x23\x32\x91\x43\xd2\x1e\xe1\xe2\xdc\xd1\x79\x23\xee\xc7\x60\xc2\x4d\xb8\xd4\xa0\x1c\x92\xee\xc2\x45\xe7\xe9\x3c\x90\xf7\xd0\xeb\x7e\xe0\x79\xd7\x5f\x29\x6e\x01\xe7\xaf\x26\x46\x6b\xc8\x0c\x19\x64\x5f\x36\x35\x81\x6f\x79\xcb\xd5\x5a\x79\x2d\x19\x1f\xbe\xa1\x74\x67\xb8\x5a\x6c\x53\x4e\x3e\x08\x55\xb6\x36\x02\x57\x40\x3a\x96\x6b\x82\x97\xe0\xf5\x6a\xf8\xf4\x6f\x2f\x9e\xb1\x47\xec\x08\xea\xd9\x1a\x0e\x4a\x0a\xb9\x00\x26\xdf\xfb\xda\x45\xce\xe3\x14\xa7\x64\xf7\x95\x69\x13\xc8\xaf\xbd\x7d\x04\x73\x16\xd6\x94\xe2\x64\xc7\x04\x4c\xe8\x17\x28\xf2\xbd\xaa\xfa\x08\xaa\x8a\xa6\x97\x28\x15\xe6\xa0\x5b\xbe\xb5\x62\x70\x99\xe2\x96\x91\xfd\xf6\x13\x18\x59\x72\x29\x3f\xf6\xc0\x35\xfd\x5d\x03\x6d\xc2\x4a\xe1\x78\xce\x09\x14\x18\x68\xac\xa3\xc0\xad\x7b\x40\xe9\x16\xf2\xa1\x7b\x90\x7c\xd0\xde\x73\x0f\xda\x73\x3d\x5c\x6d\xfd\xc4\x3d\xc0\x73\x3d\x3c\x60\xfa\xfc\x4d\xb6\x15\x2f\xa4\xaa\xef\x30\x0d\x3a\xf8\xe5\x7c\xeb\x6e\x5d\x9f\x83\x38\xe4\x68\xbe\x23\x71\xd7\xcc\x44\x48\xdb\xe5\xdb\x69\xbb\x69\x78\x9b\x6a\xf2\xed\x24\xbd\xb8\xd5\x87\x27\x36\xbb\x41\xda\xd7\xe1\x67\x95\x19\xae\x72\x5d\x6e\x7d\xbd\x3f\x14\x82\x13\x38\x5a\x3a\x2d\xd9\x76\xdc\xd6\x9d\xb7\x6f\xf8\x7d\x78\xff\x6d\xfd\xdc\xac\xd0\x68\xb7\x8f\x44\xb2\x96\xc2\x56\x06\xef\x21\xc9\xe4\x77\x2f\xa0\x5a\x46\xda\xe6\x00\x0e\x7f\x66\x69\x26\xc4\x67\xa2\xd8\x4a\x9e\x27\x32\xe1\x26\x32\x90\x18\x5d\x90\xa8\x93\x7a\x6b\xf4\x5a\x17\xa1\x10\x3d\x2e\x92\x17\xfb\x8b\x59\x23\x47\x82\x2e\x6d\x6a\xf0\x75\xb5\xb1\x46\x6e\x28\x0a\x2b\x8e\x87\xb8\x46\x35\xc1\x7b\x64\x9b\x6b\xe4\x5d\xd0\xfe\x1a\x79\xb1\xbf\x88\x35\xb2\x22\xcb\x74\x59\x5d\x19\x3d\x97\xc3\x6f\xdc\x96\x2f\x10\xc4\x31\x8d\xbe\x05\xc5\x17\xa8\xad\xd8\x22\xe2\xb6\xf8\xb2\x83\x14\x0b\x9f\x50\xcd\x53\x79\x34\x27\x94\x4b\x94\x64\x53\x74\xc6\x8b\xa5\xb6\x8e\xb8\x91\x6c\x73\x33\x37\x05\xb6\x95\x0d\xa4\x63\xcf\xfd\xd7\x81\x9c\x4e\x69\x2d\xc7\x96\x47\x44\x46\xc6\xa6\x43\x4e\x1f\xad\x15\x5e\xea\xf0\xd7\x48\x82\x63\x69\x80\xf7\x35\xda\x4a\x65\xdd\xe2\xcb\x68\xd3\xd5\xc0\x90\x33\x6d\xba\xba\x73\x58\x70\x31\xbc\xa6\x38\x8e\x8a\xbb\xe5\x09\x33\xa2\xe0\x4e\xae\x44\x54\x23\x37\x98\x9f\x22\x72\x2b\x75\x3e\x38\x5e\xe5\xb8\x71\xe0\x28\x4b\x3d\x10\x57\x16\x07\x7c\x35\x3c\xe1\x44\x97\x76\x8e\xc8\x09\x69\xd9\xc1\x8b\x78\xd8\x0e\x3e\x4f\x1b\x7a\x80\x5f\xd2\x24\x30\xa9\x5d\xc0\x18\xbb\x91\x2a\x0f\x4d\x72\x7b\x8b\x4f\x7d\x78\xf7\x23\x44\x56\xf1\x4d\x27\xaa\x66\x6e\xc4\x13\xf6\x8e\x76\xf7\x9a\x0d\x63\x93\xed\xab\x4d\x92\xd8\x55\x07\x3b\xae\x36\x49\x26\xaa\x83\x80\x5c\x8c\xa8\xdc\xc9\x08\x0c\xf3\x31\x84\x8c\x2f\x23\x71\x01\x12\x08\xe3\x1a\xed\xf5\xad\x82\x3b\xe8\x55\xe4\x84\x29\x9d\xa4\xc9\x5a\xcd\x18\xcf\x00\x85\x1d\x8d\xee\x5b\x74\x10\x3d\xf0\x56\x96\x96\x6b\x38\x6b\x5a\x7e\x00\xda\xc7\xc6\x8f\xa2\xe4\xdb\xda\xb6\x99\x21\x7d\x07\xa9\x41\xa9\x10\x7a\xd5\x9c\x8e\xe1\xd1\xaf\x3f\xc7\xa1\x56\x7f\xcb\xb1\xc3\xfa\xbe\x92\x9b\xe1\x18\x8a\xaf\x2f\x9e\x4d\xd9\x66\x22\xc4\x1f\x8f\xb0\x14\x54\xa8\x0b\xcf\xf3\x90\x73\x51\xeb\xd4\x40\x9a\x42\x05\x4f\x24\x82\x4f\x6b\x5e\x9d\x90\x39\x5b\xdb\xcc\x15\x69\xc7\xf8\x1a\x65\x00\x40\x92\xf1\x78\xa6\x87\xbf\xf2\xf0\x52\xd8\x8a\x67\xde\x52\x07\x89\x00\x56\xef\xd0\x4e\x0d\x37\xa6\x57\x4d\x9d\x7f\xad\x02\x9c\xa2\x23\xff\x68\x20\xf5\x0f\x7b\x5f\xee\xed\x38\xb0\xe7\xcd\x39\xa1\xe7\xad\xd3\xac\xe0\xb5\xca\x96\x0f\xfe\x94\xee\xd8\xf6\x08\xfd\x61\x9c\xdd\x08\x43\xeb\xf8\x5c\x71\xc3\x4b\xe1\x84\x89\xb4\x62\x84\x67\xad\xa4\xfe\x02\xf4\xee\x02\xc4\xee\x00\x13\x62\xfa\x3f\xad\xa7\x00\x9d\xbd\xbb\xcf\x88\xd8\xf6\x48\xc1\xe9\x50\xb9\x5f\x9d\x26\x6d\x35\x4b\x27\x03\x86\xd5\x1f\x61\x29\xde\x42\x5a\xf8\x73\x5d\x8b\x5b\xa9\x72\x7d\x6b\xc7\x7a\x36\xf9\x0e\xc5\xb5\x9c\x96\x11\xa0\x3e\xfc\x2d\xe2\xe3\x3e\x9d\xc4\x80\x61\xbb\x75\xd7\xa1\x4d\x4e\xeb\x77\xcb\x83\xa6\xff\xe6\x0f\x8a\x9f\xc9\xfb\xc5\xa2\xb4\xfc\xa9\xf1\x53\x76\x92\x17\xd7\x95\xc8\x92\x03\xe8\xaf\x5f\x5e\x9f\xf5\x45\xd2\x82\x48\x1f\x7a\x0b\x83\x70\x1c\x2f\xb3\xc3\x97\x77\x2b\x66\x4b\xad\x6f\x48\x72\x8f\x3a\x85\x5f\xcb\x7a\x36\xcd\x74\xd9\xa9\xdf\x9c\x58\xb9\xb0\xa7\x41\x3b\x4c\xfc\xea\xd0\x28\xb3\xa5\x82\x3e\xa1\xdb\xfd\x6e\xc3\xc7\xd0\x12\x3a\xcd\xaa\xc2\xd9\x0d\x95\x83\x21\xbf\xba\xbd\xec\x97\xb4\xe6\x3d\x81\x2f\xe9\x93\x67\x6f\xb6\x8f\xe2\xd0\x9a\xb3\x38\x3e\x70\x1c\xc9\xeb\x12\x28\xb8\x62\xa3\xb4\xe6\x60\xb6\xfb\x42\x8b\xec\xfd\x5e\x22\x6e\xe4\xd3\x3f\xcd\x45\x54\xce\x28\x6b\x0d\xe8\x9c\x20\xcc\x2b\xd5\x60\x16\xa9\x39\xd6\x6d\x84\xcf\x38\x4d\x05\xb7\x50\x3e\x31\xba\x27\xbf\x04\xfd\x04\xda\x87\xc9\xe1\xf1\x20\x43\x48\xdd\xa8\x88\x1f\x86\x21\xe1\x16\xf4\xa0\x31\xd3\xb4\x54\xd7\xc7\x44\x1f\xb0\x8f\x87\x40\x60\x23\x60\xe1\x18\xbd\x4e\xd3\xac\x64\x26\xce\xb2\x4c\xd7\x2a\xa1\x4c\xf3\x99\xf0\x93\xe7\x4e\xe4\xd7\x3d\x89\x43\x59\xd4\x39\xcb\x41\x12\x72\x19\xf3\x42\x72\x64\xbc\xee\x4b\x1d\xce\x2f\xd6\xce\x0f\x9e\x5d\x37\xbe\x3b\x28\x09\xeb\x04\xa7\x94\x46\x26\xad\x79\x1a\xf7\xc1\xf6\xba\x50\xfa\xa6\x76\xcd\xc8\xc6\xfe\xa1\x31\x08\x2a\x70\x90\xd0\xe6\x5d\xf5\x67\xd2\x54\x38\x6e\x6f\x5a\x66\x71\x01\xc4\x3b\x8d\x72\xed\xfc\x7d\x58\xbe\x09\xc7\x19\x12\xd8\xc6\x07\xef\x97\xfb\xab\xb6\xce\x2f\xd2\x99\x7d\xfe\xff\x3e\xbb\x4c\x29\x3e\x07\x92\xf9\x96\x80\x65\x19\x04\x0f\x8c\x18\x31\xb8\xe9\x12\x1e\xdb\x8e\x50\x3f\xc7\x61\x2a\xce\xf0\xd0\xf5\x9c\xa3\x99\x2b\x04\x9f\xe3\xa9\x38\xc2\x6e\xb7\x60\x9c\x06\x96\x2a\x5d\x28\xd6\x62\xd8\x30\x72\x3c\xc1\x53\x51\x0a\xae\x6c\x0c\x4c\x07\x1e\x2a\x01\x9f\x17\x4b\x32\xe3\xfa\x85\x0a\x30\x3c\xc3\x83\x24\x62\xbe\x0c\xbf\x53\xe9\x5c\xf4\xa5\x59\x67\xea\xcc\xb1\xda\x59\xff\xf7\xc3\x17\x20\x46\xe3\x23\x2f\x81\x11\x0b\x69\x9d\x09\x84\x99\x7e\xa2\xed\x42\x60\xa2\x76\xd8\xf6\x47\x71\x37\x62\xcd\xfe\xfa\xcd\xf9\xdf\xfe\xfe\xe2\xd5\xd3\xb3\x17\x7f\x7f\x79\xf6\xf4\xaf\x17\x97\xe7\xef\xde\x5d\xff\xed\xfa\xcd\xf9\xcb\x77\xef\x9e\xd6\xc6\x08\xe5\x02\x73\xe5\xb5\x70\xef\xde\x05\x7d\x61\xdf\xbd\x7b\x93\x55\xb2\x7a\xf7\xee\x2a\xe6\x11\x07\x93\xad\xfa\x8d\x05\x2f\x00\x69\xa6\x72\x2d\x2c\x54\x1d\x40\x9d\xdb\xf0\x43\x0d\xeb\xbc\xe4\xb6\x2d\x91\xeb\x91\xe8\x0c\x6e\x6f\x46\x03\x9c\xdb\x25\x37\xe2\x0a\xdd\xbc\xcb\x98\x5c\x4f\x50\xf8\x5e\x1c\xe3\xcc\x4a\xb5\x28\x44\xf3\xcc\xd4\xa4\xed\x07\xad\xd0\x4c\xb8\x5b\x11\x58\xe1\x36\xdd\x59\xdb\xd6\xa9\x0f\x92\x09\xcc\xa8\x2e\xd0\x8c\x78\x77\xae\x23\x31\x2a\x2e\x3e\x1b\xda\xb0\x45\xb3\x95\x14\xb7\xe0\xce\x59\xb9\x50\xbc\x88\x5f\x2e\x02\xe5\x29\x70\x30\x0e\x92\xb9\x89\x02\x12\xcc\xfa\xfb\x53\xe9\xfc\xa4\x69\x71\x09\x6f\x79\x83\xa4\xc6\x0d\xd9\x7a\xf3\xeb\xf2\xe8\x0c\x73\x89\xa0\xbb\x86\xc8\xd9\xd5\xc5\x33\xf6\x78\xca\xbc\x2d\xf2\xff\x0a\x2d\xa0\x76\x1d\xae\x61\xab\x10\x3a\x02\x79\xe7\x19\x3d\xfa\x1d\x44\x16\x43\xf7\x0a\xaf\xd6\x70\xc3\x3c\xf8\x6e\xd5\xb3\x5c\x97\x5c\x0e\x6a\xe8\xfa\x01\x3a\x98\x79\x5d\x14\x6b\xf6\xcf\x9a\x17\xc3\xb9\x0c\xaf\x74\xde\x2a\xe2\x78\xd8\x0f\xfe\x14\xff\xea\xcf\xd3\x3f\x35\x33\xfe\xf3\xf4\x4f\x43\x5b\x73\x34\x77\xfc\xcf\x53\xbb\xca\xa6\x7f\x0a\xdc\xab\x2c\x08\x6c\xaa\x5f\x87\x3d\x3d\xbe\x87\x6f\xa6\xd1\xbb\x3c\xc8\x1f\xec\xa5\x70\xe7\xf5\xca\x47\x67\x9a\xc1\xde\xb9\x00\x21\xfa\xda\xf0\x4c\x5c\x09\x23\x21\xe0\xd3\x2a\xa7\x73\x7b\xc6\x2b\xc0\xf2\xd0\xe4\xc6\x5f\x68\x8b\x42\x07\x5b\x6b\xbf\xa8\x4a\x88\x1c\x83\xfb\x30\x5f\xc1\x16\x7e\xba\x70\xdc\x86\x69\x58\x1f\x81\x03\xf1\x6a\x66\x04\xc7\x72\x78\x96\x8b\x42\xb4\xed\x40\xa6\xf8\x24\x32\x48\x6a\x84\xa7\x29\xad\x26\x4a\x2c\x10\xfc\x15\x9e\xc2\x11\xfc\x36\x3c\xb5\x8d\x84\xb0\x0d\x7e\x29\x4c\x52\x96\xa5\xc8\x7d\x80\x57\xac\x07\x57\xf8\x81\x61\x41\xa7\x47\x5a\xa6\x64\x81\xc7\x36\x22\x66\x60\x49\x59\x05\x47\x80\xe4\x52\xd7\x81\x5e\x00\x22\x41\xf8\x6a\xb2\xc8\x90\xa2\xdb\x71\x80\x18\x9f\xbb\x86\xd2\x3a\x58\xb1\x61\xfe\x5a\x68\xef\xd3\x72\x0d\x42\x2d\xbd\x15\xca\x31\xde\xbd\x11\xc3\x54\x01\x1a\xd6\x68\xfb\xb0\x9a\x05\xad\x39\x75\xa2\x7e\x56\x73\x6d\x32\x39\x2b\xd6\x6c\xc9\x8b\xa6\x41\x11\x67\x37\x7e\xc5\xf1\x27\x87\x1d\xff\x6b\xe1\xba\xc7\xa0\xd0\x6a\xd1\x0d\x5d\xc4\x5d\x05\xad\x5c\x86\x59\x41\x6f\x76\xea\x0a\xbf\xd9\x7b\xd0\x6b\x5d\xa7\x96\xe0\x39\xcd\xbe\x7c\x14\xb7\xfc\x13\x53\x96\x0f\xc0\x9f\x38\x5d\x08\x3c\xa1\x74\x6d\xb9\x93\x54\xed\xd0\x76\x65\x0f\x5f\x80\x4f\x4d\x9a\xfb\x26\x36\x55\xf3\x67\xeb\x4d\x33\xf3\xa1\x19\x2c\x6f\xf8\x1c\x07\x5a\x38\xaf\xed\x51\x0e\x10\x8d\xad\x99\xf7\x04\xdd\xf0\x8e\x7d\x2c\x12\x3a\xe2\xbd\x34\xb2\x2a\x04\xfb\xd3\x8d\x58\x9f\x20\x4f\x3e\x06\x37\x7f\x1e\x28\xb3\xed\x9c\xda\xf0\xb7\xea\xca\x4f\x56\x1b\xf6\xa7\xf8\x6f\x7f\x1e\x76\x37\xc9\x4f\x87\xf4\x87\x43\xfc\xf8\x44\x14\xcd\x39\x32\xa8\xd0\x69\xf6\x71\xe0\xfe\x06\x3a\x16\xa7\x71\x61\xa7\xec\x1c\xe8\x24\x21\xe2\x27\x08\x0d\x3d\x03\x8b\xa2\x27\xde\x86\x1e\x14\x09\x8f\xf0\x0c\xd9\xc6\x44\x8f\x8f\xe5\x52\x5f\x07\x92\x40\x68\xa5\x32\x17\xa6\xfd\x1b\xca\x2f\xa8\x9c\x5d\xea\xf3\x3b\x91\xd5\xc3\x9a\x91\xe0\x48\x78\x50\xba\x11\x84\x0e\xf0\xbd\x43\xf1\x8d\x68\x5a\xdd\xe0\xca\xdf\x08\x0a\xae\xa4\xa1\x9d\x68\xb5\x61\xa7\x46\x87\x92\xe9\xef\x9c\xa7\xad\xd3\x71\x23\xd6\x03\x69\xe2\x71\x84\xe6\x77\x37\xf8\xcd\x81\xaa\xb5\xd1\x07\xde\x39\x24\x08\x9d\x09\x76\x7e\x27\xad\xb3\xff\x13\xb5\x6a\xa6\xcb\x59\xf0\x4c\xc8\xd7\x21\x5e\x2b\xf8\xe6\x78\x70\x55\x0e\x7f\xa4\x7d\x7c\xc2\x21\x8b\x0b\x94\x78\xd2\x5e\xc5\x75\xee\x34\x85\x1c\x5e\x9b\x0f\x67\xfe\xd0\x86\xd2\x0d\xad\x80\xbc\xab\xdb\x7f\x8e\x72\x2e\x22\xb8\x1f\x27\x88\x3a\x02\xf7\x14\x56\xfd\xdc\x07\xca\x14\xb9\xdd\xf7\x4e\x14\x12\xc5\x4a\x20\xfc\x97\x2b\x5e\xd0\x9a\x8f\x3b\xed\xbd\xf9\x3c\xe3\x06\x51\xab\xa1\x97\x8c\x0d\xed\x73\x29\xeb\x0a\xa4\xf7\xde\xbf\x0c\xd6\xbc\xbd\x6f\xc8\x5e\x47\x11\xc9\x8d\x93\x59\x5d\x70\xc3\xbc\xc5\x59\x90\x1a\x5b\x27\x9c\xdc\x56\x19\x11\x42\x65\x1c\x7d\xef\x69\x53\x5e\xe7\x2c\x93\x94\x66\x8c\xb9\x20\x31\x09\x34\x36\x3d\x15\x4a\x90\x79\xd4\x6f\xf7\xab\xe7\xd1\x52\x37\x06\x8a\x62\x43\xdb\xe6\x8b\xae\xd7\x7c\x50\x2e\xa0\x41\x20\x05\xb3\xd3\x3a\x8d\x8d\xed\x99\xb2\xbf\x34\x34\xbe\x94\x59\x22\x1d\x26\x50\xa3\x09\x17\xf9\xb2\xd1\x82\xc4\x5f\x23\xee\x12\x9a\x9d\xb9\x36\x62\x25\x0c\x3b\xca\x35\xfc\x8a\x58\xc9\x6c\xe8\x7b\x11\x8e\xff\x5f\x18\x0d\xaa\xa5\x49\x42\x04\x25\x4f\xaf\x55\xea\x34\xb4\x7c\xc4\x8e\x60\x6a\xdd\x24\x04\x65\x8b\x02\xd2\x09\xbb\x20\x51\x2f\xee\xa7\x2f\x34\x20\x63\x6e\x77\xe0\x6d\x7b\xae\x11\x0d\xf6\xc8\x36\xfd\xa2\x26\xce\xd1\xd3\xe0\x91\x50\x6e\x64\xb4\xa6\xd2\x06\x9b\x72\xd2\xc5\x6e\x50\x8b\xa9\x66\xa2\x71\x8b\x9a\x2b\xff\xdf\x5e\x97\x70\x66\xc4\xc2\x6b\x72\x82\x50\xd4\xdd\x9f\x48\xf3\x3b\x5d\xe9\x42\x2f\xd6\xd7\x95\x11\x3c\x7f\xaa\x95\x75\x06\x8c\x18\xbd\x79\xdf\xfb\x24\x86\xff\xb3\xd9\xc0\x7c\xd1\x52\xdf\x32\x1e\x58\x97\xf5\x1c\xfb\x43\xea\x7a\xb1\xc4\x56\xff\xf0\x23\x8c\x67\x46\x0f\xe4\xf5\x8f\x1f\x1e\x52\xd9\x76\xca\xae\x9b\xf6\xfc\xa0\x56\x2c\x25\xc2\x81\xd9\xc1\x23\xd9\x2d\x5f\x07\x95\xca\x67\x32\x17\xb6\x53\x68\x1e\x17\x64\x60\xeb\x26\xef\x5f\xbc\x77\x6d\xbd\x0f\x76\x76\xf9\x4c\x0c\x7a\x99\xbb\xa7\xa4\xca\x7b\x3e\x62\xe0\x81\x8f\x51\xae\x85\x13\xd2\x9e\x85\x26\x73\xe1\xf7\x62\x68\x9a\xa6\xd4\x21\xff\x81\xdd\xce\xe3\x7a\x7f\xa2\x8c\x07\xb5\xab\x51\xc9\xef\xae\x6f\xc4\x30\x8e\xf0\x49\xf3\x71\xdf\x0c\x0c\x61\x27\x90\x01\xfe\x56\x59\xee\xa4\x9d\xcb\xc1\x0f\xb7\xf4\xbc\x0e\x30\x5a\x5c\x43\x5f\xee\xe4\xf8\xea\x45\x57\x96\x37\x0b\xb5\x25\xd5\x13\x87\x16\xa2\xfd\x63\x37\xc5\xf2\x36\x42\x56\x8f\x35\xd9\x1d\x70\x1d\x91\xc3\xc3\xc6\x69\xfa\x5b\x0e\x08\x27\xea\x54\x73\x81\x2f\x01\xe8\x3a\xab\xba\x9c\x09\x13\xb5\x2a\xc5\x85\x84\xfc\xba\x34\xfd\xb6\xe5\xcd\xc9\x22\x48\x44\x6d\x4c\x35\x7e\xc4\x2a\xb3\xb4\xe2\x2d\xd8\xae\xf3\x3b\x1f\xd9\x58\x4a\xb9\x0e\x8e\xde\xe1\xdc\x14\x49\x92\xc8\x90\x47\x26\x56\x32\xf7\x8f\x12\x51\x62\xd0\x50\xd0\x83\x06\xdf\xc2\xba\x7f\x43\x14\x4a\xb2\x5d\xed\xa0\x17\x5b\xe2\x20\x96\x5c\xe2\xd8\x2c\x1b\x1f\x63\x91\x7b\xcb\x8c\x9b\x98\x2c\xb1\x4b\x5f\x16\x9e\xc9\xec\x09\x94\x86\xae\x69\xc8\x67\x16\x32\xb9\x5c\xb5\xce\x35\xfc\x08\xa4\x9a\x88\xdc\x2d\x2c\xb8\xff\x37\x62\x0d\xc2\x71\x9e\xb4\x63\x91\xa8\x13\x70\xd0\xeb\x4f\x71\x4c\x88\x09\x62\xfc\x6f\xe3\xc2\x12\x05\xa4\xa9\x35\x1c\xa4\x94\x79\x3b\x7a\xd7\xe3\xa6\x49\x9e\x27\x48\x8c\xbc\x56\x5e\x58\x93\x46\x4f\xbe\x1e\xac\xa9\x6d\xa4\x26\xe0\xe3\x48\xac\x7f\xc5\x41\xcf\x21\xb7\xa3\xb7\xf4\x7a\x3b\x9b\x9c\xb6\x56\xbb\xf3\xca\x89\x32\x81\xa5\x79\x1e\x6f\x3d\xe6\x99\x93\x44\xf6\x73\xd4\x17\xea\x84\x5d\x6a\x77\xa1\xe8\x1a\xcf\x8f\x4e\xaa\xfb\x99\x16\xf6\x52\x3b\xf8\x9b\x7b\x3f\x34\xb8\x6c\xa3\x1d\x99\x90\x62\x83\x06\x7a\x69\xfb\xea\x2d\x73\x00\x4e\x7b\xef\x30\x4d\xa9\xe3\x08\x4f\x53\xdd\xb4\xce\x45\xda\x2c\xb5\x09\x67\xa3\xcd\x0b\xd9\x04\xa7\x22\x8e\x2e\x84\x2a\xb4\xfd\x22\x90\xa9\x76\xc7\xe6\x77\xe3\x71\x4c\xfd\xf6\xee\x49\xee\x2e\xc1\x08\x3b\x1f\x97\x20\x7c\xfe\x9b\xa1\xbd\x2d\x77\x4b\x85\x1e\xd6\x55\x01\xac\x24\x79\x9d\x74\x71\x18\x2a\x1f\x67\xb8\x13\x0b\x99\xb1\x52\x98\x85\x60\xd0\x57\x2f\xfd\x52\xa7\x1e\xa1\x24\xef\xb4\x3b\x11\xb2\x76\x81\x60\x04\xc2\xe5\xd1\x42\x1b\x94\x06\xba\x85\xf8\x65\x25\x87\x6c\xe0\xff\x6a\x10\x2f\xff\x9b\x55\x5c\x1a\x3b\x65\xb4\xe2\x65\x16\xd1\xf3\x5d\x89\x01\x4b\xd7\x99\x72\xc2\x6c\x7b\x6f\x98\xc8\x83\xc4\x04\x72\x56\x11\xa5\xea\xf9\x56\xa0\x78\xc2\x6e\x97\xda\x8a\x04\xaf\xb3\x79\xac\x3a\xb8\x11\xeb\x83\x93\x9e\xba\xa1\x87\xa1\x07\x17\xea\xa0\x85\xd0\x8f\xa0\x5d\x9b\x50\x06\x88\xfe\x0e\x40\xe2\xc1\xc3\x8a\x48\x13\x02\x8f\xc8\xeb\xc5\x8b\xab\x64\x1f\x3e\xe1\xf6\x87\xbc\x62\x62\xa6\xed\xf0\x25\x8a\x69\xf3\xff\xc4\x10\x20\x17\x0b\x23\xa0\xee\x10\x13\xeb\x90\x6c\x2f\x11\xf9\x5c\x2b\xb1\x12\xaa\x20\xa5\x9c\xa4\x0d\xad\x3f\xf3\x00\xa0\xfa\xc7\x56\x82\xf3\xff\x7e\xa6\x2f\xb5\x8b\x2f\x04\xff\xa0\x3f\xb7\xa2\x3e\xb9\x93\x65\x5d\x62\xc7\x2f\xe7\xbc\x01\x93\xf3\xd0\x51\x9f\xf4\x08\x85\x15\x3b\xfd\x8c\x5e\x4a\x1a\x9c\x35\xa9\x3d\xe6\xb8\x59\x40\x07\xc9\xf0\x5a\x12\xaf\xf0\xa2\xd0\x33\x12\xa1\x40\x29\x95\xff\xf8\x29\x7b\xae\x0d\x13\x77\xbc\xac\x0a\x71\x82\x4f\x26\x5f\x4e\xfe\xa5\x15\x65\x05\x42\xd5\xc3\x09\x8b\x27\x2d\x94\x19\x39\xcd\x1e\x9f\x90\x7a\xd5\x85\x97\x1c\xc0\x25\x37\x65\x40\xbd\xf4\x33\xe5\x61\x2f\x3c\x56\x59\xf6\xf8\xf4\xf1\xe9\xa3\x27\xec\x47\xe6\x3f\xf8\x71\xf8\xe7\x17\x04\x91\xf8\x5f\x7e\xc9\x7e\x64\x3f\x32\xc6\xae\xe0\x6f\xda\x7f\xc2\xff\x05\x41\xea\x84\xc9\x79\x77\x2d\x1f\xfb\x0d\xca\x74\x19\x8e\x13\x65\x87\xb8\x6a\x29\x59\xc3\x2d\x02\x30\x2c\x4e\x9f\x14\x39\xce\x44\xa6\x4b\x01\x6b\xf9\xf8\x7f\x46\xa9\x00\x81\x77\x4c\x2b\x92\x48\xd8\x8e\x23\xd8\x8c\x63\x76\x0b\x8c\x96\x25\xbf\xc1\x64\xf9\x59\xe6\x6a\x5e\xf8\x25\x39\xfa\x62\xf2\x88\x02\x10\xd0\xaa\xff\x03\x2b\xa9\x0b\xee\x44\x5c\xe9\xa3\xc7\x24\x70\xc4\xe6\x66\x7d\x31\xca\x66\xf5\xf6\xc9\xaf\x26\x80\x95\xfd\xc4\x29\x73\x7c\x9f\x56\x8d\x0a\xf5\x4c\xad\x6f\xf9\x3a\x41\xad\xc6\xe6\xf9\x0b\xb9\x12\x6c\x29\x17\x4b\xe8\x96\x13\xa9\x13\x68\x6f\x25\x41\xe7\xc9\xd8\x26\x0c\x27\xbe\x66\xd2\x4d\xd9\x85\x3b\x24\xd1\x1e\xf3\x26\xa3\x18\x68\x6c\x9a\xea\x53\x2a\x5a\xc2\x5f\x4f\xd0\xca\x8f\x22\x9a\x27\x20\x78\x07\x77\x28\x1c\x11\x82\xf2\xe5\x50\x5d\xd6\x79\x8b\x4c\x06\x9d\x35\x92\xa2\xbd\xa5\x39\xc3\x7a\x8e\xc4\xc0\xa0\xf5\xed\x94\x5d\xea\x3c\x9e\x84\x25\x5f\x91\x80\xcf\x21\x75\x19\xac\x8a\xb4\x4d\x9e\x5b\x02\x41\x4f\x46\x32\xa8\x1d\xa0\x76\xa6\xa1\x09\xaa\xc1\xbb\x30\x13\xc1\x88\x53\x4c\x15\x87\x26\x71\xe1\xf5\x9b\x7d\xd7\xca\xa6\x75\x9c\x61\x58\x9b\x80\x93\xfd\x33\xb6\xca\x3b\x98\xd5\xd9\x8d\x70\x07\x54\x0b\xed\x0c\xb4\x67\xad\x6a\xc7\x66\xbc\xe0\x2a\x13\xf9\x18\x2f\x9a\x4e\x63\x95\x2e\xce\x0e\xae\xba\xed\xdc\x5b\x82\x4c\x22\x61\x55\x82\xe3\xbe\xa5\x69\x53\x5d\xf8\xef\x36\x05\x26\x91\xf4\x07\xc0\x46\x2e\x78\x11\x4b\xbf\x2a\x9d\x77\xba\xfc\xa9\xc3\x43\x4a\xe0\x14\x35\x34\x78\x6c\xe8\x6c\xb5\x70\x9b\x29\x9b\x10\x44\xf6\xfc\x7e\x76\x14\x59\x2f\x98\x13\x45\x41\x8d\x63\x6c\x03\x34\xf2\xea\xda\xe9\xe6\x2f\xc0\xb4\x50\x66\xd9\xb7\xa3\xed\xe4\xda\x9f\xa2\x99\xc0\x66\x62\xb1\xa4\xd0\xfb\xe9\x6a\xdd\x10\xf4\x9f\x78\x37\xac\xa6\x6c\xd5\x42\xae\xbc\x83\xb2\x65\xaa\xfb\x86\x97\x32\x6b\xaf\xa0\xd1\x75\x5b\x8a\xa2\x62\x46\xe4\x75\x86\x1f\xc0\x98\xbd\x11\xb7\x14\xff\xe5\xac\x73\x8e\x18\x14\x2d\x34\x8a\xf6\xa0\x77\x2d\x28\xa4\xe7\x73\x6d\x18\x57\x3d\xa7\xcd\x5f\x05\x6f\x17\x34\x2d\xa2\x95\x73\x26\x56\xc2\xac\x59\xa5\xad\x95\xfe\xb6\x82\x25\x03\xd6\x00\x62\xbe\xa9\x69\x81\x05\xd5\xe0\xb0\xbc\xd1\x7d\x3d\x08\xce\x27\xe5\xdb\xb5\x62\x56\xf7\x4c\xcd\x46\x58\x48\x32\xb3\x18\x48\xbe\x2f\x2c\xa4\x5d\x05\x0c\x24\x3f\x6e\x58\xf8\xa5\x0f\x65\xc6\x0e\x0b\xaf\xe0\xff\x6d\x85\x87\x04\xa9\x17\x73\xb6\xc3\x0e\x34\xa1\x76\x4f\x55\x92\x5c\xf9\xee\x0d\xd8\x19\x31\xd2\xb6\x0e\x56\x11\x82\xae\x2f\x8f\xd1\x31\x82\xc0\xf1\xcb\xd3\x2f\x4e\x1f\x1f\xf9\x35\xff\x82\x12\xcd\x71\xdb\x0f\x09\x1f\x1f\xc7\x00\x2f\xfe\x16\xd9\x82\xf9\x90\xa3\x13\x14\xb2\x0b\x85\xf8\x62\x76\xab\x4d\x6e\x29\x4b\x0b\xc8\xd3\xc0\x0d\xe1\x57\xd6\xba\x50\xdc\x2e\xcb\xe8\x3b\x51\xc4\xce\x6a\xd7\xb1\x66\xb7\xda\xdb\x6d\x8c\x98\xa5\x63\xbf\x29\xb5\x11\xbf\xa1\x9c\x83\x66\x4e\x21\xd0\xda\x0e\x9b\xa8\xb1\xcd\x60\x6f\xea\x6e\xd2\x61\x5f\x2d\xa4\x75\x93\x92\x57\x93\x1b\xb1\x1e\x94\x8f\xa5\x82\x2d\xd3\xa0\x96\xdb\x73\xc7\x45\x28\x79\xf5\xb3\xa5\xac\x74\x51\x97\xc3\x92\xcf\x7d\xcf\xf1\x45\x80\x9f\x05\x41\x01\x88\x04\x19\x86\x41\x7b\x58\x22\xec\x91\xcd\xd6\x5d\x96\x9e\x99\x28\xb4\x5a\x20\xe6\x70\xb0\x37\x36\x80\x88\x2e\xd3\x2a\x13\x95\xb3\xa7\xd6\x69\xc3\x17\xe2\x34\x7c\xce\x70\x3e\x9b\x4f\x8d\xb6\x7e\x0b\x13\xed\x55\x11\x22\x33\xef\xc0\x1b\x84\x1f\xdc\x10\x40\xe1\x3e\x86\xe4\x3b\xcf\x80\x07\x62\xa8\xc8\xd9\xba\xdf\x0b\xa4\xc3\x5d\xf1\xc0\x01\xd7\x83\x89\x6f\xe8\x50\x2c\x7e\x6b\xcf\x0b\x6e\x9d\xcc\xfe\x52\xe8\xec\xe6\xda\x69\x93\x1c\xcd\x9d\x7d\x77\xbd\x25\x93\xa0\xa7\xbb\x67\x4a\xb1\xb3\xef\xae\xd9\x33\x69\x6f\x98\x11\x56\xd7\x86\x96\x75\x83\x66\xf4\xb6\x47\x97\xc0\x9b\x3e\x63\xa4\x8c\x1b\xb4\x8e\x2a\x79\xb6\x94\x4a\xc4\xd7\x0b\xc5\xc4\x5d\xa5\x31\x65\x48\x34\xa6\x23\xe8\x8e\x5f\xf1\x5b\x2b\x70\x1b\x66\x7e\x1b\xfc\xff\x2c\xa8\x86\xed\x1e\xfa\x6b\xe0\x67\x5c\x3c\x1b\xfc\x9f\xa6\xe1\x12\xe7\xf6\x0d\xb1\x91\xda\xe6\x35\x78\x2e\x0b\x81\xd5\x7a\xf4\x46\xa4\x4d\x97\xf6\xa0\x1f\xe1\x04\xaf\x75\xcd\x6e\x39\xf9\x5d\xdf\x69\xb4\x76\x53\xf6\x46\x56\x4f\xd8\xb9\xb2\xb5\x11\x0d\xd8\x91\xfc\xae\xdf\xfb\x58\xf0\xdb\x63\xdb\x1d\xa2\xc8\x50\xd1\x04\x37\x0c\x21\x02\xde\x10\x53\xeb\x1f\x71\x9c\x63\xe8\x67\x9f\xb0\x03\x71\xe7\x7e\x77\x70\xc2\x0e\xee\xe6\xd6\xff\x43\xb9\xb9\x25\x35\xed\xf3\xe3\xa2\xac\x0a\x99\x49\x57\xac\xfd\x7d\x15\xa6\x4d\x91\xe2\xcf\x50\x91\x0d\x9b\xad\xef\xc7\x57\x08\xc4\x99\xbd\x79\xf5\xec\xd5\x13\x48\xb4\xe5\x9a\xdd\x42\x87\xc9\x95\x50\x8e\x09\x63\xf4\x40\x16\xce\xce\xe7\xaa\xc0\x80\xd8\x1c\x25\xe0\x59\xcc\x74\x59\x19\x5d\x4a\x4b\x07\x61\xe1\xb3\x38\x28\xe9\xe1\x1a\x90\xa5\x63\x9c\xa0\xf4\x1e\xd4\xc2\x08\x7a\x05\x58\x83\xa2\x40\x2a\x75\x39\x7b\xaf\x56\xa1\xe3\x6c\x83\x56\xb9\x98\x33\x8d\xc0\x83\x1e\x53\x1a\x1d\xdd\x13\x15\x96\xd7\x08\x61\xc6\x6a\x30\x1d\x77\x3b\x5a\x1d\xf0\x5c\x9b\x28\xf0\x34\x17\xab\x53\x9b\xf3\xc7\x54\xf0\xae\x5f\x3e\xbc\xaa\xa8\xb6\xda\x1d\xe2\xd4\xfb\x70\xf0\xf8\x60\xca\xae\x65\x29\x0b\x6e\x8a\xf5\x49\x77\xc7\x1a\xe9\x54\x75\xad\x4d\xf3\xc9\x00\xa0\x7a\x74\xc0\x8e\x90\x84\x8c\x8a\x98\xe2\x8a\x15\x82\xaf\x44\xe4\x6e\x83\xa6\x48\x88\xca\x3c\x26\x04\xd4\x2c\xf9\xc1\x90\x25\x3e\x1a\x32\x70\x60\x78\xfe\x4a\x15\xc4\x22\x85\x0d\x1e\xdd\x70\x3a\x0e\x9c\xa9\xc5\x01\xfd\x9a\xcd\xb5\xc9\xd0\xd7\x84\xcc\xd8\x52\xb0\xd7\x61\x96\xa9\xbd\xa8\xa4\x0a\xf1\xdc\x4b\x7f\xdd\xe0\xe2\xe1\x64\x13\x50\xc5\xbb\x54\x01\x9c\x38\x60\x6c\x25\x5b\xdc\x07\xe1\x1b\x33\x32\x8d\x6c\x3b\xa2\x9b\x3b\xc6\x09\xfb\x56\xc9\x7f\xd6\x82\x5d\x3c\xa3\xb0\x92\xb7\xa3\x12\xc6\x4a\xeb\xbc\x3d\xcf\xbb\x11\x17\xdd\xd6\xf8\xe0\xed\xe8\xac\xe4\xff\xd2\x8a\x9d\xff\xe5\x3a\x7c\xf4\x31\x7a\x34\xe4\xc3\xfa\x50\x36\x9f\xe4\x16\xf0\x7f\xd5\x46\xf8\x80\x36\x31\xda\x3e\x8b\x72\xd2\x6a\x6f\x7c\x84\xed\x25\xb1\x67\xdc\x71\x0c\xb4\xd1\xe6\x6a\xea\x1b\x3f\xf8\xed\x5e\x4b\xcd\xa0\x7e\x39\xb6\x76\x20\x77\xf4\xbc\xb7\x40\xd4\xdf\x01\x52\xd7\x24\xfc\x4f\xbf\x7d\x7d\xf1\x89\x43\xd8\x0c\x3c\xdd\xc5\x4b\x9d\x8f\x12\xc7\xfe\xd5\x6f\xe4\x53\x94\xc9\x4a\xb2\x50\xc6\x2e\xb5\x12\x27\x60\xac\x98\xb7\x56\xe1\x5f\xbf\x33\xd2\x0d\x63\xee\x6e\x47\xa2\x5b\x1e\x77\x76\x84\x55\xf2\x4e\xf9\x65\xa7\xa7\x49\xce\x1d\xb5\xf6\x00\x74\x6e\x88\x85\x66\x85\x9e\xb1\xa0\xbf\xee\x6b\x85\xbe\x7d\x7d\x31\xd2\x02\x7d\xfb\xfa\xe2\x97\xb4\x38\xa3\xa5\x8a\x36\x32\x45\xc9\x11\xd8\xcb\x50\x12\xc5\x3b\xb1\x34\x35\x4a\xf4\xf3\x69\x1b\x28\xef\xcc\xc9\x10\x45\x87\x4c\x0e\x3b\xbf\x9b\x7e\x8e\xd9\x98\xfb\x38\x71\x37\x52\x11\x6b\xc5\xfb\x2a\xfd\x3c\x30\x56\xa7\x55\xe1\x41\x2b\x88\xfc\x09\x2b\xeb\xc2\x01\x41\x30\x5c\x48\x7f\x43\xa9\x12\x2b\x61\xe2\x85\x66\xa1\xd9\x12\x63\xcf\x04\x42\xc1\xc8\x55\xf2\xa1\xf4\xaa\x99\x5d\xf7\x67\x88\x22\x9b\xc9\xbd\xe4\x8a\x2f\xfc\x22\x80\x3f\xc7\x4a\xfc\x23\x55\xb9\x79\xdf\x0b\x66\x78\x04\xd8\x04\xa9\xa2\x40\xc6\x57\x5c\x16\x7c\x26\x0b\x49\x8e\xee\xac\x70\xc7\xd3\x18\x82\x41\x70\x07\x8d\x62\xf2\x7b\x31\xbd\x23\x06\xd6\x5d\x5e\x4f\x08\x2a\x89\xeb\x73\xe4\xe7\x74\x7a\xeb\xdd\x91\xe3\x69\x1b\x53\x2f\x05\x39\x44\x01\xa2\x2f\x0c\xd7\x7b\x61\x3a\xa5\x07\x53\x3b\x36\xa2\xf4\x14\x45\x44\x0b\x5b\xe1\xa8\x7b\x9b\x35\x46\xe8\xe2\xe5\x8c\x14\xba\x80\xa8\xd0\x1c\x6a\x1f\xbd\xc0\x98\x30\x2b\x32\x23\x1c\x31\x7e\x01\x05\x41\xfa\x6f\xd3\x22\x98\xbd\x76\xf8\x7c\xb5\x03\x03\x53\x13\x0f\xdd\x08\x3b\xd8\xed\x3a\x8c\x82\xc9\x2f\x1e\x5d\x92\x22\xd4\x19\xd7\x49\x6e\x40\x6c\x59\x09\x91\x9f\xd7\x16\x43\xc9\xee\x9a\xa9\xa5\x59\xd3\xe6\x9e\x8e\xb0\xdc\xd8\xee\x8d\xdc\x26\x3a\xe1\x4b\x32\x51\x2d\xe7\xa9\xac\xd0\x4f\x45\xb5\x7c\x7e\xdd\x07\x24\xf9\xbf\x23\x7c\xcc\xf3\xeb\x9e\x15\x41\x9b\x80\xb5\x5a\x7e\x8d\x68\x05\x5a\xd8\xa6\xa4\x90\x73\xe1\x24\x61\x89\xef\xcd\x8e\x94\x5a\x49\x47\x79\xdb\x4d\x64\xbf\x0b\x3f\x3b\x46\xd4\xf3\x3a\x7e\x3e\x7b\x49\xfd\x18\x1c\xc0\x99\x96\xe9\xa2\x10\x19\xbc\xf0\xe9\x39\x1c\x31\xfa\x1a\xe1\xd8\xf1\xa6\x11\xa0\xea\x76\x7a\xf3\x07\x48\x6c\x87\x14\xf6\x29\x5e\x95\xd3\xd7\xe7\x67\xcf\x5e\x9e\x4f\xcb\xfc\x57\x4b\x7d\x3b\x71\x7a\x52\x5b\x31\x91\x2e\xc5\xa3\xbf\x27\xa2\xbb\xe4\x07\x76\xb7\x1c\xe3\x88\xb4\x7d\x08\xbf\xb5\x40\xdf\x9d\x02\x38\x08\x90\x52\xa3\xb5\x3b\xe9\xf6\xbb\x4d\x90\x39\xaf\x8b\x02\xcf\x9a\x33\x42\x9c\xa4\xbf\xad\x0f\xea\x65\xdc\x99\xcb\x83\x89\xfe\x0e\xb7\x5a\x47\x92\xf7\x2c\x38\x88\xef\x71\xf5\x88\x52\xbd\x83\xf8\x3e\x57\x8f\x1e\xc8\xbb\xd0\x8b\xad\xe7\xea\x8d\xf7\x9a\xf6\xe9\xd5\x4e\xaa\xaf\x49\x0b\x47\xd9\x4f\x9c\xa6\xeb\x46\x6e\x02\x72\x05\x80\x20\x6e\xe9\xcf\xd6\x8d\x58\x33\x20\x28\x9b\x93\x99\x6e\xbe\xb5\xc2\x9c\x74\x1f\xd1\x4f\x85\xcb\x60\x53\x4e\x6b\x2b\xcc\x34\xc9\x3b\x7e\x10\xd6\x87\xee\x01\xc3\xa7\xbf\x16\xf3\x8f\x71\x08\x5e\x0b\x2a\xfa\x01\x68\xc4\x02\xf7\x4a\xcc\x1f\xf0\xda\x2d\xb1\x1e\x3b\x01\xc0\x83\xdf\x0b\x38\x9e\xcd\x53\x41\x94\x18\xf8\xd3\x1e\xc4\x31\x48\xe0\x36\x4a\x67\x25\x55\xe4\x38\x8a\x6d\x9d\xa4\xce\x93\x20\x59\x22\x8b\x47\xc8\x0d\x46\x80\xea\x95\x30\x2b\x29\x6e\x4f\x6f\xb5\xb9\x91\x6a\x31\xb9\x95\x6e\x39\xc1\xd5\xb5\xa7\xd0\xdd\xf7\xf4\x57\xf0\x8f\x84\xd9\x21\x16\xf4\x2c\xcf\x43\x15\x59\x6d\xc5\xbc\x2e\xb0\x92\x2a\x89\x87\x91\x57\xf2\xad\x30\x16\x0a\x81\x6f\xa4\xca\x4f\x58\x2d\xf3\xaf\x68\xe7\x8a\xa5\xab\x18\xaf\x62\x47\xf7\x31\x0d\xfd\xc2\x42\x57\x7e\x9e\x6b\xa0\x27\x31\x70\x6c\x47\x70\x08\x79\x5e\x4a\xf5\x30\xb4\x00\x2d\x89\x20\x55\x4e\xd9\xa7\xfe\x1e\x3d\x05\x29\xa9\xcd\xd1\x70\x2e\x11\xb3\xd9\x54\x9d\xf0\x98\x51\x26\x3d\x14\x69\x15\x2b\x56\x6c\xaf\xfa\xa4\xab\x1c\x28\x09\xef\xf7\x6c\x73\xb9\xb6\xff\x2c\x26\xf8\x25\x93\x2a\x6f\xf7\x79\x5f\x4a\xf2\xa1\xf1\xd0\x4a\x49\xda\xc2\x8f\xcf\x0d\x20\xb0\xbb\x68\x83\x28\x36\x80\x0b\x76\xc1\x04\xe8\x0b\xdb\x80\x0b\x46\x81\x09\xfc\x2c\x6f\x7c\xc4\x9b\xc9\xf6\x21\xfd\x80\xf1\x8b\x08\xe9\x3f\xca\xe9\x49\x8d\xe2\x47\x8f\xdf\x2a\x2d\xe9\x34\xad\x50\x1d\x1a\x02\x2d\xb4\x5a\xf1\xf5\x88\xae\xd3\x2a\x6e\x78\x29\x9c\x30\x2d\xa9\x5c\xa6\x95\xc2\xee\xcd\x44\x99\xaf\x2a\xa1\xae\x1d\xcf\x6e\x92\x50\x94\xfb\x98\xab\x37\xf6\x31\xd7\x43\x88\xb9\xc6\xac\x8e\x88\x14\x03\x79\xbc\x79\x54\xbd\x0a\x6c\x7a\xa1\xcc\xab\xe5\x2d\x40\x55\xfa\x6f\x61\xef\x33\xad\xe6\x72\xf1\x92\x57\xa9\x6f\xb5\x51\x4e\x22\x00\xa8\x9d\x50\x7c\x9e\x05\x06\xa9\x4a\x57\x75\x41\x6d\x33\x2b\x6d\xd8\xdb\x4f\x1b\xe6\xa4\xa9\xd2\x10\xfd\x8f\x85\xfc\x6f\xed\x68\xa9\x73\xc1\x66\x92\x6c\x4a\xa3\xad\xb3\xc2\x21\x2f\x35\xf2\xc9\xfb\x60\x36\xc3\x56\xb9\x44\xc1\x10\xbf\xf8\xa8\x23\x7c\x7a\x27\xb6\xa1\xa6\x56\x75\xe6\x78\xe8\xf3\xde\x90\x5f\x3f\x7a\xf4\xe8\x11\x91\x47\xd2\x8f\x47\xff\xf9\x9f\xff\xc9\xb4\x61\x9c\xe5\x22\x93\xe5\xa6\x78\xaa\x54\xc8\x24\xfc\xc7\xe3\xc7\x53\xf6\xb7\xb3\x97\x2f\x80\x27\xa5\x72\x96\xcd\xb4\xa3\xc0\x1d\x58\xf3\xed\x5e\x6c\x6f\xa2\xf6\x84\xfd\x3f\xd7\xaf\x2e\x89\x42\x43\xe8\x6e\x37\x64\x26\x3c\x84\x34\xc7\x71\xda\xc3\x77\x3d\xfa\xfd\xef\x7e\x47\x55\xc0\xcf\xa4\x01\x86\x35\x29\x90\x80\x2d\x92\xc5\x70\xf2\x5a\x72\x23\x90\x30\x17\x5a\x7e\xc7\xd8\x18\x09\xcd\x1c\xa9\x05\x2f\x8e\x37\x5e\x46\x29\x17\x4b\x17\x38\x58\xbd\xf6\x2b\x64\xe6\x60\xde\xd4\x8d\x07\x37\x42\xc3\x85\x0f\x2c\x4a\x38\xef\x44\x4e\x08\xd8\xaa\x13\x56\xc8\x1b\xc1\xe6\xf6\x6b\xa3\xeb\x8a\x4a\xc8\xca\x62\xce\x53\xd8\xba\x88\x24\x4f\x61\xe2\xfe\x57\x88\x22\xfd\x31\xf2\x5b\xf2\xd9\xd6\x28\x27\xe0\x2e\x7a\xea\xfe\xa2\x97\xb8\x38\xa1\x32\xf1\x32\x6c\xeb\x36\x41\x0d\x57\x71\xd9\x10\x2f\x41\x69\x21\xb8\xa8\xd4\x43\x3a\x0f\x07\x20\xbc\xa8\xe5\xad\x07\x41\x94\x18\x3a\xbc\x7b\xb3\xfb\xdf\x78\x49\x81\xa1\xb7\xf5\xec\xa8\x77\xdf\x86\xdc\x5a\x68\x98\x02\xf8\xc5\xa4\xe6\x74\x91\xcb\xd9\x47\xa0\xa1\x6f\x63\xd3\xeb\x84\x5c\x28\x33\x67\x9d\xfd\xf6\xe2\x0a\x69\xfd\x22\xdc\x88\x35\xd5\xd2\xff\xc4\x8a\x36\xbf\x45\x8e\x9d\xdd\xd2\x22\x4f\x66\xad\x3a\x33\x85\xdf\xa4\x06\x9e\xda\xe1\x6c\xc1\xfb\x04\xf2\x0a\x1e\x3a\x09\x52\x53\x39\xf1\x2b\x43\x1b\x91\x40\x9b\x1e\x7e\x81\x9c\xcb\x81\x15\x6c\x8e\xfb\x49\xfa\x11\xb5\xc2\xd5\x15\x6e\x17\xb0\xb6\xf8\x35\x15\xd6\x22\xe3\x3d\xd5\x2e\x73\x73\x23\xf2\x60\x46\x78\x31\x65\x57\x7e\xcb\xa0\x45\x17\x55\x3b\x8b\xd0\x04\x70\x85\x00\xdb\x92\xaf\x61\x39\x43\x22\x26\xc1\x8c\x1c\x4e\xa7\x87\x08\xce\xd0\x86\x59\xc7\x4d\x92\xfd\xf4\xd2\x3e\xf7\xfe\xb2\x2f\x79\x65\xb1\x53\x99\x54\x8b\x84\x1e\x4f\x21\x73\x06\x6b\x1b\x5c\x29\x1e\xce\xea\xbf\x6d\xaf\xd5\x04\x3f\xf2\xa1\xf5\x59\x7d\x13\x3a\xe8\x26\xf6\xe3\x0c\x06\xe2\xde\xfb\x5a\xa6\x54\xb4\xb3\xf7\x87\xcc\x49\x6b\xd3\xc4\x37\xdd\xc0\x39\x6d\xb5\xfb\x41\x37\xc4\x21\xde\x3f\x49\xeb\x93\xd9\xc6\xda\xdd\xa8\x39\x49\xe4\x66\xc4\x0d\xb1\x73\x92\xc4\xd1\xe3\x6e\x1c\xef\x89\xbe\xd3\x3e\x5e\x7b\x73\xb4\x19\x83\x27\x89\xec\xc6\xef\x4d\x24\x9e\x24\x71\x3b\x8a\x4f\x09\xbf\x70\x60\x2c\x7f\x31\x07\xdb\xde\xfa\xa4\x49\x32\x3b\xe9\xd9\x4e\x5e\x2c\x49\x64\x74\x6e\xfd\xad\x9c\x76\x02\xf1\xc4\x13\xbf\x15\xc4\x63\x54\x9b\x76\xea\x47\x0d\xe5\x71\xbc\x2f\xa0\x4f\x12\x1a\x5b\xbe\xf5\xc2\xfa\xb4\x4f\x6f\x52\x02\xa9\xc1\x3d\x8e\xf4\x10\x1f\x47\x6a\xa0\x8f\x83\x5e\xea\x80\x63\xcb\x96\x47\xff\x3a\xcd\xbe\x80\x23\x3d\x6f\x08\x1c\x01\x6c\x42\x0e\xcb\x71\xb8\xc6\xd1\x98\xb2\x97\xc1\xef\x4f\x3c\x1a\x5c\x31\x3e\xb3\xba\xa8\x1d\xa6\xf6\x40\x70\x92\xc4\x4e\x30\xd2\xc2\xbd\xd3\x1a\xaf\xe2\x80\x88\xa2\xf9\xee\xe4\x00\x05\x07\x84\xe1\xe8\xdf\xd3\x23\x96\x20\x2a\xcd\xf9\xa2\xbf\xf8\xbe\xf7\xb5\xb7\x7d\xb3\x1d\xef\x11\xee\x5e\x5f\x7a\x3f\xca\x2b\xef\x98\x2f\xbc\x89\x67\x40\x27\x39\xcb\xfd\xaa\xd5\x40\xae\x78\xbb\x14\xa1\xce\x8a\xaa\x28\xda\x47\x49\x6d\x98\x37\x1f\x90\x62\x0a\x5d\xc6\xc9\x61\xf6\x5c\x2a\x62\xde\x2b\x05\x59\x93\x59\x99\xfa\x44\x7b\x7d\xc1\x8e\x9e\x36\x14\xfa\xf4\x72\xe9\x0b\xe5\x84\x99\xf3\x4c\x1c\x77\x51\xb5\xa2\x5a\x8a\x52\x18\x92\x8f\x1b\x89\x62\x22\xab\xfb\x92\xab\xbc\x08\x2d\x1c\x84\x21\x66\x87\xc4\x9d\x13\x46\xf1\x02\x3e\x3c\x37\x72\x25\x8c\x65\x47\x7f\x11\x8e\xb3\xb9\xe0\xae\x36\x82\xd0\x45\xf3\xfe\xa8\xeb\xe0\x03\x3e\xf5\x23\x34\xfc\xe8\x18\xd4\x0d\x20\x28\x66\xba\x07\x37\x45\x68\x47\x30\x0f\xed\x96\xc6\x3e\x8b\xfe\xc0\xd0\xe1\xf7\x0d\x44\x60\xea\x95\x06\x78\xaf\xe0\xbc\xaf\x75\x4d\x75\x13\x11\x7d\x8f\xdd\xb0\x04\xcb\xb4\x31\xde\x6f\x87\xd7\x03\x72\x2d\xaa\x11\x0b\x69\x1d\x74\x13\x0b\x3e\x4a\x68\xd5\x73\x2f\x14\x56\x0f\x96\x34\x6d\x7c\x1a\xb2\x79\x48\xfc\xeb\x95\xcc\xe3\x03\x0b\x54\x59\x25\xa5\x49\xa4\x65\x15\xb7\x21\x2d\x04\xf5\x64\xd6\xea\x4c\x26\x60\x28\x3a\xf7\x02\x9f\x2c\x20\xcc\xcd\x85\x13\xa6\x94\xa4\x8e\xd9\x2c\xb8\x9a\xb1\x28\xad\xdb\x1d\x40\x33\x5e\x55\xc5\xfa\x5e\x0e\x9f\xd2\xb9\xb8\xaa\x67\x85\xb4\xcb\xeb\x11\x01\xa7\x97\x3b\xc4\xd2\x77\x97\x6f\x97\x0c\x26\x15\x76\x6e\x41\x57\x99\x15\xca\xca\x84\x90\xcf\xbb\xc8\x3e\x94\x95\x5a\x41\x8b\x54\x6e\x6d\x9c\xe9\xd3\xeb\xe1\x6c\xa7\x38\xa2\x66\xd6\x40\xf8\x5f\x08\x27\x1a\xa5\xdd\x59\xdf\xb7\x49\xaf\xb2\x2a\x07\x59\xdf\xaa\xaa\x2b\x8d\x65\xbc\x28\xc8\xfe\xf4\x1b\x4c\xa5\x8a\x22\xf7\x9b\x17\x5d\x5a\x7c\xa6\x64\x25\x39\xba\x9c\x45\x5d\x21\xbd\x1a\x89\x30\x64\xa8\x27\x45\x7f\x20\x41\x2d\xb5\x47\x6a\xe3\x70\x90\xdf\xfd\x34\x76\x10\x51\x4c\xab\x28\xfa\x84\xf1\xa2\x48\x3b\xb9\xcd\x3d\xc0\xfe\xc3\xa8\xf6\x52\x14\xc7\x1e\xe3\xdc\x1b\x7b\x8c\xf3\x43\xc0\x38\x8f\x58\x39\x73\x1d\x32\xe7\x68\x44\x78\x3e\x21\x76\x78\x65\x0d\xc8\xb7\x36\xa8\xe6\xa3\x4b\x9a\xf6\x8c\xbb\x45\xc6\xd6\x2f\xcc\xf9\xe4\xf1\x31\x6b\x20\xe6\x67\xce\x19\x39\xab\x1d\xf5\x7a\xef\x68\x8a\xd7\x8a\xa4\x22\x34\x9c\x06\xd4\x24\x18\xc6\x49\x78\x15\xc9\x3a\x9a\x88\xec\x99\x71\xd7\x51\xa8\x1d\xd3\x1d\x7e\x8b\xba\xbd\x31\x0a\xf2\x01\x50\x10\x75\x68\x59\xae\xb3\xba\x14\xca\xa5\xd0\x1d\xf8\xe3\xd7\x16\x19\xe2\xcb\xd3\x3d\x19\x02\x9e\xe7\x12\x6d\xfc\x55\xb2\x49\x48\xd0\x1c\xb9\xbe\x55\xb7\xdc\xe4\x67\x57\x04\x76\xee\x7e\x98\xdd\x4a\x4a\xc3\xe1\xc7\x29\x31\x2f\x89\xcf\x74\xed\x9a\xc6\xde\xfe\xc8\x51\x52\x3c\x7d\x20\xff\x1e\x96\x3f\x32\x2c\xdf\x69\x6f\x55\x3b\x28\xfc\x6d\x3c\x3d\x35\x95\xde\x54\x18\xef\x8b\x08\xf6\x45\x04\xfb\x22\x82\x7d\x11\x41\xc2\xdd\xdc\x17\x11\x7c\x70\x3c\x98\x22\x02\x2f\x07\xb3\x58\x05\xb6\xe6\xa6\xa6\x83\xba\xce\x44\x80\xf1\xcc\xa9\x64\x6c\x0f\x07\x63\xdb\x71\xb6\x30\x4a\x48\x20\x98\xeb\xb5\x48\xee\xe7\xe4\xc8\x12\xd1\x90\xb6\x30\x8e\xe4\x82\xf7\xa6\x9f\x71\x52\xe5\xc7\x83\xc0\xff\xde\x33\x86\x17\xd6\x8f\x9c\xb0\xc6\xf1\x1e\x42\xdc\x24\x4c\xc9\xb5\x28\x44\xe6\xb0\xe0\x45\x14\x79\x7a\x5a\x0a\x5a\xe7\x3f\x61\xd0\x02\x83\x2b\xa5\x31\x72\xb4\x69\x30\xb3\x82\xcf\x44\x61\x4f\xc2\x5b\x9a\xca\xe1\x5f\x6c\xc5\x49\x8d\xc4\xdb\xe1\xed\x73\x13\x98\x8e\x80\x32\x4b\x3a\xe2\x6c\x84\x63\xce\xe0\xa8\xc3\x4e\x5e\xd1\xcf\x3b\x1b\xe9\xcc\xb3\x5e\xba\x2e\x4d\xce\x66\x92\x06\x65\x26\x8a\x6c\x1e\x97\x6d\xb6\x14\x25\x4f\x3e\xf9\x7e\x3c\x8f\x8b\xef\xed\xe8\xad\x91\xce\x25\x42\x95\x59\xa8\x20\x12\xa6\xb4\x4c\xcf\x1b\x96\xb8\x34\x1c\x30\xc3\x00\xf2\x60\xf5\x98\xfc\x44\xda\x88\x19\x03\xc8\xcf\xa2\x8e\xbc\x4a\x44\x48\xb2\xcd\xa3\x72\x85\xe0\xc6\xf4\xd5\x02\xab\xea\x75\x24\x44\xb1\x45\xda\x4d\xc7\x11\x42\x8c\xb6\xea\xec\xec\x8a\xfa\x02\xd7\x8e\x15\xde\x8d\x07\xb1\xad\xff\xde\xf5\x19\x69\x46\xaf\xdc\xd7\x67\xec\xeb\x33\xf6\xf5\x19\xfb\xfa\x8c\x84\xb1\xaf\xcf\x18\x36\x46\xad\xcf\x18\x29\x44\x8b\xce\x64\xd8\xc8\xb1\xea\x3d\x54\x07\x7b\x4f\xce\xcd\xc4\x81\x24\x9a\x21\x91\x1f\x32\xf0\x4a\x27\x5f\xdd\xa6\xdc\x43\x9b\xc4\xa2\xf1\x30\xcd\xa5\x60\x87\x87\xd3\xe9\xe1\x61\x2c\x20\xa1\x17\xb7\x37\x93\xac\xdd\x7c\xf2\x07\x26\x54\xa6\x73\x54\x5c\xa9\x7a\xc0\x58\x07\x49\xab\xb6\x32\x62\xac\x3d\x2f\xc3\xbe\x8c\x55\x91\x82\x6b\x99\x7e\xfd\x13\xbd\xcc\xd8\xe3\xfe\xf9\xe8\x49\x96\x26\x3d\x92\xb4\x4c\x4d\x0f\xfe\xb0\xa1\x59\x84\xe4\xa7\x29\x06\xc8\xb1\x44\xd9\x96\x15\xb2\xa4\x3f\xcf\xe1\xf0\xe6\xc2\xbb\x31\xc2\x3a\xcb\x8e\x50\xe0\x34\xab\xea\xc4\xec\x0d\xca\x29\x45\xa9\xcd\xfa\xa4\xf9\x01\x2f\x78\xb4\xd9\x06\xe9\xc7\x8c\x93\x29\x57\x71\x64\xb5\x31\x42\xb9\x62\xfd\x4b\xcc\x0c\xc5\xc3\xf2\x00\x12\x43\xcd\x1d\xa0\x77\xbe\x6b\xc7\x06\xff\x7b\x14\x9d\x1c\x4a\x03\xea\xaf\x59\xfb\x84\xe7\xca\x76\x04\xe6\xfd\x93\x06\x6c\x9a\x2c\xd1\xc7\x08\x42\xad\xd8\x8a\x1b\x9b\x72\x52\xd9\x98\xb9\x9c\x5c\xae\xa4\xd5\x89\x0a\xee\x7d\x00\xb9\x51\x72\x39\xba\x76\x55\xed\x82\xdf\x38\x56\x22\x51\xdc\x55\xda\x8a\xbc\xd5\xca\x69\x9a\x93\xb5\xf8\x13\x78\xde\x3e\x78\x4c\xed\x7f\x1e\x47\xc5\x9d\x13\x46\x3d\x61\xff\x75\xf4\xee\xb7\x3f\x4e\x8e\xbf\x3a\x3a\xfa\xfe\xd1\xe4\x8f\x3f\xfc\xf6\xe8\xdd\x14\xfe\xe5\x37\xc7\x5f\x1d\xff\x18\xff\xf0\xdb\xe3\xe3\xa3\xa3\xef\xbf\x79\xf9\xf5\x9b\xab\xf3\x1f\xe4\xf1\x8f\xdf\xab\xba\xbc\xc1\x3f\xfd\x78\xf4\xbd\x38\xff\xe1\x67\x0a\x39\x3e\xfe\xea\xd7\x89\x13\xe7\x6a\xfd\x2a\xc9\xb0\x33\xd0\x80\x63\x85\x1b\x5d\x69\x23\x5c\x17\xc6\xee\x26\x2d\x66\x77\x22\x95\x9b\x68\x33\x41\xc1\x4f\x98\x33\x89\x79\x9f\x78\x1c\xc7\xd5\xb3\xe3\x84\x37\xdd\xf9\xb5\xa9\xd5\x7b\x54\x64\x80\xdc\x7f\x26\x93\xdb\x90\x9c\x07\x39\xa9\xfc\xb8\x4e\x94\x95\x36\xdc\xac\x59\x1e\x10\x2a\xeb\x51\x1a\x99\x76\x3a\x99\x0e\xc6\x90\x87\xf2\xcd\xd8\x47\xe6\x57\xb0\x66\xb9\x34\x9f\xb8\xaf\x48\x62\x7b\x52\x91\xcb\xba\x1c\x03\xd4\xf7\x9d\xdf\x0e\x28\x64\xd3\xf3\x58\xda\x4a\x05\x36\xc1\xa4\x22\x78\x72\xc6\xb3\x1b\xcc\x27\x37\x7b\x4f\x07\x0d\x89\x6e\xf7\xb9\x83\x83\x50\x2f\x56\x0a\x4e\x2e\x1d\x09\x10\x44\xa8\xf0\xd4\xb9\xf0\x47\x2a\xfe\x04\x7e\x47\x32\x02\x51\x85\x42\x9a\xc0\x7b\x70\x14\xc4\x1f\x53\x41\x4e\x86\xbd\x84\x40\xe1\x1e\x4f\x3c\x1b\xa1\x61\x9e\xfc\x97\x78\xe1\xa3\xaa\x31\x0e\xef\x1b\x0d\x29\xf1\xd0\x2d\x99\xfa\x50\x56\xe8\x8c\x17\x4d\x59\x77\xd7\x65\x86\xf3\x4b\x94\xda\xe8\xd0\x58\xab\xeb\x4f\xb1\xff\x7a\x0c\x2a\x89\x52\xa5\x65\xbc\xb0\x58\xcb\x28\x33\x3e\x2b\x04\x26\xda\xe1\x64\x24\xdd\x5b\x9c\x60\xc9\xef\x64\x59\x97\xac\xb6\x7e\x2d\xc8\xcf\xd4\x38\x9f\xa8\x11\x9a\xa5\xb8\xf5\x9a\x81\x0a\x75\xc3\xcb\x5a\x4a\x05\x13\x1c\xe3\xc1\xc6\xcb\xbb\x8e\xe7\xb1\xf3\x94\x99\xd0\x5c\x3f\x66\xad\x6d\x0d\x39\xb0\xb0\x0e\x49\xf9\x0d\x3d\x87\x8a\xb6\x26\xea\xb4\x0c\x88\x0d\x2b\x4d\x2e\xc5\xdb\xd0\xa7\x4a\x16\x63\x28\x54\x30\x24\xcb\x70\xbc\xbd\xdc\x5a\x05\xfe\x89\x91\x78\x51\x76\xab\xb9\xda\x0a\x33\x59\xd4\x32\x1f\x4b\xc1\x7d\x66\x71\x46\x42\x74\x31\x46\x4c\x31\x42\x24\x31\x72\xfc\xd0\x70\x7b\x24\x7a\xc1\x07\xe7\x51\x50\xaa\x1b\x1c\x5e\x1b\x77\x10\x86\xf0\xc8\x89\x40\xb1\xa4\xc1\x60\x85\x02\xe6\xa3\xb3\xa2\x5a\xa6\xb0\x85\xa0\x5e\xc0\xb9\x06\x07\x3b\x5b\x67\x05\xf2\x47\x4b\x6a\xe7\x92\x6e\x25\x4e\xe0\xa3\x01\xae\xdf\x89\xff\xff\x88\x04\xca\xed\x7b\x0d\x9b\x89\x39\xd6\x00\xe3\xaf\xc0\xe3\x00\x29\x73\x81\xef\xea\x85\x70\x40\xa0\x2c\x54\x23\x12\x4a\x9f\x4b\xbd\xa2\xa9\xb1\x77\x8a\x7d\x6b\x43\x01\x91\x9c\x3f\x61\xfc\xb8\xd7\xbe\x85\x72\x9e\x20\x77\xae\x84\xc8\x91\xea\xb9\x68\xbf\xde\xd4\x34\xb4\xe2\xec\x38\x1e\x1b\xeb\xad\x8d\xd2\x06\xde\xf1\x51\x9b\xc2\x93\x2e\x41\xa8\x11\xfe\x80\x42\xe3\x69\xa3\x4b\x66\x15\xaf\xec\x52\x3b\x78\x0f\xe3\x15\xcf\xa4\xa3\xf8\x2b\xef\xfc\x91\x32\x3c\xbb\xf1\x82\xa1\x48\x01\x16\xe2\x84\x65\xc7\xc4\x67\xec\x8d\x6b\x24\x6d\xc7\x11\x70\x4b\xa3\xeb\x05\xe5\xa1\x89\x37\x72\xb3\x82\xdb\xc0\x1e\x9e\x1f\x07\x22\x34\x6a\x94\x15\xe6\x18\xd2\xfb\x96\xe5\x6b\xc5\x4b\x99\xc5\xe3\x04\x94\x1f\x56\x6a\x22\x6c\x3a\x7c\x2d\x4e\xff\x4a\x18\x2b\xad\x13\xca\x21\x5e\xfc\x69\xc1\x25\xa5\x57\xe3\x91\x15\x82\x35\x9a\x14\x65\x5d\x63\xc6\x04\x11\x22\x24\x57\xeb\xdd\x06\x1b\x84\x56\xf1\x75\x4a\x89\x8c\x58\xef\x19\x11\x46\x9d\x62\x3f\x0c\x8c\x51\x3b\x10\x24\xee\x5c\xc3\xe3\x69\x54\x0a\x63\x2d\xb1\x36\x40\x7f\x10\xf2\xb8\x2b\xa1\x72\xdd\x29\xdb\x3d\xbb\xba\xa0\x68\x19\xbf\x39\x51\x03\x80\xee\xae\x70\xb6\xf0\x3f\x14\x5a\xd1\xfc\x05\xe0\x6a\x40\x27\x31\x5a\x17\xef\xde\x2a\x26\x55\x2e\x57\x32\xaf\x49\x8f\x0a\xde\x15\x8e\x8b\xfa\xf4\xfa\x02\xa7\x28\x17\x4b\x37\xb9\x15\x44\x18\x0e\xc6\x84\x8d\x2b\xd1\x2c\x85\x9c\x27\xd0\x8d\xb4\x2a\xc6\x3b\xda\x2e\x40\x0f\x10\xca\x47\x2b\x54\xbd\xe5\x6b\x36\x61\xfe\x8a\x01\xed\x4d\xb7\xe2\x99\x8e\x87\x0f\xd3\x8c\xd7\xb3\x7b\xd1\xfc\x32\x13\x24\x9e\x81\x79\xca\xb8\x82\x9c\x0b\xa0\xd9\xfc\xcd\x02\x6b\x93\x42\xc5\x16\x77\xc5\x2b\xd7\xaa\xb9\x4d\xed\x5f\x53\x96\x14\x34\x34\xf7\x77\x5f\x96\x62\x3a\xfc\xd1\xe2\x1e\xb3\x82\x7b\x46\x87\x07\xc0\xe8\x00\x5a\xfc\x8d\x28\xab\x82\xbb\x31\xca\xae\x0f\xbe\xeb\x80\x0b\xe9\x25\x56\xa1\xc0\xca\xfb\x25\x5c\xe5\x13\x5e\x78\x93\x71\xf5\xf6\x29\x5d\x62\xe3\x6d\x74\xb7\x13\x62\x88\x4a\x53\x93\x3c\x52\x85\x4c\x04\x18\xe1\x9d\x6e\x03\x3d\x71\x26\xca\x99\xc8\xc1\x6b\x0e\x2b\x0a\x6f\xa9\xb7\xf4\xd7\xf6\x60\x71\xaf\xde\x3e\x3d\x61\x72\x2a\xa6\xf1\x4f\x29\x8d\x61\x66\xa2\x09\x43\x9c\x5e\x20\xa9\x28\x40\x3f\xe9\x20\x4d\x30\x8f\xb0\x31\x5d\xe0\x5c\xfa\x3c\xff\xf1\x27\xaf\xd5\xbd\xcc\x3f\x4f\xfe\x14\x1c\x26\xf8\xd3\x3f\x88\x32\x6f\xa1\xc3\xf1\x3f\xfa\xb2\xd2\xda\x17\xc1\x17\x43\x00\xe2\xbf\xf9\x1f\x57\x3a\xf7\x9a\x6d\x8a\x07\xca\x52\x27\x0a\x15\x9d\x4c\x28\x67\xd6\x53\x76\xa5\x81\x19\x44\xe6\x29\x44\x23\x70\x24\x8d\xf8\xef\x00\xc7\xc5\xc8\xb3\x81\x5c\x65\xdc\x09\x95\x40\x34\x10\xdb\x40\x29\xed\x70\xaa\xa0\x85\xb9\x3f\x03\x44\x89\x47\x00\xdd\xc0\x4e\xa1\x27\xcc\x69\x0d\x3e\xe1\x31\xd1\x3f\xf0\xe3\x4c\x31\x71\x27\x2d\xb4\xa3\xc6\xb3\x09\x87\x9e\xbb\x14\x06\xce\x98\x72\xf1\x1f\xee\x6f\x7a\xd3\x28\x9e\xae\xa2\x60\xa7\x7e\xa3\xb4\xfb\x4d\xa3\x94\xa3\x49\xa3\x0b\x75\x9a\xf1\x95\x86\x16\xb1\x10\xd8\x2a\x56\x2b\xc0\x4e\x92\xb7\x3c\xdc\xa1\xd9\x9a\x95\xd2\x3a\x7e\x23\xa6\xec\xda\x71\x93\xd0\x16\xbf\x93\x10\x71\x4b\xa1\xd8\xac\xd0\xd9\x8d\xc8\x59\xad\x9c\xa4\x6a\x11\x2f\xb3\xf9\x52\xd8\xf6\xb4\x74\x0b\x0b\xdd\xc5\xea\x6c\xc9\x38\xab\x8c\x98\xc4\x44\x11\xca\x26\x3f\x67\x6c\xb8\xeb\xed\x29\xa2\xa2\x64\xa2\x0a\x5e\x72\xf0\x61\xea\x2a\x87\x69\x26\xe0\x5a\xb9\x42\x63\xb6\x4d\xe3\x48\x3f\x97\x5a\x65\x6d\x7a\x09\xae\xa7\x9d\xb2\x4b\xc8\x0f\x91\xdd\x41\xa4\x91\xc0\x47\xe2\xd0\x06\x4d\x89\x4c\x58\xcb\xcd\x9a\xba\x9a\xb3\xda\x31\xe9\xa0\x4b\x17\x6e\xd1\xbc\x2e\x30\x8d\x57\x72\x55\x27\x4c\xd6\x88\x4c\x2b\xeb\x4c\x9d\x81\x62\xe2\x6c\x66\xf4\x8d\x50\x69\x54\xb6\x90\x16\xec\xf3\x37\x36\x3e\x76\x02\xbf\x84\xd2\x2c\x5b\x72\xb5\x10\xb6\xf1\x70\x4a\x9e\x83\x0e\xf8\xa6\x49\xb0\xd3\x15\x54\x3c\xb1\x7c\xee\x7c\x10\xeb\xe0\xe8\xce\xe8\xaf\x6f\x0d\xe4\xfe\x9d\x62\x11\x8f\x73\xd2\xe0\xbc\xe9\x6e\x89\x92\x05\x21\x6c\x63\x63\x00\x5e\xd3\xa0\xae\x13\xc8\x3c\xd2\xde\xac\x92\xa1\xad\xa5\x70\x3c\xe7\x8e\x8f\xc4\x14\xf9\x92\xaf\x9b\xf6\x14\x58\x02\x9f\x80\x8a\xf2\xe1\x7d\xa7\x20\x1f\xad\x7a\x82\xef\xca\xc2\x1b\x82\xae\x64\xb7\x4f\x24\x78\x1d\xcb\xa4\xf2\x3f\x38\xd3\x5e\x51\x48\xe7\xf5\x64\x28\x39\x42\xea\xc8\x94\x05\x30\x82\xf1\xa2\xd0\xb7\x22\x87\xc5\x08\xd7\x3b\x41\x22\xba\x9a\x22\x67\x79\x0d\x39\xfa\xd6\x81\xa5\x17\xdf\x8e\x80\x17\xf7\x17\x60\xa4\x13\xf8\xa6\xad\x4e\xce\x52\x3c\x73\x16\x92\xa1\x70\x42\x76\x65\x6c\x53\xaa\x95\xfd\x24\x85\x72\xd2\x88\x6e\x83\x55\x3c\x98\x09\x62\x6b\x85\x86\x60\xe3\x70\x13\x93\x8c\x71\x2c\x84\xb3\x2d\x61\x1b\xc6\x54\xde\x19\x0c\xb9\x8e\xd4\x75\x80\xa4\x1b\x5e\x15\xc6\x11\xe4\x90\x20\x71\xe7\x56\x25\x96\x58\x00\xf2\x06\xe3\x27\x1f\xa9\xde\xeb\x4d\x19\xab\x9c\x81\x67\xde\xf5\x7a\xa9\xf3\xd4\xaa\x88\x3e\x32\xeb\xac\x15\x9b\x24\xb5\xa9\xb6\xb0\x81\xd8\xdd\x7a\xfb\x9a\x28\x12\xbf\x19\x2a\x41\x6d\x7a\x43\xdb\x38\x82\x4b\xbb\xe4\xab\x1e\x28\x35\x51\xea\x10\x80\x5f\x9b\x02\x9f\x44\x28\x0c\x7e\xea\x04\x3e\x75\xf2\x38\x0d\x9a\x9c\xca\x66\x15\x47\x12\xab\x55\x7f\x32\xc9\xf8\x75\xef\xf2\x5c\x8f\x00\x30\xdf\xc0\x25\x36\xbe\x7d\xea\xe1\x47\x9e\xb8\x86\xed\x01\xbb\x0d\x25\x0a\x15\xd2\x7b\x25\x4f\xd8\x6f\xba\x39\x97\x44\x99\x21\x43\xdb\x3c\xf2\xa7\x16\x8d\x31\x78\x3a\x0e\xe2\xa6\xe1\x80\x4f\x6f\xfe\x00\xa7\xbf\xff\x63\x89\xbf\x32\x61\x7f\x11\x8e\x1f\x8f\xba\x1a\xde\xd8\x1e\xed\x7e\xfd\x4d\x94\xdc\x9b\x25\xcb\x6a\xeb\x34\xe5\xc9\xb8\x3b\x62\x05\xc3\x69\xe0\xe4\x4f\xf4\x12\xfc\x90\x65\x85\x9d\xe8\x2c\x5c\xb0\x48\xa4\x9b\x4e\x7b\x84\x20\xa7\x63\x76\xa1\x98\x36\x39\xb4\x6d\x48\x94\x58\x5b\xf1\x51\x0e\x2f\xbc\x6f\x62\xef\x15\x5e\x79\x53\x6d\x24\x77\xa9\x26\x26\xa0\x74\xd8\x82\x3b\x91\xd8\x1a\x2c\x0e\xa1\xf8\xac\x10\x39\x3b\xea\x2f\xc2\xb3\x46\x2f\x26\xca\xd7\x86\x9d\xa9\x35\x0a\x6f\x85\xa6\x5e\x83\xd0\x4c\xa2\x79\x82\x12\x86\x25\x17\x38\x72\xd5\x76\xe1\xf2\x4e\x87\xd1\x45\x91\x5c\x68\xe5\x15\x78\x80\xeb\xf4\xf9\x92\x12\xe5\xc2\xb5\xc2\x7b\x7b\x92\x80\xa4\xeb\x4d\x35\xbe\x10\x2a\x71\x3b\x8e\x47\x34\xe3\xde\x6e\xb5\xd8\x1c\x47\x44\x50\x76\x47\xa4\x3d\x6b\x30\x5a\x7e\x25\x52\x3d\x37\x58\xc7\x69\xd3\xa2\x64\xfc\x3d\x8a\x6f\x10\x4d\x61\x76\x6a\x71\x65\x07\x44\x08\xc9\x80\x54\xc6\x8a\x1e\xa8\x32\x82\xd8\xe7\x5c\x16\x75\x62\x51\x7a\x4b\x8e\x63\x44\xa0\xd1\x27\x77\x14\x8b\xc3\xdf\xd4\x15\xf4\x0f\xb9\xc0\xb3\x35\xaf\xbd\x5a\x4c\x5d\xd3\x5b\xc1\xaa\x82\x43\x6b\xa1\x78\x65\x89\xf0\xb4\xee\xe8\x9e\x02\x04\xbd\xd0\x33\xbc\x71\xf8\x6f\x9e\x89\x25\x5f\x49\x6d\xc6\xe0\xbd\x64\x3d\x4d\x5a\xf2\x75\x48\x24\x27\xd1\x07\x8c\x46\x20\x30\x0e\x85\x80\xf7\xf4\x6e\x64\xe2\xd2\x4f\x52\x1e\x23\x71\x8c\xc5\x42\x00\x04\x95\xc0\xb3\x94\x5e\xc4\xda\x8b\x5e\xce\xae\x2e\x40\x6c\xb2\x54\x16\x5b\x28\x2e\xbc\xb8\x51\x28\x08\x1a\x12\x6d\xbc\x4f\x33\x91\xee\xab\xb3\x6e\xc3\xa7\x1c\x8c\xc0\xb8\x2b\x30\x22\x75\x19\x8e\xbe\xfd\xfb\x26\xf5\x4c\xe3\x88\x94\x7d\xb1\x55\x63\xba\xe2\xf3\xe3\xec\xea\x02\x77\x7f\xca\x9e\x6b\xc3\xb8\x4a\x8d\x5d\x59\xc3\xe3\xe5\x96\xd2\xe4\x93\x8a\x1b\x12\x8e\x7c\x73\x04\x77\x7d\xdc\x9d\x4f\x6d\x99\xd6\x9f\xde\x48\xd5\xfa\x5e\x07\x8e\xac\x31\x46\x3a\x82\x41\x5b\xc4\x62\xe4\x11\x18\x5f\xe2\x00\x3d\xd1\xb9\xe5\x0f\x69\x3f\xd2\xda\xb3\xc5\xd1\xef\x0b\x99\x6a\xa3\x70\x74\x1a\xe0\xfe\x9b\xec\x47\xc3\x7d\x32\x66\x32\xf0\x75\x14\x9a\x9c\xa7\x69\x48\xf7\x3b\x85\xb0\x23\x25\x7f\x7e\xe9\x79\xf0\xe6\x3b\x1f\x88\x47\x3b\x9e\x17\x88\xb5\xc5\x23\x6b\x90\xc3\x17\xe9\x8c\x6c\x5d\xb1\xb3\x70\xc0\x42\x79\xf9\x08\x72\x9b\xa2\x7f\x68\xdb\x5a\x27\xa7\xd6\x58\xef\x32\x84\xc7\xf6\x74\xc3\xbd\x55\xc4\xfc\xa1\x33\xdc\x03\xcb\x9f\x96\x5c\xf1\x85\x98\x84\x4f\x9c\x34\x13\x9c\x34\xd5\xe0\xa7\xa9\x74\x33\x23\x1e\x6a\x36\x72\x9b\xba\xee\xf8\xcc\xaa\xb2\x37\x16\x65\x0c\x06\x28\x36\x3a\x0b\x14\x1b\x9b\x09\x8a\x7d\x6c\x36\x28\xd6\xb0\x26\x8e\xad\xf0\x5e\x07\xb9\xe3\xab\xbc\x51\xec\x34\xfb\xe8\x2a\x6f\xbc\x60\x05\xd2\xf3\x71\x3d\xa1\x39\x75\x29\x1d\x1d\xc9\xdc\x1d\x08\x5b\x6f\x94\xdf\x18\xd1\xb4\x74\x3d\x9e\xba\xd1\x0c\x1f\xa0\xf7\x11\x7d\x2e\xee\xaa\x42\x66\xd2\x91\x51\xa8\xdd\xd1\xa6\x12\x30\x10\xbe\x95\x76\x8c\x83\xe0\x34\x94\x61\xc6\x87\x3b\x30\x3f\x93\xc0\xdf\x31\x82\x78\xa0\x6b\x19\xd1\x1d\x64\x3f\xd3\x25\xdc\x9b\xd3\xdd\x63\x6f\x4e\xd9\xbf\xbd\x39\x45\xba\xc2\x54\xa6\xd3\x7e\xee\x18\xc1\xbe\xec\x9f\xb5\x20\xd3\x51\xc5\xa1\x57\xa2\x53\x82\xae\xbd\xd6\xb7\x32\x4f\xde\x25\x6f\x42\x66\x52\xe5\x09\x4d\x2c\x71\x3c\xc0\x58\xb0\xe4\x2e\x5b\x9e\xdf\x55\x46\x60\x4b\x97\x91\x9d\xa4\x4d\xf1\xe3\xe4\x98\x9a\x8e\x8d\x78\x76\xc6\x30\x91\xe1\x60\x47\x9f\x06\x90\x28\x63\xf8\x35\x6f\x96\xa2\x27\x73\x0c\x5d\x66\x04\x3b\xbb\x7c\x36\x5e\x92\x38\x1d\x9f\xc7\xc6\xc2\xe8\xb1\xf7\xa8\x87\x11\xc4\xee\xde\xe4\x51\x04\xc3\x91\x8c\xd2\x47\x91\x08\x7e\x60\xc4\xb1\x8e\x22\x31\x76\xef\xe1\xec\x46\x90\x8b\xa6\xfa\x03\x8b\x2c\x98\x57\x45\x7c\xd4\x0f\xc7\xea\xbe\x94\x22\xde\xfe\xb8\x11\x50\x24\x95\xd4\x8d\x7f\x63\x9a\x63\x7a\x6c\x63\xbd\x56\xe3\x98\xf8\xcf\x1d\x45\xce\x88\x1b\x3b\x9e\xc1\xc2\x71\x23\x88\x94\x15\xdb\xa3\xa7\x6e\xc6\x59\x3a\x1c\xe1\x31\x64\x3c\xfd\xc5\xc2\x51\x8e\xbc\x89\xa3\x09\x6d\x14\x23\x70\x84\x8e\x40\x39\x1f\x87\xd3\x63\x5c\x36\x36\xee\xf3\x19\x8e\x78\xb8\x3f\xca\x31\x1a\x55\x25\xb2\xde\x4b\xce\x68\x22\xc1\x10\x1c\xda\xd0\x70\x47\x2b\xbb\x94\x63\x3c\x62\xe3\x70\x1a\x2c\x62\x02\xc5\xee\xf6\x08\xda\x9b\xbd\xe5\x85\x1c\x23\xc1\x80\x23\x6e\xd5\x88\x0b\x6b\x04\xbb\x50\x27\xec\x52\xbb\x0b\x35\x8e\xa5\xf5\xe3\x1c\x6a\xa9\x47\x80\x82\xb5\xe3\x99\x16\xf6\x52\x3b\x90\xfc\x60\x2f\x2a\x6e\xfb\x47\xb9\xa6\x28\x7a\x4c\x85\xcf\xd5\x48\xde\x74\x1c\x40\xb1\x3e\xda\x5a\xb2\xce\x35\xba\x18\xef\x66\x02\x2b\xce\xd8\x2a\x4f\x5a\xc4\xec\x8f\x7d\x8f\xe0\xd5\x7a\xdc\x8d\x47\x72\x97\x32\xb5\xbd\x5a\x77\xcc\x04\x53\x5a\x4d\x80\x97\x78\xac\xab\xd9\x80\xe0\x3f\xc6\x5e\xa1\x7a\x1a\xef\xdc\x9b\x9e\x76\xfa\x37\xdc\xfe\x91\xb7\x1e\x0a\xcc\xc6\xd5\x4d\x80\x57\xab\x0a\x3e\x06\x1c\x27\x8e\x50\x5c\xce\xbd\xd6\xe3\x4e\x2c\x24\x8d\xdd\x60\xd7\x28\x85\x59\x08\x56\x71\x97\x2d\xc7\x35\x76\x63\xae\xea\x68\x59\x14\x1c\x23\x5a\x63\x48\xe5\xbd\x00\x62\x86\x8f\x91\x24\x7c\x91\x4a\xf9\x10\x07\x24\x63\x4a\x5e\x79\xd3\xf9\xbf\x6e\xc4\xfa\x04\x6e\xfb\xff\x1e\xe5\x05\x44\x1a\x3b\x65\x67\xcc\x4a\xb5\x48\xec\x21\x8a\xa3\x33\xbf\x00\xa3\x1d\x41\x68\x67\x39\xfd\x3a\x8c\xb3\xa4\xe2\x9f\xb5\x5c\xf1\x42\x00\xa9\xd1\x28\x0f\x32\x4c\xe0\xbb\x21\x34\x3d\xd8\x48\x13\x8f\xa1\xee\x6f\x97\xda\x0a\x88\x97\xc7\x28\xab\x65\xb8\x0c\x07\x37\x62\x7d\x70\x32\xb6\x11\xf5\x82\x2f\xd4\xc1\x49\x2c\xa3\x19\xeb\xf5\x34\x28\xfc\x31\x13\x89\x40\x38\x74\x00\xd2\x0f\xd2\xdb\xbf\xe2\xe8\xe6\xc7\x93\x5b\x5a\xe2\x18\x35\x3f\xfe\xc0\x1f\x66\x47\xd2\xf1\x01\x0a\xf9\xb4\xe0\xd6\xa6\xb7\xa9\xec\x43\x65\x2e\x11\x10\x9c\xf8\xb1\xd0\x7c\xa5\x33\xcb\x26\x6d\x9a\x28\x37\x50\xb3\x65\x40\xcd\xf2\x60\xf0\xa7\xc0\x02\x3f\x0e\x01\x43\xf2\xd9\xc0\x39\xbd\xd4\xf9\x98\xa7\xa2\x15\x9a\xb8\xd0\xb1\x47\xc4\x6d\xa7\x31\x59\xa2\xc8\xa6\xdb\x42\xdb\xdc\x69\x96\xea\xe2\x75\xce\xd8\x5b\x68\x45\x94\x3c\xcb\xe7\xb2\x10\x76\x6d\x9d\x28\xfd\x4c\x65\x59\x15\xe9\x25\xa8\x40\x81\xa7\xb4\x63\x52\x65\x45\x9d\x03\x21\x50\xa2\x48\xf8\x68\x40\x21\x8d\xf1\x7c\x3e\xd2\x61\x1e\x59\xc5\xbd\x6d\x84\x26\x2e\x56\x78\x35\x08\x78\x83\xb6\xe2\x21\xf5\xf0\xe9\x9d\x74\x54\xa9\x9a\x33\xb4\xd5\x00\x56\xa7\x2c\x95\xda\x2a\x69\x87\xe7\x04\x16\xb0\xde\x0e\x3e\x7f\xda\xad\x97\xe0\xec\xb9\x9c\x91\x5c\x91\xa7\x4b\xae\x94\x28\x3a\x6d\x3e\x03\xa6\x8f\x3b\xc7\xb3\x25\xe9\x82\x42\x3a\xdd\xdb\x91\x42\xb8\x43\xcb\x96\xda\x3a\x56\xf2\x6c\x29\x95\x20\x26\x84\x81\x8f\x35\x36\xf0\x6d\x49\x3f\x87\x6f\xdf\x3d\x92\xd7\xcf\xed\x1b\xff\xe3\xa4\x13\xd7\xf7\x4f\x3a\x8a\xd4\x7f\x0f\xf1\x0c\x3b\xcd\x00\x6f\x3b\x6d\x3b\x3a\xb2\x79\x23\x99\x2a\xd4\xdb\xb3\x86\x04\x20\xfa\x2a\x70\x02\x30\x02\xa1\x2b\x43\x9c\xd7\x94\x9d\xdf\x4d\xd9\x81\xb8\x73\xbf\x3b\x38\x61\x07\x77\x73\xeb\xff\xa1\xdc\xdc\x1e\x90\xf9\x74\xcb\x88\x5e\xf5\x8e\x94\x30\x06\xcf\xd8\x4c\x84\x9f\x21\x8a\x95\x73\x56\xab\x06\xcc\x3a\x65\x6f\x5e\x3d\x7b\xf5\x84\x2d\xf5\x2d\xcb\xa9\x21\xe9\xad\x60\x95\x01\x66\x00\x26\x8c\xd1\xd8\x29\x0f\xf8\x01\x52\xf7\x0d\xd8\xee\x32\x5d\x56\x46\x97\xd2\xa2\x92\x14\xf1\xd2\xde\x4b\x1f\xcd\xa2\x56\x63\xdc\x95\x57\xa1\x95\x3b\x68\x4c\xc7\xcd\x42\x50\x43\xa3\xa2\x56\x4c\xd5\xe5\x4c\x24\xf5\x15\x4d\x41\x62\x62\x97\x12\x90\xf1\xe5\x17\x04\x09\x23\xb6\xcf\xe8\xac\x6b\xec\x54\x41\x57\x43\x3b\xfa\x5b\xb0\xd7\x61\xae\x44\xa9\x40\xb4\x0f\xc4\x1c\x73\x6d\x02\xc5\x73\xa2\x48\x2b\x1c\x32\x9f\xaa\xe0\x3e\xbd\xf4\xda\xd3\x12\x29\x24\x52\x7b\x71\xe0\x51\xfe\xee\xbb\x4b\x62\x50\xfe\xb1\x6e\xc9\xad\x36\x45\x7e\x2b\x73\x2c\xab\xb5\xec\xc8\x4f\xf1\x38\x65\x8d\xe8\xf9\xea\xa4\xec\x74\xa2\xfa\xba\xbd\x95\xf9\xf8\x5b\x93\x54\xbf\x0a\x5b\xc3\x60\x6f\x64\x2e\x94\xf3\x76\xc9\x58\x76\x04\x53\xa5\x12\x56\x9d\x4b\xec\xe0\xe1\x65\x40\xeb\x3b\x5d\xce\xa4\x4a\xa1\x42\xd3\xf3\xce\xe1\x86\x1c\xa3\xd7\xbc\x69\x64\x60\x56\xb8\x13\xe0\x50\x07\x3e\x76\xed\x96\xcc\xca\xb2\x2e\x1c\x57\x42\xd7\xb6\x58\x27\x5d\xe2\xcf\xef\x80\xce\x0b\x71\x87\x3a\x2c\x35\x0a\x69\x04\xa5\xb6\x10\x5d\x08\x25\x4c\xdb\xe9\x6f\x33\x1c\x21\xc8\x6c\x19\x7f\xf2\xd3\x18\xcc\xb4\xed\x27\xc4\x1d\x89\x89\x1c\x19\xbf\xaa\xa2\x5e\x48\x02\x91\x74\x52\xf4\x41\x47\x5d\x4e\x42\xc7\xb3\x4f\x1c\xf0\xe0\x8f\x8e\xa0\x03\x9f\x35\x6d\xe5\x22\x5d\x43\x82\x6a\x59\x36\x9d\x30\x43\x87\xfc\xc4\x36\xe8\x29\x6d\xbe\x12\x6d\xcc\x68\x11\xe5\x46\x40\x49\x7f\x33\xdb\x07\x94\x6c\xa3\xfd\x78\xbb\x00\x2c\x17\x95\x50\x64\x9a\x7c\xad\xba\xda\x16\x37\xef\x5e\x4e\x9d\x86\x43\x33\xb2\x6f\x73\x7e\xe7\x0c\x95\xe5\x30\xd3\x65\xe9\xdd\x84\x30\x31\x1f\x78\x73\x95\x66\xd2\x13\xde\xd0\xc6\x7c\x37\x4b\xdc\xa9\x7d\xbc\xf7\xcb\x89\xf7\xac\xc8\x8c\x70\xaf\x05\xb1\x2c\xf4\x7d\x9b\x79\x1d\xc5\x52\x93\x5c\x76\xbb\x1b\x13\x4e\x35\xed\x1d\x3a\x60\x00\xfc\xfa\x5b\xa1\xac\x74\x72\xd5\xeb\xd3\x4a\x3f\x7c\x15\xb7\xb6\x49\x21\x83\x1f\x17\x94\x29\xb9\xd2\x06\xb0\x6a\xa1\x33\x13\xc0\xe0\xbc\x06\x52\x3a\xac\x03\x55\xdd\x23\x57\x75\xb7\x5b\x77\xe4\x6f\x25\x9f\xe7\xce\xb6\xb4\x5d\x07\x12\x18\x40\xa1\xd9\xb1\x56\x71\xc7\x4f\x18\x2f\x8a\xf0\xef\x54\xed\xc0\x8d\x80\x1d\xea\xa4\xf9\xfb\x7b\x74\x4f\x5a\x3d\xbd\x22\x28\x8d\x06\x6d\x27\x40\x21\x11\x7c\x13\x2e\xae\x9b\x0e\xa5\xf0\xd1\x2b\x61\x56\x52\xdc\x9e\xde\x6a\x73\x23\xd5\x62\x72\x2b\xdd\x72\x82\xab\x6b\x4f\x21\xef\x73\xfa\x2b\xf8\x47\xc2\xec\x30\x5d\x7e\x96\xe7\x81\x0e\x31\xf4\x3c\xc3\xfe\x29\x29\xef\x76\xbc\x92\x6f\x85\xf1\x81\xe1\x09\x70\x05\x9e\xb0\x5a\xe6\x5f\xd1\x81\x0b\x49\x71\xb8\xce\x6e\x28\x21\xd2\x46\x10\x0e\x52\x7a\xef\x81\x84\xaf\x89\x62\x42\x04\xde\x84\xcc\xfd\xd7\x3c\x82\xe0\xee\xfb\xdf\x14\xb5\x65\x70\x85\x03\x75\x76\xc2\x64\x03\x8f\x39\xb3\xfe\x44\x46\xc2\x54\x66\x6a\xa5\x28\x2e\xd3\x3d\xbe\x0e\xe6\xdc\x71\x2b\x1c\xfd\x9d\x7f\x8b\x20\xb1\x89\x76\x51\x32\xd5\x6a\x38\x6d\x80\xd2\xba\x69\xa0\xc6\x26\x7f\x0e\x94\x89\x64\x2b\xdc\xce\x0a\xa2\xef\xb8\x99\x48\xac\x47\x14\x0a\xfd\xce\x90\x40\x01\xe7\x9b\xfb\xeb\x90\x91\x3b\x8c\x26\xfa\xde\xe1\xfb\xbe\xfd\xf6\xe2\xd9\x08\xfb\xf9\x7f\xd8\x7b\xd7\xe6\x46\x72\x23\x5d\xf8\xfb\xfe\x0a\x84\xfc\x46\xa8\x7b\x2c\xb2\x7b\xd6\x63\x8f\xdf\x8e\x8d\x75\x68\x24\x8d\x57\x67\x5a\xdd\x5a\x49\xd3\x8e\x13\xb6\xcf\x2e\x54\x05\x92\x38\xaa\x02\x6a\x00\x14\xd5\xdc\xf5\xfe\xf7\x13\x48\x00\x75\x63\xb1\x58\x04\x20\x51\xb2\x89\x2f\x3d\x23\x89\x49\x5c\xf3\xfa\x64\xa6\x26\xd3\x39\xcf\x20\x6d\x85\x4a\x54\x32\xfa\x4b\xd9\xf4\x04\xfb\x03\x7c\x70\x75\x82\x21\x77\x2d\x60\xc3\xe7\x09\xa9\xa1\x22\xe7\x54\x3e\x04\x72\xd4\xe3\x3f\x9e\x5d\xb4\x09\x86\xba\x37\xff\x78\x76\x81\x2c\x9d\x27\xc2\x59\x3c\x2d\xd0\x22\x0c\x67\xb8\x0b\xb6\xd0\x01\x0a\xe7\x09\xa9\x61\x86\x29\x95\x0f\xbb\x4b\xe8\xbd\xb9\x5b\x8b\xd4\x0b\x5a\xf5\xf7\x85\x2f\xb1\xec\xca\xaa\x13\x70\xdd\x57\xbc\x44\x8f\xd8\xbb\x8c\x45\x8d\x58\xb9\xa3\xc5\x07\x74\xc1\x64\x29\x48\x68\x7e\xf9\xac\xe3\xfb\xd4\x16\x97\x73\x37\xfa\x8a\xa2\x3e\x27\xa5\x73\x37\xfa\xc6\xd9\x4c\x2b\x72\xf9\xe1\x55\x62\x5f\x76\x34\x30\xb6\xf2\x02\x5f\xd9\xd7\x80\xe0\xac\x83\x69\x7c\xd7\xda\x85\xe0\xac\x83\x69\x02\xf4\xa4\x7d\x42\x70\x0a\x2c\x14\xf8\x32\x63\x30\x95\x3b\x2d\x49\x1c\x41\x7f\x94\xee\x26\x96\x12\x1c\xb3\xb8\x9c\xb9\x32\x8e\x27\xb6\x13\x23\xb8\x39\xfd\xfd\x62\x8e\x5b\x69\x76\x60\x67\xac\xd5\xe6\x70\x06\xf0\x23\xaf\x8c\xb4\x77\x29\x59\xbe\x93\x29\xfe\xd6\x37\x05\x49\x6f\x9f\x6d\xba\x67\x64\x7d\x75\x42\xde\x4d\x6c\x8e\xbe\x3d\x9a\xa2\x5b\x9a\xd3\x0c\x8b\x6c\x75\xd2\x3c\xb1\x8a\xba\x2f\xaf\xe6\xa2\x5a\x32\xa4\x21\xbd\x3f\x42\x6f\xb8\xd0\xab\xf0\xf5\x33\x62\x86\x32\x82\x97\xc4\xb5\xdb\xd2\x02\x78\x65\xdc\x78\x6f\x7d\x8f\x2a\x36\xb7\x7b\xad\x78\x33\xa3\x06\xc5\x60\x1e\x3f\x1b\x63\x85\x05\xfb\xbd\xae\xcf\x6b\x0d\x9c\x32\xad\x96\x4f\xd1\xcf\x46\xd7\xf5\x7d\xe9\xc6\x80\x32\xcf\x47\x9f\x56\x45\xf7\xca\xdf\xb3\xfa\x42\x2e\xcf\x8b\x88\x3c\xb9\x30\x4e\x1d\xe3\xf1\xe7\x1e\x9d\xc8\x50\x23\xc6\xe3\x49\xb3\x15\x19\xaa\x42\x63\x55\x90\xeb\xef\x81\x83\xf8\xc5\xac\xe6\x54\xdd\x90\xc2\xc3\x5a\xec\x18\xe2\x86\x4c\xa8\x6f\x73\x4e\x15\xb4\x67\x93\x54\x71\xb1\x42\x58\x21\x6c\x84\x51\x52\x66\x58\x20\x41\x0c\x52\xc8\xe7\xb8\xce\x2f\xae\x6f\x2e\xce\x4e\xef\x2e\xce\x3f\x20\x37\x5b\xda\xf4\x3e\xf9\x10\xbd\xe3\x35\x7c\xa9\x59\x0f\x1a\x3d\x52\xb5\x08\xda\x81\x13\xab\x94\x60\x86\x2e\xb4\x90\x3b\xa7\x02\x7a\xa8\xfb\x78\x35\x18\xba\x64\x54\x9d\x55\x93\x33\x65\x00\x33\xce\xbc\x8b\xe1\xe9\x19\x5a\x8c\xd6\x9c\xaa\x13\xe3\x8e\x30\x13\xd6\xef\xd6\xcd\xd8\x83\x72\xdd\x27\x9e\xa7\xc7\xc7\xb2\xde\x52\x8f\x88\xd2\xde\xfc\x0a\xf5\x15\x7e\x6e\xef\x34\x15\x50\x72\x2d\x06\x43\xbf\x03\x70\x67\x4d\x32\x20\x9e\x66\x91\x46\x8c\x57\xf1\x4c\xc4\x05\x92\x0a\x0b\x6f\xf8\xb2\x7e\x5f\xc7\xd3\xe9\xf1\x14\xca\xcf\x1c\x4f\x8f\x9d\x43\x20\x0b\x68\x6e\xd6\x50\x81\xab\x65\xbb\xb6\x91\x01\x24\xdb\x5c\x6d\x8a\xd0\x67\x57\x2f\xdd\x77\xa2\x74\xd6\x2c\xbf\xde\xe9\xc1\x19\x16\xca\xef\x99\x71\x98\x15\x28\xcb\xfb\xe6\x66\xaa\x85\xfd\x86\x25\xf1\xa5\xea\x6f\x9e\x05\xab\x4b\x6e\x4b\x22\xbc\xaf\x9b\x7a\x7f\x7f\xbe\xf9\xb8\x9f\xe5\x18\xc9\x15\x61\x31\x67\x3c\xcf\xa9\x42\x0b\x2c\x17\x16\xa8\xe9\x0d\x7f\xa8\x1a\x0a\x86\x48\xfb\xb0\x30\x45\x56\x4a\x45\xc4\xcc\x83\x05\x77\xb4\x22\x47\x28\x38\x2c\x51\x11\xb2\xad\x37\x58\xed\xb9\xf4\x6c\x93\x2e\x17\x58\x10\xa9\xf5\x2b\x23\x68\x33\x3a\x23\x8a\xe6\xa1\xbd\x11\x9c\x1a\x4c\xac\x1b\xc4\xb5\xca\xb7\x2a\xef\xbb\x6a\x6f\xdf\xdd\x5c\x9c\x9e\x5f\x5d\x4c\xf3\xf4\x15\x09\x76\xc2\xd2\x82\x53\x9f\x53\x9c\xa0\x02\xab\xc5\x33\xab\x03\xd5\x74\x63\xd8\x77\x17\x8e\x18\x04\xad\xbd\x71\xd8\xfa\xde\xba\x79\x19\x47\x01\xa8\xa3\x29\x51\x98\x7a\x57\x6a\xaa\xdf\x87\xe2\x05\xcf\xf8\x7c\x15\xa1\xe2\x86\xc7\x55\xfe\x95\xe9\x5c\x3d\xc1\x13\xfd\xaa\xf6\xe3\x0b\x56\x8b\x18\xa7\x7d\x8d\xd5\xc2\x21\xf9\xab\xdd\xf5\xdc\xc8\xca\xab\xa8\x16\xbd\x21\x86\x57\xb5\xc1\x2f\xdc\x65\x52\xbf\x04\xe7\x7d\xf7\x75\x98\xdd\x13\x23\x6c\x48\x6a\xb4\x36\xbd\xf0\x09\x14\x6a\x2a\x88\xc8\xa9\x29\xa9\xe5\xeb\x38\x59\xf7\xc0\xbc\xee\xf7\xea\xe7\x7c\xd1\xf2\xfb\xda\xeb\xc1\xb6\xef\xd1\xbf\x59\x3a\xa1\x6a\x46\x21\xc8\x84\x7c\xa5\x12\x7c\x6d\x33\x9a\x11\x6d\xa6\x85\x18\x80\x4d\x3d\xc5\x01\x1e\x1c\xa0\xc2\xd0\xf5\x82\x7d\x77\x80\x0f\xb5\x8f\xc0\xa1\x66\x7c\x1c\x2f\x84\x11\x81\xb3\x6c\x85\x4a\x4d\x5a\x2b\xb1\x36\x4c\x88\xe7\x9e\x1b\xca\x85\xc5\x44\x16\x82\x2e\x69\x46\xe6\x7a\xca\x0b\xca\xe6\xd2\x57\x69\xc3\x82\xb8\x96\x90\x7a\xf1\x92\x90\xb5\xfd\xf5\x79\x91\x57\xfa\xf3\xd5\x2e\x4a\x63\xf2\x7e\xfa\x7c\x87\x18\x31\x53\xf6\x7a\xe7\x81\xce\x51\xbd\x28\x2f\x9d\x09\xa1\xc9\x64\x02\x31\xe4\x37\xff\x97\x33\x22\xd3\xec\x2d\xfa\x13\xb1\x6b\xe1\x48\x10\xcd\xfb\xbd\xf0\xc5\x8f\x0b\x0e\x91\xa8\x52\xda\x3d\xaf\x0d\x5b\x60\x95\x5e\xaf\x8e\xa5\x8e\xee\x3b\x4d\x9b\x71\x65\x95\xfc\xd6\x37\xf8\xd5\xcf\xc7\x12\xd5\xd9\x1b\xaf\xc9\x83\xb6\x07\x65\x39\xaa\xe6\xe4\x30\x80\x81\xce\xb3\x06\xff\x74\x59\x05\x30\x4f\x7f\xf5\x1b\x23\xb9\xca\x33\xca\x1e\x4e\x10\x55\x2e\x13\x47\x73\x94\x00\x93\x5d\x93\x73\xbc\x58\x10\x9c\x35\x34\xbd\x67\x8f\xab\x39\xae\xb1\x17\xdd\x50\x45\x02\x76\xdd\xad\x0a\x93\xef\xea\x04\x7b\x50\xd4\xab\xa5\x6c\x1d\x1d\xc5\x53\xb4\x5e\xc5\xb9\x50\x99\x48\x1a\xaa\x60\x5d\xde\x9e\xdd\x5e\xb6\x82\x5b\x3e\xbe\x4b\x43\xe5\x00\x2f\xdd\xa4\xa0\xc3\x51\xbd\x4a\xbf\x10\xfd\x65\xf7\xfb\x30\x41\x59\xe9\xf3\x29\x53\x74\xe3\x9a\x0b\x85\x77\x37\x17\xc3\x44\x64\xb2\xc0\xc5\x69\xa9\x16\xe7\x54\x26\x7c\x49\xa2\xb8\xc1\x1f\x17\x04\x74\x64\x0b\xe6\x44\x54\x3f\x12\x5f\xab\xd2\xcd\x0b\x9d\xfd\xdb\xe9\x35\xc2\xa5\xbe\xc7\x8a\x26\xfe\xa9\x88\xa1\xe9\xa0\x6e\xc7\x6e\x4d\x09\xea\x17\xb6\x5f\x76\x56\x2f\x66\xb7\x0e\xd0\x68\xaf\x71\x80\x46\xbf\x7c\x68\x34\xc8\x36\xcf\xa9\x1c\xe0\xd0\x3b\x0d\xca\xa8\xa2\x58\x71\x11\x09\xd5\x78\x56\x4a\xc5\x73\xc3\x68\x01\x49\x43\x03\x0a\xf4\x7f\x02\x38\xc4\xe5\xac\x3d\xcb\x56\xfe\x78\x08\x24\x02\xae\xd9\x25\x53\x44\xcc\x70\x42\x3a\xd5\xb3\x7c\xd1\x06\x8c\x3c\xda\xd5\xd3\x8a\xf2\xbf\x04\x55\x9f\x2b\x40\x7b\xf9\xd7\x0f\xff\xd2\x00\x5c\xff\x6b\x20\xd2\xc2\xb8\x72\x53\x17\x7e\x46\x09\x67\x8c\x24\x6a\x1f\x01\x64\x3d\xe8\x2f\x31\xa4\xbd\x05\xe1\x98\xdd\xff\xf7\x12\x67\x21\x37\xe4\xd3\xbe\x70\x13\xed\x5b\x19\x61\x5b\xdc\x5b\x74\xb7\x31\xa0\x42\x36\xc8\xde\x52\x12\xe8\xb2\x66\xe8\x2a\x81\x99\xd4\x57\x34\x46\x74\xe3\xd8\x26\x28\x1c\xa3\x37\x2a\x29\x3c\xb1\xea\x2f\xa2\x46\xab\xd9\x1c\x7b\x23\x3f\x7a\xd8\x2e\x66\x98\xda\xac\x21\xfb\xb0\x57\xac\x3c\x70\xae\x18\x01\xf5\xd6\x76\x7a\x9a\x73\x66\x7c\xa4\x52\x41\xd7\x14\x3b\x3b\xe8\xac\x63\xea\x3d\x7a\xa9\xe1\x7a\x5c\x5e\x23\x2e\x10\x2d\xfe\x03\xa7\xa9\xf8\x60\x2c\x0d\xeb\x7f\xe4\xde\xa8\x3d\x2a\x6d\x40\x04\x2a\x92\xb8\xd2\x5b\x6f\xd4\xaa\xa0\x09\xce\xbc\x2b\x00\xdd\x9d\x5d\xc3\xac\x24\xfa\xfd\xef\xde\x83\x43\xfd\x37\xff\xfc\xbb\xf7\x41\x4f\xed\xf5\xd5\x8a\x44\x71\x63\xd3\xff\x78\x68\xfe\x97\x54\xf9\x09\x0c\x72\x53\xf3\x09\xf4\x99\x10\x23\xdf\x28\x6a\xf0\x2c\x2a\x9d\x33\x9e\xb1\x7f\xa8\xd5\xd3\x1a\x87\x5a\x3d\xfb\xae\xd5\x83\xaa\x2b\x6f\x64\xea\xd3\x48\xea\x90\x92\x93\xd7\xeb\x42\xda\x88\x5b\x5f\xa9\xba\x41\x48\xfb\x07\x09\x5f\x89\x90\xf6\xba\x1f\x7e\x3c\xa3\xcd\x2b\x8c\xfc\x39\x3e\x96\x8d\xec\x06\x8f\x75\x40\xe5\xd5\xf3\x4f\xb7\xff\xf1\xf1\xf4\x87\x8b\x8f\xb0\x27\xb6\xda\x8b\x7e\xfc\x5e\xd2\xb1\x27\x50\x13\x99\xfd\xf8\x46\x65\xfc\x0e\x2b\x1c\x83\xfd\xe9\xc7\xdb\x76\xe0\x0e\x7d\xfa\xf1\xd6\x63\x67\xfb\x81\xd7\x15\x8c\xda\xcb\x94\x68\x01\xaf\x43\x3d\x8c\x6c\xe6\x7d\x36\xaf\x05\xe0\x31\x81\xfa\x61\xcf\x5e\x20\x3b\x2a\x32\xc4\x05\x7c\xc9\xd7\x18\x0e\x7a\x7d\xbb\xcd\x9e\x44\x04\x50\x3e\xf9\xad\x43\x2f\xca\xd4\x79\x0a\x18\xae\x3e\x17\x73\xc2\x36\x16\x61\xa1\xb4\x21\xbe\xdd\x57\x03\xc0\x7d\xc6\xfb\x13\x62\xae\x89\x38\x55\xef\x8f\x6f\x81\x92\x03\xcb\x6b\xd1\x10\x52\xfa\x5e\x68\x5d\x50\xeb\x73\x44\x4a\x17\x80\x6c\xbc\x72\x4f\xb2\xfb\x90\x2d\x28\xec\x95\x17\x9d\xa6\x82\x67\x19\xa6\x79\xa8\x36\xd0\xed\x54\x08\x44\xcd\x7f\xde\x02\x20\xc7\x8b\x15\x35\xfa\xfb\xb5\xaa\x2c\xe3\xb5\xce\x88\xf0\x7d\x5e\x31\x2d\x93\x4b\x89\x6d\xb0\x44\x16\x38\x89\x95\xaa\xe5\xd9\x49\xb6\xfe\x91\xf9\x09\x34\x6a\x7c\x4d\x2a\x08\x4c\x78\x0f\x05\xe0\xaa\xef\x8d\xc1\x7c\xce\x1c\x31\xcb\x7f\x02\x3c\x29\x9a\xdb\xc4\xbb\xb1\x68\xd3\xad\x45\x38\x64\xa2\x05\x77\xcd\x61\xa0\x3b\xa8\xed\xea\xf1\xbc\x58\xd3\x27\x7c\x0c\xe8\x45\x69\x46\x7f\x7a\x96\x42\xfd\x4e\x17\xf1\x55\xba\xf6\xe3\xf2\x2d\x16\x5c\x71\x16\xb5\x9c\xe9\x75\x0f\xc9\x50\x79\x64\x68\x9e\x99\xf2\xcb\x19\x11\x0d\xb1\xea\x41\x1a\xea\x26\x55\x15\xa7\x31\x4b\xab\x14\x31\xce\x1c\x04\x35\xb4\xf4\xf4\xeb\x11\x20\x45\x7a\x79\xfe\xcc\xb2\xe3\xd0\x4a\xe8\x65\xb6\x12\x7a\x1e\x10\xda\x3e\xc4\x89\xbe\xe4\x11\xee\xdb\xe5\xb9\xf5\x7c\xb8\x3a\xd6\xbe\xbe\x69\xc3\xd0\x50\x2c\x8e\x86\x2c\x57\x7b\x76\xeb\x86\x0b\xf5\xc8\x45\x9c\xf6\x7e\xd7\x2d\x62\xc1\x59\xa0\x96\xda\x5a\x87\x81\x06\xbf\xf7\x20\xdc\x90\x10\xaf\x94\xdf\x9b\xfd\x78\xc5\x3c\xff\x16\x12\x8b\x82\xae\x07\xb2\x41\x86\x2e\xe6\xd8\x01\x9b\x7d\xfd\x13\x3d\xe2\xa3\x23\x08\xc2\x1c\xa5\x91\x91\xcc\x1d\xf1\x31\x6d\x08\x00\x7f\x33\x64\x5d\x6c\xbc\x04\x01\x10\xd1\x9e\x58\x73\x3a\x7a\xee\x55\x7f\x4b\x32\x70\xdf\x7a\x3b\x58\x7b\x2d\x1d\x67\xb3\xf8\xdb\xbf\x2d\x4b\x67\x2f\x8e\x4e\xc7\xb5\x22\x9c\xdf\x17\x4b\xca\x86\x29\xfd\xef\x7a\xa5\x04\x68\x0b\xa5\x2d\x6e\x9e\x5d\x10\x0b\xae\x05\x89\x8f\x44\x68\x2b\x38\x8a\xe4\x12\xc0\x3a\x38\xcb\xf4\xc9\x73\x0f\xd1\x86\xaa\xc4\x40\xe9\x1a\x74\x9d\xa0\x84\xb3\x19\x9d\xe7\xb8\x90\x27\x9e\xe9\x7c\x29\x7f\x64\x8f\x58\xa4\xe8\xf4\x7a\x77\x14\xd1\xde\xc4\xad\xdd\x88\x67\x96\xb6\x16\xf0\x70\xc5\xd3\x18\x22\x57\x93\x41\xf7\x54\x49\x53\x55\xc2\xdb\xca\x92\x44\x35\xa3\x3e\x5a\x99\xaa\xf0\xee\x5a\x60\xfa\x0b\x47\xbb\xde\x86\x05\xc7\x10\x4f\xfc\xc1\xa8\x4b\x9c\x95\x04\xdd\x13\xf5\x48\x08\x43\xef\xdf\xbf\x37\x60\x8f\xf7\xdf\x7f\xff\xbd\x7f\x48\x04\xa3\x94\x24\x34\xc7\x59\x97\xbc\x27\x49\x3d\xa3\xdf\x7e\xfb\xed\x14\xfd\xef\xd3\xab\x8f\x08\x27\xe0\xdf\x33\x0d\xc7\x43\xd6\xae\xc9\xb6\x26\x2a\x4f\xd0\xff\xba\xfd\xfc\xc9\x3d\x03\xdf\x63\x6a\xd3\x04\x26\x93\xbb\x8b\xe5\x1d\x00\xac\x0b\x4b\x58\xb8\x49\x55\x5d\xc0\x77\xf5\x82\x40\xf5\x0a\x3c\x9b\x01\x43\x35\xaa\x17\x95\x4e\x88\x86\xf5\x6d\xa4\xf3\x05\x5c\x4f\xca\x80\x21\x66\x34\x51\x30\xef\x20\x88\x93\x6b\x45\x0b\xa6\xa9\x99\x77\x60\x1e\x1e\x1c\xcc\x09\xca\xe8\x03\x41\x33\xf9\x47\xc1\xcb\xc2\x97\x6b\x23\xab\x6a\x0b\x22\xcb\x4c\x41\xe1\x91\x7b\x62\x27\xae\xbf\xc5\xf7\xcd\x6b\x6e\xe4\xdd\x98\x6a\xff\x08\x7c\x2b\x16\x22\x30\xe7\x8c\x6a\x9b\x60\x56\xd5\x27\x33\x9a\x80\xbe\x10\x01\x5b\xb3\x27\xe4\x78\xdb\x1f\x50\xad\xc4\xb7\xd0\x90\x19\xb6\x59\x6a\xa5\x22\x21\x9c\x71\x36\x0f\x79\x76\xee\xe1\xd5\xee\x3d\x97\x5c\xbb\x2a\xbc\xd9\x63\x30\x12\x39\x06\x16\x19\x59\x3d\xed\x0a\x17\xfe\x24\xba\xc0\xd3\xe0\x46\xba\x66\xe0\x7b\x5e\x2a\x97\x14\x67\xe6\x08\x2d\xe0\x82\x88\x2a\xee\x2e\x46\x00\x99\x08\x47\x87\x22\x1d\x1f\x0a\x7d\x82\x6e\xb4\xcd\x82\x96\x01\xef\x9b\x81\x59\x0f\x82\x93\x05\x7a\x20\xab\x89\x51\x84\x0a\xec\x55\x65\xbd\x3d\xac\xe8\x3f\xc7\x0a\x1b\x2c\x78\x30\x45\x8b\x5b\xa9\xc0\x10\xe1\x14\xcf\xaa\x8b\x1b\x96\x25\x5a\x8f\x9a\xab\xb9\x9a\xf3\xc1\x24\x9d\xc3\x54\x5a\x3f\x16\x7a\x5c\x70\x6f\x27\x47\x3d\x58\x1d\xde\xd7\x47\x1f\xa0\x4e\xd4\x23\xe1\x4c\x11\xa6\x1c\x59\xb8\x4d\x21\x19\x00\x66\x5c\x76\xeb\x92\x07\x53\xd4\x32\x9a\xa4\x7a\xd9\xf2\x25\x9f\x7c\x5d\xb5\x5a\x2b\xd0\xde\x86\x7a\x7b\x94\xac\xbb\xfa\xf0\xab\xc4\x95\x91\xe8\xe0\x00\x9e\xa2\x4b\xdf\x5e\xa2\xf5\xc0\x70\x27\x23\x24\xb0\xd7\xe3\x71\x41\x13\xa8\x3e\xab\xa7\x6b\xe7\x1a\x8b\xcb\x55\x8c\x24\x9c\x17\x37\x6a\x83\x48\xa2\xca\x22\xce\x11\x41\x55\x07\x7d\xf6\x44\x4a\x44\x03\xb2\x38\xea\x91\x63\xf1\x40\x52\x6b\xed\xe0\x6c\x8a\xae\xf5\x25\x0d\x27\x6b\x3d\x06\x82\x64\x18\x1a\xff\xc7\xb8\xf4\x5a\xe7\x6c\x36\x8a\x88\xf1\x3a\x8f\xa7\xd3\x63\x53\x37\x2f\xb0\xed\x44\x3d\xea\x06\x14\x81\xa4\x42\xad\x86\x7a\x44\x51\x5e\xba\xfe\x2b\x5c\x84\xdf\x13\xa8\x3a\x08\xbe\x59\x60\x15\xde\x4e\xb0\x36\x45\x38\x4f\xeb\xb9\x08\xd3\x64\xcd\xb0\x50\xb2\x70\xae\x10\x47\xa5\x35\xc3\xdf\x7f\xda\x1d\x13\xbd\xf7\x11\xa8\x04\x38\x88\xea\x11\x4b\x5f\x37\xe3\x81\x78\x06\xa7\xba\xa3\x5d\x7a\x23\x02\xe3\x31\xc3\x5c\x7a\xa7\x76\x84\xdf\x30\x14\x1e\xd4\xeb\x8e\xdc\xdb\xdd\xdd\x1d\x6d\x78\xea\x67\x2b\x72\xe2\xd0\x46\xb5\xdb\x13\xfc\xe9\x91\x88\x42\x25\xe5\x96\x7f\x3d\x12\x61\xf0\xbf\x50\x09\xb6\x40\x9c\x63\x47\xb1\xdc\xf4\xdd\xd1\xf2\xab\x47\xa2\x19\xc3\xf9\xdf\x1d\xcd\x60\xc0\x4b\x5e\x7a\x3b\xc4\x10\x89\x6a\x33\x50\x11\x6b\x3f\xf5\x1d\x6a\x06\x2e\x62\x6e\xaa\x0d\x7f\x44\x22\xe9\x82\x28\x4f\x32\xd3\x2a\xa8\x12\x89\x2a\x84\x66\xb4\x3d\xcc\x78\xb8\x16\x60\x46\x64\xcb\xda\x0c\xd7\xee\xac\x8e\x7a\x46\x22\x6c\x8d\x75\xe0\xd3\xb1\x78\x5f\x2b\x12\x14\x89\x66\x23\x9e\x14\x6d\xe5\xda\xd0\x68\xc6\x97\x62\xc9\xa9\x3a\x4a\x15\x8d\x22\x69\x44\xad\x22\x11\x6d\xc5\xbe\x62\x71\x3e\x96\x36\x62\x61\x91\x88\x36\x23\x6a\xd1\xf5\x13\x49\x94\x47\xc1\xfd\xbe\x11\x1e\x72\xeb\x8e\xd0\x10\x5c\x77\xf8\x27\x48\x77\xc7\x13\x69\xe0\x95\x87\x22\x8a\xf5\x62\x86\xf5\x71\xeb\xe7\x13\x4f\x0f\xcd\x71\xe1\xdc\xbc\xd1\x88\x4e\xd1\x95\xf1\xa9\xc4\x12\x6d\xa0\x7c\xe2\x7b\xc9\xb3\x52\xc5\x5a\xbb\x6d\x19\x10\x75\xa2\x31\x5d\x48\x66\x80\xcf\x81\x64\x24\x8f\xe1\x90\x34\xc3\x34\x31\x8d\xbb\x70\x70\x71\x55\xbd\x36\xa3\x11\x05\x0f\x4e\x0c\x9f\x97\x19\xd1\x4c\xd8\xb0\x32\x50\x66\xf4\x16\x83\x8a\xe2\x21\x6e\x97\x84\x8a\xe0\xc6\x7e\x51\x25\xa5\xcc\xe8\x2f\x2c\x15\x4c\xd6\x16\xa6\x6a\x96\x97\x0a\xa6\x19\xa3\x3c\x95\x19\xd1\xee\x2f\x8f\xe4\x24\x69\xdd\xe1\x5b\xb0\x16\xc2\xa5\x88\xab\x37\xdf\x8a\x9d\x84\x07\x88\x05\xd2\x4a\x12\x04\xb6\x6c\x18\x21\x82\xe3\x7a\x46\x59\xb0\x53\x28\x14\x6e\x6d\xe7\x62\x11\xb7\xa7\xd7\x97\x2f\x18\x0d\xd2\x98\x65\x10\xc5\x14\x2b\x7c\xc0\x83\x6c\x1a\x3d\x30\xf1\x08\x31\x3d\x5c\xc1\xd7\xce\xeb\x53\xfc\xe2\x0f\xa1\x6f\x8e\x08\x3a\xed\xcb\x0e\x6b\xad\x6d\xd9\x8f\x71\xb4\xf8\x46\xea\x75\xac\xd7\x6a\x86\xe2\x16\xef\x1d\xd3\xe6\xb0\xfa\xb1\x29\xa6\x00\x75\xe3\x22\x10\x8d\x03\x20\x7a\xb1\x41\xb4\x17\x18\xfe\x82\x1d\xf7\xae\x3b\xdb\x1d\xdd\xd2\x58\xb1\xb6\xce\x8c\x5b\x92\x69\xed\x13\xc5\x02\x9a\x99\xc1\x5d\xd1\xcb\x68\xf3\x84\x32\x5b\x98\x31\xae\xe0\x05\xcb\x68\xbe\x31\x7c\x4f\x32\x79\x82\x02\x2a\x44\x75\x07\x66\x69\x5d\x5c\x25\x16\x4d\xd1\x48\xbc\x8c\xea\xc6\x8a\xf4\xa4\x51\xd4\x67\x8d\xe0\x69\xc3\x8d\x0c\xe8\xb6\xd7\x1e\x71\xdf\x38\x6a\x15\xd9\x8d\x45\xb1\x9b\xde\x67\xa8\x47\x23\x5e\x3d\x4c\x99\x2c\x48\x1e\x03\xa3\xe1\x86\x26\xfa\x63\xd4\xe3\x32\x83\x4a\xf4\x28\xa8\x52\xd1\xe2\x80\xc8\x02\xcf\x88\xc8\x63\x45\x01\x10\xec\xeb\x89\x0b\xd9\xc4\x24\xab\x38\x3a\x5a\x7e\xeb\x5d\x04\xa3\x87\x60\x5c\x94\x02\x72\xd2\xce\xaf\x69\xf6\xa6\xd1\xce\x9d\x88\x7b\xa3\x2a\x2f\x71\x3c\x69\x87\x1c\x64\x21\x8b\x17\x08\x42\x8d\x6a\x5d\xd1\x60\x9c\xf5\x38\xbd\xbe\x44\x4b\xc3\x5d\x5e\xec\xe5\x3a\x40\x60\x9e\x1a\x02\x13\x4b\x89\xca\x0f\x10\x98\x03\x04\xe6\x00\x81\x39\x40\x60\xe2\x10\x3d\x40\x60\x0e\x10\x98\x03\x04\xe6\x00\x81\x09\x1a\x4f\x04\x81\x89\xee\x80\x83\x1e\x04\x54\xa2\x88\xfc\xf3\x29\xc0\x35\x2c\x4a\x37\xa6\xe6\x80\x37\x6e\x6a\x6b\xd9\xca\x29\x51\x11\xd9\x26\xb1\x2e\xd6\x53\xb7\xd8\x1a\xff\x9e\x40\xdd\x11\x1f\x0a\x73\x7c\x3c\x9d\x1e\x9b\xac\xaa\xd8\xd0\xf6\x52\xcd\x26\xbf\x8f\x44\x93\xb0\x84\xa7\x24\x9d\x46\x04\x93\xcd\xa8\x90\x0a\xc2\x52\x31\x20\x22\x66\x18\xc6\x6e\xde\x51\x4c\xac\x52\x6e\xef\x66\x7c\x60\x91\x39\xff\x98\xec\x3d\x9a\x25\xef\x6a\x68\xfd\xf8\x84\x81\x11\x1b\xc8\x88\xf5\xe0\xab\x39\xc7\xbd\x52\xf6\xd9\xfb\xf6\xb9\x58\x1f\x10\x17\xa9\x6a\x94\x45\xd3\x96\x72\x0a\xad\x99\x52\x30\x70\x88\x8c\xb6\xaf\x6f\x0c\xe9\x69\x52\x94\xf1\x54\x3b\xa0\x98\x93\x9c\x0b\xef\x8e\xda\xdd\xe1\x96\xad\x27\x1a\x51\x5d\xac\xc8\x9a\xd9\xbe\x8d\x18\x1d\x4a\x4a\x21\x08\xf3\x2f\x77\xd9\x1d\xff\x70\xd1\x26\xf7\x88\x5e\x68\xb0\xa9\xe2\x1c\xfe\x8d\x2a\xfa\x46\xa7\x79\x85\xfb\x92\x88\xae\x66\x00\x83\x56\xa7\x15\x91\xf0\x8c\x0b\xeb\x2a\x88\x16\x0d\x46\x0d\xf0\x5f\xe4\x99\x12\xb6\x8c\x48\x71\x89\x85\x67\x33\x8b\xbe\xf1\x04\x51\xa1\x94\x2e\xa9\xe4\xd1\xc4\x5c\x2f\x96\xd2\xbf\x66\x79\xdf\xd0\xe2\x99\x97\xaa\x28\x63\x86\x70\x8c\x55\x1b\x4f\x87\x40\x76\xa2\xe4\x6b\xc1\xe3\x05\x1b\x50\xb3\xce\x69\xcc\xb7\xf4\x44\x21\xd1\x6f\x7d\xcb\xf7\xaf\x8f\x02\x2b\x45\x04\xfb\x80\xfe\xcf\x9b\xbf\xfc\xfa\x6f\x93\xb7\x7f\x78\xf3\xe6\xcf\xef\x27\xff\xff\x5f\x7f\xfd\xe6\x2f\x53\xf8\x8f\x6f\xde\xfe\xe1\xed\xdf\xdc\xff\xfc\xfa\xed\xdb\x37\x6f\xfe\xfc\xd3\xd5\x1f\xef\xae\x2f\xfe\x4a\xdf\xfe\xed\xcf\xac\xcc\x1f\xcc\xff\xfd\xed\xcd\x9f\xc9\xc5\x5f\x47\x12\x79\xfb\xf6\x0f\xff\x5f\xb4\x25\x60\xb6\xfa\x1c\x49\xa5\x46\x20\x09\xe3\x3b\x77\x9a\x74\xa3\xb2\x19\x84\xbe\x4e\x6a\xc8\xfd\x84\x32\x35\xe1\x62\x62\xbe\xe2\x03\x52\xa2\x8c\xe7\x53\x31\xcf\xe3\xa9\x24\x6f\x6c\xb7\x12\x6a\xcc\xf9\x29\xc2\xdc\x2f\x4c\xf8\x98\xda\xcc\x2f\x18\xd9\x6d\x26\x78\x28\xf2\xd7\x37\x0e\x45\xfe\x5e\x6a\x91\xbf\x5b\x73\x6b\x5d\xdc\xac\xaa\xd3\x16\x61\xf1\xa6\xce\x5b\x5d\xa1\x2f\x98\x64\xb3\xc2\x5f\x1c\x38\x67\xbb\xc2\x9f\xab\xd0\x17\x8b\xac\xa9\xf0\xd7\xae\xd0\x17\x4c\x5b\x13\x8e\x5e\xa3\xae\x55\x71\x56\x9f\x5c\x94\x69\x76\x2b\xf4\x85\x5f\x00\x68\xd7\xde\x58\x7d\x30\x45\xb8\xf7\x9d\x0a\x7d\xc1\x44\x2f\x67\xaf\xad\x42\x9f\xe1\x02\x71\x22\xfc\x87\xf2\x7c\x87\xf2\x7c\x41\xe3\x65\xe7\x31\x1d\xca\xf3\xed\x3c\x5e\x6c\x66\xd1\xa1\x3c\xdf\xb6\x71\x28\xcf\x17\x3e\x0e\xd8\xe4\x7a\x1c\xca\xf3\x1d\xb0\xc9\x07\x6c\xf2\x01\x9b\x1c\x87\xe4\x01\x9b\x7c\xc0\x26\x1f\xb0\xc9\x07\x6c\x72\xf8\x78\x25\xd8\xe4\x43\x79\xbe\x28\x44\x0f\xe5\xf9\x0e\xe5\xf9\xa2\x10\x3d\x94\xe7\xdb\x75\x1c\xca\xf3\x05\x8d\x43\x79\xbe\x9d\xc6\x93\x97\xe7\x33\x81\x93\xf0\xb8\x6e\x55\x9b\xef\xef\xb2\x34\x9f\xd4\xcf\x2e\x21\xa7\x49\xc2\x4b\xa6\xee\xf8\x03\x09\xaa\xa7\xf2\xe4\x40\x8e\xb5\xd9\x06\x51\x7e\x71\xa5\xfa\x62\xb8\xd0\x83\xdd\xde\xb1\x1c\xde\xb8\x4c\x29\x61\xe1\xb0\xad\xd6\xa5\x3a\xb5\x44\x63\x21\x01\xb4\xa9\xc2\x52\x92\x56\xb3\x8d\x85\x04\x51\xfa\x76\x4e\xd1\x29\x12\x24\xa1\x05\x8d\xa1\x84\xf1\x19\xc2\x86\xae\xe1\x45\x34\x25\x4c\xc5\xe0\x9b\x54\x49\x92\xcd\x8c\x12\x86\x99\xa3\x4b\x23\x58\x70\x35\xd0\xc0\xc6\xb3\x9f\x64\x9b\xe3\x74\x18\x04\x75\xe0\x91\x4a\x82\xe4\x82\x97\x59\x8a\x04\x89\x12\x17\x6b\xdc\x86\xbb\x98\x3b\xe0\x00\xbe\xc8\xc2\x79\x22\x1e\x9b\xdd\x5c\x5c\x50\xcd\x72\x89\x88\x13\x38\x8e\xa0\x7e\x90\xaf\x05\x15\x20\x52\x6e\x49\xc2\x59\x1a\x17\xba\x76\xd1\xa5\x1e\x8b\xcb\xd8\xdc\x23\x92\xa2\xb4\x14\x71\xca\x60\xf2\x19\x5a\xe2\x8c\xa6\x54\xad\x62\xe5\x06\x5b\xf1\x8a\xb0\x91\xaf\xf6\xd2\x06\x93\x3d\x95\xf5\x13\x40\xb8\x28\x04\xc7\xc9\x22\x82\x22\x5f\xdf\x85\x13\xe3\x87\x28\xef\x49\x16\x41\xe5\x73\x1d\xd0\xb3\x72\x4e\x59\x1c\x9c\x0c\xac\x59\xd1\x25\xc9\x56\x48\x70\x85\x23\xb8\x22\x1a\xfa\x90\x3b\xb0\x70\x9a\x35\x97\x8a\xb5\x99\xe0\x5a\x37\x36\xbe\x12\xab\x18\x01\x60\xc5\xed\x16\xd6\xb7\x2a\xfc\x99\x36\x84\x89\x7e\xb3\x3c\x4b\x23\x70\x51\xb5\xc0\x0c\xfd\xfe\x3d\x2a\x88\x48\x08\x8b\x92\x89\xa2\x6d\x11\x45\x73\x48\xde\xcf\xe8\x32\x4a\x52\xfc\x13\x2e\xfe\x9f\xbf\x43\x0b\x5e\x0a\x39\x3d\x8f\x95\x8c\xa2\x38\xfa\x16\x68\x82\x9b\x5d\xab\x41\x31\x20\x96\x58\xa1\x8c\x60\xa9\xd0\xb7\xef\x51\x4e\x59\xa9\x88\x8c\x23\xf2\xe2\x78\xc2\x1b\x3e\xf0\xdf\x7d\x17\x44\x2b\x86\xf7\x7b\xad\x42\x60\x0c\xd8\x1f\x94\xac\xd5\xb4\xa2\x25\xfe\x5b\xad\x28\x07\x51\x56\x70\x1a\x47\x01\xaf\xa2\x50\x51\xcc\x46\x3b\xd3\xfa\xf5\x31\xc5\xf7\xa8\x6b\xfd\x52\xf2\xfb\x95\xf2\x30\xd8\x5a\x57\xe2\xdf\x0d\x95\x66\xfd\x6f\x1f\xcc\x9b\x23\x63\x0e\x90\x1b\xf3\x61\xc1\xa5\x32\xb1\x45\xb9\xc0\xc2\x4b\x89\xc0\xa8\xe0\xe9\xb1\x44\x19\x9d\x11\xcd\x4a\x77\x26\x11\x64\xeb\xfb\x5b\xf8\x13\x24\xc8\x9c\x4a\x25\x76\xb7\xf7\x26\x56\xa7\xd9\xf9\x83\x61\xae\x80\xb9\xe0\x65\xe1\xc7\x6d\x5a\x17\x0a\xa2\xb3\x2e\xe2\xe4\xb9\x12\x33\x70\x92\x10\x09\x06\x93\x15\x48\x06\xb5\x6d\x66\xea\x45\x33\xd0\xb2\x11\x04\xa7\x9f\x59\xe6\x89\x09\x6c\xed\xd2\x8d\x25\x85\x16\x44\x90\x10\xb5\x75\xc6\x45\x62\x94\x2b\xf7\x04\xad\x46\xec\x0d\x86\xbd\xb7\xaf\x98\xa4\xc6\xc7\xa0\x57\x3d\x81\xea\x19\x0d\x1c\x9b\x2f\xdf\x3b\x6f\x98\xc1\x33\x9c\x49\x4f\xf4\x5a\xa8\x3f\xd5\x3d\xce\x28\x27\x69\x48\x35\x38\xa8\xef\x7d\x47\x92\xb2\x79\xa6\xd5\x44\x94\x97\x99\xa2\x45\x56\x9d\xaa\x27\xc9\x6a\x72\xd6\xf8\x08\x4f\xa4\xc0\xb2\xc6\x5c\x63\x09\x2c\xfe\x43\xc1\x85\x0a\x49\xf5\x7a\x53\xad\x96\x30\x25\x28\x91\xa6\x8a\x3b\x29\xb0\xc0\xfe\x39\x54\x70\x79\x13\x9e\xe7\x58\xbe\xb5\x59\x1f\x18\x0a\xf8\xcb\x00\xfb\x5b\x9b\x06\x02\x67\xd5\x05\x6a\xd6\x56\xd8\x07\x4b\x52\x84\x61\xe6\x99\xce\xd9\x86\x44\x00\x21\xc4\x1f\x5d\x53\x0d\xcf\x0d\x9a\xd3\x25\x61\x5d\x5e\x14\x14\x2a\xff\x01\x27\x0f\x84\xa5\xe8\x67\xe9\x38\x52\xba\x62\x38\xa7\x09\xce\xbc\x6b\xb8\x14\x82\x2f\xa9\x66\x64\x24\xed\xcc\xd5\x3b\xbd\xca\x80\x3d\x29\xe0\x73\xd0\xfd\xca\xe8\xc8\xe0\x95\xd8\xc7\xbd\x28\xa5\x6f\xe5\xa4\xd6\xad\xf8\x59\x12\xf1\x34\xb2\x5c\x1a\x70\xb4\xa0\xcb\x84\x84\x79\x44\xf4\x52\xf7\xb1\xc5\x66\x3f\x22\x6c\xf2\x17\xfb\x48\x6a\xce\xea\xb9\x13\xa0\x6a\x57\x49\xad\x12\xc0\x34\x99\x16\xdf\x2b\x57\x38\xd0\x93\x70\xe7\x39\xdf\xaf\x00\x19\x11\x22\xba\xbd\xd6\x29\xee\x3d\x34\xf1\x4e\xf5\x80\x1f\xce\x5b\xa6\x0e\xba\xc1\x29\xf7\xe1\xdc\x3f\x64\x3c\x79\x40\xe7\x04\x5c\x7a\xfd\x56\x8f\x07\x55\x63\x27\x59\xab\xa7\x61\xf6\x18\x88\x87\x81\x68\x78\x90\x75\xa0\x0e\xf2\x15\xe7\x45\x46\xe4\xf4\xe1\xf7\x00\xeb\xb0\x2c\xef\x9d\xb8\x4f\xdf\xdd\x5c\x9c\x9e\x5f\x5d\x4c\xf3\x74\x77\xf4\xc2\xde\x6c\x2c\x9a\xe3\xf9\xee\x1c\x69\x82\x72\xce\xa8\xe2\x62\xf7\x73\x0f\x33\xb1\x66\xf2\x4e\xef\x54\x38\xc7\x38\xfe\x91\x66\x44\xae\xa4\x22\x39\x6c\xbe\xe7\xb3\xb6\x1e\x12\x67\x30\x68\xee\xb1\xe2\x25\x7a\xc4\xde\xbc\x58\x8b\x0a\xfd\x16\xa6\xe8\x8e\x16\x1f\xd0\x05\x93\xa5\xb0\x94\xfd\x15\x80\x59\x7b\xb1\x20\x63\x5d\xcd\x35\x5f\x1b\x67\x55\x3f\x55\x7d\xa2\x58\x69\xad\xc7\x7c\x89\xaf\x69\x73\x61\x1f\xd7\x07\x74\x44\xbe\xaa\xef\x8e\x4e\xd0\xd1\xd7\x99\xd4\xff\x30\x35\x93\xde\xad\x49\x2e\xf3\x22\xa3\x09\x55\xd9\x4a\x3f\x7f\x22\x04\x49\x6d\x31\x58\xf3\x35\x9e\x64\x69\xab\xf0\x43\x93\xbf\x8c\x82\x80\x49\xc5\x05\x9e\x13\xc7\x41\x7e\x25\xee\x7d\x8f\xc2\x20\xbc\x16\xfc\x11\xa5\x1c\x3d\x42\xfa\xf8\x92\x30\x65\xb2\x95\x7d\x4d\x29\x1b\xbf\x6e\xdc\x9c\x99\xe0\xb9\xb6\x06\x0a\xc1\x73\x2a\x43\x64\x2c\x41\x39\x4e\x16\x94\x11\x3f\x98\x57\xa0\xd6\x01\x2c\x2f\x06\x0b\xb9\x5b\x10\x24\xb4\xf0\xf3\xe4\xa2\x66\x80\x1e\xd0\x77\x79\x46\x89\x9a\x5f\x2d\xf8\xe3\x44\xf1\x49\x29\xc9\x84\x7a\x56\xca\x09\xdc\xcf\x07\xb2\x82\x12\x48\x11\x76\xf4\x27\x43\xca\x85\x91\x03\x80\x3d\x8a\x03\x86\x0d\xa8\x69\x03\xf3\xe6\x87\x73\xad\x89\x4f\x9d\xf2\xec\xfb\x2a\x24\x7a\x47\x54\xf2\x2e\x21\xc5\xe2\x9d\x5d\x78\xa0\x66\x81\x76\xd5\x2e\x5e\xc0\x91\x3b\xe9\x1f\xe3\xcc\x4f\x51\xc2\xb3\x8c\x24\xfa\x7f\xfd\x43\x86\x67\xa4\x58\x54\xd3\x7a\x09\xcf\xc9\xbf\x6a\x40\x50\xad\x80\xc0\x83\x2d\x38\xf7\x84\xba\x6e\x62\x8d\x9a\x62\x80\xad\x83\x9a\x9e\x6b\x71\xdf\x2f\x66\x5f\xcb\xb3\x89\xe8\xfd\x3e\x7e\x02\xf7\x77\x45\x52\x12\x05\xda\x9c\xa7\xe3\x05\x59\x7b\xfc\x4a\xeb\xb1\x72\x1a\xcb\x63\x8d\x5e\xc0\xd1\xfb\xfb\xcb\x4d\x51\x36\xef\x82\xe4\xdd\x02\xe4\x96\x18\xc4\x73\xfc\xeb\x4f\x39\xdc\x5b\xa9\x16\x84\x29\x9a\x00\xba\xc8\x4e\xd5\xff\x3a\xd5\xc2\xf6\x72\x66\xfc\x84\x29\x49\x11\x5f\x12\x21\x68\xea\x0d\x84\xaa\xa4\x6d\x33\x94\x45\xb3\xa0\xd4\x8d\xbd\xde\xa5\x00\xf4\x74\x38\x64\x39\x2c\x2f\xa7\x37\x23\x27\x10\x93\xd7\xce\xc5\x79\x69\xb9\x34\xfd\x59\x34\x2e\x0b\x26\x80\x70\x23\x7f\x26\x4a\xfe\xcb\xcb\xf0\x7a\x37\x14\x00\x4d\x31\x96\x02\x80\xd3\x9c\xb2\x7f\x30\x7d\x5b\x26\x38\x23\x97\x9f\x03\xdd\xb6\xb7\x86\x4a\x28\x48\xc5\x91\x29\xf4\x95\x95\x8a\x30\x55\x55\x55\x54\x0a\x27\x0b\x2f\x77\x12\x20\xdb\x6c\xbc\x9c\x33\xf4\x53\xf5\xd6\x11\xe3\xa9\x0f\x32\x6d\x6f\xde\xd4\x39\x56\xe4\xd1\x43\xed\x9f\xd4\xea\x81\xcf\x67\xc1\x3f\xf3\x5a\x3d\xb1\x1d\x47\xac\x3f\xea\xc2\xba\x4d\xab\x22\x3c\x0d\xdf\x55\x80\x31\x55\x3b\x4a\xfb\x5d\x9e\x9e\xa4\xad\xa3\x14\x5d\x7c\x9d\xc6\x75\x76\x36\xb8\x25\xd0\x7b\xf6\x10\x93\x1e\xf6\x1d\xc4\x08\xaa\xbb\x0d\xc7\x69\x2a\x88\xf4\x15\xe1\x56\xd1\x75\xec\xeb\xf4\xfa\x12\xfd\xd1\xcc\x71\x2f\xfb\x53\x08\xae\x8c\xc7\xe3\x9c\xe7\x98\x7a\xe6\x20\xae\x6d\x54\xa3\x71\x9a\x5b\xaa\xe7\x7e\x5d\x57\x13\x44\x66\x86\xa0\xd7\xdb\xae\x42\x33\x3a\x2f\xfd\xdb\x6b\x58\xbf\xf7\x5e\xf6\x3d\xa2\x01\xbe\x66\xd4\xfa\x22\x77\xf4\x9c\xde\x3d\x0a\xaa\xc8\xdb\x69\x1b\xd4\xe6\x8d\xda\xc9\xb2\x01\xab\xde\x3f\x1e\xd0\xb2\xea\x5f\xbd\x11\x5d\xdb\xd0\x75\xbc\xdf\xdf\xd9\xdc\xa8\xbb\xae\x5f\x8a\x63\x34\xde\xc8\x0a\xa3\x15\x19\x5b\x43\x12\x26\x29\x94\x48\x69\xa4\x18\x7b\x07\xc3\x66\xa6\xee\x5d\x55\xbe\xd7\x98\xe7\x27\xe8\x23\xf7\x05\xda\x20\x27\x0d\x39\xb3\x97\x0f\xd3\x2c\xe4\x82\x1c\x2c\xe3\xd6\x38\x58\xc6\x2f\xc1\x32\x96\x32\xbb\x60\xf8\x3e\xf3\xcd\x56\x6f\x2b\xbd\x19\x9e\x6b\xb6\x41\x80\xe2\xbb\x94\x4a\xfd\xaf\xe7\xd2\x6e\x6f\x3f\x02\x4a\xb3\x64\xce\x83\x07\x18\x3f\xab\xe0\xf8\xa2\xf1\x6c\xba\x6d\x80\x70\x0b\xe6\xf6\x46\x53\xb8\xf2\xae\x7f\xda\xee\xd3\xc0\x52\xbd\x3d\x44\xba\xb2\x19\x01\xe1\x6b\x3b\x33\x60\xf5\xb8\xaa\x33\x0e\x59\xd4\xbe\x70\x0a\x82\xee\x16\x34\x79\xb8\x6e\xc0\x2a\xb9\xd0\x3f\x63\x8d\x1f\x45\x30\x0a\xa2\x50\x0c\x7d\x4a\x66\xfb\xae\xe3\x04\x9b\xee\x1a\x8a\xfd\xad\xa1\xec\xab\xf5\x72\x9e\x21\x2c\x25\x4f\x28\xae\xc0\xfb\x10\x88\xae\xd4\x61\xdf\xc7\x04\x4a\xf4\x7e\x36\x1b\x2c\xcd\x27\xb0\x30\x64\xd0\x5e\x5b\x93\x1f\xcb\x86\x45\xa1\x95\x4c\x7b\x92\x7b\xd9\x2a\xf3\x90\xfd\x9b\x1e\x6e\xdc\x2e\x1c\x08\xfd\x6d\x43\x50\xab\x5e\x09\x41\x26\x9e\xf3\xb9\x2c\xb0\x71\xad\xb6\xaf\xbd\x37\x73\xa4\xb2\xe2\x87\xd0\x10\xea\xd9\x0f\xd2\xb7\x3d\x53\x5f\x84\x2d\xd4\x5d\x6a\x2d\x02\x9b\xc0\x07\x45\x36\x0a\x5e\x94\x99\xc9\xe6\xf6\x4a\x23\xb5\xa5\xf0\x43\xd1\x66\x66\x66\xcf\x0c\x54\x0d\x53\xce\x1b\x75\x70\x63\x44\x28\xaa\xf2\xe7\x75\x61\x50\xcf\x4b\x5f\x4a\x03\x28\xec\x14\x2a\x47\x9c\x05\x82\xc6\xc1\x81\x89\xee\x57\x6e\xe9\x0d\xe7\xa6\xb7\xa5\x06\x35\xa5\x5b\x65\xb5\xab\x5a\xe0\x9e\x24\xdf\x7f\xff\xfd\xf7\xad\xda\xdf\x51\xaa\x76\x77\xaa\x74\xc7\xa8\xaf\xbd\x56\x4f\x3b\x46\x25\xec\x6e\xe5\xeb\x46\xcd\x6a\x6f\x3f\xb6\xbd\x8e\x6d\xe4\xc4\xfb\xdf\x7d\xf7\x9d\xb7\xfe\x47\x05\x49\x14\x87\xc4\x30\xdb\x96\x23\x10\x5f\x87\x05\x01\xff\x81\x29\x79\xec\x9c\xe3\x26\x77\x47\x51\x36\xf7\x9d\x69\xab\x8c\x74\xb3\x00\x74\x88\x54\x6a\x15\x7c\x6e\x96\x6a\x0e\x84\x54\x9b\xd2\xcc\xed\xa2\xca\x01\x0f\xa9\x2e\xa2\xdc\x2a\x7f\x1c\x52\xfa\x3c\xb0\xdc\x71\x78\x51\x87\xd0\x72\xc6\x01\x60\xb8\xa1\x2e\x7d\xd0\x65\xcf\x1f\x88\xd2\xe8\xcd\x17\xad\xb7\xde\x5a\x47\xbd\x66\x47\x3c\x7f\xab\xb2\xdd\x4d\xad\x91\xad\xe0\xfb\xf0\xe5\x7a\xf7\x3b\x8b\xd7\xf5\xdf\xcf\x66\xcf\xbb\x76\xcf\x3a\x7f\x2f\x67\xbb\x24\x3f\x0a\xef\xd5\xb6\xd6\x99\xb0\xde\xd1\xd0\x94\x60\xd3\x95\x6e\xbd\xab\x5c\xc8\xd9\x77\x7a\xc9\x35\x7b\xc1\xf9\x5a\x0c\x55\x71\xbb\x88\x1d\xe0\xd6\xfb\xbe\xb5\xfa\xb6\x85\x9c\xd5\x7a\xb7\x36\xdb\x6d\xcd\xdb\xcb\xdd\xea\xd1\xb6\xd6\x63\x2d\xc0\xd1\xdf\xd3\x59\x0d\xaa\x39\x07\xdc\xa7\xaa\x9f\x5a\x68\x3f\xb4\xbd\xe2\x99\xd7\x3a\x9e\xb5\xfa\x95\xf9\xfb\x82\x79\xb7\x4b\x59\x60\x8f\xb1\x08\x05\x51\x43\x8b\xa1\x86\x74\x11\x0b\x2a\xa2\x1a\xa3\x80\x6a\x60\x9f\xb0\x35\xcf\x4b\x84\x66\x76\x11\x7a\x82\x45\xa9\x03\x19\xda\xff\xeb\x29\xba\x7e\xb5\x7b\x7d\x59\xe3\x37\x6c\xb7\xdb\x86\x73\xa4\xde\x5c\xdd\x8e\x5c\x46\xab\x08\x22\xd9\xb5\x9a\xc3\x3b\x68\x45\xb7\x9d\xcd\xd8\x60\x41\x87\x2d\x9e\x6b\xc1\x12\xb5\x2f\x55\xd3\x06\xaf\xac\xe9\x20\x8a\xeb\x96\x78\x78\xf7\xa8\x66\xcf\xa8\x58\x4d\x94\x1b\xba\x4e\xac\x1e\x4f\xad\xce\x4e\x0d\x63\x3a\xf0\xc6\xaf\x19\xe2\x11\x1a\xf3\xc4\x35\xc7\xcd\xd8\x64\x94\x07\x11\x6d\xf7\x37\xb2\xa6\x79\xd8\xd2\x2b\xb3\x3e\x4e\x3f\xa2\x58\xb5\x17\xe3\xf4\x1e\x0a\xad\xb9\xb8\x26\xcb\xa3\x94\x48\x34\x2a\x71\xbb\xa0\x61\x8e\x7d\xed\x0b\x33\x54\xa5\x68\x54\x5d\x62\x42\xaf\x46\xa3\x7b\x4f\xdd\x77\x27\x88\x62\xd7\xac\x88\xd6\x27\xa7\xd5\x1d\xa7\x61\x6a\x04\x6f\x69\xa4\x6e\x36\x81\xca\x57\x58\xe7\x8f\xbe\x7e\x1f\xcd\x7e\x1d\xbe\x50\x0f\xe3\x12\xaa\xbb\x74\xd4\x56\x68\x48\x9b\x8d\x38\xb8\xbc\x48\x81\xd3\x26\x6a\x2a\x2c\x17\xcd\xdd\x78\x53\x09\x06\x80\x4e\x05\x4e\xe0\xe9\x97\x51\xb3\x10\x9f\x23\xf2\x86\x02\xc3\xa2\x66\x1a\xdc\xc3\x46\x6b\xdf\x65\x43\xe7\xf3\x6d\x58\xb5\x3e\xdc\x20\xd4\xc9\x20\xf1\xf4\xa0\xbf\x9c\x0c\x92\x43\x62\xc5\xb6\xf1\x1a\x13\x2b\x9e\xa7\x8a\xcc\x3e\x60\x2f\x07\x54\xfc\x01\x15\xbf\x8e\x8a\x77\x77\xd2\x1b\x14\x5f\x23\xe2\x8d\xbc\x05\x43\x9c\xdf\x6b\x45\x34\xac\x78\x50\x2d\x39\x4e\xaf\x2f\x51\x22\x08\x34\x82\xc1\x99\x9c\x22\x74\xe9\x5b\x40\xa4\x6d\xd7\x57\xe8\x57\xe3\x43\x08\x8c\x18\x61\xa5\x48\x5e\xa8\xb0\xe7\x7d\x00\xc5\xb7\xc6\x01\x14\xff\x12\x40\xf1\x51\x11\x93\x5f\x2a\x62\x61\x01\xe5\x45\x99\x63\x36\xd1\x12\x04\xdf\x67\x9d\xac\x38\xc7\x3a\x3c\x49\x3b\xf4\x9d\xab\x38\x0a\xf7\x04\xc0\x30\x9c\x79\x97\xd2\x2d\x19\xfd\xa5\x24\x75\x24\xaa\x32\x54\xf6\x0c\x82\x85\x39\x44\x3d\x57\x63\x7e\x45\x91\x2c\x09\x2f\x48\xa7\xfc\xa2\xd9\x40\x5f\xcb\xda\xdd\x0c\x10\x22\x88\xf1\xfa\x18\x7c\x75\x83\x46\xa9\x70\x3d\x4d\x63\x8c\x5e\xf3\xf4\xd8\x77\xe1\xb5\x05\xdb\xf6\xf3\x82\xa3\xd7\x37\xfa\x9c\x65\xfc\xd1\x20\x2e\x9a\x66\x93\x7e\x33\x7a\x8f\x03\x24\x35\xe8\xc6\x39\x15\x82\x0b\x0b\x2a\xa6\x2c\xf8\x01\x42\x1a\x2a\x9d\x2f\x14\x11\xc6\xe1\x69\xf2\xce\xa6\xe8\xd6\xdb\x4b\xd0\x60\x3b\x8a\x23\xcc\x4c\x69\x5e\xfd\xdf\xae\x64\x4d\xc0\x3d\x75\x7a\xc4\x3d\x59\xe0\x25\xe5\xa5\x80\x99\xfa\xdb\x62\x47\x96\xe0\x91\x36\x1c\x56\xbc\xac\x80\x78\x65\x40\x45\xc6\xea\x5e\xc9\xb5\x63\xf2\x95\x55\x9f\x6a\x92\xe0\xe0\x4f\xb9\xc3\x8a\x4c\xc8\x57\xea\xdd\xc5\xa8\x3b\xbd\xea\x21\x58\xa0\xed\xb3\x73\xcc\xa5\x2c\xb4\x51\xf2\xc5\xb3\x92\x75\x9b\x4f\x36\x69\x85\xba\x57\x96\xb7\x40\xac\xcf\xb9\xe2\x5c\x25\x3e\x4e\x51\xe6\x3a\xa5\x99\xc6\x05\xae\x90\xe7\xf3\x3a\x58\x42\x4a\x74\x98\xfd\xb8\xf6\x41\x3b\x1c\xfc\x3a\xdb\xc6\xc1\xaf\x53\x8d\x17\xe0\xd7\xa9\xd2\xec\x32\x9a\xac\x2e\xcf\x63\x78\x07\x6c\xde\xa3\x21\x89\x7e\xc0\xd2\x1b\x4c\x77\x85\x19\x9e\x43\x10\x0a\xbd\xb9\xbd\xfe\xe1\xea\xad\x7e\x5e\x10\x98\xbb\x3c\xf7\x55\x65\x7a\x32\xf7\x6e\x9b\x7b\xf0\x69\x1f\x25\xf7\x51\xf7\x24\x22\x59\x4b\xcf\x72\x16\x7b\x69\x52\x80\x2a\x2b\xe4\xda\x3b\x94\xbc\xde\xb4\xcf\x24\xba\xb9\x9e\xc1\xbe\xea\x72\x47\xac\x2e\xf3\xf4\xe1\xa9\xb6\xa7\x81\x88\xda\xbc\x07\x63\xc0\x99\x5b\x01\x98\x9d\x7b\x25\xb0\x22\xf3\xd5\x39\x29\x32\xbe\xd2\x97\xe2\xba\x01\xcd\x32\x7f\x7a\x4f\xb6\x9a\xe7\xe2\x1e\x27\x48\x94\x19\x34\xd1\x48\xd7\x7a\xed\x32\x42\xd2\x5a\x42\x50\x26\x15\x86\xc6\xa9\xe6\xbb\x07\x28\x8f\x54\x1c\xc6\xa8\x08\x13\x33\xbf\xc1\xbf\x68\xb7\xe0\xff\x34\x5c\x6a\x73\xac\x82\x00\x5f\xbb\xed\x5e\x8f\x87\xdd\x8e\x04\xd8\xb6\x9f\x04\x70\x8d\x9b\x32\xd3\xe2\x39\x4b\x65\xb3\xb4\x88\xd5\xd8\xed\x49\x8f\x79\x29\x18\x15\x86\x0b\xe9\x95\x9d\xa0\xfb\x52\x2b\xfc\x44\xb6\xb0\x07\x8d\x2f\x18\x43\xf1\x9e\x97\x0a\x3d\x2e\x0c\xbe\x5e\x93\x45\xb8\x28\x32\x4a\x20\xb4\xc0\x85\x85\xa0\xef\x62\xa3\xf7\x10\xda\xce\xda\x76\xd2\x53\xc7\xeb\xa5\x13\xb4\x24\xe2\x7e\xfb\xd6\xee\xa6\x72\xe2\x82\x02\xde\x69\xa4\x7e\xda\xba\x10\xa7\xd7\x97\xe6\xb3\x2e\xff\xa2\xe9\x36\x73\xbf\x1c\xc9\xea\xe0\xfe\xd8\x73\x77\x0d\xc1\x4d\x36\xb0\x71\xd1\xd7\xbd\xd9\x4e\xaf\x2f\x47\xd2\x9c\x9b\xc9\x41\x5b\xb3\xda\x4d\xaf\xad\x75\x6c\xea\x54\xd5\x3d\xc7\xf1\x5c\x7f\xef\x58\xb3\x82\xb3\x6a\x99\x84\x95\x39\x81\x86\x69\xf5\x84\x11\x65\xf0\x2d\xa7\xd7\x97\x3b\xb5\x4d\xac\x7c\xff\x59\xc6\x1f\xc7\x2a\x80\xbb\x42\xed\x77\x82\xd6\xef\x28\x91\x19\x67\x37\x76\x13\x7e\xbe\xf9\xe8\x73\xa5\x3e\xb5\x29\xd8\xf6\x4c\x44\xe9\xed\x2e\xb0\x50\x74\x34\x72\xb4\x14\x99\x03\x0a\x9a\x7a\xa2\x36\x99\x7a\x81\x97\xa4\x6e\x8c\x35\x45\xe8\x9b\xb1\x72\x5d\xdf\x23\x7b\x34\x86\x5f\x41\x7b\x46\xd3\xd8\x0e\xcd\xca\x2c\x3b\x41\x33\xca\xb0\x16\x49\x64\xec\x91\x37\x01\x56\xb7\x94\x25\x44\xef\xe1\xc4\xdd\x24\x04\x7b\x60\xdd\x35\x23\x29\x56\xec\x0d\x92\x98\x00\x11\x4d\xb2\x14\x9a\x56\xc3\x74\x35\x23\x4b\xc0\xc9\x3d\x3e\xdd\xf4\x2c\x2b\xa5\x22\xe2\x86\x6b\xd1\xdc\xc8\x36\x83\xf6\x1e\xb8\xf9\xeb\x1f\x28\x4b\x77\x48\xe5\xbc\x01\x61\x9f\x60\x86\x08\x85\xa0\x87\x9e\xde\x4a\xb3\x6b\xfd\x76\xea\x07\xf5\x46\x96\xa3\x73\xef\xb0\x44\x47\x05\x4f\xe5\x91\x66\xf9\x47\x26\x9c\x28\x8f\xde\xea\xff\xeb\xee\xed\x48\x8a\x90\x6a\x65\xe6\x00\xd4\xdf\xe1\x82\x1e\xbd\x3d\x41\x70\x09\x00\xc0\xc7\xd5\xe2\xf5\xbd\x56\xb7\x13\xe0\x77\xf3\x78\xab\x37\xcd\xcf\xc3\x4b\x65\x15\x02\x4e\xcb\xda\xd1\xfd\x33\x33\x2a\xe1\x81\x9b\xc8\x88\xeb\x5b\xb4\x26\x78\x11\x3a\x1d\xeb\xa9\x27\x79\xa1\x20\x4e\x8f\x72\x82\x1d\x60\x98\x2c\x89\x58\xa9\x85\x6d\x16\xf2\x6a\x99\x6c\xf5\x2a\x02\x8e\xcc\x32\x56\xb7\xf1\x15\xc9\xd1\xc2\x9a\xca\x9e\xe3\x71\xd4\x4f\xb3\x6c\x77\x57\x24\x86\x0f\x39\x91\xff\xea\x4e\x05\x74\x33\x8f\x13\xf9\xa2\x3f\xd7\x3e\x0d\xf3\x23\x23\xba\x34\x3b\x1c\x3b\x61\x8e\x4e\x3f\x7e\xb4\x48\x15\xb3\x8f\x3f\x51\x96\x1a\x5b\xea\x54\x29\x41\xef\x4b\x45\x6e\x88\x5e\x12\xa8\x3f\x63\x4f\xc6\x6a\x65\xae\x88\x8c\x3d\xfa\x29\x82\x89\x7a\x9f\xf5\x83\x9e\xdb\x6b\x3a\xe7\x75\xb3\x6e\x9c\x39\xb6\x91\xb4\xb3\x5c\xfb\xc9\x0c\x7c\xd8\x9a\xbe\x57\x3c\xed\x63\x02\x9d\x0a\x66\xf5\x9f\x5a\x25\x78\xd5\xf0\xb6\x5a\x4a\xd6\x84\x5b\x15\x3d\x1c\x60\x68\xf3\x37\x6e\xf4\xa6\x39\xd4\xfe\x36\x90\x16\x8d\xdf\xdc\xad\x0a\x13\x8d\x45\x18\xcd\x32\xdc\x7f\x14\xd5\x45\x03\x1e\x6e\x14\xf0\xb3\xdb\x2f\x6e\x41\x12\xd1\x3e\x2d\x69\x8b\x3d\x36\x64\x81\x4d\x06\x7b\xde\x4d\x36\xb5\x01\xdc\x66\x82\x55\x44\x37\xdd\xa0\xed\xf0\x2e\x35\x10\x18\xd8\xb4\xfb\x77\xb6\x8f\x1f\x6e\xdc\x00\x70\xbf\xf3\x99\xbb\x09\x1b\x6f\x34\x64\x9e\xcc\xb8\x80\xfd\x6e\x5e\x9b\xc1\x15\xf4\x5e\xdf\x07\xb2\x7a\xe4\x22\xed\xd9\x1b\xaf\xbb\x36\xf0\x4d\x19\xbe\x27\xd9\xb6\x27\x72\x85\x0b\xbd\x01\x75\x86\xb0\xe1\x98\x36\x13\xcc\xd8\xa5\xa6\xb4\x86\xcb\x5b\xe4\x62\x8e\x19\xfd\xaf\xbe\x93\x87\xa2\x04\xfa\x55\x73\x41\xff\x8b\xa0\x37\x06\x73\x60\xbc\x59\x19\x49\xd4\x5b\x7b\x0f\x7b\x38\xdf\xe0\x35\xc5\x69\x4a\x8d\x66\x75\x3d\x78\xb7\x86\x36\x83\xb2\x87\xb8\x7b\xbe\xf1\x49\x6d\xbb\xff\x43\xd0\xb0\xad\xfc\xb8\x14\x1b\xf3\x2b\x06\x3e\x9b\x63\x6a\xa4\x58\x5f\x07\xb2\x7d\xec\x01\xc9\x31\xf5\x59\x88\x19\x9e\x3b\x98\x63\x55\x0a\xaa\x7a\x44\xce\xd0\x87\x28\xfb\xa9\xbc\x27\x16\x43\xb6\xd3\x47\x19\x24\x61\x9d\x5e\x5f\xc6\xda\xf4\xd6\xcb\x05\xff\x92\x9d\x96\x56\x75\x50\xc9\x70\x7e\x4f\xe7\x25\x2f\x65\xb6\x6a\x38\xee\x11\x06\x75\x63\x8a\xd0\x65\xbf\x19\x9d\x72\x22\xd9\xb1\x42\x98\x71\xb6\xca\xed\xc7\x59\x92\x95\x29\x69\x7d\x0b\xa0\x3d\x96\x9c\xa6\x08\x97\x8a\xe7\x58\xd1\x04\x25\xdc\xfc\x6e\x3b\xf5\x52\x12\x84\x37\xd0\x4b\x4a\xa9\x78\x8e\x72\x2c\xe4\x02\x67\x59\xff\xb9\x07\x49\xb2\x4d\x9e\xa8\x09\xec\x4d\xef\x2f\x96\x66\x96\x1e\xb7\x1b\xbe\xcc\xfb\x76\xeb\x09\x79\x7f\x78\xb9\xe9\x9e\x6e\xfd\xbc\x2d\x6c\xdd\xd3\xcc\x66\x70\xe3\x87\xf7\x62\xf3\x4b\xdd\xb2\x92\x8d\x7c\x6e\xe0\x73\x82\x14\x19\xee\x35\x0d\x07\xea\x4c\x6a\x89\x0e\x6a\x3d\x67\xa4\xa2\x30\x45\xb7\xc6\x5f\x96\x63\x95\x2c\x36\x84\x6e\xfe\x33\x27\x0a\xa7\x58\xe1\xa9\x56\x87\xff\xd3\xba\x9a\xac\x67\x94\x67\xa9\x26\xbd\x49\xd0\xf5\xce\xdf\x08\x49\xde\x73\x02\xad\xf9\x7f\xd4\x72\xbd\xfa\x63\x50\x4b\x20\xe1\xb3\xe9\x84\xdd\x51\xc0\x0e\x1f\x22\x6c\xc2\xc5\x57\xad\x7d\x0e\x04\xd7\x5a\x73\xec\x7e\xa4\x6d\xe3\x65\xed\x15\xd8\x97\x9b\x93\x81\x84\x00\x93\xd6\x5a\xff\x1d\xf8\x05\x4f\x3f\x9d\x6f\xf2\x61\x6c\xb3\x9a\x06\xad\xa4\xb6\x9f\x7f\x60\xba\xce\x43\x6b\x7f\x33\xd8\x81\xbd\x72\xef\xbb\xfc\x7d\x28\x2e\x64\x6a\x18\x81\xef\x88\x08\xec\x88\xd8\x03\x95\x2e\x61\x76\x23\xd1\x5a\x57\xdb\xb4\x71\x23\xe2\x31\xdb\xa2\x30\x43\x75\x52\x26\xd5\xc4\x37\xfc\xc1\x98\x80\xcc\x96\x5a\x26\xad\xe3\x30\x05\x99\x4c\x85\x2a\x38\x17\xc8\x27\x76\x5e\xb3\xea\x28\xac\x6b\x66\xd0\x46\x1d\x0e\x67\x8d\x32\x8d\xdd\xe2\x47\x4f\xbf\x3a\xe6\x66\xa1\x54\xbd\x86\x63\x69\xd3\xb6\x39\x93\x0b\x5a\x6c\x03\x29\x55\x71\x01\x7b\xfa\xe8\x0b\xce\x68\x5a\x91\x37\xef\xe3\x92\x9d\xa0\x4f\x5c\xe9\x7f\x2e\xbe\x52\xb9\xc5\x43\xa1\xef\xd2\x39\x27\xf2\x13\x57\xf0\xd7\xc1\x9b\x63\xa6\x36\x7a\x6b\xac\xcd\x61\x5c\xa9\xf0\x72\x1b\x96\x89\x5b\xe6\xe5\xf6\x34\x88\x6a\x8b\xa9\x44\x97\x0c\x71\xe1\xf6\xa0\x2a\x92\x26\x2d\x79\x97\x09\xcc\x38\x9b\x80\xd3\x74\xd8\x23\x73\x69\x59\x7b\x83\xbe\xd9\x56\xfd\x1d\xcd\x9d\x6b\x7e\xd5\xf0\x96\xb7\xa6\x61\xa6\x60\x8a\x50\x98\xdf\x50\xe9\x44\x52\x8a\xd2\x12\x36\x02\x3b\xcf\x09\x4d\x06\x49\xe7\x44\xcc\x21\xb4\x92\x0c\x3a\xe7\xc7\x79\x97\x46\xf8\x94\xb6\xdc\x08\x10\x08\x1f\x37\x58\xa4\xa8\x57\x7c\x98\xbf\x36\x2c\x36\x37\x66\xea\x7f\x6b\x8e\x09\xfb\xfa\x3f\x50\x4b\x50\x4e\xd1\x29\x92\x94\xcd\x37\xb6\x02\x68\x7e\xc2\x86\x9b\x9a\xc4\x35\x5d\x2a\x91\x66\x80\x4b\x9c\x69\x8e\x0e\x88\xe6\x2d\xe9\xfe\x7c\xb6\x26\xe0\x4e\x6c\x75\x3f\xcd\x8d\xaa\x98\xd3\xd1\x03\x59\x1d\x9d\xb4\x2e\xcd\x06\x8a\xfa\x8f\x2f\xd9\xd1\x49\x55\x3b\xa3\x75\x4f\x2b\xd1\x01\x41\xac\x23\xf8\xdd\xd1\x74\x4d\x26\x6e\xa0\x3d\x4a\x52\x0e\x08\x88\xb1\xd6\x37\x1a\xbe\x05\x1b\x35\xd3\xd6\xc9\x7f\xb6\xfb\xe4\x4c\x04\x38\xfd\x47\x81\x8b\x82\x08\x84\x05\x2f\xc1\x99\x90\x2f\x89\x98\xba\x3f\x01\x60\x43\x9f\x87\xd1\xf9\xc5\x12\x2e\x04\x49\x94\x33\x2f\xf4\x2b\x52\xdc\x96\xf8\x61\x29\xd4\xd1\xd9\x49\x4f\x7b\x24\xf7\x0b\xce\x1f\xa0\x7e\x00\xec\xcc\x93\xd8\x77\x7f\x32\xdf\x72\x5e\xff\xcc\xa9\xe8\x12\xa5\x44\x61\x9a\x01\xb2\xe3\xf3\xc7\x2b\x8b\xfd\x70\x62\xbc\xf7\x68\xec\x9c\xfb\xee\x48\x90\x5d\x85\x53\x8b\x74\xba\x21\x4b\x4a\x1e\xed\x99\xf4\x7d\xcd\x04\xcd\x09\x03\xb0\xc0\x06\x50\xd0\x04\x49\x9a\x92\x0b\x28\x6c\xd3\x4f\xc0\xd3\xe1\xb8\x61\x8e\xc3\x77\x78\x88\x25\x6e\x61\x87\x5b\x85\xa3\x8b\x29\x88\x6b\x2e\x36\x16\x5e\x1f\x53\xa3\x66\x4c\xfd\x19\x9b\xff\xf0\x01\x7d\xf7\xdd\x6f\x36\xfc\x49\x8e\xbf\xd2\xbc\xcc\x3f\xa0\xdf\xfd\xf6\xb7\xbf\xf9\xed\xa6\x3f\xa2\xcc\xfc\xd1\xb7\x9b\xd6\x64\x5f\xf8\xd9\xcd\xf9\x1e\xf7\x36\xad\x50\x78\x43\x41\x8a\xad\x64\x66\x98\x66\xa5\xb0\x00\x54\x6f\x2a\xcd\x1b\xef\x4d\x04\x44\xcd\xf0\x44\x3a\x2e\xdd\xea\xef\xc1\xe7\x5d\x65\x8f\x81\x60\x71\x2e\x6f\x63\xd9\x1a\x14\x9a\xef\xcc\x0c\xcf\xb8\xdd\x68\xb6\xf6\x4c\x6e\xcd\x9a\x32\x86\x21\xfc\xec\x97\x92\x88\x15\xe4\x10\x55\xea\xed\xc6\x7b\xd0\xc0\x47\xdd\xd5\xa5\xa6\xdc\xba\xac\x74\x37\x85\x42\xdb\x82\x7a\xb3\x29\x55\x89\x49\x74\xca\x6c\x0c\xbd\x33\x57\xa0\x45\x20\x7a\x5e\x79\xb2\xd1\xe9\x46\x8a\xac\xcc\xb2\x4d\x24\x18\xdf\xec\x0b\x6f\xee\xfe\xa0\xe1\x36\xc6\xb6\x1a\x67\xbc\x9b\xe1\x6d\xc2\x0f\x6a\x86\x2d\xf3\x7e\x67\x43\xbe\xb9\x19\x11\xd4\x54\x4f\xd3\x7e\x90\x66\x17\xbf\xb7\x83\x81\xbf\x95\x2e\xa9\xaa\x3d\x0f\x9b\xf9\xcd\x6d\x1a\x01\xbe\x1c\x07\xbc\xdc\x5e\x20\x75\xab\xf9\x6f\xc6\x78\x54\xe6\xa8\xb2\xa6\x1e\x0e\x81\xad\x34\x91\x07\xca\x75\x14\x3e\x62\x8c\x8b\xa0\x67\x59\x63\x1d\x05\x23\x16\x06\xb5\x7b\x77\x72\x17\x8c\x20\x6a\x2d\xdf\x5d\x9c\x06\x76\x36\xe3\xb7\x6e\xbb\x03\xc1\x8c\x9d\xdd\x08\x23\xd6\xd7\x63\xec\x0f\x3a\x13\x46\x90\x5c\x77\x37\x0c\xba\x14\x46\x50\xdc\xe4\x74\xd8\xec\x58\x18\xf3\x0e\x46\xb8\x1e\xc6\xba\x17\xcc\xd8\x05\xc2\x32\x1a\xbe\x32\xea\x1e\x6d\x75\x3b\x98\xe1\xe9\x7c\x18\x9c\xa5\x73\x4c\xec\xec\x82\xd8\xe2\xb3\x6c\xb8\x27\xc6\x3a\x22\x06\x29\xf6\x38\x29\x46\xba\x23\x86\xbd\x70\x83\xae\x8a\x5d\xa4\xfe\x56\x71\xb6\x8b\x83\xa2\x49\x78\xe0\xee\x08\x42\xd9\x92\x9b\xe6\x90\x3b\xa8\xde\x37\x6b\x1f\xeb\x68\xe0\x8f\x20\x97\xac\x0a\x3e\xa8\x7c\x1b\xe1\x5f\x99\xae\x48\x5b\xef\xa8\x94\xdb\x1c\xfd\x43\x6b\x1a\x4a\xa2\x09\x36\xcc\xda\xfb\x50\x66\xe4\x4f\x54\x2d\x3e\xbb\x36\xb7\xf6\x25\xa9\xb2\xc8\x60\xe9\x8d\x5f\x0c\x17\xaf\xbb\xa9\xf5\xfc\x4b\x65\x98\x52\xc2\xf3\x9c\xb0\xd4\xa0\x51\x72\xfc\x40\x90\x2c\x05\xb1\x90\xc1\x2c\x33\x56\x8e\xfe\xa2\x01\xb2\xe4\x6b\x81\x99\x51\x6b\xf5\x4d\x5c\x6a\x69\xb8\xf9\x26\x8e\xba\x87\xe3\x74\x9c\x91\x19\x27\xc3\x99\x26\x55\x6a\x45\x27\x57\x64\x0b\xd7\xbc\x27\x19\x07\xdf\xd7\x14\x1d\x7f\x73\x6c\x61\xc0\x96\x10\x88\x22\xfb\x53\xab\x6f\x9c\x8c\xa8\x28\x93\x11\x36\xaf\xcb\xc4\xca\x8c\x26\xa4\x92\x3a\x9c\x91\x29\xba\xb1\x8a\xe6\x18\xbd\x75\xbb\x80\x18\x25\x1c\x46\x2a\x18\x75\x61\xa0\x1d\xcf\xc2\x7d\xaa\x79\x1a\x4b\xf7\xb3\xf0\xf3\x70\xa4\xfe\xf1\x4e\xa4\x6a\x8a\xbd\xcb\x81\xb4\x59\x4c\x2d\xc5\xaa\xd3\xa8\x58\xe8\x96\x49\x02\x83\x4d\xb0\xd0\x62\x0e\xfc\xa9\x13\x74\x76\x73\x71\x7a\x77\x71\x82\x7e\xbe\x3e\x87\x7f\xcf\x2f\x3e\x5e\xe8\x7f\xcf\x3e\x7f\xfa\x74\x71\x76\xb7\x5d\x47\xfb\xc6\x34\xbc\xcd\x32\x73\x1e\x5a\x2e\xf3\x16\xe7\x83\x4c\xa9\x59\xa9\x34\x03\x1b\x3b\xd1\xd6\xfa\x34\xcf\x83\xcf\xa6\x24\xdd\x74\x63\xec\x9d\xd8\x46\xf6\x15\xde\x98\x91\xd9\x00\xad\x0b\x73\xb4\x2d\x0d\xa0\x46\x79\x6f\x99\x64\x13\xfe\xff\x17\x86\x7e\xe4\x02\x91\xaf\x38\x2f\x32\xf2\x01\x1d\x17\x3c\x95\xc7\x36\x01\x43\xff\xf7\xd4\xfc\xe8\x5d\xc6\xe7\xdb\x8a\x8f\xb9\xac\x0d\x82\x32\x3e\x47\xb2\xbc\xaf\xb2\x76\x40\x69\x00\x5a\xdf\x38\xda\xad\xcc\x81\x6d\x86\x9b\x4b\xd9\x69\xd0\xac\x26\xd6\xa2\xd8\xfc\x83\xed\xf7\xc6\xcd\xe9\x9d\x4c\x70\x46\x5a\x74\xf4\x0f\xba\x5f\xf7\xcd\xbb\x6f\xc6\x6d\x41\x6b\x6d\x4e\x17\xa5\xa2\x43\xef\x2f\x4c\xdf\xfb\x47\x9a\xa5\x09\x16\xdb\x32\xfa\xbb\x4f\x03\x24\xbf\x41\x80\x43\x4a\x87\xe9\x83\xc4\x40\xa3\x18\xbb\x03\xb6\x54\x0f\x5f\x12\x91\xe1\xc2\xe0\xb8\x09\x4e\x6c\xcd\x7f\x98\xe0\x39\x29\x08\xe4\x86\x99\x56\x1d\xdb\x6e\x16\x61\x49\xc6\x25\xfc\x39\x28\x1d\x27\xad\x25\xdb\x76\x7f\xb6\x5f\xd5\xc8\x54\x9e\xea\x11\x0f\xd7\xe7\xd8\xc7\x2b\x06\x98\xf0\x0e\x2f\xd8\xc0\x8a\xdb\x6e\xed\x46\x79\xb3\x2a\x45\x03\x7c\x1c\xa3\x5c\x0c\xc0\x43\x8f\x6c\x26\xdf\xd1\x09\x3a\xaa\xaa\x31\xa5\xd6\x08\x3a\xfa\xe6\xa8\xfe\x83\x91\xef\x17\xdb\x24\xc9\xc4\x7c\x6c\x02\x73\x6c\x66\xca\xc2\x65\x03\x03\x6e\xab\x1f\xb0\x5a\x54\x5d\x15\x4e\xeb\x1d\xd6\x87\x0c\xf3\x6f\x7f\xcd\xb6\xfb\xd0\x5c\xe2\xda\x8c\xeb\x34\xca\xce\x6c\xb7\xad\xdc\xc2\xe5\xaa\xd9\xea\x6d\x6b\x10\x57\x50\x0a\xc2\xa4\x74\xda\x23\x13\x8d\x94\x9c\x6d\x73\xbe\x6d\x3d\x02\x07\xcd\x6b\x95\xb6\xa3\x02\x15\x58\x68\xdb\xd8\xfd\xe5\x36\xa2\x8d\x56\xef\x47\xdf\x6c\x29\x8a\xb3\xf5\x42\x37\x22\x98\xde\xf1\x1e\x85\xc5\x9c\xa8\xa1\xd0\x20\x66\xab\xcf\x1b\x6b\xd7\x4e\x46\x45\x0e\x27\x63\x1e\xe7\xd7\x49\x5d\x17\x74\x42\x99\x9a\x70\x31\x31\x1f\xf8\x80\x94\xd8\xd0\x16\x48\xd1\x9c\xf0\x52\xdd\x92\x84\xb3\xbe\x34\x07\xfb\x57\x51\xa2\x9b\xa3\xf3\x40\x6c\x30\xfd\xd4\xa9\x58\x2e\x19\xa4\x19\x11\xab\x6d\xed\x81\x60\xb9\x19\xad\x8a\x4d\x9f\x3f\x5e\xf9\x1e\x35\x82\x0c\xfa\xcd\x27\xf9\xc5\x4a\x27\x36\xaf\x66\x6e\x57\xb2\xf1\x23\x57\xa5\xda\xed\x03\x67\x55\xe0\x76\xe8\x2f\xed\x96\x0c\xd5\x97\xd9\xb0\x5a\xa9\xb0\x2a\x3b\xf7\xa0\x75\x36\x96\xab\xde\x9a\x0c\x33\x6b\x5d\xdd\xc2\xa7\x9a\xce\xef\x66\xbd\x0d\x50\xd0\x3b\xd3\x30\x8d\x30\xe0\x53\x00\xec\x2d\x78\x3a\x45\x96\x4c\x8e\x57\x48\x09\x4c\x8d\x73\x00\x27\xaa\x84\x44\x75\xac\x2c\x08\xd8\xd6\xca\xfa\xa7\xf5\xe5\xf4\x18\xfd\x9b\x0d\xfd\x84\x08\x25\x3f\x62\xa9\x7e\x2e\x52\xdc\x9b\xe0\xd4\x01\xf2\x4a\x05\xcf\xc5\x98\x2d\x8f\x8c\xa4\x9a\xa9\xdb\x8d\x30\xd4\xd0\xa3\xe6\x98\xa5\xa1\xb7\x46\x6e\xf0\x82\xb9\xe7\xa3\x3f\x3a\xd1\x5f\xd3\x37\xdb\x1b\xae\x77\xe1\xb4\x87\xd5\xb4\x31\xd3\xdb\x66\xa9\x25\x99\x00\x5a\x88\x91\xaf\xeb\x5e\x92\xb0\x99\x72\x96\x6e\x02\xda\xb4\x77\xd4\xea\xf2\xf5\x07\x4e\x10\x46\x0b\x2a\x15\x17\x36\x0c\x00\x9d\xe4\x05\x66\x92\xf6\x67\x81\x86\x03\x77\xce\xaa\x2f\xd7\x16\x02\xc1\x55\xc7\x5b\x7b\x3b\xa1\x21\xac\x20\x09\x17\x69\x35\xa5\x7e\xee\x56\x4f\xd3\xaa\x8d\xfd\x6f\xa5\xe7\xc3\x81\xe9\x39\x19\x96\xea\xae\xfa\x76\x7d\xf8\xa3\xb8\x6c\xfb\x42\xdb\xe5\xd6\xab\x70\x35\x13\x38\x73\xbf\xdc\xec\x71\xe3\x08\x33\xa3\x3e\xfb\xf3\xd6\x6d\xd7\xaa\x5e\xab\x79\xaf\x1e\xeb\x7c\xac\xde\x66\x63\xc9\x4f\x3d\xe3\x9c\x48\x89\xe7\xe3\xa6\x7a\x6a\x8a\x3b\xa3\xaa\xb8\xb3\xfd\x30\xa2\x2c\xa5\x09\x48\x8a\x0a\x4d\xd6\xc7\x55\xeb\xf1\xb8\x58\x6d\xbe\x82\x5a\x96\xba\xfc\xe8\xea\xf1\x79\x1f\x5d\xb1\xc0\x72\xdc\xf2\xaa\xb7\xe6\xdc\x17\x63\x1f\xc8\xa8\x79\x08\x82\xe5\xe6\x5c\x9a\xce\x3e\xdf\x0b\x4a\x66\xe8\x0c\xe7\x24\x3b\xc3\xf2\x39\x36\x1a\x38\xc7\x14\x91\xe9\x7c\x8a\x8e\x6f\x1a\xd1\x95\x4f\x5c\x5d\x6d\xee\x98\x33\x98\x32\xba\xfd\xdd\x87\xbd\xf8\x7e\x5c\xfb\xc6\xb7\x1e\x24\x36\xb6\xbd\xec\xa0\x37\x1d\x34\xb3\x8d\x2f\x38\xec\xed\xea\xab\xd3\x27\x0c\x02\x5f\xed\x50\xd2\x58\xff\x4b\x6d\xbf\xd1\x52\x80\x41\x96\xf8\xbd\xd5\xc1\x84\xaf\xfe\xf7\x19\xf8\x32\x43\xb6\x71\xe7\x37\x39\xb8\xbc\xea\xe3\xb7\x3d\x4a\xf4\xda\x4a\xef\x5a\x1a\x30\x78\xa0\x9a\x80\x26\xa8\x04\xae\xe7\x78\x76\xfb\x25\x8e\xda\xf3\xdc\x19\x99\xf6\xe0\x7a\x7f\xc7\x36\x82\x8a\x37\xc9\xe4\x90\x0c\xcf\x14\xfc\x79\xfa\x5c\x9f\x27\xa0\x7a\xee\xbe\xcf\x1a\x34\xd6\x74\xb5\xa7\x3d\xb3\x0d\x71\xed\xdf\x0c\x3a\xcc\xeb\xfb\xf0\x46\x71\x54\x08\xb2\x04\xb0\x1b\x03\x2c\xbb\x56\xde\xa5\x7e\x10\x6f\x37\x6b\x66\x63\x62\xa1\xdb\xe1\x65\x9b\xcf\xdf\xfd\x7e\xc3\x2d\x70\xbf\xde\xa2\x40\x0e\x1d\xae\x19\xe3\xe2\xb5\x83\xa9\xbc\x66\x8c\xf4\x72\x0e\xa5\xf5\xee\x44\x68\x8b\xfa\xb7\x13\xad\x3e\xe3\xbc\x3b\x3a\xc5\x4e\xf5\x07\x6e\x80\xf1\x9a\xf8\x49\xa2\xf9\x6a\x82\x25\xf8\x0a\xe1\xc7\x86\xd1\x6c\xf3\x71\x37\x6d\xf5\x9b\x2e\xa7\x83\x8c\xaa\xf6\x9d\x8f\xb1\xdc\xb2\xa4\x71\xce\x60\x4b\x9a\xf5\x48\x5a\x7b\xcc\x13\xdf\x72\x89\x9e\xaa\x04\x83\x19\xc3\xb7\xce\xf7\xbe\x6d\x63\x09\xa1\x37\x6d\x7b\x6d\x8e\x81\xdb\x15\x3d\x71\x5f\x12\xb1\x24\x69\xc3\x0f\x6b\x4b\x66\x37\x7f\xd2\x70\x97\x3b\xba\x76\xeb\xd1\x7f\xff\xcf\x3f\xfd\xbf\x00\x00\x00\xff\xff\xa9\x64\x25\x94\x00\xdd\x0a\x00") +var _operatorsCoreosCom_clusterserviceversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7b\x73\x24\xb7\x91\x2f\xfa\xbf\x3f\x45\xc6\xd8\x7b\x48\xae\xd8\xcd\x19\xbf\xee\xee\x1c\xdf\xa3\xe0\xce\x50\x32\xaf\x66\x38\x8c\x21\x25\x1d\x87\xac\xd5\xa2\xab\xd0\xdd\x58\x56\x01\x65\x00\xd5\x9c\xf6\xd1\xf9\xee\x37\x90\x40\xbd\xba\x9b\x64\x17\x00\x9a\x1c\x19\xe9\x08\x6b\xf8\xca\xc6\x33\x33\x91\xf9\xcb\x4c\x52\xb1\xef\xa8\x54\x4c\xf0\xd7\x40\x2a\x46\x3f\x69\xca\xcd\x57\x6a\x7a\xf3\x6f\x6a\xca\xc4\xc9\xea\xd5\xaf\x6e\x18\xcf\x5f\xc3\x9b\x5a\x69\x51\x7e\xa4\x4a\xd4\x32\xa3\x6f\xe9\x9c\x71\xa6\x99\xe0\xbf\x2a\xa9\x26\x39\xd1\xe4\xf5\xaf\x00\x08\xe7\x42\x13\xf3\x6d\x65\xbe\x04\xc8\x04\xd7\x52\x14\x05\x95\x93\x05\xe5\xd3\x9b\x7a\x46\x67\x35\x2b\x72\x2a\x91\x79\xf3\xd1\xab\x97\xd3\xdf\x4f\x5f\xfd\x0a\x20\x93\x14\xff\xfc\x9a\x95\x54\x69\x52\x56\xaf\x81\xd7\x45\xf1\x2b\x00\x4e\x4a\xfa\x1a\xb2\xa2\x56\x9a\x4a\x45\xe5\x8a\x65\xd4\xfd\xbd\x9a\x8a\x8a\x4a\xa2\x85\x54\xd3\x4c\x48\x2a\xcc\x7f\xca\x5f\xa9\x8a\x66\x66\x14\x0b\x29\xea\xea\x35\xec\xfc\x1d\xcb\xb7\x19\x2c\xd1\x74\x21\x24\x6b\xbe\x9e\x80\x28\x4a\xfc\x97\x5b\x02\xfb\xe1\x57\xf6\xc3\xdd\xba\xe1\xcf\x0b\xa6\xf4\x37\x77\xff\xce\x3b\xa6\x34\xfe\x5e\x55\xd4\x92\x14\x77\x4d\x03\x7f\x45\x2d\x85\xd4\x17\xdd\xa0\x26\x90\xa9\x55\xf7\x2f\xf7\x4b\x8c\x2f\xea\x82\xc8\x3b\x38\xfd\x0a\x40\x65\xa2\xa2\xaf\x01\x19\x55\x24\xa3\xf9\xaf\x00\x9a\xcf\x31\x8c\x27\x40\xf2\x1c\x37\x90\x14\x97\x92\x71\x4d\xe5\x1b\x51\xd4\x25\x6f\x3f\x36\xa7\x2a\x93\xac\xd2\xb8\x41\xd7\x4b\x8a\x2b\x05\x62\x0e\x7a\x49\xe1\xcd\xd5\x77\xf8\x6b\x00\xff\xad\x04\xbf\x24\x7a\xf9\x1a\xa6\x66\xc1\xa7\x39\x53\x55\x41\xd6\xe6\x83\xdd\x6f\xd8\x9d\x7b\x6b\xbf\xef\xbe\xa7\xd7\x66\x74\x4a\x4b\xc6\x17\x77\x7d\x9e\x1b\xee\xc3\x1f\xb9\xea\xed\x44\xf3\x71\xdf\x0d\xbe\xb7\xcf\xc7\x35\xd3\x23\xe6\x93\x40\x2f\x89\x06\xbd\x64\x0a\x04\xa7\x20\x69\x55\x90\x8c\xaa\x3b\x06\xb0\xf1\x63\x3b\x82\x8f\xc3\x6f\xee\x18\x42\x9f\x8d\x26\xba\x56\xd3\x6a\x49\xd4\x70\xd9\x2e\x7b\xdf\xd9\x62\x61\x7f\x65\xf5\x8a\x14\xd5\x92\xbc\xb2\x27\x23\x5b\xd2\x92\xbc\x76\x7f\x21\x2a\xca\x4f\x2f\xcf\xbf\xfb\xdd\xd5\xe0\xdb\x30\x9c\xfd\xce\x33\x0b\x4c\x99\xa5\xc0\x5b\x0f\xcd\xb5\xc7\xbd\x58\x57\x14\xfe\x6b\xe7\xdf\x5c\x55\x34\xfb\xaf\x69\xfb\x21\x76\xbc\x62\xf6\xdf\x34\xd3\xed\x37\x25\xfd\x5b\xcd\x24\xcd\xbb\xb1\x4c\xa0\x11\x21\xbd\x6f\x99\x75\x6d\xbf\xac\xa4\xb9\xbc\xba\xbd\x98\x96\x7a\xb2\xab\xf7\xdd\x8d\xb9\x1d\x98\xe9\xbb\x19\xe5\x46\x68\x51\x85\xa7\xc9\x9d\x19\x9a\xbb\x15\xb3\xa7\x8c\x29\xb3\xd5\x92\x2a\xca\xad\x18\x1b\x30\x06\x3c\x1e\xdc\xcd\x68\x0a\x66\xf2\x54\x2a\x73\x65\xeb\x22\x37\xb2\x6e\x45\xa5\x06\x49\x33\xb1\xe0\xec\xef\x2d\x6f\x05\x5a\xe0\x87\x16\x44\x53\xa5\x37\x78\xe2\xdd\xe3\xa4\x80\x15\x29\x6a\x7a\x0c\x84\xe7\x50\x92\x35\x48\x6a\x3e\x05\x6a\xde\xe3\x87\xbf\xa2\xa6\xf0\x5e\x48\x0a\x8c\xcf\xc5\x6b\x58\x6a\x5d\xa9\xd7\x27\x27\x0b\xa6\x1b\x99\x9d\x89\xb2\xac\x39\xd3\xeb\x13\x14\xbf\x6c\x56\x1b\xb1\x77\x92\xd3\x15\x2d\x4e\x14\x5b\x4c\x88\xcc\x96\x4c\xd3\x4c\xd7\x92\x9e\x90\x8a\x4d\x70\xe8\x1c\xe5\xf6\xb4\xcc\x7f\x2d\xdd\x76\xab\x83\xc1\x58\xb7\xce\x9f\x25\x14\x8e\xf7\xec\x80\x11\x8c\xf6\x34\xd9\x3f\xb5\xb3\xe8\x16\xda\x7c\xcb\xac\xce\xc7\xb3\xab\x6b\x68\x3e\x1a\x37\x63\x73\xf5\x71\xdd\xbb\x3f\x54\xdd\x16\x98\x05\x63\x7c\x4e\xa5\xdd\xc4\xb9\x14\x25\xf2\xa4\x3c\xaf\x04\xe3\x1a\xbf\xc8\x0a\x46\xf9\xe6\xf2\xab\x7a\x56\x32\xad\xf0\x5c\x52\xa5\xcd\x5e\x4d\xe1\x0d\x2a\x32\x98\x51\xa8\xab\x9c\x68\x9a\x4f\xe1\x9c\xc3\x1b\x52\xd2\xe2\x0d\x51\xf4\xd1\x37\xc0\xac\xb4\x9a\x98\x85\xdd\x6f\x0b\xfa\x3a\x78\xf3\x97\x37\xee\x1f\x40\xa3\x17\xef\xd8\xaf\x3b\x6f\x36\xe4\x34\x2b\x88\xb4\xea\x1d\x34\x2d\x0a\xf8\xf0\xee\x3d\x2c\xc5\xad\x39\xdf\x8c\x2b\x4d\x50\x53\xf7\xc9\xdc\x16\xa7\x77\xad\x48\xcd\x08\x87\x92\x70\xb2\xa0\x40\xaa\x4a\xc1\x5c\x48\x20\xb0\x60\x2b\xca\x9b\x3b\x39\xdd\x67\x12\xbb\x04\x09\x58\xc1\xbe\xa5\x80\x9a\x9f\xec\x1a\xe2\x6e\xd1\x62\x87\xbe\x61\xcb\xdc\xb9\x62\xa7\xdd\x6f\xe2\x39\xe7\x50\x73\xa5\x65\x8d\xdb\x9b\xc3\x0d\x5d\xbb\x23\x5f\x92\x0a\x94\x16\xe6\x9b\xb7\x4c\x2f\xb7\xb8\x02\x90\xfe\x05\x20\x1a\xcf\xf5\x8c\x82\xa2\x1a\x66\x6b\x30\xe6\x19\x8a\x0a\x2d\x44\x81\x52\x05\xb9\xa1\xc8\x90\x54\x4b\x46\x57\x74\x17\x53\x39\x63\x5a\x12\xb9\x6e\xcf\xc9\x74\xeb\xb7\xee\x5c\x66\x64\xd0\x33\x15\xee\x5a\x2e\xb8\xfb\x74\x82\x15\xd6\xce\x46\xc9\x5b\xd3\xf1\xc1\x75\xbd\x3c\x77\xa7\xb0\x33\x37\x95\x3b\x85\x54\x01\x29\x8a\xc6\x36\x68\xed\x56\xfc\x9c\x1d\x23\xb3\x47\x2e\x07\x21\xdb\x73\x63\x16\xb4\x7f\x3c\x67\xd4\x08\x22\x49\xb8\xf9\xc1\xce\x4b\x30\x72\xd5\xee\x3e\x5a\x86\xc4\x2d\xdf\x3c\xbb\x43\xae\x44\xca\xd6\x5c\x1a\x12\xd3\xb4\xdc\xc9\xf3\xde\x15\x6c\xbf\x6d\x06\xb6\x62\x39\x35\x4b\xa9\x09\xb3\x07\xc9\xdc\x64\x32\x13\xf5\xf6\x34\x1a\x32\x2b\xdb\xfc\x69\x0e\x2b\x46\x80\x2c\x16\x92\x2e\x76\xe9\xc9\xbd\xd6\xc7\xd2\xee\x6b\xdc\xd1\xc4\xda\xef\x77\xfe\xd4\x08\xc9\x3b\x7f\xc8\x37\x85\x40\xff\x87\x43\xb3\x71\x93\xee\xdf\x3d\x4b\x24\x33\x73\x6f\x96\x56\xc8\x7b\x7e\xf5\xe1\x5d\xb5\x74\xef\xde\x5a\x1a\xee\xf0\xc6\x10\xdc\x4f\x67\xe6\x7e\x74\x02\x7b\xa7\x58\xd8\x9e\x49\x27\xa2\x67\x14\x2a\x2a\xe7\x42\x96\xe6\xd2\x70\x20\x90\x59\x4b\xb0\x15\x4f\x28\x4c\x79\x76\x3f\xe3\x3d\xf6\xdf\xd2\x43\xa7\xc0\xd2\x04\x2a\xb2\x53\x6c\x76\xb4\xcf\xb6\x59\xea\x2f\xe3\x03\xbf\x7a\xaf\x64\xdb\xe2\xdb\xe9\x9f\xa8\x7c\xcd\xd4\xa3\x32\x44\x9d\xf4\x30\xc7\xc1\x71\xfb\x48\x6e\xdf\x53\xa5\x8c\xfa\x46\x8b\x4e\x92\x5b\xa0\x3c\x13\x46\x24\xfc\x7f\x57\x1f\x2e\x2c\xd3\x6d\x41\xb9\x4d\xe7\x1a\x58\x59\x15\xb4\x34\x86\x1c\xbc\x27\x52\x2d\x49\x41\x25\xea\xb2\x6f\x79\x39\xf8\x3a\x23\x77\xdd\xd2\x3e\x19\x6b\x4d\xd1\xdc\x48\xb3\x9c\x16\x64\x6d\x07\x94\xd3\x4c\xe4\x46\xb2\x0b\x09\x95\x31\xa5\xcb\xaa\xd6\x14\x08\xfe\x74\x0f\xae\x38\x3b\xc6\x17\x0f\xcf\x69\xc4\xd2\x83\xb1\x7b\x4a\xa2\x5f\xc3\x6c\xad\x1f\xba\x9b\x9f\x26\xf9\x7e\x12\xa6\x3f\x8c\x87\xe4\x8c\xa5\x3d\xa4\x4d\x9f\xe9\x03\x73\x33\xc6\x2e\x61\x9c\xca\x4b\x21\xf5\xc3\xa2\xd0\x3c\x7c\x16\x54\xde\xf3\x7b\xcd\x22\x31\xae\x7f\xf7\xdb\x3b\x7f\x2f\xa7\x55\x21\xd6\xe6\x1c\x3d\x74\xe7\xf6\x9a\xc5\x9e\x72\x61\x3f\x5e\xfb\xc9\x82\xbd\x78\x59\x37\x56\x28\x97\xed\xc7\x9a\x07\x13\x1e\x63\x3e\xed\x23\xf3\x09\x94\xe6\xe5\x79\xe3\xd1\xf8\x48\xe7\x54\x52\x9e\x39\x79\xf6\x4d\x3d\xa3\x92\x53\x4d\x55\x3b\xbe\x07\x6e\x07\xba\x43\x50\xee\x18\x7b\x72\x53\x4d\xfe\x63\xb5\xe3\x3d\xb6\x50\xf3\x2b\xf7\x58\x44\xcd\xaf\xdc\x6f\x17\x59\xda\x5f\xcd\x3e\x74\xe0\x2c\x8d\x90\x9d\x0f\x1d\xbe\xd1\x0c\x57\xbb\x9c\x48\xde\x3c\xcd\xeb\xfa\x49\x2d\xc2\xab\xc1\x00\x06\xf6\xe0\x9c\xd1\x22\x07\x66\xcc\xb9\x81\x7f\x6d\x37\xcd\x0a\x91\xdd\x38\x8f\xe8\xc7\xb7\xa0\x84\x35\x0f\xcd\x4b\xc1\x98\x88\x99\xe0\xaa\x2e\x29\xb0\xfb\xcf\x6e\x32\x01\xe3\xf1\x4d\x26\xe0\x03\x94\x4c\xc0\xde\x30\x9e\xc2\x04\xb4\x71\x8c\xa7\x95\x7f\x1b\x43\xb8\x53\x02\xe2\xef\x25\x19\x98\x64\x60\x92\x81\x0f\x73\x4d\x32\x10\xf6\x9d\xdb\x1e\xf6\xe4\x03\x7c\xee\x17\x03\xc9\x3d\xdc\xa3\xe4\x1e\xde\xa4\xe4\x1e\xbe\x87\x92\x5e\x4c\x7a\x31\xe9\xc5\xe4\x1e\xf6\x9f\x45\x72\x0f\x27\xf7\x70\x72\x0f\x27\xf7\xb0\x27\xcf\xe4\x1e\xde\x35\xc9\x64\x02\xc6\xe0\x9b\x4c\xc0\x07\x28\x99\x80\xbd\x61\x24\xf7\x70\x72\x0f\x27\x19\x98\x64\x60\x92\x81\x0f\xfd\xee\x73\x72\x0f\xdb\x07\x44\xf3\x7e\xd8\x1f\x4b\xfd\xe2\xae\xfc\xbd\xdd\x80\xea\x37\x1f\xdf\xaa\x06\x34\xbd\x63\xa0\x61\x30\x6a\xf8\xeb\xae\x83\x7a\xde\x7e\x32\xa0\x27\x19\x53\x3c\x8c\x2c\x36\xdf\xfd\x70\xcb\x69\x8e\x69\x76\xc7\xc0\xb4\xf9\x05\x73\x2d\x58\xc6\x74\xb1\x6e\x87\x32\x7d\xb1\xc5\xf6\xb9\x03\xb4\xdf\x7c\x7c\xbb\xb7\xeb\xdd\x2c\xc4\x9d\x87\xc6\x6c\xd8\x1d\x3f\x8c\xe2\x65\x4f\x7e\xf4\xe4\x47\xef\x51\x32\x20\x92\x01\x91\x0c\x88\xa7\x31\x20\x9e\xab\x07\x3a\xf9\x8e\x93\xef\x38\xf9\x8e\x07\x94\x7c\xc7\xbb\x29\xf9\x4d\x06\x94\xcc\x9e\x64\xf6\x3c\xf4\x9b\xff\xf4\x66\x4f\xf2\x1d\xdf\x3d\xd1\x24\x03\x63\xf0\x4d\x32\xf0\x01\x4a\x32\xb0\x37\x8c\xcf\xcf\x77\x0c\xff\x40\x68\x71\x72\x6c\x26\xc7\x66\x72\x6c\xb6\x94\xb4\x5b\xd2\x6e\x0f\xfd\xe6\x3f\xbd\x76\x4b\x8e\xcd\xe4\xd8\x4c\x8e\xcd\xe4\xd8\x4c\x8e\xcd\x64\xf6\x44\xe3\x9b\xcc\x9e\x07\x28\x99\x3d\xbd\x61\x24\xc7\x66\x72\x6c\x26\x19\x98\x64\x60\x92\x81\x0f\xfd\xee\x73\x72\x6c\xde\x7b\x1f\xef\xfb\xbb\xfb\xee\xdb\x3d\x7f\xc7\xb2\xbb\x3f\x68\xf7\xea\xdd\xb9\x5a\x0f\x88\xb9\xfb\x84\xdb\x04\x66\x44\xd1\x3f\xfe\x7e\x50\x39\xbf\xff\xe3\x92\xe6\x8c\x98\x0f\xd8\xf1\xd3\x87\x84\x5d\xc7\xfa\xae\x3d\x79\x70\x5f\xdb\x8f\xf7\xe0\xe0\x4a\x75\x3f\x00\x6a\x36\x1b\x97\x9f\xdb\x5f\xbd\xd2\x92\x68\xba\x58\xf7\xca\xc3\x23\x72\xb8\xd3\x46\xfc\x9e\x06\x1e\x43\x6a\x9d\x94\xb7\x4b\x2a\x29\xb2\x71\x03\x32\xa3\xb5\x1f\xc3\x14\xbe\x07\xd8\x9c\xd1\x7c\x64\x61\xe8\xbb\x37\x75\xd2\xf2\xdf\xfa\xd1\xfd\x1b\xb6\x5d\xd3\x7d\xe7\x82\x35\x8b\xf4\xd6\x7a\xe1\xdf\xb6\xa9\xd1\x9b\xab\x56\x11\x69\xe4\xa1\xf3\xd6\xdf\xb1\x7f\xa8\xe2\x7b\x3c\x36\x76\x62\xb7\xd8\x7b\x50\xaf\xdf\xaf\xcf\x27\xbd\x7c\xee\xdd\xe3\x7a\x58\x8d\xbb\x9e\x29\x97\x54\x96\x4c\xa9\xdd\xe0\xf9\xe1\x70\xef\x17\x89\x0f\x8a\xc2\x3b\xf6\xa0\x99\x47\x6f\x20\xad\xe1\x75\x6f\x4c\xc4\x90\x9c\x91\x0c\x64\x5d\x18\x13\x8d\xe7\xe0\x8a\xab\x03\xc9\x32\x51\x73\x0d\x9c\xd2\xdc\xfa\x57\x76\x9d\xde\x07\xc5\xec\x83\x76\xd7\x3e\x56\xd7\xc4\x8e\xef\xde\xdf\x70\xe3\x3e\xb5\xc3\xde\x2a\xda\x3f\xa4\x7d\x2d\x34\xfc\xd8\x87\x74\xd3\xfe\xca\x6e\x4f\x55\x37\xd8\xe5\x4b\x51\xb0\x6c\xfd\xb1\x2e\x28\x2c\x45\x91\x2b\x6c\x16\x61\xf4\x76\x1b\x26\x69\x4d\xec\x3d\x74\x28\x81\x0a\xf9\xe1\xcc\x8e\x61\x56\x6b\xc8\x05\x55\xc0\x85\x6e\xca\x2a\xf4\x3f\x60\x1f\x8e\x18\x78\xbb\x5d\xda\xc6\x24\x86\x2d\x90\xaa\x2a\x18\xc5\xd0\x9c\x90\x70\xbb\x64\xd9\xd2\x76\x47\xaa\xc8\x83\x1e\x3d\x43\x3b\x18\xed\x6b\xf9\xec\x61\xe6\xc3\xde\xa6\x3e\x34\x1e\xb9\xd9\xc3\x4b\xbb\xbf\xcd\x0f\xb6\xc6\xd1\xd7\x52\xd4\xd5\x5e\xbf\xbc\xed\x3f\xb5\x7f\x6b\x34\x87\xde\x68\xa7\xd4\xfc\x70\x2f\xb6\xe0\xc2\x6c\x76\xdf\x2d\xb3\xd6\x31\x3c\xc5\x44\x9a\xb2\x2e\x34\xab\x0a\x64\xbc\x27\xcf\x85\x1d\x1c\x91\xb4\xd3\x6b\xc7\x40\xf8\xba\x89\xed\xb9\x06\x29\x34\x07\xb2\x30\x9f\xfb\xf0\x76\x59\x12\xbc\x9d\x26\xe5\x75\x49\x8d\x04\xca\xbb\x01\xe3\xc3\x92\xaf\xcd\x48\xef\x2d\xe5\xb4\x49\xb7\xac\x28\x8c\xdd\x4e\x8a\x42\xdc\xee\x52\xc1\xbb\x68\x8c\x81\x0b\x63\x8c\x5c\x18\x6b\xc4\x03\x70\xc1\x1b\x87\xfa\xb7\x1f\xdf\xf9\x1c\xa9\x8b\x21\x07\xd7\x63\x87\x6a\xb3\xdc\x15\x91\x9a\x91\xcd\x76\x2c\x77\x51\x2d\x0b\x65\x4f\x15\x31\x0f\x21\xd9\xb4\x34\x5a\x92\x15\xaa\x14\xaa\x6c\x5f\x1c\xf8\xd7\x7d\xa4\x15\x60\xcf\x91\x76\x6b\xac\xbc\x12\xbc\x58\x03\xb1\xa7\x75\x5e\x17\xc5\x31\xcc\x19\x27\x46\x25\xd1\x7d\xb7\xdc\xe5\x82\x99\xd7\x2c\x5c\x31\x9e\x51\xb3\x86\x93\xd6\x58\xc3\x35\x30\x9f\xcb\xc5\xbe\x67\xb3\x15\x6f\xf9\xb1\x6b\x1c\x64\x7d\x1d\xca\x0d\xd7\x08\xb2\x8c\xcc\x0a\x6a\x1e\x5d\x7b\xf2\x74\x46\xe6\x47\x51\x60\x40\xc4\x85\x4a\x72\xdb\x93\x88\xf4\x7f\xfc\x1f\x8c\xef\xf7\x3c\xb4\xf4\x11\x95\x7d\x46\x38\x50\xa6\x97\xe6\x7d\x5b\x55\xc5\xda\x88\x6b\x73\x77\xba\x0b\x75\xa8\xea\xec\x7e\x4f\x47\x47\x44\xc1\x8b\x4a\xe4\xea\x85\x11\xf9\x2f\x14\xcd\x24\xd5\xea\xc5\x91\xf9\x6a\x73\x6d\xf7\xe4\x68\x76\xc7\x8d\x01\xb9\x9f\x90\x8a\xbd\x38\x3a\x06\x3c\x04\xd8\x54\x49\xe8\xe5\xe7\x77\x5b\x9b\x95\xe8\x75\xe6\x7b\x88\x86\xde\x8f\xfe\xdf\xbb\x2e\x41\xa2\xb2\x4d\x75\x8c\xae\x7d\xf0\x29\xdf\x50\xc1\x14\x5e\x70\x3c\xba\x4d\x9b\xba\x6d\xc5\x0b\x70\xba\x8f\x19\x60\x88\x96\x95\x5e\xa3\xdc\x28\x29\xe1\x8e\x27\x5d\x51\xb9\xd6\x4b\xc6\x17\x38\xd8\xcf\x55\xc8\xee\x15\x30\xed\x68\xe7\x96\x39\xc1\xda\x2c\x7c\xcb\x72\x6f\x65\xcd\xd4\x8e\xed\x69\xb8\x9f\x16\x45\xef\xf1\xb5\xef\xb5\xc5\x3f\x6a\x54\xfe\x67\xb7\x2b\x68\x9b\x79\xec\xc8\x77\xe6\xef\x86\xbb\x61\xbf\x65\x55\x97\x11\x87\xfb\x0e\x58\xc0\xe9\xbb\x77\xb6\xed\x9c\x5b\xc7\x6f\x18\xcf\xed\x5b\xea\x54\xdb\x9e\x6d\xf4\x23\x35\x53\x42\xf3\x67\xdf\x9d\x69\x8a\x9c\xe5\x56\x5b\xb9\xad\x9f\x02\x0e\xd4\x7b\xaf\xb1\x13\xdc\xe7\xb4\xcf\xdb\xcf\xba\xfd\x9e\x63\xf7\xb2\xee\xbd\xfc\x9f\xf6\xc1\x8e\xdd\xf0\x06\xf6\xb7\x91\xc6\xc7\x0f\x07\x88\xcd\xe9\x2a\xc8\x8c\x16\xb6\xf1\x9d\xf9\xcb\x6e\x52\x70\xfa\xee\x7d\xdb\x4b\x52\x52\x72\xaf\x4a\x88\xfa\x4c\x7f\x00\xe0\x30\x79\x68\x62\xfb\xbe\xa2\x70\xea\x63\x82\x2b\x70\x45\xb5\xbd\xef\x25\xa9\xcc\x75\xb7\x1c\x6c\xa4\x60\x18\x07\x78\xf0\x04\xbf\xc3\x75\x7f\xe8\x12\x8d\x78\x8f\xee\xdb\x15\x6f\xd7\x07\xec\x71\x85\xf6\xc1\x6c\xec\x7f\x1f\xef\xf4\x0f\x76\x34\x58\xf8\x8d\xc3\xee\xde\xac\xee\x65\x98\x59\x37\x86\x98\x3f\x3c\x5b\x3c\xe1\xca\x16\x8a\xa0\x4b\xb2\x62\x42\x36\xaf\xc1\xee\x23\x22\x6e\xca\xbe\x2e\x82\x09\x28\x5a\xd0\x4c\x3f\x68\xd6\x4f\x40\xd3\xb2\x2a\xee\xbf\x8d\x30\xd2\x95\x50\x32\xfe\x91\x92\x7c\x7d\x45\x33\xc1\xf3\xbd\xc4\xef\x60\x77\xde\x33\xce\xca\xba\x04\x5e\x97\x33\x8a\x0b\xaa\x2c\x27\x14\x2b\xe8\xba\xd9\x4b\xa2\x13\xe0\xf4\xb6\x58\x3b\x71\x93\x43\x25\xf2\x46\x02\xcd\x28\x48\x33\x44\xec\x54\x29\x6a\x6d\x1e\xe9\x7b\xf1\x14\x73\x60\x5a\x75\xd5\x3e\x21\x93\x44\x19\x43\xf2\x18\x07\xc7\xb4\x51\xbe\x33\x8a\x71\x60\x96\x53\xb9\xb3\xc0\xc8\x8e\xa1\xae\x08\x2b\xcc\x53\x6c\x0a\x6f\xe9\x9c\xd4\x05\xb6\x6a\x85\x97\x70\x68\x06\xdd\x78\x03\x7c\x99\x9a\xa7\x8a\x12\x82\x9b\xff\xda\xfa\x22\x38\xf9\xa3\x7d\xdc\x5e\x78\x38\x1f\xae\x56\xda\xd0\x7e\x55\x4b\x1b\xaa\x48\xad\xf6\x71\x78\x6d\x1c\x90\x73\x9e\x9b\x5b\xda\x7f\x21\xf4\x14\x0d\x53\x8e\xef\x3e\x26\x85\x9d\xdf\x4c\x88\x82\xee\x11\x4b\xad\xa4\x58\x48\xaa\xd4\x5b\x4a\xf2\x82\x71\xea\x7b\xc2\xaf\x97\x14\x4a\xf2\x09\x4f\xb9\x66\x25\x35\xe6\x54\xff\x8c\x93\xde\x7c\xf6\xb3\x8b\x04\x94\xe4\x86\xb6\x03\x84\x19\x9d\x63\x13\x5f\x5c\x8e\xee\xdc\xd8\xd3\xb9\x17\xcb\x39\x61\x05\xcd\xa7\x38\xd6\xde\xea\x76\x3d\xef\xed\xb1\x34\x5f\x33\x5e\xef\xc7\x53\x0b\x33\x42\x74\xb8\x58\xf6\x7d\xab\x07\xed\x07\x62\x18\x5a\xcd\xb3\x17\x47\x73\x7f\x81\xc0\xe5\xc6\xc6\x9c\x7d\xca\x6c\x88\x40\x52\xa2\x04\x6f\x6e\xd0\x5e\x2c\x55\x2d\xe7\x24\x6b\x6c\xdc\xc1\xe4\x5d\x23\x73\xb8\x10\xda\xb5\xb0\x6d\x16\x7c\xcf\xc1\x16\x05\xb8\xd6\xcb\x54\x69\x56\xa2\x58\xca\x6b\xd9\x34\x89\xc6\xb3\x30\x7a\xf3\xbb\x03\x3f\x10\x1e\x7f\x7c\xf9\x72\x2f\xab\xfa\x71\xaf\xb8\xa4\xe8\x65\x1a\x7f\x47\x2e\x5a\xe9\xdf\xa8\xd8\x4a\xe4\xca\x9c\x47\xe6\x5e\x49\xd8\xfb\x7a\xaf\x21\xe3\xc9\xcb\x99\xd2\x8c\x2f\x6a\xa6\x96\x30\xa3\xfa\x96\x52\x0e\xf4\x93\xad\xb3\x04\x7f\xa7\x52\xe0\x01\x34\xdb\x73\x4f\xe8\x73\x17\xf5\x17\xfd\xd5\x73\x58\xf1\x15\x53\x4c\xf0\x3f\x33\xa5\x85\x5c\xbf\x63\x25\xbb\xb7\x20\x75\x43\x5b\x12\xaa\xd3\xbf\xa2\xc8\xb1\xe3\x3f\xcb\xc8\x15\xb5\x13\x95\xd4\x28\xc0\x7d\xd7\x1e\x5d\x2c\x60\xe4\xc6\x8c\x64\x37\x3b\x36\x71\x63\x83\xf6\xe2\xbb\xef\x26\xb6\x1b\xb4\xef\x68\x5f\xbd\x7c\xfa\x5d\x6c\x0c\xb8\xd1\x3b\x87\x2f\x81\xf6\xcf\x51\x9d\xd8\x8b\x73\xf6\xc9\xae\x6f\x7f\x27\xf7\x13\x5b\x4b\xa1\x28\x32\xb1\x01\x14\x64\xdd\x84\x5f\x99\x6a\xcd\x13\x23\xc1\x04\xdf\xd3\x75\x44\xe6\xf3\x21\x97\x4e\xe8\xe1\xdb\xa7\xac\x95\x86\x92\xe8\x6c\xf9\x60\xb0\xb8\x21\x63\x2a\x35\xe6\xec\x81\x72\x4f\xd1\xfd\x77\x72\xcf\x30\xdd\xd8\xb0\x1a\xd8\x59\x9c\x7d\xaa\x8c\x9e\xb8\x3f\x1e\x3f\xa4\xc1\xb6\x6e\x32\x19\x3a\x8a\x70\xae\x7b\xb2\xed\xce\x56\xf3\x9e\x40\xf5\x6b\x35\x7d\xff\x3b\x66\xb7\xf7\xe6\x79\x7a\xf1\x76\x5f\x79\x39\xde\x8d\x33\xd2\x91\xb3\x19\x9c\xb4\xcb\xb3\x73\xda\x7b\x73\x84\x26\x00\xe5\x78\x0c\xa3\x94\xf8\x66\x57\xc7\x40\xe0\x86\xae\x8f\x47\x30\x45\x9b\xa7\x57\x60\x10\xd9\x4a\x5a\x38\xeb\x96\x62\x7f\x7d\xf2\x40\x12\xc7\x90\xec\x58\xf6\xdd\x8a\xd1\xa7\xdf\xd2\xfe\xc1\xea\x86\x26\x66\x2a\x23\x7e\xbb\x59\x92\xbd\xff\x64\xec\xb5\xb4\x74\x43\xd7\x63\x7e\x7d\xe3\x68\x99\xdd\x71\xde\x03\x7b\xc6\xcc\x37\xcc\x1e\x8e\x62\x69\x3d\x09\xed\xd1\x1a\x83\x30\x18\x30\x19\xe7\xa7\x6e\xa8\x59\xe8\x80\x65\x68\x8f\x6f\x0f\x68\x85\x57\xe1\x60\x5f\x3f\x70\x43\x78\xf4\x8d\x7c\x5b\xb2\x0a\x0d\x87\x26\xe4\xeb\x4e\x35\x7c\x47\x0a\x36\xe6\x36\xf4\x67\x68\xf5\xd7\x39\x3f\x36\x06\xbc\xf9\x0f\xaa\x44\x35\xf2\x7e\x19\x7a\x2b\xa8\xba\x10\x1a\xff\xfe\x1f\xb2\x49\x76\xfa\x01\x5b\x64\x19\xb8\xd8\x1c\x4a\x5e\x74\xac\x8c\x1d\x47\x37\x96\x69\x53\xd3\xb4\xdd\x7c\xa6\xe0\x9c\x83\x90\x6e\x75\x3d\xae\x80\x1b\xa4\x1d\x1e\x5a\x00\x33\x1b\x06\xc7\x28\xde\xb8\x85\x86\x5d\xe3\x73\x1b\x2e\xe4\x60\x07\xa3\x0d\xd5\x0e\x13\xad\xdb\x91\x2c\x2d\x1f\xf4\xcc\x54\x05\xbe\x3e\xdd\xb3\x90\x34\xb0\x36\xf6\x50\x76\xd6\x26\x95\x54\x2e\x10\x4f\x90\xed\x19\x91\x6e\xa7\x37\x5a\x3b\x5b\x1a\xa9\xa3\xfb\x1f\x36\xe2\x1c\xa2\x21\x64\xdd\xdd\xfe\x86\x94\xfd\xfb\x81\xf3\xfd\xff\x18\xcd\x8d\xbb\xfa\x7f\xf7\x57\x39\x84\x49\x35\x85\x53\x50\x8c\x2f\x0a\xda\xe7\xd1\x78\x0f\x7a\x1f\xb7\x37\x5b\x33\x22\xa6\xc0\xa8\xd8\x15\x29\x28\x47\xa7\x22\xe1\x40\x6d\x34\xc0\x8c\x76\xd3\x1c\xdc\xff\x08\x5b\x6b\xde\xe8\xa9\x16\x0e\xf2\xe2\x86\xae\x5f\x1c\x6f\x5e\x96\xbd\x39\xbe\x38\xe7\x2f\x8e\xd1\x92\xd9\xba\x18\xad\x81\x84\x88\x93\x17\xf8\xb3\x17\xfb\x9f\xc6\x5d\x16\xa9\x8f\xa5\x39\xca\xb8\xf1\x8b\x7c\x0c\x3f\x70\xcf\xf3\xdc\x20\x56\xbd\x9e\xe7\x03\xbf\x94\xc3\x6d\x6b\x01\xb5\xa2\xf6\x7d\x8e\x72\x64\xaf\x71\xd3\xe6\x65\x88\x6f\x3c\x74\xa9\x71\x7a\x8b\x6f\xb9\x67\xf0\x7c\x92\xa2\x28\x18\x5f\x7c\x5b\xe5\x44\xef\x91\x96\x63\x69\xb0\x5a\x07\x1f\x2d\x0b\xa8\x91\x87\x39\x95\x73\xb6\x80\x8a\x48\x52\x8e\x30\x94\x2f\x5d\xd5\x6e\x3c\xcb\x6c\xde\x8f\x22\xb9\xf5\xbf\x5e\x57\x14\xfe\x5f\xf8\xd8\x1f\xf1\xfe\xfc\x27\x93\x09\x5c\x7f\x78\xfb\xe1\x35\xd8\xbf\xb4\xef\x62\x2d\x60\x2e\xd0\x7d\x22\x6a\x69\x86\xbe\xa2\x7c\x6f\xf7\x28\x58\xbf\x83\xd9\xca\x0f\xf3\x63\xb8\x5d\x12\x4d\x57\x54\xc2\xad\x39\x3e\x19\xcb\x69\x1b\xb1\x98\x1e\x3c\xde\x8d\xf2\xb1\xcc\x4b\xf2\xe9\xaa\x96\x8b\xbd\x37\x1c\xb6\x36\xbd\xef\x64\xef\x5c\x59\xe6\x88\x8f\xd3\x86\xbd\xaa\x2f\x2a\x5b\xd2\xbc\x2e\x68\x0e\x64\x26\x56\xb4\x1f\x00\x1c\xc5\x73\x38\x1c\x34\x6a\x6b\xda\x7c\x88\xb1\xcf\x66\x4a\x14\xf5\xde\xa8\xa9\x01\xd3\x43\xfa\xe9\x35\xfc\x01\x41\x6e\x04\x2a\x2a\x33\xca\x35\x59\xd0\x9e\x23\x75\x14\x57\x14\x09\xc8\xf3\xd5\xcb\x7f\x39\x72\x9e\x3b\x33\x52\xe7\xc7\x7e\x69\x6e\xc2\x7b\xf2\xe9\x5b\xde\x86\x9b\xc6\x19\x0d\x0a\x5e\x4e\xe1\xd4\x4d\xb8\x99\x04\x7e\x46\x91\xd5\x05\x7a\xc8\xe7\x52\x94\xe3\x06\xdd\x4d\x7b\xb6\x06\x29\x6a\x84\x22\x42\x5d\x0d\x3c\xe4\xa3\x58\xfe\xf6\x0f\xff\x32\x85\xb3\x4f\xa4\xac\x0a\xfa\x1a\x6e\x97\xd4\x01\x60\x98\xc2\x17\x8a\x16\xf0\xbb\x97\xff\x32\xce\x90\x44\x68\x05\xbd\xed\xf9\xe3\xba\x73\x46\xcc\x21\xab\x2b\x60\xa5\x4d\x34\xa2\x7b\x83\x7f\x2c\xb9\x01\xd2\x46\x7a\x36\xa2\x4f\x69\x22\xb5\x3a\x06\x44\x30\x8e\x7e\xa8\x62\x8c\x42\x68\x52\x6c\xf8\x86\xd1\xe7\x4a\x6f\xed\x61\xc9\xc7\x2d\xac\x39\x47\x14\xc3\x35\xf0\xea\x77\x2f\xff\x65\xdb\xe1\xff\xe1\xa1\x3a\x4a\x9b\x64\x46\x84\x23\x41\x80\xef\x8c\x52\x0e\x37\xac\x28\x68\x7e\xbc\xb1\xdc\xa3\xb8\x6e\x6d\xcd\xbc\x96\x7a\x49\xe5\x31\x50\xae\x9a\x10\xce\xd8\xf5\xdc\x58\x4b\x1c\xb5\xac\x39\x47\xcb\x1f\xa3\xd2\x18\x13\x1a\xf7\xec\xeb\xe2\x49\x6e\xd3\x8d\x99\xab\xa1\x14\x4a\x6f\x2e\xf1\x68\x51\xb0\xb7\x9a\x00\x74\x6e\xad\x3f\xcc\xc7\x08\xf0\xc9\x68\xa7\xfa\xe6\x5f\x8e\x7e\xd0\x7e\x9a\xdc\xb4\x15\x5e\x26\x8c\xeb\x89\x90\x13\xcb\xe4\x35\x68\xb9\x67\x5c\x13\xac\xc2\xea\xc9\xc0\x67\xa5\xb6\xea\x6e\x5c\xdb\xa7\x63\xdc\xdb\xf0\x2e\x4d\xb5\xa1\x7d\xc6\xdd\xd7\x3b\x35\xd5\xa6\xf6\x19\xc5\xf6\x61\x9d\xd2\xfb\xd0\x51\x9c\xfb\x3a\x25\x17\xb7\x7c\xb7\x56\x1c\xc5\xf2\xbd\x33\x77\x9c\x3e\xec\x87\x14\x07\x9a\xc7\x47\x09\x6c\x69\x29\xfb\xd2\x1b\xc4\xf4\x02\x44\xa1\x59\x01\xc3\xf9\xff\xd9\x16\xde\xe3\x2c\x81\x4e\xd5\x3d\xa0\xbe\xc6\x9d\x83\x0f\x98\x4b\xd1\x68\x27\xf3\x82\x44\xf4\xcb\x71\xe4\x15\x68\xd5\x81\xb5\xd6\x31\xb2\x35\x8a\xa7\x61\x66\xa7\xba\xc3\x32\xe8\xb4\xcc\x78\x29\xb0\x4b\x6b\xdb\xb5\xf0\xb2\xd8\x8c\x5e\x2a\x0a\xd4\x4b\xea\x4e\x65\x53\x50\xb2\x77\x0e\x95\xa5\x1d\xc7\x27\x29\x9b\x5d\x74\x5f\xd2\xf9\x26\x0d\x9d\x06\xe6\x75\x8a\x4b\xdc\x45\x5a\xdf\xd8\x83\xfc\xe2\x23\xb5\x28\xb9\xed\x26\x53\x77\x91\x90\xf0\x62\xf0\xd0\x7d\xd1\x8a\x2d\x73\x06\xbc\xde\xc0\xa3\x96\xb5\x09\xf5\x8e\x77\x9e\xb8\x3f\xec\xd5\x81\xc1\xcc\x2b\x73\x25\xf0\xc2\xdc\xb2\x62\xbf\x60\xea\x8c\x36\xe0\xc2\x67\xe0\x27\x29\xa9\x26\xf7\x95\x34\xd8\xa4\xa1\xd9\x71\xa5\x09\xcf\x89\xcc\xdd\xf8\x0e\x0e\x54\xcb\x70\x0a\xef\xc5\x88\x48\x30\xe3\x73\xf1\x1a\x96\x5a\x57\xea\xf5\xc9\xc9\x82\xe9\xe9\xcd\xbf\xa9\x29\x13\x27\x99\x28\xcb\x9a\x33\xbd\x3e\x41\x10\x19\x9b\xd5\x5a\x48\x75\x92\xd3\x15\x2d\x4e\x14\x5b\x4c\x88\xcc\x96\x4c\xd3\x4c\xd7\x92\x9e\x90\x8a\x4d\x3a\x6f\x87\x9a\x96\xf9\xaf\x9b\x01\x3d\xa2\xab\x62\x70\x43\x31\x96\x25\x57\x74\x52\xf3\x1b\x2e\x6e\xf9\x04\x3d\xa6\x6a\xc4\x5d\xdd\x07\x99\xdc\xd0\xc6\x7e\x6c\x80\x91\x77\x82\x8d\xf7\xbf\xac\xf3\xe6\x88\xdb\xcd\x7c\xc4\x4d\x32\x53\x9e\x10\x9e\x4f\x2c\x58\xee\x11\xf7\x6a\x6c\x0c\x7a\xd2\xc1\x76\xf7\xb5\x4c\x7c\x3c\x57\x24\xd3\x6c\x45\x3d\x20\xa2\x0d\x0d\x0e\xc2\x87\x26\x8d\x2e\xaf\xa5\x3d\x0b\x1d\x56\x74\xf4\xdb\xbd\x12\x39\x94\x64\x8d\xb6\x3b\x8e\x12\x84\x35\xb3\xb8\xc8\xa9\x8b\xbd\x3e\x58\x0d\x79\x83\xad\x80\x2b\x63\x94\x5d\xb3\x92\x36\xa8\x53\x8c\x66\xaf\x95\xa6\xa5\xc5\x06\xd9\xcf\x1a\xe9\xc1\xd0\x72\x6d\x61\xad\xf2\x06\x98\x6e\xf0\xa2\x84\xe7\xf8\x98\x07\xa2\x94\xc8\x8c\xb5\x38\xee\x0d\xdb\x9d\x80\xc6\xeb\xd6\xc4\xee\x08\x54\x42\x31\x5c\x14\x67\x11\x8c\x31\x33\x7d\x4d\x89\x1e\x28\xec\x8f\xbf\xdf\xff\x88\xcd\xb1\xc1\xe5\x28\xe4\xc2\x10\x41\x3d\xef\xe7\xc1\xbb\xa3\x71\xa0\x1a\x07\xe7\x58\x33\x33\x13\x5c\x69\x49\xd8\xfe\x79\x5f\xe0\x0b\x3c\xf1\xc5\x79\x00\x9e\xf1\x53\x8f\x85\x83\xed\xec\x91\xc6\x6c\xc0\x6b\xd3\x6c\xc6\x48\x96\xd0\x5b\x6c\x57\xea\xa4\xc9\x9a\x32\x62\xda\x2b\x8c\x3a\x7a\x2d\x21\x60\x3d\xed\xdf\xd2\x39\x95\x92\xe6\x6f\xf1\x1d\x70\xd5\xce\xe8\x7c\xc1\x45\xfb\xed\xb3\x4f\x34\xab\xf7\xab\x27\xb7\x4d\x5b\x71\xaf\xc6\x09\x2f\xf7\xb7\xd3\x76\x0f\xdb\x88\x97\x86\x99\xb3\xfe\x04\x6e\xe9\xd8\xe0\xbd\x25\x34\x1d\x15\xd1\x4c\xcd\x6d\x5d\x9a\xe6\x60\x00\xed\xe2\xb4\x5e\x9c\xdb\xab\xda\x82\x25\xd1\x10\xb1\xa5\x07\x1e\xa8\x34\x78\x17\x19\x35\x90\x2d\x85\x50\x46\xf2\xe1\x39\xc6\xf1\xaf\x98\x40\xec\x99\x17\x4f\x2c\x86\x21\xa1\x34\x3a\xa0\x29\x8a\xd1\x4d\x7d\xec\x91\xb6\x74\xdd\x68\x27\x1c\x1e\x53\xd6\x8d\xd9\x9e\x3b\x2f\x9e\x0e\xb1\x65\x86\x8b\xc1\x4e\xf3\xc5\x02\xed\x78\xa5\x41\xd5\xe3\x62\x0d\x0d\x89\x39\xdc\x52\xb6\x58\x6a\x75\x0c\x6c\x4a\xa7\x78\x9b\x29\xc9\x96\x38\x7c\xff\x13\x55\x52\xaa\x07\xdd\x8b\x3d\x65\x74\x43\x83\x78\xfa\x61\x5b\x03\xc1\x15\x40\x19\x0b\x85\x19\xf0\xdc\x92\x02\xfe\xb2\x11\x30\x2c\xdd\xc1\x1b\x80\xea\x6c\x7a\x74\x0c\x6d\x99\x42\xbf\x8b\x54\x97\xe6\x0a\x31\x4d\x8d\x2d\x85\x7e\x0b\x29\xea\x85\x3d\x01\x74\xdf\x5c\xcb\x5d\x84\x7b\xd3\x96\xd8\x40\x54\x67\x8e\xfe\xc1\x17\xf6\x50\xec\xff\xae\xee\x93\xb6\x05\x8c\xcc\xb0\xd9\xbc\x33\xd4\x10\xfc\xe1\x2d\xa5\x28\x64\x42\x4a\xaa\x2a\x61\x3d\x98\x9b\x50\x92\xff\xe9\xcd\xd7\x0c\xee\x50\x1d\x75\x97\x6a\xc9\x16\xcb\x90\x3b\x45\x9c\x31\x39\xbc\xf3\x3e\x82\xc4\x17\xd3\x64\xc9\x0b\xd9\x64\x69\x88\x44\xe6\xae\x1e\x45\x98\xfc\x1a\x98\x0e\x9a\xca\xb2\x39\x11\x46\x4c\x78\x72\xb4\xa6\x83\x43\x7f\x34\xed\xc7\x9d\x44\xf3\x64\xf9\x12\x0e\x51\x10\x32\x7d\xa0\x50\xc9\x4c\x44\x75\x34\x85\x53\xe0\xb5\xf7\x30\xdb\x85\xbb\x6b\x09\x3c\xf9\x72\xd1\xae\x80\x1b\xb4\x59\x4c\x25\xba\x71\xfb\xdd\x0a\x7f\xb3\xcc\xd2\x78\x9c\x75\x9f\x26\x6e\xbd\xe8\xd8\x10\x6a\xc7\x20\xe0\x04\x84\x18\x96\x0d\x87\x66\xf4\xbe\x1c\xb6\x52\x01\x50\x80\xee\x99\x1d\x7d\x1f\x99\x33\x77\xdc\x7b\x85\xb6\x42\x2f\x80\xe7\x50\x2e\xdb\x95\xf7\x3b\x77\x10\xe3\xec\x41\x94\x3d\x84\x80\x0c\x98\xdd\xb4\x99\xdc\x61\x73\x60\x82\x58\xc2\xf0\x5c\x0c\x8c\xa4\x40\xc6\xb3\x35\xf2\x1e\x95\x90\x74\x37\x85\xe9\xb1\x8e\x02\x34\x5a\x47\x3b\xae\x56\x20\xc7\xdd\xb9\x49\xc1\x4c\xb7\x53\x77\x82\x59\x6e\xa7\xfe\x04\xb3\xbc\xa1\xeb\xe3\xcd\x84\xa0\x60\xa6\xbb\x12\x8a\x82\x99\x9a\x41\x8e\x4d\x33\xba\x63\x78\x31\x84\x94\xa5\x30\x55\xd9\xd1\xb8\x44\xa5\xbb\x78\x44\xda\xc0\x38\xf2\xd7\xd2\xe8\x54\xa7\xdd\xb4\xe9\x90\x89\xc0\x12\xc2\xb2\xa7\x76\xd3\xae\x9c\xaa\x38\x8c\x47\xe6\x65\xdd\xc1\xc5\x2f\x84\xbc\x9b\xfc\x72\xb8\x76\xd3\x46\x99\xb8\x91\x05\xbd\xee\x27\x97\x14\x36\x48\xf3\x8a\xb4\x27\x5b\xa9\x62\x51\xf8\x62\xba\x59\x97\x40\x16\x67\x11\x06\x49\x68\x51\x58\xda\xbc\xa6\xe3\x80\xbc\xb4\xbb\xe8\x6b\x6d\x75\xd2\xbb\x28\xfc\xa2\x1e\x7a\x9f\x9c\xb8\xdd\xb4\xf1\x48\x8f\xb4\xcb\x21\x39\x76\xbb\x69\x98\x79\x17\x85\xe5\x30\x7b\x2f\x0e\xcb\x26\x03\x30\xda\x20\xb7\x92\xed\xa2\x70\x0d\xc9\x2d\xdc\x4d\x1b\x19\x87\x51\x78\x46\xcb\x5a\xdc\x4d\x9b\x29\x5b\x51\x98\x0e\xf3\x21\x9f\xf3\xd2\x7e\xad\xcd\xb2\xbe\xd3\xcf\xfd\xac\xda\x5a\xd5\x2e\xcf\x30\x0a\x47\xe7\xee\x3e\x1e\x51\x50\xed\x21\x6a\x0a\x81\x60\x45\x97\x4a\xd2\xb1\xc1\xf9\xbb\x88\x60\xd2\xb2\x47\x54\xfe\x6e\x42\xc0\x6e\x93\x74\x1b\x85\xe3\x46\xe2\x6e\x24\x73\xa9\x4d\xfe\xb5\xe9\xbc\x51\xb8\x7a\xa4\x04\xef\xa6\x58\xce\x08\x4b\x51\x5c\x12\xfd\x81\x05\x2b\x5e\x74\x5b\x7d\x65\x31\x5f\xff\x94\x1e\x2b\x8b\x77\x4b\x1e\xab\x7b\x29\x79\xac\x92\xc7\xca\x8f\x92\xc7\xea\x01\x4a\x1e\xab\xe4\xb1\xda\x83\x92\xc7\xaa\x47\xc9\x63\x95\x3c\x56\x7e\x94\x3c\x56\xcf\xdd\x0b\x90\x3c\x56\xc9\x63\x95\x3c\x56\xc9\x63\x95\x3c\x56\x9e\xf4\x4b\xf6\x58\x59\xbc\x58\x24\xa0\xdc\xf7\xc8\xcc\x37\xcb\x6a\x63\x60\x4c\x2f\xad\x2f\xad\x49\x15\x1f\x00\xdd\x02\x38\x73\x91\xd3\x2b\xf7\x60\xba\x46\x40\x9e\xad\xba\x17\xc0\x52\x12\xbe\xa0\xf0\x6a\xf2\xea\xe5\x5e\x45\xc0\x77\x93\x6f\x36\xd8\x90\xc6\x15\x0c\xdf\xa4\xbb\x30\xf9\x8f\x94\x99\xe3\xb4\x5d\x9b\xf3\x12\xec\x8f\xbc\x23\xe9\x65\x64\x0f\xcc\x21\x95\x54\x03\xd1\x03\xe8\x30\x2b\x69\x9b\x00\xe7\xc5\xb3\xdf\xd4\xa1\xab\x0f\x26\xb8\xc5\xee\x7b\xb1\x34\xc7\x7a\xfa\x8f\x5b\xd1\x8c\x12\xe5\x99\xa0\x82\xbd\x6e\x9a\x55\x15\x25\xb5\xe5\xfc\x43\x14\x4a\x25\x72\xa0\xcd\xa9\x84\x43\x3a\x5d\x4c\x21\xaf\xa9\xad\x80\xe9\xc5\xd1\xd6\xa5\x38\x3a\xee\xa7\xa5\x96\xe6\xa1\x23\xcd\x7f\x3c\x37\x48\x37\xf9\xa9\x74\x45\xb9\xae\x49\x51\xac\x81\xae\x58\xa6\xbd\x37\xdd\x4c\x1c\x8b\xd2\x30\x6d\x13\x0b\xfd\xd3\x1c\xbc\x9d\x93\x21\x0e\xc9\xc9\x96\x34\xf6\x39\xa5\xa1\xde\xc3\xad\x31\xf8\xea\xc3\x0d\x9f\x92\x5d\x97\xa9\x0b\xde\x78\x8b\x74\x31\xdf\x08\xdb\x68\x33\xc6\x69\x90\x53\x12\x59\xa0\x58\xfc\xf0\xd1\x2f\x39\x06\xa2\x58\x46\x81\xd6\xd0\x66\x68\xa6\x2e\x0a\x73\x45\xf1\x41\x16\x68\x22\x0c\x97\x3b\x30\x53\x04\x06\xd9\x22\xdb\x5d\x13\x02\xd8\xda\x04\xbf\xb2\x57\xe5\x16\xb9\x5f\x8b\x4a\x14\x62\xb1\xee\x9f\xeb\x80\x4f\x31\x3b\xdd\x6b\x2d\x68\x4c\xf6\x7a\xa6\x46\x16\x40\xda\x35\x70\xb8\xd8\xb8\x7c\x29\x77\x61\x8b\x3e\xd7\x48\x70\xca\x5d\xd8\x83\x52\x24\x38\x45\x82\xfd\x28\x45\x82\x1f\xa0\x14\x09\x4e\x91\xe0\x3d\x28\x45\x82\x7b\x94\x22\xc1\x29\x12\xec\x47\x29\x12\xfc\xdc\xa3\x6b\x29\x12\x9c\x22\xc1\x29\x12\x9c\x22\xc1\x29\x12\xec\x49\xbf\xe4\x48\x30\xa4\xdc\x85\x94\xbb\xb0\x17\x25\x8f\x55\xf2\x58\xf9\x51\xf2\x58\x3d\x40\xc9\x63\x95\x3c\x56\x7b\x50\xf2\x58\xf5\x28\x79\xac\x92\xc7\xca\x8f\x92\xc7\xea\xb9\x7b\x01\x92\xc7\x2a\x79\xac\x92\xc7\x2a\x79\xac\x92\xc7\xca\x93\x7e\x79\x1e\xab\x4a\xe4\x91\x1b\x72\x54\x22\x8f\xd8\x8f\xc3\xa2\x8f\x33\x31\x29\x44\xd6\xf4\xe3\x1e\xcd\xd5\x0c\xc9\x66\x25\x80\x22\xa5\x2d\x92\x7e\x0c\x7f\x17\x9c\xda\xa2\xf6\x40\xc6\xf3\x44\xa8\xb5\xd0\x4b\x2a\x0d\xfb\x43\x75\x34\xba\x3c\x75\xea\x17\x32\x7e\xd8\xa9\x5f\x48\xea\x17\x92\xfa\x85\xa4\x7e\x21\x9f\x5d\xbf\x90\x25\x51\xe3\xdb\xf1\x36\x84\x06\x6b\xdb\x60\x22\x4e\xf6\x5e\x4f\xf1\x5f\x53\x59\xfe\xcf\xad\xee\x21\x9e\xc7\x7f\xd0\x71\xe4\x17\xd7\x3d\xc4\x88\x36\x27\x32\xcc\xf9\x09\xe8\xf5\x61\xcf\x86\xdd\xd3\xdc\xe5\x7a\xd2\xfc\x72\xb8\x2b\x9e\xcc\x6d\xdc\x0d\x17\x9f\xe4\x39\xcd\xa1\xa2\x72\x62\x25\xb2\xf0\x66\xc9\xf3\x1d\x3b\xd9\x9c\x18\xbf\xc3\xf2\xe4\x9d\x39\x22\xac\xf6\x53\xb7\xe7\x18\x4e\x21\x52\xee\x4f\x3f\xd9\xca\x37\x29\xd3\x52\x6b\x50\x6d\x36\xeb\x08\xe0\xd9\x1a\x00\xcf\xb0\x59\x47\x78\x4c\x6e\x02\xda\x25\x1b\x7d\x13\x10\x95\x8b\x13\x46\xc3\x20\x55\x93\x4e\x14\x17\xc3\x80\xe1\xaf\xbf\xd5\x54\x86\xbe\xa4\xc5\x8a\xca\x2e\x14\xd2\x18\x47\x2a\xd4\x59\xc8\x5c\xdb\xfe\x8c\x28\xfb\xd2\x88\x01\x63\x88\x10\xf6\x8d\x17\x1f\x8d\x9b\x55\x05\x9b\x7b\xbc\xc9\x3e\x86\xc3\x44\x01\x69\xd0\x2f\xf6\x04\x45\x60\xba\x13\x02\x13\xc3\x59\x14\x31\x2b\xb1\xa1\x2e\x2b\x31\x1c\x26\x11\xd1\x95\x15\xcd\x91\xb5\x4b\x48\x44\xf1\x8f\x3d\x0a\xc8\x06\x36\x81\x36\x91\xe2\x13\x44\xb7\x60\x9b\x88\x0e\xfa\x63\x1b\x8b\x8e\x13\x44\x89\x0d\xda\x81\x1d\xc0\x9d\x28\x4c\x6f\xe8\x3a\x22\x78\x07\xe2\x02\x78\x20\x22\x88\x07\x22\x01\x79\x20\x26\x98\x07\x22\x03\x7a\x20\x1e\xa8\x07\x36\xc5\x4d\x9c\xa5\xb3\xe4\xbc\x55\xf1\xe4\x17\xb8\xa3\x8c\x77\x24\xd6\xdd\x80\xbe\x60\x8c\x89\x17\x82\x68\x98\x21\x88\x0d\xa1\x80\xc8\xd8\x21\xd8\x3c\x46\x51\x45\x22\xd8\x30\x5b\x4c\x40\x12\x3c\x26\x28\x09\x86\xc0\xa4\x68\x3c\x1b\x18\x08\x82\x93\xa2\x71\x8d\x0b\x72\x82\xc7\x01\x3a\x41\x0b\x76\x32\x7a\x2c\x1a\xcb\xf8\xb8\xa9\x47\xb8\xa8\xf1\xf0\x4e\xb0\x79\x4d\x2d\xeb\x98\x02\x9f\xf0\x88\x78\x12\xb0\x2e\xc2\x88\x6b\x09\x03\x34\x55\xbc\xdb\x1e\x1b\xa2\x02\x76\x35\xcf\x79\x87\xaa\x8a\x3a\xd8\xc8\x1b\x1f\x19\xf5\x02\x8f\x82\xd2\x82\x47\x82\x13\x41\x1f\xad\x15\xef\xdc\x3f\x06\xea\x0b\x3e\xa7\xed\x8f\xbc\xf5\x1d\xf4\x27\xe6\xae\x37\xf0\x9f\x68\x3c\x2d\x8c\xa8\x0f\x01\x8a\xc6\x1a\xa1\x44\xf1\x60\x40\x10\x1d\x0a\x04\x71\xe1\x40\x10\x57\x1b\xa3\x2b\xef\x1d\x96\x1f\x7a\x0c\x27\xa1\xe5\x1c\xcb\x3f\x58\x92\xca\xa8\xce\xff\x73\x43\xd7\xc7\x78\xdb\xff\x6f\x8c\x47\x2c\x61\x52\x4d\xe1\x34\x1e\x1e\xb1\x37\xbe\xf0\x8a\xa9\x0d\xf5\x96\xd3\xac\x43\x9c\x25\xa5\x7f\xab\xd9\x8a\x14\x94\x6b\xff\xf0\x61\x9f\x08\x6f\xe2\xf6\x66\x9f\x36\xdd\xc4\x31\xc4\xfd\xed\x52\x28\xcc\xfb\xb2\x91\xd0\x38\xcb\xf0\xe2\x86\xae\x5f\x1c\xc7\x56\xa2\x86\xf1\x39\x7f\x61\x53\x0e\xe2\x1c\x82\x01\x1e\x37\xa2\x23\x51\xf0\x62\x0d\x2f\x90\xfb\x8b\xb0\x72\x89\x1d\x0d\x90\x2d\x44\xc6\x60\x19\xd5\x3f\x1e\xc9\xcd\x47\xf2\x9c\x19\x81\x47\x8a\xcb\xa8\xde\xb0\x48\x32\x9e\x93\x92\xaa\x8a\x64\xa1\x83\x1a\x88\xf6\x8e\x69\xe0\x44\x1b\x28\x9d\x72\x38\x98\x68\x8c\x5b\x17\xdd\x55\x5c\x27\x98\x16\x70\xd8\x80\x75\xc8\xc2\xdc\x3e\x7d\xf4\x3f\x03\x79\x0e\x6a\x71\xda\x18\x58\x49\x49\xf0\xbd\x7e\x81\x31\xce\x4a\xe4\x07\xaa\x5b\x57\x3f\xe0\x53\x43\xcf\x2a\x61\x3b\xd2\x05\xe9\x45\xe4\x23\xde\x90\x6b\xb7\xf6\xa1\xf7\x63\x29\xea\x22\x37\xef\x86\x16\x26\x1d\xca\xf2\xb0\x81\x6d\x1c\x99\x33\xc7\x85\x8e\xc9\x9a\x6b\x36\xe9\xf8\x7b\x43\xcd\x3a\x72\xa5\xc3\xd5\xa0\xc0\x7d\x20\xcf\xa1\x5c\x88\x62\xa0\x75\x90\xe0\x4e\x82\x85\x5a\x3b\xb7\x4b\x2a\xfb\xfb\x1e\x9e\xdb\x91\xd3\x39\xe3\x34\x07\xa2\x40\xd6\x9c\x9b\xd5\x14\xa1\x59\x72\x0e\xad\x6c\xcd\x32\x34\x20\xc2\x9d\xc3\xad\xf0\xb6\x70\x20\x0c\x8e\x44\xc0\xcd\x58\xea\xa0\x96\x04\x8d\x54\xc2\x43\x39\xe2\x02\x08\xee\x54\x18\xe1\xeb\x38\x2b\x60\xc3\x37\x34\xb7\xe7\x3f\x78\xf3\xdd\x8e\x4f\xe1\x0c\xd5\x4c\xbc\x05\x65\x0a\xa5\x08\x29\x0a\x71\x1b\x6a\x9d\x3d\xb7\x3e\x1d\xb7\x9f\x45\x9f\x8e\x0d\xa0\x60\x6a\xd3\xd1\x51\x6a\xd3\xb1\x4d\xa9\x4d\xc7\x67\xdd\xa6\xc3\x7b\x8f\xac\x4a\xbd\xa3\x5f\x87\x17\x47\xdb\xe3\xe3\xbe\x7e\x1d\x7e\x0b\x6a\x0f\xe2\x46\xbf\x0e\xf8\x7e\x49\x51\xae\x79\xba\x12\xcc\x95\x29\xeb\x42\xb3\xaa\xe8\xb2\x4b\xec\x32\x14\xde\x41\x0e\xd7\x71\x42\x6d\xe0\x95\xcd\x4a\x10\xcf\x44\xe4\x0d\x69\x8e\xe3\xc6\x24\x64\x85\xe6\x80\x9f\x59\x89\x29\x50\xa4\x28\x5c\x3b\x8b\x26\xa7\xdd\xe6\xc7\xb1\xcf\x39\x6d\xe3\x2d\x1a\xb5\x2a\x14\x98\x80\x46\xd6\xa1\xb1\xde\x0b\x23\x16\x8c\x35\xdb\xe8\x6a\x4f\x8e\xdb\x2e\x08\x8b\xc9\x58\x05\xa4\x6a\x60\x6a\x1c\x5b\x51\xde\xbd\x33\x0e\xd5\xd1\x51\x48\x9d\xa1\xc6\x4b\x10\xf3\xad\xf9\x08\x6f\xcc\x5d\x6f\xcb\x63\xfb\x46\xf2\xe4\x38\x78\x59\xed\x78\x1b\x79\xb2\x15\x7c\xf7\x9b\x28\xc0\x22\xdb\x78\x0b\xfd\xa9\x67\xbb\xff\x2f\x4f\x96\x3b\x5e\x41\xcd\x3b\xc6\xd7\xee\xb6\xaf\x1f\x3c\x4a\x4d\x6a\xa4\xc5\xed\x7b\xe7\xc6\xd9\x58\x64\xc0\x6e\x3c\x79\x16\x52\xe8\x2b\x2b\x1c\x60\x19\x29\xcd\xe3\x51\x52\x3c\x1e\x21\xbd\x23\x62\x6a\xc7\x3f\x47\x93\x9c\xc8\xa9\x1c\xdb\x69\x1c\xb1\x10\xf4\x83\x14\x8e\xd8\x09\x18\x91\x92\x2f\x9e\x95\x7f\xfc\x51\x12\x2e\x52\x45\xd3\x54\xd1\xd4\x8f\x52\x45\xd3\x07\xe8\x31\x2a\x9a\xc6\x4a\x7c\xe8\x27\x3d\x44\x63\xda\x24\x3c\xc4\xcd\xb1\x72\x71\xde\x7f\xaa\xc2\xa6\x51\x91\x9f\x5d\x52\x42\x93\x4c\x10\x89\x6d\x97\x90\x10\x07\x6c\x04\xa9\x4a\x2a\x26\x0e\x44\x07\xfc\x7f\x0e\x85\x4d\x23\x82\x7d\x7b\x00\xff\x58\x89\x2d\x76\xed\xa2\x1e\xcb\x47\xaa\x19\x19\x1d\x8c\xff\xa8\x35\x38\x53\x89\xd3\xcf\xa5\xc4\x69\xaa\x49\x19\x4d\x10\xff\x92\x6a\x52\x0e\x29\x1a\xf8\xfc\x91\x80\xe7\x8f\x03\x3a\xdf\x00\x9c\x47\xe4\xec\x0a\x61\xc6\x85\x8a\x6f\xc2\xc4\x81\x84\x62\x86\x1e\x11\x22\xbe\x01\x0f\xef\xc0\xdd\x11\x00\x39\xfd\xea\xe2\x08\xec\x0e\x75\x3a\xb9\xb2\x5b\x11\xc5\x79\xeb\xf6\x18\x00\xba\x03\x99\x6e\xfa\xda\x22\x80\xb9\xa3\xf9\xda\x22\xb8\x26\x1e\x03\xc0\x1d\x41\x3e\xc6\x00\x6e\xdf\x01\xda\xee\x60\xd7\x21\x70\xa6\x0d\xc0\xf6\x76\xbc\x33\x80\x79\xf7\x88\x8f\x0b\xb7\x7e\x04\xa8\x75\x64\x98\x75\x0c\x95\x1f\xac\xe8\x23\x1c\xdf\x28\xb0\xea\x9d\x90\x6a\x17\xa8\x0e\x98\xde\x20\xc4\xdd\x0b\x56\x87\x84\xb2\x36\xc3\xdc\x9b\x01\xeb\x50\xe0\x60\x6c\x20\xf4\x2e\x10\x74\x87\x8d\x0a\xb9\x62\x1d\x00\x7a\x0b\xc2\x1c\x12\xd8\xdb\x15\xa2\x0f\x83\x2f\xc7\x0e\xd3\xc3\x76\xa8\x3e\x0e\xca\xf6\xae\x60\x7d\xc8\x79\x1d\xc2\x95\x07\x80\xe3\x00\xb6\x0e\xaa\xfc\x38\x60\xe3\x58\x40\xe3\xa0\x82\xfa\x5c\xb3\xc7\x28\xaa\xdf\x97\x15\xa3\x27\x76\x47\x65\x7d\xb2\x12\x2c\x87\xaa\xd6\xda\x47\x8c\xb7\xb8\xa0\xfb\xaa\xeb\x8f\xe6\x4a\x54\xaa\xae\x7f\x0f\x7d\xc6\xd5\xf5\x83\x4e\x30\x0c\xeb\x8b\x6f\x83\x74\xbd\x38\x0e\xca\xf2\x6f\x97\xd8\xf7\x9f\x78\x53\x96\x7f\x47\x89\xfd\xd0\xa9\x4f\xb7\x4a\xec\x7b\x71\xdc\x28\xe5\xbc\x51\x62\xdf\x73\xe6\xc3\xb2\xfc\x5b\x25\xf6\xfd\xf6\xa8\x5f\x96\x7f\xbb\xc4\xbe\xf7\x48\xfb\x32\x71\x67\x89\x7d\x6f\x3c\x18\x55\xfa\xf8\xce\xbc\x02\x2f\xae\x83\xbb\xb3\xab\xce\xbe\x17\xd7\xb6\x36\xff\x9d\x75\xf6\xbd\x17\xb7\x41\x4f\x6f\xd7\xd9\xf7\x9b\xff\xb0\x36\xff\xb0\xce\xbe\xf7\x20\x07\xb5\xf9\x87\x75\xf6\xbd\x79\x0e\x51\xde\x9b\x75\xf6\x83\x86\xda\xd4\xe6\xdf\xac\xb3\xef\xb7\xa2\xa9\x36\xff\x6e\x4a\xb5\xf9\x9f\x01\x2a\x36\xd5\xe6\xef\x28\xd5\xe6\x4f\xb5\xf9\xb7\x28\xd5\xe6\x4f\xb5\xf9\x47\x50\xaa\xcd\xdf\xa7\x54\x9b\x7f\x34\xa5\xda\xfc\xa9\x36\x7f\xaa\xcd\xef\x4d\xa9\x36\xff\x38\x4a\xb5\xf9\x53\x6d\xfe\x08\x94\x6a\xf3\xf7\x29\xd5\xe6\x4f\xb5\xf9\x53\x6d\xfe\x08\x94\x6a\xf3\xa7\xda\xfc\xa9\x36\x7f\xaa\xcd\x1f\x4c\xa9\x36\x7f\xaa\xcd\x1f\x44\xa9\x36\x7f\xaa\xcd\x9f\x6a\xf3\xa7\xda\xfc\xa9\x36\xbf\x27\xa5\xda\xfc\x01\x94\x6a\xf3\xa7\xda\xfc\x61\x83\x49\xb5\xf9\x47\x52\xaa\xcd\x9f\x6a\xf3\xa7\xda\xfc\xa9\x36\x7f\xaa\xcd\xbf\x9b\x52\x6d\xfe\x54\x9b\x7f\x0c\xed\xac\xcd\x1f\x9c\xa8\x32\x78\x3c\x45\xcc\x54\x69\x8a\xfa\x6f\x17\xe8\xf7\xe2\x39\x28\xea\xbf\xbb\x40\xbf\x17\xdf\xa6\xa8\xff\x46\x81\xfe\xe7\xbb\xac\x58\xd9\x7f\xbb\x4a\xbf\x17\xc7\x7e\x65\xff\x5d\x55\xfa\xbd\x98\xf6\x2b\xfb\xef\xa8\xd2\xef\xc5\xb3\xab\xec\x7f\x6f\x95\x7e\x2f\xde\x58\xd9\xff\xbe\x2a\xfd\x7e\xe7\x15\x6d\xaa\xbb\xab\xf4\x7b\x31\x2d\x6c\x25\xa6\xbb\xaa\xf4\xfb\x4d\x9f\x64\xcb\x54\xa5\xff\x41\x4a\x55\xfa\x53\x95\xfe\x54\xa5\x3f\x55\xe9\x7f\x90\x9e\x3c\x1f\x29\x55\xe9\xbf\x8f\x52\x95\xfe\x3d\x29\x55\xe9\x4f\x55\xfa\x47\x53\xaa\xd2\x9f\xaa\xf4\xa7\x2a\xfd\x77\xf0\x48\x55\xfa\x47\x51\xaa\xd2\x9f\xaa\xf4\x07\xb3\x4d\x55\xfa\x53\x95\xfe\x10\x4a\x55\xfa\x53\x95\xfe\x54\xa5\x3f\x55\xe9\x4f\x55\xfa\xfd\x28\x55\xe9\x1f\x4b\xa9\x4a\x7f\xaa\xd2\x6f\x29\x55\xe9\x4f\x55\xfa\x47\x0f\x2e\x55\xe9\xf7\xa5\x54\xa5\x3f\x55\xe9\x4f\x55\xfa\x1d\xa5\x2a\xfd\xa9\x4a\x7f\xaa\xd2\xff\xc4\x55\xfa\x49\xad\x45\x29\x6a\xae\xaf\xa8\x5c\xb1\x8c\x9e\x66\x99\xf9\xea\x5a\xdc\xd0\x51\x00\xd2\x61\x54\xee\x1e\xa6\xa3\xa6\xc7\x78\xce\x32\x8c\x21\xdd\x2e\x29\x16\xc0\x27\xa0\x2c\x4f\x20\x96\x29\xe8\xd1\x5c\x3b\x44\x10\xce\x9e\x68\x96\x91\xa2\x58\x03\x0e\x79\xdc\x0e\xd8\x35\x9f\x09\x51\xd0\x11\xcf\x07\x67\xce\x52\x39\x4a\x9b\x0d\x96\xf8\x9d\x8b\x45\x77\xac\x60\x46\x0b\xc1\x17\x63\x55\x9b\x83\xa6\x56\x22\x9f\xc2\x9b\x8e\x59\x46\x38\x0a\xfe\x5a\x4a\xca\xf5\x48\xd8\xe3\xac\x29\xe7\x8b\x01\xd5\x52\xac\x68\x8e\xa1\x6d\x44\x2a\x5a\x97\xcc\xc8\x58\x68\x41\x89\x99\x2f\xa7\xdd\x84\x8d\x70\x27\x70\x89\xe3\xb6\x83\x9d\x8d\x93\x1c\x16\x31\xea\xb1\xdd\x63\xad\x18\x0f\xbb\x65\x23\xc8\xed\x5e\xd4\x68\x3e\x66\x18\x6e\xe8\xd6\x61\xa4\xbc\x40\x61\xbb\x16\x35\xdc\x12\xfb\xec\x95\x35\x47\xc1\x8e\xcb\x69\x8e\xc1\xb8\xe3\xe3\xfb\x5c\xf1\x8b\x9b\x4e\x50\x0f\x8f\xfa\x13\xff\x58\x26\x91\x0b\x0f\x73\x73\xb0\x75\x07\xa7\x72\x51\xdb\xd7\xa5\xbb\x68\x94\x6b\xb9\x46\x50\xb4\x8f\xa4\x37\x6f\xd6\x5c\x64\x37\xe6\xf8\x97\x64\x41\x0f\x0e\x14\xbc\x79\xff\xd6\xe8\x90\x5a\x79\xa9\x38\xe6\x0a\xd2\x3b\x2d\x54\x49\xb1\x62\xb9\xb9\xaf\xdf\x11\xc9\xc8\xcc\xab\x84\x00\x16\xdd\xa6\xdc\xbc\x9e\x7e\x73\xf8\xdd\xe9\xc7\x9f\x2e\x4e\xdf\x9f\x1d\x61\xb4\x88\x7e\xaa\x08\xcf\xbd\x46\x5a\xab\x2e\xd5\xc4\x9d\x7d\x33\x7d\xca\x57\x4c\x0a\x6e\x16\xd9\x67\x45\xcf\xe7\x40\x60\xe5\xe6\xda\x88\xbd\x19\x45\xd8\x56\xb1\xf2\xc3\x25\x6b\xf4\x2c\xb8\x35\x68\x8c\x50\xc6\xab\x5a\xfb\x3f\x3e\x30\x1d\x61\x46\xa1\xe6\xd9\x92\xf0\x85\x93\xa8\xfd\xf5\xf5\x60\xaa\xd6\x5c\x93\x4f\x66\xd6\xe8\x26\x57\x19\xa9\x68\x6e\xcd\x3c\x02\xb9\xa8\xfd\xb6\xff\x37\xbf\x39\x06\x46\x5f\xc3\x6f\x7a\x83\x9b\xc2\x99\xe3\xde\x1d\x0e\xdf\x55\xe0\x74\x45\x25\x0e\xd8\x1d\xa6\x63\x90\x74\x41\x64\x5e\x50\xe5\xc3\x54\xcc\x5b\xf3\xc2\xfa\xad\xdc\x61\xa0\x4d\xbc\xc3\x83\x27\x17\xba\xa7\x97\x5a\x5d\x03\xef\x05\xc2\xde\xe7\xc2\xe7\xf5\xb8\xd4\xba\x52\xaf\x4f\x4e\x6e\xea\x19\x95\x9c\x6a\xaa\xa6\x4c\x9c\xe4\x22\x53\x27\x9a\xa8\x1b\x75\xc2\xb8\x91\xc3\x93\x9c\x68\x32\xe9\x29\x8b\x13\xfb\xc4\x98\x64\xa2\x2c\x09\xcf\x27\xc4\x09\xa5\x49\x7b\x91\x4e\x7e\xed\x4c\xdb\x09\x69\x7f\x8b\xf1\x09\x99\xa8\x25\x2d\x8a\x83\xd1\x63\x0d\x79\xee\x7b\x3f\xf3\x03\x9e\xf7\x6e\xce\xa1\xd2\xfe\xac\x15\xee\x76\xee\x53\xb8\x10\x3e\x5e\x3c\x9b\x23\xe3\xae\x22\x2a\x66\xdc\x87\x69\x4f\xfe\xfb\x88\xfa\x46\x63\x9c\x5d\x5c\x7f\xfc\xcb\xe5\x87\xf3\x8b\xeb\x46\x71\x34\x6a\xc0\x87\xeb\x5d\x8a\x23\xec\xa6\xdf\xa5\x38\x3a\x35\xe0\xc1\xf4\x4e\xc5\x31\x54\x03\x3e\x9c\xb7\x15\xc7\x50\x0d\xf8\xac\xec\xb6\xe2\xd8\xa1\x06\x3c\xad\x88\xfe\xfa\xee\x54\x03\x5e\xd2\xb9\xa7\x38\x76\xab\x01\x0f\xae\xdb\x8a\x63\xa8\x06\xbc\xee\xd7\xb6\xe2\xe8\xa9\x01\x4f\x95\xbf\xad\x38\xfa\x6a\xc0\x83\xe9\x6e\xc5\x91\xd4\xc0\x3e\x1f\xea\xa5\x06\x28\x5f\x05\xaa\x80\xe6\x5d\xde\x13\x2e\xed\xb9\xf0\x11\x83\x5a\x20\x16\xcc\x89\x82\x76\xa3\xe2\x1c\xaa\xcf\x63\x3f\x07\xeb\x7b\xc6\x57\xdf\x11\x39\x00\xf3\xf9\xf9\x4a\x77\x6d\x10\x38\xa6\xc0\xfc\x78\x92\xce\x83\xe2\x9f\x78\xe8\x1d\xfa\x0b\x41\x22\x7b\xbc\xab\x2d\x85\x22\x85\xcd\xc7\xfa\x06\x52\x06\x07\xe3\x82\x94\x8d\x9f\xbb\xbf\xb7\xde\xde\xd4\xe6\x4c\x4c\xe1\x7d\xe3\xb2\x82\x37\x3f\x9d\xbf\x3d\xbb\xb8\x3e\xff\xea\xfc\xec\xa3\xaf\x9f\x36\x38\x06\x85\x1e\xfd\x28\x4b\x76\x10\xc7\x52\xb3\x74\xbf\xbd\xe6\xef\xd4\x5e\xe2\xad\x5c\x31\x51\x77\x91\x92\x98\xfb\xab\xb6\x64\xab\x37\x4b\x9b\x44\xb1\x6e\x3d\xd4\x51\x87\x39\xdd\xe9\xa9\xf0\xe6\x1b\xd5\x50\xb5\x74\x8f\xb9\xea\xcd\x33\xaa\xb7\xc3\xd2\xdd\x3e\x0f\xff\x8d\x8f\x6d\xf2\x5a\xba\xd7\xf0\x0d\xd9\xf9\x3b\xcc\x5f\x6f\x96\xf7\x78\x4f\xbc\x79\x36\xc6\xf3\x5b\x3a\x27\x75\x61\xfd\xa7\x2f\x5e\x4c\xc7\xdb\xa0\x96\xe2\x88\xdd\xaf\xa4\xf0\xee\x5c\x37\x10\xbd\x57\x98\x12\x8a\xbd\x5c\x43\x02\xb3\xbb\x8c\x98\x03\x97\x1c\xe6\x7f\xee\x7a\x6e\x2b\xe7\x1a\xb0\x51\xe4\x00\xc0\xab\xe1\x17\x84\xc2\x8d\x00\x8b\x8a\x91\xd4\x94\x09\x3e\x67\x8b\xf7\xa4\xfa\x86\xae\x3f\xd2\x79\x08\x18\x65\x78\x1e\x30\x46\xed\x32\x53\x82\x40\x5a\x62\x6e\xcd\x50\x3b\xcc\x10\x2c\x5a\x24\x24\x5a\x8c\x04\xb9\xd0\xe4\xb8\x58\xf9\x6c\x11\x72\xd9\xb6\xba\xb4\xc6\x48\x3b\xc3\x57\xa2\x39\x41\x71\x12\x23\x23\xa4\xc8\x84\xd8\xf5\x0d\x0d\x8d\x55\x67\xe0\x87\xaf\x55\x67\xec\x68\xeb\x56\x09\x66\xf9\xa0\x5b\x26\x13\x3c\xa3\x95\x56\x27\x62\x65\x6c\x43\x7a\x7b\x72\x2b\xe4\x0d\xe3\x8b\x89\xb1\x3b\x26\xf6\x8e\xa9\x13\xc4\x18\x9d\xfc\x1a\xff\x13\x3c\xa8\xeb\x0f\x6f\x3f\xbc\x86\xd3\x3c\x07\x81\xca\xb9\x56\x74\x5e\x87\x67\x4a\xdb\x96\xbd\x53\x20\x15\xfb\x8e\x4a\xc5\x44\x84\xfc\x9a\x1b\xc6\xf3\x63\xa8\x59\xfe\xa5\xaf\x7a\x6f\x28\xda\xf9\x15\x95\xc5\xce\x46\x3d\xc3\x57\x88\x43\x0b\xbf\xee\x7d\x7b\xab\x15\xf5\xc1\x5c\x85\xc4\xa2\x54\x37\x74\xdd\xa0\x34\x82\x59\xba\x07\x5b\x94\x4d\x1d\x0b\xb2\xd9\x24\x3c\xb8\x31\x75\xf6\x41\xab\xb4\x83\xe6\x67\x01\xfd\xce\x73\x51\x89\xfc\x35\xa8\xba\xaa\x84\x0c\x2c\xfe\x50\x52\x4d\x72\xa2\xc9\xd4\x48\x93\xe3\xe1\x97\x88\x63\x0c\xbb\xb6\xff\xd5\x32\x44\x68\xa0\xfa\xe1\xe0\xe0\x4f\xdf\x9c\xfd\xe5\x7f\x1d\x1c\xfc\xf8\x5f\xb1\x38\xa3\x19\x6a\x93\x6b\xe3\xb1\x57\x15\xcd\xa6\x5c\xe4\xf4\x02\xd7\x05\xbf\x54\x03\x98\x1a\xfe\x20\xec\x33\x34\xd1\xb5\x9a\x2e\x85\xd2\xe7\x97\xc7\xcd\x97\x95\xc8\xcf\x2f\xa3\x30\x46\x4e\xca\xfb\x2d\x04\xcf\xcd\xb8\xc3\x2b\x70\x49\x82\xea\x2b\xc7\x32\xf1\x3a\xbd\x16\x55\xf4\x3b\x9e\xe1\x42\xda\x61\x5a\xb3\x25\x2d\x49\x94\x3e\x0c\x5f\x35\x8b\x0f\x4c\xc1\xad\x64\x5a\x7b\x96\x23\xec\x13\xe3\xae\x22\x9f\x98\x1f\x1b\x2d\x80\x4f\xf8\x18\x66\xee\x8b\xd5\xab\xe0\xc4\x9f\x68\x46\x42\x7b\x6e\xa3\x1e\x15\xdc\x8b\x48\x86\xae\x55\x2e\xed\xf3\x20\xca\xbe\xf6\x01\xf5\x70\x7a\x79\x1e\xcc\x74\x65\xef\xc6\xb3\xd8\xd6\xa6\x5a\xd7\x57\xcf\xd4\x5a\x68\xc6\xd7\x08\x82\xd6\x6b\x1d\x76\x04\x31\xaf\xae\xad\x54\x06\x05\x2b\x59\xe0\x7d\x25\x3c\x47\xed\x40\x95\x56\x70\x68\x19\x4e\xb3\xaa\x0e\x53\x80\x8e\x4f\x49\x4b\x21\xd7\xc7\xcd\x97\xb4\x5a\xd2\x92\x4a\x52\x4c\x94\x16\x92\x2c\x02\xd5\x77\x33\x6c\x1c\x6e\xf7\x95\xfd\xd0\x68\x8b\xb2\x3d\xea\x90\x64\x1a\x5b\x8b\xa3\x85\x6b\x37\x36\x24\xcd\x7f\x39\x56\x42\x73\x3c\x9f\x81\x91\xd0\xde\xba\x8b\xe8\x6e\x8e\x37\xc1\x61\xa8\x86\xd0\x05\xd3\xae\x3d\xcc\x23\x14\x82\x58\x89\xa2\x2e\xa9\x3a\x6e\x9f\xc7\xe1\xee\x04\x21\x81\xf2\x15\xac\x88\x54\xcf\xe6\xf1\x9f\xb3\x15\x53\xe1\xf5\x8c\x76\xbc\xfd\x63\x34\xae\xc6\x9c\xed\x5a\x57\xb5\x76\xe5\xe4\x63\x19\x95\xf4\x53\x25\x14\xc6\x9b\x22\x54\xac\xb4\x94\xf7\xa3\x37\xaf\xc2\xfa\xf5\x60\x01\x0a\x4d\x25\x7f\x0d\xff\x79\xf8\xd7\x2f\x7e\x9e\x1c\x7d\x79\x78\xf8\xc3\xcb\xc9\xbf\xff\xf8\xc5\xe1\x5f\xa7\xf8\x8f\x7f\x3d\xfa\xf2\xe8\xe7\xe6\x8b\x2f\x8e\x8e\x0e\x0f\x7f\xf8\xe6\xfd\xd7\xd7\x97\x67\x3f\xb2\xa3\x9f\x7f\xe0\x75\x79\x63\xbf\xfa\xf9\xf0\x07\x7a\xf6\xe3\x9e\x4c\x8e\x8e\xbe\xfc\x4d\xe0\xc0\x09\x5f\x7f\x08\x32\x25\xc0\x96\x5d\x8d\xd2\x83\x60\xc8\x2d\x4a\x39\xa4\x4f\x93\xce\xe9\x39\x61\x5c\x4f\x84\x9c\x58\xc6\xaf\x41\xcb\x3a\xec\x91\xd2\x1c\xc7\xb8\x72\xf6\x63\xa4\xba\x7d\x3d\x93\xac\x35\xb3\x9f\x85\x20\x53\x34\x93\x54\x3f\xef\x38\x95\x1d\x63\xf3\xaa\xc0\x64\xf3\xe0\xa8\x03\x3a\xb7\x7e\x29\x36\x4f\x0a\x7b\xdd\x47\x6d\x82\x2f\x9e\xa2\x78\xaf\xdc\xb9\x14\xe5\x14\x7a\xc0\xaf\x55\x94\x76\xfe\x6e\x9c\x37\x34\xb8\x16\x55\x0a\xd3\xf9\x50\x0a\xd3\x85\x51\x0a\xd3\x8d\xa3\x7e\x98\xee\x0a\xef\x7e\x8a\xd1\xed\x22\xca\x57\x7e\xc0\xaa\x9d\xc8\xfb\xc6\x87\xa5\x05\x54\xa2\xaa\x0b\xa2\xbd\x32\x44\x76\xe1\xf7\xb7\x61\xf8\x1e\x9c\x9d\xf2\xeb\xd0\xac\x5d\x8e\x97\xaf\x7b\xa3\xdc\x8d\x50\x86\xd3\xa2\x00\xc6\x7d\x95\x17\x0e\xb2\xc9\x37\x92\xd4\xba\x93\x80\x60\x55\x51\xec\x87\xe4\xc1\xf3\x76\x49\x37\x96\x10\x98\x02\xa5\x89\xd4\x8c\x7b\x35\x83\xfa\xde\x70\x44\x73\xb4\x49\xbb\x61\xbc\xeb\x87\x14\xf0\x90\x6d\x4b\x98\xf5\x1a\xe6\x75\x35\x6b\x0a\xa2\x7c\xe6\xef\x5e\x0a\xb8\xaa\x9a\xdc\x20\xb6\x39\xa3\x39\xe5\x19\x9d\xc2\x77\xbe\xb5\x5f\x9b\x93\x34\x5b\x9b\xbd\x39\xe3\xab\x36\x13\xab\xb6\xc9\x3f\x3e\x87\xca\xac\xe8\xee\x71\xfe\xf3\xa6\x9e\x18\x31\xe5\xa0\x9b\x5d\x06\x8a\x97\xe4\x44\xbb\xb5\xf5\xe4\xb7\x05\x9f\x5b\x34\x87\x57\xae\x50\xd8\xcb\x25\xf4\xb5\xd0\x62\x23\x03\x1e\x9c\x5b\xcf\x84\x76\x41\x42\x6a\x6b\xdb\x67\x01\x9a\xf5\x9e\x3c\x9e\x09\xfc\x34\xd4\x5c\xdf\x69\xaa\x07\x47\x91\x87\x66\xfa\xf3\x33\xb3\x1f\xc1\xc4\xde\x61\x5e\x5b\xf3\x38\x88\x6b\xa8\x69\x1d\xc5\xac\x8e\x61\x52\xef\x32\xa7\x03\x92\x6b\x3b\x1a\x20\xde\xa2\x98\xc0\xe1\xe6\x6f\x38\x3c\xad\x92\x74\xce\x3e\x45\x91\x99\xa7\xbc\xdd\x40\x60\x39\xe5\x9a\xcd\x59\xc0\x9a\x1b\x23\x5a\xd2\x8a\x72\x04\x11\x60\x1f\x47\x63\x17\x78\xe6\x47\xc2\xe6\x0e\x3e\xbb\xe4\x3a\xeb\xa2\x89\xa9\xc0\xae\x62\x39\xa7\x92\xf6\x4a\xda\x2b\x69\xaf\x87\xe8\xd9\x6b\x2f\x27\x0f\x9a\x27\xfb\xd3\xaa\x1f\xac\x08\x13\x5a\xf4\xe6\x6d\xaf\x1e\x19\xde\x71\x6f\x77\xed\xfe\x77\xaf\x2b\x7b\x78\x82\x9f\xeb\x73\xc5\xb0\xf0\x6e\x5b\x4e\xbd\xd5\x9a\x5a\xd8\x52\x9c\x1e\x1c\x97\x6c\x61\x6e\x68\x41\x57\xb4\x70\xcf\x21\x28\x09\x27\x0b\x5b\x17\xde\xeb\x05\xe3\x22\xe8\x20\x24\xf6\x95\x94\x2c\x1f\x38\x4f\x7c\x27\xcf\x38\x18\xb1\x55\x08\x92\x23\x3b\x29\x8a\x82\x4a\x05\x05\xbb\xa1\xf0\x96\x56\x85\x58\xfb\x36\x20\x24\x3c\x87\x2b\x4d\xb4\x11\x53\x57\x54\xfb\xe0\x94\x03\x44\x01\xae\xc8\x65\x5d\x14\x97\xa2\x60\x99\x47\xdc\x6a\x78\xb8\xcf\xf1\x54\x57\x75\x51\x40\x85\x0c\xa7\xf0\x81\xfb\x9c\x6d\x31\x87\xd3\xe2\x96\xac\xd5\x31\x5c\xd0\x15\x95\xc7\x70\x3e\xbf\x10\xfa\xd2\x3a\x11\x7c\x0c\x9e\x7e\x66\xac\x65\x0d\x6c\x0e\xaf\xb1\xe7\x9e\x06\x4d\x7c\x84\x28\xeb\x35\x92\x3f\x36\x67\xae\x3f\x48\xab\x80\x6e\x99\xf2\xca\x2d\xbd\xb7\x18\x9a\xdf\xa5\xff\x35\x72\x32\xaa\xd7\x7e\xfd\x0f\x3d\x68\x05\x9b\xd3\x6c\x9d\x15\xa1\xf2\xf3\x34\xc3\x0c\x87\xae\x6d\x5c\x27\x31\x7c\x1c\x8c\xb6\x8b\xbd\x2b\x71\x8b\xae\x3b\xc6\xc1\xb6\x70\x57\x9e\x1d\xba\x3b\x71\xd3\xce\xd9\x3a\x80\xd5\x93\xfa\x02\x3d\xed\xd9\x30\x4b\xb6\x12\x4a\x5f\x69\x22\x75\x84\x16\xef\x07\x97\x0d\x33\xc0\xd6\xbe\x45\xe1\x6d\x08\xb0\xb2\xa4\x39\x23\x9a\x16\x6b\x20\x73\x8d\x85\x92\x43\x0b\x5a\x98\x31\x49\x6a\x6f\xaa\xeb\x28\xb5\x24\x3c\x2f\xa8\x84\x39\x61\x85\x37\x3a\x6c\xcb\xfd\xaf\xa9\x2c\x19\x0f\x28\xa4\x6e\x61\xb5\x18\x45\xa0\x39\x16\x86\x96\x39\x16\x89\x13\xe0\x0f\x63\x76\x0c\x3b\xb1\x8f\xd6\x77\xd0\xe5\x84\x0e\xb3\xd0\x2d\xc0\xac\x10\xd9\x8d\x82\x9a\x6b\xe6\x6b\xd5\xe3\xd6\x08\x71\x03\x99\x28\xab\x02\x85\x67\x58\xa1\x49\xb8\xbf\xd8\xe4\x2e\x89\xdc\xfe\x73\xd2\x0a\x89\x89\x19\x93\x3a\xf9\x75\xf7\x23\xfc\x86\xdf\x1b\x21\xf8\x0d\x1b\xfe\x82\xa5\x9f\x68\x16\xa9\xe9\xc3\x07\x4e\xf1\xd4\x0a\x3e\xb2\xb4\xf6\x90\x04\x6f\x13\x01\xe6\xc2\x18\xad\xe6\xd4\xc7\xe8\x23\xd1\x1a\x01\x53\x38\xfb\x44\xb3\x28\x9d\x55\xcc\x28\x09\x2a\x3b\xac\x85\x4c\x6e\x02\x4a\x54\x3c\xa3\x26\xe6\xde\xa5\x43\xfb\x34\x38\x1c\x6f\x2c\xc7\xf0\x06\x73\x56\xd0\x58\x66\x05\xe3\x9e\xea\xbf\x4f\xae\x30\x29\x30\xae\xcc\x43\x64\x20\xc9\x62\xf4\xa2\x72\xae\x14\xc8\x99\xc4\x0e\x1e\xa1\x20\x0c\x57\x60\xa5\x5d\x85\xf0\x35\x95\x42\x68\x38\x3c\x38\x39\x38\xda\x42\x03\x04\x77\x94\x9d\xb3\x82\x5a\x03\xce\x96\x3b\x72\xa3\x0e\xe4\x6a\x6c\x7a\x56\x56\xc5\x1a\x77\xef\x20\x3f\x06\x16\x0a\x44\x71\x35\x5f\x65\xcd\x9b\x93\x10\xda\x87\x1c\x0b\x4c\x1e\x83\x12\xa0\x25\x69\x1a\x57\xc5\xe0\x69\x06\xa8\x65\xed\x8c\xec\xc3\x83\x9f\x0f\x42\xcf\x29\xd5\xd9\x11\xdc\x0a\x7e\xa0\xf1\xb8\x4e\xe1\x3a\xf4\x56\xd5\x8a\x36\x25\x7e\x8f\xb1\x36\x3f\xa7\xe1\x80\x1c\x01\xf4\x53\x55\xb0\x8c\xe9\x62\x8d\xc6\x25\x88\x3a\x74\xdf\xb1\x86\x3d\xd1\x4d\x35\xe2\xb3\x4f\xc1\x27\xc9\x66\x34\x1b\x25\xf6\x12\x4d\x41\x6b\x70\x06\x32\x25\x0a\x0a\xb6\xa2\x27\x4b\x4a\x0a\xbd\x5c\x43\xf8\x1d\xe2\x82\x4f\xfe\x4e\xa5\xc0\x7a\xc9\xdc\xf1\x8d\xd1\xe8\x2d\xbc\x3b\x5e\x94\xf6\x97\x11\x7c\xaf\xc6\x5e\xfc\x9a\x7a\xbe\x8b\x60\x53\x07\xfe\xf9\xfa\xfa\xf2\x6b\xaa\xa3\x19\x1e\x66\x74\x4d\xea\x1d\x46\xb5\xa8\x9c\x0b\x59\x3e\xb1\x05\x12\x0e\x12\x9f\x40\x25\xe4\x53\x9b\x40\x4b\xa1\x02\xf6\x1d\xb6\xf6\x5e\x28\xed\x5b\x8f\xb4\x4f\x5a\x18\xdd\xcc\x69\x66\x76\x3c\x5a\x1a\x7a\xd7\x30\x07\xce\x2f\xa7\xf0\x17\x51\x9b\x55\x9c\x91\x59\x90\x25\x6f\xa8\xe9\xc8\xa2\xa8\x86\x17\x66\x11\x5e\x84\x04\x5a\x2d\x99\x73\xff\x67\x4a\x72\x2a\x15\x6a\x42\x4a\xa2\xf4\xa7\x0c\x86\xee\xf6\xc6\x15\xd3\x72\xae\x95\x16\x25\x2c\x2d\xe3\xf0\x8d\xee\x95\x5e\x76\xb2\x23\x14\xb9\x6f\xe4\x9a\x8d\x2f\x28\x90\xb4\x8a\xa1\xed\xdc\x6c\x7f\x41\xda\x68\x4b\x13\xd8\x93\x12\xc8\xb5\xe1\x3b\xa3\x0a\x08\x64\x78\x54\x82\x59\xda\xc5\x37\x67\xc5\x95\x4b\x0c\xe6\xc8\xb8\x3d\x24\x46\xa8\x04\xe7\x17\x44\xeb\x26\x1b\x27\xa1\x09\x42\x4a\x4d\x0f\x99\x20\x34\x37\x90\x4b\xac\xfc\x28\x88\x94\x49\x03\x3b\x00\x24\x11\x58\xb6\xa7\xd4\x06\x3b\x23\x2c\x3f\xc4\xcc\xe1\x80\xd0\xa2\xd6\x7d\x7a\xfc\xe5\x8b\x71\xf0\x20\xde\xfa\x55\xc1\xe5\x67\xb6\x8b\xcf\x68\x01\x24\xcb\xfc\x9a\x29\xf5\x49\x58\xd5\x89\xe2\x4c\x51\xb9\xf2\x4b\x98\xe8\x28\xd6\x92\x09\xdf\xf0\x4d\x43\x3b\x2a\xcf\x4b\xe0\x75\x39\x0b\x56\x52\x6d\x1d\x38\xa9\x63\x6f\x43\xaf\x79\xc4\x45\x8c\xa1\x36\x10\x96\xc6\x40\x22\x7c\x11\x7a\x2f\x5e\x99\x39\xff\xf1\x0f\x7f\xf8\xdd\x1f\xa6\x76\x59\xcd\x67\x04\xf2\x9c\x51\x20\x1c\xce\x4f\x2f\x4e\x7f\xba\xfa\xee\x0d\xd6\xe4\x0e\x3b\x85\x11\x92\xf9\x63\xa6\xf2\x47\x4c\xe4\x7f\xc4\x34\x7e\x2c\x58\x16\x28\xe1\x87\xb8\x2c\x64\x18\xee\xd1\xae\x95\x2d\xc3\xed\x5e\x8a\x36\x6c\x18\xc1\x93\x6d\xde\xc4\x83\xea\xe5\x11\x1e\x0e\x4f\x2e\x3d\x75\x56\x5d\x89\xec\x26\x9a\x97\xe7\xe0\xfa\xcd\xa5\x65\x18\xc5\xd1\x43\x78\x13\x60\x62\x7c\x25\x8a\x95\xd9\x4c\x02\xd7\x6f\x2e\x03\x95\xc5\xd4\xf0\xc0\x08\xab\xf5\x7b\xaf\x83\x32\x39\xdb\xd2\x4c\x0e\xda\xc9\xca\xaa\x08\x89\x28\x03\x76\x20\x90\x94\x14\x4c\x69\x96\xe1\x58\xdb\x18\x6c\x90\x57\x47\xdc\xf8\xe3\x39\x93\x7f\xac\xa3\xc8\xfe\xb1\x83\x0f\x91\xb2\x9e\x5b\x47\x5b\xcf\x55\x16\xec\x34\x39\x1e\x14\xfd\x09\xaf\x50\xe9\x1c\x6d\x61\x29\xe7\xcf\xd4\x72\x44\x33\xcc\xaf\xc1\x68\x9f\x78\xaf\xf7\x91\xb3\x1c\x43\x23\x28\x68\x77\x6e\x5b\x8e\x81\x6c\xdd\x84\x87\x96\x63\xa8\x5f\xc2\xd8\x9d\x5b\x96\x63\x24\xdb\x36\x59\x8e\xfb\xd1\x23\x58\x8e\x95\xa4\x57\x5a\x54\x51\x70\x76\x96\x55\x54\x94\xdd\x8c\xce\x85\xa4\x71\x60\x76\x1d\x00\x0e\xf2\x1a\x85\x31\xe1\x01\x95\x55\x9b\x30\x97\xe8\xc3\xd5\xbc\x53\xf6\x01\x4d\x96\x6c\xd9\x44\x55\x39\x55\xea\x04\xa1\x71\x75\x65\x9d\x94\x9e\x4c\xe7\x84\x15\xb5\xa4\xc7\x66\xa7\x69\x89\x7b\x75\x1c\x5a\xe4\xd1\x6c\x06\xe5\x96\x15\xd5\x99\x85\x51\x38\xd4\xa2\xff\xfe\x18\x9b\xcf\x1e\x1c\xdb\x27\x37\xbc\x59\x58\x26\x89\x5a\x52\x6c\x11\x4a\x3f\x31\xad\xec\x40\x25\x25\xca\xbb\x46\x34\x42\x5d\xdc\x41\x42\x13\x58\x41\x45\x94\xa2\xb9\xbf\x36\xe8\x41\x3e\xed\x00\x2f\x45\x7e\x70\xa0\xfa\x1f\xe3\xc9\x79\x21\x49\x46\xa1\xa2\x92\x89\x1c\xb0\xea\x7a\x2e\x6e\x39\xcc\xe8\x82\x71\xdf\x17\x80\xbb\x91\x66\xd0\xcd\x85\x37\x26\x2c\x0d\x00\x52\x35\x7d\x98\xa7\xf0\x71\xd0\x27\xd6\x5f\x6b\x89\x5a\x67\xa2\xd3\xd6\x6e\x75\x8f\x03\x38\x76\x48\x52\xac\xd6\x80\xd7\xbc\x26\x45\xb1\xee\xc4\x8a\x27\x67\x57\x98\x44\x3f\xd6\xc6\x7f\x66\x98\x5a\x73\x59\x43\x39\xf6\x2f\x68\x7f\x29\xfc\x65\x93\xa4\x24\x5b\x86\x25\x53\x24\xe8\xee\x03\x94\xa0\xbb\x09\xba\x7b\x27\x25\xe8\x6e\x82\xee\x26\xe8\x6e\x82\xee\x26\xe8\x6e\x82\xee\x8e\xa4\x04\xdd\x7d\x88\x12\x74\xf7\x4e\x7a\x96\xa1\x89\x04\xdd\x4d\xd0\xdd\xbd\x29\x41\x77\x13\x74\x77\x1c\xdf\x04\xdd\xf5\xa2\x04\xdd\xbd\x97\x12\x74\x37\x84\x12\x74\xd7\x97\x12\x74\x77\x34\x25\xe8\x6e\x82\xee\x06\x50\x02\x60\x78\x50\x82\xee\x46\x78\x38\x3c\xb9\xf4\x4c\xd0\xdd\x04\xdd\xdd\x93\x92\x7f\xac\xa3\x04\xdd\x0d\xa0\x04\xdd\x7d\x90\x12\x74\x37\x41\x77\x03\x78\x3d\x3f\xcb\xb1\x81\x88\x5e\x4a\x31\x0b\x2e\x2d\x7d\x89\xe0\x28\x96\x59\x8f\x9a\xb9\x27\x21\xc0\xcb\x66\x68\x53\x78\x33\xc4\xcc\x61\x7f\x2b\x57\x3e\xd2\x83\xaf\xc3\x84\xda\x31\x62\x69\xcc\xe9\x8e\x6a\xb7\x1e\x8c\x47\x42\xba\x9a\x82\xce\xea\xa4\x12\xf6\xff\x3a\x40\x57\x0f\xc9\x65\xbd\x93\xbe\xb5\x72\x9f\xa4\xea\xaa\x3f\x7c\xeb\x4e\xe8\x16\x08\xaf\x32\xce\xd0\x3d\xf4\x37\x61\x5b\x43\xf0\x95\x27\xef\x21\x64\x6b\x08\xbc\xf2\xb5\xfc\xbd\xe1\x5a\xcf\x00\xb8\x17\x0c\xd1\xba\x03\x9e\x15\xa8\xbd\x36\xa0\x59\x0d\xb8\x2a\x80\xe3\x4e\x58\x56\xe0\x28\xb7\x20\x59\x0d\xa8\x2a\xc2\xcc\x11\x7b\xda\x07\x54\x05\x46\xf9\x7b\x50\xac\x3e\x98\x2a\x80\x6b\x0f\x86\xb5\x0d\xa4\x0a\xd9\x29\xbd\x0b\x44\xe5\x30\x40\x21\x8f\xcb\x01\x80\x6a\x07\x04\x2a\x80\x37\x82\xa7\x22\xc3\x9f\x76\x42\x9f\xc2\xec\xd7\x1d\xb0\xa7\x06\xb8\x14\xb2\xb0\x1d\xe4\xa9\x0f\x5a\x0a\x39\x02\x2d\xdc\x69\x13\xb0\x14\xe4\x02\xc9\x63\x83\x95\x62\x84\x86\x83\xc3\xc2\x81\x96\xaa\x4b\x13\xba\x5e\x4a\xaa\x96\xa2\xf0\x54\x05\x03\x35\xf0\x9e\x71\x56\xd6\xa5\x91\x39\xca\xc8\x6d\xb6\x0a\xcc\x61\x52\x2d\x5a\xd5\x1a\x81\x18\x53\xf6\xd6\x78\x28\x51\x24\xcd\x91\xbb\x39\x62\x58\xd0\x7d\x49\x56\xfe\xa6\xbe\xaa\xb3\x8c\xd2\x9c\xe6\x03\xbf\x26\xfc\x6e\xda\xac\x85\x27\x5f\xdb\x20\x95\x29\x78\x15\x62\x61\x84\xbc\x88\xe6\x42\x96\x44\x23\x8f\xdf\xfd\xd6\x83\x43\x10\xf6\xed\x51\x70\x6f\xd1\x31\x6f\xc1\x66\x5c\x98\x2f\x2f\xc0\x8f\x17\x6e\x3f\x86\xf9\xef\x76\x63\xdb\xc2\x74\xdc\x2e\x5c\x5b\x18\xc7\x47\xc0\xb4\xed\xc4\xb3\xf5\x91\x5f\x61\x96\x6e\x18\x96\x2d\x12\xe2\x35\x18\xc3\xf6\x38\xf8\xb5\xdd\xd8\x35\x94\x2e\x21\xc6\xc5\x10\xb7\x16\x8e\x3c\x7b\x16\xa6\xc5\x63\xa0\xcd\xb6\x91\x66\x6e\xb1\xc2\xbc\xd8\x2d\xca\x2c\x1e\x4a\x2c\x12\x42\x2c\x06\x3a\x2c\x18\x19\x16\x8e\x0a\x8b\x85\x08\x8b\x81\x06\xdb\xea\x02\x1a\xe1\x04\x41\xd3\xb8\x31\x0a\xbe\x3a\x96\xf7\x38\x0a\xfa\xeb\x71\x97\x2b\x06\xea\x2b\xc2\x7a\x85\xa1\xbd\x1e\x07\xe9\x15\x13\xe5\x15\x63\x89\x82\x62\x74\x8f\x83\xec\xda\x89\xea\x02\xef\xfc\x77\xd8\x74\x77\x4d\xfb\x91\xb5\x00\xa6\x1b\x68\xae\x7e\x54\x2d\x80\x6b\x8b\xe4\x8a\x1b\x51\x0b\x8c\xa6\xc5\x8a\xa4\x45\x8a\xa2\x3d\x12\xf6\x2a\x14\x77\xb5\x1b\x73\x65\x6c\x90\x80\x03\xb1\x85\xb7\xea\x10\x53\x01\x5c\xfb\x3e\x89\x30\xb4\x54\xe0\x86\x32\xce\x34\x23\xc5\x5b\x5a\x90\xf5\x15\xcd\x04\xcf\x3d\xad\x89\x8d\x5e\xd5\x0e\x2d\x30\x07\x65\x99\x7a\xce\xcf\x7a\x82\x86\xb5\x2e\x96\x44\x81\x7f\xec\x12\xba\xc2\x29\x4d\x78\xd4\x19\xa6\x40\x30\xf8\x68\xd6\xc3\x33\x7c\x09\xcf\x2e\x84\x09\xcf\xc2\xe5\x64\x4b\x7e\xc4\x3b\x5e\x7f\x16\xb7\x20\xe6\x9a\x72\x38\x64\xbc\x39\x61\x47\xbe\xde\xa7\xd6\xd9\xd4\xf9\x33\x5b\xa7\xa1\x3f\xcf\x57\x2f\x9b\x81\xb5\x2e\xc7\x20\xc3\xec\x73\x76\x39\xa2\x33\x56\xa9\xe7\xe9\xd1\x76\x83\x7b\x2c\x97\xb6\x63\x3f\xaf\x0b\x2b\xcc\x7c\xfd\x37\xe8\x0c\x77\x0e\xf2\xa1\x4f\xdb\xf3\x58\x00\xbc\x77\x66\xce\x2b\x9c\x79\x2b\x0d\x09\xcf\xc1\x95\x3b\xf3\xe6\xdc\x3f\xf0\x9f\xf5\xd1\x0d\x44\x11\x3f\x16\x82\xf8\x4e\xf4\xb0\xc5\x00\x7b\x72\xdd\x42\x0e\x77\xf8\x5f\x5f\x8e\x43\xd4\x70\x1f\xfb\x1b\x30\xc6\xae\x2b\xb3\x3f\xee\x37\xc5\x08\xfc\xfe\xf6\x4e\x7c\x2f\x86\x0b\x02\x4c\xe2\x0d\x6c\x6f\xac\x34\xf8\x61\x0a\x7c\x28\x46\xfc\xd9\xbc\xf6\x1b\x34\x6e\xa8\x6f\x2c\xbd\xf6\xd3\x6b\xff\x01\x7a\x84\xd7\xbe\x66\x25\x15\xb5\x7e\xb6\x0f\xce\xdb\x25\xcb\x96\x7d\x5b\x90\x95\xde\xaa\x5a\xd4\x7a\xc3\x5e\x73\x43\x8c\x08\x45\x48\xaf\xce\x0d\xf2\x8b\x69\xec\x70\xa8\x86\x57\xbf\x6d\x11\xb2\x40\x14\x10\x78\x7b\x71\xf5\xd3\xbb\xd3\xff\x38\x7b\x37\x85\x33\x92\x2d\x83\x58\x33\x0e\x04\x35\x1b\x8a\xb0\x25\x59\x51\x20\x50\x73\xf6\xb7\x9a\xfa\xea\x85\xc3\x76\x7c\x47\x51\x30\xdd\x01\x12\xc8\xe8\x24\x0f\xd9\x30\xd8\xc4\x77\x4c\x69\xb3\x89\xc8\xcb\xd5\x19\x13\x5e\xfe\xc0\xb9\x14\xe5\xa6\x6a\x3b\x33\xcc\xac\xe9\xed\x69\xcd\x2d\xa9\xa4\xb0\x60\x2b\x87\x7c\xb6\x18\x50\x20\x79\x40\x55\x39\x23\x05\xcc\xc5\x31\x8f\x03\x32\x43\x40\xe1\x92\x02\xa7\xda\x5c\xfa\xd6\x95\xe9\x87\xae\xec\x15\xff\x86\x5a\x51\x75\x0c\xb3\x1a\xc1\xa1\x95\x64\x25\x91\xcc\x0b\x82\xd1\x1b\x30\x29\xa6\x70\x21\x9a\xe7\xd1\x1a\x97\xd6\xc7\xdf\x64\xac\x19\x5c\xda\xb7\x1f\xce\xae\xe0\xe2\xc3\x35\x54\x12\xeb\x04\xfb\x22\x2b\x91\x23\x1e\x81\x19\x35\xa3\xb2\xc7\x28\x9f\xc2\x29\x5f\xfb\xee\xbd\x55\x32\x4c\x81\x79\x0f\x51\x6e\xd8\xba\xf0\x54\xee\xed\x7c\x7a\xf1\x72\x8a\xff\x7b\x61\xce\x90\x34\xa6\x5c\x0b\xd7\x0d\x11\x34\x4d\xd2\x88\x35\x0f\xd9\xac\xa0\xdd\x7d\x70\x27\xcb\xc7\x5a\x8a\x26\x5f\xfc\x50\x19\xde\x68\x8c\x0d\x88\xbd\x5b\xd7\x4b\x73\x46\x24\xad\x24\x55\x94\x7b\xbe\x59\x48\x7b\x51\xf1\xc4\xa1\x80\x37\x12\xa6\x08\x4c\x6c\x0b\x7c\xed\x86\xbc\x75\x27\xdd\xc8\x2f\xfd\x2e\x4a\xe8\x83\x77\xf0\xf9\xbe\x66\xf9\xce\xe7\xd7\x3c\x2c\x63\xb7\xd5\x47\xcd\xc5\xaf\x44\x7e\xa0\xe0\xdc\x1f\xf7\xe4\x6e\xfd\x14\xae\x97\x4c\x75\x2f\x1b\x63\x2b\x32\xff\x72\x4f\x78\x16\x6d\x60\xf9\x18\x5e\xc2\x9f\xe0\x13\xfc\x09\x1f\x5f\x7f\xf4\x7d\x23\xc5\x78\xe0\x84\xba\xf6\xac\x1f\xe4\xfc\x32\xca\x89\xf8\x7e\x49\x34\xf2\x83\xf3\xcb\x10\x70\xe3\x8c\xf1\x1c\x8f\x02\xfd\xa4\xa9\xe4\xa4\x68\x9e\xe6\x61\x2b\x1d\xf0\x04\x34\x93\x7a\xf6\x17\xc7\x56\xb0\x38\x9f\x7b\x73\x6c\xad\xf4\x63\xd0\x83\xab\xe3\xcd\x11\xaf\xdc\xce\xab\xe3\xcd\xd2\x5e\x39\x38\x9f\xa3\xaf\xed\xc2\x69\x0a\xa6\x7a\xa3\xf7\x5f\xd2\x76\xd6\x25\xd1\xd9\x72\xa8\xd6\xfc\x5d\x21\xef\xcd\x95\xe8\x4a\xef\x43\x2e\xd0\xb7\x1c\x54\x34\xd8\x0c\xf5\xf3\x16\x3c\x21\x90\xbb\xc1\x7d\x3a\x9f\x6f\x9e\x5c\xef\x55\xbd\xcb\x0d\x16\x54\x91\xd8\x3d\x46\x7b\x8d\x35\x2a\x91\xdb\x97\xaf\x37\x4f\xb3\x78\x79\xcf\x3e\x1a\x3c\x80\xfd\x35\x67\xff\xe1\xec\x2a\x3a\x85\x26\x0f\x5a\xd1\x6d\x34\x43\x46\xb8\x4d\xba\x9e\x53\x29\x43\x8e\xbe\x80\xd9\x1a\x91\x6b\x2c\xa3\x81\x97\x20\x40\x27\x54\x52\x68\x91\x09\xef\xa2\x1e\x43\x70\x9f\x63\x86\xcb\x1d\x12\xbe\xea\x22\x9a\xdf\xbe\xbd\x3c\x86\xeb\x37\x97\xc7\x20\x24\x5c\xbd\x09\xc1\xd7\xf4\x3d\x77\x2f\xae\xdf\x5c\xbe\x78\xb2\x45\x87\xe6\x5d\xf8\xda\xab\x4c\xd0\xc0\x8d\x6b\x9e\x9c\x93\x92\x54\x93\x1b\xba\xf6\xb0\xaa\x43\x6d\xfa\x49\x7b\x82\x22\x4c\xc3\x2e\x6c\x49\xaa\x91\xbc\x24\x25\x39\x7b\xa6\x95\x1b\xdc\x0d\xef\xc6\xb8\x59\xc2\xc1\x83\x27\xca\x9f\x52\xac\x68\x6e\x1f\xef\xcd\x67\x50\x9e\x57\x82\xf9\xbd\x58\x53\x25\x88\x87\x29\x55\x82\xd8\x8f\x52\x25\x88\x21\xa5\x4a\x10\x01\x3c\x53\x25\x88\x54\x09\xc2\x52\xaa\x04\x91\x2a\x41\x78\x52\xaa\x04\xf1\xf0\xe0\x52\x25\x88\xcf\x16\xdb\x9a\x2a\x41\x3c\x4c\x09\xe5\x99\x2a\x41\xa4\x4a\x10\x5b\x94\x2a\x41\x3c\xb5\x69\x91\x2a\x41\xa4\x4a\x10\x0d\xa5\x4a\x10\x23\x28\x55\x82\x18\x47\xa9\x12\xc4\x83\xf4\xcc\x72\x43\x52\x25\x88\x94\x1b\xb2\x2f\x9f\xe7\x97\x1b\x02\xa9\x12\x84\x1f\xa5\x4a\x10\xe3\x29\x55\x82\x18\x47\xa9\x12\xc4\x78\x9e\xa9\x12\x44\x47\xa9\x12\x44\xaa\x04\xf1\x99\x1e\xdd\x54\x09\x22\x55\x82\xd8\x4d\x29\x46\x90\x2a\x41\x8c\xa3\x54\x09\xc2\x9f\x69\x7a\xed\xfb\xf3\x79\x7e\xaf\xfd\x54\x09\x22\x55\x82\x78\x90\x42\x4c\x37\x49\x95\xa8\x65\xe6\xa3\x22\x87\xe7\xea\x8d\x28\xab\x5a\x53\xf8\xd8\x30\x6c\xf5\xbe\xc7\x9c\x66\x6b\x9b\x70\xd5\x93\x8e\x4f\x01\x9b\xce\x04\x9f\xb3\x45\x2d\x31\xf9\xfe\xa4\x24\x9c\x2c\xe8\x24\xb3\x13\x9d\xb4\x2b\x37\x69\x47\x79\xf2\x59\x41\xa7\x0b\x56\x32\x9f\x0a\x12\xb0\xb5\xf7\xef\x90\x53\x17\x1f\x0d\x80\xb7\x94\xe4\x13\x3e\x88\x48\x29\x6a\xae\x6d\x9e\x00\xae\xb7\x27\xcf\x76\x97\x6c\x9c\xdb\x3c\x09\xbb\x43\x10\x00\x11\x78\x06\x47\x07\x62\x18\xe7\x5d\x2d\x8d\xcb\x60\x6b\xb9\x22\x5a\x53\xc9\x5f\xc3\x7f\x1e\xfe\xf5\x8b\x9f\x27\x47\x5f\x1e\x1e\xfe\xf0\x72\xf2\xef\x3f\x7e\x71\xf8\xd7\x29\xfe\xe3\x5f\x8f\xbe\x3c\xfa\xb9\xf9\xe2\x8b\xa3\xa3\xc3\xc3\x1f\xbe\x79\xff\xf5\xf5\xe5\xd9\x8f\xec\xe8\xe7\x1f\x78\x5d\xde\xd8\xaf\x7e\x3e\xfc\x81\x9e\xfd\xb8\x27\x93\xa3\xa3\x2f\x7f\xe3\xfd\x38\x0c\x30\x3f\xe2\x18\x1f\x51\x4c\x8f\x47\x30\x3c\x1c\xba\x24\x8a\x78\xf8\xe8\x78\xc5\x11\x10\xce\x63\x12\x5f\x40\x34\xfa\x0a\x33\x88\x9b\x31\xfb\x3b\x21\x45\xc9\xb4\xa6\x39\xba\x8c\x7a\xe5\x45\x7c\x71\xe0\x4c\x0f\x9a\x71\x3b\x91\x8b\x09\x46\xde\x10\x68\xa6\xfa\xb8\xea\x5e\xa6\xac\xd0\x4b\x2a\x6f\x99\x77\x3c\xc8\x3c\x90\x78\xe7\xcd\x40\x21\x38\xc9\xe9\x9c\x71\x6f\x07\x09\x1a\x71\xa3\xed\xb7\x24\x86\x93\x18\x1e\xc3\xe5\x39\x89\x61\x45\xb3\x5a\x32\xbd\x7e\x23\xb8\xa6\x9f\x3c\x1c\x22\x43\x29\x7c\xe5\xd8\x81\xc0\xef\xf8\xe6\x39\x55\x22\x6f\xb2\xda\x64\xcd\x31\x75\x3d\xd0\xa4\xda\xe7\x1e\x57\xa2\x60\xd9\xfa\xa4\x59\x12\xbc\xb0\xf4\x93\x3e\x79\xb4\x37\x80\x26\xea\xa6\x13\x1f\x74\x62\x5e\x7e\x9d\x94\xd8\x1a\xc7\x67\x65\xf8\xa3\x25\x7c\x29\xd9\x8a\x15\x74\x41\xcf\x54\x46\x0a\x94\x8f\x31\x74\xfd\xe9\x1d\xbc\xfd\xe3\x43\x5a\x8a\x42\xc1\xed\x92\x1a\x9d\x04\xc4\xcc\x1d\x5d\x6f\x19\xf1\x65\xba\x20\x8c\x43\x69\x8e\x41\xd5\x0c\xd4\xdc\x06\xa3\xb1\xbc\x15\x7e\x45\x24\xe5\xba\x19\x9c\x2b\x30\x34\x13\xa2\x70\x29\x76\xde\x98\xeb\x76\x05\x5c\x2e\x31\x17\x3f\x71\x7a\xfb\x93\x19\xb9\xef\x58\xe7\x05\x59\xb4\x35\xcb\x14\xd5\x0d\xd8\x2b\x24\x23\x1b\xec\xa9\xb4\x93\x8f\x7c\x08\x30\xa7\xaa\xa6\x40\x8a\x5b\xb2\xc6\xa3\x10\x67\xbc\x4c\xbd\x86\x57\x47\x28\xc6\x88\x82\x76\xbc\x39\xfc\xd6\x37\x44\xbe\x24\x0a\xde\x9c\x5e\xfe\x74\xf5\x97\xab\x9f\x4e\xdf\xbe\x3f\xbf\x08\x31\x27\xcc\xe9\xa1\x5e\x87\x3c\x23\x15\x99\xb1\x82\xf9\x5b\x11\x5b\xb8\xcb\x3e\xcb\x00\xa3\x30\xcf\x4f\x72\x29\x2a\xbb\x87\xb2\xe6\x58\xd6\xaf\xab\x7f\xe3\xeb\x49\xee\x7b\x0d\x7b\x15\x02\xcd\xe1\xf6\x75\x46\xce\x07\x53\x86\x85\x24\xdc\x58\xf3\xe8\x99\x0a\x88\x76\x3b\x68\x8e\xac\xb9\x66\xe5\xe7\x9b\x7c\x4d\xf2\x58\x89\xd7\xa7\x79\x4e\xf3\x18\xc7\xeb\x39\x26\x1e\xbc\x69\xa6\x15\x92\x71\x03\x5d\xd5\x44\xb8\xfc\x70\x75\xfe\xbf\xe3\xac\x16\xb8\x15\x0b\x09\x60\x45\xa8\xd9\x22\x45\x15\xe9\x24\x7d\x74\xd5\x3b\xd2\x59\xba\x8f\x7e\xa1\x67\xa9\xb5\xe4\x62\x60\xa6\x3e\xd6\xbc\x27\xab\xbd\x0b\x18\x74\x63\x82\x52\xe4\x74\x0a\x97\xd6\x40\xa2\x2a\x0a\xcf\x5e\xd9\x38\x22\x29\x18\xc6\x5c\x33\x52\x78\x9b\x9a\xf4\x6f\x35\x5b\x91\x82\xda\x04\x3f\x2c\xe1\xd0\xaf\x1f\x18\x41\x37\xcf\x49\xa1\x82\x94\x9e\xbf\x4d\x64\x8c\xd3\xf7\xa2\xe6\x31\xf0\x49\x2d\x2f\xc8\x29\x17\x3a\xc8\x9f\x69\xe6\x85\x05\x1f\xa5\xc8\xc0\xfa\x34\x83\xa0\xd8\x0d\x36\xaf\x67\x54\xa1\x01\xe7\x5f\x34\x19\xac\x09\xee\xf6\xf1\xb2\x9d\xbb\x8d\xfd\xd6\x2a\x68\xfa\x5b\x26\x51\x28\x94\xc5\xcc\x5f\x52\x92\x63\x25\x9f\x8a\xe8\xa5\xc5\xe9\x95\x44\xdd\x78\xfb\x1e\x91\x8d\x7b\xd3\x39\x2f\xb1\x2d\xc0\xd3\x2e\xc6\xb5\xbf\xf0\x9b\x53\xa2\x6b\x49\xed\xab\xcc\x26\x03\x52\x4e\x66\x85\x2f\xb2\x3a\x50\x90\x9a\xb5\xfb\xc0\x8b\xf5\x47\x21\xf4\x57\x6d\xb5\x95\x08\x97\xe6\x7b\xf7\x82\x1f\x06\x76\x03\x1e\x5a\x08\x91\xcb\x27\xb8\xd1\x28\xac\xc2\x8b\xc3\xb8\x33\x6e\x8e\xfb\x13\x8a\x2a\x59\xf3\x53\xf5\xb5\x14\xb5\xa7\x65\xb4\xf5\x78\xfb\xfa\xfc\x2d\x4a\xf4\x9a\x07\x3c\x5e\x28\xd7\x72\x8d\x95\xd0\x62\xb4\x7d\x80\xbe\xbf\xe0\x5b\xa3\x12\x37\xee\xbf\xaf\xa0\x9a\x43\xcd\x15\xd5\x53\x78\x4f\xd6\x40\x0a\x25\x1a\x27\x87\xb7\xca\xbd\x44\x44\x7e\xdf\x15\x3b\x05\xac\x2c\xea\xfd\xb8\x64\x1c\x66\x42\x2f\x61\x83\x6d\x40\x29\xd1\xed\x31\x62\x85\xa8\x20\x20\x7d\xd7\x99\x83\xf1\xcd\xa1\xfa\x4a\x7c\x72\x43\x15\x54\x92\x66\x34\xa7\x3c\x0b\xba\x5f\x91\x10\x33\x7f\xfc\xbd\xef\x0d\xbd\x10\xdc\x08\xc9\x08\x77\xf4\x9c\xe7\x2c\x23\xda\x7a\x21\x75\x14\x07\x03\x62\xf5\x9c\x67\x8b\x60\xf1\x20\x23\x22\x3d\xd9\xd6\x8a\x4a\x8c\x8a\x6a\x59\x53\x7b\xb0\xbe\xa9\x67\xb4\xa0\xda\xb7\xd8\x22\x34\x15\xa0\x89\xb6\x95\xcd\x58\x49\x16\x14\x88\x6e\xc4\x80\xbf\x8f\x89\x72\x65\xd4\x29\xae\x24\xd3\x90\x0b\xda\x96\xe4\xf2\x75\x76\x28\xf8\xf6\xfc\x2d\xbc\x84\x43\xb3\x86\x47\x68\x4f\xcc\x09\x2b\xfc\x6b\x73\x60\xd6\xc0\x86\xfd\xc3\xe6\xcd\x70\x7d\xb5\xd7\xb9\x93\x7d\x20\xa4\x55\x5f\xc7\xc0\x05\xa8\x3a\x5b\x36\x6b\xed\xef\x83\x6d\xdc\xc5\x2e\x03\x08\x71\x34\x4e\xc0\x7a\x72\x6c\xc5\xf2\x5d\x02\xd6\x77\x6d\x2d\xd3\x5d\x02\xd6\x3b\x3e\x99\xdf\x25\x60\x83\x10\x89\xcf\x5c\xc0\x06\x1a\x30\xdf\x2a\x2a\x23\xd9\x2f\xdf\x3e\x73\xfb\xa5\xff\xc4\x35\xb2\xb2\xdb\x59\x7f\x03\xc1\x0a\xc4\x92\x6a\x92\x13\x4d\x9c\x5d\x13\x5a\x43\x74\xdb\x26\x4a\x97\xef\x79\x5e\xbe\xa7\xb4\x6e\x14\x7d\xc7\x78\xfd\xc9\x26\xac\xc4\x0a\x20\x5d\x9d\x21\x53\xc8\xc2\x96\x18\x8f\x2e\xa9\xaa\x82\x61\x45\xc9\x8d\x1c\x8a\x20\xc5\xd9\x6f\x14\x10\x2e\x1c\x9a\xe7\x0c\x2a\x4e\x52\x14\xc2\x18\x78\xe6\xcd\x4a\x78\x2e\x7c\x91\xec\x1b\x8b\x88\xce\x0e\x3a\x68\x93\x37\xc5\x4b\xee\x7b\xd7\x92\x68\xf8\x0c\x44\xc3\x93\x06\xfe\x0a\xba\xa2\xde\x7d\x0d\x36\xbb\x0f\x1a\x5e\xc0\x54\x73\xac\x03\xa2\x07\x38\x2c\x28\xc8\x8c\x16\xd6\xf2\xb7\x22\x22\x42\x3e\x5c\xb0\x70\x89\x12\x26\x93\xa2\x88\x55\xef\xe3\xa3\x28\x30\x19\x86\x44\x58\x76\x33\xac\x5f\xf0\xaa\x23\x8b\x38\xab\x7e\xbd\xae\xa2\xad\x3a\x86\x0c\x7e\xb9\xab\x5e\x7b\x3f\x1c\x60\x73\xd5\xcd\x1b\x24\xd6\xaa\xa3\x61\xff\xcb\x5c\x75\x45\xb3\x4c\x94\xd5\xa5\x14\x73\xe6\x2b\x67\xb6\x0c\x3e\xc7\xb4\x81\x9b\xfa\x1b\x7c\xb5\xa2\xbb\x12\xc2\x02\x0c\x91\xc1\xc0\x30\x78\x5a\x49\xb1\x62\xb9\xf7\x7b\x8d\x68\x6b\xd7\x34\x09\xd4\xff\x23\xd8\x7c\x44\x85\xb6\x61\x89\x06\x2e\xa5\x58\x51\x29\x9b\x4e\x02\x66\x94\x8e\xdd\x67\x5a\x3a\xd8\x1b\x6f\x10\xc1\x08\x12\x19\x29\xb0\xf1\x5f\xc8\x8d\x81\xcd\x5b\xb3\xc9\x36\x40\xb4\xb0\xd6\xa3\x8c\x80\x59\xc3\x0d\xc2\xf2\x2f\xa0\x69\xa8\x8d\xbc\x1c\x2e\x80\x8b\x9c\x3a\x34\x78\x00\x5b\x57\xfe\xd4\xc6\xa9\x9b\xd1\x86\xa7\xc1\x1b\x6b\xbb\xc1\x6f\xe7\x6e\xc4\x01\x1c\x71\xae\x5a\xb8\xfe\x08\xef\x83\x1b\x20\xda\xcd\xa7\x3c\x67\x7c\x81\x11\xe6\x63\x90\xb4\x20\x01\x05\x7a\xa0\xd3\x29\x37\xd6\x3d\x7f\x80\x12\xd3\x2d\x41\x00\xd7\x46\x64\x36\x9b\x83\xaf\x59\x26\x78\x48\x49\x01\x5c\x41\x0c\xde\x36\x2f\xce\x79\x28\x86\x88\x29\x78\xf1\xae\xb9\x44\xde\x9d\xc8\x9e\x9b\xe9\xf8\x02\xed\xbd\xf6\x46\x07\xac\x8f\x45\x6c\xdc\x30\x9e\xbb\xfc\xff\xfe\xa6\x86\xf0\x6d\xfa\x5f\x5b\xbf\xcc\x14\xbe\xc3\xe6\x9e\x61\xea\xca\x10\x91\xf4\x35\xfc\x95\x43\xbb\xa9\x30\xe9\x04\x5a\xd0\xcd\x43\x51\xb8\x25\xd0\x42\xc5\x43\xd7\xee\xc9\x0a\xb4\x8f\xd6\x09\x14\x56\x23\x0d\xac\xba\xdb\x05\x96\x09\x5b\x02\x84\x3a\x34\x57\xba\x1d\x7a\x98\x89\x9c\x4f\xe1\x5b\x8e\x32\xc7\xac\xef\x04\xb8\x88\xb0\x5d\xdd\xb2\x36\x27\xec\xc5\x53\xdd\xed\x5b\xc6\x73\x71\xab\xe2\xfa\x46\xbf\xb7\x4c\x1b\xc7\x93\x6f\xc5\x27\x45\xb5\x66\x7c\xa1\xfa\xfe\x51\x52\x14\x11\xf0\xf5\xbb\x1c\xa4\x61\xb7\xbb\xed\x8f\xbf\xed\xc0\x0b\x8c\x50\xda\x43\x68\xf1\x19\x8d\xc3\xd1\xd7\xdd\xba\x8d\xcf\xd8\xe5\x70\x0c\x80\xbf\x25\x87\xe3\x43\xb4\x28\x15\x79\x23\xcd\x24\x34\x23\xc5\x55\xe5\xdb\xee\x0f\x36\x2f\xde\xd7\xef\xaf\x4e\x87\x8c\xc3\x2c\x8f\xdb\x25\x95\xf6\x6d\x65\x38\x03\xc9\x4b\xa6\x94\x7f\xc0\xdd\xd0\x2d\x9d\x2d\x85\xb8\x81\xc3\x26\x51\x71\xc1\xf4\xb2\x9e\x4d\x33\x51\xf6\x72\x16\x27\x8a\x2d\xd4\x89\x13\x4c\x13\xb3\x5e\xbe\xe9\x4b\x38\x13\x5e\x30\xee\xe0\x8d\x18\x66\xe0\x5a\x81\xf0\xef\x1c\x0e\xdd\x92\x64\xed\x6a\xe3\x89\x0f\x51\xb6\xd8\xe3\xd8\xe6\xe2\xec\xd8\xc8\x8b\xb0\x52\x5f\x58\x1c\xfe\x49\xad\xc7\xed\x43\x7f\x11\xd4\x7b\xe0\x81\x83\x1f\xb8\x5e\xb6\x67\xa2\xad\x4b\xe7\x42\xeb\xe6\x33\x02\x38\x6e\x9c\x14\xe7\x05\x7a\x5a\x0f\x7c\x83\x69\x88\xb8\x13\x88\x6d\x70\x2c\xc3\x9e\xe5\x8d\x05\xd1\xa1\x24\x7a\x78\x87\x00\xd6\x9b\x48\x89\x16\xf3\x10\xc0\x73\x33\x59\x2f\x0a\x62\x02\x1e\x11\x35\x01\x7b\x23\x27\x02\x3e\x60\x68\xb0\x44\xb2\x02\xe0\xee\x28\x69\xa0\x40\x7f\x34\xc3\x05\xa2\x19\x2f\x10\x76\xf1\x5d\x65\xdf\x28\xdd\xaf\xaf\x7a\xbc\x82\x5e\xf2\x0d\x3e\xd4\xec\xa8\xad\xef\xde\x56\x4d\x2e\xd6\x4d\x8d\x7a\xf6\x77\xbf\xb3\x6e\x8e\x60\x67\xe3\x73\x61\xcb\xc0\xf4\x8a\xbe\x7b\xf0\x74\xed\x6f\x73\x30\x0f\xd6\xa2\x71\xe2\x97\x55\x61\x2c\x97\xc1\xe8\x3d\x47\x8c\x1c\x7b\x0d\xb6\x8f\xdb\xe5\x09\xe9\x03\xee\xca\xe6\x1f\xc3\x7f\xd7\x4a\x03\x69\xb3\xef\x9b\xda\xcf\xb8\x93\x1e\xcc\x9b\xb2\xd4\x98\x4a\x92\x11\xde\xb6\x7e\xd2\xa2\x89\x41\x78\x70\xcd\xd9\x7c\x4e\x9b\xfa\x03\x33\x0a\x15\x91\xa4\xa4\x1a\x33\xc3\x7c\xe1\xc4\x33\xba\x60\x36\x3d\x5b\xcc\x81\x98\x05\x3d\x38\x50\x5d\x41\x61\x1f\xf9\x81\x49\xdf\x4c\x43\xc9\x16\x4b\x8d\x97\x1c\x08\x14\x82\x2f\xb0\x6c\xa4\x1f\x9a\xb6\x10\x24\x07\x94\xf5\x42\xc2\x2d\x91\x25\x10\xc8\x48\xb6\x44\x98\xb2\x17\x78\x31\xaf\x25\x76\xee\xd6\x94\xe4\xeb\x89\xd2\x44\x9b\xb7\x2e\xb5\x25\x84\xec\xce\x79\x70\xcd\xb6\xca\x17\xda\x33\x80\xc1\xc9\x19\xd5\x3e\x7e\xe4\x26\x73\xc8\xa5\x0b\x35\xf6\x70\x5f\xd8\x04\x70\x9d\x17\x64\xf1\xdc\xea\x65\xa6\x46\xf3\x8e\x52\xa3\xf9\x7d\x29\x35\x9a\xdf\x9b\x52\xa3\xf9\xd4\x68\x3e\x35\x9a\x4f\x8d\xe6\x53\xa3\xf9\x0d\x4a\x8d\xe6\x53\xa3\xf9\x7b\x28\x35\x9a\x7f\x98\xe1\x53\xa3\xc5\x7e\x19\x4d\x64\x52\xa3\xf9\xd4\x68\x7e\x40\xa9\xd1\xfc\x53\x9b\x16\xa9\xd1\x7c\x6a\x34\xdf\x50\x6a\x34\x3f\x82\x52\xa3\xf9\x71\x94\x1a\xcd\x3f\x48\xcf\xac\xf5\x5c\x6a\x34\x9f\x5a\xcf\xed\xcb\xe7\xf9\xb5\x9e\x83\xd4\x68\xde\x8f\x52\xa3\xf9\xf1\x94\x1a\xcd\x8f\xa3\xd4\x68\x7e\x3c\xcf\xd4\x68\xbe\xa3\xd4\x68\x3e\x35\x9a\xff\x4c\x8f\x6e\x6a\x34\x9f\x1a\xcd\xef\xa6\x14\x23\x48\x8d\xe6\xc7\x51\x6a\x34\xef\xcf\x34\xbd\xf6\xfd\xf9\x3c\xbf\xd7\x7e\x6a\x34\x9f\x1a\xcd\x3f\x48\x21\xa6\x9b\xd2\x39\xf3\xe8\x30\xf8\x38\x2d\x04\x1c\x5a\xb6\x57\x96\x71\x56\xcf\xe7\x54\xa2\xd9\x8d\x23\xf5\x72\xdc\xec\x4e\xd2\x9f\x36\x69\x0a\x3e\x3c\xad\xe1\xa7\xa8\x3e\xc6\x6e\x07\xca\x26\x4e\xe3\x10\xfd\x00\x8f\xc3\x21\xba\xea\x94\xd8\x57\x4f\x52\xe5\xf7\xbe\x66\x1c\xce\x3e\x7c\x35\x8d\xd0\x3d\x21\xa4\xf0\x30\xae\xc9\x07\x9e\x85\x26\xeb\x74\x87\x2c\xac\x08\x68\x53\x00\xd4\x9d\xb5\xac\x10\xca\x62\x6b\xed\xe6\x65\x4b\xc2\x39\xf5\x49\x50\xb1\x02\x91\x69\x74\xbb\xcd\x28\xe5\x20\x2a\xca\x2d\xfe\x9f\x80\x62\x7c\xe1\x55\x6c\x81\x68\x4d\xb2\xe5\xd4\xcc\x9f\x37\x07\xcc\x35\x5e\x6c\x47\xed\x73\xd5\xb4\xa4\xa4\xb4\x07\x4d\xd2\x92\x30\x3b\x5c\x20\x99\x14\x4a\x41\x59\x17\x9a\x55\x01\x03\x06\x45\x31\xcd\x5a\xd9\x9c\xff\xe6\x10\x80\xd7\x75\x53\xd4\x82\x3d\xb1\xcc\x7d\xbb\x06\x6e\x79\xbd\x4c\xb0\xee\xaa\xe1\x03\xfe\x18\x7b\x6e\x97\x95\x5e\xdb\x84\x28\xcf\x0b\x3c\x67\x52\x69\xc8\x0a\x86\x2f\x38\x5c\x07\x8a\x9a\x0c\xc7\xec\x83\x00\x26\x3c\x37\x9c\xb9\xdb\x23\xe5\x36\x89\xe7\x68\x80\x56\x5e\x06\x3f\xa6\xe5\x34\x79\x5f\xb4\x19\x6e\xce\x94\x7b\x50\x28\xaf\x81\x36\x8d\x87\xec\xe5\x6a\xf6\x08\xaf\x57\xee\xd9\x41\xa3\x99\xb3\x63\xd2\x1b\x72\xc0\xfd\xc7\x5e\x41\xce\x2b\xde\xaa\x00\xdb\xe5\xa7\x11\x90\x5e\xf3\xdf\x4e\xc6\x6d\xfa\x46\xa0\x82\xf0\x60\xd9\x53\x29\x78\x4d\x39\x5d\x19\xed\x45\x33\xca\x56\xc6\x08\xf7\x60\xb9\x53\x1f\xfc\x43\xd5\x81\xa6\xb2\x64\x1c\x93\xb6\xde\x53\xa5\xc8\x82\x5e\x7a\x45\xbf\xef\x7a\x5b\x63\x00\xbc\x39\x8c\xde\xd7\xb8\xb0\x25\xc5\x5a\xe3\xb6\x4b\x41\x38\xf0\x4a\x0f\xed\x26\x0d\xa5\x9d\x75\x5b\x17\xe5\x56\x32\xad\xa9\x97\x61\xa3\x6c\x63\x32\x04\x0e\x6d\x16\xad\xf4\x1b\x68\x2f\xbd\x02\xde\x37\x03\xb5\x03\x34\x1f\x67\x8c\x54\xee\x57\x8e\xd1\xa2\x9c\x66\x92\xd1\x39\xcc\x19\x66\x31\x20\xde\xfe\xd8\x36\xc2\x20\x3e\xa3\x25\x1c\x88\x52\x54\xe2\xba\x3a\xbc\x75\xb3\xbe\x53\xf8\xde\x3b\xcf\x54\xcb\x9a\x67\xa4\x6b\x2b\x6b\x8b\x48\xb1\x39\x2c\x10\xd9\xef\x23\x75\xb0\x8d\xf5\xef\x5f\xfe\xfb\x1f\x61\xb6\x36\x0f\x0d\xc4\xb2\x68\xa1\x49\xd1\x0c\xd8\x83\x69\x41\xf9\xc2\x9c\x76\xab\xb2\x87\x25\x85\x02\xd2\x6c\x0b\x56\x32\x6d\x73\x5f\x5f\xfd\xf6\x66\x36\x78\x93\x79\x70\x3c\xc9\xe9\xea\xa4\x77\x03\x26\x85\x58\x4c\xe1\x4d\x93\x78\xe9\xc1\xb1\x49\xd5\xf4\x4d\x54\xf4\x7a\xe6\xef\x10\x5c\xd8\xfc\x3e\x50\x74\x35\x3d\x86\x60\x29\x6e\x6d\xe3\xc1\xee\x73\x3c\x96\xa6\x91\x2e\x5d\xde\x61\x25\xaa\xba\xb0\x99\xad\x5f\xf9\x95\xfb\x42\x49\x55\x2b\xba\x59\x7b\xe6\x0e\x59\xee\x27\x1c\x9a\x61\x6e\x3c\x84\xac\x90\x08\x58\x08\xe1\x0a\x37\xb8\xe8\x52\xdb\x24\xa8\x96\x5e\x99\x8f\x5f\x91\xa2\x98\x91\xec\xe6\x5a\xbc\x13\x0b\xf5\x81\x9f\x49\x29\xe4\x60\x85\x7c\xee\x31\x31\x56\xe3\xb2\xe6\x37\xd8\xdf\xba\x9d\x7c\x21\x16\x20\x6a\x5d\xd5\x5e\xaf\xbf\xf9\xe6\x71\x6a\xd7\xc4\xb3\xec\x5b\x6b\x22\x3b\xa3\xb4\x37\x52\xfa\x89\xf9\x85\x3e\x6e\x99\x11\x60\x1c\xa8\x59\x47\x2b\x15\xbb\x59\xfb\x3d\x16\x7a\xe2\xeb\xb7\x2f\x7f\xff\x6f\x56\xe0\x82\x90\xf0\x6f\x2f\x31\x29\xd3\xcb\xbc\x45\x53\x00\xed\x2f\xa6\x40\x95\xa4\x28\xa8\x0c\x15\x8c\xe6\x3a\xf6\x04\x61\x2b\xd6\xfe\xa1\x52\x4d\x87\x0a\xb0\x47\x74\xfe\x5c\x5f\xff\x05\x3d\x3f\x4c\x2b\x5a\xcc\xbd\xac\xf2\x42\x89\xae\x35\xe8\x01\x1a\xd3\x07\xce\x16\x31\xaf\x49\x1f\x11\xf0\xb4\xee\x94\x95\x28\xea\x92\xbe\xa5\x2b\x96\xf9\x84\xb5\x06\x5b\x37\xe0\xe5\x9f\xf9\x5c\x30\x85\xbd\x9b\x66\x85\xc8\x6e\x20\x77\xec\x3a\x58\xbb\x8f\x15\xb2\x0e\x2d\xc1\x1e\x92\x84\xe0\x9d\x7c\x70\xe7\xea\x76\xa9\x03\x5e\x0e\x5e\x02\x25\xa9\xaa\xb6\xe8\x87\x24\xb7\x83\xc5\xf6\xe2\x69\x24\x2f\xd6\x59\x0d\xaa\x73\x1f\x18\x1c\x0e\x09\x0d\x4f\xdc\xec\x3d\x6d\x0e\xef\xbc\x84\xd0\xa8\x72\x37\x6a\xdf\xc0\xd7\xe0\x98\x75\xec\x42\x6b\x17\x54\xc8\xc3\x26\xad\x47\x6a\xc5\xd6\xab\x8c\x64\xc7\xd9\x3e\x7b\xcd\x81\x0e\xa8\x2a\xa6\x85\x6f\xd0\x31\x38\xd2\x17\x92\x05\x32\xd8\x39\xde\xc6\x54\x4b\xa2\xbd\x9c\x15\x96\xfa\x45\xfe\x08\x54\x54\x2a\xa6\x8c\x8d\xfe\x1d\x0a\xa0\x37\x05\x61\xbe\x81\xb3\x36\x78\x52\x09\xdf\xad\x0a\x58\x6e\x2b\x40\xb1\x8f\x77\xa8\xa6\xbb\x14\xb9\x63\x87\x8a\x09\xdd\x26\x5e\x11\x95\x2d\x37\x4b\x68\x49\x8a\x68\xe6\xdf\x53\xaa\xba\xef\xba\x9d\x0a\xd7\x74\x86\x4b\xab\xea\x2c\x67\xa7\xac\x3c\x39\x7e\xbe\x0a\x0e\xd7\xe2\x73\xd3\x6f\xed\xa0\xa3\x08\x49\x54\x6c\xce\x56\x09\x51\x6e\xdd\x5b\xb5\x8b\x54\x2c\xa9\x13\x0a\xde\x5c\x3b\x37\x8b\xf3\xc4\x4e\x1d\x58\x94\x7b\x37\x75\x6e\x87\x0a\x07\xaf\x0f\x9e\x4c\xc9\xd9\x4d\x94\xa2\x22\x0b\xf4\x1d\x44\xd9\xcb\x4d\xa6\x01\x08\x2f\xeb\xd6\xa0\x0a\xdd\x66\xc8\xd7\xb7\x12\xa2\xa5\xca\x8d\x8a\xe6\x5d\x09\x74\x6c\x6c\x10\x90\x7e\xdf\x3b\x72\xce\x61\x62\x0b\x37\xde\x06\xe4\x45\x13\x29\x6a\x9e\xbb\x68\x70\x0b\x41\x78\xbf\xb1\xb0\x17\xfe\x15\xcc\xd0\xcd\xd3\xb4\x7d\x31\x4f\x5c\x4c\x94\x64\xca\xb7\x18\x9e\xe3\xc9\xe1\xd5\xf4\xd5\xcb\xcf\xdf\x66\xc3\x35\x89\x64\xb3\x5d\xb4\x36\x9b\xd5\x72\x4f\xb6\x3a\x92\x92\xfc\x03\x2f\x3c\x3c\x41\x96\x86\xf9\x06\x2e\x24\x65\x98\x4e\x04\x0f\xa8\x35\xc1\x9a\xc6\xf6\xc8\xea\x56\x32\xed\x6e\xd0\x2d\x0b\x48\x54\x3b\x44\xa7\x0d\x08\xd9\x2f\x41\x7c\xd4\xf9\xf2\x02\x9e\x24\xbe\xfe\x20\xf7\xf7\x81\xdd\xbd\x01\x54\x3d\x7b\x76\x7a\xd7\x2a\x58\x2b\x54\x77\xc5\x53\xfd\xd7\xdb\x71\xde\x56\xc1\xde\x1c\xfb\xd8\xc3\x17\x2f\xe0\xd0\x7e\xc2\x81\xad\x66\x77\xf4\x64\xd7\xd3\x6d\xeb\xd9\xa7\xca\xbb\xff\xe2\x60\x6b\xcf\x3e\x55\x84\xe7\x34\xb7\x0f\xfe\x00\xd3\x1a\x9a\xa2\xd3\xbb\xf6\x38\x5c\x6d\x1e\xa8\xe1\x1e\x7b\x73\xec\x9b\x67\xff\x41\x97\x64\x45\xb1\xe6\x1f\x2b\x88\x0c\x10\x4f\x5a\xc0\x95\xdd\x19\x98\xd5\x1a\x28\x5f\x31\x29\x78\x49\x03\x0a\xbb\xaf\x88\x64\x64\x56\x50\x90\x14\x0b\x07\x67\x54\xc1\x6f\x0e\xbf\x3b\xfd\x88\x30\x6b\xff\xf6\x11\x44\x52\xa0\xcd\xae\xd7\x0a\xd3\x73\x23\xdd\xc2\xde\xb4\xa7\x1b\x17\xc8\x5f\x44\x6f\x5c\xbc\x66\x9d\xcd\x0d\xf0\x5f\x03\x9e\xb7\xfb\x65\xd6\xa3\xac\x75\x4d\x0a\x2c\xfb\x98\x15\xb5\x62\xab\xa7\xd0\xbf\xae\x0c\xe7\x5b\xe6\x71\xb3\x37\xca\x97\x76\x97\x66\xab\xb6\xa7\x67\x09\x6f\x34\x2f\xe3\x75\x5f\x77\xc0\xcb\x03\xd5\xf6\xb8\xea\xb7\x06\xf2\x0e\xca\xb9\xb2\xd5\x33\xda\x6b\xa9\x07\xde\x4a\xab\xb3\xd9\xb1\x65\xc1\xd3\x85\xe7\x72\xae\xde\xe0\x7c\xc6\x1c\x8c\x61\x5e\xff\xa0\x54\xf0\xdb\x8b\xab\x5e\xfd\xf1\x51\x73\xb0\x6e\x45\x91\x4f\xe1\xb2\x2b\x60\xde\xb5\x18\xc0\xfe\x3a\xa3\xd1\x26\x46\x26\x53\xb9\xb0\x71\x5a\x33\xc0\x05\xe5\x54\xe2\x03\xcc\x0c\xb5\xd9\xcb\xf1\xef\xc4\x19\x51\xb6\xad\xe4\xdb\x8b\x2b\x8b\xd0\x18\xb3\x63\x9e\xee\x1e\x5f\x9f\x89\x79\x97\xd8\xea\x2a\xa3\x9d\x2d\x83\xbd\x3e\x6d\x83\x70\x66\xf1\xd0\x19\x6c\xd9\x8e\x3e\xac\xe7\x97\x40\xf2\x5c\x22\x7c\xd1\x3d\x01\x7b\x6d\x04\xfd\xd0\x5f\x6e\x87\xcd\xce\xf4\x67\xdc\x6d\xf9\x68\x8e\x68\x6a\x74\x1b\x0c\x6f\xeb\xaa\x60\x16\xb2\xd5\xfb\x80\xd1\x6c\x9b\x99\x4a\x5a\x8a\xd5\xf8\xab\xee\xef\x88\xf5\x74\xc3\x7a\x6b\x1e\xe1\xd7\x27\xef\x9e\x33\x27\xa9\x12\x85\xcf\x81\x6b\xba\x1d\x0f\xcf\x9a\x93\x0d\xc6\x38\x1d\xbf\x2a\xcd\x59\x6b\x3a\x49\x77\xa2\x65\xe3\xdc\x8c\x66\xdd\x3b\x67\x94\x6b\x69\x84\x6b\xe0\x99\x01\xf8\x68\x56\xae\x46\x80\x4e\x3b\x60\xb6\xa2\xdc\x28\xb1\x0f\x9e\xcd\xfc\x70\x50\xbd\xc6\xd2\x36\xc7\xc1\x76\x47\xa7\x44\xfa\xa4\xa8\xb4\xab\xea\xbd\x7c\xff\xf0\xeb\xb1\x19\x02\x7a\x7b\x71\x65\x75\xaa\x5d\x56\xd7\x6e\xd4\xc7\xf6\xed\x9f\xf8\x76\xd7\x5a\x3d\xe9\x79\x8f\x9f\xa4\x7f\x82\xbf\x67\x6c\xb0\xba\x1f\x5d\x9c\x23\xa4\x7a\x81\xf7\x13\x39\xa0\xd2\x9c\xf7\x27\x2b\x4a\x64\xb6\x1c\xbf\xe6\xf7\x88\x50\xcb\x12\x72\x81\x59\x0f\xe3\x75\xa2\x90\xe8\xb2\x9e\xa0\xfa\x2f\x84\xb8\xa9\xab\xa1\x54\x1d\xcd\xb2\xd1\xf8\x03\x0d\xee\x86\x59\x11\xbd\x1c\x3f\xc8\x3b\x45\x71\x4f\xb4\x8e\x66\xda\x1f\xd1\x3f\x87\x0e\xcf\xb9\x1a\x8f\x3e\x1e\xbe\x0e\xa8\xb6\x6f\x02\x64\xd3\x55\x74\x19\x2b\xbe\x06\x4f\xfe\x37\x45\xad\x34\x95\x5f\x31\xa9\xf4\x8b\xa6\xdd\x34\xde\xce\x71\x27\xc5\xbc\xcf\x0f\xfa\xcc\xbe\x67\x7a\xf9\x67\xa1\xf4\x05\xd5\x07\xc7\xc3\x1f\x1d\x8c\x7b\x39\x1e\xb8\x01\x1f\x80\x90\x70\x70\x21\x38\x3d\x98\x6e\x3c\x8e\xac\xfa\x1d\xc5\x95\xe1\x73\xc3\x2a\x97\x5d\x36\x8c\x5b\x5b\xb3\xd4\x23\xa5\x4c\x41\x33\xdd\x30\xe9\xdd\x96\x6b\x01\x4b\xb2\xb2\xcf\x3a\x9f\x8e\xbf\x8a\x6a\x20\xd8\xe3\x09\x39\x2f\xed\xda\xde\x0a\x79\x63\x1b\x36\x20\xf3\x91\xb1\x2f\xfb\x24\x5c\xf7\x8f\x55\xaf\x6b\x83\x16\x77\x6f\xe9\xf8\x17\xda\xc8\xfb\x62\x5b\x31\x5d\x51\xb9\x62\x19\x7d\xc7\xf8\xcd\xa8\x8b\x3a\xcc\x35\x3a\xdb\xe2\xe5\xd9\x3a\xee\xd6\x21\x67\x19\xb7\x09\xdc\xc6\x24\x21\x33\x51\x6b\x7c\xbb\x21\x88\xd2\xc3\xf1\x89\xf5\x1f\xfe\xdb\x9e\x1a\xc4\xab\x54\xb6\x45\x58\xcf\x51\xd7\xfa\x19\x47\x42\xa1\x31\xe4\xd5\x38\x0f\xd5\x9a\x6b\xf2\x09\x75\x97\xc8\x6e\xa8\x84\xc2\x2c\xc5\x14\xda\x54\x2c\x6f\x31\x82\xc0\xdc\x31\xb9\x1d\x7e\x91\x13\x5a\x2d\x69\x49\x25\x29\x5a\xdf\x99\xff\xa1\x78\xe7\xd4\x78\xcb\xb3\x97\x89\x33\x6a\x1d\x6c\xdf\x18\xd7\x3d\x4f\xe4\x53\x38\x0b\xe5\x58\x92\x35\xaa\x43\xcb\x98\x70\xa0\x9f\x98\x42\x80\x4d\x25\xf2\x5e\x4d\xb7\x51\x4c\x6b\x45\xe5\xa4\xad\x00\xe8\x2a\x2c\xa9\x26\x95\x0b\x72\x3a\xab\x17\x0b\xc6\x17\xe3\x74\x09\xda\x2a\x68\x11\x75\x6d\xd9\x3a\x3f\x13\xb6\xa9\xcb\x24\x25\x7a\xac\xad\x86\x56\xf9\x31\x7a\x80\x59\x9f\x77\x29\x72\xcb\x7a\xb6\xb6\xde\xbd\xb1\x8c\x9b\x7a\x39\x66\x90\x53\x38\xe7\x20\x64\x4e\x25\x96\x87\xc9\x73\x5c\xeb\x66\xf7\x46\xb1\xed\x9c\x90\x86\xd3\x70\xc7\x8e\xbd\xf2\x4c\x8c\x0c\x50\xdd\x68\x7a\x69\x62\xaa\x9e\x99\x87\x4c\x2d\xc7\xb6\xf3\x1c\xa2\x03\x48\x51\x2d\xc9\xa4\xa0\x2b\x5a\x80\xeb\xaa\x34\x3a\xf6\xbb\x14\x5c\x48\xbb\x1b\x8d\x87\x08\xdf\xac\x56\x78\xe3\x62\x9f\x6d\xdf\xd9\x51\x1f\xe1\x9a\xe8\x8d\xd7\x37\x63\x0d\x42\x0f\x63\x70\xf8\x32\xe0\x3b\xe6\x3a\x3e\x1f\xa6\x9f\x95\x8c\x6b\xe9\xa4\x01\xc9\xd1\xaa\xa7\x65\x25\x24\x91\x6c\x74\x14\x6c\xfb\x5c\xa2\x05\x39\x14\x0b\x63\xc7\x9a\x69\xb6\x62\xe6\x1d\xbb\x43\x8e\x74\xab\x31\x92\x6b\xef\xa8\xa3\x4d\xc3\x05\x34\xe7\xdd\x58\x80\x2a\x5b\xd2\xbc\x2e\xc6\xbf\x3b\x17\x35\x91\x84\x6b\x4a\xd5\x71\x03\xef\x59\xbb\x34\x6d\x2b\x5c\xda\x24\xf3\xb1\x21\x21\x23\xe6\x90\x1b\xfd\xc4\x34\xb6\xcf\x34\xdf\x41\x19\x66\x93\xd7\xf1\x5d\x33\x92\xab\x90\x1b\x59\xef\x7d\xe1\xe4\x1d\xd6\xc9\x48\xad\xb0\x1b\x82\x53\x25\xf4\x53\x46\x8d\xd9\xa1\x55\xbb\xc8\x63\x0f\x81\xcd\xfe\x61\x82\x1f\xb7\xd2\xd5\x9d\x59\xba\x62\x99\x47\xfc\x65\x97\x02\x45\x96\x6e\x9f\xf0\x2a\x8c\xe4\x39\x5b\xbb\xe0\x5a\xd1\x29\x8e\x0d\x65\x70\xbd\xa4\x63\x2f\x55\x5b\x5e\x0b\x2f\xe7\x8a\x91\x86\xe5\x6e\xd1\x3d\x92\x7b\x4f\xd0\x6f\x9e\x58\x5f\xa7\x60\x7f\xc6\x20\x78\xe6\x86\xde\x6b\xa1\x3a\x96\x23\xaa\x91\xbb\x1a\xa8\x86\x0a\xff\x8d\x1e\xaa\xe3\x34\xbd\xaf\x87\xce\x0f\x00\xec\x01\xde\xf5\x77\x03\x12\xb9\x08\x75\xae\x1e\x9c\xca\x45\x5d\x62\x5e\xb0\x73\x15\x75\x6d\xee\x7d\x5c\x82\xd7\x4b\x0a\xb9\x7d\x56\x60\x1c\xd6\x3c\x60\xde\xbc\x7f\xdb\x60\x13\x3d\x38\x32\x57\xe8\xc3\x55\x6e\x72\x4d\x9d\xf3\x29\x7c\xe7\xde\x42\x3e\x11\xed\x9d\x28\x8d\x01\xda\xc2\x83\xeb\x2e\x7c\xc6\xf0\xfd\xe6\x19\xcf\x27\x1d\xbe\xa4\xb3\x81\x9d\x17\xdb\x2b\xfe\x6e\xbb\x10\xb9\x35\x68\x52\x45\x18\xaf\xcc\x0b\xd6\xd7\x97\xdb\x62\x02\x78\xb6\x24\x7c\x61\xa5\x09\x0d\x44\xc1\xb8\xb7\xaa\x6b\xec\x4d\x55\x46\xaa\xc6\xa7\x42\x20\x17\xb5\xdf\xf6\xff\xe6\x37\xc7\xc0\xe8\x6b\xf8\x4d\x6f\x70\x53\x38\x73\xdc\xbb\xc3\xe1\xbb\x0a\xb6\xde\xcb\xac\x3b\x4c\xc7\x20\xe9\x82\xc8\xbc\xf0\x6b\xed\x21\xe6\xad\xcb\x01\x51\x5b\xcd\x61\x40\x33\x4e\x81\xf0\x01\x75\x70\xa1\x77\x61\x24\x7a\x65\xf6\x3c\x98\xde\x53\x98\x4f\x13\x75\xa3\x4e\xac\x83\x63\x92\x13\x4d\x26\xa4\xb2\x7e\x63\x26\xf8\x89\x0d\xe8\x4c\x5c\x6b\xd7\x09\x71\x42\x69\xd2\x5e\xa4\x93\x5f\xcb\x1a\xbb\xa7\x4f\x48\xfb\x5b\x8c\x4f\xc8\x04\x1b\x81\xfa\xd6\x93\xf8\x07\xa7\xde\x04\x44\x4b\xbc\x7b\x26\x6f\xba\xc0\x1a\xe1\x6e\xe7\x3e\x85\x0b\xaf\x7c\x07\xd7\x1b\x39\xef\x92\x51\x5d\x43\xd6\x4e\xfe\xfb\x88\xfa\x46\x63\x9c\x5d\x5c\x7f\xfc\xcb\xe5\x87\xf3\x8b\xeb\x46\x71\x34\x6a\xc0\x87\xeb\x5d\x8a\x23\xec\xa6\xdf\xa5\x38\x3a\x35\x10\x82\x62\xda\x54\x1c\x43\x35\xe0\xc3\x79\x5b\x71\x0c\xd5\x80\xcf\xca\x6e\x2b\x8e\x1d\x6a\xc0\xd3\x8a\xe8\xaf\xef\x4e\x35\xe0\x25\x9d\x7b\x8a\x63\xb7\x1a\xf0\xe0\xba\xad\x38\x86\x6a\xc0\xeb\x7e\x6d\x2b\x8e\x9e\x1a\xf0\x54\xf9\xdb\x8a\xa3\xaf\x06\x3c\x98\xee\x56\x1c\x49\x0d\xec\xf3\xa1\x5e\x6a\x80\xf2\x55\xa0\x0a\x68\x1d\xde\xbb\xa2\x0a\x3e\x93\x19\xb4\xb6\xec\x15\xc5\x8e\x71\xa8\x3e\x8f\xfd\x1c\x62\xf4\xf9\xea\x3b\x22\x41\xd2\x4a\x52\x85\xef\x2a\xcf\x9c\x90\x5d\x1b\x04\x8e\xa9\x6f\x6b\x7e\xd2\xc1\x8d\x3f\xbb\x94\xda\x27\x4a\x8a\x8d\x96\x80\xd6\x24\x8d\xd9\x37\x76\xbc\x94\x83\x69\xdb\xe4\x84\xc0\x9b\x9f\xce\xdf\x9e\x5d\x5c\x9f\x7f\x75\x7e\xf6\xf1\xc9\xb2\x5e\x82\xda\x47\x0e\xcd\xd5\x38\x96\x9a\xa5\xfb\xed\x35\x6f\xb6\xb6\x82\x3a\x5d\x31\x51\x2b\x87\x4b\xcb\xa3\xee\xaf\xda\x92\xad\xde\x2c\xb1\xfa\x2c\x5f\x37\x51\xea\xb8\xc3\x9c\xee\xf4\x54\x78\xf3\x8d\x6a\xa8\x5a\xba\xc7\x5c\xf5\xe6\x19\xd5\xdb\x61\xe9\x6e\x9f\x87\xff\xc6\xc7\x36\x79\x2d\xdd\x6b\xf8\x86\xec\xfc\x1d\xe6\xaf\x37\xcb\x7b\xbc\x27\xde\x3c\x1b\xe3\x79\x98\x3a\xe5\xdd\x7e\x25\x8e\xd8\xfd\x4a\x8a\x32\x8a\xe8\xbd\xb2\x81\x36\x87\x2e\xf3\x5e\xa4\x5d\x46\xcc\x81\xb2\x63\xf5\x3f\x77\x3d\xb7\x95\x73\x0d\x34\x8d\x22\xbc\x59\x1a\x7e\x58\x23\x31\x4c\x6d\x06\x35\xee\x8e\xd1\xed\xda\xa6\xdf\xbc\x27\xd5\x37\x74\xfd\x91\x06\x74\x68\xd9\x42\x1d\x16\x34\x33\xc6\x2c\xdc\x8c\x0e\x8f\x0d\x09\xc1\xd6\x6f\x9a\x61\x86\xb4\xb6\x79\x56\xbd\xd2\xc3\x96\x25\x56\xa3\xf3\x1b\xea\x5d\x0b\xa0\xa1\xad\xc6\xdd\xa1\x1b\x0e\xcd\x2b\xd1\x9c\xa0\x90\xfd\x86\x98\x4d\xce\xa3\xb7\x84\x3f\x70\x06\x7e\xf8\x5a\x75\xc6\x8e\xb6\x6e\x95\x60\x96\xfb\xb7\xcd\x11\x2b\x63\x1b\xd2\xdb\x13\x97\x8b\x3a\x31\x76\xc7\xc4\xde\x31\x75\x82\x29\x5a\x27\xbf\xc6\xff\x04\x0f\xca\x36\xce\x3b\xcd\x73\x57\x5d\xa5\x56\x74\x5e\xfb\x54\xbe\x1e\x12\x22\x9b\xd4\x14\x48\xc5\xbe\xa3\x52\x31\xe1\xd5\xbe\x61\x48\x37\x8c\xe7\xc7\x50\xb3\xfc\x4b\xff\xee\x6a\x96\xa2\x9d\x5f\xe1\x85\xd6\xdc\xa6\x1d\x99\xa7\xe1\xd7\xbd\x6f\x6f\xb5\xa2\x3e\x98\xab\x2d\x28\x6b\xe4\x51\x83\xb8\x08\x66\xe9\x1e\x6c\x51\x36\x35\xa4\x00\x08\x34\x07\x37\xa6\xce\x3e\x68\x95\x76\xd0\xfc\x2c\x54\xb0\xed\xa2\x97\xbf\x6e\x5a\x66\x86\x89\x80\x92\x6a\x92\x13\x4d\xa6\x46\x9a\x1c\x0f\xbf\x54\x15\xc9\xbc\x9a\x79\x74\xf4\x5f\x2d\xc3\x82\xcc\x68\xa1\x7e\x38\x38\xf8\xd3\x37\x67\x7f\xf9\x5f\x07\x07\x3f\xfe\x57\x2c\xce\x68\x86\xa2\xe7\x3a\x22\x7b\x44\x21\x71\x91\xd3\x0b\x5c\x17\xfc\xd2\x3d\xd8\x4f\xb3\x4c\xd4\x5c\xe3\x0f\xc2\x3e\x03\x8b\xb3\x4f\x97\x42\xe9\xf3\xcb\xe3\xe6\xcb\x4a\xe4\xe7\x97\x51\x18\x23\x27\x15\xd0\x8a\xf2\x99\x19\x77\x78\x05\x3c\xcb\xf9\x35\x14\xcb\xc4\xeb\xf4\x5a\x54\xd1\xef\x78\x86\x0b\x69\x2b\x27\x54\xb6\xa4\x25\x09\x7a\x3b\x36\xf4\x55\xb3\xf8\xc0\x54\x40\xd3\x95\x21\x31\x8e\x05\xf6\x15\x88\x79\x94\x1e\xac\x96\xb4\x80\x17\xab\x57\x2f\x9e\x8d\x91\xdb\x9e\xdb\xa8\x47\x05\xf7\x22\x92\xa1\x6b\x95\x4b\xfb\x3c\x88\xb2\xaf\xcb\x7e\xf2\xc1\xe9\xe5\x79\x30\xd3\x95\xbd\x1b\xcf\x62\x5b\x1b\x28\xe8\x57\xcf\xd4\x5a\xe8\x30\xda\x1b\x85\xa8\xc3\x8e\xa0\xe0\xc5\xba\xe5\xad\x6c\xab\x88\xb0\xfb\x4a\x78\x8e\xda\x81\x2a\xad\xe0\xd0\x32\x9c\x66\x55\x1d\xa6\x00\x1d\x9f\x92\x96\x42\xae\x8f\x9b\x2f\x5b\x10\xf0\x44\x69\x21\xc9\x22\x50\x7d\x37\xc3\xc6\xe1\x76\x5f\xd9\x0f\x8d\xb6\x28\xdb\xa3\xf6\xf7\x69\x83\xcb\x0d\xcd\x6a\x69\x9e\xb5\xc5\xba\x6b\xbb\xfe\xcb\xb1\x12\x3c\x91\xf3\x7d\x8a\x65\x24\xb4\xb7\xee\x22\xba\x9b\xe3\x4d\x70\x18\xaa\x21\x74\xc1\xb4\x6b\x0f\x73\x2f\x1c\xe3\x90\x5c\xa9\xf0\xe3\xf6\x79\x1c\xee\x4e\x10\x12\x28\x5f\xc1\x8a\x48\xcf\x36\xc1\x1d\x45\xd3\xeb\x39\x5b\x31\x25\x02\x45\xea\x5d\x55\xa7\xa2\xe8\x75\xd7\x07\xc8\xe6\xc7\xc6\x32\x2a\xe9\xa7\x0a\xfb\x49\xb6\x7a\x20\xdc\xb3\x93\xf7\xa3\x37\xaf\xfc\x2b\xdf\x59\xaa\x88\xd6\x54\xf2\xd7\xf0\x9f\x87\x7f\xfd\xe2\xe7\xc9\xd1\x97\x87\x87\x3f\xbc\x9c\xfc\xfb\x8f\x5f\x1c\xfe\x75\x8a\xff\xf8\xd7\xa3\x2f\x8f\x7e\x6e\xbe\xf8\xe2\xe8\xe8\xf0\xf0\x87\x6f\xde\x7f\x7d\x7d\x79\xf6\x23\x3b\xfa\xf9\x07\x5e\x97\x37\xf6\xab\x9f\x0f\x7f\xa0\x67\x3f\xee\xc9\xe4\xe8\xe8\xcb\xdf\x04\x0e\x3c\xb0\x9d\xbb\xa5\x58\x4d\xdd\x87\xdc\x22\x5c\x97\x47\x69\xf0\xde\x51\x73\x1c\xe3\xca\xd9\x8f\x11\x74\xd2\x70\x7c\x9d\x99\xfd\x2c\x04\x99\xa2\x99\xa4\xfa\x79\xc7\xa9\xec\x18\x7b\xcd\x34\x02\x0a\x6e\x42\x53\x36\xae\x22\x41\x36\xc2\xb3\xb2\x79\x52\xd8\xeb\x3e\x6a\x9c\x21\xf6\x14\xc5\x7b\xe5\xce\xa5\x28\x9b\x86\x05\x08\xfc\x5a\x91\x82\x85\x7a\xb1\x9b\x1b\x69\x66\xfe\x2c\x9e\xba\x90\xc2\x74\x29\x4c\x37\x86\x52\x98\x6e\x1c\xf5\xc3\x74\x57\x78\xf7\x53\x8c\x6e\x17\x51\xbe\xf2\x03\x56\xed\x44\xde\x37\x3e\xac\x5e\xef\x5c\x8f\xb9\xed\xc4\xef\x6f\xc3\xf0\x3d\x38\x3b\xe5\xd7\xa1\x59\xbb\x1c\x2f\x5f\xf7\x46\xb9\x1b\xa1\x0c\xa7\x45\x01\x8c\xfb\x2a\x2f\x1c\x64\x57\x35\xce\xba\x93\x80\x28\x2c\x91\xb0\xf2\x03\xb5\x36\x45\x1c\xfa\xf5\xa4\x15\x60\xfd\x85\xd1\x55\x71\x2c\x7d\x6f\x8b\x40\xdc\xd8\xba\x10\x4a\xe3\x26\x95\x75\xa1\x59\x55\x50\x08\x78\xc8\x5a\x30\x63\x51\x53\x20\x4a\x89\xcc\x16\xf4\x69\x6b\x96\x15\x44\xf9\xcc\xdf\xbd\x14\x70\x55\x35\xb9\x41\x6c\x73\x46\x73\xca\x33\x8a\x65\xe1\xc6\x16\x84\xb3\xd4\x9c\xa4\xd9\xda\xec\xcd\x19\x5f\xb5\x99\x58\x4d\xed\x40\xbf\xed\xbf\x63\x9c\xff\xbc\xa9\x27\x46\x4c\x39\xe8\x66\x97\x81\xe2\x25\x39\xd1\x6e\x6d\x3d\xf9\x04\x93\x7c\xc4\xbc\x43\x73\x78\xe5\x0a\x85\xbd\x5c\x42\x5f\x0b\x2d\x36\x32\xe0\xc1\xb9\xf5\x4c\x68\x17\x24\xa4\xe1\x94\x7d\x16\xa0\x59\xef\xc9\xe3\x99\xc0\x4f\x43\xcd\xf5\x9d\xa6\x7a\x70\x14\x79\x68\xa6\x3f\x3f\x33\xfb\x11\x4c\xec\x1d\xe6\xb5\x35\x8f\x83\xb8\x86\x9a\xd6\x51\xcc\xea\x18\x26\xf5\x2e\x73\x3a\x20\xb9\xb6\xa3\x01\xe2\x2d\x8a\x09\x1c\x6e\xfe\x86\xc3\xd3\x2a\x49\xe7\xec\x53\x14\x99\x79\xca\xdb\x0d\x04\x96\x53\xae\xd9\x9c\x85\x74\x29\x16\x66\x70\x15\xe5\xb6\x8c\x15\xc9\x96\x68\x17\x04\xf6\x45\xea\xe0\xe9\xcf\x2d\xb9\xce\xba\x68\x62\x2a\xb0\xab\x58\xce\xa9\xa4\xbd\x92\xf6\x4a\xda\xeb\x21\x7a\xf6\xda\xcb\xc9\x83\xe6\xc9\xfe\xb4\xea\x07\x2b\xc2\x84\x16\xbd\x79\xdb\xab\x47\x86\x77\xdc\xdb\x5d\xbb\xff\xdd\xeb\xaa\xfd\x9d\xe0\xe7\x7a\x60\x07\x02\x8e\x1b\x7e\xe4\x65\x5d\x14\xe3\x6b\xcd\x5b\x1a\x2e\xe0\x39\xae\x5c\x55\x17\x85\x2b\x0f\x3e\x85\x0f\x5e\x7d\x6a\xc5\x1c\x4e\x8b\x5b\xb2\x56\xc7\x70\x41\x57\x54\x1e\xc3\xf9\xfc\x42\xe8\x4b\xfb\x50\xf5\x51\xaa\xfd\xec\x4b\xcb\x1a\xd8\x1c\x5e\x17\x44\x53\xa5\x41\x13\x9f\x8b\xca\x54\xbf\x7b\x9a\x90\x83\x41\x76\x8d\x4c\xe3\x34\x8d\x1f\x2b\xd4\xb7\x0e\xd6\xaf\x9b\x3a\x96\x93\x27\x38\x68\x05\x9b\xd3\x6c\x9d\x15\xa1\x77\xf4\x5d\xc3\xa7\xa9\xd6\x44\x8a\x42\xdc\x7a\x89\x1d\x04\xec\xec\x28\x1d\xfa\x59\x35\x77\xa9\x84\xd2\x57\x9a\x48\x1d\xa1\xc3\xcb\xc1\x65\xc3\xcc\x2c\x6e\x46\x8a\xc2\x5b\x9c\xb3\xb2\xa4\x39\x23\x9a\x16\x6b\x20\x73\x4d\x65\xbf\x4e\xb1\x2f\x4f\x65\x6b\x83\xbb\xf2\xb6\xd8\xbf\x9b\xf0\xbc\xa0\x12\xe6\x84\x15\xde\x18\x9f\x2d\x27\xae\xed\x3c\xee\xd5\xa7\xc4\x92\x05\x47\xba\x5a\xbc\x40\xb2\x4c\xc8\x1c\x4b\x7d\x09\xf0\x07\xa3\x3a\x86\x9d\x60\x45\x1b\xaa\x24\x9c\x2c\x68\x40\x61\x86\x4d\xf4\x2d\xcc\x0a\x91\xdd\x28\xa8\xb9\x66\xbe\xb6\x99\x6d\xad\x2e\x6e\x20\x13\x65\x55\xa0\x78\x0a\x2b\x17\x08\xf7\x97\x0c\xdc\x25\xf3\xda\x7f\x4e\x5a\xd1\x33\x31\x63\x52\x27\xbf\xee\x7e\x84\xdf\xf0\xb3\xf4\x82\x5f\x22\xe1\xef\x10\xfa\x89\x66\xfe\xd6\xe1\xe0\xea\x7f\xe0\x14\x4f\x6d\x50\x37\x6f\x00\xc1\x5b\x38\xf7\x5c\x18\xc1\x6c\x4e\x7d\x60\x6b\x5f\x18\xf4\x08\x98\xc2\xd9\x27\x9a\xb5\x5f\x87\x3c\x48\xcc\x28\x6d\x5b\x03\xac\x68\x4b\x6e\x02\x0a\x0d\x44\x81\xda\xc4\x01\xb9\x78\x17\x80\xec\xd3\x46\xe7\x59\xe4\x18\x52\x35\xc1\x92\x15\x34\x96\x59\xc1\xf8\xe8\xf6\x33\xdb\xe4\xca\x4b\x02\xe3\xca\xb6\xc1\xeb\x49\xb2\x50\x98\x80\x61\xb6\xd5\x68\x37\x90\x67\xd3\x84\xa9\x59\x85\xf0\x35\x95\x42\x68\x38\x3c\x38\x39\x38\xda\x8a\xe9\x06\x42\xd0\xcc\xeb\xba\xa0\x6a\xad\x34\x2d\x6d\xd1\x1a\x37\xea\x40\xae\x0c\x5b\x73\x57\xd8\x97\x99\x66\x07\xf9\x31\xb0\x50\x38\x81\xb3\x05\x6d\x07\x14\x3c\x09\x61\xb9\x29\x60\xab\x94\x1e\x83\x12\xa0\x25\xc9\x59\x14\x8c\x38\xf2\x34\x03\xd4\xb2\x76\xed\x54\x0e\x0f\x7e\x1e\xd9\xdd\x6a\x9b\xa8\xce\x8e\xe0\x56\xf0\x03\x8d\xc7\x75\x0a\xd7\xa1\xb7\xaa\x56\xb4\x29\xd4\x6a\x7b\x45\x71\x1a\x0e\xab\x10\xfd\x56\x51\xc6\xb8\x04\x51\x87\xee\x3b\x56\x22\x27\xba\xa9\x29\x7b\xf6\x29\xf8\x24\xd9\xbc\x54\xa3\xc4\x5e\xa2\x29\x68\x0d\xce\x40\xa6\x44\x41\xc1\x56\xf4\x64\x49\x49\xa1\x97\x6b\x08\xbf\x43\x5c\xf0\xc9\xdf\xa9\x14\x58\xf5\x96\x3b\xbe\x61\x58\xbc\x90\xb0\x74\x9f\xbc\x43\xd4\xdb\x83\x09\xf2\xa0\x19\x7b\xf1\x6b\xea\xf9\x2e\x82\x4d\x1d\xf8\xe7\xeb\xeb\xcb\xaf\xa9\x8e\x66\x78\x98\xd1\x35\x09\x54\xbd\x16\x4d\x4f\x6c\x81\x84\x43\x7d\x27\x50\x09\xf9\xd4\x26\xd0\x52\xa8\x80\x7d\x87\xad\xbd\x17\x4a\xfb\x56\x95\xec\x93\x16\x46\x37\x73\x9a\x99\x1d\x8f\x96\x4c\xec\xba\x31\x54\x22\x87\xf3\xcb\x29\xfc\x45\xd4\x66\x15\x67\x64\x16\x64\xc9\x1b\xba\x25\x5c\x37\x65\x5b\x5f\x98\x45\x78\x11\x12\x2e\xb3\x64\xce\xfd\x9f\x29\xc9\xa9\x54\xa8\x09\x29\xf1\x6c\x28\xdb\x50\x24\x00\x66\x6f\x5c\x31\x2d\xe7\x5a\x69\x51\xc2\xd2\x32\x0e\xdf\xe8\x5e\x01\x5d\x27\x3b\x42\xf1\xd7\x46\xae\x59\x1f\x9a\x02\x49\xab\x18\xda\xce\xcd\xf6\x17\xa4\x8d\xb6\x34\x81\x3d\x29\x81\x5c\x1b\xbe\x33\xec\xaf\x94\xe1\x51\x09\x66\x69\x17\xdf\x9c\x15\x57\xf4\x2e\x98\x23\xe3\xf6\x90\x18\xa1\x12\x8c\x12\x8f\x94\x92\x02\x91\xd2\x52\x20\xa4\x60\xf0\x90\x09\x02\x2c\x03\xb9\xc4\xca\x72\x81\x48\xf9\x10\xb0\x03\x06\x10\x81\x65\x7b\x4a\x6d\x4d\x87\x08\xcb\x0f\x31\x91\xf8\x10\x5a\x9a\xb8\x4f\x8f\xbf\x7c\x31\x0e\x1e\xc4\x5b\xbf\x2a\xb8\x88\xc8\x76\x09\x11\x2d\x80\x64\x99\x5f\x4b\x9c\x3e\x09\xab\x3a\x51\x9c\xd9\xfe\x93\xcf\xc2\xf6\x30\x16\x73\xc4\x25\xb3\x70\x12\x09\xbc\x2e\x67\xc1\x4a\xaa\xad\xe6\x25\x75\xec\x6d\xe8\xb5\x00\xb8\x88\x31\xd4\x06\x88\xd0\x18\x48\x84\x2f\x42\xef\xc5\x2b\x33\xe7\x3f\xfe\xe1\x0f\xbf\xfb\xc3\xd4\x2e\xab\xf9\x8c\x40\x9e\x33\x0a\x84\xc3\xf9\xe9\xc5\xe9\x4f\x57\xdf\xbd\xc1\xca\xca\x61\xa7\x30\x42\x4a\x76\xcc\x84\xec\x88\xe9\xd8\x8f\x98\x8c\x8d\x65\xa7\x02\x25\xfc\x10\x5d\x83\x0c\xc3\x3d\xda\xb5\xb2\xc5\x94\xdd\x4b\xd1\x86\x0d\x23\x78\xb2\xcd\x9b\x78\x50\x83\x3a\xc2\xc3\xe1\xc9\xa5\xa7\xce\xaa\x2b\x91\xdd\x44\xf3\xf2\x1c\x5c\xbf\xb9\xb4\x0c\xa3\x38\x7a\x08\x6f\x02\x4c\x8c\xaf\x44\xb1\x32\x9b\x49\xe0\xfa\xcd\x65\xa0\xb2\x98\x1a\x1e\x18\x61\xb5\x7e\xef\x75\x50\x3e\x5e\x5b\x60\xc7\x01\xf4\x58\x59\x15\x21\x11\x65\xc0\x3a\xf2\x92\x92\x82\x29\xcd\x32\x1c\x6b\x1b\x83\x0d\xf2\xea\x88\x1b\x7f\x54\x5e\xf2\x8f\x75\x14\xd9\x3f\x76\xf0\x21\x52\xee\x6a\xeb\x68\xeb\xb9\xca\x82\x9d\x26\xc7\x83\xd2\x2d\xe1\x75\x06\x9d\xa3\x2d\x2c\x71\xf8\x99\x5a\x8e\x68\x86\xf9\xb5\x89\xec\x13\xef\x75\xb0\x71\x96\x63\x68\x04\x05\xed\xce\x6d\xcb\x31\x90\xad\x9b\xf0\xd0\x72\x0c\xf5\x4b\x18\xbb\x73\xcb\x72\x8c\x64\xdb\x26\xcb\x71\x3f\x7a\x04\xcb\xb1\x92\xf4\x4a\x8b\x2a\x0a\xce\xce\xb2\x8a\x8a\xb2\x9b\xd1\xb9\x90\x34\x0e\xcc\xae\x03\xc0\x41\x5e\xa3\x30\x26\x3c\xa0\x3e\x66\x13\xe6\x12\x7d\xb8\x9a\x77\xe2\x35\xa0\xc9\x92\x2d\x9b\xa8\x2a\xa7\x4a\x9d\x20\x34\xae\xae\xac\x93\xd2\x93\xe9\x9c\xb0\xa2\x96\xf4\xd8\xec\x34\x2d\x2b\xdb\xa1\x3e\xb0\x54\x9f\xd9\x0c\xca\x2d\x2b\xaa\x6d\xd3\xf8\x06\xb5\xe8\xbf\x3f\xc6\xe6\xb3\x07\xc7\x76\x3b\x0d\x6f\xf9\x94\x49\xa2\x96\x14\x1b\x3d\xd2\x4f\x4c\x2b\x3b\x50\x49\x89\xf2\xae\xf4\x8b\x50\x17\x77\x90\xd0\x04\x56\x50\x11\xa5\x68\xee\xaf\x0d\x7a\x90\x4f\x3b\xc0\x4b\x91\x1f\x1c\xa8\xfe\xc7\x78\x72\x5e\x48\x92\x51\xa8\xa8\x64\x22\x07\xac\x9d\x9d\x8b\x5b\x0e\x33\xba\x60\xdc\xf7\x05\xe0\x6e\xa4\x19\x74\x73\xe1\x8d\x09\x4b\x03\x80\x54\x4d\x37\xdd\x29\x7c\x1c\x74\xfb\xf4\xd7\x5a\xa2\xd6\x99\xe8\xb4\xb5\x5b\xdd\xe3\x00\x8e\x1d\x92\x14\x73\xee\xf1\x9a\xd7\xa4\x28\xd6\x9d\x58\xf1\xe4\xec\xca\x4b\xe8\xc7\xda\xf8\xcf\x0c\x53\x6b\x2e\x6b\x28\xc7\xfe\x05\xed\x2f\x85\xbf\x6c\x92\x94\x64\xcb\xb0\x74\x85\x04\xdd\x7d\x80\x12\x74\x37\x41\x77\xef\xa4\x04\xdd\x4d\xd0\xdd\x04\xdd\x4d\xd0\xdd\x04\xdd\x4d\xd0\xdd\x91\x94\xa0\xbb\x0f\x51\x82\xee\xde\x49\xcf\x32\x34\x91\xa0\xbb\x09\xba\xbb\x37\x25\xe8\x6e\x82\xee\x8e\xe3\x9b\xa0\xbb\x5e\x94\xa0\xbb\xf7\x52\x82\xee\x86\x50\x82\xee\xfa\x52\x82\xee\x8e\xa6\x04\xdd\x4d\xd0\xdd\x00\x4a\x00\x0c\x0f\x4a\xd0\xdd\x08\x0f\x87\x27\x97\x9e\x09\xba\x9b\xa0\xbb\x7b\x52\xf2\x8f\x75\x94\xa0\xbb\x01\x94\xa0\xbb\x0f\x52\x82\xee\x26\xe8\x6e\x00\xaf\xe7\x67\x39\x36\x10\xd1\x4b\x29\x66\xa1\xc5\x47\x91\x87\xc2\xfe\xd4\xa9\xf4\x68\x00\x86\xe9\x4e\xfc\x12\x08\xaf\x6a\xc1\xd0\xbd\x76\x37\xb1\x4b\x43\x04\x92\x27\xef\x21\x6e\x69\x88\x3e\xf2\x35\x7f\xbd\x31\x4b\xcf\x00\xbd\x16\x8c\x53\xba\x03\xa3\x14\x28\xc2\x37\xf0\x49\x0d\xc2\x28\x80\xe3\x4e\x6c\x52\xe0\x28\xb7\x70\x49\x0d\xb2\x28\xc2\xcc\x11\x80\xd9\x47\x15\x05\x86\xba\x7b\x78\xa4\x3e\xa2\x28\x80\x6b\x0f\x8b\xb4\x8d\x26\x0a\xd9\x29\xbd\x0b\x49\xe4\x80\x30\x21\x2f\xac\x01\x8a\x68\x07\x0e\x28\x80\x37\x22\x88\x22\x63\x80\x76\xe2\x7f\xc2\x8c\xb8\x1d\xd8\x9f\x06\xbd\x13\xb2\xb0\x1d\xee\xa7\x8f\xdc\x09\x39\x02\x2d\xe6\x67\x13\xb5\x13\xe4\x07\xc8\x63\x23\x76\x62\xc4\x47\x83\x63\xa3\x81\xe6\x9a\xcb\x95\xb9\x5e\x4a\xaa\x96\xa2\xf0\x54\x05\x03\x35\xf0\x9e\x71\x56\xd6\xa5\x91\x39\xca\xc8\x6d\xb6\x0a\x4c\xe4\x51\x2d\x64\x13\xe3\x9f\x36\xb0\xea\xad\xf1\x50\xa2\x48\x9a\x23\x77\x73\xc4\xb0\xaa\xf9\x92\xac\xfc\xed\x5d\x55\x67\x19\xa5\x39\xcd\x07\xce\x3d\xf8\xdd\xb4\x59\x0b\x4f\xbe\xb6\xd7\x23\x53\xf0\x2a\xc4\xc2\x08\x79\x16\xcc\x85\x2c\x89\x46\x1e\xbf\xfb\xad\x07\x87\x20\x00\xd8\xa3\x80\xbf\xa2\x03\xbf\x82\xcd\xb8\x30\x87\x56\x80\x33\x2b\xdc\x7e\x0c\x73\x62\xed\x06\x78\x85\xe9\xb8\x5d\xe0\xae\x30\x8e\x8f\x00\xec\xda\x09\xea\xea\xc3\x9f\xc2\x2c\xdd\x30\x40\x57\x24\xd8\x67\x30\x90\xeb\x71\x40\x5c\xbb\x01\x5c\x28\x5d\x42\x8c\x8b\x21\x78\x2b\x1c\x7e\xf5\x2c\x4c\x8b\xc7\x80\x5c\x6d\xc3\xad\xdc\x62\x85\xb9\x72\x5b\xa8\x55\x3c\xa8\x54\x24\x98\x54\x0c\x88\x54\x30\x3c\x2a\x1c\x1a\x15\x0b\x16\x15\x03\x12\xb5\xd5\xd0\x30\xc2\x09\x82\xa6\x07\x5d\x14\x90\x71\x2c\x17\x6a\x14\x08\xd4\xe3\x2e\x57\x0c\xe8\x53\x84\xf5\x0a\x83\x3c\x3d\x0e\xdc\x29\x26\xd4\x29\xc6\x12\x05\x05\xaa\x1e\x07\xde\xb4\x13\xda\x04\xde\x49\xe0\xb0\xe9\xee\x9a\xf6\xc3\x4b\x01\x4c\x37\x20\x4d\xfd\xd0\x52\x00\xd7\x16\xce\x14\x37\xac\x14\x18\x52\x8a\x15\x4e\x8a\x14\x4a\x7a\x24\x00\x52\x28\xf8\x68\x37\xf0\xc8\xd8\x20\x01\x07\x62\x0b\x74\xd4\xc1\x86\x02\xb8\xf6\x7d\x12\x61\x90\xa1\xc0\x0d\x65\x9c\x69\x46\x8a\xb7\xb4\x20\xeb\x2b\x9a\x09\x9e\x7b\x5a\x13\x1b\x6d\x77\x5d\xc8\x7c\x0e\xca\x32\xf5\x9c\x9f\xf5\x04\x0d\x0b\x3e\x2c\x89\x02\xd7\xff\xcd\x93\xab\xab\x1e\xd2\x84\x2f\x9d\x61\x8a\xb1\x47\xbb\x1e\xda\x3f\x9e\x35\xb2\x34\xc3\xad\x90\x37\x85\x20\xb9\x3a\xa9\x84\xfd\xbf\xae\x30\x43\xaf\x22\x83\x1d\x61\x48\x49\x86\xa7\x74\x39\xd9\xba\x17\xf1\x8e\xd7\x9f\xc5\x2d\x88\xb9\xa6\x1c\x0e\x19\x6f\x4e\xd8\x91\xaf\xf7\xa9\x75\x36\x75\xfe\xcc\xd6\x69\xe8\xcf\xf3\xd5\xcb\x66\x60\xad\xcb\x31\xc8\x30\xfb\x9c\x5d\x8e\xe8\x8c\x55\xea\x79\x7a\xb4\xdd\xe0\x1e\xcb\xa5\xed\xd8\xcf\xeb\xc2\x0a\x33\x5f\xff\x0d\x3a\xc3\x9d\x83\x7c\xe8\xd3\xf6\x3c\x16\xd0\x76\xd5\x7f\x85\x33\x6f\xa5\x21\xe1\x39\xb8\x9a\x5f\xde\x9c\xfb\x07\xfe\xb3\x3e\xba\x81\x50\xda\xc7\x82\xd1\xde\x09\xa1\xb5\x40\x58\x4f\xae\x5b\xf0\xd9\x0e\x04\xeb\xcb\x71\x08\x9d\xed\x03\x60\x03\xc6\xd8\x6a\xc8\x00\xf0\x6b\x8a\x11\xf8\xfd\xed\x9d\x20\x57\x0c\x17\x04\x98\xc4\x1b\x00\xd7\x58\xb9\xe0\xc3\x3c\xf0\x50\xa0\xf4\xb3\x79\xed\x37\x90\xd4\x50\xdf\x58\x7a\xed\xa7\xd7\xfe\x03\xf4\x08\xaf\x7d\xcd\x4a\x2a\x6a\xfd\x6c\x1f\x9c\xb7\x4b\x96\x2d\xfb\xb6\x20\x2b\xbd\x55\xb5\xa8\xf5\x86\xbd\xe6\x86\x18\x11\x8a\x90\x5e\x9d\x1b\xe4\x17\xd3\xd8\xe1\x50\xb5\xe2\xb1\xc5\x13\x7b\x4c\xa4\x73\x5c\xb4\x58\x59\x20\x0a\x08\xbc\xbd\xb8\xfa\xe9\xdd\xe9\x7f\x9c\xbd\xf3\x11\x34\xd7\x4b\xa6\xac\xca\x6c\xc4\x57\xcd\xd9\xdf\x6a\x0a\xa4\x14\xc6\x16\x2c\x82\x86\xaa\x8e\xd1\x11\xd2\xfb\x86\x67\x71\xa6\x98\x40\x6c\x2f\x31\x66\x14\x9b\x87\x80\x19\x46\x1f\x0c\x8f\x67\x88\x4c\xf7\x8b\x45\x7b\xc7\xa0\x37\x80\xc5\x6e\xf4\x66\x71\x40\xd2\x4a\x52\x45\xb9\xa7\xa5\x46\x80\x53\x6d\x64\x92\xb5\x43\x18\x07\x02\x8a\xf1\x45\x11\x98\xd3\x12\x68\xe3\x87\x58\xf8\x93\x6e\xe4\x97\x7e\x86\x7e\xa8\x99\x3f\xf8\x7c\x5f\x63\x64\xa7\xd1\x39\x0f\x4b\xd6\xb3\x25\xef\x84\xa2\x4d\x34\xae\x12\xf9\x81\x82\x73\x7f\xb4\x07\xc9\x73\x49\x15\x16\xd6\x66\xaa\xb3\xe7\x8c\x86\x64\xfe\x95\x5e\xf0\x2c\xda\x70\xda\x31\xbc\x84\x3f\xc1\x27\xf8\x13\x9a\x9c\x7f\xf4\xb5\x0c\x63\x98\x75\xa1\x0e\x0d\xfb\xfa\x3b\xbf\x8c\x72\x22\xbe\x5f\x12\x8d\xfc\xe0\xfc\x32\x04\xd2\x35\x63\x3c\xb7\x8a\xf6\x93\xa6\x92\x93\xa2\x79\x90\x84\xad\x74\x80\xe1\x6b\x26\xf5\xec\x2f\x8e\x4d\x5e\x3f\x9f\x7b\x73\x6c\x2d\x92\x63\xd0\x83\xab\xe3\xcd\x11\xaf\xdc\xce\xab\xe3\xcd\xd2\x5e\x39\x38\x9f\xa3\x87\xe1\xc2\x69\x0a\xa6\x7a\xa3\xf7\x5f\xd2\x76\xd6\x25\xd1\xd9\x72\xa8\xd6\xfc\x1f\x80\xef\xcd\x95\xe8\x19\x4f\xb9\x40\xd3\x21\xa8\x5e\xa8\x19\xea\xe7\x2d\x78\x42\x80\x46\x83\xfb\x74\x3e\xdf\x3c\xb9\xde\xab\x7a\xd7\xe3\x3f\xa8\x18\xa9\x33\xc5\x7b\x35\xf5\x2b\x91\x4f\xe1\x8c\x64\x4b\x6f\x9e\x66\xf1\xf2\x9e\x7d\x54\x89\xdc\x0e\x7e\x49\xbc\x43\x1f\xc6\xf2\x72\x63\x35\xec\x5d\x31\x97\xd0\x94\x29\x2b\xba\x8d\x66\xc8\x08\x37\x6b\x2b\xe9\x9c\x4a\x19\x72\xf4\x05\xcc\xd6\x88\xd7\x61\x19\x0d\xbc\x04\x01\x3a\xa1\x92\x42\x8b\x4c\x78\xe7\xf3\x6f\xe6\xbb\x22\x33\x5c\xee\x10\xa7\x7d\x17\xc7\xf9\xf6\xed\xe5\x31\x5c\xbf\xb9\x3c\x06\x21\xe1\xea\x4d\x08\xaa\xa0\xef\xaf\x78\x71\xfd\xe6\xf2\xc5\x93\x2d\x3a\x34\x4e\xe0\xd7\x1e\x15\x42\x24\x25\x39\x4b\x19\xca\xbb\x29\x65\x28\xef\x47\x29\x43\x79\x48\x29\x43\x39\x80\x67\xca\x50\x4e\x19\xca\x96\x52\x86\x72\xca\x50\xf6\xa4\x94\xa1\xfc\xf0\xe0\x52\x86\xf2\x67\x8b\xb9\x4a\x19\xca\x0f\x53\x42\x1f\xa5\x0c\xe5\x94\xa1\xbc\x45\x29\x43\xf9\xa9\x4d\x8b\x94\xa1\x9c\x32\x94\x1b\x4a\x19\xca\x23\x28\x65\x28\x8f\xa3\x94\xa1\xfc\x20\x3d\x33\xcc\x72\xca\x50\x4e\x98\xe5\x7d\xf9\x3c\x3f\xcc\x32\xa4\x0c\x65\x3f\x4a\x19\xca\xe3\x29\x65\x28\x8f\xa3\x94\xa1\x3c\x9e\x67\xca\x50\xee\x28\x65\x28\xa7\x0c\xe5\xcf\xf4\xe8\xa6\x0c\xe5\x94\xa1\xbc\x9b\x52\x8c\x20\x65\x28\x8f\xa3\x94\xa1\xec\xcf\x34\xbd\xf6\xfd\xf9\x3c\xbf\xd7\x7e\xca\x50\x4e\x19\xca\x0f\x52\x88\xe9\x26\xa9\x12\xb5\xcc\x7c\x54\xe4\xe0\x5c\x7d\x6c\xf8\x3c\x26\x30\x19\xce\x62\x24\x40\x2b\xc4\xa7\xa9\xca\x0c\x54\x76\xc3\x2e\x24\x25\xb9\x4f\xc4\xd2\x4c\x34\xc3\xd0\x69\xa7\x42\x3f\x2b\x0c\x75\xc1\x4a\xe6\x93\x9d\x0c\x5b\xc2\xe5\x1d\x72\xea\x02\xa5\x01\x38\x97\x92\x7c\xc2\x97\x11\x29\x45\xcd\xb5\x91\x57\x99\x28\x2b\x7f\x24\x6d\x7f\xa7\xf1\x60\xf6\x65\x41\x00\x56\xe0\x21\x09\x92\x09\x3e\x67\x8b\x5a\x12\xb3\x44\x27\x25\xe1\x64\x41\x27\x6e\x2a\x93\x76\x50\x93\xf6\x74\x9e\x3c\x91\x95\x4e\xf2\x06\x5f\x7a\x19\x6c\x36\x57\x44\x6b\x2a\xf9\x6b\xf8\xcf\xc3\xbf\x7e\xf1\xf3\xe4\xe8\xcb\xc3\xc3\x1f\x5e\x4e\xfe\xfd\xc7\x2f\x0e\xff\x3a\xc5\x7f\xfc\xeb\xd1\x97\x47\x3f\x37\x5f\x7c\x71\x74\x74\x78\xf8\xc3\x37\xef\xbf\xbe\xbe\x3c\xfb\x91\x1d\xfd\xfc\x03\xaf\xcb\x1b\xfb\xd5\xcf\x87\x3f\xd0\xb3\x1f\xf7\x64\x72\x74\xf4\xe5\x6f\xbc\x5f\x89\x01\x76\x48\x1c\x2b\x24\x8a\x0d\xf2\x08\x16\x88\x83\x99\x44\x11\x0f\x1f\x1d\xaf\x38\x02\xc2\xb9\x4e\xe2\x0b\x88\xe6\xc1\x8a\xc9\x9e\xcd\x98\xfd\xbd\x91\xa2\x64\xda\x68\x07\xa3\xd6\x48\x0f\xc2\xef\xcb\x51\x0f\x5a\xa6\x3a\x91\xcb\xe6\x21\x58\x68\xa6\xfa\x00\xeb\x5e\x52\xa3\xd0\x4b\x2a\x6f\x99\x77\x60\xc8\xbc\x94\x78\xe7\xd6\x40\x21\x38\xc9\xe9\x9c\x71\x6f\x4f\x09\x5a\x73\xa3\x0d\xb9\x24\x86\x93\x18\x1e\xc3\xe5\x39\x89\x61\x45\xb3\x5a\x32\xbd\x7e\x23\xb8\xa6\x9f\x3c\x3c\x23\xc3\x78\xef\x90\x9b\xcb\x58\xf1\xb4\x7b\x6f\x9d\x5c\xfb\xec\xf3\x08\x71\x32\x97\x92\xad\x58\x41\x17\xf4\x4c\x65\xa4\x40\x51\x11\x43\xed\x9d\xde\xc1\xdb\x3f\x66\xa2\xa5\x28\x14\xdc\x2e\xa9\x11\xcf\x40\xcc\xdc\xd1\x1d\x95\x11\x5f\xa6\x0b\xc2\x38\x94\x46\xa6\x56\xcd\x40\x95\xd1\x28\x1c\x98\xb7\xee\x33\x2f\x2c\xae\x9b\xc1\xb9\xb2\x28\x33\x21\x0a\x97\x76\xe6\x8d\x43\x6e\x57\x80\x59\xa7\x1c\x17\x3f\x71\x7a\xfb\x93\x19\xb9\xef\x58\xe7\x05\x59\xc0\x2d\x2b\x0a\xcc\xd5\xa4\x7a\xab\x99\xb5\xef\x1a\x34\x93\x8f\x7c\x08\x30\xcf\xa8\xa6\x40\x8a\x5b\xb2\xc6\xa3\x10\x67\xbc\x4c\xbd\x86\x57\x47\x98\xbf\x46\x14\xb4\xe3\xcd\xe1\xb7\xbe\x61\xe3\x25\x51\xf0\xe6\xf4\xf2\xa7\xab\xbf\x5c\xfd\x74\xfa\xf6\xfd\xf9\x45\x88\x66\x35\xa7\x87\x7a\x1d\xf2\x8c\x54\x64\xc6\x0a\xe6\xaf\x50\xb7\xb0\x88\x7d\x96\x01\xf6\x51\x9e\x9f\xe4\x52\x54\x76\x0f\x65\xcd\x39\xe3\x8b\x20\x31\x6a\xe9\xed\xb0\xaf\x7e\x63\x34\x9a\xc3\xed\xeb\xa0\x9b\x0f\xa6\x0c\x0b\x49\xb8\x31\x6c\x67\xeb\x80\xcc\xd1\x0e\xae\x22\x6b\xae\x59\xf9\xf9\x26\x24\x93\x3c\x56\x32\xf2\x69\x9e\xd3\x3c\xc6\xf1\x7a\x8e\x60\xfc\x37\xcd\xb4\x42\xb2\x50\xa0\xab\xf5\x06\x97\x1f\xae\xce\xff\x77\x9c\xd5\x02\xb7\x62\x21\x41\x9d\x08\x95\x26\xa4\xa8\x22\x9d\xa4\x8f\xb4\x14\xab\x74\x96\x1e\xa0\x5f\xe8\x59\x6a\x2d\xb9\x18\x38\xa2\x8f\x35\xef\xc9\x6a\xef\xa4\xfe\x6e\x4c\x50\x8a\x9c\x4e\xe1\xd2\x1a\x48\x54\x45\xe1\xd9\xaf\x14\x2a\x29\x18\xc6\x5c\x33\x52\x78\x9b\x9a\xf4\x6f\x35\x5b\x91\x82\xda\xa4\x37\x2c\x6b\xd0\xaf\x7a\x16\x41\x37\xcf\x49\xa1\x82\x94\x9e\xbf\x4d\x64\x8c\xd3\xf7\xa2\xe6\x31\x30\x3b\x2d\x2f\xc8\x29\x17\x3a\xc8\xb5\x67\xe6\x85\x65\xea\xa4\xc8\xc0\xba\xf7\x82\xe0\xc9\x0d\x5e\xad\x1f\x4a\xba\xee\x4c\x22\x7f\x13\xdc\xed\xe3\x65\x3b\x77\x1b\x0f\xad\x55\xd0\xf4\xb7\x4c\xa2\x50\x78\x87\x99\xbf\xa4\x24\xc7\xea\x36\x15\xd1\x4b\x8b\x5d\x2b\x89\xba\xf1\x76\xc3\x21\x1b\xf7\xa6\x73\x0e\x53\x5b\x94\xa6\x5d\x8c\x6b\x7f\xe1\x37\xa7\x44\xd7\x92\xda\x57\x99\x4d\x90\xa3\x9c\xcc\x0a\x5f\xb4\x71\xa0\x20\x35\x6b\xf7\x81\x17\xeb\x8f\x42\xe8\xaf\xda\x0a\x24\x11\x2e\xcd\xf7\xee\x05\x8f\xf5\xff\x42\x9f\x6e\x4b\x2c\xe7\x6c\xc6\x3a\xc1\x8d\x46\x61\x15\x5e\x30\xc5\x9d\x71\x73\xdc\x9f\x50\x54\xc9\x9a\x9f\xaa\xaf\xa5\xa8\x3d\x2d\xa3\xad\xc7\xdb\xd7\xe7\x6f\x51\xa2\xd7\x3c\xe0\xf1\x42\xb9\x96\xeb\x4a\x30\x1b\x7f\x88\xea\x2f\xf8\xd6\xa8\xc4\x8d\xfb\xef\x2b\xa8\xe6\x50\x73\x45\xf5\x14\xde\x93\x35\x90\x42\x89\xc6\xc9\xe1\xad\x72\x2f\x11\xa5\xde\xf7\x23\x4e\x01\xeb\x21\x7a\x3f\x2e\x19\x87\x99\xd0\xcb\x2d\xf7\xa4\x7f\x01\xc4\xed\x31\x62\xd5\xa4\x20\x70\x79\x57\x3b\x9d\xf1\xcd\xa1\xfa\x4a\x7c\x72\x43\x15\x54\x92\x66\x34\xa7\x3c\x0b\xba\x5f\x91\x50\x24\x7f\xfc\xbd\xef\x0d\xbd\x10\xdc\x08\xc9\x08\x77\xf4\x9c\xe7\x2c\x23\xda\x7a\x21\x75\x14\x07\x03\xe2\xd7\x9c\x67\x8b\x60\x41\x1d\x23\x22\x3d\xd9\xd6\x8a\x4a\x0c\x10\x6a\x59\x53\x7b\xb0\xbe\xa9\x67\xb4\xa0\x1a\xdd\x88\xfe\xc1\x2d\x96\x13\x6d\xab\x7d\xb1\x92\x2c\x28\x10\xdd\x88\x01\x7f\x1f\x13\xe5\xca\xa8\x53\x5c\x49\xa6\x21\x17\xb4\x2d\x53\xe5\xeb\xec\x50\xf0\xed\xf9\x5b\x78\x09\x87\x66\x0d\x8f\xd0\x9e\x98\x13\x56\xf8\xd7\xab\x40\x24\xfd\x86\xfd\xc3\xe6\xcd\x70\x7d\xb5\xd7\xb9\x93\x7d\x20\xa4\x55\x5f\xc7\xc0\x05\xa8\x3a\x5b\x36\x6b\xed\xef\x83\x6d\xdc\xc5\x2e\x2b\x06\x21\x25\x4e\xc0\x7a\x72\x6c\xc5\xf2\x5d\x02\xd6\x77\x6d\x2d\xd3\x5d\x02\xd6\x3b\x54\x97\xdf\x25\x60\x83\x50\x7a\xcf\x5c\xc0\x06\x1a\x30\xdf\x2a\x2a\x23\xd9\x2f\xdf\x3e\x73\xfb\xa5\xff\xc4\x35\xb2\xb2\xdb\x59\x7f\x03\xc1\x0a\xc4\x92\x6a\x92\x13\x4d\x9c\x5d\x13\x5a\x57\x73\xdb\x26\x4a\x97\xef\x79\x5e\xbe\xa7\xb4\x6e\x14\x7d\xc7\x78\xfd\xc9\x26\x71\xc4\x0a\x20\x5d\x9d\x21\x53\xbc\x74\x01\x4b\x8c\x47\x97\x54\x55\xc1\x3a\x0c\x6a\x50\xc3\x12\x68\x15\x67\xbf\xbc\x79\xb8\x70\x68\x9e\x33\xa8\x38\x1b\xd8\xac\x79\xb3\x12\x9e\x0b\x5f\x74\xf7\xc6\x22\x5a\x38\x02\xc9\x96\xfd\xd4\x0a\x73\xc9\x7d\xef\x5a\x12\x0d\x9f\x81\x68\x78\xd2\xc0\x5f\x41\x57\xd4\xbb\x1a\xfb\x86\x58\x78\x67\x78\x01\x53\xcd\xb1\x0e\x88\x1e\xe0\xb0\xa0\x20\x33\x5a\x58\xcb\xdf\x8a\x88\x08\x39\x62\xc1\xc2\x25\x4a\x98\x4c\x8a\x22\x56\x0d\x8c\x8f\xa2\xc0\x04\x11\x12\x61\xd9\xcd\xb0\x7e\xc1\xab\x8e\x2c\xe2\xac\xfa\xf5\xba\x8a\xb6\xea\x18\x32\xf8\xe5\xae\x7a\xed\xfd\x70\x80\xcd\x55\x37\x6f\x90\x58\xab\x8e\x86\xfd\x2f\x73\xd5\x15\xcd\x32\x51\x56\x97\x52\xcc\x99\xaf\x9c\xd9\x32\xf8\x1c\x53\x10\x55\x48\xd9\x6e\xfb\xa2\xb2\xb0\x9b\x7e\xdc\x20\xa0\x07\xd3\xc6\xc0\x30\x78\x5a\x49\xb1\x62\xb9\xf7\x7b\x8d\x68\x6b\xd7\x34\x49\xc5\xff\x23\xd8\x7c\x44\x85\xb6\x61\x89\x06\x2e\xa5\x58\x51\x29\x9b\xea\xfa\x66\x94\x8e\xdd\x67\x5a\x4e\xd7\x1b\x6f\x10\xc1\x08\x12\x19\x29\xb0\x5d\x59\xc8\x8d\x81\xcd\x5b\xb3\xc9\x36\x40\xb4\xb0\xd6\xa3\x8c\x80\x59\xc3\x0d\xc2\x52\x11\x2c\x57\x20\x18\x65\x6b\x70\x01\x5c\xe4\xd4\xf5\xfd\x08\x60\xeb\x4a\x82\xda\x38\x75\x33\xda\xf0\xd4\x70\x63\x6d\xbb\x4c\x08\x9a\xbb\x11\x07\x70\xc4\xb9\x6a\xe1\x7a\x06\xbc\x0f\x6e\xdb\x66\x37\x9f\xf2\x9c\xf1\x05\x46\x98\x8f\x41\xd2\x82\x04\x14\xad\x81\x4e\xa7\xdc\x58\xf7\xfc\x01\x4a\x4c\xb7\x04\x01\x5c\x1b\x91\xd9\x6c\x0e\xbe\x66\x99\xe0\x21\x69\xf6\xb8\x82\x18\xbc\x6d\x5e\x9c\xf3\x50\x0c\x11\x53\xf0\xe2\x5d\x73\x89\xbc\xfb\x27\x3d\x37\xd3\xf1\x05\xda\x7b\xed\x8d\x0e\x58\x1f\x8b\xd8\xb8\x61\x3c\x77\x39\xf1\xfd\x4d\x0d\xe1\xeb\x82\x03\xce\x2f\x33\x85\xef\xb0\x25\x61\x98\xba\x32\x44\x24\x7d\x0d\x7f\xe5\xd0\x6e\x2a\x4c\x3a\x81\x16\x74\xf3\x50\x14\x6e\x09\xb4\x50\xf1\xd0\xb5\x40\xb2\x02\xed\xa3\x75\x02\x85\xd5\x0d\x03\xab\xee\x76\x81\x65\xc2\x96\x00\xa1\x0e\xcd\x95\x6e\x87\x1e\x66\x22\xe7\x53\xf8\x96\xa3\xcc\x31\xeb\x3b\x01\x2e\x22\x6c\x57\xb7\xac\xcd\x09\x7b\xf1\x54\x77\xfb\x96\xf1\x5c\xdc\xaa\xb8\xbe\xd1\xef\x2d\xd3\xc6\xf1\xe4\x5b\x05\x49\x51\xad\x19\x5f\xa8\xbe\x7f\x94\x14\x61\x69\x4a\x96\x76\x39\x48\xc3\x6e\xf7\x5c\x0a\x5b\x5a\x6f\xdb\x81\x17\x18\xa1\xb4\x87\xd0\xe2\x33\x1a\x87\xa3\xaf\xbb\x75\x1b\x9f\xb1\xcb\xe1\x18\x00\x7f\x4b\x0e\xc7\x87\x68\x51\x2a\xf2\x46\x9a\x49\x68\x46\x8a\xab\xca\xb7\x05\x1e\x6c\x5e\xbc\xaf\xdf\x5f\x9d\x0e\x19\x87\x59\x1e\xb7\x4b\x2a\xed\xdb\xca\x70\x06\x92\x97\x4c\x29\xff\x80\xbb\xa1\x5b\x3a\x5b\x0a\x71\x03\x87\x4d\xd6\xef\x82\xe9\x65\x3d\x9b\x66\xa2\xec\x25\x00\x4f\x14\x5b\xa8\x13\x27\x98\x26\x66\xbd\x7c\xd3\x97\x70\x26\xbc\x60\xdc\xc1\x1b\x31\xcc\xc0\xb5\x02\xe1\xdf\xef\x18\xba\x25\xc9\xda\xd5\xc6\x13\x1f\xa2\x6c\xb1\x33\xab\xcd\xc5\xd9\xb1\x91\x17\x61\xe5\xaf\xb0\x60\xfa\x93\x5a\x8f\xdb\x87\xfe\x22\xa8\x1e\xff\x03\x07\x3f\x70\xbd\x6c\x1f\x41\x5b\xab\xcd\x85\xd6\xcd\x67\x04\x70\xdc\x38\x29\xce\x0b\xf4\xb4\x1e\xf8\x06\xd3\x10\x71\x27\x10\xdb\xe0\x58\x86\x3d\xcb\x1b\x0b\xa2\x43\x49\xf4\xf0\x0e\x01\xac\x37\x91\x12\x2d\xe6\x21\x80\xe7\x66\xb2\x5e\x14\xc4\x04\x3c\x22\x6a\x02\xf6\x46\x4e\x04\x7c\xc0\xd0\x60\x89\x64\x05\xc0\xdd\x51\xd2\x40\x81\xfe\x68\x86\x0b\xfc\xff\xec\xbd\x8d\x77\x1c\xb7\xb1\x27\xfa\xaf\xe0\x30\xd9\x47\x32\xe1\x0c\x25\x3b\x37\x37\xd1\xe6\xc5\x87\x91\x28\x87\xcf\x12\xc5\x27\xca\xf2\xcb\xb3\x7c\x13\x4c\x37\x66\x06\x97\xdd\x40\x07\x40\x0f\x39\x59\xef\xff\xbe\x07\x55\x40\x7f\xcc\x8c\x2c\x77\xa1\x25\x52\xce\x60\xcf\x59\x5b\xca\x75\x0d\x1a\x1f\xf5\x85\x5f\xfd\x6a\x34\xe7\x85\xa5\x5d\xfc\xc0\x76\xbb\x6f\x63\xbc\x3d\xf6\x6d\x8c\x7f\xde\xd8\xb7\x31\xee\x8f\x7d\x1b\xe3\x94\x60\x60\xdf\xc6\x78\xdf\xc6\x18\xc6\xbe\x8d\xf1\xbe\x8d\x31\x71\xec\xdb\x18\x7f\x78\x72\xfb\x36\xc6\x9f\x6d\x63\x86\x7d\x1b\xe3\x0f\x8f\x7d\x8b\x82\x7d\x1b\xe3\x7d\x1b\xe3\xad\xb1\x6f\x63\x7c\xdf\xae\xc5\xbe\x8d\xf1\xbe\x8d\x71\x1c\xfb\x36\xc6\x03\xc6\xbe\x8d\xf1\xb0\xb1\x6f\x63\xfc\xc1\xf1\xc0\x1a\x1b\xed\xdb\x18\xef\x1b\x1b\xfd\x5c\x39\x0f\xaf\xb1\x11\xdb\xb7\x31\xa6\x8d\x7d\x1b\xe3\xe1\x63\xdf\xc6\x78\xd8\xd8\xb7\x31\x1e\x2e\x73\xdf\xc6\xb8\x1d\xfb\x36\xc6\xfb\x36\xc6\x9f\xe9\xd1\xdd\xb7\x31\xde\xb7\x31\xde\x3d\xf6\x6f\x04\xfb\x36\xc6\xc3\xc6\xbe\x8d\x31\x5d\xe8\x3e\xda\xa7\xcb\x79\x78\xd1\xfe\xbe\x8d\xf1\xbe\x8d\xf1\x07\x47\x8a\xeb\x66\x5d\x2e\x09\xbd\xba\x3e\x0e\x19\x77\x40\xcb\x76\x08\xce\x66\xf5\x7c\x2e\x0c\xb8\xdd\x30\x53\x52\xe2\x66\x77\xb9\x2b\x72\xd0\x2e\x25\xe5\xb8\x06\x94\x9f\x15\xee\x04\x78\xc3\x2d\x96\x20\xc2\x14\x69\x80\xc7\xfe\x14\x03\xcf\x1b\x74\xa8\x32\xc2\xd2\xe2\x6b\xa9\xd8\xf9\xab\xe7\xd3\x11\x78\xc8\x53\x28\x3c\x61\x4d\x5e\xa9\x2c\x15\xf6\xde\x1e\xb2\x34\x3a\xbd\x48\xa5\x17\xce\x5a\x56\x68\x8b\xd8\x5a\xdc\xbc\x6c\xc9\x95\x12\x14\x16\x62\x54\x88\xd2\x41\xda\x6d\x26\x84\x62\xba\x12\x0a\x2b\xcb\x38\xb3\x52\x2d\x48\x65\xcb\xdc\x39\x9e\x2d\xa7\xfe\xfb\x55\x3c\x60\xa1\x85\x59\x33\x6b\xca\x55\x73\x46\xf0\x12\x0f\x9a\x11\x25\x97\x38\x5d\xc6\x33\xa3\xad\x65\x65\x5d\x38\x59\x25\x4c\x98\x59\x01\x05\x8b\x16\xab\x67\xe3\x21\x60\xa4\xeb\x66\x05\x82\x3d\x81\x30\xba\x59\x83\xb0\xbc\x24\x17\xac\xbd\x6a\x10\xc0\x9f\x40\x23\xd7\xb2\x72\x6b\xe6\x8f\x07\x65\xfb\x01\xf7\x2f\x8d\x75\x2c\x2b\x24\x44\x70\xb0\x0e\x02\x2c\x19\xcc\x99\x82\x00\xe6\x2a\xf7\x92\x55\xd8\x23\x1b\x36\x49\xe5\xe0\x80\x56\x24\x87\x1f\x8a\x99\xe0\x33\xf1\x32\xe1\x74\x73\x69\x43\x40\x61\x49\x13\x8d\x2d\x3c\xf0\x72\xc5\x3d\x82\xeb\x95\x13\xb9\xe8\xe3\x37\x07\x21\x9d\x29\x27\xdc\x7f\xe8\xba\x11\xb2\xe2\x8d\x09\xc0\x7e\x19\x51\x41\x92\xbe\x7f\xbb\xac\x2d\x32\xb0\x83\x81\x20\x88\xec\x98\x14\xb8\xa6\x4a\xac\xbc\xf5\x12\x99\x90\x2b\xef\x84\x13\x44\xee\xb4\x07\x9f\xd4\x1c\x38\x6e\x16\xc2\x3d\x8d\x6b\x45\xab\x7f\xec\xf3\xdd\xcf\xd1\x0e\x6f\x54\x8d\x26\x29\x05\x58\xfa\x2b\x9d\x5f\x43\xbd\x28\xd2\xe8\x93\x34\xd7\x8e\xfa\xaa\xb0\x04\xd8\x49\x67\x24\x91\x91\xae\x80\x46\x4b\x1f\x3c\x24\xbf\x78\xb6\xe2\x99\xb0\xec\xe8\xe2\xea\xe9\x09\xbb\xba\x78\x86\x95\x01\x04\x99\x7a\xbe\x83\x63\x2d\x3a\x4d\xa0\xd2\x88\x3a\x76\xd7\xe7\x4b\x1b\x0a\x2e\x08\x32\x6f\x97\xdc\xc1\xc5\xea\x7c\x3e\x37\xde\x3f\xe0\x06\x7b\xf4\x12\x27\x5a\xe9\x7c\xca\x2e\xb5\x13\x4d\x1f\x86\x51\xfc\x16\x08\xc2\x43\xb6\x31\xe8\x2e\xec\xf9\x43\x75\xeb\x48\x41\xaf\x13\xa6\x94\x0a\x68\x9b\x5e\x0a\x6b\xf9\x42\x5c\x91\x40\x2c\xef\x4b\x91\x01\x8e\x25\xda\x14\xb2\x35\x2e\x90\x63\xab\x89\x51\xdb\x4a\xa2\x43\xca\x65\xee\x7c\x34\x2b\xf1\xab\x9b\x9b\x77\x6b\xa4\x73\xa4\x43\x2d\x2d\x76\xea\x02\xfc\xdf\x26\x8b\x23\x6d\xa2\x9d\x2a\x29\xf6\x32\x4e\x14\x27\xe8\x7f\xce\xc7\x9a\x8a\xc6\x4f\x88\x60\xc5\x99\x91\x62\xce\xe6\x12\x8a\x91\xa0\x6c\xe6\x04\x3b\x43\x70\xca\x6c\xb9\x62\xdc\x5a\x61\x60\x5d\x43\xd9\x44\x5c\xdf\x29\xfb\x8e\xd6\x13\x64\x26\xbc\xbb\xa8\x32\xde\xf6\x59\x45\x56\x25\x39\x67\x0b\x28\xd0\xa1\xdd\x6b\xae\xd8\xef\x1e\xfd\xf1\xf7\x6c\xb6\x76\x22\x34\x43\x73\xda\xf1\x22\x4e\x98\x20\xb4\x10\x6a\xe1\x4f\x3b\x7a\xde\x7d\x8e\x1d\x6a\x4b\x94\x99\x60\x85\x2c\xa5\x43\xde\x9e\xc7\x5f\xdc\xcc\x7a\xa9\x15\x82\xc4\xd3\x5c\xac\x4e\x3b\x37\x60\x52\xe8\xc5\x94\x3d\xe5\xca\xeb\x74\xd2\xfb\x5f\x5d\xe5\x80\x1f\x18\x9e\x36\x19\x57\x71\xe9\x42\x66\xeb\x54\x27\x24\x10\xaa\xb1\xa5\xbe\xc5\x4e\x7c\xed\xef\x10\x96\x26\x6a\x97\xb6\x7c\xb8\xd2\x55\x5d\xc0\x72\xb1\xe7\x34\xfe\x2b\xd0\x54\xb5\x15\x9b\x64\x2c\xef\xd1\xe5\x34\xe5\x10\xa7\xb9\x91\xcf\x40\x25\x91\xb0\x10\x3a\x30\x19\x84\x47\xe2\xa6\x6b\x0e\xc9\xee\x31\xf6\x9c\x17\xc5\x8c\x67\x37\x6f\xf4\x0b\xbd\xb0\xaf\xd4\xb9\x31\xda\xf4\x56\x88\x72\x8f\xb9\x0f\xfe\x96\xb5\xba\x81\x86\xcf\xcd\xc7\x17\x7a\xc1\x74\xed\xaa\x9a\x94\xc4\x99\x6f\x1e\xa7\x66\x4d\x88\x3c\x68\x4d\xa4\x1b\x62\xcb\xce\x4c\xc5\x9d\xa4\xbd\x60\xde\x4a\xaf\xc0\x14\x13\x7e\x1d\x51\x2b\xb6\x5f\x4d\x8b\xf9\x3b\xea\xeb\x8b\x47\xbf\xfb\x03\x2a\x5c\xa6\x0d\xfb\xc3\x23\xa8\xad\x26\x45\xa9\xe0\x0a\x80\xb7\x27\x2d\xb3\x25\x2f\x0a\xef\x98\xa6\x29\x46\x7f\x1d\x3b\x8a\xb0\x51\x6b\x9f\x54\xab\xb9\x54\x05\xf6\x11\x73\xb8\x6f\xde\xfc\x0d\x12\xb8\xd2\x59\x51\xcc\x49\xc1\x75\x61\x75\xdb\x2b\xf3\x10\x62\xe2\xc3\xe0\x8b\x38\x53\x93\x54\xc0\xfd\x66\x45\x57\xba\xa8\x4b\xf1\x4c\xac\x64\x46\x79\x9d\xee\x6d\x5d\x4f\x16\x9d\xc0\xa0\x90\x16\x9a\x19\xcd\x0a\x9d\xdd\xb0\x3c\x88\x6b\xab\x53\x28\x5e\xc8\x3a\x95\x93\x3c\xa5\x96\x88\x5c\x43\xf4\xde\xd5\x6d\x2b\x80\x48\xef\x34\x9c\x95\xbc\xaa\xa4\x5a\xf8\x65\xe6\xcc\xf0\xdb\xde\x62\x93\x64\x7a\xcd\x0b\xc4\xa3\x49\xc4\xef\x89\x18\x8f\x14\x84\xc7\x24\x7c\x3d\xd1\xe7\x20\x97\x17\xa5\x82\x43\xda\x59\x53\xdf\xaf\x7b\xc7\xac\x15\x97\x4a\x41\x52\x81\x0c\xe4\x9e\x18\xa9\x37\x19\x6b\x53\x18\x38\xcf\x26\xec\xf5\x07\x3a\x81\x66\xcb\x69\x2a\x76\x20\xf9\xc1\x3e\xa5\x98\xab\xb7\x73\xaa\x81\x46\x94\xdc\x91\x92\x15\x38\xba\xf9\x4b\xce\x2a\x61\xac\xb4\xde\x47\x7f\x0b\x0a\xe8\x69\xc1\x25\xf5\xfd\xbb\xc9\xf0\x55\x9a\xba\x55\x09\xcb\x8d\x0a\x14\x1a\x5b\xa7\x5a\xba\x2b\x9d\x07\x71\x60\x98\x20\x6d\x42\xca\x77\x6e\xa5\x59\x52\x99\x65\x46\x73\xff\xee\xd3\xd4\xbd\x6d\x77\x2a\xdd\xd2\x79\x29\x8d\xa9\x43\xc9\xc1\x58\x11\x25\x7e\xbe\x06\x0e\xd6\xe2\x73\xb3\x6f\xcd\xa4\x47\x51\x92\x60\xd8\x82\xaf\x92\x62\xdc\xda\x58\xb5\x7d\x70\x5c\x8a\xa0\x14\xc8\x52\xdb\x34\x4b\xc8\xc4\x4e\x03\xe6\x5b\x91\xbb\x1c\x37\x53\x65\x87\x4f\x0e\xef\xcd\xc8\xe1\x26\x1a\x5d\xf1\x05\xe4\x0e\x46\xd9\xcb\x4d\xa1\xe4\x15\xca\x05\xa6\x35\x84\x85\xb4\x19\xc8\x85\xc7\x17\xba\xef\x13\x66\x25\xf2\x96\x13\x1c\x98\xfe\x13\x58\x34\x3a\x47\x2e\x24\x4c\x34\x44\xca\xb7\x09\xf4\x06\xdc\xe8\x5a\xe5\x01\xd4\xd1\x20\x89\x5e\x6e\x2c\xec\x25\x9d\x88\x10\xd2\x3c\xb1\x0f\x8a\x0f\x71\xa1\xde\x59\x5a\x36\x13\x8e\xde\x65\x44\x2a\xf6\x78\xfa\xf8\xd1\xe7\xef\xb3\xc1\x9a\x8c\xe4\xb3\x5d\x36\x3e\x1b\x5a\xb9\x7b\x5b\x1d\x23\x78\xfe\x4a\x15\x84\x4c\x10\x8e\x7e\xd9\x50\x78\x92\xf2\x42\x27\x5a\x25\x50\xc6\xc8\xd8\xe9\x1d\x44\xdd\x1a\xe9\xc2\x0d\xba\x95\x09\xf5\xa6\x47\x90\xb4\x61\xda\x74\x39\x79\x8f\xdb\x5c\x5e\x42\x48\x42\xcd\x07\x85\xff\x3e\xb1\xdd\x35\x63\xb6\x9e\x3d\x38\xbb\x8b\x06\x16\x95\xea\xae\xf7\x54\xfa\x7a\x07\xc9\xdb\x26\x98\x2c\xb1\x0b\x21\x3e\x38\x60\x47\xf8\x0b\x87\x48\x4a\x79\x7c\x6f\xd7\x33\x6c\xeb\xf9\x5d\x45\x6e\x48\xd8\xdb\xda\xf3\xbb\x8a\xab\x5c\xe4\x18\xf0\x27\xb8\xd6\x2c\xb2\x30\xef\xda\xe3\x74\xb3\x79\x68\xfb\x7b\x4c\x96\xd8\x75\xcf\xfe\x22\x96\x7c\x25\x80\xba\x53\x16\xdc\x24\xa8\x27\xa7\xd9\x35\xee\x0c\x9b\xd5\x8e\x09\xb5\x92\x46\xab\x52\x24\x30\x9d\xaf\xb8\x91\x7c\x56\x08\x66\xc4\x5c\x18\xa1\x32\x61\xd9\xaf\x8f\xde\x9e\xbd\x86\x6a\x09\x7a\x3f\x05\x6e\x04\x13\x71\xd7\x6b\x0b\x55\xf6\x23\xdd\xc2\xce\x67\x4f\x37\x2e\x10\x5d\x45\x6f\x5c\xbc\xb8\xce\xfe\x06\xd0\xd7\x40\xe5\xcd\x7e\xf9\xf5\x28\x6b\x57\xf3\x02\xd8\x5b\xb3\xa2\xb6\x72\x75\x1f\xf6\x37\xb0\xe9\x3e\x93\x84\x9b\xbd\xc1\x42\xdc\x5e\x9a\x2d\x8a\x5e\xca\x87\x45\xcc\xd5\x78\xed\xc8\x03\x0e\xe9\xd0\x36\x4d\x9f\xba\xbd\x72\xc8\x8f\x72\xac\x94\x8b\x25\x24\x50\x3a\x6d\xf6\xc8\x46\xab\x03\x0d\x2b\x01\x45\x72\x5f\xcf\x73\x3e\xf8\x38\x2b\x24\xb7\xc3\xc2\xf0\x2d\x76\xc1\x20\x03\xda\xcf\xaa\xd0\x2d\x89\x0f\x03\x86\xc4\xf7\x1d\x3f\x25\x7c\x40\xbf\xb8\x0a\x08\xd5\xb8\x83\x52\xfd\xb7\xc8\x86\xbe\x00\x37\xd9\xb4\x4a\xe7\x87\x36\x88\x07\xec\x95\x9c\x53\x59\xcf\xc1\x3f\x97\x16\xe9\xd8\x57\xd0\xff\x6d\xae\x0d\x70\xe0\x7a\xf9\x97\xc2\xf9\xdb\x31\x48\x64\xa5\xf3\x41\x9c\x76\xb4\x74\x1c\x21\x11\xb7\x7b\xaf\xd9\x52\x17\x39\xb2\xbc\x87\x47\xa3\x81\x07\x76\x26\xdc\xad\x10\x8a\x5d\x5c\xc1\x5e\xfb\x65\x03\x84\x63\x6f\xc7\x07\xca\x8c\xe7\x83\x71\x38\x86\xd0\x14\xa4\x93\x5b\x8e\xbb\x3f\x50\xaa\x3f\x2b\xc3\x8e\x07\x39\x9b\x47\x4f\x8a\x35\xeb\x97\xa8\xe1\xff\xda\xec\x43\x24\x51\xe0\x33\x4d\xa2\x64\xf0\x1b\x9b\xe7\x86\xd4\x3f\xe5\x5e\x72\xcd\x09\x06\x56\x56\xa9\xf8\xac\x66\xb1\xe2\x9b\xd8\x92\x56\x84\x0d\x8a\x0d\x0e\xfe\x27\xb4\x20\x17\x57\x4f\xc9\xd6\xe3\xf0\xdb\x00\xf9\xf2\x82\x0e\x0f\x2d\x93\x55\xd6\x62\x9d\x87\x7d\x44\x8b\xcf\x8d\xe8\x89\x26\x5a\x1e\x02\xe2\xa3\x85\xc8\x1d\xc5\x9f\x64\x4a\x99\x42\x21\xde\xb7\x0a\x1c\xaa\x04\x9c\x37\xe0\x64\x00\xe2\xdd\x5b\x5f\x1b\xa5\x53\x97\x38\x16\xa4\xa0\x89\x07\x98\x52\x2c\x6e\xa8\xb4\x71\x76\x38\xe3\x7d\xd7\x3d\x6b\x4a\xb8\x5b\xbb\x4c\x22\xf0\xa1\x24\x49\xe8\xbb\x7e\x75\xf1\x6c\xbc\xe3\x5f\xc9\xfc\xb3\x3d\xfe\x43\xf3\x9f\x7d\x9e\xb7\x5e\xeb\x98\x28\x8e\x52\x2d\x73\xa5\xf3\xf7\x04\x16\xad\x13\x30\xf8\xd5\x2a\x1e\xd3\x50\xeb\xc7\x19\x3e\xc6\x4e\x62\x77\x5d\x28\xe2\x1e\x7e\xde\x06\x6a\x5b\x08\x17\xae\xea\xa2\xb8\x16\x99\x11\xc3\x1e\xac\xfb\xe7\xee\x62\x43\xd2\x18\xae\x7b\x27\x9f\x00\x5c\xd0\x41\x30\x3a\x60\x76\xe8\x8a\x37\xb7\x20\x70\xff\x81\x47\x52\xd5\x45\x01\x1c\x39\x6a\x4d\x39\x1a\xb0\x7e\xf8\xf2\x80\xe8\x2f\x69\x63\x1d\x15\x16\x82\x36\xe7\x65\xa0\xb6\x15\x56\x34\x1f\x1c\x8f\x4a\xc5\xad\x45\x84\xa8\x54\xb9\x5c\xc9\xbc\x1e\xb8\xae\xfe\x63\x21\x46\x0c\xac\x3b\xf0\xea\xd2\x78\x66\x25\xa9\x53\xe0\x73\x6d\x98\xb8\xe3\x5e\xe4\x49\x53\x7b\xce\x2d\x5c\xb4\x5c\x67\x37\xc2\x9c\xb0\xc1\xf9\xf4\x67\xf0\x1f\x3e\x85\xc8\x18\x0e\x76\xb3\x16\xdc\xf8\xbb\xac\xb4\x19\x1a\x62\x0d\x24\x42\x68\x4b\x12\x4e\x71\x8f\x7f\x85\x5b\xb9\x96\x6a\x31\x81\xbf\xf1\x8b\x19\x66\x35\xd1\x6a\xc2\x27\x5e\x19\x3c\xf8\x80\x0b\x9a\x81\xbf\x82\x48\xe2\x75\xbc\x5d\x31\x7d\x30\x34\x90\x11\x4a\xd7\x8b\x25\x2c\xaa\x29\x79\x68\xcd\xc5\x0a\xe1\xa0\x07\x0e\xe2\x61\x07\x8a\x44\xa2\xf7\x30\xaf\x3c\x84\x3c\xdd\x8e\x50\x83\x6f\x3d\xa3\x5a\xbf\x7b\x08\xba\x68\xef\x7d\x1b\x7c\x27\x9d\x46\xa2\x61\x25\x49\xb4\x5f\x03\xef\x8b\x5e\x09\xb3\x92\xe2\xf6\x34\xb8\x9a\x93\x5b\xe9\x96\x13\x5c\x3d\x7b\x0a\x5b\x70\xfa\x2b\xf8\x07\x61\x2e\x48\x16\x76\x96\xe7\xe1\x29\xba\xb6\x62\x5e\x17\xf8\xc8\x6b\xa7\x8c\x57\xf2\xad\x30\x56\x6a\x52\xc9\xf9\x8d\x54\xf9\x09\xab\x65\xfe\xd5\x27\x2a\xcc\x91\x4a\xb6\x05\xc1\x09\x16\xf7\x45\xb0\x92\x81\xa9\x55\xfe\x0b\xaf\x60\xab\xb9\x06\x7d\xce\x4c\x14\x5a\x2d\x3a\x4c\xb6\xe0\xec\x5f\x28\xe9\xa8\x12\x31\x7d\x0f\xdd\xe0\x20\xb5\xa9\x4d\x0e\xc5\xe2\xd2\x9b\x1b\x4d\x9f\x27\xf4\x19\xec\x14\xb4\x7b\xd3\x2d\x7b\xf3\x84\x52\x99\x81\x05\x13\x91\x0b\x0c\xcb\x01\x22\x49\xa3\xd3\x6c\xc9\x57\xa2\xe9\x3f\x34\xb0\xae\x5f\x5a\xb6\xe4\x2a\x87\xff\x34\xcb\xb4\xc9\xc3\xfa\x4a\xd7\x54\xe5\x63\x39\xd6\xd0\x74\x61\x80\x4e\x7a\xcb\xcd\xd5\xe6\xd7\x43\xe6\xd0\x94\x03\x9d\x83\xf6\xbf\x8f\x41\x53\xad\xe4\x3f\x6b\xc1\x78\xa9\xbd\x83\x94\xd0\x0b\x7f\xe3\x14\xb1\x92\xaf\xc1\x9b\x86\xa5\x7d\x11\xf9\x85\x86\x1d\x2e\x6c\x04\x77\xc2\x5e\x0b\x9e\xcb\x0e\x59\xef\x09\x7b\xd1\x67\xef\x1d\x76\x0c\xb4\x61\xd7\x48\x71\x19\xfe\x73\xac\xee\x31\xc2\xea\xda\x64\xe2\x35\x02\xe3\xbc\xf3\x34\xec\xd8\xea\xf9\x8e\x8d\xf2\x37\xc4\xf1\x1b\xa1\x30\xa9\xec\x8f\xc8\x50\x84\x67\x5e\x1b\xb8\x0f\xd9\x52\xe4\x35\x78\xb2\xb3\x35\x9b\x7b\xff\x30\xbc\x96\x2d\xe5\x62\x29\x06\xa6\x7e\x42\x9a\xe0\x14\x6a\x92\xb0\x6f\x2a\xcf\x96\xcd\x22\x80\xda\x1b\xb6\xac\x0d\xaf\x47\xfb\x8c\x57\xf2\x3b\xbf\x2a\x60\xaa\xb8\x23\x50\xe0\x86\x7c\xa2\xad\xcb\x68\xef\xf0\xd4\x77\x8f\x29\x7b\xe1\x3f\x61\xb8\xde\xe2\x55\x55\xc8\xe8\x6b\xf7\x0f\x2f\x54\x1f\x84\x77\xd8\x41\x72\xe7\xdc\x2e\xa5\x56\x5b\x4a\x95\x65\xf8\x58\x93\xd5\xc6\x1b\xeb\x81\xae\xf2\x4c\x30\x9e\xe7\xde\x57\x32\xcc\x88\x52\xaf\xbc\x56\x4c\x7c\xfe\x49\x23\x0d\xf3\x0b\x36\xe9\xf8\xcf\x0f\xdf\x29\x3e\x0b\x74\x45\xb8\xed\xd9\x86\x1d\x1d\xec\xc2\x72\x74\x80\x63\xe7\x28\x53\xab\xb6\x6c\xc5\x5b\xd5\x4f\xe3\x86\xd2\x30\xbc\x04\xfc\x2d\xdd\xdf\xe5\x66\x91\xfa\xbe\x70\x78\x66\x16\x35\xa8\xe3\xe8\xb7\xb4\xad\xdb\x29\x6e\xaf\x57\xf6\x18\xb6\x62\x6c\x7f\x78\x68\xd9\xd3\x97\xcf\x22\xbc\x90\x20\x51\x86\x0c\x67\xe0\x50\xab\x8c\x5e\x49\x68\x3f\xf8\x36\xc0\x26\x28\x8f\xd2\x3b\x81\x16\x3d\xc0\x04\x41\xea\x2e\x88\xc5\xa1\xed\x61\x25\x68\x4f\xf2\xbc\x85\x88\x64\x8d\x66\xf2\xd6\xa4\x58\xd1\x9e\xd0\x7b\x61\x62\xcc\x3a\x48\x55\xd5\x8e\x8e\x58\x6a\xf2\xc6\x2a\x5b\x72\xb5\x40\x28\xa9\x48\x04\xb2\xd8\xb5\x72\xfc\xce\x7f\xb5\x17\x2d\x6c\xc6\x2b\x91\x87\xf2\x61\x96\xeb\x9a\xb6\xfd\xbf\xfe\xf5\x09\x93\xe2\x09\xfb\x75\x67\x72\x53\x76\x1e\xa4\xb7\x87\x83\xba\x0a\xc8\xbc\x34\x6b\x0f\xd3\x09\x33\x62\xc1\x4d\x5e\xd0\x9a\xec\xe8\x39\xbb\xed\xd0\xd9\x35\x87\x41\xdc\x49\xeb\x2c\x23\x51\xce\x28\xed\x76\xd9\xb9\x8e\xed\x22\x08\xfd\x09\x6b\xe7\xb8\xbd\xf1\xb6\xcd\xeb\xe1\x49\xce\x1d\x9f\x74\x8c\xc5\x29\x66\x6d\x27\xa1\xc9\xf2\x84\x07\xa5\xd4\x9a\xc1\xd3\x5f\x99\x5a\x29\x1f\x18\xf3\xe6\xff\x4a\xaa\x09\x9f\x40\x4b\x5e\x6a\xe4\xf9\xf9\xbc\x68\x92\xbb\x97\xf7\xb5\xfd\x79\xa3\xdc\xf1\xdb\x81\x71\x88\xf0\x25\x4d\x5c\xda\x18\xe6\xd0\x1a\xb9\xd5\xff\x14\x55\x1f\x2d\xc6\xf9\xe5\x9b\xd7\x7f\xbb\x7a\x75\x71\xf9\x26\x1a\x8e\x68\x06\x28\x52\xdf\x67\x38\xd2\x6e\xfa\xfb\x0c\x47\x6b\x06\x52\x80\x48\x9b\x86\xa3\x6f\x06\x28\x92\xb7\x0d\x47\xdf\x0c\x50\x56\x76\xdb\x70\xec\x30\x03\x44\x2f\xa2\xbb\xbe\x3b\xcd\x00\x49\x3b\x77\x0c\xc7\x6e\x33\x40\x90\xba\x6d\x38\xfa\x66\x80\x74\xbf\xb6\x0d\x47\xc7\x0c\x10\x4d\xfe\xb6\xe1\xe8\x9a\x01\x82\xd0\xdd\x86\x63\x6f\x06\x7e\xce\x8f\x92\xcc\x80\x50\xab\x44\x13\x10\xb3\x9e\x1d\xe5\xd2\x9c\x0b\x12\xc9\x59\xaf\xc9\x6c\x87\xbe\x6f\x8c\x43\xf5\x79\xec\x67\x1f\x66\xaf\x56\x6f\xb9\x61\x46\x54\x46\x58\x88\xab\x88\x65\x1d\xbb\x36\x88\x05\xa1\x34\xea\x42\xc6\x78\x8b\x18\xfe\xec\xaa\x62\xef\xa9\xae\x75\xb4\x1a\xb2\xee\xc3\xd2\x98\x55\x03\xd3\xa6\xdd\x10\x67\x4f\xff\x7e\xf1\xec\xfc\xf2\xcd\xc5\xf3\x8b\xf3\xd7\xf7\x56\xb8\x92\xd4\xc8\xb5\xef\xae\x8e\xe3\xa9\xe1\xf8\x69\x7f\x8d\x2c\x16\x7b\x19\x88\x95\xd4\x35\x40\xdc\x01\x7c\x32\xe6\xfe\xda\x2d\xdd\x4a\x16\x09\x3c\xd0\x6a\x0d\x0d\x5a\x65\x36\xee\x31\xb4\xd3\x9d\x99\x0a\xb2\xdc\x51\x1d\x55\x1c\x3f\xe1\xae\x92\x65\x8e\x9a\xed\xc0\xf1\xfe\x9c\x07\x7d\xe3\xc7\x76\x79\x71\xfc\xa4\xe3\x9b\xb2\xf3\xef\x71\x7f\xc9\x22\x7f\x22\x7b\x42\x96\x19\x9d\xe7\x7e\xf5\x13\xb9\x11\xd2\x38\x6a\xf7\xb9\xd1\xe5\x28\xaa\xf7\x1a\x5f\xaa\x02\xb4\x89\xbc\x48\xbb\x9c\x98\x43\x3b\x1c\x9c\xd7\x1f\x9d\xb4\x55\x48\x0d\xc4\x96\x2d\x64\x91\x5e\x1e\xd0\x1c\xa6\x99\xcd\xa4\x16\xfa\x63\xf4\x9d\xc7\x6a\xa8\x97\xbc\xfa\x46\xac\x5f\x8b\x84\x5e\x49\x9b\xe7\x41\x14\x22\xf3\xce\x2c\xbb\x11\xf4\xe2\x49\x16\x5e\x72\xd9\xd3\x38\xcd\x94\x26\x53\x23\x2c\x39\x4b\xee\x37\x87\x63\x92\xb8\x2c\x63\x6c\xbd\x1f\x37\x82\x5c\xce\x1f\xc7\x56\x0b\xfd\xd4\x0d\x67\x31\x4a\xf4\x27\x28\x65\xbf\xd9\x38\xdd\xe2\x70\xa4\xf8\xf5\x71\xec\x44\x8e\xa5\xaf\x55\x17\x79\x06\x69\x95\x64\x91\x0f\x04\x87\xd6\x1f\xbb\x51\x69\xc9\x62\xc7\x41\xb5\xf5\x47\x0a\xc6\xad\x3f\x46\x3b\xbf\x11\x18\x3e\xea\x19\x46\xcc\x7f\xfa\x75\xef\xfa\x5b\x8d\xaa\x4f\x96\x8a\x9c\xb0\x5e\x1f\x45\x88\x55\xb2\xc8\x10\xb0\x8d\xb2\xa9\x29\x1c\x1e\x2c\x1e\xdc\x31\x6d\xf6\x61\x63\xb4\x93\xbe\x0f\xb9\x80\x9a\x7e\x96\xf9\x93\xd8\x4e\x22\x4d\x05\x94\xc2\xf1\x9c\x3b\x3e\xf5\xda\xe4\xa4\xff\x47\x80\x1b\xa7\x5d\xdb\x7f\x34\x02\x0b\x3e\x13\x85\xfd\xfe\xf0\xf0\x4f\xdf\x9c\xff\xed\xcf\x87\x87\x3f\xfc\x63\x2c\xc9\xe0\x86\x62\x11\xc0\x78\xe2\x6d\x25\xb2\xa9\xd2\xb9\xb8\x84\x75\x81\x3f\x86\x80\xfd\x0c\x01\x6e\xf0\x3f\xa4\xfd\x06\xf0\xab\x4f\xb1\x56\xf0\x24\xfe\xb1\xd2\xf9\xc5\xd5\x28\x82\x41\x92\x4d\x68\x0a\xfb\xc0\x9c\x3b\xb8\x02\x44\x46\xbe\x38\xc6\x72\xf1\x5a\xbb\x36\xaa\xea\x0f\x32\xd3\x95\x34\xea\x09\x9b\x2d\x45\xc9\x93\x62\xc7\x38\x9e\xc7\xc5\x67\xd2\x26\xf4\x4d\xe9\x0f\xa9\x80\x23\xdf\x32\x3d\x1f\xa5\x1b\x32\x0e\xa7\xd9\xc1\xea\xf1\xc1\x83\x71\x72\x9b\x73\x3b\xea\x51\x81\xbd\x18\xc9\xd1\x45\xe3\xd2\x84\x07\xa3\xec\xeb\xb2\x53\xaf\xca\xce\xae\x2e\x92\x85\xae\xf0\x6e\x3c\x88\x6d\x8d\x20\xe2\xe7\x0f\xd4\x5b\x68\x40\xce\x9b\x5c\xd2\x69\x47\x10\x98\x3d\xa2\x6c\x8b\xdd\x1e\xd2\xee\x2b\x57\x79\x04\x6a\x5b\x76\x84\x02\xa7\x59\x55\xa7\x19\xc0\x20\xa7\x14\xa5\x36\xeb\x93\xf8\xc7\xa6\x09\xd9\xc4\x3a\x6d\xf8\x22\xd1\x7c\xc7\x69\xc3\x74\xdb\x3f\xe1\x8f\x8e\xb6\x28\xdb\xb3\xa6\xe7\xb4\x59\xc0\x85\x37\x18\xed\xe8\x43\x92\xfa\xf9\xb4\xe3\x41\x79\x09\xf1\x78\x3e\x00\x27\x21\x4b\x6b\x98\xd8\x1f\x7d\x35\xf1\x34\xf9\x19\x2a\x0e\x48\xc1\x34\x6b\x4f\x6c\x9d\xd7\x1f\x81\xed\xfb\x84\x56\x37\xbd\x6b\x40\xf5\x86\x5a\xb1\x15\x37\xc4\x86\xdd\xed\x18\xcd\xae\xe7\x72\x25\xad\x4e\x54\xa9\xef\xab\xf7\x1f\xc5\xae\x87\x56\x3e\x58\xd9\x3a\x96\x53\x29\xee\x2a\xe8\xec\xda\xd8\x81\xf4\xcc\x4e\xde\x7d\xbd\x79\x4c\x27\xaf\xc3\x51\x71\xe7\x84\x51\x4f\xd8\x7f\x1d\xbd\xfb\xed\x8f\x93\xe3\xaf\x8e\x8e\xbe\x7f\x34\xf9\xe3\x0f\xbf\x3d\x7a\x37\x85\x7f\xf9\xcd\xf1\x57\xc7\x3f\xc6\x3f\xfc\xf6\xf8\xf8\xe8\xe8\xfb\x6f\x5e\x7e\xfd\xe6\xea\xfc\x07\x79\xfc\xe3\xf7\xaa\x2e\x6f\xf0\x4f\x3f\x1e\x7d\x2f\xce\x7f\xf8\x99\x42\x8e\x8f\xbf\xfa\x75\xe2\xc4\xb9\x5a\xbf\x4a\x72\x25\x18\x68\xc0\xf4\xde\xf4\xdb\xd2\x46\xb8\x2e\x8c\xdd\x4d\xda\xa4\xe7\x44\x2a\x37\xd1\x66\x82\x82\x9f\x00\xdb\xec\x28\x2e\xcf\xb8\x7a\xf6\xf5\x08\x36\xa9\x3f\xbf\xd6\xcd\x7e\x10\x8a\x0c\x8b\xff\x1f\xf6\x3b\x15\xce\xb1\xc7\x59\x96\xfc\xea\x00\xc9\xad\x5f\x8a\xcf\xb3\x7f\xf6\xfa\xa9\x11\x93\x21\x78\x8a\xc6\x8b\x72\xe7\x46\x97\xb1\xe7\x00\x00\xbf\x80\xf3\x30\x59\x6c\x98\xe7\x8d\x20\xbf\x82\xc7\xb1\x7f\xa6\xa3\x8c\xfd\x33\x5d\xda\xd8\x3f\xd3\x0d\x1b\xdd\x67\x3a\xa4\x9d\xda\xbf\xd1\xed\x1a\x42\xad\x68\xc0\xaa\x9d\xc8\xfb\x98\xc3\xea\xb4\xbf\x25\x7c\xdb\x4e\xfc\xfe\x36\x0c\x9f\x20\x39\x18\xbf\x16\xcd\xda\xd6\x78\x51\xd3\x1b\xe5\x6e\x84\x32\x3b\x2b\x0a\x26\x15\xd5\x78\xc1\x24\x63\xbd\x91\x11\x98\x4e\x8a\x5c\xb3\x2b\x1a\xa8\xf5\x76\x29\x36\x96\x10\x38\x15\x1d\x37\x4e\xaa\x05\x65\x39\xa1\x67\x0b\xb8\xa3\xb1\xec\x46\x2a\x56\xd6\x85\x93\x55\x21\x58\x42\x20\x8b\x60\xc6\xa2\x16\x8c\x5b\xab\x33\xc9\x63\x3d\x1e\xfc\x2f\x05\x27\xf1\x95\x86\x48\x01\x56\xd5\xf1\x1b\xc0\x36\x67\x22\x17\x2a\x13\x53\xf6\xd6\xff\x1a\xc5\xa2\xc4\x93\x34\x5b\xfb\xbd\x39\x57\xab\xa6\x12\xab\xc6\xe2\x1f\xca\xa1\xf2\x2b\xba\x7b\x9e\xff\xbe\xa5\x27\x5e\x4d\x05\xe8\x66\x5b\x81\x42\xd2\x9c\xe0\xb7\x36\x99\x7c\x0e\x45\x3e\x7a\xde\xa2\x39\x48\xb5\x42\x69\x91\x4b\x6a\xb4\xd0\x60\x23\x13\x02\xce\xad\x30\xa1\x59\x90\x94\x9e\x51\x18\x16\x80\x5b\x4f\x94\xf1\x40\xe0\xa7\xa9\xee\xfa\x7b\xb9\xd8\x12\x13\x34\x5d\x37\xfd\xe1\xb9\xd9\x1f\xc1\xc5\xde\xe1\x5e\xa3\x7b\x9c\x24\x35\xd5\xb5\x1e\xc5\xad\x1e\xc3\xa5\xde\xe5\x4e\x27\x14\xd7\xb6\xa3\x87\x78\x1b\xc5\x05\x4e\x77\x7f\xd3\xe1\x69\x95\x11\x73\x79\x37\x8a\xce\x3c\x6b\x39\x6d\x99\xcc\x85\x72\x72\x2e\x53\x1a\x0d\x6b\x3f\xb9\x4a\x28\x00\x11\x00\xcd\x96\xf7\x0b\x12\x5b\x1b\xb5\xf0\xf4\x87\x56\x5c\x87\x29\x9a\x31\x0d\xd8\xf5\x58\xc9\xa9\xbd\xf5\xda\x5b\xaf\xbd\xf5\xfa\xd0\x78\xf0\xd6\x2b\xe8\x83\x18\xb2\xdf\xaf\xf9\x01\x46\x98\x54\xd2\x9b\x67\x1d\x3e\x32\xb8\xe3\xe4\x74\x6d\x02\xff\x35\x29\x11\xd3\xed\xc4\xda\x58\x4d\xa7\x19\x2f\x0a\x7d\x4b\x90\x08\x64\x96\x86\x15\x62\x25\x8a\x10\x0e\xb1\x92\x2b\xbe\x00\x46\x4e\x5a\x04\x13\xdb\x7a\x69\xc3\xbc\xc2\x31\x32\x17\x9b\xfd\xb4\x48\xac\x3d\x8a\x45\x5e\x44\x10\x67\x74\x51\x08\x63\x59\x21\x6f\x04\x7b\x26\xaa\x42\xaf\x87\xb3\x88\xe2\x80\x9e\x70\x8e\x3b\xaf\xa6\xae\x85\xa3\xe0\x94\x53\x7a\xd3\x44\xa2\x7f\x64\xae\x4d\x3d\xdc\xd0\x37\x00\x98\xe9\x59\x85\x54\xb8\xec\x15\xa9\x0d\xb0\x9e\xb3\xb3\xe2\x96\xaf\xed\x09\xbb\x14\x2b\x61\x4e\xd8\xc5\xfc\x52\xbb\x2b\x4c\x22\x50\x1c\x9e\x6e\x65\x2c\x8a\x66\x72\xce\x9e\x14\xdc\x09\xeb\x98\xe3\x14\x25\x2a\x6d\xb7\x87\x84\x36\xbd\x49\xb6\x7d\x62\xc7\xe9\xc9\x9f\x4e\x7a\x0f\x92\x1a\xca\x7b\x02\x80\x28\xe1\xa0\x15\x91\x18\x38\xf1\x88\x9d\x21\x55\x30\x12\x73\x22\xf3\x6c\xd4\x18\x94\x04\x23\xb4\xe9\x88\xfd\x5b\x21\x75\x27\x15\x33\xc2\x56\x5a\x59\x41\x53\x41\xad\xba\x69\xbe\x19\x13\xc0\xf6\x5e\x73\x81\x44\x7f\x36\xcd\x93\xad\xb4\x75\xc0\xc0\x4c\x73\x30\xfa\xca\xe5\x2a\x0a\x03\x5a\x6f\x5e\x14\x64\x47\x40\x96\xa5\xc8\x25\x77\xa2\x58\x33\x3e\x77\xc2\x30\x9e\x4c\x68\xe1\xe7\x64\x04\x8f\x3c\xe6\xc0\xd6\x0c\x6c\xe1\x24\x02\xf3\x76\x6c\xa5\xff\xb1\xed\x3c\x1f\xda\xe9\xb0\x1d\x08\xab\x0d\xa4\xeb\x5b\x54\xe6\x44\xa1\x41\x60\xab\xf6\xc1\xfb\x4e\xba\x9c\xac\xc5\x2c\xb4\x0b\x30\x2b\x74\x76\x63\x59\xad\x9c\xa4\x7a\xf5\xd8\x41\x48\xdf\xb0\x4c\x97\x55\x01\xca\x33\x8d\x68\x92\xfd\x34\xd9\xe4\x2e\x8d\xdc\xfc\xeb\xa4\x51\x12\x13\x3f\x27\x7b\xfa\xab\xf6\x7f\x82\xbf\xa0\xc5\x08\xc9\x31\x6c\x7a\x04\x2b\xee\x44\x46\x8f\x2b\x7a\x57\xff\x95\x12\x70\x6a\x93\x5a\xb9\x33\xa6\x55\x53\x08\x30\xd7\xde\x69\x05\xb2\xf5\xb4\xbe\xce\x6c\xa3\x21\xd9\xf9\x9d\xc8\x9a\x3f\xa7\x84\xb2\xd0\x5d\x31\x8b\x7d\x58\xbc\x69\xa2\xc3\x60\x46\x01\x69\x8d\x03\x8f\x22\x53\x87\x76\xc7\x46\xdb\x61\x90\x98\xc2\xb7\x81\x03\x15\x0d\x0a\x2b\xa4\x22\x9a\xff\xee\x08\xc4\xa4\xdd\x96\x37\xcd\xed\x4e\x05\x98\x78\x61\x5b\x5d\x96\x13\x65\xc6\xae\x9e\x71\x15\xd2\xd7\xd4\x68\xed\xd8\xd1\xe1\xe9\xe1\xf1\x16\x1a\x20\x11\xbc\x88\xdd\x2c\xd1\x81\x43\xba\xa3\x30\xeb\x44\xa9\x12\xfa\xb2\x57\xd0\x94\x5b\x64\x87\xf9\x09\x93\xa9\x40\x94\xc0\xf9\x6a\x6a\x15\x4f\x42\x5a\x55\x13\x43\x7e\xdb\x13\x66\x35\x73\x86\xe7\x72\x94\xea\x02\x90\xe9\x27\xe8\x4c\x1d\x9c\xec\xa3\xc3\x1f\x0f\x53\xcf\xa9\x70\xd9\x31\xbb\xd5\xea\xd0\xc1\x71\x9d\xb2\x37\xa9\xb7\xaa\xb6\x22\x52\xfc\x9e\x00\x37\xbf\x12\xe9\x80\x1c\xcd\xc4\x5d\x55\xc8\x4c\xba\x62\x0d\xce\x25\xd3\x75\xea\xbe\x03\x87\x3d\x77\x91\x8d\xf8\xfc\x2e\xf9\x24\x61\x45\xb3\x37\x62\x8f\xc0\x15\x44\x87\x33\x51\x28\xb7\xac\x90\x2b\x71\xba\x14\xbc\x70\xcb\xf5\xe0\xbe\x38\xdb\x43\x69\x35\xf9\x97\x30\x1a\xf8\x92\x55\x90\x9b\x86\xe2\x4c\x01\x34\x74\x07\x19\xdc\xb0\x3d\x99\xa4\xdc\xab\xf7\x17\xbf\x16\xc4\xb8\x88\x6d\xb5\x86\x7d\xf3\xe6\xea\x6b\xe1\x46\x73\x3c\xfc\xec\x62\xe9\x1d\xbc\x6a\x09\x33\xd7\xa6\xbc\x67\x0f\x24\x1d\x24\x3e\x81\x3e\xb4\xf7\xec\x02\x2d\xb5\x4d\xd8\x77\xb6\xbb\x2d\x30\x8d\x8f\xb4\x3b\xb0\x8b\x97\x12\x99\xdf\xf1\xd1\xca\xd0\xdb\xfe\x63\xec\xe2\x6a\xca\xfe\xa6\x6b\x68\xc5\xc4\x67\x49\x9e\xbc\x1f\xb1\x23\x8b\x15\x8e\x1d\xf8\x45\x38\x48\x79\x68\xc5\xe1\xcf\xfd\x5f\x05\xcf\xb1\x35\x90\x75\x82\x93\x18\xc3\xdb\x31\x12\x74\xb7\x33\xaf\x31\x3d\xe7\xda\x3a\x5d\xb2\x25\x0a\x4e\xdf\xe8\x0e\xf5\x72\xd0\x1d\xa9\xc8\x7d\xaf\xd7\xf0\x7d\xc1\x32\x23\xaa\x31\xac\x5d\xf8\xda\x5f\x90\x35\xda\xb2\x04\x78\x52\x12\xa5\x46\xb9\x33\x61\x19\x67\x19\x1c\x95\x64\x91\xb8\xf8\xfe\xac\x04\xba\xc4\x64\x89\x52\xe1\x21\xc1\xfe\x6e\xa3\xd8\xf5\xe4\x62\x26\x36\x52\x41\x13\x4b\xa1\x9a\xee\x0b\x19\xde\x90\x6d\x7b\x8c\x55\x1f\xc5\x46\xaa\xa4\x61\x3b\x00\x24\x23\x88\x6c\x4e\x29\x3e\x76\x8e\xb0\xfc\x6c\xcc\x1a\x0e\x96\x4a\x6a\xdd\x1d\x1f\x7f\xf9\xc6\x38\x78\x6c\xbc\xf5\xab\x92\xe9\x67\xb6\xc9\x67\xb0\xd9\x23\xad\x99\x52\x77\x68\x34\x9d\xa0\xce\xac\x30\x2b\x5a\xc1\x44\x3b\xc6\x5a\x32\x4d\x7d\xbe\x89\x63\x07\xf3\xbc\x61\xaa\x2e\x67\xc9\x46\xaa\xe1\x81\x33\x6e\xec\x6d\xe8\x34\x8f\xb8\x1c\x63\xaa\x11\xc2\x12\x1d\x24\xae\x16\xa9\xf7\xe2\xb1\xff\xe6\xdf\xff\xc7\x7f\x7c\xf9\x1f\x53\x5c\x56\xff\x1b\x89\x32\x67\x82\x71\xc5\x2e\xce\x2e\xcf\xfe\x7e\xfd\xf6\x29\x70\x72\xa7\x9d\xc2\x11\x8a\xf9\xc7\x2c\xe5\x1f\xb1\x90\xff\x23\x96\xf1\x03\x61\x59\xa2\x86\xef\xe3\xb2\x40\x60\x7a\x46\xbb\xb6\x48\xc3\x1d\x22\x45\x7c\x36\x1c\x21\x93\xed\x63\xe2\x1e\x7b\xf9\x08\x81\xc3\xbd\x6b\x4f\x97\x55\xd7\x3a\xbb\x19\x2d\xcb\x73\xf8\xe6\xe9\x15\x0a\x1c\x25\xd1\xc3\x55\x7c\x60\x92\x6a\xa5\x8b\x95\xdf\x4c\xce\xde\x3c\xbd\x4a\x34\x16\x53\x2f\x03\x5e\x58\x31\xef\xbd\x4e\xaa\xe4\x6c\xa8\x99\x02\xb4\x53\x96\x55\x91\xf2\xa2\xcc\xa0\x03\x81\x11\xbc\x90\xd6\xc9\x0c\xe6\x5a\x90\xba\x56\xf7\x87\xff\x5e\x3a\x9e\x73\x9f\x1f\x6b\xc7\xc8\xf9\xb1\xc3\x57\x23\x55\x3d\x37\x89\xb6\x4e\xaa\x2c\x39\x69\x72\xd2\x23\xfd\x49\x67\xa8\x0c\x89\xb6\xb4\x92\xf3\x07\xea\x39\x82\x1b\x46\x6b\x30\xda\x1d\xaa\xd3\xfb\x28\x78\x8e\xa9\x2f\x28\xe0\x77\x6e\x7b\x8e\x89\x62\xc3\x07\xf7\x3d\xc7\xd4\xbc\x84\xf7\x3b\xb7\x3c\xc7\x91\x7c\xdb\xbd\xe7\xf8\xf3\xc6\x47\xf0\x1c\x2b\x23\xae\x9d\xae\x46\xc1\xd9\xa1\xa8\x51\x51\x76\x33\x31\xd7\x46\x8c\x03\xb3\x6b\x01\x70\x2c\xaf\x41\x19\x73\x95\xc0\xac\x1a\x9f\xb9\x74\x17\xae\x46\x2e\xd9\x67\xe0\xb2\x64\xcb\xf8\xaa\xaa\x84\xb5\xa7\x00\x8d\xab\x2b\x4c\x52\x12\x85\xce\xb9\x2c\x6a\x23\x4e\xfc\x4e\x8b\x12\xf6\xea\x24\x95\xe4\xd1\x6f\x86\x50\x28\x4a\xb8\x0c\x61\x14\x01\xb5\x48\xdf\x1f\xef\xf3\xe1\xc1\xc1\x3e\xb9\xe9\xcd\xc2\x32\xc3\xed\x52\x40\x8b\x50\x71\x27\x9d\xc5\x89\x1a\xc1\x2d\x99\x23\x1a\xa0\x2e\xe1\x20\x81\x0b\x6c\x59\xc5\xad\x15\x39\xdd\x1a\x74\x20\x9f\x38\xc1\x2b\x9d\x1f\x1e\xda\xee\xcf\x10\x25\x2f\x0c\xcf\x04\xab\x84\x91\x3a\x67\xc0\xba\x9e\xeb\x5b\xc5\x66\x62\x21\x15\x35\x02\x08\x37\xd2\x4f\x3a\x5e\x78\xef\xc2\x8a\x04\x20\x55\xec\xc3\x3c\x65\xaf\x7b\x7d\x62\xe9\x56\x4b\xd7\x2e\xd3\xad\xb5\x0e\xab\x7b\x92\x20\xb1\x45\x92\x02\x5b\x03\x5c\xf3\x9a\x17\xc5\xba\x55\x2b\x44\xc9\x81\x98\xc4\x7d\xac\x8d\xff\xcc\x30\xb5\xfe\xb2\xa6\x4a\xec\x5e\xd0\xee\x52\xd0\x75\x93\x11\x3c\x5b\xa6\x15\x53\xec\xa1\xbb\x1f\x18\x7b\xe8\xee\x1e\xba\xfb\xde\xb1\x87\xee\xee\xa1\xbb\x7b\xe8\xee\x1e\xba\xbb\x87\xee\xee\xa1\xbb\x03\xc7\x1e\xba\xfb\xa1\xb1\x87\xee\xbe\x77\x3c\xc8\xa7\x89\x3d\x74\x77\x0f\xdd\xfd\xd9\x63\x0f\xdd\xdd\x43\x77\x87\xc9\xdd\x43\x77\x49\x63\x0f\xdd\xfd\xc9\xb1\x87\xee\xa6\x8c\x3d\x74\x97\x3a\xf6\xd0\xdd\xc1\x63\x0f\xdd\xdd\x43\x77\x13\xc6\x1e\x80\x41\x18\x7b\xe8\xee\x08\x81\xc3\xbd\x6b\xcf\x3d\x74\x77\x0f\xdd\xfd\x99\x63\x9f\x1f\x6b\xc7\x1e\xba\x9b\x30\xf6\xd0\xdd\x0f\x8e\x3d\x74\x77\x0f\xdd\x4d\x90\xf5\xf0\x3c\xc7\x08\x11\xbd\x32\x7a\x96\x4c\x2d\x7d\x05\xe0\x28\x99\x61\x46\xcd\xdf\x93\x14\xe0\x65\x9c\xda\x94\x3d\xed\x63\xe6\xa0\xbf\x55\xa0\x8f\x24\xc8\x0d\x98\x50\x9c\x23\x50\x63\x4e\x77\xb0\xdd\x12\x04\x0f\x84\x74\x45\x42\x67\x7b\x5a\x69\xfc\xff\x5a\x40\x57\x07\xc9\x85\xd9\x49\x2a\x57\xee\xbd\xb0\xae\xd2\xe1\x5b\xef\x85\x6e\x31\x4d\xa2\x71\x66\x6d\xa0\xbf\x09\xdb\xea\x83\xaf\x88\xb2\xfb\x90\xad\x3e\xf0\x8a\xea\xf9\x93\xe1\x5a\x0f\x00\xb8\x97\x0c\xd1\x7a\x0f\x3c\x2b\xd1\x7a\x6d\x40\xb3\x22\xb8\x2a\x41\xe2\x4e\x58\x56\xe2\x2c\xb7\x20\x59\x11\x54\x35\xc2\x97\x03\xf6\xb4\x0b\xa8\x4a\x7c\xe5\xef\x40\xb1\xba\x60\xaa\x04\xa9\x1d\x18\xd6\x36\x90\x2a\x65\xa7\xdc\x2e\x10\x55\xc0\x00\xa5\x04\x97\x3d\x00\xd5\x0e\x08\x54\x82\x6c\x00\x4f\x8d\x0c\x7f\xda\x09\x7d\x4a\xf3\x5f\x77\xc0\x9e\x22\x70\x29\x65\x61\x5b\xc8\x53\x17\xb4\x94\x72\x04\x1a\xb8\xd3\x26\x60\x29\x29\x05\x92\x8f\x0d\x56\x1a\xe3\x69\x38\xf9\x59\x38\xd1\x53\x0d\x65\x42\x6f\x96\x46\xd8\xa5\x2e\x88\xa6\xa0\x67\x06\x5e\x4a\x25\xcb\xba\xf4\x3a\xc7\x7a\xbd\x2d\x57\x89\x35\x4c\xb6\x41\xab\xa2\x13\x08\x6f\xca\x64\x8b\x07\x1a\xc5\x88\x1c\xa4\xfb\x23\x06\x84\xee\x4b\xbe\xa2\xbb\xfa\xb6\xce\x32\x21\x72\x91\xf7\xf2\x9a\xec\xcb\x69\x5c\x0b\xa2\x5c\x6c\x90\x2a\x2d\x7b\x9c\xe2\x61\xa4\x44\x44\x73\x6d\x4a\xee\x40\xc6\x97\x5f\x10\x24\x24\x61\xdf\x3e\x0a\xee\x6d\x74\xcc\x5b\xb2\x1b\x97\x96\xcb\x4b\xc8\xe3\xa5\xfb\x8f\x69\xf9\xbb\xdd\xd8\xb6\x34\x1b\xb7\x0b\xd7\x96\x26\xf1\x23\x60\xda\x76\xe2\xd9\xba\xc8\xaf\x34\x4f\x37\x0d\xcb\x36\x12\xe2\x35\x19\xc3\xf6\x71\xf0\x6b\xbb\xb1\x6b\xa0\x5d\x52\x9c\x8b\x3e\x6e\x2d\x1d\x79\xf6\x20\x5c\x8b\x8f\x81\x36\xdb\x46\x9a\x85\xc5\x4a\xcb\x62\x37\x28\xb3\xf1\x50\x62\x23\x21\xc4\xc6\x40\x87\x25\x23\xc3\xd2\x51\x61\x63\x21\xc2\xc6\x40\x83\x6d\x75\x01\x1d\xe1\x04\xb1\xd8\xb8\x71\x14\x7c\xf5\x58\xd9\xe3\x51\xd0\x5f\x1f\x77\xb9\xc6\x40\x7d\x8d\xb0\x5e\x69\x68\xaf\x8f\x83\xf4\x1a\x13\xe5\x35\xc6\x12\x25\xbd\xd1\x7d\x1c\x64\xd7\x4e\x54\x17\x23\xd7\xbf\xb3\xcd\x74\xd7\xb4\xfb\xb2\x96\x20\x74\x03\xcd\xd5\x7d\x55\x4b\x90\xda\x20\xb9\xc6\x7d\x51\x4b\x7c\x4d\x1b\xeb\x25\x6d\xa4\x57\xb4\x8f\x84\xbd\x4a\xc5\x5d\xed\xc6\x5c\x79\x1f\x24\xe1\x40\x6c\xe1\xad\x5a\xc4\x54\x82\xd4\x6e\x4e\x22\x0d\x2d\x95\xb8\xa1\x52\x49\x27\x79\xf1\x4c\x14\x7c\x7d\x2d\x32\xad\x72\xa2\x37\xb1\xd1\xab\x3a\xa0\x05\xe6\xcc\xa2\x50\xe2\xf7\x61\x26\xa8\xcf\x75\xb1\xe4\x96\xd1\xdf\x2e\x59\x4b\x9c\x12\x9f\x47\x83\x63\xca\x38\x3c\x3e\xfa\xf5\x20\x3e\x5f\xb2\x07\xf7\x84\xc9\x1e\x44\xca\x09\x29\x3f\xc6\x3b\x5e\x7f\xd5\xb7\x4c\xcf\x9d\x50\xec\x48\xaa\x78\xc2\x8e\xa9\xd9\xa7\x26\xd9\xd4\xe6\x33\x9b\xa4\x21\x5d\xe6\xe3\x47\x71\x62\x4d\xca\x31\xc9\x31\xfb\x9c\x53\x8e\x90\x8c\xb5\xf6\x61\x66\xb4\xc3\xe4\x3e\x56\x4a\x3b\x88\x9f\xd7\x05\x2a\x33\x6a\xfe\x06\x92\xe1\x21\x41\xde\xcf\x69\x13\x8f\x05\x63\x2f\x83\x9b\xf3\x18\xbe\xbc\xd1\x86\x5c\xe5\x2c\xd0\x9d\x91\x25\x77\x0f\xfc\x67\x7d\x74\x13\x51\xc4\x1f\x0b\x41\xfc\x5e\xf4\x30\x62\x80\x89\x52\xb7\x90\xc3\x2d\xfe\x97\x2a\xb1\x8f\x1a\xee\x62\x7f\x13\xe6\xd8\x76\x65\xa6\xe3\x7e\xf7\x6f\x04\xb4\xff\xf6\xbd\xf8\x5e\x78\x2e\x48\x70\x89\x37\xb0\xbd\x63\x95\xc1\xf7\x4b\xe0\x53\x31\xe2\x0f\x26\xda\x8f\x68\xdc\xd4\xdc\xd8\x3e\xda\xdf\x47\xfb\x1f\x18\x1f\x21\xda\x77\xb2\x14\xba\x76\x0f\x36\xe0\xbc\x5d\xca\x6c\xd9\xf5\x05\x65\x49\x36\xd5\xba\x76\x1b\xfe\x5a\x98\xe2\x88\x50\x84\x7d\xd4\xb9\x31\x68\x6f\x1a\x3b\x12\xaa\xe9\xec\xb7\x0d\x42\x96\x71\xcb\x38\x7b\x76\x79\xfd\xf7\x17\x67\x7f\x39\x7f\x31\x65\xe7\x3c\x5b\x26\x89\x96\x8a\x71\xb0\x6c\xa0\xc2\x96\x7c\x25\x18\x67\xb5\x92\xff\xac\x05\xd5\x2e\x1c\x35\xf3\x3b\x1e\x05\xd3\x9d\xa0\x81\xbc\x4d\x22\xe8\x86\xde\x26\xbe\x90\xd6\xf9\x4d\x04\x59\x81\x67\x4c\x93\xf2\x81\x73\xa3\xcb\x4d\xd3\x76\xee\x85\xa1\xeb\x4d\xf4\xe6\x96\xc2\x08\xb6\x90\xab\x80\x7c\x46\x0c\x28\xe3\x79\x02\xab\x9c\xd7\x02\xfe\xe2\xf8\xe0\x80\xcf\x00\x50\xb8\x14\x4c\x09\xe7\x2f\x7d\x93\xca\xa4\xa1\x2b\x3b\xe4\xdf\xac\xb6\xc2\x9e\xb0\x59\x0d\xe0\xd0\xca\xc8\x92\x1b\x49\x82\x60\x74\x26\xcc\x8b\x29\xbb\xd4\x31\x3c\x5a\xc3\xd2\x52\xf2\x4d\xde\x9b\x81\xa5\x7d\xf6\xea\xfc\x9a\x5d\xbe\x7a\xc3\x2a\x03\x3c\xc1\x54\x64\x25\x48\x84\x23\x30\x13\x7e\x56\x78\x8c\xf2\x29\x3b\x53\x6b\xea\xde\xa3\x91\x91\x96\xf9\x78\x48\x28\x2f\x36\x3c\x4f\xe5\xe4\xe4\xd3\xc1\xa3\x29\xfc\xbf\x03\x7f\x86\x8c\x77\xe5\x1a\xb8\x6e\x8a\xa2\x89\x45\x23\xe8\x1e\xca\x59\x21\xda\xfb\x10\x4e\x16\xc5\x5b\x1a\x4d\xbf\xd0\x50\x19\x64\x34\xc6\x06\xc4\x3e\xac\xeb\x95\x3f\x23\x46\x54\x46\x58\xa1\x88\x31\x0b\x6f\x2e\x2a\x9c\x38\x50\xf0\x5e\xc3\x14\x89\x85\x6d\x89\xd1\x6e\x4a\xac\x3b\x69\x67\x7e\x45\xbb\x28\xa9\x01\x6f\xef\xf7\xa9\x6e\xf9\xce\xf0\x6b\x9e\x56\xb1\xdb\xd8\xa3\x78\xf1\x2b\x9d\x1f\x5a\x76\x41\xc7\x3d\x85\x5b\x3f\x65\x6f\x96\xd2\xb6\x91\x8d\xf7\x15\x25\x9d\xee\x09\xce\x22\x3e\x2c\x9f\xb0\x47\xec\x4f\xec\x8e\xfd\x09\x82\xaf\xdf\x53\x63\xa4\x31\x02\x9c\xd4\xd4\x1e\xe6\x41\x2e\xae\x46\x39\x11\xdf\x2d\xb9\x03\x79\xec\xe2\x2a\x05\xdc\x38\x93\x2a\x87\xa3\x20\xee\x9c\x30\x8a\x17\x31\x34\x4f\x5b\xe9\x84\x10\xd0\x7f\xd4\x83\xbf\x38\xc8\x60\x71\x31\x27\x4b\x6c\xbc\xf4\x13\xe6\x7a\x57\x87\x2c\x11\xae\xdc\xce\xab\x43\x16\x89\x57\x8e\x5d\xcc\x21\xd7\x76\x19\x2c\x85\xb4\x9d\xd9\xd3\x97\xb4\xf9\xea\x92\xbb\x6c\xd9\x37\x6b\xf4\x54\xc8\x4b\x7f\x25\x5a\xea\x7d\x96\x6b\xc8\x2d\x27\x91\x06\xfb\xa9\x7e\xde\x8a\x27\x05\x72\xd7\xbb\x4f\x17\xf3\xcd\x93\x4b\x5e\xd5\xf7\xa5\xc1\x92\x18\x89\x43\x30\xda\x69\xac\x51\xe9\x1c\x23\x5f\xb2\x4c\xbf\x78\x79\xc7\x3f\xea\x05\xc0\x74\xcb\xd9\x0d\x9c\x03\xa3\x53\x6a\xf1\x20\xaa\x6e\x6f\x19\x32\xae\xb0\xe8\x7a\x2e\x8c\x49\x39\xfa\x9a\xcd\xd6\x80\x5c\x93\x99\x48\xbc\x04\x09\x36\xa1\x32\xda\xe9\x4c\x93\x49\x3d\xfa\xe0\xbe\x20\x0c\x96\x3b\xe5\xf9\xaa\x7d\xd1\xfc\xf6\xd9\xd5\x09\x7b\xf3\xf4\xea\x84\x69\xc3\xae\x9f\xa6\xe0\x6b\xba\x99\xbb\x83\x37\x4f\xaf\x0e\xee\x6d\xd1\x59\x8c\x0b\x9f\x90\x68\x82\x7a\x69\x5c\x1f\x72\x4e\x4a\x5e\x4d\x6e\xc4\x9a\xe0\x55\xa7\xfa\xf4\x93\xe6\x04\x8d\xf0\x19\xb8\xb0\x25\xaf\x06\xca\x32\x82\xe7\xf2\x81\x32\x37\x84\x1b\xde\xce\x71\x93\xc2\x81\x20\x13\xf4\x4f\xa9\x57\x22\xc7\xe0\x3d\xfe\x86\x50\x79\xa5\x25\x2d\x62\xdd\x33\x41\x7c\x78\xec\x99\x20\x7e\xde\xd8\x33\x41\xf4\xc7\x9e\x09\x22\x41\xe6\x9e\x09\x62\xcf\x04\x81\x63\xcf\x04\xb1\x67\x82\x20\x8e\x3d\x13\xc4\x87\x27\xb7\x67\x82\xf8\x6c\xb1\xad\x7b\x26\x88\x0f\x8f\x3d\xca\x73\xcf\x04\xb1\x67\x82\xd8\x1a\x7b\x26\x88\xfb\x76\x2d\xf6\x4c\x10\x7b\x26\x88\x38\xf6\x4c\x10\x03\xc6\x9e\x09\x62\xd8\xd8\x33\x41\x7c\x70\x3c\xb0\xda\x90\x3d\x13\xc4\xbe\x36\xe4\xe7\xca\x79\x78\xb5\x21\x6c\xcf\x04\x41\x1b\x7b\x26\x88\xe1\x63\xcf\x04\x31\x6c\xec\x99\x20\x86\xcb\xdc\x33\x41\xb4\x63\xcf\x04\xb1\x67\x82\xf8\x4c\x8f\xee\x9e\x09\x62\xcf\x04\xb1\x7b\xec\xdf\x08\xf6\x4c\x10\xc3\xc6\x9e\x09\x82\x2e\x74\x1f\xed\xd3\xe5\x3c\xbc\x68\x7f\xcf\x04\xb1\x67\x82\xf8\xe0\x48\x71\xdd\x8c\xb0\xba\x36\x19\xc5\x44\xf6\xcf\xd5\x53\x5d\x56\xb5\x13\xec\x75\x14\xd8\xd8\x7d\xc2\x37\xcd\xd6\x58\x70\xd5\xd1\x8e\xf7\x01\x9b\xce\xb4\x9a\xcb\x45\x6d\xa0\xf8\xfe\xb4\xe4\x8a\x2f\xc4\x24\xc3\x0f\x9d\x34\x2b\x37\x69\x66\x79\xfa\x59\x41\xa7\x0b\x59\x4a\x0a\x83\x04\xdb\xda\xfb\x17\x20\xa9\x7d\x1f\x4d\x80\xb7\x94\xfc\x0e\x02\x22\x5e\xea\x5a\x39\xac\x13\x80\xf5\x26\xca\x6c\x76\x09\xdf\xb9\x7d\x48\xd8\x1e\x82\x04\x88\xc0\x03\x38\x3a\x6c\x0c\xe7\xbc\xe5\xd2\xb8\x4a\xf6\x96\x2b\xee\x9c\x30\xea\x09\xfb\xaf\xa3\x77\xbf\xfd\x71\x72\xfc\xd5\xd1\xd1\xf7\x8f\x26\x7f\xfc\xe1\xb7\x47\xef\xa6\xf0\x2f\xbf\x39\xfe\xea\xf8\xc7\xf8\x87\xdf\x1e\x1f\x1f\x1d\x7d\xff\xcd\xcb\xaf\xdf\x5c\x9d\xff\x20\x8f\x7f\xfc\x5e\xd5\xe5\x0d\xfe\xe9\xc7\xa3\xef\xc5\xf9\x0f\x3f\x53\xc8\xf1\xf1\x57\xbf\x26\x07\x87\x09\xee\xc7\x38\xce\xc7\x28\xae\xc7\x47\x70\x3c\x02\xba\x64\x14\xf5\xf0\x3a\xc8\x1a\x47\x41\x84\x8c\xc9\xf8\x0a\x22\xda\x2b\xa8\x20\x8e\x73\xa6\x27\x21\x75\x29\x9d\x13\x39\xa4\x8c\x3a\xf4\x22\x54\x1c\xb8\x74\xbd\x66\xdc\x41\xe5\x42\x81\x11\x19\x02\x2d\x6d\x17\x57\xdd\xa9\x94\xd5\x6e\x29\xcc\xad\x24\xbf\x07\xf9\x00\x49\xb5\xd9\x0c\x50\x82\x93\x5c\xcc\xa5\x22\x27\x48\xc0\x89\x1b\xec\xbf\xed\xd5\xf0\x5e\x0d\x0f\x91\xf2\x90\xd4\xb0\x15\x59\x6d\xa4\x5b\x3f\xd5\xca\x89\x3b\x42\x42\xa4\xaf\x85\xaf\x83\x38\xa6\xe1\x6f\xa8\x75\x4e\x95\xce\x63\x55\x9b\xa9\x15\x94\xae\x27\xba\x54\x3f\xe7\x1e\x57\xba\x90\xd9\xfa\x34\x2e\x09\x5c\x58\x71\xe7\x4e\x3f\x5a\x0c\xe0\xb8\xbd\x69\xd5\x87\x98\xf8\xc8\xaf\xd5\x12\x5b\xf3\xf8\xac\x1c\x7f\xf0\x84\xaf\x8c\x5c\xc9\x42\x2c\xc4\xb9\xcd\x78\x01\xfa\x71\x0c\x5b\x7f\xf6\x1e\xd9\xf4\xf7\x21\x67\x74\x61\xd9\xed\x52\x78\x9b\xc4\xb8\xff\x76\x48\xbd\x65\x9c\x2a\x74\xc1\xa5\x62\xa5\x3f\x06\x55\x9c\xa8\xbf\x0d\xde\x62\x91\x0d\x7e\xc5\x8d\x50\x2e\x4e\x2e\x10\x0c\xcd\xb4\x2e\x42\x89\x1d\x19\x73\xdd\xac\x40\xa8\x25\x56\xfa\xef\x4a\xdc\xfe\xdd\xcf\x9c\x3a\xd7\x79\xc1\x17\x0d\x67\x99\x15\x2e\x82\xbd\x52\x2a\xb2\x19\x9e\x4a\xfc\xf8\x91\x0f\x01\xd4\x54\xd5\x82\xf1\xe2\x96\xaf\xe1\x28\x8c\x33\x5f\x69\x9f\xb0\xc7\xc7\xa0\xc6\xb8\x65\xcd\x7c\x73\xf6\x05\xf5\x89\x7c\xc9\x2d\x7b\x7a\x76\xf5\xf7\xeb\xbf\x5d\xff\xfd\xec\xd9\xcb\x8b\xcb\x14\x77\xc2\x9f\x1e\x41\x3a\xe4\x19\xaf\xf8\x4c\x16\x92\xee\x45\x6c\xe1\x2e\xbb\x22\x13\x9c\xc2\x3c\x3f\xcd\x8d\xae\x70\x0f\x4d\xad\x80\xd6\xaf\xe5\xbf\xa1\x66\x92\xbb\x59\xc3\x0e\x43\xa0\x3f\xdc\xd4\x64\xe4\xbc\xf7\xc9\x6c\x61\xb8\xf2\xde\x3c\x64\xa6\x12\x5e\xbb\x03\x34\xc7\xd4\xca\xc9\xf2\xf3\x2d\xbe\xe6\xf9\x58\x85\xd7\x67\x79\x2e\xf2\x31\x8e\xd7\x43\x2c\x3c\x78\x1a\x3f\x2b\xa5\xe2\x86\xb5\xac\x89\xec\xea\xd5\xf5\xc5\xff\x37\xce\x6a\xb1\xb0\x62\x29\x0f\x58\x23\x70\xb6\x18\x5d\x8d\x74\x92\x5e\x07\xf6\x8e\xfd\x59\xfa\xa9\xf1\x0b\x3d\x4b\x8d\x27\x37\x06\x66\xea\x75\xad\x3a\xba\x9a\x4c\x60\xd0\xce\x89\x95\x3a\x17\x53\x76\x85\x0e\x92\xb0\xa3\xc8\xec\xd0\xc6\x71\x23\x98\x17\xac\x9c\xe4\x05\xd9\xd5\x14\xff\xac\xe5\x8a\x17\x02\x0b\xfc\x80\xc2\xa1\xcb\x1f\x38\x82\x6d\x9e\xf3\xc2\x26\x19\x3d\xba\x4f\xe4\x9d\xd3\x97\xba\x56\x63\xe0\x93\x1a\x59\x2c\x17\x4a\xbb\xa4\x7c\xa6\xff\x2e\x20\x7c\x34\x3a\x63\x98\xd3\x4c\x82\x62\x47\x6c\x5e\xc7\xa9\x02\x07\x8e\x4e\x9a\xcc\xd0\x05\x0f\xfb\x78\xd5\x7c\x3b\xbe\xfd\xd6\x36\xe9\xf3\xb7\x5c\xa2\x54\x28\x8b\xff\x7e\x23\x78\x0e\x4c\x3e\x15\x77\x4b\xc4\xe9\x95\xdc\xde\x90\x73\x8f\x20\x26\xc4\x74\x21\x4b\x8c\x04\x3c\xcd\x62\xbc\xa1\x2b\xbf\xb9\xe0\xae\x36\x02\xa3\x32\x2c\x06\x14\x8a\xcf\x0a\x2a\xb2\x3a\x51\x91\xfa\xb5\x7b\xa5\x8a\xf5\x6b\xad\xdd\xf3\x86\x6d\x65\x84\x4b\xf3\x5d\x88\xe0\xfb\x0f\xbb\x09\x81\x16\x40\xe4\xf2\x09\x6c\x34\x28\xab\x74\x72\x98\x70\xc6\xfd\x71\xbf\x47\x55\x65\x6a\x75\x66\xbf\x36\xba\x26\x7a\x46\x5b\xc1\xdb\xd7\x17\xcf\x40\xa3\xd7\x2a\x21\x78\x11\xca\x99\x35\x30\xa1\x8d\xd1\xf6\x81\x75\xf3\x05\xdf\x7a\x93\xb8\x71\xff\xa9\x8a\x6a\xce\x6a\x65\x85\x9b\xb2\x97\x7c\xcd\x78\x61\x75\x4c\x72\x90\x4d\xee\x15\x20\xf2\xbb\xa9\xd8\x29\x03\x66\x51\x72\x70\x29\x15\x9b\x69\xb7\x64\x1b\x62\x13\xa8\x44\xb7\xe7\x08\x0c\x51\x49\x40\xfa\xb6\x33\x87\x54\x9b\x53\xa5\x6a\x7c\x7e\x23\x2c\xab\x8c\xc8\x44\x2e\x54\x96\x74\xbf\x46\x42\xcc\xfc\xfe\x77\xd4\x1b\x7a\xa9\x95\x57\x92\x23\xdc\xd1\x0b\x95\xcb\x8c\x3b\xcc\x42\xba\x51\x12\x0c\x80\xd5\x0b\x99\x2d\x0e\xe4\x41\x5e\x45\x12\xc5\xd6\x56\x18\x78\x15\x75\xa6\x16\x78\xb0\xbe\xa9\x67\xa2\x10\x8e\x4a\xb6\xc8\x22\x03\x34\x77\xc8\x6c\x26\x4b\xbe\x10\x8c\xbb\xa8\x06\xe8\x39\x26\xa1\xac\x37\xa7\xb0\x92\xd2\xb1\x5c\x8b\x86\x92\x8b\x9a\xec\xb0\xec\xdb\x8b\x67\xec\x11\x3b\xf2\x6b\x78\x0c\xfe\xc4\x9c\xcb\x82\xce\xcd\x01\x55\x03\x1b\xfe\x8f\x9c\xc7\xe9\x52\xad\xd7\x45\xd0\x7d\x4c\x1b\x34\x5f\x27\x4c\x69\x66\xeb\x6c\x19\xd7\x9a\x9e\x83\x8d\xe9\xe2\x50\x01\x04\x38\x9a\xa0\x60\x89\x12\x1b\xb5\xfc\x3e\x05\x4b\x5d\x5b\x14\xba\x4b\xc1\x92\xdf\x27\xf3\xf7\x29\xd8\x24\x44\xe2\x03\x57\xb0\x89\x0e\xcc\xb7\x56\x98\x91\xfc\x97\x6f\x1f\xb8\xff\xd2\x0d\x71\xbd\xae\x6c\x77\x96\xee\x20\xa0\x42\x2c\x85\xe3\x39\x77\x3c\xf8\x35\xa9\x1c\xa2\xdb\x3e\xd1\xfe\xf2\x3d\xcc\xcb\x77\x9f\xde\x8d\x15\x2f\xa4\xaa\xef\xb0\x60\x65\xac\x07\xa4\xeb\x73\x10\xca\xb2\xb4\x25\x86\xa3\xcb\xab\xaa\x90\xc0\x28\xb9\x51\x43\x91\x64\x38\xbb\x8d\x02\xd2\x95\x43\x0c\x67\xc0\x70\xf2\xa2\xd0\xde\xc1\xf3\x31\x2b\x57\xb9\xa6\x22\xd9\x37\x16\x11\x92\x1d\xa2\xd7\x26\x6f\x0a\x97\x9c\x7a\xd7\xf6\xaa\xe1\x33\x50\x0d\xf7\xfa\xf0\x57\x88\x95\x20\xf7\x35\xd8\xec\x3e\xe8\x65\x31\x69\xe3\xb1\x4e\x78\x3d\x80\x69\xb1\x82\xcf\x44\x81\x9e\x3f\xaa\x88\x11\xea\xe1\x92\x95\xcb\x28\xcf\x64\x46\x17\x63\xf1\x7d\xbc\xd6\x05\x14\xc3\xf0\x11\x96\xdd\x4f\xeb\x17\xbc\xea\x20\x62\x9c\x55\x7f\xb3\xae\x46\x5b\x75\x78\x32\xf8\xe5\xae\x7a\x4d\x0e\x1c\xd8\xe6\xaa\xfb\x18\x64\xac\x55\x07\xc7\xfe\x97\xb9\xea\x56\x64\x99\x2e\xab\x2b\xa3\xe7\x92\xaa\x67\xb6\x1c\xbe\x20\x34\xc2\x4d\xe9\x0e\x5f\x6d\xc5\xae\x82\xb0\x04\x47\xa4\x37\x31\x78\x3c\xad\x8c\x5e\xc9\x9c\x1c\xaf\x71\x87\x7e\x4d\x2c\xa0\xfe\xbf\x92\xdd\x47\x30\x68\x1b\x9e\x68\xe2\x52\xea\x95\x30\x26\x76\x12\xf0\xb3\x0c\xe2\x3e\x53\xea\x60\x32\xde\x60\x04\x27\x48\x67\xbc\x80\xc6\x7f\x29\x37\x86\x6d\xde\x9a\x4d\xb1\x09\xaa\x45\x36\x19\x65\x00\xcc\x7a\x69\x2c\xad\xfe\x82\xc5\x86\xda\x20\x2b\xe0\x02\x94\xce\x45\x40\x83\x27\x88\x0d\xf4\xa7\xf8\x4e\x1d\x67\x9b\x5e\x06\xef\xbd\xed\x88\xdf\xce\xc3\x8c\x13\x24\xc2\xb7\x3a\x1d\xfa\x23\xbc\x4c\x6e\x80\x88\x9b\x2f\x54\x2e\xd5\x02\x5e\x98\x4f\x98\x11\x05\x4f\x20\xe8\x61\xad\x4d\xb9\xc1\xf4\xfc\x21\x68\xcc\xb0\x04\x09\x52\xa3\xca\x8c\x9b\x03\xd1\xac\xd4\x2a\x85\x52\x00\x56\x10\x1e\x6f\x63\xc4\x39\x4f\xc5\x10\x49\xcb\x0e\x5e\xc4\x4b\x44\xee\x44\xf6\xd0\x5c\xc7\x03\xf0\xf7\x9a\x1b\x9d\xb0\x3e\x88\xd8\xb8\x91\x2a\x0f\xf5\xff\xdd\x4d\x4d\x91\x1b\xfb\x5f\x63\x5e\x66\xca\xde\x42\x73\xcf\x34\x73\xe5\x07\x37\xe2\x09\x7b\xa7\x58\xb3\xa9\x6c\xd2\x2a\xb4\xa4\x9b\x07\xaa\x70\x4b\xa1\xa5\xaa\x87\xb6\xdd\x13\x2a\xb4\xd7\x98\x04\x4a\xe3\x48\x63\x68\xee\x76\x81\x65\xd2\x96\x00\xa0\x0e\xf1\x4a\x37\x53\x4f\x73\x91\xf3\x29\xfb\x56\x81\xce\xf1\xeb\x3b\x61\x4a\x8f\xb0\x5d\xed\xb2\xc6\x13\x76\x70\x5f\x77\xfb\x56\xaa\x5c\xdf\xda\x71\x73\xa3\xdf\xa1\xd0\x98\x78\xa2\x32\x3e\x59\xe1\x9c\x54\x0b\xdb\xcd\x8f\xf2\xa2\x18\x01\x5f\xbf\x2b\x41\x9a\x76\xbb\x9b\xfe\xf8\xdb\x09\xbc\xc4\x17\x4a\x3c\x84\x88\xcf\x88\x09\x47\x6a\xba\x75\x1b\x9f\xb1\x2b\xe1\x98\x00\x7f\xdb\x27\x1c\x3f\x34\x16\xa5\xe5\x4f\x8d\xff\x08\x27\x79\x71\x5d\x51\xdb\xfd\xb1\xcd\x8b\xf7\xf5\xcb\xeb\xb3\xbe\xe0\x34\xcf\xe3\x76\x29\x0c\xc6\x56\x5e\x32\xe3\x79\x29\xad\xa5\x3f\xb8\xfb\x71\x2b\x66\x4b\xad\x6f\xd8\x51\x2c\x54\x5c\x48\xb7\xac\x67\xd3\x4c\x97\x9d\x9a\xc5\x89\x95\x0b\x7b\x1a\x14\xd3\xc4\xaf\x17\xb5\x7c\x09\xbe\x44\x15\x52\x05\x78\x23\x3c\x33\x28\x67\x99\xa6\x77\x0e\x67\xed\x92\x64\xcd\x6a\xc3\x89\x4f\x31\xb6\xd0\xe3\x18\x6b\x71\x76\x6c\xe4\x65\x1a\xd5\x17\x90\xc3\xdf\xab\xf7\xb8\x7d\xe8\x2f\x93\x7a\x0f\x7c\xe0\xe0\x27\xae\x17\xf6\x4c\x44\x5e\xba\xf0\xb4\xee\x7f\x23\x41\xe2\xc6\x49\x09\x59\xa0\xfb\xcd\xc0\x47\x4c\xc3\x88\x3b\x01\xd8\x86\x20\x32\x2d\x2c\x8f\x1e\x44\x8b\x92\xe8\xe0\x1d\x12\x44\x6f\x22\x25\x1a\xcc\x43\x82\xcc\xcd\x62\xbd\x51\x10\x13\xec\x23\xa2\x26\xd8\xcf\x46\x4e\x24\xfc\x40\xdf\x61\x19\xc9\x0b\x60\xef\x7f\x25\x4d\x54\xe8\x1f\xcd\x71\x61\xa3\x39\x2f\x2c\xed\xe2\x07\x66\xdf\x51\xba\x5f\x5f\x77\x64\x25\x45\xf2\x11\x1f\xea\x77\x14\xf9\xdd\x1b\xd6\xe4\x62\x1d\x39\xea\xe5\xbf\x68\x67\xdd\x1f\xc1\xd6\xc7\x57\x1a\x69\x60\x3a\xa4\xef\x04\x99\xa1\xfd\x6d\xce\x7c\xc0\x5a\xc4\x24\x7e\x59\x15\xde\x73\xe9\xcd\x9e\x38\x63\x90\xd8\x69\xb0\x7d\xd2\x2c\x4f\x4a\x1f\xf0\x40\x9b\x7f\xc2\xfe\xbb\xb6\x8e\xf1\xa6\xfa\x3e\x72\x3f\xc3\x4e\x12\x84\x47\x5a\x6a\x28\x25\xc9\xb8\x6a\x5a\x3f\x39\x1d\xdf\x20\x08\x52\x73\x39\x9f\x8b\xc8\x3f\x30\x13\xac\xe2\x86\x97\xc2\x41\x65\x18\x15\x4e\x3c\x13\x0b\x89\xe5\xd9\x7a\xce\xb8\x5f\xd0\xc3\x43\xdb\x12\x0a\x53\xf4\x07\x14\x7d\x4b\xc7\x4a\xb9\x58\x3a\xb8\xe4\x8c\xb3\x42\xab\x05\xd0\x46\xd2\xd0\xb4\x85\xe6\x39\x03\x5d\xaf\x0d\xbb\xe5\xa6\x64\x9c\x65\x3c\x5b\x02\x4c\x99\x04\x5e\xcc\x6b\x03\x9d\xbb\x9d\xe0\xf9\x7a\x62\x1d\x77\x3e\xd6\x15\x48\x21\x84\x3b\x47\x90\x9a\x6d\xd1\x17\xe2\x19\x80\xc7\xc9\x99\x70\x94\x3c\x72\xac\x1c\x0a\xe5\x42\xd1\x1f\xee\x2a\x9b\x04\xa9\xf3\x82\x2f\x1e\x1a\x5f\xe6\xbe\xd1\x7c\x18\xfb\x46\xf3\x3f\x77\xec\x1b\xcd\xff\xec\xb1\x6f\x34\xbf\x6f\x34\xbf\x6f\x34\xbf\x6f\x34\xbf\x6f\x34\xbf\x31\xf6\x8d\xe6\xf7\x8d\xe6\x7f\x62\xec\x1b\xcd\x7f\x58\xe0\x7d\xa3\xc5\x7e\x19\x4d\x64\xf6\x8d\xe6\xf7\x8d\xe6\x7b\x63\xdf\x68\xfe\xbe\x5d\x8b\x7d\xa3\xf9\x7d\xa3\xf9\x38\xf6\x8d\xe6\x07\x8c\x7d\xa3\xf9\x61\x63\xdf\x68\xfe\x83\xe3\x81\xb5\x9e\xdb\x37\x9a\xdf\xb7\x9e\xfb\xb9\x72\x1e\x5e\xeb\x39\xb6\x6f\x34\x4f\x1b\xfb\x46\xf3\xc3\xc7\xbe\xd1\xfc\xb0\xb1\x6f\x34\x3f\x5c\xe6\xbe\xd1\x7c\x3b\xf6\x8d\xe6\xf7\x8d\xe6\x3f\xd3\xa3\xbb\x6f\x34\xbf\x6f\x34\xbf\x7b\xec\xdf\x08\xf6\x8d\xe6\x87\x8d\x7d\xa3\x79\xba\xd0\x7d\xb4\x4f\x97\xf3\xf0\xa2\xfd\x7d\xa3\xf9\x7d\xa3\xf9\x0f\x8e\x14\xd7\xcd\xba\x5c\x12\x3a\x0c\x7e\x9c\x16\x02\x01\x2d\xdb\xa1\x65\x9c\xd5\xf3\xb9\x30\xe0\x76\xc3\x4c\x49\x89\x9b\xdd\x45\xfa\xd3\x58\xa6\x40\x91\x89\x8e\x9f\x15\xee\x04\xba\x1d\x58\x2c\x9c\x86\x29\xd2\x00\x8f\xfd\x29\x06\x76\x4a\xe8\xab\x67\x84\xa5\xc5\xd7\x52\xb1\xf3\x57\xcf\xa7\x23\x74\x4f\x48\x21\x1e\x86\x35\x79\xa5\xb2\xd4\x62\x9d\xf6\x90\xa5\x91\x80\x46\x02\xd0\x70\xd6\xb2\x42\x5b\xc4\xd6\xe2\xe6\x65\x4b\xae\x94\xa0\x14\xa8\xa0\x42\x94\x0e\xd2\x6e\x33\x21\x14\xd3\x95\x50\x88\xff\xe7\xcc\x4a\xb5\x20\x91\x2d\x70\xe7\x78\xb6\x9c\xfa\xef\x57\xf1\x80\x85\xc6\x8b\xcd\xac\x29\x57\xcd\x19\xc1\x4b\x3c\x68\x46\x94\x5c\xe2\x74\x19\xcf\x8c\xb6\x96\x95\x75\xe1\x64\x95\x30\x61\x66\x05\x94\x59\x5b\xac\xf9\x8f\x87\x80\x91\xae\x9b\x15\x08\xf6\x04\x9a\xfb\x66\x0d\xc2\xf2\x92\x5c\xb0\xf6\xaa\x41\x00\x7f\x02\x3d\xb7\xcb\xca\xad\xb1\x20\x8a\x78\x81\xe7\xd2\x58\xc7\xb2\x42\x42\x04\x07\xeb\x20\xc0\x92\xc1\x9c\x29\x08\x60\xae\x72\x2f\x59\x85\x3d\xb2\x61\x93\x54\x0e\x0e\x68\x45\x72\xf8\xa1\x2c\x27\xd6\x7d\x89\x38\xdd\x5c\xda\x10\x50\x58\xd2\x44\x63\xe3\x21\xbc\x5c\x71\x8f\xe0\x7a\xe5\xc4\x0e\x1a\xf1\x9b\x83\x90\xce\x94\x13\xee\x3f\xf4\x0a\x0a\x59\xf1\xc6\x04\x60\x97\x9f\xa8\x20\x49\xdf\xbf\x5d\x8c\x1b\xfb\x46\x80\x81\x20\x88\xec\x98\x14\xb8\xa6\x4a\xac\xbc\xf5\x12\x99\x90\x2b\xef\x84\x13\x44\xee\xb4\x07\x9f\xd4\x1c\x38\x61\x4a\xa9\xa0\x68\xeb\xa5\xb0\x96\x2f\xc4\x15\xe9\xf5\xfb\x7d\xb1\x35\x3c\x80\xc7\xc3\x48\xbe\xc6\x05\x52\x8a\x35\xce\x6d\x5b\x82\x70\x48\x2a\x0f\x6d\x3f\x9a\x95\xf8\xd5\x0d\x2f\xca\xad\x91\xce\x09\x92\x63\x63\xb1\x31\x19\x00\x87\x36\x49\x2b\x69\x13\xed\x94\x57\xb0\x97\x71\xa2\x38\x41\xff\x73\xde\x49\x55\x34\x3a\x46\x44\x39\xcd\x8c\x14\x73\x36\x97\x50\xc5\x00\x78\xfb\x13\x6c\x84\xc1\x29\xb3\xe5\x8a\x71\x6b\x85\x81\x75\x0d\x78\xeb\xb8\xbe\x53\xf6\x1d\xb9\xce\xd4\x99\x5a\x65\xbc\x6d\x2b\x8b\x24\x52\x72\xce\x16\x80\xec\xa7\x68\x1d\x68\x63\xfd\xbb\x47\x7f\xfc\x3d\x9b\xad\x7d\xa0\x01\x58\x16\xa7\x1d\x2f\xe2\x84\x09\x42\x0b\xa1\x16\xfe\xb4\xa3\xc9\xee\x53\x0a\x25\x94\xd9\x16\xb2\x94\x0e\x6b\x5f\x1f\x7f\x71\x33\xeb\xc5\x64\x04\x89\xa7\xb9\x58\x9d\x76\x6e\xc0\xa4\xd0\x8b\x29\x7b\x1a\x0b\x2f\x09\x12\x63\xa9\x26\xb5\x50\x91\x14\xe6\xef\x50\x5c\xd0\xfc\x3e\x51\x75\xc5\x1e\x43\x6c\xa9\x6f\xb1\xf1\x60\xfb\x3b\x84\xa5\x89\xda\xa5\xad\x3b\xac\x74\x55\x17\x58\xd9\xfa\x9c\x46\xf7\x05\x9a\xaa\xb6\x62\x93\x7b\xe6\x3d\xba\x9c\xa6\x1c\xe2\x34\x37\x02\x21\x54\x12\x09\x0b\xa1\x03\x71\x43\x78\x5d\x6a\x9a\x04\xd5\x86\x54\xf9\xf8\x9c\x17\xc5\x8c\x67\x37\x6f\xf4\x0b\xbd\xb0\xaf\xd4\xb9\x31\xda\xf4\x56\x88\x72\x8f\xb9\xf7\x1a\x97\xb5\xba\x81\xfe\xd6\xcd\xc7\x17\x7a\xc1\x74\xed\xaa\x9a\x14\xfd\xcd\x37\x8f\x53\xb3\x26\x44\xda\xb7\xc6\x45\x0e\x4e\x69\x67\xa6\xe2\x4e\xd2\x9e\x3e\x6e\xa5\x57\x60\x8a\x09\xbf\x8e\xa8\x15\xdb\xaf\xa6\x05\x0b\x1d\xf5\xf5\xc5\xa3\xdf\xfd\x01\x15\x2e\xd3\x86\xfd\xe1\x11\x14\x65\x92\xdc\x5b\x70\x05\xc0\xff\x92\x96\xd9\x92\x17\x85\x30\xa9\x8a\xd1\x5f\xc7\x8e\x22\x6c\xd4\xda\x27\xd5\x6a\x2e\x55\x81\x7d\xc4\xe4\xcf\x9b\x37\x7f\x83\xcc\x8f\x74\x56\x14\x73\x92\x57\x5e\x58\xdd\xb6\x06\x3d\x04\x67\xfa\x30\xf8\x22\x3e\x9a\xa4\xa8\x80\xfb\x4d\xa7\xac\x74\x51\x97\xe2\x99\x58\xc9\x8c\xf2\xac\xd5\xdb\xba\x9e\x2c\x7a\xe5\x73\x21\x2d\xf4\x6e\x9a\x15\x3a\xbb\x61\x79\x10\xd7\xc2\xda\x29\x5e\xc8\x3a\x95\x82\x3d\xa5\x08\x81\x5c\x7c\xf0\xde\xd5\x6d\x4b\x07\x48\x09\x5e\xce\x4a\x5e\x55\x0d\xe9\x87\xe1\xb7\xbd\xc5\x26\xc9\xf4\x9a\x17\x78\x56\x93\x78\xee\x13\x1f\x87\x53\x9e\x86\x27\xe1\xeb\x89\x3e\x07\xb9\x2e\x21\xf5\x55\xb9\x9d\x35\xf5\xe1\xab\x77\xcc\x5a\x71\xa9\xdc\x05\x15\xc8\xc0\xa2\xf5\x91\x5a\xb1\x75\x98\x91\x70\x9e\x4d\xd8\xeb\x0f\x74\x02\xab\x98\xd3\xd4\x47\xc7\xe4\x97\xbe\x94\x2a\x90\xde\xce\xa9\xe6\x4d\xb5\xe4\x8e\x94\xac\xc0\xd1\x25\xf9\xe3\xac\x12\xc6\x4a\xeb\x7d\xf4\xb7\xa0\x80\x9e\x16\x5c\x52\x1f\xce\x9a\xc7\x93\x4a\x53\xb7\x2a\x61\xb9\x51\x81\x42\x1f\xef\x54\x4b\x77\xa5\xf3\x20\x0e\x0c\x13\xa4\x4d\x48\x2f\x2a\x5b\x69\x96\x54\x4a\x8a\xd1\xdc\xbf\xfb\x34\x75\x6f\xdb\x9d\x4a\xb7\x74\x5e\x4a\x63\xea\x50\x72\x30\x56\x44\x89\x9f\xaf\x81\x83\xb5\xf8\xdc\xec\x5b\x33\xe9\x51\x94\x24\x18\xb6\xe0\xab\xa4\x18\xb7\x36\x56\x6d\x5f\x2a\x96\x22\x28\x05\xb2\xd4\x36\xcd\x12\x32\xb1\xd3\x00\x16\x55\xe4\xa6\xce\xcd\x54\xd9\xe1\x93\xc3\x7b\x33\x72\xb8\x89\x46\x57\x7c\x01\xb9\x83\x51\xf6\x72\x53\x68\x02\xc2\x0b\xd3\x1a\xc2\x42\xda\x0c\xe4\x52\x99\x10\x71\x54\x61\x56\x22\x6f\x29\xd0\xa1\xb1\x41\x42\xf9\x7d\xe7\xc8\x85\x84\x09\x12\x37\xde\x26\xd4\x45\x73\xa3\x6b\x95\x87\xd7\xe0\x06\x82\xf0\x72\x63\x61\x2f\xe9\x0c\x66\x90\xe6\x89\x6d\x5f\x7c\x88\x0b\x85\x92\xd2\x52\xc9\xf0\x82\x4c\xc5\x1e\x4f\x1f\x3f\xfa\xfc\x7d\x36\x58\x93\x91\x7c\xb6\xcb\xc6\x67\x43\x2b\x77\x6f\xab\x63\x04\xcf\x5f\xa9\x82\x90\x09\xc2\xd1\xaf\x37\x08\x4f\x52\x5e\xe8\x44\xab\x04\xae\x09\x19\x1b\xdb\x83\xa8\x5b\x23\x5d\xb8\x41\xb7\x32\xa1\x50\xed\x08\x92\x36\x4c\x9b\x2e\x05\xf1\x71\x9b\xcb\x4b\x08\x49\xa8\xf9\xa0\xf0\xdf\x27\x76\xf7\x66\xcc\xd6\xb3\x07\x67\x77\xd1\xc0\xa2\x52\xdd\xf5\x9e\x4a\x5f\xef\x20\x79\xdb\x04\x93\x25\x76\xb1\x87\x07\x07\xec\x08\x7f\xe1\x10\xd9\xec\x8e\xef\xed\x7a\x86\x6d\x3d\xbf\xab\xc8\xfd\x17\x7b\x5b\x7b\x7e\x57\x71\x95\x8b\x1c\x03\xfe\x04\xd7\x9a\x45\xd2\xe9\x5d\x7b\x9c\x6e\x36\x0f\x6d\x7f\x8f\xc9\x12\xbb\xee\xd9\x5f\xc4\x92\xaf\x04\x70\xfe\xc9\x82\x9b\x04\xf5\xe4\x34\xbb\xc6\x9d\x61\xb3\xda\x31\xa1\x56\xd2\x68\x55\x8a\x04\x62\xf7\x15\x37\x92\xcf\x0a\xc1\x8c\x00\xe2\xe0\x4c\x58\xf6\xeb\xa3\xb7\x67\xaf\x01\x66\x4d\x6f\x1f\xc1\x8d\x60\x22\xee\x7a\x6d\xa1\x3c\x77\xa4\x5b\xd8\xf9\xec\xe9\xc6\x05\xa2\xab\xe8\x8d\x8b\x17\xd7\xd9\xdf\x00\xfa\x1a\xa8\xbc\xd9\x2f\xbf\x1e\x65\xed\x6a\x5e\x00\xed\x63\x56\xd4\x56\xae\xee\xc3\xfe\x06\x1a\xce\x67\x92\x70\xb3\x37\xe8\x4b\xdb\x4b\xb3\xc5\xed\x49\xa4\xf0\x06\xf7\x72\xbc\xee\xeb\x01\x78\x79\x68\x9b\x1e\x57\xdd\xd6\x40\xe4\x47\xb9\x40\x5b\x3d\x13\x9d\x96\x7a\x8c\x6c\xb4\x5a\x9f\x1d\x5a\x16\xdc\xdf\xf3\x9c\xd2\xb9\x18\xda\xd2\xa2\x5f\xf8\x12\x04\x20\x95\x75\x87\x30\xce\x66\x4b\x91\xd7\x03\x5f\x80\x91\xce\x5d\xe7\x4c\x2b\xa7\x19\x6f\x5a\x62\xc1\x3c\x01\x46\x27\x07\x3f\xd7\x2a\xad\x26\xf0\xa0\x8c\x67\x2b\xce\xcb\x44\x3e\xd6\xf8\x17\xc3\xa4\xf6\x67\x0a\xe9\x67\x3f\xc7\x13\xc6\xad\xad\x4b\x54\x7d\x03\x39\x43\xa5\x63\x73\xe9\x00\x37\xa8\x6b\x93\x89\x98\xd5\xf1\x4a\x6f\x10\x4f\x16\xf9\x24\x5c\x8b\x02\xae\x32\xf9\x34\x1c\x5e\x76\xa4\xe0\x91\xb0\xe1\x4f\x83\x96\x22\x5c\xb9\x50\x08\x04\x28\xe4\xa6\x18\x58\xc3\x9b\xfb\x5c\x0e\x5b\x5c\xad\x18\x0f\xa7\xa8\x99\x5f\xe7\x57\x20\xcc\x1a\xd8\xce\xd3\x4b\x03\x56\x7c\x3e\x13\x85\xdd\x9c\xe0\xac\x3d\x6a\xc3\x5c\x0a\xa0\xc4\x09\xc7\x69\x70\x21\x49\x54\x4e\x10\x9f\x9f\x72\x6b\xe5\x42\x4d\x2a\x9d\x4f\xbc\xb4\xd3\x21\x48\x26\x62\x46\x92\xe7\x91\x3f\xf8\x8a\x98\xe0\x23\x9d\x5e\xbd\x12\x66\x29\xf8\xa0\x04\xe8\x06\xb6\x33\x48\x60\x46\x54\x46\x58\x00\x1f\x21\xff\x1d\xde\xc6\x61\x7b\x18\x85\x71\x6b\x75\x06\xfc\x15\x88\x41\x31\x35\x76\x55\xe0\x83\xdf\x3a\xfc\xf1\xe2\x6c\x21\x57\x42\xc5\xc6\x92\x4f\x0b\x6e\x6d\x2f\x81\x32\x18\x8d\x37\x13\x8c\xd7\x4e\x37\xe8\x2d\xc6\x5d\xdb\xbb\x0c\x41\xd6\xb3\x61\xbe\xab\x5f\xb3\xee\xfc\x3a\xe2\xbc\xd5\x33\x1a\x30\x2d\x83\x44\x5e\xcc\x7f\x9e\xd4\x61\xda\xd6\xc6\xce\x09\x27\xed\x76\x95\x21\xa9\xda\xf6\xf9\x19\x24\xf3\x4a\xe7\x2c\x03\xf0\x66\xb4\x84\x01\x82\xd9\x9d\xfa\x20\x89\xbb\x3e\x33\x56\x53\xf8\x9b\xd9\xf9\xc9\x41\x72\xe3\xf4\x82\x0e\xf4\xc1\x0a\xa6\x0e\x9b\x83\x5b\x18\xc1\xf3\x61\x5b\x6f\x85\x03\x1b\xdd\xdb\x28\xd9\x6d\x42\x3c\x18\xa1\x8f\xd6\xa3\x71\xb5\xa0\x95\x51\x25\xb2\x13\xd6\x5c\x57\xca\x91\x8f\x85\x1e\x4d\x27\xa3\x4e\x47\x58\xf4\x3f\x8d\x11\xb6\xd2\xd0\x9d\x79\x90\xf0\xee\xa7\x9f\xb4\x69\x24\x6f\xdb\x3b\x35\x30\x83\x44\xd6\xca\x4f\x17\x72\xbb\x2d\xe3\xf7\xbf\x84\xd1\x5d\xe3\x30\x48\x62\xa7\x9f\xe0\xf4\xe6\x0f\x60\x45\x84\x5a\x72\x95\xa1\xab\x71\x7a\x23\x2a\x7b\x6a\xe5\x02\x8d\xc6\x17\x8f\x1e\xff\xf1\xd1\x17\x5f\xfc\x1e\xcc\x48\x3c\x1f\xd3\x72\xd8\x3e\xf6\x93\xbc\xbc\xa8\x96\x7c\x02\x4d\xee\xfd\xc7\xe8\x39\xfb\xa6\xb1\x69\x83\xc4\xae\x1e\x4f\x1f\xff\xfe\x84\x05\x82\x7d\xe8\xaa\xb1\xd4\x4a\x1b\xc4\x54\x23\xa1\xdc\x50\xbf\x8e\xbb\xa0\x18\xe2\x81\x6b\x8e\x5a\xe8\x8d\x32\x08\x10\x7c\x6f\x66\xb4\xe2\xce\x09\xa3\x9e\xb0\xff\x3a\x7a\xf7\xdb\x1f\x27\xc7\x5f\x1d\x1d\x7d\xff\x68\xf2\xc7\x1f\x7e\x7b\xf4\x6e\x0a\xff\xf2\x9b\xe3\xaf\x8e\x7f\x8c\x7f\xf8\xed\xf1\xf1\xd1\xd1\xf7\xdf\xbc\xfc\xfa\xcd\xd5\xf9\x0f\xf2\xf8\xc7\xef\x55\x5d\xde\xe0\x9f\x7e\x3c\xfa\x5e\x9c\xff\xf0\x33\x85\x1c\x1f\x7f\xf5\xeb\x61\x0a\x6e\x78\x69\x76\x4a\x39\x76\x42\x09\xf6\x68\x65\xd7\x95\x11\x3e\x1e\x91\x5a\x0d\x87\x76\xf7\x93\xa7\x1b\x82\x62\x2b\x46\xfc\xd3\x60\xef\x22\xce\x4b\x2d\xbc\x73\x62\xd1\x61\x29\xf4\x2d\x94\x1a\x49\x6d\xa4\x1b\x18\xe2\xbf\x52\xf0\xf0\x70\x29\x56\xc2\x9c\xc4\xd9\xbe\xf0\x02\xaf\xa2\x3c\x5a\x3e\xdc\xe9\x9d\xd2\x42\xc3\x3f\x6f\x85\x06\xf7\x69\xea\x3d\x40\xa1\x6a\x3a\x61\x8b\x6e\x75\xc6\xa5\x56\x57\xcd\x0a\xc5\x9f\x1c\xf6\x1b\xa8\x3f\x26\x5e\xec\x47\x8f\xe7\xe2\x96\x91\x4f\xd7\x1b\xa8\xb6\x0f\x2b\x0b\x66\x72\xca\xde\x72\x23\xf5\x40\xa0\x3c\x82\x56\xa0\xed\x9b\x56\xe0\x56\x23\x84\xbd\x31\x08\x10\xcd\x0d\xf4\x0b\x5c\x77\x72\x0d\x67\x46\x7c\xb1\x24\xed\xce\x59\xe3\x6a\x3d\x6d\x5d\xad\xae\x97\x28\x9d\xbf\x22\x2b\xff\x09\xc3\x0c\xb8\x15\x26\x56\x6e\x63\x8f\xee\xce\xd7\xa3\x7f\x48\x6b\x17\xdc\x71\x09\xa3\x03\x6f\xbb\x0b\x0b\x3f\x19\xd7\x02\x5c\x92\x4b\x3e\xf4\xfd\x0f\xc8\x70\xe5\x22\x96\x44\xc3\x39\xc0\x44\x4a\xe7\x6f\x29\xea\x81\xaa\xc3\x69\x2c\x04\xd5\xe6\x2a\x90\xaf\x45\xbf\x4d\x62\xd3\xcd\x71\x70\x22\xb0\xd2\xf9\xa1\x6d\x57\x8e\x1d\xe0\x3d\x01\x9f\x6b\x92\x19\xe9\x64\xc6\x8b\x61\xc9\x6d\xef\x06\x45\x31\x59\x51\x5b\x27\x4c\x2b\x09\xb2\xd1\xee\x76\x18\xce\x00\xbe\x94\x17\xec\x46\xac\x6f\xb5\xc9\x63\xb8\x10\xbf\xba\x3d\x07\x03\xb9\x64\xc2\x67\x4b\x11\xac\x0c\x76\x33\x33\xa5\x30\x6c\x26\xe2\xbb\x41\x82\xe0\xf5\x94\x9d\xa9\x75\x00\x42\xa8\x2e\xa9\x4c\xf0\xf4\x87\x45\x0c\x6b\x0c\xb1\x30\x70\xef\x5d\xa8\xe0\xd9\xc1\x57\x0c\xf7\x33\xfd\xcc\xa6\xef\xc9\x81\x57\x3a\x6f\xbe\x66\x58\xee\x2c\xa4\xbb\x63\xfa\x5b\x1b\x86\x0d\x7d\x40\x4b\x1a\x81\xac\x12\x83\x44\x06\x51\x1f\xdd\x66\xf9\x90\x53\x2a\x61\xed\xd7\xfe\x4a\xd1\x73\x39\xfd\x3b\xca\x21\xee\x0a\x92\x07\x7d\xf7\x02\x6e\x76\x5c\x50\xe1\x95\x1f\x62\x77\xbc\xb7\xa4\xf3\x56\xea\x30\x9d\x7a\x06\xff\x31\x54\x88\xf3\x7c\x8d\x8d\x31\xfd\x24\xa5\xeb\x94\xb6\x0c\xcc\x13\x18\x11\xa4\x9d\x5d\x3e\x8b\x35\x9a\x18\x42\x58\x62\x77\xe5\xa6\xff\x43\xf8\xc6\xb0\x1a\x90\x2a\x08\x4d\xac\xc4\x3f\x6b\x3e\x2c\xf8\x76\x9a\x1d\xbc\x31\xb5\x38\xd8\x95\xd8\xfc\x70\x3c\x2a\xdc\xad\x36\x37\xa7\x8f\x1e\x3d\xfa\x4f\x08\x47\xe1\x93\xff\xc7\x17\x7f\xf9\x1f\x5f\xfc\x65\x5a\xe6\xc3\xe3\xb2\xa1\x68\x56\x02\x8e\x75\x13\x20\xfc\xba\x7b\xc6\xe3\x76\x0f\x7d\x18\xc5\x8d\x09\x8f\xb7\xc0\x13\x06\x47\xaa\xd9\x73\x42\xc2\x95\x80\x3d\xa5\xa1\x4e\x27\xed\x34\xdf\xac\xab\x81\x46\x93\x0c\x1a\xed\xfd\x66\xfa\x2b\x68\x2b\x0b\xf7\x81\x54\xae\xaf\x11\x35\x8c\xb2\x3a\x18\xf8\x43\x4b\xdc\x49\x1c\x50\x28\x05\x66\x15\x5e\x35\xc0\x9c\xae\x2b\x72\x01\xd9\x60\x1d\x0e\xac\x17\x89\xa1\xed\xe1\x6b\x14\xc3\x2a\x8c\x6c\x21\xfb\xdd\xab\x3c\x1f\x68\x13\x23\xc2\x08\xa3\x84\x10\x99\x9e\x01\xf5\xd1\x09\x7b\xa5\x9e\x63\xad\xee\xb0\xe7\x61\x08\x6c\x5b\xa2\x0b\xa7\x83\xc0\x51\xe9\xbf\x4e\x7f\x15\x56\x74\x82\x4b\x31\x5c\xc9\x0d\xdd\xc0\x4e\x0a\x33\xc9\x53\x3e\x7c\xbd\x21\x29\x5c\x95\xa1\x60\x57\xde\x4f\x28\x07\x8f\x2b\x6c\x27\xbc\x92\xa1\xd1\x18\x66\xda\x8d\xae\xab\x93\xe0\xcf\xb6\xe0\xae\xd8\x8d\xdb\xd4\x6a\x38\x69\x17\x1c\x2d\x74\xe7\xfa\x53\x6e\x5e\x74\xe1\x42\x0e\x7e\x69\xc6\xba\x9b\x9c\x65\x98\x55\x8e\xde\x21\xb2\xb5\xe0\x63\x85\xa9\xd5\xe0\x37\x15\x4c\x2c\x6b\xc3\x3a\xaf\xe3\x07\x85\x58\xf0\x6c\x7d\x40\x7f\xb1\xe8\xa1\x2d\x62\xbc\x60\x19\x57\xc0\x3a\x2b\x33\xe9\xf0\x3b\x06\xdf\x5f\xa8\xdf\x86\xc2\x70\xf0\xe1\x51\x69\x82\x1b\x5d\x5b\x42\xfc\x15\xdd\xe3\x48\xd4\xb5\xe4\x2a\x87\x6a\x6b\x92\x63\xa2\x73\x71\x1a\x24\x4d\xe0\xf3\x48\x09\xf2\xa6\x1d\x78\xd3\x86\x3b\x39\x3b\xfe\x3b\x42\xb6\x7a\xa0\xc2\x68\x10\x15\x23\xc6\xd5\xdd\x33\x3e\xf4\x75\x27\x97\xb6\x82\x7b\x86\x8f\x00\x51\x68\x3b\xcf\xc1\x37\xe5\x3d\xe1\x59\x13\x69\x35\x3f\x38\x34\xac\x8c\x87\x90\x34\x35\xda\x66\x89\xac\x86\xe8\x55\x2b\x27\xee\x06\xd1\xdf\xf6\x95\xfb\x75\x5f\x10\x5b\xea\x22\x07\x44\x0c\x26\x4f\x07\xbe\xf2\xa1\x2c\xc6\x9d\x33\x72\x56\xfb\x38\x83\xab\x1c\x9a\x27\x87\xa7\xcf\xe1\x70\xb0\x90\x6b\xb3\x53\xd6\xd2\x36\x75\x91\x83\xa0\x4b\xa6\x8c\x5d\x8b\x81\x18\x25\xef\xf4\x75\xd6\x02\x7c\x93\xb8\x91\x90\x1f\xf3\x77\x76\x90\x48\xc1\xb3\x65\x48\x07\x7e\x82\xb7\x25\xaa\x13\x3d\xb7\x5f\x7b\xa3\x39\xd4\x79\xee\x1d\x9b\x83\xb3\x26\xa7\x64\xeb\x2a\xb0\x90\x0f\x8c\x21\x59\x34\xdf\xa8\xfd\x79\x55\x15\x12\x0b\x2e\x13\x3c\x44\x86\x11\x2f\x47\x23\x7e\xad\xcb\x06\x6f\xec\x57\xd9\x62\xfb\xc2\xe1\x1e\xf4\x52\x80\xf2\x2e\xf0\xc1\x39\x5b\x02\x57\x32\x3c\xb4\xdf\xfa\x29\x2e\x65\x35\x58\x26\x64\xbb\xb9\x6b\xa6\x07\x50\x23\x2f\x2e\xbe\x54\x0c\x96\x58\xe9\xfc\x09\x7b\xa7\xd8\x63\x4c\x46\xeb\x5b\x80\xa8\x7c\x7d\xf1\x2c\x6a\x38\xd2\x77\x3f\xbf\x86\xe3\xc2\xbe\x40\xa9\x56\xb8\x85\xcc\xd9\x0c\x9b\x97\x5b\x31\x1c\xbe\x7c\xa4\xc4\x2d\x96\xc1\x06\xc4\x43\xf3\x5e\xbf\x8a\xe5\x9b\x04\x2e\xaa\xee\xe2\x85\x29\x1f\xb3\x2f\x71\xce\x95\x30\x94\xbc\x3c\x88\x95\x58\x2a\xc6\x5e\xbd\x3e\x8c\xd8\x9f\xdb\x89\xb9\x9d\x4c\x26\x13\xbf\xd6\x17\xc3\x34\x04\x8b\x40\x80\x93\xde\x99\x6a\x5c\xc0\x52\xe7\x72\x3e\x1c\x64\xde\x3b\x89\xa0\x72\xdb\x4f\x06\xcf\x83\xab\xe1\x42\x71\x37\xa6\x43\x81\xd9\x29\x04\xc5\x9d\x47\x81\xdf\xff\x8e\xa2\xd4\x9e\xc2\xcd\xa4\x51\x6d\xf5\xed\xe2\x0e\x81\x21\xe9\x3c\x5c\x21\xcd\xc4\x92\xaf\xa4\x06\x1a\x6d\xd0\x1d\x50\xb0\xdc\xdd\xaf\xe1\x77\xbd\xd9\xdf\xf8\x6c\x16\x2e\x4f\xe8\xc1\x04\xe9\xf7\xc1\x52\xc5\x5d\xa5\xb1\xb3\x28\xd0\x3a\x5c\xe9\x3c\x0d\x96\xc6\x00\x07\x59\xac\x41\xb9\xaf\xbd\x8e\xeb\x29\xe3\x10\xb5\x61\x2f\x8c\xc1\x82\xc3\x0e\xb1\x19\xf7\x53\x6e\x96\xf3\x68\xe3\xf8\x13\x2a\x71\x2e\xc2\x8d\x84\x1c\xa9\xd2\x4c\xcc\xe7\x3e\x54\xd5\x8a\x89\x6a\x29\x4a\x61\x08\x96\xae\xf7\xe1\x81\xc4\xf0\x89\xf7\x98\x8c\x57\x06\x08\xad\x2a\x79\x35\xfc\x70\xf9\xcf\x05\x1f\x28\x97\x66\xca\xde\xf2\x42\xe6\xd1\x7d\xf1\x7a\xeb\xe0\x95\x7a\xad\xb5\x7b\x29\x2d\x04\xad\xc3\xcb\x2c\xe0\x35\x0a\x13\x22\x07\xdb\x8f\x1c\xf4\x56\x12\x4e\xb7\x62\x87\x52\xf3\x91\xc1\x1f\xa6\x56\x67\x23\xb8\x3f\xde\xa8\x78\xbb\xda\x64\x18\x04\x13\xca\x99\x75\xa5\x25\xa1\x9e\x67\x93\x3d\x25\x32\xc2\x4e\xd9\xb7\x3e\x22\x0e\xf1\x28\x21\xd7\x19\x98\xa7\x1a\x34\xc5\x4b\xbe\x46\x8e\x2b\xc4\xce\x51\x1c\xab\x8d\x70\x01\xf3\x24\xa1\xcd\xf4\x4c\x13\xa8\x07\x36\xe3\x0f\x7f\xdc\xae\xa0\xa9\x59\xf7\xaf\x87\xd7\x7b\xb4\xa0\xc0\xf6\xac\x6e\xcf\x7f\xb8\x58\x7e\x23\x2c\xab\x8c\xc8\x44\x0e\x49\x7b\x84\x8b\x73\x47\xe7\x8d\xb8\x1f\x83\x09\x37\xe1\x52\x83\x72\x48\xba\x0b\x17\x9d\xa7\xf3\x40\xde\x43\xaf\xfb\x81\xe7\x5d\x7f\xa5\xb8\x05\x9c\xbf\x9a\x18\xad\x21\x33\x64\x90\x7d\xd9\xd4\x04\xbe\xe5\x2d\x57\x6b\xe5\xb5\x64\x7c\xf8\x86\xd2\x9d\xe1\x6a\xb1\x4d\x39\xf9\x20\x54\xd9\xda\x08\x5c\x01\xe9\x58\xae\x09\x5e\x82\xd7\xab\xe1\xd3\xbf\xbd\x78\xc6\x1e\xb1\x23\xa8\x67\x6b\x38\x28\x29\xe4\x02\x98\x7c\xef\x6b\x17\x39\x8f\x53\x9c\x92\xdd\x57\xa6\x4d\x20\xbf\xf6\xf6\x11\xcc\x59\x58\x53\x8a\x93\x1d\x13\x30\xa1\x5f\xa0\xc8\xf7\xaa\xea\x23\xa8\x2a\x9a\x5e\xa2\x54\x98\x83\x6e\xf9\xd6\x8a\xc1\x65\x8a\x5b\x46\xf6\xdb\x4f\x60\x64\xc9\xa5\xfc\xd8\x03\xd7\xf4\x77\x0d\xb4\x09\x2b\x85\xe3\x39\x27\x50\x60\xa0\xb1\x8e\x02\xb7\xee\x01\xa5\x5b\xc8\x87\xee\x41\xf2\x41\x7b\xcf\x3d\x68\xcf\xf5\x70\xb5\xf5\x13\xf7\x00\xcf\xf5\xf0\x80\xe9\xf3\x37\xd9\x56\xbc\x90\xaa\xbe\xc3\x34\xe8\xe0\x97\xf3\xad\xbb\x75\x7d\x0e\xe2\x90\xa3\xf9\x8e\xc4\x5d\x33\x13\x21\x6d\x97\x6f\xa7\xed\xa6\xe1\x6d\xaa\xc9\xb7\x93\xf4\xe2\x56\x1f\x9e\xd8\xec\x06\x69\x5f\x87\x9f\x55\x66\xb8\xca\x75\xb9\xf5\xf5\xfe\x50\x08\x4e\xe0\x68\xe9\xb4\x64\xdb\x71\x5b\x77\xde\xbe\xe1\xf7\xe1\xfd\xb7\xf5\x73\xb3\x42\xa3\xdd\x3e\x12\xc9\x5a\x0a\x5b\x19\xbc\x87\x24\x93\xdf\xbd\x80\x6a\x19\x69\x9b\x03\x38\xfc\x99\xa5\x99\x10\x9f\x89\x62\x2b\x79\x9e\xc8\x84\x9b\xc8\x40\x62\x74\x41\xa2\x4e\xea\xad\xd1\x6b\x5d\x84\x42\xf4\xb8\x48\x5e\xec\x2f\x66\x8d\x1c\x09\xba\xb4\xa9\xc1\xd7\xd5\xc6\x1a\xb9\xa1\x28\xac\x38\x1e\xe2\x1a\xd5\x04\xef\x91\x6d\xae\x91\x77\x41\xfb\x6b\xe4\xc5\xfe\x22\xd6\xc8\x8a\x2c\xd3\x65\x75\x65\xf4\x5c\x0e\xbf\x71\x5b\xbe\x40\x10\xc7\x34\xfa\x16\x14\x5f\xa0\xb6\x62\x8b\x88\xdb\xe2\xcb\x0e\x52\x2c\x7c\x42\x35\x4f\xe5\xd1\x9c\x50\x2e\x51\x92\x4d\xd1\x19\x2f\x96\xda\x3a\xe2\x46\xb2\xcd\xcd\xdc\x14\xd8\x56\x36\x90\x8e\x3d\xf7\x5f\x07\x72\x3a\xa5\xb5\x1c\x5b\x1e\x11\x19\x19\x9b\x0e\x39\x7d\xb4\x56\x78\xa9\xc3\x5f\x23\x09\x8e\xa5\x01\xde\xd7\x68\x2b\x95\x75\x8b\x2f\xa3\x4d\x57\x03\x43\xce\xb4\xe9\xea\xce\x61\xc1\xc5\xf0\x9a\xe2\x38\x2a\xee\x96\x27\xcc\x88\x82\x3b\xb9\x12\x51\x8d\xdc\x60\x7e\x8a\xc8\xad\xd4\xf9\xe0\x78\x95\xe3\xc6\x81\xa3\x2c\xf5\x40\x5c\x59\x1c\xf0\xd5\xf0\x84\x13\x5d\xda\x39\x22\x27\xa4\x65\x07\x2f\xe2\x61\x3b\xf8\x3c\x6d\xe8\x01\x7e\x49\x93\xc0\xa4\x76\x01\x63\xec\x46\xaa\x3c\x34\xc9\xed\x2d\x3e\xf5\xe1\xdd\x8f\x10\x59\xc5\x37\x9d\xa8\x9a\xb9\x11\x4f\xd8\x3b\xda\xdd\x6b\x36\x8c\x4d\xb6\xaf\x36\x49\x62\x57\x1d\xec\xb8\xda\x24\x99\xa8\x0e\x02\x72\x31\xa2\x72\x27\x23\x30\xcc\xc7\x10\x32\xbe\x8c\xc4\x05\x48\x20\x8c\x6b\xb4\xd7\xb7\x0a\xee\xa0\x57\x91\x13\xa6\x74\x92\x26\x6b\x35\x63\x3c\x03\x14\x76\x34\xba\x6f\xd1\x41\xf4\xc0\x5b\x59\x5a\xae\xe1\xac\x69\xf9\x01\x68\x1f\x1b\x3f\x8a\x92\x6f\x6b\xdb\x66\x86\xf4\x1d\xa4\x06\xa5\x42\xe8\x55\x73\x3a\x86\x47\xbf\xfe\x1c\x87\x5a\xfd\x2d\xc7\x0e\xeb\xfb\x4a\x6e\x86\x63\x28\xbe\xbe\x78\x36\x65\x9b\x89\x10\x7f\x3c\xc2\x52\x50\xa1\x2e\x3c\xcf\x43\xce\x45\xad\x53\x03\x69\x0a\x15\x3c\x91\x08\x3e\xad\x79\x75\x42\xe6\x6c\x6d\x33\x57\xa4\x1d\xe3\x6b\x94\x01\x00\x49\xc6\xe3\x99\x1e\xfe\xca\xc3\x4b\x61\x2b\x9e\x79\x4b\x1d\x24\x02\x58\xbd\x43\x3b\x35\xdc\x98\x5e\x35\x75\xfe\xb5\x0a\x70\x8a\x8e\xfc\xa3\x81\xd4\x3f\xec\x7d\xb9\xb7\xe3\xc0\x9e\x37\xe7\x84\x9e\xb7\x4e\xb3\x82\xd7\x2a\x5b\x3e\xf8\x53\xba\x63\xdb\x23\xf4\x87\x71\x76\x23\x0c\xad\xe3\x73\xc5\x0d\x2f\x85\x13\x26\xd2\x8a\x11\x9e\xb5\x92\xfa\x0b\xd0\xbb\x0b\x10\xbb\x03\x4c\x88\xe9\xff\xb4\x9e\x02\x74\xf6\xee\x3e\x23\x62\xdb\x23\x05\xa7\x43\xe5\x7e\x75\x9a\xb4\xd5\x2c\x9d\x0c\x18\x56\x7f\x84\xa5\x78\x0b\x69\xe1\xcf\x75\x2d\x6e\xa5\xca\xf5\xad\x1d\xeb\xd9\xe4\x3b\x14\xd7\x72\x5a\x46\x80\xfa\xf0\xb7\x88\x8f\xfb\x74\x12\x03\x86\xed\xd6\x5d\x87\x36\x39\xad\xdf\x2d\x0f\x9a\xfe\x9b\x3f\x28\x7e\x26\xef\x17\x8b\xd2\xf2\xa7\xc6\x4f\xd9\x49\x5e\x5c\x57\x22\x4b\x0e\xa0\xbf\x7e\x79\x7d\xd6\x17\x49\x0b\x22\x7d\xe8\x2d\x0c\xc2\x71\xbc\xcc\x0e\x5f\xde\xad\x98\x2d\xb5\xbe\x21\xc9\x3d\xea\x14\x7e\x2d\xeb\xd9\x34\xd3\x65\xa7\x7e\x73\x62\xe5\xc2\x9e\x06\xed\x30\xf1\xab\x43\xa3\xcc\x96\x0a\xfa\x84\x6e\xf7\xbb\x0d\x1f\x43\x4b\xe8\x34\xab\x0a\x67\x37\x54\x0e\x86\xfc\xea\xf6\xb2\x5f\xd2\x9a\xf7\x04\xbe\xa4\x4f\x9e\xbd\xd9\x3e\x8a\x43\x6b\xce\xe2\xf8\xc0\x71\x24\xaf\x4b\xa0\xe0\x8a\x8d\xd2\x9a\x83\xd9\xee\x0b\x2d\xb2\xf7\x7b\x89\xb8\x91\x4f\xff\x34\x17\x51\x39\xa3\xac\x35\xa0\x73\x82\x30\xaf\x54\x83\x59\xa4\xe6\x58\xb7\x11\x3e\xe3\x34\x15\xdc\x42\xf9\xc4\xe8\x9e\xfc\x12\xf4\x13\x68\x1f\x26\x87\xc7\x83\x0c\x21\x75\xa3\x22\x7e\x18\x86\x84\x5b\xd0\x83\xc6\x4c\xd3\x52\x5d\x1f\x13\x7d\xc0\x3e\x1e\x02\x81\x8d\x80\x85\x63\xf4\x3a\x4d\xb3\x92\x99\x38\xcb\x32\x5d\xab\x84\x32\xcd\x67\xc2\x4f\x9e\x3b\x91\x5f\xf7\x24\x0e\x65\x51\xe7\x2c\x07\x49\xc8\x65\xcc\x0b\xc9\x91\xf1\xba\x2f\x75\x38\xbf\x58\x3b\x3f\x78\x76\xdd\xf8\xee\xa0\x24\xac\x13\x9c\x52\x1a\x99\xb4\xe6\x69\xdc\x07\xdb\xeb\x42\xe9\x9b\xda\x35\x23\x1b\xfb\x87\xc6\x20\xa8\xc0\x41\x42\x9b\x77\xd5\x9f\x49\x53\xe1\xb8\xbd\x69\x99\xc5\x05\x10\xef\x34\xca\xb5\xf3\xf7\x61\xf9\x26\x1c\x67\x48\x60\x1b\x1f\xbc\x5f\xee\xaf\xda\x3a\xbf\x48\x67\xf6\xf9\xff\xfb\xec\x32\xa5\xf8\x1c\x48\xe6\x5b\x02\x96\x65\x10\x3c\x30\x62\xc4\xe0\xa6\x4b\x78\x6c\x3b\x42\xfd\x1c\x87\xa9\x38\xc3\x43\xd7\x73\x8e\x66\xae\x10\x7c\x8e\xa7\xe2\x08\xbb\xdd\x82\x71\x1a\x58\xaa\x74\xa1\x58\x8b\x61\xc3\xc8\xf1\x04\x4f\x45\x29\xb8\xb2\x31\x30\x1d\x78\xa8\x04\x7c\x5e\x2c\xc9\x8c\xeb\x17\x2a\xc0\xf0\x0c\x0f\x92\x88\xf9\x32\xfc\x4e\xa5\x73\xd1\x97\x66\x9d\xa9\x33\xc7\x6a\x67\xfd\xdf\x0f\x5f\x80\x18\x8d\x8f\xbc\x04\x46\x2c\xa4\x75\x26\x10\x66\xfa\x89\xb6\x0b\x81\x89\xda\x61\xdb\x1f\xc5\xdd\x88\x35\xfb\xeb\x37\xe7\x7f\xfb\xfb\x8b\x57\x4f\xcf\x5e\xfc\xfd\xe5\xd9\xd3\xbf\x5e\x5c\x9e\xbf\x7b\x77\xfd\xb7\xeb\x37\xe7\x2f\xdf\xbd\x7b\x5a\x1b\x23\x94\x0b\xcc\x95\xd7\xc2\xbd\x7b\x17\xf4\x85\x7d\xf7\xee\x4d\x56\xc9\xea\xdd\xbb\xab\x98\x47\x1c\x4c\xb6\xea\x37\x16\xbc\x00\xa4\x99\xca\xb5\xb0\x50\x75\x00\x75\x6e\xc3\x0f\x35\xac\xf3\x92\xdb\xb6\x44\xae\x47\xa2\x33\xb8\xbd\x19\x0d\x70\x6e\x97\xdc\x88\x2b\x74\xf3\x2e\x63\x72\x3d\x41\xe1\x7b\x71\x8c\x33\x2b\xd5\xa2\x10\xcd\x33\x53\x93\xb6\x1f\xb4\x42\x33\xe1\x6e\x45\x60\x85\xdb\x74\x67\x6d\x5b\xa7\x3e\x48\x26\x30\xa3\xba\x40\x33\xe2\xdd\xb9\x8e\xc4\xa8\xb8\xf8\x6c\x68\xc3\x16\xcd\x56\x52\xdc\x82\x3b\x67\xe5\x42\xf1\x22\x7e\xb9\x08\x94\xa7\xc0\xc1\x38\x48\xe6\x26\x0a\x48\x30\xeb\xef\x4f\xa5\xf3\x93\xa6\xc5\x25\xbc\xe5\x0d\x92\x1a\x37\x64\xeb\xcd\xaf\xcb\xa3\x33\xcc\x25\x82\xee\x1a\x22\x67\x57\x17\xcf\xd8\xe3\x29\xf3\xb6\xc8\xff\x2b\xb4\x80\xda\x75\xb8\x86\xad\x42\xe8\x08\xe4\x9d\x67\xf4\xe8\x77\x10\x59\x0c\xdd\x2b\xbc\x5a\xc3\x0d\xf3\xe0\xbb\x55\xcf\x72\x5d\x72\x39\xa8\xa1\xeb\x07\xe8\x60\xe6\x75\x51\xac\xd9\x3f\x6b\x5e\x0c\xe7\x32\xbc\xd2\x79\xab\x88\xe3\x61\x3f\xf8\x53\xfc\xab\x3f\x4f\xff\xd4\xcc\xf8\xcf\xd3\x3f\x0d\x6d\xcd\xd1\xdc\xf1\x3f\x4f\xed\x2a\x9b\xfe\x29\x70\xaf\xb2\x20\xb0\xa9\x7e\x1d\xf6\xf4\xf8\x1e\xbe\x99\x46\xef\xf2\x20\x7f\xb0\x97\xc2\x9d\xd7\x2b\x1f\x9d\x69\x06\x7b\xe7\x02\x84\xe8\x6b\xc3\x33\x71\x25\x8c\x84\x80\x4f\xab\x9c\xce\xed\x19\xaf\x00\xcb\x43\x93\x1b\x7f\xa1\x2d\x0a\x1d\x6c\xad\xfd\xa2\x2a\x21\x72\x0c\xee\xc3\x7c\x05\x5b\xf8\xe9\xc2\x71\x1b\xa6\x61\x7d\x04\x0e\xc4\xab\x99\x11\x1c\xcb\xe1\x59\x2e\x0a\xd1\xb6\x03\x99\xe2\x93\xc8\x20\xa9\x11\x9e\xa6\xb4\x9a\x28\xb1\x40\xf0\x57\x78\x0a\x47\xf0\xdb\xf0\xd4\x36\x12\xc2\x36\xf8\xa5\x30\x49\x59\x96\x22\xf7\x01\x5e\xb1\x1e\x5c\xe1\x07\x86\x05\x9d\x1e\x69\x99\x92\x05\x1e\xdb\x88\x98\x81\x25\x65\x15\x1c\x01\x92\x4b\x5d\x07\x7a\x01\x88\x04\xe1\xab\xc9\x22\x43\x8a\x6e\xc7\x01\x62\x7c\xee\x1a\x4a\xeb\x60\xc5\x86\xf9\x6b\xa1\xbd\x4f\xcb\x35\x08\xb5\xf4\x56\x28\xc7\x78\xf7\x46\x0c\x53\x05\x68\x58\xa3\xed\xc3\x6a\x16\xb4\xe6\xd4\x89\xfa\x59\xcd\xb5\xc9\xe4\xac\x58\xb3\x25\x2f\x9a\x06\x45\x9c\xdd\xf8\x15\xc7\x9f\x1c\x76\xfc\xaf\x85\xeb\x1e\x83\x42\xab\x45\x37\x74\x11\x77\x15\xb4\x72\x19\x66\x05\xbd\xd9\xa9\x2b\xfc\x66\xef\x41\xaf\x75\x9d\x5a\x82\xe7\x34\xfb\xf2\x51\xdc\xf2\x4f\x4c\x59\x3e\x00\x7f\xe2\x74\x21\xf0\x84\xd2\xb5\xe5\x4e\x52\xb5\x43\xdb\x95\x3d\x7c\x01\x3e\x35\x69\xee\x9b\xd8\x54\xcd\x9f\xad\x37\xcd\xcc\x87\x66\xb0\xbc\xe1\x73\x1c\x68\xe1\xbc\xb6\x47\x39\x40\x34\xb6\x66\xde\x13\x74\xc3\x3b\xf6\xb1\x48\xe8\x88\xf7\xd2\xc8\xaa\x10\xec\x4f\x37\x62\x7d\x82\x3c\xf9\x18\xdc\xfc\x79\xa0\xcc\xb6\x73\x6a\xc3\xdf\xaa\x2b\x3f\x59\x6d\xd8\x9f\xe2\xbf\xfd\x79\xd8\xdd\x24\x3f\x1d\xd2\x1f\x0e\xf1\xe3\x13\x51\x34\xe7\xc8\xa0\x42\xa7\xd9\xc7\x81\xfb\x1b\xe8\x58\x9c\xc6\x85\x9d\xb2\x73\xa0\x93\x84\x88\x9f\x20\x34\xf4\x0c\x2c\x8a\x9e\x78\x1b\x7a\x50\x24\x3c\xc2\x33\x64\x1b\x13\x3d\x3e\x96\x4b\x7d\x1d\x48\x02\xa1\x95\xca\x5c\x98\xf6\x6f\x28\xbf\xa0\x72\x76\xa9\xcf\xef\x44\x56\x0f\x6b\x46\x82\x23\xe1\x41\xe9\x46\x10\x3a\xc0\xf7\x0e\xc5\x37\xa2\x69\x75\x83\x2b\x7f\x23\x28\xb8\x92\x86\x76\xa2\xd5\x86\x9d\x1a\x1d\x4a\xa6\xbf\x73\x9e\xb6\x4e\xc7\x8d\x58\x0f\xa4\x89\xc7\x11\x9a\xdf\xdd\xe0\x37\x07\xaa\xd6\x46\x1f\x78\xe7\x90\x20\x74\x26\xd8\xf9\x9d\xb4\xce\xfe\x4f\xd4\xaa\x99\x2e\x67\xc1\x33\x21\x5f\x87\x78\xad\xe0\x9b\xe3\xc1\x55\x39\xfc\x91\xf6\xf1\x09\x87\x2c\x2e\x50\xe2\x49\x7b\x15\xd7\xb9\xd3\x14\x72\x78\x6d\x3e\x9c\xf9\x43\x1b\x4a\x37\xb4\x02\xf2\xae\x6e\xff\x39\xca\xb9\x88\xe0\x7e\x9c\x20\xea\x08\xdc\x53\x58\xf5\x73\x1f\x28\x53\xe4\x76\xdf\x3b\x51\x48\x14\x2b\x81\xf0\x5f\xae\x78\x41\x6b\x3e\xee\xb4\xf7\xe6\xf3\x8c\x1b\x44\xad\x86\x5e\x32\x36\xb4\xcf\xa5\xac\x2b\x90\xde\x7b\xff\x32\x58\xf3\xf6\xbe\x21\x7b\x1d\x45\x24\x37\x4e\x66\x75\xc1\x0d\xf3\x16\x67\x41\x6a\x6c\x9d\x70\x72\x5b\x65\x44\x08\x95\x71\xf4\xbd\xa7\x4d\x79\x9d\xb3\x4c\x52\x9a\x31\xe6\x82\xc4\x24\xd0\xd8\xf4\x54\x28\x41\xe6\x51\xbf\xdd\xaf\x9e\x47\x4b\xdd\x18\x28\x8a\x0d\x6d\x9b\x2f\xba\x5e\xf3\x41\xb9\x80\x06\x81\x14\xcc\x4e\xeb\x34\x36\xb6\x67\xca\xfe\xd2\xd0\xf8\x52\x66\x89\x74\x98\x40\x8d\x26\x5c\xe4\xcb\x46\x0b\x12\x7f\x8d\xb8\x4b\x68\x76\xe6\xda\x88\x95\x30\xec\x28\xd7\xf0\x2b\x62\x25\xb3\xa1\xef\x45\x38\xfe\x7f\x61\x34\xa8\x96\x26\x09\x11\x94\x3c\xbd\x56\xa9\xd3\xd0\xf2\x11\x3b\x82\xa9\x75\x93\x10\x94\x2d\x0a\x48\x27\xec\x82\x44\xbd\xb8\x9f\xbe\xd0\x80\x8c\xb9\xdd\x81\xb7\xed\xb9\x46\x34\xd8\x23\xdb\xf4\x8b\x9a\x38\x47\x4f\x83\x47\x42\xb9\x91\xd1\x9a\x4a\x1b\x6c\xca\x49\x17\xbb\x41\x2d\xa6\x9a\x89\xc6\x2d\x6a\xae\xfc\x7f\x7b\x5d\xc2\x99\x11\x0b\xaf\xc9\x09\x42\x51\x77\x7f\x22\xcd\xef\x74\xa5\x0b\xbd\x58\x5f\x57\x46\xf0\xfc\xa9\x56\xd6\x19\x30\x62\xf4\xe6\x7d\xef\x93\x18\xfe\xcf\x66\x03\xf3\x45\x4b\x7d\xcb\x78\x60\x5d\xd6\x73\xec\x0f\xa9\xeb\xc5\x12\x5b\xfd\xc3\x8f\x30\x9e\x19\x3d\x90\xd7\x3f\x7e\x78\x48\x65\xdb\x29\xbb\x6e\xda\xf3\x83\x5a\xb1\x94\x08\x07\x66\x07\x8f\x64\xb7\x7c\x1d\x54\x2a\x9f\xc9\x5c\xd8\x4e\xa1\x79\x5c\x90\x81\xad\x9b\xbc\x7f\xf1\xde\xb5\xf5\x3e\xd8\xd9\xe5\x33\x31\xe8\x65\xee\x9e\x92\x2a\xef\xf9\x88\x81\x07\x3e\x46\xb9\x16\x4e\x48\x7b\x16\x9a\xcc\x85\xdf\x8b\xa1\x69\x9a\x52\x87\xfc\x07\x76\x3b\x8f\xeb\xfd\x89\x32\x1e\xd4\xae\x46\x25\xbf\xbb\xbe\x11\xc3\x38\xc2\x27\xcd\xc7\x7d\x33\x30\x84\x9d\x40\x06\xf8\x5b\x65\xb9\x93\x76\x2e\x07\x3f\xdc\xd2\xf3\x3a\xc0\x68\x71\x0d\x7d\xb9\x93\xe3\xab\x17\x5d\x59\xde\x2c\xd4\x96\x54\x4f\x1c\x5a\x88\xf6\x8f\xdd\x14\xcb\xdb\x08\x59\x3d\xd6\x64\x77\xc0\x75\x44\x0e\x0f\x1b\xa7\xe9\x6f\x39\x20\x9c\xa8\x53\xcd\x05\xbe\x04\xa0\xeb\xac\xea\x72\x26\x4c\xd4\xaa\x14\x17\x12\xf2\xeb\xd2\xf4\xdb\x96\x37\x27\x8b\x20\x11\xb5\x31\xd5\xf8\x11\xab\xcc\xd2\x8a\xb7\x60\xbb\xce\xef\x7c\x64\x63\x29\xe5\x3a\x38\x7a\x87\x73\x53\x24\x49\x22\x43\x1e\x99\x58\xc9\xdc\x3f\x4a\x44\x89\x41\x43\x41\x0f\x1a\x7c\x0b\xeb\xfe\x0d\x51\x28\xc9\x76\xb5\x83\x5e\x6c\x89\x83\x58\x72\x89\x63\xb3\x6c\x7c\x8c\x45\xee\x2d\x33\x6e\x62\xb2\xc4\x2e\x7d\x59\x78\x26\xb3\x27\x50\x1a\xba\xa6\x21\x9f\x59\xc8\xe4\x72\xd5\x3a\xd7\xf0\x23\x90\x6a\x22\x72\xb7\xb0\xe0\xfe\xdf\x88\x35\x08\xc7\x79\xd2\x8e\x45\xa2\x4e\xc0\x41\xaf\x3f\xc5\x31\x21\x26\x88\xf1\xbf\x8d\x0b\x4b\x14\x90\xa6\xd6\x70\x90\x52\xe6\xed\xe8\x5d\x8f\x9b\x26\x79\x9e\x20\x31\xf2\x5a\x79\x61\x4d\x1a\x3d\xf9\x7a\xb0\xa6\xb6\x91\x9a\x80\x8f\x23\xb1\xfe\x15\x07\x3d\x87\xdc\x8e\xde\xd2\xeb\xed\x6c\x72\xda\x5a\xed\xce\x2b\x27\xca\x04\x96\xe6\x79\xbc\xf5\x98\x67\x4e\x12\xd9\xcf\x51\x5f\xa8\x13\x76\xa9\xdd\x85\xa2\x6b\x3c\x3f\x3a\xa9\xee\x67\x5a\xd8\x4b\xed\xe0\x6f\xee\xfd\xd0\xe0\xb2\x8d\x76\x64\x42\x8a\x0d\x1a\xe8\xa5\xed\xab\xb7\xcc\x01\x38\xed\xbd\xc3\x34\xa5\x8e\x23\x3c\x4d\x75\xd3\x3a\x17\x69\xb3\xd4\x26\x9c\x8d\x36\x2f\x64\x13\x9c\x8a\x38\xba\x10\xaa\xd0\xf6\x8b\x40\xa6\xda\x1d\x9b\xdf\x8d\xc7\x31\xf5\xdb\xbb\x27\xb9\xbb\x04\x23\xec\x7c\x5c\x82\xf0\xf9\x6f\x86\xf6\xb6\xdc\x2d\x15\x7a\x58\x57\x05\xb0\x92\xe4\x75\xd2\xc5\x61\xa8\x7c\x9c\xe1\x4e\x2c\x64\xc6\x4a\x61\x16\x82\x41\x5f\xbd\xf4\x4b\x9d\x7a\x84\x92\xbc\xd3\xee\x44\xc8\xda\x05\x82\x11\x08\x97\x47\x0b\x6d\x50\x1a\xe8\x16\xe2\x97\x95\x1c\xb2\x81\xff\xab\x41\xbc\xfc\x6f\x56\x71\x69\xec\x94\xd1\x8a\x97\x59\x44\xcf\x77\x25\x06\x2c\x5d\x67\xca\x09\xb3\xed\xbd\x61\x22\x0f\x12\x13\xc8\x59\x45\x94\xaa\xe7\x5b\x81\xe2\x09\xbb\x5d\x6a\x2b\x12\xbc\xce\xe6\xb1\xea\xe0\x46\xac\x0f\x4e\x7a\xea\x86\x1e\x86\x1e\x5c\xa8\x83\x16\x42\x3f\x82\x76\x6d\x42\x19\x20\xfa\x3b\x00\x89\x07\x0f\x2b\x22\x4d\x08\x3c\x22\xaf\x17\x2f\xae\x92\x7d\xf8\x84\xdb\x1f\xf2\x8a\x89\x99\xb6\xc3\x97\x28\xa6\xcd\xff\x13\x43\x80\x5c\x2c\x8c\x80\xba\x43\x4c\xac\x43\xb2\xbd\x44\xe4\x73\xad\xc4\x4a\xa8\x82\x94\x72\x92\x36\xb4\xfe\xcc\x03\x80\xea\x1f\x5b\x09\xce\xff\xfb\x99\xbe\xd4\x2e\xbe\x10\xfc\x83\xfe\xdc\x8a\xfa\xe4\x4e\x96\x75\x89\x1d\xbf\x9c\xf3\x06\x4c\xce\x43\x47\x7d\xd2\x23\x14\x56\xec\xf4\x33\x7a\x29\x69\x70\xd6\xa4\xf6\x98\xe3\x66\x01\x1d\x24\xc3\x6b\x49\xbc\xc2\x8b\x42\xcf\x48\x84\x02\xa5\x54\xfe\xe3\xa7\xec\xb9\x36\x4c\xdc\xf1\xb2\x2a\xc4\x09\x3e\x99\x7c\x39\xf9\x97\x56\x94\x15\x08\x55\x0f\x27\x2c\x9e\xb4\x50\x66\xe4\x34\x7b\x7c\x42\xea\x55\x17\x5e\x72\x00\x97\xdc\x94\x01\xf5\xd2\xcf\x94\x87\xbd\xf0\x58\x65\xd9\xe3\xd3\xc7\xa7\x8f\x9e\xb0\x1f\x99\xff\xe0\xc7\xe1\x9f\x5f\x10\x44\xe2\x7f\xf9\x25\xfb\x91\xfd\xc8\x18\xbb\x82\xbf\x69\xff\x09\xff\x17\x04\xa9\x13\x26\xe7\xdd\xb5\x7c\xec\x37\x28\xd3\x65\x38\x4e\x94\x1d\xe2\xaa\xa5\x64\x0d\xb7\x08\xc0\xb0\x38\x7d\x52\xe4\x38\x13\x99\x2e\x05\xac\xe5\xe3\xff\x19\xa5\x02\x04\xde\x31\xad\x48\x22\x61\x3b\x8e\x60\x33\x8e\xd9\x2d\x30\x5a\x96\xfc\x06\x93\xe5\x67\x99\xab\x79\xe1\x97\xe4\xe8\x8b\xc9\x23\x0a\x40\x40\xab\xfe\x0f\xac\xa4\x2e\xb8\x13\x71\xa5\x8f\x1e\x93\xc0\x11\x9b\x9b\xf5\xc5\x28\x9b\xd5\xdb\x27\xbf\x9a\x00\x56\xf6\x13\xa7\xcc\xf1\x7d\x5a\x35\x2a\xd4\x33\xb5\xbe\xe5\xeb\x04\xb5\x1a\x9b\xe7\x2f\xe4\x4a\xb0\xa5\x5c\x2c\xa1\x5b\x4e\xa4\x4e\xa0\xbd\x95\x04\x9d\x27\x63\x9b\x30\x9c\xf8\x9a\x49\x37\x65\x17\xee\x90\x44\x7b\xcc\x9b\x8c\x62\xa0\xb1\x69\xaa\x4f\xa9\x68\x09\x7f\x3d\x41\x2b\x3f\x8a\x68\x9e\x80\xe0\x1d\xdc\xa1\x70\x44\x08\xca\x97\x43\x75\x59\xe7\x2d\x32\x19\x74\xd6\x48\x8a\xf6\x96\xe6\x0c\xeb\x39\x12\x03\x83\xd6\xb7\x53\x76\xa9\xf3\x78\x12\x96\x7c\x45\x02\x3e\x87\xd4\x65\xb0\x2a\xd2\x36\x79\x6e\x09\x04\x3d\x19\xc9\xa0\x76\x80\xda\x99\x86\x26\xa8\x06\xef\xc2\x4c\x04\x23\x4e\x31\x55\x1c\x9a\xc4\x85\xd7\x6f\xf6\x5d\x2b\x9b\xd6\x71\x86\x61\x6d\x02\x4e\xf6\xcf\xd8\x2a\xef\x60\x56\x67\x37\xc2\x1d\x50\x2d\xb4\x33\xd0\x9e\xb5\xaa\x1d\x9b\xf1\x82\xab\x4c\xe4\x63\xbc\x68\x3a\x8d\x55\xba\x38\x3b\xb8\xea\xb6\x73\x6f\x09\x32\x89\x84\x55\x09\x8e\xfb\x96\xa6\x4d\x75\xe1\xbf\xdb\x14\x98\x44\xd2\x1f\x00\x1b\xb9\xe0\x45\x2c\xfd\xaa\x74\xde\xe9\xf2\xa7\x0e\x0f\x29\x81\x53\xd4\xd0\xe0\xb1\xa1\xb3\xd5\xc2\x6d\xa6\x6c\x42\x10\xd9\xf3\xfb\xd9\x51\x64\xbd\x60\x4e\x14\x05\x35\x8e\xb1\x0d\xd0\xc8\xab\x6b\xa7\x9b\xbf\x00\xd3\x42\x99\x65\xdf\x8e\xb6\x93\x6b\x7f\x8a\x66\x02\x9b\x89\xc5\x92\x42\xef\xa7\xab\x75\x43\xd0\x7f\xe2\xdd\xb0\x9a\xb2\x55\x0b\xb9\xf2\x0e\xca\x96\xa9\xee\x1b\x5e\xca\xac\xbd\x82\x46\xd7\x6d\x29\x8a\x8a\x19\x91\xd7\x19\x7e\x00\x63\xf6\x46\xdc\x52\xfc\x97\xb3\xce\x39\x62\x50\xb4\xd0\x28\xda\x83\xde\xb5\xa0\x90\x9e\xcf\xb5\x61\x5c\xf5\x9c\x36\x7f\x15\xbc\x5d\xd0\xb4\x88\x56\xce\x99\x58\x09\xb3\x66\x95\xb6\x56\xfa\xdb\x0a\x96\x0c\x58\x03\x88\xf9\xa6\xa6\x05\x16\x54\x83\xc3\xf2\x46\xf7\xf5\x20\x38\x9f\x94\x6f\xd7\x8a\x59\xdd\x33\x35\x1b\x61\x21\xc9\xcc\x62\x20\xf9\xbe\xb0\x90\x76\x15\x30\x90\xfc\xb8\x61\xe1\x97\x3e\x94\x19\x3b\x2c\xbc\x82\xff\xb7\x15\x1e\x12\xa4\x5e\xcc\xd9\x0e\x3b\xd0\x84\xda\x3d\x55\x49\x72\xe5\xbb\x37\x60\x67\xc4\x48\xdb\x3a\x58\x45\x08\xba\xbe\x3c\x46\xc7\x08\x02\xc7\x2f\x4f\xbf\x38\x7d\x7c\xe4\xd7\xfc\x0b\x4a\x34\xc7\x6d\x3f\x24\x7c\x7c\x1c\x03\xbc\xf8\x5b\x64\x0b\xe6\x43\x8e\x4e\x50\xc8\x2e\x14\xe2\x8b\xd9\xad\x36\xb9\xa5\x2c\x2d\x20\x4f\x03\x37\x84\x5f\x59\xeb\x42\x71\xbb\x2c\xa3\xef\x44\x11\x3b\xab\x5d\xc7\x9a\xdd\x6a\x6f\xb7\x31\x62\x96\x8e\xfd\xa6\xd4\x46\xfc\x86\x72\x0e\x9a\x39\x85\x40\x6b\x3b\x6c\xa2\xc6\x36\x83\xbd\xa9\xbb\x49\x87\x7d\xb5\x90\xd6\x4d\x4a\x5e\x4d\x6e\xc4\x7a\x50\x3e\x96\x0a\xb6\x4c\x83\x5a\x6e\xcf\x1d\x17\xa1\xe4\xd5\xcf\x96\xb2\xd2\x45\x5d\x0e\x4b\x3e\xf7\x3d\xc7\x17\x01\x7e\x16\x04\x05\x20\x12\x64\x18\x06\xed\x61\x89\xb0\x47\x36\x5b\x77\x59\x7a\x66\xa2\xd0\x6a\x81\x98\xc3\xc1\xde\xd8\x00\x22\xba\x4c\xab\x4c\x54\xce\x9e\x5a\xa7\x0d\x5f\x88\xd3\xf0\x39\xc3\xf9\x6c\x3e\x35\xda\xfa\x2d\x4c\xb4\x57\x45\x88\xcc\xbc\x03\x6f\x10\x7e\x70\x43\x00\x85\xfb\x18\x92\xef\x3c\x03\x1e\x88\xa1\x22\x67\xeb\x7e\x2f\x90\x0e\x77\xc5\x03\x07\x5c\x0f\x26\xbe\xa1\x43\xb1\xf8\xad\x3d\x2f\xb8\x75\x32\xfb\x4b\xa1\xb3\x9b\x6b\xa7\x4d\x72\x34\x77\xf6\xdd\xf5\x96\x4c\x82\x9e\xee\x9e\x29\xc5\xce\xbe\xbb\x66\xcf\xa4\xbd\x61\x46\x58\x5d\x1b\x5a\xd6\x0d\x9a\xd1\xdb\x1e\x5d\x02\x6f\xfa\x8c\x91\x32\x6e\xd0\x3a\xaa\xe4\xd9\x52\x2a\x11\x5f\x2f\x14\x13\x77\x95\xc6\x94\x21\xd1\x98\x8e\xa0\x3b\x7e\xc5\x6f\xad\xc0\x6d\x98\xf9\x6d\xf0\xff\xb3\xa0\x1a\xb6\x7b\xe8\xaf\x81\x9f\x71\xf1\x6c\xf0\x7f\x9a\x86\x4b\x9c\xdb\x37\xc4\x46\x6a\x9b\xd7\xe0\xb9\x2c\x04\x56\xeb\xd1\x1b\x91\x36\x5d\xda\x83\x7e\x84\x13\xbc\xd6\x35\xbb\xe5\xe4\x77\x7d\xa7\xd1\xda\x4d\xd9\x1b\x59\x3d\x61\xe7\xca\xd6\x46\x34\x60\x47\xf2\xbb\x7e\xef\x63\xc1\x6f\x8f\x6d\x77\x88\x22\x43\x45\x13\xdc\x30\x84\x08\x78\x43\x4c\xad\x7f\xc4\x71\x8e\xa1\x9f\x7d\xc2\x0e\xc4\x9d\xfb\xdd\xc1\x09\x3b\xb8\x9b\x5b\xff\x0f\xe5\xe6\x96\xd4\xb4\xcf\x8f\x8b\xb2\x2a\x64\x26\x5d\xb1\xf6\xf7\x55\x98\x36\x45\x8a\x3f\x43\x45\x36\x6c\xb6\xbe\x1f\x5f\x21\x10\x67\xf6\xe6\xd5\xb3\x57\x4f\x20\xd1\x96\x6b\x76\x0b\x1d\x26\x57\x42\x39\x26\x8c\xd1\x03\x59\x38\x3b\x9f\xab\x02\x03\x62\x73\x94\x80\x67\x31\xd3\x65\x65\x74\x29\x2d\x1d\x84\x85\xcf\xe2\xa0\xa4\x87\x6b\x40\x96\x8e\x71\x82\xd2\x7b\x50\x0b\x23\xe8\x15\x60\x0d\x8a\x02\xa9\xd4\xe5\xec\xbd\x5a\x85\x8e\xb3\x0d\x5a\xe5\x62\xce\x34\x02\x0f\x7a\x4c\x69\x74\x74\x4f\x54\x58\x5e\x23\x84\x19\xab\xc1\x74\xdc\xed\x68\x75\xc0\x73\x6d\xa2\xc0\xd3\x5c\xac\x4e\x6d\xce\x1f\x53\xc1\xbb\x7e\xf9\xf0\xaa\xa2\xda\x6a\x77\x88\x53\xef\xc3\xc1\xe3\x83\x29\xbb\x96\xa5\x2c\xb8\x29\xd6\x27\xdd\x1d\x6b\xa4\x53\xd5\xb5\x36\xcd\x27\x03\x80\xea\xd1\x01\x3b\x42\x12\x32\x2a\x62\x8a\x2b\x56\x08\xbe\x12\x91\xbb\x0d\x9a\x22\x21\x2a\xf3\x98\x10\x50\xb3\xe4\x07\x43\x96\xf8\x68\xc8\xc0\x81\xe1\xf9\x2b\x55\x10\x8b\x14\x36\x78\x74\xc3\xe9\x38\x70\xa6\x16\x07\xf4\x6b\x36\xd7\x26\x43\x5f\x13\x32\x63\x4b\xc1\x5e\x87\x59\xa6\xf6\xa2\x92\x2a\xc4\x73\x2f\xfd\x75\x83\x8b\x87\x93\x4d\x40\x15\xef\x52\x05\x70\xe2\x80\xb1\x95\x6c\x71\x1f\x84\x6f\xcc\xc8\x34\xb2\xed\x88\x6e\xee\x18\x27\xec\x5b\x25\xff\x59\x0b\x76\xf1\x8c\xc2\x4a\xde\x8e\x4a\x18\x2b\xad\xf3\xf6\x3c\xef\x46\x5c\x74\x5b\xe3\x83\xb7\xa3\xb3\x92\xff\x4b\x2b\x76\xfe\x97\xeb\xf0\xd1\xc7\xe8\xd1\x90\x0f\xeb\x43\xd9\x7c\x92\x5b\xc0\xff\x55\x1b\xe1\x03\xda\xc4\x68\xfb\x2c\xca\x49\xab\xbd\xf1\x11\xb6\x97\xc4\x9e\x71\xc7\x31\xd0\x46\x9b\xab\xa9\x6f\xfc\xe0\xb7\x7b\x2d\x35\x83\xfa\xe5\xd8\xda\x81\xdc\xd1\xf3\xde\x02\x51\x7f\x07\x48\x5d\x93\xf0\x3f\xfd\xf6\xf5\xc5\x27\x0e\x61\x33\xf0\x74\x17\x2f\x75\x3e\x4a\x1c\xfb\x57\xbf\x91\x4f\x51\x26\x2b\xc9\x42\x19\xbb\xd4\x4a\x9c\x80\xb1\x62\xde\x5a\x85\x7f\xfd\xce\x48\x37\x8c\xb9\xbb\x1d\x89\x6e\x79\xdc\xd9\x11\x56\xc9\x3b\xe5\x97\x9d\x9e\x26\x39\x77\xd4\xda\x03\xd0\xb9\x21\x16\x9a\x15\x7a\xc6\x82\xfe\xba\xaf\x15\xfa\xf6\xf5\xc5\x48\x0b\xf4\xed\xeb\x8b\x5f\xd2\xe2\x8c\x96\x2a\xda\xc8\x14\x25\x47\x60\x2f\x43\x49\x14\xef\xc4\xd2\xd4\x28\xd1\xcf\xa7\x6d\xa0\xbc\x33\x27\x43\x14\x1d\x32\x39\xec\xfc\x6e\xfa\x39\x66\x63\xee\xe3\xc4\xdd\x48\x45\xac\x15\xef\xab\xf4\xf3\xc0\x58\x9d\x56\x85\x07\xad\x20\xf2\x27\xac\xac\x0b\x07\x04\xc1\x70\x21\xfd\x0d\xa5\x4a\xac\x84\x89\x17\x9a\x85\x66\x4b\x8c\x3d\x13\x08\x05\x23\x57\xc9\x87\xd2\xab\x66\x76\xdd\x9f\x21\x8a\x6c\x26\xf7\x92\x2b\xbe\xf0\x8b\x00\xfe\x1c\x2b\xf1\x8f\x54\xe5\xe6\x7d\x2f\x98\xe1\x11\x60\x13\xa4\x8a\x02\x19\x5f\x71\x59\xf0\x99\x2c\x24\x39\xba\xb3\xc2\x1d\x4f\x63\x08\x06\xc1\x1d\x34\x8a\xc9\xef\xc5\xf4\x8e\x18\x58\x77\x79\x3d\x21\xa8\x24\xae\xcf\x91\x9f\xd3\xe9\xad\x77\x47\x8e\xa7\x6d\x4c\xbd\x14\xe4\x10\x05\x88\xbe\x30\x5c\xef\x85\xe9\x94\x1e\x4c\xed\xd8\x88\xd2\x53\x14\x11\x2d\x6c\x85\xa3\xee\x6d\xd6\x18\xa1\x8b\x97\x33\x52\xe8\x02\xa2\x42\x73\xa8\x7d\xf4\x02\x63\xc2\xac\xc8\x8c\x70\xc4\xf8\x05\x14\x04\xe9\xbf\x4d\x8b\x60\xf6\xda\xe1\xf3\xd5\x0e\x0c\x4c\x4d\x3c\x74\x23\xec\x60\xb7\xeb\x30\x0a\x26\xbf\x78\x74\x49\x8a\x50\x67\x5c\x27\xb9\x01\xb1\x65\x25\x44\x7e\x5e\x5b\x0c\x25\xbb\x6b\xa6\x96\x66\x4d\x9b\x7b\x3a\xc2\x72\x63\xbb\x37\x72\x9b\xe8\x84\x2f\xc9\x44\xb5\x9c\xa7\xb2\x42\x3f\x15\xd5\xf2\xf9\x75\x1f\x90\xe4\xff\x8e\xf0\x31\xcf\xaf\x7b\x56\x04\x6d\x02\xd6\x6a\xf9\x35\xa2\x15\x68\x61\x9b\x92\x42\xce\x85\x93\x84\x25\xbe\x37\x3b\x52\x6a\x25\x1d\xe5\x6d\x37\x91\xfd\x2e\xfc\xec\x18\x51\xcf\xeb\xf8\xf9\xec\x25\xf5\x63\x70\x00\x67\x5a\xa6\x8b\x42\x64\xf0\xc2\xa7\xe7\x70\xc4\xe8\x6b\x84\x63\xc7\x9b\x46\x80\xaa\xdb\xe9\xcd\x1f\x20\xb1\x1d\x52\xd8\xa7\x78\x55\x4e\x5f\x9f\x9f\x3d\x7b\x79\x3e\x2d\xf3\x5f\x2d\xf5\xed\xc4\xe9\x49\x6d\xc5\x44\xba\x14\x8f\xfe\x9e\x88\xee\x92\x1f\xd8\xdd\x72\x8c\x23\xd2\xf6\x21\xfc\xd6\x02\x7d\x77\x0a\xe0\x20\x40\x4a\x8d\xd6\xee\xa4\xdb\xef\x36\x41\xe6\xbc\x2e\x0a\x3c\x6b\xce\x08\x71\x92\xfe\xb6\x3e\xa8\x97\x71\x67\x2e\x0f\x26\xfa\x3b\xdc\x6a\x1d\x49\xde\xb3\xe0\x20\xbe\xc7\xd5\x23\x4a\xf5\x0e\xe2\xfb\x5c\x3d\x7a\x20\xef\x42\x2f\xb6\x9e\xab\x37\xde\x6b\xda\xa7\x57\x3b\xa9\xbe\x26\x2d\x1c\x65\x3f\x71\x9a\xae\x1b\xb9\x09\xc8\x15\x00\x82\xb8\xa5\x3f\x5b\x37\x62\xcd\x80\xa0\x6c\x4e\x66\xba\xf9\xd6\x0a\x73\xd2\x7d\x44\x3f\x15\x2e\x83\x4d\x39\xad\xad\x30\xd3\x24\xef\xf8\x41\x58\x1f\xba\x07\x0c\x9f\xfe\x5a\xcc\x3f\xc6\x21\x78\x2d\xa8\xe8\x07\xa0\x11\x0b\xdc\x2b\x31\x7f\xc0\x6b\xb7\xc4\x7a\xec\x04\x00\x0f\x7e\x2f\xe0\x78\x36\x4f\x05\x51\x62\xe0\x4f\x7b\x10\xc7\x20\x81\xdb\x28\x9d\x95\x54\x91\xe3\x28\xb6\x75\x92\x3a\x4f\x82\x64\x89\x2c\x1e\x21\x37\x18\x01\xaa\x57\xc2\xac\xa4\xb8\x3d\xbd\xd5\xe6\x46\xaa\xc5\xe4\x56\xba\xe5\x04\x57\xd7\x9e\x42\x77\xdf\xd3\x5f\xc1\x3f\x12\x66\x87\x58\xd0\xb3\x3c\x0f\x55\x64\xb5\x15\xf3\xba\xc0\x4a\xaa\x24\x1e\x46\x5e\xc9\xb7\xc2\x58\x28\x04\xbe\x91\x2a\x3f\x61\xb5\xcc\xbf\xa2\x9d\x2b\x96\xae\x62\xbc\x8a\x1d\xdd\xc7\x34\xf4\x0b\x0b\x5d\xf9\x79\xae\x81\x9e\xc4\xc0\xb1\x1d\xc1\x21\xe4\x79\x29\xd5\xc3\xd0\x02\xb4\x24\x82\x54\x39\x65\x9f\xfa\x7b\xf4\x14\xa4\xa4\x36\x47\xc3\xb9\x44\xcc\x66\x53\x75\xc2\x63\x46\x99\xf4\x50\xa4\x55\xac\x58\xb1\xbd\xea\x93\xae\x72\xa0\x24\xbc\xdf\xb3\xcd\xe5\xda\xfe\xb3\x98\xe0\x97\x4c\xaa\xbc\xdd\xe7\x7d\x29\xc9\x87\xc6\x43\x2b\x25\x69\x0b\x3f\x3e\x37\x80\xc0\xee\xa2\x0d\xa2\xd8\x00\x2e\xd8\x05\x13\xa0\x2f\x6c\x03\x2e\x18\x05\x26\xf0\xb3\xbc\xf1\x11\x6f\x26\xdb\x87\xf4\x03\xc6\x2f\x22\xa4\xff\x28\xa7\x27\x35\x8a\x1f\x3d\x7e\xab\xb4\xa4\xd3\xb4\x42\x75\x68\x08\xb4\xd0\x6a\xc5\xd7\x23\xba\x4e\xab\xb8\xe1\xa5\x70\xc2\xb4\xa4\x72\x99\x56\x0a\xbb\x37\x13\x65\xbe\xaa\x84\xba\x76\x3c\xbb\x49\x42\x51\xee\x63\xae\xde\xd8\xc7\x5c\x0f\x21\xe6\x1a\xb3\x3a\x22\x52\x0c\xe4\xf1\xe6\x51\xf5\x2a\xb0\xe9\x85\x32\xaf\x96\xb7\x00\x55\xe9\xbf\x85\xbd\xcf\xb4\x9a\xcb\xc5\x4b\x5e\xa5\xbe\xd5\x46\x39\x89\x00\xa0\x76\x42\xf1\x79\x16\x18\xa4\x2a\x5d\xd5\x05\xb5\xcd\xac\xb4\x61\x6f\x3f\x6d\x98\x93\xa6\x4a\x43\xf4\x3f\x16\xf2\xbf\xb5\xa3\xa5\xce\x05\x9b\x49\xb2\x29\x8d\xb6\xce\x0a\x87\xbc\xd4\xc8\x27\xef\x83\xd9\x0c\x5b\xe5\x12\x05\x43\xfc\xe2\xa3\x8e\xf0\xe9\x9d\xd8\x86\x9a\x5a\xd5\x99\xe3\xa1\xcf\x7b\x43\x7e\xfd\xe8\xd1\xa3\x47\x44\x1e\x49\x3f\x1e\xfd\xe7\x7f\xfe\x27\xd3\x86\x71\x96\x8b\x4c\x96\x9b\xe2\xa9\x52\x21\x93\xf0\x1f\x8f\x1f\x4f\xd9\xdf\xce\x5e\xbe\x00\x9e\x94\xca\x59\x36\xd3\x8e\x02\x77\x60\xcd\xb7\x7b\xb1\xbd\x89\xda\x13\xf6\xff\x5c\xbf\xba\x24\x0a\x0d\xa1\xbb\xdd\x90\x99\xf0\x10\xd2\x1c\xc7\x69\x0f\xdf\xf5\xe8\xf7\xbf\xfb\x1d\x55\x01\x3f\x93\x06\x18\xd6\xa4\x40\x02\xb6\x48\x16\xc3\xc9\x6b\xc9\x8d\x40\xc2\x5c\x68\xf9\x1d\x63\x63\x24\x34\x73\xa4\x16\xbc\x38\xde\x78\x19\xa5\x5c\x2c\x5d\xe0\x60\xf5\xda\xaf\x90\x99\x83\x79\x53\x37\x1e\xdc\x08\x0d\x17\x3e\xb0\x28\xe1\xbc\x13\x39\x21\x60\xab\x4e\x58\x21\x6f\x04\x9b\xdb\xaf\x8d\xae\x2b\x2a\x21\x2b\x8b\x39\x4f\x61\xeb\x22\x92\x3c\x85\x89\xfb\x5f\x21\x8a\xf4\xc7\xc8\x6f\xc9\x67\x5b\xa3\x9c\x80\xbb\xe8\xa9\xfb\x8b\x5e\xe2\xe2\x84\xca\xc4\xcb\xb0\xad\xdb\x04\x35\x5c\xc5\x65\x43\xbc\x04\xa5\x85\xe0\xa2\x52\x0f\xe9\x3c\x1c\x80\xf0\xa2\x96\xb7\x1e\x04\x51\x62\xe8\xf0\xee\xcd\xee\x7f\xe3\x25\x05\x86\xde\xd6\xb3\xa3\xde\x7d\x1b\x72\x6b\xa1\x61\x0a\xe0\x17\x93\x9a\xd3\x45\x2e\x67\x1f\x81\x86\xbe\x8d\x4d\xaf\x13\x72\xa1\xcc\x9c\x75\xf6\xdb\x8b\x2b\xa4\xf5\x8b\x70\x23\xd6\x54\x4b\xff\x13\x2b\xda\xfc\x16\x39\x76\x76\x4b\x8b\x3c\x99\xb5\xea\xcc\x14\x7e\x93\x1a\x78\x6a\x87\xb3\x05\xef\x13\xc8\x2b\x78\xe8\x24\x48\x4d\xe5\xc4\xaf\x0c\x6d\x44\x02\x6d\x7a\xf8\x05\x72\x2e\x07\x56\xb0\x39\xee\x27\xe9\x47\xd4\x0a\x57\x57\xb8\x5d\xc0\xda\xe2\xd7\x54\x58\x8b\x8c\xf7\x54\xbb\xcc\xcd\x8d\xc8\x83\x19\xe1\xc5\x94\x5d\xf9\x2d\x83\x16\x5d\x54\xed\x2c\x42\x13\xc0\x15\x02\x6c\x4b\xbe\x86\xe5\x0c\x89\x98\x04\x33\x72\x38\x9d\x1e\x22\x38\x43\x1b\x66\x1d\x37\x49\xf6\xd3\x4b\xfb\xdc\xfb\xcb\xbe\xe4\x95\xc5\x4e\x65\x52\x2d\x12\x7a\x3c\x85\xcc\x19\xac\x6d\x70\xa5\x78\x38\xab\xff\xb6\xbd\x56\x13\xfc\xc8\x87\xd6\x67\xf5\x4d\xe8\xa0\x9b\xd8\x8f\x33\x18\x88\x7b\xef\x6b\x99\x52\xd1\xce\xde\x1f\x32\x27\xad\x4d\x13\xdf\x74\x03\xe7\xb4\xd5\xee\x07\xdd\x10\x87\x78\xff\x24\xad\x4f\x66\x1b\x6b\x77\xa3\xe6\x24\x91\x9b\x11\x37\xc4\xce\x49\x12\x47\x8f\xbb\x71\xbc\x27\xfa\x4e\xfb\x78\xed\xcd\xd1\x66\x0c\x9e\x24\xb2\x1b\xbf\x37\x91\x78\x92\xc4\xed\x28\x3e\x25\xfc\xc2\x81\xb1\xfc\xc5\x1c\x6c\x7b\xeb\x93\x26\xc9\xec\xa4\x67\x3b\x79\xb1\x24\x91\xd1\xb9\xf5\xb7\x72\xda\x09\xc4\x13\x4f\xfc\x56\x10\x8f\x51\x6d\xda\xa9\x1f\x35\x94\xc7\xf1\xbe\x80\x3e\x49\x68\x6c\xf9\xd6\x0b\xeb\xd3\x3e\xbd\x49\x09\xa4\x06\xf7\x38\xd2\x43\x7c\x1c\xa9\x81\x3e\x0e\x7a\xa9\x03\x8e\x2d\x5b\x1e\xfd\xeb\x34\xfb\x02\x8e\xf4\xbc\x21\x70\x04\xb0\x09\x39\x2c\xc7\xe1\x1a\x47\x63\xca\x5e\x06\xbf\x3f\xf1\x68\x70\xc5\xf8\xcc\xea\xa2\x76\x98\xda\x03\xc1\x49\x12\x3b\xc1\x48\x0b\xf7\x4e\x6b\xbc\x8a\x03\x22\x8a\xe6\xbb\x93\x03\x14\x1c\x10\x86\xa3\x7f\x4f\x8f\x58\x82\xa8\x34\xe7\x8b\xfe\xe2\xfb\xde\xd7\xde\xf6\xcd\x76\xbc\x47\xb8\x7b\x7d\xe9\xfd\x28\xaf\xbc\x63\xbe\xf0\x26\x9e\x01\x9d\xe4\x2c\xf7\xab\x56\x03\xb9\xe2\xed\x52\x84\x3a\x2b\xaa\xa2\x68\x1f\x25\xb5\x61\xde\x7c\x40\x8a\x29\x74\x19\x27\x87\xd9\x73\xa9\x88\x79\xaf\x14\x64\x4d\x66\x65\xea\x13\xed\xf5\x05\x3b\x7a\xda\x50\xe8\xd3\xcb\xa5\x2f\x94\x13\x66\xce\x33\x71\xdc\x45\xd5\x8a\x6a\x29\x4a\x61\x48\x3e\x6e\x24\x8a\x89\xac\xee\x4b\xae\xf2\x22\xb4\x70\x10\x86\x98\x1d\x12\x77\x4e\x18\xc5\x0b\xf8\xf0\xdc\xc8\x95\x30\x96\x1d\xfd\x45\x38\xce\xe6\x82\xbb\xda\x08\x42\x17\xcd\xfb\xa3\xae\x83\x0f\xf8\xd4\x8f\xd0\xf0\xa3\x63\x50\x37\x80\xa0\x98\xe9\x1e\xdc\x14\xa1\x1d\xc1\x3c\xb4\x5b\x1a\xfb\x2c\xfa\x03\x43\x87\xdf\x37\x10\x81\xa9\x57\x1a\xe0\xbd\x82\xf3\xbe\xd6\x35\xd5\x4d\x44\xf4\x3d\x76\xc3\x12\x2c\xd3\xc6\x78\xbf\x1d\x5e\x0f\xc8\xb5\xa8\x46\x2c\xa4\x75\xd0\x4d\x2c\xf8\x28\xa1\x55\xcf\xbd\x50\x58\x3d\x58\xd2\xb4\xf1\x69\xc8\xe6\x21\xf1\xaf\x57\x32\x8f\x0f\x2c\x50\x65\x95\x94\x26\x91\x96\x55\xdc\x86\xb4\x10\xd4\x93\x59\xab\x33\x99\x80\xa1\xe8\xdc\x0b\x7c\xb2\x80\x30\x37\x17\x4e\x98\x52\x92\x3a\x66\xb3\xe0\x6a\xc6\xa2\xb4\x6e\x77\x00\xcd\x78\x55\x15\xeb\x7b\x39\x7c\x4a\xe7\xe2\xaa\x9e\x15\xd2\x2e\xaf\x47\x04\x9c\x5e\xee\x10\x4b\xdf\x5d\xbe\x5d\x32\x98\x54\xd8\xb9\x05\x5d\x65\x56\x28\x2b\x13\x42\x3e\xef\x22\xfb\x50\x56\x6a\x05\x2d\x52\xb9\xb5\x71\xa6\x4f\xaf\x87\xb3\x9d\xe2\x88\x9a\x59\x03\xe1\x7f\x21\x9c\x68\x94\x76\x67\x7d\xdf\x26\xbd\xca\xaa\x1c\x64\x7d\xab\xaa\xae\x34\x96\xf1\xa2\x20\xfb\xd3\x6f\x30\x95\x2a\x8a\xdc\x6f\x5e\x74\x69\xf1\x99\x92\x95\xe4\xe8\x72\x16\x75\x85\xf4\x6a\x24\xc2\x90\xa1\x9e\x14\xfd\x81\x04\xb5\xd4\x1e\xa9\x8d\xc3\x41\x7e\xf7\xd3\xd8\x41\x44\x31\xad\xa2\xe8\x13\xc6\x8b\x22\xed\xe4\x36\xf7\x00\xfb\x0f\xa3\xda\x4b\x51\x1c\x7b\x8c\x73\x6f\xec\x31\xce\x0f\x01\xe3\x3c\x62\xe5\xcc\x75\xc8\x9c\xa3\x11\xe1\xf9\x84\xd8\xe1\x95\x35\x20\xdf\xda\xa0\x9a\x8f\x2e\x69\xda\x33\xee\x16\x19\x5b\xbf\x30\xe7\x93\xc7\xc7\xac\x81\x98\x9f\x39\x67\xe4\xac\x76\xd4\xeb\xbd\xa3\x29\x5e\x2b\x92\x8a\xd0\x70\x1a\x50\x93\x60\x18\x27\xe1\x55\x24\xeb\x68\x22\xb2\x67\xc6\x5d\x47\xa1\x76\x4c\x77\xf8\x2d\xea\xf6\xc6\x28\xc8\x07\x40\x41\xd4\xa1\x65\xb9\xce\xea\x52\x28\x97\x42\x77\xe0\x8f\x5f\x5b\x64\x88\x2f\x4f\xf7\x64\x08\x78\x9e\x4b\xb4\xf1\x57\xc9\x26\x21\x41\x73\xe4\xfa\x56\xdd\x72\x93\x9f\x5d\x11\xd8\xb9\xfb\x61\x76\x2b\x29\x0d\x87\x1f\xa7\xc4\xbc\x24\x3e\xd3\xb5\x6b\x1a\x7b\xfb\x23\x47\x49\xf1\xf4\x81\xfc\x7b\x58\xfe\xc8\xb0\x7c\xa7\xbd\x55\xed\xa0\xf0\xb7\xf1\xf4\xd4\x54\x7a\x53\x61\xbc\x2f\x22\xd8\x17\x11\xec\x8b\x08\xf6\x45\x04\x09\x77\x73\x5f\x44\xf0\xc1\xf1\x60\x8a\x08\xbc\x1c\xcc\x62\x15\xd8\x9a\x9b\x9a\x0e\xea\x3a\x13\x01\xc6\x33\xa7\x92\xb1\x3d\x1c\x8c\x6d\xc7\xd9\xc2\x28\x21\x81\x60\xae\xd7\x22\xb9\x9f\x93\x23\x4b\x44\x43\xda\xc2\x38\x92\x0b\xde\x9b\x7e\xc6\x49\x95\x1f\x0f\x02\xff\x7b\xcf\x18\x5e\x58\x3f\x72\xc2\x1a\xc7\x7b\x08\x71\x93\x30\x25\xd7\xa2\x10\x99\xc3\x82\x17\x51\xe4\xe9\x69\x29\x68\x9d\xff\x84\x41\x0b\x0c\xae\x94\xc6\xc8\xd1\xa6\xc1\xcc\x0a\x3e\x13\x85\x3d\x09\x6f\x69\x2a\x87\x7f\xb1\x15\x27\x35\x12\x6f\x87\xb7\xcf\x4d\x60\x3a\x02\xca\x2c\xe9\x88\xb3\x11\x8e\x39\x83\xa3\x0e\x3b\x79\x45\x3f\xef\x6c\xa4\x33\xcf\x7a\xe9\xba\x34\x39\x9b\x49\x1a\x94\x99\x28\xb2\x79\x5c\xb6\xd9\x52\x94\x3c\xf9\xe4\xfb\xf1\x3c\x2e\xbe\xb7\xa3\xb7\x46\x3a\x97\x08\x55\x66\xa1\x82\x48\x98\xd2\x32\x3d\x6f\x58\xe2\xd2\x70\xc0\x0c\x03\xc8\x83\xd5\x63\xf2\x13\x69\x23\x66\x0c\x20\x3f\x8b\x3a\xf2\x2a\x11\x21\xc9\x36\x8f\xca\x15\x82\x1b\xd3\x57\x0b\xac\xaa\xd7\x91\x10\xc5\x16\x69\x37\x1d\x47\x08\x31\xda\xaa\xb3\xb3\x2b\xea\x0b\x5c\x3b\x56\x78\x37\x1e\xc4\xb6\xfe\x7b\xd7\x67\xa4\x19\xbd\x72\x5f\x9f\xb1\xaf\xcf\xd8\xd7\x67\xec\xeb\x33\x12\xc6\xbe\x3e\x63\xd8\x18\xb5\x3e\x63\xa4\x10\x2d\x3a\x93\x61\x23\xc7\xaa\xf7\x50\x1d\xec\x3d\x39\x37\x13\x07\x92\x68\x86\x44\x7e\xc8\xc0\x2b\x9d\x7c\x75\x9b\x72\x0f\x6d\x12\x8b\xc6\xc3\x34\x97\x82\x1d\x1e\x4e\xa7\x87\x87\xb1\x80\x84\x5e\xdc\xde\x4c\xb2\x76\xf3\xc9\x1f\x98\x50\x99\xce\x51\x71\xa5\xea\x01\x63\x1d\x24\xad\xda\xca\x88\xb1\xf6\xbc\x0c\xfb\x32\x56\x45\x0a\xae\x65\xfa\xf5\x4f\xf4\x32\x63\x8f\xfb\xe7\xa3\x27\x59\x9a\xf4\x48\xd2\x32\x35\x3d\xf8\xc3\x86\x66\x11\x92\x9f\xa6\x18\x20\xc7\x12\x65\x5b\x56\xc8\x92\xfe\x3c\x87\xc3\x9b\x0b\xef\xc6\x08\xeb\x2c\x3b\x42\x81\xd3\xac\xaa\x13\xb3\x37\x28\xa7\x14\xa5\x36\xeb\x93\xe6\x07\xbc\xe0\xd1\x66\x1b\xa4\x1f\x33\x4e\xa6\x5c\xc5\x91\xd5\xc6\x08\xe5\x8a\xf5\x2f\x31\x33\x14\x0f\xcb\x03\x48\x0c\x35\x77\x80\xde\xf9\xae\x1d\x1b\xfc\xef\x51\x74\x72\x28\x0d\xa8\xbf\x66\xed\x13\x9e\x2b\xdb\x11\x98\xf7\x4f\x1a\xb0\x69\xb2\x44\x1f\x23\x08\xb5\x62\x2b\x6e\x6c\xca\x49\x65\x63\xe6\x72\x72\xb9\x92\x56\x27\x2a\xb8\xf7\x01\xe4\x46\xc9\xe5\xe8\xda\x55\xb5\x0b\x7e\xe3\x58\x89\x44\x71\x57\x69\x2b\xf2\x56\x2b\xa7\x69\x4e\xd6\xe2\x4f\xe0\x79\xfb\xe0\x31\xb5\xff\x79\x1c\x15\x77\x4e\x18\xf5\x84\xfd\xd7\xd1\xbb\xdf\xfe\x38\x39\xfe\xea\xe8\xe8\xfb\x47\x93\x3f\xfe\xf0\xdb\xa3\x77\x53\xf8\x97\xdf\x1c\x7f\x75\xfc\x63\xfc\xc3\x6f\x8f\x8f\x8f\x8e\xbe\xff\xe6\xe5\xd7\x6f\xae\xce\x7f\x90\xc7\x3f\x7e\xaf\xea\xf2\x06\xff\xf4\xe3\xd1\xf7\xe2\xfc\x87\x9f\x29\xe4\xf8\xf8\xab\x5f\x27\x4e\x9c\xab\xf5\xab\x24\xc3\xce\x40\x03\x8e\x15\x6e\x74\xa5\x8d\x70\x5d\x18\xbb\x9b\xb4\x98\xdd\x89\x54\x6e\xa2\xcd\x04\x05\x3f\x61\xce\x24\xe6\x7d\xe2\x71\x1c\x57\xcf\x8e\x13\xde\x74\xe7\xd7\xa6\x56\xef\x51\x91\x01\x72\xff\x99\x4c\x6e\x43\x72\x1e\xe4\xa4\xf2\xe3\x3a\x51\x56\xda\x70\xb3\x66\x79\x40\xa8\xac\x47\x69\x64\xda\xe9\x64\x3a\x18\x43\x1e\xca\x37\x63\x1f\x99\x5f\xc1\x9a\xe5\xd2\x7c\xe2\xbe\x22\x89\xed\x49\x45\x2e\xeb\x72\x0c\x50\xdf\x77\x7e\x3b\xa0\x90\x4d\xcf\x63\x69\x2b\x15\xd8\x04\x93\x8a\xe0\xc9\x19\xcf\x6e\x30\x9f\xdc\xec\x3d\x1d\x34\x24\xba\xdd\xe7\x0e\x0e\x42\xbd\x58\x29\x38\xb9\x74\x24\x40\x10\xa1\xc2\x53\xe7\xc2\x1f\xa9\xf8\x13\xf8\x1d\xc9\x08\x44\x15\x0a\x69\x02\xef\xc1\x51\x10\x7f\x4c\x05\x39\x19\xf6\x12\x02\x85\x7b\x3c\xf1\x6c\x84\x86\x79\xf2\x5f\xe2\x85\x8f\xaa\xc6\x38\xbc\x6f\x34\xa4\xc4\x43\xb7\x64\xea\x43\x59\xa1\x33\x5e\x34\x65\xdd\x5d\x97\x19\xce\x2f\x51\x6a\xa3\x43\x63\xad\xae\x3f\xc5\xfe\xeb\x31\xa8\x24\x4a\x95\x96\xf1\xc2\x62\x2d\xa3\xcc\xf8\xac\x10\x98\x68\x87\x93\x91\x74\x6f\x71\x82\x25\xbf\x93\x65\x5d\xb2\xda\xfa\xb5\x20\x3f\x53\xe3\x7c\xa2\x46\x68\x96\xe2\xd6\x6b\x06\x2a\xd4\x0d\x2f\x6b\x29\x15\x4c\x70\x8c\x07\x1b\x2f\xef\x3a\x9e\xc7\xce\x53\x66\x42\x73\xfd\x98\xb5\xb6\x35\xe4\xc0\xc2\x3a\x24\xe5\x37\xf4\x1c\x2a\xda\x9a\xa8\xd3\x32\x20\x36\xac\x34\xb9\x14\x6f\x43\x9f\x2a\x59\x8c\xa1\x50\xc1\x90\x2c\xc3\xf1\xf6\x72\x6b\x15\xf8\x27\x46\xe2\x45\xd9\xad\xe6\x6a\x2b\xcc\x64\x51\xcb\x7c\x2c\x05\xf7\x99\xc5\x19\x09\xd1\xc5\x18\x31\xc5\x08\x91\xc4\xc8\xf1\x43\xc3\xed\x91\xe8\x05\x1f\x9c\x47\x41\xa9\x6e\x70\x78\x6d\xdc\x41\x18\xc2\x23\x27\x02\xc5\x92\x06\x83\x15\x0a\x98\x8f\xce\x8a\x6a\x99\xc2\x16\x82\x7a\x01\xe7\x1a\x1c\xec\x6c\x9d\x15\xc8\x1f\x2d\xa9\x9d\x4b\xba\x95\x38\x81\x8f\x06\xb8\x7e\x27\xfe\xff\x23\x12\x28\xb7\xef\x35\x6c\x26\xe6\x58\x03\x8c\xbf\x02\x8f\x03\xa4\xcc\x05\xbe\xab\x17\xc2\x01\x81\xb2\x50\x8d\x48\x28\x7d\x2e\xf5\x8a\xa6\xc6\xde\x29\xf6\xad\x0d\x05\x44\x72\xfe\x84\xf1\xe3\x5e\xfb\x16\xca\x79\x82\xdc\xb9\x12\x22\x47\xaa\xe7\xa2\xfd\x7a\x53\xd3\xd0\x8a\xb3\xe3\x78\x6c\xac\xb7\x36\x4a\x1b\x78\xc7\x47\x6d\x0a\x4f\xba\x04\xa1\x46\xf8\x03\x0a\x8d\xa7\x8d\x2e\x99\x55\xbc\xb2\x4b\xed\xe0\x3d\x8c\x57\x3c\x93\x8e\xe2\xaf\xbc\xf3\x47\xca\xf0\xec\xc6\x0b\x86\x22\x05\x58\x88\x13\x96\x1d\x13\x9f\xb1\x37\xae\x91\xb4\x1d\x47\xc0\x2d\x8d\xae\x17\x94\x87\x26\xde\xc8\xcd\x0a\x6e\x03\x7b\x78\x7e\x1c\x88\xd0\xa8\x51\x56\x98\x63\x48\xef\x5b\x96\xaf\x15\x2f\x65\x16\x8f\x13\x50\x7e\x58\xa9\x89\xb0\xe9\xf0\xb5\x38\xfd\x2b\x61\xac\xb4\x4e\x28\x87\x78\xf1\xa7\x05\x97\x94\x5e\x8d\x47\x56\x08\xd6\x68\x52\x94\x75\x8d\x19\x13\x44\x88\x90\x5c\xad\x77\x1b\x6c\x10\x5a\xc5\xd7\x29\x25\x32\x62\xbd\x67\x44\x18\x75\x8a\xfd\x30\x30\x46\xed\x40\x90\xb8\x73\x0d\x8f\xa7\x51\x29\x8c\xb5\xc4\xda\x00\xfd\x41\xc8\xe3\xae\x84\xca\x75\xa7\x6c\xf7\xec\xea\x82\xa2\x65\xfc\xe6\x44\x0d\x00\xba\xbb\xc2\xd9\xc2\xff\x50\x68\x45\xf3\x17\x80\xab\x01\x9d\xc4\x68\x5d\xbc\x7b\xab\x98\x54\xb9\x5c\xc9\xbc\x26\x3d\x2a\x78\x57\x38\x2e\xea\xd3\xeb\x0b\x9c\xa2\x5c\x2c\xdd\xe4\x56\x10\x61\x38\x18\x13\x36\xae\x44\xb3\x14\x72\x9e\x40\x37\xd2\xaa\x18\xef\x68\xbb\x00\x3d\x40\x28\x1f\xad\x50\xf5\x96\xaf\xd9\x84\xf9\x2b\x06\xb4\x37\xdd\x8a\x67\x3a\x1e\x3e\x4c\x33\x5e\xcf\xee\x45\xf3\xcb\x4c\x90\x78\x06\xe6\x29\xe3\x0a\x72\x2e\x80\x66\xf3\x37\x0b\xac\x4d\x0a\x15\x5b\xdc\x15\xaf\x5c\xab\xe6\x36\xb5\x7f\x4d\x59\x52\xd0\xd0\xdc\xdf\x7d\x59\x8a\xe9\xf0\x47\x8b\x7b\xcc\x0a\xee\x19\x1d\x1e\x00\xa3\x03\x68\xf1\x37\xa2\xac\x0a\xee\xc6\x28\xbb\x3e\xf8\xae\x03\x2e\xa4\x97\x58\x85\x02\x2b\xef\x97\x70\x95\x4f\x78\xe1\x4d\xc6\xd5\xdb\xa7\x74\x89\x8d\xb7\xd1\xdd\x4e\x88\x21\x2a\x4d\x4d\xf2\x48\x15\x32\x11\x60\x84\x77\xba\x0d\xf4\xc4\x99\x28\x67\x22\x07\xaf\x39\xac\x28\xbc\xa5\xde\xd2\x5f\xdb\x83\xc5\xbd\x7a\xfb\xf4\x84\xc9\xa9\x98\xc6\x3f\xa5\x34\x86\x99\x89\x26\x0c\x71\x7a\x81\xa4\xa2\x00\xfd\xa4\x83\x34\xc1\x3c\xc2\xc6\x74\x81\x73\xe9\xf3\xfc\xc7\x9f\xbc\x56\xf7\x32\xff\x3c\xf9\x53\x70\x98\xe0\x4f\xff\x20\xca\xbc\x85\x0e\xc7\xff\xe8\xcb\x4a\x6b\x5f\x04\x5f\x0c\x01\x88\xff\xe6\x7f\x5c\xe9\xdc\x6b\xb6\x29\x1e\x28\x4b\x9d\x28\x54\x74\x32\xa1\x9c\x59\x4f\xd9\x95\x06\x66\x10\x99\xa7\x10\x8d\xc0\x91\x34\xe2\xbf\x03\x1c\x17\x23\xcf\x06\x72\x95\x71\x27\x54\x02\xd1\x40\x6c\x03\xa5\xb4\xc3\xa9\x82\x16\xe6\xfe\x0c\x10\x25\x1e\x01\x74\x03\x3b\x85\x9e\x30\xa7\x35\xf8\x84\xc7\x44\xff\xc0\x8f\x33\xc5\xc4\x9d\xb4\xd0\x8e\x1a\xcf\x26\x1c\x7a\xee\x52\x18\x38\x63\xca\xc5\x7f\xb8\xbf\xe9\x4d\xa3\x78\xba\x8a\x82\x9d\xfa\x8d\xd2\xee\x37\x8d\x52\x8e\x26\x8d\x2e\xd4\x69\xc6\x57\x1a\x5a\xc4\x42\x60\xab\x58\xad\x00\x3b\x49\xde\xf2\x70\x87\x66\x6b\x56\x4a\xeb\xf8\x8d\x98\xb2\x6b\xc7\x4d\x42\x5b\xfc\x4e\x42\xc4\x2d\x85\x62\xb3\x42\x67\x37\x22\x67\xb5\x72\x92\xaa\x45\xbc\xcc\xe6\x4b\x61\xdb\xd3\xd2\x2d\x2c\x74\x17\xab\xb3\x25\xe3\xac\x32\x62\x12\x13\x45\x28\x9b\xfc\x9c\xb1\xe1\xae\xb7\xa7\x88\x8a\x92\x89\x2a\x78\xc9\xc1\x87\xa9\xab\x1c\xa6\x99\x80\x6b\xe5\x0a\x8d\xd9\x36\x8d\x23\xfd\x5c\x6a\x95\xb5\xe9\x25\xb8\x9e\x76\xca\x2e\x21\x3f\x44\x76\x07\x91\x46\x02\x1f\x89\x43\x1b\x34\x25\x32\x61\x2d\x37\x6b\xea\x6a\xce\x6a\xc7\xa4\x83\x2e\x5d\xb8\x45\xf3\xba\xc0\x34\x5e\xc9\x55\x9d\x30\x59\x23\x32\xad\xac\x33\x75\x06\x8a\x89\xb3\x99\xd1\x37\x42\xa5\x51\xd9\x42\x5a\xb0\xcf\xdf\xd8\xf8\xd8\x09\xfc\x12\x4a\xb3\x6c\xc9\xd5\x42\xd8\xc6\xc3\x29\x79\x0e\x3a\xe0\x9b\x26\xc1\x4e\x57\x50\xf1\xc4\xf2\xb9\xf3\x41\xac\x83\xa3\x3b\xa3\xbf\xbe\x35\x90\xfb\x77\x8a\x45\x3c\xce\x49\x83\xf3\xa6\xbb\x25\x4a\x16\x84\xb0\x8d\x8d\x01\x78\x4d\x83\xba\x4e\x20\xf3\x48\x7b\xb3\x4a\x86\xb6\x96\xc2\xf1\x9c\x3b\x3e\x12\x53\xe4\x4b\xbe\x6e\xda\x53\x60\x09\x7c\x02\x2a\xca\x87\xf7\x9d\x82\x7c\xb4\xea\x09\xbe\x2b\x0b\x6f\x08\xba\x92\xdd\x3e\x91\xe0\x75\x2c\x93\xca\xff\xe0\x4c\x7b\x45\x21\x9d\xd7\x93\xa1\xe4\x08\xa9\x23\x53\x16\xc0\x08\xc6\x8b\x42\xdf\x8a\x1c\x16\x23\x5c\xef\x04\x89\xe8\x6a\x8a\x9c\xe5\x35\xe4\xe8\x5b\x07\x96\x5e\x7c\x3b\x02\x5e\xdc\x5f\x80\x91\x4e\xe0\x9b\xb6\x3a\x39\x4b\xf1\xcc\x59\x48\x86\xc2\x09\xd9\x95\xb1\x4d\xa9\x56\xf6\x93\x14\xca\x49\x23\xba\x0d\x56\xf1\x60\x26\x88\xad\x15\x1a\x82\x8d\xc3\x4d\x4c\x32\xc6\xb1\x10\xce\xb6\x84\x6d\x18\x53\x79\x67\x30\xe4\x3a\x52\xd7\x01\x92\x6e\x78\x55\x18\x47\x90\x43\x82\xc4\x9d\x5b\x95\x58\x62\x01\xc8\x1b\x8c\x9f\x7c\xa4\x7a\xaf\x37\x65\xac\x72\x06\x9e\x79\xd7\xeb\xa5\xce\x53\xab\x22\xfa\xc8\xac\xb3\x56\x6c\x92\xd4\xa6\xda\xc2\x06\x62\x77\xeb\xed\x6b\xa2\x48\xfc\x66\xa8\x04\xb5\xe9\x0d\x6d\xe3\x08\x2e\xed\x92\xaf\x7a\xa0\xd4\x44\xa9\x43\x00\x7e\x6d\x0a\x7c\x12\xa1\x30\xf8\xa9\x13\xf8\xd4\xc9\xe3\x34\x68\x72\x2a\x9b\x55\x1c\x49\xac\x56\xfd\xc9\x24\xe3\xd7\xbd\xcb\x73\x3d\x02\xc0\x7c\x03\x97\xd8\xf8\xf6\xa9\x87\x1f\x79\xe2\x1a\xb6\x07\xec\x36\x94\x28\x54\x48\xef\x95\x3c\x61\xbf\xe9\xe6\x5c\x12\x65\x86\x0c\x6d\xf3\xc8\x9f\x5a\x34\xc6\xe0\xe9\x38\x88\x9b\x86\x03\x3e\xbd\xf9\x03\x9c\xfe\xfe\x8f\x25\xfe\xca\x84\xfd\x45\x38\x7e\x3c\xea\x6a\x78\x63\x7b\xb4\xfb\xf5\x37\x51\x72\x6f\x96\x2c\xab\xad\xd3\x94\x27\xe3\xee\x88\x15\x0c\xa7\x81\x93\x3f\xd1\x4b\xf0\x43\x96\x15\x76\xa2\xb3\x70\xc1\x22\x91\x6e\x3a\xed\x11\x82\x9c\x8e\xd9\x85\x62\xda\xe4\xd0\xb6\x21\x51\x62\x6d\xc5\x47\x39\xbc\xf0\xbe\x89\xbd\x57\x78\xe5\x4d\xb5\x91\xdc\xa5\x9a\x98\x80\xd2\x61\x0b\xee\x44\x62\x6b\xb0\x38\x84\xe2\xb3\x42\xe4\xec\xa8\xbf\x08\xcf\x1a\xbd\x98\x28\x5f\x1b\x76\xa6\xd6\x28\xbc\x15\x9a\x7a\x0d\x42\x33\x89\xe6\x09\x4a\x18\x96\x5c\xe0\xc8\x55\xdb\x85\xcb\x3b\x1d\x46\x17\x45\x72\xa1\x95\x57\xe0\x01\xae\xd3\xe7\x4b\x4a\x94\x0b\xd7\x0a\xef\xed\x49\x02\x92\xae\x37\xd5\xf8\x42\xa8\xc4\xed\x38\x1e\xd1\x8c\x7b\xbb\xd5\x62\x73\x1c\x11\x41\xd9\x1d\x91\xf6\xac\xc1\x68\xf9\x95\x48\xf5\xdc\x60\x1d\xa7\x4d\x8b\x92\xf1\xf7\x28\xbe\x41\x34\x85\xd9\xa9\xc5\x95\x1d\x10\x21\x24\x03\x52\x19\x2b\x7a\xa0\xca\x08\x62\x9f\x73\x59\xd4\x89\x45\xe9\x2d\x39\x8e\x11\x81\x46\x9f\xdc\x51\x2c\x0e\x7f\x53\x57\xd0\x3f\xe4\x02\xcf\xd6\xbc\xf6\x6a\x31\x75\x4d\x6f\x05\xab\x0a\x0e\xad\x85\xe2\x95\x25\xc2\xd3\xba\xa3\x7b\x0a\x10\xf4\x42\xcf\xf0\xc6\xe1\xbf\x79\x26\x96\x7c\x25\xb5\x19\x83\xf7\x92\xf5\x34\x69\xc9\xd7\x21\x91\x9c\x44\x1f\x30\x1a\x81\xc0\x38\x14\x02\xde\xd3\xbb\x91\x89\x4b\x3f\x49\x79\x8c\xc4\x31\x16\x0b\x01\x10\x54\x02\xcf\x52\x7a\x11\x6b\x2f\x7a\x39\xbb\xba\x00\xb1\xc9\x52\x59\x6c\xa1\xb8\xf0\xe2\x46\xa1\x20\x68\x48\xb4\xf1\x3e\xcd\x44\xba\xaf\xce\xba\x0d\x9f\x72\x30\x02\xe3\xae\xc0\x88\xd4\x65\x38\xfa\xf6\xef\x9b\xd4\x33\x8d\x23\x52\xf6\xc5\x56\x8d\xe9\x8a\xcf\x8f\xb3\xab\x0b\xdc\xfd\x29\x7b\xae\x0d\xe3\x2a\x35\x76\x65\x0d\x8f\x97\x5b\x4a\x93\x4f\x2a\x6e\x48\x38\xf2\xcd\x11\xdc\xf5\x71\x77\x3e\xb5\x65\x5a\x7f\x7a\x23\x55\xeb\x7b\x1d\x38\xb2\xc6\x18\xe9\x08\x06\x6d\x11\x8b\x91\x47\x60\x7c\x89\x03\xf4\x44\xe7\x96\x3f\xa4\xfd\x48\x6b\xcf\x16\x47\xbf\x2f\x64\xaa\x8d\xc2\xd1\x69\x80\xfb\x6f\xb2\x1f\x0d\xf7\xc9\x98\xc9\xc0\xd7\x51\x68\x72\x9e\xa6\x21\xdd\xef\x14\xc2\x8e\x94\xfc\xf9\xa5\xe7\xc1\x9b\xef\x7c\x20\x1e\xed\x78\x5e\x20\xd6\x16\x8f\xac\x41\x0e\x5f\xa4\x33\xb2\x75\xc5\xce\xc2\x01\x0b\xe5\xe5\x23\xc8\x6d\x8a\xfe\xa1\x6d\x6b\x9d\x9c\x5a\x63\xbd\xcb\x10\x1e\xdb\xd3\x0d\xf7\x56\x11\xf3\x87\xce\x70\x0f\x2c\x7f\x5a\x72\xc5\x17\x62\x12\x3e\x71\xd2\x4c\x70\xd2\x54\x83\x9f\xa6\xd2\xcd\x8c\x78\xa8\xd9\xc8\x6d\xea\xba\xe3\x33\xab\xca\xde\x58\x94\x31\x18\xa0\xd8\xe8\x2c\x50\x6c\x6c\x26\x28\xf6\xb1\xd9\xa0\x58\xc3\x9a\x38\xb6\xc2\x7b\x1d\xe4\x8e\xaf\xf2\x46\xb1\xd3\xec\xa3\xab\xbc\xf1\x82\x15\x48\xcf\xc7\xf5\x84\xe6\xd4\xa5\x74\x74\x24\x73\x77\x20\x6c\xbd\x51\x7e\x63\x44\xd3\xd2\xf5\x78\xea\x46\x33\x7c\x80\xde\x47\xf4\xb9\xb8\xab\x0a\x99\x49\x47\x46\xa1\x76\x47\x9b\x4a\xc0\x40\xf8\x56\xda\x31\x0e\x82\xd3\x50\x86\x19\x1f\xee\xc0\xfc\x4c\x02\x7f\xc7\x08\xe2\x81\xae\x65\x44\x77\x90\xfd\x4c\x97\x70\x6f\x4e\x77\x8f\xbd\x39\x65\xff\xf6\xe6\x14\xe9\x0a\x53\x99\x4e\xfb\xb9\x63\x04\xfb\xb2\x7f\xd6\x82\x4c\x47\x15\x87\x5e\x89\x4e\x09\xba\xf6\x5a\xdf\xca\x3c\x79\x97\xbc\x09\x99\x49\x95\x27\x34\xb1\xc4\xf1\x00\x63\xc1\x92\xbb\x6c\x79\x7e\x57\x19\x81\x2d\x5d\x46\x76\x92\x36\xc5\x8f\x93\x63\x6a\x3a\x36\xe2\xd9\x19\xc3\x44\x86\x83\x1d\x7d\x1a\x40\xa2\x8c\xe1\xd7\xbc\x59\x8a\x9e\xcc\x31\x74\x99\x11\xec\xec\xf2\xd9\x78\x49\xe2\x74\x7c\x1e\x1b\x0b\xa3\xc7\xde\xa3\x1e\x46\x10\xbb\x7b\x93\x47\x11\x0c\x47\x32\x4a\x1f\x45\x22\xf8\x81\x11\xc7\x3a\x8a\xc4\xd8\xbd\x87\xb3\x1b\x41\x2e\x9a\xea\x0f\x2c\xb2\x60\x5e\x15\xf1\x51\x3f\x1c\xab\xfb\x52\x8a\x78\xfb\xe3\x46\x40\x91\x54\x52\x37\xfe\x8d\x69\x8e\xe9\xb1\x8d\xf5\x5a\x8d\x63\xe2\x3f\x77\x14\x39\x23\x6e\xec\x78\x06\x0b\xc7\x8d\x20\x52\x56\x6c\x8f\x9e\xba\x19\x67\xe9\x70\x84\xc7\x90\xf1\xf4\x17\x0b\x47\x39\xf2\x26\x8e\x26\xb4\x51\x8c\xc0\x11\x3a\x02\xe5\x7c\x1c\x4e\x8f\x71\xd9\xd8\xb8\xcf\x67\x38\xe2\xe1\xfe\x28\xc7\x68\x54\x95\xc8\x7a\x2f\x39\xa3\x89\x04\x43\x70\x68\x43\xc3\x1d\xad\xec\x52\x8e\xf1\x88\x8d\xc3\x69\xb0\x88\x09\x14\xbb\xdb\x23\x68\x6f\xf6\x96\x17\x72\x8c\x04\x03\x8e\xb8\x55\x23\x2e\xac\x11\xec\x42\x9d\xb0\x4b\xed\x2e\xd4\x38\x96\xd6\x8f\x73\xa8\xa5\x1e\x01\x0a\xd6\x8e\x67\x5a\xd8\x4b\xed\x40\xf2\x83\xbd\xa8\xb8\xed\x1f\xe5\x9a\xa2\xe8\x31\x15\x3e\x57\x23\x79\xd3\x71\x00\xc5\xfa\x68\x6b\xc9\x3a\xd7\xe8\x62\xbc\x9b\x09\xac\x38\x63\xab\x3c\x69\x11\xb3\x3f\xf6\x3d\x82\x57\xeb\x71\x37\x1e\xc9\x5d\xca\xd4\xf6\x6a\xdd\x31\x13\x4c\x69\x35\x01\x5e\xe2\xb1\xae\x66\x03\x82\xff\x18\x7b\x85\xea\x69\xbc\x73\x6f\x7a\xda\xe9\xdf\x70\xfb\x47\xde\x7a\x28\x30\x1b\x57\x37\x01\x5e\xad\x2a\xf8\x18\x70\x9c\x38\x42\x71\x39\xf7\x5a\x8f\x3b\xb1\x90\x34\x76\x83\x5d\xa3\x14\x66\x21\x58\xc5\x5d\xb6\x1c\xd7\xd8\x8d\xb9\xaa\xa3\x65\x51\x70\x8c\x68\x8d\x21\x95\xf7\x02\x88\x19\x3e\x46\x92\xf0\x45\x2a\xe5\x43\x1c\x90\x8c\x29\x79\xe5\x4d\xe7\xff\xba\x11\xeb\x13\xb8\xed\xff\x7b\x94\x17\x10\x69\xec\x94\x9d\x31\x2b\xd5\x22\xb1\x87\x28\x8e\xce\xfc\x02\x8c\x76\x04\xa1\x9d\xe5\xf4\xeb\x30\xce\x92\x8a\x7f\xd6\x72\xc5\x0b\x01\xa4\x46\xa3\x3c\xc8\x30\x81\xef\x86\xd0\xf4\x60\x23\x4d\x3c\x86\xba\xbf\x5d\x6a\x2b\x20\x5e\x1e\xa3\xac\x96\xe1\x32\x1c\xdc\x88\xf5\xc1\xc9\xd8\x46\xd4\x0b\xbe\x50\x07\x27\xb1\x8c\x66\xac\xd7\xd3\xa0\xf0\xc7\x4c\x24\x02\xe1\xd0\x01\x48\x3f\x48\x6f\xff\x8a\xa3\x9b\x1f\x4f\x6e\x69\x89\x63\xd4\xfc\xf8\x03\x7f\x98\x1d\x49\xc7\x07\x28\xe4\xd3\x82\x5b\x9b\xde\xa6\xb2\x0f\x95\xb9\x44\x40\x70\xe2\xc7\x42\xf3\x95\xce\x2c\x9b\xb4\x69\xa2\xdc\x40\xcd\x96\x01\x35\xcb\x83\xc1\x9f\x02\x0b\xfc\x38\x04\x0c\xc9\x67\x03\xe7\xf4\x52\xe7\x63\x9e\x8a\x56\x68\xe2\x42\xc7\x1e\x11\xb7\x9d\xc6\x64\x89\x22\x9b\x6e\x0b\x6d\x73\xa7\x59\xaa\x8b\xd7\x39\x63\x6f\xa1\x15\x51\xf2\x2c\x9f\xcb\x42\xd8\xb5\x75\xa2\xf4\x33\x95\x65\x55\xa4\x97\xa0\x02\x05\x9e\xd2\x8e\x49\x95\x15\x75\x0e\x84\x40\x89\x22\xe1\xa3\x01\x85\x34\xc6\xf3\xf9\x48\x87\x79\x64\x15\xf7\xb6\x11\x9a\xb8\x58\xe1\xd5\x20\xe0\x0d\xda\x8a\x87\xd4\xc3\xa7\x77\xd2\x51\xa5\x6a\xce\xd0\x56\x03\x58\x9d\xb2\x54\x6a\xab\xa4\x1d\x9e\x13\x58\xc0\x7a\x3b\xf8\xfc\x69\xb7\x5e\x82\xb3\xe7\x72\x46\x72\x45\x9e\x2e\xb9\x52\xa2\xe8\xb4\xf9\x0c\x98\x3e\xee\x1c\xcf\x96\xa4\x0b\x0a\xe9\x74\x6f\x47\x0a\xe1\x0e\x2d\x5b\x6a\xeb\x58\xc9\xb3\xa5\x54\x82\x98\x10\x06\x3e\xd6\xd8\xc0\xb7\x25\xfd\x1c\xbe\x7d\xf7\x48\x5e\x3f\xb7\x6f\xfc\x8f\x93\x4e\x5c\xdf\x3f\xe9\x28\x52\xff\x3d\xc4\x33\xec\x34\x03\xbc\xed\xb4\xed\xe8\xc8\xe6\x8d\x64\xaa\x50\x6f\xcf\x1a\x12\x80\xe8\xab\xc0\x09\xc0\x08\x84\xae\x0c\x71\x5e\x53\x76\x7e\x37\x65\x07\xe2\xce\xfd\xee\xe0\x84\x1d\xdc\xcd\xad\xff\x87\x72\x73\x7b\x40\xe6\xd3\x2d\x23\x7a\xd5\x3b\x52\xc2\x18\x3c\x63\x33\x11\x7e\x86\x28\x56\xce\x59\xad\x1a\x30\xeb\x94\xbd\x79\xf5\xec\xd5\x13\xb6\xd4\xb7\x2c\xa7\x86\xa4\xb7\x82\x55\x06\x98\x01\x98\x30\x46\x63\xa7\x3c\xe0\x07\x48\xdd\x37\x60\xbb\xcb\x74\x59\x19\x5d\x4a\x8b\x4a\x52\xc4\x4b\x7b\x2f\x7d\x34\x8b\x5a\x8d\x71\x57\x5e\x85\x56\xee\xa0\x31\x1d\x37\x0b\x41\x0d\x8d\x8a\x5a\x31\x55\x97\x33\x91\xd4\x57\x34\x05\x89\x89\x5d\x4a\x40\xc6\x97\x5f\x10\x24\x8c\xd8\x3e\xa3\xb3\xae\xb1\x53\x05\x5d\x0d\xed\xe8\x6f\xc1\x5e\x87\xb9\x12\xa5\x02\xd1\x3e\x10\x73\xcc\xb5\x09\x14\xcf\x89\x22\xad\x70\xc8\x7c\xaa\x82\xfb\xf4\xd2\x6b\x4f\x4b\xa4\x90\x48\xed\xc5\x81\x47\xf9\xbb\xef\x2e\x89\x41\xf9\xc7\xba\x25\xb7\xda\x14\xf9\xad\xcc\xb1\xac\xd6\xb2\x23\x3f\xc5\xe3\x94\x35\xa2\xe7\xab\x93\xb2\xd3\x89\xea\xeb\xf6\x56\xe6\xe3\x6f\x4d\x52\xfd\x2a\x6c\x0d\x83\xbd\x91\xb9\x50\xce\xdb\x25\x63\xd9\x11\x4c\x95\x4a\x58\x75\x2e\xb1\x83\x87\x97\x01\xad\xef\x74\x39\x93\x2a\x85\x0a\x4d\xcf\x3b\x87\x1b\x72\x8c\x5e\xf3\xa6\x91\x81\x59\xe1\x4e\x80\x43\x1d\xf8\xd8\xb5\x5b\x32\x2b\xcb\xba\x70\x5c\x09\x5d\xdb\x62\x9d\x74\x89\x3f\xbf\x03\x3a\x2f\xc4\x1d\xea\xb0\xd4\x28\xa4\x11\x94\xda\x42\x74\x21\x94\x30\x6d\xa7\xbf\xcd\x70\x84\x20\xb3\x65\xfc\xc9\x4f\x63\x30\xd3\xb6\x9f\x10\x77\x24\x26\x72\x64\xfc\xaa\x8a\x7a\x21\x09\x44\xd2\x49\xd1\x07\x1d\x75\x39\x09\x1d\xcf\x3e\x71\xc0\x83\x3f\x3a\x82\x0e\x7c\xd6\xb4\x95\x8b\x74\x0d\x09\xaa\x65\xd9\x74\xc2\x0c\x1d\xf2\x13\xdb\xa0\xa7\xb4\xf9\x4a\xb4\x31\xa3\x45\x94\x1b\x01\x25\xfd\xcd\x6c\x1f\x50\xb2\x8d\xf6\xe3\xed\x02\xb0\x5c\x54\x42\x91\x69\xf2\xb5\xea\x6a\x5b\xdc\xbc\x7b\x39\x75\x1a\x0e\xcd\xc8\xbe\xcd\xf9\x9d\x33\x54\x96\xc3\x4c\x97\xa5\x77\x13\xc2\xc4\x7c\xe0\xcd\x55\x9a\x49\x4f\x78\x43\x1b\xf3\xdd\x2c\x71\xa7\xf6\xf1\xde\x2f\x27\xde\xb3\x22\x33\xc2\xbd\x16\xc4\xb2\xd0\xf7\x6d\xe6\x75\x14\x4b\x4d\x72\xd9\xed\x6e\x4c\x38\xd5\xb4\x77\xe8\x80\x01\xf0\xeb\x6f\x85\xb2\xd2\xc9\x55\xaf\x4f\x2b\xfd\xf0\x55\xdc\xda\x26\x85\x0c\x7e\x5c\x50\xa6\xe4\x4a\x1b\xc0\xaa\x85\xce\x4c\x00\x83\xf3\x1a\x48\xe9\xb0\x0e\x54\x75\x8f\x5c\xd5\xdd\x6e\xdd\x91\xbf\x95\x7c\x9e\x3b\xdb\xd2\x76\x1d\x48\x60\x00\x85\x66\xc7\x5a\xc5\x1d\x3f\x61\xbc\x28\xc2\xbf\x53\xb5\x03\x37\x02\x76\xa8\x93\xe6\xef\xef\xd1\x3d\x69\xf5\xf4\x8a\xa0\x34\x1a\xb4\x9d\x00\x85\x44\xf0\x4d\xb8\xb8\x6e\x3a\x94\xc2\x47\xaf\x84\x59\x49\x71\x7b\x7a\xab\xcd\x8d\x54\x8b\xc9\xad\x74\xcb\x09\xae\xae\x3d\x85\xbc\xcf\xe9\xaf\xe0\x1f\x09\xb3\xc3\x74\xf9\x59\x9e\x07\x3a\xc4\xd0\xf3\x0c\xfb\xa7\xa4\xbc\xdb\xf1\x4a\xbe\x15\xc6\x07\x86\x27\xc0\x15\x78\xc2\x6a\x99\x7f\x45\x07\x2e\x24\xc5\xe1\x3a\xbb\xa1\x84\x48\x1b\x41\x38\x48\xe9\xbd\x07\x12\xbe\x26\x8a\x09\x11\x78\x13\x32\xf7\x5f\xf3\x08\x82\xbb\xef\x7f\x53\xd4\x96\xc1\x15\x0e\xd4\xd9\x09\x93\x0d\x3c\xe6\xcc\xfa\x13\x19\x09\x53\x99\xa9\x95\xa2\xb8\x4c\xf7\xf8\x3a\x98\x73\xc7\xad\x70\xf4\x77\xfe\x2d\x82\xc4\x26\xda\x45\xc9\x54\xab\xe1\xb4\x01\x4a\xeb\xa6\x81\x1a\x9b\xfc\x39\x50\x26\x92\xad\x70\x3b\x2b\x88\xbe\xe3\x66\x22\xb1\x1e\x51\x28\xf4\x3b\x43\x02\x05\x9c\x6f\xee\xaf\x43\x46\xee\x30\x9a\xe8\x7b\xff\x1f\xf6\xde\xb5\xb9\x91\xdc\x48\x17\xfe\xbe\xbf\x02\x21\xbf\x11\xea\x1e\x8b\xec\x9e\xf5\x78\xc6\x6f\xc7\xc6\x3a\x34\x92\x66\x56\x67\xfa\xa2\x95\xd4\xed\x38\x61\xfb\xec\x42\x55\x20\x89\xa3\x2a\xa0\x06\x40\x51\xcd\x5d\xef\x7f\x3f\x81\x04\x50\x37\x16\x8b\x45\x00\x12\x25\x9b\xf8\xd2\x33\x92\x98\xc4\x35\xaf\x4f\x66\xda\xf5\x7d\xfe\x7c\x79\x1e\xe1\x3c\x35\x99\xce\x79\x06\x69\x2b\x54\xa2\x92\xd1\x5f\xcb\xa6\x27\xd8\x1f\xe0\x83\xab\x13\x0c\xb9\x6b\x01\x1b\x3e\x4f\x48\x0d\x15\x39\xa7\xf2\x3e\x90\xa3\x1e\xff\x7c\x76\xd1\x26\x18\xea\xde\xfc\xf9\xec\x02\x59\x3a\x8f\x84\xb3\x78\x5c\xa0\x45\x18\xce\x70\x17\x6c\xa1\x03\x14\xce\x13\x52\xc3\x0c\x53\x2a\xef\x77\x97\xd0\x7b\x73\xb7\x16\xa9\x17\xb4\xea\xef\x0b\x5f\x62\xd9\x95\x55\x27\xe0\xba\xaf\x78\x89\x1e\xb0\x77\x19\x8b\x1a\xb1\x72\x4b\x8b\x77\xe8\x82\xc9\x52\x90\xd0\xfc\xf2\x59\xc7\xf7\xa9\x2d\x2e\xe7\x6e\xf4\x15\x45\x7d\x4e\x4a\xe7\x6e\xf4\x8d\xb3\x99\x56\xe4\xf2\xdd\x8b\xc4\xbe\xec\x68\x60\x6c\xe5\x05\xbe\xb2\xaf\x01\xc1\x59\x07\xd3\xf8\xae\xb5\x0b\xc1\x59\x07\xd3\x04\xe8\x49\xfb\x84\xe0\x14\x58\x28\xf0\x65\xc6\x60\x2a\xb7\x5a\x92\x38\x82\xfe\x28\xdd\x4d\x2c\x25\x38\x66\x71\x39\x73\x65\x1c\x4f\x6c\x27\x46\x70\x73\xfa\xfb\xc5\x1c\xb7\xd2\xec\xc0\xce\x58\xab\xcd\xe1\x0c\xe0\x27\x5e\x19\x69\x6f\x52\xb2\x7c\x23\x53\xfc\xad\x6f\x0a\x92\xde\x3e\xdb\x74\xcf\xc8\xfa\xea\x84\xbc\x9b\xd8\x1c\x7d\x7b\x34\x45\x37\x34\xa7\x19\x16\xd9\xea\xa4\x79\x62\x15\x75\x5f\x5e\xcd\x45\xb5\x64\x48\x43\x7a\x7b\x84\x5e\x71\xa1\x57\xe1\xeb\x67\xc4\x0c\x65\x04\x2f\x89\x6b\xb7\xa5\x05\xf0\xca\xb8\xf1\x5e\xfb\x1e\x55\x6c\x6e\xf7\x52\xf1\x66\x46\x0d\x8a\xc1\x3c\x3e\x1b\x63\x85\x05\xfb\xbd\xae\xce\x6b\x0d\x9c\x32\xad\x96\x4f\xd1\x67\xa3\xeb\xfa\xbe\x74\x63\x40\x99\xe7\xa3\x4f\xab\xa2\xfb\xc1\xdf\xb3\xfa\x4c\x2e\xcf\xb3\x88\x3c\xb9\x30\x4e\x1d\xe3\xf1\xe7\x1e\x9d\xc8\x50\x23\xc6\xe3\x49\xb3\x15\x19\xaa\x42\x63\x55\x90\xeb\xef\x81\x83\xf8\xc5\xac\xe6\x54\x5d\x93\xc2\xc3\x5a\xec\x18\xe2\x86\x4c\xa8\x6f\x73\x4e\x15\xb4\x67\x93\x54\x71\xb1\x42\x58\x21\x6c\x84\x51\x52\x66\x58\x20\x41\x0c\x52\xc8\xe7\xb8\xce\x2f\xae\xae\x2f\xce\x4e\x6f\x2f\xce\xdf\x21\x37\x5b\xda\xf4\x3e\xf9\x10\xbd\xe5\x35\x7c\xa9\x59\x0f\x1a\x3d\x50\xb5\x08\xda\x81\x13\xab\x94\x60\x86\x2e\xb4\x90\x3b\xa7\x02\x7a\xa8\xfb\x78\x35\x18\xba\x64\x54\x9d\x55\x93\x33\x65\x00\x33\xce\xbc\x8b\xe1\xe9\x19\x5a\x8c\xd6\x9c\xaa\x13\xe3\x8e\x30\x13\xd6\xef\xd6\xcd\xd8\x83\x72\xdd\x27\x9e\xa7\xc7\xc7\xb2\xde\x52\x8f\x88\xd2\xde\xfc\x0a\xf5\x15\x7e\x6a\xef\x34\x15\x50\x72\x2d\x06\x43\xbf\x05\x70\x67\x4d\x32\x20\x9e\x66\x91\x46\x8c\x57\xf1\x4c\xc4\x05\x92\x0a\x0b\x6f\xf8\xb2\x7e\x5f\xc7\xd3\xe9\xf1\x14\xca\xcf\x1c\x4f\x8f\x9d\x43\x20\x0b\x68\x6e\xd6\x50\x81\xab\x65\xbb\xb6\x91\x01\x24\xdb\x5c\x6d\x8a\xd0\x27\x57\x2f\xdd\x77\xa2\x74\xd6\x2c\xbf\xde\xe9\xc1\x19\x16\xca\xef\x99\x71\x98\x15\x28\xcb\xbb\xe6\x66\xaa\x85\xfd\x86\x25\xf1\xa5\xea\x6f\x9e\x05\xab\x4b\x6e\x4b\x22\xbc\xaf\xeb\x7a\x7f\x3f\x5f\xbf\xdf\xcf\x72\x8c\xe4\x8a\xb0\x98\x33\x9e\xe7\x54\xa1\x05\x96\x0b\x0b\xd4\xf4\x86\x3f\x54\x0d\x05\x43\xa4\x7d\x58\x98\x22\x2b\xa5\x22\x62\xe6\xc1\x82\x3b\x5a\x91\x23\x14\x1c\x96\xa8\x08\xd9\xd6\x1b\xac\xf6\x5c\x7a\xb6\x49\x97\x0b\x2c\x88\xd4\xfa\x95\x11\xb4\x19\x9d\x11\x45\xf3\xd0\xde\x08\x4e\x0d\x26\xd6\x0d\xe2\x5a\xe5\x5b\x95\xf7\x4d\xb5\xb7\x6f\xae\x2f\x4e\xcf\x3f\x5c\x4c\xf3\xf4\x05\x09\x76\xc2\xd2\x82\x53\x9f\x53\x9c\xa0\x02\xab\xc5\x13\xab\x03\xd5\x74\x63\xd8\x77\x17\x8e\x18\x04\xad\xbd\x71\xd8\xfa\xde\xba\x79\x19\x47\x01\xa8\xa3\x29\x51\x98\x7a\x57\x6a\xaa\xdf\x87\xe2\x05\xcf\xf8\x7c\x15\xa1\xe2\x86\xc7\x55\xfe\x8d\xe9\x5c\x3d\xc1\x13\xfd\xaa\xf6\xe3\x0b\x56\x8b\x18\xa7\x7d\x85\xd5\xc2\x21\xf9\xab\xdd\xf5\xdc\xc8\xca\xab\xa8\x16\xbd\x21\x86\x17\xb5\xc1\xcf\xdc\x65\x52\xbf\x04\xe7\x7d\xf7\x75\x98\xdd\x11\x23\x6c\x48\x6a\xb4\x36\xbd\xf0\x09\x14\x6a\x2a\x88\xc8\xa9\x29\xa9\xe5\xeb\x38\x59\xf7\xc0\xbc\xec\xf7\xea\xe7\x7c\xd1\xf2\xfb\xca\xeb\xc1\xb6\xef\xd1\xbf\x59\x3a\xa1\x6a\x46\x21\xc8\x84\x7c\xa5\x12\x7c\x6d\x33\x9a\x11\x6d\xa6\x85\x18\x80\x4d\x3d\xc5\x01\x1e\x1c\xa0\xc2\xd0\xf5\x82\x7d\x77\x80\x0f\xb5\x8f\xc0\xa1\x66\x7c\x1c\x2f\x84\x11\x81\xb3\x6c\x85\x4a\x4d\x5a\x2b\xb1\x36\x4c\x88\xe7\x9e\x1b\xca\x85\xc5\x44\x16\x82\x2e\x69\x46\xe6\x7a\xca\x0b\xca\xe6\xd2\x57\x69\xc3\x82\xb8\x96\x90\x7a\xf1\x92\x90\xb5\xfd\xf5\x79\x91\x1f\xf4\xe7\xab\x5d\x94\xc6\xe4\xfd\xf8\xe9\x16\x31\x62\xa6\xec\xf5\xce\x03\x9d\xa3\x7a\x51\x5e\x3a\x13\x42\x93\xc9\x04\x62\xc8\xaf\xfe\x2f\x67\x44\xa6\xd9\x6b\xf4\x27\x62\xd7\xc2\x91\x20\x9a\xf7\x7b\xe1\x8b\x1f\x16\x1c\x22\x51\xa5\xb4\x7b\x5e\x1b\xb6\xc0\x2a\xbd\x5e\x1d\x4b\x1d\xdd\x37\x9a\x36\xe3\xca\x2a\xf9\xad\x6f\xf0\xab\x9f\x8f\x25\xaa\xb3\x37\x5e\x92\x07\x6d\x0f\xca\x72\x54\xcd\xc9\x61\x00\x03\x9d\x67\x0d\xfe\xe9\xb2\x0a\x60\x9e\xfe\xea\x37\x46\x72\x95\x67\x94\xdd\x9f\x20\xaa\x5c\x26\x8e\xe6\x28\x01\x26\xbb\x26\xe7\x78\xb1\x20\x38\x6b\x68\x7a\x4f\x1e\x57\x73\x5c\x63\x2f\xba\xa1\x8a\x04\xec\xba\x5d\x15\x26\xdf\xd5\x09\xf6\xa0\xa8\x57\x4b\xd9\x3a\x3a\x8a\xa7\x68\xbd\x88\x73\xa1\x32\x91\x34\x54\xc1\xba\xbc\x39\xbb\xb9\x6c\x05\xb7\x7c\x7c\x97\x86\xca\x01\x5e\xba\x49\x41\x87\xa3\x7a\x91\x7e\x21\xfa\xeb\xee\xf7\x61\x82\xb2\xd2\xe7\x53\xa6\xe8\xc6\x15\x17\x0a\xef\x6e\x2e\x86\x89\xc8\x64\x81\x8b\xd3\x52\x2d\xce\xa9\x4c\xf8\x92\x44\x71\x83\x3f\x2c\x08\xe8\xc8\x16\xcc\x89\xa8\x7e\x24\xbe\x56\xa5\x9b\x17\x3a\xfb\xb7\xd3\x2b\x84\x4b\x7d\x8f\x15\x4d\xfc\x53\x11\x43\xd3\x41\xdd\x8e\xdd\x98\x12\xd4\xcf\x6c\xbf\xec\xac\x9e\xcd\x6e\x1d\xa0\xd1\x5e\xe3\x00\x8d\x7e\xfe\xd0\x68\x90\x6d\x9e\x53\x39\xc0\xa1\x77\x1a\x94\x51\x45\xb1\xe2\x22\x12\xaa\xf1\xac\x94\x8a\xe7\x86\xd1\x02\x92\x86\x06\x14\xe8\xff\x08\x70\x88\xcb\x59\x7b\x96\xad\xfc\xf1\x10\x48\x04\x5c\xb3\x4b\xa6\x88\x98\xe1\x84\x74\xaa\x67\xf9\xa2\x0d\x18\x79\xb0\xab\xa7\x15\xe5\x7f\x09\xaa\x3e\x57\x80\xf6\xf2\xaf\xef\xfe\xa5\x01\xb8\xfe\xd7\x40\xa4\x85\x71\xe5\xa6\x2e\xfc\x8c\x12\xce\x18\x49\xd4\x3e\x02\xc8\x7a\xd0\x5f\x63\x48\x7b\x0b\xc2\x31\xbb\xff\xef\x25\xce\x42\x6e\xc8\xc7\x7d\xe1\x26\xda\xb7\x32\xc2\xb6\xb8\xb7\xe8\x6e\x63\x40\x85\x6c\x90\xbd\xa5\x24\xd0\x65\xcd\xd0\x55\x02\x33\xa9\xaf\x68\x8c\xe8\xc6\xb1\x4d\x50\x38\x46\xaf\x54\x52\x78\x62\xd5\x9f\x45\x8d\x56\xb3\x39\xf6\x46\xbe\xf7\xb0\x5d\xcc\x30\xb5\x59\x43\xf6\x61\xaf\x58\x79\xe0\x5c\x31\x02\xea\xad\xed\xf4\x34\xe7\xcc\x78\x4f\xa5\x82\xae\x29\x76\x76\xd0\x59\xc7\xd4\x7b\xf4\x52\xc3\xf5\xb8\xbc\x42\x5c\x20\x5a\xfc\x07\x4e\x53\xf1\xce\x58\x1a\xd6\xff\xc8\xbd\x51\x7b\x54\xda\x80\x08\x54\x24\x71\xa5\xb7\x5e\xa9\x55\x41\x13\x9c\x79\x57\x00\xba\x3d\xbb\x82\x59\x49\xf4\x87\xef\xdf\x82\x43\xfd\x77\xff\xfc\xfd\xdb\xa0\xa7\xf6\xf2\x6a\x45\xa2\xb8\xb1\xe9\x7f\x3c\x34\xff\x73\xaa\xfc\x04\x06\xb9\xa9\xf9\x04\xfa\x4c\x88\x91\x6f\x14\x35\x78\x16\x95\xce\x19\xcf\xd8\x3f\xd4\xea\x69\x8d\x43\xad\x9e\x7d\xd7\xea\x41\xd5\x95\x37\x32\xf5\x71\x24\x75\x48\xc9\xc9\xab\x75\x21\x6d\xc4\xad\xaf\x54\xdd\x20\xa4\xfd\x83\x84\x2f\x44\x48\x7b\xdd\x0f\x3f\x9e\xd1\xe6\x15\x46\xfe\x1c\x1f\xcb\x46\x76\x83\xc7\x3a\xa0\xf2\xea\xf9\xc7\x9b\xff\x78\x7f\xfa\xe3\xc5\x7b\xd8\x13\x5b\xed\x45\x3f\x7e\x2f\xe9\xd8\x13\xa8\x89\xcc\x7e\x7c\xa3\x32\x7e\x87\x15\x8e\xc1\xfe\xf8\xd3\x4d\x3b\x70\x87\x3e\xfe\x74\xe3\xb1\xb3\xfd\xc0\xeb\x0a\x46\xed\x65\x4a\xb4\x80\xd7\xa1\x1e\x46\x36\xf3\x3e\x9b\x97\x02\xf0\x98\x40\xfd\xb0\x27\x2f\x90\x1d\x15\x19\xe2\x02\xbe\xe4\x6b\x0c\x07\xbd\xbe\xdd\x66\x4f\x22\x02\x28\x1f\xfd\xd6\xa1\x67\x65\xea\x3c\x06\x0c\x57\x9f\x8b\x39\x61\x1b\x8b\xb0\x50\xda\x10\xdf\xee\x8b\x01\xe0\x3e\xe1\xfd\x09\x31\xd7\x44\x9c\xaa\xf7\xc7\x37\x40\xc9\x81\xe5\xb5\x68\x08\x29\x7d\x2f\xb4\x2e\xa8\xf5\x39\x22\xa5\x0b\x40\x36\x5e\xb9\x27\xd9\x7d\xc8\x16\x14\xf6\xca\x8b\x4e\x53\xc1\xb3\x0c\xd3\x3c\x54\x1b\xe8\x76\x2a\x04\xa2\xe6\x3f\x6f\x00\x90\xe3\xc5\x8a\x1a\xfd\xfd\x5a\x55\x96\xf1\x5a\x67\x44\xf8\x3e\xaf\x98\x96\xc9\xa5\xc4\x36\x58\x22\x0b\x9c\xc4\x4a\xd5\xf2\xec\x24\x5b\xff\xc8\xfc\x04\x1a\x35\xbe\x24\x15\x04\x26\xbc\x87\x02\x70\xd5\xf7\xc6\x60\x3e\x67\x8e\x98\xe5\x3f\x01\x9e\x14\xcd\x6d\xe2\xdd\x58\xb4\xe9\xd6\x22\x1c\x32\xd1\x82\xbb\xe6\x30\xd0\x1d\xd4\x76\xf5\x78\x5a\xac\xe9\x23\x3e\x06\xf4\xac\x34\xa3\x3f\x3d\x49\xa1\x7e\xa7\x8b\xf8\x2a\x5d\xfb\x71\xf9\x16\x0b\xae\x38\x8b\x5a\xce\xf4\xaa\x87\x64\xa8\x3c\x32\x34\xcf\x4c\xf9\xe5\x8c\x88\x86\x58\xf5\x20\x0d\x75\x93\xaa\x8a\xd3\x98\xa5\x55\x8a\x18\x67\x0e\x82\x1a\x5a\x7a\xfa\xe5\x08\x90\x22\xbd\x3c\x7f\x62\xd9\x71\x68\x25\xf4\x3c\x5b\x09\x3d\x0d\x08\x6d\x1f\xe2\x44\x5f\xf2\x08\xf7\xed\xf2\xdc\x7a\x3e\x5c\x1d\x6b\x5f\xdf\xb4\x61\x68\x28\x16\x47\x43\x96\xab\x3d\xb9\x75\xc3\x85\x7a\xe0\x22\x4e\x7b\xbf\xab\x16\xb1\xe0\x2c\x50\x4b\x6d\xad\xc3\x40\x83\xdf\x7b\x10\x6e\x48\x88\x17\xca\xef\xcd\x7e\xbc\x60\x9e\x7f\x03\x89\x45\x41\xd7\x03\xd9\x20\x43\x17\x73\xec\x80\xcd\xbe\xfe\x89\x1e\xf1\xd1\x11\x04\x61\x8e\xd2\xc8\x48\xe6\x8e\xf8\x98\x36\x04\x80\xbf\x19\xb2\x2e\x36\x9e\x83\x00\x88\x68\x4f\xac\x39\x1d\x3d\xf7\xaa\xbf\x25\x19\xb8\x6f\xbd\x1d\xac\xbd\x96\x8e\xb3\x59\xfc\xed\xdf\x96\xa5\xb3\x17\x47\xa7\xe3\x5a\x11\xce\xef\x8b\x25\x65\xc3\x94\xfe\x77\xbd\x52\x02\xb4\x85\xd2\x16\x37\x4f\x2e\x88\x05\xd7\x82\xc4\x47\x22\xb4\x15\x1c\x45\x72\x09\x60\x1d\x9c\x65\xfa\xe4\xb9\x87\x68\x43\x55\x62\xa0\x74\x0d\xba\x4e\x50\xc2\xd9\x8c\xce\x73\x5c\xc8\x13\xcf\x74\xbe\x94\x3f\xb0\x07\x2c\x52\x74\x7a\xb5\x3b\x8a\x68\x6f\xe2\xd6\x6e\xc4\x13\x4b\x5b\x0b\x78\xf8\xc0\xd3\x18\x22\x57\x93\x41\x77\x54\x49\x53\x55\xc2\xdb\xca\x92\x44\x35\xa3\x3e\x5a\x99\xaa\xf0\xee\x5a\x60\xfa\x0b\x47\xbb\xde\x86\x05\xc7\x10\x4f\xfc\xc1\xa8\x4b\x9c\x95\x04\xdd\x11\xf5\x40\x08\x43\x6f\xdf\xbe\x35\x60\x8f\xb7\x3f\xfc\xf0\x83\x7f\x48\x04\xa3\x94\x24\x34\xc7\x59\x97\xbc\x27\x49\x3d\xa3\xdf\x7f\xfb\xed\x14\xfd\xef\xd3\x0f\xef\x11\x4e\xc0\xbf\x67\x1a\x8e\x87\xac\x5d\x93\x6d\x4d\x54\x9e\xa0\xff\x75\xf3\xe9\xa3\x7b\x06\xbe\xc7\xd4\xa6\x09\x4c\x26\x77\x17\xcb\x3b\x00\x58\x17\x96\xb0\x70\x93\xaa\xba\x80\xef\xea\x05\x81\xea\x15\x78\x36\x03\x86\x6a\x54\x2f\x2a\x9d\x10\x0d\xeb\xdb\x48\xe7\x0b\xb8\x9e\x94\x01\x43\xcc\x68\xa2\x60\xde\x41\x10\x27\xd7\x8a\x16\x4c\x53\x33\xef\xc0\x3c\x3c\x38\x98\x13\x94\xd1\x7b\x82\x66\xf2\x67\xc1\xcb\xc2\x97\x6b\x23\xab\x6a\x0b\x22\xcb\x4c\x41\xe1\x91\x3b\x62\x27\xae\xbf\xc5\xf7\xcd\x6b\x6e\xe4\xdd\x98\x6a\xff\x08\x7c\x2b\x16\x22\x30\xe7\x8c\x6a\x9b\x60\x56\xd5\x27\x33\x9a\x80\xbe\x10\x01\x5b\xb3\x27\xe4\x78\xdb\x1f\x50\xad\xc4\xb7\xd0\x90\x19\xb6\x59\x6a\xa5\x22\x21\x9c\x71\x36\x0f\x79\x76\xee\xe1\xd5\xee\x3d\x97\x5c\xbb\x2a\xbc\xd9\x63\x30\x12\x39\x06\x16\x19\x59\x3d\xed\x03\x2e\xfc\x49\x74\x81\xa7\xc1\x8d\x74\xcd\xc0\x77\xbc\x54\x2e\x29\xce\xcc\x11\x5a\xc0\x05\x11\x55\xdc\x5d\x8c\x00\x32\x11\x8e\x0e\x45\x3a\x3e\x14\xfa\x04\xdd\x68\x9b\x05\x2d\x03\xde\x37\x03\xb3\x1e\x04\x27\x0b\x74\x4f\x56\x13\xa3\x08\x15\xd8\xab\xca\x7a\x7b\x58\xd1\x7f\x8e\x15\x36\x58\xf0\x60\x8a\x16\xb7\x52\x81\x21\xc2\x29\x9e\x55\x17\x37\x2c\x4b\xb4\x1e\x35\x57\x73\x35\xe7\x83\x49\x3a\x87\xa9\xb4\x7e\x2c\xf4\xb0\xe0\xde\x4e\x8e\x7a\xb0\x3a\xbc\xaf\x8f\x3e\x40\x9d\xa8\x47\xc2\x99\x22\x4c\x39\xb2\x70\x9b\x42\x32\x00\xcc\xb8\xec\xd6\x25\x0f\xa6\xa8\x65\x34\x49\xf5\xb2\xe5\x73\x3e\xf9\xba\x6a\xb5\x56\xa0\xbd\x0d\xf5\xf6\x28\x59\x77\xf5\xe1\x57\x89\x2b\x23\xd1\xc1\x01\x3c\x45\x97\xbe\xbd\x44\xeb\x81\xe1\x4e\x46\x48\x60\xaf\xc7\xc3\x82\x26\x50\x7d\x56\x4f\xd7\xce\x35\x16\x97\xab\x18\x49\x38\x2f\x6e\xd4\x06\x91\x44\x95\x45\x9c\x23\x82\xaa\x0e\xfa\xec\x89\x94\x88\x06\x64\x71\xd4\x23\xc7\xe2\x9e\xa4\xd6\xda\xc1\xd9\x14\x5d\xe9\x4b\x1a\x4e\xd6\x7a\x0c\x04\xc9\x30\x34\xfe\x8f\x71\xe9\xb5\xce\xd9\x6c\x14\x11\xe3\x75\x1e\x4f\xa7\xc7\xa6\x6e\x5e\x60\xdb\x89\x7a\xd4\x0d\x28\x02\x49\x85\x5a\x0d\xf5\x88\xa2\xbc\x74\xfd\x57\xb8\x08\xbf\x27\x50\x75\x10\x7c\xb3\xc0\x2a\xbc\x9d\x60\x6d\x8a\x70\x9e\xd6\x73\x11\xa6\xc9\x9a\x61\xa1\x64\xe1\x5c\x21\x8e\x4a\x6b\x86\xbf\xff\xb4\x3b\x26\x7a\xef\x23\x50\x09\x70\x10\xd5\x23\x96\xbe\x6e\xc6\x3d\xf1\x0c\x4e\x75\x47\xbb\xf4\x46\x04\xc6\x63\x86\xb9\xf4\x4e\xed\x08\xbf\x61\x28\x3c\xa8\xd7\x1d\xb9\xb7\xbb\xbb\x3b\xda\xf0\xd4\x4f\x56\xe4\xc4\xa1\x8d\x6a\xb7\x27\xf8\xd3\x23\x11\x85\x4a\xca\x2d\xff\x7a\x24\xc2\xe0\x7f\xa1\x12\x6c\x81\x38\xc7\x8e\x62\xb9\xe9\xbb\xa3\xe5\x57\x8f\x44\x33\x86\xf3\xbf\x3b\x9a\xc1\x80\xe7\xbc\xf4\x76\x88\x21\x12\xd5\x66\xa0\x22\xd6\x7e\xea\x3b\xd4\x0c\x5c\xc4\xdc\x54\x1b\xfe\x88\x44\xd2\x05\x51\x1e\x65\xa6\x55\x50\x25\x12\x55\x08\xcd\x68\x7b\x98\xf1\x70\x2d\xc0\x8c\xc8\x96\xb5\x19\xae\xdd\x59\x1d\xf5\x8c\x44\xd8\x1a\xeb\xc0\xa7\x63\xf1\xbe\x56\x24\x28\x12\xcd\x46\x3c\x29\xda\xca\xb5\xa1\xd1\x8c\x2f\xc5\x92\x53\x75\x94\x2a\x1a\x45\xd2\x88\x5a\x45\x22\xda\x8a\x7d\xc5\xe2\x7c\x2c\x6d\xc4\xc2\x22\x11\x6d\x46\xd4\xa2\xeb\x27\x92\x28\x8f\x82\xfb\x7d\x23\x3c\xe4\xd6\x1d\xa1\x21\xb8\xee\xf0\x4f\x90\xee\x8e\x47\xd2\xc0\x2b\x0f\x45\x14\xeb\xc5\x0c\xeb\xe3\xd6\xcf\x27\x9e\x1e\x9a\xe3\xc2\xb9\x79\xa3\x11\x9d\xa2\x0f\xc6\xa7\x12\x4b\xb4\x81\xf2\x89\xef\x24\xcf\x4a\x15\x6b\xed\xb6\x65\x40\xd4\x89\xc6\x74\x21\x99\x01\x3e\x07\x92\x91\x3c\x86\x43\xd2\x0c\xd3\xc4\x34\xee\xc2\xc1\xc5\x55\xf5\xda\x8c\x46\x14\x3c\x38\x31\x7c\x5e\x66\x44\x33\x61\xc3\xca\x40\x99\xd1\x5b\x0c\x2a\x8a\x87\xb8\x5d\x12\x2a\x82\x1b\xfb\x59\x95\x94\x32\xa3\xbf\xb0\x54\x30\x59\x5b\x98\xaa\x59\x5e\x2a\x98\x66\x8c\xf2\x54\x66\x44\xbb\xbf\x3c\x92\x93\xa4\x75\x87\x6f\xc0\x5a\x08\x97\x22\xae\xde\x7c\x2b\x76\x12\x1e\x20\x16\x48\x2b\x49\x10\xd8\xb2\x61\x84\x08\x8e\xeb\x19\x65\xc1\x4e\xa1\x50\xb8\xb5\x9d\x8b\x45\xdc\x9e\x5e\x5d\x3e\x63\x34\x48\x63\x96\x41\x14\x53\xac\xf0\x01\x0f\xb2\x69\xf4\xc0\xc4\x23\xc4\xf4\x70\x05\x5f\x3b\xaf\x4f\xf1\x8b\x3f\x84\xbe\x39\x22\xe8\xb4\xcf\x3b\xac\xb5\xb6\x65\x3f\xc5\xd1\xe2\x1b\xa9\xd7\xb1\x5e\xab\x19\x8a\x5b\xbc\x77\x4c\x9b\xc3\xea\xc7\xa6\x98\x02\xd4\x8d\x8b\x40\x34\x0e\x80\xe8\xd9\x06\xd1\x9e\x61\xf8\x0b\x76\xdc\xbb\xee\x6c\x77\x74\x4b\x63\xc5\xda\x3a\x33\x6e\x48\xa6\xb5\x4f\x14\x0b\x68\x66\x06\x77\x45\x2f\xa3\xcd\x13\xca\x6c\x61\xc6\xb8\x82\x17\x2c\xa3\xf9\xc6\xf0\x1d\xc9\xe4\x09\x0a\xa8\x10\xd5\x1d\x98\xa5\x75\x71\x95\x58\x34\x45\x23\xf1\x32\xaa\x1b\x2b\xd2\x93\x46\x51\x9f\x35\x82\xa7\x0d\x37\x32\xa0\xdb\x5e\x7b\xc4\x7d\xe3\xa8\x55\x64\x37\x16\xc5\x6e\x7a\x9f\xa1\x1e\x8d\x78\xf5\x30\x65\xb2\x20\x79\x0c\x8c\x86\x1b\x9a\xe8\x4f\x51\x8f\xcb\x0c\x2a\xd1\x83\xa0\x4a\x45\x8b\x03\x22\x0b\x3c\x23\x22\x8f\x15\x05\x40\xb0\xaf\x27\x2e\x64\x13\x93\xac\xe2\xe8\x68\xf9\xad\x77\x11\x8c\x1e\x82\x71\x51\x0a\xc8\x49\x3b\xbf\xa6\xd9\x9b\x46\x3b\x77\x22\xee\x8d\xaa\xbc\xc4\xf1\xa4\x1d\x72\x90\x85\x2c\x5e\x20\x08\x35\xaa\x75\x45\x83\x71\xd6\xe3\xf4\xea\x12\x2d\x0d\x77\x79\xb6\x97\xeb\x00\x81\x79\x6c\x08\x4c\x2c\x25\x2a\x3f\x40\x60\x0e\x10\x98\x03\x04\xe6\x00\x81\x89\x43\xf4\x00\x81\x39\x40\x60\x0e\x10\x98\x03\x04\x26\x68\x3c\x12\x04\x26\xba\x03\x0e\x7a\x10\x50\x89\x22\xf2\xcf\xc7\x00\xd7\xb0\x28\xdd\x98\x9a\x03\xde\xb8\xa9\xad\x65\x2b\xa7\x44\x45\x64\x9b\xc4\xba\x58\x4f\xdd\x62\x6b\xfc\x7b\x02\x75\x47\x7c\x28\xcc\xf1\xf1\x74\x7a\x6c\xb2\xaa\x62\x43\xdb\x4b\x35\x9b\xfc\x21\x12\x4d\xc2\x12\x9e\x92\x74\x1a\x11\x4c\x36\xa3\x42\x2a\x08\x4b\xc5\x80\x88\x98\x61\x18\xbb\x79\x47\x31\xb1\x4a\xb9\xbd\x9b\xf1\x81\x45\xe6\xfc\x63\xb2\xf7\x68\x96\xbc\xab\xa1\xf5\xd3\x23\x06\x46\x6c\x20\x23\xd6\x83\xaf\xe6\x1c\xf7\x4a\xd9\x67\xef\xdb\xe7\x62\x7d\x40\x5c\xa4\xaa\x51\x16\x4d\x5b\xca\x29\xb4\x66\x4a\xc1\xc0\x21\x32\xda\xbe\xbe\x32\xa4\xa7\x49\x51\xc6\x53\xed\x80\x62\x4e\x72\x2e\xbc\x3b\x6a\x77\x87\x5b\xb6\x9e\x68\x44\x75\xb1\x22\x6b\x66\xfb\x3a\x62\x74\x28\x29\x85\x20\xcc\xbf\xdc\x65\x77\xfc\xc3\x45\x9b\xdc\x23\x7a\xa6\xc1\xa6\x8a\x73\xf8\x37\xaa\xe8\x1b\x9d\xe6\x15\xee\x4b\x22\xba\x9a\x01\x0c\x5a\x9d\x56\x44\xc2\x33\x2e\xac\xab\x20\x5a\x34\x18\x35\xc0\x7f\x91\x67\x4a\xd8\x32\x22\xc5\x25\x16\x9e\xcd\x2c\xfa\xc6\x23\x44\x85\x52\xba\xa4\x92\x47\x13\x73\xbd\x58\x4a\xff\x9a\xe5\x7d\x43\x8b\x67\x5e\xaa\xa2\x8c\x19\xc2\x31\x56\x6d\x3c\x1d\x02\xd9\x89\x92\xaf\x05\x8f\x17\x6c\x40\xcd\x3a\xa7\x31\xdf\xd2\x23\x85\x44\xbf\xf5\x2d\xdf\xbf\x3e\x0a\xac\x14\x11\xec\x1d\xfa\x3f\xaf\xfe\xf2\xdb\xbf\x4d\x5e\xff\xf1\xd5\xab\x3f\xbf\x9d\xfc\xff\x7f\xfd\xed\xab\xbf\x4c\xe1\x3f\xbe\x79\xfd\xc7\xd7\x7f\x73\xff\xf3\xdb\xd7\xaf\x5f\xbd\xfa\xf3\x2f\x1f\x7e\xbe\xbd\xba\xf8\x2b\x7d\xfd\xb7\x3f\xb3\x32\xbf\x37\xff\xf7\xb7\x57\x7f\x26\x17\x7f\x1d\x49\xe4\xf5\xeb\x3f\xfe\x7f\xd1\x96\x80\xd9\xea\x53\x24\x95\x1a\x81\x24\x8c\xef\xdc\x69\xd2\x8d\xca\x66\x10\xfa\x3a\xa9\x21\xf7\x13\xca\xd4\x84\x8b\x89\xf9\x8a\x77\x48\x89\x32\x9e\x4f\xc5\x3c\x8f\xc7\x92\xbc\xb1\xdd\x4a\xa8\x31\xe7\xc7\x08\x73\x3f\x33\xe1\x63\x6a\x33\x3f\x63\x64\xb7\x99\xe0\xa1\xc8\x5f\xdf\x38\x14\xf9\x7b\xae\x45\xfe\x6e\xcc\xad\x75\x71\xb3\xaa\x4e\x5b\x84\xc5\x9b\x3a\x6f\x75\x85\xbe\x60\x92\xcd\x0a\x7f\x71\xe0\x9c\xed\x0a\x7f\xae\x42\x5f\x2c\xb2\xa6\xc2\x5f\xbb\x42\x5f\x30\x6d\x4d\x38\x7a\x8d\xba\x56\xc5\x59\x7d\x72\x51\xa6\xd9\xad\xd0\x17\x7e\x01\xa0\x5d\x7b\x63\xf5\xc1\x14\xe1\xde\x77\x2a\xf4\x05\x13\xbd\x9c\xbd\xb4\x0a\x7d\x86\x0b\xc4\x89\xf0\x1f\xca\xf3\x1d\xca\xf3\x05\x8d\xe7\x9d\xc7\x74\x28\xcf\xb7\xf3\x78\xb6\x99\x45\x87\xf2\x7c\xdb\xc6\xa1\x3c\x5f\xf8\x38\x60\x93\xeb\x71\x28\xcf\x77\xc0\x26\x1f\xb0\xc9\x07\x6c\x72\x1c\x92\x07\x6c\xf2\x01\x9b\x7c\xc0\x26\x1f\xb0\xc9\xe1\xe3\x85\x60\x93\x0f\xe5\xf9\xa2\x10\x3d\x94\xe7\x3b\x94\xe7\x8b\x42\xf4\x50\x9e\x6f\xd7\x71\x28\xcf\x17\x34\x0e\xe5\xf9\x76\x1a\x8f\x5e\x9e\xcf\x04\x4e\xc2\xe3\xba\x55\x6d\xbe\xbf\xcb\xd2\x7c\x52\x3f\xbb\x84\x9c\x26\x09\x2f\x99\xba\xe5\xf7\x24\xa8\x9e\xca\xa3\x03\x39\xd6\x66\x1b\x44\xf9\xd9\x95\xea\x8b\xe1\x42\x0f\x76\x7b\xc7\x72\x78\xe3\x32\xa5\x84\x85\xc3\xb6\x5a\x97\xea\xd4\x12\x8d\x85\x04\xd0\xa6\x0a\x4b\x49\x5a\xcd\x36\x16\x12\x44\xe9\xdb\x39\x45\xa7\x48\x90\x84\x16\x34\x86\x12\xc6\x67\x08\x1b\xba\x86\x17\xd1\x94\x30\x15\x83\x6f\x52\x25\x49\x36\x33\x4a\x18\x66\x8e\x2e\x8d\x60\xc1\xd5\x40\x03\x1b\xcf\x7e\x94\x6d\x8e\xd3\x61\x10\xd4\x81\x07\x2a\x09\x92\x0b\x5e\x66\x29\x12\x24\x4a\x5c\xac\x71\x1b\x6e\x63\xee\x80\x03\xf8\x22\x0b\xe7\x89\x78\x6c\x76\x73\x71\x41\x35\xcb\x25\x22\x4e\xe0\x38\x82\xfa\x41\xbe\x16\x54\x80\x48\xb9\x21\x09\x67\x69\x5c\xe8\xda\x45\x97\x7a\x2c\x2e\x63\x73\x8f\x48\x8a\xd2\x52\xc4\x29\x83\xc9\x67\x68\x89\x33\x9a\x52\xb5\x8a\x95\x1b\x6c\xc5\x2b\xc2\x46\xbe\xda\x4b\x1b\x4c\xf6\x54\xd6\x4f\x00\xe1\xa2\x10\x1c\x27\x8b\x08\x8a\x7c\x7d\x17\x4e\x8c\x1f\xa2\xbc\x23\x59\x04\x95\xcf\x75\x40\xcf\xca\x39\x65\x71\x70\x32\xb0\x66\x45\x97\x24\x5b\x21\xc1\x15\x8e\xe0\x8a\x68\xe8\x43\xee\xc0\xc2\x69\xd6\x5c\x2a\xd6\x66\x82\x6b\xdd\xd8\xf8\x4a\xac\x62\x04\x80\x15\xb7\x5b\x58\xdf\xaa\xf0\x67\xda\x10\x26\xfa\xcd\xf2\x2c\x8d\xc0\x45\xd5\x02\x33\xf4\x87\xb7\xa8\x20\x22\x21\x2c\x4a\x26\x8a\xb6\x45\x14\xcd\x21\x79\x3f\xa3\xcb\x28\x49\xf1\x8f\xb8\xf8\x7f\xfe\x0e\x2d\x78\x29\xe4\xf4\x3c\x56\x32\x8a\xe2\xe8\x5b\xa0\x09\x6e\x76\xad\x06\xc5\x80\x58\x62\x85\x32\x82\xa5\x42\xdf\xbe\x45\x39\x65\xa5\x22\x32\x8e\xc8\x8b\xe3\x09\x6f\xf8\xc0\xbf\xff\x2e\x88\x56\x0c\xef\xf7\x5a\x85\xc0\x18\xb0\x3f\x28\x59\xab\x69\x45\x4b\xfc\xb7\x5a\x51\x0e\xa2\xac\xe0\x34\x8e\x02\x5e\x45\xa1\xa2\x98\x8d\x76\xa6\xf5\xeb\x63\x8a\xef\x51\xd7\xfa\xb5\xe4\x77\x2b\xe5\x61\xb0\xb5\xae\xc4\xbf\x1b\x2a\xcd\xfa\xdf\x3e\x98\x37\x47\xc6\x1c\x20\x37\xe6\xc3\x82\x4b\x65\x62\x8b\x72\x81\x85\x97\x12\x81\x51\xc1\xd3\x63\x89\x32\x3a\x23\x9a\x95\xee\x4c\x22\xc8\xd6\xf7\xb7\xf0\x27\x48\x90\x39\x95\x4a\xec\x6e\xef\x4d\xac\x4e\xb3\xf3\x07\xc3\x5c\x01\x73\xc1\xcb\xc2\x8f\xdb\xb4\x2e\x14\x44\x67\x5d\xc4\xc9\x73\x25\x66\xe0\x24\x21\x12\x0c\x26\x2b\x90\x0c\x6a\xdb\xcc\xd4\x8b\x66\xa0\x65\x23\x08\x4e\x3f\xb1\xcc\x13\x13\xd8\xda\xa5\x6b\x4b\x0a\x2d\x88\x20\x21\x6a\xeb\x8c\x8b\xc4\x28\x57\xee\x09\x5a\x8d\xd8\x1b\x0c\x7b\x67\x5f\x31\x49\x8d\x8f\x41\xaf\x7a\x02\xd5\x33\x1a\x38\x36\x5f\xbe\x77\xde\x30\x83\x67\x38\x93\x9e\xe8\xb5\x50\x7f\xaa\x7b\x9c\x51\x4e\xd2\x90\x6a\x70\x50\xdf\xfb\x8e\x24\x65\xf3\x4c\xab\x89\x28\x2f\x33\x45\x8b\xac\x3a\x55\x4f\x92\xd5\xe4\xac\xf1\x11\x9e\x48\x81\x65\x8d\xb9\xc6\x12\x58\xfc\xbb\x82\x0b\x15\x92\xea\xf5\xaa\x5a\x2d\x61\x4a\x50\x22\x4d\x15\x77\x52\x60\x81\xfd\x73\xa8\xe0\xf2\x26\x3c\xcf\xb1\x7c\x6d\xb3\x3e\x30\x14\xf0\x97\x01\xf6\xb7\x36\x0d\x04\xce\xaa\x0b\xd4\xac\xad\xb0\x0f\x96\xa4\x08\xc3\xcc\x33\x9d\xb3\x0d\x89\x00\x42\x88\x3f\xb8\xa6\x1a\x9e\x1b\x34\xa7\x4b\xc2\xba\xbc\x28\x28\x54\xfe\x23\x4e\xee\x09\x4b\xd1\x67\xe9\x38\x52\xba\x62\x38\xa7\x09\xce\xbc\x6b\xb8\x14\x82\x2f\xa9\x66\x64\x24\xed\xcc\xd5\x3b\xbd\xca\x80\x3d\x29\xe0\x73\xd0\xdd\xca\xe8\xc8\xe0\x95\xd8\xc7\xbd\x28\xa5\x6f\xe5\xa4\xd6\xad\xf8\x2c\x89\x78\x1c\x59\x2e\x0d\x38\x5a\xd0\x65\x42\xc2\x3c\x22\x7a\xa9\xfb\xd8\x62\xb3\x1f\x11\x36\xf9\x8b\x7d\x24\x35\x67\xf5\xdc\x09\x50\xb5\xab\xa4\x56\x09\x60\x9a\x4c\x8b\xef\x95\x2b\x1c\xe8\x49\xb8\xf3\x9c\xef\x56\x80\x8c\x08\x11\xdd\x5e\xeb\x14\x77\x1e\x9a\x78\xa7\x7a\xc0\x8f\xe7\x2d\x53\x07\x5d\xe3\x94\xfb\x70\xee\x1f\x33\x9e\xdc\xa3\x73\x02\x2e\xbd\x7e\xab\xc7\x83\xaa\xb1\x93\xac\xd5\xd3\x30\x7b\x0c\xc4\xc3\x40\x34\x3c\xc8\x3a\x50\x07\xf9\x8a\xf3\x22\x23\x72\x7a\xff\x07\x80\x75\x58\x96\xf7\x46\xdc\xa5\x6f\xae\x2f\x4e\xcf\x3f\x5c\x4c\xf3\x74\x77\xf4\xc2\xde\x6c\x2c\x9a\xe3\xf9\xee\x1c\x69\x82\x72\xce\xa8\xe2\x62\xf7\x73\x0f\x33\xb1\x66\xf2\x56\xef\x54\x38\xc7\x38\xfe\x89\x66\x44\xae\xa4\x22\x39\x6c\xbe\xe7\xb3\xb6\x1e\x12\x67\x30\x68\xee\xb1\xe2\x25\x7a\xc0\xde\xbc\x58\x8b\x0a\xfd\x16\xa6\xe8\x96\x16\xef\xd0\x05\x93\xa5\xb0\x94\xfd\x15\x80\x59\x7b\xb1\x20\x63\x5d\xcd\x35\x5f\x1b\x67\x55\x3f\x55\x7d\xa2\x58\x69\xad\xc7\x7c\x89\xaf\x69\x73\x61\x1f\xd7\x3b\x74\x44\xbe\xaa\xef\x8e\x4e\xd0\xd1\xd7\x99\xd4\xff\x30\x35\x93\xde\xad\x49\x2e\xf3\x22\xa3\x09\x55\xd9\x4a\x3f\x7f\x22\x04\x49\x6d\x31\x58\xf3\x35\x9e\x64\x69\xab\xf0\x43\x93\xbf\x8c\x82\x80\x49\xc5\x05\x9e\x13\xc7\x41\x7e\x23\xee\x7c\x8f\xc2\x20\xbc\x16\xfc\x01\xa5\x1c\x3d\x40\xfa\xf8\x92\x30\x65\xb2\x95\x7d\x4d\x29\x1b\xbf\x6e\xdc\x9c\x99\xe0\xb9\xb6\x06\x0a\xc1\x73\x2a\x43\x64\x2c\x41\x39\x4e\x16\x94\x11\x3f\x98\x57\xa0\xd6\x01\x2c\x2f\x06\x0b\xb9\x5d\x10\x24\xb4\xf0\xf3\xe4\xa2\x66\x80\x1e\xd0\x77\x79\x46\x89\x9a\xdf\x2c\xf8\xc3\x44\xf1\x49\x29\xc9\x84\x7a\x56\xca\x09\xdc\xcf\x7b\xb2\x82\x12\x48\x11\x76\xf4\x17\x43\xca\x85\x91\x03\x80\x3d\x8a\x03\x86\x0d\xa8\x69\x03\xf3\xfa\xc7\x73\xad\x89\x4f\x9d\xf2\xec\xfb\x2a\x24\x7a\x43\x54\xf2\x26\x21\xc5\xe2\x8d\x5d\x78\xa0\x66\x81\x76\xd5\x2e\x9e\xc1\x91\x3b\xe9\x1f\xe3\xcc\x4f\x51\xc2\xb3\x8c\x24\xfa\x7f\xfd\x43\x86\x67\xa4\x58\x54\xd3\x7a\x0e\xcf\xc9\xbf\x6a\x40\x50\xad\x80\xc0\x83\x2d\x38\xf7\x84\xba\x6e\x62\x8d\x9a\x62\x80\xad\x83\x9a\x9e\x6b\x71\xd7\x2f\x66\x5f\xca\xb3\x89\xe8\xfd\x3e\x7e\x04\xf7\x77\x45\x52\x12\x05\xda\x9c\xa7\xe3\x05\x59\x7b\xfc\x83\xd6\x63\xe5\x34\x96\xc7\x1a\x3d\x83\xa3\xf7\xf7\x97\x9b\xa2\x6c\xde\x05\xc9\xbb\x05\xc8\x2d\x31\x88\xe7\xf8\xd7\x9f\x72\xb8\xb7\x52\x2d\x08\x53\x34\x01\x74\x91\x9d\xaa\xff\x75\xaa\x85\xed\xe5\xcc\xf8\x09\x53\x92\x22\xbe\x24\x42\xd0\xd4\x1b\x08\x55\x49\xdb\x66\x28\x8b\x66\x41\xa9\x1b\x7b\xbd\x4b\x01\xe8\xe9\x70\xc8\x72\x58\x5e\x4e\x6f\x46\x4e\x20\x26\xaf\x9d\x8b\xf3\xdc\x72\x69\xfa\xb3\x68\x5c\x16\x4c\x00\xe1\x46\xfe\x4c\x94\xfc\x97\xe7\xe1\xf5\x6e\x28\x00\x9a\x62\x2c\x05\x00\xa7\x39\x65\xff\x60\xfa\xb6\x4c\x70\x46\x2e\x3f\x05\xba\x6d\x6f\x0c\x95\x50\x90\x8a\x23\x53\xe8\x2b\x2b\x15\x61\xaa\xaa\xaa\xa8\x14\x4e\x16\x5e\xee\x24\x40\xb6\xd9\x78\x39\x67\xe8\x97\xea\xad\x23\xc6\x53\x1f\x64\xda\xde\xbc\xa9\x73\xac\xc8\x83\x87\xda\x3f\xa9\xd5\x03\x9f\xcf\x82\x7f\xe6\xa5\x7a\x62\x3b\x8e\x58\x7f\xd4\x85\x75\x9b\x56\x45\x78\x1a\xbe\xab\x00\x63\xaa\x76\x94\xf6\xbb\x3c\x3d\x49\x5b\x47\x29\xba\xf8\x3a\x8d\xeb\xec\x6c\x70\x4b\xa0\xf7\xe4\x21\x26\x3d\xec\x3b\x88\x11\x54\x77\x1b\x8e\xd3\x54\x10\xe9\x2b\xc2\xad\xa2\xeb\xd8\xd7\xe9\xd5\x25\xfa\xd9\xcc\x71\x2f\xfb\x53\x08\xae\x8c\xc7\xe3\x9c\xe7\x98\x7a\xe6\x20\xae\x6d\x54\xa3\x71\x9a\x5b\xaa\xe7\x7e\x5d\x55\x13\x44\x66\x86\xa0\xd7\xdb\xae\x42\x33\x3a\x2f\xfd\xdb\x6b\x58\xbf\xf7\x5e\xf6\x3d\xa2\x01\xbe\x66\xd4\xfa\x22\x77\xf4\x9c\xde\x3c\x08\xaa\xc8\xeb\x69\x1b\xd4\xe6\x8d\xda\xc9\xb2\x01\xab\xde\x3f\x1e\xd0\xb2\xea\x5f\xbc\x11\x5d\xdb\xd0\x75\xbc\xdf\xdf\xd9\xdc\xa8\xbb\xae\x5f\x8a\x63\x34\xde\xc8\x0a\xa3\x15\x19\x5b\x43\x12\x26\x29\x94\x48\x69\xa4\x18\x7b\x07\xc3\x66\xa6\xee\x5d\x55\xbe\xd7\x98\xe7\x27\xe8\x3d\xf7\x05\xda\x20\x27\x0d\x39\xb3\x97\x0f\xd3\x2c\xe4\x82\x1c\x2c\xe3\xd6\x38\x58\xc6\xcf\xc1\x32\x96\x32\xbb\x60\xf8\x2e\xf3\xcd\x56\x6f\x2b\xbd\x19\x9e\x6b\xb6\x41\x80\xe2\x9b\x94\x4a\xfd\xaf\xe7\xd2\x6e\x6e\xde\x03\x4a\xb3\x64\xce\x83\x07\x18\x3f\xab\xe0\xf8\xa2\xf1\x6c\xba\x6d\x80\x70\x0b\xe6\xf6\x46\x53\xf8\xe0\x5d\xff\xb4\xdd\xa7\x81\xa5\x7a\x7b\x88\x74\x65\x33\x02\xc2\xd7\x76\x66\xc0\xea\x71\x55\x67\x1c\xb2\xa8\x7d\xe1\x14\x04\xdd\x2e\x68\x72\x7f\xd5\x80\x55\x72\xa1\x7f\xc6\x1a\x3f\x8a\x60\x14\x44\xa1\x18\xfa\x94\xcc\xf6\x5d\xc5\x09\x36\xdd\x36\x14\xfb\x1b\x43\xd9\x57\xeb\xe5\x3c\x43\x58\x4a\x9e\x50\x5c\x81\xf7\x21\x10\x5d\xa9\xc3\xbe\x8f\x09\x94\xe8\xfd\x6c\x36\x58\x9a\x8f\x60\x61\xc8\xa0\xbd\xb6\x26\x3f\x96\x0d\x8b\x42\x2b\x99\xf6\x24\xf7\xb2\x55\xe6\x21\xfb\x37\x3d\xdc\xb8\x5d\x38\x10\xfa\xdb\x86\xa0\x56\xbd\x12\x82\x4c\x3c\xe7\x73\x59\x60\xe3\x5a\x6d\x5f\x7b\x6f\xe6\x48\x65\xc5\x0f\xa1\x21\xd4\x93\x1f\xa4\x6f\x7b\xa6\xbe\x08\x5b\xa8\xbb\xd4\x5a\x04\x36\x81\x0f\x8a\x6c\x14\xbc\x28\x33\x93\xcd\xed\x95\x46\x6a\x4b\xe1\x87\xa2\xcd\xcc\xcc\x9e\x18\xa8\x1a\xa6\x9c\x37\xea\xe0\xc6\x88\x50\x54\xe5\xcf\xeb\xc2\xa0\x9e\x97\xbe\x94\x06\x50\xd8\x29\x54\x8e\x38\x0b\x04\x8d\x83\x03\x13\xdd\xad\xdc\xd2\x1b\xce\x4d\x6f\x4b\x0d\x6a\x4a\xb7\xca\x6a\x57\xb5\xc0\x3d\x49\xbe\xfd\xe1\x87\x1f\x5a\xb5\xbf\xa3\x54\xed\xee\x54\xe9\x8e\x51\x5f\x7b\xad\x9e\x76\x8c\x4a\xd8\xdd\xca\xd7\x8d\x9a\xd5\xde\x7e\x6c\x7b\x1d\xdb\xc8\x89\xb7\xdf\x7f\xf7\x9d\xb7\xfe\x47\x05\x49\x14\x87\xc4\x30\xdb\x96\x23\x10\x5f\x87\x05\x01\xff\x81\x29\x79\xec\x9c\xe3\x26\x77\x47\x51\x36\xf7\x9d\x69\xab\x8c\x74\xb3\x00\x74\x88\x54\x6a\x15\x7c\x6e\x96\x6a\x0e\x84\x54\x9b\xd2\xcc\xed\xa2\xca\x01\x0f\xa9\x2e\xa2\xdc\x2a\x7f\x1c\x52\xfa\x3c\xb0\xdc\x71\x78\x51\x87\xd0\x72\xc6\x01\x60\xb8\xa1\x2e\x7d\xd0\x65\xcf\x1f\x88\xd2\xe8\xcd\x17\xad\xb7\xde\x5a\x47\xbd\x66\x47\x3c\x7f\xab\xb2\xdd\x4d\xad\x91\xad\xe0\xfb\xf0\xe5\x7a\xf7\x3b\x8b\xd7\xf5\xdf\xcf\x66\xcf\xbb\x76\xcf\x3a\x7f\x2f\x67\xbb\x24\x3f\x0a\xef\xd5\xb6\xd6\x99\xb0\xde\xd1\xd0\x94\x60\xd3\x95\x6e\xbd\xab\x5c\xc8\xd9\x77\x7a\xc9\x35\x7b\xc1\xf9\x5a\x0c\x55\x71\xbb\x88\x1d\xe0\xd6\xfb\xbe\xb5\xfa\xb6\x85\x9c\xd5\x7a\xb7\x36\xdb\x6d\xcd\xdb\xcb\xdd\xea\xd1\xb6\xd6\x63\x2d\xc0\xd1\xdf\xd3\x59\x0d\xaa\x39\x07\xdc\xa7\xaa\x9f\x5a\x68\x3f\xb4\xbd\xe2\x99\xd7\x3a\x9e\xb5\xfa\x95\xf9\xfb\x82\x79\xb7\x4b\x59\x60\x8f\xb1\x08\x05\x51\x43\x8b\xa1\x86\x74\x11\x0b\x2a\xa2\x1a\xa3\x80\x6a\x60\x9f\xb0\x35\xcf\x4b\x84\x66\x76\x11\x7a\x82\x45\xa9\x03\x19\xda\xff\xeb\x31\xba\x7e\xb5\x7b\x7d\x59\xe3\x37\x6c\xb7\xdb\x86\x73\xa4\xde\x5c\xdd\x8e\x5c\x46\xab\x08\x22\xd9\xb5\x9a\xc3\x3b\x68\x45\xb7\x9d\xcd\xd8\x60\x41\x87\x2d\x9e\x6b\xc1\x12\xb5\x2f\x55\xd3\x06\xaf\xac\xe9\x20\x8a\xeb\x96\x78\x78\xf7\xa8\x66\xcf\xa8\x58\x4d\x94\x1b\xba\x4e\xac\x1e\x4f\xad\xce\x4e\x0d\x63\x3a\xf0\xc6\xaf\x19\xe2\x11\x1a\xf3\xc4\x35\xc7\xcd\xd8\x64\x94\x07\x11\x6d\xf7\x37\xb2\xa6\x79\xd8\xd2\x2b\xb3\x3e\x4e\x3f\xa2\x58\xb5\x17\xe3\xf4\x1e\x0a\xad\xb9\xb8\x26\xcb\xa3\x94\x48\x34\x2a\x71\xbb\xa0\x61\x8e\x7d\xed\x0b\x33\x54\xa5\x68\x54\x5d\x62\x42\xaf\x46\xa3\x7b\x4f\xdd\x77\x27\x88\x62\xd7\xac\x88\xd6\x27\xa7\xd5\x1d\xa7\x61\x6a\x04\x6f\x69\xa4\x6e\x36\x81\xca\x57\x58\xe7\x8f\xbe\x7e\x1f\xcd\x7e\x1d\xbe\x50\x0f\xe3\x12\xaa\xbb\x74\xd4\x56\x68\x48\x9b\x8d\x38\xb8\xbc\x48\x81\xd3\x26\x6a\x2a\x2c\x17\xcd\xdd\x78\x53\x09\x06\x80\x4e\x05\x4e\xe0\xe9\x97\x51\xb3\x10\x9f\x22\xf2\x86\x02\xc3\xa2\x66\x1a\xdc\xc3\x46\x6b\xdf\x65\x43\xe7\xd3\x4d\x58\xb5\x3e\xdc\x20\xd4\xc9\x20\xf1\xf4\xa0\x3f\x9f\x0c\x92\x43\x62\xc5\xb6\xf1\x12\x13\x2b\x9e\xa6\x8a\xcc\x3e\x60\x2f\x07\x54\xfc\x01\x15\xbf\x8e\x8a\x77\x77\xd2\x1b\x14\x5f\x23\xe2\x8d\xbc\x05\x43\x9c\xdf\x69\x45\x34\xac\x78\x50\x2d\x39\x4e\xaf\x2e\x51\x22\x08\x34\x82\xc1\x99\x9c\x22\x74\xe9\x5b\x40\xa4\x6d\xd7\x57\xe8\x57\xe3\x43\x08\x8c\x18\x61\xa5\x48\x5e\xa8\xb0\xe7\x7d\x00\xc5\xb7\xc6\x01\x14\xff\x1c\x40\xf1\x51\x11\x93\x5f\x2a\x62\x61\x01\xe5\x45\x99\x63\x36\xd1\x12\x04\xdf\x65\x9d\xac\x38\xc7\x3a\x3c\x49\x3b\xf4\x9d\xab\x38\x0a\xf7\x04\xc0\x30\x9c\x79\x97\xd2\x2d\x19\xfd\xb5\x24\x75\x24\xaa\x32\x54\xf6\x0c\x82\x85\x39\x44\x3d\x57\x63\x7e\x45\x91\x2c\x09\x2f\x48\xa7\xfc\xa2\xd9\x40\x5f\xcb\xda\xdd\x0c\x10\x22\x88\xf1\xfa\x18\x7c\x75\x83\x46\xa9\x70\x3d\x4d\x63\x8c\x5e\xf1\xf4\xd8\x77\xe1\xb5\x05\xdb\xf6\xf3\x82\xa3\xd7\x37\xfa\x9c\x65\xfc\xc1\x20\x2e\x9a\x66\x93\x7e\x33\x7a\x8f\x03\x24\x35\xe8\xc6\x39\x15\x82\x0b\x0b\x2a\xa6\x2c\xf8\x01\x42\x1a\x2a\x9d\x2f\x14\x11\xc6\xe1\x69\xf2\xce\xa6\xe8\xc6\xdb\x4b\xd0\x60\x3b\x8a\x23\xcc\x4c\x69\x5e\xfd\xdf\xae\x64\x4d\xc0\x3d\x75\x7a\xc4\x1d\x59\xe0\x25\xe5\xa5\x80\x99\xfa\xdb\x62\x47\x96\xe0\x91\x36\x1c\x56\xbc\xac\x80\x78\x65\x40\x45\xc6\xea\x5e\xc9\xb5\x63\xf2\x95\x55\x1f\x6b\x92\xe0\xe0\x4f\xb9\xc3\x8a\x4c\xc8\x57\xea\xdd\xc5\xa8\x3b\xbd\xea\x21\x58\xa0\xed\x93\x73\xcc\xa5\x2c\xb4\x51\xf2\xc5\xb3\x92\x75\x9b\x4f\x36\x69\x85\xba\x57\x96\x37\x40\xac\xcf\xb9\xe2\x5c\x25\x3e\x4e\x51\xe6\x3a\xa5\x99\xc6\x05\xae\x90\xe7\xd3\x3a\x58\x42\x4a\x74\x98\xfd\xb8\xf2\x41\x3b\x1c\xfc\x3a\xdb\xc6\xc1\xaf\x53\x8d\x67\xe0\xd7\xa9\xd2\xec\x32\x9a\xac\x2e\xcf\x63\x78\x07\x6c\xde\xa3\x21\x89\x7e\xc4\xd2\x1b\x4c\xf7\x01\x33\x3c\x87\x20\x14\x7a\x75\x73\xf5\xe3\x87\xd7\xfa\x79\x41\x60\xee\xf2\xdc\x57\x95\xe9\xc9\xdc\xbb\x69\xee\xc1\xc7\x7d\x94\xdc\x47\xdd\x93\x88\x64\x2d\x3d\xc9\x59\xec\xa5\x49\x01\xaa\xac\x90\x2b\xef\x50\xf2\x7a\xd3\x3e\x93\xe8\xe6\x7a\x06\xfb\xaa\xcb\x1d\xb1\xba\xcc\xd3\xfb\xc7\xda\x9e\x06\x22\x6a\xf3\x1e\x8c\x01\x67\x6e\x05\x60\x76\xee\x95\xc0\x8a\xcc\x57\xe7\xa4\xc8\xf8\x4a\x5f\x8a\xab\x06\x34\xcb\xfc\xe9\x1d\xd9\x6a\x9e\x8b\x3b\x9c\x20\x51\x66\xd0\x44\x23\x5d\xeb\xb5\xcb\x08\x49\x6b\x09\x41\x99\x54\x18\x1a\xa7\x9a\xef\x1e\xa0\x3c\x52\x71\x18\xa3\x22\x4c\xcc\xfc\x06\xff\xa2\xdd\x82\xff\xe3\x70\xa9\xcd\xb1\x0a\x02\x7c\xed\xb6\x7b\x3d\x1e\x76\x3b\x12\x60\xdb\x7e\x12\xc0\x35\xae\xcb\x4c\x8b\xe7\x2c\x95\xcd\xd2\x22\x56\x63\xb7\x27\x3d\xe6\xa5\x60\x54\x18\x2e\xa4\x57\x76\x82\xee\x4a\xad\xf0\x13\xd9\xc2\x1e\x34\xbe\x60\x0c\xc5\x3b\x5e\x2a\xf4\xb0\x30\xf8\x7a\x4d\x16\xe1\xa2\xc8\x28\x81\xd0\x02\x17\x16\x82\xbe\x8b\x8d\xde\x43\x68\x3b\x6b\xdb\x49\x4f\x1d\xaf\x97\x4e\xd0\x92\x88\xbb\xed\x5b\xbb\x9b\xca\x89\x0b\x0a\x78\xa7\x91\xfa\x69\xeb\x42\x9c\x5e\x5d\x9a\xcf\xba\xfc\x8b\xa6\xdb\xcc\xfd\x72\x24\xab\x83\xfb\x63\xcf\xdd\x35\x04\x37\xd9\xc0\xc6\x45\x5f\xf7\x66\x3b\xbd\xba\x1c\x49\x73\x6e\x26\x07\x6d\xcd\x6a\x37\xbd\xb6\xd6\xb1\xa9\x53\x55\xf7\x1c\xc7\x73\xfd\xbd\x63\xcd\x0a\xce\xaa\x65\x12\x56\xe6\x04\x1a\xa6\xd5\x13\x46\x94\xc1\xb7\x9c\x5e\x5d\xee\xd4\x36\xb1\xf2\xfd\x67\x19\x7f\x18\xab\x00\xee\x0a\xb5\xdf\x09\x5a\xbf\xa3\x44\x66\x9c\x5d\xdb\x4d\xf8\x7c\xfd\xde\xe7\x4a\x7d\x6c\x53\xb0\xed\x99\x88\xd2\xdb\x5d\x60\xa1\xe8\x68\xe4\x68\x29\x32\x07\x14\x34\xf5\x44\x6d\x32\xf5\x02\x2f\x49\xdd\x18\x6b\x8a\xd0\x37\x63\xe5\xba\xbe\x47\xf6\x68\x0c\xbf\x82\xf6\x8c\xa6\xb1\x1d\x9a\x95\x59\x76\x82\x66\x94\x61\x2d\x92\xc8\xd8\x23\x6f\x02\xac\x6e\x28\x4b\x88\xde\xc3\x89\xbb\x49\x08\xf6\xc0\xba\x6b\x46\x52\xac\xd8\x1b\x24\x31\x01\x22\x9a\x64\x29\x34\xad\x86\xe9\x6a\x46\x96\x80\x93\x7b\x7c\xba\xe9\x59\x56\x4a\x45\xc4\x35\xd7\xa2\xb9\x91\x6d\x06\xed\x3d\x70\xf3\xd7\x3f\x52\x96\xee\x90\xca\x79\x0d\xc2\x3e\xc1\x0c\x11\x0a\x41\x0f\x3d\xbd\x95\x66\xd7\xfa\xed\xd4\x0f\xea\x95\x2c\x47\xe7\xde\x61\x89\x8e\x0a\x9e\xca\x23\xcd\xf2\x8f\x4c\x38\x51\x1e\xbd\xd6\xff\xd7\xdd\xdb\x91\x14\x21\xd5\xca\xcc\x01\xa8\xbf\xc1\x05\x3d\x7a\x7d\x82\xe0\x12\x00\x80\x8f\xab\xc5\xcb\x7b\xad\x6e\x27\xc0\xef\xe6\xf1\x56\xaf\x9b\x9f\x87\x97\xca\x2a\x04\x9c\x96\xb5\xa3\xfb\x67\x66\x54\xc2\x03\x37\x91\x11\xd7\xb7\x68\x4d\xf0\x22\x74\x3a\xd6\x53\x4f\xf2\x42\x41\x9c\x1e\xe5\x04\x3b\xc0\x30\x59\x12\xb1\x52\x0b\xdb\x2c\xe4\xc5\x32\xd9\xea\x55\x04\x1c\x99\x65\xac\x6e\xe3\x2b\x92\xa3\x85\x35\x95\x3d\xc7\xe3\xa8\x9f\x66\xd9\xee\xae\x48\x0c\x1f\x72\x22\xff\xc5\x9d\x0a\xe8\x66\x1e\x27\xf2\x45\x7f\xae\x7d\x1a\xe6\x47\x46\x74\x69\x76\x38\x76\xc2\x1c\x9d\xbe\x7f\x6f\x91\x2a\x66\x1f\x7f\xa1\x2c\x35\xb6\xd4\xa9\x52\x82\xde\x95\x8a\x5c\x13\xbd\x24\x50\x7f\xc6\x9e\x8c\xd5\xca\x5c\x11\x19\x7b\xf4\x53\x04\x13\xf5\x3e\xeb\x7b\x3d\xb7\x97\x74\xce\xeb\x66\xdd\x38\x73\x6c\x23\x69\x67\xb9\xf6\x93\x19\xf8\xb0\x35\x7d\x3f\xf0\xb4\x8f\x09\x74\x2a\x98\xd5\x7f\x6a\x95\xe0\x55\xc3\xdb\x6a\x29\x59\x13\x6e\x55\xf4\x70\x80\xa1\xcd\xdf\xb8\xd1\x9b\xe6\x50\xfb\xdb\x40\x5a\x34\x7e\x73\xbb\x2a\x4c\x34\x16\x61\x34\xcb\x70\xff\x51\x54\x17\x0d\x78\xb8\x51\xc0\xcf\x6e\xbe\xb8\x05\x49\x44\xfb\xb4\xa4\x2d\xf6\xd8\x90\x05\x36\x19\xec\x79\x37\xd9\xd4\x06\x70\x9b\x09\x56\x11\xdd\x74\x83\xb6\xc3\xbb\xd4\x40\x60\x60\xd3\xee\xdf\xda\x3e\x7e\xb8\x71\x03\xc0\xfd\xce\x67\xee\x26\x6c\xbc\xd1\x90\x79\x32\xe3\x02\xf6\xbb\x79\x6d\x06\x57\xd0\x7b\x7d\xef\xc9\xea\x81\x8b\xb4\x67\x6f\xbc\xee\xda\xc0\x37\x65\xf8\x8e\x64\xdb\x9e\xc8\x07\x5c\xe8\x0d\xa8\x33\x84\x0d\xc7\xb4\x99\x60\xc6\x2e\x35\xa5\x35\x5c\xde\x22\x17\x73\xcc\xe8\x7f\xf5\x9d\x3c\x14\x25\xd0\xaf\x9a\x0b\xfa\x5f\x04\xbd\x32\x98\x03\xe3\xcd\xca\x48\xa2\x5e\xdb\x7b\xd8\xc3\xf9\x06\xaf\x29\x4e\x53\x6a\x34\xab\xab\xc1\xbb\x35\xb4\x19\x94\xdd\xc7\xdd\xf3\x8d\x4f\x6a\xdb\xfd\x1f\x82\x86\x6d\xe5\xc7\xa5\xd8\x98\x5f\x31\xf0\xd9\x1c\x53\x23\xc5\xfa\x3a\x90\xed\x63\x0f\x48\x8e\xa9\xcf\x42\xcc\xf0\xdc\xc1\x1c\xab\x52\x50\xd5\x23\x72\x86\x3e\x44\xd9\x2f\xe5\x1d\xb1\x18\xb2\x9d\x3e\xca\x20\x09\xeb\xf4\xea\x32\xd6\xa6\xb7\x5e\x2e\xf8\x97\xec\xb4\xb4\xaa\x83\x4a\x86\xf3\x3b\x3a\x2f\x79\x29\xb3\x55\xc3\x71\x8f\x30\xa8\x1b\x53\x84\x2e\xfb\xcd\xe8\x94\x13\xc9\x8e\x15\xc2\x8c\xb3\x55\x6e\x3f\xce\x92\xac\x4c\x49\xeb\x5b\x00\xed\xb1\xe4\x34\x45\xb8\x54\x3c\xc7\x8a\x26\x28\xe1\xe6\x77\xdb\xa9\x97\x92\x20\xbc\x81\x5e\x52\x4a\xc5\x73\x94\x63\x21\x17\x38\xcb\xfa\xcf\x3d\x48\x92\x6d\xf2\x44\x4d\x60\x6f\x7a\x7f\xb1\x34\xb3\xf4\xb8\xdd\xf0\x65\xde\xb7\x5b\x4f\xc8\xfb\xc3\xcb\x4d\xf7\x74\xeb\xe7\x6d\x61\xeb\x9e\x66\x36\x83\x1b\x3f\xbc\x17\x9b\x5f\xea\x96\x95\x6c\xe4\x73\x03\x9f\x13\xa4\xc8\x70\xaf\x69\x38\x50\x67\x52\x4b\x74\x50\xeb\x39\x23\x15\x85\x29\xba\x31\xfe\xb2\x1c\xab\x64\xb1\x21\x74\xf3\x9f\x39\x51\x38\xc5\x0a\x4f\xb5\x3a\xfc\x9f\xd6\xd5\x64\x3d\xa3\x3c\x4b\x35\xe9\x4d\x82\xae\x77\xfe\x46\x48\xf2\x9e\x13\x68\xcd\xff\xbd\x96\xeb\xd5\x1f\x83\x5a\x02\x09\x9f\x4d\x27\xec\x8e\x02\x76\xf8\x10\x61\x13\x2e\xbe\x6a\xed\x73\x20\xb8\xd6\x9a\x63\xf7\x23\x6d\x1b\x2f\x6b\xaf\xc0\xbe\xdc\x9c\x0c\x24\x04\x98\xb4\xd6\xfa\xef\xc0\x2f\x78\xfa\xf1\x7c\x93\x0f\x63\x9b\xd5\x34\x68\x25\xb5\xfd\xfc\x03\xd3\x75\x1e\x5a\xfb\x9b\xc1\x0e\xec\x95\x7b\xdf\xe5\xef\x43\x71\x21\x53\xc3\x08\x7c\x47\x44\x60\x47\xc4\x1e\xa8\x74\x09\xb3\x1b\x89\xd6\xba\xda\xa6\x8d\x1b\x11\x8f\xd9\x16\x85\x19\xaa\x93\x32\xa9\x26\xbe\xe1\x0f\xc6\x04\x64\xb6\xd4\x32\x69\x1d\x87\x29\xc8\x64\x2a\x54\xc1\xb9\x40\x3e\xb1\xf3\x9a\x55\x47\x61\x5d\x33\x83\x36\xea\x70\x38\x6b\x94\x69\xec\x16\x3f\x7a\xfa\xd5\x31\x37\x0b\xa5\xea\x35\x1c\x4b\x9b\xb6\xcd\x99\x5c\xd0\x62\x1b\x48\xa9\x8a\x0b\xd8\xd3\x47\x5f\x70\x46\xd3\x8a\xbc\x79\x1f\x97\xec\x04\x7d\xe4\x4a\xff\x73\xf1\x95\xca\x2d\x1e\x0a\x7d\x97\xce\x39\x91\x1f\xb9\x82\xbf\x0e\xde\x1c\x33\xb5\xd1\x5b\x63\x6d\x0e\xe3\x4a\x85\x97\xdb\xb0\x4c\xdc\x32\x2f\xb7\xa7\x41\x54\x5b\x4c\x25\xba\x64\x88\x0b\xb7\x07\x55\x91\x34\x69\xc9\xbb\x4c\x60\xc6\xd9\x04\x9c\xa6\xc3\x1e\x99\x4b\xcb\xda\x1b\xf4\xcd\xb6\xea\xef\x68\xee\x5c\xf3\xab\x86\xb7\xbc\x35\x0d\x33\x05\x53\x84\xc2\xfc\x86\x4a\x27\x92\x52\x94\x96\xb0\x11\xd8\x79\x4e\x68\x32\x48\x3a\x27\x62\x0e\xa1\x95\x64\xd0\x39\x3f\xce\xbb\x34\xc2\xa7\xb4\xe5\x46\x80\x40\x78\xbf\xc1\x22\x45\xbd\xe2\xc3\xfc\xb5\x61\xb1\xb9\x31\x53\xff\x5b\x73\x4c\xd8\xd7\xff\x81\x5a\x82\x72\x8a\x4e\x91\xa4\x6c\xbe\xb1\x15\x40\xf3\x13\x36\xdc\xd4\x24\xae\xe9\x52\x89\x34\x03\x5c\xe2\x4c\x73\x74\x40\x34\x6f\x49\xf7\xe7\xb3\x35\x01\x77\x62\xab\xfb\x69\x6e\x54\xc5\x9c\x8e\xee\xc9\xea\xe8\xa4\x75\x69\x36\x50\xd4\x7f\x7c\xc9\x8e\x4e\xaa\xda\x19\xad\x7b\x5a\x89\x0e\x08\x62\x1d\xc1\xef\x8e\xa6\x6b\x32\x71\x03\xed\x51\x92\x72\x40\x40\x8c\xb5\xbe\xd1\xf0\x2d\xd8\xa8\x99\xb6\x4e\xfe\x93\xdd\x27\x67\x22\xc0\xe9\x3f\x08\x5c\x14\x44\x20\x2c\x78\x09\xce\x84\x7c\x49\xc4\xd4\xfd\x09\x00\x1b\xfa\x3c\x8c\xce\x2f\x96\x70\x21\x48\xa2\x9c\x79\xa1\x5f\x91\xe2\xb6\xc4\x0f\x4b\xa1\x8e\xce\x4e\x7a\xda\x03\xb9\x5b\x70\x7e\x0f\xf5\x03\x60\x67\x1e\xc5\xbe\xfb\x93\xf9\x96\xf3\xfa\x67\x4e\x45\x97\x28\x25\x0a\xd3\x0c\x90\x1d\x9f\xde\x7f\xb0\xd8\x0f\x27\xc6\x7b\x8f\xc6\xce\xb9\xef\x8e\x04\xd9\x55\x38\xb5\x48\xa7\x6b\xb2\xa4\xe4\xc1\x9e\x49\xdf\xd7\x4c\xd0\x9c\x30\x00\x0b\x6c\x00\x05\x4d\x90\xa4\x29\xb9\x80\xc2\x36\xfd\x04\x3c\x1d\x8e\x1b\xe6\x38\x7c\x87\x87\x58\xe2\x16\x76\xb8\x55\x38\xba\x98\x82\xb8\xe2\x62\x63\xe1\xf5\x31\x35\x6a\xc6\xd4\x9f\xb1\xf9\x0f\xef\xd0\x77\xdf\xfd\x6e\xc3\x9f\xe4\xf8\x2b\xcd\xcb\xfc\x1d\xfa\xfe\xf7\xbf\xff\xdd\xef\x37\xfd\x11\x65\xe6\x8f\xbe\xdd\xb4\x26\xfb\xc2\xcf\xae\xcf\xf7\xb8\xb7\x69\x85\xc2\x1b\x0a\x52\x6c\x25\x33\xc3\x34\x2b\x85\x05\xa0\x7a\x53\x69\xde\x78\x6f\x22\x20\x6a\x86\x27\xd2\x71\xe9\x56\x7f\x0f\x3e\xef\x2a\x7b\x0c\x04\x8b\x73\x79\x1b\xcb\xd6\xa0\xd0\x7c\x67\x66\x78\xc6\xcd\x46\xb3\xb5\x67\x72\x6b\xd6\x94\x31\x0c\xe1\x67\xbf\x96\x44\xac\x20\x87\xa8\x52\x6f\x37\xde\x83\x06\x3e\xea\xb6\x2e\x35\xe5\xd6\x65\xa5\xbb\x29\x14\xda\x16\xd4\x9b\x4d\xa9\x4a\x4c\xa2\x53\x66\x63\xe8\x9d\xb9\x02\x2d\x02\xd1\xf3\xca\x93\x8d\x4e\x37\x52\x64\x65\x96\x6d\x22\xc1\xf8\x66\x5f\x78\x73\xf7\x07\x0d\xb7\x31\xb6\xd5\x38\xe3\xdd\x0c\x6f\x13\x7e\x50\x33\x6c\x99\xf7\x3b\x1b\xf2\xcd\xcd\x88\xa0\xa6\x7a\x9a\xf6\x83\x34\xbb\xf8\xbd\x1d\x0c\xfc\xad\x74\x49\x55\xed\x79\xd8\xcc\x6f\x6e\xd3\x08\xf0\xe5\x38\xe0\xe5\xf6\x02\xa9\x5b\xcd\x7f\x33\xc6\xa3\x32\x47\x95\x35\xf5\x70\x08\x6c\xa5\x89\x3c\x50\xae\xa3\xf0\x11\x63\x5c\x04\x3d\xcb\x1a\xeb\x28\x18\xb1\x30\xa8\xdd\xbb\x93\xbb\x60\x04\x51\x6b\xf9\xee\xe2\x34\xb0\xb3\x19\xbf\x75\xdb\x1d\x08\x66\xec\xec\x46\x18\xb1\xbe\x1e\x63\x7f\xd0\x99\x30\x82\xe4\xba\xbb\x61\xd0\xa5\x30\x82\xe2\x26\xa7\xc3\x66\xc7\xc2\x98\x77\x30\xc2\xf5\x30\xd6\xbd\x60\xc6\x2e\x10\x96\xd1\xf0\x95\x51\xf7\x68\xab\xdb\xc1\x0c\x4f\xe7\xc3\xe0\x2c\x9d\x63\x62\x67\x17\xc4\x16\x9f\x65\xc3\x3d\x31\xd6\x11\x31\x48\xb1\xc7\x49\x31\xd2\x1d\x31\xec\x85\x1b\x74\x55\xec\x22\xf5\xb7\x8a\xb3\x5d\x1c\x14\x4d\xc2\x03\x77\x47\x10\xca\x96\xdc\x34\x87\xdc\x41\xf5\xbe\x5e\xfb\x58\x47\x03\x7f\x00\xb9\x64\x55\xf0\x41\xe5\xdb\x08\xff\xca\x74\x45\xda\x7a\x47\xa5\xdc\xe6\xe8\x1f\x5a\xd3\x50\x12\x4d\xb0\x61\xd6\xde\x87\x32\x23\x7f\xa2\x6a\xf1\xc9\xb5\xb9\xb5\x2f\x49\x95\x45\x06\x4b\x6f\xfc\x62\xb8\x78\xdd\x75\xad\xe7\x5f\x2a\xc3\x94\x12\x9e\xe7\x84\xa5\x06\x8d\x92\xe3\x7b\x82\x64\x29\x88\x85\x0c\x66\x99\xb1\x72\xf4\x17\x0d\x90\x25\x5f\x0b\xcc\x8c\x5a\xab\x6f\xe2\x52\x4b\xc3\xcd\x37\x71\xd4\x3d\x1c\xa7\xe3\x8c\xcc\x38\x19\xce\x34\xa9\x52\x2b\x3a\xb9\x22\x5b\xb8\xe6\x1d\xc9\x38\xf8\xbe\xa6\xe8\xf8\x9b\x63\x0b\x03\xb6\x84\x40\x14\xd9\x9f\x5a\x7d\xe3\x64\x44\x45\x99\x8c\xb0\x79\x5d\x26\x56\x66\x34\x21\x95\xd4\xe1\x8c\x4c\xd1\xb5\x55\x34\xc7\xe8\xad\xdb\x05\xc4\x28\xe1\x30\x52\xc1\xa8\x0b\x03\xed\x78\x16\xee\x53\xcd\xd3\x58\xba\x9f\x85\x9f\x87\x23\xf5\x8f\x77\x22\x55\x53\xec\x5d\x0e\xa4\xcd\x62\x6a\x29\x56\x9d\x46\xc5\x42\xb7\x4c\x12\x18\x6c\x82\x85\x16\x73\xe0\x4f\x9d\xa0\xb3\xeb\x8b\xd3\xdb\x8b\x13\xf4\xf9\xea\x1c\xfe\x3d\xbf\x78\x7f\xa1\xff\x3d\xfb\xf4\xf1\xe3\xc5\xd9\xed\x76\x1d\xed\x1b\xd3\xf0\x36\xcb\xcc\x79\x68\xb9\xcc\x5b\x9c\x0f\x32\xa5\x66\xa5\xd2\x0c\x6c\xec\x44\x5b\xeb\xd3\x3c\x0f\x3e\x9b\x92\x74\xd3\x8d\xb1\x77\x62\x1b\xd9\x17\x78\x63\x46\x66\x03\xb4\x2e\xcc\xd1\xb6\x34\x80\x1a\xe5\xbd\x65\x92\x4d\xf8\xff\x5f\x18\xfa\x89\x0b\x44\xbe\xe2\xbc\xc8\xc8\x3b\x74\x5c\xf0\x54\x1e\xdb\x04\x0c\xfd\xdf\x53\xf3\xa3\x37\x19\x9f\x6f\x2b\x3e\xe6\xb2\x36\x08\xca\xf8\x1c\xc9\xf2\xae\xca\xda\x01\xa5\x01\x68\x7d\xe3\x68\xb7\x32\x07\xb6\x19\x6e\x2e\x65\xa7\x41\xb3\x9a\x58\x8b\x62\xf3\x0f\xb6\xdf\x1b\x37\xa7\x37\x32\xc1\x19\x69\xd1\xd1\x3f\xe8\x7e\xdd\x37\x6f\xbe\x19\xb7\x05\xad\xb5\x39\x5d\x94\x8a\x0e\xbd\xbf\x30\x7d\xef\x1f\x68\x96\x26\x58\x6c\xcb\xe8\xef\x3e\x0d\x90\xfc\x06\x01\x0e\x29\x1d\xa6\x0f\x12\x03\x8d\x62\xec\x0e\xd8\x52\x3d\x7c\x49\x44\x86\x0b\x83\xe3\x26\x38\xb1\x35\xff\x61\x82\xe7\xa4\x20\x90\x1b\x66\x5a\x75\x6c\xbb\x59\x84\x25\x19\x97\xf0\xe7\xa0\x74\x9c\xb4\x96\x6c\xdb\xfd\xd9\x7e\x55\x23\x53\x79\xaa\x47\x3c\x5c\x9f\x63\x1f\xaf\x18\x60\xc2\x3b\xbc\x60\x03\x2b\x6e\xbb\xb5\x1b\xe5\xcd\xaa\x14\x0d\xf0\x71\x8c\x72\x31\x00\x0f\x3d\xb2\x99\x7c\x47\x27\xe8\xa8\xaa\xc6\x94\x5a\x23\xe8\xe8\x9b\xa3\xfa\x0f\x46\xbe\x5f\x6c\x93\x24\x13\xf3\xb1\x09\xcc\xb1\x99\x29\x0b\x97\x0d\x0c\xb8\xad\x7e\xc0\x6a\x51\x75\x55\x38\xad\x77\x58\x1f\x32\xcc\xbf\xfd\x35\xdb\xee\x43\x73\x89\x6b\x33\xae\xd3\x28\x3b\xb3\xdd\xb6\x72\x0b\x97\xab\x66\xab\xb7\xad\x41\x5c\x41\x29\x08\x93\xd2\x69\x8f\x4c\x34\x52\x72\xb6\xcd\xf9\xa6\xf5\x08\x1c\x34\xaf\x55\xda\x8e\x0a\x54\x60\xa1\x6d\x63\xf7\x97\xdb\x88\x36\x5a\xbd\x1f\x7d\xb3\xa5\x28\xce\xd6\x0b\xdd\x88\x60\x7a\xc7\x7b\x14\x16\x73\xa2\x86\x42\x83\x98\xad\x3e\x6d\xac\x5d\x3b\x19\x15\x39\x9c\x8c\x79\x9c\x5f\x27\x75\x5d\xd0\x09\x65\x6a\xc2\xc5\xc4\x7c\xe0\x1d\x52\x62\x43\x5b\x20\x45\x73\xc2\x4b\x75\x43\x12\xce\xfa\xd2\x1c\xec\x5f\x45\x89\x6e\x8e\xce\x03\xb1\xc1\xf4\x53\xa7\x62\xb9\x64\x90\x66\x44\xac\xb6\xb5\x07\x82\xe5\x66\xb4\x2a\x36\x7d\x7a\xff\xc1\xf7\xa8\x11\x64\xd0\x6f\x3e\xc9\x2f\x56\x3a\xb1\x79\x35\x73\xbb\x92\x8d\x1f\xf9\x50\xaa\xdd\x3e\x70\x56\x05\x6e\x87\xfe\xd2\x6e\xc9\x50\x7d\x99\x0d\xab\x95\x0a\xab\xb2\x73\x0f\x5a\x67\x63\xb9\xea\x8d\xc9\x30\xb3\xd6\xd5\x0d\x7c\xaa\xe9\xfc\x6e\xd6\xdb\x00\x05\xbd\x33\x0d\xd3\x08\x03\x3e\x05\xc0\xde\x82\xa7\x53\x64\xc9\xe4\x78\x85\x94\xc0\xd4\x38\x07\x70\xa2\x4a\x48\x54\xc7\xca\x82\x80\x6d\xad\xac\x7f\x5a\x5f\x4e\x8f\xd1\xbf\xd9\xd0\x4f\x88\x50\xf2\x3d\x96\xea\x73\x91\xe2\xde\x04\xa7\x0e\x90\x57\x2a\x78\x2e\xc6\x6c\x79\x60\x24\xd5\x4c\xdd\x6e\x84\xa1\x86\x1e\x34\xc7\x2c\x0d\xbd\x35\x72\x83\x17\xcc\x3d\x1f\xfd\xd1\x89\xfe\x9a\xbe\xd9\x5e\x73\xbd\x0b\xa7\x3d\xac\xa6\x8d\x99\xde\x36\x4b\x2d\xc9\x04\xd0\x42\x8c\x7c\x5d\xf7\x92\x84\xcd\x94\xb3\x74\x13\xd0\xa6\xbd\xa3\x56\x97\xaf\x3f\x70\x82\x30\x5a\x50\xa9\xb8\xb0\x61\x00\xe8\x24\x2f\x30\x93\xb4\x3f\x0b\x34\x1c\xb8\x73\x56\x7d\xb9\xb6\x10\x08\xae\x3a\xde\xda\xdb\x09\x0d\x61\x05\x49\xb8\x48\xab\x29\xf5\x73\xb7\x7a\x9a\x56\x6d\xec\x7f\x2b\x3d\x1f\x0e\x4c\xcf\xc9\xb0\x54\xb7\xd5\xb7\xeb\xc3\x1f\xc5\x65\xdb\x17\xda\x2e\xb7\x5e\x85\xab\x99\xc0\x99\xfb\xe5\x66\x8f\x1b\x47\x98\x19\xf5\xd9\x9f\xb7\x6e\xbb\x56\xf5\x5a\xcd\x7b\xf5\x58\xe7\x43\xf5\x36\x1b\x4b\x7e\xec\x19\xe7\x44\x4a\x3c\x1f\x37\xd5\x53\x53\xdc\x19\x55\xc5\x9d\xed\x87\x11\x65\x29\x4d\x40\x52\x54\x68\xb2\x3e\xae\x5a\x8f\x87\xc5\x6a\xf3\x15\xd4\xb2\xd4\xe5\x47\x57\x8f\xcf\xfb\xe8\x8a\x05\x96\xe3\x96\x57\xbd\x35\xe7\xbe\x18\xfb\x40\x46\xcd\x43\x10\x2c\x37\xe7\xd2\x74\xf6\xf9\x4e\x50\x32\x43\x67\x38\x27\xd9\x19\x96\x4f\xb1\xd1\xc0\x39\xa6\x88\x4c\xe7\x53\x74\x7c\xdd\x88\xae\x7c\xe4\xea\xc3\xe6\x8e\x39\x83\x29\xa3\xdb\xdf\x7d\xd8\x8b\xef\xc7\xb5\x6f\x7c\xeb\x41\x62\x63\xdb\xcb\x0e\x7a\xd3\x41\x33\xdb\xf8\x82\xc3\xde\xae\xbe\x3a\x7d\xc2\x20\xf0\xd5\x0e\x25\x8d\xf5\xbf\xd4\xf6\x1b\x2d\x05\x18\x64\x89\xdf\x5b\x1d\x4c\xf8\xea\x7f\x9f\x81\x2f\x33\x64\x1b\x77\x7e\x93\x83\xcb\xab\x3e\x7e\xd3\xa3\x44\xaf\xad\xf4\xb6\xa5\x01\x83\x07\xaa\x09\x68\x82\x4a\xe0\x7a\x8e\x67\x37\x5f\xe2\xa8\x3d\x4f\x9d\x91\x69\x0f\xae\xf7\x77\x6c\x23\xa8\x78\x93\x4c\x0e\xc9\xf0\x4c\xc1\x9f\xa7\xcf\xf5\x69\x02\xaa\xe7\xee\xfb\xac\x41\x63\x4d\x57\x7b\xda\x33\xdb\x10\xd7\xfe\xcd\xa0\xc3\xbc\xbe\x0f\xaf\x14\x47\x85\x20\x4b\x00\xbb\x31\xc0\xb2\x6b\xe5\x5d\xea\x07\xf1\x7a\xb3\x66\x36\x26\x16\xba\x1d\x5e\xb6\xf9\xfc\xdd\xef\x37\xdc\x02\xf7\xeb\x2d\x0a\xe4\xd0\xe1\x9a\x31\x2e\x5e\x3b\x98\xca\x6b\xc6\x48\x2f\xe7\x50\x5a\xef\x4e\x84\xb6\xa8\x7f\x3b\xd1\xea\x33\xce\xbb\xa3\x53\xec\x54\x7f\xe0\x1a\x18\xaf\x89\x9f\x24\x9a\xaf\x26\x58\x82\xaf\x10\x7e\x6c\x18\xcd\x36\x1f\x77\xd3\x56\xbf\xee\x72\x3a\xc8\xa8\x6a\xdf\xf9\x18\xcb\x2d\x4b\x1a\xe7\x0c\xb6\xa4\x59\x8f\xa4\xb5\xc7\x3c\xf1\x2d\x97\xe8\xb1\x4a\x30\x98\x31\x7c\xeb\x7c\xef\xdb\x36\x96\x10\x7a\xd3\xb6\xd7\xe6\x18\xb8\x5d\xd1\x13\xf7\x25\x11\x4b\x92\x36\xfc\xb0\xb6\x64\x76\xf3\x27\x0d\x77\xb9\xa3\x6b\xb7\x1e\xfd\xf7\xff\xfc\xd3\xff\x0b\x00\x00\xff\xff\x4e\x30\x00\x9d\x43\xdd\x0a\x00") func operatorsCoreosCom_clusterserviceversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -119,12 +119,12 @@ func operatorsCoreosCom_clusterserviceversionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "operators.coreos.com_clusterserviceversions.yaml", size: 711936, mode: os.FileMode(436), modTime: time.Unix(1606762434, 0)} + info := bindataFileInfo{name: "operators.coreos.com_clusterserviceversions.yaml", size: 712003, mode: os.FileMode(420), modTime: time.Unix(1607724218, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _operatorsCoreosCom_installplansYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x5b\x4b\x73\xdc\x36\xf2\xbf\xeb\x53\x74\x29\x07\x25\x55\x9a\x99\xd8\xb9\xfc\x6b\x6e\xfa\xcb\x9b\x2d\xed\x3a\xb6\x4a\x23\xeb\xe2\xf5\x01\x43\xf6\x0c\x11\x81\x00\x82\xc7\xc8\xb3\xa9\x7c\xf7\xad\x06\x48\x0e\xc9\xe1\x4b\xaf\xc4\xc1\xc5\x1e\x12\x68\xf4\xbb\xfb\x07\x50\x4c\xf3\x3b\x34\x96\x2b\xb9\x04\xa6\x39\x7e\x75\x28\xe9\x97\x9d\xdf\xff\x9f\x9d\x73\xb5\xd8\xbd\x39\xb9\xe7\x32\x5d\xc2\xa5\xb7\x4e\xe5\x37\x68\x95\x37\x09\xbe\xc3\x0d\x97\xdc\x71\x25\x4f\x72\x74\x2c\x65\x8e\x2d\x4f\x00\x98\x94\xca\x31\x7a\x6c\xe9\x27\x40\xa2\xa4\x33\x4a\x08\x34\xb3\x2d\xca\xf9\xbd\x5f\xe3\xda\x73\x91\xa2\x09\xc4\xcb\xad\x77\x3f\xce\x7f\x9a\xff\x78\x02\x90\x18\x0c\xcb\x6f\x79\x8e\xd6\xb1\x5c\x2f\x41\x7a\x21\x4e\x00\x24\xcb\x71\x09\x5c\x5a\xc7\x84\xd0\x82\x49\x3b\x57\x1a\x0d\x73\xca\xd8\x79\xa2\x0c\x2a\xfa\x27\x3f\xb1\x1a\x13\xda\x7b\x6b\x94\xd7\x4b\xe8\x9c\x13\xa9\x95\x2c\x32\x87\x5b\x65\x78\xf9\x7b\x06\x4a\xe4\xe1\x7f\x51\xf0\xab\xb8\xe5\xb5\x60\x32\x3c\x15\xdc\xba\x7f\xb7\xdf\xbc\xe7\xd6\x85\xb7\x5a\x78\xc3\x44\x93\xd1\xf0\xc2\x66\xca\xb8\x0f\x87\x6d\x67\xc0\x75\x7c\xc1\xe5\xd6\x0b\x66\x1a\x6b\x4e\x00\x6c\xa2\x34\x2e\x21\x2c\xd1\x2c\xc1\xf4\x04\xa0\x50\x58\x20\x31\x03\x96\xa6\xc1\x04\x4c\x5c\x1b\x2e\x1d\x9a\x4b\x25\x7c\x2e\xab\x0d\x52\xb4\x89\xe1\xda\x05\x15\xdf\x66\x08\x1b\x6e\xac\x83\xcb\xd5\x1d\x70\x09\x2e\xc3\x20\x0b\xa8\x0d\x24\xc2\x5b\x87\x66\x85\x66\xc7\x13\x2c\x3c\x22\xec\x1c\x48\x01\xfc\x6a\x95\xbc\x66\x2e\x5b\xc2\x9c\x14\x3c\xef\x5f\xf0\xf9\xc7\x2f\xc5\x9a\x68\xb1\xcb\xd5\x5d\xf1\xdb\xed\x49\x1e\xeb\x0c\x97\xdb\x3e\x0e\x99\xd6\x46\xed\x98\x80\x5c\xa5\xd8\xb3\x77\x39\xa7\xb1\xcd\x45\xf3\x61\xc7\x5e\xdd\x64\x82\x5a\xdb\x64\xaa\x87\x91\xcc\x5a\x29\x81\x85\xf5\xe3\xb4\xdd\x1b\x26\x74\xc6\xde\x44\x03\x26\x19\xe6\x6c\x59\x2c\x51\x1a\xe5\xc5\xf5\xd5\xdd\x4f\xab\xc6\x63\x68\xca\x5a\x73\x1d\x48\x29\x96\xd0\x06\x83\x14\x2e\x10\x62\x80\x0c\xc3\xc0\x62\xb0\xd0\xc1\x8f\x2b\x82\x91\x39\xb5\xfe\x15\x13\x57\x3d\x34\xf8\x9b\xe7\x06\xd3\xc3\xbe\x33\x28\x23\xb4\xf6\x88\x34\x50\xfd\xd4\x86\xa8\xbb\x2a\x02\xe2\xa8\xa5\x86\xda\xd3\x96\x1c\x67\x24\x6a\x9c\xd5\x90\xa3\x70\x54\x4c\x0b\xed\x90\x08\x2e\xe3\x16\x0c\x6a\x83\x16\x65\xcc\x12\x0d\xc2\x10\x04\x96\x85\x44\x73\x20\xe7\x42\x63\x29\x72\xbc\x48\x29\x95\xec\xd0\x38\x30\x98\xa8\xad\xe4\xff\xad\x68\x5b\x70\x2a\x7a\x33\x73\x68\x5d\x8b\x66\x08\x0c\xc9\x04\xec\x98\xf0\x78\x0e\x4c\xa6\x90\xb3\x3d\x18\xa4\x5d\xc0\xcb\x1a\xbd\x30\xc5\xce\xe1\x17\x65\xc8\x14\x1b\xb5\x84\xcc\x39\x6d\x97\x8b\xc5\x96\xbb\x32\x25\x26\x2a\xcf\xbd\xe4\x6e\xbf\x08\xd9\x8d\xaf\x3d\xd9\x65\x91\xe2\x0e\xc5\xc2\xf2\xed\x8c\x99\x24\xe3\x0e\x13\xe7\x0d\x2e\x98\xe6\xb3\xc0\xba\x0c\x69\x71\x9e\xa7\xdf\x99\x22\x89\xda\xb3\x06\xaf\x47\x3e\x1b\x47\xc8\x42\x03\x16\xa0\x5c\x04\xdc\x92\xab\x84\xa5\x51\x8a\x83\xa2\xe9\x11\x69\xe7\xe6\x1f\xab\x5b\x28\xb7\x0e\xc6\x68\x6b\x3f\xe8\xfd\xb0\xd0\x1e\x4c\x40\x0a\xe3\x72\x83\x26\x1a\x71\x63\x54\x1e\x68\xa2\x4c\xb5\xe2\xd2\x85\x1f\x89\xe0\x28\xdb\xea\xb7\x7e\x9d\x73\x67\x83\x5f\xa2\x75\x64\xab\x39\x5c\x86\x3a\x01\x6b\x04\xaf\x53\xe6\x30\x9d\xc3\x95\x84\x4b\x96\xa3\xb8\x64\x16\x5f\xdd\x00\xa4\x69\x3b\x23\xc5\x4e\x33\x41\xbd\xc4\xb5\x27\xb7\xe2\x0f\xa0\x2c\x40\x3d\xf6\xaa\x45\xfe\x4a\x63\x52\x45\x4d\x15\xe9\x17\x5a\x0b\x9e\xc4\x0c\x50\x79\x0a\x38\xd5\x52\xec\xba\x4a\x16\x55\xb6\x1a\x64\xab\x2b\x35\x40\xc8\x05\xad\x7c\xda\x7c\xdc\x22\x3e\x1b\x2f\x15\x71\x74\xe7\x14\x08\x79\x25\x6e\xd7\x7e\xde\xd2\x53\x99\xd0\xc9\xb5\xc9\xbb\xbc\x45\x73\x28\x0f\x5a\x09\x9e\xec\x61\xa3\x0c\x65\x8c\x9a\x4e\xe7\x47\x54\x01\xae\x1c\xe4\xde\x06\x7f\x53\x12\x49\xc7\xa7\x17\xde\xa9\x9c\x39\x9e\x9c\x82\x32\x70\xfa\x0b\x93\x9e\x89\xd3\xe3\xc5\x3d\x0e\x71\x90\xa3\xad\x4e\xe8\xac\x1a\x87\xd1\xaf\xbe\x3e\x3a\xcc\x18\xb6\x3f\x7a\xc7\x1d\xe6\x1d\x4b\x06\x39\xde\xa2\xa4\x22\x72\x94\xd1\x0f\xcb\x28\x59\x6e\xd1\xb4\x63\x38\xf8\x60\xdf\x9a\xce\xad\xe2\x92\xaa\x77\x99\xbc\xd6\x3a\xe6\xbc\x1d\x08\x9f\xd3\x7a\xfc\x84\xc9\xb5\x84\x55\x94\xd0\x8d\x32\x79\x8c\x1f\xb6\x56\x3e\x26\xa7\x48\xf8\xb8\xde\x58\x87\xda\x56\xa1\x41\x95\x24\x51\xb9\x16\xe8\x9a\xb5\x78\x0e\xff\x91\x50\xec\x47\xc9\xd0\x19\xc6\x05\x11\x6e\x3b\x45\xe2\x3c\x13\x61\x37\x2c\xea\xf7\xde\x3a\xcc\xe7\xa7\xcf\x8b\xd1\x84\x39\x26\xd4\x76\x15\xb3\x41\xeb\xa5\xce\x98\xc5\xa9\xd1\xe7\x1c\x4a\x4f\x39\xb7\x70\xc1\x8b\x24\x51\x5e\xba\x1b\xdc\x8c\x05\x64\xff\x4a\x30\xb8\x41\x83\x32\x29\xaa\xbf\x8d\x13\x80\xc5\x19\x5d\x5e\x9a\x31\x47\x91\xed\x6d\x54\x7a\xaa\x62\xbf\x9b\x56\x8d\x4e\xa9\xfe\xbe\x98\xec\x50\xde\xb0\xe4\x30\xd0\xd3\x74\x0b\x7c\x7d\x55\xf6\x31\xb1\x7d\xc1\x52\x4e\xd7\x95\x65\x06\xe3\x81\xc6\x86\xa3\x48\x43\x07\x3a\xbe\xf7\xd9\x55\xa1\xd4\x50\xd1\x9d\x02\x06\x9a\x63\x82\x8d\x16\x29\xa8\x08\x59\x0a\x6a\xd3\x49\x91\xf0\x18\x50\xd9\x33\x58\xac\x38\x8f\xf5\xbb\x68\x14\x0e\x8d\x95\x63\x5c\x02\xa3\xce\x81\xa7\xf0\xaf\xd5\xc7\x0f\x8b\x7f\xb6\xeb\x4d\x43\x0a\xb2\x2c\x5a\x1b\xfd\x3c\x47\xe9\xce\xc1\xfa\x24\x03\x66\x49\x0c\x72\x60\x8a\x15\x9c\xe7\x4c\xf2\x0d\x5a\x37\x2f\xf6\x40\x63\x3f\xbf\xfd\xd2\xad\x3d\x80\x9f\x95\x01\xfc\xca\x28\xfc\xce\x81\x47\x8d\x57\x4d\x49\xe1\x60\xa1\x1c\x90\x3a\x2a\x8a\xf0\xc0\x5d\xc6\xdb\x79\xb6\xd2\x00\x68\x95\x16\x62\x3f\x04\x71\x1d\xbb\xa7\x3a\x10\xc5\xf5\x84\x81\xee\x71\x09\xa7\x11\xd6\x54\x6c\xfe\x4e\x8d\xfe\x1f\xa7\x3d\x54\xbf\x7f\xc8\xd0\x20\x9c\xd2\xa4\xd3\xc8\x5c\xd5\x85\xd2\xb3\xd2\x5f\x0e\x4c\x06\x87\x77\x86\x6f\xb7\x68\x5a\x35\xf5\x30\x42\x4b\x45\x8d\xca\x0f\x54\x95\xf8\x06\xa4\xaa\x91\x08\x84\xc9\x7a\x1a\x13\xbe\xe1\x98\x1e\x31\xfd\xf9\xed\x97\x5e\x8e\x9b\xfa\x02\x2e\x53\xfc\x0a\x6f\x23\x10\xe4\x96\xb4\xf4\xc3\x1c\x6e\x83\x77\xec\xa5\x63\x5f\x69\xa7\x24\x53\x16\xfb\x34\xab\xa4\xd8\x93\xcc\x19\xdb\x21\x58\x95\x23\x3c\xa0\x10\xb3\xd8\xcf\xa4\xf0\xc0\xf6\xa4\x85\xd2\x70\xe4\x6f\x0c\x34\x33\x6e\xd0\x5b\xcb\xde\xff\xf6\xe3\xbb\x8f\xcb\xc8\x19\x39\xd4\x56\x12\x3b\xd4\x33\x6e\x38\xf5\xf2\xd4\xc4\xc7\x4e\x34\x78\xe3\x51\x2b\x5b\x0e\xeb\xa3\xfb\x50\x5a\xcf\x98\xdc\x62\x09\x7c\x37\x9e\x7a\xc3\xf9\xd9\x53\xe2\xf8\xb8\x21\x2f\x47\x47\x63\xde\x4e\x1c\x7f\x59\x6b\x3b\x51\xb8\x80\x6f\x27\x08\xf7\xa1\xe6\xe5\x83\xc2\xdd\xfb\x35\x1a\x89\x0e\x83\x7c\xa9\x4a\x2c\x89\x96\xa0\x76\x76\xa1\x76\x54\x28\xf0\x61\xf1\xa0\xcc\x3d\x97\xdb\x19\xb9\xe6\x2c\xfa\x80\x5d\x84\x33\x9a\xc5\x77\xe1\x9f\x27\xcb\xd2\xd3\x7e\x74\x0b\x14\x26\xff\x19\x52\xd1\x3e\x76\xf1\x24\xa1\x4a\x48\x30\xbd\x8e\x9d\xad\x62\xc2\x48\xda\x6b\x29\x2c\x1e\x32\x9e\x64\x25\x34\x2f\x72\x6c\x4f\x30\x71\x6a\x7d\xd2\x98\x9a\x99\xdc\xbf\xba\x2b\x93\x42\xbd\x21\x8e\xf6\xb3\xe2\x1c\x71\xc6\x64\x4a\xff\xb7\xdc\x3a\x7a\xfe\x24\x0d\x7a\x3e\x29\x7c\x3f\x5d\xbd\xfb\x73\x1c\xdc\xf3\x27\xc4\xea\xda\xcb\x54\xe0\x7b\xa5\xee\xbd\xee\x68\x75\x1a\xa2\xfc\x7f\x7d\x6e\x89\xa7\x0a\xb4\xc9\xe5\x4c\x1b\xb5\x35\x54\xcd\x6b\x18\x1d\x74\x3c\x75\x6d\x0f\x4a\xbc\x5e\x6a\x96\xdc\xb3\x2d\x16\x4c\x84\x12\x85\xd2\x95\x05\xb0\x80\x38\x7d\x8d\xdb\x23\xf1\x4c\xaf\x24\xf1\xcc\xa3\xe0\xb9\x64\xb9\xc5\xe0\x71\x83\x1e\x47\xc9\x71\xe8\xd0\x0b\x29\xc6\xb8\x1f\x69\x3c\xfb\x7a\xf7\x38\x5a\x1d\xfc\x0d\x76\xd5\xc0\x19\xf0\x94\xfc\x7f\xc3\x8f\x20\x58\x7c\xad\x99\xcb\x3a\x5f\x18\xd4\x82\xb5\x81\x41\x1c\xc3\x0d\x31\x1c\xf1\xd5\x3d\xab\x65\x87\xcb\xd6\xa2\xd2\x16\x65\x93\x56\xe8\xb2\x31\xad\x87\x6e\xec\x7a\x0a\x1b\x90\x80\xf0\xc0\x6c\xc8\x54\x62\x87\x69\x38\x6a\xea\xeb\x17\x47\xec\x31\x45\x7a\x98\x00\x0a\x3a\xe4\x7f\x34\x34\xa8\x33\xdc\x9b\x98\xe2\x18\x81\x09\x1d\xdc\x3c\x0a\x2c\x0c\x10\x2d\x0f\x60\x1f\x0d\x19\x06\x69\x16\x70\xe2\x35\x81\x43\x1c\x4f\x83\x0f\x83\x24\x23\xb4\x78\x25\x10\x11\xc7\xd3\xa0\xc4\x20\xc9\x0a\x66\x3c\x16\x50\x0c\x52\xed\x02\x1b\xd3\x60\xc5\x20\xd9\x4e\xc8\x31\x01\x5c\x8c\xf9\x71\x27\xf0\x18\x84\x18\x83\x14\x87\xe1\x47\x2f\xd0\x18\xa4\x39\x08\x42\xe2\x98\x94\x31\xfa\x01\x49\x1c\x7f\x07\x58\xf2\x08\x71\xfb\x21\x4a\x97\xb8\xdf\x04\x50\x79\xa4\x74\x03\xa0\xa5\x4f\xc4\x6f\x02\xba\x3c\x42\xcc\x49\x30\xa6\x4b\xd8\x17\x02\x33\x71\xfc\x6d\x20\xcd\x23\x34\xdb\x0b\x6f\xba\xb4\xf9\x0d\x80\x9c\x89\xa2\x25\x4a\xc6\xaf\x1d\x7a\x3b\xb9\x66\x87\x5a\x4d\x6f\xdf\x0f\x10\xbb\x4c\x34\xce\xe8\xeb\xb0\x62\xb8\xd9\xec\x06\x2f\x71\xf4\x42\x98\x3a\x81\xc1\x6e\x75\x18\x43\xc4\x31\xeb\xbe\xca\xa8\x4f\xa0\x9d\x7a\x5f\x4f\xe9\x88\x01\x04\xb3\xee\xd6\x30\x69\x79\xf9\x35\xce\xd0\xec\x96\xee\xdf\x33\x02\x64\x3c\xc7\xb2\x71\x89\x96\x00\x57\x11\x2c\x1a\xfb\x41\x92\x10\x2e\xeb\xa2\xb0\xa1\x67\x93\xca\x65\xdd\xc0\xec\x30\x26\x45\x08\x8d\x78\x47\xb4\x84\x94\x39\x9c\x11\xaf\x23\xca\xf8\x14\x2e\xaa\x5f\x48\x11\x84\x70\xb4\x51\x6b\x4c\xff\x02\x69\x72\xb4\x96\x6d\x1f\x23\xc6\x05\x64\x3e\x67\x12\x0c\xb2\x94\xad\x05\x96\x24\xa8\xdb\x0b\x37\xd5\x72\x0b\x29\x3a\xc6\x45\xbf\x57\xc6\x71\xb8\x8f\x3b\xf8\xc2\x8b\xa8\xc0\x20\xb3\xc3\x55\x04\x8e\x3f\x36\x8a\x8b\xc2\x25\x72\xc3\x3e\x67\x36\x98\xfc\xa5\x79\xec\xba\xdb\x1c\xe4\xb1\xb8\x6f\x3c\x00\x80\xc8\xde\x79\x79\x8b\x7d\x6b\x3c\x9e\xc3\xcf\x4c\x58\x3c\x1f\x51\xfc\x27\x79\x2f\xd5\xc3\xcb\xc8\x11\xa6\x3d\x42\xd3\x7b\x1d\xb8\xad\xf8\x7f\x26\x13\x87\x33\x92\x49\x85\xe0\xaa\x9a\x5e\x9e\x7c\x15\x27\x1e\x33\x2f\xf9\x6f\xbe\x09\xb2\xca\xcb\xc7\x5e\x0e\xbf\x6f\xc3\xb2\xcb\xd5\x5d\x70\xa0\x78\x80\x61\xe3\x3d\x4f\x09\x8f\x2f\x57\x77\xf6\x87\xc1\x7a\x32\x20\xa7\x1e\x38\x02\x68\x48\x78\xcd\x5c\xd6\x02\x8e\x42\x25\xb5\x4f\xc8\x0e\x07\x5c\xda\x77\x5d\xa8\x96\xe3\xca\x9d\x59\xe2\x8b\x27\x4c\x88\x3d\x61\x25\x9e\x53\x98\x57\xbd\xd4\x70\x6d\x1c\x92\x65\xb4\xe8\x1c\x05\x27\x6e\x36\x98\x38\xbe\xc3\xda\xe2\x52\xe9\xf1\x80\x0f\xd3\x42\xb2\x27\xb3\x55\x1e\x9b\x4d\x62\xea\xa6\x98\x5c\xba\x51\xdd\x0b\x0e\x1a\x2e\x48\x06\x34\x3c\x78\xe2\x45\x31\xbc\x51\x5e\xa6\xc0\x5c\x30\xe1\x13\xa4\x68\x7e\x15\xf0\xfa\x1f\x90\x0c\xf5\x60\xcf\x3f\xdc\xad\x7d\xd9\x51\x75\x6f\x43\xcd\x5b\x4f\x0f\x54\x98\x04\xbf\x62\xe2\xab\x18\x18\xfd\x46\x68\xa4\x3b\x1b\x73\xe0\xe9\xfd\xd2\x84\x24\x3b\xad\x9a\x4f\xeb\x4a\x5e\x6c\xbb\x91\xb6\x61\x42\xac\x0d\x55\xe8\xee\xde\xfd\x26\x16\xe8\x70\xb8\x9c\xb0\x1c\x45\xc2\x2c\xa6\xad\xba\xdd\x1b\x65\xb1\xc1\x1f\x2f\xe2\xa3\xac\x0f\x17\xee\xd1\xe5\x43\xf5\x72\x34\x00\x42\xf5\x8c\xb3\xd6\xe5\xd7\x35\x05\x70\xe9\x3f\xd0\x6e\x78\x3b\xe5\x17\x06\x09\x9a\x50\x92\xe2\xe7\x9a\x8c\x34\xfa\x90\xa9\x27\xe5\xce\xf0\xb9\xd1\xc8\x95\x53\x6d\xff\x6b\x9a\x5e\xd5\xde\x80\x7e\x5d\xd9\xd6\x87\xf2\xd4\xfe\xc0\xbe\x25\xcc\x00\xab\x43\x4c\x0a\xd6\xfb\x95\xdb\x73\x92\xd4\xca\xa1\x6e\x27\xa5\x9a\x30\x32\xf4\xc4\x3b\x9e\xc6\xaf\xc0\x50\x43\xcf\x97\x29\xcf\xce\x48\xc3\xb7\x4d\xf1\xfe\xa4\xdb\x23\x67\xd5\xd1\x49\xe7\xcb\xde\xd4\x3a\x96\x03\xab\x3d\x9f\x91\x23\xfa\x3e\x35\x8c\xe3\xc8\x12\xe5\x9f\xa3\x0c\x58\x64\x48\xd8\x82\x2d\x05\xeb\x90\x27\x62\x4b\xb1\x9f\x60\x1b\x98\x86\xe7\xc7\xd0\xfc\x2c\xfe\x95\x4a\xef\xdb\x7b\x2e\xfb\xce\xe4\x67\xa1\xff\xe8\x7d\x79\xf8\xfe\x72\xc2\x94\x70\xa6\xd7\x3b\xaf\xb8\xe7\xea\x79\x3f\xe5\x38\x21\xfe\x29\xce\x6b\x9f\x72\x4f\x22\x52\xde\x2b\x3d\x9b\xd0\xd8\x21\xf4\x24\x22\x07\x13\xbc\x20\xa9\xd1\xc3\xe3\x49\xf4\x76\xe3\xe7\xb2\xcf\xac\x9b\x47\xc1\x5c\xc0\xdd\x81\x4a\xa1\x99\x71\x3c\xf1\x82\xf5\x03\xb4\xea\x0f\x1c\x42\x2a\x1e\xa9\x2d\x9d\x52\x58\x34\x3b\x4c\x97\xe0\x8c\x8f\x41\x61\x9d\x32\xd4\xf9\xd4\x9e\xf8\x75\xf5\x65\x7e\x29\x5e\x21\x2c\xfc\xfe\xc7\xc9\xff\x02\x00\x00\xff\xff\x56\x5f\x54\x65\x55\x37\x00\x00") +var _operatorsCoreosCom_installplansYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x5b\x4b\x73\xdc\x36\xf2\xbf\xeb\x53\x74\x29\x07\x25\x55\x9a\x99\xd8\xff\xff\x61\x6b\x6e\x5a\x79\xb3\xa5\x5d\xc7\x56\x69\x64\x5d\xbc\x3e\x60\xc8\x9e\x21\x22\x10\x40\xf0\x18\x79\x36\x95\xef\xbe\xd5\x00\xc9\x21\x39\x7c\xe9\x95\x38\xb8\xd8\x43\x02\x8d\x7e\x77\xff\x00\x8a\x69\x7e\x87\xc6\x72\x25\x97\xc0\x34\xc7\xaf\x0e\x25\xfd\xb2\xf3\xfb\xbf\xd9\x39\x57\x8b\xdd\x9b\x93\x7b\x2e\xd3\x25\x5c\x7a\xeb\x54\x7e\x83\x56\x79\x93\xe0\x3b\xdc\x70\xc9\x1d\x57\xf2\x24\x47\xc7\x52\xe6\xd8\xf2\x04\x80\x49\xa9\x1c\xa3\xc7\x96\x7e\x02\x24\x4a\x3a\xa3\x84\x40\x33\xdb\xa2\x9c\xdf\xfb\x35\xae\x3d\x17\x29\x9a\x40\xbc\xdc\x7a\xf7\xe3\xfc\xff\xe7\x6f\x4e\x00\x12\x83\x61\xf9\x2d\xcf\xd1\x3a\x96\xeb\x25\x48\x2f\xc4\x09\x80\x64\x39\x2e\x81\x4b\xeb\x98\x10\x5a\x30\x69\xe7\x4a\xa3\x61\x4e\x19\x3b\x4f\x94\x41\x45\xff\xe4\x27\x56\x63\x42\x7b\x6f\x8d\xf2\x7a\x09\x9d\x73\x22\xb5\x92\x45\xe6\x70\xab\x0c\x2f\x7f\xcf\x40\x89\x3c\xfc\x2f\x0a\x7e\x15\xb7\xbc\x16\x4c\x86\xa7\x82\x5b\xf7\xef\xf6\x9b\xf7\xdc\xba\xf0\x56\x0b\x6f\x98\x68\x32\x1a\x5e\xd8\x4c\x19\xf7\xe1\xb0\xed\x0c\xb8\x8e\x2f\xb8\xdc\x7a\xc1\x4c\x63\xcd\x09\x80\x4d\x94\xc6\x25\x84\x25\x9a\x25\x98\x9e\x00\x14\x0a\x0b\x24\x66\xc0\xd2\x34\x98\x80\x89\x6b\xc3\xa5\x43\x73\xa9\x84\xcf\x65\xb5\x41\x8a\x36\x31\x5c\xbb\xa0\xe2\xdb\x0c\x61\xc3\x8d\x75\x70\xb9\xba\x03\x2e\xc1\x65\x18\x64\x01\xb5\x81\x44\x78\xeb\xd0\xac\xd0\xec\x78\x82\x85\x47\x84\x9d\x03\x29\x80\x5f\xac\x92\xd7\xcc\x65\x4b\x98\x93\x82\xe7\xfd\x0b\x3e\xff\xf8\xa5\x58\x13\x2d\x76\xb9\xba\x2b\x7e\xbb\x3d\xc9\x63\x9d\xe1\x72\xdb\xc7\x21\xd3\xda\xa8\x1d\x13\x90\xab\x14\x7b\xf6\x2e\xe7\x34\xb6\xb9\x68\x3e\xec\xd8\xab\x9b\x4c\x50\x6b\x9b\x4c\xf5\x30\x92\x59\x2b\x25\xb0\xb0\x7e\x9c\xb6\x7b\xc3\x84\xce\xd8\x9b\x68\xc0\x24\xc3\x9c\x2d\x8b\x25\x4a\xa3\xbc\xb8\xbe\xba\xfb\xbf\x55\xe3\x31\x34\x65\xad\xb9\x0e\xa4\x14\x4b\x68\x83\x41\x0a\x17\x08\x31\x40\x86\x61\x60\x31\x58\xe8\xe0\xc7\x15\xc1\xc8\x9c\x5a\xff\x82\x89\xab\x1e\x1a\xfc\xd5\x73\x83\xe9\x61\xdf\x19\x94\x11\x5a\x7b\x44\x1a\xa8\x7e\x6a\x43\xd4\x5d\x15\x01\x71\xd4\x52\x43\xed\x69\x4b\x8e\x33\x12\x35\xce\x6a\xc8\x51\x38\x2a\xa6\x85\x76\x48\x04\x97\x71\x0b\x06\xb5\x41\x8b\x32\x66\x89\x06\x61\x08\x02\xcb\x42\xa2\x39\x90\x73\xa1\xb1\x14\x39\x5e\xa4\x94\x4a\x76\x68\x1c\x18\x4c\xd4\x56\xf2\xff\x56\xb4\x2d\x38\x15\xbd\x99\x39\xb4\xae\x45\x33\x04\x86\x64\x02\x76\x4c\x78\x3c\x07\x26\x53\xc8\xd9\x1e\x0c\xd2\x2e\xe0\x65\x8d\x5e\x98\x62\xe7\xf0\xb3\x32\x64\x8a\x8d\x5a\x42\xe6\x9c\xb6\xcb\xc5\x62\xcb\x5d\x99\x12\x13\x95\xe7\x5e\x72\xb7\x5f\x84\xec\xc6\xd7\x9e\xec\xb2\x48\x71\x87\x62\x61\xf9\x76\xc6\x4c\x92\x71\x87\x89\xf3\x06\x17\x4c\xf3\x59\x60\x5d\x86\xb4\x38\xcf\xd3\xef\x4c\x91\x44\xed\x59\x83\xd7\x23\x9f\x8d\x23\x64\xa1\x01\x0b\x50\x2e\x02\x6e\xc9\x55\xc2\xd2\x28\xc5\x41\xd1\xf4\x88\xb4\x73\xf3\x8f\xd5\x2d\x94\x5b\x07\x63\xb4\xb5\x1f\xf4\x7e\x58\x68\x0f\x26\x20\x85\x71\xb9\x41\x13\x8d\xb8\x31\x2a\x0f\x34\x51\xa6\x5a\x71\xe9\xc2\x8f\x44\x70\x94\x6d\xf5\x5b\xbf\xce\xb9\xb3\xc1\x2f\xd1\x3a\xb2\xd5\x1c\x2e\x43\x9d\x80\x35\x82\xd7\x29\x73\x98\xce\xe1\x4a\xc2\x25\xcb\x51\x5c\x32\x8b\xaf\x6e\x00\xd2\xb4\x9d\x91\x62\xa7\x99\xa0\x5e\xe2\xda\x93\x5b\xf1\x07\x50\x16\xa0\x1e\x7b\xd5\x22\x7f\xa5\x31\xa9\xa2\xa6\x8a\xf4\x0b\xad\x05\x4f\x62\x06\xa8\x3c\x05\x9c\x6a\x29\x76\x5d\x25\x8b\x2a\x5b\x0d\xb2\xd5\x95\x1a\x20\xe4\x82\x56\x3e\x6d\x3e\x6e\x11\x9f\x8d\x97\x8a\x38\xba\x73\x0a\x84\xbc\x12\xb7\x6b\x3f\x6f\xe9\xa9\x4c\xe8\xe4\xda\xe4\x5d\xde\xa2\x39\x94\x07\xad\x04\x4f\xf6\xb0\x51\x86\x32\x46\x4d\xa7\xf3\x23\xaa\x00\x57\x0e\x72\x6f\x83\xbf\x29\x89\xa4\xe3\xd3\x0b\xef\x54\xce\x1c\x4f\x4e\x41\x19\x38\xfd\x99\x49\xcf\xc4\xe9\xf1\xe2\x1e\x87\x38\xc8\xd1\x56\x27\x74\x56\x8d\xc3\xe8\x57\x5f\x1f\x1d\x66\x0c\xdb\x1f\xbd\xe3\x0e\xf3\x8e\x25\x83\x1c\x6f\x51\x52\x11\x39\xca\xe8\x87\x65\x94\x2c\xb7\x68\xda\x31\x1c\x7c\xb0\x6f\x4d\xe7\x56\x71\x49\xd5\xbb\x4c\x5e\x6b\x1d\x73\xde\x0e\x84\xcf\x69\x3d\x7e\xc2\xe4\x5a\xc2\x2a\x4a\xe8\x46\x99\x3c\xc6\x0f\x5b\x2b\x1f\x93\x53\x24\x7c\x5c\x6f\xac\x43\x6d\xab\xd0\xa0\x4a\x92\xa8\x5c\x0b\x74\xcd\x5a\x3c\x87\xff\x48\x28\xf6\xa3\x64\xe8\x0c\xe3\x82\x08\xb7\x9d\x22\x71\x9e\x89\xb0\x1b\x16\xf5\x7b\x6f\x1d\xe6\xf3\xd3\xe7\xc5\x68\xc2\x1c\x13\x6a\xbb\x8a\xd9\xa0\xf5\x52\x67\xcc\xe2\xd4\xe8\x73\x0e\xa5\xa7\x9c\x5b\xb8\xe0\x45\x92\x28\x2f\xdd\x0d\x6e\xc6\x02\xb2\x7f\x25\x18\xdc\xa0\x41\x99\x14\xd5\xdf\xc6\x09\xc0\xe2\x8c\x2e\x2f\xcd\x98\xa3\xc8\xf6\x36\x2a\x3d\x55\xb1\xdf\x4d\xab\x46\xa7\x54\x7f\x5f\x4c\x76\x28\x6f\x58\x72\x18\xe8\x69\xba\x05\xbe\xbe\x2a\xfb\x98\xd8\xbe\x60\x29\xa7\xeb\xca\x32\x83\xf1\x40\x63\xc3\x51\xa4\xa1\x03\x1d\xdf\xfb\xec\xaa\x50\x6a\xa8\xe8\x4e\x01\x03\xcd\x31\xc1\x46\x8b\x14\x54\x84\x2c\x05\xb5\xe9\xa4\x48\x78\x0c\xa8\xec\x19\x2c\x56\x9c\xc7\xfa\x5d\x34\x0a\x87\xc6\xca\x31\x2e\x81\x51\xe7\xc0\x53\xf8\xd7\xea\xe3\x87\xc5\x3f\xdb\xf5\xa6\x21\x05\x59\x16\xad\x8d\x7e\x9e\xa3\x74\xe7\x60\x7d\x92\x01\xb3\x24\x06\x39\x30\xc5\x0a\xce\x73\x26\xf9\x06\xad\x9b\x17\x7b\xa0\xb1\x9f\xdf\x7e\xe9\xd6\x1e\xc0\x4f\xca\x00\x7e\x65\x14\x7e\xe7\xc0\xa3\xc6\xab\xa6\xa4\x70\xb0\x50\x0e\x48\x1d\x15\x45\x78\xe0\x2e\xe3\xed\x3c\x5b\x69\x00\xb4\x4a\x0b\xb1\x1f\x82\xb8\x8e\xdd\x53\x1d\x88\xe2\x7a\xc2\x40\xf7\xb8\x84\xd3\x08\x6b\x2a\x36\x7f\xa3\x46\xff\xf7\xd3\x1e\xaa\xdf\x3f\x64\x68\x10\x4e\x69\xd2\x69\x64\xae\xea\x42\xe9\x59\xe9\x2f\x07\x26\x83\xc3\x3b\xc3\xb7\x5b\x34\xad\x9a\x7a\x18\xa1\xa5\xa2\x46\xe5\x07\xaa\x4a\x7c\x03\x52\xd5\x48\x04\xc2\x64\x3d\x8d\x09\xdf\x70\x4c\x8f\x98\xfe\xfc\xf6\x4b\x2f\xc7\x4d\x7d\x01\x97\x29\x7e\x85\xb7\x11\x08\x72\x4b\x5a\xfa\x61\x0e\xb7\xc1\x3b\xf6\xd2\xb1\xaf\xb4\x53\x92\x29\x8b\x7d\x9a\x55\x52\xec\x49\xe6\x8c\xed\x10\xac\xca\x11\x1e\x50\x88\x59\xec\x67\x52\x78\x60\x7b\xd2\x42\x69\x38\xf2\x37\x06\x9a\x19\x37\xe8\xad\x65\xef\x7f\xfb\xf1\xdd\xc7\x65\xe4\x8c\x1c\x6a\x2b\x89\x1d\xea\x19\x37\x9c\x7a\x79\x6a\xe2\x63\x27\x1a\xbc\xf1\xa8\x95\x2d\x87\xf5\xd1\x7d\x28\xad\x67\x4c\x6e\xb1\x04\xbe\x1b\x4f\xbd\xe1\xfc\xec\x29\x71\x7c\xdc\x90\x97\xa3\xa3\x31\x6f\x27\x8e\x3f\xad\xb5\x9d\x28\x5c\xc0\xb7\x13\x84\xfb\x50\xf3\xf2\x41\xe1\xee\xfd\x1a\x8d\x44\x87\x41\xbe\x54\x25\x96\x44\x4b\x50\x3b\xbb\x50\x3b\x2a\x14\xf8\xb0\x78\x50\xe6\x9e\xcb\xed\x8c\x5c\x73\x16\x7d\xc0\x2e\xc2\x19\xcd\xe2\xbb\xf0\xcf\x93\x65\xe9\x69\x3f\xba\x05\x0a\x93\xff\x08\xa9\x68\x1f\xbb\x78\x92\x50\x25\x24\x98\x5e\xc7\xce\x56\x31\x61\x24\xed\xb5\x14\x16\x0f\x19\x4f\xb2\x12\x9a\x17\x39\xb6\x27\x98\x38\xb5\x3e\x69\x4c\xcd\x4c\xee\x5f\xdd\x95\x49\xa1\xde\x10\x47\xfb\x59\x71\x8e\x38\x63\x32\xa5\xff\x5b\x6e\x1d\x3d\x7f\x92\x06\x3d\x9f\x14\xbe\x9f\xae\xde\xfd\x31\x0e\xee\xf9\x13\x62\x75\xed\x65\x2a\xf0\xbd\x52\xf7\x5e\x77\xb4\x3a\x0d\x51\xfe\x5e\x9f\x5b\xe2\xa9\x02\x6d\x72\x39\xd3\x46\x6d\x0d\x55\xf3\x1a\x46\x07\x1d\x4f\x5d\xdb\x83\x12\xaf\x97\x9a\x25\xf7\x6c\x8b\x05\x13\xa1\x44\xa1\x74\x65\x01\x2c\x20\x4e\x5f\xe3\xf6\x48\x3c\xd3\x2b\x49\x3c\xf3\x28\x78\x2e\x59\x6e\x31\x78\xdc\xa0\xc7\x51\x72\x1c\x3a\xf4\x42\x8a\x31\xee\x47\x1a\xcf\xbe\xde\x3d\x8e\x56\x07\x7f\x83\x5d\x35\x70\x06\x3c\x25\xff\xdf\xf0\x23\x08\x16\x5f\x6b\xe6\xb2\xce\x17\x06\xb5\x60\x6d\x60\x10\xc7\x70\x43\x0c\x47\x7c\x75\xcf\x6a\xd9\xe1\xb2\xb5\xa8\xb4\x45\xd9\xa4\x15\xba\x6c\x4c\xeb\xa1\x1b\xbb\x9e\xc2\x06\x24\x20\x3c\x30\x1b\x32\x95\xd8\x61\x1a\x8e\x9a\xfa\xfa\xc5\x11\x7b\x4c\x91\x1e\x26\x80\x82\x0e\xf9\x1f\x0d\x0d\xea\x0c\xf7\x26\xa6\x38\x46\x60\x42\x07\x37\x8f\x02\x0b\x03\x44\xcb\x03\xd8\x47\x43\x86\x41\x9a\x05\x9c\x78\x4d\xe0\x10\xc7\xd3\xe0\xc3\x20\xc9\x08\x2d\x5e\x09\x44\xc4\xf1\x34\x28\x31\x48\xb2\x82\x19\x8f\x05\x14\x83\x54\xbb\xc0\xc6\x34\x58\x31\x48\xb6\x13\x72\x4c\x00\x17\x63\x7e\xdc\x09\x3c\x06\x21\xc6\x20\xc5\x61\xf8\xd1\x0b\x34\x06\x69\x0e\x82\x90\x38\x26\x65\x8c\x7e\x40\x12\xc7\x5f\x01\x96\x3c\x42\xdc\x7e\x88\xd2\x25\xee\x37\x01\x54\x1e\x29\xdd\x00\x68\xe9\x13\xf1\x9b\x80\x2e\x8f\x10\x73\x12\x8c\xe9\x12\xf6\x85\xc0\x4c\x1c\x7f\x19\x48\xf3\x08\xcd\xf6\xc2\x9b\x2e\x6d\x7e\x03\x20\x67\xa2\x68\x89\x92\xf1\x6b\x87\xde\x4e\xae\xd9\xa1\x56\xd3\xdb\xf7\x03\xc4\x2e\x13\x8d\x33\xfa\x3a\xac\x18\x6e\x36\xbb\xc1\x4b\x1c\xbd\x10\xa6\x4e\x60\xb0\x5b\x1d\xc6\x10\x71\xcc\xba\xaf\x32\xea\x13\x68\xa7\xde\xd7\x53\x3a\x62\x00\xc1\xac\xbb\x35\x4c\x5a\x5e\x7e\x8d\x33\x34\xbb\xa5\xfb\xf7\x8c\x00\x19\xcf\xb1\x6c\x5c\xa2\x25\xc0\x55\x04\x8b\xc6\x7e\x90\x24\x84\xcb\xba\x28\x6c\xe8\xd9\xa4\x72\x59\x37\x30\x3b\x8c\x49\x11\x42\x23\xde\x11\x2d\x21\x65\x0e\x67\xc4\xeb\x88\x32\x3e\x85\x8b\xea\x17\x52\x04\x21\x1c\x6d\xd4\x1a\xd3\x3f\x41\x9a\x1c\xad\x65\xdb\xc7\x88\x71\x01\x99\xcf\x99\x04\x83\x2c\x65\x6b\x81\x25\x09\xea\xf6\xc2\x4d\xb5\xdc\x42\x8a\x8e\x71\xd1\xef\x95\x71\x1c\xee\xe3\x0e\xbe\xf0\x22\x2a\x30\xc8\xec\x70\x15\x81\xe3\x8f\x8d\xe2\xa2\x70\x89\xdc\xb0\xcf\x99\x0d\x26\x7f\x69\x1e\xbb\xee\x36\x07\x79\x2c\xee\x1b\x0f\x00\x20\xb2\x77\x5e\xde\x62\xdf\x1a\x8f\xe7\xf0\x13\x13\x16\xcf\x47\x14\xff\x49\xde\x4b\xf5\xf0\x32\x72\x84\x69\x8f\xd0\xf4\x5e\x07\x6e\x2b\xfe\x9f\xc9\xc4\xe1\x8c\x64\x52\x21\xb8\xaa\xa6\x97\x27\x5f\xc5\x89\xc7\xcc\x4b\xfe\xab\x6f\x82\xac\xf2\xf2\xb1\x97\xc3\xef\xdb\xb0\xec\x72\x75\x17\x1c\x28\x1e\x60\xd8\x78\xcf\x53\xc2\xe3\xcb\xd5\x9d\xfd\x61\xb0\x9e\x0c\xc8\xa9\x07\x8e\x00\x1a\x12\x5e\x33\x97\xb5\x80\xa3\x50\x49\xed\x13\xb2\xc3\x01\x97\xf6\x5d\x17\xaa\xe5\xb8\x72\x67\x96\xf8\xe2\x09\x13\x62\x4f\x58\x89\xe7\x14\xe6\x55\x2f\x35\x5c\x1b\x87\x64\x19\x2d\x3a\x47\xc1\x89\x9b\x0d\x26\x8e\xef\xb0\xb6\xb8\x54\x7a\x3c\xe0\xc3\xb4\x90\xec\xc9\x6c\x95\xc7\x66\x93\x98\xba\x29\x26\x97\x6e\x54\xf7\x82\x83\x86\x0b\x92\x01\x0d\x0f\x9e\x78\x51\x0c\x6f\x94\x97\x29\x30\x17\x4c\xf8\x04\x29\x9a\x5f\x05\xbc\xfe\x07\x24\x43\x3d\xd8\xf3\x0f\x77\x6b\x5f\x76\x54\xdd\xdb\x50\xf3\xd6\xd3\x03\x15\x26\xc1\xaf\x98\xf8\x2a\x06\x46\xbf\x11\x1a\xe9\xce\xc6\x1c\x78\x7a\xbf\x34\x21\xc9\x4e\xab\xe6\xd3\xba\x92\x17\xdb\x6e\xa4\x6d\x98\x10\x6b\x43\x15\xba\xbb\x77\xbf\x89\x05\x3a\x1c\x2e\x27\x2c\x47\x91\x30\x8b\x69\xab\x6e\xf7\x46\x59\x6c\xf0\xc7\x8b\xf8\x28\xeb\xc3\x85\x7b\x74\xf9\x50\xbd\x1c\x0d\x80\x50\x3d\xe3\xac\x75\xf9\x75\x4d\x01\x5c\xfa\x0f\xb4\x1b\xde\x4e\xf9\x85\x41\x82\x26\x94\xa4\xf8\xb9\x26\x23\x8d\x3e\x64\xea\x49\xb9\x33\x7c\x6e\x34\x72\xe5\x54\xdb\xff\x9a\xa6\x57\xb5\x37\xa0\x5f\x57\xb6\xf5\xa1\x3c\xb5\x3f\xb0\x6f\x09\x33\xc0\xea\x10\x93\x82\xf5\x7e\xe5\xf6\x9c\x24\xb5\x72\xa8\xdb\x49\xa9\x26\x8c\x0c\x3d\xf1\x8e\xa7\xf1\x2b\x30\xd4\xd0\xf3\x65\xca\xb3\x33\xd2\xf0\x6d\x53\xbc\x3f\xe9\xf6\xc8\x59\x75\x74\xd2\xf9\xb2\x37\xb5\x8e\xe5\xc0\x6a\xcf\x67\xe4\x88\xbe\x4f\x0d\xe3\x38\xb2\x44\xf9\xe7\x28\x03\x16\x19\x12\xb6\x60\x4b\xc1\x3a\xe4\x89\xd8\x52\xec\x27\xd8\x06\xa6\xe1\xf9\x31\x34\x3f\x8b\x7f\xa5\xd2\xfb\xf6\x9e\xcb\xbe\x33\xf9\x59\xe8\x3f\x7a\x5f\x1e\xbe\xbf\x9c\x30\x25\x9c\xe9\xf5\xce\x2b\xee\xb9\x7a\xde\x4f\x39\x4e\x88\x7f\x8a\xf3\xda\xa7\xdc\x93\x88\x94\xf7\x4a\xcf\x26\x34\x76\x08\x3d\x89\xc8\xc1\x04\x2f\x48\x6a\xf4\xf0\x78\x12\xbd\xdd\xf8\xb9\xec\x33\xeb\xe6\x51\x30\x17\x70\x77\xa0\x52\x68\x66\x1c\x4f\xbc\x60\xfd\x00\xad\xfa\x03\x87\x90\x8a\x47\x6a\x4b\xa7\x14\x16\xcd\x0e\xd3\x25\x38\xe3\x63\x50\x58\xa7\x0c\x75\x3e\xb5\x27\x7e\x5d\x7d\x99\x5f\x8a\x57\x08\x0b\xbf\xfd\x7e\xf2\xbf\x00\x00\x00\xff\xff\xc6\xcb\xa7\x60\x55\x37\x00\x00") func operatorsCoreosCom_installplansYamlBytes() ([]byte, error) { return bindataRead( @@ -139,12 +139,12 @@ func operatorsCoreosCom_installplansYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "operators.coreos.com_installplans.yaml", size: 14165, mode: os.FileMode(436), modTime: time.Unix(1606762434, 0)} + info := bindataFileInfo{name: "operators.coreos.com_installplans.yaml", size: 14165, mode: os.FileMode(420), modTime: time.Unix(1607724218, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _operatorsCoreosCom_operatorconditionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x58\x5b\x6f\x1b\xc7\xf5\x7f\xd7\xa7\x38\xe0\xff\x0f\x58\x72\xc9\xa5\x65\x17\x6e\x42\xc0\x30\x0c\xa7\x2e\x0c\x5b\x89\x61\xa9\x79\xa8\xa8\xd6\x67\x77\x0e\x97\x13\xed\xce\x6c\xe6\x42\x89\x09\xf2\xdd\x8b\x33\xb3\x17\x5e\x76\x29\xb5\x4e\xd0\x17\xce\x8b\xc4\x99\xd9\x33\xe7\xfa\x3b\x17\xac\xe4\x8f\x64\xac\xd4\x6a\x06\x58\x49\xba\x77\xa4\xf8\x97\x4d\x6e\xbf\xb1\x89\xd4\xd3\xd5\xf9\xc9\xad\x54\x62\x06\x6f\xbd\x75\xba\xfc\x4c\x56\x7b\x93\xd1\x77\xb4\x90\x4a\x3a\xa9\xd5\x49\x49\x0e\x05\x3a\x9c\x9d\x00\xa0\x52\xda\x21\x6f\x5b\xfe\x09\x90\x69\xe5\x8c\x2e\x0a\x32\x93\x9c\x54\x72\xeb\x53\x4a\xbd\x2c\x04\x99\x40\xbc\x79\x7a\xf5\x2c\x79\x91\x3c\x3b\x01\xc8\x0c\x85\xcf\xaf\x64\x49\xd6\x61\x59\xcd\x40\xf9\xa2\x38\x01\x50\x58\xd2\x0c\x74\x45\x06\x9d\x36\x99\x56\x22\x3c\x6f\x93\x66\xcb\x26\x99\x36\xa4\xf9\x4f\x79\x62\x2b\xca\x98\x83\xdc\x68\x5f\x75\x9f\x6d\xdd\x89\x34\x6b\x46\xa3\x90\x3f\xd4\xf7\xde\x36\xe4\xc3\x59\x21\xad\xfb\xd0\x7f\xfe\x51\x5a\x17\xee\x54\x85\x37\x58\xf4\x31\x18\x8e\xad\x54\xb9\x2f\xd0\xf4\x5c\x38\x01\xb0\x99\xae\x68\x06\xdf\x33\x3b\x15\x66\x24\x4e\x00\x6a\xdd\x04\xf6\x26\xb5\xf4\xab\xf3\x48\x2c\x5b\x52\x89\x91\x6f\x60\x82\xea\xcd\xa7\xf7\x3f\xbe\xb8\xdc\xda\x06\x10\x64\x33\x23\x2b\x17\x34\xbc\xc7\x39\x48\x0b\x58\x5b\x15\x1a\xb3\x82\x5e\x80\x5b\x57\x04\x5f\xf6\xee\x7f\x69\xe9\x02\xdc\x2d\x65\xb6\x64\x02\xde\x92\x00\xa7\xd9\xcc\x2b\x5a\x83\x54\x0b\x6d\xca\x60\x40\xde\xfd\xe1\xe3\x05\x60\xaa\xbd\x03\xb7\x24\xb0\x0e\x5d\x78\x00\x55\xab\x84\xa4\x25\xca\xaf\xce\x40\xa7\x3f\x51\xe6\xda\x4d\x43\x3f\x7b\x69\x48\x74\x32\x4d\xa0\x71\xb7\x76\xab\x32\x4c\xcd\xc9\xc6\x92\x71\x6d\x38\xf6\xc6\xee\x8e\x52\x9e\xb0\xde\xe2\x2d\x10\xec\xd1\x64\x03\xab\xb5\xee\x49\xd4\xaa\x0e\x6a\x59\x4a\x0b\x86\x2a\x43\x96\x54\xf4\xf1\x2d\xc2\xd0\x88\x16\x44\x48\xe0\x92\x0c\x93\x01\xbb\xd4\xbe\x10\x51\x43\xc6\x81\xa1\x4c\xe7\x4a\xfe\xd2\xd2\xb6\xac\x29\x7e\xb4\x40\x47\xd6\xed\xd0\x94\xca\x91\x51\x58\xc0\x0a\x0b\x4f\x63\x40\x25\xa0\xc4\x35\x18\xe2\x57\xc0\xab\x0d\x7a\xe1\x8a\x4d\xe0\x42\x1b\x0a\xa6\x98\xc1\xd2\xb9\xca\xce\xa6\xd3\x5c\xba\x26\xa0\x33\x5d\x96\x5e\x49\xb7\x9e\x86\xd8\x94\xa9\xe7\xb8\x98\x0a\x5a\x51\x31\xb5\x32\x9f\xa0\xc9\x96\xd2\x51\xe6\xbc\xa1\x29\x56\x72\x12\x58\x57\x31\xd8\x4a\xf1\x7f\xa6\xf6\x15\xfb\x64\x8b\xd7\x68\x40\xeb\x8c\x54\xf9\xc6\x41\x88\xab\x03\x16\xe0\xb8\x8a\xae\x18\x3f\x8d\x52\x74\x8a\xe6\x2d\xd6\xce\xe7\xbf\x5e\x5e\x41\xf3\x74\x30\xc6\xae\xf6\x83\xde\xbb\x0f\x6d\x67\x02\x56\x98\x54\x0b\x32\xd1\x88\x0b\xa3\xcb\x40\x93\x94\xa8\xb4\x54\xd1\x3d\xb3\x42\x92\xda\x55\xbf\xf5\x69\x29\x9d\x0d\x8e\x48\xd6\xb1\xad\x12\x78\x1b\x50\x0e\x52\x02\x5f\x09\x74\x24\x12\x78\xaf\xe0\x2d\x96\x54\xbc\x45\x4b\x7f\xb8\x01\x58\xd3\x76\xc2\x8a\x7d\x9c\x09\x36\x01\x7a\xf7\xf2\x4e\xc0\x01\x34\xc0\x39\x60\xaf\x3d\x58\xb8\xac\x28\x03\x2c\x0a\x7d\xc7\x36\xcc\x0a\x6f\x1d\x19\x40\x51\x4a\xd5\x0f\x0c\x3b\x1a\x3e\x8c\x0f\x35\x8a\x8c\xa1\xd2\x8e\x35\x80\x45\xb1\x06\xbd\x22\x63\xa4\x60\xcf\x08\xdf\xec\x50\x34\x54\x69\xe3\x48\x40\xba\x0e\x74\xf7\xb1\xe6\x80\xf8\x43\x70\x12\x15\x51\x15\x7a\x5d\xb2\x6f\xed\x1e\x35\xf4\xd0\x18\x5c\xef\x9d\x49\x47\x65\xcf\x27\x83\x06\xe3\x55\x0b\xb9\xcf\xc5\x7f\xf9\xd4\x96\x15\x47\x5d\x16\x60\x1f\x44\xa9\x2c\x08\x72\x28\x0b\x0b\x0b\x6d\x40\x2b\x02\x64\x4f\x70\x11\xf9\x08\x32\x6f\xcc\x7e\x78\xc4\xd5\x1a\x2e\x44\xd7\x9b\x4f\xef\xdb\x74\x92\xc0\x64\x32\x81\x2b\xde\xb6\xce\xf8\xcc\x71\xa4\x33\xa4\x29\x41\x22\xbc\x24\xa4\xd9\x35\x40\xb3\xbc\x65\x26\xd8\x1b\x82\xa8\x80\xd1\x4d\x16\x92\x0a\x01\x15\xba\x25\x24\xfc\xb2\xe7\x64\xde\x16\x03\x00\xef\xb4\x01\xba\xc7\xb2\x2a\x68\xdc\x4b\x37\xe4\xb7\x77\x5a\x5f\x86\x8f\x6b\xc6\x7e\x0d\x47\xd3\x29\x7c\x6e\xf1\x23\x3a\x4f\x6a\xc9\xac\x62\x45\x13\x7c\xb3\x97\xe4\x42\xeb\x27\xb6\xd1\x51\xd4\x47\xd2\x10\xfc\xa0\xf4\x9d\xea\x63\x35\xf0\x81\x86\xfa\xac\x05\x30\x1f\xbd\x59\xa1\x2c\x30\x2d\x68\x3e\x1a\xc3\x7c\xf4\xc9\xe8\xdc\x90\xe5\x42\x82\x37\x38\x11\xcc\x47\xdf\x51\x6e\x50\x90\x98\x8f\x9a\xe7\xfe\x54\xa1\xcb\x96\x17\x64\x72\xfa\x40\xeb\x57\xfc\x48\x3f\xfd\xad\xfb\x97\xce\xa0\xa3\x7c\xfd\xaa\xe4\x0f\x5b\x5a\x5c\xf8\x5c\xad\x2b\x7a\x55\x62\xb5\xb5\x79\x81\xd5\xc3\xd4\x5b\x27\xb3\x70\x7d\xc3\x20\xb4\x3a\x4f\x3a\xc7\xfb\xf2\x93\xd5\x6a\x36\x1f\x75\x1a\x19\xeb\x92\xdd\xb7\x72\xeb\xf9\xa8\x97\xea\x16\xab\xb3\xf9\x28\x30\x3b\x1f\xc1\x96\xc8\xb3\xf9\x88\xd9\xe2\x6d\xa3\x9d\x4e\xfd\x62\x36\x1f\xa5\x6b\x47\x76\x7c\x3e\x36\x54\x8d\xb9\x94\x7a\xd5\xbd\x3a\x1f\x7d\xe9\x17\x41\x35\x12\x6b\xb7\x24\x13\xfd\xce\xc2\x6f\x7d\xac\x0d\x82\x49\x5c\xfb\x65\x4c\xb7\x26\x50\xa0\x75\x57\x06\x95\x95\x4d\xe1\xdb\x7b\xad\x24\x6b\x31\xef\x3f\x33\x84\x76\x0f\x59\xe3\x51\xf4\xbb\xde\xa3\x01\xeb\x0d\x03\x60\x5c\xfb\xfc\xf6\xdf\xdb\xc1\x9c\xfd\xcf\x18\x0c\x62\xe1\x63\x1d\x38\xde\x08\x48\xb3\x55\x7a\xf7\x2d\xd7\x52\x61\x10\xe1\x64\xce\x78\x15\x05\xe5\x84\x81\x2a\x58\x2c\xa9\x81\x27\xd6\x5f\x29\xc1\xdd\x92\x0e\x10\x5d\x12\x78\x25\xc8\x14\x6b\x4e\x2c\x59\x07\x90\x4b\x54\x39\xe7\x78\x78\xcf\x08\x87\x01\xc3\x38\xff\xdf\x72\x60\x8f\xf9\xc3\x61\xaa\xde\x36\xf5\x4b\x90\x8f\x39\x08\xbf\x18\x24\x23\x90\xd5\xe4\x43\x09\x94\x65\x54\x39\x8e\xf8\x64\x80\xe0\x81\x7c\xd1\xac\x98\x67\x67\xc0\x85\xc9\xc4\xf5\x3b\x13\x34\xce\xf4\x28\xc3\xd5\x77\x63\x91\xb6\xf4\x25\x2a\xf6\x37\xc1\x7c\x76\x67\x4a\xc8\x0c\xdd\x30\x5b\xd0\xe6\x97\x2e\xe1\x77\x76\xac\x4d\xc5\x75\x5a\x4a\x8c\xf8\x01\x05\x6a\x41\xbf\x42\x19\x25\xde\x7f\x24\x95\xbb\xe5\x0c\x5e\x3c\xff\xcb\xcb\x6f\x7a\xaf\x45\x88\x27\xf1\x37\x52\x5c\x28\xec\x75\x0c\x03\x6a\xd9\xff\x6c\xa3\xf6\x0c\xf2\x25\x4d\xe1\x95\xe4\xed\x9d\x03\xfe\x57\xe7\xb7\xce\xf3\xee\xd0\x82\x25\x07\x29\x72\x97\xe5\x2b\xd6\x13\x67\x37\xa9\xac\x43\x95\xd1\x18\xe4\xe2\x3f\x7b\x44\xb6\x49\xaa\x58\xc3\xf9\xf3\x31\xa4\xb5\x29\xf6\xd3\xd3\xf5\xfd\x4d\xb2\x2f\xe2\x21\xca\xdf\x8e\x77\xf8\x97\x16\xd8\xd4\x7a\x11\x9c\x11\xee\xa4\x5b\x72\x05\x1f\xca\x8a\xba\xe7\x39\x54\x56\xc0\x76\x69\x41\xad\xdc\x87\x1d\x82\xcb\x8b\x9c\xcc\x03\xe1\x21\x95\x7b\xf9\xe7\x21\xaf\x91\x4a\x96\xbe\x9c\xc1\xb3\xde\x0b\x11\x6c\x1f\xe5\x23\xf1\x6a\x57\x63\x21\x83\x6b\x6e\xb0\xe4\x52\x38\x03\x29\xb8\xa6\x5d\x48\x32\x8f\x09\x20\x56\x41\x4d\x90\x2b\xa7\x2d\x5d\x3f\xb1\x35\x8a\x6e\x84\xd4\x27\xa3\x85\xcf\xc8\xf4\x81\x7f\x5c\x7a\x11\xca\x7d\xb9\x90\xd9\x86\xd9\x42\x7b\x11\x62\x31\xb6\xc4\x40\xf7\x6c\xb2\xb6\xc1\xe4\xd2\x63\x90\x64\x49\xa8\xa4\xca\x6d\xcd\x22\x77\x5b\x0c\x73\xb1\x5e\xb9\x5b\x52\x48\xa5\xa1\xc5\xae\x69\x99\x20\x85\x95\x82\x0c\x0d\x93\x45\xc8\x3d\x1a\x54\x8e\x48\x30\x78\x32\x60\xd4\x34\x36\x00\x1e\xbb\x26\xec\x01\xec\x80\x08\x38\x11\x82\x59\xd4\xba\xa1\x0b\xb8\xf3\xfb\x00\xce\xf9\xb3\xe7\x07\x1c\xac\xbd\x35\x70\xa5\x42\xc7\x8d\xff\x0c\xfe\x79\xfd\x66\xf2\x0f\x9c\xfc\x72\x73\x5a\xff\xf3\x6c\xf2\xed\xbf\xc6\xb3\x9b\xa7\x1b\x3f\x6f\xce\x5e\xff\xff\x60\x65\xee\x07\xd2\xf8\x8e\xab\xd6\xe9\xb3\x29\xf7\x1b\x6f\x18\x87\xdc\xaa\x17\x70\x65\x3c\x8d\xe1\x1d\x16\x96\xc6\xf0\x77\x15\x92\xdf\x57\x28\x8a\x94\x2f\x87\xf8\x9a\xc0\x88\x5f\xeb\xaf\x01\xc3\x71\x60\x63\xf8\xbc\x66\x6f\xb0\xfa\x7f\x94\x42\x42\x79\xae\x17\x9b\x78\xb6\xd1\xe4\x43\xc0\x61\x2e\xfc\x93\xba\xd9\x48\x32\x5d\x4e\xbb\x21\xc0\xa0\xe3\x71\x47\x74\x81\x6a\x0d\x1d\xd8\xc6\x56\x60\x37\x22\x2c\x77\xbc\x80\x99\xd1\xd6\xb6\x93\x8f\xe1\x60\x2e\xe4\x2d\x41\xdb\x33\x44\x68\x4f\x29\xc3\xd0\x46\x99\x54\x3a\x83\x66\xdd\x49\x63\x21\x43\x15\x66\x18\x96\x16\xbe\x18\x24\x7b\x6a\x89\x20\x51\x5a\xd0\x7e\x8e\x38\x8b\x88\x8f\xa9\x2c\xa4\x5b\x33\xa6\x0b\xca\xb4\x5a\x14\x32\x74\x7a\xc3\xc9\xa2\xe4\x0e\x1d\x95\x8b\x61\x6c\x28\xa7\x7b\x90\x0e\x4a\xae\xe3\xc9\x72\xe2\x38\x15\xca\x9e\x9f\x3f\x7f\x71\xe9\x53\xa1\x4b\x94\xea\x5d\xe9\xa6\x67\xaf\x4f\x7f\xf6\x58\x30\x62\x8a\xef\xb1\xa4\x77\xa5\x3b\xfb\x7d\x8a\x83\xf3\x97\x0f\xc6\xe1\xe9\x75\x8c\xb6\x9b\xd3\xeb\x49\xfd\xdf\xd3\x66\xeb\xec\xf5\xe9\x3c\x39\x78\x7e\xf6\x94\xb9\xdf\x88\xe1\x9b\xeb\x49\x17\xc0\xc9\xcd\xd3\xb3\xd7\x1b\x67\x67\xbb\xe1\xcc\x79\x58\x66\xf4\x26\xcb\xb4\xff\xc3\xc7\x0f\x7d\xa8\xf1\xc0\x10\x28\x82\x47\x33\x06\xda\x9e\xdf\x3c\x38\x02\x92\xce\xd6\x89\x3e\x4e\x7b\xa2\x57\xd4\x80\xc4\xe0\xec\x0c\xca\x22\xba\x5a\xe6\x3c\x16\x1b\xa3\x22\xb0\x6b\xeb\xa8\xfc\xea\xd9\x4e\xe7\xd4\xc7\x79\xcb\x71\xde\x72\x9c\xb7\x84\x75\x9c\xb7\x1c\xe7\x2d\xc7\x79\xcb\x71\xde\xf2\x68\x65\x1c\xe7\x2d\xdb\xeb\x38\x6f\x39\xce\x5b\x36\xd6\x71\xde\x72\x9c\xb7\x1c\xe7\x2d\xdd\x3a\xce\x5b\xf6\xd7\x71\xde\xf2\xbf\x9b\xb7\xc4\xec\x3b\x03\x67\x7c\x2c\xe3\xac\xd3\x86\xcb\xb6\x8d\x1d\x9f\xb6\xae\xd1\xb8\x75\x1d\xf5\xf0\xeb\x6f\x27\xff\x0e\x00\x00\xff\xff\x36\x76\x0d\x55\x4f\x29\x00\x00") +var _operatorsCoreosCom_operatorconditionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x58\xeb\x6f\x1b\xc7\x11\xff\xae\xbf\x62\xc0\x16\xb0\xe4\x92\x47\xd3\x09\xdc\x84\x80\x61\x18\x4e\x5d\x18\xb6\x13\xc3\x52\xf3\xa1\xa2\x5a\xcf\xdd\x0e\x8f\x1b\xdf\xed\x5e\xf6\x41\x89\x09\xf2\xbf\x17\xb3\x7b\x0f\x3e\xee\x28\xb5\x4e\xd0\x2f\xdc\x2f\x12\x77\xf7\x66\xe7\xf9\x9b\x07\x56\xf2\x47\x32\x56\x6a\x35\x07\xac\x24\xdd\x39\x52\xfc\xcb\x26\x9f\xbf\xb1\x89\xd4\xd3\xf5\xec\xec\xb3\x54\x62\x0e\xaf\xbc\x75\xba\xfc\x48\x56\x7b\x93\xd1\x77\xb4\x94\x4a\x3a\xa9\xd5\x59\x49\x0e\x05\x3a\x9c\x9f\x01\xa0\x52\xda\x21\x6f\x5b\xfe\x09\x90\x69\xe5\x8c\x2e\x0a\x32\x93\x9c\x54\xf2\xd9\xa7\x94\x7a\x59\x08\x32\x81\x78\xf3\xf4\xfa\x49\xf2\x75\x32\x3b\x03\xc8\x0c\x85\xcf\xaf\x64\x49\xd6\x61\x59\xcd\x41\xf9\xa2\x38\x03\x50\x58\xd2\x1c\x74\x45\x06\x9d\x36\x99\x56\x22\x3c\x6f\x93\x66\xcb\x26\x99\x36\xa4\xf9\x4f\x79\x66\x2b\xca\x98\x83\xdc\x68\x5f\x75\x9f\xed\xdc\x89\x34\x6b\x46\xa3\x90\x3f\xd4\xf7\x5e\x35\xe4\xc3\x59\x21\xad\x7b\xdb\x7f\xfe\x4e\x5a\x17\xee\x54\x85\x37\x58\xf4\x31\x18\x8e\xad\x54\xb9\x2f\xd0\xf4\x5c\x38\x03\xb0\x99\xae\x68\x0e\xdf\x33\x3b\x15\x66\x24\xce\x00\x6a\xdd\x04\xf6\x26\xb5\xf4\xeb\x59\x24\x96\xad\xa8\xc4\xc8\x37\x30\x41\xf5\xf2\xc3\x9b\x1f\xbf\xba\xdc\xd9\x06\x10\x64\x33\x23\x2b\x17\x34\x7c\xc0\x39\x48\x0b\x58\x5b\x15\x1a\xb3\x82\x5e\x82\xdb\x54\x04\x9f\x0e\xee\x7f\x6a\xe9\x02\xdc\xae\x64\xb6\x62\x02\xde\x92\x00\xa7\xd9\xcc\x6b\xda\x80\x54\x4b\x6d\xca\x60\x40\xde\xfd\xe1\xdd\x7b\xc0\x54\x7b\x07\x6e\x45\x60\x1d\xba\xf0\x00\xaa\x56\x09\x49\x4b\x94\x5f\x9d\x83\x4e\x7f\xa2\xcc\xb5\x9b\x86\x7e\xf6\xd2\x90\xe8\x64\x9a\x40\xe3\x6e\xed\x56\x65\x98\x9a\x93\x8d\x25\xe3\xda\x72\xec\xad\xdd\x3d\xa5\x3c\x62\xbd\xc5\x5b\x20\xd8\xa3\xc9\x06\x56\x6b\xdd\x93\xa8\x55\x1d\xd4\xb2\x92\x16\x0c\x55\x86\x2c\xa9\xe8\xe3\x3b\x84\xa1\x11\x2d\x88\x90\xc0\x25\x19\x26\x03\x76\xa5\x7d\x21\xa2\x86\x8c\x03\x43\x99\xce\x95\xfc\xa5\xa5\x6d\x59\x53\xfc\x68\x81\x8e\xac\xdb\xa3\x29\x95\x23\xa3\xb0\x80\x35\x16\x9e\xc6\x80\x4a\x40\x89\x1b\x30\xc4\xaf\x80\x57\x5b\xf4\xc2\x15\x9b\xc0\x7b\x6d\x28\x98\x62\x0e\x2b\xe7\x2a\x3b\x9f\x4e\x73\xe9\x9a\x80\xce\x74\x59\x7a\x25\xdd\x66\x1a\x62\x53\xa6\x9e\xe3\x62\x2a\x68\x4d\xc5\xd4\xca\x7c\x82\x26\x5b\x49\x47\x99\xf3\x86\xa6\x58\xc9\x49\x60\x5d\xc5\x60\x2b\xc5\x9f\x4c\xed\x2b\xf6\xd1\x0e\xaf\xd1\x80\xd6\x19\xa9\xf2\xad\x83\x10\x57\x47\x2c\xc0\x71\x15\x5d\x31\x7e\x1a\xa5\xe8\x14\xcd\x5b\xac\x9d\x8f\x7f\xbb\xbc\x82\xe6\xe9\x60\x8c\x7d\xed\x07\xbd\x77\x1f\xda\xce\x04\xac\x30\xa9\x96\x64\xa2\x11\x97\x46\x97\x81\x26\x29\x51\x69\xa9\xa2\x7b\x66\x85\x24\xb5\xaf\x7e\xeb\xd3\x52\x3a\x1b\x1c\x91\xac\x63\x5b\x25\xf0\x2a\xa0\x1c\xa4\x04\xbe\x12\xe8\x48\x24\xf0\x46\xc1\x2b\x2c\xa9\x78\x85\x96\xfe\x70\x03\xb0\xa6\xed\x84\x15\xfb\x30\x13\x6c\x03\xf4\xfe\xe5\xbd\x80\x03\x68\x80\x73\xc0\x5e\x07\xb0\x70\x59\x51\x06\x58\x14\xfa\x96\x6d\x98\x15\xde\x3a\x32\x80\xa2\x94\xaa\x1f\x18\xf6\x34\x7c\x1c\x1f\x6a\x14\x19\x43\xa5\x1d\x6b\x00\x8b\x62\x03\x7a\x4d\xc6\x48\xc1\x9e\x11\xbe\xd9\xa3\x68\xa8\xd2\xc6\x91\x80\x74\x13\xe8\x1e\x62\xcd\x11\xf1\x87\xe0\x24\x2a\xa2\x2a\xf4\xa6\x64\xdf\xda\x3f\x6a\xe8\xa1\x31\xb8\x39\x38\x93\x8e\xca\x9e\x4f\x06\x0d\xc6\xab\x16\xf2\x90\x8b\xff\xf1\xa9\x1d\x2b\x8e\xba\x2c\xc0\x3e\x88\x52\x59\x10\xe4\x50\x16\x16\x96\xda\x80\x56\x04\xc8\x9e\xe0\x22\xf2\x11\x64\xde\x98\xc3\xf0\x88\xab\x35\x5c\x88\xae\x97\x1f\xde\xb4\xe9\x24\x81\xc9\x64\x02\x57\xbc\x6d\x9d\xf1\x99\xe3\x48\x67\x48\x53\x82\x44\x78\x49\x48\xb3\x6f\x80\x66\x79\xcb\x4c\xb0\x37\x04\x51\x01\xa3\x9b\x2c\x25\x15\x02\x2a\x74\x2b\x48\xf8\x65\xcf\xc9\xbc\x2d\x06\x00\x5e\x6b\x03\x74\x87\x65\x55\xd0\xb8\x97\x6e\xc8\x6f\xaf\xb5\xbe\x0c\x1f\xd7\x8c\xfd\x1a\x8e\xa6\x53\xf8\xd8\xe2\x47\x74\x9e\xd4\x92\x59\xc7\x8a\x26\xf8\x66\x2f\xc9\xa5\xd6\x8f\x6c\xa3\xa3\xa8\x8f\xa4\x21\xf8\x56\xe9\x5b\xd5\xc7\x6a\xe0\x03\x0d\xf5\x59\x0b\x60\x31\x7a\xb9\x46\x59\x60\x5a\xd0\x62\x34\x86\xc5\xe8\x83\xd1\xb9\x21\xcb\x85\x04\x6f\x70\x22\x58\x8c\xbe\xa3\xdc\xa0\x20\xb1\x18\x35\xcf\xfd\xa5\x42\x97\xad\xde\x93\xc9\xe9\x2d\x6d\x9e\xf3\x23\xfd\xf4\x77\xee\x5f\x3a\x83\x8e\xf2\xcd\xf3\x92\x3f\x6c\x69\x71\xe1\x73\xb5\xa9\xe8\x79\x89\xd5\xce\xe6\x7b\xac\xee\xa7\xde\x3a\x99\x85\xeb\x1b\x06\xa1\xf5\x2c\xe9\x1c\xef\xd3\x4f\x56\xab\xf9\x62\xd4\x69\x64\xac\x4b\x76\xdf\xca\x6d\x16\xa3\x5e\xaa\x3b\xac\xce\x17\xa3\xc0\xec\x62\x04\x3b\x22\xcf\x17\x23\x66\x8b\xb7\x8d\x76\x3a\xf5\xcb\xf9\x62\x94\x6e\x1c\xd9\xf1\x6c\x6c\xa8\x1a\x73\x29\xf5\xbc\x7b\x75\x31\xfa\xd4\x2f\x82\x6a\x24\xd6\x6e\x45\x26\xfa\x9d\x85\xdf\xfa\x58\x1b\x04\x93\xb8\x0e\xcb\x98\x6e\x4d\xa0\x40\xeb\xae\x0c\x2a\x2b\x9b\xc2\xb7\xf7\x5a\x49\xd6\x62\xde\x7f\x66\x08\xed\x01\xb2\xc6\xa3\xe8\x77\xbd\x47\x03\xd6\x1b\x06\xc0\xb8\x0e\xf9\xed\xbf\xb7\x87\x39\x87\x9f\x31\x18\xc4\xc2\xc7\x3a\x70\xbc\x11\x90\x66\xa7\xf4\xee\x5b\xae\xa5\xc2\x20\xc2\xc9\x9c\xf1\x2a\x0a\xca\x09\x03\x55\xb0\x58\x52\x03\x4f\xac\xbf\x52\x82\xdb\x15\x1d\x21\xba\x22\xf0\x4a\x90\x29\x36\x9c\x58\xb2\x0e\x20\x57\xa8\x72\xce\xf1\xf0\x86\x11\x0e\x03\x86\x71\xfe\xff\xcc\x81\x3d\xe6\x0f\x87\xa9\x7a\xdb\xd4\x2f\x41\x3e\xe6\x20\xfc\x62\x90\x8c\x40\x56\x93\x0f\x25\x50\x96\x51\xe5\x38\xe2\x93\x01\x82\x47\xf2\x45\xb3\x62\x9e\x9d\x03\x17\x26\x13\xd7\xef\x4c\xd0\x38\xd3\x83\x0c\x57\xdf\x8d\x45\xda\xca\x97\xa8\xd8\xdf\x04\xf3\xd9\x9d\x29\x21\x33\x74\xc3\x6c\x41\x9b\x5f\xba\x84\xdf\xd9\xb1\x36\x15\xd7\x69\x29\x31\xe2\x07\x14\xa8\x05\xfd\x02\x65\x94\x78\xf7\x8e\x54\xee\x56\x73\xf8\xea\xe9\x5f\x9f\x7d\xd3\x7b\x2d\x42\x3c\x89\xbf\x93\xe2\x42\xe1\xa0\x63\x18\x50\xcb\xe1\x67\x5b\xb5\x67\x90\x2f\x69\x0a\xaf\x24\x6f\xef\x1c\xf1\xbf\x3a\xbf\x75\x9e\x77\x8b\x16\x2c\x39\x48\x91\xbb\x2c\x5f\xb1\x9e\x38\xbb\x49\x65\x1d\xaa\x8c\xc6\x20\x97\xff\xdd\x23\xb2\x4d\x52\xc5\x06\x66\x4f\xc7\x90\xd6\xa6\x38\x4c\x4f\xd7\x77\x37\xc9\xa1\x88\xc7\x28\x7f\x3b\xde\xe3\x5f\x5a\x60\x53\xeb\x65\x70\x46\xb8\x95\x6e\xc5\x15\x7c\x28\x2b\xea\x9e\xe7\x58\x59\x01\xbb\xa5\x05\xb5\x72\x1f\x77\x08\x2e\x2f\x72\x32\xf7\x84\x87\x54\xee\xd9\xd7\x43\x5e\x23\x95\x2c\x7d\x39\x87\x27\xbd\x17\x22\xd8\x3e\xc8\x47\xe2\xd5\xae\xc6\x42\x06\xd7\xdc\x60\xc9\xa5\x70\x06\x52\x70\x4d\xbb\x94\x64\x1e\x12\x40\xac\x82\x9a\x20\x57\x4e\x3b\xba\x7e\x64\x6b\x14\xdd\x0a\xa9\x0f\x46\x0b\x9f\x91\xe9\x03\xff\xb8\xf4\x32\x94\xfb\x72\x29\xb3\x2d\xb3\x85\xf6\x22\xc4\x62\x6c\x89\x81\xee\xd8\x64\x6d\x83\xc9\xa5\xc7\x20\xc9\x92\x50\x49\x95\xdb\x9a\x45\xee\xb6\x18\xe6\x62\xbd\x72\xbb\xa2\x90\x4a\x43\x8b\x5d\xd3\x32\x41\x0a\x2b\x05\x19\x1a\x26\x8b\x90\x7b\x34\xa8\x1c\x91\x60\xf0\x64\xc0\xa8\x69\x6c\x01\x3c\x76\x4d\xd8\x3d\xd8\x01\x11\x70\x22\x04\xb3\xa8\x75\x43\x17\x70\xe7\xf7\x01\x9c\xd9\x93\xa7\x47\x1c\xac\xbd\x35\x70\xa5\x42\xc7\x8d\xff\x1c\xfe\x75\xfd\x72\xf2\x4f\x9c\xfc\x72\x73\x5e\xff\xf3\x64\xf2\xed\xbf\xc7\xf3\x9b\xc7\x5b\x3f\x6f\x2e\x5e\xfc\x79\xb0\x32\xf7\x03\x69\x7c\xcf\x55\xeb\xf4\xd9\x94\xfb\x8d\x37\x8c\x43\x6e\xd5\x4b\xb8\x32\x9e\xc6\xf0\x1a\x0b\x4b\x63\xf8\x87\x0a\xc9\xef\x0b\x14\x45\xca\x97\x43\x7c\x4d\x60\xc4\xaf\xf5\xd7\x80\xe1\x38\xb0\x31\x7c\x5e\xb3\x37\x58\xfd\x3f\x48\x21\xa1\x3c\xd7\xcb\x6d\x3c\xdb\x6a\xf2\x21\xe0\x30\x17\xfe\x49\xdd\x6c\x24\x99\x2e\xa7\xdd\x10\x60\xd0\xf1\xb8\x23\x7a\x8f\x6a\x03\x1d\xd8\xc6\x56\x60\x3f\x22\x2c\x77\xbc\x80\x99\xd1\xd6\xb6\x93\x8f\xe1\x60\x2e\xe4\x67\x82\xb6\x67\x88\xd0\x9e\x52\x86\xa1\x8d\x32\xa9\x74\x06\xcd\xa6\x93\xc6\x42\x86\x2a\xcc\x30\x2c\x2d\x7d\x31\x48\xf6\xdc\x12\x41\xa2\xb4\xa0\xc3\x1c\x71\x11\x11\x1f\x53\x59\x48\xb7\x61\x4c\x17\x94\x69\xb5\x2c\x64\xe8\xf4\x86\x93\x45\xc9\x1d\x3a\x2a\x17\xc3\xd8\x50\x4e\x77\x20\x1d\x94\x5c\xc7\x93\xe5\xc4\x71\x2e\x94\x9d\xcd\x9e\x7e\x75\xe9\x53\xa1\x4b\x94\xea\x75\xe9\xa6\x17\x2f\xce\x7f\xf6\x58\x30\x62\x8a\xef\xb1\xa4\xd7\xa5\xbb\xf8\x7d\x8a\x83\xd9\xb3\x7b\xe3\xf0\xfc\x3a\x46\xdb\xcd\xf9\xf5\xa4\xfe\xef\x71\xb3\x75\xf1\xe2\x7c\x91\x1c\x3d\xbf\x78\xcc\xdc\x6f\xc5\xf0\xcd\xf5\xa4\x0b\xe0\xe4\xe6\xf1\xc5\x8b\xad\xb3\x8b\xfd\x70\xe6\x3c\x2c\x33\x7a\x99\x65\xda\xff\xe1\xe3\x87\x3e\xd4\xb8\x67\x08\x14\xc1\xa3\x19\x03\xed\xce\x6f\xee\x1d\x01\x49\x67\xeb\x44\x1f\xa7\x3d\xd1\x2b\x6a\x40\x62\x70\x76\x06\x65\x11\x5d\x2d\x73\x1e\x8b\xad\x51\x11\xd8\x8d\x75\x54\x7e\xf1\x6c\xa7\x73\xea\xd3\xbc\xe5\x34\x6f\x39\xcd\x5b\xc2\x3a\xcd\x5b\x4e\xf3\x96\xd3\xbc\xe5\x34\x6f\x79\xb0\x32\x4e\xf3\x96\xdd\x75\x9a\xb7\x9c\xe6\x2d\x5b\xeb\x34\x6f\x39\xcd\x5b\x4e\xf3\x96\x6e\x9d\xe6\x2d\x87\xeb\x34\x6f\xf9\xff\xcd\x5b\x62\xf6\x9d\x83\x33\x3e\x96\x71\xd6\x69\xc3\x65\xdb\xd6\x8e\x4f\x5b\xd7\x68\xdc\xba\x8e\x7a\xf8\xf5\xb7\xb3\xff\x04\x00\x00\xff\xff\xc2\x2a\x06\x93\x4f\x29\x00\x00") func operatorsCoreosCom_operatorconditionsYamlBytes() ([]byte, error) { return bindataRead( @@ -159,12 +159,12 @@ func operatorsCoreosCom_operatorconditionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "operators.coreos.com_operatorconditions.yaml", size: 10575, mode: os.FileMode(436), modTime: time.Unix(1606762435, 0)} + info := bindataFileInfo{name: "operators.coreos.com_operatorconditions.yaml", size: 10575, mode: os.FileMode(420), modTime: time.Unix(1607724219, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x59\x5f\x73\xdb\x36\x12\x7f\xf7\xa7\xd8\x71\x1f\xdc\xcc\x98\x52\x9b\xbe\xdc\xe8\xcd\x93\xe4\x3a\xbe\x4b\x1d\x8f\xed\xe6\xa5\xd3\x87\x15\xb9\x12\x71\x02\x01\x1e\x00\x4a\xd6\x65\xf2\xdd\x6f\x16\xe0\x7f\x91\xb4\x92\xbb\x36\x7d\x20\x5f\x6c\x91\xc0\x62\xff\xfe\x76\x17\x8b\xb9\xf8\x48\xc6\x0a\xad\x56\x80\xb9\xa0\x67\x47\x8a\x7f\xd9\xc5\xee\x6f\x76\x21\xf4\x72\xff\xe3\xc5\x4e\xa8\x64\x05\x6f\x0a\xeb\x74\xf6\x40\x56\x17\x26\xa6\xb7\xb4\x11\x4a\x38\xa1\xd5\x45\x46\x0e\x13\x74\xb8\xba\x00\x40\xa5\xb4\x43\x7e\x6d\xf9\x27\x40\xac\x95\x33\x5a\x4a\x32\xd1\x96\xd4\x62\x57\xac\x69\x5d\x08\x99\x90\xf1\xc4\xab\xa3\xf7\x3f\x2c\x7e\x5a\xfc\x70\x01\x10\x1b\xf2\xdb\x9f\x44\x46\xd6\x61\x96\xaf\x40\x15\x52\x5e\x00\x28\xcc\x68\x05\x3a\x27\x83\x4e\x9b\xad\xd1\x45\x6e\x17\xd5\x4f\xbb\x88\xb5\x21\xcd\x7f\xb2\x0b\x9b\x53\xcc\xa7\xfb\x35\xcd\x96\xce\x9a\x40\xaf\x62\x12\x1d\x6d\xb5\x11\xd5\xef\x08\xb4\xcc\xfc\x7f\x41\xf4\x0f\x25\x85\x9f\x99\xa0\x7f\x2f\x85\x75\xff\x3c\xfd\xf6\x5e\x58\xe7\xbf\xe7\xb2\x30\x28\xfb\xec\xfa\x4f\x36\xd5\xc6\xdd\x35\x87\x47\xa0\xb7\xe1\x83\x50\xdb\x42\xa2\xe9\xed\xba\x00\xb0\xb1\xce\x69\x05\x7e\x53\x8e\x31\x25\x17\x00\xa5\xea\x3c\x91\xa8\x54\xce\xfe\xc7\x40\x28\x4e\x29\xc3\x40\x1d\x98\x98\xba\xb9\xbf\xfd\xf8\xd3\x63\xe7\x35\x40\x42\x36\x36\x22\x77\xde\x00\x1d\x31\x40\x58\x70\x29\x41\xa1\x84\x03\xbd\x81\xac\x90\x4e\x38\x52\xa8\xe2\x23\x6c\xb4\x81\x0f\xef\x7f\x81\x0c\x15\x6e\x29\x69\xa9\xb7\xa6\x0c\x70\xeb\xd8\xf2\xd6\x19\x14\x2a\xd0\x12\xca\x3a\x94\xd2\x1b\x97\x69\xd6\xdb\x40\x28\x10\xce\x06\x7b\xb0\x74\xe0\x34\x20\xb0\x11\xc5\x46\x78\x59\xab\xc7\x92\x67\xc7\xa1\xd9\x92\x6b\x36\xb4\x4e\x76\x47\x56\x94\x5e\xff\x8b\x62\x57\xbf\x34\xf4\xef\x42\x18\x4a\x1a\xd1\x23\xa8\x9c\xb6\x7e\x95\x1b\xe6\xc8\xd5\x3e\x10\x9e\x56\x78\xb4\xde\xf6\x74\x77\xc5\xea\x0d\xab\x20\xe1\xb8\xa0\x20\x72\x69\x22\x4a\x4a\x8b\x78\xde\x53\x61\xc1\x50\x6e\xc8\x92\x0a\x91\xd2\x21\x0c\xbc\x08\x55\x29\xc2\x02\x1e\xc9\x30\x19\xf6\x9a\x42\x26\xac\xd4\x3d\x19\x07\x86\x62\xbd\x55\xe2\x3f\x35\x6d\xcb\x5a\xe3\x43\x25\x3a\xb2\xae\x47\x53\x28\x47\x46\xa1\x84\x3d\xca\x82\xae\x01\x55\x02\x19\x1e\xc1\x10\x9f\x02\x85\x6a\xd1\xf3\x4b\xec\x02\x7e\xd1\x86\xad\xb6\xd1\x2b\x48\x9d\xcb\xed\x6a\xb9\xdc\x0a\x57\xc1\x42\xac\xb3\x8c\xdd\xe3\xb8\xf4\x11\x2e\xd6\x05\xdb\x72\x99\xd0\x9e\xe4\xd2\x8a\x6d\x84\x26\x4e\x85\xa3\xd8\x15\x86\x96\x98\x8b\xc8\xb3\xae\x3c\x34\x2c\xb2\xe4\x3b\x53\x02\x89\xbd\xea\xf0\x1a\x0c\x68\x9d\x11\x6a\xdb\xfa\xe0\xe3\x70\xc2\x02\x1c\x8b\xec\xb5\x58\x6e\x0d\x52\x34\x8a\xe6\x57\xac\x9d\x87\x77\x8f\x4f\x50\x1d\xed\x8d\xd1\xd7\xbe\xd7\x7b\xb3\xd1\x36\x26\x60\x85\x09\xb5\x21\x13\x8c\xb8\x31\x3a\xf3\x34\x49\x25\xb9\x16\xca\xf9\x1f\xb1\x14\xa4\xfa\xea\xb7\xc5\x3a\x63\x17\x67\x47\x24\xeb\xd8\x56\x0b\x78\xe3\xb1\x12\xd6\x04\x45\x9e\xa0\xa3\x64\x01\xb7\x0a\xde\x60\x46\xf2\x0d\x5a\xfa\xc3\x0d\xc0\x9a\xb6\x11\x2b\xf6\x3c\x13\xb4\x61\xbe\xbf\xb8\x17\x70\x00\x15\x04\x8f\xd8\xab\x83\x36\x8f\x39\xc5\x15\xe2\xf0\x3e\x8f\x30\xa8\x7a\x90\x54\x19\x6d\x71\xce\xf1\x63\xe1\xec\x59\x23\x49\xb1\xd3\xa6\xff\xbe\xc7\xe2\x63\xb9\xac\x5c\x1f\xd8\xeb\xb0\x74\x65\xa7\x90\xe8\x45\x0e\xa7\xb9\xf4\x1a\x47\x17\xa7\xef\x9e\xd9\x13\x6d\x93\x51\x27\xb9\xee\x6f\x09\x31\xc1\xd9\x8a\x71\x45\xe2\x9a\x64\xad\x80\x0a\x17\x33\xef\xe6\x83\xb4\x01\x9e\x52\xea\xac\x03\x34\x04\x37\x77\x6f\x29\x19\xde\x11\xc4\x45\x63\xf0\x38\xf8\x5d\x38\xca\x46\x04\xe9\x89\x72\x33\xc1\x6e\x19\xea\xd5\x17\x97\xe2\xa9\x6e\xab\x87\xc3\xc3\x67\xa1\x00\x6c\xd7\x80\xb0\xa3\x63\xc0\x40\x06\xda\xd2\xa4\x9e\x08\x18\xf2\xf8\xe9\x8d\xbd\xa3\x61\x11\xf8\xe1\xcd\x25\x50\x8e\xac\x99\xb4\x7b\x78\x4e\xf3\x52\xf7\x89\x26\x58\x88\x6a\xc6\x47\x16\x4c\xbb\x56\x78\x76\x74\x1c\xff\xd8\x33\xc7\x8e\x8e\x55\x90\x06\xbb\xf0\x0b\xaf\x33\x1f\xb7\x95\x29\x30\xcf\xa5\xa0\x3e\xaa\x76\x1f\xa7\xc7\x94\x06\xe3\xf0\xd3\x7d\x2a\xe1\xcf\x66\xbf\x36\x73\x83\xec\xc1\x11\xae\x6c\x30\x3a\x47\x4b\x2a\x72\x70\x7a\x92\x77\xac\x8a\x90\x2a\x4d\x7e\x44\x29\x5a\x45\x90\x8f\x8f\x5b\x75\x0d\x77\xda\xf1\x9f\x77\xcf\xc2\xba\x69\x75\xb0\x2f\xbd\xd5\x64\xef\xb4\xf3\xab\xff\x67\xe5\x04\xd6\xce\x56\x4d\x58\xee\x43\x4a\x85\xc8\x65\xf9\xda\x79\xd4\x2e\xe0\x96\x4b\x17\x9a\x94\xa3\x56\xb1\xb0\x9c\xc9\xb4\xa9\x74\xe0\x6b\xa1\x70\x48\x20\x9f\x15\xd6\x27\x3e\xa5\x55\x44\x59\xee\x8e\x53\x22\x43\x79\x76\x87\x7e\x50\x2b\x9f\xd1\xd6\x5c\xfb\xa8\x69\x95\x77\xd8\x08\x2c\xc0\x13\x67\xf5\xf0\x25\xd4\x68\x92\x4b\x6d\x48\x0a\xaf\x08\x5f\x59\x70\x9f\x20\xe2\x49\xd2\x19\x99\x2d\x41\xce\x38\xfc\xb2\x21\xc7\x71\x32\x3c\x93\x68\xd9\x26\x34\xea\x11\x3e\x21\xbc\xe7\x80\x3d\x3b\x7d\x84\xd5\x01\x62\x33\xcc\xd9\x19\x3e\x31\x62\x7a\xbd\x7e\x86\x1c\x85\xb1\x0b\xb8\xf1\xfd\x8a\x1c\x73\x89\xf6\x0e\xa1\xbc\x5d\xda\xc4\x99\xae\xb0\xc0\x00\xb8\x47\xc9\x88\xce\x45\xbf\x02\x92\x1e\xdf\x47\x88\x72\x2b\xd2\x4b\x70\xd7\x70\x48\xb5\xf5\x60\x0d\x1b\x41\xd2\x57\x81\x97\x3b\x3a\x5e\x5e\x77\x9c\x66\x84\x22\x2f\xbe\x55\x97\x21\x1b\x9c\xf8\x69\x9d\x3a\xb4\x92\x47\xb8\xf4\xdf\x2e\x17\x27\x39\x71\x84\xf6\x59\x99\x72\x22\x41\x60\x92\xf8\x06\x1b\xe5\xfd\x8b\x58\x3e\xe1\x05\x96\xcc\x5e\xc4\x74\x13\xc7\xba\x50\xbe\xf1\x7c\xb1\xf2\xe9\x6f\xa8\x80\x1f\x93\x4c\xa8\xa6\x33\xab\x48\x03\x86\xa5\x03\xbc\x1d\x52\x11\xa7\x70\x10\x52\xfa\x42\xd7\x52\xc2\x86\x4e\x28\x97\xfa\x58\xdb\xe6\x7b\xfb\x2a\xf8\x88\xb0\x4d\x90\xfb\xde\x77\xac\x9c\x1a\x16\x94\xdb\xa9\xf8\xde\xe8\xbd\x48\x28\xb9\xb9\xbf\x1d\xd0\x56\x57\x50\xbf\x01\x1c\x49\x69\x7d\x4b\xcb\xf5\xb8\xd3\x65\x3d\x3e\x58\xf0\xe5\x2d\xea\x03\xe2\x36\xd7\x1f\x23\x8c\xaf\xb5\x96\x84\xfd\xaf\xa1\x8c\xac\xdb\xfb\x97\xf8\x7e\xea\x2d\x2f\xa1\x9b\x9e\x73\x29\x62\xe1\xaa\x0c\xd5\x54\xa5\xc3\x49\x2d\x9c\xea\xa1\x5d\xf8\x8a\xca\x92\xbb\x6e\xea\x5e\x61\x41\x6c\x95\x36\x43\xfe\x3b\x85\x5e\xa3\x98\x35\x89\x54\xcf\xd1\xae\x58\x93\x51\xe4\xc8\x46\x5c\xaf\x46\xe5\x72\xea\xb4\x15\x0e\x5d\x61\xcf\x6e\x2c\xfc\xea\xba\xb5\x08\xbf\x86\x9a\x8b\x87\x2f\xeb\x2d\x86\xeb\xb6\x08\x24\x5a\xf7\x6b\xe8\xe5\xce\xec\x45\x5a\x3b\x5e\xb0\xf9\xfb\x66\x65\x40\x66\x57\x5d\x90\x85\x5b\x05\xf2\xb4\xfc\xdb\x21\xc7\x1d\x30\x47\xa9\x8f\x03\x5a\x28\x09\x7f\x51\xb4\x01\x6b\x32\x43\xb7\x02\xde\x1b\xf1\xc1\xbd\x15\xea\x5c\x7f\xee\x7a\x72\x28\x27\x87\x2f\x7a\xbc\xf5\x4e\xc4\xfb\xeb\xf8\x27\x9c\xe0\xed\x03\x6d\xbe\x08\x6e\x1f\x68\x03\x86\x36\x64\x48\xc5\x54\x29\xa3\x83\xb2\xe3\x29\xa3\x06\xe6\xff\x6b\x17\x3a\x76\x05\x36\x28\xcc\xcd\xfd\x6d\x75\xed\x55\xf9\x65\x29\xcd\x48\x59\xfb\x42\xf9\xe2\x53\xfa\x3d\xba\xf4\x8c\xb3\xaf\x6e\x4b\xd5\xf9\x7a\xcd\x5f\x22\xe6\x82\x62\xea\xdc\xa8\xf9\x7b\x48\xc2\x04\xf4\x66\x2c\x6d\x2b\x20\xe5\x84\xa1\x72\xc7\x75\x48\x4c\x65\x3d\xdc\xdc\xc3\x71\x65\x00\xc8\x05\x83\x48\xe0\x1f\x8f\x1f\xee\x96\x3f\x8f\xb5\x0e\xa1\x30\xc1\x38\x26\x6b\x7d\xdc\xf9\xba\xe1\x1a\x6c\x11\xa7\x80\x96\xc5\x60\x3c\x61\xbc\xa2\x45\x86\x4a\x6c\xc8\xba\x45\x79\x06\x19\xfb\xdb\xeb\xdf\xc7\x6a\xc9\xbf\x6b\x03\xf4\x8c\x59\x2e\xe9\x1a\x44\x59\x28\x57\x77\x58\xa5\x1b\xf9\xa8\x62\x75\xd4\x14\xe1\x20\x5c\x2a\x4e\x93\x54\xa9\x01\xc8\x75\x52\x8a\x7d\xf0\xe2\x3a\xdc\x11\xe8\x52\xdc\x82\x40\x8a\x1d\xad\xe0\x92\x1d\xae\xc5\xe6\x27\x0e\xd4\xcf\x97\x23\x54\xbf\x3f\xa4\x64\x08\x2e\x79\xd1\x65\x60\xae\xbe\xb4\xe4\x77\x95\xbf\x34\x4c\x86\xee\xd2\x88\xed\x96\x4c\x0f\x52\x9b\xc7\xdf\xc0\xed\x49\xb9\x57\xdc\x0d\x88\x0d\x28\xdd\x22\xa1\xca\xea\xa5\xa9\x59\xfa\x4c\xff\xf6\xfa\xf7\x51\x8e\xbb\xfa\x02\xa1\x12\x7a\x86\xd7\x75\xad\x92\xeb\xe4\x55\xd9\x36\xd8\xa3\x72\xf8\xcc\x27\xc5\x5c\x8e\x8e\x69\xd6\xd7\x91\x4e\x43\x8a\x7b\x02\xab\x33\x82\x03\x49\x19\x85\x4b\xe3\x04\x0e\xa1\xf5\xaa\x0c\x17\xda\x8e\x1c\x8d\x9b\xf4\xd6\xea\xaa\xf8\xe9\xc3\xdb\x0f\xab\xc0\x19\x3b\xd4\x56\x31\x3b\x5c\xd2\x6c\x84\x42\x59\x56\xb8\xc2\xd6\x65\xf2\x08\x45\x5b\x04\xf7\x71\x1a\xe2\x14\xd5\x96\xaa\xfa\x7d\x53\xb8\xc2\xd0\xe2\xea\x6b\xe2\xf8\xf4\xfe\xb6\x7a\x06\xee\x71\xfb\xc0\xf1\xcd\x6e\x42\xcf\x14\x4e\x0d\xd6\xd4\xa7\xc2\xdd\xb5\xbc\x7c\x52\xb8\x26\xd5\xb0\x7c\x89\x8e\x2d\x8b\x16\x53\xee\xec\x52\xef\x39\x1d\xd0\x61\x79\xd0\x66\x27\xd4\x36\x62\xd7\x8c\x82\x0f\xd8\xa5\x4f\x95\xcb\xef\xfc\x9f\xaf\x96\xc5\xe7\xda\x73\x05\x0a\x23\x9b\x3f\x41\x2a\x5f\x00\x2c\xbf\x4a\xa8\xea\xee\xf8\xfc\x3c\x76\xf5\x18\x00\x23\xee\xef\xe5\xb0\x08\x4d\x4d\x39\xc9\x29\x31\x76\xbc\xbf\xcc\x30\x09\xd0\x8c\xea\xf8\x87\xbb\x32\x2b\xb4\x30\xcc\xd1\x31\x2a\x47\xaf\x11\xaa\x84\xff\xb7\xc2\x3a\x7e\xff\x55\x1a\x2c\xc4\x59\xe1\xfb\xeb\xed\xdb\x3f\xc7\xc1\x0b\x71\x76\xac\x72\xf9\x44\xc9\x0a\x9c\x29\x82\x95\xac\xd3\x06\xb7\xd4\x7e\x53\xac\xeb\x71\x54\x25\x66\xd9\x6a\xc0\xa7\xcf\x9d\x01\x2b\xca\x3c\xc5\xd7\x61\xd7\x3c\x66\x9d\xc7\xac\x9d\x67\x1e\xb3\xce\x63\xd6\x79\xcc\x5a\xb2\x36\x8f\x59\xe7\x31\xeb\x3c\x66\x85\x79\xcc\x3a\x8f\x59\xe7\x31\xeb\x3c\x66\x9d\xc7\xac\xf3\x98\x75\x1e\xb3\xce\x63\xd6\x6f\x35\x66\x9d\x47\xa7\xf3\xe8\xf4\x5b\x8c\x4e\xe7\x71\xe8\x3c\x0e\x1d\x92\x62\x1e\x87\xce\xe3\xd0\x79\x1c\x7a\xf2\xcc\xe3\xd0\x79\x1c\x3a\x8f\x43\xe7\x71\xe8\x37\x18\x87\x6e\x50\xda\xb3\xe6\xa1\xff\x0d\x00\x00\xff\xff\xcf\x0d\x29\x66\x34\x3c\x00\x00") +var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x59\x5f\x73\xdb\xb8\x11\x7f\xf7\xa7\xd8\xf1\x3d\xf8\x32\x63\x4a\x4d\xda\x87\x8e\xde\x3c\x49\x7a\xe3\x36\xe7\x78\x6c\x5f\x5e\x6e\xee\x61\x45\xae\x44\x54\x20\xc0\x02\xa0\x64\x35\x93\xef\xde\x59\x80\xff\x45\xd2\x4a\xda\xbb\xf4\x81\x7c\xb1\x45\x02\x8b\xfd\xfb\xdb\x5d\x2c\xe6\xe2\x13\x19\x2b\xb4\x5a\x01\xe6\x82\x9e\x1d\x29\xfe\x65\x17\xbb\xbf\xda\x85\xd0\xcb\xfd\xeb\x8b\x9d\x50\xc9\x0a\xde\x16\xd6\xe9\xec\x81\xac\x2e\x4c\x4c\xef\x68\x23\x94\x70\x42\xab\x8b\x8c\x1c\x26\xe8\x70\x75\x01\x80\x4a\x69\x87\xfc\xda\xf2\x4f\x80\x58\x2b\x67\xb4\x94\x64\xa2\x2d\xa9\xc5\xae\x58\xd3\xba\x10\x32\x21\xe3\x89\x57\x47\xef\xff\xb4\xf8\xcb\xe2\xf5\x05\x40\x6c\xc8\x6f\x7f\x12\x19\x59\x87\x59\xbe\x02\x55\x48\x79\x01\xa0\x30\xa3\x15\xe8\x9c\x0c\x3a\x6d\xb6\x46\x17\xb9\x5d\x54\x3f\xed\x22\xd6\x86\x34\xff\xc9\x2e\x6c\x4e\x31\x9f\xee\xd7\x34\x5b\x3a\x6b\x02\xbd\x8a\x49\x74\xb4\xd5\x46\x54\xbf\x23\xd0\x32\xf3\xff\x05\xd1\x3f\x96\x14\x7e\x62\x82\xfe\xbd\x14\xd6\xfd\xe3\xf4\xdb\x07\x61\x9d\xff\x9e\xcb\xc2\xa0\xec\xb3\xeb\x3f\xd9\x54\x1b\x77\xd7\x1c\x1e\x81\xde\x86\x0f\x42\x6d\x0b\x89\xa6\xb7\xeb\x02\xc0\xc6\x3a\xa7\x15\xf8\x4d\x39\xc6\x94\x5c\x00\x94\xaa\xf3\x44\xa2\x52\x39\xfb\xd7\x81\x50\x9c\x52\x86\x81\x3a\x30\x31\x75\x73\x7f\xfb\xe9\xcf\x8f\x9d\xd7\x00\x09\xd9\xd8\x88\xdc\x79\x03\x74\xc4\x00\x61\xc1\xa5\x04\x85\x12\x0e\xf4\x06\xb2\x42\x3a\xe1\x48\xa1\x8a\x8f\xb0\xd1\x06\x3e\x7e\xf8\x19\x32\x54\xb8\xa5\xa4\xa5\xde\x9a\x32\xc0\xad\x63\xcb\x5b\x67\x50\xa8\x40\x4b\x28\xeb\x50\x4a\x6f\x5c\xa6\x59\x6f\x03\xa1\x40\x38\x1b\xec\xc1\xd2\x81\xd3\x80\xc0\x46\x14\x1b\xe1\x65\xad\x1e\x4b\x9e\x1d\x87\x66\x4b\xae\xd9\xd0\x3a\xd9\x1d\x59\x51\x7a\xfd\x4f\x8a\x5d\xfd\xd2\xd0\xbf\x0a\x61\x28\x69\x44\x8f\xa0\x72\xda\xfa\x55\x6e\x98\x23\x57\xfb\x40\x78\x5a\xe1\xd1\x7a\xdb\xd3\xdd\x15\xab\x37\xac\x82\x84\xe3\x82\x82\xc8\xa5\x89\x28\x29\x2d\xe2\x79\x4f\x85\x05\x43\xb9\x21\x4b\x2a\x44\x4a\x87\x30\xf0\x22\x54\xa5\x08\x0b\x78\x24\xc3\x64\xd8\x6b\x0a\x99\xb0\x52\xf7\x64\x1c\x18\x8a\xf5\x56\x89\x7f\xd7\xb4\x2d\x6b\x8d\x0f\x95\xe8\xc8\xba\x1e\x4d\xa1\x1c\x19\x85\x12\xf6\x28\x0b\xba\x06\x54\x09\x64\x78\x04\x43\x7c\x0a\x14\xaa\x45\xcf\x2f\xb1\x0b\xf8\x59\x1b\xb6\xda\x46\xaf\x20\x75\x2e\xb7\xab\xe5\x72\x2b\x5c\x05\x0b\xb1\xce\x32\x76\x8f\xe3\xd2\x47\xb8\x58\x17\x6c\xcb\x65\x42\x7b\x92\x4b\x2b\xb6\x11\x9a\x38\x15\x8e\x62\x57\x18\x5a\x62\x2e\x22\xcf\xba\xf2\xd0\xb0\xc8\x92\x1f\x4c\x09\x24\xf6\xaa\xc3\x6b\x30\xa0\x75\x46\xa8\x6d\xeb\x83\x8f\xc3\x09\x0b\x70\x2c\xb2\xd7\x62\xb9\x35\x48\xd1\x28\x9a\x5f\xb1\x76\x1e\xde\x3f\x3e\x41\x75\xb4\x37\x46\x5f\xfb\x5e\xef\xcd\x46\xdb\x98\x80\x15\x26\xd4\x86\x4c\x30\xe2\xc6\xe8\xcc\xd3\x24\x95\xe4\x5a\x28\xe7\x7f\xc4\x52\x90\xea\xab\xdf\x16\xeb\x8c\x5d\x9c\x1d\x91\xac\x63\x5b\x2d\xe0\xad\xc7\x4a\x58\x13\x14\x79\x82\x8e\x92\x05\xdc\x2a\x78\x8b\x19\xc9\xb7\x68\xe9\x77\x37\x00\x6b\xda\x46\xac\xd8\xf3\x4c\xd0\x86\xf9\xfe\xe2\x5e\xc0\x01\x54\x10\x3c\x62\xaf\x0e\xda\x3c\xe6\x14\x57\x88\xc3\xfb\x3c\xc2\xa0\xea\x41\x52\x65\xb4\xc5\x39\xc7\x8f\x85\xb3\x67\x8d\x24\xc5\x4e\x9b\xfe\xfb\x1e\x8b\x8f\xe5\xb2\x72\x7d\x60\xaf\xc3\xd2\x95\x9d\x42\xa2\x17\x39\x9c\xe6\xd2\x6b\x1c\x5d\x9c\xbe\x7f\x66\x4f\xb4\x4d\x46\x9d\xe4\xba\xbf\x25\xc4\x04\x67\x2b\xc6\x15\x89\x6b\x92\xb5\x02\x2a\x5c\xcc\xbc\x9b\x0f\xd2\x06\x78\x4a\xa9\xb3\x0e\xd0\x10\xdc\xdc\xbd\xa3\x64\x78\x47\x10\x17\x8d\xc1\xe3\xe0\x77\xe1\x28\x1b\x11\xa4\x27\xca\xcd\x04\xbb\x65\xa8\x57\x5f\x5c\x8a\xa7\xba\xad\x1e\x0e\x0f\x9f\x85\x02\xb0\x5d\x03\xc2\x8e\x8e\x01\x03\x19\x68\x4b\x93\x7a\x22\x60\xc8\xe3\xa7\x37\xf6\x8e\x86\x45\xe0\x87\x37\x97\x40\x39\xb2\x66\xd2\xee\xe1\x39\xcd\x4b\xdd\x27\x9a\x60\x21\xaa\x19\x1f\x59\x30\xed\x5a\xe1\xd9\xd1\x71\xfc\x63\xcf\x1c\x3b\x3a\x56\x41\x1a\xec\xc2\x2f\xbc\xce\x7c\xdc\x56\xa6\xc0\x3c\x97\x82\xfa\xa8\xda\x7d\x9c\x1e\x53\x1a\x8c\xc3\x4f\xf7\xa9\x84\x3f\x9b\xfd\xda\xcc\x0d\xb2\x07\x47\xb8\xb2\xc1\xe8\x1c\x2d\xa9\xc8\xc1\xe9\x49\xde\xb1\x2a\x42\xaa\x34\xf9\x09\xa5\x68\x15\x41\x3e\x3e\x6e\xd5\x35\xdc\x69\xc7\x7f\xde\x3f\x0b\xeb\xa6\xd5\xc1\xbe\xf4\x4e\x93\xbd\xd3\xce\xaf\xfe\xaf\x95\x13\x58\x3b\x5b\x35\x61\xb9\x0f\x29\x15\x22\x97\xe5\x6b\xe7\x51\xbb\x80\x5b\x2e\x5d\x68\x52\x8e\x5a\xc5\xc2\x72\x26\xd3\xa6\xd2\x81\xaf\x85\xc2\x21\x81\x7c\x56\x58\x9f\xf8\x94\x56\x11\x65\xb9\x3b\x4e\x89\x0c\xe5\xd9\x1d\xfa\x41\xad\x7c\x46\x5b\x73\xed\xa3\xa6\x55\xde\x61\x23\xb0\x00\x4f\x9c\xd5\xc3\x97\x50\xa3\x49\x2e\xb5\x21\x29\xbc\x22\x7c\x65\xc1\x7d\x82\x88\x27\x49\x67\x64\xb6\x04\x39\xe3\xf0\xcb\x86\x1c\xc7\xc9\xf0\x4c\xa2\x65\x9b\xd0\xa8\x47\xf8\x84\xf0\x81\x03\xf6\xec\xf4\x11\x56\x07\x88\xcd\x30\x67\x67\xf8\xcc\x88\xe9\xf5\xfa\x05\x72\x14\xc6\x2e\xe0\xc6\xf7\x2b\x72\xcc\x25\xda\x3b\x84\xf2\x76\x69\x13\x67\xba\xc2\x02\x03\xe0\x1e\x25\x23\x3a\x17\xfd\x0a\x48\x7a\x7c\x1f\x21\xca\xad\x48\x2f\xc1\x5d\xc3\x21\xd5\xd6\x83\x35\x6c\x04\x49\x5f\x05\x5e\xee\xe8\x78\x79\xdd\x71\x9a\x11\x8a\xbc\xf8\x56\x5d\x86\x6c\x70\xe2\xa7\x75\xea\xd0\x4a\x1e\xe1\xd2\x7f\xbb\x5c\x9c\xe4\xc4\x11\xda\x67\x65\xca\x89\x04\x81\x49\xe2\x1b\x6c\x94\xf7\x2f\x62\xf9\x84\x17\x58\x32\x7b\x11\xd3\x4d\x1c\xeb\x42\xf9\xc6\xf3\xc5\xca\xa7\xbf\xa1\x02\x7e\x4c\x32\xa1\x9a\xce\xac\x22\x0d\x18\x96\x0e\xf0\x76\x48\x45\x9c\xc2\x41\x48\xe9\x0b\x5d\x4b\x09\x1b\x3a\xa1\x5c\xea\x63\x6d\x9b\x1f\xed\xab\xe0\x23\xc2\x36\x41\xee\x7b\xdf\xb1\x72\x6a\x58\x50\x6e\xa7\xe2\x7b\xa3\xf7\x22\xa1\xe4\xe6\xfe\x76\x40\x5b\x5d\x41\xfd\x06\x70\x24\xa5\xf5\x2d\x2d\xd7\xe3\x4e\x97\xf5\xf8\x60\xc1\x97\xb7\xa8\x0f\x88\xdb\x5c\x7f\x8c\x30\xbe\xd6\x5a\x12\xf6\xbf\x86\x32\xb2\x6e\xef\x5f\xe2\xfb\xa9\xb7\xbc\x84\x6e\x7a\xce\xa5\x88\x85\xab\x32\x54\x53\x95\x0e\x27\xb5\x70\xaa\x87\x76\xe1\x2b\x2a\x4b\xee\xba\xa9\x7b\x85\x05\xb1\x55\xda\x0c\xf9\xef\x14\x7a\x8d\x62\xd6\x24\x52\x3d\x47\xbb\x62\x4d\x46\x91\x23\x1b\x71\xbd\x1a\x95\xcb\xa9\xd3\x56\x38\x74\x85\x3d\xbb\xb1\xf0\xab\xeb\xd6\x22\xfc\x1a\x6a\x2e\x1e\xbe\xae\xb7\x18\xae\xdb\x22\x90\x68\xdd\x2f\xa1\x97\x3b\xb3\x17\x69\xed\x78\xc1\xe6\x1f\x9a\x95\x01\x99\x5d\x75\x41\x16\x6e\x15\xc8\xd3\xf2\x6f\x87\x1c\x77\xc0\x1c\xa5\x3e\x0e\x68\xa1\x24\xfc\x55\xd1\x06\xac\xc9\x0c\xdd\x0a\x78\x6f\xc4\x07\xf7\x56\xa8\x73\xfd\xb9\xeb\xc9\xa1\x9c\x1c\xbe\xe8\xf1\xd6\x3b\x11\xef\xff\xc7\x3f\xe1\x04\x6f\x1f\x68\xf3\x55\x70\xfb\x40\x1b\x30\xb4\x21\x43\x2a\xa6\x4a\x19\x1d\x94\x1d\x4f\x19\x35\x30\xff\x4f\xbb\xd0\xb1\x2b\xb0\x41\x61\x6e\xee\x6f\xab\x6b\xaf\xca\x2f\x4b\x69\x46\xca\xda\x17\xca\x17\x9f\xd2\xef\xd1\xa5\x67\x9c\x7d\x75\x5b\xaa\xce\xd7\x6b\xfe\x12\x31\x17\x14\x53\xe7\x46\xcd\xdf\x43\x12\x26\xa0\x37\x63\x69\x5b\x01\x29\x27\x0c\x95\x3b\xae\x43\x62\x2a\xeb\xe1\xe6\x1e\x8e\x2b\x03\x40\x2e\x18\x44\x02\x7f\x7f\xfc\x78\xb7\xfc\x69\xac\x75\x08\x85\x09\xc6\x31\x59\xeb\xe3\xce\xd7\x0d\xd7\x60\x8b\x38\x05\xb4\x2c\x06\xe3\x09\xe3\x15\x2d\x32\x54\x62\x43\xd6\x2d\xca\x33\xc8\xd8\x5f\xdf\xfc\x36\x56\x4b\xfe\x4d\x1b\xa0\x67\xcc\x72\x49\xd7\x20\xca\x42\xb9\xba\xc3\x2a\xdd\xc8\x47\x15\xab\xa3\xa6\x08\x07\xe1\x52\x71\x9a\xa4\x4a\x0d\x40\xae\x93\x52\xec\x83\x17\xd7\xe1\x8e\x40\x97\xe2\x16\x04\x52\xec\x68\x05\x97\xec\x70\x2d\x36\x3f\x73\xa0\x7e\xb9\x1c\xa1\xfa\xe3\x21\x25\x43\x70\xc9\x8b\x2e\x03\x73\xf5\xa5\x25\xbf\xab\xfc\xa5\x61\x32\x74\x97\x46\x6c\xb7\x64\x7a\x90\xda\x3c\xfe\x06\x6e\x4f\xca\xbd\xe2\x6e\x40\x6c\x40\xe9\x16\x09\x55\x56\x2f\x4d\xcd\xd2\x67\xfa\xd7\x37\xbf\x8d\x72\xdc\xd5\x17\x08\x95\xd0\x33\xbc\xa9\x6b\x95\x5c\x27\xaf\xca\xb6\xc1\x1e\x95\xc3\x67\x3e\x29\xe6\x72\x74\x4c\xb3\xbe\x8e\x74\x1a\x52\xdc\x13\x58\x9d\x11\x1c\x48\xca\x28\x5c\x1a\x27\x70\x08\xad\x57\x65\xb8\xd0\x76\xe4\x68\xdc\xa4\xb7\x56\x57\xc5\x4f\x1f\xdf\x7d\x5c\x05\xce\xd8\xa1\xb6\x8a\xd9\xe1\x92\x66\x23\x14\xca\xb2\xc2\x15\xb6\x2e\x93\x47\x28\xda\x22\xb8\x8f\xd3\x10\xa7\xa8\xb6\x54\xd5\xef\x9b\xc2\x15\x86\x16\x57\xdf\x12\xc7\xa7\xf7\xb7\xd5\x33\x70\x8f\xdb\x07\x8e\xef\x76\x13\x7a\xa6\x70\x6a\xb0\xa6\x3e\x15\xee\xae\xe5\xe5\x93\xc2\x35\xa9\x86\xe5\x4b\x74\x6c\x59\xb4\x98\x72\x67\x97\x7a\xcf\xe9\x80\x0e\xcb\x83\x36\x3b\xa1\xb6\x11\xbb\x66\x14\x7c\xc0\x2e\x7d\xaa\x5c\xfe\xe0\xff\x7c\xb3\x2c\x3e\xd7\x9e\x2b\x50\x18\xd9\xfc\x01\x52\xf9\x02\x60\xf9\x4d\x42\x55\x77\xc7\xe7\xe7\xb1\xab\xc7\x00\x18\x71\x7f\x2f\x87\x45\x68\x6a\xca\x49\x4e\x89\xb1\xe3\xfd\x65\x86\x49\x80\x66\x54\xc7\xdf\xdd\x95\x59\xa1\x85\x61\x8e\x8e\x51\x39\x7a\x8d\x50\x25\xfc\xbf\x15\xd6\xf1\xfb\x6f\xd2\x60\x21\xce\x0a\xdf\x5f\x6e\xdf\xfd\x31\x0e\x5e\x88\xb3\x63\x95\xcb\x27\x4a\x56\xe0\x4c\x11\xac\x64\x9d\x36\xb8\xa5\xf6\x9b\x62\x5d\x8f\xa3\x2a\x31\xcb\x56\x03\x3e\x7f\xe9\x0c\x58\x51\xe6\x29\xbe\x09\xbb\xe6\x31\xeb\x3c\x66\xed\x3c\xf3\x98\x75\x1e\xb3\xce\x63\xd6\x92\xb5\x79\xcc\x3a\x8f\x59\xe7\x31\x2b\xcc\x63\xd6\x79\xcc\x3a\x8f\x59\xe7\x31\xeb\x3c\x66\x9d\xc7\xac\xf3\x98\x75\x1e\xb3\x7e\xaf\x31\xeb\x3c\x3a\x9d\x47\xa7\xdf\x63\x74\x3a\x8f\x43\xe7\x71\xe8\x90\x14\xf3\x38\x74\x1e\x87\xce\xe3\xd0\x93\x67\x1e\x87\xce\xe3\xd0\x79\x1c\x3a\x8f\x43\xbf\xc3\x38\x74\x83\xd2\x9e\x35\x0f\xfd\x4f\x00\x00\x00\xff\xff\xea\x89\x94\xf1\x34\x3c\x00\x00") func operatorsCoreosCom_operatorgroupsYamlBytes() ([]byte, error) { return bindataRead( @@ -179,12 +179,12 @@ func operatorsCoreosCom_operatorgroupsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "operators.coreos.com_operatorgroups.yaml", size: 15412, mode: os.FileMode(436), modTime: time.Unix(1606762435, 0)} + info := bindataFileInfo{name: "operators.coreos.com_operatorgroups.yaml", size: 15412, mode: os.FileMode(420), modTime: time.Unix(1607724220, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _operatorsCoreosCom_operatorsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5a\x4b\x73\xdb\x38\x12\xbe\xfb\x57\x74\x69\x0e\x9e\xa9\xd2\x63\x1e\x97\x2d\xdd\x5c\x4e\x66\x4b\xbb\xb3\x4e\x2a\x76\x72\x99\x9a\x43\x8b\x6c\x89\x58\x91\x00\x07\x0d\x4a\xd6\xa6\xf2\xdf\xb7\x1a\x20\x29\x92\x92\x48\x7a\xe3\xcc\xe2\x62\x09\x02\x1a\xfd\xf5\xbb\x01\x63\xae\x3e\x91\x65\x65\xf4\x12\x30\x57\xf4\xec\x48\xcb\x37\x9e\xef\xfe\xc6\x73\x65\x16\xfb\x9f\x6e\x76\x4a\xc7\x4b\xb8\x2f\xd8\x99\xec\x03\xb1\x29\x6c\x44\x6f\x68\xa3\xb4\x72\xca\xe8\x9b\x8c\x1c\xc6\xe8\x70\x79\x03\x80\x5a\x1b\x87\x32\xcd\xf2\x15\x20\x32\xda\x59\x93\xa6\x64\x67\x5b\xd2\xf3\x5d\xb1\xa6\x75\xa1\xd2\x98\xac\x27\x5e\x1d\xbd\xff\x71\xfe\xcb\xfc\xc7\x1b\x80\xc8\x92\xdf\xfe\xa4\x32\x62\x87\x59\xbe\x04\x5d\xa4\xe9\x0d\x80\xc6\x8c\x96\x60\x72\xb2\xe8\x8c\xe5\xf9\xe9\x53\x64\x2c\x19\xf9\x93\xdd\x70\x4e\x91\x1c\xbc\xb5\xa6\xc8\x9b\xab\x1b\x6b\x02\xa9\x8a\x3f\x74\xb4\x35\x56\x55\xdf\x67\x60\xd2\xcc\x7f\x0a\xa8\xdf\x95\x14\xfc\x54\xaa\xd8\xfd\xb3\x35\xfd\x9b\x62\xe7\x7f\xca\xd3\xc2\x62\xda\x38\xd1\xcf\xb2\xd2\xdb\x22\x45\x7b\x9a\xbf\x01\xe0\xc8\xe4\xb4\x84\xfb\xb4\x60\x47\x32\x51\x4a\xc1\x73\x30\x2b\x71\xee\x7f\x0a\x04\xa2\x84\x32\x0c\xac\x81\x10\xd1\x77\xef\x57\x9f\x7e\x79\x6c\x4d\x03\xc4\xc4\x91\x55\xb9\xf3\xb2\xac\x78\x03\x4b\xb9\x25\x26\xed\x18\x10\xa2\x70\x5c\xcd\xc8\xbc\xde\xec\x8e\xc2\x8e\x59\xff\x9b\x22\x57\x4f\xe6\x56\x16\xba\x5a\x2e\x61\x34\xac\xa5\x31\xdb\x39\xff\x56\x58\x0c\xab\x20\x16\x33\x21\x06\x97\x50\x05\x93\xe2\x12\x15\x98\x0d\xb8\x44\xf1\x89\x4f\xaf\xf9\x16\x61\x90\x45\xa8\x4b\xee\xe6\xf0\x48\x56\xc8\x00\x27\xa6\x48\x63\xb1\xae\x3d\x59\x07\x96\x22\xb3\xd5\xea\x3f\x35\x6d\x06\x67\xfc\xa1\x29\x3a\x62\xd7\xa1\xa9\xb4\x23\xab\x31\x85\x3d\xa6\x05\x4d\x01\x75\x0c\x19\x1e\xc1\x92\x9c\x02\x85\x6e\xd0\xf3\x4b\x78\x0e\xff\x32\x96\x40\xe9\x8d\x59\x42\xe2\x5c\xce\xcb\xc5\x62\xab\x5c\xe5\x25\x91\xc9\xb2\x42\x2b\x77\x5c\x78\x83\x57\xeb\x42\x6c\x60\x11\xd3\x9e\xd2\x05\xab\xed\x0c\x6d\x94\x28\x47\x91\x2b\x2c\x2d\x30\x57\x33\xcf\xba\xf6\x9e\x32\xcf\xe2\xef\x6c\xe9\x57\x7c\xdb\xe2\x35\xe8\x86\x9d\x55\x7a\xdb\xf8\xc1\xdb\x66\x8f\x06\xc4\x48\x41\x89\xda\xc3\xd6\x80\xe2\x24\x68\x99\x12\xe9\x7c\x78\xfb\xf8\x04\xd5\xd1\x5e\x19\x5d\xe9\x7b\xb9\x37\x2c\xe9\xa4\x02\x11\x98\xd2\x1b\xb2\x41\x89\x1b\x6b\x32\x4f\x93\x74\x9c\x1b\xa5\x9d\xff\x12\xa5\x8a\x74\x57\xfc\x5c\xac\x33\xe5\x44\xef\x7f\x16\xc4\x4e\x74\x35\x87\x7b\x1f\x3a\x60\x4d\x50\xe4\x31\x3a\x8a\xe7\xb0\xd2\x70\x8f\x19\xa5\xf7\xc8\xf4\xcd\x15\x20\x92\xe6\x99\x08\x76\x9c\x0a\x9a\x51\xaf\xbb\xb8\xe3\x4b\x00\x55\x58\xba\xa2\xaf\xca\x63\x1f\x73\x8a\x5a\x2e\x13\x13\x2b\x2b\x46\xed\xd0\x91\xb8\x42\x2b\x1c\x0d\x1d\xea\xd0\x15\x3c\xe6\x58\xbf\xb0\x75\xb0\x59\xb3\xa8\xb9\x71\x32\xea\xcb\x87\x83\xf7\x1e\x51\x67\x64\xb2\xdc\x68\x31\x92\x31\xdc\x5d\x0b\x31\xe0\x93\x46\x45\xa9\xfb\x4b\x07\xc1\x7d\xbd\xb0\x9c\x5f\x13\xd7\xf6\x2c\x48\xd0\x05\x62\x4c\x01\xd6\x59\xf0\x1b\xe4\x52\x86\x18\xaa\xe8\xe1\x9c\x9b\x19\xa4\xb8\xa6\xf4\x91\x52\x8a\xce\x25\xd3\x87\x51\x46\x6b\xef\xa5\x05\x1d\xb8\xbf\x35\xd7\x07\xff\xf6\x24\xe0\xcf\x82\xec\x11\xcc\x9e\xac\xb8\x3c\x39\x51\x58\x2d\x86\x8b\x74\x01\x0a\xa6\x58\xa2\x24\x7b\x7a\x2d\xf1\xdc\x5e\x55\xe6\x28\x71\x0d\x03\x97\x91\xa1\x8b\x92\xb7\xcf\x12\x58\xf8\x54\x2f\x0c\xca\xa0\xbb\xad\x14\x83\x62\x0f\x3a\x88\x83\xaf\xa9\xe3\x34\x4a\x95\x66\x21\xa6\x3d\x25\xd4\x9a\x01\xb4\x04\x77\x0f\x6f\x28\x3e\xb7\x94\xb6\x08\xd0\x5a\x3c\x5e\x5d\xa3\x1c\x65\x3d\xc0\x3a\xd0\xee\x3a\xec\x37\x59\x2a\xa3\xf9\x30\x30\xa8\xac\x5e\x3b\x54\x9a\xcb\xfc\x35\x05\x84\x1d\x1d\x43\xaa\x93\x7c\x5a\xd5\x08\x7e\xb1\x25\x9f\x26\x07\xa8\x92\x50\xf0\x04\xca\x9c\xd8\xb3\x7e\xd0\x3e\xc2\xb8\xee\x58\xa7\x31\x93\x63\x7b\x7f\x37\x97\xe3\x52\x73\x0c\x9b\x63\x18\x3b\x3a\xf6\x2f\xe8\xa8\x4c\x24\xa2\xb8\xac\x34\x44\x77\x32\xe1\x65\x2a\x53\xa3\xd4\x05\xbe\xae\xca\x53\x45\x3e\x11\x0e\xac\xbd\x92\x8d\xce\x47\x25\x94\x17\xc1\x31\x17\x4b\xc7\x1d\x1d\x6f\x39\x18\x89\x78\x5c\xa2\xf2\x41\x40\xce\x9c\x02\x51\x55\x41\x7d\xc2\x54\xc5\xa7\x02\xd9\xfb\xd8\x4a\x4f\xe1\xc1\xb8\x95\x9e\x0e\x92\x7c\xfb\xac\xa4\x56\x10\xfb\x7b\x63\x88\x1f\x8c\xf3\x33\xaf\x26\xb0\xc0\xe6\x8b\xc4\x15\xb6\x78\xd7\xd4\x21\x12\x08\xde\x66\xc9\xc5\x73\x58\x6d\x86\xa5\xd5\x88\xbd\x42\x6d\xa5\xc1\xd8\x52\x2e\xa1\x74\x0e\x07\x85\x23\xb2\xe2\xac\xa0\x3d\x1f\x6b\x02\x6d\xf4\x8c\xb2\xdc\x1d\x85\x87\xb3\x33\x4a\x71\x1a\xdb\x92\xe6\xb0\x1a\x2e\xb2\x23\xc7\x95\x47\x3d\x49\x31\x18\x7e\x09\xa5\x7d\x8a\x11\xc5\x83\x64\xe3\xc2\x0b\xcd\x17\xac\xd2\x92\xa9\x08\x32\xb2\x5b\x82\x5c\xe2\xfd\x38\x25\xf7\xc7\xe2\x30\x06\x23\x72\x93\x60\xaf\xd5\xf8\x44\xe4\x33\xf2\x8b\x52\x57\xd8\x11\xc2\x79\x86\xb9\x18\xcc\x67\x89\xcc\x5e\xa6\x5f\x20\x47\x65\x79\x0e\x77\x3d\x1c\x4a\x53\x99\x52\x6b\x97\xd2\x5e\x2f\xcd\x03\x84\xb6\x62\x90\x00\xbb\xc7\xf4\xbc\x08\x6f\xa1\x35\x62\xc0\x94\x86\x4c\x63\x36\x67\x49\x76\x0a\x87\x44\x6a\x28\x89\x6e\x1b\x45\xa9\x6f\x2e\x26\x3b\x3a\x4e\xfa\x0c\xa6\x6b\x72\x93\x95\x9e\x84\x0c\x74\x66\x44\x75\xba\x32\x3a\xed\x53\xe1\xc4\xef\x9a\x7c\x4d\xc6\x1e\x48\x4a\x18\xc7\xfe\x5a\x03\xd3\xf7\xa3\x72\xc6\x80\xa5\x58\xda\x5c\xd9\xde\x32\x8d\x0f\xb4\x09\x10\x1a\xe5\xdb\x86\x2c\x69\x5f\xc6\x9a\xab\xd5\xd9\x15\xc6\xea\xda\x6f\x5a\xe6\x20\x8a\xe1\xa0\x5c\xd2\xae\x20\x2f\x4b\x6a\xc8\x97\x7a\x3d\xa8\x0d\x4a\x45\xc9\x87\x0a\x46\xb0\xf8\x1a\x55\xc8\x10\x15\x9f\x53\x20\x6d\x55\x94\xf4\x04\x0a\xcf\xbe\xb4\x19\xa1\xad\x11\x8b\x09\x8a\xba\x5a\x87\x8c\x50\xf7\x98\xb2\xe0\xda\x9d\x47\x0f\xf0\xbb\xf7\xab\xea\xb6\x23\x5c\x72\x50\x05\xbc\x37\x5d\x8d\x4a\x55\x27\xdc\xa3\xd9\xb9\xaf\xb7\x34\xf3\xfa\xe9\x76\xe4\xd4\xe4\xb9\x84\x7a\x43\x63\x6d\x77\xc3\x30\x86\x82\xf1\x88\x40\x7c\x19\xc4\x09\x43\x13\x02\xee\x51\xa5\xb8\x4e\xfb\xf9\x87\xb2\xb1\x0d\x85\x4c\xd9\xd6\xd6\xa0\x6e\x83\x71\x51\x7f\xb6\x19\x59\xda\x8e\x2b\x6e\xa5\x7c\x0d\x06\x3d\xb0\x48\x4e\xed\x5d\x32\xb6\xc2\x95\xae\x93\xdd\x93\x45\xcd\xaa\xba\x68\x1d\xce\x87\x9d\x36\x94\x1d\x38\x95\x85\x9e\xba\x36\x48\x70\x35\xd1\x11\x09\x1f\xc2\x8d\x91\xd1\x54\x79\xb4\xcf\x42\xc6\x25\x74\x25\x30\x35\xc7\xe8\xaa\xce\x1f\x64\x6c\x86\x6e\x09\x31\x3a\x9a\x09\xdf\x23\x04\xf4\xd1\x5f\x42\xbd\xa2\x70\x0e\xc8\xa2\xa3\xf5\x08\xd1\x7c\x53\x70\x19\x31\xe3\xf6\xa5\xa8\xee\x20\x29\x32\x14\xdf\xc3\x58\xbc\xac\x22\x03\x4a\xc7\x2a\x42\x7f\xa1\x18\x93\x43\x95\xf6\x1b\x72\x18\xb8\x36\x45\xf0\xde\x93\xc9\xbc\xaa\xce\x2d\x21\xf7\xc7\xeb\x0b\x18\x43\x49\x21\x1b\x45\xa8\x6d\xf5\xdd\xb2\xb7\x8a\x6f\xc5\xef\xa5\xab\xba\x41\x7e\xcb\x6b\xbb\x32\xc1\xd4\xac\x4e\xbd\x4f\x99\x0d\x3c\xd9\x82\x86\xeb\x79\x80\x5f\x31\x65\x9a\xc2\x47\xbd\xd3\xe6\xf0\xba\xb8\xfc\xd2\x17\x6a\xe1\x98\x7b\xee\x6b\x3c\xaf\xc4\x90\x2f\x5b\xdf\xa3\x4b\x46\xa7\xcd\xdb\x55\x59\x85\xf9\xce\xc4\xd7\x2b\xb9\xa2\x88\x5a\x4f\x12\xa0\x34\x3b\xc2\x7e\xa7\x0e\x1b\x48\x3b\x65\xa9\xdc\x37\x0d\xb7\xe6\x65\xaf\x78\x7a\xce\x90\x2a\x18\x50\x8a\x63\xd5\x4f\xf3\x1f\x8f\xef\x1e\x16\x7f\x37\x65\x39\x8e\x51\x44\x5c\xa6\x2f\xa9\x87\xa7\xc0\x45\x94\x00\x72\x75\x85\xfc\xe8\x13\x5b\x86\x5a\x6d\x88\xdd\xbc\x3c\x89\x2c\xff\xfe\xf3\x1f\xfd\x12\xfe\xd5\x58\xa0\x67\xcc\xf2\x94\xa6\xa0\xca\x46\xb2\x7a\x16\x68\x14\x77\x5e\x40\x35\xdd\x5e\x92\x52\xcb\x79\x98\xb9\x89\x4b\x41\x1c\xbc\x00\x1c\xee\x08\x4c\x29\x80\x82\x20\x55\x3b\x5a\xc2\x84\x73\x8a\x1a\x2c\x7f\xd6\x98\xd1\x97\x49\xef\x11\xdf\x1f\x12\xb2\x04\x13\x59\x3a\x09\x8c\xd6\x85\xb4\xcc\x35\xdc\x26\x50\xf5\xb7\x36\xfd\x89\xdf\xaa\xed\x96\x2c\x85\xf6\x85\xf6\xa4\xdd\x0f\xd2\x3f\xab\x0d\x68\xd3\x20\xe4\xc9\x8b\x6e\x73\x8a\xd4\x46\x0d\x04\xfc\x2e\xb8\xdf\x7f\xfe\x63\x02\xdf\x9f\xa8\x85\xba\x57\xc7\xf4\x0c\x3f\x87\x3e\x4f\xb1\xc8\xed\x87\x7e\xad\xf9\x36\x9c\x8f\xda\xe1\xb3\xf0\x12\x49\xfb\xa6\x7d\x77\x25\x52\x48\x70\x4f\xc0\x26\x23\x38\x50\x9a\xce\xc2\xcd\x7f\x0c\x87\x81\xf6\xb9\xd1\x96\x84\x66\x3d\x47\xeb\x3a\x2f\x74\x4f\xef\xde\xbc\x5b\x06\x2e\xc5\xf4\xb6\xdd\xf7\xbc\xf6\x50\x0c\xda\x38\xd8\x28\x8d\x69\xd9\x19\x2a\x3e\xb5\x98\x5c\x04\x43\x73\x06\xa2\x04\xb5\xcf\x37\x83\x45\xea\xa6\x70\x85\xa5\xf9\xed\xd7\x56\xda\xe7\x8f\x6c\xed\x71\xe1\xc9\xad\x5b\xec\xff\xdf\x1e\xad\xfe\x07\xb8\xfe\xdd\x79\x34\xdc\x87\x86\x0f\xf5\xc2\xdd\x15\x6b\xb2\x9a\x1c\x79\xc4\xb1\x89\x58\xc0\x46\x94\x3b\x5e\x98\x3d\xd9\xbd\xa2\xc3\xe2\x60\xec\x4e\xe9\xed\x4c\x8c\x7d\x16\x2c\x89\x17\xfe\x95\x7e\xf1\x9d\xff\xf3\x2a\xe8\x38\xc7\xe8\x85\x10\xfd\x96\xbf\x02\xa7\x9c\xc3\x8b\xaf\x86\x59\x35\xd4\x2f\xed\x58\x6f\x1f\x43\xb0\x8a\xba\x14\xc4\xf5\x0e\x89\x8a\x92\xea\xa9\xbe\x8c\xf8\x43\x5e\x9d\x61\x1c\xd2\x05\xea\xe3\x37\x77\x03\x11\x74\x61\x85\xaf\xe3\xac\xfc\x87\x93\x19\xea\x58\x3e\xb3\x62\x27\xf3\x5f\x2d\xd9\x42\xbd\x20\x18\x7c\x5c\xbd\xf9\x6b\x9c\xa3\x50\x2f\xf4\xfc\xf0\xac\xbb\x04\x67\x8b\xa0\x43\x76\xc6\x4a\x3f\xd0\x98\x29\xd6\xf5\xfd\x51\x05\xb9\x2c\x50\xe1\xf3\x97\x9b\xff\x06\x00\x00\xff\xff\xb3\x7c\xa9\x02\x32\x24\x00\x00") +var _operatorsCoreosCom_operatorsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5a\xcd\x92\xdb\xb8\x11\xbe\xcf\x53\x74\x69\x0f\xb3\x5b\xa5\x9f\xd8\xc9\x21\xa5\xdb\xd4\xd8\x9b\x52\xb2\xb1\x5d\x9e\xb1\x2f\x5b\x7b\x68\x91\x2d\x11\x11\x09\x70\xd1\xa0\x34\x8a\xcb\xef\x9e\x6a\x80\xa4\x48\x4a\x22\x39\xf1\x78\x17\x97\x91\x20\xa0\xd1\x5f\xff\x37\x30\x98\xab\xcf\x64\x59\x19\xbd\x04\xcc\x15\x3d\x39\xd2\xf2\x8d\xe7\xbb\xbf\xf3\x5c\x99\xc5\xfe\xd5\xcd\x4e\xe9\x78\x09\xf7\x05\x3b\x93\x7d\x24\x36\x85\x8d\xe8\x0d\x6d\x94\x56\x4e\x19\x7d\x93\x91\xc3\x18\x1d\x2e\x6f\x00\x50\x6b\xe3\x50\xa6\x59\xbe\x02\x44\x46\x3b\x6b\xd2\x94\xec\x6c\x4b\x7a\xbe\x2b\xd6\xb4\x2e\x54\x1a\x93\xf5\xc4\xab\xa3\xf7\x7f\x99\xff\x6d\xfe\xea\x06\x20\xb2\xe4\xb7\x3f\xaa\x8c\xd8\x61\x96\x2f\x41\x17\x69\x7a\x03\xa0\x31\xa3\x25\x98\x9c\x2c\x3a\x63\x79\x7e\xfa\x14\x19\x4b\x46\xfe\x64\x37\x9c\x53\x24\x07\x6f\xad\x29\xf2\xe6\xea\xc6\x9a\x40\xaa\xe2\x0f\x1d\x6d\x8d\x55\xd5\xf7\x19\x98\x34\xf3\x9f\x02\xea\xf7\x25\x05\x3f\x95\x2a\x76\xff\x6a\x4d\xff\xa2\xd8\xf9\x9f\xf2\xb4\xb0\x98\x36\x4e\xf4\xb3\xac\xf4\xb6\x48\xd1\x9e\xe6\x6f\x00\x38\x32\x39\x2d\xe1\x3e\x2d\xd8\x91\x4c\x94\x52\xf0\x1c\xcc\x4a\x9c\xfb\x57\x81\x40\x94\x50\x86\x81\x35\x10\x22\xfa\xee\xc3\xea\xf3\x5f\x1f\x5a\xd3\x00\x31\x71\x64\x55\xee\xbc\x2c\x2b\xde\xc0\x52\x6e\x89\x49\x3b\x06\x84\x28\x1c\x57\x33\x32\xaf\x37\xbb\xa3\xb0\x63\xd6\xff\xa1\xc8\xd5\x93\xb9\x95\x85\xae\x96\x4b\x18\x0d\x6b\x69\xcc\x76\xce\xbf\x15\x16\xc3\x2a\x88\xc5\x4c\x88\xc1\x25\x54\xc1\xa4\xb8\x44\x05\x66\x03\x2e\x51\x7c\xe2\xd3\x6b\xbe\x45\x18\x64\x11\xea\x92\xbb\x39\x3c\x90\x15\x32\xc0\x89\x29\xd2\x58\xac\x6b\x4f\xd6\x81\xa5\xc8\x6c\xb5\xfa\x6f\x4d\x9b\xc1\x19\x7f\x68\x8a\x8e\xd8\x75\x68\x2a\xed\xc8\x6a\x4c\x61\x8f\x69\x41\x53\x40\x1d\x43\x86\x47\xb0\x24\xa7\x40\xa1\x1b\xf4\xfc\x12\x9e\xc3\xbf\x8d\x25\x50\x7a\x63\x96\x90\x38\x97\xf3\x72\xb1\xd8\x2a\x57\x79\x49\x64\xb2\xac\xd0\xca\x1d\x17\xde\xe0\xd5\xba\x10\x1b\x58\xc4\xb4\xa7\x74\xc1\x6a\x3b\x43\x1b\x25\xca\x51\xe4\x0a\x4b\x0b\xcc\xd5\xcc\xb3\xae\xbd\xa7\xcc\xb3\xf8\x07\x5b\xfa\x15\xdf\xb6\x78\x0d\xba\x61\x67\x95\xde\x36\x7e\xf0\xb6\xd9\xa3\x01\x31\x52\x50\xa2\xf6\xb0\x35\xa0\x38\x09\x5a\xa6\x44\x3a\x1f\xdf\x3e\x3c\x42\x75\xb4\x57\x46\x57\xfa\x5e\xee\x0d\x4b\x3a\xa9\x40\x04\xa6\xf4\x86\x6c\x50\xe2\xc6\x9a\xcc\xd3\x24\x1d\xe7\x46\x69\xe7\xbf\x44\xa9\x22\xdd\x15\x3f\x17\xeb\x4c\x39\xd1\xfb\xef\x05\xb1\x13\x5d\xcd\xe1\xde\x87\x0e\x58\x13\x14\x79\x8c\x8e\xe2\x39\xac\x34\xdc\x63\x46\xe9\x3d\x32\x7d\x77\x05\x88\xa4\x79\x26\x82\x1d\xa7\x82\x66\xd4\xeb\x2e\xee\xf8\x12\x40\x15\x96\xae\xe8\xab\xf2\xd8\x87\x9c\xa2\x96\xcb\xc4\xc4\xca\x8a\x51\x3b\x74\x24\xae\xd0\x0a\x47\x43\x87\x3a\x74\x05\x8f\x39\xd6\x2f\x6c\x1d\x6c\xd6\x2c\x6a\x6e\x9c\x8c\xfa\xf2\xe1\xe0\xbd\x47\xd4\x19\x99\x2c\x37\x5a\x8c\x64\x0c\x77\xd7\x42\x0c\xf8\xa4\x51\x51\xea\xfe\xd2\x41\x70\x5f\x2f\x2c\xe7\xd7\xc4\xb5\x3d\x0b\x12\x74\x81\x18\x53\x80\x75\x16\xfc\x06\xb9\x94\x21\x86\x2a\x7a\x38\xe7\x66\x06\x29\xae\x29\x7d\xa0\x94\xa2\x73\xc9\xf4\x61\x94\xd1\xda\x7b\x69\x41\x07\xee\x2f\xcd\xf5\xc1\xbf\x3d\x09\xf8\xbd\x20\x7b\x04\xb3\x27\x2b\x2e\x4f\x4e\x14\x56\x8b\xe1\x22\x5d\x80\x82\x29\x96\x28\xc9\x9e\x5e\x4b\x3c\xb7\x57\x95\x39\x4a\x5c\xc3\xc0\x65\x64\xe8\xa2\xe4\xed\x93\x04\x16\x3e\xd5\x0b\x83\x32\xe8\x6e\x2b\xc5\xa0\xd8\x83\x0e\xe2\xe0\x6b\xea\x38\x8d\x52\xa5\x59\x88\x69\x8f\x09\xb5\x66\x00\x2d\xc1\xdd\xbb\x37\x14\x9f\x5b\x4a\x5b\x04\x68\x2d\x1e\xaf\xae\x51\x8e\xb2\x1e\x60\x1d\x68\x77\x1d\xf6\x9b\x2c\x95\xd1\x7c\x18\x18\x54\x56\xaf\x1d\x2a\xcd\x65\xfe\x9a\x02\xc2\x8e\x8e\x21\xd5\x49\x3e\xad\x6a\x04\xbf\xd8\x92\x4f\x93\x03\x54\x49\x28\x78\x02\x65\x4e\xec\x59\x3f\x68\x1f\x61\x5c\x77\xac\xd3\x98\xc9\xb1\xbd\xbf\x9b\xcb\x71\xa9\x39\x86\xcd\x31\x8c\x1d\x1d\xfb\x17\x74\x54\x26\x12\x51\x5c\x56\x1a\xa2\x3b\x99\xf0\x32\x95\xa9\x51\xea\x02\x5f\x57\xe5\xa9\x22\x9f\x08\x07\xd6\x5e\xc9\x46\xe7\xa3\x12\xca\xb3\xe0\x98\x8b\xa5\xe3\x8e\x8e\xb7\x1c\x8c\x44\x3c\x2e\x51\xf9\x20\x20\x67\x4e\x81\xa8\xaa\xa0\x3e\x63\xaa\xe2\x53\x81\xec\x7d\x6c\xa5\xa7\xf0\xce\xb8\x95\x9e\x0e\x92\x7c\xfb\xa4\xa4\x56\x10\xfb\x7b\x63\x88\xdf\x19\xe7\x67\x5e\x4c\x60\x81\xcd\x67\x89\x2b\x6c\xf1\xae\xa9\x43\x24\x10\xbc\xcd\x92\x8b\xe7\xb0\xda\x0c\x4b\xab\x11\x7b\x85\xda\x4a\x83\xb1\xa5\x5c\x42\xe9\x1c\x0e\x0a\x47\x64\xc5\x59\x41\x7b\x3e\xd6\x04\xda\xe8\x19\x65\xb9\x3b\x0a\x0f\x67\x67\x94\xe2\x34\xb6\x25\xcd\x61\x35\x5c\x64\x47\x8e\x2b\x8f\x7a\x94\x62\x30\xfc\x12\x4a\xfb\x14\x23\x8a\x07\xc9\xc6\x85\x17\x9a\x2f\x58\xa5\x25\x53\x11\x64\x64\xb7\x04\xb9\xc4\xfb\x71\x4a\xee\x8f\xc5\x61\x0c\x46\xe4\x26\xc1\x5e\xab\xf1\x89\xc8\x67\xe4\x67\xa5\xae\xb0\x23\x84\xf3\x0c\x73\x31\x98\x2f\x12\x99\xbd\x4c\xbf\x42\x8e\xca\xf2\x1c\xee\x7a\x38\x94\xa6\x32\xa5\xd6\x2e\xa5\xbd\x5e\x9a\x07\x08\x6d\xc5\x20\x01\x76\x8f\xe9\x79\x11\xde\x42\x6b\xc4\x80\x29\x0d\x99\xc6\x6c\xce\x92\xec\x14\x0e\x89\xd4\x50\x12\xdd\x36\x8a\x52\xdf\x5c\x4c\x76\x74\x9c\xf4\x19\x4c\xd7\xe4\x26\x2b\x3d\x09\x19\xe8\xcc\x88\xea\x74\x65\x74\xda\xa7\xc2\x89\xdf\x35\xf9\x96\x8c\x3d\x90\x94\x30\x8e\xfd\xb5\x06\xa6\x1f\x46\xe5\x8c\x01\x4b\xb1\xb4\xb9\xb2\xbd\x65\x1a\x1f\x69\x13\x20\x34\xca\xb7\x0d\x59\xd2\xbe\x8c\x35\x57\xab\xb3\x2b\x8c\xd5\xb5\xdf\xb4\xcc\x41\x14\xc3\x41\xb9\xa4\x5d\x41\x5e\x96\xd4\x90\x2f\xf5\x7a\x50\x1b\x94\x8a\x92\x8f\x15\x8c\x60\xf1\x35\xaa\x90\x21\x2a\x3e\xa7\x40\xda\xaa\x28\xe9\x09\x14\x9e\x7d\x69\x33\x42\x5b\x23\x16\x13\x14\x75\xb5\x0e\x19\xa1\xee\x31\x65\xc1\xb5\x3b\x8f\x1e\xe0\x77\x1f\x56\xd5\x6d\x47\xb8\xe4\xa0\x0a\x78\x6f\xba\x1a\x95\xaa\x4e\xb8\x47\xb3\x73\x5f\x6f\x69\xe6\xf5\xd3\xed\xc8\xa9\xc9\x73\x09\xf5\x86\xc6\xda\xee\x86\x61\x0c\x05\xe3\x11\x81\xf8\x32\x88\x13\x86\x26\x04\xdc\xa3\x4a\x71\x9d\xf6\xf3\x0f\x65\x63\x1b\x0a\x99\xb2\xad\xad\x41\xdd\x06\xe3\xa2\xfe\x6c\x33\xb2\xb4\x1d\x57\xdc\x4a\xf9\x1a\x0c\x7a\x60\x91\x9c\xda\xbb\x64\x6c\x85\x2b\x5d\x27\xbb\x47\x8b\x9a\x55\x75\xd1\x3a\x9c\x0f\x3b\x6d\x28\x3b\x70\x2a\x0b\x3d\x75\x6d\x90\xe0\x6a\xa2\x23\x12\x3e\x84\x1b\x23\xa3\xa9\xf2\x68\x9f\x85\x8c\x4b\xe8\x4a\x60\x6a\x8e\xd1\x55\x9d\x3f\xc8\xd8\x0c\xdd\x12\x62\x74\x34\x13\xbe\x47\x08\xe8\x93\xbf\x84\x7a\x41\xe1\x1c\x90\x45\x47\xeb\x11\xa2\xf9\xae\xe0\x32\x62\xc6\xed\x73\x51\xdd\x41\x52\x64\x28\xbe\x87\xb1\x78\x59\x45\x06\x94\x8e\x55\x84\xfe\x42\x31\x26\x87\x2a\xed\x37\xe4\x30\x70\x6d\x8a\xe0\xbd\x27\x93\x79\x51\x9d\x5b\x42\xee\x8f\xd7\x17\x30\x86\x92\x42\x36\x8a\x50\xdb\xea\xbb\x65\x6f\x15\xdf\x8b\xdf\x4b\x57\x75\x83\xfc\x96\xd7\x76\x65\x82\xa9\x59\x9d\x7a\x9f\x32\x1b\x78\xb4\x05\x0d\xd7\xf3\x00\x3f\x63\xca\x34\x85\x4f\x7a\xa7\xcd\xe1\x65\x71\xf9\xa5\xcf\xd4\xc2\x31\xf7\xdc\xd7\x78\x5e\x88\x21\x5f\xb6\x7e\x40\x97\x8c\x4e\x9b\xb7\xab\xb2\x0a\xf3\x9d\x89\xaf\x57\x72\x45\x11\xb5\x9e\x24\x40\x69\x76\x84\xfd\x4e\x1d\x36\x90\x76\xca\x52\xb9\x6f\x1a\x6e\xcd\xcb\x5e\xf1\xf4\x9c\x21\x55\x30\xa0\x14\xc7\xaa\x9f\xe6\x3f\x1f\xde\xbf\x5b\xfc\xc3\x94\xe5\x38\x46\x11\x71\x99\xbe\xa4\x1e\x9e\x02\x17\x51\x02\xc8\xd5\x15\xf2\x83\x4f\x6c\x19\x6a\xb5\x21\x76\xf3\xf2\x24\xb2\xfc\xeb\xeb\xdf\xfa\x25\xfc\xb3\xb1\x40\x4f\x98\xe5\x29\x4d\x41\x95\x8d\x64\xf5\x2c\xd0\x28\xee\xbc\x80\x6a\xba\xbd\x24\xa5\x96\xf3\x30\x73\x13\x97\x82\x38\x78\x01\x38\xdc\x11\x98\x52\x00\x05\x41\xaa\x76\xb4\x84\x09\xe7\x14\x35\x58\xfe\xa2\x31\xa3\xaf\x93\xde\x23\x7e\x3c\x24\x64\x09\x26\xb2\x74\x12\x18\xad\x0b\x69\x99\x6b\xb8\x4d\xa0\xea\x6f\x6d\xfa\x13\xbf\x55\xdb\x2d\x59\x0a\xed\x0b\xed\x49\xbb\x9f\xa4\x7f\x56\x1b\xd0\xa6\x41\xc8\x93\x17\xdd\xe6\x14\xa9\x8d\x1a\x08\xf8\x5d\x70\xbf\xbe\xfe\x6d\x02\x3f\x9e\xa8\x85\xba\x57\xc7\xf4\x04\xaf\x43\x9f\xa7\x58\xe4\xf6\x53\xbf\xd6\x7c\x1b\xce\x47\xed\xf0\x49\x78\x89\xa4\x7d\xd3\xbe\xbb\x12\x29\x24\xb8\x27\x60\x93\x11\x1c\x28\x4d\x67\xe1\xe6\x3f\x86\xc3\x40\xfb\xdc\x68\x4b\x42\xb3\x9e\xa3\x75\x9d\x17\xba\xc7\xf7\x6f\xde\x2f\x03\x97\x62\x7a\xdb\xee\x7b\x5e\x7b\x28\x06\x6d\x1c\x6c\x94\xc6\xb4\xec\x0c\x15\x9f\x5a\x4c\x2e\x82\xa1\x39\x03\x51\x82\xda\xe7\x9b\xc1\x22\x75\x53\xb8\xc2\xd2\xfc\xf6\x5b\x2b\xed\xf3\x47\xb6\xf6\xb8\xf0\xe4\xd6\x2d\xf6\xff\xb4\x47\xab\xff\x03\xae\x7f\x77\x1e\x0d\xf7\x5d\xc3\x87\x7a\xe1\xee\x8a\x35\x59\x4d\x8e\x3c\xe2\xd8\x44\x2c\x60\x23\xca\x1d\x2f\xcc\x9e\xec\x5e\xd1\x61\x71\x30\x76\xa7\xf4\x76\x26\xc6\x3e\x0b\x96\xc4\x0b\xff\x4a\xbf\xf8\xc1\xff\x79\x11\x74\x9c\x63\xf4\x4c\x88\x7e\xcb\x1f\x81\x53\xce\xe1\xc5\x37\xc3\xac\x1a\xea\xe7\x76\xac\xb7\x0f\x21\x58\x45\x5d\x0a\xe2\x7a\x87\x44\x45\x49\xf5\x54\x5f\x46\xfc\x21\xaf\xce\x30\x0e\xe9\x02\xf5\xf1\xbb\xbb\x81\x08\xba\xb0\xc2\xd7\x71\x56\xfe\xc3\xc9\x0c\x75\x2c\x9f\x59\xb1\x93\xf9\x6f\x96\x6c\xa1\x9e\x11\x0c\x3e\xad\xde\xfc\x31\xce\x51\xa8\x67\x7a\x7e\x78\xd6\x5d\x82\xb3\x45\xd0\x21\x3b\x63\xa5\x1f\x68\xcc\x14\xeb\xfa\xfe\xa8\x82\x5c\x16\xa8\xf0\xe5\xeb\xcd\xff\x02\x00\x00\xff\xff\x6a\x2b\xc9\xf4\x32\x24\x00\x00") func operatorsCoreosCom_operatorsYamlBytes() ([]byte, error) { return bindataRead( @@ -199,12 +199,12 @@ func operatorsCoreosCom_operatorsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "operators.coreos.com_operators.yaml", size: 9266, mode: os.FileMode(436), modTime: time.Unix(1606762435, 0)} + info := bindataFileInfo{name: "operators.coreos.com_operators.yaml", size: 9266, mode: os.FileMode(420), modTime: time.Unix(1607724220, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _operatorsCoreosCom_subscriptionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7b\x73\xdc\xb8\x95\x28\xfe\xff\x7c\x0a\x94\x92\x2a\x49\x89\xba\x65\x67\x73\x93\x5c\xdf\x54\x52\x1a\x49\x4e\xb4\x63\x7b\x74\x2d\xd9\x53\xfb\x9b\xcc\xdd\xa0\x49\x74\x37\x22\x12\xe0\x10\x60\xcb\xbd\x9b\xfd\xee\xbf\xc2\x39\x00\x48\xf6\x83\x00\x5a\x2d\xd9\x93\x11\xfe\x48\xc6\x2d\xf2\x10\x8f\x83\xf3\x7e\xd0\x8a\x7f\x64\xb5\xe2\x52\xbc\x22\xb4\xe2\xec\x93\x66\xc2\xfc\x4b\x8d\xef\xfe\xa0\xc6\x5c\x9e\x2e\x5e\x7e\x75\xc7\x45\xfe\x8a\x9c\x37\x4a\xcb\xf2\x3d\x53\xb2\xa9\x33\x76\xc1\xa6\x5c\x70\xcd\xa5\xf8\xaa\x64\x9a\xe6\x54\xd3\x57\x5f\x11\x42\x85\x90\x9a\x9a\x9f\x95\xf9\x27\x21\x99\x14\xba\x96\x45\xc1\xea\xd1\x8c\x89\xf1\x5d\x33\x61\x93\x86\x17\x39\xab\x01\xb8\xfb\xf4\xe2\xc5\xf8\xdf\xc6\x2f\xbe\x22\x24\xab\x19\xbc\x7e\xcb\x4b\xa6\x34\x2d\xab\x57\x44\x34\x45\xf1\x15\x21\x82\x96\xec\x15\x51\xcd\x44\x65\x35\xaf\xe0\x13\x63\x59\xb1\x9a\x6a\x59\xab\x71\x26\x6b\x26\xcd\xff\x95\x5f\xa9\x8a\x65\xe6\xe3\xb3\x5a\x36\xd5\x2b\xb2\xf1\x19\x04\xe7\xe6\x48\x35\x9b\xc9\x9a\xbb\x7f\x8f\x88\x2c\x4a\xf8\x2f\x5c\xf9\x4d\xe7\x9b\xf0\x73\xc1\x95\xfe\x66\xed\x4f\x6f\xb8\xd2\xf0\xe7\xaa\x68\x6a\x5a\xac\xcc\x15\xfe\xa2\xe6\xb2\xd6\xef\xda\x2f\x8f\xcc\x33\xed\x7f\xd9\x87\xb8\x98\x35\x05\xad\xfb\x00\xbe\x22\x44\x65\xb2\x62\xaf\x08\xbc\x5f\xd1\x8c\xe5\x5f\x11\x62\x77\x10\xe0\x8d\x08\xcd\x73\x38\x13\x5a\x5c\xd7\x5c\x68\x56\x9f\xcb\xa2\x29\x85\xff\x5a\xce\x3c\xbc\x57\xe4\x76\xce\x48\x45\xb3\x3b\x3a\x63\xee\x4b\x13\x96\x13\x2d\xe1\x61\x42\xfe\xa1\xa4\xb8\xa6\x7a\xfe\x8a\x8c\xcd\x96\x8e\xcd\x8e\xd9\x3f\xe1\x59\x5c\xe3\xcb\xf6\x37\xbd\x34\x93\x53\xba\xe6\x62\xb6\xed\x73\x19\xd5\xb4\x90\x33\x82\x38\x44\xa6\xb2\x26\x7a\xce\x88\x01\xcf\xa7\x9c\xe5\x6e\x3e\x5b\x66\x80\xaf\xf5\xe6\x70\xd3\xfd\x29\x6a\x0a\x73\x2a\x04\x2b\x88\x9c\x92\xa6\xca\xa9\x66\x8a\x68\xd9\xae\x7f\xfb\xf2\xed\x8b\xbd\xaf\x9f\xf7\x7e\x5b\xfb\x3c\x3e\xb4\x78\x49\x8b\x6a\x4e\x5f\xe2\xe1\x66\x73\x56\xd2\x57\xf6\x0d\x59\x31\x71\x76\x7d\xf5\xf1\xdf\x6e\x7a\x3f\x93\xfe\xb4\xbb\x48\x46\xee\x18\xab\x54\x8b\xd4\xa4\xa9\xcc\xfc\xcd\x42\xc8\x64\x49\x74\x4d\xb3\x3b\x2e\x66\xb0\xcc\x19\xac\xcd\xc3\x24\xe4\x1c\xb7\x5f\x8d\xfd\x6f\x38\x65\x39\xf9\x07\xcb\xb4\xff\xb1\x66\x3f\x36\xbc\x66\x79\x3b\x9d\x11\x71\x97\xbc\xf3\x93\xd9\x15\xff\xcf\xaa\x36\x53\xd2\xfe\x0e\xe1\xe8\x50\x97\xce\xaf\x2b\xcb\x3b\x34\x3b\x80\x4f\x91\xdc\x90\x15\x33\xed\x39\x73\xa8\xcd\x72\xbb\x69\xe6\xc8\xf4\x9c\x2b\x52\xb3\xaa\x66\x8a\x09\x24\x34\x3d\xc0\xc4\x3c\x44\x85\x5d\xd1\x98\xdc\xb0\xda\x80\x31\x17\xaf\x29\x72\x43\x8d\x16\xac\xd6\xa4\x66\x99\x9c\x09\xfe\x5f\x1e\x36\x20\x81\xf9\x68\x61\x30\x42\xaf\xc0\x84\xab\x24\x68\x41\x16\xb4\x68\xd8\x09\xa1\x22\x27\x25\x5d\x92\x9a\x99\xaf\x90\x46\x74\xe0\xc1\x23\x6a\x4c\xde\xca\x9a\x11\x2e\xa6\xf2\x15\x99\x6b\x5d\xa9\x57\xa7\xa7\x33\xae\x1d\x55\xcd\x64\x59\x36\x82\xeb\xe5\x29\x10\x48\x3e\x69\xcc\x61\x9e\xe6\x6c\xc1\x8a\x53\xc5\x67\x23\x5a\x67\x73\xae\x59\xa6\x9b\x9a\x9d\xd2\x8a\x8f\x60\xea\x02\xc9\x5e\x99\xff\xa2\xb6\x74\x58\x1d\xf6\xe6\xba\x86\x82\x38\x80\x8e\x0d\x9c\x80\x21\x66\x84\x2b\x42\xed\xab\xb8\x8a\x76\xa3\xcd\x4f\x66\x77\xde\x5f\xde\xdc\x12\xf7\x69\x38\x8c\xd5\xdd\x87\x7d\x6f\x5f\x54\xed\x11\x98\x0d\xe3\x62\xca\x6a\x3c\xc4\x69\x2d\x4b\x80\xc9\x44\x5e\x49\x2e\x34\xfc\x23\x2b\x38\x13\xab\xdb\xaf\x9a\x49\xc9\xb5\x02\xbc\x64\x4a\x9b\xb3\x1a\x93\x73\x60\x35\x64\xc2\xec\x35\xce\xc7\xe4\x4a\x90\x73\x5a\xb2\xe2\x9c\x2a\xf6\xe8\x07\x60\x76\x5a\x8d\xcc\xc6\xc6\x1d\x41\x97\x4b\xae\x3e\xbc\x72\xff\x08\x71\x2c\x6c\xcb\x79\x75\x09\xc2\x4d\xc5\x32\x7f\x6d\xa8\x20\x67\x55\x55\xf0\x0c\x6e\x06\xd1\x73\xaa\x49\x46\x85\xd9\x25\x2e\x94\xa6\x45\x01\x4c\x23\xf8\xfd\x4d\x34\x80\xc0\xa5\xef\x30\x01\xf7\x53\x8f\x2a\xf7\x7f\xf4\xac\xaa\xf7\xd7\xcd\xb4\xc2\x0c\x4b\x63\x57\x7f\xde\xba\xa9\x04\x25\x8c\x29\x9f\xad\xbf\xb2\x75\xc7\xce\xe1\x05\x90\x4c\x28\x17\xca\x02\x68\x6a\xdc\xb3\x96\x17\x4d\x65\xbd\x06\x94\x98\x2b\xd2\x81\x35\xde\x32\xd3\x0d\x3b\x3a\xbc\x72\x33\x98\x58\x6c\xfa\x79\x65\x29\x97\x62\x81\x57\xd5\x48\x21\x86\xdc\x31\xb1\xe0\xb5\x14\x25\x13\x9a\x2c\x68\xcd\xe9\xa4\xb0\x4c\x8d\x69\xc2\x57\xe9\xa3\x9f\xa7\xb9\x6d\xb8\x05\xac\xde\x74\x9d\x36\xbe\x87\xab\xa3\x75\x4d\x97\x1b\xff\xce\x35\x2b\x37\xae\x6d\xd3\x32\x3e\xd2\xba\x43\x29\x0c\xf2\x6e\x5a\x0a\xb1\x0f\x6c\x01\x6a\xa8\x33\xa1\xe4\xdc\x2f\x65\xdb\x7a\x87\xce\x05\xc7\x66\x9c\x6f\xc7\x06\xec\x6f\xc7\xf0\xd1\xe2\x00\x79\x60\xeb\x5f\x57\x36\xc8\xdc\x1d\x64\x79\x6c\xe3\xbe\x8c\xc9\xdb\x46\xc1\x89\xd1\x01\x90\x84\x9c\xff\xe7\xd5\xc5\xe5\xbb\xdb\xab\xd7\x57\x97\xef\xb7\x6d\x0e\x19\xbe\x62\xed\x00\xbe\x10\xbd\x84\xc3\x8f\xee\x0c\x6b\x36\x65\x35\x13\x19\x53\xe4\x97\x47\x1f\xcf\xde\xff\xe7\xbb\xb3\xb7\x97\xc7\x84\xd6\x8c\xb0\x4f\x15\x15\xf9\x0a\x5d\x5a\x1d\x8d\x72\x2c\xa8\xaa\xd9\x82\xcb\x46\x59\x9a\x97\x6f\x41\x7f\x6e\xa8\xdf\xb6\xb3\xc2\xe1\xb1\x1f\xf8\x39\x15\x4b\xa2\x58\xbd\xe0\xd9\xe6\xed\x56\x63\x72\x35\x0d\x6c\xb5\x47\xd9\xcc\xdf\x26\xc3\x2c\x8b\x05\xcb\x4f\x60\xf2\x7e\x1b\xec\xfc\x08\x17\x55\xb3\x1d\xb3\xcd\xb0\x0c\xf9\x9e\x17\x05\xdc\x4e\x81\x92\x5d\x3e\x06\x69\xb6\xbb\x99\x6a\x29\x34\xfd\x64\xe9\xfd\x20\x4c\xa6\x32\x5a\xb1\x9c\xdc\x73\x3d\x27\x94\xe4\xb2\x31\x93\xfe\xe5\x2f\x4f\x08\x67\xaf\xc8\x2f\x3b\x40\xc7\xe4\xd2\x3e\xdb\x9e\xe0\x20\x68\x98\xa7\x60\x0b\x56\x9b\xd9\xba\xb3\x3d\x21\x35\x9b\xd1\x3a\x2f\x98\x52\x06\xa7\xef\xe7\x4c\xcf\x19\x0a\xff\x6e\xd3\x86\x67\xfc\x89\x1b\xc6\x2f\x6b\x22\xa4\x1e\x93\x0b\x36\xa5\x4d\x01\x92\x00\x39\x38\x18\x1f\xee\x05\xad\x5f\xd7\xb2\x8c\x46\xed\x9b\xbe\x06\xb3\x09\x63\x0e\x15\xc2\x1d\xba\x74\xa4\x4b\x78\x15\xcb\x09\x9f\x5a\xd9\x8b\x2b\xb3\x54\xc2\xca\x4a\x2f\xc3\xd7\x76\x90\xae\x91\x48\xf2\x44\x3c\x37\x7d\x4b\xab\x6f\xd8\xf2\x3d\x9b\x0e\x3f\xbc\xba\x27\xac\x60\x99\x21\xe4\xe4\x8e\x2d\x41\x10\x27\xe7\x0e\xdc\xf0\x26\x44\x2f\x83\x44\x90\x69\x37\x46\x66\x1a\x81\x67\x62\xb7\xc5\x8c\x3b\xb6\x0c\x3f\x44\xd6\x35\x4e\xb3\x19\xc0\x8d\xcd\xee\x84\xf6\x81\xc4\xa2\xac\x1b\x21\x9e\xb2\x71\x5a\x87\x5d\xe6\x62\x6f\xb6\xde\x28\x32\xdf\x35\x13\x56\x0b\xa6\x19\x48\xcd\xb9\xcc\x94\x11\x98\x33\x56\x69\x75\x2a\x17\x86\x5e\xb2\xfb\xd3\x7b\x59\x1b\xa5\x73\x64\xe8\xc9\x08\xcf\x50\x9d\x82\x81\xe5\xf4\x17\xf0\x7f\x11\xf3\x23\xe4\xf6\xdb\x8b\x6f\x5f\x91\xb3\x3c\x27\x12\x88\x43\xa3\xd8\xb4\x29\xc8\x94\xb3\x22\x57\xe3\x8e\x2e\x79\x02\xfa\xcc\x49\x14\xd0\x86\xe7\x7f\x1e\x22\x0f\x6e\x24\xed\xb9\xac\xd0\xc8\x92\xbc\xef\x37\x20\x5c\x2e\x7b\xf4\xcf\x5f\x11\x43\xdd\xb8\x8e\xdb\x2b\x83\x53\xa5\x65\xff\x96\x11\x46\x2f\x72\x22\x65\xc1\xe8\x36\xb9\x10\x07\x6c\x7a\xea\xfd\x3f\x6c\x09\x00\xbc\xef\x10\xac\x92\xf9\x2b\xa2\x9a\xaa\x92\xb5\x56\x5e\x11\x02\x7b\x52\xf8\x10\x7b\x8f\x83\x2e\x71\x42\xfe\xee\x7f\x2c\xe8\x84\x15\xea\xfb\xc3\xc3\x3f\x7e\x73\xf9\x1f\x7f\x3a\x3c\xfc\xe1\xef\x61\x88\xed\xdb\x1d\x6b\x65\x0f\x04\x41\x7b\x97\xcc\x41\x81\x09\x43\x44\xe3\x14\x0a\x0f\x67\x59\x26\x1b\x01\x46\xbe\x13\xa2\x34\xd5\x8d\x1a\xcf\xa5\xd2\x57\xd7\xfe\x9f\x95\xcc\xaf\xae\x23\xa0\x76\x9e\x56\x83\x3c\x8e\x3c\x16\x01\x85\x63\xbc\xa6\x7a\xbe\x47\x32\xba\xcd\x26\xb4\x79\xf4\x10\xcc\x59\x89\x2c\x5e\x59\xb3\x90\xf9\xcf\xd7\x91\x13\xc5\xc1\x15\xb9\xaf\xb9\xd6\x4c\x80\x1c\xc6\xea\xd2\x48\x25\x27\xe6\x26\xb5\x62\xc5\xe2\xe5\xc1\xde\x89\xb5\xdf\xcf\xe4\xa5\x9b\x97\xdc\xba\xf1\x72\x79\x96\x12\x23\xeb\xba\xd1\x6a\xb7\x67\xd7\x57\xce\xc2\xb6\xd7\x65\x3a\xeb\xd0\xeb\x07\x52\x10\x6f\x65\xb2\x8b\xf6\xd2\xfa\x2b\x22\x45\x11\xe2\xeb\xed\x3c\x14\x29\x38\x58\x8f\x8c\x90\xef\x2d\x48\x47\xf8\xe3\x38\xab\x9a\x13\xfb\xc0\xb8\x64\xa5\xac\x97\xe1\x7b\x69\x1f\x67\xd5\x9c\x95\xac\xa6\xc5\x48\x69\x59\xd3\x19\x3b\xf1\xe0\x11\xac\xff\x17\x02\x0e\x5f\x8c\xce\x04\xd7\xa1\xa3\xb2\x94\x35\xb5\x61\xd5\xc5\xd2\xd1\x53\x96\x7f\x1e\xca\xe0\xb6\x77\x8f\x84\xc1\x9f\xf0\xbb\x9d\x44\x1a\x6f\x01\xb0\x66\x77\xb7\x16\x90\xd1\x17\xb2\x68\x4a\xa6\xe2\x64\x06\xc7\xde\xe1\x4d\x26\x16\x46\xa2\x57\x7b\x17\x22\x72\xbe\xe0\x4a\xd6\x3b\xca\x10\xdc\x1a\xc9\x65\xa3\xab\x46\x9b\x99\x96\x54\xdb\xbb\x12\xb5\x48\xf6\xa9\x92\x0a\xf4\x3a\x7b\x4f\x56\xc8\xdf\xcb\x83\x08\x30\x15\xd5\x9a\xd5\xe2\x15\xf9\x7f\x47\x7f\xfb\xf5\x3f\x47\xc7\x7f\x3e\x3a\xfa\xfe\xc5\xe8\x7f\xff\xf0\xeb\xa3\xbf\x8d\xe1\x3f\x7e\x75\xfc\xe7\xe3\x7f\xba\x7f\xfc\xfa\xf8\xf8\xe8\xe8\xfb\x6f\xde\xfe\xe5\xf6\xfa\xf2\x07\x7e\xfc\xcf\xef\x45\x53\xde\xe1\xbf\xfe\x79\xf4\x3d\xbb\xfc\x21\x12\xc8\xf1\xf1\x9f\x7f\x19\x31\x39\x2a\x96\xdf\x06\xc9\x0f\x01\x6c\xc6\x83\xe3\x42\xb3\x19\xdb\x64\xf4\xdb\xf6\x46\xe4\x51\x13\xf2\x69\xd4\x0a\xd2\x23\x2e\xf4\x48\xd6\x23\x7c\xf9\x15\xd1\x75\x13\x3e\x32\x77\x4c\xe9\xf7\xe2\xbd\xbb\xd3\x1d\xc3\xbd\x63\x1d\x7b\x45\x6a\xc5\xb2\x9a\xe9\xfd\xe8\x8d\x08\xcb\x59\x49\x2a\x99\x1f\x86\xe5\x62\xb1\xd1\xd8\xbc\x6d\x41\xff\xb2\xaa\xa6\x13\x8e\x70\x07\x5b\x29\x61\x5a\xcb\x72\x4c\xc0\x68\x18\x45\x20\x26\x8c\x50\xb2\xa0\x05\xcf\x1d\xac\x3b\x36\x68\x89\x70\xe3\x59\x7d\xfd\x39\xa9\xaf\x37\x88\x1b\xa8\xbb\x46\x5c\x03\x1c\xfb\xd7\x5d\x99\x58\x6c\x37\xe0\xad\x7a\x1e\xcc\x93\x7d\x27\x8a\x13\x16\xb5\x24\x95\xac\x9a\x82\xea\x9e\x51\x6f\xcb\x04\x57\xed\xcd\x5d\x8f\x8a\xbd\x8f\xad\xa1\xda\xa0\x17\xf8\x2a\x06\x25\x27\xb7\x33\xb4\x6f\xb8\x27\x67\x45\x41\xb8\xc0\xfb\x08\x60\x9d\x45\xb8\x66\x28\x07\x12\xba\x0d\x4f\xa9\x20\x6c\xc1\x84\x36\xe7\xb6\x32\x4d\xb3\x09\x4a\xd3\x5a\x73\x31\x1b\x93\xef\xcc\xdf\x91\x0a\x5b\x83\xeb\x56\xf7\x51\xd9\x14\x9a\x57\x05\x23\x5e\x7a\x40\x5b\x6e\xd1\x30\x42\x95\x92\x19\xa7\xda\x59\x98\xd1\xaf\xae\xf4\xf0\xc2\x61\x3d\x9a\xde\x81\x89\x3f\x63\x39\x13\x19\x1b\x93\x8f\xe0\x4e\xf7\x7b\x38\x59\x9a\xd5\x5c\x8a\x85\xb7\x5d\x37\xe8\xee\xdc\x06\xd5\xac\x65\x33\xe4\xab\xb2\x6c\x34\x38\x52\x1e\xdf\xd3\x65\xf0\xcd\x5a\x8c\x3b\x0e\x2f\x20\xd3\x5e\xc9\xa1\xe0\xaf\x93\xd3\xad\x77\xc1\x1b\x8a\xb6\x9d\x73\x04\x63\x8b\x61\x42\xde\x04\x1c\xe0\xe3\x6b\xdc\xa7\xb5\x64\xf5\xb9\xce\xd3\x59\xaf\x63\xb8\xc9\x97\xcd\x49\x52\xb9\x48\x14\x87\x88\xe6\x0e\xb1\x9c\x21\xc1\xa8\x99\x46\xe9\xe3\x2c\x94\x55\xcd\xa6\xfc\x53\x34\x6e\x9e\x89\x56\xa5\xe3\x39\x13\xda\xa8\x4f\x35\x90\xfa\x9a\x55\x4c\x80\x2d\x85\xd1\x6c\x1e\x64\x5f\x96\xca\xb7\x5e\x8d\xd6\x07\xbb\x5f\x3f\x2b\x4a\x5c\xa9\x17\xf0\x66\x93\xcc\xf7\x7c\xfb\x7e\x76\xb7\xcf\xe2\xc1\x7e\xaf\x9e\x90\x39\x43\x4d\x6d\x9b\xd1\x62\xe5\x6c\x3b\xcf\xdb\xd8\x32\xf7\xaf\xfb\x39\xcf\xe6\x7e\x7a\x46\xff\xdd\x12\x6c\x43\x6c\xa0\x4a\x25\xe1\x8e\x4e\xb9\x26\xd2\x48\x28\x66\x2e\x63\x72\xb3\x01\x5e\x49\x75\x36\xb7\x4f\x1c\x6e\x55\x1a\xd1\x6d\xe0\xbd\xb7\x16\xfc\x04\x4d\xca\x79\x53\xb0\x9c\xb8\xf0\x29\xfc\x54\x8b\x92\x5b\x20\xc6\x20\x6a\x2f\xd0\xe8\x94\x2a\xc5\x67\x62\x54\xc9\x7c\x64\xbe\x71\xba\x19\x8d\x82\x57\xb4\x1b\xf2\x1b\xba\xa6\x01\x4c\xf4\xa6\xa0\x98\xe3\x7d\xef\xed\xab\x1d\x89\x26\x93\x65\xd5\x68\xd6\x31\xbe\x3a\x0d\x7a\xcb\x8c\x26\x4b\x8c\x06\xec\xc8\xcd\xad\x5c\x96\x4a\x08\xfa\xfb\x5b\x52\x41\x67\x6c\x64\xa7\x34\xf2\x53\x1a\xf9\x6f\xed\xba\xe5\x61\x7a\x88\x26\xe2\xed\xf7\xb8\xbf\x95\x6f\xd0\x40\x8d\x3f\x4e\xac\x61\xaf\xa4\x9f\x78\xd9\x94\x84\x96\xb2\x11\xa0\xa2\xd8\x95\x0c\x5c\xe3\x76\xdb\x69\x51\xc8\x7b\x96\x7f\xae\x2d\x8c\xda\x46\x92\x88\xbd\xe4\x4b\x35\x38\x06\x0d\x8d\xf1\x06\xc6\x68\xc3\xe2\x8e\x06\x45\xe7\x5f\x88\x45\xcd\xf7\xce\x61\xb2\x82\x9c\x5c\x3c\x00\x39\x1d\x4d\x80\x88\x2a\xff\x05\xae\x88\x2c\xb9\xd6\xd6\x62\x4f\x5b\x9a\x30\x64\x2a\xe1\xba\x67\xb6\xb6\x57\x89\x4f\x91\x78\x73\x45\xd8\x27\xa3\x20\x72\x70\x99\x38\xe7\xd7\x09\xb2\xf7\x7b\xae\x86\x26\xac\xa5\xd1\x35\x79\x59\x15\xac\x74\xc1\xe6\x23\xa7\x88\x62\x64\xcf\xf3\xf5\x7a\xbe\x5e\x6e\xa8\x78\xd9\xa8\x2b\x16\xa1\x71\x64\xc2\x8a\x56\x3c\x32\xe8\x5f\xc9\x5c\x59\x99\xc4\x21\xcd\xb6\x98\x5c\x42\x2e\x3f\x71\x05\x31\xfa\xef\x19\x58\x43\x6e\x98\x56\xe4\x7e\x2e\x15\x43\x38\xb4\x66\x16\x3a\x9a\x50\x80\xe5\x5a\xfb\xd1\x80\xd4\x25\x21\xa4\x7c\x3a\xed\xbf\x97\xb3\xaa\x90\xcb\x12\x24\xf5\x2b\xdd\x95\xba\xac\x28\xb5\x0d\x22\x2b\xab\x82\x6a\x76\xa8\xac\xf8\x35\x64\x77\x79\x10\xf7\x85\xd9\x5c\x7e\x32\x52\x89\x6a\x33\xd1\x36\x8d\xde\xa9\xac\xbe\xd6\x37\x10\xf6\xcf\x68\x90\xce\x01\x75\x2b\x31\xfb\xe1\x16\x34\x9b\xf6\x17\x38\x8b\xb3\x77\x17\xdb\x0f\x33\x6c\x7a\x22\x21\xf3\xd3\xda\xd2\xce\x56\x51\xac\x33\xa5\xbe\x6c\x3e\xa8\x24\x60\x3e\x81\x8b\x9b\xc7\x4c\x97\x13\x34\x18\x9e\xd8\x20\x5a\x9f\x99\x84\x0f\xd7\x0c\x12\x6a\x02\x50\xd1\x71\x61\x00\xd8\xec\x99\x87\xeb\xac\x31\x9e\x9b\x90\xd7\x66\xe4\x17\xb3\x07\xe5\x38\xc2\xa5\xd3\x3b\x32\xb3\x23\x3d\xf2\x00\x61\x84\x66\x4f\xd1\xbb\x13\x71\x5c\x04\xa2\x6d\xaa\x02\x7c\xc5\x32\x2e\x02\x33\x4a\x4d\xc5\x4d\x49\x5a\x8e\x47\x8b\x6e\xc0\xbf\x59\xd3\xa1\x42\x24\x31\x37\x6e\xce\xab\xe0\x82\x0c\x57\xb6\x96\x52\x9f\x6b\xf5\x11\xac\xe2\x6d\x4e\x9c\xb9\x63\x57\xe2\x84\xbc\x93\xfa\x4a\x84\x1d\x2d\x97\x68\xeb\x36\xf8\x77\x21\x99\x7a\x27\x35\xfc\xb2\xb7\x0d\xc3\x69\x26\x6d\x17\xbe\x02\x57\x53\x20\x25\x00\x27\x45\x27\x39\x0b\xe2\xd1\xc3\xbb\x65\xc8\xb8\xdb\x7a\xae\xc8\x95\x20\xb2\xb6\xfb\xd2\x5a\xec\x95\xfd\x44\x19\xe3\x1b\x9c\x30\x22\xa4\x18\x61\x60\xb2\x91\xe0\x56\xbf\x71\xe9\x63\xb5\xbb\xbb\x19\x3e\x86\x8d\xd3\x81\x28\x72\xfc\xd4\xad\xe1\x3e\xf8\x17\x4c\x02\x2c\x6c\x0e\x6c\x60\x5f\x1b\xd8\x34\x48\x6d\xa3\x9a\xcd\x78\x46\x4a\x56\xcf\x98\x11\x76\xb2\x79\xdc\x21\x0f\xd3\x62\x1c\x41\x8a\xdc\x05\x38\x88\x35\xc0\x88\xde\x00\x8f\x4c\x61\x5d\xf8\x06\x92\xf3\x92\x56\x06\x61\xfe\xdb\x50\x66\xd8\xd3\xff\x21\x15\xe5\xb5\x1a\x93\xb3\x81\x19\x2a\x2e\x66\x05\xeb\xbd\x65\x2d\x9e\xdd\x0f\x18\xd8\x46\xb0\xfe\xb1\xe1\x0b\x5a\x0c\x65\xe6\x38\x19\x9a\xa1\x04\x6d\x66\xb4\xca\x64\x4f\xac\x9c\x62\xa8\x1b\xc6\xb5\x71\x45\x0e\xee\xd8\xf2\x60\x08\x61\x56\x51\xee\xe0\x4a\x1c\x20\x07\x5a\x43\x22\xcf\xae\x02\x51\x63\x07\xf0\xd6\xc1\x43\x38\xf6\x9e\x85\xf1\x00\xa6\x68\x59\xb0\xba\x9b\x6a\xbf\x3a\xfa\xe6\xe1\xf6\x69\x58\x90\x0f\xab\xe8\xc2\x79\x6c\x4f\xd8\xad\xb3\xb5\x99\x9b\xdc\xce\x08\x50\x56\x6b\x9a\xcd\x21\xfd\xdc\xcd\x68\x40\x6c\xa0\x62\x49\xcc\xa9\x6a\xe4\x88\x80\x54\x56\x35\xd5\x35\xb8\x25\xff\xe8\x71\xf8\x84\x81\x04\xfb\x27\xcc\x21\xda\x7e\x84\x0e\xcb\x0d\xb1\xf0\xb8\xf5\x47\xf7\x5f\x7f\x7a\x40\x5e\x59\x8c\x88\x80\x93\x8c\x16\xe8\x2e\xe1\x71\xc2\x45\x0e\xce\x4f\xbb\x74\xd8\x11\x84\x64\xf6\xb1\x0c\x13\xb8\x4b\x43\x5a\x49\xc9\xa8\x50\xce\x74\x0a\xbe\xd2\x16\x90\xb2\x6e\xe1\x8e\xf2\x6c\x8d\x4b\x11\x3c\x0f\x50\xed\x9d\xbc\xb1\x56\xd5\x13\x72\x0d\x56\xfe\xf6\x17\xb8\xb3\xef\xe4\xe5\x27\x96\x35\x7a\x30\x53\x26\x8a\xdb\x06\x84\xac\xde\x16\x7e\xd3\x0a\x58\xb8\xde\x9e\x80\xd5\xde\x0a\x27\x42\x0d\xcb\xb0\x72\x3c\xb8\x97\x77\x6c\xa9\x3c\xb3\xb4\xa2\x1d\xb0\xb5\x61\xb6\xe8\xf1\xd0\xb1\x42\xe4\xad\xff\xc7\x19\x4d\xcb\x09\x17\x38\x49\xfc\xac\x3b\xf4\x41\xa0\x66\x56\xee\x78\x8c\xcc\x5e\x14\x38\xbd\x87\x6e\x7e\x8c\x5c\xd8\x3b\x81\x6f\x23\x65\xc2\x7e\x11\x83\x0d\xb3\x73\x34\x7f\xb3\x24\xd8\x11\xef\x2e\x7f\x6c\x68\xd1\xa6\x8f\x05\x8e\xd4\x3d\x6e\x01\xf4\x78\x9e\xf9\xf3\x3d\x2f\xf2\x8c\xd6\x36\xc2\x14\x68\xcd\x20\x44\x25\x11\xbf\x28\x10\xc1\x8c\x0a\x4f\xe9\x5a\x4c\x51\x18\x0a\x50\xd1\x5a\xf3\xac\x29\xe8\xb0\x84\x6f\x2b\x97\x44\x24\x88\x05\xce\xae\x45\xf7\x1b\x96\x49\x91\xc7\xab\x96\xb7\xab\x6f\xae\x46\x38\x54\xac\xe6\x32\x1f\x0a\x6c\x80\x09\xf0\x92\xad\x5e\xbc\xa3\xbe\x9f\x48\x4e\x1d\x6d\xf3\x04\x23\x70\x7b\x9c\x91\xcf\x56\x1c\x70\xe2\x05\x9f\x09\x59\xb3\xfc\xb8\x65\x34\x2d\x15\x18\x26\x97\x5f\x2f\x9d\xb5\xf1\x84\x70\xed\x72\xf4\x14\xd3\x27\xce\x07\x65\xaf\xa1\x3d\x56\x0f\x76\x10\xea\x54\xd6\x90\x30\x79\x94\x4b\xcc\xf9\x5b\xf0\x4c\x1f\x8f\xc9\xff\xc7\x6a\x09\x68\x2b\xd8\x8c\x6a\xbe\xf0\x92\xcd\x3d\x2f\x8a\x41\x88\xe0\x55\x63\x14\xa3\x82\xc8\x0b\x72\x04\x20\x09\x2f\x4b\x96\x73\xaa\x59\xb1\x3c\x46\x7b\x0e\x23\x6a\xa9\x34\x2b\xc3\x08\x14\x36\xae\x61\x0c\x32\x3c\xf9\xbb\xdf\x6e\x7d\x2e\x2d\x83\xf8\xa3\xcb\x85\x6c\xc9\x34\xc6\x18\xad\xa0\x8a\x95\x00\x82\x34\x7a\xab\xba\xd2\x8d\x5f\xb2\xc5\x42\x9c\xe6\x11\x8b\x64\xff\x30\x78\x4a\x49\xcd\xa0\x7a\x8f\xbd\x71\x0f\xb8\x99\x18\xb3\xfe\x56\x36\x62\x9b\xbd\xbe\xb7\x55\x6f\xac\xa1\xea\x63\xe7\xb5\xb6\x0a\xc0\x4a\x74\xda\x23\x0b\x7a\x9d\x39\x74\x3c\x07\x94\x80\xbb\x00\x04\x2c\x43\xe4\xf0\x29\x1b\x17\xb7\x5d\xd6\x0b\x4d\x7b\x4f\xb9\xfd\x30\xb7\x81\x14\xa2\x07\x67\xff\xfb\x0f\x44\x63\x3f\x24\xfd\xd8\xb0\xc1\x7e\xd8\x1e\xd5\x96\xe0\x00\xd6\xc2\x3e\x0e\xb3\x1e\x8f\xd2\x30\x0b\x96\xdb\x48\x60\xa0\x37\x16\x2c\x39\x7c\x75\xf8\x60\x46\x82\x8b\xac\x65\x45\x67\x70\x33\xa3\xd7\xba\xfa\x22\xc9\x99\x66\x75\x09\x65\x4d\xe6\xf2\x1e\xff\x0e\x0c\x7d\x70\xa1\x95\x85\xc0\xf2\xb6\xc2\xcc\x5c\x2a\xe0\xd7\xfd\x84\x7f\xa0\x03\x10\x32\x71\x1f\xd0\xed\x69\x2d\x1b\x91\x5b\x39\xd8\x13\xfc\xb7\x2b\x13\x7e\x27\x05\x50\xaa\x46\x61\x72\xfe\x5a\x6d\x9c\xfe\xf0\xdc\x68\xc2\x34\x35\x17\xf4\xe5\xf8\xe5\x8b\x07\x6f\x7f\x52\x85\x09\x30\xa8\xac\xd8\xef\x5d\x44\x8e\xbb\x9d\x0f\x9e\x51\xcd\x68\xfe\xad\x28\xe2\xe5\xf2\xb7\x88\xa0\xf0\xe2\xc8\x28\xed\xe0\xcd\xab\x1b\xc8\xaf\xa2\xf9\xe8\xbe\xe6\x9a\x45\x39\xf0\x08\x39\x9a\xd2\x42\x31\x22\x6b\xd2\x08\xaf\xc0\x1c\xf7\xeb\x07\xc0\x23\xe1\x65\x86\x62\xd2\x54\x33\x79\xd0\xdd\xc6\x4b\x8c\x48\xdb\x5e\x6d\x8f\xb2\x81\xfc\x07\xfb\xf6\x86\x6b\xde\x2f\x95\x40\x8e\xf0\x49\x23\x61\x4b\xa9\x8f\x1f\x1e\xa8\x86\xcb\xbe\xfc\x54\xc5\xcb\xfd\x97\xb6\x2a\x04\xa9\x42\x7b\x10\x14\xfb\x3b\xfb\x33\xb0\x07\x5f\xb3\x39\x5d\x30\x45\x14\x2f\x79\x41\xeb\x40\xf6\xa0\x96\xe4\x06\x57\x45\x26\x8d\xde\x5c\x93\x66\x73\x3d\x93\x00\x15\x69\xeb\x61\x74\xea\x99\x74\x57\xd0\xf9\x54\xbc\x92\xb2\xe1\x50\xdd\xfc\xcd\xa9\x00\xad\x73\xeb\x31\x73\x28\x1b\xdd\xd0\x22\xb0\x07\xec\x53\x56\x34\x8a\x2f\x1e\x72\xff\x6d\xce\x5d\xb2\xe8\xb2\x2a\xb5\x54\x32\xbf\xa9\x58\xf6\x34\x32\x4b\x5f\x17\x35\xe4\x34\x77\x88\x05\xb1\xfb\x68\xbe\xa2\xdb\x05\xfa\x92\x2e\x21\x1e\x34\xcb\x98\x52\x2e\x62\x7d\xd9\x8d\xb8\xf7\xab\xfa\x92\x4b\x15\xd1\x7b\x75\x59\x50\xa5\x79\xf6\x75\x21\xb3\xbb\x1b\x2d\xeb\x84\xba\x3f\x67\xdf\xdd\xac\xbd\xbd\x52\xea\xe9\xec\xbb\x1b\x72\xc1\xd5\xdd\x20\x1a\x76\x4a\xcd\x61\x34\x47\xd7\x4c\x48\xc9\x5d\x33\x61\x05\xd3\x87\x87\x0a\x79\x7c\x49\xb3\x39\x17\xc3\x2c\xc1\xb2\x7e\xe1\x13\x20\x6d\xe1\x3f\x73\x1e\xa9\xe1\x1c\x36\x35\xf7\xd4\x62\xfa\x2f\xe8\xbd\x62\xb8\xec\x89\x59\xb6\xf9\x33\x0b\xd7\xa6\xd9\x93\x2f\x13\x27\x71\x75\xb1\x07\x5f\xe5\x54\xdd\x9a\x99\xa5\x38\xac\x0e\x5f\xf3\x82\xa1\x2e\x09\xcb\x72\x51\xbd\xf6\xee\xc0\xf9\x2d\x65\x13\x74\x8f\xdc\x53\xb4\xad\x00\xed\x1e\x93\x5b\x5e\xbd\x22\x97\x42\x35\x35\x6b\x6d\x73\xd3\xfe\xa7\x82\x30\xb9\x6a\xb3\xa5\x9d\xda\x0b\xf8\x82\x6a\xa0\xa1\xc4\x56\x0b\x26\x97\x9f\x68\x59\x15\x31\x29\x7a\x07\xec\x93\xfe\xed\xc1\x09\x39\xf8\x34\x55\xe6\xff\x84\x9e\xaa\x83\x31\xb9\x2a\x7d\xb8\x11\x14\x3b\xac\x99\x0b\x2d\xc5\x17\xc2\x93\x9d\x76\x65\x95\x47\x41\xc9\xe0\x1c\x30\x0c\xda\x48\xdd\xb9\x24\xf7\x58\x73\xcb\xb0\x3f\x56\xd7\xb2\xf6\xb9\x4e\x9d\x63\x08\xc4\x99\xe3\xc8\x64\x59\xd5\xb2\xe4\x9e\xf5\xd9\xeb\xba\xb7\xf8\x69\x30\x9a\x85\x94\x0e\xb2\x86\xb9\x58\x07\xd7\xbe\x4a\xfa\xa2\x88\xc3\x5b\xc0\xcb\xb0\x6f\xcf\xe3\xed\xd5\xd4\x05\xb3\xa1\x61\xc1\x5a\x8d\xc0\x92\x61\x1f\x32\x98\x18\xa1\xb9\x11\x2b\xd5\x77\x70\x93\xbc\xf6\x19\xed\xe4\x34\x67\x8b\x53\x95\xd3\x97\x27\x30\x4d\x44\x9c\x70\x0e\x9e\xee\xad\x99\x2a\x72\xf0\xf2\x60\x4c\x6e\x9c\x7c\x74\xd2\xdd\x03\xff\x5c\x10\xea\x54\xd6\x7e\x42\xe0\x96\x7b\x71\x40\x8e\x64\x0d\x33\xcb\xa8\x20\x05\xa3\x0b\xeb\x7a\x42\x4a\x14\x9e\x28\x58\x60\x8e\x23\x6b\x1c\xc4\x25\x70\x77\xec\x54\xff\xf6\x9b\x00\xfb\x09\xeb\x2e\x64\xbd\x86\x85\x8d\xc8\x3f\x30\x4a\xcb\x01\xa8\x18\xd2\xf0\x30\xc3\x79\x8c\x58\x03\x85\x54\x2d\xe4\xe0\xfa\xdd\x46\x19\xbc\x5c\xb5\xec\xe0\x07\xd6\x90\x2d\x08\xb3\x83\x8c\x07\xa0\xfd\x1c\x3c\x39\xe7\x23\x49\xd5\x88\x1c\x6b\x4b\x3b\x87\x0f\x82\xff\xd8\x30\x72\x75\xe1\xeb\x10\xb1\x5a\x71\xa5\x0d\x25\xcb\xb9\xba\x8b\xad\x61\x01\x69\x3f\x46\x5c\x39\x3a\x2b\xe9\x7f\x49\x41\x2e\xbf\xbe\xb1\x53\x3a\xfe\x8c\x1b\x17\x20\x88\xf4\xbf\x9a\x9a\x19\x01\x2b\x3e\x48\xcc\xbd\xb1\x2a\xa9\x99\xdf\xc9\x05\xd5\x14\x04\x36\xa4\x5e\xc3\x36\x51\xd1\xf2\x58\x83\xf5\x13\x2e\x72\x4b\xf4\x3a\xd2\xd6\x53\x09\x46\xe6\xac\xdf\x6d\x97\x86\xdb\x87\x3e\xbc\xbf\xda\x83\xf0\x94\x01\x57\x9b\xbd\x95\x79\xa2\x04\xf5\x57\xb3\x5d\xe7\xf8\x36\x29\xcd\xeb\xe4\x9d\x14\xec\x04\x88\x05\x31\xd4\x02\xff\x33\x88\xae\xdf\xd5\x5c\xb3\x48\x92\x19\xc1\x56\xdd\xfe\x25\xad\xe6\xb6\x63\x4b\x02\x06\x68\xd0\x07\x6e\x9d\x65\xb0\x93\x42\x4e\x88\xbd\x0d\xfb\x9c\xe9\x87\xf7\x57\xc9\x13\xfd\xf0\xfe\xea\xe9\x26\xb9\x83\x70\xbd\x2a\x5b\xb7\x72\x46\x9b\x7e\xd8\x4a\x63\x61\xe6\x6f\x60\xc4\x4b\xc4\x63\x27\xeb\x86\x65\xe2\x34\x59\x98\xf0\x70\x00\x5b\x57\x16\xde\xd7\x09\xac\x57\x43\x5f\x1f\xfd\xab\x79\xf9\xa9\xc2\x20\x68\xeb\x80\xbb\x99\x53\xa8\xa8\xe2\xb3\xe0\x0d\xa2\x84\xf9\x2e\x57\x77\xca\x70\x21\x87\x52\x84\x62\xb1\x38\x42\x2e\x18\x06\x72\xe4\xaf\x5c\x10\x56\x34\xc4\xcd\x00\xdf\x42\x6e\x41\xfe\x0a\xf9\x00\xc1\x54\x83\x9c\xf4\x4a\xf8\x0f\x42\x3d\x42\xd3\xab\xf0\xaf\xd2\x05\xe5\x05\x9d\xf0\x82\xeb\xa5\x91\x63\x8e\xc7\x3e\xf3\x22\x46\x30\x56\xb0\x65\x7b\x23\x4a\x3b\x89\x66\x6b\x66\x5f\x72\x64\xe0\x9c\x82\x49\xf9\x78\x1c\x2f\x95\xcd\x59\xcd\x30\x80\x1e\x45\xbb\xae\x48\x67\xf6\x06\x6e\xd0\x8a\xc4\x16\x87\xbe\x21\x71\x08\x8e\xd3\xd0\x83\x34\xb6\x6e\xde\xd8\xc8\xd6\xe1\x0f\x37\x58\xba\x70\x70\x82\x36\xd3\xe7\x8b\xe2\xec\x98\x25\x1d\xe4\xed\x80\x7a\x81\xa7\x62\xb9\xfb\xcf\x15\xef\x88\x4f\x4a\x4f\x16\x05\xcc\x24\x85\x15\x05\x5c\x55\xa2\x5e\x22\x01\x60\x62\x70\xed\x37\x96\xc4\xd9\x02\x9b\x28\x5d\x18\x1c\xfc\x26\x58\x73\x26\xbe\x84\x95\xc3\x94\xb4\x14\xec\x39\x84\xb9\x0d\x23\x58\xf4\x3c\x32\x56\xcd\xa7\xf1\xf1\x37\xe7\xac\x9a\xbf\xbe\xe9\x9b\xad\xcd\x6f\xe4\xf5\xcd\xfa\x9d\x0d\xf8\x53\xa8\xc6\x1d\x50\x68\xe8\x3e\x54\xa4\xe0\x53\xa6\xf9\xe0\xc2\xf6\x7a\xa3\x4b\x29\xb8\x96\xf5\x10\x47\x89\xbd\xa9\x0e\x54\x1a\xa7\x6f\xab\xa5\xbd\xb5\xef\x63\x40\x75\x26\x8b\x82\x65\x1a\xab\x8f\x06\x71\x15\x0e\xc0\x4d\x60\x93\x8a\xc8\xac\x2d\xc7\x77\xd9\x42\x75\xf0\x14\x0f\xff\xf4\xfd\xe5\xd9\xc5\xdb\xcb\x71\x99\xff\x62\x2e\xef\x47\x5a\x8e\x1a\xc5\x46\x3c\x58\xae\xed\x73\x04\xab\xe3\xa8\x22\x6a\x9a\xf6\x37\xfa\x5b\x57\xec\x80\x7c\x50\x18\xa6\x04\x26\x41\xe7\xfc\x95\x52\x9f\x90\x9a\xea\x79\x44\x3d\x3e\x3d\xa7\xd6\x22\xd9\x14\x05\xee\xbd\xae\x19\x3b\xe9\x1a\x3a\x06\x32\x29\x13\x97\xba\x9b\x51\xa8\x5d\x6e\x80\x19\x04\x57\xeb\xe9\xfd\x63\x30\x03\xf2\xd4\xc8\x1a\xcf\x77\x42\x42\x0f\x19\xd8\xf3\x1b\x0f\xc1\xc5\x92\x81\xeb\x59\xcb\xa8\x82\x65\x90\x3f\x32\x95\xb5\xc1\xd4\xba\x8f\x55\x4c\x67\xb0\x0d\xa7\x8d\x62\xf5\xd8\x72\xb7\xb7\x31\x36\xf6\xa7\xdb\xe2\xe8\xd2\x8d\xc9\xd5\x7a\x57\x37\xf8\x3d\x9b\x62\x6a\x8e\xeb\x72\x81\x32\x61\x70\x2f\x68\xa3\xe7\x4c\x68\xd7\xb6\xc8\x6e\xe3\xc6\x1d\x0f\xf6\x43\xc0\xf1\xc4\x58\x1c\x55\x4c\x32\xa5\x00\xe4\x73\x59\xc4\xc1\xb1\xf7\xb2\x88\xe6\xfa\x3e\x80\x7f\xf9\x4c\xee\x9a\xe6\x12\x42\xc0\xb0\x0a\x71\x78\x35\x1d\xd4\xa6\x79\xc9\xc5\x53\x63\x6e\x48\x18\xe5\x22\x1f\xde\x99\x95\x22\xcc\xf0\x7c\x5f\x1a\x45\x18\xce\x9b\xe4\x3c\xf8\x83\xb3\xa3\x4e\xab\xc4\x42\x3c\xd6\xcf\xdf\xf7\xf2\x6f\x44\xec\xd5\xad\x2a\x97\xea\xc7\x62\x84\x33\x18\x55\x79\xbb\x57\x3f\x57\xb7\xfc\xd3\x9a\x0e\x7f\x02\xce\xf4\xbd\x60\x0c\x79\x16\x20\xfd\x78\xfc\x3d\x8e\x97\x19\x1f\x20\xd1\x40\x4f\x4a\xe5\xd2\xcd\xb1\xc6\x2d\x36\xb7\xb4\x76\x8b\x98\x4a\xbb\x15\xad\x69\xc9\x34\xab\x31\x2c\xd8\x06\x21\x0b\x9b\x9f\xf7\x6d\xc5\xc4\x8d\xa6\xd9\xdd\x3e\x4b\xf8\x3f\x4b\x19\x5f\xae\x94\xb1\x9b\x1f\xdb\x85\x1f\xe6\x1e\x87\x6c\x11\xcb\x65\x6c\xf4\x3f\x41\x1f\x36\x5e\xb8\x2f\x80\x0a\xfa\x0a\xb3\xf1\x56\x2e\x5f\x4f\xb4\x2f\x5a\xb4\x15\x67\xd1\x78\x25\x9b\x62\x58\xb2\xf0\xc5\x9d\x21\x25\x2c\xb8\x77\x7b\xae\x90\x69\xa5\xbd\x74\xdf\x70\x4b\x97\x4a\x99\x33\x32\xe1\xba\xa5\x28\x8a\x69\x52\xb1\xba\xe4\x98\x51\x1f\xc4\x04\x29\xb0\xcb\x3a\xcb\x91\xf3\x1b\x2e\x6e\x27\xd6\x91\x0a\x04\x91\x99\x76\x2d\x8f\x83\x30\x27\x4c\xdf\x33\x26\xc8\x8b\x17\x2f\x5e\x80\xf4\xf6\xe2\xf7\xbf\xff\x3d\x81\x32\x5e\x39\xcb\x78\xe9\x00\xb5\x0f\x86\x95\x42\x91\x93\xff\xf5\xf2\xe5\x98\xfc\xc7\xd9\xdb\x37\x10\x4f\x5b\x69\x45\x26\x52\xcf\xed\xcc\xcc\x03\x3d\xe0\x11\xed\x3d\xfe\xfd\xe6\xdb\x77\x4e\x70\x53\x2b\x6f\x83\xc2\xe9\xb7\x37\x32\x00\x9b\xa0\x77\xeb\xc5\xef\x7e\xfb\xdb\x31\xb9\xe0\x35\x54\x65\xe1\x90\xa3\xe7\xc3\xda\x2b\x17\x7a\x2d\xa4\xf6\xf5\x94\xc2\x5b\x6a\xeb\x2d\x59\x46\x6c\xeb\x5f\x94\x7c\x36\xd7\xd8\xcf\x17\xb0\xbf\xe0\x99\xc6\x5a\xd8\x32\xca\x56\x86\x35\x46\x95\x4d\x44\xb5\xa9\xe2\x36\x98\x0f\x16\x7f\x42\x0a\x7e\xc7\xc8\x54\xfd\xa5\x96\x4d\x05\x45\x15\x22\x0c\x70\x50\xf2\xd1\xe8\x31\xb6\xdb\x30\x52\xe1\x16\x57\x15\xd3\x9f\x29\x86\x2b\xca\xd2\xd9\xbb\x6c\x57\x3d\xa1\xf1\xc4\x57\x06\x1e\x21\x06\x57\x94\xd7\xdb\xeb\xa2\x77\x96\x33\xb7\x41\x33\xbd\x5e\x68\xde\x36\x92\x77\x68\xda\x70\x29\xae\x76\x54\xb5\xfc\x07\xfa\xa1\xb9\xb0\xee\x36\xa7\x55\x29\x2b\xc7\xdb\x72\x1a\xe0\x6f\x09\x64\x20\x91\x95\xda\x4b\x46\xae\xb1\xf5\xa0\x3a\x19\xd5\x57\xd3\x6e\xea\x7f\x8c\x35\xa7\xe0\xca\x4c\xb1\x57\xa4\x7e\xc3\xcc\xbb\x4d\xff\xf5\x3c\xe2\xee\x9a\x39\x36\x62\x0d\xba\xed\x9e\x69\xb9\x02\x76\x69\xb5\x29\xf6\x41\x90\xed\x1c\x30\xe5\xc6\x26\xf4\x5a\x58\x6b\xe5\x9e\xe3\xd6\xef\xf2\x50\x98\x6e\xec\xd1\x42\xdc\xac\x99\x3b\x53\xca\xe6\x0d\x97\xb4\xbe\x33\xca\xad\xa5\xeb\x61\xb1\xfa\xda\x6c\x92\xcf\x85\xc6\xf4\xf8\x05\xf3\xad\xe8\xbb\x79\x7c\x66\xce\x87\xe3\xe0\x7d\x43\xab\xbd\x21\xd2\xd0\x01\x00\xa9\x88\x79\xef\xc9\x6b\xe2\xf4\xf3\xbf\x68\xd5\x69\x44\x6f\x9b\x67\xd2\x5e\xae\x50\x38\x84\xc1\x9d\x42\x78\x5f\x13\x44\xeb\xf8\x7e\x30\x71\x1d\x61\xcc\x53\x55\x4c\xcf\xba\x14\x99\x3e\xba\x79\xcc\xf6\x4e\xa5\xf6\xb2\xc6\xf4\x7a\x49\xec\x3c\x42\x30\xae\x2d\x7d\x76\x21\x01\x28\x0a\x22\xe9\x8a\x49\xe8\x16\x85\xb2\x00\xbd\x5e\xda\x69\x72\x0f\x8e\x54\xe9\x27\x12\xec\x8b\x24\x19\x28\x12\xa8\xab\xda\x17\x25\x09\xc5\xae\x1f\xe4\xa5\xab\x29\x26\xc7\xf6\xb8\x85\xa3\x86\x1d\xc9\x37\x12\xa8\xef\x78\xed\xf3\x69\xb7\x0b\x3f\x91\x20\x51\x2a\x89\x14\x81\x22\x61\x76\x05\xa5\xb0\x20\x14\x09\x34\x46\x5c\xc2\x91\xda\xb9\x2c\x45\x74\xc2\x11\xe3\xda\xc5\xb1\x46\x4f\x3c\x97\xaa\x7a\xdd\x2b\x0b\x16\xaa\xe8\xd2\x8e\x12\x74\x3b\x47\x9a\xc6\xe4\xad\xe5\x75\x78\x55\xe9\x44\xc9\xa2\xd1\xf8\x81\x38\x7a\x45\x3c\x88\x2e\xbb\x84\x09\xba\x32\x65\xc0\x03\xdd\x63\xb1\x27\xd6\xb2\x50\x10\x6e\x90\x7b\xc5\x70\x53\x1c\xd1\x64\xf4\xb9\xc9\xc2\xc3\xf6\xef\x11\x5a\x9c\xb4\xbd\xaf\xc2\x8b\x7f\x8c\x76\x28\x99\xe2\xf1\x86\x94\x9b\x2b\x72\xd4\xb6\xca\x74\x41\x55\x57\x42\xb3\x7a\x4a\x33\x76\xdc\x31\xb0\x0c\x4e\xce\x37\x28\xf5\xb1\xa7\x2e\x47\x73\x4e\x45\x5e\xa0\x73\x20\x63\x35\x5c\x31\xf6\x49\xb3\x5a\x04\x78\x94\x99\x5a\x5e\xf3\x05\xab\x15\x39\xfa\x9a\x19\xcd\x89\x51\xdd\xd4\xc3\x36\xed\xfd\xa6\x0a\xc0\xe7\xf7\x61\xe8\x01\x40\x69\x41\x82\xf0\x8a\xd3\xbe\x44\xe7\xd2\xb6\x1b\x33\x9c\x7a\xec\x06\x1e\x80\xea\x9a\xb8\xc6\x06\x5d\x81\x2f\x01\x89\x5a\xca\xa6\xb6\xfe\x46\xdb\x03\x23\x08\x34\x93\x75\x6d\x38\x25\x4c\x8c\x2a\x52\xb3\x99\xd1\xc4\x6a\x50\xe9\x30\x93\xbd\x68\xcc\x0f\x7b\x0b\xd3\xde\x6b\xa0\x7c\x27\x8c\xdd\x7a\x99\xc2\x4e\x29\xe7\x85\x9a\x5a\xa5\x50\x2e\x78\xee\xc4\x1a\x88\x43\xb0\x52\x1d\x57\xa4\xa2\x4a\x45\xd8\x74\xac\xea\xdb\x69\x90\xd6\x39\x5b\x54\x41\x41\xec\xf1\xb5\x4f\xa2\x14\x78\xe7\x43\xee\xe6\xc5\x4a\x28\x5b\x17\x8c\x94\x88\x67\x3b\x32\x67\xd7\xcd\xa4\xe0\x6a\x7e\xb3\x93\x6b\xe5\xdd\x06\x00\x18\x5a\xd7\x0d\x17\x89\x5a\xef\x36\x77\x0c\x51\x4c\x28\x0e\x02\x87\x61\x6c\x46\xcc\x89\xc9\x5a\x34\x1a\x0f\x55\xca\x1d\x4e\xf7\xb6\x49\x48\x5a\x2d\x98\x2d\xe5\x65\xfe\xd4\x59\xc7\xc7\x38\xcb\x3b\x96\x38\xcc\xd9\x07\x51\x75\xdf\x23\x19\x2d\x0a\x65\x25\x5b\x5f\x0d\xc6\xb1\xa7\x38\x73\x88\xab\x36\x80\xd8\xc8\x0d\xa2\xfa\xd6\xa9\x2b\x7d\x16\x62\xee\xf8\xc6\x8d\x55\xa4\x94\x98\x7d\x2d\x88\x14\x6e\xf7\xa1\x0a\xa4\xfd\xef\x08\xb5\xd9\x57\xcb\xa0\x35\xb3\x97\x25\x0e\x35\x9f\x7d\x5e\x5b\xc7\x4f\xc3\xe7\xb5\x93\xb7\xbb\xed\x71\x4d\x3b\x75\x80\x7a\xdd\x33\x06\x3a\x46\x75\x66\xe9\x15\xd0\x0d\x35\x7f\x92\xdc\xe6\xa9\xc9\xaa\x67\x5a\xd7\x7c\xd2\xe8\xc4\xba\xdf\x1f\x57\x5e\x06\xe1\xca\xe8\xe7\x40\x90\x46\x56\xb7\xce\x12\x2c\x46\x56\xcd\xf5\xd7\x6e\x9d\xcc\x79\xd9\x20\x08\x15\xc4\x06\x7c\xe9\x50\x91\x5c\x66\x8d\x6f\x8c\x02\x72\x44\x1b\x18\x12\xae\xe3\x4f\xd2\xae\x78\x6a\xf1\xe4\xee\x07\x02\x58\x9a\xcb\x7b\x71\x4f\xeb\xfc\xec\x7a\x30\x73\xb0\x2f\xac\xb5\xef\x74\x3d\x92\x0e\x14\x31\xbf\xd3\x89\x6c\x74\x90\xee\xba\x82\x32\xae\x6e\xd1\xbf\x90\x83\x52\x4b\x43\x93\x3a\xfe\xc6\xe0\x79\x0d\xf8\x23\xc9\x36\x0b\x60\x0c\x7f\x5f\x71\x91\x86\x5d\xa0\x11\x0e\xcf\x15\x53\x61\x84\x11\x30\xec\x39\xe8\x03\x8a\x32\xff\x45\x18\xd7\x7b\x2e\xd2\x3d\x19\xfe\xfa\x2e\xd2\x28\x17\x68\x58\xa2\x59\x71\x91\x86\x5d\xa0\x11\x5a\xcb\x9a\x8b\x34\xc2\xfe\x17\xe1\xe2\x5a\x71\x91\xee\xc1\xf2\xf7\x93\x72\x91\x9a\x37\xfa\xfd\x71\x7a\xa4\x2f\x32\x26\xc5\xec\xf8\x67\xf5\x35\x75\xc8\x38\x72\xde\xd5\x3c\xc9\x14\x3d\x02\x28\x0d\x92\x95\x16\x9f\x3a\xda\x89\xeb\x34\x09\x02\xda\xe7\xf3\x4b\x3d\x82\xc7\x09\x56\x14\xa1\x10\xe2\xd8\x96\x70\x85\x5d\xb1\xd0\x91\xdd\x7a\xcc\x63\x3d\x3b\x32\x7f\x05\x2d\x1e\x08\x15\x42\xa2\x4c\xa2\x4e\x6c\xa7\xa9\x13\x6b\xb5\x10\x39\xfc\x87\xaa\x68\x44\xd1\x0f\x1c\xd0\x3a\xcb\x89\x35\x49\x36\xf9\xc8\xa3\x23\x49\xc7\x47\xe0\x08\x61\x7f\x06\x4a\xd5\xf6\x47\xda\x59\x12\x68\x1a\xe4\x54\x87\xd8\x37\x56\xc5\x58\x7c\xdb\x69\x4c\x2a\x9b\xb3\x92\xc2\x7f\xbe\x4e\x9a\x3a\x0e\xae\x88\x11\xd2\x35\xc3\xea\x4c\xac\x2e\x15\x91\xd3\x93\x5e\xe3\xbf\x83\xc5\xcb\x83\x58\x07\x40\xb2\xd3\x92\x38\x1c\x0f\x55\xf8\xec\x8f\xf5\x7a\x9f\xde\x05\x62\xf0\xbb\x6d\xd3\x1c\xc1\xc8\x3a\x73\xef\xc5\x4e\x00\xb5\xc5\xdd\x7e\xb4\xe5\x7f\x99\x3e\xdb\x13\x6f\x4b\x7f\xf6\xd9\x3e\xfb\x6c\x9f\x7d\xb6\xdd\xb1\xa3\xcf\xb6\xc3\x8c\x81\x5c\x71\xe5\x62\xfb\xd0\x8f\x1b\x7b\x63\xcd\xbb\x5d\x07\x86\x75\xf9\x42\x33\x4b\x54\xbb\xc6\xbe\xfa\x78\xf4\x75\x6d\x9d\xbd\xb2\xee\x87\x3a\x1d\x8e\xc7\x87\x87\xe8\x02\x8e\x53\xde\x3c\xc8\x46\x4f\x47\x7f\x20\x4c\x64\x32\x47\x84\x35\x73\xad\x95\x06\x61\xb2\xb5\xf7\xa5\xaf\xbe\x74\xb5\xd5\xbb\xa1\x55\x30\xcf\x14\x14\x89\xa6\xd0\xae\x92\xd9\xeb\x07\x08\x62\xad\xf8\xe5\xab\xae\xda\x0d\xf0\xb5\x6b\x63\x59\x1f\xc8\x61\x6d\xbf\x5f\xec\x86\x0d\x97\xcd\xf5\x1f\x26\x47\xf8\xe3\x38\xab\x9a\x38\xc3\xa4\x6b\xaa\x3d\x2e\x59\x29\xeb\xe5\x89\x07\x65\x40\xf4\x60\xdb\x27\x86\xab\x31\xb7\xc3\x48\x78\x59\x53\xd7\x4c\x40\x8f\xe0\x2f\x4d\xd6\x8b\x2e\x52\x47\x76\x12\xf5\xfc\xd9\xc6\x54\xbd\x68\xc7\x4a\xd6\x9f\xf7\x27\x83\x75\xdd\xaf\x31\xca\x46\xdb\x0e\x9b\xd7\x78\xe2\x9d\x20\xc0\xd3\x98\x58\x90\x05\xad\x55\xdc\x79\x90\xdd\xa4\xbb\x9c\x2f\xb8\x0a\xb7\xb4\xec\xbc\xb0\xd9\x5c\x0d\x4d\x05\x1a\x5d\x35\xda\xd2\xec\x98\x6a\x11\x9d\x99\xcf\x99\xaf\x4b\xec\xef\xcf\x8a\xa0\xfb\x32\x9c\xf6\xe6\xc6\x17\xd9\xce\xb9\x3f\x82\xcd\x9d\xfb\x23\xbe\xd5\xf3\xe6\xf7\x92\x90\x62\xe7\x2e\xeb\xab\xc3\x1d\xe5\xae\xf7\xab\x65\xcb\x6d\x41\x6c\xa7\x3c\xec\xf9\x5a\x80\x27\xf1\x82\x27\xa4\xfc\x5e\xda\x37\xfa\x99\x39\x9a\x95\x95\xac\x69\xbd\x24\xb9\xb5\x08\x06\x8a\xee\xaf\x15\x9f\xe9\x54\x9f\x79\x70\x95\x4d\x58\x55\xce\xeb\x3d\x64\xfd\x46\x97\x9f\x61\x39\x6f\xca\x34\x23\xfa\x77\x50\xe1\xda\x56\xcf\x76\x61\x35\x08\xc8\xb7\x35\xa0\xd9\x70\xc9\x74\xdc\x4c\xae\xda\x7d\x47\xb9\xa6\x5b\xf4\xf5\x60\xa5\x5b\x95\x91\xd7\xa3\x7c\x69\x42\xe6\xcc\x1c\x8c\x03\x86\x73\xeb\x45\xcf\xa2\x2b\x3a\xf2\x9e\x1d\x59\x40\xc7\x46\xa6\x7b\x0b\x6c\xfb\x49\xce\x9a\x24\x15\xc7\xe0\xff\xc5\xde\x18\xd9\x23\xb1\xac\xb4\x04\x65\xcf\xd6\x60\x9a\x92\x42\x66\x9d\x60\x29\xc7\x22\xc3\x36\x52\x88\xcf\xe1\x8a\xf8\x7b\xe6\x1c\x9a\xe6\x54\xcd\xdc\x50\x30\x02\x6b\x6c\xa1\x30\xee\x83\x67\x74\x12\x34\xad\x22\x6c\x14\x96\xfc\x49\xde\x42\x5d\xee\x4f\xbc\x6c\x4a\xd2\x28\x33\x53\x68\x2e\xd8\x79\x26\x08\xd5\x4f\xf4\xde\x35\xe2\x80\xca\x3e\x5c\x00\xd0\xbe\x8f\xc3\xfc\xe5\xc6\xed\x6f\xd8\x44\xee\xcd\x1e\x90\xba\xec\xb4\x37\xd5\x80\xac\x6e\x67\x69\xa5\x4d\x39\x25\x34\xd0\x25\x8d\x74\xe5\x1f\xe5\xfb\x3b\xac\xdd\x17\xc1\x8b\xee\x85\x89\xb8\x29\xb6\x50\xbd\x3f\x98\x46\xd8\x78\xbf\x35\xec\xde\x8c\xdc\x8d\x62\xf5\x68\xd6\xf0\x3c\x1d\xad\xbf\x58\x9e\x1f\xc5\xe9\xd3\xf8\x7b\x12\x57\xdf\x99\x97\xfb\x48\xc7\x68\x9e\x78\x70\xe9\x83\x23\x7b\x4c\xb1\x5b\x54\xbe\x0d\x94\x1c\x9c\xf7\x64\x49\xa8\x8b\xac\xf3\xc4\xc3\x86\x27\x1d\x9d\x15\xd5\xbc\x13\x25\x09\x78\xeb\x5a\xc1\x0c\x42\x35\x8c\x35\x5b\x66\xb6\x1c\x12\xef\x75\xc1\xc0\xe9\x21\xbe\x42\xb6\xd2\xc8\xfc\x4f\x4c\xcb\x41\xe7\x52\x9d\xb0\xa9\x6c\x5b\x0c\xa3\x0a\xac\x4e\xac\xdd\xab\x60\x1a\xd2\xad\xf0\xf2\x07\x5d\xe3\x10\xc6\x54\xca\x85\xb9\x3a\x7f\x13\xe4\x83\x6b\xe6\xc8\xa7\xaf\x08\x3d\xee\x5a\xab\x78\xb0\xc5\x33\x21\x82\xb1\x1c\x93\xbd\x8a\x76\x7e\x75\x23\xd4\x09\x99\x1c\xbb\x8d\x04\xda\x21\x8c\xf4\x5e\x38\x95\x24\xb0\x99\x77\x60\x41\xd2\x12\x0b\x45\xd5\xb2\x24\x4a\xd0\x4a\xcd\xa5\x06\x5b\x05\xad\x68\xc6\xf5\xd2\x3c\xab\x6b\x9a\xdd\x41\x3b\xf2\x40\x89\x28\x9c\xe9\x09\xc9\x8e\x6d\x3c\x79\xef\xe4\xb9\xea\xd0\x42\x3d\xaf\x65\x33\x9b\x43\xce\x54\xb8\x52\x71\x56\x50\xe5\x0e\x63\x23\x6c\xab\x01\x2b\x92\x2f\x05\x2d\x79\x16\xe3\xcc\x83\xd8\x48\xc5\xa5\xf5\x73\xe1\x7c\xa0\x77\xdf\xb5\xaf\xb9\x8e\x0e\xb6\xf3\x82\xf2\x92\x1c\x29\xc6\x88\xbf\x24\xf8\x97\x9b\xb0\x9a\x8b\x26\xce\x9a\x11\x5b\x3f\xcb\x7a\xe6\x5c\x85\x43\x5b\x5a\xc1\xfc\xd2\xf2\x97\x40\x16\xa0\xbb\x92\x46\xe8\xb2\x41\x75\x1b\xa7\x7c\xec\xd1\x6f\xe3\x9f\x07\xbf\x21\x6b\x08\x9c\x73\x1d\x51\x98\xc8\x65\x1b\xca\x43\xce\xae\xaf\xd0\x78\xbb\x70\xdd\x8f\xcc\xfd\xb3\xb5\xea\x83\xdb\x51\x48\x31\xc3\xb8\x60\x61\x59\x8e\xbb\xd9\x86\x01\x0a\xe8\x10\xbd\xe0\x79\x43\x0b\x64\x6d\x7f\x1b\x36\x64\x9b\x05\x9e\xdf\x5c\x21\x68\x3e\x9b\xeb\xd1\x3d\x03\x03\x2e\x4a\x2f\x6d\xd0\xb7\x9b\x2c\x0f\x3b\xe9\x3a\x01\x95\x5c\x01\x0b\xd5\xd6\x18\x88\xce\x00\xb3\xdc\x7b\xba\x84\x7a\xae\x78\x2b\x7b\x91\x45\xc3\x5b\x6b\xab\x8b\x23\x78\x8f\x1f\x1d\xe4\x80\x73\x3b\xf3\x1d\x77\x1b\xc5\xc0\x16\x3f\xac\x8c\x2c\x2b\xa4\x02\xeb\xeb\x35\x08\xd2\xe9\x23\xe0\x7f\x0e\x07\xfa\x28\x6a\xf0\xcc\x68\x33\x43\x0a\xfc\x9e\xb5\x90\x9f\x69\xf4\x1d\xdc\xc9\x5b\x56\x56\x05\xd5\x69\x81\x4c\x07\xdf\x75\x5c\x18\x1d\x87\xbe\x21\xae\x54\xe4\x23\x5a\x98\xab\x7c\xfd\xf1\x3c\xbc\x7a\xd9\x92\xc5\xde\x56\xb8\x2e\xf8\x5c\xf8\x46\x7f\x46\xbc\x4f\xa6\x86\x04\x5d\xa3\xac\x9c\xb0\x1c\xb8\x9a\x9d\x39\xd8\xa0\xee\x05\xab\xdd\xed\xb8\xfe\x78\x7e\x42\xf8\x98\x8d\xa3\xfc\xe9\xd7\x1f\xcf\x3d\x28\xc7\xae\xb5\x9c\x61\xe2\x8b\x4f\x70\x02\x62\x02\x4b\x19\x68\x34\xd6\x8e\x76\x26\x1e\xf6\xdf\xff\x68\x36\xc1\xbc\xfd\xa7\xd1\x1f\x2d\x19\x86\x7f\xfd\xdd\x48\x07\x11\x15\x14\xff\xbe\xf2\x56\x37\x73\xc2\xf7\xfe\xfc\xfb\xb5\xed\x1e\x67\x7b\xcb\xfd\x3d\x08\x16\x62\x4d\x08\x13\xda\xe8\xa2\xd7\x12\x62\x19\x79\x8e\x58\x0f\x73\xaf\xd9\x3f\x9c\xfb\x09\x8e\x31\x6c\xe0\xb3\xcc\x29\xa3\x9a\x09\x90\x90\x6c\x7a\x3e\x78\x08\x00\x3c\x90\x2e\x0a\xfb\x73\x14\x73\xb5\x6c\xbd\x96\x13\xa2\xa5\x04\x1e\x80\xfc\xe9\x4c\x10\xf6\x89\x2b\x28\xdc\x84\x7b\x0d\xc7\x45\x75\xdc\x29\x39\xc1\xd4\x4c\xcb\x60\x90\x2f\xf0\x65\xd6\x09\x6b\xff\x95\x90\xfa\x57\xfe\x7a\xc4\x12\x01\x90\x2a\x25\xa1\x0b\xc9\x5d\xeb\x43\x43\x8a\x05\x78\x56\xda\x06\x7b\x93\x25\x29\xb9\xd2\xf4\x2e\x22\x6d\xfb\xc6\x08\x95\xdd\xa8\x1a\x3c\x7d\x41\xa0\x8d\x0a\xcb\x49\x23\x34\x2f\xe0\xaf\xfe\x3b\x51\xa8\xdf\x15\x38\xaf\xa6\x44\x35\x99\x91\xac\xaa\x9a\x8d\x9c\x78\x6b\x9f\x02\x46\x16\x43\x05\xdc\x6e\xb5\x7b\x79\xe2\x2f\xc3\x9c\xa2\xfd\xa5\xca\x01\x74\x94\x5f\x94\x0a\x7b\xbd\x57\xeb\x6c\xc2\x3e\x48\x91\xb5\xa2\x2d\x20\x43\x44\xcd\xae\x77\x20\xed\x16\x2e\xdc\x0e\x4d\x4d\x36\xcd\x52\xb0\x8c\x29\x45\xeb\xe5\x09\xb4\xc3\xe4\x9a\x94\xc1\x58\x2c\x62\x17\x3d\x6d\x0a\x14\xf5\x4b\x2a\xa0\xe9\x24\xa9\x59\x26\x85\xd2\x75\x93\xc1\xe9\x51\x32\xa9\xe5\x1d\x13\xb1\xc9\x43\xc4\x60\x79\x3f\x63\xa2\xe5\x50\x10\xdf\x23\x49\x36\xa7\x62\xc6\x54\x74\x55\x8d\x92\xe6\x80\x7b\xdf\x78\xf5\xd0\xed\xa7\x39\x21\x3a\x35\x9a\x17\xd7\x70\x54\x13\x23\x53\x3a\x17\x66\xcc\x54\x9d\xe5\xf6\xa4\xf5\x08\x9a\x2d\xe5\xc5\xa0\x10\x40\xd2\x1c\x4b\xb1\x2e\xa5\x11\x28\x0d\x21\xfb\x41\x82\x0b\xa9\x64\x9a\xe6\x54\xd3\xe4\x7c\x8a\xb7\xd4\x77\xc4\xb4\x21\x5a\x70\x78\x9d\xd0\xad\x38\xe7\x1b\x88\x8e\x96\x9f\x64\xb2\xe2\xdd\xfa\x22\x40\xff\xe6\xee\xbc\x62\xad\xfe\x5c\x8f\xc9\x3b\x69\x43\x00\x30\x95\x02\x3c\x84\xb4\x28\xe4\x3d\xcb\x61\x9a\xee\x8b\xc8\x08\x22\xe8\x0a\xac\xbf\x01\xed\xb0\x65\x26\x31\xe1\x3a\x49\xde\x45\x73\xb8\xc9\x27\x71\xdb\x46\x13\x65\x6d\x20\x3f\xec\xdf\x26\x3d\x27\x2e\xc6\xc8\x00\x65\x42\xf3\x9a\x75\x8b\xca\xd8\x03\x6a\x04\x5e\xd0\xf6\xa8\xa2\x60\x9a\xe3\x84\xf3\x9e\x31\xad\xda\xe8\x6d\xe4\xf3\x86\xf8\x5b\x69\x0f\xe4\xab\x28\x88\x20\x90\xbb\x23\xb6\xe6\xbf\xcd\xea\x6a\x48\x59\x77\x03\xec\xaf\xc8\xcf\x8d\x04\xb3\xf7\x13\x4e\x77\xf0\x62\x1b\xda\xb7\x32\x8f\xf7\x08\xaf\x74\x72\x6d\x01\xb4\x09\x61\x98\x74\xa8\xa2\xec\xd7\xfd\x99\x40\x54\x8d\xea\x9a\x6d\x2c\xb3\x99\xd3\x85\x75\xf3\x44\x43\x4c\x77\x11\xb4\x8a\xdb\xc8\xf7\x5f\x83\x69\x8d\x60\x5a\xa3\x97\xb1\xce\xb4\xf8\xa8\x64\x3f\xd9\xb8\xe8\xe4\xfe\x07\x12\xbc\x95\x86\x0c\xdf\x24\x39\x19\x57\x9b\x60\x7a\x9e\x6a\xa3\xa0\x7c\xa4\x5e\x64\x4b\x49\x37\x18\x37\xb4\xf3\x15\xf9\x55\x4f\x1a\xb5\x5a\x8d\x37\x8b\xc5\x07\x4c\x98\x71\xe4\xec\x69\x63\x7b\x94\xae\x4e\xe1\x0a\xd8\x51\x34\xc4\xaf\x99\xa6\xc7\x2b\x73\x04\xe9\x7b\xb3\xf5\x27\x1a\x6e\x1f\x62\xd6\x28\x2d\x4b\xef\xb5\x3d\xb5\x99\x95\x51\x59\xdc\x6e\x70\x23\xe8\x97\x98\x5e\x44\x35\x75\x09\x42\x86\x54\xa3\x01\xf8\x98\x5c\x09\x22\xeb\x3c\xc1\x1d\x6e\x33\x73\x36\x1e\x0a\x5a\x3f\x50\x44\xa5\x95\x21\x38\x35\xa7\x3a\xfe\x5a\x5a\x2b\x2a\x99\x19\xb5\xd9\x85\x68\x32\x41\x27\x05\xcb\xc9\x51\xff\x93\x17\x1e\x6b\xa3\xc1\xcb\x9a\x9c\x89\x25\x82\x69\x5f\x3f\xb6\x29\xae\xad\xca\x9d\xb0\x1b\x46\xf5\x6a\x6b\x14\x00\x99\xab\x65\x51\xb0\x1a\xae\x82\xb5\x87\x26\xc4\xa2\x77\x1d\x55\x70\x64\x78\xfa\x27\xce\x8e\xde\xda\x14\x04\xbb\x8f\x86\xe9\x94\x24\xaa\xb0\x28\xb6\x8b\xcc\x02\xcc\x70\x81\xd6\xee\xbb\xf1\x81\x06\xed\xfc\x5c\x9a\xf0\xe6\xd9\xc7\xe3\x2b\xea\x8f\x3e\x90\xaa\x17\x52\xda\xad\xd8\x16\x9b\x14\xe6\x86\x73\xf7\x4d\x29\x2f\x1a\x57\xb9\x18\xc4\x30\x9b\x74\x48\xa1\xaf\x15\xb4\x2a\x8e\x8f\x85\xbe\x72\xad\x43\x0c\xd2\x9e\x40\xb7\xe3\x82\x0a\x20\x7c\xf6\xe0\xc1\xa2\x18\xd5\x38\xcd\x0d\x17\xa3\x01\x66\x44\x37\xed\x09\x9b\xd3\x05\x97\xde\x2a\xb3\x0b\xa6\x96\x46\x6e\x06\xe9\x29\x32\x3c\x6d\x87\x00\xb5\xd4\x10\x35\xa8\x75\xc6\x23\x12\xd1\xdc\xc3\x51\xa6\x08\x1c\xe9\xf1\x6c\x90\xbc\x00\xd1\xbd\xf1\x6f\xac\x36\x4c\xbb\xbe\x02\x00\xce\xa0\x34\x83\x7f\xc4\xd6\xc9\xe8\x0e\x1f\xad\x33\x61\x86\x1b\xb4\xb5\x1f\xe1\xaa\xb9\xef\x24\x81\x74\xb7\xab\x1f\xb0\xdd\xde\xd8\x6f\xa0\x21\x5b\x7c\x10\x2c\x0e\x0c\xcf\x46\x8a\x52\x33\x48\x2a\x80\x55\x8f\xa1\xd5\x34\x15\xcb\xc8\xea\xa2\xdd\xa1\xe7\xbc\xce\x47\x15\xad\xf5\xd2\xb1\x94\xee\xce\xfa\xe2\x04\x09\x40\x77\x8a\xe1\x8a\xe9\xf6\xd8\x1d\x3d\x5c\x80\xed\xb4\x78\xe0\x02\x73\x92\x22\x32\xdd\x58\xc5\x80\xc7\x5e\x75\x6c\x99\x03\x37\xfa\xb5\x3a\xac\x79\xb2\x5b\x88\xe6\x8b\x5f\xb5\x8f\x97\xdc\x4d\x00\x7e\xef\xc3\x95\x3b\x2e\xfb\x4e\xe0\x4a\xf4\xd4\xdb\xb8\xe7\x21\x2d\x07\xb5\x97\x68\xa0\x0f\xd4\x72\xfc\x9c\x1e\x91\x6b\xec\x42\xab\x31\x56\x67\x67\x3c\x3d\x7c\x83\xb1\x3e\xf8\xe3\xc4\x6e\xb9\x0d\x5f\x4a\x42\xd4\x36\x4c\x2b\x93\x65\xd5\x68\xd6\x39\x46\x6b\xfa\x49\xd4\x4e\x49\x92\x86\xda\x73\xae\x9d\x62\xcb\xd5\x91\x9d\xca\xc8\x4f\x65\xe4\xa3\x95\x82\xed\xcc\xba\x63\x87\xc3\x24\x3b\x97\x5c\xe8\x8e\x2f\x36\x16\x69\x65\xa1\x69\x31\xc8\xe4\x01\x71\xc8\x64\xf7\x58\x64\xb2\xbf\x78\x64\xe2\x73\x25\x76\xbf\x7a\xef\x5d\x26\xc7\xca\xe5\x4b\xa4\x96\x24\x70\xf9\x76\x11\x13\x88\x91\xae\xfc\xfc\xb8\x22\xb2\xe4\x5a\x33\xe7\x64\xf3\x97\x28\x36\xf1\x04\x07\xd7\xbd\x38\x7c\x4b\x7a\x20\xfe\x01\xbd\x66\xec\x93\xeb\x56\x93\x04\xb7\x23\xca\x81\x90\x75\xcf\x15\x38\x74\xa8\x68\x55\x7f\x20\x0b\xa3\xb8\x9a\x81\xfd\x61\xab\x78\x27\xc6\xd4\x3e\x93\xa3\x67\x72\x14\x31\xf6\x42\x8e\x30\x8d\x21\x3e\xf7\xa6\xaf\xab\xa1\xfb\x88\xfc\xd8\xb0\x7a\x49\xe4\x82\x75\xc2\xa8\xa0\xd7\x8e\xe2\x29\x76\x31\x43\x20\x26\x5c\xe4\x5c\xcc\x62\x09\xce\x13\x49\x4a\x25\xd5\xd9\xfc\xf2\x93\x91\x4c\x21\x15\x7a\x67\xc2\xbd\x0a\xa8\xad\xe2\x91\x74\xf4\x72\x6a\x77\xde\x1d\x9f\xa3\xd4\x60\xa9\x1c\xdb\xf2\xbf\xed\x2f\x69\x37\xc0\xe8\xa0\xef\x2e\x76\x51\x0e\x53\x6c\xf2\x24\xdd\x2e\x4f\xb6\x21\xe0\xa6\x6d\x48\x82\x4a\xf0\x20\x3c\x9c\x7e\x8b\xec\xd8\xfe\x26\xfd\x01\x7d\x10\x4e\xac\x6b\xd5\x36\x68\x73\xa0\x31\x26\x22\xed\x5c\xfa\xfd\x22\xe2\x6a\x7c\xad\xbc\xbf\x1b\xed\x4f\xb7\x49\xe1\x88\xab\xc2\xdf\x7f\xc3\x6d\x53\x1a\x6b\xd9\x91\x25\x25\x54\xeb\xef\x8e\x1e\x0a\x62\xaf\x0b\x8c\xfe\x04\x5c\x4c\x5d\x33\x0e\x9f\xb5\xe0\x51\x10\x32\x49\x80\x92\xa6\x1d\x32\xd9\xd5\x68\x81\xc3\x1d\xc0\x03\xb7\xc5\xa3\x7b\x37\x04\x7f\x87\x7d\xb9\x63\xcb\x43\x65\x93\xc0\xa5\x50\x73\x5e\xb9\xa6\x70\x20\xb2\xee\x72\x0b\x70\x7c\x04\x47\xb1\x9b\x26\x86\x19\x5c\x89\x13\xf2\x4e\x6a\xf3\x7f\x97\x10\xbb\xb3\x03\x5c\x73\x37\x2f\x24\x53\xef\xa4\x06\x18\x4f\x7a\x78\xb8\x1d\x0f\x3c\x3a\x5b\xd1\x82\x83\x3d\x1f\xe3\xf1\x92\xd2\x68\xdd\xb0\x55\xd8\xed\x11\x39\xf7\x86\x47\x8c\x88\x06\x31\xeb\x03\x7c\x6d\xee\x8c\x7c\x9f\x1c\x65\xa7\x99\x6c\x79\xc5\x31\x61\x44\x48\x31\xc2\xe6\xc6\xfb\x99\x27\xa2\x8f\x99\x6b\x17\x17\xba\x53\xde\x05\xb5\xfc\x22\x7d\xd5\x59\x5b\xe6\x23\x95\xef\xba\x01\x96\xe0\xaa\xa0\x19\xcb\x5d\x88\x0c\xf4\x7e\xa1\x9a\xcd\x78\x46\x4a\x56\x07\xf2\x19\x36\x8f\xca\x48\x39\xbb\x22\xfe\x6e\x6b\xd9\x41\x92\xe8\x7e\x34\xf1\xb6\x81\x18\xf7\x06\x42\xa7\x1e\x26\x0a\x22\x0c\x14\x3e\x4a\x5a\x19\x92\xf6\xdf\x46\x6a\x00\x1c\xf9\x9f\x44\xfd\x8a\xd7\x6a\x4c\xce\x88\xe2\x62\x56\xb0\x2e\x1c\xe7\x5e\xe8\x7c\x32\x09\xb4\x99\x99\x51\xb1\x7f\x6c\xf8\x82\x16\x0c\x33\x08\xa8\xf0\x2d\x1b\xe4\x74\x4d\xb0\x4d\x13\x96\xb0\x6d\x96\x61\xa5\x3e\xb0\xf0\xe0\x8e\x2d\x0f\x4e\x7a\x57\x31\xd5\x55\x73\x70\x25\x0e\xda\x2a\x33\x3d\x4a\xe1\x44\xbb\x34\xa9\x5b\x14\x4b\x72\x00\x70\x0e\xd6\x65\xec\x87\xc8\xcd\x9f\x41\x1d\x4f\xc6\x7b\x6b\xe0\x3e\x2f\xa8\x52\x29\xe5\x2a\xb6\x97\x72\xbe\xe9\x40\x8c\x4f\xc9\x75\xc3\x06\xf4\x66\x10\x18\xb7\x6b\xda\xf2\x06\x6b\x3d\xa4\x68\xa5\x06\x23\x25\xec\xe3\xc2\xf6\xf3\x8d\xad\xea\xb5\xca\x9d\xfd\xeb\x3e\x4b\xf0\xbe\x93\xb8\x9e\x1a\xd0\xd0\xf1\x05\xae\xec\xe8\x47\x48\x15\x4e\x80\xd8\x29\xff\xcf\x15\x58\xcf\xb8\xcb\x35\x14\x52\x13\x2e\xb2\xa2\xc9\x21\xf0\x30\x1a\x24\x4c\x05\x6c\x74\x69\x06\x81\xe4\xe3\xd8\x19\xa1\x3f\xfa\xd7\x9d\x16\x60\x2d\x18\xad\xdf\x2d\x25\x2e\x68\x53\xe8\x27\x54\x1d\xc0\x60\x7b\xae\xec\xe9\xec\x73\x37\xa6\x83\x71\xab\xfd\x0e\x0f\xe7\xfd\x94\xda\xd7\x7c\x52\x33\x72\x3e\xa7\x42\xb0\xa2\x53\x1e\x23\x14\x61\x65\xf8\x9d\xed\x44\x8f\xe2\xbc\xed\x31\x7f\xd8\x6f\x32\xef\x68\xb7\x70\x65\x59\x06\x81\xb6\x61\xf8\x7b\xe8\x58\xf2\xaf\xdb\x15\xde\x77\xe2\x08\x02\x4e\xec\x07\x1f\x93\x8b\xd3\xeb\x07\x8f\x25\xf4\xe7\xf2\x9e\xe4\x12\x42\x7f\x6a\x88\x1e\xc2\x86\x8d\xca\x0a\x2d\x41\x90\x9d\xbe\x1b\x10\x8f\x9c\xc9\xb2\xaa\x65\xc9\x95\xcb\x4f\xb1\xc8\xb4\xb7\x8a\x14\x45\x13\x2c\xcc\xb9\xad\x12\xe3\xeb\x73\xa2\x69\x3d\x63\xda\x00\x21\xa2\x29\x27\x2c\xb2\x52\xc6\xbe\xab\x0e\xff\xb4\xdb\xe0\xef\xaf\x53\x3d\x1e\xc7\x77\xdf\xbd\x4b\x2b\xc1\xbc\xf1\x4c\xef\x65\x5d\xe4\xf7\x3c\xc7\xb0\x0d\x45\x8e\x0c\xd8\xe3\xb8\xb9\xee\xb1\xc6\x72\x34\x22\xdf\xdf\xf3\xfc\x21\xcb\x76\x51\x85\x66\xd9\x04\xd6\x6d\x5b\xa3\x73\x56\x87\x25\xeb\x23\xf8\xfc\x31\xb9\xe4\x98\xdb\x68\xfe\x85\xc5\x05\xcb\x09\x17\x36\xb5\x7c\xda\x39\xa0\x20\x44\xc3\x2d\xcc\xbd\x72\x1a\xb2\x62\x1a\xb3\xa6\x20\xe4\x51\xea\x39\x51\xbc\x6c\x0a\x4d\x05\x93\x8d\x2a\x96\x91\x68\xf4\xd4\x47\x33\x2d\xd8\x27\xc4\xf6\x78\xbe\xec\x5f\xe9\xf3\xe7\x19\x13\xac\xf6\x45\x04\xe2\xa2\x88\x9c\x43\xb5\x8d\x90\xcc\x4f\x3d\xb3\xf6\xe9\x83\xec\x13\xcb\x6c\x34\x6c\x55\x34\x33\x3e\x98\x50\xf3\x33\xe8\x12\xd6\xf6\x2c\x8a\xa9\xe6\xe4\xcb\x0a\xc5\xf5\xc9\xfd\x3c\x4d\xbb\xbe\x68\x61\xe4\x76\x73\xe7\xad\x9c\x55\x4c\xe4\x50\xaa\xb8\xbd\x13\x41\xd8\xb8\x1d\x7b\x3b\x05\x5b\x2e\x77\x57\xca\x7a\xf9\x49\xd7\xd4\x90\xc1\xd2\x10\x34\x57\x7b\x97\x4f\x09\x15\xb1\x24\xeb\x73\x37\x75\x21\xcf\x12\x86\x1f\x6a\xa7\x86\x6d\x9d\x8d\xe8\x35\x6c\x5b\xcd\x3a\x0e\xe3\x76\x52\xbb\xb6\x98\x26\x70\xdd\x76\x6d\x48\xfb\xed\x05\x72\xed\xd4\xd6\xdb\xa2\x25\xce\xb2\x5b\x60\xa7\xcd\x8b\xd8\xd8\x1e\x2d\x08\x39\xd4\x3e\x4d\xad\x77\x67\x0a\xef\x40\x7f\xd5\x7b\xbc\x93\xcf\xbd\xd4\xbe\xcc\x5e\x6a\x53\xa8\x6b\x10\x5f\x97\xf3\x35\x3e\xbf\x62\x2d\xb1\x3f\x5a\x69\xcc\x09\x55\x21\xa3\xc6\x36\xeb\x88\xbd\x6d\x1d\x96\x07\x2d\x1e\xf0\x23\x83\x40\x6d\x8e\x15\x51\xe6\x14\xdb\x04\x89\x46\x88\x61\xa2\xbe\xef\x76\x57\x54\x53\xc5\x74\x8c\xed\x6d\x3d\x40\xde\xc9\x5d\x08\x03\x3b\xb5\x41\x12\x92\x4b\x8b\x0f\x1e\xfd\xe8\x4f\x56\x82\x13\x3d\x48\x46\x36\x73\x27\xe5\xca\x7e\x32\x1f\xcc\x14\x61\xa0\xa6\x70\x26\x35\xcb\x22\xf2\xab\xa2\xb9\xa9\x9d\xdd\x87\x0f\x57\x17\x49\x7b\x65\x5e\x58\xd9\x2b\x8b\x37\x50\x18\x91\xff\xd8\x74\xb5\xb6\xe0\xda\xe4\xb4\x83\xc7\x16\xde\x3e\x96\x38\xcb\x58\x6b\xf6\xbc\xe0\xea\x2e\xbe\x02\xee\x5f\xce\x2f\xfb\xaf\xf6\x2f\xdd\x5f\xce\x2f\x89\xfd\x35\x41\xf9\xd9\x6c\x9d\xdc\x66\x9e\x1c\x04\xe9\x2a\x4a\x77\xcc\x93\x0f\x2d\xb2\x3a\xcb\x58\xeb\xb8\xc8\xb9\xba\xdb\x43\x65\xdd\x38\xe5\xab\xca\xdf\x0d\xe7\x8f\x3d\xa5\xdd\xd4\x95\x74\xeb\xd4\x75\x5c\xca\x26\x88\xc3\xf7\xb6\x04\x9a\x55\x73\x6e\x79\xf5\x8a\x5c\x0a\xd5\xd4\xac\x8d\xc2\x99\xf6\x3f\x15\x84\x69\x24\x96\x68\xa5\x07\x8a\x07\x45\x30\xf8\x7e\xc7\xe4\x68\x3b\x6c\x78\xb2\xd3\xbe\x1d\x76\xdf\xd8\x18\x9c\x40\x94\xe1\x77\xd5\xb0\x1b\x84\xfa\xe8\x86\xdf\x8a\xd6\x1a\x34\xa6\xc4\x52\xc4\xd0\x81\xcf\xbe\xea\x16\xb7\x82\xb4\x80\x94\x61\xdd\xcb\x23\xed\xd5\xd4\x85\xd5\x9f\x10\xdd\xaf\x97\xeb\x1e\x32\x68\x18\xd9\x09\xce\xb0\xc1\x0e\x62\x42\xda\xa1\x9d\xe0\x69\xce\x16\xa7\x2a\xa7\x2f\x4f\x60\x9a\xb1\xe5\x08\x74\x6f\xcd\x54\x91\x83\x97\x07\x63\x72\xc3\x4b\x5e\xd0\xba\x58\xf6\xb2\x92\xfd\x73\x51\x66\x13\x37\x21\x70\xf0\xbf\x38\x20\x47\xb2\x86\x99\x65\x54\x90\x82\xd1\x05\x73\xe9\xbd\x86\x0c\x85\x27\x0a\x4a\xca\xf1\xd3\x52\x64\xf2\x68\x56\x7d\x24\xcf\x69\xe8\xf9\x01\x85\x80\xae\x31\xeb\xfa\xa2\xf5\xe5\x71\x61\x58\x68\x58\xdd\xfe\x60\x79\x9c\x15\x26\x90\x04\x9a\x9d\x70\x10\x3e\xd3\x16\x3f\x9a\xa5\x22\xca\xbe\x10\xa1\xf8\x6e\xb6\x3f\xac\x9b\x3f\x92\x32\x17\x9f\x70\x83\x43\x36\x90\x19\xd7\xef\x59\x35\x38\xe7\x15\x81\x0e\x5f\x58\xb1\x64\x73\x0d\xa5\x06\x14\xd7\xb2\x5e\x12\xaa\x09\x45\xc2\x91\x35\x05\x1d\xbe\x40\x35\x43\x3b\xf6\x98\x5c\x5c\x5e\xbf\xbf\x3c\x3f\xbb\xbd\xbc\x78\x45\xdc\x57\x78\x57\x5a\x1f\x93\xdb\x4e\xdd\xc8\x41\xa8\x9d\x4c\x26\x2c\xf4\xd7\xce\xf1\xc4\x12\x60\x2a\xda\x6a\xec\x50\x6d\x29\x60\x29\xba\x12\x5c\xb7\xcd\x5c\x30\x04\xbd\x90\xc2\xe6\x76\x19\xc8\xd6\xfe\x3e\xe3\x18\x4a\x28\xf0\x43\x01\x89\x96\xad\xcc\x02\x6e\x38\xb6\x78\xf0\x4b\x18\xb4\x61\xec\x55\x82\x6c\x0f\x71\x1f\x1a\xa4\xeb\xb2\x90\x74\x75\x6f\xd1\x5d\xe7\x5f\xb6\xfc\xcf\xf5\xc4\x72\xbb\x12\x56\x86\xea\x5e\x83\xa9\xf1\xf8\x70\x0c\xc9\x6f\x87\xe3\x43\x27\x10\x16\x2b\x5d\xdd\x82\x30\xdb\x49\x75\x0b\x8a\xf6\xb1\x7f\x4c\xc8\xb7\x2e\x57\x2d\x6c\x0b\xe1\xd3\x2d\x0d\xe6\xb0\x18\x4a\xa7\x95\x57\xff\x2b\x61\xc0\xc2\xd6\xff\x9f\x74\x27\x6d\x2b\x94\xce\xf8\x82\x09\xdc\xd8\xfd\x91\x69\x37\xb5\xa4\xd3\x7e\xdf\x52\x8d\x0f\xef\xdf\xec\x6f\x32\x48\x23\x92\xa6\x72\x2e\xcb\x12\x6b\x19\xce\x7d\xa1\xb7\xb6\x78\x84\xa7\x53\x7b\x51\xa8\xb1\xa2\xe3\x74\xf0\x02\xad\xd0\x5d\xf7\xca\x8a\x02\xed\x7f\xb6\x89\xa2\x01\x87\xba\xd3\x7c\xd2\x7b\xca\xd8\xb2\xaa\xca\x95\x97\xb2\x8c\xe9\xd4\xaf\xe5\xf4\xfd\xe5\xd9\xc5\xdb\xcb\x71\x99\x3f\x19\xb9\x62\x22\xaf\x24\x1f\x4e\xa1\x0a\x76\xf5\x8d\x25\x67\xfe\x63\x69\x92\xc8\xa5\x7b\xad\x1b\x86\xe6\x60\xa1\x60\x17\x55\xf3\x2a\x67\x9a\xf2\x42\x75\x4e\x5c\xcb\x4a\x16\x72\xb6\xb9\x2d\x4c\xc2\x71\xfd\x02\xab\x0d\x8d\xe8\xc8\xe0\xc1\xfe\xf4\xb1\x70\x9f\xc5\xfe\x4e\xb9\xbe\x8a\x66\x83\xda\x55\x7a\x3d\x04\x5a\x18\xc6\x94\x19\xf8\xc2\x36\xe2\x11\x04\x58\xbf\x3b\xc1\xbd\x70\x9a\x2c\x58\x20\x80\x44\xd8\x52\xba\x9d\xda\xb0\x9d\x2e\xb2\xad\x64\x1b\xa3\xee\xae\x49\xbe\x4f\xb4\xe9\x21\xa1\xd6\x50\xb8\x50\x3b\xe2\xfe\x6e\xff\xd5\xbe\xd1\x27\xae\x55\xcd\x46\xbe\x5e\x1d\x34\xea\x0c\x84\xb9\xb7\xac\xd6\x9a\xad\x7b\x06\x49\x67\xbe\xc4\xa7\x8a\x65\x4a\xdc\x64\x2b\x0b\x7a\xfb\x30\x84\x8f\x40\xe1\x60\x57\x70\xda\x5a\xb1\x08\x9d\x05\xd3\x4a\x65\x6d\xbd\x39\x55\xcd\x17\xbc\x60\x33\xe8\x36\xc0\xc5\xcc\xf5\x91\xed\xd4\x75\x85\x7e\x6a\x2c\xe8\x7b\xeb\x7b\x3f\xde\x9a\x7f\x75\x3a\x08\x01\x06\xbf\xfb\xf6\x16\xba\x77\x40\x78\x45\xc4\x6d\xde\x5d\x1f\x35\x93\x09\x76\x73\x1f\x8d\x46\x60\xed\x3a\xfa\x87\x91\xe3\xf3\xe2\x98\x7c\xc7\xec\xfc\x24\x74\x2d\xa9\xa1\x21\xef\x5c\xfa\xf6\x08\x06\x6c\x24\x06\xc0\x65\xc3\x12\x67\x16\xc2\xa9\x81\x62\x44\x58\x64\xd5\xb0\x5f\xee\x79\x1e\x70\xc6\x51\x2c\xe6\x8c\xfe\xf5\xa7\xd3\x07\xf6\xc4\x3a\x77\xe4\x05\xce\x33\xb2\xe9\x56\x8d\xc9\x55\x5c\x71\xf9\xca\x72\x15\x4a\xd4\xb2\x2c\xb8\xb8\x6b\x6b\x0d\x4e\xa5\xc1\x70\xdb\x1b\x44\xdc\xc5\xb8\xd7\x51\xd7\xa3\x45\x87\x1f\xed\x01\x4b\xf7\xc6\x6b\x74\xb2\xd9\xfe\x76\x59\x31\xa0\x1d\x9e\x04\xda\x50\xb5\xae\x89\xe3\x20\x6c\xb6\xfe\x92\x76\x82\xab\x4c\xf1\x78\xe2\x7f\x75\x73\x7e\x73\xd5\xa3\xfc\x82\xe0\x6f\x3d\xd7\xd4\x03\x02\xe7\xf7\x15\x39\x9f\xc2\x6a\x61\x13\x3e\x83\x4c\xce\x7f\x1c\x52\x41\x46\xa4\x68\x86\xff\x8e\x21\xa5\xd7\xb2\xd6\x83\x3d\xe0\x63\x49\x4f\x36\xa7\xd5\x59\xa3\xe7\x17\x5c\x65\x72\xc1\x12\xd5\xd3\xfb\x39\xf6\xf6\x70\xf5\x2e\xb9\x43\x0b\x84\x45\xce\xff\x7a\x76\x4d\x68\x63\xce\x52\xdb\x22\xe1\x7b\x91\x60\xba\x33\xbf\xc1\xa4\xbd\x3d\xcc\xdb\x42\x7a\xd4\x59\x3f\xbb\x0e\xff\x65\x5c\x87\x40\x41\xfe\x55\xdd\x85\x5c\x70\xcd\xa9\x96\x51\xcd\xbd\xfb\x76\x22\x2c\x5c\x8d\x57\xea\xca\x81\x81\xb8\x17\x70\xfd\xf5\x20\x47\x21\x98\x37\x32\x81\x62\x06\xdb\x7e\x25\x8c\x9a\x44\x33\xb6\x12\x15\x7f\x12\x55\x17\x19\xe7\xc6\x3d\x8c\x3f\xda\x1c\x88\x0a\xa8\xea\x9f\x5e\xf5\xba\x03\x85\xfb\x17\x92\x7e\x0f\x43\x67\x1c\x6b\x7b\xca\xed\xcd\x8a\xc8\x7f\x4c\xa3\x73\xd6\x58\x8c\xeb\xfd\xbf\x0d\x2d\x70\x1f\xdf\xed\xd3\xb2\xd9\x3f\x8f\xa4\xe9\x39\x1c\x71\xe7\xf0\xce\x59\x7b\x8c\x32\x01\x72\x06\x3c\x11\x96\x3a\x6b\x2a\x94\x39\xbc\xbe\xe7\xe9\xd0\x3a\x96\x0f\xc9\x91\xce\xaa\xc8\x4e\x61\x8f\x90\x43\x85\xcb\xb4\x67\xf1\xc6\xe7\x4e\xc5\xcd\x67\xef\x5e\x56\xc0\xf1\x34\x23\x5d\x6f\x01\x28\x7a\x90\x37\x5c\x69\xd7\x90\x0c\x7e\x88\x28\x35\x81\xf5\xfd\x41\x7e\xbc\x36\x2a\x36\xaf\xfe\x93\xe6\x79\xfd\x0a\x79\xb0\xad\x6d\x0d\xff\xad\x22\xab\x06\x43\x6c\xac\x8b\x1f\x38\xd2\xcb\x8a\x67\xa0\xf2\xdf\x9e\x5f\x13\x6c\x45\xf9\x87\xdf\xbd\x00\x79\xf2\xdf\x7e\xf3\xbb\x17\x91\x28\xf0\x39\xd2\x99\x76\xb2\x82\x25\x45\x89\xc7\xb8\x44\x42\x5e\xdc\xbd\x89\x41\xbb\xc5\x95\x83\x60\x86\x11\xe5\x40\x65\x11\x2f\x2d\xf1\x36\x87\xec\x79\x4b\x70\xb1\x3b\x88\x77\xcf\x31\xd0\x5b\xc7\x97\x1f\x03\x4d\x7c\xba\x24\xd2\xaf\x87\xd2\x3f\x24\x7d\xd7\x8e\xf4\x59\xd2\x16\x46\xbb\x68\xd2\xd7\x23\x6d\x41\xb8\xfb\x22\x7d\x81\x5d\x0c\x61\x6c\x1f\x53\x91\x9a\x18\xed\xbe\xe3\xa3\x86\x9c\xac\x8b\x77\x37\xff\xf9\xe6\xec\xeb\xcb\x37\x30\x3f\x8c\xe4\x1d\x9c\x9f\x41\x4f\x2b\x2a\xef\x12\x83\x1a\x8f\xee\x61\x3b\x40\x68\x8b\x52\xbc\x96\xef\x5e\xdf\xac\x18\x56\xcc\x2f\xce\x55\xd9\x77\x47\x0e\xd3\xd3\x2d\xae\xca\x87\xea\x38\x62\x1a\xb1\x23\x4f\x63\x4c\x1d\x41\xc4\xff\x5e\x92\x27\x77\xb4\xb7\x76\xaa\xf5\xf6\x14\x5e\x73\x66\x38\xb7\x70\xa4\xd9\xe3\x9e\x07\xf9\xcc\x8e\x37\xb3\x13\xb8\x3b\x31\xfe\xb1\x27\x75\xb9\x3d\xca\x2e\xc7\x89\x3a\x75\x6a\xa6\xee\xe1\x0d\xbc\xe3\x9c\xbd\x86\x04\x60\x84\x63\x6d\xb8\x87\xe1\x1b\x4c\xa9\x98\xea\x36\x2b\xd8\xf9\xa5\x60\x5f\xb5\xa9\x51\x56\x3c\xd5\xdc\xd8\x67\xab\xdb\xfb\xb8\x43\x53\x87\xbd\x46\xfd\x8c\xc4\x6d\x3d\xfc\x5c\xac\x10\xb5\x26\x01\x55\xd1\x2c\x20\x0b\xef\xaf\xa2\x53\xfb\x13\xfe\x02\x25\x74\x9e\x8e\x28\xc3\xe7\xf6\x94\x36\xe1\x61\xa5\x5d\x86\x73\xf7\xda\x6a\xea\xfa\x96\xf3\x8a\x51\x74\xd6\xcf\x93\x50\xe5\x7b\xdf\x36\xca\x57\x2c\x8a\xcb\x71\xff\xbc\x07\x4e\x1e\x9d\xea\x7f\x97\x98\x80\x1c\xdc\xae\x0b\x97\xfd\xbe\x3f\xb5\xb2\x9a\x4b\x2d\xc5\x8e\x89\x58\xd7\x1b\x5e\xee\x07\x3b\xe0\x13\xe7\xbe\xc1\xdb\xb0\x80\xd1\xb6\xf9\x87\x28\x72\xef\xf6\x32\xe2\xae\xe3\x79\x52\x38\x07\x98\x0a\x3b\xce\xad\x7d\xf7\xc9\x64\xb1\xfc\xea\x62\x0f\x37\xfe\xe7\x53\xd2\x61\xdf\xf5\xa5\xf6\x75\xdd\xcd\x41\x26\xed\xff\xd5\x85\x95\x73\x5d\x5e\xa5\xb2\xa8\x4f\x5a\xdc\xef\xe0\x77\x70\x51\x11\x39\x55\x71\x32\x83\xac\xf5\xbd\xac\x53\x8b\xcb\x5c\xf7\x5e\x5b\x89\x5f\xb2\x7f\x8b\x09\x6f\x8e\xba\xc1\x4f\x7d\x4b\x71\xde\x9f\xed\xa6\xde\x40\x70\xc4\x4a\xcf\xab\xe9\xda\xfd\x0d\xa2\x08\xea\xbb\x9b\xae\xf7\xc0\xf5\x0d\x42\x1d\xbc\xde\x78\x7d\x37\x5e\xdb\x48\xcd\xc5\x5f\xeb\x47\xb9\xb6\x3b\x71\xe9\x40\xd1\x91\xf8\xbc\x9e\x9d\x8a\x8e\xec\x4d\x61\x72\x58\x9d\xb4\xf6\x8f\xf6\x25\x6b\x4c\x32\xe7\xd9\x12\x30\xea\xc9\x40\x70\xe9\x51\x99\x0e\x71\x04\xab\x96\xd8\xe3\x3d\x9a\x56\x5d\x69\x56\x2a\xec\x34\x54\x14\x66\x7f\xa5\xe8\xf6\x33\xb2\x25\x3f\x4e\x08\xb6\xd8\x29\x69\x15\x28\x54\x6c\x48\x55\x2e\xef\xc5\x3d\xad\x73\x72\x76\x3d\xe4\x47\xdb\x2b\x59\xb2\x13\xde\x03\x55\xb2\xe6\xcf\x98\x7a\xb3\xbd\x9d\x84\x0a\xb3\x13\xae\x55\xdb\x8a\x9a\xe9\xae\x55\xc1\x90\xee\xd8\x26\xb2\x40\x8e\x0c\xe9\xb1\xb3\xe9\x48\x22\x82\xc8\x4c\xd3\x02\xcb\x33\x93\x09\xd3\xf7\x8c\x09\xf2\xe2\xc5\x8b\x17\x11\x96\xe0\x9c\xbc\xf8\xfd\xef\x7f\x0f\x2d\x84\x49\xce\x32\x5e\xae\x03\x82\xa7\xfe\xd7\xcb\x97\x63\xf2\x1f\x67\x6f\x43\xe9\x1f\xd8\x28\xbd\xd2\x0a\xcb\xc5\xe1\xcc\x00\x07\xba\xc0\xd5\x09\xf9\xf7\x9b\x6f\xdf\xb9\xa3\x0c\x5b\x55\xfa\x6f\x03\x7a\x96\x6e\x7b\xc7\xe4\xa2\x0d\xd0\xec\x18\x69\x83\x40\x21\xea\x90\xd6\x0c\xe2\x3d\xe9\x74\x0a\x17\x05\xc9\x3b\x57\x8e\xc4\xb8\x8a\x3c\x7c\x36\x0f\x93\x7b\xec\x43\x6a\xae\x46\x01\x51\xa9\xdc\x6c\x01\x18\xd2\x5d\x11\x2a\x0c\xdc\x85\x6f\x45\xd7\xe6\x84\xa5\x9e\x90\x82\xdf\x31\x32\x55\xd0\x81\xb4\x2d\xca\x5d\x33\x65\x74\x18\xdb\xf4\x3c\xce\x61\xe9\xb7\xce\x2c\xf2\xf3\x78\x80\x23\x7b\x5d\xf6\x2e\x54\xc1\x15\xb6\xac\xb0\xd9\x06\x48\xdb\xcc\xb6\x3e\xb5\x47\xb5\x2f\xdd\xf9\x79\xe0\xe9\xda\xe2\x4d\x9e\xf4\x12\x5a\xc8\xa8\x52\xca\x1d\x74\x69\xa5\x0d\x17\x60\xb5\xac\x22\xae\x49\x52\x2d\xf4\xb4\x9e\x2f\x48\xef\xdf\xd2\xc8\xbe\xc4\x7d\xd7\x55\xa7\x3c\x16\x9d\xc8\x46\xbb\xd0\x14\x84\x98\xd2\x9c\x5a\x4b\xb7\xb1\x51\x2f\x24\x17\x87\x4f\x6f\x84\x93\xd8\x37\xa1\xcf\x6c\x7b\x82\xdb\x09\x61\x34\x9b\x93\x3b\xb6\x1c\x01\x9d\x8b\x86\x89\xad\x0b\x9c\x49\xe9\x82\x6a\x6a\xbb\x00\xf4\x3d\xb4\x69\x0d\x6c\xcf\xfd\xf1\xb8\x3c\xca\x16\xa3\x7d\x16\x6c\x64\x4e\x66\x3b\xa8\xb2\xb2\xb5\xed\x58\x20\x3a\x26\x35\xd7\x98\xc9\x76\x85\x4f\x80\x6a\x01\xd8\x66\x81\x57\x6b\xf9\x9a\x86\x72\xb0\xdc\x7c\x20\xa5\x5f\xc1\xc0\xba\xdb\x70\x30\xc3\x44\x92\x7a\x35\xa0\xb3\xb1\x33\xa3\x5e\x53\x79\xab\xc6\x44\x45\xce\x77\x60\xba\x26\x4a\x9d\x30\xb5\x39\xcf\xe6\xae\xdd\xb6\x85\x9a\xb2\xa3\x88\x4b\x1e\x09\x7a\x79\xaf\x8a\xe9\xa6\x8a\x0b\x49\x6b\x07\xc4\x1a\x9a\x95\x33\xa5\x08\x07\x1f\x56\x49\xeb\x3b\xe6\x0a\x34\xd2\x62\x4c\xae\xcd\x66\x26\xc0\x74\x75\x6a\xb1\xbb\xd1\x02\x83\xb6\x0d\xfd\xed\x24\x21\x27\x76\x3d\x3f\x1c\x8f\x0f\x51\x32\xd8\x90\x9c\x1c\x0d\x67\x97\x46\x2c\xc9\x0d\x58\xfa\xd2\x26\xad\x14\xb6\x9e\x31\x7a\x91\x41\x07\x70\x26\x04\xf3\x6b\x56\x87\x95\x9f\x68\xb4\xd1\xb9\x1d\x3b\x76\xe2\xd8\xa5\x35\x5a\x6a\x63\xb4\xa0\x63\x77\x75\xec\xda\x10\x6d\x87\x76\x68\xfd\x60\x49\x4b\x07\x5b\x3e\x97\xda\x05\x68\xe7\xe6\x57\x65\x42\x43\x8d\x8d\x73\xef\x54\xdc\x2c\x7b\xba\x4f\x22\x50\xb2\x45\x57\x02\xb1\xdc\xf0\x0e\x54\x7e\x92\xa1\x0e\x2b\x4b\x86\x76\x24\x83\x0c\x2a\x4f\xc9\x10\x7b\xca\xd6\x16\x65\x2a\x19\xe8\xa0\xf2\xe5\xfe\x9a\x0c\x75\xb3\x32\x76\x35\x05\xea\xdb\x72\xe0\xf4\xd3\x6f\x39\x4d\x47\xf7\xf6\xec\xd8\x60\x54\x7a\x6b\xac\x56\x8b\xdb\xae\xa5\x25\x03\xdd\xa2\xd5\x75\xb4\xb6\x64\x90\x11\x5a\x5e\xfa\x34\x41\xa7\xe8\x6b\x7d\x29\x1d\x8f\x49\xa2\x1a\xb8\x3a\xe2\xd5\xc2\xd5\x11\x13\x24\xb3\x3a\xd6\xe8\xa9\x97\x0e\xaa\x36\x61\x31\x79\x0f\xe1\x48\xb5\x84\x4e\x5e\xda\x13\xe9\x31\x79\x6b\xa5\x8d\x1d\x8e\x85\x1a\x6d\x48\xc9\xa2\xd1\x3e\x75\xbe\x2f\xba\xec\x74\x73\x60\x91\xae\xaf\x18\x96\x54\x71\x60\x41\x9c\x49\x06\xea\x2b\x92\x58\xd9\x22\x4d\x12\xb2\x13\x4b\x67\x4a\xb1\x81\xa9\x38\xd2\xc2\x53\x13\x66\xff\x19\x02\x59\x71\xc4\x87\xb3\x26\x00\x85\xc0\xd7\xe8\xa0\x56\x1c\x3b\x9c\x9d\x93\xe8\x77\x3c\xbf\x1b\xac\x91\xe7\x33\xe4\x7a\x9a\x48\xc2\x6a\x65\x4d\x0c\xb9\x03\x25\xcb\xa9\x0a\xa9\x4d\xe8\xe3\x5d\x06\x76\x21\xd6\xd6\x7d\x76\x7d\xb5\x37\x4b\x49\x07\x66\xe4\xbc\x73\xaa\xe9\xbf\x9a\xad\x04\x1c\x13\xbe\xdb\xb7\xb9\xde\x17\xed\xbe\x44\xf6\x29\x68\x87\xa1\xe7\x5f\xb0\x3a\xb7\xb6\xb4\xd7\x86\xff\x44\x86\x94\xad\x4d\xa5\x57\x9e\xde\xfa\x1c\x5a\x41\xa5\x2d\x69\x9f\x04\xd5\x05\x2a\x01\x45\xfa\x52\xd5\xc4\x27\x52\xfb\x60\x0f\x22\x32\x49\x56\xc7\x6a\x58\xab\x5d\x22\xb9\x81\x1e\xd6\x68\x2b\x4b\xdb\x5d\x1c\xd2\x05\xf3\xe7\xaf\xb0\xe9\x26\x15\x42\x6a\xec\x00\x7d\x82\x6d\xb6\x93\xbb\xb1\x23\x4b\x06\x91\xb4\x13\xb0\x56\x77\x5c\xe3\x3b\x0a\x95\x3b\xb4\x53\xdf\xb5\xa1\xba\x41\x09\xd8\xd1\xeb\x54\xbb\xc8\x43\x7a\xa4\x93\x0e\xb7\xde\xa5\xc3\x6e\xdf\xc9\x8c\x70\xdc\x11\xab\x6c\xce\xca\x5d\xfa\x82\xe3\x05\x7e\xed\x36\xc3\x50\xd6\xfb\x9a\x6b\xcd\xb0\xc2\x2e\xab\xcb\x5d\x3a\x2c\x1b\xd4\x3b\x71\x6a\x1b\xd6\xa5\x58\xbc\x3c\xd8\xa5\xbd\xf8\x03\x9a\x78\x93\xf6\x8c\x1f\xbc\xdd\xdd\x22\x27\x68\x54\x8f\x08\x26\xd9\x34\xb0\x2d\xbd\x8f\xfb\xf4\x86\xda\xb3\xeb\x2b\xb2\xc0\x33\x7d\xd2\x6d\xfa\xe9\x98\x7b\x4e\x76\x6b\x4b\xfe\x6c\xee\x79\x36\xf7\x3c\x9b\x7b\x7e\x5e\xe6\x9e\x8e\x08\xe5\x98\xda\x4e\xd6\x9e\xbe\xc9\xa8\x5b\xd9\xdb\xda\x81\x76\xa1\x46\x36\xd6\xa7\x53\x27\xd7\x90\x28\x67\x01\x4a\xec\xce\x4e\x6c\x17\x1a\x57\x7a\xf6\xf0\x70\x3c\x3e\x3c\x74\x76\x24\xab\xec\x36\x7a\x3a\xfa\x43\x32\x58\x26\x32\x99\x43\x29\x67\x58\x6f\xad\x34\x28\x33\xad\x41\x05\xf7\x26\x19\x2e\xec\x65\xe9\xd6\xde\xf5\xad\xc1\xdc\x77\x43\xd1\x1d\x38\x9f\x8b\x66\x7b\xbd\x17\xa1\xbd\x15\xd5\x7d\x11\xaa\x84\x96\xdf\x6e\xf4\xea\x07\x5a\x99\xbd\x8d\xba\x2b\x78\xc9\x13\x75\x3e\x62\x99\x8b\x21\xfb\x4c\x69\x45\x8e\x10\xc8\x38\xab\x9a\x13\x0b\x70\x5c\xb2\x52\xd6\xcb\x74\xaa\xe5\x80\x1a\x60\xbd\xaf\x58\x88\xc7\xe9\x53\xad\x19\xc9\x9a\xba\x66\x42\x17\xcb\x9f\x9a\x46\x11\xd5\x18\x67\x7d\x3c\x44\xa1\xf0\xb8\x92\xd2\x77\xbd\x3b\x56\xd2\x9b\x7c\xd1\x74\x30\xbb\xfa\xbd\xd8\x49\xd2\x9d\xfa\xe6\x17\xea\xc4\x9b\x02\xe1\x57\x26\x16\x3b\x41\x5c\xd0\x3a\x98\x7c\xb4\x69\x3c\x48\x87\xc8\xf9\x82\x2b\x19\x4c\x9a\xdc\xf8\xea\xba\x35\x93\xdb\x22\xf4\xb2\xd1\x55\x93\x2e\xcc\x12\xcf\x57\x1d\x19\x76\x5d\x91\x3c\x95\x48\xbf\xc6\xa4\x8d\x6e\x45\x55\xed\x65\xb8\x7e\xd5\xfa\xa8\xa8\xd6\xac\x16\xaf\xc8\xff\x3b\xfa\xdb\xaf\xff\x39\x3a\xfe\xf3\xd1\xd1\xf7\x2f\x46\xff\xfb\x87\x5f\x1f\xfd\x6d\x0c\xff\xf1\xab\xe3\x3f\x1f\xff\xd3\xfd\xe3\xd7\xc7\xc7\x47\x47\xdf\x7f\xf3\xf6\x2f\xb7\xd7\x97\x3f\xf0\xe3\x7f\x7e\x2f\x9a\xf2\x0e\xff\xf5\xcf\xa3\xef\xd9\xe5\x0f\x91\x40\x8e\x8f\xff\xfc\xcb\x1d\x26\x4b\xc5\xf2\xdb\x64\x82\x4f\xb0\xe8\xdd\x03\x44\xa2\x2e\x84\x1d\xd1\x91\x90\x4f\xa3\xd6\x09\x31\xe2\x42\x8f\x64\x3d\x42\x60\xaf\x88\xae\x93\xe2\xc5\x70\x38\xd4\x79\x38\xfd\x68\xc5\xae\x1d\x69\x21\x0e\x50\x04\x0d\x3b\x7d\x82\xcb\x8e\x91\xec\x7b\xb3\xd1\xdb\xe6\x9a\xcf\xa1\x8c\x5f\x60\x28\xa3\xad\xd6\xf3\x1c\xc7\xf8\xb3\x8d\x63\xbc\xb1\x5d\x6b\x37\x06\x31\x62\x68\x62\x02\xd0\x88\x20\xc6\x54\x93\x55\x44\x10\x23\x38\xde\x93\x2e\xd2\x73\x10\xe3\x73\x10\xe3\x73\x10\x63\xda\xdc\x9f\x83\x18\x9f\xad\xda\xcf\x56\xed\x67\xab\xf6\xda\x78\x0e\x62\xdc\x38\x9e\x83\x18\x87\xc6\x73\x10\xe3\x73\x10\x63\x27\x88\xd1\x2a\xa2\x49\xca\x86\x8d\x60\x7c\xb2\x00\x46\x65\xd0\x20\x63\x67\x59\x26\x1b\xa1\x6f\xe5\x1d\x8b\x8c\x59\x89\x32\x92\xac\xc1\x8e\x5c\xc7\x93\x04\x34\xa6\x09\xf1\x09\xe2\x78\xba\x20\x4e\x9b\x9c\x33\x91\x62\x9a\xeb\x6d\xff\x99\x7d\xdd\x59\x14\x0c\xcb\x13\x39\xcb\x3d\xdc\x04\x04\xb4\x24\x48\x9b\xd3\x1a\x93\x33\x52\xb3\x8c\x57\xdc\x10\x66\x28\x7f\x06\xbf\xa7\xaa\xbb\xbe\xc7\x31\xd7\x8a\x15\x53\xdb\xff\x55\xb4\xf5\x32\xea\x56\xf6\x4a\xd7\xf6\xdd\x22\x7b\x53\x47\x39\x44\xba\xb6\x9f\x09\x50\xd5\x5c\x36\x45\x4e\x6a\xf6\x0f\x27\x1a\xd9\xbd\xb8\xed\x7e\x2b\x8f\xad\x10\xd9\x0e\x6b\x84\xe9\x2c\xda\x4e\x98\x56\x3c\xb6\x96\xa7\x87\x95\x4e\xe0\xd8\xa7\x8a\xd7\x70\x45\x6f\x58\x26\x45\xbe\xab\xe9\xef\x72\x15\x8e\xc3\x3a\xeb\x15\x4c\x3a\xc2\xbc\x41\x50\x90\xe8\x4f\x0b\x9e\x73\xbd\xf4\xb1\x6e\x48\x3e\x8c\x42\x11\xec\xda\xdb\x1f\x0e\x79\x55\x7b\x7c\x84\x56\x55\x2d\x69\x36\x67\xaa\xb3\x13\x29\x7c\x08\x24\x28\x2c\xbd\xe4\x6b\x12\x14\xcd\x8c\x0b\x94\xf2\x01\xba\x11\xd9\x22\x8a\xdd\xb4\xa3\x96\xda\x05\xe7\xae\x2c\xb7\x8b\x75\xf6\xb3\xa9\x46\x40\x34\x05\xe9\x7a\x09\xa5\x05\x65\xf7\x63\xb8\x27\x11\x05\xc2\xfa\xeb\xb7\xaf\x29\x22\x8b\xdc\xd5\x8b\xfe\xc3\x0b\xa3\xf4\x66\x96\x42\xa4\x39\xae\xa1\x5e\xb0\x96\xa4\x30\xa2\xae\xac\x5d\x55\xea\x0d\x9f\x49\x00\xfa\x9b\xdf\x92\xb9\x6c\x6a\x35\xee\x16\x27\x7a\x09\xbf\xa1\xb1\x0d\x59\x6b\x8a\xa1\x52\x93\x82\x51\xa5\xc9\xcb\x17\xa4\xe4\xa2\x31\x12\x55\xe2\x55\x4d\xd5\x42\x3a\xfa\xc7\xef\x7e\x1b\xf9\x56\x9a\xe6\xb1\x1e\xf7\x68\xef\x71\x85\x5d\x17\xad\x02\x92\x14\xfc\x02\x6d\x61\x00\x7b\xb1\x97\x6a\x3f\x8a\xc6\xb1\xf3\x44\x65\xc6\x62\x83\xd0\x72\xcf\xf4\xf1\xc7\x46\x4e\x96\x3a\xbe\xb0\xdb\xff\xc5\xe7\xfb\x15\xdd\xdc\x8f\x6b\x15\xb4\x07\xe7\xba\xde\xec\xb7\x2d\xa0\x3d\xf0\xe2\x9e\x3b\x8b\xcf\xb8\xd2\x83\x8d\xab\x47\x61\x57\x49\xac\xb0\x33\xab\x65\x13\xac\x26\xd2\xdb\x6e\xb0\x27\x38\xfd\xd5\x52\x5c\x9a\x65\x4c\xc1\x85\x76\xe5\x3c\x23\x7a\x80\x08\x89\x5f\x0f\x3c\xf8\x19\x1b\x67\x38\x24\x8a\x74\x4c\x3d\x66\x21\xeb\xa8\x4d\x8a\xd1\x2f\x1c\x7a\x25\xee\x12\xbe\xd4\xbf\x63\x8a\x8b\x19\xb4\x7a\x25\x65\x53\x68\x5e\x45\xe4\xf2\xb8\x1d\xf5\x00\x2d\x7b\xed\x3a\x9b\x68\xc7\xfb\x40\xc3\x5b\x64\x2e\x35\x36\x4f\x00\xa7\xe5\x91\x9b\x0b\x61\x42\x43\x31\x2a\xc8\x8e\x60\x15\xad\xa9\x3b\x96\x20\xcc\x4c\x96\x25\x55\xc7\xd6\xef\x45\x21\xb2\x0c\xa9\xb0\x61\xa8\x35\x2d\xfc\x36\x76\xe3\x6c\xf6\x85\xc8\x9a\x09\x2a\x82\x4e\xf1\xbe\x71\x0a\x5e\x21\xf2\x5e\xb8\x36\x60\xd8\xb9\x3e\x11\x83\xad\xe8\xfe\x35\xcd\xee\x98\xc8\xc9\x07\xe5\xf0\x38\x5f\x0a\x5a\xda\xb6\x12\x55\x2d\xb1\xc3\x3b\xcb\x1d\xfc\x20\x60\x1f\x89\x84\x46\x6d\xac\xec\xe5\x8a\x38\xa2\xbc\xb6\xaf\xdd\x6b\x54\x62\x8d\xf5\x0f\xca\x08\x33\xc3\xf4\x4c\xc5\x30\x5c\xc5\x6a\xbe\xc8\x98\x93\x14\xcd\x44\xf6\xb5\xa8\x45\xb0\xd6\xe9\xda\xb2\x6c\x9d\x53\xde\xb9\x4d\xc0\xde\xbc\xf3\x1e\xba\x4c\xd0\xc2\x90\xa8\xb0\x6c\xec\x5a\x9a\xf5\x11\xca\x9c\xa0\xd8\x57\x0b\xb1\x7a\x12\x5f\x20\xf1\xf0\xfd\xd7\x17\x7d\x62\xf4\x9e\xe6\x52\x91\xaf\x0b\x99\xdd\x91\x0b\x06\x22\x7b\x19\xd4\x4f\x56\x3b\x6b\x44\x35\xfa\x1f\x84\x18\x6a\x36\x5a\x4f\xf2\xcf\xd1\x6a\xb4\xa4\xb3\xa1\x4b\x3a\x22\xa5\x14\x5c\xcb\x7a\x1f\xa5\x1a\x9f\x1b\x5b\xfe\xcb\x34\xb6\xac\x27\x61\xab\xc1\x4f\xb5\xad\xa5\xb9\x12\x89\x1d\xa0\xe7\x8c\xd4\x40\x66\xe0\x65\xd7\xcb\x28\xbe\xd3\x70\xef\xf2\xff\x62\x2e\xef\x47\x5a\x8e\x1a\xc5\x46\x3c\x18\x6b\x17\xbd\xae\x3b\xb6\x84\x60\xc4\xa4\x95\x7d\x83\x2f\xf5\x54\x4d\x2d\xc1\xe2\x0d\xbf\x1b\x21\xe7\xfd\xd7\x17\x86\x53\xc6\x57\xf4\xe7\x8a\x9c\x32\x9d\x9d\x66\xac\x9a\x9f\xda\x69\x7d\x71\xdb\xe5\xe8\x5e\xda\x7e\x9d\x91\x4c\x16\x85\xad\x37\x29\xa7\xe4\x9c\x55\x73\x0f\x2a\xc9\x3d\xf4\xe8\x7b\xf0\x39\x5a\x18\x56\x52\xa6\xb5\x55\xeb\x5c\x2d\xf3\xae\xbd\x59\x1d\x44\xaa\x27\x96\x98\x45\x88\xb0\x5f\x0a\x6a\x3d\x42\x57\xa5\xe8\xba\xdd\xdb\x4a\x73\x6f\xe8\xe4\xf8\x45\x61\xeb\xe3\x75\x8c\x3c\xbc\x71\xaf\x41\x1c\x63\xc7\xad\x9b\xd4\x00\xd2\x7d\xbe\x47\x12\xc9\xd5\x14\xb5\xa2\x9c\xe5\x44\x2e\x58\x5d\xf3\x9c\x29\x47\x8a\x93\x28\xa6\xe0\xc5\xd3\xd2\xc8\xe7\x5e\x96\x5b\xc7\x4f\xa3\x97\x65\xb2\xbe\xdb\x21\xb6\xe6\xdd\x75\x62\x4b\xf3\x92\x47\xa4\xc1\x7f\x41\x9c\x5c\x65\xb4\x60\x57\xdf\x46\xab\x8f\x37\xf8\x7c\x5f\x83\x74\x3f\x76\x5a\xf6\x3c\xa0\x1d\xc8\x37\x1e\x4f\x89\x90\xf9\xb0\x67\x62\xaf\xba\xde\x8c\x6a\x76\x3f\xc8\xf2\x47\x2d\x09\x1d\x7e\x2a\xd4\x58\xe7\xb9\xf9\xcf\xaa\x02\xd7\xb9\x45\xd8\x57\x64\x5f\xc2\x84\x3d\xd5\x34\xa3\xa0\x5b\x62\xdb\x27\x10\x03\x60\x2c\xa2\x9f\x5d\x5f\x91\xbf\x20\xdc\xfd\x75\x19\xaa\xa5\x46\xb9\xf8\x42\x96\x94\x27\x36\xa9\xef\xb4\x74\xeb\x4e\xf4\xda\x03\x25\x08\x35\x78\x2c\x9d\xce\xfb\x53\x3e\x6b\x8c\x1e\x6d\x75\xdb\xe7\xc6\x2c\x81\xa5\x3f\x9e\x08\xd6\x4a\x60\x1d\x1b\xa4\xcb\x81\xf1\x52\x55\x70\xe9\x0e\x2b\x80\x79\xf9\x70\x12\xa2\x98\x50\x1c\x7c\xa3\x9d\xb0\x27\x10\xcd\xf4\x3c\xc2\x1b\xe5\x93\x5b\x50\x8c\x3b\x21\x6f\xe4\x8c\x0b\x47\x1d\xa4\x0d\x27\x98\x52\x5e\xc4\x6d\xe3\xb3\x5c\xb5\x75\xfc\x34\xe4\x2a\xa5\x8a\x4b\x41\x27\x45\x38\x12\xad\xcf\xb8\x0a\x0a\x51\x1d\x0c\xde\x3d\xcd\xb9\x32\xff\x4f\x6e\x6e\xde\x80\x57\xa9\x11\xb1\x7a\x06\xf8\x5d\x2c\x79\xf6\xc5\x9c\x90\x68\xec\xef\x1e\x23\x4d\x4c\xee\xaa\x73\x25\x72\xb3\x0c\xa6\x7a\x81\x95\x16\x1a\xf6\x2d\x8a\x75\x39\xd9\xb8\xae\x09\x23\xb7\x73\x9e\xdd\x5d\x77\x9c\x4b\xb2\x36\xbf\x89\xce\x4f\x9e\xc1\xc6\x5c\xe7\xd5\x77\xf7\x45\xf8\xed\x32\xaf\x53\x8d\x1c\xb7\x1d\x8e\x76\x63\xb7\xca\x00\x21\x54\x29\x99\xf1\x78\xef\x24\x98\xe8\x5a\x96\x98\x03\x4b\xdc\xdf\xf2\x40\x0a\x7a\x10\xdf\x76\x88\x60\x05\x38\xaa\x3a\x7c\x38\xc6\x07\x69\x77\x69\x6f\x4b\x42\x54\x4c\xee\x37\x7b\xdb\xeb\x30\xeb\x5c\x83\xe8\x30\xf3\x0e\xb1\x08\x61\xa4\x2b\xca\x38\x99\xd6\x36\x10\x5f\x39\xfa\x6e\xa7\xd9\xf0\xcd\x81\x14\xef\xbd\x6c\x52\x38\x0d\x7b\x93\x2d\x65\x25\x1a\x00\x7f\xb3\x6e\x34\xb8\xd4\x95\xac\x9a\x82\x06\xdc\xc3\xdd\xe6\xba\x0f\xf5\x57\xe0\x1c\xf6\xe0\x56\x7b\xec\xb6\x64\x5b\x13\xdc\x36\x24\xac\x05\x11\xa1\xed\x60\x16\xdd\xa1\x2c\x08\x73\x35\x9f\x6d\x0f\xf9\x69\x31\xf9\x68\xab\xf9\x65\x41\xa0\x1b\xf3\xcf\xb6\x75\x28\x4b\x88\xba\x79\xf1\xbb\xdf\xfe\x76\x5b\x4f\xb3\xcd\x3d\xcb\xc2\x5b\xba\xbd\xa7\xd9\x03\x12\xc9\xc2\x89\x63\xeb\x89\x60\x51\x14\x6b\x43\x4f\xb3\xc4\xc4\xaf\xc7\x69\x5a\x16\xe5\xac\x48\xa8\x8a\xe0\x6a\x1d\x44\x6d\xca\x50\x2d\x84\xad\x15\x0e\x22\x58\x5e\xaf\x02\x42\x4c\x5d\x83\x08\x07\x2a\xd4\x3d\xd8\x6b\x35\x83\x84\x1a\x06\xbd\xca\x04\x41\xc0\x43\x95\x0b\xb6\xd6\x23\x88\x57\xe9\x00\x56\x54\x15\x82\x20\xcc\xe8\x06\x4a\xd1\xf1\xcc\x51\x15\x07\xfa\x75\x04\xe2\x74\x87\x98\xec\xba\xc7\x6d\xca\x37\x50\x49\xc0\x57\x07\x88\x50\xd9\x62\xeb\x07\x24\xa5\x1a\xc5\xa7\x19\xc5\x55\x08\x88\x4c\x44\x4a\x4b\x42\x8a\xae\x01\xb0\x97\xcc\xff\xc4\xec\x95\xf8\x2c\xff\x24\xd1\x27\x0a\x22\x09\x64\xf4\xef\x20\xf1\xe0\x48\x95\x7b\x22\xc1\xbe\x48\x92\x7e\x22\x81\x0e\xe6\xe0\xaf\xca\x40\xb1\xeb\xdf\x9c\x79\xbf\x25\x93\x3e\x12\x68\x2f\xdf\x3e\x20\xf6\x44\x82\x1c\x6c\xe8\xba\x2a\xfc\x44\xc2\x8c\x69\xeb\xda\xe2\x6c\x24\xd0\xf8\x0c\xf9\xf4\x8c\x94\xd4\x6c\xf8\xf8\x4c\x94\xa8\xcc\xf7\xc4\x32\xac\xdb\xf3\xdd\xd7\xf3\xd7\x23\x41\xbe\xdd\xc0\x2e\xb7\x67\xad\xc7\x9e\x58\x5b\xaa\x67\xa7\x5c\xf5\x68\x32\x1a\x9b\xdb\x1c\x9f\xd1\xec\x3b\xad\x04\x27\x9a\x96\xc8\x9c\xea\x19\x48\x36\xb5\xf4\xec\xd4\xd6\x92\xe0\xce\x13\x23\x71\x7d\xb7\x83\x18\xed\xad\x51\x4f\x61\x4b\x20\xd1\xe6\x15\x04\x2d\x07\x79\x7e\xff\x94\xf1\x8d\x6f\x6f\x56\x5c\xd4\xfe\x67\xa7\x29\x58\xef\xf3\xb0\x8b\xfa\xd1\x3d\xd3\xcf\x8e\xe0\xd4\x48\xde\x98\x24\xcf\x6e\x24\xef\xb3\xd7\x72\x78\xe9\x4f\xe1\xb5\x54\xbd\x1a\xb2\xce\xde\x09\xd4\x26\xca\x71\x29\x27\xb6\xc3\x0f\x12\x6d\x7f\x97\xcf\xae\xaf\x48\x56\x33\x48\x40\xa7\x85\x1a\x93\x1d\x2a\x1f\x39\xff\x90\x95\xfa\x9c\xc4\x45\xb5\x66\x65\xa5\x63\x11\xe8\xd9\x69\xb9\x75\xfc\x34\x9c\x96\x3b\x7a\x3a\x3e\xfa\xd7\x9c\xbd\x68\xde\x94\x54\x8c\xcc\x2d\x07\xf7\xa5\x75\x83\xc4\xb9\x3a\x56\x98\xd4\x98\xb8\x5c\x24\xd8\x6d\x30\x9c\x42\x4a\x64\x23\xf8\x8f\x11\x8a\x99\xaf\x23\xe8\x45\x80\x47\x70\x0c\x01\xdc\x1d\xf7\x0c\x9b\x30\xad\x50\x87\x4c\x56\xd1\x3b\x66\x99\xb9\x5d\xa8\xdf\x3f\x47\x08\x3a\x9d\x9e\xba\x56\xb0\x18\xd0\x28\x42\x5d\x43\x22\x73\x0b\xa5\xaf\x8f\xa1\x42\x46\x8b\x42\xde\x47\x98\xc6\xe7\xac\x27\x40\x18\xbc\x30\x6b\xb5\xb5\x0c\x26\x8c\x94\xbc\xae\x65\x6d\x1d\x5a\x11\x66\xd5\x16\x5d\x20\x68\xc7\xe8\x85\xac\x46\x35\xa8\xb6\x31\x1c\x37\x4c\x77\xb6\x3b\x46\x00\xa4\x02\x13\xd3\xcc\x7f\xbb\x80\x5c\xec\xe2\x67\xe9\xe4\x84\xcd\xe9\x82\xcb\xa6\x06\xe8\x31\x20\x0f\xec\xab\x86\x75\x93\xa5\x6c\xbc\x03\xa0\x81\x1c\x15\xbf\xbb\x2a\x79\xe1\x63\xf2\xae\x7d\x19\x54\xd9\x5c\x3a\xcb\xe5\x88\x7d\xe2\x4a\xa7\xef\xa5\x3b\x62\xd7\xee\x62\x1f\x37\x66\xa1\x2a\xc3\xc0\x3f\x06\x73\x11\xfb\xf7\xa4\xfb\x56\x5f\x9c\x5d\xdc\xc0\x9f\x1e\x22\xcc\xda\x1a\x1c\x0a\x45\x38\x9b\x24\xf4\x70\x81\x36\x2e\xd4\x12\xe7\x1d\xe8\x62\xf6\x2c\x1b\xff\x54\x64\x63\x1f\xd8\x51\xf0\x6c\x79\x75\x91\x26\x25\xfa\x80\x0e\xf3\x32\xf9\x9a\x2a\x96\x93\xb7\x54\xd0\x19\x1a\x22\x8e\x6e\xae\xbf\x7e\x1b\xee\xc8\x51\xd5\x12\x8c\x2a\x57\x17\x1b\x42\x03\x3c\x6b\xc5\x8f\xbc\xdb\x57\xe2\xed\xda\xda\x93\xe5\x87\x3d\xaf\x7e\x6f\x29\xc5\xc4\xf3\xf8\x98\x36\x74\xeb\xa5\x57\x30\x4c\xc3\x55\x86\x52\xab\x04\x6b\x51\xe6\x77\xbb\x4f\x93\x0b\xa5\x69\x51\x5c\x17\x54\x9c\x55\x55\x2d\x17\x9b\x2c\x41\xfd\x82\x62\xf6\x31\x27\xa4\x61\x04\xa4\xfb\xb1\xc2\xcd\x87\xe8\x2b\x41\xae\x5a\xe8\x9b\xb6\xf2\x4a\x7b\x13\x90\x14\x20\x6c\x1f\x9c\x35\x5a\x96\x54\xf3\xec\x80\xc8\x9a\x1c\xbc\xa5\xa2\xa1\xc5\x86\x08\xe6\x81\x25\x6d\x16\xf7\x07\x5e\xd8\xd6\xfa\x20\xf8\xca\x80\xcc\x36\xf4\xae\xa6\xb5\xa1\x62\xe7\x37\x1f\xa3\xdf\x53\x9a\xea\x66\x85\x76\x6f\xe5\x22\x9b\xf9\xc6\x88\x14\x54\xe9\x0f\x55\x4e\x57\x9d\xa1\xdb\x99\x43\x46\x35\x2d\xe4\xec\xaf\x8c\x16\x9b\x30\xb7\x87\x17\xe7\xdd\x67\x9d\x31\x14\x51\xe4\xa6\x99\xf8\x07\x0f\x15\x31\x0a\xd1\xf6\x7a\x50\x35\x2b\xd8\x82\x0a\xed\x00\xde\x60\x4f\x93\x43\xbb\x07\x63\x83\x35\xbc\x75\xd6\xe4\x4c\xb3\xba\xe4\xa2\xff\x95\x1b\x78\xf6\x5c\x8a\x9c\xeb\x2d\xe1\x2b\x60\x4c\x46\x18\xfd\x2f\x6d\x43\xb6\xcd\x0e\xca\xad\x2e\xc9\x3e\x6d\xea\xcc\xad\xbf\x51\xf8\xd8\xc4\x4a\xec\x73\xfc\x51\x4e\xb7\xf8\x24\x7b\x33\x5d\xdb\x5b\x72\x27\xe4\xbd\xc2\x2a\x8b\x9b\xee\x5b\x40\xee\x18\x92\x37\x46\x0e\x17\xf0\xd3\x9b\xb3\x36\x46\x76\xfe\x9b\x6c\x30\xdb\xd1\x0f\x47\x48\x42\x59\xfd\xfc\x36\x3a\xba\x09\x27\xfd\x4b\x58\x88\xc2\x47\x4b\xa0\x27\xb8\xf7\xd0\x36\x8a\x1f\x21\xb2\xc5\xc8\x58\x71\xdd\x5f\xfb\xf4\xb6\xed\x0a\xba\x66\x8e\x08\xca\x98\x01\xd6\x14\xd5\x1c\xb5\x6f\x16\xb9\xb2\x81\xf3\xb5\x55\xb6\x28\xa9\x38\xc3\x02\x8b\x54\xd8\x0d\x02\xae\xc2\xe8\xb0\x0c\x8d\x2f\x18\xae\x66\x54\x71\x78\xef\xc4\xc6\x26\xa1\xb3\xc3\xc6\xef\x39\xb7\x0a\xc5\x22\x80\x83\x30\xff\xfd\xe6\xdb\x77\xa7\x7f\x91\x36\x38\xc6\x16\x50\x31\x74\x03\x24\x80\x13\xa2\x9a\x6c\x4e\xa8\x32\x4b\x32\x88\x6e\xa8\x04\x1b\x97\x54\xf0\x29\x53\x7a\xec\x3b\x69\xa9\xef\x7f\xf3\xc3\x30\xeb\x7f\x2d\x6b\x62\xf3\xcc\x4e\x5c\x65\x3a\xbb\xf6\x16\xbb\xb8\xc2\x0d\xf2\x70\x07\x41\x7a\x0b\x43\x25\x73\xbb\x11\xf7\xb0\x01\x9a\xde\x19\xfe\x88\x1b\xd0\x30\x70\x26\xbe\x22\x07\x46\xf4\xec\x4c\xf9\xbf\x0d\xdb\xfb\x9f\xe1\xe2\x0c\x47\xf7\x20\x38\x1c\x98\x47\x0f\x70\xa2\x3e\xf7\xa1\x1b\x3a\xeb\xa1\x82\xec\x31\x08\x52\xd7\x7c\x36\x63\x20\x3c\xcf\x19\x81\xa2\x0b\xc7\xb6\x5a\x9f\x90\x1d\x40\x2e\x7a\x28\xce\x70\xb0\xba\xb8\xef\x7f\xf3\xc3\x01\x39\x6a\xa1\x81\x2c\xca\x45\xce\x3e\x91\xdf\xa0\x8b\x86\x2b\xb3\x6f\xc7\xc3\xa7\x06\x36\x06\xb5\x14\x9a\x7e\x32\x73\xc9\xe6\x52\x31\x81\x66\x20\x2d\xc9\x9c\x2e\x18\x51\xb2\x64\xe4\x9e\x15\xc5\xc8\x3a\xa5\xc8\x70\x1a\x1b\xe0\xb1\x3b\x72\x28\x16\x45\x2a\x5a\xeb\xde\x75\x18\x5b\xbb\x1d\xcc\xd2\xa0\xde\x6c\x58\x89\xb6\x21\x43\x53\x2e\xac\x47\xde\xc6\x15\x18\x9c\x86\x42\x20\x88\x68\x5a\x92\x6c\x4e\xc5\x8c\x59\x27\xd5\xb0\x62\xd7\xe8\xa6\x66\x83\x4e\xe0\x28\x8a\x71\xc7\x45\x42\x81\x9c\x6f\xb8\x58\x8d\x51\xdb\x6c\x43\x9d\x71\xed\xd2\x35\x6d\x82\x82\x5e\x9e\x9a\xf3\xae\xf9\xa4\xd1\xb2\x56\xa7\x39\x5b\xb0\xe2\x54\xf1\xd9\x88\xd6\xd9\x9c\x6b\x96\x99\x05\x9d\xd2\x8a\x8f\x32\x29\x0c\xde\x41\x55\xb3\x32\xff\x85\x59\x87\x1a\x99\x89\x0e\x76\x8a\x8b\x5a\x6e\xc8\x74\xfc\x59\x4d\xc6\x7b\x59\x5d\xd0\xe6\xb8\xbe\x44\xb4\xdf\x3d\xc1\x3a\xc1\x18\x75\xfa\xe0\x65\xba\x46\x64\xa9\x9c\xf7\xd0\xf6\xeb\xcb\x56\x21\x98\xab\x87\x55\xd9\xe0\x66\x7a\x8a\x1f\xba\xd5\x25\xcd\x91\x5d\x50\xb1\x7c\xf4\x6b\x60\x36\x1a\xda\x68\x66\xcb\x11\x80\x90\xc5\x88\x8a\xdc\xfc\x37\x66\x16\x67\xcb\x07\xef\x6c\xc3\x13\x88\xc1\x87\xab\x8b\xa7\xb9\x1c\x0d\x7f\xe0\xcd\xb7\x52\x6c\x94\x88\x89\x62\x3c\x84\x86\xea\xba\x61\x4e\x18\xe8\x0b\xea\x5c\x39\x98\xff\x67\xbb\x2c\x06\x3e\x4d\x5f\x95\x7a\x58\x10\x1d\xf2\x34\x76\xe4\xec\xa8\x15\xbc\x69\x9f\xef\x5a\x46\x21\x2e\x97\x2a\x6d\x0b\xf1\xba\xca\x55\xbd\x85\xe1\xe2\xb7\x2e\x09\xd9\xd3\x36\x56\x1f\x81\x61\x2e\xb6\xc8\x4c\x6e\xb4\xa1\xfe\x69\xe6\x15\xbc\x90\x72\xea\x1f\x44\x15\xa0\xe0\xca\x57\xa0\x35\x6a\xa0\xd2\x84\x2e\x28\x2f\xc0\xcf\x24\x27\x8a\xd5\x0b\xba\x4d\x71\xc4\x22\xf6\x74\x55\xab\xb5\x3d\x6b\x51\xdc\x7c\x74\x1d\xd2\xad\x67\xfd\xc4\xfa\x8b\xd9\xb8\xb1\xdd\x05\x62\x5e\xd1\xca\x5a\xb6\xac\xe1\x81\x1a\x24\x2a\xf0\x1b\xff\xb4\xa5\x08\x5a\x48\xa5\x32\xf8\xf9\x57\x46\x6b\x3d\x61\x54\xdf\xf2\xed\xbc\x7a\x0d\xe1\x7b\x6f\x39\x53\x56\x8b\xee\xf7\x8c\xcc\xa4\x36\x22\x5c\x03\x37\x63\x2b\x8a\x83\x5c\x8e\x65\x2e\x3d\x32\x3e\x1e\xbe\xb7\xab\xbe\xad\x29\x64\x1a\x4b\x91\xb4\xec\xfe\x6b\xeb\xeb\xb6\xd2\xff\xe0\x3a\x8c\xd0\x0f\x50\xa0\x88\x1a\x58\xee\xf0\x64\xd1\xe7\x35\x94\x31\xb2\xb7\x2d\x28\x99\x52\x03\xa5\xd3\xfa\x01\xe0\xf8\x2c\x5e\xfc\x15\x97\x72\xe9\xfe\x86\xb9\xa4\x43\xbc\x2e\x67\x9a\xf2\xc2\x5a\x57\xec\x96\xf9\xdd\x1c\xa6\xd6\x03\x0b\xae\x19\x55\xdb\x45\x92\xd5\x2a\xc1\x4a\x0a\x5c\x86\x14\x6c\x74\x2f\xeb\x9c\x9c\xd3\x92\x15\xe7\x54\x31\x0b\xa9\x5b\x74\x00\x4f\xf1\x70\xbb\x3f\x75\x5f\x8b\xd8\x64\x9d\xdc\xb2\x08\x34\xcc\x39\xc4\xb3\x78\xd3\xaa\x9d\x38\xe5\x13\x67\x0e\xbe\xad\x9b\x81\x9e\x53\xaf\x0d\xc7\x3c\x21\x1f\xc4\x9d\x90\xf7\xbb\xcf\x5e\x0f\x78\xbc\xfa\x21\xa8\xcb\xca\x5f\x19\x57\x20\xb2\x67\x7e\xf3\x0b\xd8\x61\x2e\x96\x7d\x6c\x34\x0a\xf7\x59\x99\x7f\xd0\xcd\xc5\xfc\xe7\x9a\x29\xd0\x28\xc4\xb5\x9c\xd5\x4c\xa9\xcd\x0b\xdf\x54\x32\x3d\xce\x51\xf0\x17\x26\x6c\x3d\x82\xc0\x54\xaf\x36\xbd\xe3\x66\xed\xf8\xe5\xac\xfd\xcb\xd6\x5e\x56\xf6\xe3\x55\xb1\x41\xe4\x19\x8a\x58\xee\x4c\x7a\xa3\xc9\x70\xdb\x6c\x37\x9b\x0a\x3b\xfc\xb5\xf3\xec\xa6\xad\x35\xc2\xd2\x90\x05\xdc\xad\xfd\xfc\xe6\xe3\xb6\x43\xd8\xc2\x63\x87\x39\x62\xc8\xbc\xf8\x30\xc3\x62\xe0\x26\x05\x8c\x89\xbb\x9b\x11\xb7\x47\xb0\xec\x62\x40\x74\x46\xc2\x6d\xfc\xe7\xf1\x4c\x87\xbb\x19\x0d\x87\xc3\x2e\x1e\xc7\x5c\xb8\x9b\xa1\xb0\x35\x06\x6e\x23\x7f\x69\x26\xc2\x8d\x66\xc0\x6d\x33\x8e\x31\x0e\x6e\x36\x00\x6e\x81\x18\x36\x0b\x6e\x35\xfd\x6d\xc7\xd6\xad\x06\xc1\x80\xd1\x6f\x0b\xc4\x6d\xa6\xc0\x61\x73\x5f\xe0\x1e\x6f\x37\xf1\xfd\x14\x8c\x7b\x81\xc5\x6d\x37\xe8\x7d\x81\xa6\xbc\x88\xb5\x0c\x98\xef\xbe\x50\xc3\x5d\x60\x51\x51\xc6\xba\x47\x31\xd3\xfd\x64\x0c\x74\x81\x1d\xdc\x6a\x94\xfb\xe2\xcc\x71\x61\x71\x93\xe5\x61\x81\xf8\xaa\xf3\x68\x57\x24\xb6\x42\x16\x04\x78\xd9\x27\x5c\x38\x59\x57\x1c\xdb\x45\x0a\x36\x82\x68\x60\x56\x87\x76\x5a\xd1\x72\xa4\x13\x84\x37\x72\x4f\xa7\xd5\xf5\x26\x4e\x2e\x2e\xaf\xdf\x5f\x9e\x9f\xdd\x5e\x5e\xac\x4a\xaf\xeb\xfb\x3d\x28\x55\x6e\xb7\xdb\x8c\x3a\x32\xe5\x86\x3f\x1a\x42\xbc\xe1\x67\xb1\x29\x42\x76\x44\x9a\x66\x83\xff\xf6\x61\x12\xed\xce\xbc\x6c\x67\x3e\x11\xba\x7d\x71\xd7\xcf\xdc\x3e\xc0\x0c\x8c\x99\x34\xd2\xd3\x5c\x16\xb9\xb2\xf1\xe8\xe4\xea\xc2\x67\xd6\x72\x91\x15\x4d\xbe\xdd\x34\xf1\xe1\xc3\xd5\x85\x1a\x13\xf2\x35\xcb\x68\xa3\xc0\x76\x95\x4b\x71\xa8\xc9\xb7\xef\xde\xfc\x07\xe4\x85\xc0\x13\x56\x48\xe4\xb6\xe3\x06\xa7\x03\xed\x44\x70\x75\x00\x13\x05\x1b\x98\x65\x46\x2b\x43\xcb\x14\xf6\x90\xd4\x20\xa5\xcc\x59\x51\x19\xba\x79\xc7\x88\xef\x70\xb0\x6d\x9e\x57\x17\x0a\xde\xc1\x08\x7c\x1b\x5e\x3c\x63\x1a\x73\x6f\xb7\x47\x08\x0f\xec\xf8\xa0\xad\xfb\x01\x56\xee\xee\x3d\xdb\x30\x27\x6b\xb7\xb8\xa7\xca\xda\x07\x37\xcc\x7c\x10\x4f\x42\x56\xae\x6d\x66\xa1\x2d\x06\x21\x24\xe2\xf0\xaf\x35\x43\x80\x99\x64\x6b\xe3\xd9\x48\x5d\xb4\x84\x9c\xcd\x28\x0b\xf6\xb6\x90\xb6\x4d\xbd\xd2\xd6\x2c\x3f\x6c\x75\xeb\x7b\x9f\xf4\x15\x37\x87\x36\x7f\x6d\x16\xd0\x1e\x33\x7f\x05\xde\x17\xfc\x01\xe3\x40\xbb\xbf\x34\x13\x27\x1a\x78\x22\x63\x6d\x56\xe4\xbf\xff\xe7\xab\xff\x3f\x00\x00\xff\xff\xb6\x57\x7d\x80\x3a\xfc\x01\x00") +var _operatorsCoreosCom_subscriptionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7b\x73\xdc\xb8\x95\x28\xfe\x7f\x3e\x05\x4a\x49\x95\xa4\x44\xdd\xb2\xb3\x73\x93\x5c\xdf\x54\x52\x1a\x49\x4e\xb4\x63\x7b\x74\x2d\xd9\x53\xfb\x9b\xcc\xdd\xa0\x49\x74\x37\x22\x12\xe0\x10\x60\xcb\xbd\x9b\xfd\xee\xbf\xc2\x39\x00\x48\xf6\x83\x00\x5a\x2d\xd9\x93\x11\xfe\x48\xc6\x2d\xf2\x10\x8f\x83\xf3\x7e\xd0\x8a\x7f\x64\xb5\xe2\x52\xbc\x22\xb4\xe2\xec\x93\x66\xc2\xfc\x4b\x8d\xef\xfe\xa0\xc6\x5c\x9e\x2e\x5e\xfe\xe2\x8e\x8b\xfc\x15\x39\x6f\x94\x96\xe5\x7b\xa6\x64\x53\x67\xec\x82\x4d\xb9\xe0\x9a\x4b\xf1\x8b\x92\x69\x9a\x53\x4d\x5f\xfd\x82\x10\x2a\x84\xd4\xd4\xfc\xac\xcc\x3f\x09\xc9\xa4\xd0\xb5\x2c\x0a\x56\x8f\x66\x4c\x8c\xef\x9a\x09\x9b\x34\xbc\xc8\x59\x0d\xc0\xdd\xa7\x17\x2f\xc6\x5f\x8d\x5f\xfe\x82\x90\xac\x66\xf0\xfa\x2d\x2f\x99\xd2\xb4\xac\x5e\x11\xd1\x14\xc5\x2f\x08\x11\xb4\x64\xaf\x88\x6a\x26\x2a\xab\x79\x05\x9f\x18\xcb\x8a\xd5\x54\xcb\x5a\x8d\x33\x59\x33\x69\xfe\xaf\xfc\x85\xaa\x58\x66\x3e\x3e\xab\x65\x53\xbd\x22\x1b\x9f\x41\x70\x6e\x8e\x54\xb3\x99\xac\xb9\xfb\xf7\x88\xc8\xa2\x84\xff\xc2\x95\xdf\x74\xbe\x09\x3f\x17\x5c\xe9\x6f\xd6\xfe\xf4\x86\x2b\x0d\x7f\xae\x8a\xa6\xa6\xc5\xca\x5c\xe1\x2f\x6a\x2e\x6b\xfd\xae\xfd\xf2\xc8\x3c\xd3\xfe\x97\x7d\x88\x8b\x59\x53\xd0\xba\x0f\xe0\x17\x84\xa8\x4c\x56\xec\x15\x81\xf7\x2b\x9a\xb1\xfc\x17\x84\xd8\x1d\x04\x78\x23\x42\xf3\x1c\xce\x84\x16\xd7\x35\x17\x9a\xd5\xe7\xb2\x68\x4a\xe1\xbf\x96\x33\x0f\xef\x15\xb9\x9d\x33\x52\xd1\xec\x8e\xce\x98\xfb\xd2\x84\xe5\x44\x4b\x78\x98\x90\x7f\x28\x29\xae\xa9\x9e\xbf\x22\x63\xb3\xa5\x63\xb3\x63\xf6\x4f\x78\x16\xd7\xf8\xb2\xfd\x4d\x2f\xcd\xe4\x94\xae\xb9\x98\x6d\xfb\x5c\x46\x35\x2d\xe4\x8c\x20\x0e\x91\xa9\xac\x89\x9e\x33\x62\xc0\xf3\x29\x67\xb9\x9b\xcf\x96\x19\xe0\x6b\xbd\x39\xdc\x74\x7f\x8a\x9a\xc2\x9c\x0a\xc1\x0a\x22\xa7\xa4\xa9\x72\xaa\x99\x22\x5a\xb6\xeb\xdf\xbe\x7c\xfb\x62\xef\xeb\xe7\xbd\xdf\xd6\x3e\x8f\x0f\x2d\x5e\xd2\xa2\x9a\xd3\x97\x78\xb8\xd9\x9c\x95\xf4\x95\x7d\x43\x56\x4c\x9c\x5d\x5f\x7d\xfc\xb7\x9b\xde\xcf\xa4\x3f\xed\x2e\x92\x91\x3b\xc6\x2a\xd5\x22\x35\x69\x2a\x33\x7f\xb3\x10\x32\x59\x12\x5d\xd3\xec\x8e\x8b\x19\x2c\x73\x06\x6b\xf3\x30\x09\x39\xc7\xed\x57\x63\xff\x1b\x4e\x59\x4e\xfe\xc1\x32\xed\x7f\xac\xd9\x8f\x0d\xaf\x59\xde\x4e\x67\x44\xdc\x25\xef\xfc\x64\x76\xc5\xff\xb3\xaa\xcd\x94\xb4\xbf\x43\x38\x3a\xd4\xa5\xf3\xeb\xca\xf2\x0e\xcd\x0e\xe0\x53\x24\x37\x64\xc5\x4c\x7b\xce\x1c\x6a\xb3\xdc\x6e\x9a\x39\x32\x3d\xe7\x8a\xd4\xac\xaa\x99\x62\x02\x09\x4d\x0f\x30\x31\x0f\x51\x61\x57\x34\x26\x37\xac\x36\x60\xcc\xc5\x6b\x8a\xdc\x50\xa3\x05\xab\x35\xa9\x59\x26\x67\x82\xff\x97\x87\x0d\x48\x60\x3e\x5a\x18\x8c\xd0\x2b\x30\xe1\x2a\x09\x5a\x90\x05\x2d\x1a\x76\x42\xa8\xc8\x49\x49\x97\xa4\x66\xe6\x2b\xa4\x11\x1d\x78\xf0\x88\x1a\x93\xb7\xb2\x66\x84\x8b\xa9\x7c\x45\xe6\x5a\x57\xea\xd5\xe9\xe9\x8c\x6b\x47\x55\x33\x59\x96\x8d\xe0\x7a\x79\x0a\x04\x92\x4f\x1a\x73\x98\xa7\x39\x5b\xb0\xe2\x54\xf1\xd9\x88\xd6\xd9\x9c\x6b\x96\xe9\xa6\x66\xa7\xb4\xe2\x23\x98\xba\x40\xb2\x57\xe6\xbf\xac\x2d\x1d\x56\x87\xbd\xb9\xae\xa1\x20\x0e\xa0\x63\x03\x27\x60\x88\x19\xe1\x8a\x50\xfb\x2a\xae\xa2\xdd\x68\xf3\x93\xd9\x9d\xf7\x97\x37\xb7\xc4\x7d\x1a\x0e\x63\x75\xf7\x61\xdf\xdb\x17\x55\x7b\x04\x66\xc3\xb8\x98\xb2\x1a\x0f\x71\x5a\xcb\x12\x60\x32\x91\x57\x92\x0b\x0d\xff\xc8\x0a\xce\xc4\xea\xf6\xab\x66\x52\x72\xad\x00\x2f\x99\xd2\xe6\xac\xc6\xe4\x1c\x58\x0d\x99\x30\x7b\x8d\xf3\x31\xb9\x12\xe4\x9c\x96\xac\x38\xa7\x8a\x3d\xfa\x01\x98\x9d\x56\x23\xb3\xb1\x71\x47\xd0\xe5\x92\xab\x0f\xaf\xdc\x3f\x42\x1c\x0b\xdb\x72\x5e\x5d\x82\x70\x53\xb1\xcc\x5f\x1b\x2a\xc8\x59\x55\x15\x3c\x83\x9b\x41\xf4\x9c\x6a\x92\x51\x61\x76\x89\x0b\xa5\x69\x51\x00\xd3\x08\x7e\x7f\x13\x0d\x20\x70\xe9\x3b\x4c\xc0\xfd\xd4\xa3\xca\xfd\x1f\x3d\xab\xea\xfd\x75\x33\xad\x30\xc3\xd2\xd8\xd5\x9f\xb7\x6e\x2a\x41\x09\x63\xca\x67\xeb\xaf\x6c\xdd\xb1\x73\x78\x01\x24\x13\xca\x85\xb2\x00\x9a\x1a\xf7\xac\xe5\x45\x53\x59\xaf\x01\x25\xe6\x8a\x74\x60\x8d\xb7\xcc\x74\xc3\x8e\x0e\xaf\xdc\x0c\x26\x16\x9b\x7e\x5e\x59\xca\xa5\x58\xe0\x55\x35\x52\x88\x21\x77\x4c\x2c\x78\x2d\x45\xc9\x84\x26\x0b\x5a\x73\x3a\x29\x2c\x53\x63\x9a\xf0\x55\xfa\xe8\xe7\x69\x6e\x1b\x6e\x01\xab\x37\x5d\xa7\x8d\xef\xe1\xea\x68\x5d\xd3\xe5\xc6\xbf\x73\xcd\xca\x8d\x6b\xdb\xb4\x8c\x8f\xb4\xee\x50\x0a\x83\xbc\x9b\x96\x42\xec\x03\x5b\x80\x1a\xea\x4c\x28\x39\xf7\x4b\xd9\xb6\xde\xa1\x73\xc1\xb1\x19\xe7\xdb\xb1\x01\xfb\xdb\x31\x7c\xb4\x38\x40\x1e\xd8\xfa\xd7\x95\x0d\x32\x77\x07\x59\x1e\xdb\xb8\x2f\x63\xf2\xb6\x51\x70\x62\x74\x00\x24\x21\xe7\xff\x79\x75\x71\xf9\xee\xf6\xea\xf5\xd5\xe5\xfb\x6d\x9b\x43\x86\xaf\x58\x3b\x80\x2f\x44\x2f\xe1\xf0\xa3\x3b\xc3\x9a\x4d\x59\xcd\x44\xc6\x14\xf9\xd5\xd1\xc7\xb3\xf7\xff\xf9\xee\xec\xed\xe5\x31\xa1\x35\x23\xec\x53\x45\x45\xbe\x42\x97\x56\x47\xa3\x1c\x0b\xaa\x6a\xb6\xe0\xb2\x51\x96\xe6\xe5\x5b\xd0\x9f\x1b\xea\xb7\xed\xac\x70\x78\xec\x07\x7e\x4e\xc5\x92\x28\x56\x2f\x78\xb6\x79\xbb\xd5\x98\x5c\x4d\x03\x5b\xed\x51\x36\xf3\xb7\xc9\x30\xcb\x62\xc1\xf2\x13\x98\xbc\xdf\x06\x3b\x3f\xc2\x45\xd5\x6c\xc7\x6c\x33\x2c\x43\xbe\xe7\x45\x01\xb7\x53\xa0\x64\x97\x8f\x41\x9a\xed\x6e\xa6\x5a\x0a\x4d\x3f\x59\x7a\x3f\x08\x93\xa9\x8c\x56\x2c\x27\xf7\x5c\xcf\x09\x25\xb9\x6c\xcc\xa4\x7f\xf5\xab\x13\xc2\xd9\x2b\xf2\xab\x0e\xd0\x31\xb9\xb4\xcf\xb6\x27\x38\x08\x1a\xe6\x29\xd8\x82\xd5\x66\xb6\xee\x6c\x4f\x48\xcd\x66\xb4\xce\x0b\xa6\x94\xc1\xe9\xfb\x39\xd3\x73\x86\xc2\xbf\xdb\xb4\xe1\x19\x7f\xe2\x86\xf1\xcb\x9a\x08\xa9\xc7\xe4\x82\x4d\x69\x53\x80\x24\x40\x0e\x0e\xc6\x87\x7b\x41\xeb\xd7\xb5\x2c\xa3\x51\xfb\xa6\xaf\xc1\x6c\xc2\x98\x43\x85\x70\x87\x2e\x1d\xe9\x12\x5e\xc5\x72\xc2\xa7\x56\xf6\xe2\xca\x2c\x95\xb0\xb2\xd2\xcb\xf0\xb5\x1d\xa4\x6b\x24\x92\x3c\x11\xcf\x4d\xdf\xd2\xea\x1b\xb6\x7c\xcf\xa6\xc3\x0f\xaf\xee\x09\x2b\x58\x66\x08\x39\xb9\x63\x4b\x10\xc4\xc9\xb9\x03\x37\xbc\x09\xd1\xcb\x20\x11\x64\xda\x8d\x91\x99\x46\xe0\x99\xd8\x6d\x31\xe3\x8e\x2d\xc3\x0f\x91\x75\x8d\xd3\x6c\x06\x70\x63\xb3\x3b\xa1\x7d\x20\xb1\x28\xeb\x46\x88\xa7\x6c\x9c\xd6\x61\x97\xb9\xd8\x9b\xad\x37\x8a\xcc\x77\xcd\x84\xd5\x82\x69\x06\x52\x73\x2e\x33\x65\x04\xe6\x8c\x55\x5a\x9d\xca\x85\xa1\x97\xec\xfe\xf4\x5e\xd6\x46\xe9\x1c\x19\x7a\x32\xc2\x33\x54\xa7\x60\x60\x39\xfd\x25\xfc\x5f\xc4\xfc\x08\xb9\xfd\xf6\xe2\xdb\x57\xe4\x2c\xcf\x89\x04\xe2\xd0\x28\x36\x6d\x0a\x32\xe5\xac\xc8\xd5\xb8\xa3\x4b\x9e\x80\x3e\x73\x12\x05\xb4\xe1\xf9\x9f\x87\xc8\x83\x1b\x49\x7b\x2e\x2b\x34\xb2\x24\xef\xfb\x0d\x08\x97\xcb\x1e\xfd\xf3\x57\xc4\x50\x37\xae\xe3\xf6\xca\xe0\x54\x69\xd9\xbf\x65\x84\xd1\x8b\x9c\x48\x59\x30\xba\x4d\x2e\xc4\x01\x9b\x9e\x7a\xff\x0f\x5b\x02\x00\xef\x3b\x04\xab\x64\xfe\x8a\xa8\xa6\xaa\x64\xad\x95\x57\x84\xc0\x9e\x14\x3e\xc4\xde\xe3\xa0\x4b\x9c\x90\xbf\xfb\x1f\x0b\x3a\x61\x85\xfa\xfe\xf0\xf0\x8f\xdf\x5c\xfe\xc7\x9f\x0e\x0f\x7f\xf8\x7b\x18\x62\xfb\x76\xc7\x5a\xd9\x03\x41\xd0\xde\x25\x73\x50\x60\xc2\x10\xd1\x38\x85\xc2\xc3\x59\x96\xc9\x46\x80\x91\xef\x84\x28\x4d\x75\xa3\xc6\x73\xa9\xf4\xd5\xb5\xff\x67\x25\xf3\xab\xeb\x08\xa8\x9d\xa7\xd5\x20\x8f\x23\x8f\x45\x40\xe1\x18\xaf\xa9\x9e\xef\x91\x8c\x6e\xb3\x09\x6d\x1e\x3d\x04\x73\x56\x22\x8b\x57\xd6\x2c\x64\xfe\xf3\x75\xe4\x44\x71\x70\x45\xee\x6b\xae\x35\x13\x20\x87\xb1\xba\x34\x52\xc9\x89\xb9\x49\xad\x58\xb1\x78\x79\xb0\x77\x62\xed\xf7\x33\x79\xe9\xe6\x25\xb7\x6e\xbc\x5c\x9e\xa5\xc4\xc8\xba\x6e\xb4\xda\xed\xd9\xf5\x95\xb3\xb0\xed\x75\x99\xce\x3a\xf4\xfa\x81\x14\xc4\x5b\x99\xec\xa2\xbd\xb4\xfe\x8a\x48\x51\x84\xf8\x7a\x3b\x0f\x45\x0a\x0e\xd6\x23\x23\xe4\x7b\x0b\xd2\x11\xfe\x38\xce\xaa\xe6\xc4\x3e\x30\x2e\x59\x29\xeb\x65\xf8\x5e\xda\xc7\x59\x35\x67\x25\xab\x69\x31\x52\x5a\xd6\x74\xc6\x4e\x3c\x78\x04\xeb\xff\x85\x80\xc3\x17\xa3\x33\xc1\x75\xe8\xa8\x2c\x65\x4d\x6d\x58\x75\xb1\x74\xf4\x94\xe5\x9f\x87\x32\xb8\xed\xdd\x23\x61\xf0\x27\xfc\x6e\x27\x91\xc6\x5b\x00\xac\xd9\xdd\xad\x05\x64\xf4\x85\x2c\x9a\x92\xa9\x38\x99\xc1\xb1\x77\x78\x93\x89\x85\x91\xe8\xd5\xde\x85\x88\x9c\x2f\xb8\x92\xf5\x8e\x32\x04\xb7\x46\x72\xd9\xe8\xaa\xd1\x66\xa6\x25\xd5\xf6\xae\x44\x2d\x92\x7d\xaa\xa4\x02\xbd\xce\xde\x93\x15\xf2\xf7\xf2\x20\x02\x4c\x45\xb5\x66\xb5\x78\x45\xfe\xdf\xd1\xdf\x7e\xf3\xcf\xd1\xf1\x9f\x8f\x8e\xbe\x7f\x31\xfa\xdf\x3f\xfc\xe6\xe8\x6f\x63\xf8\x8f\x5f\x1f\xff\xf9\xf8\x9f\xee\x1f\xbf\x39\x3e\x3e\x3a\xfa\xfe\x9b\xb7\x7f\xb9\xbd\xbe\xfc\x81\x1f\xff\xf3\x7b\xd1\x94\x77\xf8\xaf\x7f\x1e\x7d\xcf\x2e\x7f\x88\x04\x72\x7c\xfc\xe7\x5f\x45\x4c\x8e\x8a\xe5\xb7\x41\xf2\x43\x00\x9b\xf1\xe0\xb8\xd0\x6c\xc6\x36\x19\xfd\xb6\xbd\x11\x79\xd4\x84\x7c\x1a\xb5\x82\xf4\x88\x0b\x3d\x92\xf5\x08\x5f\x7e\x45\x74\xdd\x84\x8f\xcc\x1d\x53\xfa\xbd\x78\xef\xee\x74\xc7\x70\xef\x58\xc7\x5e\x91\x5a\xb1\xac\x66\x7a\x3f\x7a\x23\xc2\x72\x56\x92\x4a\xe6\x87\x61\xb9\x58\x6c\x34\x36\x6f\x5b\xd0\xbf\xac\xaa\xe9\x84\x23\xdc\xc1\x56\x4a\x98\xd6\xb2\x1c\x13\x30\x1a\x46\x11\x88\x09\x23\x94\x2c\x68\xc1\x73\x07\xeb\x8e\x0d\x5a\x22\xdc\x78\x56\x5f\x7f\x4e\xea\xeb\x0d\xe2\x06\xea\xae\x11\xd7\x00\xc7\xfe\x75\x57\x26\x16\xdb\x0d\x78\xab\x9e\x07\xf3\x64\xdf\x89\xe2\x84\x45\x2d\x49\x25\xab\xa6\xa0\xba\x67\xd4\xdb\x32\xc1\x55\x7b\x73\xd7\xa3\x62\xef\x63\x6b\xa8\x36\xe8\x05\xbe\x8a\x41\xc9\xc9\xed\x0c\xed\x1b\xee\xc9\x59\x51\x10\x2e\xf0\x3e\x02\x58\x67\x11\xae\x19\xca\x81\x84\x6e\xc3\x53\x2a\x08\x5b\x30\xa1\xcd\xb9\xad\x4c\xd3\x6c\x82\xd2\xb4\xd6\x5c\xcc\xc6\xe4\x3b\xf3\x77\xa4\xc2\xd6\xe0\xba\xd5\x7d\x54\x36\x85\xe6\x55\xc1\x88\x97\x1e\xd0\x96\x5b\x34\x8c\x50\xa5\x64\xc6\xa9\x76\x16\x66\xf4\xab\x2b\x3d\xbc\x70\x58\x8f\xa6\x77\x60\xe2\xcf\x58\xce\x44\xc6\xc6\xe4\x23\xb8\xd3\xfd\x1e\x4e\x96\x66\x35\x97\x62\xe1\x6d\xd7\x0d\xba\x3b\xb7\x41\x35\x6b\xd9\x0c\xf9\xaa\x2c\x1b\x0d\x8e\x94\xc7\xf7\x74\x19\x7c\xb3\x16\xe3\x8e\xc3\x0b\xc8\xb4\x57\x72\x28\xf8\xeb\xe4\x74\xeb\x5d\xf0\x86\xa2\x6d\xe7\x1c\xc1\xd8\x62\x98\x90\x37\x01\x07\xf8\xf8\x1a\xf7\x69\x2d\x59\x7d\xae\xf3\x74\xd6\xeb\x18\x6e\xf2\x65\x73\x92\x54\x2e\x12\xc5\x21\xa2\xb9\x43\x2c\x67\x48\x30\x6a\xa6\x51\xfa\x38\x0b\x65\x55\xb3\x29\xff\x14\x8d\x9b\x67\xa2\x55\xe9\x78\xce\x84\x36\xea\x53\x0d\xa4\xbe\x66\x15\x13\x60\x4b\x61\x34\x9b\x07\xd9\x97\xa5\xf2\xad\x57\xa3\xf5\xc1\xee\xd7\xcf\x8a\x12\x57\xea\x05\xbc\xd9\x24\xf3\x3d\xdf\xbe\x9f\xdd\xed\xb3\x78\xb0\xdf\xab\x27\x64\xce\x50\x53\xdb\x66\xb4\x58\x39\xdb\xce\xf3\x36\xb6\xcc\xfd\xeb\x7e\xce\xb3\xb9\x9f\x9e\xd1\x7f\xb7\x04\xdb\x10\x1b\xa8\x52\x49\xb8\xa3\x53\xae\x89\x34\x12\x8a\x99\xcb\x98\xdc\x6c\x80\x57\x52\x9d\xcd\xed\x13\x87\x5b\x95\x46\x74\x1b\x78\xef\xad\x05\x3f\x41\x93\x72\xde\x14\x2c\x27\x2e\x7c\x0a\x3f\xd5\xa2\xe4\x16\x88\x31\x88\xda\x0b\x34\x3a\xa5\x4a\xf1\x99\x18\x55\x32\x1f\x99\x6f\x9c\x6e\x46\xa3\xe0\x15\xed\x86\xfc\x86\xae\x69\x00\x13\xbd\x29\x28\xe6\x78\xdf\x7b\xfb\x6a\x47\xa2\xc9\x64\x59\x35\x9a\x75\x8c\xaf\x4e\x83\xde\x32\xa3\xc9\x12\xa3\x01\x3b\x72\x73\x2b\x97\xa5\x12\x82\xfe\xfe\x96\x54\xd0\x19\x1b\xd9\x29\x8d\xfc\x94\x46\xfe\x5b\xbb\x6e\x79\x98\x1e\xa2\x89\x78\xfb\x3d\xee\x6f\xe5\x1b\x34\x50\xe3\x8f\x13\x6b\xd8\x2b\xe9\x27\x5e\x36\x25\xa1\xa5\x6c\x04\xa8\x28\x76\x25\x03\xd7\xb8\xdd\x76\x5a\x14\xf2\x9e\xe5\x9f\x6b\x0b\xa3\xb6\x91\x24\x62\x2f\xf9\x52\x0d\x8e\x41\x43\x63\xbc\x81\x31\xda\xb0\xb8\xa3\x41\xd1\xf9\x17\x62\x51\xf3\xbd\x73\x98\xac\x20\x27\x17\x0f\x40\x4e\x47\x13\x20\xa2\xca\x7f\x81\x2b\x22\x4b\xae\xb5\xb5\xd8\xd3\x96\x26\x0c\x99\x4a\xb8\xee\x99\xad\xed\x55\xe2\x53\x24\xde\x5c\x11\xf6\xc9\x28\x88\x1c\x5c\x26\xce\xf9\x75\x82\xec\xfd\x9e\xab\xa1\x09\x6b\x69\x74\x4d\x5e\x56\x05\x2b\x5d\xb0\xf9\xc8\x29\xa2\x18\xd9\xf3\x7c\xbd\x9e\xaf\x97\x1b\x2a\x5e\x36\xea\x8a\x45\x68\x1c\x99\xb0\xa2\x15\x8f\x0c\xfa\x57\x32\x57\x56\x26\x71\x48\xb3\x2d\x26\x97\x90\xcb\x4f\x5c\x41\x8c\xfe\x7b\x06\xd6\x90\x1b\xa6\x15\xb9\x9f\x4b\xc5\x10\x0e\xad\x99\x85\x8e\x26\x14\x60\xb9\xd6\x7e\x34\x20\x75\x49\x08\x29\x9f\x4e\xfb\xef\xe5\xac\x2a\xe4\xb2\x04\x49\xfd\x4a\x77\xa5\x2e\x2b\x4a\x6d\x83\xc8\xca\xaa\xa0\x9a\x1d\x2a\x2b\x7e\x0d\xd9\x5d\x1e\xc4\x7d\x61\x36\x97\x9f\x8c\x54\xa2\xda\x4c\xb4\x4d\xa3\x77\x2a\xab\xaf\xf5\x0d\x84\xfd\x33\x1a\xa4\x73\x40\xdd\x4a\xcc\x7e\xb8\x05\xcd\xa6\xfd\x05\xce\xe2\xec\xdd\xc5\xf6\xc3\x0c\x9b\x9e\x48\xc8\xfc\xb4\xb6\xb4\xb3\x55\x14\xeb\x4c\xa9\x2f\x9b\x0f\x2a\x09\x98\x4f\xe0\xe2\xe6\x31\xd3\xe5\x04\x0d\x86\x27\x36\x88\xd6\x67\x26\xe1\xc3\x35\x83\x84\x9a\x00\x54\x74\x5c\x18\x00\x36\x7b\xe6\xe1\x3a\x6b\x8c\xe7\x26\xe4\xb5\x19\xf9\xc5\xec\x41\x39\x8e\x70\xe9\xf4\x8e\xcc\xec\x48\x8f\x3c\x40\x18\xa1\xd9\x53\xf4\xee\x44\x1c\x17\x81\x68\x9b\xaa\x00\x5f\xb1\x8c\x8b\xc0\x8c\x52\x53\x71\x53\x92\x96\xe3\xd1\xa2\x1b\xf0\x6f\xd6\x74\xa8\x10\x49\xcc\x8d\x9b\xf3\x2a\xb8\x20\xc3\x95\xad\xa5\xd4\xe7\x5a\x7d\x04\xab\x78\x9b\x13\x67\xee\xd8\x95\x38\x21\xef\xa4\xbe\x12\x61\x47\xcb\x25\xda\xba\x0d\xfe\x5d\x48\xa6\xde\x49\x0d\xbf\xec\x6d\xc3\x70\x9a\x49\xdb\x85\xaf\xc0\xd5\x14\x48\x09\xc0\x49\xd1\x49\xce\x82\x78\xf4\xf0\x6e\x19\x32\xee\xb6\x9e\x2b\x72\x25\x88\xac\xed\xbe\xb4\x16\x7b\x65\x3f\x51\xc6\xf8\x06\x27\x8c\x08\x29\x46\x18\x98\x6c\x24\xb8\xd5\x6f\x5c\xfa\x58\xed\xee\x6e\x86\x8f\x61\xe3\x74\x20\x8a\x1c\x3f\x75\x6b\xb8\x0f\xfe\x05\x93\x00\x0b\x9b\x03\x1b\xd8\xd7\x06\x36\x0d\x52\xdb\xa8\x66\x33\x9e\x91\x92\xd5\x33\x66\x84\x9d\x6c\x1e\x77\xc8\xc3\xb4\x18\x47\x90\x22\x77\x01\x0e\x62\x0d\x30\xa2\x37\xc0\x23\x53\x58\x17\xbe\x81\xe4\xbc\xa4\x95\x41\x98\xff\x36\x94\x19\xf6\xf4\x7f\x48\x45\x79\xad\xc6\xe4\x6c\x60\x86\x8a\x8b\x59\xc1\x7a\x6f\x59\x8b\x67\xf7\x03\x06\xb6\x11\xac\x7f\x6c\xf8\x82\x16\x43\x99\x39\x4e\x86\x66\x28\x41\x9b\x19\xad\x32\xd9\x13\x2b\xa7\x18\xea\x86\x71\x6d\x5c\x91\x83\x3b\xb6\x3c\x18\x42\x98\x55\x94\x3b\xb8\x12\x07\xc8\x81\xd6\x90\xc8\xb3\xab\x40\xd4\xd8\x01\xbc\x75\xf0\x10\x8e\xbd\x67\x61\x3c\x80\x29\x5a\x16\xac\xee\xa6\xda\xaf\x8e\xbe\x79\xb8\x7d\x1a\x16\xe4\xc3\x2a\xba\x70\x1e\xdb\x13\x76\xeb\x6c\x6d\xe6\x26\xb7\x33\x02\x94\xd5\x9a\x66\x73\x48\x3f\x77\x33\x1a\x10\x1b\xa8\x58\x12\x73\xaa\x1a\x39\x22\x20\x95\x55\x4d\x75\x0d\x6e\xc9\x3f\x7a\x1c\x3e\x61\x20\xc1\xfe\x09\x73\x88\xb6\x1f\xa1\xc3\x72\x43\x2c\x3c\x6e\xfd\xd1\xfd\xd7\x9f\x1e\x90\x57\x16\x23\x22\xe0\x24\xa3\x05\xba\x4b\x78\x9c\x70\x91\x83\xf3\xd3\x2e\x1d\x76\x04\x21\x99\x7d\x2c\xc3\x04\xee\xd2\x90\x56\x52\x32\x2a\x94\x33\x9d\x82\xaf\xb4\x05\xa4\xac\x5b\xb8\xa3\x3c\x5b\xe3\x52\x04\xcf\x03\x54\x7b\x27\x6f\xac\x55\xf5\x84\x5c\x83\x95\xbf\xfd\x05\xee\xec\x3b\x79\xf9\x89\x65\x8d\x1e\xcc\x94\x89\xe2\xb6\x01\x21\xab\xb7\x85\xdf\xb4\x02\x16\xae\xb7\x27\x60\xb5\xb7\xc2\x89\x50\xc3\x32\xac\x1c\x0f\xee\xe5\x1d\x5b\x2a\xcf\x2c\xad\x68\x07\x6c\x6d\x98\x2d\x7a\x3c\x74\xac\x10\x79\xeb\xff\x71\x46\xd3\x72\xc2\x05\x4e\x12\x3f\xeb\x0e\x7d\x10\xa8\x99\x95\x3b\x1e\x23\xb3\x17\x05\x4e\xef\xa1\x9b\x1f\x23\x17\xf6\x4e\xe0\xdb\x48\x99\xb0\x5f\xc4\x60\xc3\xec\x1c\xcd\xdf\x2c\x09\x76\xc4\xbb\xcb\x1f\x1b\x5a\xb4\xe9\x63\x81\x23\x75\x8f\x5b\x00\x3d\x9e\x67\xfe\x7c\xcf\x8b\x3c\xa3\xb5\x8d\x30\x05\x5a\x33\x08\x51\x49\xc4\x2f\x0a\x44\x30\xa3\xc2\x53\xba\x16\x53\x14\x86\x02\x54\xb4\xd6\x3c\x6b\x0a\x3a\x2c\xe1\xdb\xca\x25\x11\x09\x62\x81\xb3\x6b\xd1\xfd\x86\x65\x52\xe4\xf1\xaa\xe5\xed\xea\x9b\xab\x11\x0e\x15\xab\xb9\xcc\x87\x02\x1b\x60\x02\xbc\x64\xab\x17\xef\xa8\xef\x27\x92\x53\x47\xdb\x3c\xc1\x08\xdc\x1e\x67\xe4\xb3\x15\x07\x9c\x78\xc1\x67\x42\xd6\x2c\x3f\x6e\x19\x4d\x4b\x05\x86\xc9\xe5\xd7\x4b\x67\x6d\x3c\x21\x5c\xbb\x1c\x3d\xc5\xf4\x89\xf3\x41\xd9\x6b\x68\x8f\xd5\x83\x1d\x84\x3a\x95\x35\x24\x4c\x1e\xe5\x12\x73\xfe\x16\x3c\xd3\xc7\x63\xf2\xff\xb1\x5a\x02\xda\x0a\x36\xa3\x9a\x2f\xbc\x64\x73\xcf\x8b\x62\x10\x22\x78\xd5\x18\xc5\xa8\x20\xf2\x82\x1c\x01\x48\xc2\xcb\x92\xe5\x9c\x6a\x56\x2c\x8f\xd1\x9e\xc3\x88\x5a\x2a\xcd\xca\x30\x02\x85\x8d\x6b\x18\x83\x0c\x4f\xfe\xee\xab\xad\xcf\xa5\x65\x10\x7f\x74\xb9\x90\x2d\x99\xc6\x18\xa3\x15\x54\xb1\x12\x40\x90\x46\x6f\x55\x57\xba\xf1\x4b\xb6\x58\x88\xd3\x3c\x62\x91\xec\x1f\x06\x4f\x29\xa9\x19\x54\xef\xb1\x37\xee\x01\x37\x13\x63\xd6\xdf\xca\x46\x6c\xb3\xd7\xf7\xb6\xea\x8d\x35\x54\x7d\xec\xbc\xd6\x56\x01\x58\x89\x4e\x7b\x64\x41\xaf\x33\x87\x8e\xe7\x80\x12\x70\x17\x80\x80\x65\x88\x1c\x3e\x65\xe3\xe2\xb6\xcb\x7a\xa1\x69\xef\x29\xb7\x1f\xe6\x36\x90\x42\xf4\xe0\xec\x7f\xff\x81\x68\xec\x87\xa4\x1f\x1b\x36\xd8\x0f\xdb\xa3\xda\x12\x1c\xc0\x5a\xd8\xc7\x61\xd6\xe3\x51\x1a\x66\xc1\x72\x1b\x09\x0c\xf4\xc6\x82\x25\x87\xaf\x0e\x1f\xcc\x48\x70\x91\xb5\xac\xe8\x0c\x6e\x66\xf4\x5a\x57\x5f\x24\x39\xd3\xac\x2e\xa1\xac\xc9\x5c\xde\xe3\xdf\x81\xa1\x0f\x2e\xb4\xb2\x10\x58\xde\x56\x98\x99\x4b\x05\xfc\xba\x9f\xf0\x0f\x74\x00\x42\x26\xee\x03\xba\x3d\xad\x65\x23\x72\x2b\x07\x7b\x82\xff\x76\x65\xc2\xef\xa4\x00\x4a\xd5\x28\x4c\xce\x5f\xab\x8d\xd3\x1f\x9e\x1b\x4d\x98\xa6\xe6\x82\xbe\x1c\xbf\x7c\xf1\xe0\xed\x4f\xaa\x30\x01\x06\x95\x15\xfb\xbd\x8b\xc8\x71\xb7\xf3\xc1\x33\xaa\x19\xcd\xbf\x15\x45\xbc\x5c\xfe\x16\x11\x14\x5e\x1c\x19\xa5\x1d\xbc\x79\x75\x03\xf9\x55\x34\x1f\xdd\xd7\x5c\xb3\x28\x07\x1e\x21\x47\x53\x5a\x28\x46\x64\x4d\x1a\xe1\x15\x98\xe3\x7e\xfd\x00\x78\x24\xbc\xcc\x50\x4c\x9a\x6a\x26\x0f\xba\xdb\x78\x89\x11\x69\xdb\xab\xed\x51\x36\x90\xff\x60\xdf\xde\x70\xcd\xfb\xa5\x12\xc8\x11\x3e\x69\x24\x6c\x29\xf5\xf1\xc3\x03\xd5\x70\xd9\x97\x9f\xaa\x78\xb9\xff\xd2\x56\x85\x20\x55\x68\x0f\x82\x62\x7f\x67\x7f\x06\xf6\xe0\x6b\x36\xa7\x0b\xa6\x88\xe2\x25\x2f\x68\x1d\xc8\x1e\xd4\x92\xdc\xe0\xaa\xc8\xa4\xd1\x9b\x6b\xd2\x6c\xae\x67\x12\xa0\x22\x6d\x3d\x8c\x4e\x3d\x93\xee\x0a\x3a\x9f\x8a\x57\x52\x36\x1c\xaa\x9b\xbf\x39\x15\xa0\x75\x6e\x3d\x66\x0e\x65\xa3\x1b\x5a\x04\xf6\x80\x7d\xca\x8a\x46\xf1\xc5\x43\xee\xbf\xcd\xb9\x4b\x16\x5d\x56\xa5\x96\x4a\xe6\x37\x15\xcb\x9e\x46\x66\xe9\xeb\xa2\x86\x9c\xe6\x0e\xb1\x20\x76\x1f\xcd\x57\x74\xbb\x40\x5f\xd2\x25\xc4\x83\x66\x19\x53\xca\x45\xac\x2f\xbb\x11\xf7\x7e\x55\x5f\x72\xa9\x22\x7a\xaf\x2e\x0b\xaa\x34\xcf\xbe\x2e\x64\x76\x77\xa3\x65\x9d\x50\xf7\xe7\xec\xbb\x9b\xb5\xb7\x57\x4a\x3d\x9d\x7d\x77\x43\x2e\xb8\xba\x1b\x44\xc3\x4e\xa9\x39\x8c\xe6\xe8\x9a\x09\x29\xb9\x6b\x26\xac\x60\xfa\xf0\x50\x21\x8f\x2f\x69\x36\xe7\x62\x98\x25\x58\xd6\x2f\x7c\x02\xa4\x2d\xfc\x67\xce\x23\x35\x9c\xc3\xa6\xe6\x9e\x5a\x4c\xff\x25\xbd\x57\x0c\x97\x3d\x31\xcb\x36\x7f\x66\xe1\xda\x34\x7b\xf2\x65\xe2\x24\xae\x2e\xf6\xe0\xab\x9c\xaa\x5b\x33\xb3\x14\x87\xd5\xe1\x6b\x5e\x30\xd4\x25\x61\x59\x2e\xaa\xd7\xde\x1d\x38\xbf\xa5\x6c\x82\xee\x91\x7b\x8a\xb6\x15\xa0\xdd\x63\x72\xcb\xab\x57\xe4\x52\xa8\xa6\x66\xad\x6d\x6e\xda\xff\x54\x10\x26\x57\x6d\xb6\xb4\x53\x7b\x01\x5f\x50\x0d\x34\x94\xd8\x6a\xc1\xe4\xf2\x13\x2d\xab\x22\x26\x45\xef\x80\x7d\xd2\x5f\x1d\x9c\x90\x83\x4f\x53\x65\xfe\x4f\xe8\xa9\x3a\x18\x93\xab\xd2\x87\x1b\x41\xb1\xc3\x9a\xb9\xd0\x52\x7c\x21\x3c\xd9\x69\x57\x56\x79\x14\x94\x0c\xce\x01\xc3\xa0\x8d\xd4\x9d\x4b\x72\x8f\x35\xb7\x0c\xfb\x63\x75\x2d\x6b\x9f\xeb\xd4\x39\x86\x40\x9c\x39\x8e\x4c\x96\x55\x2d\x4b\xee\x59\x9f\xbd\xae\x7b\x8b\x9f\x06\xa3\x59\x48\xe9\x20\x6b\x98\x8b\x75\x70\xed\xab\xa4\x2f\x8a\x38\xbc\x05\xbc\x0c\xfb\xf6\x3c\xde\x5e\x4d\x5d\x30\x1b\x1a\x16\xac\xd5\x08\x2c\x19\xf6\x21\x83\x89\x11\x9a\x1b\xb1\x52\x7d\x07\x37\xc9\x6b\x9f\xd1\x4e\x4e\x73\xb6\x38\x55\x39\x7d\x79\x02\xd3\x44\xc4\x09\xe7\xe0\xe9\xde\x9a\xa9\x22\x07\x2f\x0f\xc6\xe4\xc6\xc9\x47\x27\xdd\x3d\xf0\xcf\x05\xa1\x4e\x65\xed\x27\x04\x6e\xb9\x17\x07\xe4\x48\xd6\x30\xb3\x8c\x0a\x52\x30\xba\xb0\xae\x27\xa4\x44\xe1\x89\x82\x05\xe6\x38\xb2\xc6\x41\x5c\x02\x77\xc7\x4e\xf5\x6f\xbf\x0d\xb0\x9f\xb0\xee\x42\xd6\x6b\x58\xd8\x88\xfc\x03\xa3\xb4\x1c\x80\x8a\x21\x0d\x0f\x33\x9c\xc7\x88\x35\x50\x48\xd5\x42\x0e\xae\xdf\x6d\x94\xc1\xcb\x55\xcb\x0e\x7e\x60\x0d\xd9\x82\x30\x3b\xc8\x78\x00\xda\xcf\xc1\x93\x73\x3e\x92\x54\x8d\xc8\xb1\xb6\xb4\x73\xf8\x20\xf8\x8f\x0d\x23\x57\x17\xbe\x0e\x11\xab\x15\x57\xda\x50\xb2\x9c\xab\xbb\xd8\x1a\x16\x90\xf6\x63\xc4\x95\xa3\xb3\x92\xfe\x97\x14\xe4\xf2\xeb\x1b\x3b\xa5\xe3\xcf\xb8\x71\x01\x82\x48\xff\xab\xa9\x99\x11\xb0\xe2\x83\xc4\xdc\x1b\xab\x92\x9a\xf9\x9d\x5c\x50\x4d\x41\x60\x43\xea\x35\x6c\x13\x15\x2d\x8f\x35\x58\x3f\xe1\x22\xb7\x44\xaf\x23\x6d\x3d\x95\x60\x64\xce\xfa\xdd\x76\x69\xb8\x7d\xe8\xc3\xfb\xab\x3d\x08\x4f\x19\x70\xb5\xd9\x5b\x99\x27\x4a\x50\x7f\x35\xdb\x75\x8e\x6f\x93\xd2\xbc\x4e\xde\x49\xc1\x4e\x80\x58\x10\x43\x2d\xf0\x3f\x83\xe8\xfa\x5d\xcd\x35\x8b\x24\x99\x11\x6c\xd5\xed\x5f\xd2\x6a\x6e\x3b\xb6\x24\x60\x80\x06\x7d\xe0\xd6\x59\x06\x3b\x29\xe4\x84\xd8\xdb\xb0\xcf\x99\x7e\x78\x7f\x95\x3c\xd1\x0f\xef\xaf\x9e\x6e\x92\x3b\x08\xd7\xab\xb2\x75\x2b\x67\xb4\xe9\x87\xad\x34\x16\x66\xfe\x06\x46\xbc\x44\x3c\x76\xb2\x6e\x58\x26\x4e\x93\x85\x09\x0f\x07\xb0\x75\x65\xe1\x7d\x9d\xc0\x7a\x35\xf4\xf5\xd1\xbf\x9a\x97\x9f\x2a\x0c\x82\xb6\x0e\xb8\x9b\x39\x85\x8a\x2a\x3e\x0b\xde\x20\x4a\x98\xef\x72\x75\xa7\x0c\x17\x72\x28\x45\x28\x16\x8b\x23\xe4\x82\x61\x20\x47\xfe\xca\x05\x61\x45\x43\xdc\x0c\xf0\x2d\xe4\x16\xe4\xaf\x90\x0f\x10\x4c\x35\xc8\x49\xaf\x84\xff\x20\xd4\x23\x34\xbd\x0a\xff\x2a\x5d\x50\x5e\xd0\x09\x2f\xb8\x5e\x1a\x39\xe6\x78\xec\x33\x2f\x62\x04\x63\x05\x5b\xb6\x37\xa2\xb4\x93\x68\xb6\x66\xf6\x25\x47\x06\xce\x29\x98\x94\x8f\xc7\xf1\x52\xd9\x9c\xd5\x0c\x03\xe8\x51\xb4\xeb\x8a\x74\x66\x6f\xe0\x06\xad\x48\x6c\x71\xe8\x1b\x12\x87\xe0\x38\x0d\x3d\x48\x63\xeb\xe6\x8d\x8d\x6c\x1d\xfe\x70\x83\xa5\x0b\x07\x27\x68\x33\x7d\xbe\x28\xce\x8e\x59\xd2\x41\xde\x0e\xa8\x17\x78\x2a\x96\xbb\xff\x5c\xf1\x8e\xf8\xa4\xf4\x64\x51\xc0\x4c\x52\x58\x51\xc0\x55\x25\xea\x25\x12\x00\x26\x06\xd7\x7e\x63\x49\x9c\x2d\xb0\x89\xd2\x85\xc1\xc1\x6f\x82\x35\x67\xe2\x4b\x58\x39\x4c\x49\x4b\xc1\x9e\x43\x98\xdb\x30\x82\x45\xcf\x23\x63\xd5\x7c\x1a\x1f\x7f\x73\xce\xaa\xf9\xeb\x9b\xbe\xd9\xda\xfc\x46\x5e\xdf\xac\xdf\xd9\x80\x3f\x85\x6a\xdc\x01\x85\x86\xee\x43\x45\x0a\x3e\x65\x9a\x0f\x2e\x6c\xaf\x37\xba\x94\x82\x6b\x59\x0f\x71\x94\xd8\x9b\xea\x40\xa5\x71\xfa\xb6\x5a\xda\x5b\xfb\x3e\x06\x54\x67\xb2\x28\x58\xa6\xb1\xfa\x68\x10\x57\xe1\x00\xdc\x04\x36\xa9\x88\xcc\xda\x72\x7c\x97\x2d\x54\x07\x4f\xf1\xf0\x4f\xdf\x5f\x9e\x5d\xbc\xbd\x1c\x97\xf9\x2f\xe7\xf2\x7e\xa4\xe5\xa8\x51\x6c\xc4\x83\xe5\xda\x3e\x47\xb0\x3a\x8e\x2a\xa2\xa6\x69\x7f\xa3\xbf\x75\xc5\x0e\xc8\x07\x85\x61\x4a\x60\x12\x74\xce\x5f\x29\xf5\x09\xa9\xa9\x9e\x47\xd4\xe3\xd3\x73\x6a\x2d\x92\x4d\x51\xe0\xde\xeb\x9a\xb1\x93\xae\xa1\x63\x20\x93\x32\x71\xa9\xbb\x19\x85\xda\xe5\x06\x98\x41\x70\xb5\x9e\xde\x3f\x06\x33\x20\x4f\x8d\xac\xf1\x7c\x27\x24\xf4\x90\x81\x3d\xbf\xf1\x10\x5c\x2c\x19\xb8\x9e\xb5\x8c\x2a\x58\x06\xf9\x23\x53\x59\x1b\x4c\xad\xfb\x58\xc5\x74\x06\xdb\x70\xda\x28\x56\x8f\x2d\x77\x7b\x1b\x63\x63\x7f\xba\x2d\x8e\x2e\xdd\x98\x5c\xad\x77\x75\x83\xdf\xb3\x29\xa6\xe6\xb8\x2e\x17\x28\x13\x06\xf7\x82\x36\x7a\xce\x84\x76\x6d\x8b\xec\x36\x6e\xdc\xf1\x60\x3f\x04\x1c\x4f\x8c\xc5\x51\xc5\x24\x53\x0a\x40\x3e\x97\x45\x1c\x1c\x7b\x2f\x8b\x68\xae\xef\x03\xf8\x97\xcf\xe4\xae\x69\x2e\x21\x04\x0c\xab\x10\x87\x57\xd3\x41\x6d\x9a\x97\x5c\x3c\x35\xe6\x86\x84\x51\x2e\xf2\xe1\x9d\x59\x29\xc2\x0c\xcf\xf7\xa5\x51\x84\xe1\xbc\x49\xce\x83\x3f\x38\x3b\xea\xb4\x4a\x2c\xc4\x63\xfd\xfc\x7d\x2f\xff\x46\xc4\x5e\xdd\xaa\x72\xa9\x7e\x2c\x46\x38\x83\x51\x95\xb7\x7b\xf5\x73\x75\xcb\x3f\xad\xe9\xf0\x27\xe0\x4c\xdf\x0b\xc6\x90\x67\x01\xd2\x8f\xc7\xdf\xe3\x78\x99\xf1\x01\x12\x0d\xf4\xa4\x54\x2e\xdd\x1c\x6b\xdc\x62\x73\x4b\x6b\xb7\x88\xa9\xb4\x5b\xd1\x9a\x96\x4c\xb3\x1a\xc3\x82\x6d\x10\xb2\xb0\xf9\x79\xdf\x56\x4c\xdc\x68\x9a\xdd\xed\xb3\x84\xff\xb3\x94\xf1\xe5\x4a\x19\xbb\xf9\xb1\x5d\xf8\x61\xee\x71\xc8\x16\xb1\x5c\xc6\x46\xff\x13\xf4\x61\xe3\x85\xfb\x02\xa8\xa0\xaf\x30\x1b\x6f\xe5\xf2\xf5\x44\xfb\xa2\x45\x5b\x71\x16\x8d\x57\xb2\x29\x86\x25\x0b\x5f\xdc\x19\x52\xc2\x82\x7b\xb7\xe7\x0a\x99\x56\xda\x4b\xf7\x0d\xb7\x74\xa9\x94\x39\x23\x13\xae\x5b\x8a\xa2\x98\x26\x15\xab\x4b\x8e\x19\xf5\x41\x4c\x90\x02\xbb\xac\xb3\x1c\x39\xbf\xe1\xe2\x76\x62\x1d\xa9\x40\x10\x99\x69\xd7\xf2\x38\x08\x73\xc2\xf4\x3d\x63\x82\xbc\x78\xf1\xe2\x05\x48\x6f\x2f\x7e\xff\xfb\xdf\x13\x28\xe3\x95\xb3\x8c\x97\x0e\x50\xfb\x60\x58\x29\x14\x39\xf9\x5f\x2f\x5f\x8e\xc9\x7f\x9c\xbd\x7d\x03\xf1\xb4\x95\x56\x64\x22\xf5\xdc\xce\xcc\x3c\xd0\x03\x1e\xd1\xde\xe3\xdf\x6f\xbe\x7d\xe7\x04\x37\xb5\xf2\x36\x28\x9c\x7e\x7b\x23\x03\xb0\x09\x7a\xb7\x5e\xfc\xee\xab\xaf\xc6\xe4\x82\xd7\x50\x95\x85\x43\x8e\x9e\x0f\x6b\xaf\x5c\xe8\xb5\x90\xda\xd7\x53\x0a\x6f\xa9\xad\xb7\x64\x19\xb1\xad\x7f\x51\xf2\xd9\x5c\x63\x3f\x5f\xc0\xfe\x82\x67\x1a\x6b\x61\xcb\x28\x5b\x19\xd6\x18\x55\x36\x11\xd5\xa6\x8a\xdb\x60\x3e\x58\xfc\x09\x29\xf8\x1d\x23\x53\xf5\x97\x5a\x36\x15\x14\x55\x88\x30\xc0\x41\xc9\x47\xa3\xc7\xd8\x6e\xc3\x48\x85\x5b\x5c\x55\x4c\x7f\xa6\x18\xae\x28\x4b\x67\xef\xb2\x5d\xf5\x84\xc6\x13\x5f\x19\x78\x84\x18\x5c\x51\x5e\x6f\xaf\x8b\xde\x59\xce\xdc\x06\xcd\xf4\x7a\xa1\x79\xdb\x48\xde\xa1\x69\xc3\xa5\xb8\xda\x51\xd5\xf2\x1f\xe8\x87\xe6\xc2\xba\xdb\x9c\x56\xa5\xac\x1c\x6f\xcb\x69\x80\xbf\x25\x90\x81\x44\x56\x6a\x2f\x19\xb9\xc6\xd6\x83\xea\x64\x54\x5f\x4d\xbb\xa9\xff\x31\xd6\x9c\x82\x2b\x33\xc5\x5e\x91\xfa\x0d\x33\xef\x36\xfd\xd7\xf3\x88\xbb\x6b\xe6\xd8\x88\x35\xe8\xb6\x7b\xa6\xe5\x0a\xd8\xa5\xd5\xa6\xd8\x07\x41\xb6\x73\xc0\x94\x1b\x9b\xd0\x6b\x61\xad\x95\x7b\x8e\x5b\xbf\xcb\x43\x61\xba\xb1\x47\x0b\x71\xb3\x66\xee\x4c\x29\x9b\x37\x5c\xd2\xfa\xce\x28\xb7\x96\xae\x87\xc5\xea\x6b\xb3\x49\x3e\x17\x1a\xd3\xe3\x17\xcc\xb7\xa2\xef\xe6\xf1\x99\x39\x1f\x8e\x83\xf7\x0d\xad\xf6\x86\x48\x43\x07\x00\xa4\x22\xe6\xbd\x27\xaf\x89\xd3\xcf\xff\xa2\x55\xa7\x11\xbd\x6d\x9e\x49\x7b\xb9\x42\xe1\x10\x06\x77\x0a\xe1\x7d\x4d\x10\xad\xe3\xfb\xc1\xc4\x75\x84\x31\x4f\x55\x31\x3d\xeb\x52\x64\xfa\xe8\xe6\x31\xdb\x3b\x95\xda\xcb\x1a\xd3\xeb\x25\xb1\xf3\x08\xc1\xb8\xb6\xf4\xd9\x85\x04\xa0\x28\x88\xa4\x2b\x26\xa1\x5b\x14\xca\x02\xf4\x7a\x69\xa7\xc9\x3d\x38\x52\xa5\x9f\x48\xb0\x2f\x92\x64\xa0\x48\xa0\xae\x6a\x5f\x94\x24\x14\xbb\x7e\x90\x97\xae\xa6\x98\x1c\xdb\xe3\x16\x8e\x1a\x76\x24\xdf\x48\xa0\xbe\xe3\xb5\xcf\xa7\xdd\x2e\xfc\x44\x82\x44\xa9\x24\x52\x04\x8a\x84\xd9\x15\x94\xc2\x82\x50\x24\xd0\x18\x71\x09\x47\x6a\xe7\xb2\x14\xd1\x09\x47\x8c\x6b\x17\xc7\x1a\x3d\xf1\x5c\xaa\xea\x75\xaf\x2c\x58\xa8\xa2\x4b\x3b\x4a\xd0\xed\x1c\x69\x1a\x93\xb7\x96\xd7\xe1\x55\xa5\x13\x25\x8b\x46\xe3\x07\xe2\xe8\x15\xf1\x20\xba\xec\x12\x26\xe8\xca\x94\x01\x0f\x74\x8f\xc5\x9e\x58\xcb\x42\x41\xb8\x41\xee\x15\xc3\x4d\x71\x44\x93\xd1\xe7\x26\x0b\x0f\xdb\xbf\x47\x68\x71\xd2\xf6\xbe\x0a\x2f\xfe\x31\xda\xa1\x64\x8a\xc7\x1b\x52\x6e\xae\xc8\x51\xdb\x2a\xd3\x05\x55\x5d\x09\xcd\xea\x29\xcd\xd8\x71\xc7\xc0\x32\x38\x39\xdf\xa0\xd4\xc7\x9e\xba\x1c\xcd\x39\x15\x79\x81\xce\x81\x8c\xd5\x70\xc5\xd8\x27\xcd\x6a\x11\xe0\x51\x66\x6a\x79\xcd\x17\xac\x56\xe4\xe8\x6b\x66\x34\x27\x46\x75\x53\x0f\xdb\xb4\xf7\x9b\x2a\x00\x9f\xdf\x87\xa1\x07\x00\xa5\x05\x09\xc2\x2b\x4e\xfb\x12\x9d\x4b\xdb\x6e\xcc\x70\xea\xb1\x1b\x78\x00\xaa\x6b\xe2\x1a\x1b\x74\x05\xbe\x04\x24\x6a\x29\x9b\xda\xfa\x1b\x6d\x0f\x8c\x20\xd0\x4c\xd6\xb5\xe1\x94\x30\x31\xaa\x48\xcd\x66\x46\x13\xab\x41\xa5\xc3\x4c\xf6\xa2\x31\x3f\xec\x2d\x4c\x7b\xaf\x81\xf2\x9d\x30\x76\xeb\x65\x0a\x3b\xa5\x9c\x17\x6a\x6a\x95\x42\xb9\xe0\xb9\x13\x6b\x20\x0e\xc1\x4a\x75\x5c\x91\x8a\x2a\x15\x61\xd3\xb1\xaa\x6f\xa7\x41\x5a\xe7\x6c\x51\x05\x05\xb1\xc7\xd7\x3e\x89\x52\xe0\x9d\x0f\xb9\x9b\x17\x2b\xa1\x6c\x5d\x30\x52\x22\x9e\xed\xc8\x9c\x5d\x37\x93\x82\xab\xf9\xcd\x4e\xae\x95\x77\x1b\x00\x60\x68\x5d\x37\x5c\x24\x6a\xbd\xdb\xdc\x31\x44\x31\xa1\x38\x08\x1c\x86\xb1\x19\x31\x27\x26\x6b\xd1\x68\x3c\x54\x29\x77\x38\xdd\xdb\x26\x21\x69\xb5\x60\xb6\x94\x97\xf9\x53\x67\x1d\x1f\xe3\x2c\xef\x58\xe2\x30\x67\x1f\x44\xd5\x7d\x8f\x64\xb4\x28\x94\x95\x6c\x7d\x35\x18\xc7\x9e\xe2\xcc\x21\xae\xda\x00\x62\x23\x37\x88\xea\x5b\xa7\xae\xf4\x59\x88\xb9\xe3\x1b\x37\x56\x91\x52\x62\xf6\xb5\x20\x52\xb8\xdd\x87\x2a\x90\xf6\xbf\x23\xd4\x66\x5f\x2d\x83\xd6\xcc\x5e\x96\x38\xd4\x7c\xf6\x79\x6d\x1d\x3f\x0d\x9f\xd7\x4e\xde\xee\xb6\xc7\x35\xed\xd4\x01\xea\x75\xcf\x18\xe8\x18\xd5\x99\xa5\x57\x40\x37\xd4\xfc\x49\x72\x9b\xa7\x26\xab\x9e\x69\x5d\xf3\x49\xa3\x13\xeb\x7e\x7f\x5c\x79\x19\x84\x2b\xa3\x9f\x03\x41\x1a\x59\xdd\x3a\x4b\xb0\x18\x59\x35\xd7\x5f\xbb\x75\x32\xe7\x65\x83\x20\x54\x10\x1b\xf0\xa5\x43\x45\x72\x99\x35\xbe\x31\x0a\xc8\x11\x6d\x60\x48\xb8\x8e\x3f\x49\xbb\xe2\xa9\xc5\x93\xbb\x1f\x08\x60\x69\x2e\xef\xc5\x3d\xad\xf3\xb3\xeb\xc1\xcc\xc1\xbe\xb0\xd6\xbe\xd3\xf5\x48\x3a\x50\xc4\xfc\x4e\x27\xb2\xd1\x41\xba\xeb\x0a\xca\xb8\xba\x45\xff\x42\x0e\x4a\x2d\x0d\x4d\xea\xf8\x1b\x83\xe7\x35\xe0\x8f\x24\xdb\x2c\x80\x31\xfc\x7d\xc5\x45\x1a\x76\x81\x46\x38\x3c\x57\x4c\x85\x11\x46\xc0\xb0\xe7\xa0\x0f\x28\xca\xfc\x17\x61\x5c\xef\xb9\x48\xf7\x64\xf8\xeb\xbb\x48\xa3\x5c\xa0\x61\x89\x66\xc5\x45\x1a\x76\x81\x46\x68\x2d\x6b\x2e\xd2\x08\xfb\x5f\x84\x8b\x6b\xc5\x45\xba\x07\xcb\xdf\x4f\xca\x45\x6a\xde\xe8\xf7\xc7\xe9\x91\xbe\xc8\x98\x14\xb3\xe3\x9f\xd5\xd7\xd4\x21\xe3\xc8\x79\x57\xf3\x24\x53\xf4\x08\xa0\x34\x48\x56\x5a\x7c\xea\x68\x27\xae\xd3\x24\x08\x68\x9f\xcf\x2f\xf5\x08\x1e\x27\x58\x51\x84\x42\x88\x63\x5b\xc2\x15\x76\xc5\x42\x47\x76\xeb\x31\x8f\xf5\xec\xc8\xfc\x15\xb4\x78\x20\x54\x08\x89\x32\x89\x3a\xb1\x9d\xa6\x4e\xac\xd5\x42\xe4\xf0\x1f\xaa\xa2\x11\x45\x3f\x70\x40\xeb\x2c\x27\xd6\x24\xd9\xe4\x23\x8f\x8e\x24\x1d\x1f\x81\x23\x84\xfd\x19\x28\x55\xdb\x1f\x69\x67\x49\xa0\x69\x90\x53\x1d\x62\xdf\x58\x15\x63\xf1\x6d\xa7\x31\xa9\x6c\xce\x4a\x0a\xff\xf9\x3a\x69\xea\x38\xb8\x22\x46\x48\xd7\x0c\xab\x33\xb1\xba\x54\x44\x4e\x4f\x7a\x8d\xff\x0e\x16\x2f\x0f\x62\x1d\x00\xc9\x4e\x4b\xe2\x70\x3c\x54\xe1\xb3\x3f\xd6\xeb\x7d\x7a\x17\x88\xc1\xef\xb6\x4d\x73\x04\x23\xeb\xcc\xbd\x17\x3b\x01\xd4\x16\x77\xfb\xd1\x96\xff\x65\xfa\x6c\x4f\xbc\x2d\xfd\xd9\x67\xfb\xec\xb3\x7d\xf6\xd9\x76\xc7\x8e\x3e\xdb\x0e\x33\x06\x72\xc5\x95\x8b\xed\x43\x3f\x6e\xec\x8d\x35\xef\x76\x1d\x18\xd6\xe5\x0b\xcd\x2c\x51\xed\x1a\xfb\xea\xe3\xd1\xd7\xb5\x75\xf6\xca\xba\x1f\xea\x74\x38\x1e\x1f\x1e\xa2\x0b\x38\x4e\x79\xf3\x20\x1b\x3d\x1d\xfd\x81\x30\x91\xc9\x1c\x11\xd6\xcc\xb5\x56\x1a\x84\xc9\xd6\xde\x97\xbe\xfa\xd2\xd5\x56\xef\x86\x56\xc1\x3c\x53\x50\x24\x9a\x42\xbb\x4a\x66\xaf\x1f\x20\x88\xb5\xe2\x97\xaf\xba\x6a\x37\xc0\xd7\xae\x8d\x65\x7d\x20\x87\xb5\xfd\x7e\xb1\x1b\x36\x5c\x36\xd7\x7f\x98\x1c\xe1\x8f\xe3\xac\x6a\xe2\x0c\x93\xae\xa9\xf6\xb8\x64\xa5\xac\x97\x27\x1e\x94\x01\xd1\x83\x6d\x9f\x18\xae\xc6\xdc\x0e\x23\xe1\x65\x4d\x5d\x33\x01\x3d\x82\xbf\x34\x59\x2f\xba\x48\x1d\xd9\x49\xd4\xf3\x67\x1b\x53\xf5\xa2\x1d\x2b\x59\x7f\xde\x9f\x0c\xd6\x75\xbf\xc6\x28\x1b\x6d\x3b\x6c\x5e\xe3\x89\x77\x82\x00\x4f\x63\x62\x41\x16\xb4\x56\x71\xe7\x41\x76\x93\xee\x72\xbe\xe0\x2a\xdc\xd2\xb2\xf3\xc2\x66\x73\x35\x34\x15\x68\x74\xd5\x68\x4b\xb3\x63\xaa\x45\x74\x66\x3e\x67\xbe\x2e\xb1\xbf\x3f\x2b\x82\xee\xcb\x70\xda\x9b\x1b\x5f\x64\x3b\xe7\xfe\x08\x36\x77\xee\x8f\xf8\x56\xcf\x9b\xdf\x4b\x42\x8a\x9d\xbb\xac\xaf\x0e\x77\x94\xbb\xde\xaf\x96\x2d\xb7\x05\xb1\x9d\xf2\xb0\xe7\x6b\x01\x9e\xc4\x0b\x9e\x90\xf2\x7b\x69\xdf\xe8\x67\xe6\x68\x56\x56\xb2\xa6\xf5\x92\xe4\xd6\x22\x18\x28\xba\xbf\x56\x7c\xa6\x53\x7d\xe6\xc1\x55\x36\x61\x55\x39\xaf\xf7\x90\xf5\x1b\x5d\x7e\x86\xe5\xbc\x29\xd3\x8c\xe8\xdf\x41\x85\x6b\x5b\x3d\xdb\x85\xd5\x20\x20\xdf\xd6\x80\x66\xc3\x25\xd3\x71\x33\xb9\x6a\xf7\x1d\xe5\x9a\x6e\xd1\xd7\x83\x95\x6e\x55\x46\x5e\x8f\xf2\xa5\x09\x99\x33\x73\x30\x0e\x18\xce\xad\x17\x3d\x8b\xae\xe8\xc8\x7b\x76\x64\x01\x1d\x1b\x99\xee\x2d\xb0\xed\x27\x39\x6b\x92\x54\x1c\x83\xff\x17\x7b\x63\x64\x8f\xc4\xb2\xd2\x12\x94\x3d\x5b\x83\x69\x4a\x0a\x99\x75\x82\xa5\x1c\x8b\x0c\xdb\x48\x21\x3e\x87\x2b\xe2\xef\x99\x73\x68\x9a\x53\x35\x73\x43\xc1\x08\xac\xb1\x85\xc2\xb8\x0f\x9e\xd1\x49\xd0\xb4\x8a\xb0\x51\x58\xf2\x27\x79\x0b\x75\xb9\x3f\xf1\xb2\x29\x49\xa3\xcc\x4c\xa1\xb9\x60\xe7\x99\x20\x54\x3f\xd1\x7b\xd7\x88\x03\x2a\xfb\x70\x01\x40\xfb\x3e\x0e\xf3\x97\x1b\xb7\xbf\x61\x13\xb9\x37\x7b\x40\xea\xb2\xd3\xde\x54\x03\xb2\xba\x9d\xa5\x95\x36\xe5\x94\xd0\x40\x97\x34\xd2\x95\x7f\x94\xef\xef\xb0\x76\x5f\x04\x2f\xba\x17\x26\xe2\xa6\xd8\x42\xf5\xfe\x60\x1a\x61\xe3\xfd\xd6\xb0\x7b\x33\x72\x37\x8a\xd5\xa3\x59\xc3\xf3\x74\xb4\xfe\x62\x79\x7e\x14\xa7\x4f\xe3\xef\x49\x5c\x7d\x67\x5e\xee\x23\x1d\xa3\x79\xe2\xc1\xa5\x0f\x8e\xec\x31\xc5\x6e\x51\xf9\x36\x50\x72\x70\xde\x93\x25\xa1\x2e\xb2\xce\x13\x0f\x1b\x9e\x74\x74\x56\x54\xf3\x4e\x94\x24\xe0\xad\x6b\x05\x33\x08\xd5\x30\xd6\x6c\x99\xd9\x72\x48\xbc\xd7\x05\x03\xa7\x87\xf8\x0a\xd9\x4a\x23\xf3\x3f\x31\x2d\x07\x9d\x4b\x75\xc2\xa6\xb2\x6d\x31\x8c\x2a\xb0\x3a\xb1\x76\xaf\x82\x69\x48\xb7\xc2\xcb\x1f\x74\x8d\x43\x18\x53\x29\x17\xe6\xea\xfc\x4d\x90\x0f\xae\x99\x23\x9f\xbe\x22\xf4\xb8\x6b\xad\xe2\xc1\x16\xcf\x84\x08\xc6\x72\x4c\xf6\x2a\xda\xf9\xd5\x8d\x50\x27\x64\x72\xec\x36\x12\x68\x87\x30\xd2\x7b\xe1\x54\x92\xc0\x66\xde\x81\x05\x49\x4b\x2c\x14\x55\xcb\x92\x28\x41\x2b\x35\x97\x1a\x6c\x15\xb4\xa2\x19\xd7\x4b\xf3\xac\xae\x69\x76\x07\xed\xc8\x03\x25\xa2\x70\xa6\x27\x24\x3b\xb6\xf1\xe4\xbd\x93\xe7\xaa\x43\x0b\xf5\xbc\x96\xcd\x6c\x0e\x39\x53\xe1\x4a\xc5\x59\x41\x95\x3b\x8c\x8d\xb0\xad\x06\xac\x48\xbe\x14\xb4\xe4\x59\x8c\x33\x0f\x62\x23\x15\x97\xd6\xcf\x85\xf3\x81\xde\x7d\xd7\xbe\xe6\x3a\x3a\xd8\xce\x0b\xca\x4b\x72\xa4\x18\x23\xfe\x92\xe0\x5f\x6e\xc2\x6a\x2e\x9a\x38\x6b\x46\x6c\xfd\x2c\xeb\x99\x73\x15\x0e\x6d\x69\x05\xf3\x4b\xcb\x5f\x02\x59\x80\xee\x4a\x1a\xa1\xcb\x06\xd5\x6d\x9c\xf2\xb1\x47\xbf\x8d\x7f\x1e\xfc\x86\xac\x21\x70\xce\x75\x44\x61\x22\x97\x6d\x28\x0f\x39\xbb\xbe\x42\xe3\xed\xc2\x75\x3f\x32\xf7\xcf\xd6\xaa\x0f\x6e\x47\x21\xc5\x0c\xe3\x82\x85\x65\x39\xee\x66\x1b\x06\x28\xa0\x43\xf4\x82\xe7\x0d\x2d\x90\xb5\xfd\x6d\xd8\x90\x6d\x16\x78\x7e\x73\x85\xa0\xf9\x6c\xae\x47\xf7\x0c\x0c\xb8\x28\xbd\xb4\x41\xdf\x6e\xb2\x3c\xec\xa4\xeb\x04\x54\x72\x05\x2c\x54\x5b\x63\x20\x3a\x03\xcc\x72\xef\xe9\x12\xea\xb9\xe2\xad\xec\x45\x16\x0d\x6f\xad\xad\x2e\x8e\xe0\x3d\x7e\x74\x90\x03\xce\xed\xcc\x77\xdc\x6d\x14\x03\x5b\xfc\xb0\x32\xb2\xac\x90\x0a\xac\xaf\xd7\x20\x48\xa7\x8f\x80\xff\x39\x1c\xe8\xa3\xa8\xc1\x33\xa3\xcd\x0c\x29\xf0\x7b\xd6\x42\x7e\xa6\xd1\x77\x70\x27\x6f\x59\x59\x15\x54\xa7\x05\x32\x1d\x7c\xd7\x71\x61\x74\x1c\xfa\x86\xb8\x52\x91\x8f\x68\x61\xae\xf2\xf5\xc7\xf3\xf0\xea\x65\x4b\x16\x7b\x5b\xe1\xba\xe0\x73\xe1\x1b\xfd\x19\xf1\x3e\x99\x1a\x12\x74\x8d\xb2\x72\xc2\x72\xe0\x6a\x76\xe6\x60\x83\xba\x17\xac\x76\xb7\xe3\xfa\xe3\xf9\x09\xe1\x63\x36\x8e\xf2\xa7\x5f\x7f\x3c\xf7\xa0\x1c\xbb\xd6\x72\x86\x89\x2f\x3e\xc1\x09\x88\x09\x2c\x65\xa0\xd1\x58\x3b\xda\x99\x78\xd8\x7f\xff\xa3\xd9\x04\xf3\xf6\x9f\x46\x7f\xb4\x64\x18\xfe\xf5\x77\x23\x1d\x44\x54\x50\xfc\xfb\xca\x5b\xdd\xcc\x09\xdf\xfb\xf3\xef\xd7\xb6\x7b\x9c\xed\x2d\xf7\xf7\x20\x58\x88\x35\x21\x4c\x68\xa3\x8b\x5e\x4b\x88\x65\xe4\x39\x62\x3d\xcc\xbd\x66\xff\x70\xee\x27\x38\xc6\xb0\x81\xcf\x32\xa7\x8c\x6a\x26\x40\x42\xb2\xe9\xf9\xe0\x21\x00\xf0\x40\xba\x28\xec\xcf\x51\xcc\xd5\xb2\xf5\x5a\x4e\x88\x96\x12\x78\x00\xf2\xa7\x33\x41\xd8\x27\xae\xa0\x70\x13\xee\x35\x1c\x17\xd5\x71\xa7\xe4\x04\x53\x33\x2d\x83\x41\xbe\xc0\x97\x59\x27\xac\xfd\xd7\x42\xea\x5f\xfb\xeb\x11\x4b\x04\x40\xaa\x94\x84\x2e\x24\x77\xad\x0f\x0d\x29\x16\xe0\x59\x69\x1b\xec\x4d\x96\xa4\xe4\x4a\xd3\xbb\x88\xb4\xed\x1b\x23\x54\x76\xa3\x6a\xf0\xf4\x05\x81\x36\x2a\x2c\x27\x8d\xd0\xbc\x80\xbf\xfa\xef\x44\xa1\x7e\x57\xe0\xbc\x9a\x12\xd5\x64\x46\xb2\xaa\x6a\x36\x72\xe2\xad\x7d\x0a\x18\x59\x0c\x15\x70\xbb\xd5\xee\xe5\x89\xbf\x0c\x73\x8a\xf6\x97\x2a\x07\xd0\x51\x7e\x51\x2a\xec\xf5\x5e\xad\xb3\x09\xfb\x20\x45\xd6\x8a\xb6\x80\x0c\x11\x35\xbb\xde\x81\xb4\x5b\xb8\x70\x3b\x34\x35\xd9\x34\x4b\xc1\x32\xa6\x14\xad\x97\x27\xd0\x0e\x93\x6b\x52\x06\x63\xb1\x88\x5d\xf4\xb4\x29\x50\xd4\x2f\xa9\x80\xa6\x93\xa4\x66\x99\x14\x4a\xd7\x4d\x06\xa7\x47\xc9\xa4\x96\x77\x4c\xc4\x26\x0f\x11\x83\xe5\xfd\x8c\x89\x96\x43\x41\x7c\x8f\x24\xd9\x9c\x8a\x19\x53\xd1\x55\x35\x4a\x9a\x03\xee\x7d\xe3\xd5\x43\xb7\x9f\xe6\x84\xe8\xd4\x68\x5e\x5c\xc3\x51\x4d\x8c\x4c\xe9\x5c\x98\x31\x53\x75\x96\xdb\x93\xd6\x23\x68\xb6\x94\x17\x83\x42\x00\x49\x73\x2c\xc5\xba\x94\x46\xa0\x34\x84\xec\x07\x09\x2e\xa4\x92\x69\x9a\x53\x4d\x93\xf3\x29\xde\x52\xdf\x11\xd3\x86\x68\xc1\xe1\x75\x42\xb7\xe2\x9c\x6f\x20\x3a\x5a\x7e\x92\xc9\x8a\x77\xeb\x8b\x00\xfd\x9b\xbb\xf3\x8a\xb5\xfa\x73\x3d\x26\xef\xa4\x0d\x01\xc0\x54\x0a\xf0\x10\xd2\xa2\x90\xf7\x2c\x87\x69\xba\x2f\x22\x23\x88\xa0\x2b\xb0\xfe\x06\xb4\xc3\x96\x99\xc4\x84\xeb\x24\x79\x17\xcd\xe1\x26\x9f\xc4\x6d\x1b\x4d\x94\xb5\x81\xfc\xb0\x7f\x9b\xf4\x9c\xb8\x18\x23\x03\x94\x09\xcd\x6b\xd6\x2d\x2a\x63\x0f\xa8\x11\x78\x41\xdb\xa3\x8a\x82\x69\x8e\x13\xce\x7b\xc6\xb4\x6a\xa3\xb7\x91\xcf\x1b\xe2\x6f\xa5\x3d\x90\xaf\xa2\x20\x82\x40\xee\x8e\xd8\x9a\xff\x36\xab\xab\x21\x65\xdd\x0d\xb0\xbf\x22\x3f\x37\x12\xcc\xde\x4f\x38\xdd\xc1\x8b\x6d\x68\xdf\xca\x3c\xde\x23\xbc\xd2\xc9\xb5\x05\xd0\x26\x84\x61\xd2\xa1\x8a\xb2\x5f\xf7\x67\x02\x51\x35\xaa\x6b\xb6\xb1\xcc\x66\x4e\x17\xd6\xcd\x13\x0d\x31\xdd\x45\xd0\x2a\x6e\x23\xdf\x7f\x0d\xa6\x35\x82\x69\x8d\x5e\xc6\x3a\xd3\xe2\xa3\x92\xfd\x64\xe3\xa2\x93\xfb\x1f\x48\xf0\x56\x1a\x32\x7c\x93\xe4\x64\x5c\x6d\x82\xe9\x79\xaa\x8d\x82\xf2\x91\x7a\x91\x2d\x25\xdd\x60\xdc\xd0\xce\x57\xe4\xd7\x3d\x69\xd4\x6a\x35\xde\x2c\x16\x1f\x30\x61\xc6\x91\xb3\xa7\x8d\xed\x51\xba\x3a\x85\x2b\x60\x47\xd1\x10\xbf\x66\x9a\x1e\xaf\xcc\x11\xa4\xef\xcd\xd6\x9f\x68\xb8\x7d\x88\x59\xa3\xb4\x2c\xbd\xd7\xf6\xd4\x66\x56\x46\x65\x71\xbb\xc1\x8d\xa0\x5f\x62\x7a\x11\xd5\xd4\x25\x08\x19\x52\x8d\x06\xe0\x63\x72\x25\x88\xac\xf3\x04\x77\xb8\xcd\xcc\xd9\x78\x28\x68\xfd\x40\x11\x95\x56\x86\xe0\xd4\x9c\xea\xf8\x6b\x69\xad\xa8\x64\x66\xd4\x66\x17\xa2\xc9\x04\x9d\x14\x2c\x27\x47\xfd\x4f\x5e\x78\xac\x8d\x06\x2f\x6b\x72\x26\x96\x08\xa6\x7d\xfd\xd8\xa6\xb8\xb6\x2a\x77\xc2\x6e\x18\xd5\xab\xad\x51\x00\x64\xae\x96\x45\xc1\x6a\xb8\x0a\xd6\x1e\x9a\x10\x8b\xde\x75\x54\xc1\x91\xe1\xe9\x9f\x38\x3b\x7a\x6b\x53\x10\xec\x3e\x1a\xa6\x53\x92\xa8\xc2\xa2\xd8\x2e\x32\x0b\x30\xc3\x05\x5a\xbb\xef\xc6\x07\x1a\xb4\xf3\x73\x69\xc2\x9b\x67\x1f\x8f\xaf\xa8\x3f\xfa\x40\xaa\x5e\x48\x69\xb7\x62\x5b\x6c\x52\x98\x1b\xce\xdd\x37\xa5\xbc\x68\x5c\xe5\x62\x10\xc3\x6c\xd2\x21\x85\xbe\x56\xd0\xaa\x38\x3e\x16\xfa\xca\xb5\x0e\x31\x48\x7b\x02\xdd\x8e\x0b\x2a\x80\xf0\xd9\x83\x07\x8b\x62\x54\xe3\x34\x37\x5c\x8c\x06\x98\x11\xdd\xb4\x27\x6c\x4e\x17\x5c\x7a\xab\xcc\x2e\x98\x5a\x1a\xb9\x19\xa4\xa7\xc8\xf0\xb4\x1d\x02\xd4\x52\x43\xd4\xa0\xd6\x19\x8f\x48\x44\x73\x0f\x47\x99\x22\x70\xa4\xc7\xb3\x41\xf2\x02\x44\xf7\xc6\xbf\xb1\xda\x30\xed\xfa\x0a\x00\x38\x83\xd2\x0c\xfe\x11\x5b\x27\xa3\x3b\x7c\xb4\xce\x84\x19\x6e\xd0\xd6\x7e\x84\xab\xe6\xbe\x93\x04\xd2\xdd\xae\x7e\xc0\x76\x7b\x63\xbf\x81\x86\x6c\xf1\x41\xb0\x38\x30\x3c\x1b\x29\x4a\xcd\x20\xa9\x00\x56\x3d\x86\x56\xd3\x54\x2c\x23\xab\x8b\x76\x87\x9e\xf3\x3a\x1f\x55\xb4\xd6\x4b\xc7\x52\xba\x3b\xeb\x8b\x13\x24\x00\xdd\x29\x86\x2b\xa6\xdb\x63\x77\xf4\x70\x01\xb6\xd3\xe2\x81\x0b\xcc\x49\x8a\xc8\x74\x63\x15\x03\x1e\x7b\xd5\xb1\x65\x0e\xdc\xe8\xd7\xea\xb0\xe6\xc9\x6e\x21\x9a\x2f\x7e\xd5\x3e\x5e\x72\x37\x01\xf8\xbd\x0f\x57\xee\xb8\xec\x3b\x81\x2b\xd1\x53\x6f\xe3\x9e\x87\xb4\x1c\xd4\x5e\xa2\x81\x3e\x50\xcb\xf1\x73\x7a\x44\xae\xb1\x0b\xad\xc6\x58\x9d\x9d\xf1\xf4\xf0\x0d\xc6\xfa\xe0\x8f\x13\xbb\xe5\x36\x7c\x29\x09\x51\xdb\x30\xad\x4c\x96\x55\xa3\x59\xe7\x18\xad\xe9\x27\x51\x3b\x25\x49\x1a\x6a\xcf\xb9\x76\x8a\x2d\x57\x47\x76\x2a\x23\x3f\x95\x91\x8f\x56\x0a\xb6\x33\xeb\x8e\x1d\x0e\x93\xec\x5c\x72\xa1\x3b\xbe\xd8\x58\xa4\x95\x85\xa6\xc5\x20\x93\x07\xc4\x21\x93\xdd\x63\x91\xc9\xfe\xe2\x91\x89\xcf\x95\xd8\xfd\xea\xbd\x77\x99\x1c\x2b\x97\x2f\x91\x5a\x92\xc0\xe5\xdb\x45\x4c\x20\x46\xba\xf2\xf3\xe3\x8a\xc8\x92\x6b\xcd\x9c\x93\xcd\x5f\xa2\xd8\xc4\x13\x1c\x5c\xf7\xe2\xf0\x2d\xe9\x81\xf8\x07\xf4\x9a\xb1\x4f\xae\x5b\x4d\x12\xdc\x8e\x28\x07\x42\xd6\x3d\x57\xe0\xd0\xa1\xa2\x55\xfd\x81\x2c\x8c\xe2\x6a\x06\xf6\x87\xad\xe2\x9d\x18\x53\xfb\x4c\x8e\x9e\xc9\x51\xc4\xd8\x0b\x39\xc2\x34\x86\xf8\xdc\x9b\xbe\xae\x86\xee\x23\xf2\x63\xc3\xea\x25\x91\x0b\xd6\x09\xa3\x82\x5e\x3b\x8a\xa7\xd8\xc5\x0c\x81\x98\x70\x91\x73\x31\x8b\x25\x38\x4f\x24\x29\x95\x54\x67\xf3\xcb\x4f\x46\x32\x85\x54\xe8\x9d\x09\xf7\x2a\xa0\xb6\x8a\x47\xd2\xd1\xcb\xa9\xdd\x79\x77\x7c\x8e\x52\x83\xa5\x72\x6c\xcb\xff\xb6\xbf\xa4\xdd\x00\xa3\x83\xbe\xbb\xd8\x45\x39\x4c\xb1\xc9\x93\x74\xbb\x3c\xd9\x86\x80\x9b\xb6\x21\x09\x2a\xc1\x83\xf0\x70\xfa\x2d\xb2\x63\xfb\x9b\xf4\x07\xf4\x41\x38\xb1\xae\x55\xdb\xa0\xcd\x81\xc6\x98\x88\xb4\x73\xe9\xf7\x8b\x88\xab\xf1\xb5\xf2\xfe\x6e\xb4\x3f\xdd\x26\x85\x23\xae\x0a\x7f\xff\x0d\xb7\x4d\x69\xac\x65\x47\x96\x94\x50\xad\xbf\x3b\x7a\x28\x88\xbd\x2e\x30\xfa\x13\x70\x31\x75\xcd\x38\x7c\xd6\x82\x47\x41\xc8\x24\x01\x4a\x9a\x76\xc8\x64\x57\xa3\x05\x0e\x77\x00\x0f\xdc\x16\x8f\xee\xdd\x10\xfc\x1d\xf6\xe5\x8e\x2d\x0f\x95\x4d\x02\x97\x42\xcd\x79\xe5\x9a\xc2\x81\xc8\xba\xcb\x2d\xc0\xf1\x11\x1c\xc5\x6e\x9a\x18\x66\x70\x25\x4e\xc8\x3b\xa9\xcd\xff\x5d\x42\xec\xce\x0e\x70\xcd\xdd\xbc\x90\x4c\xbd\x93\x1a\x60\x3c\xe9\xe1\xe1\x76\x3c\xf0\xe8\x6c\x45\x0b\x0e\xf6\x7c\x8c\xc7\x4b\x4a\xa3\x75\xc3\x56\x61\xb7\x47\xe4\xdc\x1b\x1e\x31\x22\x1a\xc4\xac\x0f\xf0\xb5\xb9\x33\xf2\x7d\x72\x94\x9d\x66\xb2\xe5\x15\xc7\x84\x11\x21\xc5\x08\x9b\x1b\xef\x67\x9e\x88\x3e\x66\xae\x5d\x5c\xe8\x4e\x79\x17\xd4\xf2\x8b\xf4\x55\x67\x6d\x99\x8f\x54\xbe\xeb\x06\x58\x82\xab\x82\x66\x2c\x77\x21\x32\xd0\xfb\x85\x6a\x36\xe3\x19\x29\x59\x1d\xc8\x67\xd8\x3c\x2a\x23\xe5\xec\x8a\xf8\xbb\xad\x65\x07\x49\xa2\xfb\xd1\xc4\xdb\x06\x62\xdc\x1b\x08\x9d\x7a\x98\x28\x88\x30\x50\xf8\x28\x69\x65\x48\xda\x7f\x1b\xa9\x01\x70\xe4\x7f\x12\xf5\x2b\x5e\xab\x31\x39\x23\x8a\x8b\x59\xc1\xba\x70\x9c\x7b\xa1\xf3\xc9\x24\xd0\x66\x66\x46\xc5\xfe\xb1\xe1\x0b\x5a\x30\xcc\x20\xa0\xc2\xb7\x6c\x90\xd3\x35\xc1\x36\x4d\x58\xc2\xb6\x59\x86\x95\xfa\xc0\xc2\x83\x3b\xb6\x3c\x38\xe9\x5d\xc5\x54\x57\xcd\xc1\x95\x38\x68\xab\xcc\xf4\x28\x85\x13\xed\xd2\xa4\x6e\x51\x2c\xc9\x01\xc0\x39\x58\x97\xb1\x1f\x22\x37\x7f\x06\x75\x3c\x19\xef\xad\x81\xfb\xbc\xa0\x4a\xa5\x94\xab\xd8\x5e\xca\xf9\xa6\x03\x31\x3e\x25\xd7\x0d\x1b\xd0\x9b\x41\x60\xdc\xae\x69\xcb\x1b\xac\xf5\x90\xa2\x95\x1a\x8c\x94\xb0\x8f\x0b\xdb\xcf\x37\xb6\xaa\xd7\x2a\x77\xf6\xaf\xfb\x2c\xc1\xfb\x4e\xe2\x7a\x6a\x40\x43\xc7\x17\xb8\xb2\xa3\x1f\x21\x55\x38\x01\x62\xa7\xfc\x3f\x57\x60\x3d\xe3\x2e\xd7\x50\x48\x4d\xb8\xc8\x8a\x26\x87\xc0\xc3\x68\x90\x30\x15\xb0\xd1\xa5\x19\x04\x92\x8f\x63\x67\x84\xfe\xe8\x5f\x77\x5a\x80\xb5\x60\xb4\x7e\xb7\x94\xb8\xa0\x4d\xa1\x9f\x50\x75\x00\x83\xed\xb9\xb2\xa7\xb3\xcf\xdd\x98\x0e\xc6\xad\xf6\x3b\x3c\x9c\xf7\x53\x6a\x5f\xf3\x49\xcd\xc8\xf9\x9c\x0a\xc1\x8a\x4e\x79\x8c\x50\x84\x95\xe1\x77\xb6\x13\x3d\x8a\xf3\xb6\xc7\xfc\x61\xbf\xc9\xbc\xa3\xdd\xc2\x95\x65\x19\x04\xda\x86\xe1\xef\xa1\x63\xc9\xbf\x6e\x57\x78\xdf\x89\x23\x08\x38\xb1\x1f\x7c\x4c\x2e\x4e\xaf\x1f\x3c\x96\xd0\x9f\xcb\x7b\x92\x4b\x08\xfd\xa9\x21\x7a\x08\x1b\x36\x2a\x2b\xb4\x04\x41\x76\xfa\x6e\x40\x3c\x72\x26\xcb\xaa\x96\x25\x57\x2e\x3f\xc5\x22\xd3\xde\x2a\x52\x14\x4d\xb0\x30\xe7\xb6\x4a\x8c\xaf\xcf\x89\xa6\xf5\x8c\x69\x03\x84\x88\xa6\x9c\xb0\xc8\x4a\x19\xfb\xae\x3a\xfc\xd3\x6e\x83\xbf\xbf\x4e\xf5\x78\x1c\xdf\x7d\xf7\x2e\xad\x04\xf3\xc6\x33\xbd\x97\x75\x91\xdf\xf3\x1c\xc3\x36\x14\x39\x32\x60\x8f\xe3\xe6\xba\xc7\x1a\xcb\xd1\x88\x7c\x7f\xcf\xf3\x87\x2c\xdb\x45\x15\x9a\x65\x13\x58\xb7\x6d\x8d\xce\x59\x1d\x96\xac\x8f\xe0\xf3\xc7\xe4\x92\x63\x6e\xa3\xf9\x17\x16\x17\x2c\x27\x5c\xd8\xd4\xf2\x69\xe7\x80\x82\x10\x0d\xb7\x30\xf7\xca\x69\xc8\x8a\x69\xcc\x9a\x82\x90\x47\xa9\xe7\x44\xf1\xb2\x29\x34\x15\x4c\x36\xaa\x58\x46\xa2\xd1\x53\x1f\xcd\xb4\x60\x9f\x10\xdb\xe3\xf9\xb2\x7f\xa5\xcf\x9f\x67\x4c\xb0\xda\x17\x11\x88\x8b\x22\x72\x0e\xd5\x36\x42\x32\x3f\xf5\xcc\xda\xa7\x0f\xb2\x4f\x2c\xb3\xd1\xb0\x55\xd1\xcc\xf8\x60\x42\xcd\xcf\xa0\x4b\x58\xdb\xb3\x28\xa6\x9a\x93\x2f\x2b\x14\xd7\x27\xf7\xf3\x34\xed\xfa\xa2\x85\x91\xdb\xcd\x9d\xb7\x72\x56\x31\x91\x43\xa9\xe2\xf6\x4e\x04\x61\xe3\x76\xec\xed\x14\x6c\xb9\xdc\x5d\x29\xeb\xe5\x27\x5d\x53\x43\x06\x4b\x43\xd0\x5c\xed\x5d\x3e\x25\x54\xc4\x92\xac\xcf\xdd\xd4\x85\x3c\x4b\x18\x7e\xa8\x9d\x1a\xb6\x75\x36\xa2\xd7\xb0\x6d\x35\xeb\x38\x8c\xdb\x49\xed\xda\x62\x9a\xc0\x75\xdb\xb5\x21\xed\xb7\x17\xc8\xb5\x53\x5b\x6f\x8b\x96\x38\xcb\x6e\x81\x9d\x36\x2f\x62\x63\x7b\xb4\x20\xe4\x50\xfb\x34\xb5\xde\x9d\x29\xbc\x03\xfd\x55\xef\xf1\x4e\x3e\xf7\x52\xfb\x32\x7b\xa9\x4d\xa1\xae\x41\x7c\x5d\xce\xd7\xf8\xfc\x8a\xb5\xc4\xfe\x68\xa5\x31\x27\x54\x85\x8c\x1a\xdb\xac\x23\xf6\xb6\x75\x58\x1e\xb4\x78\xc0\x8f\x0c\x02\xb5\x39\x56\x44\x99\x53\x6c\x13\x24\x1a\x21\x86\x89\xfa\xbe\xdb\x5d\x51\x4d\x15\xd3\x31\xb6\xb7\xf5\x00\x79\x27\x77\x21\x0c\xec\xd4\x06\x49\x48\x2e\x2d\x3e\x78\xf4\xa3\x3f\x59\x09\x4e\xf4\x20\x19\xd9\xcc\x9d\x94\x2b\xfb\xc9\x7c\x30\x53\x84\x81\x9a\xc2\x99\xd4\x2c\x8b\xc8\xaf\x8a\xe6\xa6\x76\x76\x1f\x3e\x5c\x5d\x24\xed\x95\x79\x61\x65\xaf\x2c\xde\x40\x61\x44\xfe\x63\xd3\xd5\xda\x82\x6b\x93\xd3\x0e\x1e\x5b\x78\xfb\x58\xe2\x2c\x63\xad\xd9\xf3\x82\xab\xbb\xf8\x0a\xb8\x7f\x39\xbf\xec\xbf\xda\xbf\x74\x7f\x39\xbf\x24\xf6\xd7\x04\xe5\x67\xb3\x75\x72\x9b\x79\x72\x10\xa4\xab\x28\xdd\x31\x4f\x3e\xb4\xc8\xea\x2c\x63\xad\xe3\x22\xe7\xea\x6e\x0f\x95\x75\xe3\x94\xaf\x2a\x7f\x37\x9c\x3f\xf6\x94\x76\x53\x57\xd2\xad\x53\xd7\x71\x29\x9b\x20\x0e\xdf\xdb\x12\x68\x56\xcd\xb9\xe5\xd5\x2b\x72\x29\x54\x53\xb3\x36\x0a\x67\xda\xff\x54\x10\xa6\x91\x58\xa2\x95\x1e\x28\x1e\x14\xc1\xe0\xfb\x1d\x93\xa3\xed\xb0\xe1\xc9\x4e\xfb\x76\xd8\x7d\x63\x63\x70\x02\x51\x86\xdf\x55\xc3\x6e\x10\xea\xa3\x1b\x7e\x2b\x5a\x6b\xd0\x98\x12\x4b\x11\x43\x07\x3e\xfb\xaa\x5b\xdc\x0a\xd2\x02\x52\x86\x75\x2f\x8f\xb4\x57\x53\x17\x56\x7f\x42\x74\xbf\x5e\xae\x7b\xc8\xa0\x61\x64\x27\x38\xc3\x06\x3b\x88\x09\x69\x87\x76\x82\xa7\x39\x5b\x9c\xaa\x9c\xbe\x3c\x81\x69\xc6\x96\x23\xd0\xbd\x35\x53\x45\x0e\x5e\x1e\x8c\xc9\x0d\x2f\x79\x41\xeb\x62\xd9\xcb\x4a\xf6\xcf\x45\x99\x4d\xdc\x84\xc0\xc1\xff\xe2\x80\x1c\xc9\x1a\x66\x96\x51\x41\x0a\x46\x17\xcc\xa5\xf7\x1a\x32\x14\x9e\x28\x28\x29\xc7\x4f\x4b\x91\xc9\xa3\x59\xf5\x91\x3c\xa7\xa1\xe7\x07\x14\x02\xba\xc6\xac\xeb\x8b\xd6\x97\xc7\x85\x61\xa1\x61\x75\xfb\x83\xe5\x71\x56\x98\x40\x12\x68\x76\xc2\x41\xf8\x4c\x5b\xfc\x68\x96\x8a\x28\xfb\x42\x84\xe2\xbb\xd9\xfe\xb0\x6e\xfe\x48\xca\x5c\x7c\xc2\x0d\x0e\xd9\x40\x66\x5c\xbf\x67\xd5\xe0\x9c\x57\x04\x3a\x7c\x61\xc5\x92\xcd\x35\x94\x1a\x50\x5c\xcb\x7a\x49\xa8\x26\x14\x09\x47\xd6\x14\x74\xf8\x02\xd5\x0c\xed\xd8\x63\x72\x71\x79\xfd\xfe\xf2\xfc\xec\xf6\xf2\xe2\x15\x71\x5f\xe1\x5d\x69\x7d\x4c\x6e\x3b\x75\x23\x07\xa1\x76\x32\x99\xb0\xd0\x5f\x3b\xc7\x13\x4b\x80\xa9\x68\xab\xb1\x43\xb5\xa5\x80\xa5\xe8\x4a\x70\xdd\x36\x73\xc1\x10\xf4\x42\x0a\x9b\xdb\x65\x20\x5b\xfb\xfb\x8c\x63\x28\xa1\xc0\x0f\x05\x24\x5a\xb6\x32\x0b\xb8\xe1\xd8\xe2\xc1\x2f\x61\xd0\x86\xb1\x57\x09\xb2\x3d\xc4\x7d\x68\x90\xae\xcb\x42\xd2\xd5\xbd\x45\x77\x9d\x7f\xd9\xf2\x3f\xd7\x13\xcb\xed\x4a\x58\x19\xaa\x7b\x0d\xa6\xc6\xe3\xc3\x31\x24\xbf\x1d\x8e\x0f\x9d\x40\x58\xac\x74\x75\x0b\xc2\x6c\x27\xd5\x2d\x28\xda\xc7\xfe\x31\x21\xdf\xba\x5c\xb5\xb0\x2d\x84\x4f\xb7\x34\x98\xc3\x62\x28\x9d\x56\x5e\xfd\xaf\x84\x01\x0b\x5b\xff\x7f\xd2\x9d\xb4\xad\x50\x3a\xe3\x0b\x26\x70\x63\xf7\x47\xa6\xdd\xd4\x92\x4e\xfb\x7d\x4b\x35\x3e\xbc\x7f\xb3\xbf\xc9\x20\x8d\x48\x9a\xca\xb9\x2c\x4b\xac\x65\x38\xf7\x85\xde\xda\xe2\x11\x9e\x4e\xed\x45\xa1\xc6\x8a\x8e\xd3\xc1\x0b\xb4\x42\x77\xdd\x2b\x2b\x0a\xb4\xff\xd9\x26\x8a\x06\x1c\xea\x4e\xf3\x49\xef\x29\x63\xcb\xaa\x2a\x57\x5e\xca\x32\xa6\x53\xbf\x96\xd3\xf7\x97\x67\x17\x6f\x2f\xc7\x65\xfe\x64\xe4\x8a\x89\xbc\x92\x7c\x38\x85\x2a\xd8\xd5\x37\x96\x9c\xf9\x8f\xa5\x49\x22\x97\xee\xb5\x6e\x18\x9a\x83\x85\x82\x5d\x54\xcd\xab\x9c\x69\xca\x0b\xd5\x39\x71\x2d\x2b\x59\xc8\xd9\xe6\xb6\x30\x09\xc7\xf5\x4b\xac\x36\x34\xa2\x23\x83\x07\xfb\xd3\xc7\xc2\x7d\x16\xfb\x3b\xe5\xfa\x2a\x9a\x0d\x6a\x57\xe9\xf5\x10\x68\x61\x18\x53\x66\xe0\x0b\xdb\x88\x47\x10\x60\xfd\xee\x04\xf7\xc2\x69\xb2\x60\x81\x00\x12\x61\x4b\xe9\x76\x6a\xc3\x76\xba\xc8\xb6\x92\x6d\x8c\xba\xbb\x26\xf9\x3e\xd1\xa6\x87\x84\x5a\x43\xe1\x42\xed\x88\xfb\xbb\xfd\x57\xfb\x46\x9f\xb8\x56\x35\x1b\xf9\x7a\x75\xd0\xa8\x33\x10\xe6\xde\xb2\x5a\x6b\xb6\xee\x19\x24\x9d\xf9\x12\x9f\x2a\x96\x29\x71\x93\xad\x2c\xe8\xed\xc3\x10\x3e\x02\x85\x83\x5d\xc1\x69\x6b\xc5\x22\x74\x16\x4c\x2b\x95\xb5\xf5\xe6\x54\x35\x5f\xf0\x82\xcd\xa0\xdb\x00\x17\x33\xd7\x47\xb6\x53\xd7\x15\xfa\xa9\xb1\xa0\xef\xad\xef\xfd\x78\x6b\xfe\xd5\xe9\x20\x04\x18\xfc\xee\xdb\x5b\xe8\xde\x01\xe1\x15\x11\xb7\x79\x77\x7d\xd4\x4c\x26\xd8\xcd\x7d\x34\x1a\x81\xb5\xeb\xe8\x1f\x46\x8e\xcf\x8b\x63\xf2\x1d\xb3\xf3\x93\xd0\xb5\xa4\x86\x86\xbc\x73\xe9\xdb\x23\x18\xb0\x91\x18\x00\x97\x0d\x4b\x9c\x59\x08\xa7\x06\x8a\x11\x61\x91\x55\xc3\x7e\xb9\xe7\x79\xc0\x19\x47\xb1\x98\x33\xfa\xd7\x9f\x4e\x1f\xd8\x13\xeb\xdc\x91\x17\x38\xcf\xc8\xa6\x5b\x35\x26\x57\x71\xc5\xe5\x2b\xcb\x55\x28\x51\xcb\xb2\xe0\xe2\xae\xad\x35\x38\x95\x06\xc3\x6d\x6f\x10\x71\x17\xe3\x5e\x47\x5d\x8f\x16\x1d\x7e\xb4\x07\x2c\xdd\x1b\xaf\xd1\xc9\x66\xfb\xdb\x65\xc5\x80\x76\x78\x12\x68\x43\xd5\xba\x26\x8e\x83\xb0\xd9\xfa\x4b\xda\x09\xae\x32\xc5\xe3\x89\xff\xd5\xcd\xf9\xcd\x55\x8f\xf2\x0b\x82\xbf\xf5\x5c\x53\x0f\x08\x9c\xdf\x57\xe4\x7c\x0a\xab\x85\x4d\xf8\x0c\x32\x39\xff\x71\x48\x05\x19\x91\xa2\x19\xfe\x3b\x86\x94\x5e\xcb\x5a\x0f\xf6\x80\x8f\x25\x3d\xd9\x9c\x56\x67\x8d\x9e\x5f\x70\x95\xc9\x05\x4b\x54\x4f\xef\xe7\xd8\xdb\xc3\xd5\xbb\xe4\x0e\x2d\x10\x16\x39\xff\xeb\xd9\x35\xa1\x8d\x39\x4b\x6d\x8b\x84\xef\x45\x82\xe9\xce\xfc\x06\x93\xf6\xf6\x30\x6f\x0b\xe9\x51\x67\xfd\xec\x3a\xfc\x97\x71\x1d\x02\x05\xf9\x57\x75\x17\x72\xc1\x35\xa7\x5a\x46\x35\xf7\xee\xdb\x89\xb0\x70\x35\x5e\xa9\x2b\x07\x06\xe2\x5e\xc0\xf5\xd7\x83\x1c\x85\x60\xde\xc8\x04\x8a\x19\x6c\xfb\x95\x30\x6a\x12\xcd\xd8\x4a\x54\xfc\x49\x54\x5d\x64\x9c\x1b\xf7\x30\xfe\x68\x73\x20\x2a\xa0\xaa\x7f\x7a\xd5\xeb\x0e\x14\xee\x5f\x48\xfa\x3d\x0c\x9d\x71\xac\xed\x29\xb7\x37\x2b\x22\xff\x31\x8d\xce\x59\x63\x31\xae\xf7\xff\x36\xb4\xc0\x7d\x7c\xb7\x4f\xcb\x66\xff\x3c\x92\xa6\xe7\x70\xc4\x9d\xc3\x3b\x67\xed\x31\xca\x04\xc8\x19\xf0\x44\x58\xea\xac\xa9\x50\xe6\xf0\xfa\x9e\xa7\x43\xeb\x58\x3e\x24\x47\x3a\xab\x22\x3b\x85\x3d\x42\x0e\x15\x2e\xd3\x9e\xc5\x1b\x9f\x3b\x15\x37\x9f\xbd\x7b\x59\x01\xc7\xd3\x8c\x74\xbd\x05\xa0\xe8\x41\xde\x70\xa5\x5d\x43\x32\xf8\x21\xa2\xd4\x04\xd6\xf7\x07\xf9\xf1\xda\xa8\xd8\xbc\xfa\x4f\x9a\xe7\xf5\x2b\xe4\xc1\xb6\xb6\x35\xfc\xb7\x8a\xac\x1a\x0c\xb1\xb1\x2e\x7e\xe0\x48\x2f\x2b\x9e\x81\xca\x7f\x7b\x7e\x4d\xb0\x15\xe5\x1f\x7e\xf7\x02\xe4\xc9\x7f\xfb\xed\xef\x5e\x44\xa2\xc0\xe7\x48\x67\xda\xc9\x0a\x96\x14\x25\x1e\xe3\x12\x09\x79\x71\xf7\x26\x06\xed\x16\x57\x0e\x82\x19\x46\x94\x03\x95\x45\xbc\xb4\xc4\xdb\x1c\xb2\xe7\x2d\xc1\xc5\xee\x20\xde\x3d\xc7\x40\x6f\x1d\x5f\x7e\x0c\x34\xf1\xe9\x92\x48\xbf\x1e\x4a\xff\x90\xf4\x5d\x3b\xd2\x67\x49\x5b\x18\xed\xa2\x49\x5f\x8f\xb4\x05\xe1\xee\x8b\xf4\x05\x76\x31\x84\xb1\x7d\x4c\x45\x6a\x62\xb4\xfb\x8e\x8f\x1a\x72\xb2\x2e\xde\xdd\xfc\xe7\x9b\xb3\xaf\x2f\xdf\xc0\xfc\x30\x92\x77\x70\x7e\x06\x3d\xad\xa8\xbc\x4b\x0c\x6a\x3c\xba\x87\xed\x00\xa1\x2d\x4a\xf1\x5a\xbe\x7b\x7d\xb3\x62\x58\x31\xbf\x38\x57\x65\xdf\x1d\x39\x4c\x4f\xb7\xb8\x2a\x1f\xaa\xe3\x88\x69\xc4\x8e\x3c\x8d\x31\x75\x04\x11\xff\x7b\x49\x9e\xdc\xd1\xde\xda\xa9\xd6\xdb\x53\x78\xcd\x99\xe1\xdc\xc2\x91\x66\x8f\x7b\x1e\xe4\x33\x3b\xde\xcc\x4e\xe0\xee\xc4\xf8\xc7\x9e\xd4\xe5\xf6\x28\xbb\x1c\x27\xea\xd4\xa9\x99\xba\x87\x37\xf0\x8e\x73\xf6\x1a\x12\x80\x11\x8e\xb5\xe1\x1e\x86\x6f\x30\xa5\x62\xaa\xdb\xac\x60\xe7\x97\x82\x7d\xd5\xa6\x46\x59\xf1\x54\x73\x63\x9f\xad\x6e\xef\xe3\x0e\x4d\x1d\xf6\x1a\xf5\x33\x12\xb7\xf5\xf0\x73\xb1\x42\xd4\x9a\x04\x54\x45\xb3\x80\x2c\xbc\xbf\x8a\x4e\xed\x4f\xf8\x0b\x94\xd0\x79\x3a\xa2\x0c\x9f\xdb\x53\xda\x84\x87\x95\x76\x19\xce\xdd\x6b\xab\xa9\xeb\x5b\xce\x2b\x46\xd1\x59\x3f\x4f\x42\x95\xef\x7d\xdb\x28\x5f\xb1\x28\x2e\xc7\xfd\xf3\x1e\x38\x79\x74\xaa\xff\x5d\x62\x02\x72\x70\xbb\x2e\x5c\xf6\xfb\xfe\xd4\xca\x6a\x2e\xb5\x14\x3b\x26\x62\x5d\x6f\x78\xb9\x1f\xec\x80\x4f\x9c\xfb\x06\x6f\xc3\x02\x46\xdb\xe6\x1f\xa2\xc8\xbd\xdb\xcb\x88\xbb\x8e\xe7\x49\xe1\x1c\x60\x2a\xec\x38\xb7\xf6\xdd\x27\x93\xc5\xf2\xab\x8b\x3d\xdc\xf8\x9f\x4f\x49\x87\x7d\xd7\x97\xda\xd7\x75\x37\x07\x99\xb4\xff\x57\x17\x56\xce\x75\x79\x95\xca\xa2\x3e\x69\x71\xbf\x83\xdf\xc1\x45\x45\xe4\x54\xc5\xc9\x0c\xb2\xd6\xf7\xb2\x4e\x2d\x2e\x73\xdd\x7b\x6d\x25\x7e\xc9\xfe\x2d\x26\xbc\x39\xea\x06\x3f\xf5\x2d\xc5\x79\x7f\xb6\x9b\x7a\x03\xc1\x11\x2b\x3d\xaf\xa6\x6b\xf7\x37\x88\x22\xa8\xef\x6e\xba\xde\x03\xd7\x37\x08\x75\xf0\x7a\xe3\xf5\xdd\x78\x6d\x23\x35\x17\x7f\xad\x1f\xe5\xda\xee\xc4\xa5\x03\x45\x47\xe2\xf3\x7a\x76\x2a\x3a\xb2\x37\x85\xc9\x61\x75\xd2\xda\x3f\xda\x97\xac\x31\xc9\x9c\x67\x4b\xc0\xa8\x27\x03\xc1\xa5\x47\x65\x3a\xc4\x11\xac\x5a\x62\x8f\xf7\x68\x5a\x75\xa5\x59\xa9\xb0\xd3\x50\x51\x98\xfd\x95\xa2\xdb\xcf\xc8\x96\xfc\x38\x21\xd8\x62\xa7\xa4\x55\xa0\x50\xb1\x21\x55\xb9\xbc\x17\xf7\xb4\xce\xc9\xd9\xf5\x90\x1f\x6d\xaf\x64\xc9\x4e\x78\x0f\x54\xc9\x9a\x3f\x63\xea\xcd\xf6\x76\x12\x2a\xcc\x4e\xb8\x56\x6d\x2b\x6a\xa6\xbb\x56\x05\x43\xba\x63\x9b\xc8\x02\x39\x32\xa4\xc7\xce\xa6\x23\x89\x08\x22\x33\x4d\x0b\x2c\xcf\x4c\x26\x4c\xdf\x33\x26\xc8\x8b\x17\x2f\x5e\x44\x58\x82\x73\xf2\xe2\xf7\xbf\xff\x3d\xb4\x10\x26\x39\xcb\x78\xb9\x0e\x08\x9e\xfa\x5f\x2f\x5f\x8e\xc9\x7f\x9c\xbd\x0d\xa5\x7f\x60\xa3\xf4\x4a\x2b\x2c\x17\x87\x33\x03\x1c\xe8\x02\x57\x27\xe4\xdf\x6f\xbe\x7d\xe7\x8e\x32\x6c\x55\xe9\xbf\x0d\xe8\x59\xba\xed\x1d\x93\x8b\x36\x40\xb3\x63\xa4\x0d\x02\x85\xa8\x43\x5a\x33\x88\xf7\xa4\xd3\x29\x5c\x14\x24\xef\x5c\x39\x12\xe3\x2a\xf2\xf0\xd9\x3c\x4c\xee\xb1\x0f\xa9\xb9\x1a\x05\x44\xa5\x72\xb3\x05\x60\x48\x77\x45\xa8\x30\x70\x17\xbe\x15\x5d\x9b\x13\x96\x7a\x42\x0a\x7e\xc7\xc8\x54\x41\x07\xd2\xb6\x28\x77\xcd\x94\xd1\x61\x6c\xd3\xf3\x38\x87\xa5\xdf\x3a\xb3\xc8\xcf\xe3\x01\x8e\xec\x75\xd9\xbb\x50\x05\x57\xd8\xb2\xc2\x66\x1b\x20\x6d\x33\xdb\xfa\xd4\x1e\xd5\xbe\x74\xe7\xe7\x81\xa7\x6b\x8b\x37\x79\xd2\x4b\x68\x21\xa3\x4a\x29\x77\xd0\xa5\x95\x36\x5c\x80\xd5\xb2\x8a\xb8\x26\x49\xb5\xd0\xd3\x7a\xbe\x20\xbd\x7f\x4b\x23\xfb\x12\xf7\x5d\x57\x9d\xf2\x58\x74\x22\x1b\xed\x42\x53\x10\x62\x4a\x73\x6a\x2d\xdd\xc6\x46\xbd\x90\x5c\x1c\x3e\xbd\x11\x4e\x62\xdf\x84\x3e\xb3\xed\x09\x6e\x27\x84\xd1\x6c\x4e\xee\xd8\x72\x04\x74\x2e\x1a\x26\xb6\x2e\x70\x26\xa5\x0b\xaa\xa9\xed\x02\xd0\xf7\xd0\xa6\x35\xb0\x3d\xf7\xc7\xe3\xf2\x28\x5b\x8c\xf6\x59\xb0\x91\x39\x99\xed\xa0\xca\xca\xd6\xb6\x63\x81\xe8\x98\xd4\x5c\x63\x26\xdb\x15\x3e\x01\xaa\x05\x60\x9b\x05\x5e\xad\xe5\x6b\x1a\xca\xc1\x72\xf3\x81\x94\x7e\x05\x03\xeb\x6e\xc3\xc1\x0c\x13\x49\xea\xd5\x80\xce\xc6\xce\x8c\x7a\x4d\xe5\xad\x1a\x13\x15\x39\xdf\x81\xe9\x9a\x28\x75\xc2\xd4\xe6\x3c\x9b\xbb\x76\xdb\x16\x6a\xca\x8e\x22\x2e\x79\x24\xe8\xe5\xbd\x2a\xa6\x9b\x2a\x2e\x24\xad\x1d\x10\x6b\x68\x56\xce\x94\x22\x1c\x7c\x58\x25\xad\xef\x98\x2b\xd0\x48\x8b\x31\xb9\x36\x9b\x99\x00\xd3\xd5\xa9\xc5\xee\x46\x0b\x0c\xda\x36\xf4\xb7\x93\x84\x9c\xd8\xf5\xfc\x70\x3c\x3e\x44\xc9\x60\x43\x72\x72\x34\x9c\x5d\x1a\xb1\x24\x37\x60\xe9\x4b\x9b\xb4\x52\xd8\x7a\xc6\xe8\x45\x06\x1d\xc0\x99\x10\xcc\xaf\x59\x1d\x56\x7e\xa2\xd1\x46\xe7\x76\xec\xd8\x89\x63\x97\xd6\x68\xa9\x8d\xd1\x82\x8e\xdd\xd5\xb1\x6b\x43\xb4\x1d\xda\xa1\xf5\x83\x25\x2d\x1d\x6c\xf9\x5c\x6a\x17\xa0\x9d\x9b\x5f\x95\x09\x0d\x35\x36\xce\xbd\x53\x71\xb3\xec\xe9\x3e\x89\x40\xc9\x16\x5d\x09\xc4\x72\xc3\x3b\x50\xf9\x49\x86\x3a\xac\x2c\x19\xda\x91\x0c\x32\xa8\x3c\x25\x43\xec\x29\x5b\x5b\x94\xa9\x64\xa0\x83\xca\x97\xfb\x6b\x32\xd4\xcd\xca\xd8\xd5\x14\xa8\x6f\xcb\x81\xd3\x4f\xbf\xe5\x34\x1d\xdd\xdb\xb3\x63\x83\x51\xe9\xad\xb1\x5a\x2d\x6e\xbb\x96\x96\x0c\x74\x8b\x56\xd7\xd1\xda\x92\x41\x46\x68\x79\xe9\xd3\x04\x9d\xa2\xaf\xf5\xa5\x74\x3c\x26\x89\x6a\xe0\xea\x88\x57\x0b\x57\x47\x4c\x90\xcc\xea\x58\xa3\xa7\x5e\x3a\xa8\xda\x84\xc5\xe4\x3d\x84\x23\xd5\x12\x3a\x79\x69\x4f\xa4\xc7\xe4\xad\x95\x36\x76\x38\x16\x6a\xb4\x21\x25\x8b\x46\xfb\xd4\xf9\xbe\xe8\xb2\xd3\xcd\x81\x45\xba\xbe\x62\x58\x52\xc5\x81\x05\x71\x26\x19\xa8\xaf\x48\x62\x65\x8b\x34\x49\xc8\x4e\x2c\x9d\x29\xc5\x06\xa6\xe2\x48\x0b\x4f\x4d\x98\xfd\x67\x08\x64\xc5\x11\x1f\xce\x9a\x00\x14\x02\x5f\xa3\x83\x5a\x71\xec\x70\x76\x4e\xa2\xdf\xf1\xfc\x6e\xb0\x46\x9e\xcf\x90\xeb\x69\x22\x09\xab\x95\x35\x31\xe4\x0e\x94\x2c\xa7\x2a\xa4\x36\xa1\x8f\x77\x19\xd8\x85\x58\x5b\xf7\xd9\xf5\xd5\xde\x2c\x25\x1d\x98\x91\xf3\xce\xa9\xa6\xff\x6a\xb6\x12\x70\x4c\xf8\x6e\xdf\xe6\x7a\x5f\xb4\xfb\x12\xd9\xa7\xa0\x1d\x86\x9e\x7f\xc1\xea\xdc\xda\xd2\x5e\x1b\xfe\x13\x19\x52\xb6\x36\x95\x5e\x79\x7a\xeb\x73\x68\x05\x95\xb6\xa4\x7d\x12\x54\x17\xa8\x04\x14\xe9\x4b\x55\x13\x9f\x48\xed\x83\x3d\x88\xc8\x24\x59\x1d\xab\x61\xad\x76\x89\xe4\x06\x7a\x58\xa3\xad\x2c\x6d\x77\x71\x48\x17\xcc\x9f\xbf\xc2\xa6\x9b\x54\x08\xa9\xb1\x03\xf4\x09\xb6\xd9\x4e\xee\xc6\x8e\x2c\x19\x44\xd2\x4e\xc0\x5a\xdd\x71\x8d\xef\x28\x54\xee\xd0\x4e\x7d\xd7\x86\xea\x06\x25\x60\x47\xaf\x53\xed\x22\x0f\xe9\x91\x4e\x3a\xdc\x7a\x97\x0e\xbb\x7d\x27\x33\xc2\x71\x47\xac\xb2\x39\x2b\x77\xe9\x0b\x8e\x17\xf8\xb5\xdb\x0c\x43\x59\xef\x6b\xae\x35\xc3\x0a\xbb\xac\x2e\x77\xe9\xb0\x6c\x50\xef\xc4\xa9\x6d\x58\x97\x62\xf1\xf2\x60\x97\xf6\xe2\x0f\x68\xe2\x4d\xda\x33\x7e\xf0\x76\x77\x8b\x9c\xa0\x51\x3d\x22\x98\x64\xd3\xc0\xb6\xf4\x3e\xee\xd3\x1b\x6a\xcf\xae\xaf\xc8\x02\xcf\xf4\x49\xb7\xe9\xa7\x63\xee\x39\xd9\xad\x2d\xf9\xb3\xb9\xe7\xd9\xdc\xf3\x6c\xee\xf9\x79\x99\x7b\x3a\x22\x94\x63\x6a\x3b\x59\x7b\xfa\x26\xa3\x6e\x65\x6f\x6b\x07\xda\x85\x1a\xd9\x58\x9f\x4e\x9d\x5c\x43\xa2\x9c\x05\x28\xb1\x3b\x3b\xb1\x5d\x68\x5c\xe9\xd9\xc3\xc3\xf1\xf8\xf0\xd0\xd9\x91\xac\xb2\xdb\xe8\xe9\xe8\x0f\xc9\x60\x99\xc8\x64\x0e\xa5\x9c\x61\xbd\xb5\xd2\xa0\xcc\xb4\x06\x15\xdc\x9b\x64\xb8\xb0\x97\xa5\x5b\x7b\xd7\xb7\x06\x73\xdf\x0d\x45\x77\xe0\x7c\x2e\x9a\xed\xf5\x5e\x84\xf6\x56\x54\xf7\x45\xa8\x12\x5a\x7e\xbb\xd1\xab\x1f\x68\x65\xf6\x36\xea\xae\xe0\x25\x4f\xd4\xf9\x88\x65\x2e\x86\xec\x33\xa5\x15\x39\x42\x20\xe3\xac\x6a\x4e\x2c\xc0\x71\xc9\x4a\x59\x2f\xd3\xa9\x96\x03\x6a\x80\xf5\xbe\x62\x21\x1e\xa7\x4f\xb5\x66\x24\x6b\xea\x9a\x09\x5d\x2c\x7f\x6a\x1a\x45\x54\x63\x9c\xf5\xf1\x10\x85\xc2\xe3\x4a\x4a\xdf\xf5\xee\x58\x49\x6f\xf2\x45\xd3\xc1\xec\xea\xf7\x62\x27\x49\x77\xea\x9b\x5f\xa8\x13\x6f\x0a\x84\x5f\x99\x58\xec\x04\x71\x41\xeb\x60\xf2\xd1\xa6\xf1\x20\x1d\x22\xe7\x0b\xae\x64\x30\x69\x72\xe3\xab\xeb\xd6\x4c\x6e\x8b\xd0\xcb\x46\x57\x4d\xba\x30\x4b\x3c\x5f\x75\x64\xd8\x75\x45\xf2\x54\x22\xfd\x1a\x93\x36\xba\x15\x55\xb5\x97\xe1\xfa\x55\xeb\xa3\xa2\x5a\xb3\x5a\xbc\x22\xff\xef\xe8\x6f\xbf\xf9\xe7\xe8\xf8\xcf\x47\x47\xdf\xbf\x18\xfd\xef\x1f\x7e\x73\xf4\xb7\x31\xfc\xc7\xaf\x8f\xff\x7c\xfc\x4f\xf7\x8f\xdf\x1c\x1f\x1f\x1d\x7d\xff\xcd\xdb\xbf\xdc\x5e\x5f\xfe\xc0\x8f\xff\xf9\xbd\x68\xca\x3b\xfc\xd7\x3f\x8f\xbe\x67\x97\x3f\x44\x02\x39\x3e\xfe\xf3\xaf\x76\x98\x2c\x15\xcb\x6f\x93\x09\x3e\xc1\xa2\x77\x0f\x10\x89\xba\x10\x76\x44\x47\x42\x3e\x8d\x5a\x27\xc4\x88\x0b\x3d\x92\xf5\x08\x81\xbd\x22\xba\x4e\x8a\x17\xc3\xe1\x50\xe7\xe1\xf4\xa3\x15\xbb\x76\xa4\x85\x38\x40\x11\x34\xec\xf4\x09\x2e\x3b\x46\xb2\xef\xcd\x46\x6f\x9b\x6b\x3e\x87\x32\x7e\x81\xa1\x8c\xb6\x5a\xcf\x73\x1c\xe3\xcf\x36\x8e\xf1\xc6\x76\xad\xdd\x18\xc4\x88\xa1\x89\x09\x40\x23\x82\x18\x53\x4d\x56\x11\x41\x8c\xe0\x78\x4f\xba\x48\xcf\x41\x8c\xcf\x41\x8c\xcf\x41\x8c\x69\x73\x7f\x0e\x62\x7c\xb6\x6a\x3f\x5b\xb5\x9f\xad\xda\x6b\xe3\x39\x88\x71\xe3\x78\x0e\x62\x1c\x1a\xcf\x41\x8c\xcf\x41\x8c\x9d\x20\x46\xab\x88\x26\x29\x1b\x36\x82\xf1\xc9\x02\x18\x95\x41\x83\x8c\x9d\x65\x99\x6c\x84\xbe\x95\x77\x2c\x32\x66\x25\xca\x48\xb2\x06\x3b\x72\x1d\x4f\x12\xd0\x98\x26\xc4\x27\x88\xe3\xe9\x82\x38\x6d\x72\xce\x44\x8a\x69\xae\xb7\xfd\x67\xf6\x75\x67\x51\x30\x2c\x4f\xe4\x2c\xf7\x70\x13\x10\xd0\x92\x20\x6d\x4e\x6b\x4c\xce\x48\xcd\x32\x5e\x71\x43\x98\xa1\xfc\x19\xfc\x9e\xaa\xee\xfa\x1e\xc7\x5c\x2b\x56\x4c\x6d\xff\x57\xd1\xd6\xcb\xa8\x5b\xd9\x2b\x5d\xdb\x77\x8b\xec\x4d\x1d\xe5\x10\xe9\xda\x7e\x26\x40\x55\x73\xd9\x14\x39\xa9\xd9\x3f\x9c\x68\x64\xf7\xe2\xb6\xfb\xad\x3c\xb6\x42\x64\x3b\xac\x11\xa6\xb3\x68\x3b\x61\x5a\xf1\xd8\x5a\x9e\x1e\x56\x3a\x81\x63\x9f\x2a\x5e\xc3\x15\xbd\x61\x99\x14\xf9\xae\xa6\xbf\xcb\x55\x38\x0e\xeb\xac\x57\x30\xe9\x08\xf3\x06\x41\x41\xa2\x3f\x2d\x78\xce\xf5\xd2\xc7\xba\x21\xf9\x30\x0a\x45\xb0\x6b\x6f\x7f\x38\xe4\x55\xed\xf1\x11\x5a\x55\xb5\xa4\xd9\x9c\xa9\xce\x4e\xa4\xf0\x21\x90\xa0\xb0\xf4\x92\xaf\x49\x50\x34\x33\x2e\x50\xca\x07\xe8\x46\x64\x8b\x28\x76\xd3\x8e\x5a\x6a\x17\x9c\xbb\xb2\xdc\x2e\xd6\xd9\xcf\xa6\x1a\x01\xd1\x14\xa4\xeb\x25\x94\x16\x94\xdd\x8f\xe1\x9e\x44\x14\x08\xeb\xaf\xdf\xbe\xa6\x88\x2c\x72\x57\x2f\xfa\x0f\x2f\x8c\xd2\x9b\x59\x0a\x91\xe6\xb8\x86\x7a\xc1\x5a\x92\xc2\x88\xba\xb2\x76\x55\xa9\x37\x7c\x26\x01\xe8\x6f\xbf\x22\x73\xd9\xd4\x6a\xdc\x2d\x4e\xf4\x12\x7e\x43\x63\x1b\xb2\xd6\x14\x43\xa5\x26\x05\xa3\x4a\x93\x97\x2f\x48\xc9\x45\x63\x24\xaa\xc4\xab\x9a\xaa\x85\x74\xf4\x8f\xdf\x7d\x15\xf9\x56\x9a\xe6\xb1\x1e\xf7\x68\xef\x71\x85\x5d\x17\xad\x02\x92\x14\xfc\x02\x6d\x61\x00\x7b\xb1\x97\x6a\x3f\x8a\xc6\xb1\xf3\x44\x65\xc6\x62\x83\xd0\x72\xcf\xf4\xf1\xc7\x46\x4e\x96\x3a\xbe\xb0\xdb\xff\xc5\xe7\xfb\x15\xdd\xdc\x8f\x6b\x15\xb4\x07\xe7\xba\xde\xec\xb7\x2d\xa0\x3d\xf0\xe2\x9e\x3b\x8b\xcf\xb8\xd2\x83\x8d\xab\x47\x61\x57\x49\xac\xb0\x33\xab\x65\x13\xac\x26\xd2\xdb\x6e\xb0\x27\x38\xfd\xd5\x52\x5c\x9a\x65\x4c\xc1\x85\x76\xe5\x3c\x23\x7a\x80\x08\x89\x5f\x0f\x3c\xf8\x19\x1b\x67\x38\x24\x8a\x74\x4c\x3d\x66\x21\xeb\xa8\x4d\x8a\xd1\x2f\x1c\x7a\x25\xee\x12\xbe\xd4\xbf\x63\x8a\x8b\x19\xb4\x7a\x25\x65\x53\x68\x5e\x45\xe4\xf2\xb8\x1d\xf5\x00\x2d\x7b\xed\x3a\x9b\x68\xc7\xfb\x40\xc3\x5b\x64\x2e\x35\x36\x4f\x00\xa7\xe5\x91\x9b\x0b\x61\x42\x43\x31\x2a\xc8\x8e\x60\x15\xad\xa9\x3b\x96\x20\xcc\x4c\x96\x25\x55\xc7\xd6\xef\x45\x21\xb2\x0c\xa9\xb0\x61\xa8\x35\x2d\xfc\x36\x76\xe3\x6c\xf6\x85\xc8\x9a\x09\x2a\x82\x4e\xf1\xbe\x71\x0a\x5e\x21\xf2\x5e\xb8\x36\x60\xd8\xb9\x3e\x11\x83\xad\xe8\xfe\x35\xcd\xee\x98\xc8\xc9\x07\xe5\xf0\x38\x5f\x0a\x5a\xda\xb6\x12\x55\x2d\xb1\xc3\x3b\xcb\x1d\xfc\x20\x60\x1f\x89\x84\x46\x6d\xac\xec\xe5\x8a\x38\xa2\xbc\xb6\xaf\xdd\x6b\x54\x62\x8d\xf5\x0f\xca\x08\x33\xc3\xf4\x4c\xc5\x30\x5c\xc5\x6a\xbe\xc8\x98\x93\x14\xcd\x44\xf6\xb5\xa8\x45\xb0\xd6\xe9\xda\xb2\x6c\x9d\x53\xde\xb9\x4d\xc0\xde\xbc\xf3\x1e\xba\x4c\xd0\xc2\x90\xa8\xb0\x6c\xec\x5a\x9a\xf5\x11\xca\x9c\xa0\xd8\x57\x0b\xb1\x7a\x12\x5f\x20\xf1\xf0\xfd\xd7\x17\x7d\x62\xf4\x9e\xe6\x52\x91\xaf\x0b\x99\xdd\x91\x0b\x06\x22\x7b\x19\xd4\x4f\x56\x3b\x6b\x44\x35\xfa\x1f\x84\x18\x6a\x36\x5a\x4f\xf2\xcf\xd1\x6a\xb4\xa4\xb3\xa1\x4b\x3a\x22\xa5\x14\x5c\xcb\x7a\x1f\xa5\x1a\x9f\x1b\x5b\xfe\xcb\x34\xb6\xac\x27\x61\xab\xc1\x4f\xb5\xad\xa5\xb9\x12\x89\x1d\xa0\xe7\x8c\xd4\x40\x66\xe0\x65\xd7\xcb\x28\xbe\xd3\x70\xef\xf2\xff\x72\x2e\xef\x47\x5a\x8e\x1a\xc5\x46\x3c\x18\x6b\x17\xbd\xae\x3b\xb6\x84\x60\xc4\xa4\x95\x7d\x83\x2f\xf5\x54\x4d\x2d\xc1\xe2\x0d\xbf\x1b\x21\xe7\xfd\xd7\x17\x86\x53\xc6\x57\xf4\xe7\x8a\x9c\x32\x9d\x9d\x66\xac\x9a\x9f\xda\x69\x7d\x71\xdb\xe5\xe8\x5e\xda\x7e\x9d\x91\x4c\x16\x85\xad\x37\x29\xa7\xe4\x9c\x55\x73\x0f\x2a\xc9\x3d\xf4\xe8\x7b\xf0\x39\x5a\x18\x56\x52\xa6\xb5\x55\xeb\x5c\x2d\xf3\xae\xbd\x59\x1d\x44\xaa\x27\x96\x98\x45\x88\xb0\x5f\x0a\x6a\x3d\x42\x57\xa5\xe8\xba\xdd\xdb\x4a\x73\x6f\xe8\xe4\xf8\x45\x61\xeb\xe3\x75\x8c\x3c\xbc\x71\xaf\x41\x1c\x63\xc7\xad\x9b\xd4\x00\xd2\x7d\xbe\x47\x12\xc9\xd5\x14\xb5\xa2\x9c\xe5\x44\x2e\x58\x5d\xf3\x9c\x29\x47\x8a\x93\x28\xa6\xe0\xc5\xd3\xd2\xc8\xe7\x5e\x96\x5b\xc7\x4f\xa3\x97\x65\xb2\xbe\xdb\x21\xb6\xe6\xdd\x75\x62\x4b\xf3\x92\x47\xa4\xc1\x7f\x41\x9c\x5c\x65\xb4\x60\x57\xdf\x46\xab\x8f\x37\xf8\x7c\x5f\x83\x74\x3f\x76\x5a\xf6\x3c\xa0\x1d\xc8\x37\x1e\x4f\x89\x90\xf9\xb0\x67\x62\xaf\xba\xde\x8c\x6a\x76\x3f\xc8\xf2\x47\x2d\x09\x1d\x7e\x2a\xd4\x58\xe7\xb9\xf9\xcf\xaa\x02\xd7\xb9\x45\xd8\x57\x64\x5f\xc2\x84\x3d\xd5\x34\xa3\xa0\x5b\x62\xdb\x27\x10\x03\x60\x2c\xa2\x9f\x5d\x5f\x91\xbf\x20\xdc\xfd\x75\x19\xaa\xa5\x46\xb9\xf8\x42\x96\x94\x27\x36\xa9\xef\xb4\x74\xeb\x4e\xf4\xda\x03\x25\x08\x35\x78\x2c\x9d\xce\xfb\x53\x3e\x6b\x8c\x1e\x6d\x75\xdb\xe7\xc6\x2c\x81\xa5\x3f\x9e\x08\xd6\x4a\x60\x1d\x1b\xa4\xcb\x81\xf1\x52\x55\x70\xe9\x0e\x2b\x80\x79\xf9\x70\x12\xa2\x98\x50\x1c\x7c\xa3\x9d\xb0\x27\x10\xcd\xf4\x3c\xc2\x1b\xe5\x93\x5b\x50\x8c\x3b\x21\x6f\xe4\x8c\x0b\x47\x1d\xa4\x0d\x27\x98\x52\x5e\xc4\x6d\xe3\xb3\x5c\xb5\x75\xfc\x34\xe4\x2a\xa5\x8a\x4b\x41\x27\x45\x38\x12\xad\xcf\xb8\x0a\x0a\x51\x1d\x0c\xde\x3d\xcd\xb9\x32\xff\x4f\x6e\x6e\xde\x80\x57\xa9\x11\xb1\x7a\x06\xf8\x5d\x2c\x79\xf6\xc5\x9c\x90\x68\xec\xef\x1e\x23\x4d\x4c\xee\xaa\x73\x25\x72\xb3\x0c\xa6\x7a\x81\x95\x16\x1a\xf6\x2d\x8a\x75\x39\xd9\xb8\xae\x09\x23\xb7\x73\x9e\xdd\x5d\x77\x9c\x4b\xb2\x36\xbf\x89\xce\x4f\x9e\xc1\xc6\x5c\xe7\xd5\x77\xf7\x45\xf8\xed\x32\xaf\x53\x8d\x1c\xb7\x1d\x8e\x76\x63\xb7\xca\x00\x21\x54\x29\x99\xf1\x78\xef\x24\x98\xe8\x5a\x96\x98\x03\x4b\xdc\xdf\xf2\x40\x0a\x7a\x10\xdf\x76\x88\x60\x05\x38\xaa\x3a\x7c\x38\xc6\x07\x69\x77\x69\x6f\x4b\x42\x54\x4c\xee\x37\x7b\xdb\xeb\x30\xeb\x5c\x83\xe8\x30\xf3\x0e\xb1\x08\x61\xa4\x2b\xca\x38\x99\xd6\x36\x10\x5f\x39\xfa\x6e\xa7\xd9\xf0\xcd\x81\x14\xef\xbd\x6c\x52\x38\x0d\x7b\x93\x2d\x65\x25\x1a\x00\x7f\xb3\x6e\x34\xb8\xd4\x95\xac\x9a\x82\x06\xdc\xc3\xdd\xe6\xba\x0f\xf5\x57\xe0\x1c\xf6\xe0\x56\x7b\xec\xb6\x64\x5b\x13\xdc\x36\x24\xac\x05\x11\xa1\xed\x60\x16\xdd\xa1\x2c\x08\x73\x35\x9f\x6d\x0f\xf9\x69\x31\xf9\x68\xab\xf9\x65\x41\xa0\x1b\xf3\xcf\xb6\x75\x28\x4b\x88\xba\x79\xf1\xbb\xaf\xbe\xda\xd6\xd3\x6c\x73\xcf\xb2\xf0\x96\x6e\xef\x69\xf6\x80\x44\xb2\x70\xe2\xd8\x7a\x22\x58\x14\xc5\xda\xd0\xd3\x2c\x31\xf1\xeb\x71\x9a\x96\x45\x39\x2b\x12\xaa\x22\xb8\x5a\x07\x51\x9b\x32\x54\x0b\x61\x6b\x85\x83\x08\x96\xd7\xab\x80\x10\x53\xd7\x20\xc2\x81\x0a\x75\x0f\xf6\x5a\xcd\x20\xa1\x86\x41\xaf\x32\x41\x10\xf0\x50\xe5\x82\xad\xf5\x08\xe2\x55\x3a\x80\x15\x55\x85\x20\x08\x33\xba\x81\x52\x74\x3c\x73\x54\xc5\x81\x7e\x1d\x81\x38\xdd\x21\x26\xbb\xee\x71\x9b\xf2\x0d\x54\x12\xf0\xd5\x01\x22\x54\xb6\xd8\xfa\x01\x49\xa9\x46\xf1\x69\x46\x71\x15\x02\x22\x13\x91\xd2\x92\x90\xa2\x6b\x00\xec\x25\xf3\x3f\x31\x7b\x25\x3e\xcb\x3f\x49\xf4\x89\x82\x48\x02\x19\xfd\x3b\x48\x3c\x38\x52\xe5\x9e\x48\xb0\x2f\x92\xa4\x9f\x48\xa0\x83\x39\xf8\xab\x32\x50\xec\xfa\x37\x67\xde\x6f\xc9\xa4\x8f\x04\xda\xcb\xb7\x0f\x88\x3d\x91\x20\x07\x1b\xba\xae\x0a\x3f\x91\x30\x63\xda\xba\xb6\x38\x1b\x09\x34\x3e\x43\x3e\x3d\x23\x25\x35\x1b\x3e\x3e\x13\x25\x2a\xf3\x3d\xb1\x0c\xeb\xf6\x7c\xf7\xf5\xfc\xf5\x48\x90\x6f\x37\xb0\xcb\xed\x59\xeb\xb1\x27\xd6\x96\xea\xd9\x29\x57\x3d\x9a\x8c\xc6\xe6\x36\xc7\x67\x34\xfb\x4e\x2b\xc1\x89\xa6\x25\x32\xa7\x7a\x06\x92\x4d\x2d\x3d\x3b\xb5\xb5\x24\xb8\xf3\xc4\x48\x5c\xdf\xed\x20\x46\x7b\x6b\xd4\x53\xd8\x12\x48\xb4\x79\x05\x41\xcb\x41\x9e\xdf\x3f\x65\x7c\xe3\xdb\x9b\x15\x17\xb5\xff\xd9\x69\x0a\xd6\xfb\x3c\xec\xa2\x7e\x74\xcf\xf4\xb3\x23\x38\x35\x92\x37\x26\xc9\xb3\x1b\xc9\xfb\xec\xb5\x1c\x5e\xfa\x53\x78\x2d\x55\xaf\x86\xac\xb3\x77\x02\xb5\x89\x72\x5c\xca\x89\xed\xf0\x83\x44\xdb\xdf\xe5\xb3\xeb\x2b\x92\xd5\x0c\x12\xd0\x69\xa1\xc6\x64\x87\xca\x47\xce\x3f\x64\xa5\x3e\x27\x71\x51\xad\x59\x59\xe9\x58\x04\x7a\x76\x5a\x6e\x1d\x3f\x0d\xa7\xe5\x8e\x9e\x8e\x8f\xfe\x35\x67\x2f\x9a\x37\x25\x15\x23\x73\xcb\xc1\x7d\x69\xdd\x20\x71\xae\x8e\x15\x26\x35\x26\x2e\x17\x09\x76\x1b\x0c\xa7\x90\x12\xd9\x08\xfe\x63\x84\x62\xe6\xeb\x08\x7a\x11\xe0\x11\x1c\x43\x00\x77\xc7\x3d\xc3\x26\x4c\x2b\xd4\x21\x93\x55\xf4\x8e\x59\x66\x6e\x17\xea\xf7\xcf\x11\x82\x4e\xa7\xa7\xae\x15\x2c\x06\x34\x8a\x50\xd7\x90\xc8\xdc\x42\xe9\xeb\x63\xa8\x90\xd1\xa2\x90\xf7\x11\xa6\xf1\x39\xeb\x09\x10\x06\x2f\xcc\x5a\x6d\x2d\x83\x09\x23\x25\xaf\x6b\x59\x5b\x87\x56\x84\x59\xb5\x45\x17\x08\xda\x31\x7a\x21\xab\x51\x0d\xaa\x6d\x0c\xc7\x0d\xd3\x9d\xed\x8e\x11\x00\xa9\xc0\xc4\x34\xf3\xdf\x2e\x20\x17\xbb\xf8\x59\x3a\x39\x61\x73\xba\xe0\xb2\xa9\x01\x7a\x0c\xc8\x03\xfb\xaa\x61\xdd\x64\x29\x1b\xef\x00\x68\x20\x47\xc5\xef\xae\x4a\x5e\xf8\x98\xbc\x6b\x5f\x06\x55\x36\x97\xce\x72\x39\x62\x9f\xb8\xd2\xe9\x7b\xe9\x8e\xd8\xb5\xbb\xd8\xc7\x8d\x59\xa8\xca\x30\xf0\x8f\xc1\x5c\xc4\xfe\x3d\xe9\xbe\xd5\x17\x67\x17\x37\xf0\xa7\x87\x08\xb3\xb6\x06\x87\x42\x11\xce\x26\x09\x3d\x5c\xa0\x8d\x0b\xb5\xc4\x79\x07\xba\x98\x3d\xcb\xc6\x3f\x15\xd9\xd8\x07\x76\x14\x3c\x5b\x5e\x5d\xa4\x49\x89\x3e\xa0\xc3\xbc\x4c\xbe\xa6\x8a\xe5\xe4\x2d\x15\x74\x86\x86\x88\xa3\x9b\xeb\xaf\xdf\x86\x3b\x72\x54\xb5\x04\xa3\xca\xd5\xc5\x86\xd0\x00\xcf\x5a\xf1\x23\xef\xf6\x95\x78\xbb\xb6\xf6\x64\xf9\x61\xcf\xab\xdf\x5b\x4a\x31\xf1\x3c\x3e\xa6\x0d\xdd\x7a\xe9\x15\x0c\xd3\x70\x95\xa1\xd4\x2a\xc1\x5a\x94\xf9\xdd\xee\xd3\xe4\x42\x69\x5a\x14\xd7\x05\x15\x67\x55\x55\xcb\xc5\x26\x4b\x50\xbf\xa0\x98\x7d\xcc\x09\x69\x18\x01\xe9\x7e\xac\x70\xf3\x21\xfa\x4a\x90\xab\x16\xfa\xa6\xad\xbc\xd2\xde\x04\x24\x05\x08\xdb\x07\x67\x8d\x96\x25\xd5\x3c\x3b\x20\xb2\x26\x07\x6f\xa9\x68\x68\xb1\x21\x82\x79\x60\x49\x9b\xc5\xfd\x81\x17\xb6\xb5\x3e\x08\xbe\x32\x20\xb3\x0d\xbd\xab\x69\x6d\xa8\xd8\xf9\xcd\xc7\xe8\xf7\x94\xa6\xba\x59\xa1\xdd\x5b\xb9\xc8\x66\xbe\x31\x22\x05\x55\xfa\x43\x95\xd3\x55\x67\xe8\x76\xe6\x90\x51\x4d\x0b\x39\xfb\x2b\xa3\xc5\x26\xcc\xed\xe1\xc5\x79\xf7\x59\x67\x0c\x45\x14\xb9\x69\x26\xfe\xc1\x43\x45\x8c\x42\xb4\xbd\x1e\x54\xcd\x0a\xb6\xa0\x42\x3b\x80\x37\xd8\xd3\xe4\xd0\xee\xc1\xd8\x60\x0d\x6f\x9d\x35\x39\xd3\xac\x2e\xb9\xe8\x7f\xe5\x06\x9e\x3d\x97\x22\xe7\x7a\x4b\xf8\x0a\x18\x93\x11\x46\xff\x4b\xdb\x90\x6d\xb3\x83\x72\xab\x4b\xb2\x4f\x9b\x3a\x73\xeb\x6f\x14\x3e\x36\xb1\x12\xfb\x1c\x7f\x94\xd3\x2d\x3e\xc9\xde\x4c\xd7\xf6\x96\xdc\x09\x79\xaf\xb0\xca\xe2\xa6\xfb\x16\x90\x3b\x86\xe4\x8d\x91\xc3\x05\xfc\xf4\xe6\xac\x8d\x91\x9d\xff\x26\x1b\xcc\x76\xf4\xc3\x11\x92\x50\x56\x3f\xbf\x8d\x8e\x6e\xc2\x49\xff\x12\x16\xa2\xf0\xd1\x12\xe8\x09\xee\x3d\xb4\x8d\xe2\x47\x88\x6c\x31\x32\x56\x5c\xf7\xd7\x3e\xbd\x6d\xbb\x82\xae\x99\x23\x82\x32\x66\x80\x35\x45\x35\x47\xed\x9b\x45\xae\x6c\xe0\x7c\x6d\x95\x2d\x4a\x2a\xce\xb0\xc0\x22\x15\x76\x83\x80\xab\x30\x3a\x2c\x43\xe3\x0b\x86\xab\x19\x55\x1c\xde\x3b\xb1\xb1\x49\xe8\xec\xb0\xf1\x7b\xce\xad\x42\xb1\x08\xe0\x20\xcc\x7f\xbf\xf9\xf6\xdd\xe9\x5f\xa4\x0d\x8e\xb1\x05\x54\x0c\xdd\x00\x09\xe0\x84\xa8\x26\x9b\x13\xaa\xcc\x92\x0c\xa2\x1b\x2a\xc1\xc6\x25\x15\x7c\xca\x94\x1e\xfb\x4e\x5a\xea\xfb\xdf\xfe\x30\xcc\xfa\x5f\xcb\x9a\xd8\x3c\xb3\x13\x57\x99\xce\xae\xbd\xc5\x2e\xae\x70\x83\x3c\xdc\x41\x90\xde\xc2\x50\xc9\xdc\x6e\xc4\x3d\x6c\x80\xa6\x77\x86\x3f\xe2\x06\x34\x0c\x9c\x89\xaf\xc8\x81\x11\x3d\x3b\x53\xfe\x6f\xc3\xf6\xfe\x67\xb8\x38\xc3\xd1\x3d\x08\x0e\x07\xe6\xd1\x03\x9c\xa8\xcf\x7d\xe8\x86\xce\x7a\xa8\x20\x7b\x0c\x82\xd4\x35\x9f\xcd\x18\x08\xcf\x73\x46\xa0\xe8\xc2\xb1\xad\xd6\x27\x64\x07\x90\x8b\x1e\x8a\x33\x1c\xac\x2e\xee\xfb\xdf\xfe\x70\x40\x8e\x5a\x68\x20\x8b\x72\x91\xb3\x4f\xe4\xb7\xe8\xa2\xe1\xca\xec\xdb\xf1\xf0\xa9\x81\x8d\x41\x2d\x85\xa6\x9f\xcc\x5c\xb2\xb9\x54\x4c\xa0\x19\x48\x4b\x32\xa7\x0b\x46\x94\x2c\x19\xb9\x67\x45\x31\xb2\x4e\x29\x32\x9c\xc6\x06\x78\xec\x8e\x1c\x8a\x45\x91\x8a\xd6\xba\x77\x1d\xc6\xd6\x6e\x07\xb3\x34\xa8\x37\x1b\x56\xa2\x6d\xc8\xd0\x94\x0b\xeb\x91\xb7\x71\x05\x06\xa7\xa1\x10\x08\x22\x9a\x96\x24\x9b\x53\x31\x63\xd6\x49\x35\xac\xd8\x35\xba\xa9\xd9\xa0\x13\x38\x8a\x62\xdc\x71\x91\x50\x20\xe7\x1b\x2e\x56\x63\xd4\x36\xdb\x50\x67\x5c\xbb\x74\x4d\x9b\xa0\xa0\x97\xa7\xe6\xbc\x6b\x3e\x69\xb4\xac\xd5\x69\xce\x16\xac\x38\x55\x7c\x36\xa2\x75\x36\xe7\x9a\x65\x66\x41\xa7\xb4\xe2\xa3\x4c\x0a\x83\x77\x50\xd5\xac\xcc\x7f\x69\xd6\xa1\x46\x66\xa2\x83\x9d\xe2\xa2\x96\x1b\x32\x1d\x7f\x56\x93\xf1\x5e\x56\x17\xb4\x39\xae\x2f\x11\xed\x77\x4f\xb0\x4e\x30\x46\x9d\x3e\x78\x99\xae\x11\x59\x2a\xe7\x3d\xb4\xfd\xfa\xb2\x55\x08\xe6\xea\x61\x55\x36\xb8\x99\x9e\xe2\x87\x6e\x75\x49\x73\x64\x17\x54\x2c\x1f\xfd\x1a\x98\x8d\x86\x36\x9a\xd9\x72\x04\x20\x64\x31\xa2\x22\x37\xff\x8d\x99\xc5\xd9\xf2\xc1\x3b\xdb\xf0\x04\x62\xf0\xe1\xea\xe2\x69\x2e\x47\xc3\x1f\x78\xf3\xad\x14\x1b\x25\x62\xa2\x18\x0f\xa1\xa1\xba\x6e\x98\x13\x06\xfa\x82\x3a\x57\x0e\xe6\xff\xd9\x2e\x8b\x81\x4f\xd3\x57\xa5\x1e\x16\x44\x87\x3c\x8d\x1d\x39\x3b\x6a\x05\x6f\xda\xe7\xbb\x96\x51\x88\xcb\xa5\x4a\xdb\x42\xbc\xae\x72\x55\x6f\x61\xb8\xf8\xad\x4b\x42\xf6\xb4\x8d\xd5\x47\x60\x98\x8b\x2d\x32\x93\x1b\x6d\xa8\x7f\x9a\x79\x05\x2f\xa4\x9c\xfa\x07\x51\x05\x28\xb8\xf2\x15\x68\x8d\x1a\xa8\x34\xa1\x0b\xca\x0b\xf0\x33\xc9\x89\x62\xf5\x82\x6e\x53\x1c\xb1\x88\x3d\x5d\xd5\x6a\x6d\xcf\x5a\x14\x37\x1f\x5d\x87\x74\xeb\x59\x3f\xb1\xfe\x62\x36\x6e\x6c\x77\x81\x98\x57\xb4\xb2\x96\x2d\x6b\x78\xa0\x06\x89\x0a\xfc\xc6\x3f\x6d\x29\x82\x16\x52\xa9\x0c\x7e\xfe\x95\xd1\x5a\x4f\x18\xd5\xb7\x7c\x3b\xaf\x5e\x43\xf8\xde\x5b\xce\x94\xd5\xa2\xfb\x3d\x23\x33\xa9\x8d\x08\xd7\xc0\xcd\xd8\x8a\xe2\x20\x97\x63\x99\x4b\x8f\x8c\x8f\x87\xef\xed\xaa\x6f\x6b\x0a\x99\xc6\x52\x24\x2d\xbb\xff\xda\xfa\xba\xad\xf4\x3f\xb8\x0e\x23\xf4\x03\x14\x28\xa2\x06\x96\x3b\x3c\x59\xf4\x79\x0d\x65\x8c\xec\x6d\x0b\x4a\xa6\xd4\x40\xe9\xb4\x7e\x00\x38\x3e\x8b\x17\x7f\xc5\xa5\x5c\xba\xbf\x61\x2e\xe9\x10\xaf\xcb\x99\xa6\xbc\xb0\xd6\x15\xbb\x65\x7e\x37\x87\xa9\xf5\xc0\x82\x6b\x46\xd5\x76\x91\x64\xb5\x4a\xb0\x92\x02\x97\x21\x05\x1b\xdd\xcb\x3a\x27\xe7\xb4\x64\xc5\x39\x55\xcc\x42\xea\x16\x1d\xc0\x53\x3c\xdc\xee\x4f\xdd\xd7\x22\x36\x59\x27\xb7\x2c\x02\x0d\x73\x0e\xf1\x2c\xde\xb4\x6a\x27\x4e\xf9\xc4\x99\x83\x6f\xeb\x66\xa0\xe7\xd4\x6b\xc3\x31\x4f\xc8\x07\x71\x27\xe4\xfd\xee\xb3\xd7\x03\x1e\xaf\x7e\x08\xea\xb2\xf2\x57\xc6\x15\x88\xec\x99\xdf\xfc\x02\x76\x98\x8b\x65\x1f\x1b\x8d\xc2\x7d\x56\xe6\x1f\x74\x73\x31\xff\xb9\x66\x0a\x34\x0a\x71\x2d\x67\x35\x53\x6a\xf3\xc2\x37\x95\x4c\x8f\x73\x14\xfc\x85\x09\x5b\x8f\x20\x30\xd5\xab\x4d\xef\xb8\x59\x3b\x7e\x39\x6b\xff\xb2\xb5\x97\x95\xfd\x78\x55\x6c\x10\x79\x86\x22\x96\x3b\x93\xde\x68\x32\xdc\x36\xdb\xcd\xa6\xc2\x0e\x7f\xed\x3c\xbb\x69\x6b\x8d\xb0\x34\x64\x01\x77\x6b\x3f\xbf\xf9\xb8\xed\x10\xb6\xf0\xd8\x61\x8e\x18\x32\x2f\x3e\xcc\xb0\x18\xb8\x49\x01\x63\xe2\xee\x66\xc4\xed\x11\x2c\xbb\x18\x10\x9d\x91\x70\x1b\xff\x79\x3c\xd3\xe1\x6e\x46\xc3\xe1\xb0\x8b\xc7\x31\x17\xee\x66\x28\x6c\x8d\x81\xdb\xc8\x5f\x9a\x89\x70\xa3\x19\x70\xdb\x8c\x63\x8c\x83\x9b\x0d\x80\x5b\x20\x86\xcd\x82\x5b\x4d\x7f\xdb\xb1\x75\xab\x41\x30\x60\xf4\xdb\x02\x71\x9b\x29\x70\xd8\xdc\x17\xb8\xc7\xdb\x4d\x7c\x3f\x05\xe3\x5e\x60\x71\xdb\x0d\x7a\x5f\xa0\x29\x2f\x62\x2d\x03\xe6\xbb\x2f\xd4\x70\x17\x58\x54\x94\xb1\xee\x51\xcc\x74\x3f\x19\x03\x5d\x60\x07\xb7\x1a\xe5\xbe\x38\x73\x5c\x58\xdc\x64\x79\x58\x20\xbe\xea\x3c\xda\x15\x89\xad\x90\x05\x01\x5e\xf6\x09\x17\x4e\xd6\x15\xc7\x76\x91\x82\x8d\x20\x1a\x98\xd5\xa1\x9d\x56\xb4\x1c\xe9\x04\xe1\x8d\xdc\xd3\x69\x75\xbd\x89\x93\x8b\xcb\xeb\xf7\x97\xe7\x67\xb7\x97\x17\xab\xd2\xeb\xfa\x7e\x0f\x4a\x95\xdb\xed\x36\xa3\x8e\x4c\xb9\xe1\x8f\x86\x10\x6f\xf8\x59\x6c\x8a\x90\x1d\x91\xa6\xd9\xe0\xbf\x7d\x98\x44\xbb\x33\x2f\xdb\x99\x4f\x84\x6e\x5f\xdc\xf5\x33\xb7\x0f\x30\x03\x63\x26\x8d\xf4\x34\x97\x45\xae\x6c\x3c\x3a\xb9\xba\xf0\x99\xb5\x5c\x64\x45\x93\x6f\x37\x4d\x7c\xf8\x70\x75\xa1\xc6\x84\x7c\xcd\x32\xda\x28\xb0\x5d\xe5\x52\x1c\x6a\xf2\xed\xbb\x37\xff\x01\x79\x21\xf0\x84\x15\x12\xb9\xed\xb8\xc1\xe9\x40\x3b\x11\x5c\x1d\xc0\x44\xc1\x06\x66\x99\xd1\xca\xd0\x32\x85\x3d\x24\x35\x48\x29\x73\x56\x54\x86\x6e\xde\x31\xe2\x3b\x1c\x6c\x9b\xe7\xd5\x85\x82\x77\x30\x02\xdf\x86\x17\xcf\x98\xc6\xdc\xdb\xed\x11\xc2\x03\x3b\x3e\x68\xeb\x7e\x80\x95\xbb\x7b\xcf\x36\xcc\xc9\xda\x2d\xee\xa9\xb2\xf6\xc1\x0d\x33\x1f\xc4\x93\x90\x95\x6b\x9b\x59\x68\x8b\x41\x08\x89\x38\xfc\x6b\xcd\x10\x60\x26\xd9\xda\x78\x36\x52\x17\x2d\x21\x67\x33\xca\x82\xbd\x2d\xa4\x6d\x53\xaf\xb4\x35\xcb\x0f\x5b\xdd\xfa\xde\x27\x7d\xc5\xcd\xa1\xcd\x5f\x9b\x05\xb4\xc7\xcc\x5f\x81\xf7\x05\x7f\xc0\x38\xd0\xee\x2f\xcd\xc4\x89\x06\x9e\xc8\x58\x9b\x15\xf9\xef\xff\xf9\xc5\xff\x1f\x00\x00\xff\xff\x6a\xfe\x5c\x76\x3a\xfc\x01\x00") func operatorsCoreosCom_subscriptionsYamlBytes() ([]byte, error) { return bindataRead( @@ -219,7 +219,7 @@ func operatorsCoreosCom_subscriptionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "operators.coreos.com_subscriptions.yaml", size: 130106, mode: os.FileMode(436), modTime: time.Unix(1606762436, 0)} + info := bindataFileInfo{name: "operators.coreos.com_subscriptions.yaml", size: 130106, mode: os.FileMode(420), modTime: time.Unix(1607724221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/go.mod b/go.mod index 79e0052b5..d86d79e94 100644 --- a/go.mod +++ b/go.mod @@ -6,10 +6,7 @@ require ( github.com/blang/semver v3.5.0+incompatible github.com/ghodss/yaml v1.0.0 github.com/go-bindata/go-bindata/v3 v3.1.3 - github.com/imdario/mergo v0.3.8 // indirect github.com/mikefarah/yq/v2 v2.4.1 - github.com/onsi/ginkgo v1.12.0 // indirect - github.com/onsi/gomega v1.9.0 // indirect github.com/sirupsen/logrus v1.6.0 github.com/spf13/cobra v1.0.0 github.com/stretchr/testify v1.5.1 @@ -17,6 +14,6 @@ require ( k8s.io/apiextensions-apiserver v0.19.3 k8s.io/apimachinery v0.19.3 k8s.io/client-go v0.19.3 - sigs.k8s.io/controller-runtime v0.6.0 - sigs.k8s.io/controller-tools v0.3.0 + sigs.k8s.io/controller-runtime v0.7.0 + sigs.k8s.io/controller-tools v0.4.1 ) diff --git a/go.sum b/go.sum index 5d9a8bb36..f25cedd9c 100644 --- a/go.sum +++ b/go.sum @@ -132,7 +132,9 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= +github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs= +github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/zapr v0.2.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= @@ -242,6 +244,8 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= @@ -259,10 +263,10 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.3.1 h1:WeAefnSUHlBb0iJKwxFDZdbfGwkd7xRNuV+IpXMJhYk= -github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/googleapis/gnostic v0.5.1 h1:A8Yhf6EtqTv9RMsU6MQTyrtV1TjWlR6xU9BsZIwuTCM= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= @@ -276,15 +280,16 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.10 h1:6q5mVkdH/vYmqngx7kZQTjJ5HRsx+ImorDIEQ+beJgc= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -357,21 +362,25 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0 h1:Iw5WCbBcaAAd0fpRb1c9r5YCylv4XDoCSigm1zLevwU= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.1 h1:jMU0WaQrP0a/YAEq8eJmJKjBoMs+pClEr1vDMlM/Do4= +github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.8.1 h1:C5Dqfs/LeauYDX0jJXIe2SWmwCbGzx9yF8C8xy3Lh34= github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= -github.com/onsi/gomega v1.9.0 h1:R1uwffexN6Pr340GtYRIdZmAiN4J+iw6WG4wog1DUXg= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.2 h1:aY/nuoWlKJud2J6U0E3NWsjlg+0GtwXxgEqthRdzlcs= +github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= @@ -438,6 +447,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= @@ -477,10 +487,16 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.8.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -510,6 +526,7 @@ golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTk golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= @@ -546,6 +563,7 @@ golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -584,6 +602,7 @@ golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 h1:ng0gs1AKnRRuEMZoTLLlbOd+C17zUDepwGQBb/n+JVg= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -594,6 +613,7 @@ golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5 h1:LfCXLvNmTYH9kEmVgqbnsWfru golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4 h1:5/PjkGUjvEU5Gl6BxmvKRPpqo2uNMv4rcHBMwzk/st8= golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -611,6 +631,8 @@ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZe golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e h1:EHBhcS0mlXEAVwNyO2dLfjToGsyY4j24pTs2ScHnX7s= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -635,20 +657,25 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72 h1:bw9doJza/SFBEweII/rHQh338oozWyiFsBRHtrflcws= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191030203535-5e247c9ad0a0 h1:s5lp4ug7qHzUccgyFdjsX7OZDzHXRaePrF3B3vmUiuM= golang.org/x/tools v0.0.0-20191030203535-5e247c9ad0a0/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f h1:kDxGY2VmgABOe55qheT/TFqUMtcTHnomIPS1iv3G4Ms= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 h1:HHeAlu5H9b71C+Fx0K+1dGgVFN1DM1/wz4aoGOA5qS8= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616195046-dc31b401abb5 h1:UaoXseXAWUJUcuJ2E2oczJdLxAJXL0lOmVaBl7kuk+I= +golang.org/x/tools v0.0.0-20200616195046-dc31b401abb5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= +gomodules.xyz/jsonpatch/v2 v2.1.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -663,6 +690,8 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -729,8 +758,12 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966 h1:B0J02caTR6tpSJozBJyiAzT6CtBzjclw4pgm9gg8Ys0= gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= @@ -741,28 +774,35 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= k8s.io/api v0.18.2 h1:wG5g5ZmSVgm5B+eHMIbI9EGATS2L8Z72rda19RIEgY8= k8s.io/api v0.18.2/go.mod h1:SJCWI7OLzhZSvbY7U8zwNl9UA4o1fizoug34OV/2r78= +k8s.io/api v0.19.2/go.mod h1:IQpK0zFQ1xc5iNIQPqzgoOwuFugaYHK4iCknlAQP9nI= k8s.io/api v0.19.3 h1:GN6ntFnv44Vptj/b+OnMW7FmzkpDoIDLZRvKX3XH9aU= k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= k8s.io/apiextensions-apiserver v0.18.2 h1:I4v3/jAuQC+89L3Z7dDgAiN4EOjN6sbm6iBqQwHTah8= k8s.io/apiextensions-apiserver v0.18.2/go.mod h1:q3faSnRGmYimiocj6cHQ1I3WpLqmDgJFlKL37fC4ZvY= +k8s.io/apiextensions-apiserver v0.19.2/go.mod h1:EYNjpqIAvNZe+svXVx9j4uBaVhTB4C94HkY3w058qcg= k8s.io/apiextensions-apiserver v0.19.3 h1:WZxBypSHW4SdXHbdPTS/Jy7L2la6Niggs8BuU5o+avo= k8s.io/apiextensions-apiserver v0.19.3/go.mod h1:igVEkrE9TzInc1tYE7qSqxaLg/rEAp6B5+k9Q7+IC8Q= k8s.io/apimachinery v0.18.2 h1:44CmtbmkzVDAhCpRVSiP2R5PPrC2RtlIv/MoB8xpdRA= k8s.io/apimachinery v0.18.2/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA= +k8s.io/apimachinery v0.19.2/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apimachinery v0.19.3 h1:bpIQXlKjB4cB/oNpnNnV+BybGPR7iP5oYpsOTEJ4hgc= k8s.io/apimachinery v0.19.3/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apiserver v0.18.2 h1:fwKxdTWwwYhxvtjo0UUfX+/fsitsNtfErPNegH2x9ic= k8s.io/apiserver v0.18.2/go.mod h1:Xbh066NqrZO8cbsoenCwyDJ1OSi8Ag8I2lezeHxzwzw= +k8s.io/apiserver v0.19.2/go.mod h1:FreAq0bJ2vtZFj9Ago/X0oNGC51GfubKK/ViOKfVAOA= k8s.io/apiserver v0.19.3 h1:H7KUbLD74rh8NOPMLBJPSEG3Djqcv6Zxn5Ud0AL5u/k= k8s.io/apiserver v0.19.3/go.mod h1:bx6dMm+H6ifgKFpCQT/SAhPwhzoeIMlHIaibomUDec0= k8s.io/client-go v0.18.2 h1:aLB0iaD4nmwh7arT2wIn+lMnAq7OswjaejkQ8p9bBYE= k8s.io/client-go v0.18.2/go.mod h1:Xcm5wVGXX9HAA2JJ2sSBUn3tCJ+4SVlCbl2MNNv+CIU= +k8s.io/client-go v0.19.2/go.mod h1:S5wPhCqyDNAlzM9CnEdgTGV4OqhsW3jGO1UM1epwfJA= k8s.io/client-go v0.19.3 h1:ctqR1nQ52NUs6LpI0w+a5U+xjYwflFwA13OJKcicMxg= k8s.io/client-go v0.19.3/go.mod h1:+eEMktZM+MG0KO+PTkci8xnbCZHvj9TqR6Q1XDUIJOM= k8s.io/code-generator v0.18.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= +k8s.io/code-generator v0.19.2/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= k8s.io/code-generator v0.19.3/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= k8s.io/component-base v0.18.2 h1:SJweNZAGcUvsypLGNPNGeJ9UgPZQ6+bW+gEHe8uyh/Y= k8s.io/component-base v0.18.2/go.mod h1:kqLlMuhJNHQ9lz8Z7V5bxUUtjFZnrypArGl58gmDfUM= +k8s.io/component-base v0.19.2/go.mod h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo= k8s.io/component-base v0.19.3 h1:c+DzDNAQFlaoyX+yv8YuWi8xmlQvvY5DnJGbaz5U74o= k8s.io/component-base v0.19.3/go.mod h1:WhLWSIefQn8W8jxSLl5WNiR6z8oyMe/8Zywg7alOkRc= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= @@ -785,15 +825,17 @@ k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89 h1:d4vVOjXm687F1iLSP2q3lyPPuyvTU k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200729134348-d5654de09c73 h1:uJmqzgNWG7XyClnU/mLPBWwfKKF1K8Hf8whTseBgJcg= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20200912215256-4140de9c8800 h1:9ZNvfPvVIEsp/T1ez4GQuzCcCTEQWhovSofhqR73A6g= +k8s.io/utils v0.0.0-20200912215256-4140de9c8800/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7 h1:uuHDyjllyzRyCIvvn0OBjiRB0SgBZGqHNYAmjR7fO50= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9 h1:rusRLrDhjBp6aYtl9sGEvQJr6faoHoDLd0YcUBTZguI= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0= -sigs.k8s.io/controller-runtime v0.6.0 h1:Fzna3DY7c4BIP6KwfSlrfnj20DJ+SeMBK8HSFvOk9NM= -sigs.k8s.io/controller-runtime v0.6.0/go.mod h1:CpYf5pdNY/B352A1TFLAS2JVSlnGQ5O2cftPHndTroo= -sigs.k8s.io/controller-tools v0.3.0 h1:y3YD99XOyWaXkiF1kd41uRvfp/64teWcrEZFuHxPhJ4= -sigs.k8s.io/controller-tools v0.3.0/go.mod h1:enhtKGfxZD1GFEoMgP8Fdbu+uKQ/cq1/WGJhdVChfvI= +sigs.k8s.io/controller-runtime v0.7.0 h1:bU20IBBEPccWz5+zXpLnpVsgBYxqclaHu1pVDl/gEt8= +sigs.k8s.io/controller-runtime v0.7.0/go.mod h1:pJ3YBrJiAqMAZKi6UVGuE98ZrroV1p+pIhoHsMm9wdU= +sigs.k8s.io/controller-tools v0.4.1 h1:VkuV0MxlRPmRu5iTgBZU4UxUX2LiR99n3sdQGRxZF4w= +sigs.k8s.io/controller-tools v0.4.1/go.mod h1:G9rHdZMVlBDocIxGkK3jHLWqcTMNvveypYJwrvYKjWU= sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E= sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= diff --git a/vendor/github.com/go-logr/logr/README.md b/vendor/github.com/go-logr/logr/README.md index aca17f382..e9b5520a1 100644 --- a/vendor/github.com/go-logr/logr/README.md +++ b/vendor/github.com/go-logr/logr/README.md @@ -41,6 +41,8 @@ There are implementations for the following logging libraries: - **log** (the Go standard library logger): [stdr](https://github.com/go-logr/stdr) - **github.com/sirupsen/logrus**: [logrusr](https://github.com/bombsimon/logrusr) +- **github.com/wojas/genericr**: [genericr](https://github.com/wojas/genericr) (makes it easy to implement your own backend) +- **logfmt** (Heroku style [logging](https://www.brandur.org/logfmt)): [logfmtr](https://github.com/iand/logfmtr) # FAQ diff --git a/vendor/github.com/go-logr/logr/discard.go b/vendor/github.com/go-logr/logr/discard.go new file mode 100644 index 000000000..267c796c6 --- /dev/null +++ b/vendor/github.com/go-logr/logr/discard.go @@ -0,0 +1,35 @@ +package logr + +// Discard returns a valid Logger that discards all messages logged to it. +// It can be used whenever the caller is not interested in the logs. +func Discard() Logger { + return discardLogger{} +} + +// discardLogger is a Logger that discards all messages. +type discardLogger struct{} + +func (l discardLogger) Enabled() bool { + return false +} + +func (l discardLogger) Info(msg string, keysAndValues ...interface{}) { +} + +func (l discardLogger) Error(err error, msg string, keysAndValues ...interface{}) { +} + +func (l discardLogger) V(level int) Logger { + return l +} + +func (l discardLogger) WithValues(keysAndValues ...interface{}) Logger { + return l +} + +func (l discardLogger) WithName(name string) Logger { + return l +} + +// Verify that it actually implements the interface +var _ Logger = discardLogger{} diff --git a/vendor/github.com/go-logr/logr/logr.go b/vendor/github.com/go-logr/logr/logr.go index 520c4fe55..e86896c6c 100644 --- a/vendor/github.com/go-logr/logr/logr.go +++ b/vendor/github.com/go-logr/logr/logr.go @@ -40,17 +40,16 @@ limitations under the License. // we want to log that we've made some decision. // // With the traditional log package, we might write: -// log.Printf( -// "decided to set field foo to value %q for object %s/%s", +// log.Printf("decided to set field foo to value %q for object %s/%s", // targetValue, object.Namespace, object.Name) // // With logr's structured logging, we'd write: -// // elsewhere in the file, set up the logger to log with the prefix of "reconcilers", -// // and the named value target-type=Foo, for extra context. -// log := mainLogger.WithName("reconcilers").WithValues("target-type", "Foo") +// // elsewhere in the file, set up the logger to log with the prefix of +// // "reconcilers", and the named value target-type=Foo, for extra context. +// log := mainLogger.WithName("reconcilers").WithValues("target-type", "Foo") // -// // later on... -// log.Info("setting field foo on object", "value", targetValue, "object", object) +// // later on... +// log.Info("setting foo on object", "value", targetValue, "object", object) // // Depending on our logging implementation, we could then make logging decisions // based on field values (like only logging such events for objects in a certain @@ -78,9 +77,9 @@ limitations under the License. // Each log message from a Logger has four types of context: // logger name, log verbosity, log message, and the named values. // -// The Logger name constists of a series of name "segments" added by successive +// The Logger name consists of a series of name "segments" added by successive // calls to WithName. These name segments will be joined in some way by the -// underlying implementation. It is strongly reccomended that name segements +// underlying implementation. It is strongly recommended that name segments // contain simple identifiers (letters, digits, and hyphen), and do not contain // characters that could muddle the log output or confuse the joining operation // (e.g. whitespace, commas, periods, slashes, brackets, quotes, etc). @@ -91,8 +90,8 @@ limitations under the License. // and log messages for users to filter on. It's illegal to pass a log level // below zero. // -// The log message consists of a constant message attached to the the log line. -// This should generally be a simple description of what's occuring, and should +// The log message consists of a constant message attached to the log line. +// This should generally be a simple description of what's occurring, and should // never be a format string. // // Variable information can then be attached using named values (key/value @@ -125,11 +124,25 @@ limitations under the License. // - `"ts"`: the timestamp for a log line. // // Implementations are encouraged to make use of these keys to represent the -// above concepts, when neccessary (for example, in a pure-JSON output form, it +// above concepts, when necessary (for example, in a pure-JSON output form, it // would be necessary to represent at least message and timestamp as ordinary // named values). +// +// Implementations may choose to give callers access to the underlying +// logging implementation. The recommended pattern for this is: +// // Underlier exposes access to the underlying logging implementation. +// // Since callers only have a logr.Logger, they have to know which +// // implementation is in use, so this interface is less of an abstraction +// // and more of way to test type conversion. +// type Underlier interface { +// GetUnderlying() +// } package logr +import ( + "context" +) + // TODO: consider adding back in format strings if they're really needed // TODO: consider other bits of zap/zapcore functionality like ObjectMarshaller (for arbitrary objects) // TODO: consider other bits of glog functionality like Flush, InfoDepth, OutputStats @@ -171,8 +184,39 @@ type Logger interface { // WithName adds a new element to the logger's name. // Successive calls with WithName continue to append - // suffixes to the logger's name. It's strongly reccomended + // suffixes to the logger's name. It's strongly recommended // that name segments contain only letters, digits, and hyphens // (see the package documentation for more information). WithName(name string) Logger } + +// InfoLogger provides compatibility with code that relies on the v0.1.0 interface +// Deprecated: use Logger instead. This will be removed in a future release. +type InfoLogger = Logger + +type contextKey struct{} + +// FromContext returns a Logger constructed from ctx or nil if no +// logger details are found. +func FromContext(ctx context.Context) Logger { + if v, ok := ctx.Value(contextKey{}).(Logger); ok { + return v + } + + return nil +} + +// FromContextOrDiscard returns a Logger constructed from ctx or a Logger +// that discards all messages if no logger details are found. +func FromContextOrDiscard(ctx context.Context) Logger { + if v, ok := ctx.Value(contextKey{}).(Logger); ok { + return v + } + + return discardLogger{} +} + +// NewContext returns a new context derived from ctx that embeds the Logger. +func NewContext(ctx context.Context, l Logger) context.Context { + return context.WithValue(ctx, contextKey{}, l) +} diff --git a/vendor/github.com/googleapis/gnostic/compiler/README.md b/vendor/github.com/googleapis/gnostic/compiler/README.md index 848b16c69..ee9783d23 100644 --- a/vendor/github.com/googleapis/gnostic/compiler/README.md +++ b/vendor/github.com/googleapis/gnostic/compiler/README.md @@ -1,3 +1,4 @@ # Compiler support code -This directory contains compiler support code used by Gnostic and Gnostic extensions. \ No newline at end of file +This directory contains compiler support code used by Gnostic and Gnostic +extensions. diff --git a/vendor/github.com/googleapis/gnostic/compiler/context.go b/vendor/github.com/googleapis/gnostic/compiler/context.go index a64c1b75d..1250a6c59 100644 --- a/vendor/github.com/googleapis/gnostic/compiler/context.go +++ b/vendor/github.com/googleapis/gnostic/compiler/context.go @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. All Rights Reserved. +// Copyright 2017 Google LLC. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/googleapis/gnostic/compiler/error.go b/vendor/github.com/googleapis/gnostic/compiler/error.go index d8672c100..7db23997b 100644 --- a/vendor/github.com/googleapis/gnostic/compiler/error.go +++ b/vendor/github.com/googleapis/gnostic/compiler/error.go @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. All Rights Reserved. +// Copyright 2017 Google LLC. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/googleapis/gnostic/compiler/extension-handler.go b/vendor/github.com/googleapis/gnostic/compiler/extension-handler.go deleted file mode 100644 index 1f85b650e..000000000 --- a/vendor/github.com/googleapis/gnostic/compiler/extension-handler.go +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2017 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package compiler - -import ( - "bytes" - "fmt" - "os/exec" - - "strings" - - "errors" - - "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/ptypes/any" - ext_plugin "github.com/googleapis/gnostic/extensions" - yaml "gopkg.in/yaml.v2" -) - -// ExtensionHandler describes a binary that is called by the compiler to handle specification extensions. -type ExtensionHandler struct { - Name string -} - -// HandleExtension calls a binary extension handler. -func HandleExtension(context *Context, in interface{}, extensionName string) (bool, *any.Any, error) { - handled := false - var errFromPlugin error - var outFromPlugin *any.Any - - if context != nil && context.ExtensionHandlers != nil && len(*(context.ExtensionHandlers)) != 0 { - for _, customAnyProtoGenerator := range *(context.ExtensionHandlers) { - outFromPlugin, errFromPlugin = customAnyProtoGenerator.handle(in, extensionName) - if outFromPlugin == nil { - continue - } else { - handled = true - break - } - } - } - return handled, outFromPlugin, errFromPlugin -} - -func (extensionHandlers *ExtensionHandler) handle(in interface{}, extensionName string) (*any.Any, error) { - if extensionHandlers.Name != "" { - binary, _ := yaml.Marshal(in) - - request := &ext_plugin.ExtensionHandlerRequest{} - - version := &ext_plugin.Version{} - version.Major = 0 - version.Minor = 1 - version.Patch = 0 - request.CompilerVersion = version - - request.Wrapper = &ext_plugin.Wrapper{} - - request.Wrapper.Version = "v2" - request.Wrapper.Yaml = string(binary) - request.Wrapper.ExtensionName = extensionName - - requestBytes, _ := proto.Marshal(request) - cmd := exec.Command(extensionHandlers.Name) - cmd.Stdin = bytes.NewReader(requestBytes) - output, err := cmd.Output() - - if err != nil { - fmt.Printf("Error: %+v\n", err) - return nil, err - } - response := &ext_plugin.ExtensionHandlerResponse{} - err = proto.Unmarshal(output, response) - if err != nil { - fmt.Printf("Error: %+v\n", err) - fmt.Printf("%s\n", string(output)) - return nil, err - } - if !response.Handled { - return nil, nil - } - if len(response.Error) != 0 { - message := fmt.Sprintf("Errors when parsing: %+v for field %s by vendor extension handler %s. Details %+v", in, extensionName, extensionHandlers.Name, strings.Join(response.Error, ",")) - return nil, errors.New(message) - } - return response.Value, nil - } - return nil, nil -} diff --git a/vendor/github.com/googleapis/gnostic/compiler/extensions.go b/vendor/github.com/googleapis/gnostic/compiler/extensions.go new file mode 100644 index 000000000..20848a0a1 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/compiler/extensions.go @@ -0,0 +1,85 @@ +// Copyright 2017 Google LLC. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package compiler + +import ( + "bytes" + "fmt" + "os/exec" + "strings" + + "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/ptypes/any" + extensions "github.com/googleapis/gnostic/extensions" + yaml "gopkg.in/yaml.v3" +) + +// ExtensionHandler describes a binary that is called by the compiler to handle specification extensions. +type ExtensionHandler struct { + Name string +} + +// CallExtension calls a binary extension handler. +func CallExtension(context *Context, in *yaml.Node, extensionName string) (handled bool, response *any.Any, err error) { + if context == nil || context.ExtensionHandlers == nil { + return false, nil, nil + } + handled = false + for _, handler := range *(context.ExtensionHandlers) { + response, err = handler.handle(in, extensionName) + if response == nil { + continue + } else { + handled = true + break + } + } + return handled, response, err +} + +func (extensionHandlers *ExtensionHandler) handle(in *yaml.Node, extensionName string) (*any.Any, error) { + if extensionHandlers.Name != "" { + yamlData, _ := yaml.Marshal(in) + request := &extensions.ExtensionHandlerRequest{ + CompilerVersion: &extensions.Version{ + Major: 0, + Minor: 1, + Patch: 0, + }, + Wrapper: &extensions.Wrapper{ + Version: "unknown", // TODO: set this to the type/version of spec being parsed. + Yaml: string(yamlData), + ExtensionName: extensionName, + }, + } + requestBytes, _ := proto.Marshal(request) + cmd := exec.Command(extensionHandlers.Name) + cmd.Stdin = bytes.NewReader(requestBytes) + output, err := cmd.Output() + if err != nil { + return nil, err + } + response := &extensions.ExtensionHandlerResponse{} + err = proto.Unmarshal(output, response) + if err != nil || !response.Handled { + return nil, err + } + if len(response.Errors) != 0 { + return nil, fmt.Errorf("Errors when parsing: %+v for field %s by vendor extension handler %s. Details %+v", in, extensionName, extensionHandlers.Name, strings.Join(response.Errors, ",")) + } + return response.Value, nil + } + return nil, nil +} diff --git a/vendor/github.com/googleapis/gnostic/compiler/helpers.go b/vendor/github.com/googleapis/gnostic/compiler/helpers.go index 76df635ff..a580f40ac 100644 --- a/vendor/github.com/googleapis/gnostic/compiler/helpers.go +++ b/vendor/github.com/googleapis/gnostic/compiler/helpers.go @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. All Rights Reserved. +// Copyright 2017 Google LLC. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,56 +16,63 @@ package compiler import ( "fmt" - "gopkg.in/yaml.v2" "regexp" "sort" "strconv" + + "github.com/googleapis/gnostic/jsonschema" + "gopkg.in/yaml.v3" ) // compiler helper functions, usually called from generated code -// UnpackMap gets a yaml.MapSlice if possible. -func UnpackMap(in interface{}) (yaml.MapSlice, bool) { - m, ok := in.(yaml.MapSlice) - if ok { - return m, true - } - // do we have an empty array? - a, ok := in.([]interface{}) - if ok && len(a) == 0 { - // if so, return an empty map - return yaml.MapSlice{}, true +// UnpackMap gets a *yaml.Node if possible. +func UnpackMap(in *yaml.Node) (*yaml.Node, bool) { + if in == nil { + return nil, false } - return nil, false + return in, true } -// SortedKeysForMap returns the sorted keys of a yaml.MapSlice. -func SortedKeysForMap(m yaml.MapSlice) []string { +// SortedKeysForMap returns the sorted keys of a yamlv2.MapSlice. +func SortedKeysForMap(m *yaml.Node) []string { keys := make([]string, 0) - for _, item := range m { - keys = append(keys, item.Key.(string)) + if m.Kind == yaml.MappingNode { + for i := 0; i < len(m.Content); i += 2 { + keys = append(keys, m.Content[i].Value) + } } sort.Strings(keys) return keys } -// MapHasKey returns true if a yaml.MapSlice contains a specified key. -func MapHasKey(m yaml.MapSlice, key string) bool { - for _, item := range m { - itemKey, ok := item.Key.(string) - if ok && key == itemKey { - return true +// MapHasKey returns true if a yamlv2.MapSlice contains a specified key. +func MapHasKey(m *yaml.Node, key string) bool { + if m == nil { + return false + } + if m.Kind == yaml.MappingNode { + for i := 0; i < len(m.Content); i += 2 { + itemKey := m.Content[i].Value + if key == itemKey { + return true + } } } return false } // MapValueForKey gets the value of a map value for a specified key. -func MapValueForKey(m yaml.MapSlice, key string) interface{} { - for _, item := range m { - itemKey, ok := item.Key.(string) - if ok && key == itemKey { - return item.Value +func MapValueForKey(m *yaml.Node, key string) *yaml.Node { + if m == nil { + return nil + } + if m.Kind == yaml.MappingNode { + for i := 0; i < len(m.Content); i += 2 { + itemKey := m.Content[i].Value + if key == itemKey { + return m.Content[i+1] + } } } return nil @@ -83,8 +90,116 @@ func ConvertInterfaceArrayToStringArray(interfaceArray []interface{}) []string { return stringArray } +// SequenceNodeForNode returns a node if it is a SequenceNode. +func SequenceNodeForNode(node *yaml.Node) (*yaml.Node, bool) { + if node.Kind != yaml.SequenceNode { + return nil, false + } + return node, true +} + +// BoolForScalarNode returns the bool value of a node. +func BoolForScalarNode(node *yaml.Node) (bool, bool) { + if node == nil { + return false, false + } + if node.Kind == yaml.DocumentNode { + return BoolForScalarNode(node.Content[0]) + } + if node.Kind != yaml.ScalarNode { + return false, false + } + if node.Tag != "!!bool" { + return false, false + } + v, err := strconv.ParseBool(node.Value) + if err != nil { + return false, false + } + return v, true +} + +// IntForScalarNode returns the integer value of a node. +func IntForScalarNode(node *yaml.Node) (int64, bool) { + if node == nil { + return 0, false + } + if node.Kind == yaml.DocumentNode { + return IntForScalarNode(node.Content[0]) + } + if node.Kind != yaml.ScalarNode { + return 0, false + } + if node.Tag != "!!int" { + return 0, false + } + v, err := strconv.ParseInt(node.Value, 10, 64) + if err != nil { + return 0, false + } + return v, true +} + +// FloatForScalarNode returns the float value of a node. +func FloatForScalarNode(node *yaml.Node) (float64, bool) { + if node == nil { + return 0.0, false + } + if node.Kind == yaml.DocumentNode { + return FloatForScalarNode(node.Content[0]) + } + if node.Kind != yaml.ScalarNode { + return 0.0, false + } + if (node.Tag != "!!int") && (node.Tag != "!!float") { + return 0.0, false + } + v, err := strconv.ParseFloat(node.Value, 64) + if err != nil { + return 0.0, false + } + return v, true +} + +// StringForScalarNode returns the string value of a node. +func StringForScalarNode(node *yaml.Node) (string, bool) { + if node == nil { + return "", false + } + if node.Kind == yaml.DocumentNode { + return StringForScalarNode(node.Content[0]) + } + switch node.Kind { + case yaml.ScalarNode: + switch node.Tag { + case "!!int": + return node.Value, true + case "!!str": + return node.Value, true + case "!!null": + return "", true + default: + return "", false + } + default: + return "", false + } +} + +// StringArrayForSequenceNode converts a sequence node to an array of strings, if possible. +func StringArrayForSequenceNode(node *yaml.Node) []string { + stringArray := make([]string, 0) + for _, item := range node.Content { + v, ok := StringForScalarNode(item) + if ok { + stringArray = append(stringArray, v) + } + } + return stringArray +} + // MissingKeysInMap identifies which keys from a list of required keys are not in a map. -func MissingKeysInMap(m yaml.MapSlice, requiredKeys []string) []string { +func MissingKeysInMap(m *yaml.Node, requiredKeys []string) []string { missingKeys := make([]string, 0) for _, k := range requiredKeys { if !MapHasKey(m, k) { @@ -95,64 +210,100 @@ func MissingKeysInMap(m yaml.MapSlice, requiredKeys []string) []string { } // InvalidKeysInMap returns keys in a map that don't match a list of allowed keys and patterns. -func InvalidKeysInMap(m yaml.MapSlice, allowedKeys []string, allowedPatterns []*regexp.Regexp) []string { +func InvalidKeysInMap(m *yaml.Node, allowedKeys []string, allowedPatterns []*regexp.Regexp) []string { invalidKeys := make([]string, 0) - for _, item := range m { - itemKey, ok := item.Key.(string) - if ok { - key := itemKey - found := false - // does the key match an allowed key? - for _, allowedKey := range allowedKeys { - if key == allowedKey { + if m == nil || m.Kind != yaml.MappingNode { + return invalidKeys + } + for i := 0; i < len(m.Content); i += 2 { + key := m.Content[i].Value + found := false + // does the key match an allowed key? + for _, allowedKey := range allowedKeys { + if key == allowedKey { + found = true + break + } + } + if !found { + // does the key match an allowed pattern? + for _, allowedPattern := range allowedPatterns { + if allowedPattern.MatchString(key) { found = true break } } if !found { - // does the key match an allowed pattern? - for _, allowedPattern := range allowedPatterns { - if allowedPattern.MatchString(key) { - found = true - break - } - } - if !found { - invalidKeys = append(invalidKeys, key) - } + invalidKeys = append(invalidKeys, key) } } } return invalidKeys } -// DescribeMap describes a map (for debugging purposes). -func DescribeMap(in interface{}, indent string) string { - description := "" - m, ok := in.(map[string]interface{}) - if ok { - keys := make([]string, 0) - for k := range m { - keys = append(keys, k) - } - sort.Strings(keys) - for _, k := range keys { - v := m[k] - description += fmt.Sprintf("%s%s:\n", indent, k) - description += DescribeMap(v, indent+" ") - } - return description +// NewMappingNode creates a new Mapping node. +func NewMappingNode() *yaml.Node { + return &yaml.Node{ + Kind: yaml.MappingNode, + Content: make([]*yaml.Node, 0), } - a, ok := in.([]interface{}) - if ok { - for i, v := range a { - description += fmt.Sprintf("%s%d:\n", indent, i) - description += DescribeMap(v, indent+" ") - } - return description +} + +// NewSequenceNode creates a new Sequence node. +func NewSequenceNode() *yaml.Node { + node := &yaml.Node{ + Kind: yaml.SequenceNode, + Content: make([]*yaml.Node, 0), + } + return node +} + +// NewScalarNodeForString creates a new node to hold a string. +func NewScalarNodeForString(s string) *yaml.Node { + return &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!str", + Value: s, + } +} + +// NewSequenceNodeForStringArray creates a new node to hold an array of strings. +func NewSequenceNodeForStringArray(strings []string) *yaml.Node { + node := &yaml.Node{ + Kind: yaml.SequenceNode, + Content: make([]*yaml.Node, 0), + } + for _, s := range strings { + node.Content = append(node.Content, NewScalarNodeForString(s)) + } + return node +} + +// NewScalarNodeForBool creates a new node to hold a bool. +func NewScalarNodeForBool(b bool) *yaml.Node { + return &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!bool", + Value: fmt.Sprintf("%t", b), + } +} + +// NewScalarNodeForFloat creates a new node to hold a float. +func NewScalarNodeForFloat(f float64) *yaml.Node { + return &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!float", + Value: fmt.Sprintf("%g", f), + } +} + +// NewScalarNodeForInt creates a new node to hold an integer. +func NewScalarNodeForInt(i int64) *yaml.Node { + return &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!int", + Value: fmt.Sprintf("%d", i), } - description += fmt.Sprintf("%s%+v\n", indent, in) - return description } // PluralProperties returns the string "properties" pluralized. @@ -195,3 +346,40 @@ func StringValue(item interface{}) (value string, ok bool) { } return "", false } + +// Description returns a human-readable represention of an item. +func Description(item interface{}) string { + value, ok := item.(*yaml.Node) + if ok { + return jsonschema.Render(value) + } + return fmt.Sprintf("%+v", item) +} + +// Display returns a description of a node for use in error messages. +func Display(node *yaml.Node) string { + switch node.Kind { + case yaml.ScalarNode: + switch node.Tag { + case "!!str": + return fmt.Sprintf("%s (string)", node.Value) + } + } + return fmt.Sprintf("%+v (%T)", node, node) +} + +// Marshal creates a yaml version of a structure in our preferred style +func Marshal(in *yaml.Node) []byte { + clearStyle(in) + //bytes, _ := yaml.Marshal(&yaml.Node{Kind: yaml.DocumentNode, Content: []*yaml.Node{in}}) + bytes, _ := yaml.Marshal(in) + + return bytes +} + +func clearStyle(node *yaml.Node) { + node.Style = 0 + for _, c := range node.Content { + clearStyle(c) + } +} diff --git a/vendor/github.com/googleapis/gnostic/compiler/main.go b/vendor/github.com/googleapis/gnostic/compiler/main.go index 9713a21cc..ce9fcc456 100644 --- a/vendor/github.com/googleapis/gnostic/compiler/main.go +++ b/vendor/github.com/googleapis/gnostic/compiler/main.go @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. All Rights Reserved. +// Copyright 2017 Google LLC. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/googleapis/gnostic/compiler/reader.go b/vendor/github.com/googleapis/gnostic/compiler/reader.go index 955b985b8..be0e8b40c 100644 --- a/vendor/github.com/googleapis/gnostic/compiler/reader.go +++ b/vendor/github.com/googleapis/gnostic/compiler/reader.go @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. All Rights Reserved. +// Copyright 2017 Google LLC. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,7 +15,6 @@ package compiler import ( - "errors" "fmt" "io/ioutil" "log" @@ -23,18 +22,30 @@ import ( "net/url" "path/filepath" "strings" + "sync" - yaml "gopkg.in/yaml.v2" + yaml "gopkg.in/yaml.v3" ) +var verboseReader = false + var fileCache map[string][]byte -var infoCache map[string]interface{} -var count int64 +var infoCache map[string]*yaml.Node -var verboseReader = false var fileCacheEnable = true var infoCacheEnable = true +// These locks are used to synchronize accesses to the fileCache and infoCache +// maps (above). They are global state and can throw thread-related errors +// when modified from separate goroutines. The general strategy is to protect +// all public functions in this file with mutex Lock() calls. As a result, to +// avoid deadlock, these public functions should not call other public +// functions, so some public functions have private equivalents. +// In the future, we might consider replacing the maps with sync.Map and +// eliminating these mutexes. +var fileCacheMutex sync.Mutex +var infoCacheMutex sync.Mutex + func initializeFileCache() { if fileCache == nil { fileCache = make(map[string][]byte, 0) @@ -43,27 +54,42 @@ func initializeFileCache() { func initializeInfoCache() { if infoCache == nil { - infoCache = make(map[string]interface{}, 0) + infoCache = make(map[string]*yaml.Node, 0) } } +// EnableFileCache turns on file caching. func EnableFileCache() { + fileCacheMutex.Lock() + defer fileCacheMutex.Unlock() fileCacheEnable = true } +// EnableInfoCache turns on parsed info caching. func EnableInfoCache() { + infoCacheMutex.Lock() + defer infoCacheMutex.Unlock() infoCacheEnable = true } +// DisableFileCache turns off file caching. func DisableFileCache() { + fileCacheMutex.Lock() + defer fileCacheMutex.Unlock() fileCacheEnable = false } +// DisableInfoCache turns off parsed info caching. func DisableInfoCache() { + infoCacheMutex.Lock() + defer infoCacheMutex.Unlock() infoCacheEnable = false } +// RemoveFromFileCache removes an entry from the file cache. func RemoveFromFileCache(fileurl string) { + fileCacheMutex.Lock() + defer fileCacheMutex.Unlock() if !fileCacheEnable { return } @@ -71,7 +97,10 @@ func RemoveFromFileCache(fileurl string) { delete(fileCache, fileurl) } +// RemoveFromInfoCache removes an entry from the info cache. func RemoveFromInfoCache(filename string) { + infoCacheMutex.Lock() + defer infoCacheMutex.Unlock() if !infoCacheEnable { return } @@ -79,21 +108,31 @@ func RemoveFromInfoCache(filename string) { delete(infoCache, filename) } -func GetInfoCache() map[string]interface{} { +// GetInfoCache returns the info cache map. +func GetInfoCache() map[string]*yaml.Node { + infoCacheMutex.Lock() + defer infoCacheMutex.Unlock() if infoCache == nil { initializeInfoCache() } return infoCache } +// ClearFileCache clears the file cache. func ClearFileCache() { + fileCacheMutex.Lock() + defer fileCacheMutex.Unlock() fileCache = make(map[string][]byte, 0) } +// ClearInfoCache clears the info cache. func ClearInfoCache() { - infoCache = make(map[string]interface{}) + infoCacheMutex.Lock() + defer infoCacheMutex.Unlock() + infoCache = make(map[string]*yaml.Node) } +// ClearCaches clears all caches. func ClearCaches() { ClearFileCache() ClearInfoCache() @@ -101,6 +140,12 @@ func ClearCaches() { // FetchFile gets a specified file from the local filesystem or a remote location. func FetchFile(fileurl string) ([]byte, error) { + fileCacheMutex.Lock() + defer fileCacheMutex.Unlock() + return fetchFile(fileurl) +} + +func fetchFile(fileurl string) ([]byte, error) { var bytes []byte initializeFileCache() if fileCacheEnable { @@ -121,7 +166,7 @@ func FetchFile(fileurl string) ([]byte, error) { } defer response.Body.Close() if response.StatusCode != 200 { - return nil, errors.New(fmt.Sprintf("Error downloading %s: %s", fileurl, response.Status)) + return nil, fmt.Errorf("Error downloading %s: %s", fileurl, response.Status) } bytes, err = ioutil.ReadAll(response.Body) if fileCacheEnable && err == nil { @@ -132,11 +177,17 @@ func FetchFile(fileurl string) ([]byte, error) { // ReadBytesForFile reads the bytes of a file. func ReadBytesForFile(filename string) ([]byte, error) { + fileCacheMutex.Lock() + defer fileCacheMutex.Unlock() + return readBytesForFile(filename) +} + +func readBytesForFile(filename string) ([]byte, error) { // is the filename a url? fileurl, _ := url.Parse(filename) if fileurl.Scheme != "" { // yes, fetch it - bytes, err := FetchFile(filename) + bytes, err := fetchFile(filename) if err != nil { return nil, err } @@ -150,8 +201,14 @@ func ReadBytesForFile(filename string) ([]byte, error) { return bytes, nil } -// ReadInfoFromBytes unmarshals a file as a yaml.MapSlice. -func ReadInfoFromBytes(filename string, bytes []byte) (interface{}, error) { +// ReadInfoFromBytes unmarshals a file as a *yaml.Node. +func ReadInfoFromBytes(filename string, bytes []byte) (*yaml.Node, error) { + infoCacheMutex.Lock() + defer infoCacheMutex.Unlock() + return readInfoFromBytes(filename, bytes) +} + +func readInfoFromBytes(filename string, bytes []byte) (*yaml.Node, error) { initializeInfoCache() if infoCacheEnable { cachedInfo, ok := infoCache[filename] @@ -165,19 +222,23 @@ func ReadInfoFromBytes(filename string, bytes []byte) (interface{}, error) { log.Printf("Reading info for file %s", filename) } } - var info yaml.MapSlice + var info yaml.Node err := yaml.Unmarshal(bytes, &info) if err != nil { return nil, err } if infoCacheEnable && len(filename) > 0 { - infoCache[filename] = info + infoCache[filename] = &info } - return info, nil + return &info, nil } // ReadInfoForRef reads a file and return the fragment needed to resolve a $ref. -func ReadInfoForRef(basefile string, ref string) (interface{}, error) { +func ReadInfoForRef(basefile string, ref string) (*yaml.Node, error) { + fileCacheMutex.Lock() + defer fileCacheMutex.Unlock() + infoCacheMutex.Lock() + defer infoCacheMutex.Unlock() initializeInfoCache() if infoCacheEnable { info, ok := infoCache[ref] @@ -191,7 +252,6 @@ func ReadInfoForRef(basefile string, ref string) (interface{}, error) { log.Printf("Reading info for ref %s#%s", basefile, ref) } } - count = count + 1 basedir, _ := filepath.Split(basefile) parts := strings.Split(ref, "#") var filename string @@ -204,24 +264,30 @@ func ReadInfoForRef(basefile string, ref string) (interface{}, error) { } else { filename = basefile } - bytes, err := ReadBytesForFile(filename) + bytes, err := readBytesForFile(filename) if err != nil { return nil, err } - info, err := ReadInfoFromBytes(filename, bytes) + info, err := readInfoFromBytes(filename, bytes) + if info != nil && info.Kind == yaml.DocumentNode { + info = info.Content[0] + } if err != nil { log.Printf("File error: %v\n", err) } else { + if info == nil { + return nil, NewError(nil, fmt.Sprintf("could not resolve %s", ref)) + } if len(parts) > 1 { path := strings.Split(parts[1], "/") for i, key := range path { if i > 0 { - m, ok := info.(yaml.MapSlice) - if ok { + m := info + if true { found := false - for _, section := range m { - if section.Key == key { - info = section.Value + for i := 0; i < len(m.Content); i += 2 { + if m.Content[i].Value == key { + info = m.Content[i+1] found = true } } diff --git a/vendor/github.com/googleapis/gnostic/extensions/README.md b/vendor/github.com/googleapis/gnostic/extensions/README.md index ff1c2eb1e..4b5d63e58 100644 --- a/vendor/github.com/googleapis/gnostic/extensions/README.md +++ b/vendor/github.com/googleapis/gnostic/extensions/README.md @@ -1,5 +1,13 @@ # Extensions -This directory contains support code for building Gnostic extensions and associated examples. +**Extension Support is experimental.** -Extensions are used to compile vendor or specification extensions into protocol buffer structures. +This directory contains support code for building Gnostic extensio handlers and +associated examples. + +Extension handlers can be used to compile vendor or specification extensions +into protocol buffer structures. + +Like plugins, extension handlers are built as separate executables. Extension +bodies are written to extension handlers as serialized +ExtensionHandlerRequests. diff --git a/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go b/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go index 432dc06e6..4198fa17e 100644 --- a/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go +++ b/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go @@ -1,148 +1,186 @@ +// Copyright 2017 Google LLC. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.23.0 +// protoc v3.12.3 // source: extensions/extension.proto -package openapiextension_v1 +package gnostic_extension_v1 import ( - fmt "fmt" proto "github.com/golang/protobuf/proto" any "github.com/golang/protobuf/ptypes/any" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 -// The version number of OpenAPI compiler. +// The version number of Gnostic. type Version struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Major int32 `protobuf:"varint,1,opt,name=major,proto3" json:"major,omitempty"` Minor int32 `protobuf:"varint,2,opt,name=minor,proto3" json:"minor,omitempty"` Patch int32 `protobuf:"varint,3,opt,name=patch,proto3" json:"patch,omitempty"` // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should // be empty for mainline stable releases. - Suffix string `protobuf:"bytes,4,opt,name=suffix,proto3" json:"suffix,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Suffix string `protobuf:"bytes,4,opt,name=suffix,proto3" json:"suffix,omitempty"` } -func (m *Version) Reset() { *m = Version{} } -func (m *Version) String() string { return proto.CompactTextString(m) } -func (*Version) ProtoMessage() {} -func (*Version) Descriptor() ([]byte, []int) { - return fileDescriptor_661e47e790f76671, []int{0} +func (x *Version) Reset() { + *x = Version{} + if protoimpl.UnsafeEnabled { + mi := &file_extensions_extension_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Version) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Version.Unmarshal(m, b) -} -func (m *Version) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Version.Marshal(b, m, deterministic) -} -func (m *Version) XXX_Merge(src proto.Message) { - xxx_messageInfo_Version.Merge(m, src) +func (x *Version) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Version) XXX_Size() int { - return xxx_messageInfo_Version.Size(m) -} -func (m *Version) XXX_DiscardUnknown() { - xxx_messageInfo_Version.DiscardUnknown(m) + +func (*Version) ProtoMessage() {} + +func (x *Version) ProtoReflect() protoreflect.Message { + mi := &file_extensions_extension_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Version proto.InternalMessageInfo +// Deprecated: Use Version.ProtoReflect.Descriptor instead. +func (*Version) Descriptor() ([]byte, []int) { + return file_extensions_extension_proto_rawDescGZIP(), []int{0} +} -func (m *Version) GetMajor() int32 { - if m != nil { - return m.Major +func (x *Version) GetMajor() int32 { + if x != nil { + return x.Major } return 0 } -func (m *Version) GetMinor() int32 { - if m != nil { - return m.Minor +func (x *Version) GetMinor() int32 { + if x != nil { + return x.Minor } return 0 } -func (m *Version) GetPatch() int32 { - if m != nil { - return m.Patch +func (x *Version) GetPatch() int32 { + if x != nil { + return x.Patch } return 0 } -func (m *Version) GetSuffix() string { - if m != nil { - return m.Suffix +func (x *Version) GetSuffix() string { + if x != nil { + return x.Suffix } return "" } // An encoded Request is written to the ExtensionHandler's stdin. type ExtensionHandlerRequest struct { - // The OpenAPI descriptions that were explicitly listed on the command line. - // The specifications will appear in the order they are specified to gnostic. + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The extension to process. Wrapper *Wrapper `protobuf:"bytes,1,opt,name=wrapper,proto3" json:"wrapper,omitempty"` - // The version number of openapi compiler. - CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion,proto3" json:"compiler_version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // The version number of Gnostic. + CompilerVersion *Version `protobuf:"bytes,2,opt,name=compiler_version,json=compilerVersion,proto3" json:"compiler_version,omitempty"` } -func (m *ExtensionHandlerRequest) Reset() { *m = ExtensionHandlerRequest{} } -func (m *ExtensionHandlerRequest) String() string { return proto.CompactTextString(m) } -func (*ExtensionHandlerRequest) ProtoMessage() {} -func (*ExtensionHandlerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_661e47e790f76671, []int{1} +func (x *ExtensionHandlerRequest) Reset() { + *x = ExtensionHandlerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_extensions_extension_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ExtensionHandlerRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ExtensionHandlerRequest.Unmarshal(m, b) -} -func (m *ExtensionHandlerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ExtensionHandlerRequest.Marshal(b, m, deterministic) -} -func (m *ExtensionHandlerRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ExtensionHandlerRequest.Merge(m, src) -} -func (m *ExtensionHandlerRequest) XXX_Size() int { - return xxx_messageInfo_ExtensionHandlerRequest.Size(m) +func (x *ExtensionHandlerRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ExtensionHandlerRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ExtensionHandlerRequest.DiscardUnknown(m) + +func (*ExtensionHandlerRequest) ProtoMessage() {} + +func (x *ExtensionHandlerRequest) ProtoReflect() protoreflect.Message { + mi := &file_extensions_extension_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ExtensionHandlerRequest proto.InternalMessageInfo +// Deprecated: Use ExtensionHandlerRequest.ProtoReflect.Descriptor instead. +func (*ExtensionHandlerRequest) Descriptor() ([]byte, []int) { + return file_extensions_extension_proto_rawDescGZIP(), []int{1} +} -func (m *ExtensionHandlerRequest) GetWrapper() *Wrapper { - if m != nil { - return m.Wrapper +func (x *ExtensionHandlerRequest) GetWrapper() *Wrapper { + if x != nil { + return x.Wrapper } return nil } -func (m *ExtensionHandlerRequest) GetCompilerVersion() *Version { - if m != nil { - return m.CompilerVersion +func (x *ExtensionHandlerRequest) GetCompilerVersion() *Version { + if x != nil { + return x.CompilerVersion } return nil } // The extensions writes an encoded ExtensionHandlerResponse to stdout. type ExtensionHandlerResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // true if the extension is handled by the extension handler; false otherwise Handled bool `protobuf:"varint,1,opt,name=handled,proto3" json:"handled,omitempty"` - // Error message. If non-empty, the extension handling failed. + // Error message(s). If non-empty, the extension handling failed. // The extension handler process should exit with status code zero // even if it reports an error in this way. // @@ -151,150 +189,277 @@ type ExtensionHandlerResponse struct { // itself -- such as the input Document being unparseable -- should be // reported by writing a message to stderr and exiting with a non-zero // status code. - Error []string `protobuf:"bytes,2,rep,name=error,proto3" json:"error,omitempty"` + Errors []string `protobuf:"bytes,2,rep,name=errors,proto3" json:"errors,omitempty"` // text output - Value *any.Any `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value *any.Any `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` } -func (m *ExtensionHandlerResponse) Reset() { *m = ExtensionHandlerResponse{} } -func (m *ExtensionHandlerResponse) String() string { return proto.CompactTextString(m) } -func (*ExtensionHandlerResponse) ProtoMessage() {} -func (*ExtensionHandlerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_661e47e790f76671, []int{2} +func (x *ExtensionHandlerResponse) Reset() { + *x = ExtensionHandlerResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_extensions_extension_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ExtensionHandlerResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ExtensionHandlerResponse.Unmarshal(m, b) -} -func (m *ExtensionHandlerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ExtensionHandlerResponse.Marshal(b, m, deterministic) -} -func (m *ExtensionHandlerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ExtensionHandlerResponse.Merge(m, src) +func (x *ExtensionHandlerResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ExtensionHandlerResponse) XXX_Size() int { - return xxx_messageInfo_ExtensionHandlerResponse.Size(m) -} -func (m *ExtensionHandlerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ExtensionHandlerResponse.DiscardUnknown(m) + +func (*ExtensionHandlerResponse) ProtoMessage() {} + +func (x *ExtensionHandlerResponse) ProtoReflect() protoreflect.Message { + mi := &file_extensions_extension_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ExtensionHandlerResponse proto.InternalMessageInfo +// Deprecated: Use ExtensionHandlerResponse.ProtoReflect.Descriptor instead. +func (*ExtensionHandlerResponse) Descriptor() ([]byte, []int) { + return file_extensions_extension_proto_rawDescGZIP(), []int{2} +} -func (m *ExtensionHandlerResponse) GetHandled() bool { - if m != nil { - return m.Handled +func (x *ExtensionHandlerResponse) GetHandled() bool { + if x != nil { + return x.Handled } return false } -func (m *ExtensionHandlerResponse) GetError() []string { - if m != nil { - return m.Error +func (x *ExtensionHandlerResponse) GetErrors() []string { + if x != nil { + return x.Errors } return nil } -func (m *ExtensionHandlerResponse) GetValue() *any.Any { - if m != nil { - return m.Value +func (x *ExtensionHandlerResponse) GetValue() *any.Any { + if x != nil { + return x.Value } return nil } type Wrapper struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // version of the OpenAPI specification in which this extension was written. Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // Name of the extension + // Name of the extension. ExtensionName string `protobuf:"bytes,2,opt,name=extension_name,json=extensionName,proto3" json:"extension_name,omitempty"` - // Must be a valid yaml for the proto - Yaml string `protobuf:"bytes,3,opt,name=yaml,proto3" json:"yaml,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // YAML-formatted extension value. + Yaml string `protobuf:"bytes,3,opt,name=yaml,proto3" json:"yaml,omitempty"` } -func (m *Wrapper) Reset() { *m = Wrapper{} } -func (m *Wrapper) String() string { return proto.CompactTextString(m) } -func (*Wrapper) ProtoMessage() {} -func (*Wrapper) Descriptor() ([]byte, []int) { - return fileDescriptor_661e47e790f76671, []int{3} +func (x *Wrapper) Reset() { + *x = Wrapper{} + if protoimpl.UnsafeEnabled { + mi := &file_extensions_extension_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Wrapper) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Wrapper.Unmarshal(m, b) +func (x *Wrapper) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Wrapper) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Wrapper.Marshal(b, m, deterministic) -} -func (m *Wrapper) XXX_Merge(src proto.Message) { - xxx_messageInfo_Wrapper.Merge(m, src) -} -func (m *Wrapper) XXX_Size() int { - return xxx_messageInfo_Wrapper.Size(m) -} -func (m *Wrapper) XXX_DiscardUnknown() { - xxx_messageInfo_Wrapper.DiscardUnknown(m) + +func (*Wrapper) ProtoMessage() {} + +func (x *Wrapper) ProtoReflect() protoreflect.Message { + mi := &file_extensions_extension_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Wrapper proto.InternalMessageInfo +// Deprecated: Use Wrapper.ProtoReflect.Descriptor instead. +func (*Wrapper) Descriptor() ([]byte, []int) { + return file_extensions_extension_proto_rawDescGZIP(), []int{3} +} -func (m *Wrapper) GetVersion() string { - if m != nil { - return m.Version +func (x *Wrapper) GetVersion() string { + if x != nil { + return x.Version } return "" } -func (m *Wrapper) GetExtensionName() string { - if m != nil { - return m.ExtensionName +func (x *Wrapper) GetExtensionName() string { + if x != nil { + return x.ExtensionName } return "" } -func (m *Wrapper) GetYaml() string { - if m != nil { - return m.Yaml +func (x *Wrapper) GetYaml() string { + if x != nil { + return x.Yaml } return "" } -func init() { - proto.RegisterType((*Version)(nil), "openapiextension.v1.Version") - proto.RegisterType((*ExtensionHandlerRequest)(nil), "openapiextension.v1.ExtensionHandlerRequest") - proto.RegisterType((*ExtensionHandlerResponse)(nil), "openapiextension.v1.ExtensionHandlerResponse") - proto.RegisterType((*Wrapper)(nil), "openapiextension.v1.Wrapper") -} - -func init() { proto.RegisterFile("extensions/extension.proto", fileDescriptor_661e47e790f76671) } - -var fileDescriptor_661e47e790f76671 = []byte{ - // 362 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0x4d, 0x4b, 0xeb, 0x40, - 0x18, 0x85, 0x49, 0xbf, 0x72, 0x33, 0x97, 0xdb, 0x2b, 0x63, 0xd1, 0x58, 0x5c, 0x94, 0x80, 0x50, - 0x44, 0xa6, 0x54, 0xc1, 0x7d, 0x0b, 0x45, 0xdd, 0xd8, 0x32, 0x8b, 0xba, 0xb3, 0x4c, 0xd3, 0xb7, - 0x69, 0x24, 0x99, 0x19, 0x27, 0x1f, 0xb6, 0x7f, 0xc5, 0xa5, 0xbf, 0x54, 0x32, 0x93, 0xc4, 0x85, - 0xba, 0x9b, 0xf3, 0x70, 0xda, 0xf7, 0x9c, 0x13, 0xd4, 0x87, 0x7d, 0x0a, 0x3c, 0x09, 0x05, 0x4f, - 0x46, 0xf5, 0x93, 0x48, 0x25, 0x52, 0x81, 0x8f, 0x85, 0x04, 0xce, 0x64, 0xf8, 0xc5, 0xf3, 0x71, - 0xff, 0x2c, 0x10, 0x22, 0x88, 0x60, 0xa4, 0x2d, 0xeb, 0x6c, 0x3b, 0x62, 0xfc, 0x60, 0xfc, 0x9e, - 0x8f, 0xec, 0x25, 0xa8, 0xc2, 0x88, 0x7b, 0xa8, 0x1d, 0xb3, 0x17, 0xa1, 0x5c, 0x6b, 0x60, 0x0d, - 0xdb, 0xd4, 0x08, 0x4d, 0x43, 0x2e, 0x94, 0xdb, 0x28, 0x69, 0x21, 0x0a, 0x2a, 0x59, 0xea, 0xef, - 0xdc, 0xa6, 0xa1, 0x5a, 0xe0, 0x13, 0xd4, 0x49, 0xb2, 0xed, 0x36, 0xdc, 0xbb, 0xad, 0x81, 0x35, - 0x74, 0x68, 0xa9, 0xbc, 0x77, 0x0b, 0x9d, 0xce, 0xaa, 0x40, 0xf7, 0x8c, 0x6f, 0x22, 0x50, 0x14, - 0x5e, 0x33, 0x48, 0x52, 0x7c, 0x8b, 0xec, 0x37, 0xc5, 0xa4, 0x04, 0x73, 0xf7, 0xef, 0xf5, 0x39, - 0xf9, 0xa1, 0x02, 0x79, 0x32, 0x1e, 0x5a, 0x99, 0xf1, 0x1d, 0x3a, 0xf2, 0x45, 0x2c, 0xc3, 0x08, - 0xd4, 0x2a, 0x37, 0x0d, 0x74, 0x98, 0xdf, 0xfe, 0xa0, 0x6c, 0x49, 0xff, 0x57, 0xbf, 0x2a, 0x81, - 0x97, 0x23, 0xf7, 0x7b, 0xb6, 0x44, 0x0a, 0x9e, 0x00, 0x76, 0x91, 0xbd, 0xd3, 0x68, 0xa3, 0xc3, - 0xfd, 0xa1, 0x95, 0x2c, 0x06, 0x00, 0xa5, 0xf4, 0x2c, 0xcd, 0xa1, 0x43, 0x8d, 0xc0, 0x97, 0xa8, - 0x9d, 0xb3, 0x28, 0x83, 0x32, 0x49, 0x8f, 0x98, 0xe1, 0x49, 0x35, 0x3c, 0x99, 0xf0, 0x03, 0x35, - 0x16, 0xef, 0x19, 0xd9, 0x65, 0xa9, 0xe2, 0x4c, 0x55, 0xc1, 0xd2, 0xc3, 0x55, 0x12, 0x5f, 0xa0, - 0x6e, 0xdd, 0x62, 0xc5, 0x59, 0x0c, 0xfa, 0x33, 0x38, 0xf4, 0x5f, 0x4d, 0x1f, 0x59, 0x0c, 0x18, - 0xa3, 0xd6, 0x81, 0xc5, 0x91, 0x3e, 0xeb, 0x50, 0xfd, 0x9e, 0x5e, 0xa1, 0xae, 0x50, 0x01, 0x09, - 0xb8, 0x48, 0xd2, 0xd0, 0x27, 0xf9, 0x78, 0x8a, 0xe7, 0x12, 0xf8, 0x64, 0xf1, 0x50, 0xd7, 0x5d, - 0x8e, 0x17, 0xd6, 0x47, 0xa3, 0x39, 0x9f, 0xcc, 0xd6, 0x1d, 0x1d, 0xf1, 0xe6, 0x33, 0x00, 0x00, - 0xff, 0xff, 0xeb, 0xf3, 0xfa, 0x65, 0x5c, 0x02, 0x00, 0x00, +var File_extensions_extension_proto protoreflect.FileDescriptor + +var file_extensions_extension_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x67, 0x6e, + 0x6f, 0x73, 0x74, 0x69, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x63, 0x0a, + 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, + 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, + 0x66, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x66, 0x66, + 0x69, 0x78, 0x22, 0x9c, 0x01, 0x0a, 0x17, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, + 0x0a, 0x07, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x07, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x69, + 0x6c, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0x78, 0x0a, 0x18, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, + 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5e, 0x0a, 0x07, 0x57, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x42, 0x4b, 0x0a, 0x0e, 0x6f, + 0x72, 0x67, 0x2e, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x42, 0x10, 0x47, + 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, + 0x01, 0x5a, 0x1f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x67, 0x6e, + 0x6f, 0x73, 0x74, 0x69, 0x63, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x76, 0x31, 0xa2, 0x02, 0x03, 0x47, 0x4e, 0x58, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_extensions_extension_proto_rawDescOnce sync.Once + file_extensions_extension_proto_rawDescData = file_extensions_extension_proto_rawDesc +) + +func file_extensions_extension_proto_rawDescGZIP() []byte { + file_extensions_extension_proto_rawDescOnce.Do(func() { + file_extensions_extension_proto_rawDescData = protoimpl.X.CompressGZIP(file_extensions_extension_proto_rawDescData) + }) + return file_extensions_extension_proto_rawDescData +} + +var file_extensions_extension_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_extensions_extension_proto_goTypes = []interface{}{ + (*Version)(nil), // 0: gnostic.extension.v1.Version + (*ExtensionHandlerRequest)(nil), // 1: gnostic.extension.v1.ExtensionHandlerRequest + (*ExtensionHandlerResponse)(nil), // 2: gnostic.extension.v1.ExtensionHandlerResponse + (*Wrapper)(nil), // 3: gnostic.extension.v1.Wrapper + (*any.Any)(nil), // 4: google.protobuf.Any +} +var file_extensions_extension_proto_depIdxs = []int32{ + 3, // 0: gnostic.extension.v1.ExtensionHandlerRequest.wrapper:type_name -> gnostic.extension.v1.Wrapper + 0, // 1: gnostic.extension.v1.ExtensionHandlerRequest.compiler_version:type_name -> gnostic.extension.v1.Version + 4, // 2: gnostic.extension.v1.ExtensionHandlerResponse.value:type_name -> google.protobuf.Any + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_extensions_extension_proto_init() } +func file_extensions_extension_proto_init() { + if File_extensions_extension_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_extensions_extension_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Version); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_extensions_extension_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExtensionHandlerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_extensions_extension_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExtensionHandlerResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_extensions_extension_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Wrapper); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_extensions_extension_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_extensions_extension_proto_goTypes, + DependencyIndexes: file_extensions_extension_proto_depIdxs, + MessageInfos: file_extensions_extension_proto_msgTypes, + }.Build() + File_extensions_extension_proto = out.File + file_extensions_extension_proto_rawDesc = nil + file_extensions_extension_proto_goTypes = nil + file_extensions_extension_proto_depIdxs = nil } diff --git a/vendor/github.com/googleapis/gnostic/extensions/extension.proto b/vendor/github.com/googleapis/gnostic/extensions/extension.proto index 04856f913..8ac1faffc 100644 --- a/vendor/github.com/googleapis/gnostic/extensions/extension.proto +++ b/vendor/github.com/googleapis/gnostic/extensions/extension.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. All Rights Reserved. +// Copyright 2017 Google LLC. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14,8 +14,9 @@ syntax = "proto3"; +package gnostic.extension.v1; + import "google/protobuf/any.proto"; -package openapiextension.v1; // This option lets the proto compiler generate Java code inside the package // name (see below) instead of inside an outer class. It creates a simpler @@ -26,7 +27,7 @@ option java_multiple_files = true; // The Java outer classname should be the filename in UpperCamelCase. This // class is only used to hold proto descriptor, so developers don't need to // work with it directly. -option java_outer_classname = "OpenAPIExtensionV1"; +option java_outer_classname = "GnosticExtension"; // The Java package name must be proto package name with proper prefix. option java_package = "org.gnostic.v1"; @@ -37,9 +38,12 @@ option java_package = "org.gnostic.v1"; // hopefully unique enough to not conflict with things that may come along in // the future. 'GPB' is reserved for the protocol buffer implementation itself. // -option objc_class_prefix = "OAE"; // "OpenAPI Extension" +option objc_class_prefix = "GNX"; // "Gnostic Extension" + +// The Go package name. +option go_package = "extensions;gnostic_extension_v1"; -// The version number of OpenAPI compiler. +// The version number of Gnostic. message Version { int32 major = 1; int32 minor = 2; @@ -52,12 +56,11 @@ message Version { // An encoded Request is written to the ExtensionHandler's stdin. message ExtensionHandlerRequest { - // The OpenAPI descriptions that were explicitly listed on the command line. - // The specifications will appear in the order they are specified to gnostic. + // The extension to process. Wrapper wrapper = 1; - // The version number of openapi compiler. - Version compiler_version = 3; + // The version number of Gnostic. + Version compiler_version = 2; } // The extensions writes an encoded ExtensionHandlerResponse to stdout. @@ -66,7 +69,7 @@ message ExtensionHandlerResponse { // true if the extension is handled by the extension handler; false otherwise bool handled = 1; - // Error message. If non-empty, the extension handling failed. + // Error message(s). If non-empty, the extension handling failed. // The extension handler process should exit with status code zero // even if it reports an error in this way. // @@ -75,7 +78,7 @@ message ExtensionHandlerResponse { // itself -- such as the input Document being unparseable -- should be // reported by writing a message to stderr and exiting with a non-zero // status code. - repeated string error = 2; + repeated string errors = 2; // text output google.protobuf.Any value = 3; @@ -85,9 +88,9 @@ message Wrapper { // version of the OpenAPI specification in which this extension was written. string version = 1; - // Name of the extension + // Name of the extension. string extension_name = 2; - // Must be a valid yaml for the proto + // YAML-formatted extension value. string yaml = 3; } diff --git a/vendor/github.com/googleapis/gnostic/extensions/extensions.go b/vendor/github.com/googleapis/gnostic/extensions/extensions.go index 94a8e62a7..ec8afd009 100644 --- a/vendor/github.com/googleapis/gnostic/extensions/extensions.go +++ b/vendor/github.com/googleapis/gnostic/extensions/extensions.go @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. All Rights Reserved. +// Copyright 2017 Google LLC. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,71 +12,53 @@ // See the License for the specific language governing permissions and // limitations under the License. -package openapiextension_v1 +package gnostic_extension_v1 import ( - "fmt" "io/ioutil" + "log" "os" "github.com/golang/protobuf/proto" "github.com/golang/protobuf/ptypes" ) -type documentHandler func(version string, extensionName string, document string) type extensionHandler func(name string, yamlInput string) (bool, proto.Message, error) -func forInputYamlFromOpenapic(handler documentHandler) { +// Main implements the main program of an extension handler. +func Main(handler extensionHandler) { + // unpack the request data, err := ioutil.ReadAll(os.Stdin) if err != nil { - fmt.Println("File error:", err.Error()) + log.Println("File error:", err.Error()) os.Exit(1) } if len(data) == 0 { - fmt.Println("No input data.") + log.Println("No input data.") os.Exit(1) } request := &ExtensionHandlerRequest{} err = proto.Unmarshal(data, request) if err != nil { - fmt.Println("Input error:", err.Error()) + log.Println("Input error:", err.Error()) os.Exit(1) } - handler(request.Wrapper.Version, request.Wrapper.ExtensionName, request.Wrapper.Yaml) -} - -// ProcessExtension calles the handler for a specified extension. -func ProcessExtension(handleExtension extensionHandler) { - response := &ExtensionHandlerResponse{} - forInputYamlFromOpenapic( - func(version string, extensionName string, yamlInput string) { - var newObject proto.Message - var err error - - handled, newObject, err := handleExtension(extensionName, yamlInput) - if !handled { - responseBytes, _ := proto.Marshal(response) - os.Stdout.Write(responseBytes) - os.Exit(0) - } - - // If we reach here, then the extension is handled - response.Handled = true - if err != nil { - response.Error = append(response.Error, err.Error()) - responseBytes, _ := proto.Marshal(response) - os.Stdout.Write(responseBytes) - os.Exit(0) - } - response.Value, err = ptypes.MarshalAny(newObject) - if err != nil { - response.Error = append(response.Error, err.Error()) - responseBytes, _ := proto.Marshal(response) - os.Stdout.Write(responseBytes) - os.Exit(0) - } - }) - + // call the handler + handled, output, err := handler(request.Wrapper.ExtensionName, request.Wrapper.Yaml) + // respond with the output of the handler + response := &ExtensionHandlerResponse{ + Handled: false, // default assumption + Errors: make([]string, 0), + } + if err != nil { + response.Errors = append(response.Errors, err.Error()) + } else if handled { + response.Handled = true + response.Value, err = ptypes.MarshalAny(output) + if err != nil { + response.Errors = append(response.Errors, err.Error()) + } + } responseBytes, _ := proto.Marshal(response) os.Stdout.Write(responseBytes) } diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/README.md b/vendor/github.com/googleapis/gnostic/jsonschema/README.md new file mode 100644 index 000000000..6793c5179 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/README.md @@ -0,0 +1,4 @@ +# jsonschema + +This directory contains code for reading, writing, and manipulating JSON +schemas. diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/base.go b/vendor/github.com/googleapis/gnostic/jsonschema/base.go new file mode 100644 index 000000000..0af8b148b --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/base.go @@ -0,0 +1,84 @@ + +// THIS FILE IS AUTOMATICALLY GENERATED. + +package jsonschema + +import ( + "encoding/base64" +) + +func baseSchemaBytes() ([]byte, error){ + return base64.StdEncoding.DecodeString( +`ewogICAgImlkIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgICAi +JHNjaGVtYSI6ICJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMiLAogICAgImRl +c2NyaXB0aW9uIjogIkNvcmUgc2NoZW1hIG1ldGEtc2NoZW1hIiwKICAgICJkZWZpbml0aW9ucyI6IHsK +ICAgICAgICAic2NoZW1hQXJyYXkiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKICAgICAg +ICAgICAgIm1pbkl0ZW1zIjogMSwKICAgICAgICAgICAgIml0ZW1zIjogeyAiJHJlZiI6ICIjIiB9CiAg +ICAgICAgfSwKICAgICAgICAicG9zaXRpdmVJbnRlZ2VyIjogewogICAgICAgICAgICAidHlwZSI6ICJp +bnRlZ2VyIiwKICAgICAgICAgICAgIm1pbmltdW0iOiAwCiAgICAgICAgfSwKICAgICAgICAicG9zaXRp +dmVJbnRlZ2VyRGVmYXVsdDAiOiB7CiAgICAgICAgICAgICJhbGxPZiI6IFsgeyAiJHJlZiI6ICIjL2Rl +ZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlciIgfSwgeyAiZGVmYXVsdCI6IDAgfSBdCiAgICAgICAgfSwK +ICAgICAgICAic2ltcGxlVHlwZXMiOiB7CiAgICAgICAgICAgICJlbnVtIjogWyAiYXJyYXkiLCAiYm9v +bGVhbiIsICJpbnRlZ2VyIiwgIm51bGwiLCAibnVtYmVyIiwgIm9iamVjdCIsICJzdHJpbmciIF0KICAg +ICAgICB9LAogICAgICAgICJzdHJpbmdBcnJheSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiYXJyYXki +LAogICAgICAgICAgICAiaXRlbXMiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKICAgICAgICAgICAgIm1p +bkl0ZW1zIjogMSwKICAgICAgICAgICAgInVuaXF1ZUl0ZW1zIjogdHJ1ZQogICAgICAgIH0KICAgIH0s +CiAgICAidHlwZSI6ICJvYmplY3QiLAogICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgImlkIjogewog +ICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAiZm9ybWF0IjogInVyaSIKICAg +ICAgICB9LAogICAgICAgICIkc2NoZW1hIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAog +ICAgICAgICAgICAiZm9ybWF0IjogInVyaSIKICAgICAgICB9LAogICAgICAgICJ0aXRsZSI6IHsKICAg +ICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgIH0sCiAgICAgICAgImRlc2NyaXB0aW9uIjog +ewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgfSwKICAgICAgICAiZGVmYXVsdCI6 +IHt9LAogICAgICAgICJtdWx0aXBsZU9mIjogewogICAgICAgICAgICAidHlwZSI6ICJudW1iZXIiLAog +ICAgICAgICAgICAibWluaW11bSI6IDAsCiAgICAgICAgICAgICJleGNsdXNpdmVNaW5pbXVtIjogdHJ1 +ZQogICAgICAgIH0sCiAgICAgICAgIm1heGltdW0iOiB7CiAgICAgICAgICAgICJ0eXBlIjogIm51bWJl +ciIKICAgICAgICB9LAogICAgICAgICJleGNsdXNpdmVNYXhpbXVtIjogewogICAgICAgICAgICAidHlw +ZSI6ICJib29sZWFuIiwKICAgICAgICAgICAgImRlZmF1bHQiOiBmYWxzZQogICAgICAgIH0sCiAgICAg +ICAgIm1pbmltdW0iOiB7CiAgICAgICAgICAgICJ0eXBlIjogIm51bWJlciIKICAgICAgICB9LAogICAg +ICAgICJleGNsdXNpdmVNaW5pbXVtIjogewogICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIiwKICAg +ICAgICAgICAgImRlZmF1bHQiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgIm1heExlbmd0aCI6IHsg +IiRyZWYiOiAiIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXIiIH0sCiAgICAgICAgIm1pbkxlbmd0 +aCI6IHsgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJEZWZhdWx0MCIgfSwKICAg +ICAgICAicGF0dGVybiI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAg +ImZvcm1hdCI6ICJyZWdleCIKICAgICAgICB9LAogICAgICAgICJhZGRpdGlvbmFsSXRlbXMiOiB7CiAg +ICAgICAgICAgICJhbnlPZiI6IFsKICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiYm9vbGVhbiIgfSwK +ICAgICAgICAgICAgICAgIHsgIiRyZWYiOiAiIyIgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAi +ZGVmYXVsdCI6IHt9CiAgICAgICAgfSwKICAgICAgICAiaXRlbXMiOiB7CiAgICAgICAgICAgICJhbnlP +ZiI6IFsKICAgICAgICAgICAgICAgIHsgIiRyZWYiOiAiIyIgfSwKICAgICAgICAgICAgICAgIHsgIiRy +ZWYiOiAiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheSIgfQogICAgICAgICAgICBdLAogICAgICAgICAg +ICAiZGVmYXVsdCI6IHt9CiAgICAgICAgfSwKICAgICAgICAibWF4SXRlbXMiOiB7ICIkcmVmIjogIiMv +ZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyIiB9LAogICAgICAgICJtaW5JdGVtcyI6IHsgIiRyZWYi +OiAiIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJEZWZhdWx0MCIgfSwKICAgICAgICAidW5pcXVl +SXRlbXMiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iLAogICAgICAgICAgICAiZGVmYXVs +dCI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAibWF4UHJvcGVydGllcyI6IHsgIiRyZWYiOiAiIy9k +ZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXIiIH0sCiAgICAgICAgIm1pblByb3BlcnRpZXMiOiB7ICIk +cmVmIjogIiMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyRGVmYXVsdDAiIH0sCiAgICAgICAgInJl +cXVpcmVkIjogeyAiJHJlZiI6ICIjL2RlZmluaXRpb25zL3N0cmluZ0FycmF5IiB9LAogICAgICAgICJh +ZGRpdGlvbmFsUHJvcGVydGllcyI6IHsKICAgICAgICAgICAgImFueU9mIjogWwogICAgICAgICAgICAg +ICAgeyAidHlwZSI6ICJib29sZWFuIiB9LAogICAgICAgICAgICAgICAgeyAiJHJlZiI6ICIjIiB9CiAg +ICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZWZhdWx0Ijoge30KICAgICAgICB9LAogICAgICAgICJk +ZWZpbml0aW9ucyI6IHsKICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgImFk +ZGl0aW9uYWxQcm9wZXJ0aWVzIjogeyAiJHJlZiI6ICIjIiB9LAogICAgICAgICAgICAiZGVmYXVsdCI6 +IHt9CiAgICAgICAgfSwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgInR5cGUiOiAi +b2JqZWN0IiwKICAgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjogeyAiJHJlZiI6ICIjIiB9 +LAogICAgICAgICAgICAiZGVmYXVsdCI6IHt9CiAgICAgICAgfSwKICAgICAgICAicGF0dGVyblByb3Bl +cnRpZXMiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICJhZGRpdGlv +bmFsUHJvcGVydGllcyI6IHsgIiRyZWYiOiAiIyIgfSwKICAgICAgICAgICAgImRlZmF1bHQiOiB7fQog +ICAgICAgIH0sCiAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKICAgICAgICAgICAgInR5cGUiOiAib2Jq +ZWN0IiwKICAgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAg +ImFueU9mIjogWwogICAgICAgICAgICAgICAgICAgIHsgIiRyZWYiOiAiIyIgfSwKICAgICAgICAgICAg +ICAgICAgICB7ICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvc3RyaW5nQXJyYXkiIH0KICAgICAgICAgICAg +ICAgIF0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImVudW0iOiB7CiAgICAgICAgICAg +ICJ0eXBlIjogImFycmF5IiwKICAgICAgICAgICAgIm1pbkl0ZW1zIjogMSwKICAgICAgICAgICAgInVu +aXF1ZUl0ZW1zIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInR5cGUiOiB7CiAgICAgICAgICAgICJh +bnlPZiI6IFsKICAgICAgICAgICAgICAgIHsgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9zaW1wbGVUeXBl +cyIgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJhcnJheSIs +CiAgICAgICAgICAgICAgICAgICAgIml0ZW1zIjogeyAiJHJlZiI6ICIjL2RlZmluaXRpb25zL3NpbXBs +ZVR5cGVzIiB9LAogICAgICAgICAgICAgICAgICAgICJtaW5JdGVtcyI6IDEsCiAgICAgICAgICAgICAg +ICAgICAgInVuaXF1ZUl0ZW1zIjogdHJ1ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAg +ICAgICAgfSwKICAgICAgICAiYWxsT2YiOiB7ICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvc2NoZW1hQXJy +YXkiIH0sCiAgICAgICAgImFueU9mIjogeyAiJHJlZiI6ICIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5 +IiB9LAogICAgICAgICJvbmVPZiI6IHsgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheSIg +fSwKICAgICAgICAibm90IjogeyAiJHJlZiI6ICIjIiB9CiAgICB9LAogICAgImRlcGVuZGVuY2llcyI6 +IHsKICAgICAgICAiZXhjbHVzaXZlTWF4aW11bSI6IFsgIm1heGltdW0iIF0sCiAgICAgICAgImV4Y2x1 +c2l2ZU1pbmltdW0iOiBbICJtaW5pbXVtIiBdCiAgICB9LAogICAgImRlZmF1bHQiOiB7fQp9Cg==`)} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/display.go b/vendor/github.com/googleapis/gnostic/jsonschema/display.go new file mode 100644 index 000000000..028a760a9 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/display.go @@ -0,0 +1,229 @@ +// Copyright 2017 Google LLC. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package jsonschema + +import ( + "fmt" + "strings" +) + +// +// DISPLAY +// The following methods display Schemas. +// + +// Description returns a string representation of a string or string array. +func (s *StringOrStringArray) Description() string { + if s.String != nil { + return *s.String + } + if s.StringArray != nil { + return strings.Join(*s.StringArray, ", ") + } + return "" +} + +// Returns a string representation of a Schema. +func (schema *Schema) String() string { + return schema.describeSchema("") +} + +// Helper: Returns a string representation of a Schema indented by a specified string. +func (schema *Schema) describeSchema(indent string) string { + result := "" + if schema.Schema != nil { + result += indent + "$schema: " + *(schema.Schema) + "\n" + } + if schema.ID != nil { + result += indent + "id: " + *(schema.ID) + "\n" + } + if schema.MultipleOf != nil { + result += indent + fmt.Sprintf("multipleOf: %+v\n", *(schema.MultipleOf)) + } + if schema.Maximum != nil { + result += indent + fmt.Sprintf("maximum: %+v\n", *(schema.Maximum)) + } + if schema.ExclusiveMaximum != nil { + result += indent + fmt.Sprintf("exclusiveMaximum: %+v\n", *(schema.ExclusiveMaximum)) + } + if schema.Minimum != nil { + result += indent + fmt.Sprintf("minimum: %+v\n", *(schema.Minimum)) + } + if schema.ExclusiveMinimum != nil { + result += indent + fmt.Sprintf("exclusiveMinimum: %+v\n", *(schema.ExclusiveMinimum)) + } + if schema.MaxLength != nil { + result += indent + fmt.Sprintf("maxLength: %+v\n", *(schema.MaxLength)) + } + if schema.MinLength != nil { + result += indent + fmt.Sprintf("minLength: %+v\n", *(schema.MinLength)) + } + if schema.Pattern != nil { + result += indent + fmt.Sprintf("pattern: %+v\n", *(schema.Pattern)) + } + if schema.AdditionalItems != nil { + s := schema.AdditionalItems.Schema + if s != nil { + result += indent + "additionalItems:\n" + result += s.describeSchema(indent + " ") + } else { + b := *(schema.AdditionalItems.Boolean) + result += indent + fmt.Sprintf("additionalItems: %+v\n", b) + } + } + if schema.Items != nil { + result += indent + "items:\n" + items := schema.Items + if items.SchemaArray != nil { + for i, s := range *(items.SchemaArray) { + result += indent + " " + fmt.Sprintf("%d", i) + ":\n" + result += s.describeSchema(indent + " " + " ") + } + } else if items.Schema != nil { + result += items.Schema.describeSchema(indent + " " + " ") + } + } + if schema.MaxItems != nil { + result += indent + fmt.Sprintf("maxItems: %+v\n", *(schema.MaxItems)) + } + if schema.MinItems != nil { + result += indent + fmt.Sprintf("minItems: %+v\n", *(schema.MinItems)) + } + if schema.UniqueItems != nil { + result += indent + fmt.Sprintf("uniqueItems: %+v\n", *(schema.UniqueItems)) + } + if schema.MaxProperties != nil { + result += indent + fmt.Sprintf("maxProperties: %+v\n", *(schema.MaxProperties)) + } + if schema.MinProperties != nil { + result += indent + fmt.Sprintf("minProperties: %+v\n", *(schema.MinProperties)) + } + if schema.Required != nil { + result += indent + fmt.Sprintf("required: %+v\n", *(schema.Required)) + } + if schema.AdditionalProperties != nil { + s := schema.AdditionalProperties.Schema + if s != nil { + result += indent + "additionalProperties:\n" + result += s.describeSchema(indent + " ") + } else { + b := *(schema.AdditionalProperties.Boolean) + result += indent + fmt.Sprintf("additionalProperties: %+v\n", b) + } + } + if schema.Properties != nil { + result += indent + "properties:\n" + for _, pair := range *(schema.Properties) { + name := pair.Name + s := pair.Value + result += indent + " " + name + ":\n" + result += s.describeSchema(indent + " " + " ") + } + } + if schema.PatternProperties != nil { + result += indent + "patternProperties:\n" + for _, pair := range *(schema.PatternProperties) { + name := pair.Name + s := pair.Value + result += indent + " " + name + ":\n" + result += s.describeSchema(indent + " " + " ") + } + } + if schema.Dependencies != nil { + result += indent + "dependencies:\n" + for _, pair := range *(schema.Dependencies) { + name := pair.Name + schemaOrStringArray := pair.Value + s := schemaOrStringArray.Schema + if s != nil { + result += indent + " " + name + ":\n" + result += s.describeSchema(indent + " " + " ") + } else { + a := schemaOrStringArray.StringArray + if a != nil { + result += indent + " " + name + ":\n" + for _, s2 := range *a { + result += indent + " " + " " + s2 + "\n" + } + } + } + + } + } + if schema.Enumeration != nil { + result += indent + "enumeration:\n" + for _, value := range *(schema.Enumeration) { + if value.String != nil { + result += indent + " " + fmt.Sprintf("%+v\n", *value.String) + } else { + result += indent + " " + fmt.Sprintf("%+v\n", *value.Bool) + } + } + } + if schema.Type != nil { + result += indent + fmt.Sprintf("type: %+v\n", schema.Type.Description()) + } + if schema.AllOf != nil { + result += indent + "allOf:\n" + for _, s := range *(schema.AllOf) { + result += s.describeSchema(indent + " ") + result += indent + "-\n" + } + } + if schema.AnyOf != nil { + result += indent + "anyOf:\n" + for _, s := range *(schema.AnyOf) { + result += s.describeSchema(indent + " ") + result += indent + "-\n" + } + } + if schema.OneOf != nil { + result += indent + "oneOf:\n" + for _, s := range *(schema.OneOf) { + result += s.describeSchema(indent + " ") + result += indent + "-\n" + } + } + if schema.Not != nil { + result += indent + "not:\n" + result += schema.Not.describeSchema(indent + " ") + } + if schema.Definitions != nil { + result += indent + "definitions:\n" + for _, pair := range *(schema.Definitions) { + name := pair.Name + s := pair.Value + result += indent + " " + name + ":\n" + result += s.describeSchema(indent + " " + " ") + } + } + if schema.Title != nil { + result += indent + "title: " + *(schema.Title) + "\n" + } + if schema.Description != nil { + result += indent + "description: " + *(schema.Description) + "\n" + } + if schema.Default != nil { + result += indent + "default:\n" + result += indent + fmt.Sprintf(" %+v\n", *(schema.Default)) + } + if schema.Format != nil { + result += indent + "format: " + *(schema.Format) + "\n" + } + if schema.Ref != nil { + result += indent + "$ref: " + *(schema.Ref) + "\n" + } + return result +} diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/models.go b/vendor/github.com/googleapis/gnostic/jsonschema/models.go new file mode 100644 index 000000000..4781bdc5f --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/models.go @@ -0,0 +1,228 @@ +// Copyright 2017 Google LLC. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package jsonschema supports the reading, writing, and manipulation +// of JSON Schemas. +package jsonschema + +import "gopkg.in/yaml.v3" + +// The Schema struct models a JSON Schema and, because schemas are +// defined hierarchically, contains many references to itself. +// All fields are pointers and are nil if the associated values +// are not specified. +type Schema struct { + Schema *string // $schema + ID *string // id keyword used for $ref resolution scope + Ref *string // $ref, i.e. JSON Pointers + + // http://json-schema.org/latest/json-schema-validation.html + // 5.1. Validation keywords for numeric instances (number and integer) + MultipleOf *SchemaNumber + Maximum *SchemaNumber + ExclusiveMaximum *bool + Minimum *SchemaNumber + ExclusiveMinimum *bool + + // 5.2. Validation keywords for strings + MaxLength *int64 + MinLength *int64 + Pattern *string + + // 5.3. Validation keywords for arrays + AdditionalItems *SchemaOrBoolean + Items *SchemaOrSchemaArray + MaxItems *int64 + MinItems *int64 + UniqueItems *bool + + // 5.4. Validation keywords for objects + MaxProperties *int64 + MinProperties *int64 + Required *[]string + AdditionalProperties *SchemaOrBoolean + Properties *[]*NamedSchema + PatternProperties *[]*NamedSchema + Dependencies *[]*NamedSchemaOrStringArray + + // 5.5. Validation keywords for any instance type + Enumeration *[]SchemaEnumValue + Type *StringOrStringArray + AllOf *[]*Schema + AnyOf *[]*Schema + OneOf *[]*Schema + Not *Schema + Definitions *[]*NamedSchema + + // 6. Metadata keywords + Title *string + Description *string + Default *yaml.Node + + // 7. Semantic validation with "format" + Format *string +} + +// These helper structs represent "combination" types that generally can +// have values of one type or another. All are used to represent parts +// of Schemas. + +// SchemaNumber represents a value that can be either an Integer or a Float. +type SchemaNumber struct { + Integer *int64 + Float *float64 +} + +// NewSchemaNumberWithInteger creates and returns a new object +func NewSchemaNumberWithInteger(i int64) *SchemaNumber { + result := &SchemaNumber{} + result.Integer = &i + return result +} + +// NewSchemaNumberWithFloat creates and returns a new object +func NewSchemaNumberWithFloat(f float64) *SchemaNumber { + result := &SchemaNumber{} + result.Float = &f + return result +} + +// SchemaOrBoolean represents a value that can be either a Schema or a Boolean. +type SchemaOrBoolean struct { + Schema *Schema + Boolean *bool +} + +// NewSchemaOrBooleanWithSchema creates and returns a new object +func NewSchemaOrBooleanWithSchema(s *Schema) *SchemaOrBoolean { + result := &SchemaOrBoolean{} + result.Schema = s + return result +} + +// NewSchemaOrBooleanWithBoolean creates and returns a new object +func NewSchemaOrBooleanWithBoolean(b bool) *SchemaOrBoolean { + result := &SchemaOrBoolean{} + result.Boolean = &b + return result +} + +// StringOrStringArray represents a value that can be either +// a String or an Array of Strings. +type StringOrStringArray struct { + String *string + StringArray *[]string +} + +// NewStringOrStringArrayWithString creates and returns a new object +func NewStringOrStringArrayWithString(s string) *StringOrStringArray { + result := &StringOrStringArray{} + result.String = &s + return result +} + +// NewStringOrStringArrayWithStringArray creates and returns a new object +func NewStringOrStringArrayWithStringArray(a []string) *StringOrStringArray { + result := &StringOrStringArray{} + result.StringArray = &a + return result +} + +// SchemaOrStringArray represents a value that can be either +// a Schema or an Array of Strings. +type SchemaOrStringArray struct { + Schema *Schema + StringArray *[]string +} + +// SchemaOrSchemaArray represents a value that can be either +// a Schema or an Array of Schemas. +type SchemaOrSchemaArray struct { + Schema *Schema + SchemaArray *[]*Schema +} + +// NewSchemaOrSchemaArrayWithSchema creates and returns a new object +func NewSchemaOrSchemaArrayWithSchema(s *Schema) *SchemaOrSchemaArray { + result := &SchemaOrSchemaArray{} + result.Schema = s + return result +} + +// NewSchemaOrSchemaArrayWithSchemaArray creates and returns a new object +func NewSchemaOrSchemaArrayWithSchemaArray(a []*Schema) *SchemaOrSchemaArray { + result := &SchemaOrSchemaArray{} + result.SchemaArray = &a + return result +} + +// SchemaEnumValue represents a value that can be part of an +// enumeration in a Schema. +type SchemaEnumValue struct { + String *string + Bool *bool +} + +// NamedSchema is a name-value pair that is used to emulate maps +// with ordered keys. +type NamedSchema struct { + Name string + Value *Schema +} + +// NewNamedSchema creates and returns a new object +func NewNamedSchema(name string, value *Schema) *NamedSchema { + return &NamedSchema{Name: name, Value: value} +} + +// NamedSchemaOrStringArray is a name-value pair that is used +// to emulate maps with ordered keys. +type NamedSchemaOrStringArray struct { + Name string + Value *SchemaOrStringArray +} + +// Access named subschemas by name + +func namedSchemaArrayElementWithName(array *[]*NamedSchema, name string) *Schema { + if array == nil { + return nil + } + for _, pair := range *array { + if pair.Name == name { + return pair.Value + } + } + return nil +} + +// PropertyWithName returns the selected element. +func (s *Schema) PropertyWithName(name string) *Schema { + return namedSchemaArrayElementWithName(s.Properties, name) +} + +// PatternPropertyWithName returns the selected element. +func (s *Schema) PatternPropertyWithName(name string) *Schema { + return namedSchemaArrayElementWithName(s.PatternProperties, name) +} + +// DefinitionWithName returns the selected element. +func (s *Schema) DefinitionWithName(name string) *Schema { + return namedSchemaArrayElementWithName(s.Definitions, name) +} + +// AddProperty adds a named property. +func (s *Schema) AddProperty(name string, property *Schema) { + *s.Properties = append(*s.Properties, NewNamedSchema(name, property)) +} diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/operations.go b/vendor/github.com/googleapis/gnostic/jsonschema/operations.go new file mode 100644 index 000000000..ba8dd4a91 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/operations.go @@ -0,0 +1,394 @@ +// Copyright 2017 Google LLC. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package jsonschema + +import ( + "fmt" + "log" + "strings" +) + +// +// OPERATIONS +// The following methods perform operations on Schemas. +// + +// IsEmpty returns true if no members of the Schema are specified. +func (schema *Schema) IsEmpty() bool { + return (schema.Schema == nil) && + (schema.ID == nil) && + (schema.MultipleOf == nil) && + (schema.Maximum == nil) && + (schema.ExclusiveMaximum == nil) && + (schema.Minimum == nil) && + (schema.ExclusiveMinimum == nil) && + (schema.MaxLength == nil) && + (schema.MinLength == nil) && + (schema.Pattern == nil) && + (schema.AdditionalItems == nil) && + (schema.Items == nil) && + (schema.MaxItems == nil) && + (schema.MinItems == nil) && + (schema.UniqueItems == nil) && + (schema.MaxProperties == nil) && + (schema.MinProperties == nil) && + (schema.Required == nil) && + (schema.AdditionalProperties == nil) && + (schema.Properties == nil) && + (schema.PatternProperties == nil) && + (schema.Dependencies == nil) && + (schema.Enumeration == nil) && + (schema.Type == nil) && + (schema.AllOf == nil) && + (schema.AnyOf == nil) && + (schema.OneOf == nil) && + (schema.Not == nil) && + (schema.Definitions == nil) && + (schema.Title == nil) && + (schema.Description == nil) && + (schema.Default == nil) && + (schema.Format == nil) && + (schema.Ref == nil) +} + +// IsEqual returns true if two schemas are equal. +func (schema *Schema) IsEqual(schema2 *Schema) bool { + return schema.String() == schema2.String() +} + +// SchemaOperation represents a function that can be applied to a Schema. +type SchemaOperation func(schema *Schema, context string) + +// Applies a specified function to a Schema and all of the Schemas that it contains. +func (schema *Schema) applyToSchemas(operation SchemaOperation, context string) { + + if schema.AdditionalItems != nil { + s := schema.AdditionalItems.Schema + if s != nil { + s.applyToSchemas(operation, "AdditionalItems") + } + } + + if schema.Items != nil { + if schema.Items.SchemaArray != nil { + for _, s := range *(schema.Items.SchemaArray) { + s.applyToSchemas(operation, "Items.SchemaArray") + } + } else if schema.Items.Schema != nil { + schema.Items.Schema.applyToSchemas(operation, "Items.Schema") + } + } + + if schema.AdditionalProperties != nil { + s := schema.AdditionalProperties.Schema + if s != nil { + s.applyToSchemas(operation, "AdditionalProperties") + } + } + + if schema.Properties != nil { + for _, pair := range *(schema.Properties) { + s := pair.Value + s.applyToSchemas(operation, "Properties") + } + } + if schema.PatternProperties != nil { + for _, pair := range *(schema.PatternProperties) { + s := pair.Value + s.applyToSchemas(operation, "PatternProperties") + } + } + + if schema.Dependencies != nil { + for _, pair := range *(schema.Dependencies) { + schemaOrStringArray := pair.Value + s := schemaOrStringArray.Schema + if s != nil { + s.applyToSchemas(operation, "Dependencies") + } + } + } + + if schema.AllOf != nil { + for _, s := range *(schema.AllOf) { + s.applyToSchemas(operation, "AllOf") + } + } + if schema.AnyOf != nil { + for _, s := range *(schema.AnyOf) { + s.applyToSchemas(operation, "AnyOf") + } + } + if schema.OneOf != nil { + for _, s := range *(schema.OneOf) { + s.applyToSchemas(operation, "OneOf") + } + } + if schema.Not != nil { + schema.Not.applyToSchemas(operation, "Not") + } + + if schema.Definitions != nil { + for _, pair := range *(schema.Definitions) { + s := pair.Value + s.applyToSchemas(operation, "Definitions") + } + } + + operation(schema, context) +} + +// CopyProperties copies all non-nil properties from the source Schema to the schema Schema. +func (schema *Schema) CopyProperties(source *Schema) { + if source.Schema != nil { + schema.Schema = source.Schema + } + if source.ID != nil { + schema.ID = source.ID + } + if source.MultipleOf != nil { + schema.MultipleOf = source.MultipleOf + } + if source.Maximum != nil { + schema.Maximum = source.Maximum + } + if source.ExclusiveMaximum != nil { + schema.ExclusiveMaximum = source.ExclusiveMaximum + } + if source.Minimum != nil { + schema.Minimum = source.Minimum + } + if source.ExclusiveMinimum != nil { + schema.ExclusiveMinimum = source.ExclusiveMinimum + } + if source.MaxLength != nil { + schema.MaxLength = source.MaxLength + } + if source.MinLength != nil { + schema.MinLength = source.MinLength + } + if source.Pattern != nil { + schema.Pattern = source.Pattern + } + if source.AdditionalItems != nil { + schema.AdditionalItems = source.AdditionalItems + } + if source.Items != nil { + schema.Items = source.Items + } + if source.MaxItems != nil { + schema.MaxItems = source.MaxItems + } + if source.MinItems != nil { + schema.MinItems = source.MinItems + } + if source.UniqueItems != nil { + schema.UniqueItems = source.UniqueItems + } + if source.MaxProperties != nil { + schema.MaxProperties = source.MaxProperties + } + if source.MinProperties != nil { + schema.MinProperties = source.MinProperties + } + if source.Required != nil { + schema.Required = source.Required + } + if source.AdditionalProperties != nil { + schema.AdditionalProperties = source.AdditionalProperties + } + if source.Properties != nil { + schema.Properties = source.Properties + } + if source.PatternProperties != nil { + schema.PatternProperties = source.PatternProperties + } + if source.Dependencies != nil { + schema.Dependencies = source.Dependencies + } + if source.Enumeration != nil { + schema.Enumeration = source.Enumeration + } + if source.Type != nil { + schema.Type = source.Type + } + if source.AllOf != nil { + schema.AllOf = source.AllOf + } + if source.AnyOf != nil { + schema.AnyOf = source.AnyOf + } + if source.OneOf != nil { + schema.OneOf = source.OneOf + } + if source.Not != nil { + schema.Not = source.Not + } + if source.Definitions != nil { + schema.Definitions = source.Definitions + } + if source.Title != nil { + schema.Title = source.Title + } + if source.Description != nil { + schema.Description = source.Description + } + if source.Default != nil { + schema.Default = source.Default + } + if source.Format != nil { + schema.Format = source.Format + } + if source.Ref != nil { + schema.Ref = source.Ref + } +} + +// TypeIs returns true if the Type of a Schema includes the specified type +func (schema *Schema) TypeIs(typeName string) bool { + if schema.Type != nil { + // the schema Type is either a string or an array of strings + if schema.Type.String != nil { + return (*(schema.Type.String) == typeName) + } else if schema.Type.StringArray != nil { + for _, n := range *(schema.Type.StringArray) { + if n == typeName { + return true + } + } + } + } + return false +} + +// ResolveRefs resolves "$ref" elements in a Schema and its children. +// But if a reference refers to an object type, is inside a oneOf, or contains a oneOf, +// the reference is kept and we expect downstream tools to separately model these +// referenced schemas. +func (schema *Schema) ResolveRefs() { + rootSchema := schema + count := 1 + for count > 0 { + count = 0 + schema.applyToSchemas( + func(schema *Schema, context string) { + if schema.Ref != nil { + resolvedRef, err := rootSchema.resolveJSONPointer(*(schema.Ref)) + if err != nil { + log.Printf("%+v", err) + } else if resolvedRef.TypeIs("object") { + // don't substitute for objects, we'll model the referenced schema with a class + } else if context == "OneOf" { + // don't substitute for references inside oneOf declarations + } else if resolvedRef.OneOf != nil { + // don't substitute for references that contain oneOf declarations + } else if resolvedRef.AdditionalProperties != nil { + // don't substitute for references that look like objects + } else { + schema.Ref = nil + schema.CopyProperties(resolvedRef) + count++ + } + } + }, "") + } +} + +// resolveJSONPointer resolves JSON pointers. +// This current implementation is very crude and custom for OpenAPI 2.0 schemas. +// It panics for any pointer that it is unable to resolve. +func (schema *Schema) resolveJSONPointer(ref string) (result *Schema, err error) { + parts := strings.Split(ref, "#") + if len(parts) == 2 { + documentName := parts[0] + "#" + if documentName == "#" && schema.ID != nil { + documentName = *(schema.ID) + } + path := parts[1] + document := schemas[documentName] + pathParts := strings.Split(path, "/") + + // we currently do a very limited (hard-coded) resolution of certain paths and log errors for missed cases + if len(pathParts) == 1 { + return document, nil + } else if len(pathParts) == 3 { + switch pathParts[1] { + case "definitions": + dictionary := document.Definitions + for _, pair := range *dictionary { + if pair.Name == pathParts[2] { + result = pair.Value + } + } + case "properties": + dictionary := document.Properties + for _, pair := range *dictionary { + if pair.Name == pathParts[2] { + result = pair.Value + } + } + default: + break + } + } + } + if result == nil { + return nil, fmt.Errorf("unresolved pointer: %+v", ref) + } + return result, nil +} + +// ResolveAllOfs replaces "allOf" elements by merging their properties into the parent Schema. +func (schema *Schema) ResolveAllOfs() { + schema.applyToSchemas( + func(schema *Schema, context string) { + if schema.AllOf != nil { + for _, allOf := range *(schema.AllOf) { + schema.CopyProperties(allOf) + } + schema.AllOf = nil + } + }, "resolveAllOfs") +} + +// ResolveAnyOfs replaces all "anyOf" elements with "oneOf". +func (schema *Schema) ResolveAnyOfs() { + schema.applyToSchemas( + func(schema *Schema, context string) { + if schema.AnyOf != nil { + schema.OneOf = schema.AnyOf + schema.AnyOf = nil + } + }, "resolveAnyOfs") +} + +// return a pointer to a copy of a passed-in string +func stringptr(input string) (output *string) { + return &input +} + +// CopyOfficialSchemaProperty copies a named property from the official JSON Schema definition +func (schema *Schema) CopyOfficialSchemaProperty(name string) { + *schema.Properties = append(*schema.Properties, + NewNamedSchema(name, + &Schema{Ref: stringptr("http://json-schema.org/draft-04/schema#/properties/" + name)})) +} + +// CopyOfficialSchemaProperties copies named properties from the official JSON Schema definition +func (schema *Schema) CopyOfficialSchemaProperties(names []string) { + for _, name := range names { + schema.CopyOfficialSchemaProperty(name) + } +} diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/reader.go b/vendor/github.com/googleapis/gnostic/jsonschema/reader.go new file mode 100644 index 000000000..b8583d466 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/reader.go @@ -0,0 +1,442 @@ +// Copyright 2017 Google LLC. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:generate go run generate-base.go + +package jsonschema + +import ( + "fmt" + "io/ioutil" + "strconv" + + "gopkg.in/yaml.v3" +) + +// This is a global map of all known Schemas. +// It is initialized when the first Schema is created and inserted. +var schemas map[string]*Schema + +// NewBaseSchema builds a schema object from an embedded json representation. +func NewBaseSchema() (schema *Schema, err error) { + b, err := baseSchemaBytes() + if err != nil { + return nil, err + } + var node yaml.Node + err = yaml.Unmarshal(b, &node) + if err != nil { + return nil, err + } + return NewSchemaFromObject(&node), nil +} + +// NewSchemaFromFile reads a schema from a file. +// Currently this assumes that schemas are stored in the source distribution of this project. +func NewSchemaFromFile(filename string) (schema *Schema, err error) { + file, err := ioutil.ReadFile(filename) + if err != nil { + return nil, err + } + var node yaml.Node + err = yaml.Unmarshal(file, &node) + if err != nil { + return nil, err + } + return NewSchemaFromObject(&node), nil +} + +// NewSchemaFromObject constructs a schema from a parsed JSON object. +// Due to the complexity of the schema representation, this is a +// custom reader and not the standard Go JSON reader (encoding/json). +func NewSchemaFromObject(jsonData *yaml.Node) *Schema { + switch jsonData.Kind { + case yaml.DocumentNode: + return NewSchemaFromObject(jsonData.Content[0]) + case yaml.MappingNode: + schema := &Schema{} + + for i := 0; i < len(jsonData.Content); i += 2 { + k := jsonData.Content[i].Value + v := jsonData.Content[i+1] + + switch k { + case "$schema": + schema.Schema = schema.stringValue(v) + case "id": + schema.ID = schema.stringValue(v) + + case "multipleOf": + schema.MultipleOf = schema.numberValue(v) + case "maximum": + schema.Maximum = schema.numberValue(v) + case "exclusiveMaximum": + schema.ExclusiveMaximum = schema.boolValue(v) + case "minimum": + schema.Minimum = schema.numberValue(v) + case "exclusiveMinimum": + schema.ExclusiveMinimum = schema.boolValue(v) + + case "maxLength": + schema.MaxLength = schema.intValue(v) + case "minLength": + schema.MinLength = schema.intValue(v) + case "pattern": + schema.Pattern = schema.stringValue(v) + + case "additionalItems": + schema.AdditionalItems = schema.schemaOrBooleanValue(v) + case "items": + schema.Items = schema.schemaOrSchemaArrayValue(v) + case "maxItems": + schema.MaxItems = schema.intValue(v) + case "minItems": + schema.MinItems = schema.intValue(v) + case "uniqueItems": + schema.UniqueItems = schema.boolValue(v) + + case "maxProperties": + schema.MaxProperties = schema.intValue(v) + case "minProperties": + schema.MinProperties = schema.intValue(v) + case "required": + schema.Required = schema.arrayOfStringsValue(v) + case "additionalProperties": + schema.AdditionalProperties = schema.schemaOrBooleanValue(v) + case "properties": + schema.Properties = schema.mapOfSchemasValue(v) + case "patternProperties": + schema.PatternProperties = schema.mapOfSchemasValue(v) + case "dependencies": + schema.Dependencies = schema.mapOfSchemasOrStringArraysValue(v) + + case "enum": + schema.Enumeration = schema.arrayOfEnumValuesValue(v) + + case "type": + schema.Type = schema.stringOrStringArrayValue(v) + case "allOf": + schema.AllOf = schema.arrayOfSchemasValue(v) + case "anyOf": + schema.AnyOf = schema.arrayOfSchemasValue(v) + case "oneOf": + schema.OneOf = schema.arrayOfSchemasValue(v) + case "not": + schema.Not = NewSchemaFromObject(v) + case "definitions": + schema.Definitions = schema.mapOfSchemasValue(v) + + case "title": + schema.Title = schema.stringValue(v) + case "description": + schema.Description = schema.stringValue(v) + + case "default": + schema.Default = v + + case "format": + schema.Format = schema.stringValue(v) + case "$ref": + schema.Ref = schema.stringValue(v) + default: + fmt.Printf("UNSUPPORTED (%s)\n", k) + } + } + + // insert schema in global map + if schema.ID != nil { + if schemas == nil { + schemas = make(map[string]*Schema, 0) + } + schemas[*(schema.ID)] = schema + } + return schema + + default: + fmt.Printf("schemaValue: unexpected node %+v\n", jsonData) + return nil + } + + return nil +} + +// +// BUILDERS +// The following methods build elements of Schemas from interface{} values. +// Each returns nil if it is unable to build the desired element. +// + +// Gets the string value of an interface{} value if possible. +func (schema *Schema) stringValue(v *yaml.Node) *string { + switch v.Kind { + case yaml.ScalarNode: + return &v.Value + default: + fmt.Printf("stringValue: unexpected node %+v\n", v) + } + return nil +} + +// Gets the numeric value of an interface{} value if possible. +func (schema *Schema) numberValue(v *yaml.Node) *SchemaNumber { + number := &SchemaNumber{} + switch v.Kind { + case yaml.ScalarNode: + switch v.Tag { + case "!!float": + v2, _ := strconv.ParseFloat(v.Value, 64) + number.Float = &v2 + return number + case "!!int": + v2, _ := strconv.ParseInt(v.Value, 10, 64) + number.Integer = &v2 + return number + default: + fmt.Printf("stringValue: unexpected node %+v\n", v) + } + default: + fmt.Printf("stringValue: unexpected node %+v\n", v) + } + return nil +} + +// Gets the integer value of an interface{} value if possible. +func (schema *Schema) intValue(v *yaml.Node) *int64 { + switch v.Kind { + case yaml.ScalarNode: + switch v.Tag { + case "!!float": + v2, _ := strconv.ParseFloat(v.Value, 64) + v3 := int64(v2) + return &v3 + case "!!int": + v2, _ := strconv.ParseInt(v.Value, 10, 64) + return &v2 + default: + fmt.Printf("intValue: unexpected node %+v\n", v) + } + default: + fmt.Printf("intValue: unexpected node %+v\n", v) + } + return nil +} + +// Gets the bool value of an interface{} value if possible. +func (schema *Schema) boolValue(v *yaml.Node) *bool { + switch v.Kind { + case yaml.ScalarNode: + switch v.Tag { + case "!!bool": + v2, _ := strconv.ParseBool(v.Value) + return &v2 + default: + fmt.Printf("boolValue: unexpected node %+v\n", v) + } + default: + fmt.Printf("boolValue: unexpected node %+v\n", v) + } + return nil +} + +// Gets a map of Schemas from an interface{} value if possible. +func (schema *Schema) mapOfSchemasValue(v *yaml.Node) *[]*NamedSchema { + switch v.Kind { + case yaml.MappingNode: + m := make([]*NamedSchema, 0) + for i := 0; i < len(v.Content); i += 2 { + k2 := v.Content[i].Value + v2 := v.Content[i+1] + pair := &NamedSchema{Name: k2, Value: NewSchemaFromObject(v2)} + m = append(m, pair) + } + return &m + default: + fmt.Printf("mapOfSchemasValue: unexpected node %+v\n", v) + } + return nil +} + +// Gets an array of Schemas from an interface{} value if possible. +func (schema *Schema) arrayOfSchemasValue(v *yaml.Node) *[]*Schema { + switch v.Kind { + case yaml.SequenceNode: + m := make([]*Schema, 0) + for _, v2 := range v.Content { + switch v2.Kind { + case yaml.MappingNode: + s := NewSchemaFromObject(v2) + m = append(m, s) + default: + fmt.Printf("arrayOfSchemasValue: unexpected node %+v\n", v2) + } + } + return &m + case yaml.MappingNode: + m := make([]*Schema, 0) + s := NewSchemaFromObject(v) + m = append(m, s) + return &m + default: + fmt.Printf("arrayOfSchemasValue: unexpected node %+v\n", v) + } + return nil +} + +// Gets a Schema or an array of Schemas from an interface{} value if possible. +func (schema *Schema) schemaOrSchemaArrayValue(v *yaml.Node) *SchemaOrSchemaArray { + switch v.Kind { + case yaml.SequenceNode: + m := make([]*Schema, 0) + for _, v2 := range v.Content { + switch v2.Kind { + case yaml.MappingNode: + s := NewSchemaFromObject(v2) + m = append(m, s) + default: + fmt.Printf("schemaOrSchemaArrayValue: unexpected node %+v\n", v2) + } + } + return &SchemaOrSchemaArray{SchemaArray: &m} + case yaml.MappingNode: + s := NewSchemaFromObject(v) + return &SchemaOrSchemaArray{Schema: s} + default: + fmt.Printf("schemaOrSchemaArrayValue: unexpected node %+v\n", v) + } + return nil +} + +// Gets an array of strings from an interface{} value if possible. +func (schema *Schema) arrayOfStringsValue(v *yaml.Node) *[]string { + switch v.Kind { + case yaml.ScalarNode: + a := []string{v.Value} + return &a + case yaml.SequenceNode: + a := make([]string, 0) + for _, v2 := range v.Content { + switch v2.Kind { + case yaml.ScalarNode: + a = append(a, v2.Value) + default: + fmt.Printf("arrayOfStringsValue: unexpected node %+v\n", v2) + } + } + return &a + default: + fmt.Printf("arrayOfStringsValue: unexpected node %+v\n", v) + } + return nil +} + +// Gets a string or an array of strings from an interface{} value if possible. +func (schema *Schema) stringOrStringArrayValue(v *yaml.Node) *StringOrStringArray { + switch v.Kind { + case yaml.ScalarNode: + s := &StringOrStringArray{} + s.String = &v.Value + return s + case yaml.SequenceNode: + a := make([]string, 0) + for _, v2 := range v.Content { + switch v2.Kind { + case yaml.ScalarNode: + a = append(a, v2.Value) + default: + fmt.Printf("arrayOfStringsValue: unexpected node %+v\n", v2) + } + } + s := &StringOrStringArray{} + s.StringArray = &a + return s + default: + fmt.Printf("arrayOfStringsValue: unexpected node %+v\n", v) + } + return nil +} + +// Gets an array of enum values from an interface{} value if possible. +func (schema *Schema) arrayOfEnumValuesValue(v *yaml.Node) *[]SchemaEnumValue { + a := make([]SchemaEnumValue, 0) + switch v.Kind { + case yaml.SequenceNode: + for _, v2 := range v.Content { + switch v2.Kind { + case yaml.ScalarNode: + switch v2.Tag { + case "!!str": + a = append(a, SchemaEnumValue{String: &v2.Value}) + case "!!bool": + v3, _ := strconv.ParseBool(v2.Value) + a = append(a, SchemaEnumValue{Bool: &v3}) + default: + fmt.Printf("arrayOfEnumValuesValue: unexpected type %s\n", v2.Tag) + } + default: + fmt.Printf("arrayOfEnumValuesValue: unexpected node %+v\n", v2) + } + } + default: + fmt.Printf("arrayOfEnumValuesValue: unexpected node %+v\n", v) + } + return &a +} + +// Gets a map of schemas or string arrays from an interface{} value if possible. +func (schema *Schema) mapOfSchemasOrStringArraysValue(v *yaml.Node) *[]*NamedSchemaOrStringArray { + m := make([]*NamedSchemaOrStringArray, 0) + switch v.Kind { + case yaml.MappingNode: + for i := 0; i < len(v.Content); i += 2 { + k2 := v.Content[i].Value + v2 := v.Content[i+1] + switch v2.Kind { + case yaml.SequenceNode: + a := make([]string, 0) + for _, v3 := range v2.Content { + switch v3.Kind { + case yaml.ScalarNode: + a = append(a, v3.Value) + default: + fmt.Printf("mapOfSchemasOrStringArraysValue: unexpected node %+v\n", v3) + } + } + s := &SchemaOrStringArray{} + s.StringArray = &a + pair := &NamedSchemaOrStringArray{Name: k2, Value: s} + m = append(m, pair) + default: + fmt.Printf("mapOfSchemasOrStringArraysValue: unexpected node %+v\n", v2) + } + } + default: + fmt.Printf("mapOfSchemasOrStringArraysValue: unexpected node %+v\n", v) + } + return &m +} + +// Gets a schema or a boolean value from an interface{} value if possible. +func (schema *Schema) schemaOrBooleanValue(v *yaml.Node) *SchemaOrBoolean { + schemaOrBoolean := &SchemaOrBoolean{} + switch v.Kind { + case yaml.ScalarNode: + v2, _ := strconv.ParseBool(v.Value) + schemaOrBoolean.Boolean = &v2 + case yaml.MappingNode: + schemaOrBoolean.Schema = NewSchemaFromObject(v) + default: + fmt.Printf("schemaOrBooleanValue: unexpected node %+v\n", v) + } + return schemaOrBoolean +} diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/schema.json b/vendor/github.com/googleapis/gnostic/jsonschema/schema.json new file mode 100644 index 000000000..85eb502a6 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/schema.json @@ -0,0 +1,150 @@ +{ + "id": "http://json-schema.org/draft-04/schema#", + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Core schema meta-schema", + "definitions": { + "schemaArray": { + "type": "array", + "minItems": 1, + "items": { "$ref": "#" } + }, + "positiveInteger": { + "type": "integer", + "minimum": 0 + }, + "positiveIntegerDefault0": { + "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ] + }, + "simpleTypes": { + "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] + }, + "stringArray": { + "type": "array", + "items": { "type": "string" }, + "minItems": 1, + "uniqueItems": true + } + }, + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uri" + }, + "$schema": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "default": {}, + "multipleOf": { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true + }, + "maximum": { + "type": "number" + }, + "exclusiveMaximum": { + "type": "boolean", + "default": false + }, + "minimum": { + "type": "number" + }, + "exclusiveMinimum": { + "type": "boolean", + "default": false + }, + "maxLength": { "$ref": "#/definitions/positiveInteger" }, + "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" }, + "pattern": { + "type": "string", + "format": "regex" + }, + "additionalItems": { + "anyOf": [ + { "type": "boolean" }, + { "$ref": "#" } + ], + "default": {} + }, + "items": { + "anyOf": [ + { "$ref": "#" }, + { "$ref": "#/definitions/schemaArray" } + ], + "default": {} + }, + "maxItems": { "$ref": "#/definitions/positiveInteger" }, + "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" }, + "uniqueItems": { + "type": "boolean", + "default": false + }, + "maxProperties": { "$ref": "#/definitions/positiveInteger" }, + "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" }, + "required": { "$ref": "#/definitions/stringArray" }, + "additionalProperties": { + "anyOf": [ + { "type": "boolean" }, + { "$ref": "#" } + ], + "default": {} + }, + "definitions": { + "type": "object", + "additionalProperties": { "$ref": "#" }, + "default": {} + }, + "properties": { + "type": "object", + "additionalProperties": { "$ref": "#" }, + "default": {} + }, + "patternProperties": { + "type": "object", + "additionalProperties": { "$ref": "#" }, + "default": {} + }, + "dependencies": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { "$ref": "#" }, + { "$ref": "#/definitions/stringArray" } + ] + } + }, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true + }, + "type": { + "anyOf": [ + { "$ref": "#/definitions/simpleTypes" }, + { + "type": "array", + "items": { "$ref": "#/definitions/simpleTypes" }, + "minItems": 1, + "uniqueItems": true + } + ] + }, + "allOf": { "$ref": "#/definitions/schemaArray" }, + "anyOf": { "$ref": "#/definitions/schemaArray" }, + "oneOf": { "$ref": "#/definitions/schemaArray" }, + "not": { "$ref": "#" } + }, + "dependencies": { + "exclusiveMaximum": [ "maximum" ], + "exclusiveMinimum": [ "minimum" ] + }, + "default": {} +} diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/writer.go b/vendor/github.com/googleapis/gnostic/jsonschema/writer.go new file mode 100644 index 000000000..340dc5f93 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/writer.go @@ -0,0 +1,369 @@ +// Copyright 2017 Google LLC. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package jsonschema + +import ( + "fmt" + + "gopkg.in/yaml.v3" +) + +const indentation = " " + +func renderMappingNode(node *yaml.Node, indent string) (result string) { + result = "{\n" + innerIndent := indent + indentation + for i := 0; i < len(node.Content); i += 2 { + // first print the key + key := node.Content[i].Value + result += fmt.Sprintf("%s\"%+v\": ", innerIndent, key) + // then the value + value := node.Content[i+1] + switch value.Kind { + case yaml.ScalarNode: + result += "\"" + value.Value + "\"" + case yaml.MappingNode: + result += renderMappingNode(value, innerIndent) + case yaml.SequenceNode: + result += renderSequenceNode(value, innerIndent) + default: + result += fmt.Sprintf("???MapItem(Key:%+v, Value:%T)", value, value) + } + if i < len(node.Content)-2 { + result += "," + } + result += "\n" + } + + result += indent + "}" + return result +} + +func renderSequenceNode(node *yaml.Node, indent string) (result string) { + result = "[\n" + innerIndent := indent + indentation + for i := 0; i < len(node.Content); i++ { + item := node.Content[i] + switch item.Kind { + case yaml.ScalarNode: + result += innerIndent + "\"" + item.Value + "\"" + case yaml.MappingNode: + result += innerIndent + renderMappingNode(item, innerIndent) + "" + default: + result += innerIndent + fmt.Sprintf("???ArrayItem(%+v)", item) + } + if i < len(node.Content)-1 { + result += "," + } + result += "\n" + } + result += indent + "]" + return result +} + +func renderStringArray(array []string, indent string) (result string) { + result = "[\n" + innerIndent := indent + indentation + for i, item := range array { + result += innerIndent + "\"" + item + "\"" + if i < len(array)-1 { + result += "," + } + result += "\n" + } + result += indent + "]" + return result +} + +// Render renders a yaml.Node as JSON +func Render(node *yaml.Node) string { + if node.Kind == yaml.DocumentNode { + if len(node.Content) == 1 { + return Render(node.Content[0]) + } + } else if node.Kind == yaml.MappingNode { + return renderMappingNode(node, "") + "\n" + } else if node.Kind == yaml.SequenceNode { + return renderSequenceNode(node, "") + "\n" + } + return "" +} + +func (object *SchemaNumber) nodeValue() *yaml.Node { + if object.Integer != nil { + return nodeForInt64(*object.Integer) + } else if object.Float != nil { + return nodeForFloat64(*object.Float) + } else { + return nil + } +} + +func (object *SchemaOrBoolean) nodeValue() *yaml.Node { + if object.Schema != nil { + return object.Schema.nodeValue() + } else if object.Boolean != nil { + return nodeForBoolean(*object.Boolean) + } else { + return nil + } +} + +func nodeForStringArray(array []string) *yaml.Node { + content := make([]*yaml.Node, 0) + for _, item := range array { + content = append(content, nodeForString(item)) + } + return nodeForSequence(content) +} + +func nodeForSchemaArray(array []*Schema) *yaml.Node { + content := make([]*yaml.Node, 0) + for _, item := range array { + content = append(content, item.nodeValue()) + } + return nodeForSequence(content) +} + +func (object *StringOrStringArray) nodeValue() *yaml.Node { + if object.String != nil { + return nodeForString(*object.String) + } else if object.StringArray != nil { + return nodeForStringArray(*(object.StringArray)) + } else { + return nil + } +} + +func (object *SchemaOrStringArray) nodeValue() *yaml.Node { + if object.Schema != nil { + return object.Schema.nodeValue() + } else if object.StringArray != nil { + return nodeForStringArray(*(object.StringArray)) + } else { + return nil + } +} + +func (object *SchemaOrSchemaArray) nodeValue() *yaml.Node { + if object.Schema != nil { + return object.Schema.nodeValue() + } else if object.SchemaArray != nil { + return nodeForSchemaArray(*(object.SchemaArray)) + } else { + return nil + } +} + +func (object *SchemaEnumValue) nodeValue() *yaml.Node { + if object.String != nil { + return nodeForString(*object.String) + } else if object.Bool != nil { + return nodeForBoolean(*object.Bool) + } else { + return nil + } +} + +func nodeForNamedSchemaArray(array *[]*NamedSchema) *yaml.Node { + content := make([]*yaml.Node, 0) + for _, pair := range *(array) { + content = appendPair(content, pair.Name, pair.Value.nodeValue()) + } + return nodeForMapping(content) +} + +func nodeForNamedSchemaOrStringArray(array *[]*NamedSchemaOrStringArray) *yaml.Node { + content := make([]*yaml.Node, 0) + for _, pair := range *(array) { + content = appendPair(content, pair.Name, pair.Value.nodeValue()) + } + return nodeForMapping(content) +} + +func nodeForSchemaEnumArray(array *[]SchemaEnumValue) *yaml.Node { + content := make([]*yaml.Node, 0) + for _, item := range *array { + content = append(content, item.nodeValue()) + } + return nodeForSequence(content) +} + +func nodeForMapping(content []*yaml.Node) *yaml.Node { + return &yaml.Node{ + Kind: yaml.MappingNode, + Content: content, + } +} + +func nodeForSequence(content []*yaml.Node) *yaml.Node { + return &yaml.Node{ + Kind: yaml.SequenceNode, + Content: content, + } +} + +func nodeForString(value string) *yaml.Node { + return &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!str", + Value: value, + } +} + +func nodeForBoolean(value bool) *yaml.Node { + return &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!bool", + Value: fmt.Sprintf("%t", value), + } +} + +func nodeForInt64(value int64) *yaml.Node { + return &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!int", + Value: fmt.Sprintf("%d", value), + } +} + +func nodeForFloat64(value float64) *yaml.Node { + return &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!float", + Value: fmt.Sprintf("%f", value), + } +} + +func appendPair(nodes []*yaml.Node, name string, value *yaml.Node) []*yaml.Node { + nodes = append(nodes, nodeForString(name)) + nodes = append(nodes, value) + return nodes +} + +func (schema *Schema) nodeValue() *yaml.Node { + n := &yaml.Node{Kind: yaml.MappingNode} + content := make([]*yaml.Node, 0) + if schema.Title != nil { + content = appendPair(content, "title", nodeForString(*schema.Title)) + } + if schema.ID != nil { + content = appendPair(content, "id", nodeForString(*schema.ID)) + } + if schema.Schema != nil { + content = appendPair(content, "$schema", nodeForString(*schema.Schema)) + } + if schema.Type != nil { + content = appendPair(content, "type", schema.Type.nodeValue()) + } + if schema.Items != nil { + content = appendPair(content, "items", schema.Items.nodeValue()) + } + if schema.Description != nil { + content = appendPair(content, "description", nodeForString(*schema.Description)) + } + if schema.Required != nil { + content = appendPair(content, "required", nodeForStringArray(*schema.Required)) + } + if schema.AdditionalProperties != nil { + content = appendPair(content, "additionalProperties", schema.AdditionalProperties.nodeValue()) + } + if schema.PatternProperties != nil { + content = appendPair(content, "patternProperties", nodeForNamedSchemaArray(schema.PatternProperties)) + } + if schema.Properties != nil { + content = appendPair(content, "properties", nodeForNamedSchemaArray(schema.Properties)) + } + if schema.Dependencies != nil { + content = appendPair(content, "dependencies", nodeForNamedSchemaOrStringArray(schema.Dependencies)) + } + if schema.Ref != nil { + content = appendPair(content, "$ref", nodeForString(*schema.Ref)) + } + if schema.MultipleOf != nil { + content = appendPair(content, "multipleOf", schema.MultipleOf.nodeValue()) + } + if schema.Maximum != nil { + content = appendPair(content, "maximum", schema.Maximum.nodeValue()) + } + if schema.ExclusiveMaximum != nil { + content = appendPair(content, "exclusiveMaximum", nodeForBoolean(*schema.ExclusiveMaximum)) + } + if schema.Minimum != nil { + content = appendPair(content, "minimum", schema.Minimum.nodeValue()) + } + if schema.ExclusiveMinimum != nil { + content = appendPair(content, "exclusiveMinimum", nodeForBoolean(*schema.ExclusiveMinimum)) + } + if schema.MaxLength != nil { + content = appendPair(content, "maxLength", nodeForInt64(*schema.MaxLength)) + } + if schema.MinLength != nil { + content = appendPair(content, "minLength", nodeForInt64(*schema.MinLength)) + } + if schema.Pattern != nil { + content = appendPair(content, "pattern", nodeForString(*schema.Pattern)) + } + if schema.AdditionalItems != nil { + content = appendPair(content, "additionalItems", schema.AdditionalItems.nodeValue()) + } + if schema.MaxItems != nil { + content = appendPair(content, "maxItems", nodeForInt64(*schema.MaxItems)) + } + if schema.MinItems != nil { + content = appendPair(content, "minItems", nodeForInt64(*schema.MinItems)) + } + if schema.UniqueItems != nil { + content = appendPair(content, "uniqueItems", nodeForBoolean(*schema.UniqueItems)) + } + if schema.MaxProperties != nil { + content = appendPair(content, "maxProperties", nodeForInt64(*schema.MaxProperties)) + } + if schema.MinProperties != nil { + content = appendPair(content, "minProperties", nodeForInt64(*schema.MinProperties)) + } + if schema.Enumeration != nil { + content = appendPair(content, "enum", nodeForSchemaEnumArray(schema.Enumeration)) + } + if schema.AllOf != nil { + content = appendPair(content, "allOf", nodeForSchemaArray(*schema.AllOf)) + } + if schema.AnyOf != nil { + content = appendPair(content, "anyOf", nodeForSchemaArray(*schema.AnyOf)) + } + if schema.OneOf != nil { + content = appendPair(content, "oneOf", nodeForSchemaArray(*schema.OneOf)) + } + if schema.Not != nil { + content = appendPair(content, "not", schema.Not.nodeValue()) + } + if schema.Definitions != nil { + content = appendPair(content, "definitions", nodeForNamedSchemaArray(schema.Definitions)) + } + if schema.Default != nil { + // m = append(m, yaml.MapItem{Key: "default", Value: *schema.Default}) + } + if schema.Format != nil { + content = appendPair(content, "format", nodeForString(*schema.Format)) + } + n.Content = content + return n +} + +// JSONString returns a json representation of a schema. +func (schema *Schema) JSONString() string { + node := schema.nodeValue() + return Render(node) +} diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.go b/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.go index 4fd44c45e..af6c0eee0 100644 --- a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.go +++ b/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.go @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. All Rights Reserved. +// Copyright 2020 Google LLC. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -19,7 +19,7 @@ package openapi_v2 import ( "fmt" "github.com/googleapis/gnostic/compiler" - "gopkg.in/yaml.v2" + "gopkg.in/yaml.v3" "regexp" "strings" ) @@ -30,7 +30,7 @@ func Version() string { } // NewAdditionalPropertiesItem creates an object of type AdditionalPropertiesItem if possible, returning an error if not. -func NewAdditionalPropertiesItem(in interface{}, context *compiler.Context) (*AdditionalPropertiesItem, error) { +func NewAdditionalPropertiesItem(in *yaml.Node, context *compiler.Context) (*AdditionalPropertiesItem, error) { errors := make([]error, 0) x := &AdditionalPropertiesItem{} matched := false @@ -49,9 +49,10 @@ func NewAdditionalPropertiesItem(in interface{}, context *compiler.Context) (*Ad } } // bool boolean = 2; - boolValue, ok := in.(bool) + boolValue, ok := compiler.BoolForScalarNode(in) if ok { x.Oneof = &AdditionalPropertiesItem_Boolean{Boolean: boolValue} + matched = true } if matched { // since the oneof matched one of its possibilities, discard any matching errors @@ -61,16 +62,16 @@ func NewAdditionalPropertiesItem(in interface{}, context *compiler.Context) (*Ad } // NewAny creates an object of type Any if possible, returning an error if not. -func NewAny(in interface{}, context *compiler.Context) (*Any, error) { +func NewAny(in *yaml.Node, context *compiler.Context) (*Any, error) { errors := make([]error, 0) x := &Any{} - bytes, _ := yaml.Marshal(in) + bytes := compiler.Marshal(in) x.Yaml = string(bytes) return x, compiler.NewErrorGroupOrNil(errors) } // NewApiKeySecurity creates an object of type ApiKeySecurity if possible, returning an error if not. -func NewApiKeySecurity(in interface{}, context *compiler.Context) (*ApiKeySecurity, error) { +func NewApiKeySecurity(in *yaml.Node, context *compiler.Context) (*ApiKeySecurity, error) { errors := make([]error, 0) x := &ApiKeySecurity{} m, ok := compiler.UnpackMap(in) @@ -94,68 +95,68 @@ func NewApiKeySecurity(in interface{}, context *compiler.Context) (*ApiKeySecuri // string type = 1; v1 := compiler.MapValueForKey(m, "type") if v1 != nil { - x.Type, ok = v1.(string) + x.Type, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [apiKey] if ok && !compiler.StringArrayContainsValue([]string{"apiKey"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string name = 2; v2 := compiler.MapValueForKey(m, "name") if v2 != nil { - x.Name, ok = v2.(string) + x.Name, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string in = 3; v3 := compiler.MapValueForKey(m, "in") if v3 != nil { - x.In, ok = v3.(string) + x.In, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [header query] if ok && !compiler.StringArrayContainsValue([]string{"header", "query"}, x.In) { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 4; v4 := compiler.MapValueForKey(m, "description") if v4 != nil { - x.Description, ok = v4.(string) + x.Description, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 5; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -175,7 +176,7 @@ func NewApiKeySecurity(in interface{}, context *compiler.Context) (*ApiKeySecuri } // NewBasicAuthenticationSecurity creates an object of type BasicAuthenticationSecurity if possible, returning an error if not. -func NewBasicAuthenticationSecurity(in interface{}, context *compiler.Context) (*BasicAuthenticationSecurity, error) { +func NewBasicAuthenticationSecurity(in *yaml.Node, context *compiler.Context) (*BasicAuthenticationSecurity, error) { errors := make([]error, 0) x := &BasicAuthenticationSecurity{} m, ok := compiler.UnpackMap(in) @@ -199,44 +200,44 @@ func NewBasicAuthenticationSecurity(in interface{}, context *compiler.Context) ( // string type = 1; v1 := compiler.MapValueForKey(m, "type") if v1 != nil { - x.Type, ok = v1.(string) + x.Type, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [basic] if ok && !compiler.StringArrayContainsValue([]string{"basic"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 2; v2 := compiler.MapValueForKey(m, "description") if v2 != nil { - x.Description, ok = v2.(string) + x.Description, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 3; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -256,7 +257,7 @@ func NewBasicAuthenticationSecurity(in interface{}, context *compiler.Context) ( } // NewBodyParameter creates an object of type BodyParameter if possible, returning an error if not. -func NewBodyParameter(in interface{}, context *compiler.Context) (*BodyParameter, error) { +func NewBodyParameter(in *yaml.Node, context *compiler.Context) (*BodyParameter, error) { errors := make([]error, 0) x := &BodyParameter{} m, ok := compiler.UnpackMap(in) @@ -280,42 +281,42 @@ func NewBodyParameter(in interface{}, context *compiler.Context) (*BodyParameter // string description = 1; v1 := compiler.MapValueForKey(m, "description") if v1 != nil { - x.Description, ok = v1.(string) + x.Description, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string name = 2; v2 := compiler.MapValueForKey(m, "name") if v2 != nil { - x.Name, ok = v2.(string) + x.Name, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string in = 3; v3 := compiler.MapValueForKey(m, "in") if v3 != nil { - x.In, ok = v3.(string) + x.In, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [body] if ok && !compiler.StringArrayContainsValue([]string{"body"}, x.In) { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } // bool required = 4; v4 := compiler.MapValueForKey(m, "required") if v4 != nil { - x.Required, ok = v4.(bool) + x.Required, ok = compiler.BoolForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for required: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } @@ -331,20 +332,20 @@ func NewBodyParameter(in interface{}, context *compiler.Context) (*BodyParameter // repeated NamedAny vendor_extension = 6; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -364,7 +365,7 @@ func NewBodyParameter(in interface{}, context *compiler.Context) (*BodyParameter } // NewContact creates an object of type Contact if possible, returning an error if not. -func NewContact(in interface{}, context *compiler.Context) (*Contact, error) { +func NewContact(in *yaml.Node, context *compiler.Context) (*Contact, error) { errors := make([]error, 0) x := &Contact{} m, ok := compiler.UnpackMap(in) @@ -382,47 +383,47 @@ func NewContact(in interface{}, context *compiler.Context) (*Contact, error) { // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string url = 2; v2 := compiler.MapValueForKey(m, "url") if v2 != nil { - x.Url, ok = v2.(string) + x.Url, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for url: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for url: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string email = 3; v3 := compiler.MapValueForKey(m, "email") if v3 != nil { - x.Email, ok = v3.(string) + x.Email, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for email: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for email: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 4; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -442,7 +443,7 @@ func NewContact(in interface{}, context *compiler.Context) (*Contact, error) { } // NewDefault creates an object of type Default if possible, returning an error if not. -func NewDefault(in interface{}, context *compiler.Context) (*Default, error) { +func NewDefault(in *yaml.Node, context *compiler.Context) (*Default, error) { errors := make([]error, 0) x := &Default{} m, ok := compiler.UnpackMap(in) @@ -453,19 +454,19 @@ func NewDefault(in interface{}, context *compiler.Context) (*Default, error) { // repeated NamedAny additional_properties = 1; // MAP: Any x.AdditionalProperties = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -484,7 +485,7 @@ func NewDefault(in interface{}, context *compiler.Context) (*Default, error) { } // NewDefinitions creates an object of type Definitions if possible, returning an error if not. -func NewDefinitions(in interface{}, context *compiler.Context) (*Definitions, error) { +func NewDefinitions(in *yaml.Node, context *compiler.Context) (*Definitions, error) { errors := make([]error, 0) x := &Definitions{} m, ok := compiler.UnpackMap(in) @@ -495,10 +496,10 @@ func NewDefinitions(in interface{}, context *compiler.Context) (*Definitions, er // repeated NamedSchema additional_properties = 1; // MAP: Schema x.AdditionalProperties = make([]*NamedSchema, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] pair := &NamedSchema{} pair.Name = k var err error @@ -514,7 +515,7 @@ func NewDefinitions(in interface{}, context *compiler.Context) (*Definitions, er } // NewDocument creates an object of type Document if possible, returning an error if not. -func NewDocument(in interface{}, context *compiler.Context) (*Document, error) { +func NewDocument(in *yaml.Node, context *compiler.Context) (*Document, error) { errors := make([]error, 0) x := &Document{} m, ok := compiler.UnpackMap(in) @@ -538,15 +539,15 @@ func NewDocument(in interface{}, context *compiler.Context) (*Document, error) { // string swagger = 1; v1 := compiler.MapValueForKey(m, "swagger") if v1 != nil { - x.Swagger, ok = v1.(string) + x.Swagger, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for swagger: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for swagger: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [2.0] if ok && !compiler.StringArrayContainsValue([]string{"2.0"}, x.Swagger) { - message := fmt.Sprintf("has unexpected value for swagger: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for swagger: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -562,57 +563,57 @@ func NewDocument(in interface{}, context *compiler.Context) (*Document, error) { // string host = 3; v3 := compiler.MapValueForKey(m, "host") if v3 != nil { - x.Host, ok = v3.(string) + x.Host, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for host: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for host: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } // string base_path = 4; v4 := compiler.MapValueForKey(m, "basePath") if v4 != nil { - x.BasePath, ok = v4.(string) + x.BasePath, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for basePath: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for basePath: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } // repeated string schemes = 5; v5 := compiler.MapValueForKey(m, "schemes") if v5 != nil { - v, ok := v5.([]interface{}) + v, ok := compiler.SequenceNodeForNode(v5) if ok { - x.Schemes = compiler.ConvertInterfaceArrayToStringArray(v) + x.Schemes = compiler.StringArrayForSequenceNode(v) } else { - message := fmt.Sprintf("has unexpected value for schemes: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for schemes: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [http https ws wss] if ok && !compiler.StringArrayContainsValues([]string{"http", "https", "ws", "wss"}, x.Schemes) { - message := fmt.Sprintf("has unexpected value for schemes: %+v", v5) + message := fmt.Sprintf("has unexpected value for schemes: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // repeated string consumes = 6; v6 := compiler.MapValueForKey(m, "consumes") if v6 != nil { - v, ok := v6.([]interface{}) + v, ok := compiler.SequenceNodeForNode(v6) if ok { - x.Consumes = compiler.ConvertInterfaceArrayToStringArray(v) + x.Consumes = compiler.StringArrayForSequenceNode(v) } else { - message := fmt.Sprintf("has unexpected value for consumes: %+v (%T)", v6, v6) + message := fmt.Sprintf("has unexpected value for consumes: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } } // repeated string produces = 7; v7 := compiler.MapValueForKey(m, "produces") if v7 != nil { - v, ok := v7.([]interface{}) + v, ok := compiler.SequenceNodeForNode(v7) if ok { - x.Produces = compiler.ConvertInterfaceArrayToStringArray(v) + x.Produces = compiler.StringArrayForSequenceNode(v) } else { - message := fmt.Sprintf("has unexpected value for produces: %+v (%T)", v7, v7) + message := fmt.Sprintf("has unexpected value for produces: %s", compiler.Display(v7)) errors = append(errors, compiler.NewError(context, message)) } } @@ -657,9 +658,9 @@ func NewDocument(in interface{}, context *compiler.Context) (*Document, error) { if v12 != nil { // repeated SecurityRequirement x.Security = make([]*SecurityRequirement, 0) - a, ok := v12.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v12) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewSecurityRequirement(item, compiler.NewContext("security", context)) if err != nil { errors = append(errors, err) @@ -682,9 +683,9 @@ func NewDocument(in interface{}, context *compiler.Context) (*Document, error) { if v14 != nil { // repeated Tag x.Tags = make([]*Tag, 0) - a, ok := v14.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v14) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewTag(item, compiler.NewContext("tags", context)) if err != nil { errors = append(errors, err) @@ -705,20 +706,20 @@ func NewDocument(in interface{}, context *compiler.Context) (*Document, error) { // repeated NamedAny vendor_extension = 16; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -738,7 +739,7 @@ func NewDocument(in interface{}, context *compiler.Context) (*Document, error) { } // NewExamples creates an object of type Examples if possible, returning an error if not. -func NewExamples(in interface{}, context *compiler.Context) (*Examples, error) { +func NewExamples(in *yaml.Node, context *compiler.Context) (*Examples, error) { errors := make([]error, 0) x := &Examples{} m, ok := compiler.UnpackMap(in) @@ -749,19 +750,19 @@ func NewExamples(in interface{}, context *compiler.Context) (*Examples, error) { // repeated NamedAny additional_properties = 1; // MAP: Any x.AdditionalProperties = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -780,7 +781,7 @@ func NewExamples(in interface{}, context *compiler.Context) (*Examples, error) { } // NewExternalDocs creates an object of type ExternalDocs if possible, returning an error if not. -func NewExternalDocs(in interface{}, context *compiler.Context) (*ExternalDocs, error) { +func NewExternalDocs(in *yaml.Node, context *compiler.Context) (*ExternalDocs, error) { errors := make([]error, 0) x := &ExternalDocs{} m, ok := compiler.UnpackMap(in) @@ -804,38 +805,38 @@ func NewExternalDocs(in interface{}, context *compiler.Context) (*ExternalDocs, // string description = 1; v1 := compiler.MapValueForKey(m, "description") if v1 != nil { - x.Description, ok = v1.(string) + x.Description, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string url = 2; v2 := compiler.MapValueForKey(m, "url") if v2 != nil { - x.Url, ok = v2.(string) + x.Url, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for url: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for url: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 3; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -855,7 +856,7 @@ func NewExternalDocs(in interface{}, context *compiler.Context) (*ExternalDocs, } // NewFileSchema creates an object of type FileSchema if possible, returning an error if not. -func NewFileSchema(in interface{}, context *compiler.Context) (*FileSchema, error) { +func NewFileSchema(in *yaml.Node, context *compiler.Context) (*FileSchema, error) { errors := make([]error, 0) x := &FileSchema{} m, ok := compiler.UnpackMap(in) @@ -879,27 +880,27 @@ func NewFileSchema(in interface{}, context *compiler.Context) (*FileSchema, erro // string format = 1; v1 := compiler.MapValueForKey(m, "format") if v1 != nil { - x.Format, ok = v1.(string) + x.Format, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for format: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string title = 2; v2 := compiler.MapValueForKey(m, "title") if v2 != nil { - x.Title, ok = v2.(string) + x.Title, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for title: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for title: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 3; v3 := compiler.MapValueForKey(m, "description") if v3 != nil { - x.Description, ok = v3.(string) + x.Description, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } @@ -915,35 +916,35 @@ func NewFileSchema(in interface{}, context *compiler.Context) (*FileSchema, erro // repeated string required = 5; v5 := compiler.MapValueForKey(m, "required") if v5 != nil { - v, ok := v5.([]interface{}) + v, ok := compiler.SequenceNodeForNode(v5) if ok { - x.Required = compiler.ConvertInterfaceArrayToStringArray(v) + x.Required = compiler.StringArrayForSequenceNode(v) } else { - message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for required: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // string type = 6; v6 := compiler.MapValueForKey(m, "type") if v6 != nil { - x.Type, ok = v6.(string) + x.Type, ok = compiler.StringForScalarNode(v6) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [file] if ok && !compiler.StringArrayContainsValue([]string{"file"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } } // bool read_only = 7; v7 := compiler.MapValueForKey(m, "readOnly") if v7 != nil { - x.ReadOnly, ok = v7.(bool) + x.ReadOnly, ok = compiler.BoolForScalarNode(v7) if !ok { - message := fmt.Sprintf("has unexpected value for readOnly: %+v (%T)", v7, v7) + message := fmt.Sprintf("has unexpected value for readOnly: %s", compiler.Display(v7)) errors = append(errors, compiler.NewError(context, message)) } } @@ -968,20 +969,20 @@ func NewFileSchema(in interface{}, context *compiler.Context) (*FileSchema, erro // repeated NamedAny vendor_extension = 10; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -1001,7 +1002,7 @@ func NewFileSchema(in interface{}, context *compiler.Context) (*FileSchema, erro } // NewFormDataParameterSubSchema creates an object of type FormDataParameterSubSchema if possible, returning an error if not. -func NewFormDataParameterSubSchema(in interface{}, context *compiler.Context) (*FormDataParameterSubSchema, error) { +func NewFormDataParameterSubSchema(in *yaml.Node, context *compiler.Context) (*FormDataParameterSubSchema, error) { errors := make([]error, 0) x := &FormDataParameterSubSchema{} m, ok := compiler.UnpackMap(in) @@ -1019,75 +1020,75 @@ func NewFormDataParameterSubSchema(in interface{}, context *compiler.Context) (* // bool required = 1; v1 := compiler.MapValueForKey(m, "required") if v1 != nil { - x.Required, ok = v1.(bool) + x.Required, ok = compiler.BoolForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for required: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string in = 2; v2 := compiler.MapValueForKey(m, "in") if v2 != nil { - x.In, ok = v2.(string) + x.In, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [formData] if ok && !compiler.StringArrayContainsValue([]string{"formData"}, x.In) { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 3; v3 := compiler.MapValueForKey(m, "description") if v3 != nil { - x.Description, ok = v3.(string) + x.Description, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } // string name = 4; v4 := compiler.MapValueForKey(m, "name") if v4 != nil { - x.Name, ok = v4.(string) + x.Name, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } // bool allow_empty_value = 5; v5 := compiler.MapValueForKey(m, "allowEmptyValue") if v5 != nil { - x.AllowEmptyValue, ok = v5.(bool) + x.AllowEmptyValue, ok = compiler.BoolForScalarNode(v5) if !ok { - message := fmt.Sprintf("has unexpected value for allowEmptyValue: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for allowEmptyValue: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // string type = 6; v6 := compiler.MapValueForKey(m, "type") if v6 != nil { - x.Type, ok = v6.(string) + x.Type, ok = compiler.StringForScalarNode(v6) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [string number boolean integer array file] if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "boolean", "integer", "array", "file"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } } // string format = 7; v7 := compiler.MapValueForKey(m, "format") if v7 != nil { - x.Format, ok = v7.(string) + x.Format, ok = compiler.StringForScalarNode(v7) if !ok { - message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v7, v7) + message := fmt.Sprintf("has unexpected value for format: %s", compiler.Display(v7)) errors = append(errors, compiler.NewError(context, message)) } } @@ -1103,15 +1104,15 @@ func NewFormDataParameterSubSchema(in interface{}, context *compiler.Context) (* // string collection_format = 9; v9 := compiler.MapValueForKey(m, "collectionFormat") if v9 != nil { - x.CollectionFormat, ok = v9.(string) + x.CollectionFormat, ok = compiler.StringForScalarNode(v9) if !ok { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v9, v9) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v9)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [csv ssv tsv pipes multi] if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes", "multi"}, x.CollectionFormat) { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v9, v9) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v9)) errors = append(errors, compiler.NewError(context, message)) } } @@ -1127,126 +1128,102 @@ func NewFormDataParameterSubSchema(in interface{}, context *compiler.Context) (* // float maximum = 11; v11 := compiler.MapValueForKey(m, "maximum") if v11 != nil { - switch v11 := v11.(type) { - case float64: - x.Maximum = v11 - case float32: - x.Maximum = float64(v11) - case uint64: - x.Maximum = float64(v11) - case uint32: - x.Maximum = float64(v11) - case int64: - x.Maximum = float64(v11) - case int32: - x.Maximum = float64(v11) - case int: - x.Maximum = float64(v11) - default: - message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v11, v11) + v, ok := compiler.FloatForScalarNode(v11) + if ok { + x.Maximum = v + } else { + message := fmt.Sprintf("has unexpected value for maximum: %s", compiler.Display(v11)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_maximum = 12; v12 := compiler.MapValueForKey(m, "exclusiveMaximum") if v12 != nil { - x.ExclusiveMaximum, ok = v12.(bool) + x.ExclusiveMaximum, ok = compiler.BoolForScalarNode(v12) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v12, v12) + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %s", compiler.Display(v12)) errors = append(errors, compiler.NewError(context, message)) } } // float minimum = 13; v13 := compiler.MapValueForKey(m, "minimum") if v13 != nil { - switch v13 := v13.(type) { - case float64: - x.Minimum = v13 - case float32: - x.Minimum = float64(v13) - case uint64: - x.Minimum = float64(v13) - case uint32: - x.Minimum = float64(v13) - case int64: - x.Minimum = float64(v13) - case int32: - x.Minimum = float64(v13) - case int: - x.Minimum = float64(v13) - default: - message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v13, v13) + v, ok := compiler.FloatForScalarNode(v13) + if ok { + x.Minimum = v + } else { + message := fmt.Sprintf("has unexpected value for minimum: %s", compiler.Display(v13)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_minimum = 14; v14 := compiler.MapValueForKey(m, "exclusiveMinimum") if v14 != nil { - x.ExclusiveMinimum, ok = v14.(bool) + x.ExclusiveMinimum, ok = compiler.BoolForScalarNode(v14) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v14, v14) + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %s", compiler.Display(v14)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_length = 15; v15 := compiler.MapValueForKey(m, "maxLength") if v15 != nil { - t, ok := v15.(int) + t, ok := compiler.IntForScalarNode(v15) if ok { x.MaxLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v15, v15) + message := fmt.Sprintf("has unexpected value for maxLength: %s", compiler.Display(v15)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_length = 16; v16 := compiler.MapValueForKey(m, "minLength") if v16 != nil { - t, ok := v16.(int) + t, ok := compiler.IntForScalarNode(v16) if ok { x.MinLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v16, v16) + message := fmt.Sprintf("has unexpected value for minLength: %s", compiler.Display(v16)) errors = append(errors, compiler.NewError(context, message)) } } // string pattern = 17; v17 := compiler.MapValueForKey(m, "pattern") if v17 != nil { - x.Pattern, ok = v17.(string) + x.Pattern, ok = compiler.StringForScalarNode(v17) if !ok { - message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v17, v17) + message := fmt.Sprintf("has unexpected value for pattern: %s", compiler.Display(v17)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_items = 18; v18 := compiler.MapValueForKey(m, "maxItems") if v18 != nil { - t, ok := v18.(int) + t, ok := compiler.IntForScalarNode(v18) if ok { x.MaxItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v18, v18) + message := fmt.Sprintf("has unexpected value for maxItems: %s", compiler.Display(v18)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_items = 19; v19 := compiler.MapValueForKey(m, "minItems") if v19 != nil { - t, ok := v19.(int) + t, ok := compiler.IntForScalarNode(v19) if ok { x.MinItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v19, v19) + message := fmt.Sprintf("has unexpected value for minItems: %s", compiler.Display(v19)) errors = append(errors, compiler.NewError(context, message)) } } // bool unique_items = 20; v20 := compiler.MapValueForKey(m, "uniqueItems") if v20 != nil { - x.UniqueItems, ok = v20.(bool) + x.UniqueItems, ok = compiler.BoolForScalarNode(v20) if !ok { - message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v20, v20) + message := fmt.Sprintf("has unexpected value for uniqueItems: %s", compiler.Display(v20)) errors = append(errors, compiler.NewError(context, message)) } } @@ -1255,9 +1232,9 @@ func NewFormDataParameterSubSchema(in interface{}, context *compiler.Context) (* if v21 != nil { // repeated Any x.Enum = make([]*Any, 0) - a, ok := v21.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v21) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewAny(item, compiler.NewContext("enum", context)) if err != nil { errors = append(errors, err) @@ -1269,43 +1246,31 @@ func NewFormDataParameterSubSchema(in interface{}, context *compiler.Context) (* // float multiple_of = 22; v22 := compiler.MapValueForKey(m, "multipleOf") if v22 != nil { - switch v22 := v22.(type) { - case float64: - x.MultipleOf = v22 - case float32: - x.MultipleOf = float64(v22) - case uint64: - x.MultipleOf = float64(v22) - case uint32: - x.MultipleOf = float64(v22) - case int64: - x.MultipleOf = float64(v22) - case int32: - x.MultipleOf = float64(v22) - case int: - x.MultipleOf = float64(v22) - default: - message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v22, v22) + v, ok := compiler.FloatForScalarNode(v22) + if ok { + x.MultipleOf = v + } else { + message := fmt.Sprintf("has unexpected value for multipleOf: %s", compiler.Display(v22)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 23; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -1325,7 +1290,7 @@ func NewFormDataParameterSubSchema(in interface{}, context *compiler.Context) (* } // NewHeader creates an object of type Header if possible, returning an error if not. -func NewHeader(in interface{}, context *compiler.Context) (*Header, error) { +func NewHeader(in *yaml.Node, context *compiler.Context) (*Header, error) { errors := make([]error, 0) x := &Header{} m, ok := compiler.UnpackMap(in) @@ -1349,24 +1314,24 @@ func NewHeader(in interface{}, context *compiler.Context) (*Header, error) { // string type = 1; v1 := compiler.MapValueForKey(m, "type") if v1 != nil { - x.Type, ok = v1.(string) + x.Type, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [string number integer boolean array] if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "integer", "boolean", "array"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string format = 2; v2 := compiler.MapValueForKey(m, "format") if v2 != nil { - x.Format, ok = v2.(string) + x.Format, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for format: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } @@ -1382,15 +1347,15 @@ func NewHeader(in interface{}, context *compiler.Context) (*Header, error) { // string collection_format = 4; v4 := compiler.MapValueForKey(m, "collectionFormat") if v4 != nil { - x.CollectionFormat, ok = v4.(string) + x.CollectionFormat, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [csv ssv tsv pipes] if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes"}, x.CollectionFormat) { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } @@ -1406,126 +1371,102 @@ func NewHeader(in interface{}, context *compiler.Context) (*Header, error) { // float maximum = 6; v6 := compiler.MapValueForKey(m, "maximum") if v6 != nil { - switch v6 := v6.(type) { - case float64: - x.Maximum = v6 - case float32: - x.Maximum = float64(v6) - case uint64: - x.Maximum = float64(v6) - case uint32: - x.Maximum = float64(v6) - case int64: - x.Maximum = float64(v6) - case int32: - x.Maximum = float64(v6) - case int: - x.Maximum = float64(v6) - default: - message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v6, v6) + v, ok := compiler.FloatForScalarNode(v6) + if ok { + x.Maximum = v + } else { + message := fmt.Sprintf("has unexpected value for maximum: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_maximum = 7; v7 := compiler.MapValueForKey(m, "exclusiveMaximum") if v7 != nil { - x.ExclusiveMaximum, ok = v7.(bool) + x.ExclusiveMaximum, ok = compiler.BoolForScalarNode(v7) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v7, v7) + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %s", compiler.Display(v7)) errors = append(errors, compiler.NewError(context, message)) } } // float minimum = 8; v8 := compiler.MapValueForKey(m, "minimum") if v8 != nil { - switch v8 := v8.(type) { - case float64: - x.Minimum = v8 - case float32: - x.Minimum = float64(v8) - case uint64: - x.Minimum = float64(v8) - case uint32: - x.Minimum = float64(v8) - case int64: - x.Minimum = float64(v8) - case int32: - x.Minimum = float64(v8) - case int: - x.Minimum = float64(v8) - default: - message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v8, v8) + v, ok := compiler.FloatForScalarNode(v8) + if ok { + x.Minimum = v + } else { + message := fmt.Sprintf("has unexpected value for minimum: %s", compiler.Display(v8)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_minimum = 9; v9 := compiler.MapValueForKey(m, "exclusiveMinimum") if v9 != nil { - x.ExclusiveMinimum, ok = v9.(bool) + x.ExclusiveMinimum, ok = compiler.BoolForScalarNode(v9) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v9, v9) + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %s", compiler.Display(v9)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_length = 10; v10 := compiler.MapValueForKey(m, "maxLength") if v10 != nil { - t, ok := v10.(int) + t, ok := compiler.IntForScalarNode(v10) if ok { x.MaxLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v10, v10) + message := fmt.Sprintf("has unexpected value for maxLength: %s", compiler.Display(v10)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_length = 11; v11 := compiler.MapValueForKey(m, "minLength") if v11 != nil { - t, ok := v11.(int) + t, ok := compiler.IntForScalarNode(v11) if ok { x.MinLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v11, v11) + message := fmt.Sprintf("has unexpected value for minLength: %s", compiler.Display(v11)) errors = append(errors, compiler.NewError(context, message)) } } // string pattern = 12; v12 := compiler.MapValueForKey(m, "pattern") if v12 != nil { - x.Pattern, ok = v12.(string) + x.Pattern, ok = compiler.StringForScalarNode(v12) if !ok { - message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v12, v12) + message := fmt.Sprintf("has unexpected value for pattern: %s", compiler.Display(v12)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_items = 13; v13 := compiler.MapValueForKey(m, "maxItems") if v13 != nil { - t, ok := v13.(int) + t, ok := compiler.IntForScalarNode(v13) if ok { x.MaxItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v13, v13) + message := fmt.Sprintf("has unexpected value for maxItems: %s", compiler.Display(v13)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_items = 14; v14 := compiler.MapValueForKey(m, "minItems") if v14 != nil { - t, ok := v14.(int) + t, ok := compiler.IntForScalarNode(v14) if ok { x.MinItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v14, v14) + message := fmt.Sprintf("has unexpected value for minItems: %s", compiler.Display(v14)) errors = append(errors, compiler.NewError(context, message)) } } // bool unique_items = 15; v15 := compiler.MapValueForKey(m, "uniqueItems") if v15 != nil { - x.UniqueItems, ok = v15.(bool) + x.UniqueItems, ok = compiler.BoolForScalarNode(v15) if !ok { - message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v15, v15) + message := fmt.Sprintf("has unexpected value for uniqueItems: %s", compiler.Display(v15)) errors = append(errors, compiler.NewError(context, message)) } } @@ -1534,9 +1475,9 @@ func NewHeader(in interface{}, context *compiler.Context) (*Header, error) { if v16 != nil { // repeated Any x.Enum = make([]*Any, 0) - a, ok := v16.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v16) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewAny(item, compiler.NewContext("enum", context)) if err != nil { errors = append(errors, err) @@ -1548,52 +1489,40 @@ func NewHeader(in interface{}, context *compiler.Context) (*Header, error) { // float multiple_of = 17; v17 := compiler.MapValueForKey(m, "multipleOf") if v17 != nil { - switch v17 := v17.(type) { - case float64: - x.MultipleOf = v17 - case float32: - x.MultipleOf = float64(v17) - case uint64: - x.MultipleOf = float64(v17) - case uint32: - x.MultipleOf = float64(v17) - case int64: - x.MultipleOf = float64(v17) - case int32: - x.MultipleOf = float64(v17) - case int: - x.MultipleOf = float64(v17) - default: - message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v17, v17) + v, ok := compiler.FloatForScalarNode(v17) + if ok { + x.MultipleOf = v + } else { + message := fmt.Sprintf("has unexpected value for multipleOf: %s", compiler.Display(v17)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 18; v18 := compiler.MapValueForKey(m, "description") if v18 != nil { - x.Description, ok = v18.(string) + x.Description, ok = compiler.StringForScalarNode(v18) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v18, v18) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v18)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 19; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -1613,7 +1542,7 @@ func NewHeader(in interface{}, context *compiler.Context) (*Header, error) { } // NewHeaderParameterSubSchema creates an object of type HeaderParameterSubSchema if possible, returning an error if not. -func NewHeaderParameterSubSchema(in interface{}, context *compiler.Context) (*HeaderParameterSubSchema, error) { +func NewHeaderParameterSubSchema(in *yaml.Node, context *compiler.Context) (*HeaderParameterSubSchema, error) { errors := make([]error, 0) x := &HeaderParameterSubSchema{} m, ok := compiler.UnpackMap(in) @@ -1631,66 +1560,66 @@ func NewHeaderParameterSubSchema(in interface{}, context *compiler.Context) (*He // bool required = 1; v1 := compiler.MapValueForKey(m, "required") if v1 != nil { - x.Required, ok = v1.(bool) + x.Required, ok = compiler.BoolForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for required: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string in = 2; v2 := compiler.MapValueForKey(m, "in") if v2 != nil { - x.In, ok = v2.(string) + x.In, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [header] if ok && !compiler.StringArrayContainsValue([]string{"header"}, x.In) { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 3; v3 := compiler.MapValueForKey(m, "description") if v3 != nil { - x.Description, ok = v3.(string) + x.Description, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } // string name = 4; v4 := compiler.MapValueForKey(m, "name") if v4 != nil { - x.Name, ok = v4.(string) + x.Name, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } // string type = 5; v5 := compiler.MapValueForKey(m, "type") if v5 != nil { - x.Type, ok = v5.(string) + x.Type, ok = compiler.StringForScalarNode(v5) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [string number boolean integer array] if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "boolean", "integer", "array"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // string format = 6; v6 := compiler.MapValueForKey(m, "format") if v6 != nil { - x.Format, ok = v6.(string) + x.Format, ok = compiler.StringForScalarNode(v6) if !ok { - message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v6, v6) + message := fmt.Sprintf("has unexpected value for format: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } } @@ -1706,15 +1635,15 @@ func NewHeaderParameterSubSchema(in interface{}, context *compiler.Context) (*He // string collection_format = 8; v8 := compiler.MapValueForKey(m, "collectionFormat") if v8 != nil { - x.CollectionFormat, ok = v8.(string) + x.CollectionFormat, ok = compiler.StringForScalarNode(v8) if !ok { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v8, v8) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v8)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [csv ssv tsv pipes] if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes"}, x.CollectionFormat) { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v8, v8) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v8)) errors = append(errors, compiler.NewError(context, message)) } } @@ -1730,126 +1659,102 @@ func NewHeaderParameterSubSchema(in interface{}, context *compiler.Context) (*He // float maximum = 10; v10 := compiler.MapValueForKey(m, "maximum") if v10 != nil { - switch v10 := v10.(type) { - case float64: - x.Maximum = v10 - case float32: - x.Maximum = float64(v10) - case uint64: - x.Maximum = float64(v10) - case uint32: - x.Maximum = float64(v10) - case int64: - x.Maximum = float64(v10) - case int32: - x.Maximum = float64(v10) - case int: - x.Maximum = float64(v10) - default: - message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v10, v10) + v, ok := compiler.FloatForScalarNode(v10) + if ok { + x.Maximum = v + } else { + message := fmt.Sprintf("has unexpected value for maximum: %s", compiler.Display(v10)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_maximum = 11; v11 := compiler.MapValueForKey(m, "exclusiveMaximum") if v11 != nil { - x.ExclusiveMaximum, ok = v11.(bool) + x.ExclusiveMaximum, ok = compiler.BoolForScalarNode(v11) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v11, v11) + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %s", compiler.Display(v11)) errors = append(errors, compiler.NewError(context, message)) } } // float minimum = 12; v12 := compiler.MapValueForKey(m, "minimum") if v12 != nil { - switch v12 := v12.(type) { - case float64: - x.Minimum = v12 - case float32: - x.Minimum = float64(v12) - case uint64: - x.Minimum = float64(v12) - case uint32: - x.Minimum = float64(v12) - case int64: - x.Minimum = float64(v12) - case int32: - x.Minimum = float64(v12) - case int: - x.Minimum = float64(v12) - default: - message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v12, v12) + v, ok := compiler.FloatForScalarNode(v12) + if ok { + x.Minimum = v + } else { + message := fmt.Sprintf("has unexpected value for minimum: %s", compiler.Display(v12)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_minimum = 13; v13 := compiler.MapValueForKey(m, "exclusiveMinimum") if v13 != nil { - x.ExclusiveMinimum, ok = v13.(bool) + x.ExclusiveMinimum, ok = compiler.BoolForScalarNode(v13) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v13, v13) + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %s", compiler.Display(v13)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_length = 14; v14 := compiler.MapValueForKey(m, "maxLength") if v14 != nil { - t, ok := v14.(int) + t, ok := compiler.IntForScalarNode(v14) if ok { x.MaxLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v14, v14) + message := fmt.Sprintf("has unexpected value for maxLength: %s", compiler.Display(v14)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_length = 15; v15 := compiler.MapValueForKey(m, "minLength") if v15 != nil { - t, ok := v15.(int) + t, ok := compiler.IntForScalarNode(v15) if ok { x.MinLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v15, v15) + message := fmt.Sprintf("has unexpected value for minLength: %s", compiler.Display(v15)) errors = append(errors, compiler.NewError(context, message)) } } // string pattern = 16; v16 := compiler.MapValueForKey(m, "pattern") if v16 != nil { - x.Pattern, ok = v16.(string) + x.Pattern, ok = compiler.StringForScalarNode(v16) if !ok { - message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v16, v16) + message := fmt.Sprintf("has unexpected value for pattern: %s", compiler.Display(v16)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_items = 17; v17 := compiler.MapValueForKey(m, "maxItems") if v17 != nil { - t, ok := v17.(int) + t, ok := compiler.IntForScalarNode(v17) if ok { x.MaxItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v17, v17) + message := fmt.Sprintf("has unexpected value for maxItems: %s", compiler.Display(v17)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_items = 18; v18 := compiler.MapValueForKey(m, "minItems") if v18 != nil { - t, ok := v18.(int) + t, ok := compiler.IntForScalarNode(v18) if ok { x.MinItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v18, v18) + message := fmt.Sprintf("has unexpected value for minItems: %s", compiler.Display(v18)) errors = append(errors, compiler.NewError(context, message)) } } // bool unique_items = 19; v19 := compiler.MapValueForKey(m, "uniqueItems") if v19 != nil { - x.UniqueItems, ok = v19.(bool) + x.UniqueItems, ok = compiler.BoolForScalarNode(v19) if !ok { - message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v19, v19) + message := fmt.Sprintf("has unexpected value for uniqueItems: %s", compiler.Display(v19)) errors = append(errors, compiler.NewError(context, message)) } } @@ -1858,9 +1763,9 @@ func NewHeaderParameterSubSchema(in interface{}, context *compiler.Context) (*He if v20 != nil { // repeated Any x.Enum = make([]*Any, 0) - a, ok := v20.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v20) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewAny(item, compiler.NewContext("enum", context)) if err != nil { errors = append(errors, err) @@ -1872,43 +1777,31 @@ func NewHeaderParameterSubSchema(in interface{}, context *compiler.Context) (*He // float multiple_of = 21; v21 := compiler.MapValueForKey(m, "multipleOf") if v21 != nil { - switch v21 := v21.(type) { - case float64: - x.MultipleOf = v21 - case float32: - x.MultipleOf = float64(v21) - case uint64: - x.MultipleOf = float64(v21) - case uint32: - x.MultipleOf = float64(v21) - case int64: - x.MultipleOf = float64(v21) - case int32: - x.MultipleOf = float64(v21) - case int: - x.MultipleOf = float64(v21) - default: - message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v21, v21) + v, ok := compiler.FloatForScalarNode(v21) + if ok { + x.MultipleOf = v + } else { + message := fmt.Sprintf("has unexpected value for multipleOf: %s", compiler.Display(v21)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 22; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -1928,7 +1821,7 @@ func NewHeaderParameterSubSchema(in interface{}, context *compiler.Context) (*He } // NewHeaders creates an object of type Headers if possible, returning an error if not. -func NewHeaders(in interface{}, context *compiler.Context) (*Headers, error) { +func NewHeaders(in *yaml.Node, context *compiler.Context) (*Headers, error) { errors := make([]error, 0) x := &Headers{} m, ok := compiler.UnpackMap(in) @@ -1939,10 +1832,10 @@ func NewHeaders(in interface{}, context *compiler.Context) (*Headers, error) { // repeated NamedHeader additional_properties = 1; // MAP: Header x.AdditionalProperties = make([]*NamedHeader, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] pair := &NamedHeader{} pair.Name = k var err error @@ -1958,7 +1851,7 @@ func NewHeaders(in interface{}, context *compiler.Context) (*Headers, error) { } // NewInfo creates an object of type Info if possible, returning an error if not. -func NewInfo(in interface{}, context *compiler.Context) (*Info, error) { +func NewInfo(in *yaml.Node, context *compiler.Context) (*Info, error) { errors := make([]error, 0) x := &Info{} m, ok := compiler.UnpackMap(in) @@ -1982,36 +1875,36 @@ func NewInfo(in interface{}, context *compiler.Context) (*Info, error) { // string title = 1; v1 := compiler.MapValueForKey(m, "title") if v1 != nil { - x.Title, ok = v1.(string) + x.Title, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for title: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for title: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string version = 2; v2 := compiler.MapValueForKey(m, "version") if v2 != nil { - x.Version, ok = v2.(string) + x.Version, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for version: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for version: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 3; v3 := compiler.MapValueForKey(m, "description") if v3 != nil { - x.Description, ok = v3.(string) + x.Description, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } // string terms_of_service = 4; v4 := compiler.MapValueForKey(m, "termsOfService") if v4 != nil { - x.TermsOfService, ok = v4.(string) + x.TermsOfService, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for termsOfService: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for termsOfService: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2036,20 +1929,20 @@ func NewInfo(in interface{}, context *compiler.Context) (*Info, error) { // repeated NamedAny vendor_extension = 7; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -2069,7 +1962,7 @@ func NewInfo(in interface{}, context *compiler.Context) (*Info, error) { } // NewItemsItem creates an object of type ItemsItem if possible, returning an error if not. -func NewItemsItem(in interface{}, context *compiler.Context) (*ItemsItem, error) { +func NewItemsItem(in *yaml.Node, context *compiler.Context) (*ItemsItem, error) { errors := make([]error, 0) x := &ItemsItem{} m, ok := compiler.UnpackMap(in) @@ -2088,7 +1981,7 @@ func NewItemsItem(in interface{}, context *compiler.Context) (*ItemsItem, error) } // NewJsonReference creates an object of type JsonReference if possible, returning an error if not. -func NewJsonReference(in interface{}, context *compiler.Context) (*JsonReference, error) { +func NewJsonReference(in *yaml.Node, context *compiler.Context) (*JsonReference, error) { errors := make([]error, 0) x := &JsonReference{} m, ok := compiler.UnpackMap(in) @@ -2102,28 +1995,21 @@ func NewJsonReference(in interface{}, context *compiler.Context) (*JsonReference message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) errors = append(errors, compiler.NewError(context, message)) } - allowedKeys := []string{"$ref", "description"} - var allowedPatterns []*regexp.Regexp - invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) - if len(invalidKeys) > 0 { - message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) - errors = append(errors, compiler.NewError(context, message)) - } // string _ref = 1; v1 := compiler.MapValueForKey(m, "$ref") if v1 != nil { - x.XRef, ok = v1.(string) + x.XRef, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for $ref: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for $ref: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 2; v2 := compiler.MapValueForKey(m, "description") if v2 != nil { - x.Description, ok = v2.(string) + x.Description, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2132,7 +2018,7 @@ func NewJsonReference(in interface{}, context *compiler.Context) (*JsonReference } // NewLicense creates an object of type License if possible, returning an error if not. -func NewLicense(in interface{}, context *compiler.Context) (*License, error) { +func NewLicense(in *yaml.Node, context *compiler.Context) (*License, error) { errors := make([]error, 0) x := &License{} m, ok := compiler.UnpackMap(in) @@ -2156,38 +2042,38 @@ func NewLicense(in interface{}, context *compiler.Context) (*License, error) { // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string url = 2; v2 := compiler.MapValueForKey(m, "url") if v2 != nil { - x.Url, ok = v2.(string) + x.Url, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for url: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for url: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 3; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -2207,7 +2093,7 @@ func NewLicense(in interface{}, context *compiler.Context) (*License, error) { } // NewNamedAny creates an object of type NamedAny if possible, returning an error if not. -func NewNamedAny(in interface{}, context *compiler.Context) (*NamedAny, error) { +func NewNamedAny(in *yaml.Node, context *compiler.Context) (*NamedAny, error) { errors := make([]error, 0) x := &NamedAny{} m, ok := compiler.UnpackMap(in) @@ -2225,9 +2111,9 @@ func NewNamedAny(in interface{}, context *compiler.Context) (*NamedAny, error) { // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2245,7 +2131,7 @@ func NewNamedAny(in interface{}, context *compiler.Context) (*NamedAny, error) { } // NewNamedHeader creates an object of type NamedHeader if possible, returning an error if not. -func NewNamedHeader(in interface{}, context *compiler.Context) (*NamedHeader, error) { +func NewNamedHeader(in *yaml.Node, context *compiler.Context) (*NamedHeader, error) { errors := make([]error, 0) x := &NamedHeader{} m, ok := compiler.UnpackMap(in) @@ -2263,9 +2149,9 @@ func NewNamedHeader(in interface{}, context *compiler.Context) (*NamedHeader, er // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2283,7 +2169,7 @@ func NewNamedHeader(in interface{}, context *compiler.Context) (*NamedHeader, er } // NewNamedParameter creates an object of type NamedParameter if possible, returning an error if not. -func NewNamedParameter(in interface{}, context *compiler.Context) (*NamedParameter, error) { +func NewNamedParameter(in *yaml.Node, context *compiler.Context) (*NamedParameter, error) { errors := make([]error, 0) x := &NamedParameter{} m, ok := compiler.UnpackMap(in) @@ -2301,9 +2187,9 @@ func NewNamedParameter(in interface{}, context *compiler.Context) (*NamedParamet // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2321,7 +2207,7 @@ func NewNamedParameter(in interface{}, context *compiler.Context) (*NamedParamet } // NewNamedPathItem creates an object of type NamedPathItem if possible, returning an error if not. -func NewNamedPathItem(in interface{}, context *compiler.Context) (*NamedPathItem, error) { +func NewNamedPathItem(in *yaml.Node, context *compiler.Context) (*NamedPathItem, error) { errors := make([]error, 0) x := &NamedPathItem{} m, ok := compiler.UnpackMap(in) @@ -2339,9 +2225,9 @@ func NewNamedPathItem(in interface{}, context *compiler.Context) (*NamedPathItem // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2359,7 +2245,7 @@ func NewNamedPathItem(in interface{}, context *compiler.Context) (*NamedPathItem } // NewNamedResponse creates an object of type NamedResponse if possible, returning an error if not. -func NewNamedResponse(in interface{}, context *compiler.Context) (*NamedResponse, error) { +func NewNamedResponse(in *yaml.Node, context *compiler.Context) (*NamedResponse, error) { errors := make([]error, 0) x := &NamedResponse{} m, ok := compiler.UnpackMap(in) @@ -2377,9 +2263,9 @@ func NewNamedResponse(in interface{}, context *compiler.Context) (*NamedResponse // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2397,7 +2283,7 @@ func NewNamedResponse(in interface{}, context *compiler.Context) (*NamedResponse } // NewNamedResponseValue creates an object of type NamedResponseValue if possible, returning an error if not. -func NewNamedResponseValue(in interface{}, context *compiler.Context) (*NamedResponseValue, error) { +func NewNamedResponseValue(in *yaml.Node, context *compiler.Context) (*NamedResponseValue, error) { errors := make([]error, 0) x := &NamedResponseValue{} m, ok := compiler.UnpackMap(in) @@ -2415,9 +2301,9 @@ func NewNamedResponseValue(in interface{}, context *compiler.Context) (*NamedRes // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2435,7 +2321,7 @@ func NewNamedResponseValue(in interface{}, context *compiler.Context) (*NamedRes } // NewNamedSchema creates an object of type NamedSchema if possible, returning an error if not. -func NewNamedSchema(in interface{}, context *compiler.Context) (*NamedSchema, error) { +func NewNamedSchema(in *yaml.Node, context *compiler.Context) (*NamedSchema, error) { errors := make([]error, 0) x := &NamedSchema{} m, ok := compiler.UnpackMap(in) @@ -2453,9 +2339,9 @@ func NewNamedSchema(in interface{}, context *compiler.Context) (*NamedSchema, er // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2473,7 +2359,7 @@ func NewNamedSchema(in interface{}, context *compiler.Context) (*NamedSchema, er } // NewNamedSecurityDefinitionsItem creates an object of type NamedSecurityDefinitionsItem if possible, returning an error if not. -func NewNamedSecurityDefinitionsItem(in interface{}, context *compiler.Context) (*NamedSecurityDefinitionsItem, error) { +func NewNamedSecurityDefinitionsItem(in *yaml.Node, context *compiler.Context) (*NamedSecurityDefinitionsItem, error) { errors := make([]error, 0) x := &NamedSecurityDefinitionsItem{} m, ok := compiler.UnpackMap(in) @@ -2491,9 +2377,9 @@ func NewNamedSecurityDefinitionsItem(in interface{}, context *compiler.Context) // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2511,7 +2397,7 @@ func NewNamedSecurityDefinitionsItem(in interface{}, context *compiler.Context) } // NewNamedString creates an object of type NamedString if possible, returning an error if not. -func NewNamedString(in interface{}, context *compiler.Context) (*NamedString, error) { +func NewNamedString(in *yaml.Node, context *compiler.Context) (*NamedString, error) { errors := make([]error, 0) x := &NamedString{} m, ok := compiler.UnpackMap(in) @@ -2529,18 +2415,18 @@ func NewNamedString(in interface{}, context *compiler.Context) (*NamedString, er // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string value = 2; v2 := compiler.MapValueForKey(m, "value") if v2 != nil { - x.Value, ok = v2.(string) + x.Value, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for value: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for value: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2549,7 +2435,7 @@ func NewNamedString(in interface{}, context *compiler.Context) (*NamedString, er } // NewNamedStringArray creates an object of type NamedStringArray if possible, returning an error if not. -func NewNamedStringArray(in interface{}, context *compiler.Context) (*NamedStringArray, error) { +func NewNamedStringArray(in *yaml.Node, context *compiler.Context) (*NamedStringArray, error) { errors := make([]error, 0) x := &NamedStringArray{} m, ok := compiler.UnpackMap(in) @@ -2567,9 +2453,9 @@ func NewNamedStringArray(in interface{}, context *compiler.Context) (*NamedStrin // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2587,7 +2473,7 @@ func NewNamedStringArray(in interface{}, context *compiler.Context) (*NamedStrin } // NewNonBodyParameter creates an object of type NonBodyParameter if possible, returning an error if not. -func NewNonBodyParameter(in interface{}, context *compiler.Context) (*NonBodyParameter, error) { +func NewNonBodyParameter(in *yaml.Node, context *compiler.Context) (*NonBodyParameter, error) { errors := make([]error, 0) x := &NonBodyParameter{} matched := false @@ -2655,7 +2541,7 @@ func NewNonBodyParameter(in interface{}, context *compiler.Context) (*NonBodyPar } // NewOauth2AccessCodeSecurity creates an object of type Oauth2AccessCodeSecurity if possible, returning an error if not. -func NewOauth2AccessCodeSecurity(in interface{}, context *compiler.Context) (*Oauth2AccessCodeSecurity, error) { +func NewOauth2AccessCodeSecurity(in *yaml.Node, context *compiler.Context) (*Oauth2AccessCodeSecurity, error) { errors := make([]error, 0) x := &Oauth2AccessCodeSecurity{} m, ok := compiler.UnpackMap(in) @@ -2679,30 +2565,30 @@ func NewOauth2AccessCodeSecurity(in interface{}, context *compiler.Context) (*Oa // string type = 1; v1 := compiler.MapValueForKey(m, "type") if v1 != nil { - x.Type, ok = v1.(string) + x.Type, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [oauth2] if ok && !compiler.StringArrayContainsValue([]string{"oauth2"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string flow = 2; v2 := compiler.MapValueForKey(m, "flow") if v2 != nil { - x.Flow, ok = v2.(string) + x.Flow, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for flow: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [accessCode] if ok && !compiler.StringArrayContainsValue([]string{"accessCode"}, x.Flow) { - message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for flow: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2718,47 +2604,47 @@ func NewOauth2AccessCodeSecurity(in interface{}, context *compiler.Context) (*Oa // string authorization_url = 4; v4 := compiler.MapValueForKey(m, "authorizationUrl") if v4 != nil { - x.AuthorizationUrl, ok = v4.(string) + x.AuthorizationUrl, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for authorizationUrl: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for authorizationUrl: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } // string token_url = 5; v5 := compiler.MapValueForKey(m, "tokenUrl") if v5 != nil { - x.TokenUrl, ok = v5.(string) + x.TokenUrl, ok = compiler.StringForScalarNode(v5) if !ok { - message := fmt.Sprintf("has unexpected value for tokenUrl: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for tokenUrl: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 6; v6 := compiler.MapValueForKey(m, "description") if v6 != nil { - x.Description, ok = v6.(string) + x.Description, ok = compiler.StringForScalarNode(v6) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v6, v6) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 7; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -2778,7 +2664,7 @@ func NewOauth2AccessCodeSecurity(in interface{}, context *compiler.Context) (*Oa } // NewOauth2ApplicationSecurity creates an object of type Oauth2ApplicationSecurity if possible, returning an error if not. -func NewOauth2ApplicationSecurity(in interface{}, context *compiler.Context) (*Oauth2ApplicationSecurity, error) { +func NewOauth2ApplicationSecurity(in *yaml.Node, context *compiler.Context) (*Oauth2ApplicationSecurity, error) { errors := make([]error, 0) x := &Oauth2ApplicationSecurity{} m, ok := compiler.UnpackMap(in) @@ -2802,30 +2688,30 @@ func NewOauth2ApplicationSecurity(in interface{}, context *compiler.Context) (*O // string type = 1; v1 := compiler.MapValueForKey(m, "type") if v1 != nil { - x.Type, ok = v1.(string) + x.Type, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [oauth2] if ok && !compiler.StringArrayContainsValue([]string{"oauth2"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string flow = 2; v2 := compiler.MapValueForKey(m, "flow") if v2 != nil { - x.Flow, ok = v2.(string) + x.Flow, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for flow: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [application] if ok && !compiler.StringArrayContainsValue([]string{"application"}, x.Flow) { - message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for flow: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2841,38 +2727,38 @@ func NewOauth2ApplicationSecurity(in interface{}, context *compiler.Context) (*O // string token_url = 4; v4 := compiler.MapValueForKey(m, "tokenUrl") if v4 != nil { - x.TokenUrl, ok = v4.(string) + x.TokenUrl, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for tokenUrl: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for tokenUrl: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 5; v5 := compiler.MapValueForKey(m, "description") if v5 != nil { - x.Description, ok = v5.(string) + x.Description, ok = compiler.StringForScalarNode(v5) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 6; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -2892,7 +2778,7 @@ func NewOauth2ApplicationSecurity(in interface{}, context *compiler.Context) (*O } // NewOauth2ImplicitSecurity creates an object of type Oauth2ImplicitSecurity if possible, returning an error if not. -func NewOauth2ImplicitSecurity(in interface{}, context *compiler.Context) (*Oauth2ImplicitSecurity, error) { +func NewOauth2ImplicitSecurity(in *yaml.Node, context *compiler.Context) (*Oauth2ImplicitSecurity, error) { errors := make([]error, 0) x := &Oauth2ImplicitSecurity{} m, ok := compiler.UnpackMap(in) @@ -2916,30 +2802,30 @@ func NewOauth2ImplicitSecurity(in interface{}, context *compiler.Context) (*Oaut // string type = 1; v1 := compiler.MapValueForKey(m, "type") if v1 != nil { - x.Type, ok = v1.(string) + x.Type, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [oauth2] if ok && !compiler.StringArrayContainsValue([]string{"oauth2"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string flow = 2; v2 := compiler.MapValueForKey(m, "flow") if v2 != nil { - x.Flow, ok = v2.(string) + x.Flow, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for flow: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [implicit] if ok && !compiler.StringArrayContainsValue([]string{"implicit"}, x.Flow) { - message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for flow: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } @@ -2955,38 +2841,38 @@ func NewOauth2ImplicitSecurity(in interface{}, context *compiler.Context) (*Oaut // string authorization_url = 4; v4 := compiler.MapValueForKey(m, "authorizationUrl") if v4 != nil { - x.AuthorizationUrl, ok = v4.(string) + x.AuthorizationUrl, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for authorizationUrl: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for authorizationUrl: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 5; v5 := compiler.MapValueForKey(m, "description") if v5 != nil { - x.Description, ok = v5.(string) + x.Description, ok = compiler.StringForScalarNode(v5) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 6; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -3006,7 +2892,7 @@ func NewOauth2ImplicitSecurity(in interface{}, context *compiler.Context) (*Oaut } // NewOauth2PasswordSecurity creates an object of type Oauth2PasswordSecurity if possible, returning an error if not. -func NewOauth2PasswordSecurity(in interface{}, context *compiler.Context) (*Oauth2PasswordSecurity, error) { +func NewOauth2PasswordSecurity(in *yaml.Node, context *compiler.Context) (*Oauth2PasswordSecurity, error) { errors := make([]error, 0) x := &Oauth2PasswordSecurity{} m, ok := compiler.UnpackMap(in) @@ -3030,30 +2916,30 @@ func NewOauth2PasswordSecurity(in interface{}, context *compiler.Context) (*Oaut // string type = 1; v1 := compiler.MapValueForKey(m, "type") if v1 != nil { - x.Type, ok = v1.(string) + x.Type, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [oauth2] if ok && !compiler.StringArrayContainsValue([]string{"oauth2"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string flow = 2; v2 := compiler.MapValueForKey(m, "flow") if v2 != nil { - x.Flow, ok = v2.(string) + x.Flow, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for flow: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [password] if ok && !compiler.StringArrayContainsValue([]string{"password"}, x.Flow) { - message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for flow: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } @@ -3069,38 +2955,38 @@ func NewOauth2PasswordSecurity(in interface{}, context *compiler.Context) (*Oaut // string token_url = 4; v4 := compiler.MapValueForKey(m, "tokenUrl") if v4 != nil { - x.TokenUrl, ok = v4.(string) + x.TokenUrl, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for tokenUrl: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for tokenUrl: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 5; v5 := compiler.MapValueForKey(m, "description") if v5 != nil { - x.Description, ok = v5.(string) + x.Description, ok = compiler.StringForScalarNode(v5) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 6; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -3120,7 +3006,7 @@ func NewOauth2PasswordSecurity(in interface{}, context *compiler.Context) (*Oaut } // NewOauth2Scopes creates an object of type Oauth2Scopes if possible, returning an error if not. -func NewOauth2Scopes(in interface{}, context *compiler.Context) (*Oauth2Scopes, error) { +func NewOauth2Scopes(in *yaml.Node, context *compiler.Context) (*Oauth2Scopes, error) { errors := make([]error, 0) x := &Oauth2Scopes{} m, ok := compiler.UnpackMap(in) @@ -3131,13 +3017,13 @@ func NewOauth2Scopes(in interface{}, context *compiler.Context) (*Oauth2Scopes, // repeated NamedString additional_properties = 1; // MAP: string x.AdditionalProperties = make([]*NamedString, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] pair := &NamedString{} pair.Name = k - pair.Value = v.(string) + pair.Value, _ = compiler.StringForScalarNode(v) x.AdditionalProperties = append(x.AdditionalProperties, pair) } } @@ -3146,7 +3032,7 @@ func NewOauth2Scopes(in interface{}, context *compiler.Context) (*Oauth2Scopes, } // NewOperation creates an object of type Operation if possible, returning an error if not. -func NewOperation(in interface{}, context *compiler.Context) (*Operation, error) { +func NewOperation(in *yaml.Node, context *compiler.Context) (*Operation, error) { errors := make([]error, 0) x := &Operation{} m, ok := compiler.UnpackMap(in) @@ -3170,29 +3056,29 @@ func NewOperation(in interface{}, context *compiler.Context) (*Operation, error) // repeated string tags = 1; v1 := compiler.MapValueForKey(m, "tags") if v1 != nil { - v, ok := v1.([]interface{}) + v, ok := compiler.SequenceNodeForNode(v1) if ok { - x.Tags = compiler.ConvertInterfaceArrayToStringArray(v) + x.Tags = compiler.StringArrayForSequenceNode(v) } else { - message := fmt.Sprintf("has unexpected value for tags: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for tags: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string summary = 2; v2 := compiler.MapValueForKey(m, "summary") if v2 != nil { - x.Summary, ok = v2.(string) + x.Summary, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for summary: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for summary: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 3; v3 := compiler.MapValueForKey(m, "description") if v3 != nil { - x.Description, ok = v3.(string) + x.Description, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } @@ -3208,31 +3094,31 @@ func NewOperation(in interface{}, context *compiler.Context) (*Operation, error) // string operation_id = 5; v5 := compiler.MapValueForKey(m, "operationId") if v5 != nil { - x.OperationId, ok = v5.(string) + x.OperationId, ok = compiler.StringForScalarNode(v5) if !ok { - message := fmt.Sprintf("has unexpected value for operationId: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for operationId: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // repeated string produces = 6; v6 := compiler.MapValueForKey(m, "produces") if v6 != nil { - v, ok := v6.([]interface{}) + v, ok := compiler.SequenceNodeForNode(v6) if ok { - x.Produces = compiler.ConvertInterfaceArrayToStringArray(v) + x.Produces = compiler.StringArrayForSequenceNode(v) } else { - message := fmt.Sprintf("has unexpected value for produces: %+v (%T)", v6, v6) + message := fmt.Sprintf("has unexpected value for produces: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } } // repeated string consumes = 7; v7 := compiler.MapValueForKey(m, "consumes") if v7 != nil { - v, ok := v7.([]interface{}) + v, ok := compiler.SequenceNodeForNode(v7) if ok { - x.Consumes = compiler.ConvertInterfaceArrayToStringArray(v) + x.Consumes = compiler.StringArrayForSequenceNode(v) } else { - message := fmt.Sprintf("has unexpected value for consumes: %+v (%T)", v7, v7) + message := fmt.Sprintf("has unexpected value for consumes: %s", compiler.Display(v7)) errors = append(errors, compiler.NewError(context, message)) } } @@ -3241,9 +3127,9 @@ func NewOperation(in interface{}, context *compiler.Context) (*Operation, error) if v8 != nil { // repeated ParametersItem x.Parameters = make([]*ParametersItem, 0) - a, ok := v8.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v8) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewParametersItem(item, compiler.NewContext("parameters", context)) if err != nil { errors = append(errors, err) @@ -3264,26 +3150,26 @@ func NewOperation(in interface{}, context *compiler.Context) (*Operation, error) // repeated string schemes = 10; v10 := compiler.MapValueForKey(m, "schemes") if v10 != nil { - v, ok := v10.([]interface{}) + v, ok := compiler.SequenceNodeForNode(v10) if ok { - x.Schemes = compiler.ConvertInterfaceArrayToStringArray(v) + x.Schemes = compiler.StringArrayForSequenceNode(v) } else { - message := fmt.Sprintf("has unexpected value for schemes: %+v (%T)", v10, v10) + message := fmt.Sprintf("has unexpected value for schemes: %s", compiler.Display(v10)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [http https ws wss] if ok && !compiler.StringArrayContainsValues([]string{"http", "https", "ws", "wss"}, x.Schemes) { - message := fmt.Sprintf("has unexpected value for schemes: %+v", v10) + message := fmt.Sprintf("has unexpected value for schemes: %s", compiler.Display(v10)) errors = append(errors, compiler.NewError(context, message)) } } // bool deprecated = 11; v11 := compiler.MapValueForKey(m, "deprecated") if v11 != nil { - x.Deprecated, ok = v11.(bool) + x.Deprecated, ok = compiler.BoolForScalarNode(v11) if !ok { - message := fmt.Sprintf("has unexpected value for deprecated: %+v (%T)", v11, v11) + message := fmt.Sprintf("has unexpected value for deprecated: %s", compiler.Display(v11)) errors = append(errors, compiler.NewError(context, message)) } } @@ -3292,9 +3178,9 @@ func NewOperation(in interface{}, context *compiler.Context) (*Operation, error) if v12 != nil { // repeated SecurityRequirement x.Security = make([]*SecurityRequirement, 0) - a, ok := v12.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v12) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewSecurityRequirement(item, compiler.NewContext("security", context)) if err != nil { errors = append(errors, err) @@ -3306,20 +3192,20 @@ func NewOperation(in interface{}, context *compiler.Context) (*Operation, error) // repeated NamedAny vendor_extension = 13; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -3339,7 +3225,7 @@ func NewOperation(in interface{}, context *compiler.Context) (*Operation, error) } // NewParameter creates an object of type Parameter if possible, returning an error if not. -func NewParameter(in interface{}, context *compiler.Context) (*Parameter, error) { +func NewParameter(in *yaml.Node, context *compiler.Context) (*Parameter, error) { errors := make([]error, 0) x := &Parameter{} matched := false @@ -3379,7 +3265,7 @@ func NewParameter(in interface{}, context *compiler.Context) (*Parameter, error) } // NewParameterDefinitions creates an object of type ParameterDefinitions if possible, returning an error if not. -func NewParameterDefinitions(in interface{}, context *compiler.Context) (*ParameterDefinitions, error) { +func NewParameterDefinitions(in *yaml.Node, context *compiler.Context) (*ParameterDefinitions, error) { errors := make([]error, 0) x := &ParameterDefinitions{} m, ok := compiler.UnpackMap(in) @@ -3390,10 +3276,10 @@ func NewParameterDefinitions(in interface{}, context *compiler.Context) (*Parame // repeated NamedParameter additional_properties = 1; // MAP: Parameter x.AdditionalProperties = make([]*NamedParameter, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] pair := &NamedParameter{} pair.Name = k var err error @@ -3409,7 +3295,7 @@ func NewParameterDefinitions(in interface{}, context *compiler.Context) (*Parame } // NewParametersItem creates an object of type ParametersItem if possible, returning an error if not. -func NewParametersItem(in interface{}, context *compiler.Context) (*ParametersItem, error) { +func NewParametersItem(in *yaml.Node, context *compiler.Context) (*ParametersItem, error) { errors := make([]error, 0) x := &ParametersItem{} matched := false @@ -3449,7 +3335,7 @@ func NewParametersItem(in interface{}, context *compiler.Context) (*ParametersIt } // NewPathItem creates an object of type PathItem if possible, returning an error if not. -func NewPathItem(in interface{}, context *compiler.Context) (*PathItem, error) { +func NewPathItem(in *yaml.Node, context *compiler.Context) (*PathItem, error) { errors := make([]error, 0) x := &PathItem{} m, ok := compiler.UnpackMap(in) @@ -3467,9 +3353,9 @@ func NewPathItem(in interface{}, context *compiler.Context) (*PathItem, error) { // string _ref = 1; v1 := compiler.MapValueForKey(m, "$ref") if v1 != nil { - x.XRef, ok = v1.(string) + x.XRef, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for $ref: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for $ref: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -3541,9 +3427,9 @@ func NewPathItem(in interface{}, context *compiler.Context) (*PathItem, error) { if v9 != nil { // repeated ParametersItem x.Parameters = make([]*ParametersItem, 0) - a, ok := v9.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v9) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewParametersItem(item, compiler.NewContext("parameters", context)) if err != nil { errors = append(errors, err) @@ -3555,20 +3441,20 @@ func NewPathItem(in interface{}, context *compiler.Context) (*PathItem, error) { // repeated NamedAny vendor_extension = 10; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -3588,7 +3474,7 @@ func NewPathItem(in interface{}, context *compiler.Context) (*PathItem, error) { } // NewPathParameterSubSchema creates an object of type PathParameterSubSchema if possible, returning an error if not. -func NewPathParameterSubSchema(in interface{}, context *compiler.Context) (*PathParameterSubSchema, error) { +func NewPathParameterSubSchema(in *yaml.Node, context *compiler.Context) (*PathParameterSubSchema, error) { errors := make([]error, 0) x := &PathParameterSubSchema{} m, ok := compiler.UnpackMap(in) @@ -3612,66 +3498,66 @@ func NewPathParameterSubSchema(in interface{}, context *compiler.Context) (*Path // bool required = 1; v1 := compiler.MapValueForKey(m, "required") if v1 != nil { - x.Required, ok = v1.(bool) + x.Required, ok = compiler.BoolForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for required: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string in = 2; v2 := compiler.MapValueForKey(m, "in") if v2 != nil { - x.In, ok = v2.(string) + x.In, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [path] if ok && !compiler.StringArrayContainsValue([]string{"path"}, x.In) { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 3; v3 := compiler.MapValueForKey(m, "description") if v3 != nil { - x.Description, ok = v3.(string) + x.Description, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } // string name = 4; v4 := compiler.MapValueForKey(m, "name") if v4 != nil { - x.Name, ok = v4.(string) + x.Name, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } // string type = 5; v5 := compiler.MapValueForKey(m, "type") if v5 != nil { - x.Type, ok = v5.(string) + x.Type, ok = compiler.StringForScalarNode(v5) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [string number boolean integer array] if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "boolean", "integer", "array"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // string format = 6; v6 := compiler.MapValueForKey(m, "format") if v6 != nil { - x.Format, ok = v6.(string) + x.Format, ok = compiler.StringForScalarNode(v6) if !ok { - message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v6, v6) + message := fmt.Sprintf("has unexpected value for format: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } } @@ -3687,15 +3573,15 @@ func NewPathParameterSubSchema(in interface{}, context *compiler.Context) (*Path // string collection_format = 8; v8 := compiler.MapValueForKey(m, "collectionFormat") if v8 != nil { - x.CollectionFormat, ok = v8.(string) + x.CollectionFormat, ok = compiler.StringForScalarNode(v8) if !ok { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v8, v8) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v8)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [csv ssv tsv pipes] if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes"}, x.CollectionFormat) { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v8, v8) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v8)) errors = append(errors, compiler.NewError(context, message)) } } @@ -3711,126 +3597,102 @@ func NewPathParameterSubSchema(in interface{}, context *compiler.Context) (*Path // float maximum = 10; v10 := compiler.MapValueForKey(m, "maximum") if v10 != nil { - switch v10 := v10.(type) { - case float64: - x.Maximum = v10 - case float32: - x.Maximum = float64(v10) - case uint64: - x.Maximum = float64(v10) - case uint32: - x.Maximum = float64(v10) - case int64: - x.Maximum = float64(v10) - case int32: - x.Maximum = float64(v10) - case int: - x.Maximum = float64(v10) - default: - message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v10, v10) + v, ok := compiler.FloatForScalarNode(v10) + if ok { + x.Maximum = v + } else { + message := fmt.Sprintf("has unexpected value for maximum: %s", compiler.Display(v10)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_maximum = 11; v11 := compiler.MapValueForKey(m, "exclusiveMaximum") if v11 != nil { - x.ExclusiveMaximum, ok = v11.(bool) + x.ExclusiveMaximum, ok = compiler.BoolForScalarNode(v11) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v11, v11) + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %s", compiler.Display(v11)) errors = append(errors, compiler.NewError(context, message)) } } // float minimum = 12; v12 := compiler.MapValueForKey(m, "minimum") if v12 != nil { - switch v12 := v12.(type) { - case float64: - x.Minimum = v12 - case float32: - x.Minimum = float64(v12) - case uint64: - x.Minimum = float64(v12) - case uint32: - x.Minimum = float64(v12) - case int64: - x.Minimum = float64(v12) - case int32: - x.Minimum = float64(v12) - case int: - x.Minimum = float64(v12) - default: - message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v12, v12) + v, ok := compiler.FloatForScalarNode(v12) + if ok { + x.Minimum = v + } else { + message := fmt.Sprintf("has unexpected value for minimum: %s", compiler.Display(v12)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_minimum = 13; v13 := compiler.MapValueForKey(m, "exclusiveMinimum") if v13 != nil { - x.ExclusiveMinimum, ok = v13.(bool) + x.ExclusiveMinimum, ok = compiler.BoolForScalarNode(v13) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v13, v13) + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %s", compiler.Display(v13)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_length = 14; v14 := compiler.MapValueForKey(m, "maxLength") if v14 != nil { - t, ok := v14.(int) + t, ok := compiler.IntForScalarNode(v14) if ok { x.MaxLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v14, v14) + message := fmt.Sprintf("has unexpected value for maxLength: %s", compiler.Display(v14)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_length = 15; v15 := compiler.MapValueForKey(m, "minLength") if v15 != nil { - t, ok := v15.(int) + t, ok := compiler.IntForScalarNode(v15) if ok { x.MinLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v15, v15) + message := fmt.Sprintf("has unexpected value for minLength: %s", compiler.Display(v15)) errors = append(errors, compiler.NewError(context, message)) } } // string pattern = 16; v16 := compiler.MapValueForKey(m, "pattern") if v16 != nil { - x.Pattern, ok = v16.(string) + x.Pattern, ok = compiler.StringForScalarNode(v16) if !ok { - message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v16, v16) + message := fmt.Sprintf("has unexpected value for pattern: %s", compiler.Display(v16)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_items = 17; v17 := compiler.MapValueForKey(m, "maxItems") if v17 != nil { - t, ok := v17.(int) + t, ok := compiler.IntForScalarNode(v17) if ok { x.MaxItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v17, v17) + message := fmt.Sprintf("has unexpected value for maxItems: %s", compiler.Display(v17)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_items = 18; v18 := compiler.MapValueForKey(m, "minItems") if v18 != nil { - t, ok := v18.(int) + t, ok := compiler.IntForScalarNode(v18) if ok { x.MinItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v18, v18) + message := fmt.Sprintf("has unexpected value for minItems: %s", compiler.Display(v18)) errors = append(errors, compiler.NewError(context, message)) } } // bool unique_items = 19; v19 := compiler.MapValueForKey(m, "uniqueItems") if v19 != nil { - x.UniqueItems, ok = v19.(bool) + x.UniqueItems, ok = compiler.BoolForScalarNode(v19) if !ok { - message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v19, v19) + message := fmt.Sprintf("has unexpected value for uniqueItems: %s", compiler.Display(v19)) errors = append(errors, compiler.NewError(context, message)) } } @@ -3839,9 +3701,9 @@ func NewPathParameterSubSchema(in interface{}, context *compiler.Context) (*Path if v20 != nil { // repeated Any x.Enum = make([]*Any, 0) - a, ok := v20.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v20) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewAny(item, compiler.NewContext("enum", context)) if err != nil { errors = append(errors, err) @@ -3853,43 +3715,31 @@ func NewPathParameterSubSchema(in interface{}, context *compiler.Context) (*Path // float multiple_of = 21; v21 := compiler.MapValueForKey(m, "multipleOf") if v21 != nil { - switch v21 := v21.(type) { - case float64: - x.MultipleOf = v21 - case float32: - x.MultipleOf = float64(v21) - case uint64: - x.MultipleOf = float64(v21) - case uint32: - x.MultipleOf = float64(v21) - case int64: - x.MultipleOf = float64(v21) - case int32: - x.MultipleOf = float64(v21) - case int: - x.MultipleOf = float64(v21) - default: - message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v21, v21) + v, ok := compiler.FloatForScalarNode(v21) + if ok { + x.MultipleOf = v + } else { + message := fmt.Sprintf("has unexpected value for multipleOf: %s", compiler.Display(v21)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 22; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -3909,7 +3759,7 @@ func NewPathParameterSubSchema(in interface{}, context *compiler.Context) (*Path } // NewPaths creates an object of type Paths if possible, returning an error if not. -func NewPaths(in interface{}, context *compiler.Context) (*Paths, error) { +func NewPaths(in *yaml.Node, context *compiler.Context) (*Paths, error) { errors := make([]error, 0) x := &Paths{} m, ok := compiler.UnpackMap(in) @@ -3927,20 +3777,20 @@ func NewPaths(in interface{}, context *compiler.Context) (*Paths, error) { // repeated NamedAny vendor_extension = 1; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -3958,10 +3808,10 @@ func NewPaths(in interface{}, context *compiler.Context) (*Paths, error) { // repeated NamedPathItem path = 2; // MAP: PathItem ^/ x.Path = make([]*NamedPathItem, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "/") { pair := &NamedPathItem{} pair.Name = k @@ -3979,7 +3829,7 @@ func NewPaths(in interface{}, context *compiler.Context) (*Paths, error) { } // NewPrimitivesItems creates an object of type PrimitivesItems if possible, returning an error if not. -func NewPrimitivesItems(in interface{}, context *compiler.Context) (*PrimitivesItems, error) { +func NewPrimitivesItems(in *yaml.Node, context *compiler.Context) (*PrimitivesItems, error) { errors := make([]error, 0) x := &PrimitivesItems{} m, ok := compiler.UnpackMap(in) @@ -3997,24 +3847,24 @@ func NewPrimitivesItems(in interface{}, context *compiler.Context) (*PrimitivesI // string type = 1; v1 := compiler.MapValueForKey(m, "type") if v1 != nil { - x.Type, ok = v1.(string) + x.Type, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [string number integer boolean array] if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "integer", "boolean", "array"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string format = 2; v2 := compiler.MapValueForKey(m, "format") if v2 != nil { - x.Format, ok = v2.(string) + x.Format, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for format: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } @@ -4030,15 +3880,15 @@ func NewPrimitivesItems(in interface{}, context *compiler.Context) (*PrimitivesI // string collection_format = 4; v4 := compiler.MapValueForKey(m, "collectionFormat") if v4 != nil { - x.CollectionFormat, ok = v4.(string) + x.CollectionFormat, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [csv ssv tsv pipes] if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes"}, x.CollectionFormat) { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } @@ -4054,126 +3904,102 @@ func NewPrimitivesItems(in interface{}, context *compiler.Context) (*PrimitivesI // float maximum = 6; v6 := compiler.MapValueForKey(m, "maximum") if v6 != nil { - switch v6 := v6.(type) { - case float64: - x.Maximum = v6 - case float32: - x.Maximum = float64(v6) - case uint64: - x.Maximum = float64(v6) - case uint32: - x.Maximum = float64(v6) - case int64: - x.Maximum = float64(v6) - case int32: - x.Maximum = float64(v6) - case int: - x.Maximum = float64(v6) - default: - message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v6, v6) + v, ok := compiler.FloatForScalarNode(v6) + if ok { + x.Maximum = v + } else { + message := fmt.Sprintf("has unexpected value for maximum: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_maximum = 7; v7 := compiler.MapValueForKey(m, "exclusiveMaximum") if v7 != nil { - x.ExclusiveMaximum, ok = v7.(bool) + x.ExclusiveMaximum, ok = compiler.BoolForScalarNode(v7) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v7, v7) + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %s", compiler.Display(v7)) errors = append(errors, compiler.NewError(context, message)) } } // float minimum = 8; v8 := compiler.MapValueForKey(m, "minimum") if v8 != nil { - switch v8 := v8.(type) { - case float64: - x.Minimum = v8 - case float32: - x.Minimum = float64(v8) - case uint64: - x.Minimum = float64(v8) - case uint32: - x.Minimum = float64(v8) - case int64: - x.Minimum = float64(v8) - case int32: - x.Minimum = float64(v8) - case int: - x.Minimum = float64(v8) - default: - message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v8, v8) + v, ok := compiler.FloatForScalarNode(v8) + if ok { + x.Minimum = v + } else { + message := fmt.Sprintf("has unexpected value for minimum: %s", compiler.Display(v8)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_minimum = 9; v9 := compiler.MapValueForKey(m, "exclusiveMinimum") if v9 != nil { - x.ExclusiveMinimum, ok = v9.(bool) + x.ExclusiveMinimum, ok = compiler.BoolForScalarNode(v9) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v9, v9) + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %s", compiler.Display(v9)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_length = 10; v10 := compiler.MapValueForKey(m, "maxLength") if v10 != nil { - t, ok := v10.(int) + t, ok := compiler.IntForScalarNode(v10) if ok { x.MaxLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v10, v10) + message := fmt.Sprintf("has unexpected value for maxLength: %s", compiler.Display(v10)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_length = 11; v11 := compiler.MapValueForKey(m, "minLength") if v11 != nil { - t, ok := v11.(int) + t, ok := compiler.IntForScalarNode(v11) if ok { x.MinLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v11, v11) + message := fmt.Sprintf("has unexpected value for minLength: %s", compiler.Display(v11)) errors = append(errors, compiler.NewError(context, message)) } } // string pattern = 12; v12 := compiler.MapValueForKey(m, "pattern") if v12 != nil { - x.Pattern, ok = v12.(string) + x.Pattern, ok = compiler.StringForScalarNode(v12) if !ok { - message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v12, v12) + message := fmt.Sprintf("has unexpected value for pattern: %s", compiler.Display(v12)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_items = 13; v13 := compiler.MapValueForKey(m, "maxItems") if v13 != nil { - t, ok := v13.(int) + t, ok := compiler.IntForScalarNode(v13) if ok { x.MaxItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v13, v13) + message := fmt.Sprintf("has unexpected value for maxItems: %s", compiler.Display(v13)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_items = 14; v14 := compiler.MapValueForKey(m, "minItems") if v14 != nil { - t, ok := v14.(int) + t, ok := compiler.IntForScalarNode(v14) if ok { x.MinItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v14, v14) + message := fmt.Sprintf("has unexpected value for minItems: %s", compiler.Display(v14)) errors = append(errors, compiler.NewError(context, message)) } } // bool unique_items = 15; v15 := compiler.MapValueForKey(m, "uniqueItems") if v15 != nil { - x.UniqueItems, ok = v15.(bool) + x.UniqueItems, ok = compiler.BoolForScalarNode(v15) if !ok { - message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v15, v15) + message := fmt.Sprintf("has unexpected value for uniqueItems: %s", compiler.Display(v15)) errors = append(errors, compiler.NewError(context, message)) } } @@ -4182,9 +4008,9 @@ func NewPrimitivesItems(in interface{}, context *compiler.Context) (*PrimitivesI if v16 != nil { // repeated Any x.Enum = make([]*Any, 0) - a, ok := v16.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v16) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewAny(item, compiler.NewContext("enum", context)) if err != nil { errors = append(errors, err) @@ -4196,43 +4022,31 @@ func NewPrimitivesItems(in interface{}, context *compiler.Context) (*PrimitivesI // float multiple_of = 17; v17 := compiler.MapValueForKey(m, "multipleOf") if v17 != nil { - switch v17 := v17.(type) { - case float64: - x.MultipleOf = v17 - case float32: - x.MultipleOf = float64(v17) - case uint64: - x.MultipleOf = float64(v17) - case uint32: - x.MultipleOf = float64(v17) - case int64: - x.MultipleOf = float64(v17) - case int32: - x.MultipleOf = float64(v17) - case int: - x.MultipleOf = float64(v17) - default: - message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v17, v17) + v, ok := compiler.FloatForScalarNode(v17) + if ok { + x.MultipleOf = v + } else { + message := fmt.Sprintf("has unexpected value for multipleOf: %s", compiler.Display(v17)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 18; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -4252,7 +4066,7 @@ func NewPrimitivesItems(in interface{}, context *compiler.Context) (*PrimitivesI } // NewProperties creates an object of type Properties if possible, returning an error if not. -func NewProperties(in interface{}, context *compiler.Context) (*Properties, error) { +func NewProperties(in *yaml.Node, context *compiler.Context) (*Properties, error) { errors := make([]error, 0) x := &Properties{} m, ok := compiler.UnpackMap(in) @@ -4263,10 +4077,10 @@ func NewProperties(in interface{}, context *compiler.Context) (*Properties, erro // repeated NamedSchema additional_properties = 1; // MAP: Schema x.AdditionalProperties = make([]*NamedSchema, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] pair := &NamedSchema{} pair.Name = k var err error @@ -4282,7 +4096,7 @@ func NewProperties(in interface{}, context *compiler.Context) (*Properties, erro } // NewQueryParameterSubSchema creates an object of type QueryParameterSubSchema if possible, returning an error if not. -func NewQueryParameterSubSchema(in interface{}, context *compiler.Context) (*QueryParameterSubSchema, error) { +func NewQueryParameterSubSchema(in *yaml.Node, context *compiler.Context) (*QueryParameterSubSchema, error) { errors := make([]error, 0) x := &QueryParameterSubSchema{} m, ok := compiler.UnpackMap(in) @@ -4300,75 +4114,75 @@ func NewQueryParameterSubSchema(in interface{}, context *compiler.Context) (*Que // bool required = 1; v1 := compiler.MapValueForKey(m, "required") if v1 != nil { - x.Required, ok = v1.(bool) + x.Required, ok = compiler.BoolForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for required: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string in = 2; v2 := compiler.MapValueForKey(m, "in") if v2 != nil { - x.In, ok = v2.(string) + x.In, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [query] if ok && !compiler.StringArrayContainsValue([]string{"query"}, x.In) { - message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 3; v3 := compiler.MapValueForKey(m, "description") if v3 != nil { - x.Description, ok = v3.(string) + x.Description, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } // string name = 4; v4 := compiler.MapValueForKey(m, "name") if v4 != nil { - x.Name, ok = v4.(string) + x.Name, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } // bool allow_empty_value = 5; v5 := compiler.MapValueForKey(m, "allowEmptyValue") if v5 != nil { - x.AllowEmptyValue, ok = v5.(bool) + x.AllowEmptyValue, ok = compiler.BoolForScalarNode(v5) if !ok { - message := fmt.Sprintf("has unexpected value for allowEmptyValue: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for allowEmptyValue: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // string type = 6; v6 := compiler.MapValueForKey(m, "type") if v6 != nil { - x.Type, ok = v6.(string) + x.Type, ok = compiler.StringForScalarNode(v6) if !ok { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [string number boolean integer array] if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "boolean", "integer", "array"}, x.Type) { - message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } } // string format = 7; v7 := compiler.MapValueForKey(m, "format") if v7 != nil { - x.Format, ok = v7.(string) + x.Format, ok = compiler.StringForScalarNode(v7) if !ok { - message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v7, v7) + message := fmt.Sprintf("has unexpected value for format: %s", compiler.Display(v7)) errors = append(errors, compiler.NewError(context, message)) } } @@ -4384,15 +4198,15 @@ func NewQueryParameterSubSchema(in interface{}, context *compiler.Context) (*Que // string collection_format = 9; v9 := compiler.MapValueForKey(m, "collectionFormat") if v9 != nil { - x.CollectionFormat, ok = v9.(string) + x.CollectionFormat, ok = compiler.StringForScalarNode(v9) if !ok { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v9, v9) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v9)) errors = append(errors, compiler.NewError(context, message)) } // check for valid enum values // [csv ssv tsv pipes multi] if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes", "multi"}, x.CollectionFormat) { - message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v9, v9) + message := fmt.Sprintf("has unexpected value for collectionFormat: %s", compiler.Display(v9)) errors = append(errors, compiler.NewError(context, message)) } } @@ -4408,126 +4222,102 @@ func NewQueryParameterSubSchema(in interface{}, context *compiler.Context) (*Que // float maximum = 11; v11 := compiler.MapValueForKey(m, "maximum") if v11 != nil { - switch v11 := v11.(type) { - case float64: - x.Maximum = v11 - case float32: - x.Maximum = float64(v11) - case uint64: - x.Maximum = float64(v11) - case uint32: - x.Maximum = float64(v11) - case int64: - x.Maximum = float64(v11) - case int32: - x.Maximum = float64(v11) - case int: - x.Maximum = float64(v11) - default: - message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v11, v11) + v, ok := compiler.FloatForScalarNode(v11) + if ok { + x.Maximum = v + } else { + message := fmt.Sprintf("has unexpected value for maximum: %s", compiler.Display(v11)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_maximum = 12; v12 := compiler.MapValueForKey(m, "exclusiveMaximum") if v12 != nil { - x.ExclusiveMaximum, ok = v12.(bool) + x.ExclusiveMaximum, ok = compiler.BoolForScalarNode(v12) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v12, v12) + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %s", compiler.Display(v12)) errors = append(errors, compiler.NewError(context, message)) } } // float minimum = 13; v13 := compiler.MapValueForKey(m, "minimum") if v13 != nil { - switch v13 := v13.(type) { - case float64: - x.Minimum = v13 - case float32: - x.Minimum = float64(v13) - case uint64: - x.Minimum = float64(v13) - case uint32: - x.Minimum = float64(v13) - case int64: - x.Minimum = float64(v13) - case int32: - x.Minimum = float64(v13) - case int: - x.Minimum = float64(v13) - default: - message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v13, v13) + v, ok := compiler.FloatForScalarNode(v13) + if ok { + x.Minimum = v + } else { + message := fmt.Sprintf("has unexpected value for minimum: %s", compiler.Display(v13)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_minimum = 14; v14 := compiler.MapValueForKey(m, "exclusiveMinimum") if v14 != nil { - x.ExclusiveMinimum, ok = v14.(bool) + x.ExclusiveMinimum, ok = compiler.BoolForScalarNode(v14) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v14, v14) + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %s", compiler.Display(v14)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_length = 15; v15 := compiler.MapValueForKey(m, "maxLength") if v15 != nil { - t, ok := v15.(int) + t, ok := compiler.IntForScalarNode(v15) if ok { x.MaxLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v15, v15) + message := fmt.Sprintf("has unexpected value for maxLength: %s", compiler.Display(v15)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_length = 16; v16 := compiler.MapValueForKey(m, "minLength") if v16 != nil { - t, ok := v16.(int) + t, ok := compiler.IntForScalarNode(v16) if ok { x.MinLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v16, v16) + message := fmt.Sprintf("has unexpected value for minLength: %s", compiler.Display(v16)) errors = append(errors, compiler.NewError(context, message)) } } // string pattern = 17; v17 := compiler.MapValueForKey(m, "pattern") if v17 != nil { - x.Pattern, ok = v17.(string) + x.Pattern, ok = compiler.StringForScalarNode(v17) if !ok { - message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v17, v17) + message := fmt.Sprintf("has unexpected value for pattern: %s", compiler.Display(v17)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_items = 18; v18 := compiler.MapValueForKey(m, "maxItems") if v18 != nil { - t, ok := v18.(int) + t, ok := compiler.IntForScalarNode(v18) if ok { x.MaxItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v18, v18) + message := fmt.Sprintf("has unexpected value for maxItems: %s", compiler.Display(v18)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_items = 19; v19 := compiler.MapValueForKey(m, "minItems") if v19 != nil { - t, ok := v19.(int) + t, ok := compiler.IntForScalarNode(v19) if ok { x.MinItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v19, v19) + message := fmt.Sprintf("has unexpected value for minItems: %s", compiler.Display(v19)) errors = append(errors, compiler.NewError(context, message)) } } // bool unique_items = 20; v20 := compiler.MapValueForKey(m, "uniqueItems") if v20 != nil { - x.UniqueItems, ok = v20.(bool) + x.UniqueItems, ok = compiler.BoolForScalarNode(v20) if !ok { - message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v20, v20) + message := fmt.Sprintf("has unexpected value for uniqueItems: %s", compiler.Display(v20)) errors = append(errors, compiler.NewError(context, message)) } } @@ -4536,9 +4326,9 @@ func NewQueryParameterSubSchema(in interface{}, context *compiler.Context) (*Que if v21 != nil { // repeated Any x.Enum = make([]*Any, 0) - a, ok := v21.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v21) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewAny(item, compiler.NewContext("enum", context)) if err != nil { errors = append(errors, err) @@ -4550,43 +4340,31 @@ func NewQueryParameterSubSchema(in interface{}, context *compiler.Context) (*Que // float multiple_of = 22; v22 := compiler.MapValueForKey(m, "multipleOf") if v22 != nil { - switch v22 := v22.(type) { - case float64: - x.MultipleOf = v22 - case float32: - x.MultipleOf = float64(v22) - case uint64: - x.MultipleOf = float64(v22) - case uint32: - x.MultipleOf = float64(v22) - case int64: - x.MultipleOf = float64(v22) - case int32: - x.MultipleOf = float64(v22) - case int: - x.MultipleOf = float64(v22) - default: - message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v22, v22) + v, ok := compiler.FloatForScalarNode(v22) + if ok { + x.MultipleOf = v + } else { + message := fmt.Sprintf("has unexpected value for multipleOf: %s", compiler.Display(v22)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 23; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -4606,7 +4384,7 @@ func NewQueryParameterSubSchema(in interface{}, context *compiler.Context) (*Que } // NewResponse creates an object of type Response if possible, returning an error if not. -func NewResponse(in interface{}, context *compiler.Context) (*Response, error) { +func NewResponse(in *yaml.Node, context *compiler.Context) (*Response, error) { errors := make([]error, 0) x := &Response{} m, ok := compiler.UnpackMap(in) @@ -4630,9 +4408,9 @@ func NewResponse(in interface{}, context *compiler.Context) (*Response, error) { // string description = 1; v1 := compiler.MapValueForKey(m, "description") if v1 != nil { - x.Description, ok = v1.(string) + x.Description, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } @@ -4666,20 +4444,20 @@ func NewResponse(in interface{}, context *compiler.Context) (*Response, error) { // repeated NamedAny vendor_extension = 5; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -4699,7 +4477,7 @@ func NewResponse(in interface{}, context *compiler.Context) (*Response, error) { } // NewResponseDefinitions creates an object of type ResponseDefinitions if possible, returning an error if not. -func NewResponseDefinitions(in interface{}, context *compiler.Context) (*ResponseDefinitions, error) { +func NewResponseDefinitions(in *yaml.Node, context *compiler.Context) (*ResponseDefinitions, error) { errors := make([]error, 0) x := &ResponseDefinitions{} m, ok := compiler.UnpackMap(in) @@ -4710,10 +4488,10 @@ func NewResponseDefinitions(in interface{}, context *compiler.Context) (*Respons // repeated NamedResponse additional_properties = 1; // MAP: Response x.AdditionalProperties = make([]*NamedResponse, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] pair := &NamedResponse{} pair.Name = k var err error @@ -4729,7 +4507,7 @@ func NewResponseDefinitions(in interface{}, context *compiler.Context) (*Respons } // NewResponseValue creates an object of type ResponseValue if possible, returning an error if not. -func NewResponseValue(in interface{}, context *compiler.Context) (*ResponseValue, error) { +func NewResponseValue(in *yaml.Node, context *compiler.Context) (*ResponseValue, error) { errors := make([]error, 0) x := &ResponseValue{} matched := false @@ -4769,7 +4547,7 @@ func NewResponseValue(in interface{}, context *compiler.Context) (*ResponseValue } // NewResponses creates an object of type Responses if possible, returning an error if not. -func NewResponses(in interface{}, context *compiler.Context) (*Responses, error) { +func NewResponses(in *yaml.Node, context *compiler.Context) (*Responses, error) { errors := make([]error, 0) x := &Responses{} m, ok := compiler.UnpackMap(in) @@ -4787,10 +4565,10 @@ func NewResponses(in interface{}, context *compiler.Context) (*Responses, error) // repeated NamedResponseValue response_code = 1; // MAP: ResponseValue ^([0-9]{3})$|^(default)$ x.ResponseCode = make([]*NamedResponseValue, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if pattern2.MatchString(k) { pair := &NamedResponseValue{} pair.Name = k @@ -4806,20 +4584,20 @@ func NewResponses(in interface{}, context *compiler.Context) (*Responses, error) // repeated NamedAny vendor_extension = 2; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -4839,7 +4617,7 @@ func NewResponses(in interface{}, context *compiler.Context) (*Responses, error) } // NewSchema creates an object of type Schema if possible, returning an error if not. -func NewSchema(in interface{}, context *compiler.Context) (*Schema, error) { +func NewSchema(in *yaml.Node, context *compiler.Context) (*Schema, error) { errors := make([]error, 0) x := &Schema{} m, ok := compiler.UnpackMap(in) @@ -4857,36 +4635,36 @@ func NewSchema(in interface{}, context *compiler.Context) (*Schema, error) { // string _ref = 1; v1 := compiler.MapValueForKey(m, "$ref") if v1 != nil { - x.XRef, ok = v1.(string) + x.XRef, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for $ref: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for $ref: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string format = 2; v2 := compiler.MapValueForKey(m, "format") if v2 != nil { - x.Format, ok = v2.(string) + x.Format, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for format: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string title = 3; v3 := compiler.MapValueForKey(m, "title") if v3 != nil { - x.Title, ok = v3.(string) + x.Title, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for title: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for title: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 4; v4 := compiler.MapValueForKey(m, "description") if v4 != nil { - x.Description, ok = v4.(string) + x.Description, ok = compiler.StringForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } @@ -4902,182 +4680,146 @@ func NewSchema(in interface{}, context *compiler.Context) (*Schema, error) { // float multiple_of = 6; v6 := compiler.MapValueForKey(m, "multipleOf") if v6 != nil { - switch v6 := v6.(type) { - case float64: - x.MultipleOf = v6 - case float32: - x.MultipleOf = float64(v6) - case uint64: - x.MultipleOf = float64(v6) - case uint32: - x.MultipleOf = float64(v6) - case int64: - x.MultipleOf = float64(v6) - case int32: - x.MultipleOf = float64(v6) - case int: - x.MultipleOf = float64(v6) - default: - message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v6, v6) + v, ok := compiler.FloatForScalarNode(v6) + if ok { + x.MultipleOf = v + } else { + message := fmt.Sprintf("has unexpected value for multipleOf: %s", compiler.Display(v6)) errors = append(errors, compiler.NewError(context, message)) } } // float maximum = 7; v7 := compiler.MapValueForKey(m, "maximum") if v7 != nil { - switch v7 := v7.(type) { - case float64: - x.Maximum = v7 - case float32: - x.Maximum = float64(v7) - case uint64: - x.Maximum = float64(v7) - case uint32: - x.Maximum = float64(v7) - case int64: - x.Maximum = float64(v7) - case int32: - x.Maximum = float64(v7) - case int: - x.Maximum = float64(v7) - default: - message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v7, v7) + v, ok := compiler.FloatForScalarNode(v7) + if ok { + x.Maximum = v + } else { + message := fmt.Sprintf("has unexpected value for maximum: %s", compiler.Display(v7)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_maximum = 8; v8 := compiler.MapValueForKey(m, "exclusiveMaximum") if v8 != nil { - x.ExclusiveMaximum, ok = v8.(bool) + x.ExclusiveMaximum, ok = compiler.BoolForScalarNode(v8) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v8, v8) + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %s", compiler.Display(v8)) errors = append(errors, compiler.NewError(context, message)) } } // float minimum = 9; v9 := compiler.MapValueForKey(m, "minimum") if v9 != nil { - switch v9 := v9.(type) { - case float64: - x.Minimum = v9 - case float32: - x.Minimum = float64(v9) - case uint64: - x.Minimum = float64(v9) - case uint32: - x.Minimum = float64(v9) - case int64: - x.Minimum = float64(v9) - case int32: - x.Minimum = float64(v9) - case int: - x.Minimum = float64(v9) - default: - message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v9, v9) + v, ok := compiler.FloatForScalarNode(v9) + if ok { + x.Minimum = v + } else { + message := fmt.Sprintf("has unexpected value for minimum: %s", compiler.Display(v9)) errors = append(errors, compiler.NewError(context, message)) } } // bool exclusive_minimum = 10; v10 := compiler.MapValueForKey(m, "exclusiveMinimum") if v10 != nil { - x.ExclusiveMinimum, ok = v10.(bool) + x.ExclusiveMinimum, ok = compiler.BoolForScalarNode(v10) if !ok { - message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v10, v10) + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %s", compiler.Display(v10)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_length = 11; v11 := compiler.MapValueForKey(m, "maxLength") if v11 != nil { - t, ok := v11.(int) + t, ok := compiler.IntForScalarNode(v11) if ok { x.MaxLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v11, v11) + message := fmt.Sprintf("has unexpected value for maxLength: %s", compiler.Display(v11)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_length = 12; v12 := compiler.MapValueForKey(m, "minLength") if v12 != nil { - t, ok := v12.(int) + t, ok := compiler.IntForScalarNode(v12) if ok { x.MinLength = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v12, v12) + message := fmt.Sprintf("has unexpected value for minLength: %s", compiler.Display(v12)) errors = append(errors, compiler.NewError(context, message)) } } // string pattern = 13; v13 := compiler.MapValueForKey(m, "pattern") if v13 != nil { - x.Pattern, ok = v13.(string) + x.Pattern, ok = compiler.StringForScalarNode(v13) if !ok { - message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v13, v13) + message := fmt.Sprintf("has unexpected value for pattern: %s", compiler.Display(v13)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_items = 14; v14 := compiler.MapValueForKey(m, "maxItems") if v14 != nil { - t, ok := v14.(int) + t, ok := compiler.IntForScalarNode(v14) if ok { x.MaxItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v14, v14) + message := fmt.Sprintf("has unexpected value for maxItems: %s", compiler.Display(v14)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_items = 15; v15 := compiler.MapValueForKey(m, "minItems") if v15 != nil { - t, ok := v15.(int) + t, ok := compiler.IntForScalarNode(v15) if ok { x.MinItems = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v15, v15) + message := fmt.Sprintf("has unexpected value for minItems: %s", compiler.Display(v15)) errors = append(errors, compiler.NewError(context, message)) } } // bool unique_items = 16; v16 := compiler.MapValueForKey(m, "uniqueItems") if v16 != nil { - x.UniqueItems, ok = v16.(bool) + x.UniqueItems, ok = compiler.BoolForScalarNode(v16) if !ok { - message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v16, v16) + message := fmt.Sprintf("has unexpected value for uniqueItems: %s", compiler.Display(v16)) errors = append(errors, compiler.NewError(context, message)) } } // int64 max_properties = 17; v17 := compiler.MapValueForKey(m, "maxProperties") if v17 != nil { - t, ok := v17.(int) + t, ok := compiler.IntForScalarNode(v17) if ok { x.MaxProperties = int64(t) } else { - message := fmt.Sprintf("has unexpected value for maxProperties: %+v (%T)", v17, v17) + message := fmt.Sprintf("has unexpected value for maxProperties: %s", compiler.Display(v17)) errors = append(errors, compiler.NewError(context, message)) } } // int64 min_properties = 18; v18 := compiler.MapValueForKey(m, "minProperties") if v18 != nil { - t, ok := v18.(int) + t, ok := compiler.IntForScalarNode(v18) if ok { x.MinProperties = int64(t) } else { - message := fmt.Sprintf("has unexpected value for minProperties: %+v (%T)", v18, v18) + message := fmt.Sprintf("has unexpected value for minProperties: %s", compiler.Display(v18)) errors = append(errors, compiler.NewError(context, message)) } } // repeated string required = 19; v19 := compiler.MapValueForKey(m, "required") if v19 != nil { - v, ok := v19.([]interface{}) + v, ok := compiler.SequenceNodeForNode(v19) if ok { - x.Required = compiler.ConvertInterfaceArrayToStringArray(v) + x.Required = compiler.StringArrayForSequenceNode(v) } else { - message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v19, v19) + message := fmt.Sprintf("has unexpected value for required: %s", compiler.Display(v19)) errors = append(errors, compiler.NewError(context, message)) } } @@ -5086,9 +4828,9 @@ func NewSchema(in interface{}, context *compiler.Context) (*Schema, error) { if v20 != nil { // repeated Any x.Enum = make([]*Any, 0) - a, ok := v20.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v20) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewAny(item, compiler.NewContext("enum", context)) if err != nil { errors = append(errors, err) @@ -5129,9 +4871,9 @@ func NewSchema(in interface{}, context *compiler.Context) (*Schema, error) { if v24 != nil { // repeated Schema x.AllOf = make([]*Schema, 0) - a, ok := v24.([]interface{}) + a, ok := compiler.SequenceNodeForNode(v24) if ok { - for _, item := range a { + for _, item := range a.Content { y, err := NewSchema(item, compiler.NewContext("allOf", context)) if err != nil { errors = append(errors, err) @@ -5152,18 +4894,18 @@ func NewSchema(in interface{}, context *compiler.Context) (*Schema, error) { // string discriminator = 26; v26 := compiler.MapValueForKey(m, "discriminator") if v26 != nil { - x.Discriminator, ok = v26.(string) + x.Discriminator, ok = compiler.StringForScalarNode(v26) if !ok { - message := fmt.Sprintf("has unexpected value for discriminator: %+v (%T)", v26, v26) + message := fmt.Sprintf("has unexpected value for discriminator: %s", compiler.Display(v26)) errors = append(errors, compiler.NewError(context, message)) } } // bool read_only = 27; v27 := compiler.MapValueForKey(m, "readOnly") if v27 != nil { - x.ReadOnly, ok = v27.(bool) + x.ReadOnly, ok = compiler.BoolForScalarNode(v27) if !ok { - message := fmt.Sprintf("has unexpected value for readOnly: %+v (%T)", v27, v27) + message := fmt.Sprintf("has unexpected value for readOnly: %s", compiler.Display(v27)) errors = append(errors, compiler.NewError(context, message)) } } @@ -5197,20 +4939,20 @@ func NewSchema(in interface{}, context *compiler.Context) (*Schema, error) { // repeated NamedAny vendor_extension = 31; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -5230,7 +4972,7 @@ func NewSchema(in interface{}, context *compiler.Context) (*Schema, error) { } // NewSchemaItem creates an object of type SchemaItem if possible, returning an error if not. -func NewSchemaItem(in interface{}, context *compiler.Context) (*SchemaItem, error) { +func NewSchemaItem(in *yaml.Node, context *compiler.Context) (*SchemaItem, error) { errors := make([]error, 0) x := &SchemaItem{} matched := false @@ -5270,7 +5012,7 @@ func NewSchemaItem(in interface{}, context *compiler.Context) (*SchemaItem, erro } // NewSecurityDefinitions creates an object of type SecurityDefinitions if possible, returning an error if not. -func NewSecurityDefinitions(in interface{}, context *compiler.Context) (*SecurityDefinitions, error) { +func NewSecurityDefinitions(in *yaml.Node, context *compiler.Context) (*SecurityDefinitions, error) { errors := make([]error, 0) x := &SecurityDefinitions{} m, ok := compiler.UnpackMap(in) @@ -5281,10 +5023,10 @@ func NewSecurityDefinitions(in interface{}, context *compiler.Context) (*Securit // repeated NamedSecurityDefinitionsItem additional_properties = 1; // MAP: SecurityDefinitionsItem x.AdditionalProperties = make([]*NamedSecurityDefinitionsItem, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] pair := &NamedSecurityDefinitionsItem{} pair.Name = k var err error @@ -5300,7 +5042,7 @@ func NewSecurityDefinitions(in interface{}, context *compiler.Context) (*Securit } // NewSecurityDefinitionsItem creates an object of type SecurityDefinitionsItem if possible, returning an error if not. -func NewSecurityDefinitionsItem(in interface{}, context *compiler.Context) (*SecurityDefinitionsItem, error) { +func NewSecurityDefinitionsItem(in *yaml.Node, context *compiler.Context) (*SecurityDefinitionsItem, error) { errors := make([]error, 0) x := &SecurityDefinitionsItem{} matched := false @@ -5396,7 +5138,7 @@ func NewSecurityDefinitionsItem(in interface{}, context *compiler.Context) (*Sec } // NewSecurityRequirement creates an object of type SecurityRequirement if possible, returning an error if not. -func NewSecurityRequirement(in interface{}, context *compiler.Context) (*SecurityRequirement, error) { +func NewSecurityRequirement(in *yaml.Node, context *compiler.Context) (*SecurityRequirement, error) { errors := make([]error, 0) x := &SecurityRequirement{} m, ok := compiler.UnpackMap(in) @@ -5407,10 +5149,10 @@ func NewSecurityRequirement(in interface{}, context *compiler.Context) (*Securit // repeated NamedStringArray additional_properties = 1; // MAP: StringArray x.AdditionalProperties = make([]*NamedStringArray, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] pair := &NamedStringArray{} pair.Name = k var err error @@ -5426,24 +5168,19 @@ func NewSecurityRequirement(in interface{}, context *compiler.Context) (*Securit } // NewStringArray creates an object of type StringArray if possible, returning an error if not. -func NewStringArray(in interface{}, context *compiler.Context) (*StringArray, error) { +func NewStringArray(in *yaml.Node, context *compiler.Context) (*StringArray, error) { errors := make([]error, 0) x := &StringArray{} - a, ok := in.([]interface{}) - if !ok { - message := fmt.Sprintf("has unexpected value for StringArray: %+v (%T)", in, in) - errors = append(errors, compiler.NewError(context, message)) - } else { - x.Value = make([]string, 0) - for _, s := range a { - x.Value = append(x.Value, s.(string)) - } + x.Value = make([]string, 0) + for _, node := range in.Content { + s, _ := compiler.StringForScalarNode(node) + x.Value = append(x.Value, s) } return x, compiler.NewErrorGroupOrNil(errors) } // NewTag creates an object of type Tag if possible, returning an error if not. -func NewTag(in interface{}, context *compiler.Context) (*Tag, error) { +func NewTag(in *yaml.Node, context *compiler.Context) (*Tag, error) { errors := make([]error, 0) x := &Tag{} m, ok := compiler.UnpackMap(in) @@ -5467,18 +5204,18 @@ func NewTag(in interface{}, context *compiler.Context) (*Tag, error) { // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string description = 2; v2 := compiler.MapValueForKey(m, "description") if v2 != nil { - x.Description, ok = v2.(string) + x.Description, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } @@ -5494,20 +5231,20 @@ func NewTag(in interface{}, context *compiler.Context) (*Tag, error) { // repeated NamedAny vendor_extension = 4; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -5527,17 +5264,19 @@ func NewTag(in interface{}, context *compiler.Context) (*Tag, error) { } // NewTypeItem creates an object of type TypeItem if possible, returning an error if not. -func NewTypeItem(in interface{}, context *compiler.Context) (*TypeItem, error) { +func NewTypeItem(in *yaml.Node, context *compiler.Context) (*TypeItem, error) { errors := make([]error, 0) x := &TypeItem{} - switch in := in.(type) { - case string: + v1 := in + switch v1.Kind { + case yaml.ScalarNode: x.Value = make([]string, 0) - x.Value = append(x.Value, in) - case []interface{}: + x.Value = append(x.Value, v1.Value) + case yaml.SequenceNode: x.Value = make([]string, 0) - for _, v := range in { - value, ok := v.(string) + for _, v := range v1.Content { + value := v.Value + ok := v.Kind == yaml.ScalarNode if ok { x.Value = append(x.Value, value) } else { @@ -5553,7 +5292,7 @@ func NewTypeItem(in interface{}, context *compiler.Context) (*TypeItem, error) { } // NewVendorExtension creates an object of type VendorExtension if possible, returning an error if not. -func NewVendorExtension(in interface{}, context *compiler.Context) (*VendorExtension, error) { +func NewVendorExtension(in *yaml.Node, context *compiler.Context) (*VendorExtension, error) { errors := make([]error, 0) x := &VendorExtension{} m, ok := compiler.UnpackMap(in) @@ -5564,19 +5303,19 @@ func NewVendorExtension(in interface{}, context *compiler.Context) (*VendorExten // repeated NamedAny additional_properties = 1; // MAP: Any x.AdditionalProperties = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -5595,7 +5334,7 @@ func NewVendorExtension(in interface{}, context *compiler.Context) (*VendorExten } // NewXml creates an object of type Xml if possible, returning an error if not. -func NewXml(in interface{}, context *compiler.Context) (*Xml, error) { +func NewXml(in *yaml.Node, context *compiler.Context) (*Xml, error) { errors := make([]error, 0) x := &Xml{} m, ok := compiler.UnpackMap(in) @@ -5613,65 +5352,65 @@ func NewXml(in interface{}, context *compiler.Context) (*Xml, error) { // string name = 1; v1 := compiler.MapValueForKey(m, "name") if v1 != nil { - x.Name, ok = v1.(string) + x.Name, ok = compiler.StringForScalarNode(v1) if !ok { - message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) errors = append(errors, compiler.NewError(context, message)) } } // string namespace = 2; v2 := compiler.MapValueForKey(m, "namespace") if v2 != nil { - x.Namespace, ok = v2.(string) + x.Namespace, ok = compiler.StringForScalarNode(v2) if !ok { - message := fmt.Sprintf("has unexpected value for namespace: %+v (%T)", v2, v2) + message := fmt.Sprintf("has unexpected value for namespace: %s", compiler.Display(v2)) errors = append(errors, compiler.NewError(context, message)) } } // string prefix = 3; v3 := compiler.MapValueForKey(m, "prefix") if v3 != nil { - x.Prefix, ok = v3.(string) + x.Prefix, ok = compiler.StringForScalarNode(v3) if !ok { - message := fmt.Sprintf("has unexpected value for prefix: %+v (%T)", v3, v3) + message := fmt.Sprintf("has unexpected value for prefix: %s", compiler.Display(v3)) errors = append(errors, compiler.NewError(context, message)) } } // bool attribute = 4; v4 := compiler.MapValueForKey(m, "attribute") if v4 != nil { - x.Attribute, ok = v4.(bool) + x.Attribute, ok = compiler.BoolForScalarNode(v4) if !ok { - message := fmt.Sprintf("has unexpected value for attribute: %+v (%T)", v4, v4) + message := fmt.Sprintf("has unexpected value for attribute: %s", compiler.Display(v4)) errors = append(errors, compiler.NewError(context, message)) } } // bool wrapped = 5; v5 := compiler.MapValueForKey(m, "wrapped") if v5 != nil { - x.Wrapped, ok = v5.(bool) + x.Wrapped, ok = compiler.BoolForScalarNode(v5) if !ok { - message := fmt.Sprintf("has unexpected value for wrapped: %+v (%T)", v5, v5) + message := fmt.Sprintf("has unexpected value for wrapped: %s", compiler.Display(v5)) errors = append(errors, compiler.NewError(context, message)) } } // repeated NamedAny vendor_extension = 6; // MAP: Any ^x- x.VendorExtension = make([]*NamedAny, 0) - for _, item := range m { - k, ok := compiler.StringValue(item.Key) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) if ok { - v := item.Value + v := m.Content[i+1] if strings.HasPrefix(k, "x-") { pair := &NamedAny{} pair.Name = k result := &Any{} - handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + handled, resultFromExt, err := compiler.CallExtension(context, v, k) if handled { if err != nil { errors = append(errors, err) } else { - bytes, _ := yaml.Marshal(v) + bytes := compiler.Marshal(v) result.Yaml = string(bytes) result.Value = resultFromExt pair.Value = result @@ -5691,7 +5430,7 @@ func NewXml(in interface{}, context *compiler.Context) (*Xml, error) { } // ResolveReferences resolves references found inside AdditionalPropertiesItem objects. -func (m *AdditionalPropertiesItem) ResolveReferences(root string) (interface{}, error) { +func (m *AdditionalPropertiesItem) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) { p, ok := m.Oneof.(*AdditionalPropertiesItem_Schema) @@ -5706,13 +5445,13 @@ func (m *AdditionalPropertiesItem) ResolveReferences(root string) (interface{}, } // ResolveReferences resolves references found inside Any objects. -func (m *Any) ResolveReferences(root string) (interface{}, error) { +func (m *Any) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) return nil, compiler.NewErrorGroupOrNil(errors) } // ResolveReferences resolves references found inside ApiKeySecurity objects. -func (m *ApiKeySecurity) ResolveReferences(root string) (interface{}, error) { +func (m *ApiKeySecurity) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.VendorExtension { if item != nil { @@ -5726,7 +5465,7 @@ func (m *ApiKeySecurity) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside BasicAuthenticationSecurity objects. -func (m *BasicAuthenticationSecurity) ResolveReferences(root string) (interface{}, error) { +func (m *BasicAuthenticationSecurity) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.VendorExtension { if item != nil { @@ -5740,7 +5479,7 @@ func (m *BasicAuthenticationSecurity) ResolveReferences(root string) (interface{ } // ResolveReferences resolves references found inside BodyParameter objects. -func (m *BodyParameter) ResolveReferences(root string) (interface{}, error) { +func (m *BodyParameter) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Schema != nil { _, err := m.Schema.ResolveReferences(root) @@ -5760,7 +5499,7 @@ func (m *BodyParameter) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Contact objects. -func (m *Contact) ResolveReferences(root string) (interface{}, error) { +func (m *Contact) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.VendorExtension { if item != nil { @@ -5774,7 +5513,7 @@ func (m *Contact) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Default objects. -func (m *Default) ResolveReferences(root string) (interface{}, error) { +func (m *Default) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.AdditionalProperties { if item != nil { @@ -5788,7 +5527,7 @@ func (m *Default) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Definitions objects. -func (m *Definitions) ResolveReferences(root string) (interface{}, error) { +func (m *Definitions) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.AdditionalProperties { if item != nil { @@ -5802,7 +5541,7 @@ func (m *Definitions) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Document objects. -func (m *Document) ResolveReferences(root string) (interface{}, error) { +func (m *Document) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Info != nil { _, err := m.Info.ResolveReferences(root) @@ -5874,7 +5613,7 @@ func (m *Document) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Examples objects. -func (m *Examples) ResolveReferences(root string) (interface{}, error) { +func (m *Examples) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.AdditionalProperties { if item != nil { @@ -5888,7 +5627,7 @@ func (m *Examples) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside ExternalDocs objects. -func (m *ExternalDocs) ResolveReferences(root string) (interface{}, error) { +func (m *ExternalDocs) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.VendorExtension { if item != nil { @@ -5902,7 +5641,7 @@ func (m *ExternalDocs) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside FileSchema objects. -func (m *FileSchema) ResolveReferences(root string) (interface{}, error) { +func (m *FileSchema) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Default != nil { _, err := m.Default.ResolveReferences(root) @@ -5934,7 +5673,7 @@ func (m *FileSchema) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside FormDataParameterSubSchema objects. -func (m *FormDataParameterSubSchema) ResolveReferences(root string) (interface{}, error) { +func (m *FormDataParameterSubSchema) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Items != nil { _, err := m.Items.ResolveReferences(root) @@ -5968,7 +5707,7 @@ func (m *FormDataParameterSubSchema) ResolveReferences(root string) (interface{} } // ResolveReferences resolves references found inside Header objects. -func (m *Header) ResolveReferences(root string) (interface{}, error) { +func (m *Header) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Items != nil { _, err := m.Items.ResolveReferences(root) @@ -6002,7 +5741,7 @@ func (m *Header) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside HeaderParameterSubSchema objects. -func (m *HeaderParameterSubSchema) ResolveReferences(root string) (interface{}, error) { +func (m *HeaderParameterSubSchema) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Items != nil { _, err := m.Items.ResolveReferences(root) @@ -6036,7 +5775,7 @@ func (m *HeaderParameterSubSchema) ResolveReferences(root string) (interface{}, } // ResolveReferences resolves references found inside Headers objects. -func (m *Headers) ResolveReferences(root string) (interface{}, error) { +func (m *Headers) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.AdditionalProperties { if item != nil { @@ -6050,7 +5789,7 @@ func (m *Headers) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Info objects. -func (m *Info) ResolveReferences(root string) (interface{}, error) { +func (m *Info) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Contact != nil { _, err := m.Contact.ResolveReferences(root) @@ -6076,7 +5815,7 @@ func (m *Info) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside ItemsItem objects. -func (m *ItemsItem) ResolveReferences(root string) (interface{}, error) { +func (m *ItemsItem) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.Schema { if item != nil { @@ -6090,7 +5829,7 @@ func (m *ItemsItem) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside JsonReference objects. -func (m *JsonReference) ResolveReferences(root string) (interface{}, error) { +func (m *JsonReference) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.XRef != "" { info, err := compiler.ReadInfoForRef(root, m.XRef) @@ -6110,7 +5849,7 @@ func (m *JsonReference) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside License objects. -func (m *License) ResolveReferences(root string) (interface{}, error) { +func (m *License) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.VendorExtension { if item != nil { @@ -6124,7 +5863,7 @@ func (m *License) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside NamedAny objects. -func (m *NamedAny) ResolveReferences(root string) (interface{}, error) { +func (m *NamedAny) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Value != nil { _, err := m.Value.ResolveReferences(root) @@ -6136,7 +5875,7 @@ func (m *NamedAny) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside NamedHeader objects. -func (m *NamedHeader) ResolveReferences(root string) (interface{}, error) { +func (m *NamedHeader) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Value != nil { _, err := m.Value.ResolveReferences(root) @@ -6148,7 +5887,7 @@ func (m *NamedHeader) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside NamedParameter objects. -func (m *NamedParameter) ResolveReferences(root string) (interface{}, error) { +func (m *NamedParameter) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Value != nil { _, err := m.Value.ResolveReferences(root) @@ -6160,7 +5899,7 @@ func (m *NamedParameter) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside NamedPathItem objects. -func (m *NamedPathItem) ResolveReferences(root string) (interface{}, error) { +func (m *NamedPathItem) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Value != nil { _, err := m.Value.ResolveReferences(root) @@ -6172,7 +5911,7 @@ func (m *NamedPathItem) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside NamedResponse objects. -func (m *NamedResponse) ResolveReferences(root string) (interface{}, error) { +func (m *NamedResponse) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Value != nil { _, err := m.Value.ResolveReferences(root) @@ -6184,7 +5923,7 @@ func (m *NamedResponse) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside NamedResponseValue objects. -func (m *NamedResponseValue) ResolveReferences(root string) (interface{}, error) { +func (m *NamedResponseValue) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Value != nil { _, err := m.Value.ResolveReferences(root) @@ -6196,7 +5935,7 @@ func (m *NamedResponseValue) ResolveReferences(root string) (interface{}, error) } // ResolveReferences resolves references found inside NamedSchema objects. -func (m *NamedSchema) ResolveReferences(root string) (interface{}, error) { +func (m *NamedSchema) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Value != nil { _, err := m.Value.ResolveReferences(root) @@ -6208,7 +5947,7 @@ func (m *NamedSchema) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside NamedSecurityDefinitionsItem objects. -func (m *NamedSecurityDefinitionsItem) ResolveReferences(root string) (interface{}, error) { +func (m *NamedSecurityDefinitionsItem) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Value != nil { _, err := m.Value.ResolveReferences(root) @@ -6220,13 +5959,13 @@ func (m *NamedSecurityDefinitionsItem) ResolveReferences(root string) (interface } // ResolveReferences resolves references found inside NamedString objects. -func (m *NamedString) ResolveReferences(root string) (interface{}, error) { +func (m *NamedString) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) return nil, compiler.NewErrorGroupOrNil(errors) } // ResolveReferences resolves references found inside NamedStringArray objects. -func (m *NamedStringArray) ResolveReferences(root string) (interface{}, error) { +func (m *NamedStringArray) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Value != nil { _, err := m.Value.ResolveReferences(root) @@ -6238,7 +5977,7 @@ func (m *NamedStringArray) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside NonBodyParameter objects. -func (m *NonBodyParameter) ResolveReferences(root string) (interface{}, error) { +func (m *NonBodyParameter) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) { p, ok := m.Oneof.(*NonBodyParameter_HeaderParameterSubSchema) @@ -6280,7 +6019,7 @@ func (m *NonBodyParameter) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Oauth2AccessCodeSecurity objects. -func (m *Oauth2AccessCodeSecurity) ResolveReferences(root string) (interface{}, error) { +func (m *Oauth2AccessCodeSecurity) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Scopes != nil { _, err := m.Scopes.ResolveReferences(root) @@ -6300,7 +6039,7 @@ func (m *Oauth2AccessCodeSecurity) ResolveReferences(root string) (interface{}, } // ResolveReferences resolves references found inside Oauth2ApplicationSecurity objects. -func (m *Oauth2ApplicationSecurity) ResolveReferences(root string) (interface{}, error) { +func (m *Oauth2ApplicationSecurity) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Scopes != nil { _, err := m.Scopes.ResolveReferences(root) @@ -6320,7 +6059,7 @@ func (m *Oauth2ApplicationSecurity) ResolveReferences(root string) (interface{}, } // ResolveReferences resolves references found inside Oauth2ImplicitSecurity objects. -func (m *Oauth2ImplicitSecurity) ResolveReferences(root string) (interface{}, error) { +func (m *Oauth2ImplicitSecurity) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Scopes != nil { _, err := m.Scopes.ResolveReferences(root) @@ -6340,7 +6079,7 @@ func (m *Oauth2ImplicitSecurity) ResolveReferences(root string) (interface{}, er } // ResolveReferences resolves references found inside Oauth2PasswordSecurity objects. -func (m *Oauth2PasswordSecurity) ResolveReferences(root string) (interface{}, error) { +func (m *Oauth2PasswordSecurity) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Scopes != nil { _, err := m.Scopes.ResolveReferences(root) @@ -6360,7 +6099,7 @@ func (m *Oauth2PasswordSecurity) ResolveReferences(root string) (interface{}, er } // ResolveReferences resolves references found inside Oauth2Scopes objects. -func (m *Oauth2Scopes) ResolveReferences(root string) (interface{}, error) { +func (m *Oauth2Scopes) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.AdditionalProperties { if item != nil { @@ -6374,7 +6113,7 @@ func (m *Oauth2Scopes) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Operation objects. -func (m *Operation) ResolveReferences(root string) (interface{}, error) { +func (m *Operation) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.ExternalDocs != nil { _, err := m.ExternalDocs.ResolveReferences(root) @@ -6416,7 +6155,7 @@ func (m *Operation) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Parameter objects. -func (m *Parameter) ResolveReferences(root string) (interface{}, error) { +func (m *Parameter) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) { p, ok := m.Oneof.(*Parameter_BodyParameter) @@ -6440,7 +6179,7 @@ func (m *Parameter) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside ParameterDefinitions objects. -func (m *ParameterDefinitions) ResolveReferences(root string) (interface{}, error) { +func (m *ParameterDefinitions) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.AdditionalProperties { if item != nil { @@ -6454,7 +6193,7 @@ func (m *ParameterDefinitions) ResolveReferences(root string) (interface{}, erro } // ResolveReferences resolves references found inside ParametersItem objects. -func (m *ParametersItem) ResolveReferences(root string) (interface{}, error) { +func (m *ParametersItem) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) { p, ok := m.Oneof.(*ParametersItem_Parameter) @@ -6486,7 +6225,7 @@ func (m *ParametersItem) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside PathItem objects. -func (m *PathItem) ResolveReferences(root string) (interface{}, error) { +func (m *PathItem) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.XRef != "" { info, err := compiler.ReadInfoForRef(root, m.XRef) @@ -6564,7 +6303,7 @@ func (m *PathItem) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside PathParameterSubSchema objects. -func (m *PathParameterSubSchema) ResolveReferences(root string) (interface{}, error) { +func (m *PathParameterSubSchema) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Items != nil { _, err := m.Items.ResolveReferences(root) @@ -6598,7 +6337,7 @@ func (m *PathParameterSubSchema) ResolveReferences(root string) (interface{}, er } // ResolveReferences resolves references found inside Paths objects. -func (m *Paths) ResolveReferences(root string) (interface{}, error) { +func (m *Paths) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.VendorExtension { if item != nil { @@ -6620,7 +6359,7 @@ func (m *Paths) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside PrimitivesItems objects. -func (m *PrimitivesItems) ResolveReferences(root string) (interface{}, error) { +func (m *PrimitivesItems) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Items != nil { _, err := m.Items.ResolveReferences(root) @@ -6654,7 +6393,7 @@ func (m *PrimitivesItems) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Properties objects. -func (m *Properties) ResolveReferences(root string) (interface{}, error) { +func (m *Properties) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.AdditionalProperties { if item != nil { @@ -6668,7 +6407,7 @@ func (m *Properties) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside QueryParameterSubSchema objects. -func (m *QueryParameterSubSchema) ResolveReferences(root string) (interface{}, error) { +func (m *QueryParameterSubSchema) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Items != nil { _, err := m.Items.ResolveReferences(root) @@ -6702,7 +6441,7 @@ func (m *QueryParameterSubSchema) ResolveReferences(root string) (interface{}, e } // ResolveReferences resolves references found inside Response objects. -func (m *Response) ResolveReferences(root string) (interface{}, error) { +func (m *Response) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.Schema != nil { _, err := m.Schema.ResolveReferences(root) @@ -6734,7 +6473,7 @@ func (m *Response) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside ResponseDefinitions objects. -func (m *ResponseDefinitions) ResolveReferences(root string) (interface{}, error) { +func (m *ResponseDefinitions) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.AdditionalProperties { if item != nil { @@ -6748,7 +6487,7 @@ func (m *ResponseDefinitions) ResolveReferences(root string) (interface{}, error } // ResolveReferences resolves references found inside ResponseValue objects. -func (m *ResponseValue) ResolveReferences(root string) (interface{}, error) { +func (m *ResponseValue) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) { p, ok := m.Oneof.(*ResponseValue_Response) @@ -6780,7 +6519,7 @@ func (m *ResponseValue) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Responses objects. -func (m *Responses) ResolveReferences(root string) (interface{}, error) { +func (m *Responses) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.ResponseCode { if item != nil { @@ -6802,7 +6541,7 @@ func (m *Responses) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Schema objects. -func (m *Schema) ResolveReferences(root string) (interface{}, error) { +func (m *Schema) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.XRef != "" { info, err := compiler.ReadInfoForRef(root, m.XRef) @@ -6894,7 +6633,7 @@ func (m *Schema) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside SchemaItem objects. -func (m *SchemaItem) ResolveReferences(root string) (interface{}, error) { +func (m *SchemaItem) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) { p, ok := m.Oneof.(*SchemaItem_Schema) @@ -6918,7 +6657,7 @@ func (m *SchemaItem) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside SecurityDefinitions objects. -func (m *SecurityDefinitions) ResolveReferences(root string) (interface{}, error) { +func (m *SecurityDefinitions) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.AdditionalProperties { if item != nil { @@ -6932,7 +6671,7 @@ func (m *SecurityDefinitions) ResolveReferences(root string) (interface{}, error } // ResolveReferences resolves references found inside SecurityDefinitionsItem objects. -func (m *SecurityDefinitionsItem) ResolveReferences(root string) (interface{}, error) { +func (m *SecurityDefinitionsItem) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) { p, ok := m.Oneof.(*SecurityDefinitionsItem_BasicAuthenticationSecurity) @@ -6992,7 +6731,7 @@ func (m *SecurityDefinitionsItem) ResolveReferences(root string) (interface{}, e } // ResolveReferences resolves references found inside SecurityRequirement objects. -func (m *SecurityRequirement) ResolveReferences(root string) (interface{}, error) { +func (m *SecurityRequirement) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.AdditionalProperties { if item != nil { @@ -7006,13 +6745,13 @@ func (m *SecurityRequirement) ResolveReferences(root string) (interface{}, error } // ResolveReferences resolves references found inside StringArray objects. -func (m *StringArray) ResolveReferences(root string) (interface{}, error) { +func (m *StringArray) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) return nil, compiler.NewErrorGroupOrNil(errors) } // ResolveReferences resolves references found inside Tag objects. -func (m *Tag) ResolveReferences(root string) (interface{}, error) { +func (m *Tag) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) if m.ExternalDocs != nil { _, err := m.ExternalDocs.ResolveReferences(root) @@ -7032,13 +6771,13 @@ func (m *Tag) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside TypeItem objects. -func (m *TypeItem) ResolveReferences(root string) (interface{}, error) { +func (m *TypeItem) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) return nil, compiler.NewErrorGroupOrNil(errors) } // ResolveReferences resolves references found inside VendorExtension objects. -func (m *VendorExtension) ResolveReferences(root string) (interface{}, error) { +func (m *VendorExtension) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.AdditionalProperties { if item != nil { @@ -7052,7 +6791,7 @@ func (m *VendorExtension) ResolveReferences(root string) (interface{}, error) { } // ResolveReferences resolves references found inside Xml objects. -func (m *Xml) ResolveReferences(root string) (interface{}, error) { +func (m *Xml) ResolveReferences(root string) (*yaml.Node, error) { errors := make([]error, 0) for _, item := range m.VendorExtension { if item != nil { @@ -7066,7 +6805,7 @@ func (m *Xml) ResolveReferences(root string) (interface{}, error) { } // ToRawInfo returns a description of AdditionalPropertiesItem suitable for JSON or YAML export. -func (m *AdditionalPropertiesItem) ToRawInfo() interface{} { +func (m *AdditionalPropertiesItem) ToRawInfo() *yaml.Node { // ONE OF WRAPPER // AdditionalPropertiesItem // {Name:schema Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} @@ -7076,792 +6815,885 @@ func (m *AdditionalPropertiesItem) ToRawInfo() interface{} { } // {Name:boolean Type:bool StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if v1, ok := m.GetOneof().(*AdditionalPropertiesItem_Boolean); ok { - return v1.Boolean + return compiler.NewScalarNodeForBool(v1.Boolean) } return nil } // ToRawInfo returns a description of Any suitable for JSON or YAML export. -func (m *Any) ToRawInfo() interface{} { +func (m *Any) ToRawInfo() *yaml.Node { var err error - var info1 []yaml.MapSlice - err = yaml.Unmarshal([]byte(m.Yaml), &info1) + var node yaml.Node + err = yaml.Unmarshal([]byte(m.Yaml), &node) if err == nil { - return info1 - } - var info2 yaml.MapSlice - err = yaml.Unmarshal([]byte(m.Yaml), &info2) - if err == nil { - return info2 - } - var info3 interface{} - err = yaml.Unmarshal([]byte(m.Yaml), &info3) - if err == nil { - return info3 + if node.Kind == yaml.DocumentNode { + return node.Content[0] + } + return &node + } else { + return nil } return nil } // ToRawInfo returns a description of ApiKeySecurity suitable for JSON or YAML export. -func (m *ApiKeySecurity) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *ApiKeySecurity) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) // always include this required field. - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) // always include this required field. - info = append(info, yaml.MapItem{Key: "in", Value: m.In}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("in")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.In)) if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of BasicAuthenticationSecurity suitable for JSON or YAML export. -func (m *BasicAuthenticationSecurity) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *BasicAuthenticationSecurity) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of BodyParameter suitable for JSON or YAML export. -func (m *BodyParameter) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *BodyParameter) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } // always include this required field. - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) // always include this required field. - info = append(info, yaml.MapItem{Key: "in", Value: m.In}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("in")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.In)) if m.Required != false { - info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("required")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Required)) } // always include this required field. - info = append(info, yaml.MapItem{Key: "schema", Value: m.Schema.ToRawInfo()}) - // &{Name:schema Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + info.Content = append(info.Content, compiler.NewScalarNodeForString("schema")) + info.Content = append(info.Content, m.Schema.ToRawInfo()) if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Contact suitable for JSON or YAML export. -func (m *Contact) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Contact) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } if m.Url != "" { - info = append(info, yaml.MapItem{Key: "url", Value: m.Url}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("url")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Url)) } if m.Email != "" { - info = append(info, yaml.MapItem{Key: "email", Value: m.Email}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("email")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Email)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Default suitable for JSON or YAML export. -func (m *Default) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Default) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:additionalProperties Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern: Implicit:false Description:} return info } // ToRawInfo returns a description of Definitions suitable for JSON or YAML export. -func (m *Definitions) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Definitions) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:additionalProperties Type:NamedSchema StringEnumValues:[] MapType:Schema Repeated:true Pattern: Implicit:true Description:} return info } // ToRawInfo returns a description of Document suitable for JSON or YAML export. -func (m *Document) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Document) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "swagger", Value: m.Swagger}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("swagger")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Swagger)) // always include this required field. - info = append(info, yaml.MapItem{Key: "info", Value: m.Info.ToRawInfo()}) - // &{Name:info Type:Info StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + info.Content = append(info.Content, compiler.NewScalarNodeForString("info")) + info.Content = append(info.Content, m.Info.ToRawInfo()) if m.Host != "" { - info = append(info, yaml.MapItem{Key: "host", Value: m.Host}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("host")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Host)) } if m.BasePath != "" { - info = append(info, yaml.MapItem{Key: "basePath", Value: m.BasePath}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("basePath")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.BasePath)) } if len(m.Schemes) != 0 { - info = append(info, yaml.MapItem{Key: "schemes", Value: m.Schemes}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("schemes")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Schemes)) } if len(m.Consumes) != 0 { - info = append(info, yaml.MapItem{Key: "consumes", Value: m.Consumes}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("consumes")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Consumes)) } if len(m.Produces) != 0 { - info = append(info, yaml.MapItem{Key: "produces", Value: m.Produces}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("produces")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Produces)) } // always include this required field. - info = append(info, yaml.MapItem{Key: "paths", Value: m.Paths.ToRawInfo()}) - // &{Name:paths Type:Paths StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + info.Content = append(info.Content, compiler.NewScalarNodeForString("paths")) + info.Content = append(info.Content, m.Paths.ToRawInfo()) if m.Definitions != nil { - info = append(info, yaml.MapItem{Key: "definitions", Value: m.Definitions.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("definitions")) + info.Content = append(info.Content, m.Definitions.ToRawInfo()) } - // &{Name:definitions Type:Definitions StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Parameters != nil { - info = append(info, yaml.MapItem{Key: "parameters", Value: m.Parameters.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("parameters")) + info.Content = append(info.Content, m.Parameters.ToRawInfo()) } - // &{Name:parameters Type:ParameterDefinitions StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Responses != nil { - info = append(info, yaml.MapItem{Key: "responses", Value: m.Responses.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("responses")) + info.Content = append(info.Content, m.Responses.ToRawInfo()) } - // &{Name:responses Type:ResponseDefinitions StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if len(m.Security) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Security { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "security", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("security")) + info.Content = append(info.Content, items) } - // &{Name:security Type:SecurityRequirement StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} if m.SecurityDefinitions != nil { - info = append(info, yaml.MapItem{Key: "securityDefinitions", Value: m.SecurityDefinitions.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("securityDefinitions")) + info.Content = append(info.Content, m.SecurityDefinitions.ToRawInfo()) } - // &{Name:securityDefinitions Type:SecurityDefinitions StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if len(m.Tags) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Tags { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "tags", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("tags")) + info.Content = append(info.Content, items) } - // &{Name:tags Type:Tag StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} if m.ExternalDocs != nil { - info = append(info, yaml.MapItem{Key: "externalDocs", Value: m.ExternalDocs.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("externalDocs")) + info.Content = append(info.Content, m.ExternalDocs.ToRawInfo()) } - // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Examples suitable for JSON or YAML export. -func (m *Examples) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Examples) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:additionalProperties Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern: Implicit:true Description:} return info } // ToRawInfo returns a description of ExternalDocs suitable for JSON or YAML export. -func (m *ExternalDocs) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *ExternalDocs) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } // always include this required field. - info = append(info, yaml.MapItem{Key: "url", Value: m.Url}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("url")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Url)) if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of FileSchema suitable for JSON or YAML export. -func (m *FileSchema) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *FileSchema) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Format != "" { - info = append(info, yaml.MapItem{Key: "format", Value: m.Format}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("format")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Format)) } if m.Title != "" { - info = append(info, yaml.MapItem{Key: "title", Value: m.Title}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("title")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Title)) } if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.Default != nil { - info = append(info, yaml.MapItem{Key: "default", Value: m.Default.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("default")) + info.Content = append(info.Content, m.Default.ToRawInfo()) } - // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if len(m.Required) != 0 { - info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("required")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Required)) } // always include this required field. - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) if m.ReadOnly != false { - info = append(info, yaml.MapItem{Key: "readOnly", Value: m.ReadOnly}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("readOnly")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ReadOnly)) } if m.ExternalDocs != nil { - info = append(info, yaml.MapItem{Key: "externalDocs", Value: m.ExternalDocs.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("externalDocs")) + info.Content = append(info.Content, m.ExternalDocs.ToRawInfo()) } - // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Example != nil { - info = append(info, yaml.MapItem{Key: "example", Value: m.Example.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("example")) + info.Content = append(info.Content, m.Example.ToRawInfo()) } - // &{Name:example Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of FormDataParameterSubSchema suitable for JSON or YAML export. -func (m *FormDataParameterSubSchema) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *FormDataParameterSubSchema) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Required != false { - info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("required")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Required)) } if m.In != "" { - info = append(info, yaml.MapItem{Key: "in", Value: m.In}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("in")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.In)) } if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } if m.AllowEmptyValue != false { - info = append(info, yaml.MapItem{Key: "allowEmptyValue", Value: m.AllowEmptyValue}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("allowEmptyValue")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.AllowEmptyValue)) } if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) } if m.Format != "" { - info = append(info, yaml.MapItem{Key: "format", Value: m.Format}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("format")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Format)) } if m.Items != nil { - info = append(info, yaml.MapItem{Key: "items", Value: m.Items.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("items")) + info.Content = append(info.Content, m.Items.ToRawInfo()) } - // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.CollectionFormat != "" { - info = append(info, yaml.MapItem{Key: "collectionFormat", Value: m.CollectionFormat}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("collectionFormat")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.CollectionFormat)) } if m.Default != nil { - info = append(info, yaml.MapItem{Key: "default", Value: m.Default.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("default")) + info.Content = append(info.Content, m.Default.ToRawInfo()) } - // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Maximum != 0.0 { - info = append(info, yaml.MapItem{Key: "maximum", Value: m.Maximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Maximum)) } if m.ExclusiveMaximum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMaximum", Value: m.ExclusiveMaximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMaximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMaximum)) } if m.Minimum != 0.0 { - info = append(info, yaml.MapItem{Key: "minimum", Value: m.Minimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Minimum)) } if m.ExclusiveMinimum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMinimum", Value: m.ExclusiveMinimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMinimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMinimum)) } if m.MaxLength != 0 { - info = append(info, yaml.MapItem{Key: "maxLength", Value: m.MaxLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxLength)) } if m.MinLength != 0 { - info = append(info, yaml.MapItem{Key: "minLength", Value: m.MinLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinLength)) } if m.Pattern != "" { - info = append(info, yaml.MapItem{Key: "pattern", Value: m.Pattern}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("pattern")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Pattern)) } if m.MaxItems != 0 { - info = append(info, yaml.MapItem{Key: "maxItems", Value: m.MaxItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxItems)) } if m.MinItems != 0 { - info = append(info, yaml.MapItem{Key: "minItems", Value: m.MinItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinItems)) } if m.UniqueItems != false { - info = append(info, yaml.MapItem{Key: "uniqueItems", Value: m.UniqueItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("uniqueItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.UniqueItems)) } if len(m.Enum) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Enum { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "enum", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("enum")) + info.Content = append(info.Content, items) } - // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} if m.MultipleOf != 0.0 { - info = append(info, yaml.MapItem{Key: "multipleOf", Value: m.MultipleOf}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("multipleOf")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.MultipleOf)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Header suitable for JSON or YAML export. -func (m *Header) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Header) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) if m.Format != "" { - info = append(info, yaml.MapItem{Key: "format", Value: m.Format}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("format")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Format)) } if m.Items != nil { - info = append(info, yaml.MapItem{Key: "items", Value: m.Items.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("items")) + info.Content = append(info.Content, m.Items.ToRawInfo()) } - // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.CollectionFormat != "" { - info = append(info, yaml.MapItem{Key: "collectionFormat", Value: m.CollectionFormat}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("collectionFormat")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.CollectionFormat)) } if m.Default != nil { - info = append(info, yaml.MapItem{Key: "default", Value: m.Default.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("default")) + info.Content = append(info.Content, m.Default.ToRawInfo()) } - // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Maximum != 0.0 { - info = append(info, yaml.MapItem{Key: "maximum", Value: m.Maximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Maximum)) } if m.ExclusiveMaximum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMaximum", Value: m.ExclusiveMaximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMaximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMaximum)) } if m.Minimum != 0.0 { - info = append(info, yaml.MapItem{Key: "minimum", Value: m.Minimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Minimum)) } if m.ExclusiveMinimum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMinimum", Value: m.ExclusiveMinimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMinimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMinimum)) } if m.MaxLength != 0 { - info = append(info, yaml.MapItem{Key: "maxLength", Value: m.MaxLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxLength)) } if m.MinLength != 0 { - info = append(info, yaml.MapItem{Key: "minLength", Value: m.MinLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinLength)) } if m.Pattern != "" { - info = append(info, yaml.MapItem{Key: "pattern", Value: m.Pattern}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("pattern")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Pattern)) } if m.MaxItems != 0 { - info = append(info, yaml.MapItem{Key: "maxItems", Value: m.MaxItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxItems)) } if m.MinItems != 0 { - info = append(info, yaml.MapItem{Key: "minItems", Value: m.MinItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinItems)) } if m.UniqueItems != false { - info = append(info, yaml.MapItem{Key: "uniqueItems", Value: m.UniqueItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("uniqueItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.UniqueItems)) } if len(m.Enum) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Enum { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "enum", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("enum")) + info.Content = append(info.Content, items) } - // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} if m.MultipleOf != 0.0 { - info = append(info, yaml.MapItem{Key: "multipleOf", Value: m.MultipleOf}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("multipleOf")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.MultipleOf)) } if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of HeaderParameterSubSchema suitable for JSON or YAML export. -func (m *HeaderParameterSubSchema) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *HeaderParameterSubSchema) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Required != false { - info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("required")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Required)) } if m.In != "" { - info = append(info, yaml.MapItem{Key: "in", Value: m.In}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("in")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.In)) } if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) } if m.Format != "" { - info = append(info, yaml.MapItem{Key: "format", Value: m.Format}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("format")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Format)) } if m.Items != nil { - info = append(info, yaml.MapItem{Key: "items", Value: m.Items.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("items")) + info.Content = append(info.Content, m.Items.ToRawInfo()) } - // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.CollectionFormat != "" { - info = append(info, yaml.MapItem{Key: "collectionFormat", Value: m.CollectionFormat}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("collectionFormat")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.CollectionFormat)) } if m.Default != nil { - info = append(info, yaml.MapItem{Key: "default", Value: m.Default.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("default")) + info.Content = append(info.Content, m.Default.ToRawInfo()) } - // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Maximum != 0.0 { - info = append(info, yaml.MapItem{Key: "maximum", Value: m.Maximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Maximum)) } if m.ExclusiveMaximum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMaximum", Value: m.ExclusiveMaximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMaximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMaximum)) } if m.Minimum != 0.0 { - info = append(info, yaml.MapItem{Key: "minimum", Value: m.Minimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Minimum)) } if m.ExclusiveMinimum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMinimum", Value: m.ExclusiveMinimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMinimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMinimum)) } if m.MaxLength != 0 { - info = append(info, yaml.MapItem{Key: "maxLength", Value: m.MaxLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxLength)) } if m.MinLength != 0 { - info = append(info, yaml.MapItem{Key: "minLength", Value: m.MinLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinLength)) } if m.Pattern != "" { - info = append(info, yaml.MapItem{Key: "pattern", Value: m.Pattern}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("pattern")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Pattern)) } if m.MaxItems != 0 { - info = append(info, yaml.MapItem{Key: "maxItems", Value: m.MaxItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxItems)) } if m.MinItems != 0 { - info = append(info, yaml.MapItem{Key: "minItems", Value: m.MinItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinItems)) } if m.UniqueItems != false { - info = append(info, yaml.MapItem{Key: "uniqueItems", Value: m.UniqueItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("uniqueItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.UniqueItems)) } if len(m.Enum) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Enum { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "enum", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("enum")) + info.Content = append(info.Content, items) } - // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} if m.MultipleOf != 0.0 { - info = append(info, yaml.MapItem{Key: "multipleOf", Value: m.MultipleOf}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("multipleOf")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.MultipleOf)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Headers suitable for JSON or YAML export. -func (m *Headers) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Headers) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:additionalProperties Type:NamedHeader StringEnumValues:[] MapType:Header Repeated:true Pattern: Implicit:true Description:} return info } // ToRawInfo returns a description of Info suitable for JSON or YAML export. -func (m *Info) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Info) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "title", Value: m.Title}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("title")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Title)) // always include this required field. - info = append(info, yaml.MapItem{Key: "version", Value: m.Version}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("version")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Version)) if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.TermsOfService != "" { - info = append(info, yaml.MapItem{Key: "termsOfService", Value: m.TermsOfService}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("termsOfService")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.TermsOfService)) } if m.Contact != nil { - info = append(info, yaml.MapItem{Key: "contact", Value: m.Contact.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("contact")) + info.Content = append(info.Content, m.Contact.ToRawInfo()) } - // &{Name:contact Type:Contact StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.License != nil { - info = append(info, yaml.MapItem{Key: "license", Value: m.License.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("license")) + info.Content = append(info.Content, m.License.ToRawInfo()) } - // &{Name:license Type:License StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of ItemsItem suitable for JSON or YAML export. -func (m *ItemsItem) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *ItemsItem) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if len(m.Schema) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Schema { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "schema", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("schema")) + info.Content = append(info.Content, items) } - // &{Name:schema Type:Schema StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} return info } // ToRawInfo returns a description of JsonReference suitable for JSON or YAML export. -func (m *JsonReference) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *JsonReference) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "$ref", Value: m.XRef}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("$ref")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.XRef)) if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } return info } // ToRawInfo returns a description of License suitable for JSON or YAML export. -func (m *License) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *License) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) if m.Url != "" { - info = append(info, yaml.MapItem{Key: "url", Value: m.Url}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("url")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Url)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of NamedAny suitable for JSON or YAML export. -func (m *NamedAny) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *NamedAny) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } // &{Name:value Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} return info } // ToRawInfo returns a description of NamedHeader suitable for JSON or YAML export. -func (m *NamedHeader) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *NamedHeader) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } // &{Name:value Type:Header StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} return info } // ToRawInfo returns a description of NamedParameter suitable for JSON or YAML export. -func (m *NamedParameter) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *NamedParameter) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } // &{Name:value Type:Parameter StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} return info } // ToRawInfo returns a description of NamedPathItem suitable for JSON or YAML export. -func (m *NamedPathItem) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *NamedPathItem) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } // &{Name:value Type:PathItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} return info } // ToRawInfo returns a description of NamedResponse suitable for JSON or YAML export. -func (m *NamedResponse) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *NamedResponse) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } // &{Name:value Type:Response StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} return info } // ToRawInfo returns a description of NamedResponseValue suitable for JSON or YAML export. -func (m *NamedResponseValue) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *NamedResponseValue) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } // &{Name:value Type:ResponseValue StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} return info } // ToRawInfo returns a description of NamedSchema suitable for JSON or YAML export. -func (m *NamedSchema) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *NamedSchema) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } // &{Name:value Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} return info } // ToRawInfo returns a description of NamedSecurityDefinitionsItem suitable for JSON or YAML export. -func (m *NamedSecurityDefinitionsItem) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *NamedSecurityDefinitionsItem) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } // &{Name:value Type:SecurityDefinitionsItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} return info } // ToRawInfo returns a description of NamedString suitable for JSON or YAML export. -func (m *NamedString) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *NamedString) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } if m.Value != "" { - info = append(info, yaml.MapItem{Key: "value", Value: m.Value}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("value")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Value)) } return info } // ToRawInfo returns a description of NamedStringArray suitable for JSON or YAML export. -func (m *NamedStringArray) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *NamedStringArray) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } // &{Name:value Type:StringArray StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} return info } // ToRawInfo returns a description of NonBodyParameter suitable for JSON or YAML export. -func (m *NonBodyParameter) ToRawInfo() interface{} { +func (m *NonBodyParameter) ToRawInfo() *yaml.Node { // ONE OF WRAPPER // NonBodyParameter // {Name:headerParameterSubSchema Type:HeaderParameterSubSchema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} @@ -7888,122 +7720,139 @@ func (m *NonBodyParameter) ToRawInfo() interface{} { } // ToRawInfo returns a description of Oauth2AccessCodeSecurity suitable for JSON or YAML export. -func (m *Oauth2AccessCodeSecurity) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Oauth2AccessCodeSecurity) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) // always include this required field. - info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("flow")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Flow)) if m.Scopes != nil { - info = append(info, yaml.MapItem{Key: "scopes", Value: m.Scopes.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("scopes")) + info.Content = append(info.Content, m.Scopes.ToRawInfo()) } - // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} // always include this required field. - info = append(info, yaml.MapItem{Key: "authorizationUrl", Value: m.AuthorizationUrl}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("authorizationUrl")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.AuthorizationUrl)) // always include this required field. - info = append(info, yaml.MapItem{Key: "tokenUrl", Value: m.TokenUrl}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("tokenUrl")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.TokenUrl)) if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Oauth2ApplicationSecurity suitable for JSON or YAML export. -func (m *Oauth2ApplicationSecurity) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Oauth2ApplicationSecurity) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) // always include this required field. - info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("flow")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Flow)) if m.Scopes != nil { - info = append(info, yaml.MapItem{Key: "scopes", Value: m.Scopes.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("scopes")) + info.Content = append(info.Content, m.Scopes.ToRawInfo()) } - // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} // always include this required field. - info = append(info, yaml.MapItem{Key: "tokenUrl", Value: m.TokenUrl}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("tokenUrl")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.TokenUrl)) if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Oauth2ImplicitSecurity suitable for JSON or YAML export. -func (m *Oauth2ImplicitSecurity) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Oauth2ImplicitSecurity) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) // always include this required field. - info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("flow")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Flow)) if m.Scopes != nil { - info = append(info, yaml.MapItem{Key: "scopes", Value: m.Scopes.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("scopes")) + info.Content = append(info.Content, m.Scopes.ToRawInfo()) } - // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} // always include this required field. - info = append(info, yaml.MapItem{Key: "authorizationUrl", Value: m.AuthorizationUrl}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("authorizationUrl")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.AuthorizationUrl)) if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Oauth2PasswordSecurity suitable for JSON or YAML export. -func (m *Oauth2PasswordSecurity) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Oauth2PasswordSecurity) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) // always include this required field. - info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("flow")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Flow)) if m.Scopes != nil { - info = append(info, yaml.MapItem{Key: "scopes", Value: m.Scopes.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("scopes")) + info.Content = append(info.Content, m.Scopes.ToRawInfo()) } - // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} // always include this required field. - info = append(info, yaml.MapItem{Key: "tokenUrl", Value: m.TokenUrl}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("tokenUrl")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.TokenUrl)) if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Oauth2Scopes suitable for JSON or YAML export. -func (m *Oauth2Scopes) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Oauth2Scopes) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } @@ -8012,69 +7861,77 @@ func (m *Oauth2Scopes) ToRawInfo() interface{} { } // ToRawInfo returns a description of Operation suitable for JSON or YAML export. -func (m *Operation) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Operation) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if len(m.Tags) != 0 { - info = append(info, yaml.MapItem{Key: "tags", Value: m.Tags}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("tags")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Tags)) } if m.Summary != "" { - info = append(info, yaml.MapItem{Key: "summary", Value: m.Summary}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("summary")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Summary)) } if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.ExternalDocs != nil { - info = append(info, yaml.MapItem{Key: "externalDocs", Value: m.ExternalDocs.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("externalDocs")) + info.Content = append(info.Content, m.ExternalDocs.ToRawInfo()) } - // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.OperationId != "" { - info = append(info, yaml.MapItem{Key: "operationId", Value: m.OperationId}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("operationId")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.OperationId)) } if len(m.Produces) != 0 { - info = append(info, yaml.MapItem{Key: "produces", Value: m.Produces}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("produces")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Produces)) } if len(m.Consumes) != 0 { - info = append(info, yaml.MapItem{Key: "consumes", Value: m.Consumes}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("consumes")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Consumes)) } if len(m.Parameters) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Parameters { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "parameters", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("parameters")) + info.Content = append(info.Content, items) } - // &{Name:parameters Type:ParametersItem StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:The parameters needed to send a valid API call.} // always include this required field. - info = append(info, yaml.MapItem{Key: "responses", Value: m.Responses.ToRawInfo()}) - // &{Name:responses Type:Responses StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + info.Content = append(info.Content, compiler.NewScalarNodeForString("responses")) + info.Content = append(info.Content, m.Responses.ToRawInfo()) if len(m.Schemes) != 0 { - info = append(info, yaml.MapItem{Key: "schemes", Value: m.Schemes}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("schemes")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Schemes)) } if m.Deprecated != false { - info = append(info, yaml.MapItem{Key: "deprecated", Value: m.Deprecated}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("deprecated")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Deprecated)) } if len(m.Security) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Security { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "security", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("security")) + info.Content = append(info.Content, items) } - // &{Name:security Type:SecurityRequirement StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Parameter suitable for JSON or YAML export. -func (m *Parameter) ToRawInfo() interface{} { +func (m *Parameter) ToRawInfo() *yaml.Node { // ONE OF WRAPPER // Parameter // {Name:bodyParameter Type:BodyParameter StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} @@ -8091,22 +7948,22 @@ func (m *Parameter) ToRawInfo() interface{} { } // ToRawInfo returns a description of ParameterDefinitions suitable for JSON or YAML export. -func (m *ParameterDefinitions) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *ParameterDefinitions) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:additionalProperties Type:NamedParameter StringEnumValues:[] MapType:Parameter Repeated:true Pattern: Implicit:true Description:} return info } // ToRawInfo returns a description of ParametersItem suitable for JSON or YAML export. -func (m *ParametersItem) ToRawInfo() interface{} { +func (m *ParametersItem) ToRawInfo() *yaml.Node { // ONE OF WRAPPER // ParametersItem // {Name:parameter Type:Parameter StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} @@ -8123,386 +7980,439 @@ func (m *ParametersItem) ToRawInfo() interface{} { } // ToRawInfo returns a description of PathItem suitable for JSON or YAML export. -func (m *PathItem) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *PathItem) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.XRef != "" { - info = append(info, yaml.MapItem{Key: "$ref", Value: m.XRef}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("$ref")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.XRef)) } if m.Get != nil { - info = append(info, yaml.MapItem{Key: "get", Value: m.Get.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("get")) + info.Content = append(info.Content, m.Get.ToRawInfo()) } - // &{Name:get Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Put != nil { - info = append(info, yaml.MapItem{Key: "put", Value: m.Put.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("put")) + info.Content = append(info.Content, m.Put.ToRawInfo()) } - // &{Name:put Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Post != nil { - info = append(info, yaml.MapItem{Key: "post", Value: m.Post.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("post")) + info.Content = append(info.Content, m.Post.ToRawInfo()) } - // &{Name:post Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Delete != nil { - info = append(info, yaml.MapItem{Key: "delete", Value: m.Delete.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("delete")) + info.Content = append(info.Content, m.Delete.ToRawInfo()) } - // &{Name:delete Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Options != nil { - info = append(info, yaml.MapItem{Key: "options", Value: m.Options.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("options")) + info.Content = append(info.Content, m.Options.ToRawInfo()) } - // &{Name:options Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Head != nil { - info = append(info, yaml.MapItem{Key: "head", Value: m.Head.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("head")) + info.Content = append(info.Content, m.Head.ToRawInfo()) } - // &{Name:head Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Patch != nil { - info = append(info, yaml.MapItem{Key: "patch", Value: m.Patch.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("patch")) + info.Content = append(info.Content, m.Patch.ToRawInfo()) } - // &{Name:patch Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if len(m.Parameters) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Parameters { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "parameters", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("parameters")) + info.Content = append(info.Content, items) } - // &{Name:parameters Type:ParametersItem StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:The parameters needed to send a valid API call.} if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of PathParameterSubSchema suitable for JSON or YAML export. -func (m *PathParameterSubSchema) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *PathParameterSubSchema) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("required")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Required)) if m.In != "" { - info = append(info, yaml.MapItem{Key: "in", Value: m.In}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("in")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.In)) } if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) } if m.Format != "" { - info = append(info, yaml.MapItem{Key: "format", Value: m.Format}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("format")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Format)) } if m.Items != nil { - info = append(info, yaml.MapItem{Key: "items", Value: m.Items.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("items")) + info.Content = append(info.Content, m.Items.ToRawInfo()) } - // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.CollectionFormat != "" { - info = append(info, yaml.MapItem{Key: "collectionFormat", Value: m.CollectionFormat}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("collectionFormat")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.CollectionFormat)) } if m.Default != nil { - info = append(info, yaml.MapItem{Key: "default", Value: m.Default.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("default")) + info.Content = append(info.Content, m.Default.ToRawInfo()) } - // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Maximum != 0.0 { - info = append(info, yaml.MapItem{Key: "maximum", Value: m.Maximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Maximum)) } if m.ExclusiveMaximum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMaximum", Value: m.ExclusiveMaximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMaximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMaximum)) } if m.Minimum != 0.0 { - info = append(info, yaml.MapItem{Key: "minimum", Value: m.Minimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Minimum)) } if m.ExclusiveMinimum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMinimum", Value: m.ExclusiveMinimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMinimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMinimum)) } if m.MaxLength != 0 { - info = append(info, yaml.MapItem{Key: "maxLength", Value: m.MaxLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxLength)) } if m.MinLength != 0 { - info = append(info, yaml.MapItem{Key: "minLength", Value: m.MinLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinLength)) } if m.Pattern != "" { - info = append(info, yaml.MapItem{Key: "pattern", Value: m.Pattern}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("pattern")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Pattern)) } if m.MaxItems != 0 { - info = append(info, yaml.MapItem{Key: "maxItems", Value: m.MaxItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxItems)) } if m.MinItems != 0 { - info = append(info, yaml.MapItem{Key: "minItems", Value: m.MinItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinItems)) } if m.UniqueItems != false { - info = append(info, yaml.MapItem{Key: "uniqueItems", Value: m.UniqueItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("uniqueItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.UniqueItems)) } if len(m.Enum) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Enum { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "enum", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("enum")) + info.Content = append(info.Content, items) } - // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} if m.MultipleOf != 0.0 { - info = append(info, yaml.MapItem{Key: "multipleOf", Value: m.MultipleOf}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("multipleOf")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.MultipleOf)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Paths suitable for JSON or YAML export. -func (m *Paths) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Paths) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} if m.Path != nil { for _, item := range m.Path { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:Path Type:NamedPathItem StringEnumValues:[] MapType:PathItem Repeated:true Pattern:^/ Implicit:true Description:} return info } // ToRawInfo returns a description of PrimitivesItems suitable for JSON or YAML export. -func (m *PrimitivesItems) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *PrimitivesItems) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) } if m.Format != "" { - info = append(info, yaml.MapItem{Key: "format", Value: m.Format}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("format")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Format)) } if m.Items != nil { - info = append(info, yaml.MapItem{Key: "items", Value: m.Items.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("items")) + info.Content = append(info.Content, m.Items.ToRawInfo()) } - // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.CollectionFormat != "" { - info = append(info, yaml.MapItem{Key: "collectionFormat", Value: m.CollectionFormat}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("collectionFormat")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.CollectionFormat)) } if m.Default != nil { - info = append(info, yaml.MapItem{Key: "default", Value: m.Default.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("default")) + info.Content = append(info.Content, m.Default.ToRawInfo()) } - // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Maximum != 0.0 { - info = append(info, yaml.MapItem{Key: "maximum", Value: m.Maximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Maximum)) } if m.ExclusiveMaximum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMaximum", Value: m.ExclusiveMaximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMaximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMaximum)) } if m.Minimum != 0.0 { - info = append(info, yaml.MapItem{Key: "minimum", Value: m.Minimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Minimum)) } if m.ExclusiveMinimum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMinimum", Value: m.ExclusiveMinimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMinimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMinimum)) } if m.MaxLength != 0 { - info = append(info, yaml.MapItem{Key: "maxLength", Value: m.MaxLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxLength)) } if m.MinLength != 0 { - info = append(info, yaml.MapItem{Key: "minLength", Value: m.MinLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinLength)) } if m.Pattern != "" { - info = append(info, yaml.MapItem{Key: "pattern", Value: m.Pattern}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("pattern")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Pattern)) } if m.MaxItems != 0 { - info = append(info, yaml.MapItem{Key: "maxItems", Value: m.MaxItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxItems)) } if m.MinItems != 0 { - info = append(info, yaml.MapItem{Key: "minItems", Value: m.MinItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinItems)) } if m.UniqueItems != false { - info = append(info, yaml.MapItem{Key: "uniqueItems", Value: m.UniqueItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("uniqueItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.UniqueItems)) } if len(m.Enum) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Enum { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "enum", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("enum")) + info.Content = append(info.Content, items) } - // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} if m.MultipleOf != 0.0 { - info = append(info, yaml.MapItem{Key: "multipleOf", Value: m.MultipleOf}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("multipleOf")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.MultipleOf)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Properties suitable for JSON or YAML export. -func (m *Properties) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Properties) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:additionalProperties Type:NamedSchema StringEnumValues:[] MapType:Schema Repeated:true Pattern: Implicit:true Description:} return info } // ToRawInfo returns a description of QueryParameterSubSchema suitable for JSON or YAML export. -func (m *QueryParameterSubSchema) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *QueryParameterSubSchema) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Required != false { - info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("required")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Required)) } if m.In != "" { - info = append(info, yaml.MapItem{Key: "in", Value: m.In}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("in")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.In)) } if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } if m.AllowEmptyValue != false { - info = append(info, yaml.MapItem{Key: "allowEmptyValue", Value: m.AllowEmptyValue}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("allowEmptyValue")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.AllowEmptyValue)) } if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) } if m.Format != "" { - info = append(info, yaml.MapItem{Key: "format", Value: m.Format}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("format")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Format)) } if m.Items != nil { - info = append(info, yaml.MapItem{Key: "items", Value: m.Items.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("items")) + info.Content = append(info.Content, m.Items.ToRawInfo()) } - // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.CollectionFormat != "" { - info = append(info, yaml.MapItem{Key: "collectionFormat", Value: m.CollectionFormat}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("collectionFormat")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.CollectionFormat)) } if m.Default != nil { - info = append(info, yaml.MapItem{Key: "default", Value: m.Default.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("default")) + info.Content = append(info.Content, m.Default.ToRawInfo()) } - // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Maximum != 0.0 { - info = append(info, yaml.MapItem{Key: "maximum", Value: m.Maximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Maximum)) } if m.ExclusiveMaximum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMaximum", Value: m.ExclusiveMaximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMaximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMaximum)) } if m.Minimum != 0.0 { - info = append(info, yaml.MapItem{Key: "minimum", Value: m.Minimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Minimum)) } if m.ExclusiveMinimum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMinimum", Value: m.ExclusiveMinimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMinimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMinimum)) } if m.MaxLength != 0 { - info = append(info, yaml.MapItem{Key: "maxLength", Value: m.MaxLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxLength)) } if m.MinLength != 0 { - info = append(info, yaml.MapItem{Key: "minLength", Value: m.MinLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinLength)) } if m.Pattern != "" { - info = append(info, yaml.MapItem{Key: "pattern", Value: m.Pattern}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("pattern")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Pattern)) } if m.MaxItems != 0 { - info = append(info, yaml.MapItem{Key: "maxItems", Value: m.MaxItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxItems)) } if m.MinItems != 0 { - info = append(info, yaml.MapItem{Key: "minItems", Value: m.MinItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinItems)) } if m.UniqueItems != false { - info = append(info, yaml.MapItem{Key: "uniqueItems", Value: m.UniqueItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("uniqueItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.UniqueItems)) } if len(m.Enum) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Enum { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "enum", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("enum")) + info.Content = append(info.Content, items) } - // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} if m.MultipleOf != 0.0 { - info = append(info, yaml.MapItem{Key: "multipleOf", Value: m.MultipleOf}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("multipleOf")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.MultipleOf)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Response suitable for JSON or YAML export. -func (m *Response) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Response) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) if m.Schema != nil { - info = append(info, yaml.MapItem{Key: "schema", Value: m.Schema.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("schema")) + info.Content = append(info.Content, m.Schema.ToRawInfo()) } - // &{Name:schema Type:SchemaItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Headers != nil { - info = append(info, yaml.MapItem{Key: "headers", Value: m.Headers.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("headers")) + info.Content = append(info.Content, m.Headers.ToRawInfo()) } - // &{Name:headers Type:Headers StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Examples != nil { - info = append(info, yaml.MapItem{Key: "examples", Value: m.Examples.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("examples")) + info.Content = append(info.Content, m.Examples.ToRawInfo()) } - // &{Name:examples Type:Examples StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of ResponseDefinitions suitable for JSON or YAML export. -func (m *ResponseDefinitions) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *ResponseDefinitions) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:additionalProperties Type:NamedResponse StringEnumValues:[] MapType:Response Repeated:true Pattern: Implicit:true Description:} return info } // ToRawInfo returns a description of ResponseValue suitable for JSON or YAML export. -func (m *ResponseValue) ToRawInfo() interface{} { +func (m *ResponseValue) ToRawInfo() *yaml.Node { // ONE OF WRAPPER // ResponseValue // {Name:response Type:Response StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} @@ -8519,159 +8429,183 @@ func (m *ResponseValue) ToRawInfo() interface{} { } // ToRawInfo returns a description of Responses suitable for JSON or YAML export. -func (m *Responses) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Responses) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.ResponseCode != nil { for _, item := range m.ResponseCode { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:ResponseCode Type:NamedResponseValue StringEnumValues:[] MapType:ResponseValue Repeated:true Pattern:^([0-9]{3})$|^(default)$ Implicit:true Description:} if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of Schema suitable for JSON or YAML export. -func (m *Schema) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Schema) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.XRef != "" { - info = append(info, yaml.MapItem{Key: "$ref", Value: m.XRef}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("$ref")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.XRef)) } if m.Format != "" { - info = append(info, yaml.MapItem{Key: "format", Value: m.Format}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("format")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Format)) } if m.Title != "" { - info = append(info, yaml.MapItem{Key: "title", Value: m.Title}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("title")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Title)) } if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.Default != nil { - info = append(info, yaml.MapItem{Key: "default", Value: m.Default.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("default")) + info.Content = append(info.Content, m.Default.ToRawInfo()) } - // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.MultipleOf != 0.0 { - info = append(info, yaml.MapItem{Key: "multipleOf", Value: m.MultipleOf}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("multipleOf")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.MultipleOf)) } if m.Maximum != 0.0 { - info = append(info, yaml.MapItem{Key: "maximum", Value: m.Maximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Maximum)) } if m.ExclusiveMaximum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMaximum", Value: m.ExclusiveMaximum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMaximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMaximum)) } if m.Minimum != 0.0 { - info = append(info, yaml.MapItem{Key: "minimum", Value: m.Minimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Minimum)) } if m.ExclusiveMinimum != false { - info = append(info, yaml.MapItem{Key: "exclusiveMinimum", Value: m.ExclusiveMinimum}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMinimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMinimum)) } if m.MaxLength != 0 { - info = append(info, yaml.MapItem{Key: "maxLength", Value: m.MaxLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxLength)) } if m.MinLength != 0 { - info = append(info, yaml.MapItem{Key: "minLength", Value: m.MinLength}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinLength)) } if m.Pattern != "" { - info = append(info, yaml.MapItem{Key: "pattern", Value: m.Pattern}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("pattern")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Pattern)) } if m.MaxItems != 0 { - info = append(info, yaml.MapItem{Key: "maxItems", Value: m.MaxItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxItems)) } if m.MinItems != 0 { - info = append(info, yaml.MapItem{Key: "minItems", Value: m.MinItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinItems)) } if m.UniqueItems != false { - info = append(info, yaml.MapItem{Key: "uniqueItems", Value: m.UniqueItems}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("uniqueItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.UniqueItems)) } if m.MaxProperties != 0 { - info = append(info, yaml.MapItem{Key: "maxProperties", Value: m.MaxProperties}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxProperties")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxProperties)) } if m.MinProperties != 0 { - info = append(info, yaml.MapItem{Key: "minProperties", Value: m.MinProperties}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("minProperties")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinProperties)) } if len(m.Required) != 0 { - info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("required")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Required)) } if len(m.Enum) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Enum { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "enum", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("enum")) + info.Content = append(info.Content, items) } - // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} if m.AdditionalProperties != nil { - info = append(info, yaml.MapItem{Key: "additionalProperties", Value: m.AdditionalProperties.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("additionalProperties")) + info.Content = append(info.Content, m.AdditionalProperties.ToRawInfo()) } - // &{Name:additionalProperties Type:AdditionalPropertiesItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Type != nil { if len(m.Type.Value) == 1 { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type.Value[0]}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type.Value[0])) } else { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type.Value}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Type.Value)) } } - // &{Name:type Type:TypeItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Items != nil { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.Items.Schema { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) + } + if len(items.Content) == 1 { + items = items.Content[0] } - info = append(info, yaml.MapItem{Key: "items", Value: items[0]}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("items")) + info.Content = append(info.Content, items) } - // &{Name:items Type:ItemsItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if len(m.AllOf) != 0 { - items := make([]interface{}, 0) + items := compiler.NewSequenceNode() for _, item := range m.AllOf { - items = append(items, item.ToRawInfo()) + items.Content = append(items.Content, item.ToRawInfo()) } - info = append(info, yaml.MapItem{Key: "allOf", Value: items}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("allOf")) + info.Content = append(info.Content, items) } - // &{Name:allOf Type:Schema StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} if m.Properties != nil { - info = append(info, yaml.MapItem{Key: "properties", Value: m.Properties.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("properties")) + info.Content = append(info.Content, m.Properties.ToRawInfo()) } - // &{Name:properties Type:Properties StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Discriminator != "" { - info = append(info, yaml.MapItem{Key: "discriminator", Value: m.Discriminator}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("discriminator")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Discriminator)) } if m.ReadOnly != false { - info = append(info, yaml.MapItem{Key: "readOnly", Value: m.ReadOnly}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("readOnly")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ReadOnly)) } if m.Xml != nil { - info = append(info, yaml.MapItem{Key: "xml", Value: m.Xml.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("xml")) + info.Content = append(info.Content, m.Xml.ToRawInfo()) } - // &{Name:xml Type:Xml StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.ExternalDocs != nil { - info = append(info, yaml.MapItem{Key: "externalDocs", Value: m.ExternalDocs.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("externalDocs")) + info.Content = append(info.Content, m.ExternalDocs.ToRawInfo()) } - // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Example != nil { - info = append(info, yaml.MapItem{Key: "example", Value: m.Example.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("example")) + info.Content = append(info.Content, m.Example.ToRawInfo()) } - // &{Name:example Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of SchemaItem suitable for JSON or YAML export. -func (m *SchemaItem) ToRawInfo() interface{} { +func (m *SchemaItem) ToRawInfo() *yaml.Node { // ONE OF WRAPPER // SchemaItem // {Name:schema Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} @@ -8688,22 +8622,22 @@ func (m *SchemaItem) ToRawInfo() interface{} { } // ToRawInfo returns a description of SecurityDefinitions suitable for JSON or YAML export. -func (m *SecurityDefinitions) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *SecurityDefinitions) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:additionalProperties Type:NamedSecurityDefinitionsItem StringEnumValues:[] MapType:SecurityDefinitionsItem Repeated:true Pattern: Implicit:true Description:} return info } // ToRawInfo returns a description of SecurityDefinitionsItem suitable for JSON or YAML export. -func (m *SecurityDefinitionsItem) ToRawInfo() interface{} { +func (m *SecurityDefinitionsItem) ToRawInfo() *yaml.Node { // ONE OF WRAPPER // SecurityDefinitionsItem // {Name:basicAuthenticationSecurity Type:BasicAuthenticationSecurity StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} @@ -8740,103 +8674,111 @@ func (m *SecurityDefinitionsItem) ToRawInfo() interface{} { } // ToRawInfo returns a description of SecurityRequirement suitable for JSON or YAML export. -func (m *SecurityRequirement) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *SecurityRequirement) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:additionalProperties Type:NamedStringArray StringEnumValues:[] MapType:StringArray Repeated:true Pattern: Implicit:true Description:} return info } // ToRawInfo returns a description of StringArray suitable for JSON or YAML export. -func (m *StringArray) ToRawInfo() interface{} { - return m.Value +func (m *StringArray) ToRawInfo() *yaml.Node { + return compiler.NewSequenceNodeForStringArray(m.Value) } // ToRawInfo returns a description of Tag suitable for JSON or YAML export. -func (m *Tag) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Tag) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } // always include this required field. - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) } if m.ExternalDocs != nil { - info = append(info, yaml.MapItem{Key: "externalDocs", Value: m.ExternalDocs.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("externalDocs")) + info.Content = append(info.Content, m.ExternalDocs.ToRawInfo()) } - // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } // ToRawInfo returns a description of TypeItem suitable for JSON or YAML export. -func (m *TypeItem) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *TypeItem) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if len(m.Value) != 0 { - info = append(info, yaml.MapItem{Key: "value", Value: m.Value}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("value")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Value)) } return info } // ToRawInfo returns a description of VendorExtension suitable for JSON or YAML export. -func (m *VendorExtension) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *VendorExtension) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:additionalProperties Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern: Implicit:true Description:} return info } // ToRawInfo returns a description of Xml suitable for JSON or YAML export. -func (m *Xml) ToRawInfo() interface{} { - info := yaml.MapSlice{} +func (m *Xml) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() if m == nil { return info } if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) } if m.Namespace != "" { - info = append(info, yaml.MapItem{Key: "namespace", Value: m.Namespace}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("namespace")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Namespace)) } if m.Prefix != "" { - info = append(info, yaml.MapItem{Key: "prefix", Value: m.Prefix}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("prefix")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Prefix)) } if m.Attribute != false { - info = append(info, yaml.MapItem{Key: "attribute", Value: m.Attribute}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("attribute")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Attribute)) } if m.Wrapped != false { - info = append(info, yaml.MapItem{Key: "wrapped", Value: m.Wrapped}) + info.Content = append(info.Content, compiler.NewScalarNodeForString("wrapped")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Wrapped)) } if m.VendorExtension != nil { for _, item := range m.VendorExtension { - info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) } } - // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} return info } diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.pb.go b/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.pb.go index 55a6cb516..559ddea1a 100644 --- a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.pb.go +++ b/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.pb.go @@ -1,77 +1,90 @@ +// Copyright 2020 Google LLC. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// THIS FILE IS AUTOMATICALLY GENERATED. + // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.23.0 +// protoc v3.12.3 // source: openapiv2/OpenAPIv2.proto package openapi_v2 import ( - fmt "fmt" proto "github.com/golang/protobuf/proto" any "github.com/golang/protobuf/ptypes/any" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 type AdditionalPropertiesItem struct { - // Types that are valid to be assigned to Oneof: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: // *AdditionalPropertiesItem_Schema // *AdditionalPropertiesItem_Boolean - Oneof isAdditionalPropertiesItem_Oneof `protobuf_oneof:"oneof"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Oneof isAdditionalPropertiesItem_Oneof `protobuf_oneof:"oneof"` } -func (m *AdditionalPropertiesItem) Reset() { *m = AdditionalPropertiesItem{} } -func (m *AdditionalPropertiesItem) String() string { return proto.CompactTextString(m) } -func (*AdditionalPropertiesItem) ProtoMessage() {} -func (*AdditionalPropertiesItem) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{0} +func (x *AdditionalPropertiesItem) Reset() { + *x = AdditionalPropertiesItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *AdditionalPropertiesItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AdditionalPropertiesItem.Unmarshal(m, b) -} -func (m *AdditionalPropertiesItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AdditionalPropertiesItem.Marshal(b, m, deterministic) -} -func (m *AdditionalPropertiesItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_AdditionalPropertiesItem.Merge(m, src) -} -func (m *AdditionalPropertiesItem) XXX_Size() int { - return xxx_messageInfo_AdditionalPropertiesItem.Size(m) +func (x *AdditionalPropertiesItem) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AdditionalPropertiesItem) XXX_DiscardUnknown() { - xxx_messageInfo_AdditionalPropertiesItem.DiscardUnknown(m) -} - -var xxx_messageInfo_AdditionalPropertiesItem proto.InternalMessageInfo -type isAdditionalPropertiesItem_Oneof interface { - isAdditionalPropertiesItem_Oneof() -} +func (*AdditionalPropertiesItem) ProtoMessage() {} -type AdditionalPropertiesItem_Schema struct { - Schema *Schema `protobuf:"bytes,1,opt,name=schema,proto3,oneof"` +func (x *AdditionalPropertiesItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type AdditionalPropertiesItem_Boolean struct { - Boolean bool `protobuf:"varint,2,opt,name=boolean,proto3,oneof"` +// Deprecated: Use AdditionalPropertiesItem.ProtoReflect.Descriptor instead. +func (*AdditionalPropertiesItem) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{0} } -func (*AdditionalPropertiesItem_Schema) isAdditionalPropertiesItem_Oneof() {} - -func (*AdditionalPropertiesItem_Boolean) isAdditionalPropertiesItem_Oneof() {} - func (m *AdditionalPropertiesItem) GetOneof() isAdditionalPropertiesItem_Oneof { if m != nil { return m.Oneof @@ -79,202 +92,238 @@ func (m *AdditionalPropertiesItem) GetOneof() isAdditionalPropertiesItem_Oneof { return nil } -func (m *AdditionalPropertiesItem) GetSchema() *Schema { - if x, ok := m.GetOneof().(*AdditionalPropertiesItem_Schema); ok { +func (x *AdditionalPropertiesItem) GetSchema() *Schema { + if x, ok := x.GetOneof().(*AdditionalPropertiesItem_Schema); ok { return x.Schema } return nil } -func (m *AdditionalPropertiesItem) GetBoolean() bool { - if x, ok := m.GetOneof().(*AdditionalPropertiesItem_Boolean); ok { +func (x *AdditionalPropertiesItem) GetBoolean() bool { + if x, ok := x.GetOneof().(*AdditionalPropertiesItem_Boolean); ok { return x.Boolean } return false } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*AdditionalPropertiesItem) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*AdditionalPropertiesItem_Schema)(nil), - (*AdditionalPropertiesItem_Boolean)(nil), - } +type isAdditionalPropertiesItem_Oneof interface { + isAdditionalPropertiesItem_Oneof() } -type Any struct { - Value *any.Any `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` - Yaml string `protobuf:"bytes,2,opt,name=yaml,proto3" json:"yaml,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type AdditionalPropertiesItem_Schema struct { + Schema *Schema `protobuf:"bytes,1,opt,name=schema,proto3,oneof"` } -func (m *Any) Reset() { *m = Any{} } -func (m *Any) String() string { return proto.CompactTextString(m) } -func (*Any) ProtoMessage() {} -func (*Any) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{1} +type AdditionalPropertiesItem_Boolean struct { + Boolean bool `protobuf:"varint,2,opt,name=boolean,proto3,oneof"` } -func (m *Any) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Any.Unmarshal(m, b) -} -func (m *Any) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Any.Marshal(b, m, deterministic) +func (*AdditionalPropertiesItem_Schema) isAdditionalPropertiesItem_Oneof() {} + +func (*AdditionalPropertiesItem_Boolean) isAdditionalPropertiesItem_Oneof() {} + +type Any struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value *any.Any `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Yaml string `protobuf:"bytes,2,opt,name=yaml,proto3" json:"yaml,omitempty"` } -func (m *Any) XXX_Merge(src proto.Message) { - xxx_messageInfo_Any.Merge(m, src) + +func (x *Any) Reset() { + *x = Any{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Any) XXX_Size() int { - return xxx_messageInfo_Any.Size(m) + +func (x *Any) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Any) XXX_DiscardUnknown() { - xxx_messageInfo_Any.DiscardUnknown(m) + +func (*Any) ProtoMessage() {} + +func (x *Any) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Any proto.InternalMessageInfo +// Deprecated: Use Any.ProtoReflect.Descriptor instead. +func (*Any) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{1} +} -func (m *Any) GetValue() *any.Any { - if m != nil { - return m.Value +func (x *Any) GetValue() *any.Any { + if x != nil { + return x.Value } return nil } -func (m *Any) GetYaml() string { - if m != nil { - return m.Yaml +func (x *Any) GetYaml() string { + if x != nil { + return x.Yaml } return "" } type ApiKeySecurity struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - In string `protobuf:"bytes,3,opt,name=in,proto3" json:"in,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,5,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ApiKeySecurity) Reset() { *m = ApiKeySecurity{} } -func (m *ApiKeySecurity) String() string { return proto.CompactTextString(m) } -func (*ApiKeySecurity) ProtoMessage() {} -func (*ApiKeySecurity) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{2} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApiKeySecurity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApiKeySecurity.Unmarshal(m, b) -} -func (m *ApiKeySecurity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApiKeySecurity.Marshal(b, m, deterministic) + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + In string `protobuf:"bytes,3,opt,name=in,proto3" json:"in,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,5,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *ApiKeySecurity) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApiKeySecurity.Merge(m, src) + +func (x *ApiKeySecurity) Reset() { + *x = ApiKeySecurity{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApiKeySecurity) XXX_Size() int { - return xxx_messageInfo_ApiKeySecurity.Size(m) + +func (x *ApiKeySecurity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApiKeySecurity) XXX_DiscardUnknown() { - xxx_messageInfo_ApiKeySecurity.DiscardUnknown(m) + +func (*ApiKeySecurity) ProtoMessage() {} + +func (x *ApiKeySecurity) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApiKeySecurity proto.InternalMessageInfo +// Deprecated: Use ApiKeySecurity.ProtoReflect.Descriptor instead. +func (*ApiKeySecurity) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{2} +} -func (m *ApiKeySecurity) GetType() string { - if m != nil { - return m.Type +func (x *ApiKeySecurity) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *ApiKeySecurity) GetName() string { - if m != nil { - return m.Name +func (x *ApiKeySecurity) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *ApiKeySecurity) GetIn() string { - if m != nil { - return m.In +func (x *ApiKeySecurity) GetIn() string { + if x != nil { + return x.In } return "" } -func (m *ApiKeySecurity) GetDescription() string { - if m != nil { - return m.Description +func (x *ApiKeySecurity) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *ApiKeySecurity) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *ApiKeySecurity) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type BasicAuthenticationSecurity struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,3,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *BasicAuthenticationSecurity) Reset() { *m = BasicAuthenticationSecurity{} } -func (m *BasicAuthenticationSecurity) String() string { return proto.CompactTextString(m) } -func (*BasicAuthenticationSecurity) ProtoMessage() {} -func (*BasicAuthenticationSecurity) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{3} + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,3,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *BasicAuthenticationSecurity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BasicAuthenticationSecurity.Unmarshal(m, b) -} -func (m *BasicAuthenticationSecurity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BasicAuthenticationSecurity.Marshal(b, m, deterministic) -} -func (m *BasicAuthenticationSecurity) XXX_Merge(src proto.Message) { - xxx_messageInfo_BasicAuthenticationSecurity.Merge(m, src) +func (x *BasicAuthenticationSecurity) Reset() { + *x = BasicAuthenticationSecurity{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *BasicAuthenticationSecurity) XXX_Size() int { - return xxx_messageInfo_BasicAuthenticationSecurity.Size(m) + +func (x *BasicAuthenticationSecurity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *BasicAuthenticationSecurity) XXX_DiscardUnknown() { - xxx_messageInfo_BasicAuthenticationSecurity.DiscardUnknown(m) + +func (*BasicAuthenticationSecurity) ProtoMessage() {} + +func (x *BasicAuthenticationSecurity) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_BasicAuthenticationSecurity proto.InternalMessageInfo +// Deprecated: Use BasicAuthenticationSecurity.ProtoReflect.Descriptor instead. +func (*BasicAuthenticationSecurity) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{3} +} -func (m *BasicAuthenticationSecurity) GetType() string { - if m != nil { - return m.Type +func (x *BasicAuthenticationSecurity) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *BasicAuthenticationSecurity) GetDescription() string { - if m != nil { - return m.Description +func (x *BasicAuthenticationSecurity) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *BasicAuthenticationSecurity) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *BasicAuthenticationSecurity) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type BodyParameter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` // The name of the parameter. @@ -282,228 +331,260 @@ type BodyParameter struct { // Determines the location of the parameter. In string `protobuf:"bytes,3,opt,name=in,proto3" json:"in,omitempty"` // Determines whether or not this parameter is required or optional. - Required bool `protobuf:"varint,4,opt,name=required,proto3" json:"required,omitempty"` - Schema *Schema `protobuf:"bytes,5,opt,name=schema,proto3" json:"schema,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Required bool `protobuf:"varint,4,opt,name=required,proto3" json:"required,omitempty"` + Schema *Schema `protobuf:"bytes,5,opt,name=schema,proto3" json:"schema,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *BodyParameter) Reset() { *m = BodyParameter{} } -func (m *BodyParameter) String() string { return proto.CompactTextString(m) } -func (*BodyParameter) ProtoMessage() {} -func (*BodyParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{4} +func (x *BodyParameter) Reset() { + *x = BodyParameter{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *BodyParameter) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BodyParameter.Unmarshal(m, b) +func (x *BodyParameter) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *BodyParameter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BodyParameter.Marshal(b, m, deterministic) -} -func (m *BodyParameter) XXX_Merge(src proto.Message) { - xxx_messageInfo_BodyParameter.Merge(m, src) -} -func (m *BodyParameter) XXX_Size() int { - return xxx_messageInfo_BodyParameter.Size(m) -} -func (m *BodyParameter) XXX_DiscardUnknown() { - xxx_messageInfo_BodyParameter.DiscardUnknown(m) + +func (*BodyParameter) ProtoMessage() {} + +func (x *BodyParameter) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_BodyParameter proto.InternalMessageInfo +// Deprecated: Use BodyParameter.ProtoReflect.Descriptor instead. +func (*BodyParameter) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{4} +} -func (m *BodyParameter) GetDescription() string { - if m != nil { - return m.Description +func (x *BodyParameter) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *BodyParameter) GetName() string { - if m != nil { - return m.Name +func (x *BodyParameter) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *BodyParameter) GetIn() string { - if m != nil { - return m.In +func (x *BodyParameter) GetIn() string { + if x != nil { + return x.In } return "" } -func (m *BodyParameter) GetRequired() bool { - if m != nil { - return m.Required +func (x *BodyParameter) GetRequired() bool { + if x != nil { + return x.Required } return false } -func (m *BodyParameter) GetSchema() *Schema { - if m != nil { - return m.Schema +func (x *BodyParameter) GetSchema() *Schema { + if x != nil { + return x.Schema } return nil } -func (m *BodyParameter) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *BodyParameter) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } // Contact information for the owners of the API. type Contact struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The identifying name of the contact person/organization. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The URL pointing to the contact information. Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` // The email address of the contact person/organization. - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,4,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,4,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *Contact) Reset() { *m = Contact{} } -func (m *Contact) String() string { return proto.CompactTextString(m) } -func (*Contact) ProtoMessage() {} -func (*Contact) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{5} +func (x *Contact) Reset() { + *x = Contact{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Contact) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Contact.Unmarshal(m, b) -} -func (m *Contact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Contact.Marshal(b, m, deterministic) -} -func (m *Contact) XXX_Merge(src proto.Message) { - xxx_messageInfo_Contact.Merge(m, src) +func (x *Contact) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Contact) XXX_Size() int { - return xxx_messageInfo_Contact.Size(m) -} -func (m *Contact) XXX_DiscardUnknown() { - xxx_messageInfo_Contact.DiscardUnknown(m) + +func (*Contact) ProtoMessage() {} + +func (x *Contact) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Contact proto.InternalMessageInfo +// Deprecated: Use Contact.ProtoReflect.Descriptor instead. +func (*Contact) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{5} +} -func (m *Contact) GetName() string { - if m != nil { - return m.Name +func (x *Contact) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *Contact) GetUrl() string { - if m != nil { - return m.Url +func (x *Contact) GetUrl() string { + if x != nil { + return x.Url } return "" } -func (m *Contact) GetEmail() string { - if m != nil { - return m.Email +func (x *Contact) GetEmail() string { + if x != nil { + return x.Email } return "" } -func (m *Contact) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Contact) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type Default struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + AdditionalProperties []*NamedAny `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Default) Reset() { *m = Default{} } -func (m *Default) String() string { return proto.CompactTextString(m) } -func (*Default) ProtoMessage() {} -func (*Default) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{6} +func (x *Default) Reset() { + *x = Default{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Default) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Default.Unmarshal(m, b) -} -func (m *Default) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Default.Marshal(b, m, deterministic) -} -func (m *Default) XXX_Merge(src proto.Message) { - xxx_messageInfo_Default.Merge(m, src) -} -func (m *Default) XXX_Size() int { - return xxx_messageInfo_Default.Size(m) +func (x *Default) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Default) XXX_DiscardUnknown() { - xxx_messageInfo_Default.DiscardUnknown(m) + +func (*Default) ProtoMessage() {} + +func (x *Default) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Default proto.InternalMessageInfo +// Deprecated: Use Default.ProtoReflect.Descriptor instead. +func (*Default) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{6} +} -func (m *Default) GetAdditionalProperties() []*NamedAny { - if m != nil { - return m.AdditionalProperties +func (x *Default) GetAdditionalProperties() []*NamedAny { + if x != nil { + return x.AdditionalProperties } return nil } // One or more JSON objects describing the schemas being consumed and produced by the API. type Definitions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + AdditionalProperties []*NamedSchema `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Definitions) Reset() { *m = Definitions{} } -func (m *Definitions) String() string { return proto.CompactTextString(m) } -func (*Definitions) ProtoMessage() {} -func (*Definitions) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{7} +func (x *Definitions) Reset() { + *x = Definitions{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Definitions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Definitions.Unmarshal(m, b) -} -func (m *Definitions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Definitions.Marshal(b, m, deterministic) -} -func (m *Definitions) XXX_Merge(src proto.Message) { - xxx_messageInfo_Definitions.Merge(m, src) -} -func (m *Definitions) XXX_Size() int { - return xxx_messageInfo_Definitions.Size(m) +func (x *Definitions) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Definitions) XXX_DiscardUnknown() { - xxx_messageInfo_Definitions.DiscardUnknown(m) + +func (*Definitions) ProtoMessage() {} + +func (x *Definitions) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Definitions proto.InternalMessageInfo +// Deprecated: Use Definitions.ProtoReflect.Descriptor instead. +func (*Definitions) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{7} +} -func (m *Definitions) GetAdditionalProperties() []*NamedSchema { - if m != nil { - return m.AdditionalProperties +func (x *Definitions) GetAdditionalProperties() []*NamedSchema { + if x != nil { + return x.AdditionalProperties } return nil } type Document struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The Swagger version of this document. Swagger string `protobuf:"bytes,1,opt,name=swagger,proto3" json:"swagger,omitempty"` Info *Info `protobuf:"bytes,2,opt,name=info,proto3" json:"info,omitempty"` @@ -516,366 +597,398 @@ type Document struct { // A list of MIME types accepted by the API. Consumes []string `protobuf:"bytes,6,rep,name=consumes,proto3" json:"consumes,omitempty"` // A list of MIME types the API can produce. - Produces []string `protobuf:"bytes,7,rep,name=produces,proto3" json:"produces,omitempty"` - Paths *Paths `protobuf:"bytes,8,opt,name=paths,proto3" json:"paths,omitempty"` - Definitions *Definitions `protobuf:"bytes,9,opt,name=definitions,proto3" json:"definitions,omitempty"` - Parameters *ParameterDefinitions `protobuf:"bytes,10,opt,name=parameters,proto3" json:"parameters,omitempty"` - Responses *ResponseDefinitions `protobuf:"bytes,11,opt,name=responses,proto3" json:"responses,omitempty"` - Security []*SecurityRequirement `protobuf:"bytes,12,rep,name=security,proto3" json:"security,omitempty"` - SecurityDefinitions *SecurityDefinitions `protobuf:"bytes,13,opt,name=security_definitions,json=securityDefinitions,proto3" json:"security_definitions,omitempty"` - Tags []*Tag `protobuf:"bytes,14,rep,name=tags,proto3" json:"tags,omitempty"` - ExternalDocs *ExternalDocs `protobuf:"bytes,15,opt,name=external_docs,json=externalDocs,proto3" json:"external_docs,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,16,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Document) Reset() { *m = Document{} } -func (m *Document) String() string { return proto.CompactTextString(m) } -func (*Document) ProtoMessage() {} -func (*Document) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{8} + Produces []string `protobuf:"bytes,7,rep,name=produces,proto3" json:"produces,omitempty"` + Paths *Paths `protobuf:"bytes,8,opt,name=paths,proto3" json:"paths,omitempty"` + Definitions *Definitions `protobuf:"bytes,9,opt,name=definitions,proto3" json:"definitions,omitempty"` + Parameters *ParameterDefinitions `protobuf:"bytes,10,opt,name=parameters,proto3" json:"parameters,omitempty"` + Responses *ResponseDefinitions `protobuf:"bytes,11,opt,name=responses,proto3" json:"responses,omitempty"` + Security []*SecurityRequirement `protobuf:"bytes,12,rep,name=security,proto3" json:"security,omitempty"` + SecurityDefinitions *SecurityDefinitions `protobuf:"bytes,13,opt,name=security_definitions,json=securityDefinitions,proto3" json:"security_definitions,omitempty"` + Tags []*Tag `protobuf:"bytes,14,rep,name=tags,proto3" json:"tags,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,15,opt,name=external_docs,json=externalDocs,proto3" json:"external_docs,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,16,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *Document) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Document.Unmarshal(m, b) -} -func (m *Document) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Document.Marshal(b, m, deterministic) -} -func (m *Document) XXX_Merge(src proto.Message) { - xxx_messageInfo_Document.Merge(m, src) +func (x *Document) Reset() { + *x = Document{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Document) XXX_Size() int { - return xxx_messageInfo_Document.Size(m) + +func (x *Document) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Document) XXX_DiscardUnknown() { - xxx_messageInfo_Document.DiscardUnknown(m) + +func (*Document) ProtoMessage() {} + +func (x *Document) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Document proto.InternalMessageInfo +// Deprecated: Use Document.ProtoReflect.Descriptor instead. +func (*Document) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{8} +} -func (m *Document) GetSwagger() string { - if m != nil { - return m.Swagger +func (x *Document) GetSwagger() string { + if x != nil { + return x.Swagger } return "" } -func (m *Document) GetInfo() *Info { - if m != nil { - return m.Info +func (x *Document) GetInfo() *Info { + if x != nil { + return x.Info } return nil } -func (m *Document) GetHost() string { - if m != nil { - return m.Host +func (x *Document) GetHost() string { + if x != nil { + return x.Host } return "" } -func (m *Document) GetBasePath() string { - if m != nil { - return m.BasePath +func (x *Document) GetBasePath() string { + if x != nil { + return x.BasePath } return "" } -func (m *Document) GetSchemes() []string { - if m != nil { - return m.Schemes +func (x *Document) GetSchemes() []string { + if x != nil { + return x.Schemes } return nil } -func (m *Document) GetConsumes() []string { - if m != nil { - return m.Consumes +func (x *Document) GetConsumes() []string { + if x != nil { + return x.Consumes } return nil } -func (m *Document) GetProduces() []string { - if m != nil { - return m.Produces +func (x *Document) GetProduces() []string { + if x != nil { + return x.Produces } return nil } -func (m *Document) GetPaths() *Paths { - if m != nil { - return m.Paths +func (x *Document) GetPaths() *Paths { + if x != nil { + return x.Paths } return nil } -func (m *Document) GetDefinitions() *Definitions { - if m != nil { - return m.Definitions +func (x *Document) GetDefinitions() *Definitions { + if x != nil { + return x.Definitions } return nil } -func (m *Document) GetParameters() *ParameterDefinitions { - if m != nil { - return m.Parameters +func (x *Document) GetParameters() *ParameterDefinitions { + if x != nil { + return x.Parameters } return nil } -func (m *Document) GetResponses() *ResponseDefinitions { - if m != nil { - return m.Responses +func (x *Document) GetResponses() *ResponseDefinitions { + if x != nil { + return x.Responses } return nil } -func (m *Document) GetSecurity() []*SecurityRequirement { - if m != nil { - return m.Security +func (x *Document) GetSecurity() []*SecurityRequirement { + if x != nil { + return x.Security } return nil } -func (m *Document) GetSecurityDefinitions() *SecurityDefinitions { - if m != nil { - return m.SecurityDefinitions +func (x *Document) GetSecurityDefinitions() *SecurityDefinitions { + if x != nil { + return x.SecurityDefinitions } return nil } -func (m *Document) GetTags() []*Tag { - if m != nil { - return m.Tags +func (x *Document) GetTags() []*Tag { + if x != nil { + return x.Tags } return nil } -func (m *Document) GetExternalDocs() *ExternalDocs { - if m != nil { - return m.ExternalDocs +func (x *Document) GetExternalDocs() *ExternalDocs { + if x != nil { + return x.ExternalDocs } return nil } -func (m *Document) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Document) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type Examples struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + AdditionalProperties []*NamedAny `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Examples) Reset() { *m = Examples{} } -func (m *Examples) String() string { return proto.CompactTextString(m) } -func (*Examples) ProtoMessage() {} -func (*Examples) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{9} +func (x *Examples) Reset() { + *x = Examples{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Examples) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Examples.Unmarshal(m, b) +func (x *Examples) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Examples) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Examples.Marshal(b, m, deterministic) -} -func (m *Examples) XXX_Merge(src proto.Message) { - xxx_messageInfo_Examples.Merge(m, src) -} -func (m *Examples) XXX_Size() int { - return xxx_messageInfo_Examples.Size(m) -} -func (m *Examples) XXX_DiscardUnknown() { - xxx_messageInfo_Examples.DiscardUnknown(m) + +func (*Examples) ProtoMessage() {} + +func (x *Examples) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Examples proto.InternalMessageInfo +// Deprecated: Use Examples.ProtoReflect.Descriptor instead. +func (*Examples) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{9} +} -func (m *Examples) GetAdditionalProperties() []*NamedAny { - if m != nil { - return m.AdditionalProperties +func (x *Examples) GetAdditionalProperties() []*NamedAny { + if x != nil { + return x.AdditionalProperties } return nil } // information about external documentation type ExternalDocs struct { - Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,3,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ExternalDocs) Reset() { *m = ExternalDocs{} } -func (m *ExternalDocs) String() string { return proto.CompactTextString(m) } -func (*ExternalDocs) ProtoMessage() {} -func (*ExternalDocs) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{10} + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,3,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *ExternalDocs) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ExternalDocs.Unmarshal(m, b) -} -func (m *ExternalDocs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ExternalDocs.Marshal(b, m, deterministic) -} -func (m *ExternalDocs) XXX_Merge(src proto.Message) { - xxx_messageInfo_ExternalDocs.Merge(m, src) +func (x *ExternalDocs) Reset() { + *x = ExternalDocs{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ExternalDocs) XXX_Size() int { - return xxx_messageInfo_ExternalDocs.Size(m) + +func (x *ExternalDocs) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ExternalDocs) XXX_DiscardUnknown() { - xxx_messageInfo_ExternalDocs.DiscardUnknown(m) + +func (*ExternalDocs) ProtoMessage() {} + +func (x *ExternalDocs) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ExternalDocs proto.InternalMessageInfo +// Deprecated: Use ExternalDocs.ProtoReflect.Descriptor instead. +func (*ExternalDocs) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{10} +} -func (m *ExternalDocs) GetDescription() string { - if m != nil { - return m.Description +func (x *ExternalDocs) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *ExternalDocs) GetUrl() string { - if m != nil { - return m.Url +func (x *ExternalDocs) GetUrl() string { + if x != nil { + return x.Url } return "" } -func (m *ExternalDocs) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *ExternalDocs) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } // A deterministic version of a JSON Schema object. type FileSchema struct { - Format string `protobuf:"bytes,1,opt,name=format,proto3" json:"format,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Default *Any `protobuf:"bytes,4,opt,name=default,proto3" json:"default,omitempty"` - Required []string `protobuf:"bytes,5,rep,name=required,proto3" json:"required,omitempty"` - Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` - ReadOnly bool `protobuf:"varint,7,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` - ExternalDocs *ExternalDocs `protobuf:"bytes,8,opt,name=external_docs,json=externalDocs,proto3" json:"external_docs,omitempty"` - Example *Any `protobuf:"bytes,9,opt,name=example,proto3" json:"example,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,10,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *FileSchema) Reset() { *m = FileSchema{} } -func (m *FileSchema) String() string { return proto.CompactTextString(m) } -func (*FileSchema) ProtoMessage() {} -func (*FileSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{11} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *FileSchema) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FileSchema.Unmarshal(m, b) -} -func (m *FileSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FileSchema.Marshal(b, m, deterministic) + Format string `protobuf:"bytes,1,opt,name=format,proto3" json:"format,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Default *Any `protobuf:"bytes,4,opt,name=default,proto3" json:"default,omitempty"` + Required []string `protobuf:"bytes,5,rep,name=required,proto3" json:"required,omitempty"` + Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` + ReadOnly bool `protobuf:"varint,7,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,8,opt,name=external_docs,json=externalDocs,proto3" json:"external_docs,omitempty"` + Example *Any `protobuf:"bytes,9,opt,name=example,proto3" json:"example,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,10,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *FileSchema) XXX_Merge(src proto.Message) { - xxx_messageInfo_FileSchema.Merge(m, src) + +func (x *FileSchema) Reset() { + *x = FileSchema{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *FileSchema) XXX_Size() int { - return xxx_messageInfo_FileSchema.Size(m) + +func (x *FileSchema) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *FileSchema) XXX_DiscardUnknown() { - xxx_messageInfo_FileSchema.DiscardUnknown(m) + +func (*FileSchema) ProtoMessage() {} + +func (x *FileSchema) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_FileSchema proto.InternalMessageInfo +// Deprecated: Use FileSchema.ProtoReflect.Descriptor instead. +func (*FileSchema) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{11} +} -func (m *FileSchema) GetFormat() string { - if m != nil { - return m.Format +func (x *FileSchema) GetFormat() string { + if x != nil { + return x.Format } return "" } -func (m *FileSchema) GetTitle() string { - if m != nil { - return m.Title +func (x *FileSchema) GetTitle() string { + if x != nil { + return x.Title } return "" } -func (m *FileSchema) GetDescription() string { - if m != nil { - return m.Description +func (x *FileSchema) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *FileSchema) GetDefault() *Any { - if m != nil { - return m.Default +func (x *FileSchema) GetDefault() *Any { + if x != nil { + return x.Default } return nil } -func (m *FileSchema) GetRequired() []string { - if m != nil { - return m.Required +func (x *FileSchema) GetRequired() []string { + if x != nil { + return x.Required } return nil } -func (m *FileSchema) GetType() string { - if m != nil { - return m.Type +func (x *FileSchema) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *FileSchema) GetReadOnly() bool { - if m != nil { - return m.ReadOnly +func (x *FileSchema) GetReadOnly() bool { + if x != nil { + return x.ReadOnly } return false } -func (m *FileSchema) GetExternalDocs() *ExternalDocs { - if m != nil { - return m.ExternalDocs +func (x *FileSchema) GetExternalDocs() *ExternalDocs { + if x != nil { + return x.ExternalDocs } return nil } -func (m *FileSchema) GetExample() *Any { - if m != nil { - return m.Example +func (x *FileSchema) GetExample() *Any { + if x != nil { + return x.Example } return nil } -func (m *FileSchema) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *FileSchema) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type FormDataParameterSubSchema struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Determines whether or not this parameter is required or optional. Required bool `protobuf:"varint,1,opt,name=required,proto3" json:"required,omitempty"` // Determines the location of the parameter. @@ -885,400 +998,416 @@ type FormDataParameterSubSchema struct { // The name of the parameter. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // allows sending a parameter by name only or with an empty value. - AllowEmptyValue bool `protobuf:"varint,5,opt,name=allow_empty_value,json=allowEmptyValue,proto3" json:"allow_empty_value,omitempty"` - Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` - Format string `protobuf:"bytes,7,opt,name=format,proto3" json:"format,omitempty"` - Items *PrimitivesItems `protobuf:"bytes,8,opt,name=items,proto3" json:"items,omitempty"` - CollectionFormat string `protobuf:"bytes,9,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` - Default *Any `protobuf:"bytes,10,opt,name=default,proto3" json:"default,omitempty"` - Maximum float64 `protobuf:"fixed64,11,opt,name=maximum,proto3" json:"maximum,omitempty"` - ExclusiveMaximum bool `protobuf:"varint,12,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` - Minimum float64 `protobuf:"fixed64,13,opt,name=minimum,proto3" json:"minimum,omitempty"` - ExclusiveMinimum bool `protobuf:"varint,14,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` - MaxLength int64 `protobuf:"varint,15,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` - MinLength int64 `protobuf:"varint,16,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` - Pattern string `protobuf:"bytes,17,opt,name=pattern,proto3" json:"pattern,omitempty"` - MaxItems int64 `protobuf:"varint,18,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` - MinItems int64 `protobuf:"varint,19,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` - UniqueItems bool `protobuf:"varint,20,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` - Enum []*Any `protobuf:"bytes,21,rep,name=enum,proto3" json:"enum,omitempty"` - MultipleOf float64 `protobuf:"fixed64,22,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,23,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *FormDataParameterSubSchema) Reset() { *m = FormDataParameterSubSchema{} } -func (m *FormDataParameterSubSchema) String() string { return proto.CompactTextString(m) } -func (*FormDataParameterSubSchema) ProtoMessage() {} + AllowEmptyValue bool `protobuf:"varint,5,opt,name=allow_empty_value,json=allowEmptyValue,proto3" json:"allow_empty_value,omitempty"` + Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` + Format string `protobuf:"bytes,7,opt,name=format,proto3" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,8,opt,name=items,proto3" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,9,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,10,opt,name=default,proto3" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,11,opt,name=maximum,proto3" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,12,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,13,opt,name=minimum,proto3" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,14,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,15,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,16,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,17,opt,name=pattern,proto3" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,18,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,19,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,20,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,21,rep,name=enum,proto3" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,22,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,23,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` +} + +func (x *FormDataParameterSubSchema) Reset() { + *x = FormDataParameterSubSchema{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FormDataParameterSubSchema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FormDataParameterSubSchema) ProtoMessage() {} + +func (x *FormDataParameterSubSchema) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FormDataParameterSubSchema.ProtoReflect.Descriptor instead. func (*FormDataParameterSubSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{12} -} - -func (m *FormDataParameterSubSchema) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FormDataParameterSubSchema.Unmarshal(m, b) -} -func (m *FormDataParameterSubSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FormDataParameterSubSchema.Marshal(b, m, deterministic) + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{12} } -func (m *FormDataParameterSubSchema) XXX_Merge(src proto.Message) { - xxx_messageInfo_FormDataParameterSubSchema.Merge(m, src) -} -func (m *FormDataParameterSubSchema) XXX_Size() int { - return xxx_messageInfo_FormDataParameterSubSchema.Size(m) -} -func (m *FormDataParameterSubSchema) XXX_DiscardUnknown() { - xxx_messageInfo_FormDataParameterSubSchema.DiscardUnknown(m) -} - -var xxx_messageInfo_FormDataParameterSubSchema proto.InternalMessageInfo -func (m *FormDataParameterSubSchema) GetRequired() bool { - if m != nil { - return m.Required +func (x *FormDataParameterSubSchema) GetRequired() bool { + if x != nil { + return x.Required } return false } -func (m *FormDataParameterSubSchema) GetIn() string { - if m != nil { - return m.In +func (x *FormDataParameterSubSchema) GetIn() string { + if x != nil { + return x.In } return "" } -func (m *FormDataParameterSubSchema) GetDescription() string { - if m != nil { - return m.Description +func (x *FormDataParameterSubSchema) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *FormDataParameterSubSchema) GetName() string { - if m != nil { - return m.Name +func (x *FormDataParameterSubSchema) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *FormDataParameterSubSchema) GetAllowEmptyValue() bool { - if m != nil { - return m.AllowEmptyValue +func (x *FormDataParameterSubSchema) GetAllowEmptyValue() bool { + if x != nil { + return x.AllowEmptyValue } return false } -func (m *FormDataParameterSubSchema) GetType() string { - if m != nil { - return m.Type +func (x *FormDataParameterSubSchema) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *FormDataParameterSubSchema) GetFormat() string { - if m != nil { - return m.Format +func (x *FormDataParameterSubSchema) GetFormat() string { + if x != nil { + return x.Format } return "" } -func (m *FormDataParameterSubSchema) GetItems() *PrimitivesItems { - if m != nil { - return m.Items +func (x *FormDataParameterSubSchema) GetItems() *PrimitivesItems { + if x != nil { + return x.Items } return nil } -func (m *FormDataParameterSubSchema) GetCollectionFormat() string { - if m != nil { - return m.CollectionFormat +func (x *FormDataParameterSubSchema) GetCollectionFormat() string { + if x != nil { + return x.CollectionFormat } return "" } -func (m *FormDataParameterSubSchema) GetDefault() *Any { - if m != nil { - return m.Default +func (x *FormDataParameterSubSchema) GetDefault() *Any { + if x != nil { + return x.Default } return nil } -func (m *FormDataParameterSubSchema) GetMaximum() float64 { - if m != nil { - return m.Maximum +func (x *FormDataParameterSubSchema) GetMaximum() float64 { + if x != nil { + return x.Maximum } return 0 } -func (m *FormDataParameterSubSchema) GetExclusiveMaximum() bool { - if m != nil { - return m.ExclusiveMaximum +func (x *FormDataParameterSubSchema) GetExclusiveMaximum() bool { + if x != nil { + return x.ExclusiveMaximum } return false } -func (m *FormDataParameterSubSchema) GetMinimum() float64 { - if m != nil { - return m.Minimum +func (x *FormDataParameterSubSchema) GetMinimum() float64 { + if x != nil { + return x.Minimum } return 0 } -func (m *FormDataParameterSubSchema) GetExclusiveMinimum() bool { - if m != nil { - return m.ExclusiveMinimum +func (x *FormDataParameterSubSchema) GetExclusiveMinimum() bool { + if x != nil { + return x.ExclusiveMinimum } return false } -func (m *FormDataParameterSubSchema) GetMaxLength() int64 { - if m != nil { - return m.MaxLength +func (x *FormDataParameterSubSchema) GetMaxLength() int64 { + if x != nil { + return x.MaxLength } return 0 } -func (m *FormDataParameterSubSchema) GetMinLength() int64 { - if m != nil { - return m.MinLength +func (x *FormDataParameterSubSchema) GetMinLength() int64 { + if x != nil { + return x.MinLength } return 0 } -func (m *FormDataParameterSubSchema) GetPattern() string { - if m != nil { - return m.Pattern +func (x *FormDataParameterSubSchema) GetPattern() string { + if x != nil { + return x.Pattern } return "" } -func (m *FormDataParameterSubSchema) GetMaxItems() int64 { - if m != nil { - return m.MaxItems +func (x *FormDataParameterSubSchema) GetMaxItems() int64 { + if x != nil { + return x.MaxItems } return 0 } -func (m *FormDataParameterSubSchema) GetMinItems() int64 { - if m != nil { - return m.MinItems +func (x *FormDataParameterSubSchema) GetMinItems() int64 { + if x != nil { + return x.MinItems } return 0 } -func (m *FormDataParameterSubSchema) GetUniqueItems() bool { - if m != nil { - return m.UniqueItems +func (x *FormDataParameterSubSchema) GetUniqueItems() bool { + if x != nil { + return x.UniqueItems } return false } -func (m *FormDataParameterSubSchema) GetEnum() []*Any { - if m != nil { - return m.Enum +func (x *FormDataParameterSubSchema) GetEnum() []*Any { + if x != nil { + return x.Enum } return nil } -func (m *FormDataParameterSubSchema) GetMultipleOf() float64 { - if m != nil { - return m.MultipleOf +func (x *FormDataParameterSubSchema) GetMultipleOf() float64 { + if x != nil { + return x.MultipleOf } return 0 } -func (m *FormDataParameterSubSchema) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *FormDataParameterSubSchema) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type Header struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` - Items *PrimitivesItems `protobuf:"bytes,3,opt,name=items,proto3" json:"items,omitempty"` - CollectionFormat string `protobuf:"bytes,4,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` - Default *Any `protobuf:"bytes,5,opt,name=default,proto3" json:"default,omitempty"` - Maximum float64 `protobuf:"fixed64,6,opt,name=maximum,proto3" json:"maximum,omitempty"` - ExclusiveMaximum bool `protobuf:"varint,7,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` - Minimum float64 `protobuf:"fixed64,8,opt,name=minimum,proto3" json:"minimum,omitempty"` - ExclusiveMinimum bool `protobuf:"varint,9,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` - MaxLength int64 `protobuf:"varint,10,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` - MinLength int64 `protobuf:"varint,11,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` - Pattern string `protobuf:"bytes,12,opt,name=pattern,proto3" json:"pattern,omitempty"` - MaxItems int64 `protobuf:"varint,13,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` - MinItems int64 `protobuf:"varint,14,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` - UniqueItems bool `protobuf:"varint,15,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` - Enum []*Any `protobuf:"bytes,16,rep,name=enum,proto3" json:"enum,omitempty"` - MultipleOf float64 `protobuf:"fixed64,17,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` - Description string `protobuf:"bytes,18,opt,name=description,proto3" json:"description,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,19,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Header) Reset() { *m = Header{} } -func (m *Header) String() string { return proto.CompactTextString(m) } -func (*Header) ProtoMessage() {} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,3,opt,name=items,proto3" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,4,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,5,opt,name=default,proto3" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,6,opt,name=maximum,proto3" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,7,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,8,opt,name=minimum,proto3" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,9,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,10,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,11,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,12,opt,name=pattern,proto3" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,13,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,14,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,15,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,16,rep,name=enum,proto3" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,17,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` + Description string `protobuf:"bytes,18,opt,name=description,proto3" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,19,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` +} + +func (x *Header) Reset() { + *x = Header{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Header) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Header) ProtoMessage() {} + +func (x *Header) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Header.ProtoReflect.Descriptor instead. func (*Header) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{13} -} - -func (m *Header) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Header.Unmarshal(m, b) -} -func (m *Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Header.Marshal(b, m, deterministic) -} -func (m *Header) XXX_Merge(src proto.Message) { - xxx_messageInfo_Header.Merge(m, src) -} -func (m *Header) XXX_Size() int { - return xxx_messageInfo_Header.Size(m) + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{13} } -func (m *Header) XXX_DiscardUnknown() { - xxx_messageInfo_Header.DiscardUnknown(m) -} - -var xxx_messageInfo_Header proto.InternalMessageInfo -func (m *Header) GetType() string { - if m != nil { - return m.Type +func (x *Header) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *Header) GetFormat() string { - if m != nil { - return m.Format +func (x *Header) GetFormat() string { + if x != nil { + return x.Format } return "" } -func (m *Header) GetItems() *PrimitivesItems { - if m != nil { - return m.Items +func (x *Header) GetItems() *PrimitivesItems { + if x != nil { + return x.Items } return nil } -func (m *Header) GetCollectionFormat() string { - if m != nil { - return m.CollectionFormat +func (x *Header) GetCollectionFormat() string { + if x != nil { + return x.CollectionFormat } return "" } -func (m *Header) GetDefault() *Any { - if m != nil { - return m.Default +func (x *Header) GetDefault() *Any { + if x != nil { + return x.Default } return nil } -func (m *Header) GetMaximum() float64 { - if m != nil { - return m.Maximum +func (x *Header) GetMaximum() float64 { + if x != nil { + return x.Maximum } return 0 } -func (m *Header) GetExclusiveMaximum() bool { - if m != nil { - return m.ExclusiveMaximum +func (x *Header) GetExclusiveMaximum() bool { + if x != nil { + return x.ExclusiveMaximum } return false } -func (m *Header) GetMinimum() float64 { - if m != nil { - return m.Minimum +func (x *Header) GetMinimum() float64 { + if x != nil { + return x.Minimum } return 0 } -func (m *Header) GetExclusiveMinimum() bool { - if m != nil { - return m.ExclusiveMinimum +func (x *Header) GetExclusiveMinimum() bool { + if x != nil { + return x.ExclusiveMinimum } return false } -func (m *Header) GetMaxLength() int64 { - if m != nil { - return m.MaxLength +func (x *Header) GetMaxLength() int64 { + if x != nil { + return x.MaxLength } return 0 } -func (m *Header) GetMinLength() int64 { - if m != nil { - return m.MinLength +func (x *Header) GetMinLength() int64 { + if x != nil { + return x.MinLength } return 0 } -func (m *Header) GetPattern() string { - if m != nil { - return m.Pattern +func (x *Header) GetPattern() string { + if x != nil { + return x.Pattern } return "" } -func (m *Header) GetMaxItems() int64 { - if m != nil { - return m.MaxItems +func (x *Header) GetMaxItems() int64 { + if x != nil { + return x.MaxItems } return 0 } -func (m *Header) GetMinItems() int64 { - if m != nil { - return m.MinItems +func (x *Header) GetMinItems() int64 { + if x != nil { + return x.MinItems } return 0 } -func (m *Header) GetUniqueItems() bool { - if m != nil { - return m.UniqueItems +func (x *Header) GetUniqueItems() bool { + if x != nil { + return x.UniqueItems } return false } -func (m *Header) GetEnum() []*Any { - if m != nil { - return m.Enum +func (x *Header) GetEnum() []*Any { + if x != nil { + return x.Enum } return nil } -func (m *Header) GetMultipleOf() float64 { - if m != nil { - return m.MultipleOf +func (x *Header) GetMultipleOf() float64 { + if x != nil { + return x.MultipleOf } return 0 } -func (m *Header) GetDescription() string { - if m != nil { - return m.Description +func (x *Header) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Header) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Header) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type HeaderParameterSubSchema struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Determines whether or not this parameter is required or optional. Required bool `protobuf:"varint,1,opt,name=required,proto3" json:"required,omitempty"` // Determines the location of the parameter. @@ -1286,250 +1415,266 @@ type HeaderParameterSubSchema struct { // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // The name of the parameter. - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` - Format string `protobuf:"bytes,6,opt,name=format,proto3" json:"format,omitempty"` - Items *PrimitivesItems `protobuf:"bytes,7,opt,name=items,proto3" json:"items,omitempty"` - CollectionFormat string `protobuf:"bytes,8,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` - Default *Any `protobuf:"bytes,9,opt,name=default,proto3" json:"default,omitempty"` - Maximum float64 `protobuf:"fixed64,10,opt,name=maximum,proto3" json:"maximum,omitempty"` - ExclusiveMaximum bool `protobuf:"varint,11,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` - Minimum float64 `protobuf:"fixed64,12,opt,name=minimum,proto3" json:"minimum,omitempty"` - ExclusiveMinimum bool `protobuf:"varint,13,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` - MaxLength int64 `protobuf:"varint,14,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` - MinLength int64 `protobuf:"varint,15,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` - Pattern string `protobuf:"bytes,16,opt,name=pattern,proto3" json:"pattern,omitempty"` - MaxItems int64 `protobuf:"varint,17,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` - MinItems int64 `protobuf:"varint,18,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` - UniqueItems bool `protobuf:"varint,19,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` - Enum []*Any `protobuf:"bytes,20,rep,name=enum,proto3" json:"enum,omitempty"` - MultipleOf float64 `protobuf:"fixed64,21,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,22,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *HeaderParameterSubSchema) Reset() { *m = HeaderParameterSubSchema{} } -func (m *HeaderParameterSubSchema) String() string { return proto.CompactTextString(m) } -func (*HeaderParameterSubSchema) ProtoMessage() {} + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` + Format string `protobuf:"bytes,6,opt,name=format,proto3" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,7,opt,name=items,proto3" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,8,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,9,opt,name=default,proto3" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,10,opt,name=maximum,proto3" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,11,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,12,opt,name=minimum,proto3" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,13,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,14,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,15,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,16,opt,name=pattern,proto3" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,17,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,18,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,19,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,20,rep,name=enum,proto3" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,21,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,22,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` +} + +func (x *HeaderParameterSubSchema) Reset() { + *x = HeaderParameterSubSchema{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HeaderParameterSubSchema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderParameterSubSchema) ProtoMessage() {} + +func (x *HeaderParameterSubSchema) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderParameterSubSchema.ProtoReflect.Descriptor instead. func (*HeaderParameterSubSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{14} -} - -func (m *HeaderParameterSubSchema) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_HeaderParameterSubSchema.Unmarshal(m, b) -} -func (m *HeaderParameterSubSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_HeaderParameterSubSchema.Marshal(b, m, deterministic) -} -func (m *HeaderParameterSubSchema) XXX_Merge(src proto.Message) { - xxx_messageInfo_HeaderParameterSubSchema.Merge(m, src) -} -func (m *HeaderParameterSubSchema) XXX_Size() int { - return xxx_messageInfo_HeaderParameterSubSchema.Size(m) -} -func (m *HeaderParameterSubSchema) XXX_DiscardUnknown() { - xxx_messageInfo_HeaderParameterSubSchema.DiscardUnknown(m) + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{14} } -var xxx_messageInfo_HeaderParameterSubSchema proto.InternalMessageInfo - -func (m *HeaderParameterSubSchema) GetRequired() bool { - if m != nil { - return m.Required +func (x *HeaderParameterSubSchema) GetRequired() bool { + if x != nil { + return x.Required } return false } -func (m *HeaderParameterSubSchema) GetIn() string { - if m != nil { - return m.In +func (x *HeaderParameterSubSchema) GetIn() string { + if x != nil { + return x.In } return "" } -func (m *HeaderParameterSubSchema) GetDescription() string { - if m != nil { - return m.Description +func (x *HeaderParameterSubSchema) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *HeaderParameterSubSchema) GetName() string { - if m != nil { - return m.Name +func (x *HeaderParameterSubSchema) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *HeaderParameterSubSchema) GetType() string { - if m != nil { - return m.Type +func (x *HeaderParameterSubSchema) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *HeaderParameterSubSchema) GetFormat() string { - if m != nil { - return m.Format +func (x *HeaderParameterSubSchema) GetFormat() string { + if x != nil { + return x.Format } return "" } -func (m *HeaderParameterSubSchema) GetItems() *PrimitivesItems { - if m != nil { - return m.Items +func (x *HeaderParameterSubSchema) GetItems() *PrimitivesItems { + if x != nil { + return x.Items } return nil } -func (m *HeaderParameterSubSchema) GetCollectionFormat() string { - if m != nil { - return m.CollectionFormat +func (x *HeaderParameterSubSchema) GetCollectionFormat() string { + if x != nil { + return x.CollectionFormat } return "" } -func (m *HeaderParameterSubSchema) GetDefault() *Any { - if m != nil { - return m.Default +func (x *HeaderParameterSubSchema) GetDefault() *Any { + if x != nil { + return x.Default } return nil } -func (m *HeaderParameterSubSchema) GetMaximum() float64 { - if m != nil { - return m.Maximum +func (x *HeaderParameterSubSchema) GetMaximum() float64 { + if x != nil { + return x.Maximum } return 0 } -func (m *HeaderParameterSubSchema) GetExclusiveMaximum() bool { - if m != nil { - return m.ExclusiveMaximum +func (x *HeaderParameterSubSchema) GetExclusiveMaximum() bool { + if x != nil { + return x.ExclusiveMaximum } return false } -func (m *HeaderParameterSubSchema) GetMinimum() float64 { - if m != nil { - return m.Minimum +func (x *HeaderParameterSubSchema) GetMinimum() float64 { + if x != nil { + return x.Minimum } return 0 } -func (m *HeaderParameterSubSchema) GetExclusiveMinimum() bool { - if m != nil { - return m.ExclusiveMinimum +func (x *HeaderParameterSubSchema) GetExclusiveMinimum() bool { + if x != nil { + return x.ExclusiveMinimum } return false } -func (m *HeaderParameterSubSchema) GetMaxLength() int64 { - if m != nil { - return m.MaxLength +func (x *HeaderParameterSubSchema) GetMaxLength() int64 { + if x != nil { + return x.MaxLength } return 0 } -func (m *HeaderParameterSubSchema) GetMinLength() int64 { - if m != nil { - return m.MinLength +func (x *HeaderParameterSubSchema) GetMinLength() int64 { + if x != nil { + return x.MinLength } return 0 } -func (m *HeaderParameterSubSchema) GetPattern() string { - if m != nil { - return m.Pattern +func (x *HeaderParameterSubSchema) GetPattern() string { + if x != nil { + return x.Pattern } return "" } -func (m *HeaderParameterSubSchema) GetMaxItems() int64 { - if m != nil { - return m.MaxItems +func (x *HeaderParameterSubSchema) GetMaxItems() int64 { + if x != nil { + return x.MaxItems } return 0 } -func (m *HeaderParameterSubSchema) GetMinItems() int64 { - if m != nil { - return m.MinItems +func (x *HeaderParameterSubSchema) GetMinItems() int64 { + if x != nil { + return x.MinItems } return 0 } -func (m *HeaderParameterSubSchema) GetUniqueItems() bool { - if m != nil { - return m.UniqueItems +func (x *HeaderParameterSubSchema) GetUniqueItems() bool { + if x != nil { + return x.UniqueItems } return false } -func (m *HeaderParameterSubSchema) GetEnum() []*Any { - if m != nil { - return m.Enum +func (x *HeaderParameterSubSchema) GetEnum() []*Any { + if x != nil { + return x.Enum } return nil } -func (m *HeaderParameterSubSchema) GetMultipleOf() float64 { - if m != nil { - return m.MultipleOf +func (x *HeaderParameterSubSchema) GetMultipleOf() float64 { + if x != nil { + return x.MultipleOf } return 0 } -func (m *HeaderParameterSubSchema) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *HeaderParameterSubSchema) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type Headers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + AdditionalProperties []*NamedHeader `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Headers) Reset() { *m = Headers{} } -func (m *Headers) String() string { return proto.CompactTextString(m) } -func (*Headers) ProtoMessage() {} -func (*Headers) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{15} +func (x *Headers) Reset() { + *x = Headers{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Headers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Headers.Unmarshal(m, b) -} -func (m *Headers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Headers.Marshal(b, m, deterministic) -} -func (m *Headers) XXX_Merge(src proto.Message) { - xxx_messageInfo_Headers.Merge(m, src) +func (x *Headers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Headers) XXX_Size() int { - return xxx_messageInfo_Headers.Size(m) -} -func (m *Headers) XXX_DiscardUnknown() { - xxx_messageInfo_Headers.DiscardUnknown(m) + +func (*Headers) ProtoMessage() {} + +func (x *Headers) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Headers proto.InternalMessageInfo +// Deprecated: Use Headers.ProtoReflect.Descriptor instead. +func (*Headers) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{15} +} -func (m *Headers) GetAdditionalProperties() []*NamedHeader { - if m != nil { - return m.AdditionalProperties +func (x *Headers) GetAdditionalProperties() []*NamedHeader { + if x != nil { + return x.AdditionalProperties } return nil } // General information about the API. type Info struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // A unique and precise title of the API. Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` // A semantic version number of the API. @@ -1537,797 +1682,885 @@ type Info struct { // A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // The terms of service for the API. - TermsOfService string `protobuf:"bytes,4,opt,name=terms_of_service,json=termsOfService,proto3" json:"terms_of_service,omitempty"` - Contact *Contact `protobuf:"bytes,5,opt,name=contact,proto3" json:"contact,omitempty"` - License *License `protobuf:"bytes,6,opt,name=license,proto3" json:"license,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,7,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Info) Reset() { *m = Info{} } -func (m *Info) String() string { return proto.CompactTextString(m) } -func (*Info) ProtoMessage() {} -func (*Info) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{16} + TermsOfService string `protobuf:"bytes,4,opt,name=terms_of_service,json=termsOfService,proto3" json:"terms_of_service,omitempty"` + Contact *Contact `protobuf:"bytes,5,opt,name=contact,proto3" json:"contact,omitempty"` + License *License `protobuf:"bytes,6,opt,name=license,proto3" json:"license,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,7,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *Info) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Info.Unmarshal(m, b) -} -func (m *Info) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Info.Marshal(b, m, deterministic) -} -func (m *Info) XXX_Merge(src proto.Message) { - xxx_messageInfo_Info.Merge(m, src) +func (x *Info) Reset() { + *x = Info{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Info) XXX_Size() int { - return xxx_messageInfo_Info.Size(m) + +func (x *Info) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Info) XXX_DiscardUnknown() { - xxx_messageInfo_Info.DiscardUnknown(m) + +func (*Info) ProtoMessage() {} + +func (x *Info) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Info proto.InternalMessageInfo +// Deprecated: Use Info.ProtoReflect.Descriptor instead. +func (*Info) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{16} +} -func (m *Info) GetTitle() string { - if m != nil { - return m.Title +func (x *Info) GetTitle() string { + if x != nil { + return x.Title } return "" } -func (m *Info) GetVersion() string { - if m != nil { - return m.Version +func (x *Info) GetVersion() string { + if x != nil { + return x.Version } return "" } -func (m *Info) GetDescription() string { - if m != nil { - return m.Description +func (x *Info) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Info) GetTermsOfService() string { - if m != nil { - return m.TermsOfService +func (x *Info) GetTermsOfService() string { + if x != nil { + return x.TermsOfService } return "" } -func (m *Info) GetContact() *Contact { - if m != nil { - return m.Contact +func (x *Info) GetContact() *Contact { + if x != nil { + return x.Contact } return nil } -func (m *Info) GetLicense() *License { - if m != nil { - return m.License +func (x *Info) GetLicense() *License { + if x != nil { + return x.License } return nil } -func (m *Info) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Info) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type ItemsItem struct { - Schema []*Schema `protobuf:"bytes,1,rep,name=schema,proto3" json:"schema,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ItemsItem) Reset() { *m = ItemsItem{} } -func (m *ItemsItem) String() string { return proto.CompactTextString(m) } -func (*ItemsItem) ProtoMessage() {} -func (*ItemsItem) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{17} + Schema []*Schema `protobuf:"bytes,1,rep,name=schema,proto3" json:"schema,omitempty"` } -func (m *ItemsItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ItemsItem.Unmarshal(m, b) -} -func (m *ItemsItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ItemsItem.Marshal(b, m, deterministic) -} -func (m *ItemsItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_ItemsItem.Merge(m, src) +func (x *ItemsItem) Reset() { + *x = ItemsItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ItemsItem) XXX_Size() int { - return xxx_messageInfo_ItemsItem.Size(m) + +func (x *ItemsItem) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ItemsItem) XXX_DiscardUnknown() { - xxx_messageInfo_ItemsItem.DiscardUnknown(m) + +func (*ItemsItem) ProtoMessage() {} + +func (x *ItemsItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ItemsItem proto.InternalMessageInfo +// Deprecated: Use ItemsItem.ProtoReflect.Descriptor instead. +func (*ItemsItem) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{17} +} -func (m *ItemsItem) GetSchema() []*Schema { - if m != nil { - return m.Schema +func (x *ItemsItem) GetSchema() []*Schema { + if x != nil { + return x.Schema } return nil } type JsonReference struct { - XRef string `protobuf:"bytes,1,opt,name=_ref,json=Ref,proto3" json:"_ref,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *JsonReference) Reset() { *m = JsonReference{} } -func (m *JsonReference) String() string { return proto.CompactTextString(m) } -func (*JsonReference) ProtoMessage() {} -func (*JsonReference) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{18} + XRef string `protobuf:"bytes,1,opt,name=_ref,json=Ref,proto3" json:"_ref,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` } -func (m *JsonReference) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_JsonReference.Unmarshal(m, b) -} -func (m *JsonReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_JsonReference.Marshal(b, m, deterministic) -} -func (m *JsonReference) XXX_Merge(src proto.Message) { - xxx_messageInfo_JsonReference.Merge(m, src) +func (x *JsonReference) Reset() { + *x = JsonReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *JsonReference) XXX_Size() int { - return xxx_messageInfo_JsonReference.Size(m) + +func (x *JsonReference) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *JsonReference) XXX_DiscardUnknown() { - xxx_messageInfo_JsonReference.DiscardUnknown(m) + +func (*JsonReference) ProtoMessage() {} + +func (x *JsonReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_JsonReference proto.InternalMessageInfo +// Deprecated: Use JsonReference.ProtoReflect.Descriptor instead. +func (*JsonReference) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{18} +} -func (m *JsonReference) GetXRef() string { - if m != nil { - return m.XRef +func (x *JsonReference) GetXRef() string { + if x != nil { + return x.XRef } return "" } -func (m *JsonReference) GetDescription() string { - if m != nil { - return m.Description +func (x *JsonReference) GetDescription() string { + if x != nil { + return x.Description } return "" } type License struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The name of the license type. It's encouraged to use an OSI compatible license. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The URL pointing to the license. - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,3,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,3,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *License) Reset() { *m = License{} } -func (m *License) String() string { return proto.CompactTextString(m) } -func (*License) ProtoMessage() {} -func (*License) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{19} +func (x *License) Reset() { + *x = License{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *License) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_License.Unmarshal(m, b) -} -func (m *License) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_License.Marshal(b, m, deterministic) -} -func (m *License) XXX_Merge(src proto.Message) { - xxx_messageInfo_License.Merge(m, src) +func (x *License) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *License) XXX_Size() int { - return xxx_messageInfo_License.Size(m) -} -func (m *License) XXX_DiscardUnknown() { - xxx_messageInfo_License.DiscardUnknown(m) + +func (*License) ProtoMessage() {} + +func (x *License) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_License proto.InternalMessageInfo +// Deprecated: Use License.ProtoReflect.Descriptor instead. +func (*License) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{19} +} -func (m *License) GetName() string { - if m != nil { - return m.Name +func (x *License) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *License) GetUrl() string { - if m != nil { - return m.Url +func (x *License) GetUrl() string { + if x != nil { + return x.Url } return "" } -func (m *License) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *License) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } // Automatically-generated message used to represent maps of Any as ordered (name,value) pairs. type NamedAny struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Map key Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Mapped value - Value *Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value *Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *NamedAny) Reset() { *m = NamedAny{} } -func (m *NamedAny) String() string { return proto.CompactTextString(m) } -func (*NamedAny) ProtoMessage() {} -func (*NamedAny) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{20} +func (x *NamedAny) Reset() { + *x = NamedAny{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NamedAny) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NamedAny.Unmarshal(m, b) +func (x *NamedAny) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NamedAny) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NamedAny.Marshal(b, m, deterministic) -} -func (m *NamedAny) XXX_Merge(src proto.Message) { - xxx_messageInfo_NamedAny.Merge(m, src) -} -func (m *NamedAny) XXX_Size() int { - return xxx_messageInfo_NamedAny.Size(m) -} -func (m *NamedAny) XXX_DiscardUnknown() { - xxx_messageInfo_NamedAny.DiscardUnknown(m) + +func (*NamedAny) ProtoMessage() {} + +func (x *NamedAny) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NamedAny proto.InternalMessageInfo +// Deprecated: Use NamedAny.ProtoReflect.Descriptor instead. +func (*NamedAny) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{20} +} -func (m *NamedAny) GetName() string { - if m != nil { - return m.Name +func (x *NamedAny) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *NamedAny) GetValue() *Any { - if m != nil { - return m.Value +func (x *NamedAny) GetValue() *Any { + if x != nil { + return x.Value } return nil } // Automatically-generated message used to represent maps of Header as ordered (name,value) pairs. type NamedHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Map key Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Mapped value - Value *Header `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value *Header `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *NamedHeader) Reset() { *m = NamedHeader{} } -func (m *NamedHeader) String() string { return proto.CompactTextString(m) } -func (*NamedHeader) ProtoMessage() {} -func (*NamedHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{21} +func (x *NamedHeader) Reset() { + *x = NamedHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NamedHeader) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NamedHeader.Unmarshal(m, b) -} -func (m *NamedHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NamedHeader.Marshal(b, m, deterministic) -} -func (m *NamedHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_NamedHeader.Merge(m, src) -} -func (m *NamedHeader) XXX_Size() int { - return xxx_messageInfo_NamedHeader.Size(m) +func (x *NamedHeader) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NamedHeader) XXX_DiscardUnknown() { - xxx_messageInfo_NamedHeader.DiscardUnknown(m) + +func (*NamedHeader) ProtoMessage() {} + +func (x *NamedHeader) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NamedHeader proto.InternalMessageInfo +// Deprecated: Use NamedHeader.ProtoReflect.Descriptor instead. +func (*NamedHeader) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{21} +} -func (m *NamedHeader) GetName() string { - if m != nil { - return m.Name +func (x *NamedHeader) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *NamedHeader) GetValue() *Header { - if m != nil { - return m.Value +func (x *NamedHeader) GetValue() *Header { + if x != nil { + return x.Value } return nil } // Automatically-generated message used to represent maps of Parameter as ordered (name,value) pairs. type NamedParameter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Map key Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Mapped value - Value *Parameter `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value *Parameter `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *NamedParameter) Reset() { *m = NamedParameter{} } -func (m *NamedParameter) String() string { return proto.CompactTextString(m) } -func (*NamedParameter) ProtoMessage() {} -func (*NamedParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{22} +func (x *NamedParameter) Reset() { + *x = NamedParameter{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NamedParameter) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NamedParameter.Unmarshal(m, b) -} -func (m *NamedParameter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NamedParameter.Marshal(b, m, deterministic) -} -func (m *NamedParameter) XXX_Merge(src proto.Message) { - xxx_messageInfo_NamedParameter.Merge(m, src) +func (x *NamedParameter) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NamedParameter) XXX_Size() int { - return xxx_messageInfo_NamedParameter.Size(m) -} -func (m *NamedParameter) XXX_DiscardUnknown() { - xxx_messageInfo_NamedParameter.DiscardUnknown(m) + +func (*NamedParameter) ProtoMessage() {} + +func (x *NamedParameter) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NamedParameter proto.InternalMessageInfo +// Deprecated: Use NamedParameter.ProtoReflect.Descriptor instead. +func (*NamedParameter) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{22} +} -func (m *NamedParameter) GetName() string { - if m != nil { - return m.Name +func (x *NamedParameter) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *NamedParameter) GetValue() *Parameter { - if m != nil { - return m.Value +func (x *NamedParameter) GetValue() *Parameter { + if x != nil { + return x.Value } return nil } // Automatically-generated message used to represent maps of PathItem as ordered (name,value) pairs. type NamedPathItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Map key Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Mapped value - Value *PathItem `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value *PathItem `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *NamedPathItem) Reset() { *m = NamedPathItem{} } -func (m *NamedPathItem) String() string { return proto.CompactTextString(m) } -func (*NamedPathItem) ProtoMessage() {} -func (*NamedPathItem) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{23} +func (x *NamedPathItem) Reset() { + *x = NamedPathItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NamedPathItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NamedPathItem.Unmarshal(m, b) -} -func (m *NamedPathItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NamedPathItem.Marshal(b, m, deterministic) +func (x *NamedPathItem) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NamedPathItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_NamedPathItem.Merge(m, src) -} -func (m *NamedPathItem) XXX_Size() int { - return xxx_messageInfo_NamedPathItem.Size(m) -} -func (m *NamedPathItem) XXX_DiscardUnknown() { - xxx_messageInfo_NamedPathItem.DiscardUnknown(m) + +func (*NamedPathItem) ProtoMessage() {} + +func (x *NamedPathItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NamedPathItem proto.InternalMessageInfo +// Deprecated: Use NamedPathItem.ProtoReflect.Descriptor instead. +func (*NamedPathItem) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{23} +} -func (m *NamedPathItem) GetName() string { - if m != nil { - return m.Name +func (x *NamedPathItem) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *NamedPathItem) GetValue() *PathItem { - if m != nil { - return m.Value +func (x *NamedPathItem) GetValue() *PathItem { + if x != nil { + return x.Value } return nil } // Automatically-generated message used to represent maps of Response as ordered (name,value) pairs. type NamedResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Map key Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Mapped value - Value *Response `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value *Response `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *NamedResponse) Reset() { *m = NamedResponse{} } -func (m *NamedResponse) String() string { return proto.CompactTextString(m) } -func (*NamedResponse) ProtoMessage() {} -func (*NamedResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{24} +func (x *NamedResponse) Reset() { + *x = NamedResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NamedResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NamedResponse.Unmarshal(m, b) +func (x *NamedResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NamedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NamedResponse.Marshal(b, m, deterministic) -} -func (m *NamedResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NamedResponse.Merge(m, src) -} -func (m *NamedResponse) XXX_Size() int { - return xxx_messageInfo_NamedResponse.Size(m) -} -func (m *NamedResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NamedResponse.DiscardUnknown(m) + +func (*NamedResponse) ProtoMessage() {} + +func (x *NamedResponse) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NamedResponse proto.InternalMessageInfo +// Deprecated: Use NamedResponse.ProtoReflect.Descriptor instead. +func (*NamedResponse) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{24} +} -func (m *NamedResponse) GetName() string { - if m != nil { - return m.Name +func (x *NamedResponse) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *NamedResponse) GetValue() *Response { - if m != nil { - return m.Value +func (x *NamedResponse) GetValue() *Response { + if x != nil { + return x.Value } return nil } // Automatically-generated message used to represent maps of ResponseValue as ordered (name,value) pairs. type NamedResponseValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Map key Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Mapped value - Value *ResponseValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value *ResponseValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *NamedResponseValue) Reset() { *m = NamedResponseValue{} } -func (m *NamedResponseValue) String() string { return proto.CompactTextString(m) } -func (*NamedResponseValue) ProtoMessage() {} -func (*NamedResponseValue) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{25} +func (x *NamedResponseValue) Reset() { + *x = NamedResponseValue{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NamedResponseValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NamedResponseValue.Unmarshal(m, b) -} -func (m *NamedResponseValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NamedResponseValue.Marshal(b, m, deterministic) -} -func (m *NamedResponseValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_NamedResponseValue.Merge(m, src) -} -func (m *NamedResponseValue) XXX_Size() int { - return xxx_messageInfo_NamedResponseValue.Size(m) +func (x *NamedResponseValue) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NamedResponseValue) XXX_DiscardUnknown() { - xxx_messageInfo_NamedResponseValue.DiscardUnknown(m) + +func (*NamedResponseValue) ProtoMessage() {} + +func (x *NamedResponseValue) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NamedResponseValue proto.InternalMessageInfo +// Deprecated: Use NamedResponseValue.ProtoReflect.Descriptor instead. +func (*NamedResponseValue) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{25} +} -func (m *NamedResponseValue) GetName() string { - if m != nil { - return m.Name +func (x *NamedResponseValue) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *NamedResponseValue) GetValue() *ResponseValue { - if m != nil { - return m.Value +func (x *NamedResponseValue) GetValue() *ResponseValue { + if x != nil { + return x.Value } return nil } // Automatically-generated message used to represent maps of Schema as ordered (name,value) pairs. type NamedSchema struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Map key Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Mapped value - Value *Schema `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value *Schema `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *NamedSchema) Reset() { *m = NamedSchema{} } -func (m *NamedSchema) String() string { return proto.CompactTextString(m) } -func (*NamedSchema) ProtoMessage() {} -func (*NamedSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{26} +func (x *NamedSchema) Reset() { + *x = NamedSchema{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NamedSchema) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NamedSchema.Unmarshal(m, b) -} -func (m *NamedSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NamedSchema.Marshal(b, m, deterministic) -} -func (m *NamedSchema) XXX_Merge(src proto.Message) { - xxx_messageInfo_NamedSchema.Merge(m, src) +func (x *NamedSchema) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NamedSchema) XXX_Size() int { - return xxx_messageInfo_NamedSchema.Size(m) -} -func (m *NamedSchema) XXX_DiscardUnknown() { - xxx_messageInfo_NamedSchema.DiscardUnknown(m) + +func (*NamedSchema) ProtoMessage() {} + +func (x *NamedSchema) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NamedSchema proto.InternalMessageInfo +// Deprecated: Use NamedSchema.ProtoReflect.Descriptor instead. +func (*NamedSchema) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{26} +} -func (m *NamedSchema) GetName() string { - if m != nil { - return m.Name +func (x *NamedSchema) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *NamedSchema) GetValue() *Schema { - if m != nil { - return m.Value +func (x *NamedSchema) GetValue() *Schema { + if x != nil { + return x.Value } return nil } // Automatically-generated message used to represent maps of SecurityDefinitionsItem as ordered (name,value) pairs. type NamedSecurityDefinitionsItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Map key Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Mapped value - Value *SecurityDefinitionsItem `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value *SecurityDefinitionsItem `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *NamedSecurityDefinitionsItem) Reset() { *m = NamedSecurityDefinitionsItem{} } -func (m *NamedSecurityDefinitionsItem) String() string { return proto.CompactTextString(m) } -func (*NamedSecurityDefinitionsItem) ProtoMessage() {} -func (*NamedSecurityDefinitionsItem) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{27} +func (x *NamedSecurityDefinitionsItem) Reset() { + *x = NamedSecurityDefinitionsItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NamedSecurityDefinitionsItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NamedSecurityDefinitionsItem.Unmarshal(m, b) -} -func (m *NamedSecurityDefinitionsItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NamedSecurityDefinitionsItem.Marshal(b, m, deterministic) +func (x *NamedSecurityDefinitionsItem) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NamedSecurityDefinitionsItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_NamedSecurityDefinitionsItem.Merge(m, src) -} -func (m *NamedSecurityDefinitionsItem) XXX_Size() int { - return xxx_messageInfo_NamedSecurityDefinitionsItem.Size(m) -} -func (m *NamedSecurityDefinitionsItem) XXX_DiscardUnknown() { - xxx_messageInfo_NamedSecurityDefinitionsItem.DiscardUnknown(m) + +func (*NamedSecurityDefinitionsItem) ProtoMessage() {} + +func (x *NamedSecurityDefinitionsItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NamedSecurityDefinitionsItem proto.InternalMessageInfo +// Deprecated: Use NamedSecurityDefinitionsItem.ProtoReflect.Descriptor instead. +func (*NamedSecurityDefinitionsItem) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{27} +} -func (m *NamedSecurityDefinitionsItem) GetName() string { - if m != nil { - return m.Name +func (x *NamedSecurityDefinitionsItem) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *NamedSecurityDefinitionsItem) GetValue() *SecurityDefinitionsItem { - if m != nil { - return m.Value +func (x *NamedSecurityDefinitionsItem) GetValue() *SecurityDefinitionsItem { + if x != nil { + return x.Value } return nil } // Automatically-generated message used to represent maps of string as ordered (name,value) pairs. type NamedString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Map key Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Mapped value - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *NamedString) Reset() { *m = NamedString{} } -func (m *NamedString) String() string { return proto.CompactTextString(m) } -func (*NamedString) ProtoMessage() {} -func (*NamedString) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{28} +func (x *NamedString) Reset() { + *x = NamedString{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NamedString) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NamedString.Unmarshal(m, b) +func (x *NamedString) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NamedString) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NamedString.Marshal(b, m, deterministic) -} -func (m *NamedString) XXX_Merge(src proto.Message) { - xxx_messageInfo_NamedString.Merge(m, src) -} -func (m *NamedString) XXX_Size() int { - return xxx_messageInfo_NamedString.Size(m) -} -func (m *NamedString) XXX_DiscardUnknown() { - xxx_messageInfo_NamedString.DiscardUnknown(m) + +func (*NamedString) ProtoMessage() {} + +func (x *NamedString) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NamedString proto.InternalMessageInfo +// Deprecated: Use NamedString.ProtoReflect.Descriptor instead. +func (*NamedString) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{28} +} -func (m *NamedString) GetName() string { - if m != nil { - return m.Name +func (x *NamedString) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *NamedString) GetValue() string { - if m != nil { - return m.Value +func (x *NamedString) GetValue() string { + if x != nil { + return x.Value } return "" } // Automatically-generated message used to represent maps of StringArray as ordered (name,value) pairs. type NamedStringArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Map key Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Mapped value - Value *StringArray `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value *StringArray `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *NamedStringArray) Reset() { *m = NamedStringArray{} } -func (m *NamedStringArray) String() string { return proto.CompactTextString(m) } -func (*NamedStringArray) ProtoMessage() {} -func (*NamedStringArray) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{29} +func (x *NamedStringArray) Reset() { + *x = NamedStringArray{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NamedStringArray) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NamedStringArray.Unmarshal(m, b) -} -func (m *NamedStringArray) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NamedStringArray.Marshal(b, m, deterministic) -} -func (m *NamedStringArray) XXX_Merge(src proto.Message) { - xxx_messageInfo_NamedStringArray.Merge(m, src) -} -func (m *NamedStringArray) XXX_Size() int { - return xxx_messageInfo_NamedStringArray.Size(m) +func (x *NamedStringArray) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NamedStringArray) XXX_DiscardUnknown() { - xxx_messageInfo_NamedStringArray.DiscardUnknown(m) + +func (*NamedStringArray) ProtoMessage() {} + +func (x *NamedStringArray) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NamedStringArray proto.InternalMessageInfo +// Deprecated: Use NamedStringArray.ProtoReflect.Descriptor instead. +func (*NamedStringArray) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{29} +} -func (m *NamedStringArray) GetName() string { - if m != nil { - return m.Name +func (x *NamedStringArray) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *NamedStringArray) GetValue() *StringArray { - if m != nil { - return m.Value +func (x *NamedStringArray) GetValue() *StringArray { + if x != nil { + return x.Value } return nil } type NonBodyParameter struct { - // Types that are valid to be assigned to Oneof: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: // *NonBodyParameter_HeaderParameterSubSchema // *NonBodyParameter_FormDataParameterSubSchema // *NonBodyParameter_QueryParameterSubSchema // *NonBodyParameter_PathParameterSubSchema - Oneof isNonBodyParameter_Oneof `protobuf_oneof:"oneof"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Oneof isNonBodyParameter_Oneof `protobuf_oneof:"oneof"` } -func (m *NonBodyParameter) Reset() { *m = NonBodyParameter{} } -func (m *NonBodyParameter) String() string { return proto.CompactTextString(m) } -func (*NonBodyParameter) ProtoMessage() {} -func (*NonBodyParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{30} +func (x *NonBodyParameter) Reset() { + *x = NonBodyParameter{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NonBodyParameter) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NonBodyParameter.Unmarshal(m, b) -} -func (m *NonBodyParameter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NonBodyParameter.Marshal(b, m, deterministic) -} -func (m *NonBodyParameter) XXX_Merge(src proto.Message) { - xxx_messageInfo_NonBodyParameter.Merge(m, src) -} -func (m *NonBodyParameter) XXX_Size() int { - return xxx_messageInfo_NonBodyParameter.Size(m) -} -func (m *NonBodyParameter) XXX_DiscardUnknown() { - xxx_messageInfo_NonBodyParameter.DiscardUnknown(m) +func (x *NonBodyParameter) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_NonBodyParameter proto.InternalMessageInfo +func (*NonBodyParameter) ProtoMessage() {} -type isNonBodyParameter_Oneof interface { - isNonBodyParameter_Oneof() +func (x *NonBodyParameter) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type NonBodyParameter_HeaderParameterSubSchema struct { - HeaderParameterSubSchema *HeaderParameterSubSchema `protobuf:"bytes,1,opt,name=header_parameter_sub_schema,json=headerParameterSubSchema,proto3,oneof"` +// Deprecated: Use NonBodyParameter.ProtoReflect.Descriptor instead. +func (*NonBodyParameter) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{30} } -type NonBodyParameter_FormDataParameterSubSchema struct { - FormDataParameterSubSchema *FormDataParameterSubSchema `protobuf:"bytes,2,opt,name=form_data_parameter_sub_schema,json=formDataParameterSubSchema,proto3,oneof"` -} - -type NonBodyParameter_QueryParameterSubSchema struct { - QueryParameterSubSchema *QueryParameterSubSchema `protobuf:"bytes,3,opt,name=query_parameter_sub_schema,json=queryParameterSubSchema,proto3,oneof"` -} - -type NonBodyParameter_PathParameterSubSchema struct { - PathParameterSubSchema *PathParameterSubSchema `protobuf:"bytes,4,opt,name=path_parameter_sub_schema,json=pathParameterSubSchema,proto3,oneof"` -} - -func (*NonBodyParameter_HeaderParameterSubSchema) isNonBodyParameter_Oneof() {} - -func (*NonBodyParameter_FormDataParameterSubSchema) isNonBodyParameter_Oneof() {} - -func (*NonBodyParameter_QueryParameterSubSchema) isNonBodyParameter_Oneof() {} - -func (*NonBodyParameter_PathParameterSubSchema) isNonBodyParameter_Oneof() {} - func (m *NonBodyParameter) GetOneof() isNonBodyParameter_Oneof { if m != nil { return m.Oneof @@ -2335,408 +2568,470 @@ func (m *NonBodyParameter) GetOneof() isNonBodyParameter_Oneof { return nil } -func (m *NonBodyParameter) GetHeaderParameterSubSchema() *HeaderParameterSubSchema { - if x, ok := m.GetOneof().(*NonBodyParameter_HeaderParameterSubSchema); ok { +func (x *NonBodyParameter) GetHeaderParameterSubSchema() *HeaderParameterSubSchema { + if x, ok := x.GetOneof().(*NonBodyParameter_HeaderParameterSubSchema); ok { return x.HeaderParameterSubSchema } return nil } -func (m *NonBodyParameter) GetFormDataParameterSubSchema() *FormDataParameterSubSchema { - if x, ok := m.GetOneof().(*NonBodyParameter_FormDataParameterSubSchema); ok { +func (x *NonBodyParameter) GetFormDataParameterSubSchema() *FormDataParameterSubSchema { + if x, ok := x.GetOneof().(*NonBodyParameter_FormDataParameterSubSchema); ok { return x.FormDataParameterSubSchema } return nil } -func (m *NonBodyParameter) GetQueryParameterSubSchema() *QueryParameterSubSchema { - if x, ok := m.GetOneof().(*NonBodyParameter_QueryParameterSubSchema); ok { +func (x *NonBodyParameter) GetQueryParameterSubSchema() *QueryParameterSubSchema { + if x, ok := x.GetOneof().(*NonBodyParameter_QueryParameterSubSchema); ok { return x.QueryParameterSubSchema } return nil } -func (m *NonBodyParameter) GetPathParameterSubSchema() *PathParameterSubSchema { - if x, ok := m.GetOneof().(*NonBodyParameter_PathParameterSubSchema); ok { +func (x *NonBodyParameter) GetPathParameterSubSchema() *PathParameterSubSchema { + if x, ok := x.GetOneof().(*NonBodyParameter_PathParameterSubSchema); ok { return x.PathParameterSubSchema } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*NonBodyParameter) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*NonBodyParameter_HeaderParameterSubSchema)(nil), - (*NonBodyParameter_FormDataParameterSubSchema)(nil), - (*NonBodyParameter_QueryParameterSubSchema)(nil), - (*NonBodyParameter_PathParameterSubSchema)(nil), - } +type isNonBodyParameter_Oneof interface { + isNonBodyParameter_Oneof() } -type Oauth2AccessCodeSecurity struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"` - Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes,proto3" json:"scopes,omitempty"` - AuthorizationUrl string `protobuf:"bytes,4,opt,name=authorization_url,json=authorizationUrl,proto3" json:"authorization_url,omitempty"` - TokenUrl string `protobuf:"bytes,5,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` - Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,7,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Oauth2AccessCodeSecurity) Reset() { *m = Oauth2AccessCodeSecurity{} } -func (m *Oauth2AccessCodeSecurity) String() string { return proto.CompactTextString(m) } -func (*Oauth2AccessCodeSecurity) ProtoMessage() {} -func (*Oauth2AccessCodeSecurity) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{31} +type NonBodyParameter_HeaderParameterSubSchema struct { + HeaderParameterSubSchema *HeaderParameterSubSchema `protobuf:"bytes,1,opt,name=header_parameter_sub_schema,json=headerParameterSubSchema,proto3,oneof"` +} + +type NonBodyParameter_FormDataParameterSubSchema struct { + FormDataParameterSubSchema *FormDataParameterSubSchema `protobuf:"bytes,2,opt,name=form_data_parameter_sub_schema,json=formDataParameterSubSchema,proto3,oneof"` +} + +type NonBodyParameter_QueryParameterSubSchema struct { + QueryParameterSubSchema *QueryParameterSubSchema `protobuf:"bytes,3,opt,name=query_parameter_sub_schema,json=queryParameterSubSchema,proto3,oneof"` } -func (m *Oauth2AccessCodeSecurity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Oauth2AccessCodeSecurity.Unmarshal(m, b) +type NonBodyParameter_PathParameterSubSchema struct { + PathParameterSubSchema *PathParameterSubSchema `protobuf:"bytes,4,opt,name=path_parameter_sub_schema,json=pathParameterSubSchema,proto3,oneof"` } -func (m *Oauth2AccessCodeSecurity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Oauth2AccessCodeSecurity.Marshal(b, m, deterministic) + +func (*NonBodyParameter_HeaderParameterSubSchema) isNonBodyParameter_Oneof() {} + +func (*NonBodyParameter_FormDataParameterSubSchema) isNonBodyParameter_Oneof() {} + +func (*NonBodyParameter_QueryParameterSubSchema) isNonBodyParameter_Oneof() {} + +func (*NonBodyParameter_PathParameterSubSchema) isNonBodyParameter_Oneof() {} + +type Oauth2AccessCodeSecurity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"` + Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes,proto3" json:"scopes,omitempty"` + AuthorizationUrl string `protobuf:"bytes,4,opt,name=authorization_url,json=authorizationUrl,proto3" json:"authorization_url,omitempty"` + TokenUrl string `protobuf:"bytes,5,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` + Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,7,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *Oauth2AccessCodeSecurity) XXX_Merge(src proto.Message) { - xxx_messageInfo_Oauth2AccessCodeSecurity.Merge(m, src) + +func (x *Oauth2AccessCodeSecurity) Reset() { + *x = Oauth2AccessCodeSecurity{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Oauth2AccessCodeSecurity) XXX_Size() int { - return xxx_messageInfo_Oauth2AccessCodeSecurity.Size(m) + +func (x *Oauth2AccessCodeSecurity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Oauth2AccessCodeSecurity) XXX_DiscardUnknown() { - xxx_messageInfo_Oauth2AccessCodeSecurity.DiscardUnknown(m) + +func (*Oauth2AccessCodeSecurity) ProtoMessage() {} + +func (x *Oauth2AccessCodeSecurity) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Oauth2AccessCodeSecurity proto.InternalMessageInfo +// Deprecated: Use Oauth2AccessCodeSecurity.ProtoReflect.Descriptor instead. +func (*Oauth2AccessCodeSecurity) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{31} +} -func (m *Oauth2AccessCodeSecurity) GetType() string { - if m != nil { - return m.Type +func (x *Oauth2AccessCodeSecurity) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *Oauth2AccessCodeSecurity) GetFlow() string { - if m != nil { - return m.Flow +func (x *Oauth2AccessCodeSecurity) GetFlow() string { + if x != nil { + return x.Flow } return "" } -func (m *Oauth2AccessCodeSecurity) GetScopes() *Oauth2Scopes { - if m != nil { - return m.Scopes +func (x *Oauth2AccessCodeSecurity) GetScopes() *Oauth2Scopes { + if x != nil { + return x.Scopes } return nil } -func (m *Oauth2AccessCodeSecurity) GetAuthorizationUrl() string { - if m != nil { - return m.AuthorizationUrl +func (x *Oauth2AccessCodeSecurity) GetAuthorizationUrl() string { + if x != nil { + return x.AuthorizationUrl } return "" } -func (m *Oauth2AccessCodeSecurity) GetTokenUrl() string { - if m != nil { - return m.TokenUrl +func (x *Oauth2AccessCodeSecurity) GetTokenUrl() string { + if x != nil { + return x.TokenUrl } return "" } -func (m *Oauth2AccessCodeSecurity) GetDescription() string { - if m != nil { - return m.Description +func (x *Oauth2AccessCodeSecurity) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Oauth2AccessCodeSecurity) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Oauth2AccessCodeSecurity) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type Oauth2ApplicationSecurity struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"` - Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes,proto3" json:"scopes,omitempty"` - TokenUrl string `protobuf:"bytes,4,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` - Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Oauth2ApplicationSecurity) Reset() { *m = Oauth2ApplicationSecurity{} } -func (m *Oauth2ApplicationSecurity) String() string { return proto.CompactTextString(m) } -func (*Oauth2ApplicationSecurity) ProtoMessage() {} -func (*Oauth2ApplicationSecurity) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{32} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Oauth2ApplicationSecurity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Oauth2ApplicationSecurity.Unmarshal(m, b) -} -func (m *Oauth2ApplicationSecurity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Oauth2ApplicationSecurity.Marshal(b, m, deterministic) + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"` + Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes,proto3" json:"scopes,omitempty"` + TokenUrl string `protobuf:"bytes,4,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *Oauth2ApplicationSecurity) XXX_Merge(src proto.Message) { - xxx_messageInfo_Oauth2ApplicationSecurity.Merge(m, src) + +func (x *Oauth2ApplicationSecurity) Reset() { + *x = Oauth2ApplicationSecurity{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Oauth2ApplicationSecurity) XXX_Size() int { - return xxx_messageInfo_Oauth2ApplicationSecurity.Size(m) + +func (x *Oauth2ApplicationSecurity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Oauth2ApplicationSecurity) XXX_DiscardUnknown() { - xxx_messageInfo_Oauth2ApplicationSecurity.DiscardUnknown(m) + +func (*Oauth2ApplicationSecurity) ProtoMessage() {} + +func (x *Oauth2ApplicationSecurity) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Oauth2ApplicationSecurity proto.InternalMessageInfo +// Deprecated: Use Oauth2ApplicationSecurity.ProtoReflect.Descriptor instead. +func (*Oauth2ApplicationSecurity) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{32} +} -func (m *Oauth2ApplicationSecurity) GetType() string { - if m != nil { - return m.Type +func (x *Oauth2ApplicationSecurity) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *Oauth2ApplicationSecurity) GetFlow() string { - if m != nil { - return m.Flow +func (x *Oauth2ApplicationSecurity) GetFlow() string { + if x != nil { + return x.Flow } return "" } -func (m *Oauth2ApplicationSecurity) GetScopes() *Oauth2Scopes { - if m != nil { - return m.Scopes +func (x *Oauth2ApplicationSecurity) GetScopes() *Oauth2Scopes { + if x != nil { + return x.Scopes } return nil } -func (m *Oauth2ApplicationSecurity) GetTokenUrl() string { - if m != nil { - return m.TokenUrl +func (x *Oauth2ApplicationSecurity) GetTokenUrl() string { + if x != nil { + return x.TokenUrl } return "" } -func (m *Oauth2ApplicationSecurity) GetDescription() string { - if m != nil { - return m.Description +func (x *Oauth2ApplicationSecurity) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Oauth2ApplicationSecurity) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Oauth2ApplicationSecurity) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type Oauth2ImplicitSecurity struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"` - Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes,proto3" json:"scopes,omitempty"` - AuthorizationUrl string `protobuf:"bytes,4,opt,name=authorization_url,json=authorizationUrl,proto3" json:"authorization_url,omitempty"` - Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Oauth2ImplicitSecurity) Reset() { *m = Oauth2ImplicitSecurity{} } -func (m *Oauth2ImplicitSecurity) String() string { return proto.CompactTextString(m) } -func (*Oauth2ImplicitSecurity) ProtoMessage() {} -func (*Oauth2ImplicitSecurity) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{33} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Oauth2ImplicitSecurity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Oauth2ImplicitSecurity.Unmarshal(m, b) + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"` + Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes,proto3" json:"scopes,omitempty"` + AuthorizationUrl string `protobuf:"bytes,4,opt,name=authorization_url,json=authorizationUrl,proto3" json:"authorization_url,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *Oauth2ImplicitSecurity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Oauth2ImplicitSecurity.Marshal(b, m, deterministic) -} -func (m *Oauth2ImplicitSecurity) XXX_Merge(src proto.Message) { - xxx_messageInfo_Oauth2ImplicitSecurity.Merge(m, src) + +func (x *Oauth2ImplicitSecurity) Reset() { + *x = Oauth2ImplicitSecurity{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Oauth2ImplicitSecurity) XXX_Size() int { - return xxx_messageInfo_Oauth2ImplicitSecurity.Size(m) + +func (x *Oauth2ImplicitSecurity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Oauth2ImplicitSecurity) XXX_DiscardUnknown() { - xxx_messageInfo_Oauth2ImplicitSecurity.DiscardUnknown(m) + +func (*Oauth2ImplicitSecurity) ProtoMessage() {} + +func (x *Oauth2ImplicitSecurity) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Oauth2ImplicitSecurity proto.InternalMessageInfo +// Deprecated: Use Oauth2ImplicitSecurity.ProtoReflect.Descriptor instead. +func (*Oauth2ImplicitSecurity) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{33} +} -func (m *Oauth2ImplicitSecurity) GetType() string { - if m != nil { - return m.Type +func (x *Oauth2ImplicitSecurity) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *Oauth2ImplicitSecurity) GetFlow() string { - if m != nil { - return m.Flow +func (x *Oauth2ImplicitSecurity) GetFlow() string { + if x != nil { + return x.Flow } return "" } -func (m *Oauth2ImplicitSecurity) GetScopes() *Oauth2Scopes { - if m != nil { - return m.Scopes +func (x *Oauth2ImplicitSecurity) GetScopes() *Oauth2Scopes { + if x != nil { + return x.Scopes } return nil } -func (m *Oauth2ImplicitSecurity) GetAuthorizationUrl() string { - if m != nil { - return m.AuthorizationUrl +func (x *Oauth2ImplicitSecurity) GetAuthorizationUrl() string { + if x != nil { + return x.AuthorizationUrl } return "" } -func (m *Oauth2ImplicitSecurity) GetDescription() string { - if m != nil { - return m.Description +func (x *Oauth2ImplicitSecurity) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Oauth2ImplicitSecurity) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Oauth2ImplicitSecurity) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type Oauth2PasswordSecurity struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"` - Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes,proto3" json:"scopes,omitempty"` - TokenUrl string `protobuf:"bytes,4,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` - Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Oauth2PasswordSecurity) Reset() { *m = Oauth2PasswordSecurity{} } -func (m *Oauth2PasswordSecurity) String() string { return proto.CompactTextString(m) } -func (*Oauth2PasswordSecurity) ProtoMessage() {} -func (*Oauth2PasswordSecurity) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{34} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Oauth2PasswordSecurity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Oauth2PasswordSecurity.Unmarshal(m, b) -} -func (m *Oauth2PasswordSecurity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Oauth2PasswordSecurity.Marshal(b, m, deterministic) + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"` + Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes,proto3" json:"scopes,omitempty"` + TokenUrl string `protobuf:"bytes,4,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *Oauth2PasswordSecurity) XXX_Merge(src proto.Message) { - xxx_messageInfo_Oauth2PasswordSecurity.Merge(m, src) + +func (x *Oauth2PasswordSecurity) Reset() { + *x = Oauth2PasswordSecurity{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Oauth2PasswordSecurity) XXX_Size() int { - return xxx_messageInfo_Oauth2PasswordSecurity.Size(m) + +func (x *Oauth2PasswordSecurity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Oauth2PasswordSecurity) XXX_DiscardUnknown() { - xxx_messageInfo_Oauth2PasswordSecurity.DiscardUnknown(m) + +func (*Oauth2PasswordSecurity) ProtoMessage() {} + +func (x *Oauth2PasswordSecurity) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Oauth2PasswordSecurity proto.InternalMessageInfo +// Deprecated: Use Oauth2PasswordSecurity.ProtoReflect.Descriptor instead. +func (*Oauth2PasswordSecurity) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{34} +} -func (m *Oauth2PasswordSecurity) GetType() string { - if m != nil { - return m.Type +func (x *Oauth2PasswordSecurity) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *Oauth2PasswordSecurity) GetFlow() string { - if m != nil { - return m.Flow +func (x *Oauth2PasswordSecurity) GetFlow() string { + if x != nil { + return x.Flow } return "" } -func (m *Oauth2PasswordSecurity) GetScopes() *Oauth2Scopes { - if m != nil { - return m.Scopes +func (x *Oauth2PasswordSecurity) GetScopes() *Oauth2Scopes { + if x != nil { + return x.Scopes } return nil } -func (m *Oauth2PasswordSecurity) GetTokenUrl() string { - if m != nil { - return m.TokenUrl +func (x *Oauth2PasswordSecurity) GetTokenUrl() string { + if x != nil { + return x.TokenUrl } return "" } -func (m *Oauth2PasswordSecurity) GetDescription() string { - if m != nil { - return m.Description +func (x *Oauth2PasswordSecurity) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Oauth2PasswordSecurity) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Oauth2PasswordSecurity) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type Oauth2Scopes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + AdditionalProperties []*NamedString `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Oauth2Scopes) Reset() { *m = Oauth2Scopes{} } -func (m *Oauth2Scopes) String() string { return proto.CompactTextString(m) } -func (*Oauth2Scopes) ProtoMessage() {} -func (*Oauth2Scopes) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{35} +func (x *Oauth2Scopes) Reset() { + *x = Oauth2Scopes{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Oauth2Scopes) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Oauth2Scopes.Unmarshal(m, b) -} -func (m *Oauth2Scopes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Oauth2Scopes.Marshal(b, m, deterministic) -} -func (m *Oauth2Scopes) XXX_Merge(src proto.Message) { - xxx_messageInfo_Oauth2Scopes.Merge(m, src) -} -func (m *Oauth2Scopes) XXX_Size() int { - return xxx_messageInfo_Oauth2Scopes.Size(m) +func (x *Oauth2Scopes) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Oauth2Scopes) XXX_DiscardUnknown() { - xxx_messageInfo_Oauth2Scopes.DiscardUnknown(m) + +func (*Oauth2Scopes) ProtoMessage() {} + +func (x *Oauth2Scopes) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Oauth2Scopes proto.InternalMessageInfo +// Deprecated: Use Oauth2Scopes.ProtoReflect.Descriptor instead. +func (*Oauth2Scopes) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{35} +} -func (m *Oauth2Scopes) GetAdditionalProperties() []*NamedString { - if m != nil { - return m.AdditionalProperties +func (x *Oauth2Scopes) GetAdditionalProperties() []*NamedString { + if x != nil { + return x.AdditionalProperties } return nil } type Operation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Tags []string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"` // A brief summary of the operation. Summary string `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"` @@ -2753,182 +3048,178 @@ type Operation struct { Parameters []*ParametersItem `protobuf:"bytes,8,rep,name=parameters,proto3" json:"parameters,omitempty"` Responses *Responses `protobuf:"bytes,9,opt,name=responses,proto3" json:"responses,omitempty"` // The transfer protocol of the API. - Schemes []string `protobuf:"bytes,10,rep,name=schemes,proto3" json:"schemes,omitempty"` - Deprecated bool `protobuf:"varint,11,opt,name=deprecated,proto3" json:"deprecated,omitempty"` - Security []*SecurityRequirement `protobuf:"bytes,12,rep,name=security,proto3" json:"security,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,13,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Operation) Reset() { *m = Operation{} } -func (m *Operation) String() string { return proto.CompactTextString(m) } -func (*Operation) ProtoMessage() {} -func (*Operation) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{36} + Schemes []string `protobuf:"bytes,10,rep,name=schemes,proto3" json:"schemes,omitempty"` + Deprecated bool `protobuf:"varint,11,opt,name=deprecated,proto3" json:"deprecated,omitempty"` + Security []*SecurityRequirement `protobuf:"bytes,12,rep,name=security,proto3" json:"security,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,13,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *Operation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Operation.Unmarshal(m, b) -} -func (m *Operation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Operation.Marshal(b, m, deterministic) -} -func (m *Operation) XXX_Merge(src proto.Message) { - xxx_messageInfo_Operation.Merge(m, src) +func (x *Operation) Reset() { + *x = Operation{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Operation) XXX_Size() int { - return xxx_messageInfo_Operation.Size(m) + +func (x *Operation) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Operation) XXX_DiscardUnknown() { - xxx_messageInfo_Operation.DiscardUnknown(m) + +func (*Operation) ProtoMessage() {} + +func (x *Operation) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Operation proto.InternalMessageInfo +// Deprecated: Use Operation.ProtoReflect.Descriptor instead. +func (*Operation) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{36} +} -func (m *Operation) GetTags() []string { - if m != nil { - return m.Tags +func (x *Operation) GetTags() []string { + if x != nil { + return x.Tags } return nil } -func (m *Operation) GetSummary() string { - if m != nil { - return m.Summary +func (x *Operation) GetSummary() string { + if x != nil { + return x.Summary } return "" } -func (m *Operation) GetDescription() string { - if m != nil { - return m.Description +func (x *Operation) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Operation) GetExternalDocs() *ExternalDocs { - if m != nil { - return m.ExternalDocs +func (x *Operation) GetExternalDocs() *ExternalDocs { + if x != nil { + return x.ExternalDocs } return nil } -func (m *Operation) GetOperationId() string { - if m != nil { - return m.OperationId +func (x *Operation) GetOperationId() string { + if x != nil { + return x.OperationId } return "" } -func (m *Operation) GetProduces() []string { - if m != nil { - return m.Produces +func (x *Operation) GetProduces() []string { + if x != nil { + return x.Produces } return nil } -func (m *Operation) GetConsumes() []string { - if m != nil { - return m.Consumes +func (x *Operation) GetConsumes() []string { + if x != nil { + return x.Consumes } return nil } -func (m *Operation) GetParameters() []*ParametersItem { - if m != nil { - return m.Parameters +func (x *Operation) GetParameters() []*ParametersItem { + if x != nil { + return x.Parameters } return nil } -func (m *Operation) GetResponses() *Responses { - if m != nil { - return m.Responses +func (x *Operation) GetResponses() *Responses { + if x != nil { + return x.Responses } return nil } -func (m *Operation) GetSchemes() []string { - if m != nil { - return m.Schemes +func (x *Operation) GetSchemes() []string { + if x != nil { + return x.Schemes } return nil } -func (m *Operation) GetDeprecated() bool { - if m != nil { - return m.Deprecated +func (x *Operation) GetDeprecated() bool { + if x != nil { + return x.Deprecated } return false } -func (m *Operation) GetSecurity() []*SecurityRequirement { - if m != nil { - return m.Security +func (x *Operation) GetSecurity() []*SecurityRequirement { + if x != nil { + return x.Security } return nil } -func (m *Operation) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Operation) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type Parameter struct { - // Types that are valid to be assigned to Oneof: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: // *Parameter_BodyParameter // *Parameter_NonBodyParameter - Oneof isParameter_Oneof `protobuf_oneof:"oneof"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Oneof isParameter_Oneof `protobuf_oneof:"oneof"` } -func (m *Parameter) Reset() { *m = Parameter{} } -func (m *Parameter) String() string { return proto.CompactTextString(m) } -func (*Parameter) ProtoMessage() {} -func (*Parameter) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{37} +func (x *Parameter) Reset() { + *x = Parameter{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Parameter) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Parameter.Unmarshal(m, b) -} -func (m *Parameter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Parameter.Marshal(b, m, deterministic) -} -func (m *Parameter) XXX_Merge(src proto.Message) { - xxx_messageInfo_Parameter.Merge(m, src) -} -func (m *Parameter) XXX_Size() int { - return xxx_messageInfo_Parameter.Size(m) +func (x *Parameter) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Parameter) XXX_DiscardUnknown() { - xxx_messageInfo_Parameter.DiscardUnknown(m) -} - -var xxx_messageInfo_Parameter proto.InternalMessageInfo -type isParameter_Oneof interface { - isParameter_Oneof() -} +func (*Parameter) ProtoMessage() {} -type Parameter_BodyParameter struct { - BodyParameter *BodyParameter `protobuf:"bytes,1,opt,name=body_parameter,json=bodyParameter,proto3,oneof"` +func (x *Parameter) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type Parameter_NonBodyParameter struct { - NonBodyParameter *NonBodyParameter `protobuf:"bytes,2,opt,name=non_body_parameter,json=nonBodyParameter,proto3,oneof"` +// Deprecated: Use Parameter.ProtoReflect.Descriptor instead. +func (*Parameter) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{37} } -func (*Parameter_BodyParameter) isParameter_Oneof() {} - -func (*Parameter_NonBodyParameter) isParameter_Oneof() {} - func (m *Parameter) GetOneof() isParameter_Oneof { if m != nil { return m.Oneof @@ -2936,119 +3227,127 @@ func (m *Parameter) GetOneof() isParameter_Oneof { return nil } -func (m *Parameter) GetBodyParameter() *BodyParameter { - if x, ok := m.GetOneof().(*Parameter_BodyParameter); ok { +func (x *Parameter) GetBodyParameter() *BodyParameter { + if x, ok := x.GetOneof().(*Parameter_BodyParameter); ok { return x.BodyParameter } return nil } -func (m *Parameter) GetNonBodyParameter() *NonBodyParameter { - if x, ok := m.GetOneof().(*Parameter_NonBodyParameter); ok { +func (x *Parameter) GetNonBodyParameter() *NonBodyParameter { + if x, ok := x.GetOneof().(*Parameter_NonBodyParameter); ok { return x.NonBodyParameter } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*Parameter) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*Parameter_BodyParameter)(nil), - (*Parameter_NonBodyParameter)(nil), - } +type isParameter_Oneof interface { + isParameter_Oneof() +} + +type Parameter_BodyParameter struct { + BodyParameter *BodyParameter `protobuf:"bytes,1,opt,name=body_parameter,json=bodyParameter,proto3,oneof"` } +type Parameter_NonBodyParameter struct { + NonBodyParameter *NonBodyParameter `protobuf:"bytes,2,opt,name=non_body_parameter,json=nonBodyParameter,proto3,oneof"` +} + +func (*Parameter_BodyParameter) isParameter_Oneof() {} + +func (*Parameter_NonBodyParameter) isParameter_Oneof() {} + // One or more JSON representations for parameters type ParameterDefinitions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + AdditionalProperties []*NamedParameter `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *ParameterDefinitions) Reset() { *m = ParameterDefinitions{} } -func (m *ParameterDefinitions) String() string { return proto.CompactTextString(m) } -func (*ParameterDefinitions) ProtoMessage() {} -func (*ParameterDefinitions) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{38} +func (x *ParameterDefinitions) Reset() { + *x = ParameterDefinitions{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ParameterDefinitions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ParameterDefinitions.Unmarshal(m, b) -} -func (m *ParameterDefinitions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ParameterDefinitions.Marshal(b, m, deterministic) +func (x *ParameterDefinitions) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ParameterDefinitions) XXX_Merge(src proto.Message) { - xxx_messageInfo_ParameterDefinitions.Merge(m, src) -} -func (m *ParameterDefinitions) XXX_Size() int { - return xxx_messageInfo_ParameterDefinitions.Size(m) -} -func (m *ParameterDefinitions) XXX_DiscardUnknown() { - xxx_messageInfo_ParameterDefinitions.DiscardUnknown(m) + +func (*ParameterDefinitions) ProtoMessage() {} + +func (x *ParameterDefinitions) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ParameterDefinitions proto.InternalMessageInfo +// Deprecated: Use ParameterDefinitions.ProtoReflect.Descriptor instead. +func (*ParameterDefinitions) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{38} +} -func (m *ParameterDefinitions) GetAdditionalProperties() []*NamedParameter { - if m != nil { - return m.AdditionalProperties +func (x *ParameterDefinitions) GetAdditionalProperties() []*NamedParameter { + if x != nil { + return x.AdditionalProperties } return nil } type ParametersItem struct { - // Types that are valid to be assigned to Oneof: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: // *ParametersItem_Parameter // *ParametersItem_JsonReference - Oneof isParametersItem_Oneof `protobuf_oneof:"oneof"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Oneof isParametersItem_Oneof `protobuf_oneof:"oneof"` } -func (m *ParametersItem) Reset() { *m = ParametersItem{} } -func (m *ParametersItem) String() string { return proto.CompactTextString(m) } -func (*ParametersItem) ProtoMessage() {} -func (*ParametersItem) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{39} +func (x *ParametersItem) Reset() { + *x = ParametersItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ParametersItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ParametersItem.Unmarshal(m, b) -} -func (m *ParametersItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ParametersItem.Marshal(b, m, deterministic) +func (x *ParametersItem) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ParametersItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_ParametersItem.Merge(m, src) -} -func (m *ParametersItem) XXX_Size() int { - return xxx_messageInfo_ParametersItem.Size(m) -} -func (m *ParametersItem) XXX_DiscardUnknown() { - xxx_messageInfo_ParametersItem.DiscardUnknown(m) -} - -var xxx_messageInfo_ParametersItem proto.InternalMessageInfo -type isParametersItem_Oneof interface { - isParametersItem_Oneof() -} +func (*ParametersItem) ProtoMessage() {} -type ParametersItem_Parameter struct { - Parameter *Parameter `protobuf:"bytes,1,opt,name=parameter,proto3,oneof"` +func (x *ParametersItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type ParametersItem_JsonReference struct { - JsonReference *JsonReference `protobuf:"bytes,2,opt,name=json_reference,json=jsonReference,proto3,oneof"` +// Deprecated: Use ParametersItem.ProtoReflect.Descriptor instead. +func (*ParametersItem) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{39} } -func (*ParametersItem_Parameter) isParametersItem_Oneof() {} - -func (*ParametersItem_JsonReference) isParametersItem_Oneof() {} - func (m *ParametersItem) GetOneof() isParametersItem_Oneof { if m != nil { return m.Oneof @@ -3056,29 +3355,41 @@ func (m *ParametersItem) GetOneof() isParametersItem_Oneof { return nil } -func (m *ParametersItem) GetParameter() *Parameter { - if x, ok := m.GetOneof().(*ParametersItem_Parameter); ok { +func (x *ParametersItem) GetParameter() *Parameter { + if x, ok := x.GetOneof().(*ParametersItem_Parameter); ok { return x.Parameter } return nil } -func (m *ParametersItem) GetJsonReference() *JsonReference { - if x, ok := m.GetOneof().(*ParametersItem_JsonReference); ok { +func (x *ParametersItem) GetJsonReference() *JsonReference { + if x, ok := x.GetOneof().(*ParametersItem_JsonReference); ok { return x.JsonReference } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ParametersItem) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ParametersItem_Parameter)(nil), - (*ParametersItem_JsonReference)(nil), - } +type isParametersItem_Oneof interface { + isParametersItem_Oneof() +} + +type ParametersItem_Parameter struct { + Parameter *Parameter `protobuf:"bytes,1,opt,name=parameter,proto3,oneof"` +} + +type ParametersItem_JsonReference struct { + JsonReference *JsonReference `protobuf:"bytes,2,opt,name=json_reference,json=jsonReference,proto3,oneof"` } +func (*ParametersItem_Parameter) isParametersItem_Oneof() {} + +func (*ParametersItem_JsonReference) isParametersItem_Oneof() {} + type PathItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + XRef string `protobuf:"bytes,1,opt,name=_ref,json=Ref,proto3" json:"_ref,omitempty"` Get *Operation `protobuf:"bytes,2,opt,name=get,proto3" json:"get,omitempty"` Put *Operation `protobuf:"bytes,3,opt,name=put,proto3" json:"put,omitempty"` @@ -3088,109 +3399,117 @@ type PathItem struct { Head *Operation `protobuf:"bytes,7,opt,name=head,proto3" json:"head,omitempty"` Patch *Operation `protobuf:"bytes,8,opt,name=patch,proto3" json:"patch,omitempty"` // The parameters needed to send a valid API call. - Parameters []*ParametersItem `protobuf:"bytes,9,rep,name=parameters,proto3" json:"parameters,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,10,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Parameters []*ParametersItem `protobuf:"bytes,9,rep,name=parameters,proto3" json:"parameters,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,10,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *PathItem) Reset() { *m = PathItem{} } -func (m *PathItem) String() string { return proto.CompactTextString(m) } -func (*PathItem) ProtoMessage() {} -func (*PathItem) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{40} +func (x *PathItem) Reset() { + *x = PathItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PathItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PathItem.Unmarshal(m, b) -} -func (m *PathItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PathItem.Marshal(b, m, deterministic) -} -func (m *PathItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_PathItem.Merge(m, src) -} -func (m *PathItem) XXX_Size() int { - return xxx_messageInfo_PathItem.Size(m) +func (x *PathItem) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PathItem) XXX_DiscardUnknown() { - xxx_messageInfo_PathItem.DiscardUnknown(m) + +func (*PathItem) ProtoMessage() {} + +func (x *PathItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PathItem proto.InternalMessageInfo +// Deprecated: Use PathItem.ProtoReflect.Descriptor instead. +func (*PathItem) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{40} +} -func (m *PathItem) GetXRef() string { - if m != nil { - return m.XRef +func (x *PathItem) GetXRef() string { + if x != nil { + return x.XRef } return "" } -func (m *PathItem) GetGet() *Operation { - if m != nil { - return m.Get +func (x *PathItem) GetGet() *Operation { + if x != nil { + return x.Get } return nil } -func (m *PathItem) GetPut() *Operation { - if m != nil { - return m.Put +func (x *PathItem) GetPut() *Operation { + if x != nil { + return x.Put } return nil } -func (m *PathItem) GetPost() *Operation { - if m != nil { - return m.Post +func (x *PathItem) GetPost() *Operation { + if x != nil { + return x.Post } return nil } -func (m *PathItem) GetDelete() *Operation { - if m != nil { - return m.Delete +func (x *PathItem) GetDelete() *Operation { + if x != nil { + return x.Delete } return nil } -func (m *PathItem) GetOptions() *Operation { - if m != nil { - return m.Options +func (x *PathItem) GetOptions() *Operation { + if x != nil { + return x.Options } return nil } -func (m *PathItem) GetHead() *Operation { - if m != nil { - return m.Head +func (x *PathItem) GetHead() *Operation { + if x != nil { + return x.Head } return nil } -func (m *PathItem) GetPatch() *Operation { - if m != nil { - return m.Patch +func (x *PathItem) GetPatch() *Operation { + if x != nil { + return x.Patch } return nil } -func (m *PathItem) GetParameters() []*ParametersItem { - if m != nil { - return m.Parameters +func (x *PathItem) GetParameters() []*ParametersItem { + if x != nil { + return x.Parameters } return nil } -func (m *PathItem) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *PathItem) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type PathParameterSubSchema struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Determines whether or not this parameter is required or optional. Required bool `protobuf:"varint,1,opt,name=required,proto3" json:"required,omitempty"` // Determines the location of the parameter. @@ -3198,472 +3517,504 @@ type PathParameterSubSchema struct { // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // The name of the parameter. - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` - Format string `protobuf:"bytes,6,opt,name=format,proto3" json:"format,omitempty"` - Items *PrimitivesItems `protobuf:"bytes,7,opt,name=items,proto3" json:"items,omitempty"` - CollectionFormat string `protobuf:"bytes,8,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` - Default *Any `protobuf:"bytes,9,opt,name=default,proto3" json:"default,omitempty"` - Maximum float64 `protobuf:"fixed64,10,opt,name=maximum,proto3" json:"maximum,omitempty"` - ExclusiveMaximum bool `protobuf:"varint,11,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` - Minimum float64 `protobuf:"fixed64,12,opt,name=minimum,proto3" json:"minimum,omitempty"` - ExclusiveMinimum bool `protobuf:"varint,13,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` - MaxLength int64 `protobuf:"varint,14,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` - MinLength int64 `protobuf:"varint,15,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` - Pattern string `protobuf:"bytes,16,opt,name=pattern,proto3" json:"pattern,omitempty"` - MaxItems int64 `protobuf:"varint,17,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` - MinItems int64 `protobuf:"varint,18,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` - UniqueItems bool `protobuf:"varint,19,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` - Enum []*Any `protobuf:"bytes,20,rep,name=enum,proto3" json:"enum,omitempty"` - MultipleOf float64 `protobuf:"fixed64,21,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,22,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *PathParameterSubSchema) Reset() { *m = PathParameterSubSchema{} } -func (m *PathParameterSubSchema) String() string { return proto.CompactTextString(m) } -func (*PathParameterSubSchema) ProtoMessage() {} + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` + Format string `protobuf:"bytes,6,opt,name=format,proto3" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,7,opt,name=items,proto3" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,8,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,9,opt,name=default,proto3" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,10,opt,name=maximum,proto3" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,11,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,12,opt,name=minimum,proto3" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,13,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,14,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,15,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,16,opt,name=pattern,proto3" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,17,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,18,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,19,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,20,rep,name=enum,proto3" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,21,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,22,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` +} + +func (x *PathParameterSubSchema) Reset() { + *x = PathParameterSubSchema{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PathParameterSubSchema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PathParameterSubSchema) ProtoMessage() {} + +func (x *PathParameterSubSchema) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PathParameterSubSchema.ProtoReflect.Descriptor instead. func (*PathParameterSubSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{41} + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{41} } -func (m *PathParameterSubSchema) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PathParameterSubSchema.Unmarshal(m, b) -} -func (m *PathParameterSubSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PathParameterSubSchema.Marshal(b, m, deterministic) -} -func (m *PathParameterSubSchema) XXX_Merge(src proto.Message) { - xxx_messageInfo_PathParameterSubSchema.Merge(m, src) -} -func (m *PathParameterSubSchema) XXX_Size() int { - return xxx_messageInfo_PathParameterSubSchema.Size(m) -} -func (m *PathParameterSubSchema) XXX_DiscardUnknown() { - xxx_messageInfo_PathParameterSubSchema.DiscardUnknown(m) -} - -var xxx_messageInfo_PathParameterSubSchema proto.InternalMessageInfo - -func (m *PathParameterSubSchema) GetRequired() bool { - if m != nil { - return m.Required +func (x *PathParameterSubSchema) GetRequired() bool { + if x != nil { + return x.Required } return false } -func (m *PathParameterSubSchema) GetIn() string { - if m != nil { - return m.In +func (x *PathParameterSubSchema) GetIn() string { + if x != nil { + return x.In } return "" } -func (m *PathParameterSubSchema) GetDescription() string { - if m != nil { - return m.Description +func (x *PathParameterSubSchema) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *PathParameterSubSchema) GetName() string { - if m != nil { - return m.Name +func (x *PathParameterSubSchema) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *PathParameterSubSchema) GetType() string { - if m != nil { - return m.Type +func (x *PathParameterSubSchema) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *PathParameterSubSchema) GetFormat() string { - if m != nil { - return m.Format +func (x *PathParameterSubSchema) GetFormat() string { + if x != nil { + return x.Format } return "" } -func (m *PathParameterSubSchema) GetItems() *PrimitivesItems { - if m != nil { - return m.Items +func (x *PathParameterSubSchema) GetItems() *PrimitivesItems { + if x != nil { + return x.Items } return nil } -func (m *PathParameterSubSchema) GetCollectionFormat() string { - if m != nil { - return m.CollectionFormat +func (x *PathParameterSubSchema) GetCollectionFormat() string { + if x != nil { + return x.CollectionFormat } return "" } -func (m *PathParameterSubSchema) GetDefault() *Any { - if m != nil { - return m.Default +func (x *PathParameterSubSchema) GetDefault() *Any { + if x != nil { + return x.Default } return nil } -func (m *PathParameterSubSchema) GetMaximum() float64 { - if m != nil { - return m.Maximum +func (x *PathParameterSubSchema) GetMaximum() float64 { + if x != nil { + return x.Maximum } return 0 } -func (m *PathParameterSubSchema) GetExclusiveMaximum() bool { - if m != nil { - return m.ExclusiveMaximum +func (x *PathParameterSubSchema) GetExclusiveMaximum() bool { + if x != nil { + return x.ExclusiveMaximum } return false } -func (m *PathParameterSubSchema) GetMinimum() float64 { - if m != nil { - return m.Minimum +func (x *PathParameterSubSchema) GetMinimum() float64 { + if x != nil { + return x.Minimum } return 0 } -func (m *PathParameterSubSchema) GetExclusiveMinimum() bool { - if m != nil { - return m.ExclusiveMinimum +func (x *PathParameterSubSchema) GetExclusiveMinimum() bool { + if x != nil { + return x.ExclusiveMinimum } return false } -func (m *PathParameterSubSchema) GetMaxLength() int64 { - if m != nil { - return m.MaxLength +func (x *PathParameterSubSchema) GetMaxLength() int64 { + if x != nil { + return x.MaxLength } return 0 } -func (m *PathParameterSubSchema) GetMinLength() int64 { - if m != nil { - return m.MinLength +func (x *PathParameterSubSchema) GetMinLength() int64 { + if x != nil { + return x.MinLength } return 0 } -func (m *PathParameterSubSchema) GetPattern() string { - if m != nil { - return m.Pattern +func (x *PathParameterSubSchema) GetPattern() string { + if x != nil { + return x.Pattern } return "" } -func (m *PathParameterSubSchema) GetMaxItems() int64 { - if m != nil { - return m.MaxItems +func (x *PathParameterSubSchema) GetMaxItems() int64 { + if x != nil { + return x.MaxItems } return 0 } -func (m *PathParameterSubSchema) GetMinItems() int64 { - if m != nil { - return m.MinItems +func (x *PathParameterSubSchema) GetMinItems() int64 { + if x != nil { + return x.MinItems } return 0 } -func (m *PathParameterSubSchema) GetUniqueItems() bool { - if m != nil { - return m.UniqueItems +func (x *PathParameterSubSchema) GetUniqueItems() bool { + if x != nil { + return x.UniqueItems } return false } -func (m *PathParameterSubSchema) GetEnum() []*Any { - if m != nil { - return m.Enum +func (x *PathParameterSubSchema) GetEnum() []*Any { + if x != nil { + return x.Enum } return nil } -func (m *PathParameterSubSchema) GetMultipleOf() float64 { - if m != nil { - return m.MultipleOf +func (x *PathParameterSubSchema) GetMultipleOf() float64 { + if x != nil { + return x.MultipleOf } return 0 } -func (m *PathParameterSubSchema) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *PathParameterSubSchema) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } // Relative paths to the individual endpoints. They must be relative to the 'basePath'. type Paths struct { - VendorExtension []*NamedAny `protobuf:"bytes,1,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - Path []*NamedPathItem `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Paths) Reset() { *m = Paths{} } -func (m *Paths) String() string { return proto.CompactTextString(m) } -func (*Paths) ProtoMessage() {} -func (*Paths) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{42} + VendorExtension []*NamedAny `protobuf:"bytes,1,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` + Path []*NamedPathItem `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"` } -func (m *Paths) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Paths.Unmarshal(m, b) -} -func (m *Paths) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Paths.Marshal(b, m, deterministic) -} -func (m *Paths) XXX_Merge(src proto.Message) { - xxx_messageInfo_Paths.Merge(m, src) +func (x *Paths) Reset() { + *x = Paths{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Paths) XXX_Size() int { - return xxx_messageInfo_Paths.Size(m) + +func (x *Paths) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Paths) XXX_DiscardUnknown() { - xxx_messageInfo_Paths.DiscardUnknown(m) + +func (*Paths) ProtoMessage() {} + +func (x *Paths) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Paths proto.InternalMessageInfo +// Deprecated: Use Paths.ProtoReflect.Descriptor instead. +func (*Paths) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{42} +} -func (m *Paths) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Paths) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } -func (m *Paths) GetPath() []*NamedPathItem { - if m != nil { - return m.Path +func (x *Paths) GetPath() []*NamedPathItem { + if x != nil { + return x.Path } return nil } type PrimitivesItems struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` - Items *PrimitivesItems `protobuf:"bytes,3,opt,name=items,proto3" json:"items,omitempty"` - CollectionFormat string `protobuf:"bytes,4,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` - Default *Any `protobuf:"bytes,5,opt,name=default,proto3" json:"default,omitempty"` - Maximum float64 `protobuf:"fixed64,6,opt,name=maximum,proto3" json:"maximum,omitempty"` - ExclusiveMaximum bool `protobuf:"varint,7,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` - Minimum float64 `protobuf:"fixed64,8,opt,name=minimum,proto3" json:"minimum,omitempty"` - ExclusiveMinimum bool `protobuf:"varint,9,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` - MaxLength int64 `protobuf:"varint,10,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` - MinLength int64 `protobuf:"varint,11,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` - Pattern string `protobuf:"bytes,12,opt,name=pattern,proto3" json:"pattern,omitempty"` - MaxItems int64 `protobuf:"varint,13,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` - MinItems int64 `protobuf:"varint,14,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` - UniqueItems bool `protobuf:"varint,15,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` - Enum []*Any `protobuf:"bytes,16,rep,name=enum,proto3" json:"enum,omitempty"` - MultipleOf float64 `protobuf:"fixed64,17,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,18,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *PrimitivesItems) Reset() { *m = PrimitivesItems{} } -func (m *PrimitivesItems) String() string { return proto.CompactTextString(m) } -func (*PrimitivesItems) ProtoMessage() {} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,3,opt,name=items,proto3" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,4,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,5,opt,name=default,proto3" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,6,opt,name=maximum,proto3" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,7,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,8,opt,name=minimum,proto3" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,9,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,10,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,11,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,12,opt,name=pattern,proto3" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,13,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,14,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,15,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,16,rep,name=enum,proto3" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,17,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,18,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` +} + +func (x *PrimitivesItems) Reset() { + *x = PrimitivesItems{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrimitivesItems) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrimitivesItems) ProtoMessage() {} + +func (x *PrimitivesItems) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrimitivesItems.ProtoReflect.Descriptor instead. func (*PrimitivesItems) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{43} -} - -func (m *PrimitivesItems) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PrimitivesItems.Unmarshal(m, b) -} -func (m *PrimitivesItems) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PrimitivesItems.Marshal(b, m, deterministic) -} -func (m *PrimitivesItems) XXX_Merge(src proto.Message) { - xxx_messageInfo_PrimitivesItems.Merge(m, src) -} -func (m *PrimitivesItems) XXX_Size() int { - return xxx_messageInfo_PrimitivesItems.Size(m) -} -func (m *PrimitivesItems) XXX_DiscardUnknown() { - xxx_messageInfo_PrimitivesItems.DiscardUnknown(m) + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{43} } -var xxx_messageInfo_PrimitivesItems proto.InternalMessageInfo - -func (m *PrimitivesItems) GetType() string { - if m != nil { - return m.Type +func (x *PrimitivesItems) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *PrimitivesItems) GetFormat() string { - if m != nil { - return m.Format +func (x *PrimitivesItems) GetFormat() string { + if x != nil { + return x.Format } return "" } -func (m *PrimitivesItems) GetItems() *PrimitivesItems { - if m != nil { - return m.Items +func (x *PrimitivesItems) GetItems() *PrimitivesItems { + if x != nil { + return x.Items } return nil } -func (m *PrimitivesItems) GetCollectionFormat() string { - if m != nil { - return m.CollectionFormat +func (x *PrimitivesItems) GetCollectionFormat() string { + if x != nil { + return x.CollectionFormat } return "" } -func (m *PrimitivesItems) GetDefault() *Any { - if m != nil { - return m.Default +func (x *PrimitivesItems) GetDefault() *Any { + if x != nil { + return x.Default } return nil } -func (m *PrimitivesItems) GetMaximum() float64 { - if m != nil { - return m.Maximum +func (x *PrimitivesItems) GetMaximum() float64 { + if x != nil { + return x.Maximum } return 0 } -func (m *PrimitivesItems) GetExclusiveMaximum() bool { - if m != nil { - return m.ExclusiveMaximum +func (x *PrimitivesItems) GetExclusiveMaximum() bool { + if x != nil { + return x.ExclusiveMaximum } return false } -func (m *PrimitivesItems) GetMinimum() float64 { - if m != nil { - return m.Minimum +func (x *PrimitivesItems) GetMinimum() float64 { + if x != nil { + return x.Minimum } return 0 } -func (m *PrimitivesItems) GetExclusiveMinimum() bool { - if m != nil { - return m.ExclusiveMinimum +func (x *PrimitivesItems) GetExclusiveMinimum() bool { + if x != nil { + return x.ExclusiveMinimum } return false } -func (m *PrimitivesItems) GetMaxLength() int64 { - if m != nil { - return m.MaxLength +func (x *PrimitivesItems) GetMaxLength() int64 { + if x != nil { + return x.MaxLength } return 0 } -func (m *PrimitivesItems) GetMinLength() int64 { - if m != nil { - return m.MinLength +func (x *PrimitivesItems) GetMinLength() int64 { + if x != nil { + return x.MinLength } return 0 } -func (m *PrimitivesItems) GetPattern() string { - if m != nil { - return m.Pattern +func (x *PrimitivesItems) GetPattern() string { + if x != nil { + return x.Pattern } return "" } -func (m *PrimitivesItems) GetMaxItems() int64 { - if m != nil { - return m.MaxItems +func (x *PrimitivesItems) GetMaxItems() int64 { + if x != nil { + return x.MaxItems } return 0 } -func (m *PrimitivesItems) GetMinItems() int64 { - if m != nil { - return m.MinItems +func (x *PrimitivesItems) GetMinItems() int64 { + if x != nil { + return x.MinItems } return 0 } -func (m *PrimitivesItems) GetUniqueItems() bool { - if m != nil { - return m.UniqueItems +func (x *PrimitivesItems) GetUniqueItems() bool { + if x != nil { + return x.UniqueItems } return false } -func (m *PrimitivesItems) GetEnum() []*Any { - if m != nil { - return m.Enum +func (x *PrimitivesItems) GetEnum() []*Any { + if x != nil { + return x.Enum } return nil } -func (m *PrimitivesItems) GetMultipleOf() float64 { - if m != nil { - return m.MultipleOf +func (x *PrimitivesItems) GetMultipleOf() float64 { + if x != nil { + return x.MultipleOf } return 0 } -func (m *PrimitivesItems) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *PrimitivesItems) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type Properties struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + AdditionalProperties []*NamedSchema `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Properties) Reset() { *m = Properties{} } -func (m *Properties) String() string { return proto.CompactTextString(m) } -func (*Properties) ProtoMessage() {} -func (*Properties) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{44} +func (x *Properties) Reset() { + *x = Properties{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Properties) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Properties.Unmarshal(m, b) -} -func (m *Properties) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Properties.Marshal(b, m, deterministic) -} -func (m *Properties) XXX_Merge(src proto.Message) { - xxx_messageInfo_Properties.Merge(m, src) -} -func (m *Properties) XXX_Size() int { - return xxx_messageInfo_Properties.Size(m) +func (x *Properties) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Properties) XXX_DiscardUnknown() { - xxx_messageInfo_Properties.DiscardUnknown(m) + +func (*Properties) ProtoMessage() {} + +func (x *Properties) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Properties proto.InternalMessageInfo +// Deprecated: Use Properties.ProtoReflect.Descriptor instead. +func (*Properties) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{44} +} -func (m *Properties) GetAdditionalProperties() []*NamedSchema { - if m != nil { - return m.AdditionalProperties +func (x *Properties) GetAdditionalProperties() []*NamedSchema { + if x != nil { + return x.AdditionalProperties } return nil } type QueryParameterSubSchema struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Determines whether or not this parameter is required or optional. Required bool `protobuf:"varint,1,opt,name=required,proto3" json:"required,omitempty"` // Determines the location of the parameter. @@ -3673,378 +4024,390 @@ type QueryParameterSubSchema struct { // The name of the parameter. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // allows sending a parameter by name only or with an empty value. - AllowEmptyValue bool `protobuf:"varint,5,opt,name=allow_empty_value,json=allowEmptyValue,proto3" json:"allow_empty_value,omitempty"` - Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` - Format string `protobuf:"bytes,7,opt,name=format,proto3" json:"format,omitempty"` - Items *PrimitivesItems `protobuf:"bytes,8,opt,name=items,proto3" json:"items,omitempty"` - CollectionFormat string `protobuf:"bytes,9,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` - Default *Any `protobuf:"bytes,10,opt,name=default,proto3" json:"default,omitempty"` - Maximum float64 `protobuf:"fixed64,11,opt,name=maximum,proto3" json:"maximum,omitempty"` - ExclusiveMaximum bool `protobuf:"varint,12,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` - Minimum float64 `protobuf:"fixed64,13,opt,name=minimum,proto3" json:"minimum,omitempty"` - ExclusiveMinimum bool `protobuf:"varint,14,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` - MaxLength int64 `protobuf:"varint,15,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` - MinLength int64 `protobuf:"varint,16,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` - Pattern string `protobuf:"bytes,17,opt,name=pattern,proto3" json:"pattern,omitempty"` - MaxItems int64 `protobuf:"varint,18,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` - MinItems int64 `protobuf:"varint,19,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` - UniqueItems bool `protobuf:"varint,20,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` - Enum []*Any `protobuf:"bytes,21,rep,name=enum,proto3" json:"enum,omitempty"` - MultipleOf float64 `protobuf:"fixed64,22,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,23,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *QueryParameterSubSchema) Reset() { *m = QueryParameterSubSchema{} } -func (m *QueryParameterSubSchema) String() string { return proto.CompactTextString(m) } -func (*QueryParameterSubSchema) ProtoMessage() {} + AllowEmptyValue bool `protobuf:"varint,5,opt,name=allow_empty_value,json=allowEmptyValue,proto3" json:"allow_empty_value,omitempty"` + Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` + Format string `protobuf:"bytes,7,opt,name=format,proto3" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,8,opt,name=items,proto3" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,9,opt,name=collection_format,json=collectionFormat,proto3" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,10,opt,name=default,proto3" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,11,opt,name=maximum,proto3" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,12,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,13,opt,name=minimum,proto3" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,14,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,15,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,16,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,17,opt,name=pattern,proto3" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,18,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,19,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,20,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,21,rep,name=enum,proto3" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,22,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,23,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` +} + +func (x *QueryParameterSubSchema) Reset() { + *x = QueryParameterSubSchema{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParameterSubSchema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParameterSubSchema) ProtoMessage() {} + +func (x *QueryParameterSubSchema) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryParameterSubSchema.ProtoReflect.Descriptor instead. func (*QueryParameterSubSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{45} + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{45} } -func (m *QueryParameterSubSchema) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_QueryParameterSubSchema.Unmarshal(m, b) -} -func (m *QueryParameterSubSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_QueryParameterSubSchema.Marshal(b, m, deterministic) -} -func (m *QueryParameterSubSchema) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryParameterSubSchema.Merge(m, src) -} -func (m *QueryParameterSubSchema) XXX_Size() int { - return xxx_messageInfo_QueryParameterSubSchema.Size(m) -} -func (m *QueryParameterSubSchema) XXX_DiscardUnknown() { - xxx_messageInfo_QueryParameterSubSchema.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryParameterSubSchema proto.InternalMessageInfo - -func (m *QueryParameterSubSchema) GetRequired() bool { - if m != nil { - return m.Required +func (x *QueryParameterSubSchema) GetRequired() bool { + if x != nil { + return x.Required } return false } -func (m *QueryParameterSubSchema) GetIn() string { - if m != nil { - return m.In +func (x *QueryParameterSubSchema) GetIn() string { + if x != nil { + return x.In } return "" } -func (m *QueryParameterSubSchema) GetDescription() string { - if m != nil { - return m.Description +func (x *QueryParameterSubSchema) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *QueryParameterSubSchema) GetName() string { - if m != nil { - return m.Name +func (x *QueryParameterSubSchema) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *QueryParameterSubSchema) GetAllowEmptyValue() bool { - if m != nil { - return m.AllowEmptyValue +func (x *QueryParameterSubSchema) GetAllowEmptyValue() bool { + if x != nil { + return x.AllowEmptyValue } return false } -func (m *QueryParameterSubSchema) GetType() string { - if m != nil { - return m.Type +func (x *QueryParameterSubSchema) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *QueryParameterSubSchema) GetFormat() string { - if m != nil { - return m.Format +func (x *QueryParameterSubSchema) GetFormat() string { + if x != nil { + return x.Format } return "" } -func (m *QueryParameterSubSchema) GetItems() *PrimitivesItems { - if m != nil { - return m.Items +func (x *QueryParameterSubSchema) GetItems() *PrimitivesItems { + if x != nil { + return x.Items } return nil } -func (m *QueryParameterSubSchema) GetCollectionFormat() string { - if m != nil { - return m.CollectionFormat +func (x *QueryParameterSubSchema) GetCollectionFormat() string { + if x != nil { + return x.CollectionFormat } return "" } -func (m *QueryParameterSubSchema) GetDefault() *Any { - if m != nil { - return m.Default +func (x *QueryParameterSubSchema) GetDefault() *Any { + if x != nil { + return x.Default } return nil } -func (m *QueryParameterSubSchema) GetMaximum() float64 { - if m != nil { - return m.Maximum +func (x *QueryParameterSubSchema) GetMaximum() float64 { + if x != nil { + return x.Maximum } return 0 } -func (m *QueryParameterSubSchema) GetExclusiveMaximum() bool { - if m != nil { - return m.ExclusiveMaximum +func (x *QueryParameterSubSchema) GetExclusiveMaximum() bool { + if x != nil { + return x.ExclusiveMaximum } return false } -func (m *QueryParameterSubSchema) GetMinimum() float64 { - if m != nil { - return m.Minimum +func (x *QueryParameterSubSchema) GetMinimum() float64 { + if x != nil { + return x.Minimum } return 0 } -func (m *QueryParameterSubSchema) GetExclusiveMinimum() bool { - if m != nil { - return m.ExclusiveMinimum +func (x *QueryParameterSubSchema) GetExclusiveMinimum() bool { + if x != nil { + return x.ExclusiveMinimum } return false } -func (m *QueryParameterSubSchema) GetMaxLength() int64 { - if m != nil { - return m.MaxLength +func (x *QueryParameterSubSchema) GetMaxLength() int64 { + if x != nil { + return x.MaxLength } return 0 } -func (m *QueryParameterSubSchema) GetMinLength() int64 { - if m != nil { - return m.MinLength +func (x *QueryParameterSubSchema) GetMinLength() int64 { + if x != nil { + return x.MinLength } return 0 } -func (m *QueryParameterSubSchema) GetPattern() string { - if m != nil { - return m.Pattern +func (x *QueryParameterSubSchema) GetPattern() string { + if x != nil { + return x.Pattern } return "" } -func (m *QueryParameterSubSchema) GetMaxItems() int64 { - if m != nil { - return m.MaxItems +func (x *QueryParameterSubSchema) GetMaxItems() int64 { + if x != nil { + return x.MaxItems } return 0 } -func (m *QueryParameterSubSchema) GetMinItems() int64 { - if m != nil { - return m.MinItems +func (x *QueryParameterSubSchema) GetMinItems() int64 { + if x != nil { + return x.MinItems } return 0 } -func (m *QueryParameterSubSchema) GetUniqueItems() bool { - if m != nil { - return m.UniqueItems +func (x *QueryParameterSubSchema) GetUniqueItems() bool { + if x != nil { + return x.UniqueItems } return false } -func (m *QueryParameterSubSchema) GetEnum() []*Any { - if m != nil { - return m.Enum +func (x *QueryParameterSubSchema) GetEnum() []*Any { + if x != nil { + return x.Enum } return nil } -func (m *QueryParameterSubSchema) GetMultipleOf() float64 { - if m != nil { - return m.MultipleOf +func (x *QueryParameterSubSchema) GetMultipleOf() float64 { + if x != nil { + return x.MultipleOf } return 0 } -func (m *QueryParameterSubSchema) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *QueryParameterSubSchema) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type Response struct { - Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` - Schema *SchemaItem `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"` - Headers *Headers `protobuf:"bytes,3,opt,name=headers,proto3" json:"headers,omitempty"` - Examples *Examples `protobuf:"bytes,4,opt,name=examples,proto3" json:"examples,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,5,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Response) Reset() { *m = Response{} } -func (m *Response) String() string { return proto.CompactTextString(m) } -func (*Response) ProtoMessage() {} -func (*Response) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{46} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Response) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Response.Unmarshal(m, b) -} -func (m *Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Response.Marshal(b, m, deterministic) + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + Schema *SchemaItem `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"` + Headers *Headers `protobuf:"bytes,3,opt,name=headers,proto3" json:"headers,omitempty"` + Examples *Examples `protobuf:"bytes,4,opt,name=examples,proto3" json:"examples,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,5,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *Response) XXX_Merge(src proto.Message) { - xxx_messageInfo_Response.Merge(m, src) + +func (x *Response) Reset() { + *x = Response{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Response) XXX_Size() int { - return xxx_messageInfo_Response.Size(m) + +func (x *Response) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Response) XXX_DiscardUnknown() { - xxx_messageInfo_Response.DiscardUnknown(m) + +func (*Response) ProtoMessage() {} + +func (x *Response) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Response proto.InternalMessageInfo +// Deprecated: Use Response.ProtoReflect.Descriptor instead. +func (*Response) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{46} +} -func (m *Response) GetDescription() string { - if m != nil { - return m.Description +func (x *Response) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Response) GetSchema() *SchemaItem { - if m != nil { - return m.Schema +func (x *Response) GetSchema() *SchemaItem { + if x != nil { + return x.Schema } return nil } -func (m *Response) GetHeaders() *Headers { - if m != nil { - return m.Headers +func (x *Response) GetHeaders() *Headers { + if x != nil { + return x.Headers } return nil } -func (m *Response) GetExamples() *Examples { - if m != nil { - return m.Examples +func (x *Response) GetExamples() *Examples { + if x != nil { + return x.Examples } return nil } -func (m *Response) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Response) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } -// One or more JSON representations for parameters +// One or more JSON representations for responses type ResponseDefinitions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + AdditionalProperties []*NamedResponse `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *ResponseDefinitions) Reset() { *m = ResponseDefinitions{} } -func (m *ResponseDefinitions) String() string { return proto.CompactTextString(m) } -func (*ResponseDefinitions) ProtoMessage() {} -func (*ResponseDefinitions) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{47} +func (x *ResponseDefinitions) Reset() { + *x = ResponseDefinitions{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ResponseDefinitions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ResponseDefinitions.Unmarshal(m, b) -} -func (m *ResponseDefinitions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ResponseDefinitions.Marshal(b, m, deterministic) +func (x *ResponseDefinitions) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ResponseDefinitions) XXX_Merge(src proto.Message) { - xxx_messageInfo_ResponseDefinitions.Merge(m, src) -} -func (m *ResponseDefinitions) XXX_Size() int { - return xxx_messageInfo_ResponseDefinitions.Size(m) -} -func (m *ResponseDefinitions) XXX_DiscardUnknown() { - xxx_messageInfo_ResponseDefinitions.DiscardUnknown(m) + +func (*ResponseDefinitions) ProtoMessage() {} + +func (x *ResponseDefinitions) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ResponseDefinitions proto.InternalMessageInfo +// Deprecated: Use ResponseDefinitions.ProtoReflect.Descriptor instead. +func (*ResponseDefinitions) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{47} +} -func (m *ResponseDefinitions) GetAdditionalProperties() []*NamedResponse { - if m != nil { - return m.AdditionalProperties +func (x *ResponseDefinitions) GetAdditionalProperties() []*NamedResponse { + if x != nil { + return x.AdditionalProperties } return nil } type ResponseValue struct { - // Types that are valid to be assigned to Oneof: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: // *ResponseValue_Response // *ResponseValue_JsonReference - Oneof isResponseValue_Oneof `protobuf_oneof:"oneof"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Oneof isResponseValue_Oneof `protobuf_oneof:"oneof"` } -func (m *ResponseValue) Reset() { *m = ResponseValue{} } -func (m *ResponseValue) String() string { return proto.CompactTextString(m) } -func (*ResponseValue) ProtoMessage() {} -func (*ResponseValue) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{48} +func (x *ResponseValue) Reset() { + *x = ResponseValue{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ResponseValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ResponseValue.Unmarshal(m, b) -} -func (m *ResponseValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ResponseValue.Marshal(b, m, deterministic) -} -func (m *ResponseValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_ResponseValue.Merge(m, src) -} -func (m *ResponseValue) XXX_Size() int { - return xxx_messageInfo_ResponseValue.Size(m) -} -func (m *ResponseValue) XXX_DiscardUnknown() { - xxx_messageInfo_ResponseValue.DiscardUnknown(m) +func (x *ResponseValue) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ResponseValue proto.InternalMessageInfo +func (*ResponseValue) ProtoMessage() {} -type isResponseValue_Oneof interface { - isResponseValue_Oneof() -} - -type ResponseValue_Response struct { - Response *Response `protobuf:"bytes,1,opt,name=response,proto3,oneof"` +func (x *ResponseValue) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type ResponseValue_JsonReference struct { - JsonReference *JsonReference `protobuf:"bytes,2,opt,name=json_reference,json=jsonReference,proto3,oneof"` +// Deprecated: Use ResponseValue.ProtoReflect.Descriptor instead. +func (*ResponseValue) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{48} } -func (*ResponseValue_Response) isResponseValue_Oneof() {} - -func (*ResponseValue_JsonReference) isResponseValue_Oneof() {} - func (m *ResponseValue) GetOneof() isResponseValue_Oneof { if m != nil { return m.Oneof @@ -4052,78 +4415,98 @@ func (m *ResponseValue) GetOneof() isResponseValue_Oneof { return nil } -func (m *ResponseValue) GetResponse() *Response { - if x, ok := m.GetOneof().(*ResponseValue_Response); ok { +func (x *ResponseValue) GetResponse() *Response { + if x, ok := x.GetOneof().(*ResponseValue_Response); ok { return x.Response } return nil } -func (m *ResponseValue) GetJsonReference() *JsonReference { - if x, ok := m.GetOneof().(*ResponseValue_JsonReference); ok { +func (x *ResponseValue) GetJsonReference() *JsonReference { + if x, ok := x.GetOneof().(*ResponseValue_JsonReference); ok { return x.JsonReference } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ResponseValue) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ResponseValue_Response)(nil), - (*ResponseValue_JsonReference)(nil), - } +type isResponseValue_Oneof interface { + isResponseValue_Oneof() } -// Response objects names can either be any valid HTTP status code or 'default'. -type Responses struct { - ResponseCode []*NamedResponseValue `protobuf:"bytes,1,rep,name=response_code,json=responseCode,proto3" json:"response_code,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,2,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type ResponseValue_Response struct { + Response *Response `protobuf:"bytes,1,opt,name=response,proto3,oneof"` } -func (m *Responses) Reset() { *m = Responses{} } -func (m *Responses) String() string { return proto.CompactTextString(m) } -func (*Responses) ProtoMessage() {} -func (*Responses) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{49} +type ResponseValue_JsonReference struct { + JsonReference *JsonReference `protobuf:"bytes,2,opt,name=json_reference,json=jsonReference,proto3,oneof"` } -func (m *Responses) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Responses.Unmarshal(m, b) -} -func (m *Responses) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Responses.Marshal(b, m, deterministic) +func (*ResponseValue_Response) isResponseValue_Oneof() {} + +func (*ResponseValue_JsonReference) isResponseValue_Oneof() {} + +// Response objects names can either be any valid HTTP status code or 'default'. +type Responses struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResponseCode []*NamedResponseValue `protobuf:"bytes,1,rep,name=response_code,json=responseCode,proto3" json:"response_code,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,2,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *Responses) XXX_Merge(src proto.Message) { - xxx_messageInfo_Responses.Merge(m, src) + +func (x *Responses) Reset() { + *x = Responses{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Responses) XXX_Size() int { - return xxx_messageInfo_Responses.Size(m) + +func (x *Responses) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Responses) XXX_DiscardUnknown() { - xxx_messageInfo_Responses.DiscardUnknown(m) + +func (*Responses) ProtoMessage() {} + +func (x *Responses) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Responses proto.InternalMessageInfo +// Deprecated: Use Responses.ProtoReflect.Descriptor instead. +func (*Responses) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{49} +} -func (m *Responses) GetResponseCode() []*NamedResponseValue { - if m != nil { - return m.ResponseCode +func (x *Responses) GetResponseCode() []*NamedResponseValue { + if x != nil { + return x.ResponseCode } return nil } -func (m *Responses) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Responses) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } // A deterministic version of a JSON Schema object. type Schema struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + XRef string `protobuf:"bytes,1,opt,name=_ref,json=Ref,proto3" json:"_ref,omitempty"` Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` @@ -4155,304 +4538,300 @@ type Schema struct { ExternalDocs *ExternalDocs `protobuf:"bytes,29,opt,name=external_docs,json=externalDocs,proto3" json:"external_docs,omitempty"` Example *Any `protobuf:"bytes,30,opt,name=example,proto3" json:"example,omitempty"` VendorExtension []*NamedAny `protobuf:"bytes,31,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Schema) Reset() { *m = Schema{} } -func (m *Schema) String() string { return proto.CompactTextString(m) } -func (*Schema) ProtoMessage() {} -func (*Schema) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{50} +func (x *Schema) Reset() { + *x = Schema{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Schema) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Schema.Unmarshal(m, b) -} -func (m *Schema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Schema.Marshal(b, m, deterministic) -} -func (m *Schema) XXX_Merge(src proto.Message) { - xxx_messageInfo_Schema.Merge(m, src) -} -func (m *Schema) XXX_Size() int { - return xxx_messageInfo_Schema.Size(m) +func (x *Schema) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Schema) XXX_DiscardUnknown() { - xxx_messageInfo_Schema.DiscardUnknown(m) + +func (*Schema) ProtoMessage() {} + +func (x *Schema) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[50] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Schema proto.InternalMessageInfo +// Deprecated: Use Schema.ProtoReflect.Descriptor instead. +func (*Schema) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{50} +} -func (m *Schema) GetXRef() string { - if m != nil { - return m.XRef +func (x *Schema) GetXRef() string { + if x != nil { + return x.XRef } return "" } -func (m *Schema) GetFormat() string { - if m != nil { - return m.Format +func (x *Schema) GetFormat() string { + if x != nil { + return x.Format } return "" } -func (m *Schema) GetTitle() string { - if m != nil { - return m.Title +func (x *Schema) GetTitle() string { + if x != nil { + return x.Title } return "" } -func (m *Schema) GetDescription() string { - if m != nil { - return m.Description +func (x *Schema) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Schema) GetDefault() *Any { - if m != nil { - return m.Default +func (x *Schema) GetDefault() *Any { + if x != nil { + return x.Default } return nil } -func (m *Schema) GetMultipleOf() float64 { - if m != nil { - return m.MultipleOf +func (x *Schema) GetMultipleOf() float64 { + if x != nil { + return x.MultipleOf } return 0 } -func (m *Schema) GetMaximum() float64 { - if m != nil { - return m.Maximum +func (x *Schema) GetMaximum() float64 { + if x != nil { + return x.Maximum } return 0 } -func (m *Schema) GetExclusiveMaximum() bool { - if m != nil { - return m.ExclusiveMaximum +func (x *Schema) GetExclusiveMaximum() bool { + if x != nil { + return x.ExclusiveMaximum } return false } -func (m *Schema) GetMinimum() float64 { - if m != nil { - return m.Minimum +func (x *Schema) GetMinimum() float64 { + if x != nil { + return x.Minimum } return 0 } -func (m *Schema) GetExclusiveMinimum() bool { - if m != nil { - return m.ExclusiveMinimum +func (x *Schema) GetExclusiveMinimum() bool { + if x != nil { + return x.ExclusiveMinimum } return false } -func (m *Schema) GetMaxLength() int64 { - if m != nil { - return m.MaxLength +func (x *Schema) GetMaxLength() int64 { + if x != nil { + return x.MaxLength } return 0 } -func (m *Schema) GetMinLength() int64 { - if m != nil { - return m.MinLength +func (x *Schema) GetMinLength() int64 { + if x != nil { + return x.MinLength } return 0 } -func (m *Schema) GetPattern() string { - if m != nil { - return m.Pattern +func (x *Schema) GetPattern() string { + if x != nil { + return x.Pattern } return "" } -func (m *Schema) GetMaxItems() int64 { - if m != nil { - return m.MaxItems +func (x *Schema) GetMaxItems() int64 { + if x != nil { + return x.MaxItems } return 0 } -func (m *Schema) GetMinItems() int64 { - if m != nil { - return m.MinItems +func (x *Schema) GetMinItems() int64 { + if x != nil { + return x.MinItems } return 0 } -func (m *Schema) GetUniqueItems() bool { - if m != nil { - return m.UniqueItems +func (x *Schema) GetUniqueItems() bool { + if x != nil { + return x.UniqueItems } return false } -func (m *Schema) GetMaxProperties() int64 { - if m != nil { - return m.MaxProperties +func (x *Schema) GetMaxProperties() int64 { + if x != nil { + return x.MaxProperties } return 0 } -func (m *Schema) GetMinProperties() int64 { - if m != nil { - return m.MinProperties +func (x *Schema) GetMinProperties() int64 { + if x != nil { + return x.MinProperties } return 0 } -func (m *Schema) GetRequired() []string { - if m != nil { - return m.Required +func (x *Schema) GetRequired() []string { + if x != nil { + return x.Required } return nil } -func (m *Schema) GetEnum() []*Any { - if m != nil { - return m.Enum +func (x *Schema) GetEnum() []*Any { + if x != nil { + return x.Enum } return nil } -func (m *Schema) GetAdditionalProperties() *AdditionalPropertiesItem { - if m != nil { - return m.AdditionalProperties +func (x *Schema) GetAdditionalProperties() *AdditionalPropertiesItem { + if x != nil { + return x.AdditionalProperties } return nil } -func (m *Schema) GetType() *TypeItem { - if m != nil { - return m.Type +func (x *Schema) GetType() *TypeItem { + if x != nil { + return x.Type } return nil } -func (m *Schema) GetItems() *ItemsItem { - if m != nil { - return m.Items +func (x *Schema) GetItems() *ItemsItem { + if x != nil { + return x.Items } return nil } -func (m *Schema) GetAllOf() []*Schema { - if m != nil { - return m.AllOf +func (x *Schema) GetAllOf() []*Schema { + if x != nil { + return x.AllOf } return nil } -func (m *Schema) GetProperties() *Properties { - if m != nil { - return m.Properties +func (x *Schema) GetProperties() *Properties { + if x != nil { + return x.Properties } return nil } -func (m *Schema) GetDiscriminator() string { - if m != nil { - return m.Discriminator +func (x *Schema) GetDiscriminator() string { + if x != nil { + return x.Discriminator } return "" } -func (m *Schema) GetReadOnly() bool { - if m != nil { - return m.ReadOnly +func (x *Schema) GetReadOnly() bool { + if x != nil { + return x.ReadOnly } return false } -func (m *Schema) GetXml() *Xml { - if m != nil { - return m.Xml +func (x *Schema) GetXml() *Xml { + if x != nil { + return x.Xml } return nil } -func (m *Schema) GetExternalDocs() *ExternalDocs { - if m != nil { - return m.ExternalDocs +func (x *Schema) GetExternalDocs() *ExternalDocs { + if x != nil { + return x.ExternalDocs } return nil } -func (m *Schema) GetExample() *Any { - if m != nil { - return m.Example +func (x *Schema) GetExample() *Any { + if x != nil { + return x.Example } return nil } -func (m *Schema) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Schema) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type SchemaItem struct { - // Types that are valid to be assigned to Oneof: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: // *SchemaItem_Schema // *SchemaItem_FileSchema - Oneof isSchemaItem_Oneof `protobuf_oneof:"oneof"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Oneof isSchemaItem_Oneof `protobuf_oneof:"oneof"` } -func (m *SchemaItem) Reset() { *m = SchemaItem{} } -func (m *SchemaItem) String() string { return proto.CompactTextString(m) } -func (*SchemaItem) ProtoMessage() {} -func (*SchemaItem) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{51} +func (x *SchemaItem) Reset() { + *x = SchemaItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SchemaItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SchemaItem.Unmarshal(m, b) -} -func (m *SchemaItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SchemaItem.Marshal(b, m, deterministic) -} -func (m *SchemaItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_SchemaItem.Merge(m, src) +func (x *SchemaItem) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SchemaItem) XXX_Size() int { - return xxx_messageInfo_SchemaItem.Size(m) -} -func (m *SchemaItem) XXX_DiscardUnknown() { - xxx_messageInfo_SchemaItem.DiscardUnknown(m) -} - -var xxx_messageInfo_SchemaItem proto.InternalMessageInfo -type isSchemaItem_Oneof interface { - isSchemaItem_Oneof() -} +func (*SchemaItem) ProtoMessage() {} -type SchemaItem_Schema struct { - Schema *Schema `protobuf:"bytes,1,opt,name=schema,proto3,oneof"` +func (x *SchemaItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[51] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type SchemaItem_FileSchema struct { - FileSchema *FileSchema `protobuf:"bytes,2,opt,name=file_schema,json=fileSchema,proto3,oneof"` +// Deprecated: Use SchemaItem.ProtoReflect.Descriptor instead. +func (*SchemaItem) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{51} } -func (*SchemaItem_Schema) isSchemaItem_Oneof() {} - -func (*SchemaItem_FileSchema) isSchemaItem_Oneof() {} - func (m *SchemaItem) GetOneof() isSchemaItem_Oneof { if m != nil { return m.Oneof @@ -4460,105 +4839,178 @@ func (m *SchemaItem) GetOneof() isSchemaItem_Oneof { return nil } -func (m *SchemaItem) GetSchema() *Schema { - if x, ok := m.GetOneof().(*SchemaItem_Schema); ok { +func (x *SchemaItem) GetSchema() *Schema { + if x, ok := x.GetOneof().(*SchemaItem_Schema); ok { return x.Schema } return nil } -func (m *SchemaItem) GetFileSchema() *FileSchema { - if x, ok := m.GetOneof().(*SchemaItem_FileSchema); ok { +func (x *SchemaItem) GetFileSchema() *FileSchema { + if x, ok := x.GetOneof().(*SchemaItem_FileSchema); ok { return x.FileSchema } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*SchemaItem) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*SchemaItem_Schema)(nil), - (*SchemaItem_FileSchema)(nil), - } +type isSchemaItem_Oneof interface { + isSchemaItem_Oneof() } -type SecurityDefinitions struct { - AdditionalProperties []*NamedSecurityDefinitionsItem `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type SchemaItem_Schema struct { + Schema *Schema `protobuf:"bytes,1,opt,name=schema,proto3,oneof"` } -func (m *SecurityDefinitions) Reset() { *m = SecurityDefinitions{} } -func (m *SecurityDefinitions) String() string { return proto.CompactTextString(m) } -func (*SecurityDefinitions) ProtoMessage() {} -func (*SecurityDefinitions) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{52} +type SchemaItem_FileSchema struct { + FileSchema *FileSchema `protobuf:"bytes,2,opt,name=file_schema,json=fileSchema,proto3,oneof"` } -func (m *SecurityDefinitions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SecurityDefinitions.Unmarshal(m, b) -} -func (m *SecurityDefinitions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SecurityDefinitions.Marshal(b, m, deterministic) +func (*SchemaItem_Schema) isSchemaItem_Oneof() {} + +func (*SchemaItem_FileSchema) isSchemaItem_Oneof() {} + +type SecurityDefinitions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedSecurityDefinitionsItem `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` } -func (m *SecurityDefinitions) XXX_Merge(src proto.Message) { - xxx_messageInfo_SecurityDefinitions.Merge(m, src) + +func (x *SecurityDefinitions) Reset() { + *x = SecurityDefinitions{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SecurityDefinitions) XXX_Size() int { - return xxx_messageInfo_SecurityDefinitions.Size(m) + +func (x *SecurityDefinitions) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SecurityDefinitions) XXX_DiscardUnknown() { - xxx_messageInfo_SecurityDefinitions.DiscardUnknown(m) + +func (*SecurityDefinitions) ProtoMessage() {} + +func (x *SecurityDefinitions) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[52] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SecurityDefinitions proto.InternalMessageInfo +// Deprecated: Use SecurityDefinitions.ProtoReflect.Descriptor instead. +func (*SecurityDefinitions) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{52} +} -func (m *SecurityDefinitions) GetAdditionalProperties() []*NamedSecurityDefinitionsItem { - if m != nil { - return m.AdditionalProperties +func (x *SecurityDefinitions) GetAdditionalProperties() []*NamedSecurityDefinitionsItem { + if x != nil { + return x.AdditionalProperties } return nil } type SecurityDefinitionsItem struct { - // Types that are valid to be assigned to Oneof: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: // *SecurityDefinitionsItem_BasicAuthenticationSecurity // *SecurityDefinitionsItem_ApiKeySecurity // *SecurityDefinitionsItem_Oauth2ImplicitSecurity // *SecurityDefinitionsItem_Oauth2PasswordSecurity // *SecurityDefinitionsItem_Oauth2ApplicationSecurity // *SecurityDefinitionsItem_Oauth2AccessCodeSecurity - Oneof isSecurityDefinitionsItem_Oneof `protobuf_oneof:"oneof"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Oneof isSecurityDefinitionsItem_Oneof `protobuf_oneof:"oneof"` } -func (m *SecurityDefinitionsItem) Reset() { *m = SecurityDefinitionsItem{} } -func (m *SecurityDefinitionsItem) String() string { return proto.CompactTextString(m) } -func (*SecurityDefinitionsItem) ProtoMessage() {} +func (x *SecurityDefinitionsItem) Reset() { + *x = SecurityDefinitionsItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SecurityDefinitionsItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecurityDefinitionsItem) ProtoMessage() {} + +func (x *SecurityDefinitionsItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[53] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecurityDefinitionsItem.ProtoReflect.Descriptor instead. func (*SecurityDefinitionsItem) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{53} + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{53} } -func (m *SecurityDefinitionsItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SecurityDefinitionsItem.Unmarshal(m, b) +func (m *SecurityDefinitionsItem) GetOneof() isSecurityDefinitionsItem_Oneof { + if m != nil { + return m.Oneof + } + return nil } -func (m *SecurityDefinitionsItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SecurityDefinitionsItem.Marshal(b, m, deterministic) + +func (x *SecurityDefinitionsItem) GetBasicAuthenticationSecurity() *BasicAuthenticationSecurity { + if x, ok := x.GetOneof().(*SecurityDefinitionsItem_BasicAuthenticationSecurity); ok { + return x.BasicAuthenticationSecurity + } + return nil +} + +func (x *SecurityDefinitionsItem) GetApiKeySecurity() *ApiKeySecurity { + if x, ok := x.GetOneof().(*SecurityDefinitionsItem_ApiKeySecurity); ok { + return x.ApiKeySecurity + } + return nil } -func (m *SecurityDefinitionsItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_SecurityDefinitionsItem.Merge(m, src) + +func (x *SecurityDefinitionsItem) GetOauth2ImplicitSecurity() *Oauth2ImplicitSecurity { + if x, ok := x.GetOneof().(*SecurityDefinitionsItem_Oauth2ImplicitSecurity); ok { + return x.Oauth2ImplicitSecurity + } + return nil } -func (m *SecurityDefinitionsItem) XXX_Size() int { - return xxx_messageInfo_SecurityDefinitionsItem.Size(m) + +func (x *SecurityDefinitionsItem) GetOauth2PasswordSecurity() *Oauth2PasswordSecurity { + if x, ok := x.GetOneof().(*SecurityDefinitionsItem_Oauth2PasswordSecurity); ok { + return x.Oauth2PasswordSecurity + } + return nil } -func (m *SecurityDefinitionsItem) XXX_DiscardUnknown() { - xxx_messageInfo_SecurityDefinitionsItem.DiscardUnknown(m) + +func (x *SecurityDefinitionsItem) GetOauth2ApplicationSecurity() *Oauth2ApplicationSecurity { + if x, ok := x.GetOneof().(*SecurityDefinitionsItem_Oauth2ApplicationSecurity); ok { + return x.Oauth2ApplicationSecurity + } + return nil } -var xxx_messageInfo_SecurityDefinitionsItem proto.InternalMessageInfo +func (x *SecurityDefinitionsItem) GetOauth2AccessCodeSecurity() *Oauth2AccessCodeSecurity { + if x, ok := x.GetOneof().(*SecurityDefinitionsItem_Oauth2AccessCodeSecurity); ok { + return x.Oauth2AccessCodeSecurity + } + return nil +} type isSecurityDefinitionsItem_Oneof interface { isSecurityDefinitionsItem_Oneof() @@ -4600,627 +5052,2296 @@ func (*SecurityDefinitionsItem_Oauth2ApplicationSecurity) isSecurityDefinitionsI func (*SecurityDefinitionsItem_Oauth2AccessCodeSecurity) isSecurityDefinitionsItem_Oneof() {} -func (m *SecurityDefinitionsItem) GetOneof() isSecurityDefinitionsItem_Oneof { - if m != nil { - return m.Oneof - } - return nil +type SecurityRequirement struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedStringArray `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` } -func (m *SecurityDefinitionsItem) GetBasicAuthenticationSecurity() *BasicAuthenticationSecurity { - if x, ok := m.GetOneof().(*SecurityDefinitionsItem_BasicAuthenticationSecurity); ok { - return x.BasicAuthenticationSecurity +func (x *SecurityRequirement) Reset() { + *x = SecurityRequirement{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (m *SecurityDefinitionsItem) GetApiKeySecurity() *ApiKeySecurity { - if x, ok := m.GetOneof().(*SecurityDefinitionsItem_ApiKeySecurity); ok { - return x.ApiKeySecurity - } - return nil +func (x *SecurityRequirement) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SecurityDefinitionsItem) GetOauth2ImplicitSecurity() *Oauth2ImplicitSecurity { - if x, ok := m.GetOneof().(*SecurityDefinitionsItem_Oauth2ImplicitSecurity); ok { - return x.Oauth2ImplicitSecurity +func (*SecurityRequirement) ProtoMessage() {} + +func (x *SecurityRequirement) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *SecurityDefinitionsItem) GetOauth2PasswordSecurity() *Oauth2PasswordSecurity { - if x, ok := m.GetOneof().(*SecurityDefinitionsItem_Oauth2PasswordSecurity); ok { - return x.Oauth2PasswordSecurity - } - return nil +// Deprecated: Use SecurityRequirement.ProtoReflect.Descriptor instead. +func (*SecurityRequirement) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{54} } -func (m *SecurityDefinitionsItem) GetOauth2ApplicationSecurity() *Oauth2ApplicationSecurity { - if x, ok := m.GetOneof().(*SecurityDefinitionsItem_Oauth2ApplicationSecurity); ok { - return x.Oauth2ApplicationSecurity +func (x *SecurityRequirement) GetAdditionalProperties() []*NamedStringArray { + if x != nil { + return x.AdditionalProperties } return nil } -func (m *SecurityDefinitionsItem) GetOauth2AccessCodeSecurity() *Oauth2AccessCodeSecurity { - if x, ok := m.GetOneof().(*SecurityDefinitionsItem_Oauth2AccessCodeSecurity); ok { - return x.Oauth2AccessCodeSecurity - } - return nil +type StringArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value []string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*SecurityDefinitionsItem) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*SecurityDefinitionsItem_BasicAuthenticationSecurity)(nil), - (*SecurityDefinitionsItem_ApiKeySecurity)(nil), - (*SecurityDefinitionsItem_Oauth2ImplicitSecurity)(nil), - (*SecurityDefinitionsItem_Oauth2PasswordSecurity)(nil), - (*SecurityDefinitionsItem_Oauth2ApplicationSecurity)(nil), - (*SecurityDefinitionsItem_Oauth2AccessCodeSecurity)(nil), +func (x *StringArray) Reset() { + *x = StringArray{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } } -type SecurityRequirement struct { - AdditionalProperties []*NamedStringArray `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *StringArray) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SecurityRequirement) Reset() { *m = SecurityRequirement{} } -func (m *SecurityRequirement) String() string { return proto.CompactTextString(m) } -func (*SecurityRequirement) ProtoMessage() {} -func (*SecurityRequirement) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{54} -} +func (*StringArray) ProtoMessage() {} -func (m *SecurityRequirement) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SecurityRequirement.Unmarshal(m, b) -} -func (m *SecurityRequirement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SecurityRequirement.Marshal(b, m, deterministic) -} -func (m *SecurityRequirement) XXX_Merge(src proto.Message) { - xxx_messageInfo_SecurityRequirement.Merge(m, src) -} -func (m *SecurityRequirement) XXX_Size() int { - return xxx_messageInfo_SecurityRequirement.Size(m) -} -func (m *SecurityRequirement) XXX_DiscardUnknown() { - xxx_messageInfo_SecurityRequirement.DiscardUnknown(m) +func (x *StringArray) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SecurityRequirement proto.InternalMessageInfo +// Deprecated: Use StringArray.ProtoReflect.Descriptor instead. +func (*StringArray) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{55} +} -func (m *SecurityRequirement) GetAdditionalProperties() []*NamedStringArray { - if m != nil { - return m.AdditionalProperties +func (x *StringArray) GetValue() []string { + if x != nil { + return x.Value } return nil } -type StringArray struct { - Value []string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type Tag struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *StringArray) Reset() { *m = StringArray{} } -func (m *StringArray) String() string { return proto.CompactTextString(m) } -func (*StringArray) ProtoMessage() {} -func (*StringArray) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{55} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,3,opt,name=external_docs,json=externalDocs,proto3" json:"external_docs,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,4,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *StringArray) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StringArray.Unmarshal(m, b) -} -func (m *StringArray) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_StringArray.Marshal(b, m, deterministic) -} -func (m *StringArray) XXX_Merge(src proto.Message) { - xxx_messageInfo_StringArray.Merge(m, src) -} -func (m *StringArray) XXX_Size() int { - return xxx_messageInfo_StringArray.Size(m) +func (x *Tag) Reset() { + *x = Tag{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *StringArray) XXX_DiscardUnknown() { - xxx_messageInfo_StringArray.DiscardUnknown(m) + +func (x *Tag) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_StringArray proto.InternalMessageInfo +func (*Tag) ProtoMessage() {} -func (m *StringArray) GetValue() []string { - if m != nil { - return m.Value +func (x *Tag) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[56] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type Tag struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - ExternalDocs *ExternalDocs `protobuf:"bytes,3,opt,name=external_docs,json=externalDocs,proto3" json:"external_docs,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,4,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Tag) Reset() { *m = Tag{} } -func (m *Tag) String() string { return proto.CompactTextString(m) } -func (*Tag) ProtoMessage() {} +// Deprecated: Use Tag.ProtoReflect.Descriptor instead. func (*Tag) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{56} + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{56} } -func (m *Tag) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Tag.Unmarshal(m, b) -} -func (m *Tag) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Tag.Marshal(b, m, deterministic) -} -func (m *Tag) XXX_Merge(src proto.Message) { - xxx_messageInfo_Tag.Merge(m, src) -} -func (m *Tag) XXX_Size() int { - return xxx_messageInfo_Tag.Size(m) -} -func (m *Tag) XXX_DiscardUnknown() { - xxx_messageInfo_Tag.DiscardUnknown(m) -} - -var xxx_messageInfo_Tag proto.InternalMessageInfo - -func (m *Tag) GetName() string { - if m != nil { - return m.Name +func (x *Tag) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *Tag) GetDescription() string { - if m != nil { - return m.Description +func (x *Tag) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Tag) GetExternalDocs() *ExternalDocs { - if m != nil { - return m.ExternalDocs +func (x *Tag) GetExternalDocs() *ExternalDocs { + if x != nil { + return x.ExternalDocs } return nil } -func (m *Tag) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension +func (x *Tag) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension } return nil } type TypeItem struct { - Value []string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *TypeItem) Reset() { *m = TypeItem{} } -func (m *TypeItem) String() string { return proto.CompactTextString(m) } -func (*TypeItem) ProtoMessage() {} -func (*TypeItem) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{57} + Value []string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` } -func (m *TypeItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TypeItem.Unmarshal(m, b) -} -func (m *TypeItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TypeItem.Marshal(b, m, deterministic) -} -func (m *TypeItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_TypeItem.Merge(m, src) +func (x *TypeItem) Reset() { + *x = TypeItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *TypeItem) XXX_Size() int { - return xxx_messageInfo_TypeItem.Size(m) + +func (x *TypeItem) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *TypeItem) XXX_DiscardUnknown() { - xxx_messageInfo_TypeItem.DiscardUnknown(m) + +func (*TypeItem) ProtoMessage() {} + +func (x *TypeItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[57] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_TypeItem proto.InternalMessageInfo +// Deprecated: Use TypeItem.ProtoReflect.Descriptor instead. +func (*TypeItem) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{57} +} -func (m *TypeItem) GetValue() []string { - if m != nil { - return m.Value +func (x *TypeItem) GetValue() []string { + if x != nil { + return x.Value } return nil } // Any property starting with x- is valid. type VendorExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + AdditionalProperties []*NamedAny `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *VendorExtension) Reset() { *m = VendorExtension{} } -func (m *VendorExtension) String() string { return proto.CompactTextString(m) } -func (*VendorExtension) ProtoMessage() {} -func (*VendorExtension) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{58} +func (x *VendorExtension) Reset() { + *x = VendorExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *VendorExtension) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_VendorExtension.Unmarshal(m, b) -} -func (m *VendorExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_VendorExtension.Marshal(b, m, deterministic) +func (x *VendorExtension) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *VendorExtension) XXX_Merge(src proto.Message) { - xxx_messageInfo_VendorExtension.Merge(m, src) -} -func (m *VendorExtension) XXX_Size() int { - return xxx_messageInfo_VendorExtension.Size(m) -} -func (m *VendorExtension) XXX_DiscardUnknown() { - xxx_messageInfo_VendorExtension.DiscardUnknown(m) + +func (*VendorExtension) ProtoMessage() {} + +func (x *VendorExtension) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[58] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_VendorExtension proto.InternalMessageInfo +// Deprecated: Use VendorExtension.ProtoReflect.Descriptor instead. +func (*VendorExtension) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{58} +} -func (m *VendorExtension) GetAdditionalProperties() []*NamedAny { - if m != nil { - return m.AdditionalProperties +func (x *VendorExtension) GetAdditionalProperties() []*NamedAny { + if x != nil { + return x.AdditionalProperties } return nil } type Xml struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Prefix string `protobuf:"bytes,3,opt,name=prefix,proto3" json:"prefix,omitempty"` - Attribute bool `protobuf:"varint,4,opt,name=attribute,proto3" json:"attribute,omitempty"` - Wrapped bool `protobuf:"varint,5,opt,name=wrapped,proto3" json:"wrapped,omitempty"` - VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Xml) Reset() { *m = Xml{} } -func (m *Xml) String() string { return proto.CompactTextString(m) } -func (*Xml) ProtoMessage() {} -func (*Xml) Descriptor() ([]byte, []int) { - return fileDescriptor_a43d10d209cd31c2, []int{59} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Xml) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Xml.Unmarshal(m, b) -} -func (m *Xml) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Xml.Marshal(b, m, deterministic) + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Prefix string `protobuf:"bytes,3,opt,name=prefix,proto3" json:"prefix,omitempty"` + Attribute bool `protobuf:"varint,4,opt,name=attribute,proto3" json:"attribute,omitempty"` + Wrapped bool `protobuf:"varint,5,opt,name=wrapped,proto3" json:"wrapped,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension,proto3" json:"vendor_extension,omitempty"` } -func (m *Xml) XXX_Merge(src proto.Message) { - xxx_messageInfo_Xml.Merge(m, src) + +func (x *Xml) Reset() { + *x = Xml{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Xml) XXX_Size() int { - return xxx_messageInfo_Xml.Size(m) + +func (x *Xml) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Xml) XXX_DiscardUnknown() { - xxx_messageInfo_Xml.DiscardUnknown(m) + +func (*Xml) ProtoMessage() {} + +func (x *Xml) ProtoReflect() protoreflect.Message { + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[59] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Xml proto.InternalMessageInfo +// Deprecated: Use Xml.ProtoReflect.Descriptor instead. +func (*Xml) Descriptor() ([]byte, []int) { + return file_openapiv2_OpenAPIv2_proto_rawDescGZIP(), []int{59} +} -func (m *Xml) GetName() string { - if m != nil { - return m.Name +func (x *Xml) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *Xml) GetNamespace() string { - if m != nil { - return m.Namespace +func (x *Xml) GetNamespace() string { + if x != nil { + return x.Namespace } return "" } -func (m *Xml) GetPrefix() string { - if m != nil { - return m.Prefix +func (x *Xml) GetPrefix() string { + if x != nil { + return x.Prefix } return "" } -func (m *Xml) GetAttribute() bool { - if m != nil { - return m.Attribute +func (x *Xml) GetAttribute() bool { + if x != nil { + return x.Attribute } return false } -func (m *Xml) GetWrapped() bool { - if m != nil { - return m.Wrapped +func (x *Xml) GetWrapped() bool { + if x != nil { + return x.Wrapped } return false } -func (m *Xml) GetVendorExtension() []*NamedAny { - if m != nil { - return m.VendorExtension - } - return nil -} - -func init() { - proto.RegisterType((*AdditionalPropertiesItem)(nil), "openapi.v2.AdditionalPropertiesItem") - proto.RegisterType((*Any)(nil), "openapi.v2.Any") - proto.RegisterType((*ApiKeySecurity)(nil), "openapi.v2.ApiKeySecurity") - proto.RegisterType((*BasicAuthenticationSecurity)(nil), "openapi.v2.BasicAuthenticationSecurity") - proto.RegisterType((*BodyParameter)(nil), "openapi.v2.BodyParameter") - proto.RegisterType((*Contact)(nil), "openapi.v2.Contact") - proto.RegisterType((*Default)(nil), "openapi.v2.Default") - proto.RegisterType((*Definitions)(nil), "openapi.v2.Definitions") - proto.RegisterType((*Document)(nil), "openapi.v2.Document") - proto.RegisterType((*Examples)(nil), "openapi.v2.Examples") - proto.RegisterType((*ExternalDocs)(nil), "openapi.v2.ExternalDocs") - proto.RegisterType((*FileSchema)(nil), "openapi.v2.FileSchema") - proto.RegisterType((*FormDataParameterSubSchema)(nil), "openapi.v2.FormDataParameterSubSchema") - proto.RegisterType((*Header)(nil), "openapi.v2.Header") - proto.RegisterType((*HeaderParameterSubSchema)(nil), "openapi.v2.HeaderParameterSubSchema") - proto.RegisterType((*Headers)(nil), "openapi.v2.Headers") - proto.RegisterType((*Info)(nil), "openapi.v2.Info") - proto.RegisterType((*ItemsItem)(nil), "openapi.v2.ItemsItem") - proto.RegisterType((*JsonReference)(nil), "openapi.v2.JsonReference") - proto.RegisterType((*License)(nil), "openapi.v2.License") - proto.RegisterType((*NamedAny)(nil), "openapi.v2.NamedAny") - proto.RegisterType((*NamedHeader)(nil), "openapi.v2.NamedHeader") - proto.RegisterType((*NamedParameter)(nil), "openapi.v2.NamedParameter") - proto.RegisterType((*NamedPathItem)(nil), "openapi.v2.NamedPathItem") - proto.RegisterType((*NamedResponse)(nil), "openapi.v2.NamedResponse") - proto.RegisterType((*NamedResponseValue)(nil), "openapi.v2.NamedResponseValue") - proto.RegisterType((*NamedSchema)(nil), "openapi.v2.NamedSchema") - proto.RegisterType((*NamedSecurityDefinitionsItem)(nil), "openapi.v2.NamedSecurityDefinitionsItem") - proto.RegisterType((*NamedString)(nil), "openapi.v2.NamedString") - proto.RegisterType((*NamedStringArray)(nil), "openapi.v2.NamedStringArray") - proto.RegisterType((*NonBodyParameter)(nil), "openapi.v2.NonBodyParameter") - proto.RegisterType((*Oauth2AccessCodeSecurity)(nil), "openapi.v2.Oauth2AccessCodeSecurity") - proto.RegisterType((*Oauth2ApplicationSecurity)(nil), "openapi.v2.Oauth2ApplicationSecurity") - proto.RegisterType((*Oauth2ImplicitSecurity)(nil), "openapi.v2.Oauth2ImplicitSecurity") - proto.RegisterType((*Oauth2PasswordSecurity)(nil), "openapi.v2.Oauth2PasswordSecurity") - proto.RegisterType((*Oauth2Scopes)(nil), "openapi.v2.Oauth2Scopes") - proto.RegisterType((*Operation)(nil), "openapi.v2.Operation") - proto.RegisterType((*Parameter)(nil), "openapi.v2.Parameter") - proto.RegisterType((*ParameterDefinitions)(nil), "openapi.v2.ParameterDefinitions") - proto.RegisterType((*ParametersItem)(nil), "openapi.v2.ParametersItem") - proto.RegisterType((*PathItem)(nil), "openapi.v2.PathItem") - proto.RegisterType((*PathParameterSubSchema)(nil), "openapi.v2.PathParameterSubSchema") - proto.RegisterType((*Paths)(nil), "openapi.v2.Paths") - proto.RegisterType((*PrimitivesItems)(nil), "openapi.v2.PrimitivesItems") - proto.RegisterType((*Properties)(nil), "openapi.v2.Properties") - proto.RegisterType((*QueryParameterSubSchema)(nil), "openapi.v2.QueryParameterSubSchema") - proto.RegisterType((*Response)(nil), "openapi.v2.Response") - proto.RegisterType((*ResponseDefinitions)(nil), "openapi.v2.ResponseDefinitions") - proto.RegisterType((*ResponseValue)(nil), "openapi.v2.ResponseValue") - proto.RegisterType((*Responses)(nil), "openapi.v2.Responses") - proto.RegisterType((*Schema)(nil), "openapi.v2.Schema") - proto.RegisterType((*SchemaItem)(nil), "openapi.v2.SchemaItem") - proto.RegisterType((*SecurityDefinitions)(nil), "openapi.v2.SecurityDefinitions") - proto.RegisterType((*SecurityDefinitionsItem)(nil), "openapi.v2.SecurityDefinitionsItem") - proto.RegisterType((*SecurityRequirement)(nil), "openapi.v2.SecurityRequirement") - proto.RegisterType((*StringArray)(nil), "openapi.v2.StringArray") - proto.RegisterType((*Tag)(nil), "openapi.v2.Tag") - proto.RegisterType((*TypeItem)(nil), "openapi.v2.TypeItem") - proto.RegisterType((*VendorExtension)(nil), "openapi.v2.VendorExtension") - proto.RegisterType((*Xml)(nil), "openapi.v2.Xml") -} - -func init() { proto.RegisterFile("openapiv2/OpenAPIv2.proto", fileDescriptor_a43d10d209cd31c2) } - -var fileDescriptor_a43d10d209cd31c2 = []byte{ - // 3130 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3b, 0x4b, 0x73, 0x1c, 0x57, - 0xd5, 0xf3, 0x7e, 0x1c, 0x69, 0x46, 0xa3, 0x96, 0x2c, 0xb7, 0x24, 0xc7, 0x71, 0xe4, 0x3c, 0x6c, - 0xe7, 0xb3, 0x9c, 0x4f, 0x29, 0x48, 0x05, 0x2a, 0x05, 0xf2, 0xab, 0xc6, 0xc4, 0x44, 0x4a, 0xcb, - 0x0e, 0x09, 0x04, 0xba, 0xae, 0x66, 0xee, 0x48, 0x9d, 0x74, 0xf7, 0x6d, 0x77, 0xf7, 0xc8, 0x1a, - 0x16, 0x2c, 0xa0, 0x8a, 0x35, 0x50, 0x59, 0x53, 0x15, 0x16, 0x14, 0x55, 0x59, 0xb0, 0x62, 0xc5, - 0x1f, 0x60, 0xc7, 0x3f, 0x60, 0x0d, 0x5b, 0xaa, 0x58, 0x51, 0x3c, 0xea, 0xbe, 0xa6, 0x5f, 0xb7, - 0xe7, 0x61, 0xb9, 0x80, 0x02, 0xad, 0x66, 0xee, 0x3d, 0xe7, 0x9e, 0x7b, 0xfa, 0xf4, 0x79, 0xdd, - 0x73, 0x6e, 0xc3, 0x3a, 0xf1, 0xb0, 0x8b, 0x3c, 0xeb, 0x64, 0xe7, 0xd6, 0x9e, 0x87, 0xdd, 0xdd, - 0xfd, 0x07, 0x27, 0x3b, 0xdb, 0x9e, 0x4f, 0x42, 0xa2, 0x81, 0x00, 0x6d, 0x9f, 0xec, 0x6c, 0xac, - 0x1f, 0x11, 0x72, 0x64, 0xe3, 0x5b, 0x0c, 0x72, 0x38, 0x1c, 0xdc, 0x42, 0xee, 0x88, 0xa3, 0x6d, - 0x39, 0xa0, 0xef, 0xf6, 0xfb, 0x56, 0x68, 0x11, 0x17, 0xd9, 0xfb, 0x3e, 0xf1, 0xb0, 0x1f, 0x5a, - 0x38, 0x78, 0x10, 0x62, 0x47, 0xfb, 0x3f, 0xa8, 0x05, 0xbd, 0x63, 0xec, 0x20, 0xbd, 0x78, 0xa5, - 0x78, 0x6d, 0x61, 0x47, 0xdb, 0x8e, 0x68, 0x6e, 0x1f, 0x30, 0x48, 0xb7, 0x60, 0x08, 0x1c, 0x6d, - 0x03, 0xea, 0x87, 0x84, 0xd8, 0x18, 0xb9, 0x7a, 0xe9, 0x4a, 0xf1, 0x5a, 0xa3, 0x5b, 0x30, 0xe4, - 0xc4, 0xed, 0x3a, 0x54, 0x89, 0x8b, 0xc9, 0x60, 0xeb, 0x1e, 0x94, 0x77, 0xdd, 0x91, 0x76, 0x03, - 0xaa, 0x27, 0xc8, 0x1e, 0x62, 0x41, 0x78, 0x75, 0x9b, 0x33, 0xb8, 0x2d, 0x19, 0xdc, 0xde, 0x75, - 0x47, 0x06, 0x47, 0xd1, 0x34, 0xa8, 0x8c, 0x90, 0x63, 0x33, 0xa2, 0x4d, 0x83, 0xfd, 0xdf, 0xfa, - 0xa2, 0x08, 0xed, 0x5d, 0xcf, 0x7a, 0x17, 0x8f, 0x0e, 0x70, 0x6f, 0xe8, 0x5b, 0xe1, 0x88, 0xa2, - 0x85, 0x23, 0x8f, 0x53, 0x6c, 0x1a, 0xec, 0x3f, 0x9d, 0x73, 0x91, 0x83, 0xe5, 0x52, 0xfa, 0x5f, - 0x6b, 0x43, 0xc9, 0x72, 0xf5, 0x32, 0x9b, 0x29, 0x59, 0xae, 0x76, 0x05, 0x16, 0xfa, 0x38, 0xe8, - 0xf9, 0x96, 0x47, 0x65, 0xa0, 0x57, 0x18, 0x20, 0x3e, 0xa5, 0x7d, 0x0d, 0x3a, 0x27, 0xd8, 0xed, - 0x13, 0xdf, 0xc4, 0xa7, 0x21, 0x76, 0x03, 0x8a, 0x56, 0xbd, 0x52, 0x66, 0x7c, 0xc7, 0x04, 0xf2, - 0x1e, 0x72, 0x70, 0x9f, 0xf2, 0xbd, 0xc4, 0xb1, 0xef, 0x49, 0xe4, 0xad, 0xcf, 0x8a, 0xb0, 0x79, - 0x1b, 0x05, 0x56, 0x6f, 0x77, 0x18, 0x1e, 0x63, 0x37, 0xb4, 0x7a, 0x88, 0x12, 0x9e, 0xc8, 0x7a, - 0x8a, 0xad, 0xd2, 0x6c, 0x6c, 0x95, 0xe7, 0x61, 0xeb, 0x0f, 0x45, 0x68, 0xdd, 0x26, 0xfd, 0xd1, - 0x3e, 0xf2, 0x91, 0x83, 0x43, 0xec, 0xa7, 0x37, 0x2d, 0x66, 0x37, 0x9d, 0x45, 0xa2, 0x1b, 0xd0, - 0xf0, 0xf1, 0x93, 0xa1, 0xe5, 0xe3, 0x3e, 0x13, 0x67, 0xc3, 0x18, 0x8f, 0xb5, 0x1b, 0x63, 0x95, - 0xaa, 0xe6, 0xa9, 0xd4, 0x58, 0xa1, 0x54, 0x0f, 0x58, 0x9b, 0xe7, 0x01, 0x7f, 0x5c, 0x84, 0xfa, - 0x1d, 0xe2, 0x86, 0xa8, 0x17, 0x8e, 0x19, 0x2f, 0xc6, 0x18, 0xef, 0x40, 0x79, 0xe8, 0x4b, 0xc5, - 0xa2, 0x7f, 0xb5, 0x55, 0xa8, 0x62, 0x07, 0x59, 0xb6, 0x78, 0x1a, 0x3e, 0x50, 0x32, 0x52, 0x99, - 0x87, 0x91, 0x47, 0x50, 0xbf, 0x8b, 0x07, 0x68, 0x68, 0x87, 0xda, 0x03, 0xb8, 0x80, 0xc6, 0xf6, - 0x66, 0x7a, 0x63, 0x83, 0xd3, 0x8b, 0x13, 0x08, 0xae, 0x22, 0x85, 0x89, 0x6e, 0x7d, 0x07, 0x16, - 0xee, 0xe2, 0x81, 0xe5, 0x32, 0x48, 0xa0, 0x3d, 0x9c, 0x4c, 0xf9, 0x62, 0x86, 0xb2, 0x10, 0xb7, - 0x9a, 0xf8, 0x1f, 0xab, 0xd0, 0xb8, 0x4b, 0x7a, 0x43, 0x07, 0xbb, 0xa1, 0xa6, 0x43, 0x3d, 0x78, - 0x8a, 0x8e, 0x8e, 0xb0, 0x2f, 0xe4, 0x27, 0x87, 0xda, 0xcb, 0x50, 0xb1, 0xdc, 0x01, 0x61, 0x32, - 0x5c, 0xd8, 0xe9, 0xc4, 0xf7, 0x78, 0xe0, 0x0e, 0x88, 0xc1, 0xa0, 0x54, 0xf8, 0xc7, 0x24, 0x08, - 0x85, 0x54, 0xd9, 0x7f, 0x6d, 0x13, 0x9a, 0x87, 0x28, 0xc0, 0xa6, 0x87, 0xc2, 0x63, 0x61, 0x75, - 0x0d, 0x3a, 0xb1, 0x8f, 0xc2, 0x63, 0xb6, 0x21, 0xe5, 0x0e, 0x07, 0xcc, 0xd2, 0xe8, 0x86, 0x7c, - 0x48, 0x95, 0xab, 0x47, 0xdc, 0x60, 0x48, 0x41, 0x35, 0x06, 0x1a, 0x8f, 0x29, 0xcc, 0xf3, 0x49, - 0x7f, 0xd8, 0xc3, 0x81, 0x5e, 0xe7, 0x30, 0x39, 0xd6, 0x5e, 0x83, 0x2a, 0xdd, 0x29, 0xd0, 0x1b, - 0x8c, 0xd3, 0xe5, 0x38, 0xa7, 0x74, 0xcb, 0xc0, 0xe0, 0x70, 0xed, 0x6d, 0x6a, 0x03, 0x63, 0xa9, - 0xea, 0x4d, 0x86, 0x9e, 0x10, 0x5e, 0x4c, 0xe8, 0x46, 0x1c, 0x57, 0xfb, 0x3a, 0x80, 0x27, 0x6d, - 0x29, 0xd0, 0x81, 0xad, 0xbc, 0x92, 0xdc, 0x48, 0x40, 0xe3, 0x24, 0x62, 0x6b, 0xb4, 0x77, 0xa0, - 0xe9, 0xe3, 0xc0, 0x23, 0x6e, 0x80, 0x03, 0x7d, 0x81, 0x11, 0x78, 0x31, 0x4e, 0xc0, 0x10, 0xc0, - 0xf8, 0xfa, 0x68, 0x85, 0xf6, 0x55, 0x68, 0x04, 0xc2, 0xa9, 0xe8, 0x8b, 0xec, 0xad, 0x27, 0x56, - 0x4b, 0x87, 0x63, 0x70, 0x6b, 0xa4, 0xaf, 0xd6, 0x18, 0x2f, 0xd0, 0x0c, 0x58, 0x95, 0xff, 0xcd, - 0xb8, 0x04, 0x5a, 0x59, 0x36, 0x24, 0xa1, 0x38, 0x1b, 0x2b, 0x41, 0x76, 0x52, 0xbb, 0x0a, 0x95, - 0x10, 0x1d, 0x05, 0x7a, 0x9b, 0x31, 0xb3, 0x14, 0xa7, 0xf1, 0x08, 0x1d, 0x19, 0x0c, 0xa8, 0xbd, - 0x03, 0x2d, 0x6a, 0x57, 0x3e, 0x55, 0xdb, 0x3e, 0xe9, 0x05, 0xfa, 0x12, 0xdb, 0x51, 0x8f, 0x63, - 0xdf, 0x13, 0x08, 0x77, 0x49, 0x2f, 0x30, 0x16, 0x71, 0x6c, 0xa4, 0xb4, 0xce, 0xce, 0x3c, 0xd6, - 0xf9, 0x18, 0x1a, 0xf7, 0x4e, 0x91, 0xe3, 0xd9, 0x38, 0x78, 0x9e, 0xe6, 0xf9, 0xa3, 0x22, 0x2c, - 0xc6, 0xd9, 0x9e, 0xc1, 0xbb, 0x66, 0x1d, 0xd2, 0x99, 0x9d, 0xfc, 0x3f, 0x4a, 0x00, 0xf7, 0x2d, - 0x1b, 0x73, 0x63, 0xd7, 0xd6, 0xa0, 0x36, 0x20, 0xbe, 0x83, 0x42, 0xb1, 0xbd, 0x18, 0x51, 0xc7, - 0x17, 0x5a, 0xa1, 0x2d, 0x1d, 0x3b, 0x1f, 0xa4, 0x39, 0x2e, 0x67, 0x39, 0xbe, 0x0e, 0xf5, 0x3e, - 0xf7, 0x6c, 0xcc, 0x86, 0x53, 0xef, 0x98, 0x72, 0x24, 0xe1, 0x89, 0xb0, 0xc0, 0x8d, 0x3a, 0x0a, - 0x0b, 0x32, 0x02, 0xd6, 0x62, 0x11, 0x70, 0x93, 0xda, 0x02, 0xea, 0x9b, 0xc4, 0xb5, 0x47, 0x7a, - 0x5d, 0xc6, 0x11, 0xd4, 0xdf, 0x73, 0xed, 0x51, 0x56, 0x67, 0x1a, 0x73, 0xe9, 0xcc, 0x75, 0xa8, - 0x63, 0xfe, 0xca, 0x85, 0x81, 0x67, 0xd9, 0x16, 0x70, 0xe5, 0x1b, 0x80, 0x79, 0xde, 0xc0, 0x17, - 0x35, 0xd8, 0xb8, 0x4f, 0x7c, 0xe7, 0x2e, 0x0a, 0xd1, 0xd8, 0x01, 0x1c, 0x0c, 0x0f, 0x0f, 0x64, - 0xda, 0x14, 0x89, 0xa5, 0x98, 0x8a, 0x96, 0x3c, 0xb2, 0x96, 0xf2, 0x72, 0x95, 0x72, 0x7e, 0x7c, - 0xae, 0xc4, 0xc2, 0xdc, 0x0d, 0x58, 0x46, 0xb6, 0x4d, 0x9e, 0x9a, 0xd8, 0xf1, 0xc2, 0x91, 0xc9, - 0x13, 0xaf, 0x2a, 0xdb, 0x6a, 0x89, 0x01, 0xee, 0xd1, 0xf9, 0x0f, 0x64, 0xb2, 0x95, 0x79, 0x11, - 0x91, 0xce, 0xd4, 0x13, 0x3a, 0xf3, 0xff, 0x50, 0xb5, 0x42, 0xec, 0x48, 0xd9, 0x6f, 0x26, 0x3c, - 0x9d, 0x6f, 0x39, 0x56, 0x68, 0x9d, 0xf0, 0x4c, 0x32, 0x30, 0x38, 0xa6, 0xf6, 0x3a, 0x2c, 0xf7, - 0x88, 0x6d, 0xe3, 0x1e, 0x65, 0xd6, 0x14, 0x54, 0x9b, 0x8c, 0x6a, 0x27, 0x02, 0xdc, 0xe7, 0xf4, - 0x63, 0xba, 0x05, 0x53, 0x74, 0x4b, 0x87, 0xba, 0x83, 0x4e, 0x2d, 0x67, 0xe8, 0x30, 0xaf, 0x59, - 0x34, 0xe4, 0x90, 0xee, 0x88, 0x4f, 0x7b, 0xf6, 0x30, 0xb0, 0x4e, 0xb0, 0x29, 0x71, 0x16, 0xd9, - 0xc3, 0x77, 0xc6, 0x80, 0x6f, 0x0a, 0x64, 0x4a, 0xc6, 0x72, 0x19, 0x4a, 0x4b, 0x90, 0xe1, 0xc3, - 0x14, 0x19, 0x81, 0xd3, 0x4e, 0x93, 0x11, 0xc8, 0x2f, 0x00, 0x38, 0xe8, 0xd4, 0xb4, 0xb1, 0x7b, - 0x14, 0x1e, 0x33, 0x6f, 0x56, 0x36, 0x9a, 0x0e, 0x3a, 0x7d, 0xc8, 0x26, 0x18, 0xd8, 0x72, 0x25, - 0xb8, 0x23, 0xc0, 0x96, 0x2b, 0xc0, 0x3a, 0xd4, 0x3d, 0x14, 0x52, 0x65, 0xd5, 0x97, 0x79, 0xb0, - 0x15, 0x43, 0x6a, 0x11, 0x94, 0x2e, 0x17, 0xba, 0xc6, 0xd6, 0x35, 0x1c, 0x74, 0xca, 0x24, 0xcc, - 0x80, 0x96, 0x2b, 0x80, 0x2b, 0x02, 0x68, 0xb9, 0x1c, 0xf8, 0x12, 0x2c, 0x0e, 0x5d, 0xeb, 0xc9, - 0x10, 0x0b, 0xf8, 0x2a, 0xe3, 0x7c, 0x81, 0xcf, 0x71, 0x94, 0xab, 0x50, 0xc1, 0xee, 0xd0, 0xd1, - 0x2f, 0x64, 0x5d, 0x35, 0x15, 0x35, 0x03, 0x6a, 0x2f, 0xc2, 0x82, 0x33, 0xb4, 0x43, 0xcb, 0xb3, - 0xb1, 0x49, 0x06, 0xfa, 0x1a, 0x13, 0x12, 0xc8, 0xa9, 0xbd, 0x81, 0xd2, 0x5a, 0x2e, 0xce, 0x65, - 0x2d, 0x55, 0xa8, 0x75, 0x31, 0xea, 0x63, 0x5f, 0x99, 0x16, 0x47, 0xba, 0x58, 0x52, 0xeb, 0x62, - 0xf9, 0x6c, 0xba, 0x58, 0x99, 0xae, 0x8b, 0xd5, 0xd9, 0x75, 0xb1, 0x36, 0x83, 0x2e, 0xd6, 0xa7, - 0xeb, 0x62, 0x63, 0x06, 0x5d, 0x6c, 0xce, 0xa4, 0x8b, 0x30, 0x59, 0x17, 0x17, 0x26, 0xe8, 0xe2, - 0xe2, 0x04, 0x5d, 0x6c, 0x4d, 0xd2, 0xc5, 0xf6, 0x14, 0x5d, 0x5c, 0xca, 0xd7, 0xc5, 0xce, 0x1c, - 0xba, 0xb8, 0x9c, 0xd1, 0xc5, 0x94, 0xb7, 0xd4, 0x66, 0x3b, 0x42, 0xad, 0xcc, 0xa3, 0xad, 0x7f, - 0xab, 0x82, 0xce, 0xb5, 0xf5, 0xdf, 0xe2, 0xd9, 0xa5, 0x85, 0x54, 0x95, 0x16, 0x52, 0x53, 0x5b, - 0x48, 0xfd, 0x6c, 0x16, 0xd2, 0x98, 0x6e, 0x21, 0xcd, 0xd9, 0x2d, 0x04, 0x66, 0xb0, 0x90, 0x85, - 0xe9, 0x16, 0xb2, 0x38, 0x83, 0x85, 0xb4, 0x66, 0xb2, 0x90, 0xf6, 0x64, 0x0b, 0x59, 0x9a, 0x60, - 0x21, 0x9d, 0x09, 0x16, 0xb2, 0x3c, 0xc9, 0x42, 0xb4, 0x29, 0x16, 0xb2, 0x92, 0x6f, 0x21, 0xab, - 0x73, 0x58, 0xc8, 0x85, 0x99, 0xbc, 0xf5, 0xda, 0x3c, 0xfa, 0xff, 0x2d, 0xa8, 0x73, 0xf5, 0x7f, - 0x86, 0xe3, 0x27, 0x5f, 0x98, 0x93, 0x3c, 0x7f, 0x5e, 0x82, 0x0a, 0x3d, 0x40, 0x46, 0x89, 0x69, - 0x31, 0x9e, 0x98, 0xea, 0x50, 0x3f, 0xc1, 0x7e, 0x10, 0x55, 0x46, 0xe4, 0x70, 0x06, 0x43, 0xba, - 0x06, 0x9d, 0x10, 0xfb, 0x4e, 0x60, 0x92, 0x81, 0x19, 0x60, 0xff, 0xc4, 0xea, 0x49, 0xa3, 0x6a, - 0xb3, 0xf9, 0xbd, 0xc1, 0x01, 0x9f, 0xd5, 0x6e, 0x42, 0xbd, 0xc7, 0xcb, 0x07, 0xc2, 0xe9, 0xaf, - 0xc4, 0x1f, 0x42, 0x54, 0x16, 0x0c, 0x89, 0x43, 0xd1, 0x6d, 0xab, 0x87, 0xdd, 0x80, 0xa7, 0x4f, - 0x29, 0xf4, 0x87, 0x1c, 0x64, 0x48, 0x1c, 0xa5, 0xf0, 0xeb, 0xf3, 0x08, 0xff, 0x2d, 0x68, 0x32, - 0x65, 0x60, 0xb5, 0xba, 0x1b, 0xb1, 0x5a, 0x5d, 0x79, 0x72, 0x61, 0x65, 0xeb, 0x2e, 0xb4, 0xbe, - 0x11, 0x10, 0xd7, 0xc0, 0x03, 0xec, 0x63, 0xb7, 0x87, 0xb5, 0x65, 0xa8, 0x98, 0x3e, 0x1e, 0x08, - 0x19, 0x97, 0x0d, 0x3c, 0x98, 0x5e, 0x7f, 0xda, 0xf2, 0xa0, 0x2e, 0x9e, 0x69, 0xc6, 0xe2, 0xca, - 0x99, 0xcf, 0x32, 0xf7, 0xa0, 0x21, 0x81, 0xca, 0x2d, 0x5f, 0x91, 0x55, 0xc5, 0x92, 0xda, 0x01, - 0x71, 0xe8, 0xd6, 0xbb, 0xb0, 0x10, 0x53, 0x40, 0x25, 0xa5, 0x6b, 0x49, 0x4a, 0x09, 0x61, 0x0a, - 0xbd, 0x15, 0xc4, 0xde, 0x87, 0x36, 0x23, 0x16, 0x15, 0xd1, 0x54, 0xf4, 0x5e, 0x4f, 0xd2, 0xbb, - 0xa0, 0x2c, 0x0a, 0x48, 0x92, 0x7b, 0xd0, 0x12, 0x24, 0xc3, 0x63, 0xf6, 0x6e, 0x55, 0x14, 0x6f, - 0x24, 0x29, 0xae, 0xa6, 0xeb, 0x19, 0x74, 0x61, 0x9a, 0xa0, 0xac, 0x1e, 0xcc, 0x4d, 0x50, 0x2e, - 0x94, 0x04, 0x3f, 0x02, 0x2d, 0x41, 0x70, 0x7c, 0x76, 0xc8, 0x50, 0xbd, 0x95, 0xa4, 0xba, 0xae, - 0xa2, 0xca, 0x56, 0xa7, 0x5f, 0x8e, 0x88, 0xa1, 0xf3, 0xbe, 0x1c, 0xa1, 0xe9, 0x82, 0x98, 0x03, - 0x97, 0x38, 0xb1, 0x6c, 0x69, 0x22, 0x57, 0xb0, 0x6f, 0x27, 0xa9, 0x5f, 0x9d, 0x52, 0xf7, 0x88, - 0xcb, 0xf9, 0x2d, 0xc9, 0x7b, 0xe8, 0x5b, 0xee, 0x91, 0x92, 0xfa, 0x6a, 0x9c, 0x7a, 0x53, 0x2e, - 0x7c, 0x0c, 0x9d, 0xd8, 0xc2, 0x5d, 0xdf, 0x47, 0x6a, 0x05, 0xbf, 0x99, 0xe4, 0x2d, 0xe1, 0x53, - 0x63, 0x6b, 0x25, 0xd9, 0xdf, 0x94, 0xa1, 0xf3, 0x1e, 0x71, 0x93, 0x35, 0x5e, 0x0c, 0x9b, 0xc7, - 0x4c, 0x83, 0xcd, 0x71, 0xdd, 0xc9, 0x0c, 0x86, 0x87, 0x66, 0xa2, 0xd2, 0xff, 0x72, 0x56, 0xe1, - 0xb3, 0x09, 0x4e, 0xb7, 0x60, 0xe8, 0xc7, 0x79, 0xc9, 0x8f, 0x0d, 0x97, 0x69, 0xc2, 0x60, 0xf6, - 0x51, 0x88, 0xd4, 0x3b, 0xf1, 0x67, 0x78, 0x35, 0xbe, 0x53, 0xfe, 0x31, 0xb9, 0x5b, 0x30, 0x36, - 0x06, 0xf9, 0x87, 0xe8, 0x43, 0xd8, 0x78, 0x32, 0xc4, 0xfe, 0x48, 0xbd, 0x53, 0x39, 0xfb, 0x26, - 0xdf, 0xa7, 0xd8, 0xca, 0x6d, 0x2e, 0x3e, 0x51, 0x83, 0x34, 0x13, 0xd6, 0x3d, 0x14, 0x1e, 0xab, - 0xb7, 0xe0, 0xc5, 0x8f, 0xad, 0xb4, 0x15, 0x2a, 0x77, 0x58, 0xf3, 0x94, 0x90, 0xa8, 0x49, 0xf2, - 0x79, 0x09, 0xf4, 0x3d, 0x34, 0x0c, 0x8f, 0x77, 0x76, 0x7b, 0x3d, 0x1c, 0x04, 0x77, 0x48, 0x1f, - 0x4f, 0xeb, 0x73, 0x0c, 0x6c, 0xf2, 0x54, 0x56, 0xe5, 0xe9, 0x7f, 0xed, 0x0d, 0x1a, 0x10, 0x88, - 0x87, 0xe5, 0x91, 0x28, 0x51, 0x1a, 0xe1, 0xd4, 0x0f, 0x18, 0xdc, 0x10, 0x78, 0x34, 0x6b, 0xa2, - 0xd3, 0xc4, 0xb7, 0xbe, 0xcf, 0xfa, 0x13, 0x26, 0xf5, 0xdf, 0xe2, 0x40, 0x94, 0x00, 0x3c, 0xf6, - 0x6d, 0x9a, 0xc0, 0x84, 0xe4, 0x53, 0xcc, 0x91, 0x78, 0xfe, 0xd9, 0x60, 0x13, 0x14, 0x98, 0x0a, - 0x1e, 0xb5, 0xd9, 0x32, 0xef, 0xb9, 0x82, 0xdf, 0x5f, 0x8a, 0xb0, 0x2e, 0x64, 0xe4, 0x79, 0xf6, - 0x2c, 0x1d, 0x95, 0xe7, 0x23, 0xa4, 0xc4, 0x73, 0x57, 0x26, 0x3f, 0x77, 0x75, 0xb6, 0xe7, 0x9e, - 0xab, 0xa7, 0xf1, 0xc3, 0x12, 0xac, 0x71, 0xc6, 0x1e, 0x38, 0xf4, 0xb9, 0xad, 0xf0, 0x3f, 0x4d, - 0x33, 0xfe, 0x05, 0x42, 0xf8, 0x73, 0x51, 0x0a, 0x61, 0x1f, 0x05, 0xc1, 0x53, 0xe2, 0xf7, 0xff, - 0x07, 0xde, 0xfc, 0xc7, 0xb0, 0x18, 0xe7, 0xeb, 0x19, 0xfa, 0x3d, 0x2c, 0x42, 0xe4, 0x24, 0xdc, - 0x3f, 0xaf, 0x40, 0x73, 0xcf, 0xc3, 0x3e, 0x92, 0x87, 0x4d, 0x56, 0xb7, 0x2f, 0xb2, 0x3a, 0x2d, - 0x2f, 0xd3, 0xeb, 0x50, 0x0f, 0x86, 0x8e, 0x83, 0xfc, 0x91, 0xcc, 0xb9, 0xc5, 0x70, 0x86, 0x9c, - 0x3b, 0x53, 0xae, 0xad, 0xcc, 0x55, 0xae, 0x7d, 0x09, 0x16, 0x89, 0xe4, 0xcd, 0xb4, 0xfa, 0x52, - 0xbc, 0xe3, 0xb9, 0x07, 0xfd, 0x44, 0xef, 0xa7, 0x96, 0xea, 0xfd, 0xc4, 0x7b, 0x46, 0xf5, 0x54, - 0xcf, 0xe8, 0x2b, 0x89, 0x9e, 0x4d, 0x83, 0x89, 0x6e, 0x43, 0x99, 0x9e, 0xf1, 0x50, 0x1f, 0xef, - 0xd6, 0xbc, 0x19, 0xef, 0xd6, 0x34, 0xb3, 0x99, 0x9d, 0x4c, 0x70, 0x12, 0x3d, 0x9a, 0x58, 0x6b, - 0x0b, 0x92, 0xad, 0xad, 0xcb, 0x00, 0x7d, 0xec, 0xf9, 0xb8, 0x87, 0x42, 0xdc, 0x17, 0xa7, 0xde, - 0xd8, 0xcc, 0xd9, 0xba, 0x3b, 0x2a, 0xf5, 0x6b, 0xcd, 0xa3, 0x7e, 0xbf, 0x2c, 0x42, 0x33, 0xca, - 0x22, 0x6e, 0x43, 0xfb, 0x90, 0xf4, 0x63, 0xf1, 0x56, 0x24, 0x0e, 0x89, 0x04, 0x2f, 0x91, 0x78, - 0x74, 0x0b, 0x46, 0xeb, 0x30, 0x91, 0x89, 0x3c, 0x04, 0xcd, 0x25, 0xae, 0x99, 0xa2, 0xc3, 0xd3, - 0x82, 0x4b, 0x09, 0xa6, 0x52, 0x39, 0x4c, 0xb7, 0x60, 0x74, 0xdc, 0xd4, 0x5c, 0x14, 0x3d, 0x8f, - 0x60, 0x55, 0xd5, 0x67, 0xd3, 0xf6, 0x26, 0xdb, 0xcb, 0x46, 0x46, 0x0c, 0x51, 0x62, 0xae, 0x36, - 0x99, 0xcf, 0x8a, 0xd0, 0x4e, 0x6a, 0x87, 0xf6, 0x25, 0x68, 0xa6, 0x25, 0xa2, 0xce, 0xf5, 0xbb, - 0x05, 0x23, 0xc2, 0xa4, 0xd2, 0xfc, 0x24, 0x20, 0x2e, 0x3d, 0x83, 0xf1, 0x13, 0x99, 0x2a, 0x5d, - 0x4e, 0x1c, 0xd9, 0xa8, 0x34, 0x3f, 0x89, 0x4f, 0x44, 0xcf, 0xff, 0xfb, 0x32, 0x34, 0xc6, 0x47, - 0x07, 0xc5, 0xc9, 0xee, 0x35, 0x28, 0x1f, 0xe1, 0x50, 0x75, 0x12, 0x19, 0xdb, 0xbf, 0x41, 0x31, - 0x28, 0xa2, 0x37, 0x0c, 0x85, 0x7f, 0xcc, 0x43, 0xf4, 0x86, 0xa1, 0x76, 0x1d, 0x2a, 0x1e, 0x09, - 0x64, 0x07, 0x28, 0x07, 0x93, 0xa1, 0x68, 0x37, 0xa1, 0xd6, 0xc7, 0x36, 0x0e, 0xb1, 0x38, 0x51, - 0xe7, 0x20, 0x0b, 0x24, 0xed, 0x16, 0xd4, 0x89, 0xc7, 0xdb, 0x90, 0xb5, 0x49, 0xf8, 0x12, 0x8b, - 0xb2, 0x42, 0x53, 0x52, 0x51, 0xe4, 0xca, 0x63, 0x85, 0xa2, 0xd0, 0x33, 0x99, 0x87, 0xc2, 0xde, - 0xb1, 0x68, 0x5f, 0xe4, 0xe0, 0x72, 0x9c, 0x94, 0x9b, 0x68, 0xce, 0xe5, 0x26, 0xce, 0xdc, 0x41, - 0xfa, 0x6b, 0x15, 0xd6, 0xd4, 0xd9, 0xe4, 0x79, 0x8d, 0xf1, 0xbc, 0xc6, 0xf8, 0xdf, 0x5e, 0x63, - 0x7c, 0x0a, 0x55, 0x76, 0x41, 0x43, 0x49, 0xa9, 0x38, 0x07, 0x25, 0xed, 0x26, 0x54, 0xd8, 0x6d, - 0x93, 0x12, 0x5b, 0xb4, 0xae, 0x70, 0xf8, 0xa2, 0x6e, 0xc2, 0xd0, 0xb6, 0x7e, 0x56, 0x85, 0xa5, - 0x94, 0xd6, 0x9e, 0xf7, 0xa4, 0xce, 0x7b, 0x52, 0x67, 0xea, 0x49, 0xa9, 0x74, 0x58, 0x9b, 0xc7, - 0x1a, 0xbe, 0x0d, 0x10, 0xa5, 0x20, 0xcf, 0xf9, 0xce, 0xd7, 0xaf, 0x6a, 0x70, 0x31, 0xa7, 0x30, - 0x72, 0x7e, 0x4d, 0xe1, 0xfc, 0x9a, 0xc2, 0xf9, 0x35, 0x85, 0xc8, 0x0c, 0xff, 0x5e, 0x84, 0xc6, - 0xb8, 0x9c, 0x3e, 0xfd, 0x62, 0xd7, 0xf6, 0xb8, 0x3b, 0xc3, 0xd3, 0xee, 0xb5, 0x6c, 0xcd, 0x9a, - 0x05, 0x1e, 0x79, 0xf5, 0xf5, 0x26, 0xd4, 0x79, 0x65, 0x55, 0x06, 0x8f, 0x95, 0x6c, 0x41, 0x36, - 0x30, 0x24, 0x8e, 0xf6, 0x06, 0x34, 0xc4, 0x75, 0x25, 0x79, 0xb2, 0x5e, 0x4d, 0x9e, 0xac, 0x39, - 0xcc, 0x18, 0x63, 0x9d, 0xfd, 0x4e, 0x33, 0x86, 0x15, 0xc5, 0x65, 0x44, 0xed, 0xbd, 0xc9, 0x0e, - 0x29, 0x1b, 0x73, 0xc7, 0xad, 0x05, 0xb5, 0x4b, 0xfa, 0x49, 0x11, 0x5a, 0xc9, 0x2e, 0xc3, 0x0e, - 0x75, 0x44, 0x7c, 0x62, 0x7c, 0x7b, 0x5c, 0x71, 0xe6, 0xee, 0x16, 0x8c, 0x31, 0xde, 0xf3, 0x3d, - 0x5f, 0xfd, 0xb4, 0x08, 0xcd, 0xf1, 0xc9, 0x5e, 0xbb, 0x03, 0x2d, 0xb9, 0x8d, 0xd9, 0x23, 0x7d, - 0x2c, 0x1e, 0xf4, 0x72, 0xee, 0x83, 0xf2, 0x6e, 0xc7, 0xa2, 0x5c, 0x74, 0x87, 0xf4, 0xd5, 0xad, - 0xc0, 0xd2, 0x3c, 0x6f, 0xe3, 0xd7, 0x4d, 0xa8, 0x09, 0x47, 0xad, 0x38, 0xf1, 0xe5, 0x25, 0x28, - 0xe3, 0xde, 0x6a, 0x79, 0xc2, 0xa5, 0xbf, 0xca, 0xc4, 0x4b, 0x7f, 0xd3, 0x12, 0x8f, 0x94, 0x25, - 0xd6, 0x32, 0x96, 0x18, 0x73, 0x89, 0xf5, 0x19, 0x5c, 0x62, 0x63, 0xba, 0x4b, 0x6c, 0xce, 0xe0, - 0x12, 0x61, 0x26, 0x97, 0xb8, 0x30, 0xd9, 0x25, 0x2e, 0x4e, 0x70, 0x89, 0xad, 0x09, 0x2e, 0xb1, - 0x3d, 0xc9, 0x25, 0x2e, 0x4d, 0x71, 0x89, 0x9d, 0xac, 0x4b, 0x7c, 0x05, 0xda, 0x94, 0x78, 0xcc, - 0xd8, 0xf8, 0x49, 0xa0, 0xe5, 0xa0, 0xd3, 0x58, 0xae, 0x40, 0xd1, 0x2c, 0x37, 0x8e, 0xa6, 0x09, - 0x34, 0xcb, 0x8d, 0xa1, 0xc5, 0x03, 0xfd, 0x4a, 0xea, 0x9a, 0xe6, 0x4c, 0x27, 0x82, 0x8f, 0xf2, - 0x5c, 0xc0, 0x85, 0x6c, 0x6b, 0x29, 0xef, 0xd3, 0x13, 0xb5, 0x37, 0xd0, 0xae, 0x89, 0xb0, 0xbf, - 0x96, 0xb5, 0xfb, 0x47, 0x23, 0x0f, 0xf3, 0xdc, 0x9d, 0x25, 0x03, 0xaf, 0xcb, 0xa0, 0x7f, 0x31, - 0x7b, 0xb8, 0x1f, 0x37, 0xcd, 0x65, 0xb8, 0xbf, 0x0e, 0x35, 0x64, 0xdb, 0x54, 0x3f, 0xf5, 0xdc, - 0xde, 0x79, 0x15, 0xd9, 0xf6, 0xde, 0x40, 0xfb, 0x32, 0x40, 0xec, 0x89, 0xd6, 0xb3, 0xce, 0x3c, - 0xe2, 0xd6, 0x88, 0x61, 0x6a, 0x2f, 0x43, 0xab, 0x6f, 0x51, 0x0b, 0x72, 0x2c, 0x17, 0x85, 0xc4, - 0xd7, 0x37, 0x98, 0x82, 0x24, 0x27, 0x93, 0x57, 0x5e, 0x37, 0x53, 0x57, 0x5e, 0x5f, 0x82, 0xf2, - 0xa9, 0x63, 0xeb, 0x97, 0xb2, 0x16, 0xf7, 0xa1, 0x63, 0x1b, 0x14, 0x96, 0x2d, 0xb3, 0xbe, 0xf0, - 0xac, 0xb7, 0x62, 0x2f, 0x3f, 0xc3, 0xad, 0xd8, 0x17, 0xe7, 0xf1, 0x58, 0x3f, 0x00, 0x88, 0xe2, - 0xde, 0x9c, 0x5f, 0x1a, 0xbd, 0x0d, 0x0b, 0x03, 0xcb, 0xc6, 0x66, 0x7e, 0x48, 0x8d, 0x6e, 0x3c, - 0x77, 0x0b, 0x06, 0x0c, 0xc6, 0xa3, 0xc8, 0x8b, 0x87, 0xb0, 0xa2, 0xe8, 0xe6, 0x6a, 0xdf, 0x9d, - 0x1c, 0xbf, 0xae, 0x65, 0x13, 0xea, 0x9c, 0x96, 0xb0, 0x3a, 0x9c, 0xfd, 0xa9, 0x02, 0x17, 0xf3, - 0x9a, 0xd1, 0x0e, 0xbc, 0x70, 0x88, 0x02, 0xab, 0x67, 0xa2, 0xc4, 0x57, 0x42, 0xe6, 0xb8, 0xe6, - 0xcb, 0x45, 0xf3, 0x5a, 0xa2, 0xc2, 0x9a, 0xff, 0x55, 0x51, 0xb7, 0x60, 0x6c, 0x1e, 0x4e, 0xf8, - 0xe8, 0xe8, 0x3e, 0x74, 0x90, 0x67, 0x99, 0x9f, 0xe2, 0x51, 0xb4, 0x03, 0x97, 0x64, 0xa2, 0xae, - 0x95, 0xfc, 0xca, 0xaa, 0x5b, 0x30, 0xda, 0x28, 0xf9, 0xdd, 0xd5, 0xf7, 0x40, 0x27, 0xac, 0x2d, - 0x61, 0x5a, 0xa2, 0x21, 0x15, 0xd1, 0x2b, 0x67, 0xbb, 0xa2, 0xea, 0xde, 0x55, 0xb7, 0x60, 0xac, - 0x11, 0x75, 0x57, 0x2b, 0xa2, 0xef, 0x89, 0x5e, 0x4f, 0x44, 0xbf, 0x92, 0x47, 0x3f, 0xdd, 0x16, - 0x8a, 0xe8, 0x67, 0x1a, 0x46, 0x47, 0xb0, 0x29, 0xe8, 0xa3, 0xa8, 0x91, 0x18, 0x6d, 0xc1, 0x03, - 0xdc, 0x2b, 0xd9, 0x2d, 0x14, 0x6d, 0xc7, 0x6e, 0xc1, 0x58, 0x27, 0xb9, 0x3d, 0x49, 0x1c, 0x6d, - 0xc4, 0xba, 0xba, 0x2c, 0x5d, 0x88, 0x36, 0xaa, 0x65, 0xbd, 0x63, 0x5e, 0x0f, 0xb8, 0x5b, 0x30, - 0x84, 0x4c, 0xb2, 0xb0, 0x48, 0xc3, 0x8f, 0x23, 0x0d, 0x8f, 0xb5, 0x04, 0xb4, 0xf7, 0x27, 0x6b, - 0xf8, 0xa5, 0x9c, 0xb6, 0x11, 0xbf, 0x58, 0xa0, 0xd6, 0xea, 0xab, 0xb0, 0x10, 0xbf, 0xb9, 0xb0, - 0x1a, 0x7d, 0xdc, 0x57, 0x8e, 0xee, 0x38, 0xfc, 0xb6, 0x08, 0xe5, 0x47, 0x48, 0x7d, 0x2b, 0x62, - 0xfa, 0xc7, 0x6e, 0x19, 0xcf, 0x56, 0x3e, 0xf3, 0x37, 0x22, 0x73, 0x7d, 0xc1, 0x75, 0x05, 0x1a, - 0x32, 0xc2, 0xe4, 0x3c, 0xdf, 0xc7, 0xb0, 0xf4, 0x41, 0xaa, 0xde, 0xf4, 0x1c, 0x3f, 0x26, 0xf9, - 0x5d, 0x11, 0xca, 0x1f, 0x3a, 0xb6, 0x52, 0x7a, 0x97, 0xa0, 0x49, 0x7f, 0x03, 0x0f, 0xf5, 0xe4, - 0xbd, 0x92, 0x68, 0x82, 0x26, 0x7f, 0x9e, 0x8f, 0x07, 0xd6, 0xa9, 0xc8, 0xf2, 0xc4, 0x88, 0xae, - 0x42, 0x61, 0xe8, 0x5b, 0x87, 0xc3, 0x10, 0x8b, 0xcf, 0xf4, 0xa2, 0x09, 0x9a, 0xca, 0x3c, 0xf5, - 0x91, 0xe7, 0xe1, 0xbe, 0x38, 0x82, 0xcb, 0xe1, 0x99, 0xfb, 0x98, 0xb7, 0x5f, 0x85, 0x36, 0xf1, - 0x8f, 0x24, 0xae, 0x79, 0xb2, 0x73, 0x7b, 0x51, 0x7c, 0xbb, 0xba, 0xef, 0x93, 0x90, 0xec, 0x17, - 0x7f, 0x51, 0x2a, 0xef, 0xed, 0x1e, 0x1c, 0xd6, 0xd8, 0xc7, 0xa0, 0x6f, 0xfe, 0x33, 0x00, 0x00, - 0xff, 0xff, 0xdc, 0xb2, 0x46, 0x98, 0xe4, 0x3a, 0x00, 0x00, +func (x *Xml) GetVendorExtension() []*NamedAny { + if x != nil { + return x.VendorExtension + } + return nil +} + +var File_openapiv2_OpenAPIv2_proto protoreflect.FileDescriptor + +var file_openapiv2_OpenAPIv2_proto_rawDesc = []byte{ + 0x0a, 0x19, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x4f, 0x70, 0x65, 0x6e, + 0x41, 0x50, 0x49, 0x76, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x6d, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2c, + 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1a, 0x0a, 0x07, + 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, + 0x66, 0x22, 0x45, 0x0a, 0x03, 0x41, 0x6e, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0xab, 0x01, 0x0a, 0x0e, 0x41, 0x70, 0x69, + 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, + 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x1b, 0x42, 0x61, 0x73, 0x69, 0x63, + 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x10, + 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, + 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xde, 0x01, + 0x0a, 0x0d, 0x42, 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x3f, 0x0a, + 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, + 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x86, + 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x07, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x12, 0x49, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x5b, 0x0a, + 0x0b, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4c, 0x0a, 0x15, + 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xe8, 0x05, 0x0a, 0x08, 0x44, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x77, 0x61, 0x67, 0x67, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x77, 0x61, 0x67, 0x67, 0x65, + 0x72, 0x12, 0x24, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, + 0x61, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x62, 0x61, 0x73, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x61, + 0x74, 0x68, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x05, 0x70, 0x61, + 0x74, 0x68, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, + 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x12, 0x3d, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, + 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x52, 0x0a, 0x14, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x13, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x23, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x67, 0x52, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x3d, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x44, 0x6f, 0x63, 0x73, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, + 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x08, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x73, 0x12, 0x49, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x83, 0x01, 0x0a, + 0x0c, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, + 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0xff, 0x02, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x29, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x41, 0x6e, 0x79, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x0d, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x29, 0x0a, 0x07, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xab, 0x06, 0x0a, 0x1a, 0x46, 0x6f, 0x72, 0x6d, 0x44, 0x61, 0x74, + 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x6e, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x31, 0x0a, + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, + 0x69, 0x76, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x29, 0x0a, + 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, + 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, + 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, + 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, + 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, + 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1b, + 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, + 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x69, 0x71, + 0x75, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, + 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4f, + 0x66, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, + 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0xab, 0x05, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x31, 0x0a, 0x05, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x73, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x11, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x29, 0x0a, 0x07, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x2b, + 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, + 0x73, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, + 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x6d, + 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, + 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, + 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x69, 0x71, + 0x75, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, + 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4f, 0x66, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, + 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0xfd, 0x05, 0x0a, 0x18, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1a, 0x0a, + 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x31, 0x0a, 0x05, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2b, + 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x29, 0x0a, 0x07, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, + 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, + 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, + 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, + 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, + 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, + 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x6e, + 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, + 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x69, + 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, + 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, + 0x69, 0x71, 0x75, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1f, + 0x0a, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4f, 0x66, 0x12, + 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, + 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x57, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x15, 0x61, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xa1, 0x02, 0x0a, 0x04, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x5f, 0x6f, 0x66, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x74, 0x65, 0x72, 0x6d, 0x73, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2d, + 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x2d, 0x0a, + 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x63, 0x65, + 0x6e, 0x73, 0x65, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x10, + 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, + 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x37, 0x0a, + 0x09, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x06, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x44, 0x0a, 0x0d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x72, 0x65, 0x66, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x52, 0x65, 0x66, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x07, + 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3f, 0x0a, + 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, + 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x45, + 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4b, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x51, 0x0a, 0x0e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4f, 0x0a, 0x0d, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x50, 0x61, + 0x74, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4f, 0x0a, 0x0d, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x4b, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x6d, 0x0a, 0x1c, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x37, + 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x55, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb5, + 0x03, 0x0a, 0x10, 0x4e, 0x6f, 0x6e, 0x42, 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x12, 0x65, 0x0a, 0x1b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, + 0x52, 0x18, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x53, 0x75, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x6c, 0x0a, 0x1e, 0x66, 0x6f, + 0x72, 0x6d, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x46, 0x6f, 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x53, 0x75, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x1a, 0x66, 0x6f, + 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, + 0x75, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x62, 0x0a, 0x1a, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x5f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x48, 0x00, 0x52, 0x17, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x5f, 0x0a, 0x19, + 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x73, + 0x75, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x74, + 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x16, 0x70, 0x61, 0x74, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x07, 0x0a, + 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0xa1, 0x02, 0x0a, 0x18, 0x4f, 0x61, 0x75, 0x74, 0x68, + 0x32, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x30, 0x0a, 0x06, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x2b, 0x0a, + 0x11, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, + 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xf5, 0x01, 0x0a, 0x19, 0x4f, + 0x61, 0x75, 0x74, 0x68, 0x32, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, + 0x12, 0x30, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x61, + 0x75, 0x74, 0x68, 0x32, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, + 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x72, 0x6c, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, + 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0x82, 0x02, 0x0a, 0x16, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x49, 0x6d, 0x70, + 0x6c, 0x69, 0x63, 0x69, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, + 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xf2, 0x01, 0x0a, 0x16, 0x4f, 0x61, 0x75, 0x74, + 0x68, 0x32, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x53, 0x63, + 0x6f, 0x70, 0x65, 0x73, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x10, 0x76, + 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x0c, + 0x4f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x15, + 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x9e, 0x04, 0x0a, 0x09, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, + 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, + 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x33, + 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x18, 0x0a, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x0a, + 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, + 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0d, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, + 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x01, 0x0a, 0x09, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0e, 0x62, 0x6f, 0x64, + 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x42, + 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, + 0x62, 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x4c, 0x0a, + 0x12, 0x6e, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x6e, 0x42, 0x6f, 0x64, 0x79, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x6e, 0x6f, 0x6e, 0x42, 0x6f, + 0x64, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x6f, + 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x67, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x15, + 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x94, 0x01, + 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x35, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0e, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x73, 0x6f, + 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x6a, 0x73, + 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x6f, + 0x6e, 0x65, 0x6f, 0x66, 0x22, 0xcf, 0x03, 0x0a, 0x08, 0x50, 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x52, 0x65, 0x66, 0x12, 0x27, 0x0a, 0x03, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x67, 0x65, 0x74, 0x12, 0x27, 0x0a, + 0x03, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x03, 0x70, 0x75, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x70, 0x6f, 0x73, + 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x2f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x29, 0x0a, 0x04, 0x68, 0x65, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x2b, 0x0a, 0x05, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3a, 0x0a, 0x0a, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, + 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xfb, 0x05, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x68, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, + 0x31, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6d, + 0x69, 0x74, 0x69, 0x76, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, + 0x29, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, + 0x79, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, + 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x78, + 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, + 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, + 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, + 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, + 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x61, + 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x69, 0x6e, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, + 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x23, 0x0a, + 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x65, 0x6e, + 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x6f, + 0x66, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x65, 0x4f, 0x66, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x77, 0x0a, 0x05, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x3f, 0x0a, + 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, + 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2d, + 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x50, + 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x92, 0x05, + 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x31, 0x0a, + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, + 0x69, 0x76, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x29, 0x0a, + 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, + 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, + 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, + 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, + 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, + 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1b, + 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, + 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x69, 0x71, + 0x75, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, + 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, + 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4f, + 0x66, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, + 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0x5a, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x12, 0x4c, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, + 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xa8, + 0x06, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x53, 0x75, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x12, 0x31, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x12, 0x29, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, + 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, + 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, + 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, + 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, + 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x1d, 0x0a, + 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, + 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, + 0x79, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4f, 0x66, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, + 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xfe, 0x01, 0x0a, 0x08, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x2d, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, + 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, + 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x13, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x4e, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x14, 0x61, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x22, 0x90, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x73, 0x6f, + 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x6a, 0x73, + 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x6f, + 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x91, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, + 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x09, 0x0a, 0x06, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x52, 0x65, 0x66, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x6f, 0x66, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, + 0x4f, 0x66, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, + 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, + 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, + 0x76, 0x65, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x69, 0x6e, + 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, + 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, + 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, + 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, + 0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d, + 0x61, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, + 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, + 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, + 0x23, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, + 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x59, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, + 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x29, 0x0a, 0x06, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x66, + 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x4f, + 0x66, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, + 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, + 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x1b, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x21, 0x0a, 0x03, + 0x78, 0x6d, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x58, 0x6d, 0x6c, 0x52, 0x03, 0x78, 0x6d, 0x6c, 0x12, + 0x3d, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x63, 0x73, + 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, + 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x29, + 0x0a, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x79, + 0x52, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1f, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, + 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x7e, 0x0a, 0x0a, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x06, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x39, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x74, 0x0a, 0x13, 0x53, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x5d, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x22, 0xe9, 0x04, 0x0a, 0x17, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x6d, 0x0a, 0x1d, + 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x1b, + 0x62, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x10, 0x61, + 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x12, 0x5e, 0x0a, 0x18, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x5f, 0x69, 0x6d, + 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x49, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, + 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x16, 0x6f, 0x61, 0x75, + 0x74, 0x68, 0x32, 0x49, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x12, 0x5e, 0x0a, 0x18, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x5f, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x16, 0x6f, 0x61, 0x75, + 0x74, 0x68, 0x32, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x1b, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x5f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, + 0x00, 0x52, 0x19, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x65, 0x0a, 0x1b, + 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x61, 0x75, 0x74, 0x68, 0x32, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x18, 0x6f, 0x61, 0x75, 0x74, 0x68, + 0x32, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x68, 0x0a, 0x13, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x51, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x23, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x03, + 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0d, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, + 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x20, 0x0a, 0x08, 0x54, 0x79, 0x70, + 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5c, 0x0a, 0x0f, 0x56, + 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, + 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x6e, 0x79, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xc8, 0x01, 0x0a, 0x03, 0x58, 0x6d, + 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x10, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x3c, 0x0a, 0x0e, 0x6f, 0x72, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x5f, 0x76, 0x32, 0x42, 0x0c, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x50, 0x49, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x14, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, + 0x32, 0x3b, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x32, 0xa2, 0x02, 0x03, 0x4f, + 0x41, 0x53, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_openapiv2_OpenAPIv2_proto_rawDescOnce sync.Once + file_openapiv2_OpenAPIv2_proto_rawDescData = file_openapiv2_OpenAPIv2_proto_rawDesc +) + +func file_openapiv2_OpenAPIv2_proto_rawDescGZIP() []byte { + file_openapiv2_OpenAPIv2_proto_rawDescOnce.Do(func() { + file_openapiv2_OpenAPIv2_proto_rawDescData = protoimpl.X.CompressGZIP(file_openapiv2_OpenAPIv2_proto_rawDescData) + }) + return file_openapiv2_OpenAPIv2_proto_rawDescData +} + +var file_openapiv2_OpenAPIv2_proto_msgTypes = make([]protoimpl.MessageInfo, 60) +var file_openapiv2_OpenAPIv2_proto_goTypes = []interface{}{ + (*AdditionalPropertiesItem)(nil), // 0: openapi.v2.AdditionalPropertiesItem + (*Any)(nil), // 1: openapi.v2.Any + (*ApiKeySecurity)(nil), // 2: openapi.v2.ApiKeySecurity + (*BasicAuthenticationSecurity)(nil), // 3: openapi.v2.BasicAuthenticationSecurity + (*BodyParameter)(nil), // 4: openapi.v2.BodyParameter + (*Contact)(nil), // 5: openapi.v2.Contact + (*Default)(nil), // 6: openapi.v2.Default + (*Definitions)(nil), // 7: openapi.v2.Definitions + (*Document)(nil), // 8: openapi.v2.Document + (*Examples)(nil), // 9: openapi.v2.Examples + (*ExternalDocs)(nil), // 10: openapi.v2.ExternalDocs + (*FileSchema)(nil), // 11: openapi.v2.FileSchema + (*FormDataParameterSubSchema)(nil), // 12: openapi.v2.FormDataParameterSubSchema + (*Header)(nil), // 13: openapi.v2.Header + (*HeaderParameterSubSchema)(nil), // 14: openapi.v2.HeaderParameterSubSchema + (*Headers)(nil), // 15: openapi.v2.Headers + (*Info)(nil), // 16: openapi.v2.Info + (*ItemsItem)(nil), // 17: openapi.v2.ItemsItem + (*JsonReference)(nil), // 18: openapi.v2.JsonReference + (*License)(nil), // 19: openapi.v2.License + (*NamedAny)(nil), // 20: openapi.v2.NamedAny + (*NamedHeader)(nil), // 21: openapi.v2.NamedHeader + (*NamedParameter)(nil), // 22: openapi.v2.NamedParameter + (*NamedPathItem)(nil), // 23: openapi.v2.NamedPathItem + (*NamedResponse)(nil), // 24: openapi.v2.NamedResponse + (*NamedResponseValue)(nil), // 25: openapi.v2.NamedResponseValue + (*NamedSchema)(nil), // 26: openapi.v2.NamedSchema + (*NamedSecurityDefinitionsItem)(nil), // 27: openapi.v2.NamedSecurityDefinitionsItem + (*NamedString)(nil), // 28: openapi.v2.NamedString + (*NamedStringArray)(nil), // 29: openapi.v2.NamedStringArray + (*NonBodyParameter)(nil), // 30: openapi.v2.NonBodyParameter + (*Oauth2AccessCodeSecurity)(nil), // 31: openapi.v2.Oauth2AccessCodeSecurity + (*Oauth2ApplicationSecurity)(nil), // 32: openapi.v2.Oauth2ApplicationSecurity + (*Oauth2ImplicitSecurity)(nil), // 33: openapi.v2.Oauth2ImplicitSecurity + (*Oauth2PasswordSecurity)(nil), // 34: openapi.v2.Oauth2PasswordSecurity + (*Oauth2Scopes)(nil), // 35: openapi.v2.Oauth2Scopes + (*Operation)(nil), // 36: openapi.v2.Operation + (*Parameter)(nil), // 37: openapi.v2.Parameter + (*ParameterDefinitions)(nil), // 38: openapi.v2.ParameterDefinitions + (*ParametersItem)(nil), // 39: openapi.v2.ParametersItem + (*PathItem)(nil), // 40: openapi.v2.PathItem + (*PathParameterSubSchema)(nil), // 41: openapi.v2.PathParameterSubSchema + (*Paths)(nil), // 42: openapi.v2.Paths + (*PrimitivesItems)(nil), // 43: openapi.v2.PrimitivesItems + (*Properties)(nil), // 44: openapi.v2.Properties + (*QueryParameterSubSchema)(nil), // 45: openapi.v2.QueryParameterSubSchema + (*Response)(nil), // 46: openapi.v2.Response + (*ResponseDefinitions)(nil), // 47: openapi.v2.ResponseDefinitions + (*ResponseValue)(nil), // 48: openapi.v2.ResponseValue + (*Responses)(nil), // 49: openapi.v2.Responses + (*Schema)(nil), // 50: openapi.v2.Schema + (*SchemaItem)(nil), // 51: openapi.v2.SchemaItem + (*SecurityDefinitions)(nil), // 52: openapi.v2.SecurityDefinitions + (*SecurityDefinitionsItem)(nil), // 53: openapi.v2.SecurityDefinitionsItem + (*SecurityRequirement)(nil), // 54: openapi.v2.SecurityRequirement + (*StringArray)(nil), // 55: openapi.v2.StringArray + (*Tag)(nil), // 56: openapi.v2.Tag + (*TypeItem)(nil), // 57: openapi.v2.TypeItem + (*VendorExtension)(nil), // 58: openapi.v2.VendorExtension + (*Xml)(nil), // 59: openapi.v2.Xml + (*any.Any)(nil), // 60: google.protobuf.Any +} +var file_openapiv2_OpenAPIv2_proto_depIdxs = []int32{ + 50, // 0: openapi.v2.AdditionalPropertiesItem.schema:type_name -> openapi.v2.Schema + 60, // 1: openapi.v2.Any.value:type_name -> google.protobuf.Any + 20, // 2: openapi.v2.ApiKeySecurity.vendor_extension:type_name -> openapi.v2.NamedAny + 20, // 3: openapi.v2.BasicAuthenticationSecurity.vendor_extension:type_name -> openapi.v2.NamedAny + 50, // 4: openapi.v2.BodyParameter.schema:type_name -> openapi.v2.Schema + 20, // 5: openapi.v2.BodyParameter.vendor_extension:type_name -> openapi.v2.NamedAny + 20, // 6: openapi.v2.Contact.vendor_extension:type_name -> openapi.v2.NamedAny + 20, // 7: openapi.v2.Default.additional_properties:type_name -> openapi.v2.NamedAny + 26, // 8: openapi.v2.Definitions.additional_properties:type_name -> openapi.v2.NamedSchema + 16, // 9: openapi.v2.Document.info:type_name -> openapi.v2.Info + 42, // 10: openapi.v2.Document.paths:type_name -> openapi.v2.Paths + 7, // 11: openapi.v2.Document.definitions:type_name -> openapi.v2.Definitions + 38, // 12: openapi.v2.Document.parameters:type_name -> openapi.v2.ParameterDefinitions + 47, // 13: openapi.v2.Document.responses:type_name -> openapi.v2.ResponseDefinitions + 54, // 14: openapi.v2.Document.security:type_name -> openapi.v2.SecurityRequirement + 52, // 15: openapi.v2.Document.security_definitions:type_name -> openapi.v2.SecurityDefinitions + 56, // 16: openapi.v2.Document.tags:type_name -> openapi.v2.Tag + 10, // 17: openapi.v2.Document.external_docs:type_name -> openapi.v2.ExternalDocs + 20, // 18: openapi.v2.Document.vendor_extension:type_name -> openapi.v2.NamedAny + 20, // 19: openapi.v2.Examples.additional_properties:type_name -> openapi.v2.NamedAny + 20, // 20: openapi.v2.ExternalDocs.vendor_extension:type_name -> openapi.v2.NamedAny + 1, // 21: openapi.v2.FileSchema.default:type_name -> openapi.v2.Any + 10, // 22: openapi.v2.FileSchema.external_docs:type_name -> openapi.v2.ExternalDocs + 1, // 23: openapi.v2.FileSchema.example:type_name -> openapi.v2.Any + 20, // 24: openapi.v2.FileSchema.vendor_extension:type_name -> openapi.v2.NamedAny + 43, // 25: openapi.v2.FormDataParameterSubSchema.items:type_name -> openapi.v2.PrimitivesItems + 1, // 26: openapi.v2.FormDataParameterSubSchema.default:type_name -> openapi.v2.Any + 1, // 27: openapi.v2.FormDataParameterSubSchema.enum:type_name -> openapi.v2.Any + 20, // 28: openapi.v2.FormDataParameterSubSchema.vendor_extension:type_name -> openapi.v2.NamedAny + 43, // 29: openapi.v2.Header.items:type_name -> openapi.v2.PrimitivesItems + 1, // 30: openapi.v2.Header.default:type_name -> openapi.v2.Any + 1, // 31: openapi.v2.Header.enum:type_name -> openapi.v2.Any + 20, // 32: openapi.v2.Header.vendor_extension:type_name -> openapi.v2.NamedAny + 43, // 33: openapi.v2.HeaderParameterSubSchema.items:type_name -> openapi.v2.PrimitivesItems + 1, // 34: openapi.v2.HeaderParameterSubSchema.default:type_name -> openapi.v2.Any + 1, // 35: openapi.v2.HeaderParameterSubSchema.enum:type_name -> openapi.v2.Any + 20, // 36: openapi.v2.HeaderParameterSubSchema.vendor_extension:type_name -> openapi.v2.NamedAny + 21, // 37: openapi.v2.Headers.additional_properties:type_name -> openapi.v2.NamedHeader + 5, // 38: openapi.v2.Info.contact:type_name -> openapi.v2.Contact + 19, // 39: openapi.v2.Info.license:type_name -> openapi.v2.License + 20, // 40: openapi.v2.Info.vendor_extension:type_name -> openapi.v2.NamedAny + 50, // 41: openapi.v2.ItemsItem.schema:type_name -> openapi.v2.Schema + 20, // 42: openapi.v2.License.vendor_extension:type_name -> openapi.v2.NamedAny + 1, // 43: openapi.v2.NamedAny.value:type_name -> openapi.v2.Any + 13, // 44: openapi.v2.NamedHeader.value:type_name -> openapi.v2.Header + 37, // 45: openapi.v2.NamedParameter.value:type_name -> openapi.v2.Parameter + 40, // 46: openapi.v2.NamedPathItem.value:type_name -> openapi.v2.PathItem + 46, // 47: openapi.v2.NamedResponse.value:type_name -> openapi.v2.Response + 48, // 48: openapi.v2.NamedResponseValue.value:type_name -> openapi.v2.ResponseValue + 50, // 49: openapi.v2.NamedSchema.value:type_name -> openapi.v2.Schema + 53, // 50: openapi.v2.NamedSecurityDefinitionsItem.value:type_name -> openapi.v2.SecurityDefinitionsItem + 55, // 51: openapi.v2.NamedStringArray.value:type_name -> openapi.v2.StringArray + 14, // 52: openapi.v2.NonBodyParameter.header_parameter_sub_schema:type_name -> openapi.v2.HeaderParameterSubSchema + 12, // 53: openapi.v2.NonBodyParameter.form_data_parameter_sub_schema:type_name -> openapi.v2.FormDataParameterSubSchema + 45, // 54: openapi.v2.NonBodyParameter.query_parameter_sub_schema:type_name -> openapi.v2.QueryParameterSubSchema + 41, // 55: openapi.v2.NonBodyParameter.path_parameter_sub_schema:type_name -> openapi.v2.PathParameterSubSchema + 35, // 56: openapi.v2.Oauth2AccessCodeSecurity.scopes:type_name -> openapi.v2.Oauth2Scopes + 20, // 57: openapi.v2.Oauth2AccessCodeSecurity.vendor_extension:type_name -> openapi.v2.NamedAny + 35, // 58: openapi.v2.Oauth2ApplicationSecurity.scopes:type_name -> openapi.v2.Oauth2Scopes + 20, // 59: openapi.v2.Oauth2ApplicationSecurity.vendor_extension:type_name -> openapi.v2.NamedAny + 35, // 60: openapi.v2.Oauth2ImplicitSecurity.scopes:type_name -> openapi.v2.Oauth2Scopes + 20, // 61: openapi.v2.Oauth2ImplicitSecurity.vendor_extension:type_name -> openapi.v2.NamedAny + 35, // 62: openapi.v2.Oauth2PasswordSecurity.scopes:type_name -> openapi.v2.Oauth2Scopes + 20, // 63: openapi.v2.Oauth2PasswordSecurity.vendor_extension:type_name -> openapi.v2.NamedAny + 28, // 64: openapi.v2.Oauth2Scopes.additional_properties:type_name -> openapi.v2.NamedString + 10, // 65: openapi.v2.Operation.external_docs:type_name -> openapi.v2.ExternalDocs + 39, // 66: openapi.v2.Operation.parameters:type_name -> openapi.v2.ParametersItem + 49, // 67: openapi.v2.Operation.responses:type_name -> openapi.v2.Responses + 54, // 68: openapi.v2.Operation.security:type_name -> openapi.v2.SecurityRequirement + 20, // 69: openapi.v2.Operation.vendor_extension:type_name -> openapi.v2.NamedAny + 4, // 70: openapi.v2.Parameter.body_parameter:type_name -> openapi.v2.BodyParameter + 30, // 71: openapi.v2.Parameter.non_body_parameter:type_name -> openapi.v2.NonBodyParameter + 22, // 72: openapi.v2.ParameterDefinitions.additional_properties:type_name -> openapi.v2.NamedParameter + 37, // 73: openapi.v2.ParametersItem.parameter:type_name -> openapi.v2.Parameter + 18, // 74: openapi.v2.ParametersItem.json_reference:type_name -> openapi.v2.JsonReference + 36, // 75: openapi.v2.PathItem.get:type_name -> openapi.v2.Operation + 36, // 76: openapi.v2.PathItem.put:type_name -> openapi.v2.Operation + 36, // 77: openapi.v2.PathItem.post:type_name -> openapi.v2.Operation + 36, // 78: openapi.v2.PathItem.delete:type_name -> openapi.v2.Operation + 36, // 79: openapi.v2.PathItem.options:type_name -> openapi.v2.Operation + 36, // 80: openapi.v2.PathItem.head:type_name -> openapi.v2.Operation + 36, // 81: openapi.v2.PathItem.patch:type_name -> openapi.v2.Operation + 39, // 82: openapi.v2.PathItem.parameters:type_name -> openapi.v2.ParametersItem + 20, // 83: openapi.v2.PathItem.vendor_extension:type_name -> openapi.v2.NamedAny + 43, // 84: openapi.v2.PathParameterSubSchema.items:type_name -> openapi.v2.PrimitivesItems + 1, // 85: openapi.v2.PathParameterSubSchema.default:type_name -> openapi.v2.Any + 1, // 86: openapi.v2.PathParameterSubSchema.enum:type_name -> openapi.v2.Any + 20, // 87: openapi.v2.PathParameterSubSchema.vendor_extension:type_name -> openapi.v2.NamedAny + 20, // 88: openapi.v2.Paths.vendor_extension:type_name -> openapi.v2.NamedAny + 23, // 89: openapi.v2.Paths.path:type_name -> openapi.v2.NamedPathItem + 43, // 90: openapi.v2.PrimitivesItems.items:type_name -> openapi.v2.PrimitivesItems + 1, // 91: openapi.v2.PrimitivesItems.default:type_name -> openapi.v2.Any + 1, // 92: openapi.v2.PrimitivesItems.enum:type_name -> openapi.v2.Any + 20, // 93: openapi.v2.PrimitivesItems.vendor_extension:type_name -> openapi.v2.NamedAny + 26, // 94: openapi.v2.Properties.additional_properties:type_name -> openapi.v2.NamedSchema + 43, // 95: openapi.v2.QueryParameterSubSchema.items:type_name -> openapi.v2.PrimitivesItems + 1, // 96: openapi.v2.QueryParameterSubSchema.default:type_name -> openapi.v2.Any + 1, // 97: openapi.v2.QueryParameterSubSchema.enum:type_name -> openapi.v2.Any + 20, // 98: openapi.v2.QueryParameterSubSchema.vendor_extension:type_name -> openapi.v2.NamedAny + 51, // 99: openapi.v2.Response.schema:type_name -> openapi.v2.SchemaItem + 15, // 100: openapi.v2.Response.headers:type_name -> openapi.v2.Headers + 9, // 101: openapi.v2.Response.examples:type_name -> openapi.v2.Examples + 20, // 102: openapi.v2.Response.vendor_extension:type_name -> openapi.v2.NamedAny + 24, // 103: openapi.v2.ResponseDefinitions.additional_properties:type_name -> openapi.v2.NamedResponse + 46, // 104: openapi.v2.ResponseValue.response:type_name -> openapi.v2.Response + 18, // 105: openapi.v2.ResponseValue.json_reference:type_name -> openapi.v2.JsonReference + 25, // 106: openapi.v2.Responses.response_code:type_name -> openapi.v2.NamedResponseValue + 20, // 107: openapi.v2.Responses.vendor_extension:type_name -> openapi.v2.NamedAny + 1, // 108: openapi.v2.Schema.default:type_name -> openapi.v2.Any + 1, // 109: openapi.v2.Schema.enum:type_name -> openapi.v2.Any + 0, // 110: openapi.v2.Schema.additional_properties:type_name -> openapi.v2.AdditionalPropertiesItem + 57, // 111: openapi.v2.Schema.type:type_name -> openapi.v2.TypeItem + 17, // 112: openapi.v2.Schema.items:type_name -> openapi.v2.ItemsItem + 50, // 113: openapi.v2.Schema.all_of:type_name -> openapi.v2.Schema + 44, // 114: openapi.v2.Schema.properties:type_name -> openapi.v2.Properties + 59, // 115: openapi.v2.Schema.xml:type_name -> openapi.v2.Xml + 10, // 116: openapi.v2.Schema.external_docs:type_name -> openapi.v2.ExternalDocs + 1, // 117: openapi.v2.Schema.example:type_name -> openapi.v2.Any + 20, // 118: openapi.v2.Schema.vendor_extension:type_name -> openapi.v2.NamedAny + 50, // 119: openapi.v2.SchemaItem.schema:type_name -> openapi.v2.Schema + 11, // 120: openapi.v2.SchemaItem.file_schema:type_name -> openapi.v2.FileSchema + 27, // 121: openapi.v2.SecurityDefinitions.additional_properties:type_name -> openapi.v2.NamedSecurityDefinitionsItem + 3, // 122: openapi.v2.SecurityDefinitionsItem.basic_authentication_security:type_name -> openapi.v2.BasicAuthenticationSecurity + 2, // 123: openapi.v2.SecurityDefinitionsItem.api_key_security:type_name -> openapi.v2.ApiKeySecurity + 33, // 124: openapi.v2.SecurityDefinitionsItem.oauth2_implicit_security:type_name -> openapi.v2.Oauth2ImplicitSecurity + 34, // 125: openapi.v2.SecurityDefinitionsItem.oauth2_password_security:type_name -> openapi.v2.Oauth2PasswordSecurity + 32, // 126: openapi.v2.SecurityDefinitionsItem.oauth2_application_security:type_name -> openapi.v2.Oauth2ApplicationSecurity + 31, // 127: openapi.v2.SecurityDefinitionsItem.oauth2_access_code_security:type_name -> openapi.v2.Oauth2AccessCodeSecurity + 29, // 128: openapi.v2.SecurityRequirement.additional_properties:type_name -> openapi.v2.NamedStringArray + 10, // 129: openapi.v2.Tag.external_docs:type_name -> openapi.v2.ExternalDocs + 20, // 130: openapi.v2.Tag.vendor_extension:type_name -> openapi.v2.NamedAny + 20, // 131: openapi.v2.VendorExtension.additional_properties:type_name -> openapi.v2.NamedAny + 20, // 132: openapi.v2.Xml.vendor_extension:type_name -> openapi.v2.NamedAny + 133, // [133:133] is the sub-list for method output_type + 133, // [133:133] is the sub-list for method input_type + 133, // [133:133] is the sub-list for extension type_name + 133, // [133:133] is the sub-list for extension extendee + 0, // [0:133] is the sub-list for field type_name +} + +func init() { file_openapiv2_OpenAPIv2_proto_init() } +func file_openapiv2_OpenAPIv2_proto_init() { + if File_openapiv2_OpenAPIv2_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_openapiv2_OpenAPIv2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AdditionalPropertiesItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Any); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApiKeySecurity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BasicAuthenticationSecurity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BodyParameter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Contact); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Default); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Definitions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Document); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Examples); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExternalDocs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileSchema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FormDataParameterSubSchema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Header); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HeaderParameterSubSchema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Headers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Info); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ItemsItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JsonReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*License); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedAny); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedParameter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedPathItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedResponseValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedSchema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedSecurityDefinitionsItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedStringArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NonBodyParameter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Oauth2AccessCodeSecurity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Oauth2ApplicationSecurity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Oauth2ImplicitSecurity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Oauth2PasswordSecurity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Oauth2Scopes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Operation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Parameter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParameterDefinitions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParametersItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PathItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PathParameterSubSchema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Paths); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PrimitivesItems); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Properties); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParameterSubSchema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Response); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResponseDefinitions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResponseValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Responses); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Schema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SchemaItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecurityDefinitions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecurityDefinitionsItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecurityRequirement); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StringArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tag); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TypeItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VendorExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Xml); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_openapiv2_OpenAPIv2_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*AdditionalPropertiesItem_Schema)(nil), + (*AdditionalPropertiesItem_Boolean)(nil), + } + file_openapiv2_OpenAPIv2_proto_msgTypes[30].OneofWrappers = []interface{}{ + (*NonBodyParameter_HeaderParameterSubSchema)(nil), + (*NonBodyParameter_FormDataParameterSubSchema)(nil), + (*NonBodyParameter_QueryParameterSubSchema)(nil), + (*NonBodyParameter_PathParameterSubSchema)(nil), + } + file_openapiv2_OpenAPIv2_proto_msgTypes[37].OneofWrappers = []interface{}{ + (*Parameter_BodyParameter)(nil), + (*Parameter_NonBodyParameter)(nil), + } + file_openapiv2_OpenAPIv2_proto_msgTypes[39].OneofWrappers = []interface{}{ + (*ParametersItem_Parameter)(nil), + (*ParametersItem_JsonReference)(nil), + } + file_openapiv2_OpenAPIv2_proto_msgTypes[48].OneofWrappers = []interface{}{ + (*ResponseValue_Response)(nil), + (*ResponseValue_JsonReference)(nil), + } + file_openapiv2_OpenAPIv2_proto_msgTypes[51].OneofWrappers = []interface{}{ + (*SchemaItem_Schema)(nil), + (*SchemaItem_FileSchema)(nil), + } + file_openapiv2_OpenAPIv2_proto_msgTypes[53].OneofWrappers = []interface{}{ + (*SecurityDefinitionsItem_BasicAuthenticationSecurity)(nil), + (*SecurityDefinitionsItem_ApiKeySecurity)(nil), + (*SecurityDefinitionsItem_Oauth2ImplicitSecurity)(nil), + (*SecurityDefinitionsItem_Oauth2PasswordSecurity)(nil), + (*SecurityDefinitionsItem_Oauth2ApplicationSecurity)(nil), + (*SecurityDefinitionsItem_Oauth2AccessCodeSecurity)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_openapiv2_OpenAPIv2_proto_rawDesc, + NumEnums: 0, + NumMessages: 60, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_openapiv2_OpenAPIv2_proto_goTypes, + DependencyIndexes: file_openapiv2_OpenAPIv2_proto_depIdxs, + MessageInfos: file_openapiv2_OpenAPIv2_proto_msgTypes, + }.Build() + File_openapiv2_OpenAPIv2_proto = out.File + file_openapiv2_OpenAPIv2_proto_rawDesc = nil + file_openapiv2_OpenAPIv2_proto_goTypes = nil + file_openapiv2_OpenAPIv2_proto_depIdxs = nil } diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.proto b/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.proto index 557c88072..00ac1b0a0 100644 --- a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.proto +++ b/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. All Rights Reserved. +// Copyright 2020 Google LLC. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -41,6 +41,9 @@ option java_package = "org.openapi_v2"; // the future. 'GPB' is reserved for the protocol buffer implementation itself. option objc_class_prefix = "OAS"; +// The Go package name. +option go_package = "openapiv2;openapi_v2"; + message AdditionalPropertiesItem { oneof oneof { Schema schema = 1; @@ -553,7 +556,7 @@ message Response { repeated NamedAny vendor_extension = 5; } -// One or more JSON representations for parameters +// One or more JSON representations for responses message ResponseDefinitions { repeated NamedResponse additional_properties = 1; } diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/README.md b/vendor/github.com/googleapis/gnostic/openapiv2/README.md index 836fb32a7..5276128d3 100644 --- a/vendor/github.com/googleapis/gnostic/openapiv2/README.md +++ b/vendor/github.com/googleapis/gnostic/openapiv2/README.md @@ -1,16 +1,14 @@ # OpenAPI v2 Protocol Buffer Models -This directory contains a Protocol Buffer-language model -and related code for supporting OpenAPI v2. +This directory contains a Protocol Buffer-language model and related code for +supporting OpenAPI v2. -Gnostic applications and plugins can use OpenAPIv2.proto -to generate Protocol Buffer support code for their preferred languages. +Gnostic applications and plugins can use OpenAPIv2.proto to generate Protocol +Buffer support code for their preferred languages. -OpenAPIv2.go is used by Gnostic to read JSON and YAML OpenAPI -descriptions into the Protocol Buffer-based datastructures -generated from OpenAPIv2.proto. +OpenAPIv2.go is used by Gnostic to read JSON and YAML OpenAPI descriptions into +the Protocol Buffer-based datastructures generated from OpenAPIv2.proto. -OpenAPIv2.proto and OpenAPIv2.go are generated by the Gnostic -compiler generator, and OpenAPIv2.pb.go is generated by -protoc, the Protocol Buffer compiler, and protoc-gen-go, the -Protocol Buffer Go code generation plugin. +OpenAPIv2.proto and OpenAPIv2.go are generated by the Gnostic compiler +generator, and OpenAPIv2.pb.go is generated by protoc, the Protocol Buffer +compiler, and protoc-gen-go, the Protocol Buffer Go code generation plugin. diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/document.go b/vendor/github.com/googleapis/gnostic/openapiv2/document.go new file mode 100644 index 000000000..ddeed5c89 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/openapiv2/document.go @@ -0,0 +1,26 @@ +// Copyright 2020 Google LLC. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package openapi_v2 + +import "github.com/googleapis/gnostic/compiler" + +// ParseDocument reads an OpenAPI v2 description from a YAML/JSON representation. +func ParseDocument(b []byte) (*Document, error) { + info, err := compiler.ReadInfoFromBytes("", b) + if err != nil { + return nil, err + } + return NewDocument(info.Content[0], compiler.NewContextWithExtensions("$root", nil, nil)) +} diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/openapi-2.0.json b/vendor/github.com/googleapis/gnostic/openapiv2/openapi-2.0.json index 2815a26ea..afa12b79b 100644 --- a/vendor/github.com/googleapis/gnostic/openapiv2/openapi-2.0.json +++ b/vendor/github.com/googleapis/gnostic/openapiv2/openapi-2.0.json @@ -203,7 +203,7 @@ "additionalProperties": { "$ref": "#/definitions/response" }, - "description": "One or more JSON representations for parameters" + "description": "One or more JSON representations for responses" }, "externalDocs": { "type": "object", @@ -1607,4 +1607,4 @@ } } } -} +} \ No newline at end of file diff --git a/vendor/github.com/hashicorp/golang-lru/go.mod b/vendor/github.com/hashicorp/golang-lru/go.mod index 824cb97e8..8ad8826b3 100644 --- a/vendor/github.com/hashicorp/golang-lru/go.mod +++ b/vendor/github.com/hashicorp/golang-lru/go.mod @@ -1 +1,3 @@ module github.com/hashicorp/golang-lru + +go 1.12 diff --git a/vendor/github.com/hashicorp/golang-lru/lru.go b/vendor/github.com/hashicorp/golang-lru/lru.go index 1cbe04b7d..4e5e9d8fd 100644 --- a/vendor/github.com/hashicorp/golang-lru/lru.go +++ b/vendor/github.com/hashicorp/golang-lru/lru.go @@ -37,7 +37,7 @@ func (c *Cache) Purge() { c.lock.Unlock() } -// Add adds a value to the cache. Returns true if an eviction occurred. +// Add adds a value to the cache. Returns true if an eviction occurred. func (c *Cache) Add(key, value interface{}) (evicted bool) { c.lock.Lock() evicted = c.lru.Add(key, value) @@ -71,8 +71,8 @@ func (c *Cache) Peek(key interface{}) (value interface{}, ok bool) { return value, ok } -// ContainsOrAdd checks if a key is in the cache without updating the -// recent-ness or deleting it for being stale, and if not, adds the value. +// ContainsOrAdd checks if a key is in the cache without updating the +// recent-ness or deleting it for being stale, and if not, adds the value. // Returns whether found and whether an eviction occurred. func (c *Cache) ContainsOrAdd(key, value interface{}) (ok, evicted bool) { c.lock.Lock() @@ -85,18 +85,52 @@ func (c *Cache) ContainsOrAdd(key, value interface{}) (ok, evicted bool) { return false, evicted } +// PeekOrAdd checks if a key is in the cache without updating the +// recent-ness or deleting it for being stale, and if not, adds the value. +// Returns whether found and whether an eviction occurred. +func (c *Cache) PeekOrAdd(key, value interface{}) (previous interface{}, ok, evicted bool) { + c.lock.Lock() + defer c.lock.Unlock() + + previous, ok = c.lru.Peek(key) + if ok { + return previous, true, false + } + + evicted = c.lru.Add(key, value) + return nil, false, evicted +} + // Remove removes the provided key from the cache. -func (c *Cache) Remove(key interface{}) { +func (c *Cache) Remove(key interface{}) (present bool) { c.lock.Lock() - c.lru.Remove(key) + present = c.lru.Remove(key) c.lock.Unlock() + return +} + +// Resize changes the cache size. +func (c *Cache) Resize(size int) (evicted int) { + c.lock.Lock() + evicted = c.lru.Resize(size) + c.lock.Unlock() + return evicted } // RemoveOldest removes the oldest item from the cache. -func (c *Cache) RemoveOldest() { +func (c *Cache) RemoveOldest() (key interface{}, value interface{}, ok bool) { + c.lock.Lock() + key, value, ok = c.lru.RemoveOldest() + c.lock.Unlock() + return +} + +// GetOldest returns the oldest entry +func (c *Cache) GetOldest() (key interface{}, value interface{}, ok bool) { c.lock.Lock() - c.lru.RemoveOldest() + key, value, ok = c.lru.GetOldest() c.lock.Unlock() + return } // Keys returns a slice of the keys in the cache, from oldest to newest. diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go index 5673773b2..a86c8539e 100644 --- a/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go +++ b/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go @@ -73,6 +73,9 @@ func (c *LRU) Add(key, value interface{}) (evicted bool) { func (c *LRU) Get(key interface{}) (value interface{}, ok bool) { if ent, ok := c.items[key]; ok { c.evictList.MoveToFront(ent) + if ent.Value.(*entry) == nil { + return nil, false + } return ent.Value.(*entry).value, true } return @@ -142,6 +145,19 @@ func (c *LRU) Len() int { return c.evictList.Len() } +// Resize changes the cache size. +func (c *LRU) Resize(size int) (evicted int) { + diff := c.Len() - size + if diff < 0 { + diff = 0 + } + for i := 0; i < diff; i++ { + c.removeOldest() + } + c.size = size + return diff +} + // removeOldest removes the oldest item from the cache. func (c *LRU) removeOldest() { ent := c.evictList.Back() diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go index 74c707744..92d70934d 100644 --- a/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go +++ b/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go @@ -10,7 +10,7 @@ type LRUCache interface { // updates the "recently used"-ness of the key. #value, isFound Get(key interface{}) (value interface{}, ok bool) - // Check if a key exsists in cache without updating the recent-ness. + // Checks if a key exists in cache without updating the recent-ness. Contains(key interface{}) (ok bool) // Returns key's value without updating the "recently used"-ness of the key. @@ -31,6 +31,9 @@ type LRUCache interface { // Returns the number of items in the cache. Len() int - // Clear all cache entries + // Clears all cache entries. Purge() + + // Resizes cache, returning number evicted + Resize(int) int } diff --git a/vendor/github.com/imdario/mergo/.deepsource.toml b/vendor/github.com/imdario/mergo/.deepsource.toml new file mode 100644 index 000000000..8a0681af8 --- /dev/null +++ b/vendor/github.com/imdario/mergo/.deepsource.toml @@ -0,0 +1,12 @@ +version = 1 + +test_patterns = [ + "*_test.go" +] + +[[analyzers]] +name = "go" +enabled = true + + [analyzers.meta] + import_path = "github.com/imdario/mergo" \ No newline at end of file diff --git a/vendor/github.com/imdario/mergo/README.md b/vendor/github.com/imdario/mergo/README.md index 02fc81e06..075b4d78e 100644 --- a/vendor/github.com/imdario/mergo/README.md +++ b/vendor/github.com/imdario/mergo/README.md @@ -2,6 +2,8 @@ A helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements. +Mergo merges same-type structs and maps by setting default values in zero-value fields. Mergo won't merge unexported (private) fields. It will do recursively any exported one. It also won't merge structs inside maps (because they are not addressable using Go reflection). + Also a lovely [comune](http://en.wikipedia.org/wiki/Mergo) (municipality) in the Province of Ancona in the Italian region of Marche. ## Status @@ -9,36 +11,37 @@ Also a lovely [comune](http://en.wikipedia.org/wiki/Mergo) (municipality) in the It is ready for production use. [It is used in several projects by Docker, Google, The Linux Foundation, VMWare, Shopify, etc](https://github.com/imdario/mergo#mergo-in-the-wild). [![GoDoc][3]][4] -[![GoCard][5]][6] +[![GitHub release][5]][6] +[![GoCard][7]][8] [![Build Status][1]][2] -[![Coverage Status][7]][8] -[![Sourcegraph][9]][10] +[![Coverage Status][9]][10] +[![Sourcegraph][11]][12] [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fimdario%2Fmergo.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fimdario%2Fmergo?ref=badge_shield) [1]: https://travis-ci.org/imdario/mergo.png [2]: https://travis-ci.org/imdario/mergo [3]: https://godoc.org/github.com/imdario/mergo?status.svg [4]: https://godoc.org/github.com/imdario/mergo -[5]: https://goreportcard.com/badge/imdario/mergo -[6]: https://goreportcard.com/report/github.com/imdario/mergo -[7]: https://coveralls.io/repos/github/imdario/mergo/badge.svg?branch=master -[8]: https://coveralls.io/github/imdario/mergo?branch=master -[9]: https://sourcegraph.com/github.com/imdario/mergo/-/badge.svg -[10]: https://sourcegraph.com/github.com/imdario/mergo?badge - -### Latest release - -[Release v0.3.7](https://github.com/imdario/mergo/releases/tag/v0.3.7). +[5]: https://img.shields.io/github/release/imdario/mergo.svg +[6]: https://github.com/imdario/mergo/releases +[7]: https://goreportcard.com/badge/imdario/mergo +[8]: https://goreportcard.com/report/github.com/imdario/mergo +[9]: https://coveralls.io/repos/github/imdario/mergo/badge.svg?branch=master +[10]: https://coveralls.io/github/imdario/mergo?branch=master +[11]: https://sourcegraph.com/github.com/imdario/mergo/-/badge.svg +[12]: https://sourcegraph.com/github.com/imdario/mergo?badge ### Important note -Please keep in mind that in [0.3.2](//github.com/imdario/mergo/releases/tag/0.3.2) Mergo changed `Merge()`and `Map()` signatures to support [transformers](#transformers). An optional/variadic argument has been added, so it won't break existing code. +Please keep in mind that a problematic PR broke [0.3.9](//github.com/imdario/mergo/releases/tag/0.3.9). I reverted it in [0.3.10](//github.com/imdario/mergo/releases/tag/0.3.10), and I consider it stable but not bug-free. Also, this version adds suppot for go modules. -If you were using Mergo **before** April 6th 2015, please check your project works as intended after updating your local copy with ```go get -u github.com/imdario/mergo```. I apologize for any issue caused by its previous behavior and any future bug that Mergo could cause (I hope it won't!) in existing projects after the change (release 0.2.0). +Keep in mind that in [0.3.2](//github.com/imdario/mergo/releases/tag/0.3.2), Mergo changed `Merge()`and `Map()` signatures to support [transformers](#transformers). I added an optional/variadic argument so that it won't break the existing code. + +If you were using Mergo before April 6th, 2015, please check your project works as intended after updating your local copy with ```go get -u github.com/imdario/mergo```. I apologize for any issue caused by its previous behavior and any future bug that Mergo could cause in existing projects after the change (release 0.2.0). ### Donations -If Mergo is useful to you, consider buying me a coffee, a beer or making a monthly donation so I can keep building great free software. :heart_eyes: +If Mergo is useful to you, consider buying me a coffee, a beer, or making a monthly donation to allow me to keep building great free software. :heart_eyes: Buy Me a Coffee at ko-fi.com [![Beerpay](https://beerpay.io/imdario/mergo/badge.svg)](https://beerpay.io/imdario/mergo) @@ -87,8 +90,9 @@ If Mergo is useful to you, consider buying me a coffee, a beer or making a month - [mantasmatelis/whooplist-server](https://github.com/mantasmatelis/whooplist-server) - [jnuthong/item_search](https://github.com/jnuthong/item_search) - [bukalapak/snowboard](https://github.com/bukalapak/snowboard) +- [janoszen/containerssh](https://github.com/janoszen/containerssh) -## Installation +## Install go get github.com/imdario/mergo @@ -99,7 +103,7 @@ If Mergo is useful to you, consider buying me a coffee, a beer or making a month ## Usage -You can only merge same-type structs with exported fields initialized as zero value of their type and same-types maps. Mergo won't merge unexported (private) fields but will do recursively any exported one. It won't merge empty structs value as [they are not considered zero values](https://golang.org/ref/spec#The_zero_value) either. Also maps will be merged recursively except for structs inside maps (because they are not addressable using Go reflection). +You can only merge same-type structs with exported fields initialized as zero value of their type and same-types maps. Mergo won't merge unexported (private) fields but will do recursively any exported one. It won't merge empty structs value as [they are zero values](https://golang.org/ref/spec#The_zero_value) too. Also, maps will be merged recursively except for structs inside maps (because they are not addressable using Go reflection). ```go if err := mergo.Merge(&dst, src); err != nil { @@ -125,9 +129,7 @@ if err := mergo.Map(&dst, srcMap); err != nil { Warning: if you map a struct to map, it won't do it recursively. Don't expect Mergo to map struct members of your struct as `map[string]interface{}`. They will be just assigned as values. -More information and examples in [godoc documentation](http://godoc.org/github.com/imdario/mergo). - -### Nice example +Here is a nice example: ```go package main @@ -175,10 +177,10 @@ import ( "time" ) -type timeTransfomer struct { +type timeTransformer struct { } -func (t timeTransfomer) Transformer(typ reflect.Type) func(dst, src reflect.Value) error { +func (t timeTransformer) Transformer(typ reflect.Type) func(dst, src reflect.Value) error { if typ == reflect.TypeOf(time.Time{}) { return func(dst, src reflect.Value) error { if dst.CanSet() { @@ -202,7 +204,7 @@ type Snapshot struct { func main() { src := Snapshot{time.Now()} dest := Snapshot{} - mergo.Merge(&dest, src, mergo.WithTransformers(timeTransfomer{})) + mergo.Merge(&dest, src, mergo.WithTransformers(timeTransformer{})) fmt.Println(dest) // Will print // { 2018-01-12 01:15:00 +0000 UTC m=+0.000000001 } diff --git a/vendor/github.com/imdario/mergo/doc.go b/vendor/github.com/imdario/mergo/doc.go index 6e9aa7baf..fcd985f99 100644 --- a/vendor/github.com/imdario/mergo/doc.go +++ b/vendor/github.com/imdario/mergo/doc.go @@ -4,41 +4,140 @@ // license that can be found in the LICENSE file. /* -Package mergo merges same-type structs and maps by setting default values in zero-value fields. +A helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements. -Mergo won't merge unexported (private) fields but will do recursively any exported one. It also won't merge structs inside maps (because they are not addressable using Go reflection). +Mergo merges same-type structs and maps by setting default values in zero-value fields. Mergo won't merge unexported (private) fields. It will do recursively any exported one. It also won't merge structs inside maps (because they are not addressable using Go reflection). + +Status + +It is ready for production use. It is used in several projects by Docker, Google, The Linux Foundation, VMWare, Shopify, etc. + +Important note + +Please keep in mind that a problematic PR broke 0.3.9. We reverted it in 0.3.10. We consider 0.3.10 as stable but not bug-free. . Also, this version adds suppot for go modules. + +Keep in mind that in 0.3.2, Mergo changed Merge() and Map() signatures to support transformers. We added an optional/variadic argument so that it won't break the existing code. + +If you were using Mergo before April 6th, 2015, please check your project works as intended after updating your local copy with go get -u github.com/imdario/mergo. I apologize for any issue caused by its previous behavior and any future bug that Mergo could cause in existing projects after the change (release 0.2.0). + +Install + +Do your usual installation procedure: + + go get github.com/imdario/mergo + + // use in your .go code + import ( + "github.com/imdario/mergo" + ) Usage -From my own work-in-progress project: +You can only merge same-type structs with exported fields initialized as zero value of their type and same-types maps. Mergo won't merge unexported (private) fields but will do recursively any exported one. It won't merge empty structs value as they are zero values too. Also, maps will be merged recursively except for structs inside maps (because they are not addressable using Go reflection). + + if err := mergo.Merge(&dst, src); err != nil { + // ... + } + +Also, you can merge overwriting values using the transformer WithOverride. + + if err := mergo.Merge(&dst, src, mergo.WithOverride); err != nil { + // ... + } + +Additionally, you can map a map[string]interface{} to a struct (and otherwise, from struct to map), following the same restrictions as in Merge(). Keys are capitalized to find each corresponding exported field. + + if err := mergo.Map(&dst, srcMap); err != nil { + // ... + } + +Warning: if you map a struct to map, it won't do it recursively. Don't expect Mergo to map struct members of your struct as map[string]interface{}. They will be just assigned as values. + +Here is a nice example: + + package main + + import ( + "fmt" + "github.com/imdario/mergo" + ) - type networkConfig struct { - Protocol string - Address string - ServerType string `json: "server_type"` - Port uint16 + type Foo struct { + A string + B int64 } - type FssnConfig struct { - Network networkConfig + func main() { + src := Foo{ + A: "one", + B: 2, + } + dest := Foo{ + A: "two", + } + mergo.Merge(&dest, src) + fmt.Println(dest) + // Will print + // {two 2} } - var fssnDefault = FssnConfig { - networkConfig { - "tcp", - "127.0.0.1", - "http", - 31560, - }, +Transformers + +Transformers allow to merge specific types differently than in the default behavior. In other words, now you can customize how some types are merged. For example, time.Time is a struct; it doesn't have zero value but IsZero can return true because it has fields with zero value. How can we merge a non-zero time.Time? + + package main + + import ( + "fmt" + "github.com/imdario/mergo" + "reflect" + "time" + ) + + type timeTransformer struct { } - // Inside a function [...] + func (t timeTransformer) Transformer(typ reflect.Type) func(dst, src reflect.Value) error { + if typ == reflect.TypeOf(time.Time{}) { + return func(dst, src reflect.Value) error { + if dst.CanSet() { + isZero := dst.MethodByName("IsZero") + result := isZero.Call([]reflect.Value{}) + if result[0].Bool() { + dst.Set(src) + } + } + return nil + } + } + return nil + } + + type Snapshot struct { + Time time.Time + // ... + } - if err := mergo.Merge(&config, fssnDefault); err != nil { - log.Fatal(err) + func main() { + src := Snapshot{time.Now()} + dest := Snapshot{} + mergo.Merge(&dest, src, mergo.WithTransformers(timeTransformer{})) + fmt.Println(dest) + // Will print + // { 2018-01-12 01:15:00 +0000 UTC m=+0.000000001 } } - // More code [...] +Contact me + +If I can help you, you have an idea or you are using Mergo in your projects, don't hesitate to drop me a line (or a pull request): https://twitter.com/im_dario + +About + +Written by Dario Castañé: https://da.rio.hn + +License + +BSD 3-Clause license, as Go language. */ package mergo diff --git a/vendor/github.com/imdario/mergo/go.mod b/vendor/github.com/imdario/mergo/go.mod new file mode 100644 index 000000000..3d689d93e --- /dev/null +++ b/vendor/github.com/imdario/mergo/go.mod @@ -0,0 +1,5 @@ +module github.com/imdario/mergo + +go 1.13 + +require gopkg.in/yaml.v2 v2.3.0 diff --git a/vendor/github.com/imdario/mergo/go.sum b/vendor/github.com/imdario/mergo/go.sum new file mode 100644 index 000000000..168980da5 --- /dev/null +++ b/vendor/github.com/imdario/mergo/go.sum @@ -0,0 +1,4 @@ +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/github.com/imdario/mergo/map.go b/vendor/github.com/imdario/mergo/map.go index 3f5afa83a..a13a7ee46 100644 --- a/vendor/github.com/imdario/mergo/map.go +++ b/vendor/github.com/imdario/mergo/map.go @@ -141,6 +141,9 @@ func MapWithOverwrite(dst, src interface{}, opts ...func(*Config)) error { } func _map(dst, src interface{}, opts ...func(*Config)) error { + if dst != nil && reflect.ValueOf(dst).Kind() != reflect.Ptr { + return ErrNonPointerAgument + } var ( vDst, vSrc reflect.Value err error diff --git a/vendor/github.com/imdario/mergo/merge.go b/vendor/github.com/imdario/mergo/merge.go index 3fb6c64d0..11a8c156d 100644 --- a/vendor/github.com/imdario/mergo/merge.go +++ b/vendor/github.com/imdario/mergo/merge.go @@ -13,18 +13,30 @@ import ( "reflect" ) -func hasExportedField(dst reflect.Value) (exported bool) { +func hasMergeableFields(dst reflect.Value) (exported bool) { for i, n := 0, dst.NumField(); i < n; i++ { field := dst.Type().Field(i) if field.Anonymous && dst.Field(i).Kind() == reflect.Struct { - exported = exported || hasExportedField(dst.Field(i)) - } else { + exported = exported || hasMergeableFields(dst.Field(i)) + } else if isExportedComponent(&field) { exported = exported || len(field.PkgPath) == 0 } } return } +func isExportedComponent(field *reflect.StructField) bool { + pkgPath := field.PkgPath + if len(pkgPath) > 0 { + return false + } + c := field.Name[0] + if 'a' <= c && c <= 'z' || c == '_' { + return false + } + return true +} + type Config struct { Overwrite bool AppendSlice bool @@ -32,6 +44,8 @@ type Config struct { Transformers Transformers overwriteWithEmptyValue bool overwriteSliceWithEmptyValue bool + sliceDeepCopy bool + debug bool } type Transformers interface { @@ -46,7 +60,7 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co typeCheck := config.TypeCheck overwriteWithEmptySrc := config.overwriteWithEmptyValue overwriteSliceWithEmptySrc := config.overwriteSliceWithEmptyValue - config.overwriteWithEmptyValue = false + sliceDeepCopy := config.sliceDeepCopy if !src.IsValid() { return @@ -74,14 +88,14 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co switch dst.Kind() { case reflect.Struct: - if hasExportedField(dst) { + if hasMergeableFields(dst) { for i, n := 0, dst.NumField(); i < n; i++ { if err = deepMerge(dst.Field(i), src.Field(i), visited, depth+1, config); err != nil { return } } } else { - if dst.CanSet() && (!isEmptyValue(src) || overwriteWithEmptySrc) && (overwrite || isEmptyValue(dst)) { + if (isReflectNil(dst) || overwrite) && (!isEmptyValue(src) || overwriteWithEmptySrc) { dst.Set(src) } } @@ -89,6 +103,14 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co if dst.IsNil() && !src.IsNil() { dst.Set(reflect.MakeMap(dst.Type())) } + + if src.Kind() != reflect.Map { + if overwrite { + dst.Set(src) + } + return + } + for _, key := range src.MapKeys() { srcElement := src.MapIndex(key) if !srcElement.IsValid() { @@ -98,6 +120,9 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co switch srcElement.Kind() { case reflect.Chan, reflect.Func, reflect.Map, reflect.Interface, reflect.Slice: if srcElement.IsNil() { + if overwrite { + dst.SetMapIndex(key, srcElement) + } continue } fallthrough @@ -132,7 +157,7 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co dstSlice = reflect.ValueOf(dstElement.Interface()) } - if (!isEmptyValue(src) || overwriteWithEmptySrc || overwriteSliceWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { + if (!isEmptyValue(src) || overwriteWithEmptySrc || overwriteSliceWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice && !sliceDeepCopy { if typeCheck && srcSlice.Type() != dstSlice.Type() { return fmt.Errorf("cannot override two slices with different type (%s, %s)", srcSlice.Type(), dstSlice.Type()) } @@ -142,6 +167,24 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co return fmt.Errorf("cannot append two slices with different type (%s, %s)", srcSlice.Type(), dstSlice.Type()) } dstSlice = reflect.AppendSlice(dstSlice, srcSlice) + } else if sliceDeepCopy { + i := 0 + for ; i < srcSlice.Len() && i < dstSlice.Len(); i++ { + srcElement := srcSlice.Index(i) + dstElement := dstSlice.Index(i) + + if srcElement.CanInterface() { + srcElement = reflect.ValueOf(srcElement.Interface()) + } + if dstElement.CanInterface() { + dstElement = reflect.ValueOf(dstElement.Interface()) + } + + if err = deepMerge(dstElement, srcElement, visited, depth+1, config); err != nil { + return + } + } + } dst.SetMapIndex(key, dstSlice) } @@ -161,26 +204,35 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co if !dst.CanSet() { break } - if (!isEmptyValue(src) || overwriteWithEmptySrc || overwriteSliceWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { + if (!isEmptyValue(src) || overwriteWithEmptySrc || overwriteSliceWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice && !sliceDeepCopy { dst.Set(src) } else if config.AppendSlice { if src.Type() != dst.Type() { return fmt.Errorf("cannot append two slice with different type (%s, %s)", src.Type(), dst.Type()) } dst.Set(reflect.AppendSlice(dst, src)) + } else if sliceDeepCopy { + for i := 0; i < src.Len() && i < dst.Len(); i++ { + srcElement := src.Index(i) + dstElement := dst.Index(i) + if srcElement.CanInterface() { + srcElement = reflect.ValueOf(srcElement.Interface()) + } + if dstElement.CanInterface() { + dstElement = reflect.ValueOf(dstElement.Interface()) + } + + if err = deepMerge(dstElement, srcElement, visited, depth+1, config); err != nil { + return + } + } } case reflect.Ptr: fallthrough case reflect.Interface: - if src.IsNil() { - break - } - - if dst.Kind() != reflect.Ptr && src.Type().AssignableTo(dst.Type()) { - if dst.IsNil() || overwrite { - if dst.CanSet() && (overwrite || isEmptyValue(dst)) { - dst.Set(src) - } + if isReflectNil(src) { + if overwriteWithEmptySrc && dst.CanSet() && src.Type().AssignableTo(dst.Type()) { + dst.Set(src) } break } @@ -203,16 +255,33 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co } break } + if dst.IsNil() || overwrite { if dst.CanSet() && (overwrite || isEmptyValue(dst)) { dst.Set(src) } - } else if err = deepMerge(dst.Elem(), src.Elem(), visited, depth+1, config); err != nil { - return + break + } + + if dst.Elem().Kind() == src.Elem().Kind() { + if err = deepMerge(dst.Elem(), src.Elem(), visited, depth+1, config); err != nil { + return + } + break } default: - if dst.CanSet() && (!isEmptyValue(src) || overwriteWithEmptySrc) && (overwrite || isEmptyValue(dst)) { - dst.Set(src) + mustSet := (isEmptyValue(dst) || overwrite) && (!isEmptyValue(src) || overwriteWithEmptySrc) + v := fmt.Sprintf("%v", src) + if v == "TestIssue106" { + fmt.Println(mustSet) + fmt.Println(dst.CanSet()) + } + if mustSet { + if dst.CanSet() { + dst.Set(src) + } else { + dst = src + } } } @@ -246,7 +315,13 @@ func WithOverride(config *Config) { config.Overwrite = true } -// WithOverride will make merge override empty dst slice with empty src slice. +// WithOverwriteWithEmptyValue will make merge override non empty dst attributes with empty src attributes values. +func WithOverwriteWithEmptyValue(config *Config) { + config.Overwrite = true + config.overwriteWithEmptyValue = true +} + +// WithOverrideEmptySlice will make merge override empty dst slice with empty src slice. func WithOverrideEmptySlice(config *Config) { config.overwriteSliceWithEmptyValue = true } @@ -261,7 +336,16 @@ func WithTypeCheck(config *Config) { config.TypeCheck = true } +// WithSliceDeepCopy will merge slice element one by one with Overwrite flag. +func WithSliceDeepCopy(config *Config) { + config.sliceDeepCopy = true + config.Overwrite = true +} + func merge(dst, src interface{}, opts ...func(*Config)) error { + if dst != nil && reflect.ValueOf(dst).Kind() != reflect.Ptr { + return ErrNonPointerAgument + } var ( vDst, vSrc reflect.Value err error @@ -281,3 +365,16 @@ func merge(dst, src interface{}, opts ...func(*Config)) error { } return deepMerge(vDst, vSrc, make(map[uintptr]*visit), 0, config) } + +// IsReflectNil is the reflect value provided nil +func isReflectNil(v reflect.Value) bool { + k := v.Kind() + switch k { + case reflect.Interface, reflect.Slice, reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr: + // Both interface and slice are nil if first word is 0. + // Both are always bigger than a word; assume flagIndir. + return v.IsNil() + default: + return false + } +} diff --git a/vendor/github.com/imdario/mergo/mergo.go b/vendor/github.com/imdario/mergo/mergo.go index a82fea2fd..3cc926c7f 100644 --- a/vendor/github.com/imdario/mergo/mergo.go +++ b/vendor/github.com/imdario/mergo/mergo.go @@ -20,6 +20,7 @@ var ( ErrNotSupported = errors.New("only structs and maps are supported") ErrExpectedMapAsDestination = errors.New("dst was expected to be a map") ErrExpectedStructAsDestination = errors.New("dst was expected to be a struct") + ErrNonPointerAgument = errors.New("dst must be a pointer") ) // During deepMerge, must keep track of checks that are @@ -75,23 +76,3 @@ func resolveValues(dst, src interface{}) (vDst, vSrc reflect.Value, err error) { } return } - -// Traverses recursively both values, assigning src's fields values to dst. -// The map argument tracks comparisons that have already been seen, which allows -// short circuiting on recursive types. -func deeper(dst, src reflect.Value, visited map[uintptr]*visit, depth int) (err error) { - if dst.CanAddr() { - addr := dst.UnsafeAddr() - h := 17 * addr - seen := visited[h] - typ := dst.Type() - for p := seen; p != nil; p = p.next { - if p.ptr == addr && p.typ == typ { - return nil - } - } - // Remember, remember... - visited[h] = &visit{addr, typ, seen} - } - return // TODO refactor -} diff --git a/vendor/golang.org/x/time/rate/rate.go b/vendor/golang.org/x/time/rate/rate.go index 563f70429..a98fe7782 100644 --- a/vendor/golang.org/x/time/rate/rate.go +++ b/vendor/golang.org/x/time/rate/rate.go @@ -53,10 +53,9 @@ func Every(interval time.Duration) Limit { // // The methods AllowN, ReserveN, and WaitN consume n tokens. type Limiter struct { - limit Limit - burst int - mu sync.Mutex + limit Limit + burst int tokens float64 // last is the last time the limiter's tokens field was updated last time.Time @@ -76,6 +75,8 @@ func (lim *Limiter) Limit() Limit { // Burst values allow more events to happen at once. // A zero Burst allows no events, unless limit == Inf. func (lim *Limiter) Burst() int { + lim.mu.Lock() + defer lim.mu.Unlock() return lim.burst } @@ -196,7 +197,7 @@ func (lim *Limiter) Reserve() *Reservation { // ReserveN returns a Reservation that indicates how long the caller must wait before n events happen. // The Limiter takes this Reservation into account when allowing future events. -// ReserveN returns false if n exceeds the Limiter's burst size. +// The returned Reservation’s OK() method returns false if n exceeds the Limiter's burst size. // Usage example: // r := lim.ReserveN(time.Now(), 1) // if !r.OK() { @@ -229,7 +230,7 @@ func (lim *Limiter) WaitN(ctx context.Context, n int) (err error) { lim.mu.Unlock() if n > burst && limit != Inf { - return fmt.Errorf("rate: Wait(n=%d) exceeds limiter's burst %d", n, lim.burst) + return fmt.Errorf("rate: Wait(n=%d) exceeds limiter's burst %d", n, burst) } // Check if ctx is already cancelled select { @@ -359,6 +360,7 @@ func (lim *Limiter) reserveN(now time.Time, n int, maxFutureReserve time.Duratio // advance calculates and returns an updated state for lim resulting from the passage of time. // lim is not changed. +// advance requires that lim.mu is held. func (lim *Limiter) advance(now time.Time) (newNow time.Time, newLast time.Time, newTokens float64) { last := lim.last if now.Before(last) { diff --git a/vendor/golang.org/x/tools/internal/gocommand/invoke.go b/vendor/golang.org/x/tools/internal/gocommand/invoke.go index 68d8d4146..ff4f9d5aa 100644 --- a/vendor/golang.org/x/tools/internal/gocommand/invoke.go +++ b/vendor/golang.org/x/tools/internal/gocommand/invoke.go @@ -24,9 +24,7 @@ import ( // them if it sees a concurrency error. type Runner struct { // LoadMu guards packages.Load calls and associated state. - loadMu sync.Mutex - // locked is true when we hold the mutex and have incremented. - locked bool + loadMu sync.Mutex serializeLoads int } @@ -57,10 +55,8 @@ func (runner *Runner) RunRaw(ctx context.Context, inv Invocation) (*bytes.Buffer func (runner *Runner) runPiped(ctx context.Context, inv Invocation, stdout, stderr io.Writer) (error, error) { runner.loadMu.Lock() runner.serializeLoads++ - runner.locked = true defer func() { - runner.locked = false runner.serializeLoads-- runner.loadMu.Unlock() }() @@ -75,15 +71,16 @@ func (runner *Runner) runRaw(ctx context.Context, inv Invocation) (*bytes.Buffer // badly we never recover. To avoid that, once we've seen one concurrency // error, start serializing everything until the backlog has cleared out. runner.loadMu.Lock() + var locked bool // If true, we hold the mutex and have incremented. if runner.serializeLoads == 0 { runner.loadMu.Unlock() } else { - runner.locked = true + locked = true runner.serializeLoads++ } defer func() { - if runner.locked { - runner.locked = false + if locked { + locked = false runner.serializeLoads-- runner.loadMu.Unlock() } @@ -96,10 +93,9 @@ func (runner *Runner) runRaw(ctx context.Context, inv Invocation) (*bytes.Buffer return stdout, stderr, friendlyErr, err } event.Error(ctx, "Load concurrency error, will retry serially", err) - if !runner.locked { + if !locked { runner.loadMu.Lock() runner.serializeLoads++ - runner.locked = true } } } diff --git a/vendor/google.golang.org/appengine/internal/api.go b/vendor/google.golang.org/appengine/internal/api.go index a6ec19e14..721053c20 100644 --- a/vendor/google.golang.org/appengine/internal/api.go +++ b/vendor/google.golang.org/appengine/internal/api.go @@ -58,8 +58,11 @@ var ( apiHTTPClient = &http.Client{ Transport: &http.Transport{ - Proxy: http.ProxyFromEnvironment, - Dial: limitDial, + Proxy: http.ProxyFromEnvironment, + Dial: limitDial, + MaxIdleConns: 1000, + MaxIdleConnsPerHost: 10000, + IdleConnTimeout: 90 * time.Second, }, } diff --git a/vendor/gopkg.in/yaml.v2/apic.go b/vendor/gopkg.in/yaml.v2/apic.go index 1f7e87e67..d2c2308f1 100644 --- a/vendor/gopkg.in/yaml.v2/apic.go +++ b/vendor/gopkg.in/yaml.v2/apic.go @@ -86,6 +86,7 @@ func yaml_emitter_initialize(emitter *yaml_emitter_t) { raw_buffer: make([]byte, 0, output_raw_buffer_size), states: make([]yaml_emitter_state_t, 0, initial_stack_size), events: make([]yaml_event_t, 0, initial_queue_size), + best_width: -1, } } diff --git a/vendor/gopkg.in/yaml.v3/.travis.yml b/vendor/gopkg.in/yaml.v3/.travis.yml index 1bc5c1cd2..a130fe883 100644 --- a/vendor/gopkg.in/yaml.v3/.travis.yml +++ b/vendor/gopkg.in/yaml.v3/.travis.yml @@ -1,15 +1,17 @@ language: go go: - - "1.4" - - "1.5" - - "1.6" - - "1.7" - - "1.8" - - "1.9" - - "1.10" - - "1.11" - - "1.12" - - tip + - "1.4.x" + - "1.5.x" + - "1.6.x" + - "1.7.x" + - "1.8.x" + - "1.9.x" + - "1.10.x" + - "1.11.x" + - "1.12.x" + - "1.13.x" + - "1.14.x" + - "tip" go_import_path: gopkg.in/yaml.v3 diff --git a/vendor/gopkg.in/yaml.v3/apic.go b/vendor/gopkg.in/yaml.v3/apic.go index 65846e674..ae7d049f1 100644 --- a/vendor/gopkg.in/yaml.v3/apic.go +++ b/vendor/gopkg.in/yaml.v3/apic.go @@ -108,6 +108,7 @@ func yaml_emitter_initialize(emitter *yaml_emitter_t) { raw_buffer: make([]byte, 0, output_raw_buffer_size), states: make([]yaml_emitter_state_t, 0, initial_stack_size), events: make([]yaml_event_t, 0, initial_queue_size), + best_width: -1, } } diff --git a/vendor/gopkg.in/yaml.v3/decode.go b/vendor/gopkg.in/yaml.v3/decode.go index b2e16a6da..21c0dacfd 100644 --- a/vendor/gopkg.in/yaml.v3/decode.go +++ b/vendor/gopkg.in/yaml.v3/decode.go @@ -35,6 +35,7 @@ type parser struct { doc *Node anchors map[string]*Node doneInit bool + textless bool } func newParser(b []byte) *parser { @@ -108,14 +109,18 @@ func (p *parser) peek() yaml_event_type_t { func (p *parser) fail() { var where string var line int - if p.parser.problem_mark.line != 0 { + if p.parser.context_mark.line != 0 { + line = p.parser.context_mark.line + // Scanner errors don't iterate line before returning error + if p.parser.error == yaml_SCANNER_ERROR { + line++ + } + } else if p.parser.problem_mark.line != 0 { line = p.parser.problem_mark.line // Scanner errors don't iterate line before returning error if p.parser.error == yaml_SCANNER_ERROR { line++ } - } else if p.parser.context_mark.line != 0 { - line = p.parser.context_mark.line } if line != 0 { where = "line " + strconv.Itoa(line) + ": " @@ -169,17 +174,20 @@ func (p *parser) node(kind Kind, defaultTag, tag, value string) *Node { } else if kind == ScalarNode { tag, _ = resolve("", value) } - return &Node{ - Kind: kind, - Tag: tag, - Value: value, - Style: style, - Line: p.event.start_mark.line + 1, - Column: p.event.start_mark.column + 1, - HeadComment: string(p.event.head_comment), - LineComment: string(p.event.line_comment), - FootComment: string(p.event.foot_comment), + n := &Node{ + Kind: kind, + Tag: tag, + Value: value, + Style: style, + } + if !p.textless { + n.Line = p.event.start_mark.line + 1 + n.Column = p.event.start_mark.column + 1 + n.HeadComment = string(p.event.head_comment) + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) } + return n } func (p *parser) parseChild(parent *Node) *Node { @@ -391,7 +399,7 @@ func (d *decoder) callObsoleteUnmarshaler(n *Node, u obsoleteUnmarshaler) (good // // If n holds a null value, prepare returns before doing anything. func (d *decoder) prepare(n *Node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) { - if n.ShortTag() == nullTag { + if n.ShortTag() == nullTag || n.Kind == 0 && n.IsZero() { return out, false, false } again := true @@ -439,12 +447,41 @@ func (d *decoder) fieldByIndex(n *Node, v reflect.Value, index []int) (field ref return v } +const ( + // 400,000 decode operations is ~500kb of dense object declarations, or + // ~5kb of dense object declarations with 10000% alias expansion + alias_ratio_range_low = 400000 + + // 4,000,000 decode operations is ~5MB of dense object declarations, or + // ~4.5MB of dense object declarations with 10% alias expansion + alias_ratio_range_high = 4000000 + + // alias_ratio_range is the range over which we scale allowed alias ratios + alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low) +) + +func allowedAliasRatio(decodeCount int) float64 { + switch { + case decodeCount <= alias_ratio_range_low: + // allow 99% to come from alias expansion for small-to-medium documents + return 0.99 + case decodeCount >= alias_ratio_range_high: + // allow 10% to come from alias expansion for very large documents + return 0.10 + default: + // scale smoothly from 99% down to 10% over the range. + // this maps to 396,000 - 400,000 allowed alias-driven decodes over the range. + // 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps). + return 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range) + } +} + func (d *decoder) unmarshal(n *Node, out reflect.Value) (good bool) { d.decodeCount++ if d.aliasDepth > 0 { d.aliasCount++ } - if d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > 0.99 { + if d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) { failf("document contains excessive aliasing") } if out.Type() == nodeType { @@ -468,8 +505,13 @@ func (d *decoder) unmarshal(n *Node, out reflect.Value) (good bool) { good = d.mapping(n, out) case SequenceNode: good = d.sequence(n, out) + case 0: + if n.IsZero() { + return d.null(out) + } + fallthrough default: - panic("internal error: unknown node kind: " + strconv.Itoa(int(n.Kind))) + failf("cannot decode node with unknown kind %d", n.Kind) } return good } @@ -504,6 +546,17 @@ func resetMap(out reflect.Value) { } } +func (d *decoder) null(out reflect.Value) bool { + if out.CanAddr() { + switch out.Kind() { + case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: + out.Set(reflect.Zero(out.Type())) + return true + } + } + return false +} + func (d *decoder) scalar(n *Node, out reflect.Value) bool { var tag string var resolved interface{} @@ -521,14 +574,7 @@ func (d *decoder) scalar(n *Node, out reflect.Value) bool { } } if resolved == nil { - if out.CanAddr() { - switch out.Kind() { - case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: - out.Set(reflect.Zero(out.Type())) - return true - } - } - return false + return d.null(out) } if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { // We've resolved to exactly the type we want, so use that. @@ -795,7 +841,7 @@ func isStringMap(n *Node) bool { return false } l := len(n.Content) - for i := 0; i < l; i++ { + for i := 0; i < l; i += 2 { if n.Content[i].ShortTag() != strTag { return false } diff --git a/vendor/gopkg.in/yaml.v3/emitterc.go b/vendor/gopkg.in/yaml.v3/emitterc.go index a1383c0a0..c29217ef5 100644 --- a/vendor/gopkg.in/yaml.v3/emitterc.go +++ b/vendor/gopkg.in/yaml.v3/emitterc.go @@ -235,10 +235,13 @@ func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool emitter.indent = 0 } } else if !indentless { - emitter.indent += emitter.best_indent - // [Go] If inside a block sequence item, discount the space taken by the indicator. - if emitter.best_indent > 2 && emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE { - emitter.indent -= 2 + // [Go] This was changed so that indentations are more regular. + if emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE { + // The first indent inside a sequence will just skip the "- " indicator. + emitter.indent += 2 + } else { + // Everything else aligns to the chosen indentation. + emitter.indent = emitter.best_indent*((emitter.indent+emitter.best_indent)/emitter.best_indent) } } return true @@ -725,16 +728,9 @@ func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_e // Expect a block item node. func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { if first { - // [Go] The original logic here would not indent the sequence when inside a mapping. - // In Go we always indent it, but take the sequence indicator out of the indentation. - indentless := emitter.best_indent == 2 && emitter.mapping_context && !emitter.indention - original := emitter.indent - if !yaml_emitter_increase_indent(emitter, false, indentless) { + if !yaml_emitter_increase_indent(emitter, false, false) { return false } - if emitter.indent > original+2 { - emitter.indent -= 2 - } } if event.typ == yaml_SEQUENCE_END_EVENT { emitter.indent = emitter.indents[len(emitter.indents)-1] @@ -785,6 +781,13 @@ func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_ev if !yaml_emitter_write_indent(emitter) { return false } + if len(emitter.line_comment) > 0 { + // [Go] A line comment was provided for the key. That's unusual as the + // scanner associates line comments with the value. Either way, + // save the line comment and render it appropriately later. + emitter.key_line_comment = emitter.line_comment + emitter.line_comment = nil + } if yaml_emitter_check_simple_key(emitter) { emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE) return yaml_emitter_emit_node(emitter, event, false, false, true, true) @@ -810,6 +813,29 @@ func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_ return false } } + if len(emitter.key_line_comment) > 0 { + // [Go] A line comment was previously provided for the key. Handle it before + // the value so the inline comments are placed correctly. + if yaml_emitter_silent_nil_event(emitter, event) && len(emitter.line_comment) == 0 { + // Nothing other than the line comment will be written on the line. + emitter.line_comment = emitter.key_line_comment + emitter.key_line_comment = nil + } else { + // An actual value is coming, so emit the comment line. + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + if !yaml_emitter_process_line_comment(emitter) { + return false + } + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + // Indent in unless it's a block that will reindent anyway. + if event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE || (event.typ != yaml_MAPPING_START_EVENT && event.typ != yaml_SEQUENCE_START_EVENT) { + emitter.indent = emitter.best_indent*((emitter.indent+emitter.best_indent)/emitter.best_indent) + if !yaml_emitter_write_indent(emitter) { + return false + } + } + } + } emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE) if !yaml_emitter_emit_node(emitter, event, false, false, true, false) { return false @@ -823,6 +849,10 @@ func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_ return true } +func yaml_emitter_silent_nil_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { + return event.typ == yaml_SCALAR_EVENT && event.implicit && !emitter.canonical && len(emitter.scalar_data.value) == 0 +} + // Expect a node. func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, root bool, sequence bool, mapping bool, simple_key bool) bool { diff --git a/vendor/gopkg.in/yaml.v3/encode.go b/vendor/gopkg.in/yaml.v3/encode.go index 38882b50e..45e8d1e1b 100644 --- a/vendor/gopkg.in/yaml.v3/encode.go +++ b/vendor/gopkg.in/yaml.v3/encode.go @@ -119,6 +119,9 @@ func (e *encoder) marshal(tag string, in reflect.Value) { case *Node: e.nodev(in) return + case Node: + e.nodev(in.Addr()) + return case time.Time: e.timev(tag, in) return @@ -298,6 +301,21 @@ func isBase60Float(s string) (result bool) { // is bogus. In practice parsers do not enforce the "\.[0-9_]*" suffix. var base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\.[0-9_]*)?$`) +// isOldBool returns whether s is bool notation as defined in YAML 1.1. +// +// We continue to force strings that YAML 1.1 would interpret as booleans to be +// rendered as quotes strings so that the marshalled output valid for YAML 1.1 +// parsing. +func isOldBool(s string) (result bool) { + switch s { + case "y", "Y", "yes", "Yes", "YES", "on", "On", "ON", + "n", "N", "no", "No", "NO", "off", "Off", "OFF": + return true + default: + return false + } +} + func (e *encoder) stringv(tag string, in reflect.Value) { var style yaml_scalar_style_t s := in.String() @@ -319,7 +337,7 @@ func (e *encoder) stringv(tag string, in reflect.Value) { // tag when encoded unquoted. If it doesn't, // there's no need to quote it. rtag, _ := resolve("", s) - canUsePlain = rtag == strTag && !isBase60Float(s) + canUsePlain = rtag == strTag && !(isBase60Float(s) || isOldBool(s)) } // Note: it's possible for user code to emit invalid YAML // if they explicitly specify a tag and a string containing @@ -407,18 +425,23 @@ func (e *encoder) nodev(in reflect.Value) { } func (e *encoder) node(node *Node, tail string) { + // Zero nodes behave as nil. + if node.Kind == 0 && node.IsZero() { + e.nilv() + return + } + // If the tag was not explicitly requested, and dropping it won't change the // implicit tag of the value, don't include it in the presentation. var tag = node.Tag var stag = shortTag(tag) - var rtag string var forceQuoting bool if tag != "" && node.Style&TaggedStyle == 0 { if node.Kind == ScalarNode { if stag == strTag && node.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0 { tag = "" } else { - rtag, _ = resolve("", node.Value) + rtag, _ := resolve("", node.Value) if rtag == stag { tag = "" } else if stag == strTag { @@ -427,6 +450,7 @@ func (e *encoder) node(node *Node, tail string) { } } } else { + var rtag string switch node.Kind { case MappingNode: rtag = mapTag @@ -456,7 +480,7 @@ func (e *encoder) node(node *Node, tail string) { if node.Style&FlowStyle != 0 { style = yaml_FLOW_SEQUENCE_STYLE } - e.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(tag), tag == "", style)) + e.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style)) e.event.head_comment = []byte(node.HeadComment) e.emit() for _, node := range node.Content { @@ -472,7 +496,7 @@ func (e *encoder) node(node *Node, tail string) { if node.Style&FlowStyle != 0 { style = yaml_FLOW_MAPPING_STYLE } - yaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(tag), tag == "", style) + yaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style) e.event.tail_comment = []byte(tail) e.event.head_comment = []byte(node.HeadComment) e.emit() @@ -485,7 +509,11 @@ func (e *encoder) node(node *Node, tail string) { for i := 0; i+1 < len(node.Content); i += 2 { k := node.Content[i] foot := k.FootComment - k.FootComment = "" + if foot != "" { + kopy := *k + kopy.FootComment = "" + k = &kopy + } e.node(k, tail) tail = foot @@ -509,11 +537,11 @@ func (e *encoder) node(node *Node, tail string) { case ScalarNode: value := node.Value if !utf8.ValidString(value) { - if tag == binaryTag { + if stag == binaryTag { failf("explicitly tagged !!binary data must be base64-encoded") } - if tag != "" { - failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag)) + if stag != "" { + failf("cannot marshal invalid UTF-8 data as %s", stag) } // It can't be encoded directly as YAML so use a binary tag // and encode it as base64. @@ -538,5 +566,7 @@ func (e *encoder) node(node *Node, tail string) { } e.emitScalar(value, node.Anchor, tag, style, []byte(node.HeadComment), []byte(node.LineComment), []byte(node.FootComment), []byte(tail)) + default: + failf("cannot encode node with unknown kind %d", node.Kind) } } diff --git a/vendor/gopkg.in/yaml.v3/parserc.go b/vendor/gopkg.in/yaml.v3/parserc.go index ec25faabc..ac66fccc0 100644 --- a/vendor/gopkg.in/yaml.v3/parserc.go +++ b/vendor/gopkg.in/yaml.v3/parserc.go @@ -423,6 +423,7 @@ func yaml_parser_set_event_comments(parser *yaml_parser_t, event *yaml_event_t) parser.line_comment = nil parser.foot_comment = nil parser.tail_comment = nil + parser.stem_comment = nil } // Parse the productions: @@ -629,6 +630,10 @@ func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, i implicit: implicit, style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), } + if parser.stem_comment != nil { + event.head_comment = parser.stem_comment + parser.stem_comment = nil + } return true } if block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN { @@ -643,6 +648,10 @@ func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, i implicit: implicit, style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE), } + if parser.stem_comment != nil { + event.head_comment = parser.stem_comment + parser.stem_comment = nil + } return true } if len(anchor) > 0 || len(tag) > 0 { @@ -689,7 +698,9 @@ func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_e if token.typ == yaml_BLOCK_ENTRY_TOKEN { mark := token.end_mark + prior_head_len := len(parser.head_comment) skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) token = peek_token(parser) if token == nil { return false @@ -735,7 +746,9 @@ func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *y if token.typ == yaml_BLOCK_ENTRY_TOKEN { mark := token.end_mark + prior_head_len := len(parser.head_comment) skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) token = peek_token(parser) if token == nil { return false @@ -761,6 +774,32 @@ func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *y return true } +// Split stem comment from head comment. +// +// When a sequence or map is found under a sequence entry, the former head comment +// is assigned to the underlying sequence or map as a whole, not the individual +// sequence or map entry as would be expected otherwise. To handle this case the +// previous head comment is moved aside as the stem comment. +func yaml_parser_split_stem_comment(parser *yaml_parser_t, stem_len int) { + if stem_len == 0 { + return + } + + token := peek_token(parser) + if token.typ != yaml_BLOCK_SEQUENCE_START_TOKEN && token.typ != yaml_BLOCK_MAPPING_START_TOKEN { + return + } + + parser.stem_comment = parser.head_comment[:stem_len] + if len(parser.head_comment) == stem_len { + parser.head_comment = nil + } else { + // Copy suffix to prevent very strange bugs if someone ever appends + // further bytes to the prefix in the stem_comment slice above. + parser.head_comment = append([]byte(nil), parser.head_comment[stem_len+1:]...) + } +} + // Parse the productions: // block_mapping ::= BLOCK-MAPPING_START // ******************* diff --git a/vendor/gopkg.in/yaml.v3/scannerc.go b/vendor/gopkg.in/yaml.v3/scannerc.go index 4a9c65646..d9a539c39 100644 --- a/vendor/gopkg.in/yaml.v3/scannerc.go +++ b/vendor/gopkg.in/yaml.v3/scannerc.go @@ -657,33 +657,21 @@ func trace(args ...interface{}) func() { func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { // While we need more tokens to fetch, do it. for { - // Check if we really need to fetch more tokens. - need_more_tokens := false - - // [Go] The comment parsing logic requires a lookahead of one token - // in block style or two tokens in flow style so that the foot - // comments may be parsed in time of associating them with the tokens - // that are parsed before them. - if parser.tokens_head >= len(parser.tokens)-1 || parser.flow_level > 0 && parser.tokens_head >= len(parser.tokens)-2 { - need_more_tokens = true - } else { - // Check if any potential simple key may occupy the head position. - if !yaml_parser_stale_simple_keys(parser) { + // [Go] The comment parsing logic requires a lookahead of two tokens + // so that foot comments may be parsed in time of associating them + // with the tokens that are parsed before them, and also for line + // comments to be transformed into head comments in some edge cases. + if parser.tokens_head < len(parser.tokens)-2 { + // If a potential simple key is at the head position, we need to fetch + // the next token to disambiguate it. + head_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed] + if !ok { + break + } else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok { return false + } else if !valid { + break } - - for i := range parser.simple_keys { - simple_key := &parser.simple_keys[i] - if simple_key.possible && simple_key.token_number == parser.tokens_parsed { - need_more_tokens = true - break - } - } - } - - // We are finished. - if !need_more_tokens { - break } // Fetch the next token. if !yaml_parser_fetch_next_token(parser) { @@ -714,11 +702,6 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) { return false } - // Remove obsolete potential simple keys. - if !yaml_parser_stale_simple_keys(parser) { - return false - } - // [Go] While unrolling indents, transform the head comments of prior // indentation levels observed after scan_start into foot comments at // the respective indexes. @@ -766,6 +749,11 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) { if !ok { return } + if len(parser.tokens) > 0 && parser.tokens[len(parser.tokens)-1].typ == yaml_BLOCK_ENTRY_TOKEN { + // Sequence indicators alone have no line comments. It becomes + // a head comment for whatever follows. + return + } if !yaml_parser_scan_line_comment(parser, comment_mark) { ok = false return @@ -892,29 +880,30 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) { "found character that cannot start any token") } -// Check the list of potential simple keys and remove the positions that -// cannot contain simple keys anymore. -func yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool { - // Check for a potential simple key for each flow level. - for i := range parser.simple_keys { - simple_key := &parser.simple_keys[i] +func yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) { + if !simple_key.possible { + return false, true + } - // The specification requires that a simple key - // - // - is limited to a single line, - // - is shorter than 1024 characters. - if simple_key.possible && (simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) { - - // Check if the potential simple key to be removed is required. - if simple_key.required { - return yaml_parser_set_scanner_error(parser, - "while scanning a simple key", simple_key.mark, - "could not find expected ':'") - } - simple_key.possible = false + // The 1.2 specification says: + // + // "If the ? indicator is omitted, parsing needs to see past the + // implicit key to recognize it as such. To limit the amount of + // lookahead required, the “:” indicator must appear at most 1024 + // Unicode characters beyond the start of the key. In addition, the key + // is restricted to a single line." + // + if simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index { + // Check if the potential simple key to be removed is required. + if simple_key.required { + return false, yaml_parser_set_scanner_error(parser, + "while scanning a simple key", simple_key.mark, + "could not find expected ':'") } + simple_key.possible = false + return false, true } - return true + return true, true } // Check if a simple key may start at the current position and add it if @@ -934,13 +923,14 @@ func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { possible: true, required: required, token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), + mark: parser.mark, } - simple_key.mark = parser.mark if !yaml_parser_remove_simple_key(parser) { return false } parser.simple_keys[len(parser.simple_keys)-1] = simple_key + parser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1 } return true } @@ -955,19 +945,33 @@ func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { "while scanning a simple key", parser.simple_keys[i].mark, "could not find expected ':'") } + // Remove the key from the stack. + parser.simple_keys[i].possible = false + delete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number) } - // Remove the key from the stack. - parser.simple_keys[i].possible = false return true } +// max_flow_level limits the flow_level +const max_flow_level = 10000 + // Increase the flow level and resize the simple key list if needed. func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { // Reset the simple key on the next level. - parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) + parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{ + possible: false, + required: false, + token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), + mark: parser.mark, + }) // Increase the flow level. parser.flow_level++ + if parser.flow_level > max_flow_level { + return yaml_parser_set_scanner_error(parser, + "while increasing flow level", parser.simple_keys[len(parser.simple_keys)-1].mark, + fmt.Sprintf("exceeded max depth of %d", max_flow_level)) + } return true } @@ -975,11 +979,16 @@ func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { if parser.flow_level > 0 { parser.flow_level-- - parser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1] + last := len(parser.simple_keys) - 1 + delete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number) + parser.simple_keys = parser.simple_keys[:last] } return true } +// max_indents limits the indents stack size +const max_indents = 10000 + // Push the current indentation level to the stack and set the new level // the current column is greater than the indentation level. In this case, // append or insert the specified token into the token queue. @@ -994,6 +1003,11 @@ func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml // indentation level. parser.indents = append(parser.indents, parser.indent) parser.indent = column + if len(parser.indents) > max_indents { + return yaml_parser_set_scanner_error(parser, + "while increasing indent level", parser.simple_keys[len(parser.simple_keys)-1].mark, + fmt.Sprintf("exceeded max depth of %d", max_indents)) + } // Create a token and insert it into the queue. token := yaml_token_t{ @@ -1074,6 +1088,8 @@ func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { // Initialize the simple key stack. parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) + parser.simple_keys_by_tok = make(map[int]int) + // A simple key is allowed at the beginning of the stream. parser.simple_key_allowed = true @@ -1356,7 +1372,11 @@ func yaml_parser_fetch_value(parser *yaml_parser_t) bool { simple_key := &parser.simple_keys[len(parser.simple_keys)-1] // Have we found a simple key? - if simple_key.possible { + if valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok { + return false + + } else if valid { + // Create the KEY token and insert it into the queue. token := yaml_token_t{ typ: yaml_KEY_TOKEN, @@ -1374,6 +1394,7 @@ func yaml_parser_fetch_value(parser *yaml_parser_t) bool { // Remove the simple key. simple_key.possible = false + delete(parser.simple_keys_by_tok, simple_key.token_number) // A simple key cannot follow another simple key. parser.simple_key_allowed = false @@ -1541,6 +1562,29 @@ func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool { } } + // Check if we just had a line comment under a sequence entry that + // looks more like a header to the following content. Similar to this: + // + // - # The comment + // - Some data + // + // If so, transform the line comment to a head comment and reposition. + if len(parser.comments) > 0 && len(parser.tokens) > 1 { + tokenA := parser.tokens[len(parser.tokens)-2] + tokenB := parser.tokens[len(parser.tokens)-1] + comment := &parser.comments[len(parser.comments)-1] + if tokenA.typ == yaml_BLOCK_SEQUENCE_START_TOKEN && tokenB.typ == yaml_BLOCK_ENTRY_TOKEN && len(comment.line) > 0 && !is_break(parser.buffer, parser.buffer_pos) { + // If it was in the prior line, reposition so it becomes a + // header of the follow up token. Otherwise, keep it in place + // so it becomes a header of the former. + comment.head = comment.line + comment.line = nil + if comment.start_mark.line == parser.mark.line-1 { + comment.token_mark = parser.mark + } + } + } + // Eat a comment until a line break. if parser.buffer[parser.buffer_pos] == '#' { if !yaml_parser_scan_comments(parser, scan_mark) { @@ -2216,8 +2260,15 @@ func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, l } } if parser.buffer[parser.buffer_pos] == '#' { - if !yaml_parser_scan_line_comment(parser, start_mark) { - return false + // TODO Test this and then re-enable it. + //if !yaml_parser_scan_line_comment(parser, start_mark) { + // return false + //} + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } } } @@ -2786,8 +2837,8 @@ func yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t return true } - parser.comments = append(parser.comments, yaml_comment_t{token_mark: token_mark}) - comment := &parser.comments[len(parser.comments)-1].line + var start_mark yaml_mark_t + var text []byte for peek := 0; peek < 512; peek++ { if parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) { @@ -2797,11 +2848,6 @@ func yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t continue } if parser.buffer[parser.buffer_pos+peek] == '#' { - if len(*comment) > 0 { - *comment = append(*comment, '\n') - } - - // Consume until after the consumed comment line. seen := parser.mark.index+peek for { if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { @@ -2815,16 +2861,25 @@ func yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t return false } skip_line(parser) - } else { - if parser.mark.index >= seen { - *comment = append(*comment, parser.buffer[parser.buffer_pos]) + } else if parser.mark.index >= seen { + if len(text) == 0 { + start_mark = parser.mark } + text = read(parser, text) + } else { skip(parser) } } } break } + if len(text) > 0 { + parser.comments = append(parser.comments, yaml_comment_t{ + token_mark: token_mark, + start_mark: start_mark, + line: text, + }) + } return true } @@ -2948,10 +3003,9 @@ func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) boo return false } skip_line(parser) + } else if parser.mark.index >= seen { + text = read(parser, text) } else { - if parser.mark.index >= seen { - text = append(text, parser.buffer[parser.buffer_pos]) - } skip(parser) } } diff --git a/vendor/gopkg.in/yaml.v3/yaml.go b/vendor/gopkg.in/yaml.v3/yaml.go index b5d35a50d..56e8a8490 100644 --- a/vendor/gopkg.in/yaml.v3/yaml.go +++ b/vendor/gopkg.in/yaml.v3/yaml.go @@ -89,7 +89,7 @@ func Unmarshal(in []byte, out interface{}) (err error) { return unmarshal(in, out, false) } -// A Decorder reads and decodes YAML values from an input stream. +// A Decoder reads and decodes YAML values from an input stream. type Decoder struct { parser *parser knownFields bool @@ -194,7 +194,7 @@ func unmarshal(in []byte, out interface{}, strict bool) (err error) { // Zero valued structs will be omitted if all their public // fields are zero, unless they implement an IsZero // method (see the IsZeroer interface type), in which -// case the field will be included if that method returns true. +// case the field will be excluded if IsZero returns true. // // flow Marshal using a flow style (useful for structs, // sequences and maps). @@ -252,6 +252,24 @@ func (e *Encoder) Encode(v interface{}) (err error) { return nil } +// Encode encodes value v and stores its representation in n. +// +// See the documentation for Marshal for details about the +// conversion of Go values into YAML. +func (n *Node) Encode(v interface{}) (err error) { + defer handleErr(&err) + e := newEncoder() + defer e.destroy() + e.marshalDoc("", reflect.ValueOf(v)) + e.finish() + p := newParser(e.out) + p.textless = true + defer p.destroy() + doc := p.parse() + *n = *doc.Content[0] + return nil +} + // SetIndent changes the used indentation used when encoding. func (e *Encoder) SetIndent(spaces int) { if spaces < 0 { @@ -328,6 +346,12 @@ const ( // and maps, Node is an intermediate representation that allows detailed // control over the content being decoded or encoded. // +// It's worth noting that although Node offers access into details such as +// line numbers, colums, and comments, the content when re-encoded will not +// have its original textual representation preserved. An effort is made to +// render the data plesantly, and to preserve comments near the data they +// describe, though. +// // Values that make use of the Node type interact with the yaml package in the // same way any other type would do, by encoding and decoding yaml data // directly or indirectly into them. @@ -391,6 +415,13 @@ type Node struct { Column int } +// IsZero returns whether the node has all of its fields unset. +func (n *Node) IsZero() bool { + return n.Kind == 0 && n.Style == 0 && n.Tag == "" && n.Value == "" && n.Anchor == "" && n.Alias == nil && n.Content == nil && + n.HeadComment == "" && n.LineComment == "" && n.FootComment == "" && n.Line == 0 && n.Column == 0 +} + + // LongTag returns the long form of the tag that indicates the data type for // the node. If the Tag field isn't explicitly defined, one will be computed // based on the node properties. diff --git a/vendor/gopkg.in/yaml.v3/yamlh.go b/vendor/gopkg.in/yaml.v3/yamlh.go index 65fb0df3b..7c6d00770 100644 --- a/vendor/gopkg.in/yaml.v3/yamlh.go +++ b/vendor/gopkg.in/yaml.v3/yamlh.go @@ -600,6 +600,7 @@ type yaml_parser_t struct { line_comment []byte // The current line comments foot_comment []byte // The current foot comments tail_comment []byte // Foot comment that happens at the end of a block. + stem_comment []byte // Comment in item preceding a nested structure (list inside list item, etc) comments []yaml_comment_t // The folded comments for all parsed tokens comments_head int @@ -621,6 +622,7 @@ type yaml_parser_t struct { simple_key_allowed bool // May a simple key occur at the current position? simple_keys []yaml_simple_key_t // The stack of simple keys. + simple_keys_by_tok map[int]int // possible simple_key indexes indexed by token_number // Parser stuff @@ -785,6 +787,8 @@ type yaml_emitter_t struct { foot_comment []byte tail_comment []byte + key_line_comment []byte + // Dumper stuff opened bool // If the stream was already opened? diff --git a/vendor/k8s.io/utils/pointer/pointer.go b/vendor/k8s.io/utils/pointer/pointer.go index 5365a1136..0a55a844e 100644 --- a/vendor/k8s.io/utils/pointer/pointer.go +++ b/vendor/k8s.io/utils/pointer/pointer.go @@ -51,14 +51,23 @@ func Int32Ptr(i int32) *int32 { return &i } +// Int32PtrDerefOr dereference the int32 ptr and returns it if not nil, +// else returns def. +func Int32PtrDerefOr(ptr *int32, def int32) int32 { + if ptr != nil { + return *ptr + } + return def +} + // Int64Ptr returns a pointer to an int64 func Int64Ptr(i int64) *int64 { return &i } -// Int32PtrDerefOr dereference the int32 ptr and returns it if not nil, +// Int64PtrDerefOr dereference the int64 ptr and returns it if not nil, // else returns def. -func Int32PtrDerefOr(ptr *int32, def int32) int32 { +func Int64PtrDerefOr(ptr *int64, def int64) int64 { if ptr != nil { return *ptr } @@ -70,17 +79,53 @@ func BoolPtr(b bool) *bool { return &b } +// BoolPtrDerefOr dereference the bool ptr and returns it if not nil, +// else returns def. +func BoolPtrDerefOr(ptr *bool, def bool) bool { + if ptr != nil { + return *ptr + } + return def +} + // StringPtr returns a pointer to the passed string. func StringPtr(s string) *string { return &s } +// StringPtrDerefOr dereference the string ptr and returns it if not nil, +// else returns def. +func StringPtrDerefOr(ptr *string, def string) string { + if ptr != nil { + return *ptr + } + return def +} + // Float32Ptr returns a pointer to the passed float32. func Float32Ptr(i float32) *float32 { return &i } +// Float32PtrDerefOr dereference the float32 ptr and returns it if not nil, +// else returns def. +func Float32PtrDerefOr(ptr *float32, def float32) float32 { + if ptr != nil { + return *ptr + } + return def +} + // Float64Ptr returns a pointer to the passed float64. func Float64Ptr(i float64) *float64 { return &i } + +// Float64PtrDerefOr dereference the float64 ptr and returns it if not nil, +// else returns def. +func Float64PtrDerefOr(ptr *float64, def float64) float64 { + if ptr != nil { + return *ptr + } + return def +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 65ac41e60..af4681d49 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -21,7 +21,7 @@ github.com/ghodss/yaml # github.com/go-bindata/go-bindata/v3 v3.1.3 ## explicit github.com/go-bindata/go-bindata/v3 -# github.com/go-logr/logr v0.2.0 +# github.com/go-logr/logr v0.3.0 github.com/go-logr/logr # github.com/go-openapi/analysis v0.19.5 github.com/go-openapi/analysis @@ -61,15 +61,15 @@ github.com/golang/protobuf/ptypes/duration github.com/golang/protobuf/ptypes/timestamp # github.com/google/gofuzz v1.1.0 github.com/google/gofuzz -# github.com/googleapis/gnostic v0.4.1 +# github.com/googleapis/gnostic v0.5.1 github.com/googleapis/gnostic/compiler github.com/googleapis/gnostic/extensions +github.com/googleapis/gnostic/jsonschema github.com/googleapis/gnostic/openapiv2 -# github.com/hashicorp/golang-lru v0.5.1 +# github.com/hashicorp/golang-lru v0.5.4 github.com/hashicorp/golang-lru github.com/hashicorp/golang-lru/simplelru -# github.com/imdario/mergo v0.3.8 -## explicit +# github.com/imdario/mergo v0.3.10 github.com/imdario/mergo # github.com/inconshreveable/mousetrap v1.0.0 github.com/inconshreveable/mousetrap @@ -101,10 +101,6 @@ github.com/mitchellh/mapstructure github.com/modern-go/concurrent # github.com/modern-go/reflect2 v1.0.1 github.com/modern-go/reflect2 -# github.com/onsi/ginkgo v1.12.0 -## explicit -# github.com/onsi/gomega v1.9.0 -## explicit # github.com/pkg/errors v0.9.1 github.com/pkg/errors # github.com/pmezard/go-difflib v1.0.0 @@ -171,9 +167,9 @@ golang.org/x/text/transform golang.org/x/text/unicode/bidi golang.org/x/text/unicode/norm golang.org/x/text/width -# golang.org/x/time v0.0.0-20191024005414-555d28b269f0 +# golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e golang.org/x/time/rate -# golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 +# golang.org/x/tools v0.0.0-20200616195046-dc31b401abb5 golang.org/x/tools/go/ast/astutil golang.org/x/tools/go/gcexportdata golang.org/x/tools/go/internal/gcimporter @@ -189,7 +185,7 @@ golang.org/x/tools/internal/typesinternal # golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 golang.org/x/xerrors golang.org/x/xerrors/internal -# google.golang.org/appengine v1.6.5 +# google.golang.org/appengine v1.6.6 google.golang.org/appengine/internal google.golang.org/appengine/internal/base google.golang.org/appengine/internal/datastore @@ -273,9 +269,9 @@ gopkg.in/imdario/mergo.v0 gopkg.in/inf.v0 # gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 gopkg.in/op/go-logging.v1 -# gopkg.in/yaml.v2 v2.2.8 +# gopkg.in/yaml.v2 v2.3.0 gopkg.in/yaml.v2 -# gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966 +# gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 gopkg.in/yaml.v3 # k8s.io/api v0.19.3 ## explicit @@ -420,7 +416,7 @@ k8s.io/component-base/version k8s.io/klog/v2 # k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6 k8s.io/kube-openapi/pkg/util/proto -# k8s.io/utils v0.0.0-20200729134348-d5654de09c73 +# k8s.io/utils v0.0.0-20200912215256-4140de9c8800 k8s.io/utils/integer k8s.io/utils/path k8s.io/utils/pointer @@ -428,10 +424,10 @@ k8s.io/utils/trace # sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9 sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client -# sigs.k8s.io/controller-runtime v0.6.0 +# sigs.k8s.io/controller-runtime v0.7.0 ## explicit sigs.k8s.io/controller-runtime/pkg/scheme -# sigs.k8s.io/controller-tools v0.3.0 +# sigs.k8s.io/controller-tools v0.4.1 ## explicit sigs.k8s.io/controller-tools/cmd/controller-gen sigs.k8s.io/controller-tools/pkg/crd diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/scheme/scheme.go b/vendor/sigs.k8s.io/controller-runtime/pkg/scheme/scheme.go index 871cd441f..9dc93a9b2 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/scheme/scheme.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/scheme/scheme.go @@ -46,7 +46,7 @@ limitations under the License. // } // // func main() { -// mgr := controllers.NewManager(controllers.GetConfigOrDie(), manager.Options{ +// mgr := controllers.NewManager(context.Background(), controllers.GetConfigOrDie(), manager.Options{ // Scheme: scheme, // }) // // ... @@ -66,7 +66,7 @@ type Builder struct { runtime.SchemeBuilder } -// Register adds one or objects to the SchemeBuilder so they can be added to a Scheme. Register mutates bld. +// Register adds one or more objects to the SchemeBuilder so they can be added to a Scheme. Register mutates bld. func (bld *Builder) Register(object ...runtime.Object) *Builder { bld.SchemeBuilder.Register(func(scheme *runtime.Scheme) error { scheme.AddKnownTypes(bld.GroupVersion, object...) diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/gen.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/gen.go index b82ed49e7..255f686ae 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/gen.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/gen.go @@ -18,7 +18,9 @@ package crd import ( "fmt" + "go/ast" "go/types" + "os" apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextlegacy "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" @@ -31,6 +33,9 @@ import ( "sigs.k8s.io/controller-tools/pkg/version" ) +// The default CustomResourceDefinition version to generate. +const defaultVersion = "v1" + // +controllertools:marker:generateHelp // Generator generates CustomResourceDefinition objects. @@ -53,6 +58,16 @@ type Generator struct { // It's required to be false for v1 CRDs. PreserveUnknownFields *bool `marker:",optional"` + // AllowDangerousTypes allows types which are usually omitted from CRD generation + // because they are not recommended. + // + // Currently the following additional types are allowed when this is true: + // float32 + // float64 + // + // Left unspecified, the default is false + AllowDangerousTypes *bool `marker:",optional"` + // MaxDescLen specifies the maximum description length for fields in CRD's OpenAPI schema. // // 0 indicates drop the description for all fields completely. @@ -61,7 +76,7 @@ type Generator struct { MaxDescLen *int `marker:",optional"` // CRDVersions specifies the target API versions of the CRD type itself to - // generate. Defaults to v1beta1. + // generate. Defaults to v1. // // The first version listed will be assumed to be the "default" version and // will not get a version suffix in the output filename. @@ -71,6 +86,9 @@ type Generator struct { CRDVersions []string `marker:"crdVersions,optional"` } +func (Generator) CheckFilter() loader.NodeFilter { + return filterTypesForCRDs +} func (Generator) RegisterMarkers(into *markers.Registry) error { return crdmarkers.Register(into) } @@ -78,6 +96,8 @@ func (g Generator) Generate(ctx *genall.GenerationContext) error { parser := &Parser{ Collector: ctx.Collector, Checker: ctx.Checker, + // Perform defaulting here to avoid ambiguity later + AllowDangerousTypes: g.AllowDangerousTypes != nil && *g.AllowDangerousTypes == true, } AddKnownTypes(parser) @@ -101,7 +121,7 @@ func (g Generator) Generate(ctx *genall.GenerationContext) error { crdVersions := g.CRDVersions if len(crdVersions) == 0 { - crdVersions = []string{"v1beta1"} + crdVersions = []string{defaultVersion} } for groupKind := range kubeKinds { @@ -141,6 +161,11 @@ func (g Generator) Generate(ctx *genall.GenerationContext) error { } for i, crd := range versionedCRDs { + // defaults are not allowed to be specified in v1beta1 CRDs, so strip them + // before writing to a file + if crdVersions[i] == "v1beta1" { + removeDefaultsFromSchemas(crd.(*apiextlegacy.CustomResourceDefinition)) + } var fileName string if i == 0 { fileName = fmt.Sprintf("%s_%s.yaml", crdRaw.Spec.Group, crdRaw.Spec.Names.Plural) @@ -156,6 +181,49 @@ func (g Generator) Generate(ctx *genall.GenerationContext) error { return nil } +// removeDefaultsFromSchemas will remove all instances of default values being +// specified across all defined API versions +func removeDefaultsFromSchemas(crd *apiextlegacy.CustomResourceDefinition) { + if crd.Spec.Validation != nil { + removeDefaultsFromSchemaProps(crd.Spec.Validation.OpenAPIV3Schema) + } + + for _, versionSpec := range crd.Spec.Versions { + if versionSpec.Schema != nil { + removeDefaultsFromSchemaProps(versionSpec.Schema.OpenAPIV3Schema) + } + } +} + +// removeDefaultsFromSchemaProps will recurse into JSONSchemaProps to remove +// all instances of default values being specified +func removeDefaultsFromSchemaProps(v *apiextlegacy.JSONSchemaProps) { + if v == nil { + return + } + + if v.Default != nil { + fmt.Fprintln(os.Stderr, "Warning: default unsupported in CRD version v1beta1, v1 required. Removing defaults.") + } + + // nil-out the default field + v.Default = nil + for name, prop := range v.Properties { + // iter var reference is fine -- we handle the persistence of the modfications on the line below + //nolint:gosec + removeDefaultsFromSchemaProps(&prop) + v.Properties[name] = prop + } + if v.Items != nil { + removeDefaultsFromSchemaProps(v.Items.Schema) + for i := range v.Items.JSONSchemas { + props := v.Items.JSONSchemas[i] + removeDefaultsFromSchemaProps(&props) + v.Items.JSONSchemas[i] = props + } + } +} + // toTrivialVersions strips out all schemata except for the storage schema, // and moves that up into the root object. This makes the CRD compatible // with pre 1.13 clusters. @@ -262,3 +330,22 @@ func FindKubeKinds(parser *Parser, metav1Pkg *loader.Package) map[schema.GroupKi return kubeKinds } + +// filterTypesForCRDs filters out all nodes that aren't used in CRD generation, +// like interfaces and struct fields without JSON tag. +func filterTypesForCRDs(node ast.Node) bool { + switch node := node.(type) { + case *ast.InterfaceType: + // skip interfaces, we never care about references in them + return false + case *ast.StructType: + return true + case *ast.Field: + _, hasTag := loader.ParseAstTag(node.Tag).Lookup("json") + // fields without JSON tags mean we have custom serialization, + // so only visit fields with tags. + return hasTag + default: + return true + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/known_types.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/known_types.go index 4649ca3ac..e247dcf4f 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/known_types.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/known_types.go @@ -24,6 +24,14 @@ import ( // KnownPackages overrides types in some comment packages that have custom validation // but don't have validation markers on them (since they're from core Kubernetes). var KnownPackages = map[string]PackageOverride{ + "k8s.io/api/core/v1": func(p *Parser, pkg *loader.Package) { + // Explicit defaulting for the corev1.Protocol type in lieu of https://github.com/kubernetes/enhancements/pull/1928 + p.Schemata[TypeIdent{Name: "Protocol", Package: pkg}] = apiext.JSONSchemaProps{ + Type: "string", + Default: &apiext.JSON{Raw: []byte(`"TCP"`)}, + } + p.AddPackage(pkg) + }, "k8s.io/apimachinery/pkg/apis/meta/v1": func(p *Parser, pkg *loader.Package) { // ObjectMeta is managed by the Kubernetes API server, so no need to diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/validation.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/validation.go index d765e6d92..5bf8942d9 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/validation.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/validation.go @@ -40,6 +40,8 @@ var ValidationMarkers = mustMakeAllWithPrefix("kubebuilder:validation", markers. ExclusiveMaximum(false), ExclusiveMinimum(false), MultipleOf(0), + MinProperties(0), + MaxProperties(0), // string markers @@ -78,12 +80,20 @@ var FieldOnlyMarkers = []*definitionWithHelp{ must(markers.MakeAnyTypeDefinition("kubebuilder:default", markers.DescribesField, Default{})). WithHelp(Default{}.Help()), - must(markers.MakeDefinition("kubebuilder:pruning:PreserveUnknownFields", markers.DescribesField, XPreserveUnknownFields{})). - WithHelp(XPreserveUnknownFields{}.Help()), must(markers.MakeDefinition("kubebuilder:validation:EmbeddedResource", markers.DescribesField, XEmbeddedResource{})). WithHelp(XEmbeddedResource{}.Help()), } +// ValidationIshMarkers are field-and-type markers that don't fall under the +// :validation: prefix, and/or don't have a name that directly matches their +// type. +var ValidationIshMarkers = []*definitionWithHelp{ + must(markers.MakeDefinition("kubebuilder:pruning:PreserveUnknownFields", markers.DescribesField, XPreserveUnknownFields{})). + WithHelp(XPreserveUnknownFields{}.Help()), + must(markers.MakeDefinition("kubebuilder:pruning:PreserveUnknownFields", markers.DescribesType, XPreserveUnknownFields{})). + WithHelp(XPreserveUnknownFields{}.Help()), +} + func init() { AllDefinitions = append(AllDefinitions, ValidationMarkers...) @@ -99,6 +109,7 @@ func init() { } AllDefinitions = append(AllDefinitions, FieldOnlyMarkers...) + AllDefinitions = append(AllDefinitions, ValidationIshMarkers...) } // +controllertools:marker:generateHelp:category="CRD validation" @@ -106,7 +117,7 @@ func init() { type Maximum int // +controllertools:marker:generateHelp:category="CRD validation" -// Minimum specifies the minimum numeric value that this field can have. +// Minimum specifies the minimum numeric value that this field can have. Negative integers are supported. type Minimum int // +controllertools:marker:generateHelp:category="CRD validation" @@ -145,6 +156,14 @@ type MinItems int // UniqueItems specifies that all items in this list must be unique. type UniqueItems bool +// +controllertools:marker:generateHelp:category="CRD validation" +// MaxProperties restricts the number of keys in an object +type MaxProperties int + +// +controllertools:marker:generateHelp:category="CRD validation" +// MinProperties restricts the number of keys in an object +type MinProperties int + // +controllertools:marker:generateHelp:category="CRD validation" // Enum specifies that this (scalar) field is restricted to the *exact* values specified here. type Enum []interface{} @@ -191,6 +210,10 @@ type Default struct { // if nested properties or additionalProperties are specified in the schema. // This can either be true or undefined. False // is forbidden. +// +// NB: The kubebuilder:validation:XPreserveUnknownFields variant is deprecated +// in favor of the kubebuilder:pruning:PreserveUnknownFields variant. They function +// identically. type XPreserveUnknownFields struct{} // +controllertools:marker:generateHelp:category="CRD validation" @@ -289,6 +312,24 @@ func (m UniqueItems) ApplyToSchema(schema *apiext.JSONSchemaProps) error { return nil } +func (m MinProperties) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "object" { + return fmt.Errorf("must apply minproperties to an object") + } + val := int64(m) + schema.MinProperties = &val + return nil +} + +func (m MaxProperties) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "object" { + return fmt.Errorf("must apply maxproperties to an object") + } + val := int64(m) + schema.MaxProperties = &val + return nil +} + func (m Enum) ApplyToSchema(schema *apiext.JSONSchemaProps) error { // TODO(directxman12): this is a bit hacky -- we should // probably support AnyType better + using the schema structure diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/zz_generated.markerhelp.go index 152432bee..c1e02729e 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/zz_generated.markerhelp.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/zz_generated.markerhelp.go @@ -139,6 +139,17 @@ func (MaxLength) Help() *markers.DefinitionHelp { } } +func (MaxProperties) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "restricts the number of keys in an object", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + func (Maximum) Help() *markers.DefinitionHelp { return &markers.DefinitionHelp{ Category: "CRD validation", @@ -172,11 +183,22 @@ func (MinLength) Help() *markers.DefinitionHelp { } } +func (MinProperties) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "restricts the number of keys in an object", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + func (Minimum) Help() *markers.DefinitionHelp { return &markers.DefinitionHelp{ Category: "CRD validation", DetailedHelp: markers.DetailedHelp{ - Summary: "specifies the minimum numeric value that this field can have.", + Summary: "specifies the minimum numeric value that this field can have. Negative integers are supported.", Details: "", }, FieldHelp: map[string]markers.DetailedHelp{}, @@ -401,7 +423,7 @@ func (XPreserveUnknownFields) Help() *markers.DefinitionHelp { Category: "CRD processing", DetailedHelp: markers.DetailedHelp{ Summary: "PreserveUnknownFields stops the apiserver from pruning fields which are not specified. ", - Details: "By default the apiserver drops unknown fields from the request payload during the decoding step. This marker stops the API server from doing so. It affects fields recursively, but switches back to normal pruning behaviour if nested properties or additionalProperties are specified in the schema. This can either be true or undefined. False is forbidden.", + Details: "By default the apiserver drops unknown fields from the request payload during the decoding step. This marker stops the API server from doing so. It affects fields recursively, but switches back to normal pruning behaviour if nested properties or additionalProperties are specified in the schema. This can either be true or undefined. False is forbidden. \n NB: The kubebuilder:validation:XPreserveUnknownFields variant is deprecated in favor of the kubebuilder:pruning:PreserveUnknownFields variant. They function identically.", }, FieldHelp: map[string]markers.DetailedHelp{}, } diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/parser.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/parser.go index 34398a8c7..60bea3295 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/parser.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/parser.go @@ -18,7 +18,6 @@ package crd import ( "fmt" - "go/ast" apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apimachinery/pkg/runtime/schema" @@ -73,6 +72,20 @@ type Parser struct { packages map[*loader.Package]struct{} flattener *Flattener + + // AllowDangerousTypes controls the handling of non-recommended types such as float. If + // false (the default), these types are not supported. + // There is a continuum here: + // 1. Types that are always supported. + // 2. Types that are allowed by default, but not recommended (warning emitted when they are encountered as per PR #443). + // Possibly they are allowed by default for historical reasons and may even be "on their way out" at some point in the future. + // 3. Types that are not allowed by default, not recommended, but there are some legitimate reasons to need them in certain corner cases. + // Possibly these types should also emit a warning as per PR #443 even when they are "switched on" (an integration point between + // this feature and #443 if desired). This is the category that this flag deals with. + // 4. Types that are not allowed and will not be allowed, possibly because it just "doesn't make sense" or possibly + // because the implementation is too difficult/clunky to promote them to category 3. + // TODO: Should we have a more formal mechanism for putting "type patterns" in each of the above categories? + AllowDangerousTypes bool } func (p *Parser) init() { @@ -162,7 +175,7 @@ func (p *Parser) NeedSchemaFor(typ TypeIdent) { // avoid tripping recursive schemata, like ManagedFields, by adding an empty WIP schema p.Schemata[typ] = apiext.JSONSchemaProps{} - schemaCtx := newSchemaContext(typ.Package, p) + schemaCtx := newSchemaContext(typ.Package, p, p.AllowDangerousTypes) ctxForInfo := schemaCtx.ForInfo(info) pkgMarkers, err := markers.PackageMarkers(p.Collector, typ.Package) @@ -202,7 +215,7 @@ func (p *Parser) AddPackage(pkg *loader.Package) { return } p.indexTypes(pkg) - p.Checker.Check(pkg, filterTypesForCRDs) + p.Checker.Check(pkg) p.packages[pkg] = struct{}{} } @@ -222,22 +235,3 @@ func (p *Parser) NeedPackage(pkg *loader.Package) { } p.AddPackage(pkg) } - -// filterTypesForCRDs filters out all nodes that aren't used in CRD generation, -// like interfaces and struct fields without JSON tag. -func filterTypesForCRDs(node ast.Node) bool { - switch node := node.(type) { - case *ast.InterfaceType: - // skip interfaces, we never care about references in them - return false - case *ast.StructType: - return true - case *ast.Field: - _, hasTag := loader.ParseAstTag(node.Tag).Lookup("json") - // fields without JSON tags mean we have custom serialization, - // so only visit fields with tags. - return hasTag - default: - return true - } -} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema.go index 89237e6a7..8e44af593 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema.go @@ -67,15 +67,18 @@ type schemaContext struct { schemaRequester schemaRequester PackageMarkers markers.MarkerValues + + allowDangerousTypes bool } // newSchemaContext constructs a new schemaContext for the given package and schema requester. // It must have type info added before use via ForInfo. -func newSchemaContext(pkg *loader.Package, req schemaRequester) *schemaContext { +func newSchemaContext(pkg *loader.Package, req schemaRequester, allowDangerousTypes bool) *schemaContext { pkg.NeedTypesInfo() return &schemaContext{ - pkg: pkg, - schemaRequester: req, + pkg: pkg, + schemaRequester: req, + allowDangerousTypes: allowDangerousTypes, } } @@ -83,9 +86,10 @@ func newSchemaContext(pkg *loader.Package, req schemaRequester) *schemaContext { // as this one, except with the given type information. func (c *schemaContext) ForInfo(info *markers.TypeInfo) *schemaContext { return &schemaContext{ - pkg: c.pkg, - info: info, - schemaRequester: c.schemaRequester, + pkg: c.pkg, + info: info, + schemaRequester: c.schemaRequester, + allowDangerousTypes: c.allowDangerousTypes, } } @@ -200,7 +204,7 @@ func localNamedToSchema(ctx *schemaContext, ident *ast.Ident) *apiext.JSONSchema return &apiext.JSONSchemaProps{} } if basicInfo, isBasic := typeInfo.(*types.Basic); isBasic { - typ, fmt, err := builtinToType(basicInfo) + typ, fmt, err := builtinToType(basicInfo, ctx.allowDangerousTypes) if err != nil { ctx.pkg.AddError(loader.ErrFromNode(err, ident)) } @@ -297,6 +301,8 @@ func mapToSchema(ctx *schemaContext, mapType *ast.MapType) *apiext.JSONSchemaPro ctx.pkg.AddError(loader.ErrFromNode(fmt.Errorf("map values must be a named type, not %T", mapType.Value), mapType.Value)) return &apiext.JSONSchemaProps{} } + case *ast.StarExpr: + valSchema = typeToSchema(ctx.ForInfo(&markers.TypeInfo{}), val) default: ctx.pkg.AddError(loader.ErrFromNode(fmt.Errorf("map values must be a named type, not %T", mapType.Value), mapType.Value)) return &apiext.JSONSchemaProps{} @@ -390,8 +396,8 @@ func structToSchema(ctx *schemaContext, structType *ast.StructType) *apiext.JSON // builtinToType converts builtin basic types to their equivalent JSON schema form. // It *only* handles types allowed by the kubernetes API standards. Floats are not -// allowed. -func builtinToType(basic *types.Basic) (typ string, format string, err error) { +// allowed unless allowDangerousTypes is true +func builtinToType(basic *types.Basic, allowDangerousTypes bool) (typ string, format string, err error) { // NB(directxman12): formats from OpenAPI v3 are slightly different than those defined // in JSONSchema. This'll use the OpenAPI v3 ones, since they're useful for bounding our // non-string types. @@ -403,6 +409,8 @@ func builtinToType(basic *types.Basic) (typ string, format string, err error) { typ = "string" case basicInfo&types.IsInteger != 0: typ = "integer" + case basicInfo&types.IsFloat != 0 && allowDangerousTypes: + typ = "number" default: // NB(directxman12): floats are *NOT* allowed in kubernetes APIs return "", "", fmt.Errorf("unsupported type %q", basic.String()) diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema_visitor.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema_visitor.go index fc12c528c..2604d739b 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema_visitor.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema_visitor.go @@ -27,6 +27,10 @@ type SchemaVisitor interface { // this visitor will be called again with `nil` to indicate that // all children have been visited. If a nil visitor is returned, // children are not visited. + // + // It is *NOT* safe to save references to the given schema. + // Make deepcopies if you need to keep things around beyond + // the lifetime of the call. Visit(schema *apiext.JSONSchemaProps) SchemaVisitor } @@ -44,16 +48,37 @@ type schemaWalker struct { visitor SchemaVisitor } -// walkSchema walks the given schema, saving modifications made by the -// visitor (this is as simple as passing a pointer in most cases, -// but special care needs to be taken to persist with maps). +// walkSchema walks the given schema, saving modifications made by the visitor +// (this is as simple as passing a pointer in most cases, but special care +// needs to be taken to persist with maps). It also visits referenced +// schemata, dealing with circular references appropriately. The returned +// visitor will be used to visit all "children" of the current schema, followed +// by a nil schema with the returned visitor to mark completion. If a nil visitor +// is returned, traversal will no continue into the children of the current schema. func (w schemaWalker) walkSchema(schema *apiext.JSONSchemaProps) { - subVisitor := w.visitor.Visit(schema) - if subVisitor == nil { - return + // Walk a potential chain of schema references, keeping track of seen + // references to avoid circular references + subVisitor := w.visitor + seenRefs := map[string]bool{} + if schema.Ref != nil { + seenRefs[*schema.Ref] = true + } + for { + subVisitor = subVisitor.Visit(schema) + if subVisitor == nil { + return + } + // mark completion of the visitor + defer subVisitor.Visit(nil) + + // Break if schema is not a reference or a cycle is detected + if schema.Ref == nil || len(*schema.Ref) == 0 || seenRefs[*schema.Ref] { + break + } + seenRefs[*schema.Ref] = true } - defer subVisitor.Visit(nil) + // walk sub-schemata subWalker := schemaWalker{visitor: subVisitor} if schema.Items != nil { subWalker.walkPtr(schema.Items.Schema) @@ -81,6 +106,8 @@ func (w schemaWalker) walkSchema(schema *apiext.JSONSchemaProps) { // walkMap walks over values of the given map, saving changes to them. func (w schemaWalker) walkMap(defs map[string]apiext.JSONSchemaProps) { for name, def := range defs { + // this is iter var reference is because we immediately preseve it below + //nolint:gosec w.walkSchema(&def) // make sure the edits actually go through since we can't // take a reference to the value in the map diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/zz_generated.markerhelp.go index c770a3087..5c0a45dd9 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/zz_generated.markerhelp.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/zz_generated.markerhelp.go @@ -40,12 +40,16 @@ func (Generator) Help() *markers.DefinitionHelp { Summary: "indicates whether or not we should turn off pruning. ", Details: "Left unspecified, it'll default to true when only a v1beta1 CRD is generated (to preserve compatibility with older versions of this tool), or false otherwise. \n It's required to be false for v1 CRDs.", }, + "AllowDangerousTypes": markers.DetailedHelp{ + Summary: "allows types which are usually omitted from CRD generation because they are not recommended. ", + Details: "Currently the following additional types are allowed when this is true: float32 float64 \n Left unspecified, the default is false", + }, "MaxDescLen": markers.DetailedHelp{ Summary: "specifies the maximum description length for fields in CRD's OpenAPI schema. ", Details: "0 indicates drop the description for all fields completely. n indicates limit the description to at most n characters and truncate the description to closest sentence boundary if it exceeds n characters.", }, "CRDVersions": markers.DetailedHelp{ - Summary: "specifies the target API versions of the CRD type itself to generate. Defaults to v1beta1. ", + Summary: "specifies the target API versions of the CRD type itself to generate. Defaults to v1. ", Details: "The first version listed will be assumed to be the \"default\" version and will not get a version suffix in the output filename. \n You'll need to use \"v1\" to get support for features like defaulting, along with an API server that supports it (Kubernetes 1.16+).", }, }, diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/gen.go b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/gen.go index a10c70589..54a72363b 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/gen.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/gen.go @@ -58,6 +58,14 @@ type Generator struct { Year string `marker:",optional"` } +func (Generator) CheckFilter() loader.NodeFilter { + return func(node ast.Node) bool { + // ignore interfaces + _, isIface := node.(*ast.InterfaceType) + return !isIface + } +} + func (Generator) RegisterMarkers(into *markers.Registry) error { if err := markers.RegisterAll(into, enablePkgMarker, legacyEnablePkgMarker, enableTypeMarker, @@ -144,7 +152,7 @@ func (d Generator) Generate(ctx *genall.GenerationContext) error { } for _, root := range ctx.Roots { - outContents := objGenCtx.GenerateForPackage(root) + outContents := objGenCtx.generateForPackage(root) if outContents == nil { continue } @@ -186,21 +194,17 @@ import ( } -// GenerateForPackage generates DeepCopy and runtime.Object implementations for +// generateForPackage generates DeepCopy and runtime.Object implementations for // types in the given package, writing the formatted result to given writer. // May return nil if source could not be generated. -func (ctx *ObjectGenCtx) GenerateForPackage(root *loader.Package) []byte { +func (ctx *ObjectGenCtx) generateForPackage(root *loader.Package) []byte { allTypes, err := enabledOnPackage(ctx.Collector, root) if err != nil { root.AddError(err) return nil } - ctx.Checker.Check(root, func(node ast.Node) bool { - // ignore interfaces - _, isIface := node.(*ast.InterfaceType) - return !isIface - }) + ctx.Checker.Check(root) root.NeedTypesInfo() diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/traverse.go b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/traverse.go index 1c92e48a0..3a751757d 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/traverse.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/traverse.go @@ -197,7 +197,7 @@ func (n *namingInfo) Syntax(basePkg *loader.Package, imports *importsList) strin (&namingInfo{typeInfo: typeInfo.Key()}).Syntax(basePkg, imports), (&namingInfo{typeInfo: typeInfo.Elem()}).Syntax(basePkg, imports)) default: - basePkg.AddError(fmt.Errorf("name requested for invalid type %s", typeInfo)) + basePkg.AddError(fmt.Errorf("name requested for invalid type: %s", typeInfo)) return typeInfo.String() } } @@ -215,7 +215,7 @@ type copyMethodMaker struct { func (c *copyMethodMaker) GenerateMethodsFor(root *loader.Package, info *markers.TypeInfo) { typeInfo := root.TypesInfo.TypeOf(info.RawSpec.Name) if typeInfo == types.Typ[types.Invalid] { - root.AddError(loader.ErrFromNode(fmt.Errorf("unknown type %s", info.Name), info.RawSpec)) + root.AddError(loader.ErrFromNode(fmt.Errorf("unknown type: %s", info.Name), info.RawSpec)) } // figure out if we need to use a pointer receiver -- most types get a pointer receiver, @@ -293,13 +293,18 @@ func (c *copyMethodMaker) genDeepCopyIntoBlock(actualName *namingInfo, typeInfo switch last := last.(type) { case *types.Basic: - // basic types themselves can be "shallow" copied, so all we need - // to do is check if our *actual* type (not the underlying one) has - // a custom method implemented. - if hasMethod, _ := hasDeepCopyMethod(c.pkg, typeInfo); hasMethod { - c.Line("*out = in.DeepCopy()") + switch last.Kind() { + case types.Invalid, types.UnsafePointer: + c.pkg.AddError(fmt.Errorf("invalid type: %s", last)) + default: + // basic types themselves can be "shallow" copied, so all we need + // to do is check if our *actual* type (not the underlying one) has + // a custom method implemented. + if hasMethod, _ := hasDeepCopyMethod(c.pkg, typeInfo); hasMethod { + c.Line("*out = in.DeepCopy()") + } + c.Line("*out = *in") } - c.Line("*out = *in") case *types.Map: c.genMapDeepCopy(actualName, last) case *types.Slice: @@ -312,7 +317,7 @@ func (c *copyMethodMaker) genDeepCopyIntoBlock(actualName *namingInfo, typeInfo // handled via the above loop, should never happen c.pkg.AddError(fmt.Errorf("interface type %s encountered directly, invalid condition", last)) default: - c.pkg.AddError(fmt.Errorf("invalid type %s", last)) + c.pkg.AddError(fmt.Errorf("invalid type: %s", last)) } } @@ -322,7 +327,7 @@ func (c *copyMethodMaker) genMapDeepCopy(actualName *namingInfo, mapType *types. // maps *must* have shallow-copiable types, since we just iterate // through the keys, only trying to deepcopy the values. if !fineToShallowCopy(mapType.Key()) { - c.pkg.AddError(fmt.Errorf("invalid map key type %s", mapType.Key())) + c.pkg.AddError(fmt.Errorf("invalid map key type: %s", mapType.Key())) return } @@ -383,7 +388,7 @@ func (c *copyMethodMaker) genMapDeepCopy(actualName *namingInfo, mapType *types. // structs will have deepcopy generated for them, so use that c.Line("(*out)[key] = *val.DeepCopy()") default: - c.pkg.AddError(fmt.Errorf("invalid map value type %s", underlyingElem)) + c.pkg.AddError(fmt.Errorf("invalid map value type: %s", underlyingElem)) return } } @@ -425,7 +430,7 @@ func (c *copyMethodMaker) genSliceDeepCopy(actualName *namingInfo, sliceType *ty // structs will always have deepcopy c.Linef("(*in)[i].DeepCopyInto(&(*out)[i])") default: - c.pkg.AddError(fmt.Errorf("invalid slice element type %s", underlyingElem)) + c.pkg.AddError(fmt.Errorf("invalid slice element type: %s", underlyingElem)) } }) } @@ -483,7 +488,13 @@ func (c *copyMethodMaker) genStructDeepCopy(_ *namingInfo, structType *types.Str // otherwise... switch underlyingField := underlyingField.(type) { case *types.Basic: - // nothing to do, initial assignment copied this + switch underlyingField.Kind() { + case types.Invalid, types.UnsafePointer: + c.pkg.AddError(loader.ErrFromNode(fmt.Errorf("invalid field type: %s", underlyingField), field)) + return + default: + // nothing to do, initial assignment copied this + } case *types.Struct: if fineToShallowCopy(field.Type()) { c.Linef("out.%[1]s = in.%[1]s", field.Name()) @@ -491,7 +502,7 @@ func (c *copyMethodMaker) genStructDeepCopy(_ *namingInfo, structType *types.Str c.Linef("in.%[1]s.DeepCopyInto(&out.%[1]s)", field.Name()) } default: - c.pkg.AddError(fmt.Errorf("invalid field type %s", underlyingField)) + c.pkg.AddError(loader.ErrFromNode(fmt.Errorf("invalid field type: %s", underlyingField), field)) return } } @@ -542,7 +553,7 @@ func (c *copyMethodMaker) genPointerDeepCopy(_ *namingInfo, pointerType *types.P c.Linef("*out = new(%[1]s)", (&namingInfo{typeInfo: pointerType.Elem()}).Syntax(c.pkg, c.importsList)) c.Line("(*in).DeepCopyInto(*out)") default: - c.pkg.AddError(fmt.Errorf("invalid pointer element type %s", underlyingElem)) + c.pkg.AddError(fmt.Errorf("invalid pointer element type: %s", underlyingElem)) return } } @@ -602,7 +613,7 @@ func shouldBeCopied(pkg *loader.Package, info *markers.TypeInfo) bool { typeInfo := pkg.TypesInfo.TypeOf(info.RawSpec.Name) if typeInfo == types.Typ[types.Invalid] { - pkg.AddError(loader.ErrFromNode(fmt.Errorf("unknown type %s", info.Name), info.RawSpec)) + pkg.AddError(loader.ErrFromNode(fmt.Errorf("unknown type: %s", info.Name), info.RawSpec)) return false } @@ -735,8 +746,14 @@ func eventualUnderlyingType(typeInfo types.Type) types.Type { func fineToShallowCopy(typeInfo types.Type) bool { switch typeInfo := typeInfo.(type) { case *types.Basic: - // basic types (int, string, etc) are always fine to shallow-copy - return true + // basic types (int, string, etc) are always fine to shallow-copy, + // except for Invalid and UnsafePointer, which can't be copied at all. + switch typeInfo.Kind() { + case types.Invalid, types.UnsafePointer: + return false + default: + return true + } case *types.Named: // aliases are fine to shallow-copy as long as they resolve to a shallow-copyable type return fineToShallowCopy(typeInfo.Underlying()) diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/genall.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/genall.go index 9fcc76236..0206a4afa 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/genall/genall.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/genall.go @@ -46,6 +46,32 @@ func (g Generators) RegisterMarkers(reg *markers.Registry) error { return nil } +// CheckFilters returns the set of NodeFilters for all Generators that +// implement NeedsTypeChecking. +func (g Generators) CheckFilters() []loader.NodeFilter { + var filters []loader.NodeFilter + for _, gen := range g { + withFilter, needsChecking := (*gen).(NeedsTypeChecking) + if !needsChecking { + continue + } + filters = append(filters, withFilter.CheckFilter()) + } + return filters +} + +// NeedsTypeChecking indicates that a particular generator needs & has opinions +// on typechecking. If this is not implemented, a generator will be given a +// context with a nil typechecker. +type NeedsTypeChecking interface { + // CheckFilter indicates the loader.NodeFilter (if any) that should be used + // to prune out unused types/packages when type-checking (nodes for which + // the filter returns true are considered "interesting"). This filter acts + // as a baseline -- all types the pass through this filter will be checked, + // but more than that may also be checked due to other generators' filters. + CheckFilter() loader.NodeFilter +} + // Generator knows how to register some set of markers, and then produce // output artifacts based on loaded code containing those markers, // sharing common loaded data. @@ -144,7 +170,9 @@ func (g Generators) ForRoots(rootPaths ...string) (*Runtime, error) { }, Roots: roots, InputRule: InputFromFileSystem, - Checker: &loader.TypeChecker{}, + Checker: &loader.TypeChecker{ + NodeFilters: g.CheckFilters(), + }, }, OutputRules: OutputRules{Default: OutputToNothing}, } @@ -165,14 +193,23 @@ func (r *Runtime) Run() bool { return true } + hadErrs := false for _, gen := range r.Generators { ctx := r.GenerationContext // make a shallow copy ctx.OutputRule = r.OutputRules.ForGenerator(gen) + + // don't pass a typechecker to generators that don't provide a filter + // to avoid accidents + if _, needsChecking := (*gen).(NeedsTypeChecking); !needsChecking { + ctx.Checker = nil + } + if err := (*gen).Generate(&ctx); err != nil { fmt.Fprintln(os.Stderr, err) + hadErrs = true } } // skip TypeErrors -- they're probably just from partial typechecking in crd-gen - return loader.PrintErrors(r.Roots, packages.TypeError) + return loader.PrintErrors(r.Roots, packages.TypeError) || hadErrs } diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/loader/errors.go b/vendor/sigs.k8s.io/controller-tools/pkg/loader/errors.go index aae8ef39f..5a675798e 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/loader/errors.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/loader/errors.go @@ -18,7 +18,6 @@ package loader import ( "fmt" - "go/ast" "go/token" ) @@ -29,10 +28,15 @@ type PositionedError struct { error } +// Node is the intersection of go/ast.Node and go/types.Var. +type Node interface { + Pos() token.Pos // position of first character belonging to the node +} + // ErrFromNode returns the given error, with additional information // attaching it to the given AST node. It will automatically map // over error lists. -func ErrFromNode(err error, node ast.Node) error { +func ErrFromNode(err error, node Node) error { if asList, isList := err.(ErrList); isList { resList := make(ErrList, len(asList)) for i, baseErr := range asList { diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/loader/refs.go b/vendor/sigs.k8s.io/controller-tools/pkg/loader/refs.go index 9e2989cf5..59ea262bb 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/loader/refs.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/loader/refs.go @@ -185,37 +185,51 @@ func allReferencedPackages(pkg *Package, filterNodes NodeFilter) []*Package { // checking each package's types' externally-referenced types, and only // type-checking those packages. type TypeChecker struct { + // NodeFilters are used to filter the set of references that are followed + // when typechecking. If any of the filters returns true for a given node, + // its package will be added to the set of packages to check. + // + // If no filters are specified, all references are followed (this may be slow). + // + // Modifying this after the first call to check may yield strange/invalid + // results. + NodeFilters []NodeFilter + checkedPackages map[*Package]struct{} - filterNodes NodeFilter sync.Mutex } -// Check type-checks the given package and all packages referenced -// by types that pass through (have true returned by) filterNodes. -func (c *TypeChecker) Check(root *Package, filterNodes NodeFilter) { +// Check type-checks the given package and all packages referenced by types +// that pass through (have true returned by) any of the NodeFilters. +func (c *TypeChecker) Check(root *Package) { c.init() - if filterNodes == nil { - filterNodes = c.filterNodes - } - // use a sub-checker with the appropriate settings (&TypeChecker{ - filterNodes: filterNodes, + NodeFilters: c.NodeFilters, checkedPackages: c.checkedPackages, }).check(root) } -func (c *TypeChecker) init() { - if c.checkedPackages == nil { - c.checkedPackages = make(map[*Package]struct{}) +func (c *TypeChecker) isNodeInteresting(node ast.Node) bool { + // no filters --> everything is important + if len(c.NodeFilters) == 0 { + return true } - if c.filterNodes == nil { - // check every type by default - c.filterNodes = func(_ ast.Node) bool { + + // otherwise, passing through any one filter means this node is important + for _, filter := range c.NodeFilters { + if filter(node) { return true } } + return false +} + +func (c *TypeChecker) init() { + if c.checkedPackages == nil { + c.checkedPackages = make(map[*Package]struct{}) + } } // check recursively type-checks the given package, only loading packages that @@ -232,7 +246,7 @@ func (c *TypeChecker) check(root *Package) { return } - refedPackages := allReferencedPackages(root, c.filterNodes) + refedPackages := allReferencedPackages(root, c.isNodeInteresting) // first, resolve imports for all leaf packages... var wg sync.WaitGroup diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/markers/parse.go b/vendor/sigs.k8s.io/controller-tools/pkg/markers/parse.go index 4034c25ab..fcb33925e 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/markers/parse.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/markers/parse.go @@ -340,8 +340,13 @@ func guessType(scanner *sc.Scanner, raw string, allowSlice bool) *Argument { } } + // then, integers... if !probablyString { - if nextTok := subScanner.Scan(); nextTok == sc.Int { + nextTok := subScanner.Scan() + if nextTok == '-' { + nextTok = subScanner.Scan() + } + if nextTok == sc.Int { return &Argument{Type: IntType} } } @@ -481,11 +486,21 @@ func (a *Argument) parse(scanner *sc.Scanner, raw string, out reflect.Value, inS for tok := scanner.Scan(); tok != sc.EOF; tok = scanner.Scan() { } case IntType: + nextChar := scanner.Peek() + isNegative := false + if nextChar == '-' { + isNegative = true + scanner.Scan() // eat the '-' + } if !expect(scanner, sc.Int, "integer") { return } // TODO(directxman12): respect the size when parsing - val, err := strconv.Atoi(scanner.TokenText()) + text := scanner.TokenText() + if isNegative { + text = "-" + text + } + val, err := strconv.Atoi(text) if err != nil { scanner.Error(scanner, fmt.Sprintf("unable to parse integer: %v", err)) return diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/gen.go b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/gen.go index 3b233650c..6e71cbcfa 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/gen.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/gen.go @@ -32,6 +32,7 @@ import ( crdgen "sigs.k8s.io/controller-tools/pkg/crd" crdmarkers "sigs.k8s.io/controller-tools/pkg/crd/markers" "sigs.k8s.io/controller-tools/pkg/genall" + "sigs.k8s.io/controller-tools/pkg/loader" "sigs.k8s.io/controller-tools/pkg/markers" yamlop "sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml" ) @@ -87,6 +88,10 @@ type Generator struct { var _ genall.Generator = &Generator{} +func (Generator) CheckFilter() loader.NodeFilter { + return crdgen.Generator{}.CheckFilter() +} + func (Generator) RegisterMarkers(into *markers.Registry) error { return crdmarkers.Register(into) } diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/webhook/conv.go b/vendor/sigs.k8s.io/controller-tools/pkg/webhook/conv.go new file mode 100644 index 000000000..e85b06b1a --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/webhook/conv.go @@ -0,0 +1,44 @@ +/* +Copyright 2020 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package webhook + +import ( + admissionregv1 "k8s.io/api/admissionregistration/v1" + admissionregv1beta1 "k8s.io/api/admissionregistration/v1beta1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" +) + +var ( + conversionScheme = runtime.NewScheme() +) + +func init() { + utilruntime.Must(admissionregv1.AddToScheme(conversionScheme)) + utilruntime.Must(admissionregv1beta1.AddToScheme(conversionScheme)) +} + +// MutatingWebhookConfigurationAsVersion converts a MutatingWebhookConfiguration from the canonical internal form (currently v1) to some external form. +func MutatingWebhookConfigurationAsVersion(original *admissionregv1.MutatingWebhookConfiguration, gv schema.GroupVersion) (runtime.Object, error) { + return conversionScheme.ConvertToVersion(original, gv) +} + +// ValidatingWebhookConfigurationAsVersion converts a ValidatingWebhookConfiguration from the canonical internal form (currently v1) to some external form. +func ValidatingWebhookConfigurationAsVersion(original *admissionregv1.ValidatingWebhookConfiguration, gv schema.GroupVersion) (runtime.Object, error) { + return conversionScheme.ConvertToVersion(original, gv) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/webhook/parser.go b/vendor/sigs.k8s.io/controller-tools/pkg/webhook/parser.go index 21eaa90cf..d9cfd6321 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/webhook/parser.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/webhook/parser.go @@ -19,26 +19,38 @@ limitations under the License. // // The markers take the form: // -// +kubebuilder:webhook:failurePolicy=,matchPolicy=,groups=<[]string>,resources=<[]string>,verbs=<[]string>,versions=<[]string>,name=,path=,mutating=,sideEffects= +// +kubebuilder:webhook:webhookVersions=<[]string>,failurePolicy=,matchPolicy=,groups=<[]string>,resources=<[]string>,verbs=<[]string>,versions=<[]string>,name=,path=,mutating=,sideEffects=,admissionReviewVersions=<[]string> package webhook import ( "fmt" "strings" - admissionreg "k8s.io/api/admissionregistration/v1beta1" + admissionregv1 "k8s.io/api/admissionregistration/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/sets" "sigs.k8s.io/controller-tools/pkg/genall" "sigs.k8s.io/controller-tools/pkg/markers" ) +// The default {Mutating,Validating}WebhookConfiguration version to generate. +const ( + defaultWebhookVersion = "v1" +) + var ( // ConfigDefinition s a marker for defining Webhook manifests. // Call ToWebhook on the value to get a Kubernetes Webhook. ConfigDefinition = markers.Must(markers.MakeDefinition("kubebuilder:webhook", markers.DescribesPackage, Config{})) ) +// supportedWebhookVersions returns currently supported API version of {Mutating,Validating}WebhookConfiguration. +func supportedWebhookVersions() []string { + return []string{defaultWebhookVersion, "v1beta1"} +} + // +controllertools:marker:generateHelp:category=Webhook // Config specifies how a webhook should be served. @@ -91,79 +103,91 @@ type Config struct { // batch.tutorial.kubebuilder.io/v1,Kind=CronJob would be // /validate-batch-tutorial-kubebuilder-io-v1-cronjob Path string + + // WebhookVersions specifies the target API versions of the {Mutating,Validating}WebhookConfiguration objects + // itself to generate. Defaults to v1. + WebhookVersions []string `marker:"webhookVersions,optional"` + + // AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` + // versions the Webhook expects. + // For generating v1 {Mutating,Validating}WebhookConfiguration, this is mandatory. + // For generating v1beta1 {Mutating,Validating}WebhookConfiguration, this is optional, and default to v1beta1. + AdmissionReviewVersions []string `marker:"admissionReviewVersions,optional"` } // verbToAPIVariant converts a marker's verb to the proper value for the API. // Unrecognized verbs are passed through. -func verbToAPIVariant(verbRaw string) admissionreg.OperationType { +func verbToAPIVariant(verbRaw string) admissionregv1.OperationType { switch strings.ToLower(verbRaw) { - case strings.ToLower(string(admissionreg.Create)): - return admissionreg.Create - case strings.ToLower(string(admissionreg.Update)): - return admissionreg.Update - case strings.ToLower(string(admissionreg.Delete)): - return admissionreg.Delete - case strings.ToLower(string(admissionreg.Connect)): - return admissionreg.Connect - case strings.ToLower(string(admissionreg.OperationAll)): - return admissionreg.OperationAll + case strings.ToLower(string(admissionregv1.Create)): + return admissionregv1.Create + case strings.ToLower(string(admissionregv1.Update)): + return admissionregv1.Update + case strings.ToLower(string(admissionregv1.Delete)): + return admissionregv1.Delete + case strings.ToLower(string(admissionregv1.Connect)): + return admissionregv1.Connect + case strings.ToLower(string(admissionregv1.OperationAll)): + return admissionregv1.OperationAll default: - return admissionreg.OperationType(verbRaw) + return admissionregv1.OperationType(verbRaw) } } // ToMutatingWebhook converts this rule to its Kubernetes API form. -func (c Config) ToMutatingWebhook() (admissionreg.MutatingWebhook, error) { +func (c Config) ToMutatingWebhook() (admissionregv1.MutatingWebhook, error) { if !c.Mutating { - return admissionreg.MutatingWebhook{}, fmt.Errorf("%s is a validating webhook", c.Name) + return admissionregv1.MutatingWebhook{}, fmt.Errorf("%s is a validating webhook", c.Name) } matchPolicy, err := c.matchPolicy() if err != nil { - return admissionreg.MutatingWebhook{}, err + return admissionregv1.MutatingWebhook{}, err } - return admissionreg.MutatingWebhook{ - Name: c.Name, - Rules: c.rules(), - FailurePolicy: c.failurePolicy(), - MatchPolicy: matchPolicy, - ClientConfig: c.clientConfig(), - SideEffects: c.sideEffects(), + return admissionregv1.MutatingWebhook{ + Name: c.Name, + Rules: c.rules(), + FailurePolicy: c.failurePolicy(), + MatchPolicy: matchPolicy, + ClientConfig: c.clientConfig(), + SideEffects: c.sideEffects(), + AdmissionReviewVersions: c.AdmissionReviewVersions, }, nil } // ToValidatingWebhook converts this rule to its Kubernetes API form. -func (c Config) ToValidatingWebhook() (admissionreg.ValidatingWebhook, error) { +func (c Config) ToValidatingWebhook() (admissionregv1.ValidatingWebhook, error) { if c.Mutating { - return admissionreg.ValidatingWebhook{}, fmt.Errorf("%s is a mutating webhook", c.Name) + return admissionregv1.ValidatingWebhook{}, fmt.Errorf("%s is a mutating webhook", c.Name) } matchPolicy, err := c.matchPolicy() if err != nil { - return admissionreg.ValidatingWebhook{}, err + return admissionregv1.ValidatingWebhook{}, err } - return admissionreg.ValidatingWebhook{ - Name: c.Name, - Rules: c.rules(), - FailurePolicy: c.failurePolicy(), - MatchPolicy: matchPolicy, - ClientConfig: c.clientConfig(), - SideEffects: c.sideEffects(), + return admissionregv1.ValidatingWebhook{ + Name: c.Name, + Rules: c.rules(), + FailurePolicy: c.failurePolicy(), + MatchPolicy: matchPolicy, + ClientConfig: c.clientConfig(), + SideEffects: c.sideEffects(), + AdmissionReviewVersions: c.AdmissionReviewVersions, }, nil } // rules returns the configuration of what operations on what // resources/subresources a webhook should care about. -func (c Config) rules() []admissionreg.RuleWithOperations { - whConfig := admissionreg.RuleWithOperations{ - Rule: admissionreg.Rule{ +func (c Config) rules() []admissionregv1.RuleWithOperations { + whConfig := admissionregv1.RuleWithOperations{ + Rule: admissionregv1.Rule{ APIGroups: c.Groups, APIVersions: c.Versions, Resources: c.Resources, }, - Operations: make([]admissionreg.OperationType, len(c.Verbs)), + Operations: make([]admissionregv1.OperationType, len(c.Verbs)), } for i, verbRaw := range c.Verbs { @@ -177,32 +201,32 @@ func (c Config) rules() []admissionreg.RuleWithOperations { } } - return []admissionreg.RuleWithOperations{whConfig} + return []admissionregv1.RuleWithOperations{whConfig} } // failurePolicy converts the string value to the proper value for the API. // Unrecognized values are passed through. -func (c Config) failurePolicy() *admissionreg.FailurePolicyType { - var failurePolicy admissionreg.FailurePolicyType +func (c Config) failurePolicy() *admissionregv1.FailurePolicyType { + var failurePolicy admissionregv1.FailurePolicyType switch strings.ToLower(c.FailurePolicy) { - case strings.ToLower(string(admissionreg.Ignore)): - failurePolicy = admissionreg.Ignore - case strings.ToLower(string(admissionreg.Fail)): - failurePolicy = admissionreg.Fail + case strings.ToLower(string(admissionregv1.Ignore)): + failurePolicy = admissionregv1.Ignore + case strings.ToLower(string(admissionregv1.Fail)): + failurePolicy = admissionregv1.Fail default: - failurePolicy = admissionreg.FailurePolicyType(c.FailurePolicy) + failurePolicy = admissionregv1.FailurePolicyType(c.FailurePolicy) } return &failurePolicy } // matchPolicy converts the string value to the proper value for the API. -func (c Config) matchPolicy() (*admissionreg.MatchPolicyType, error) { - var matchPolicy admissionreg.MatchPolicyType +func (c Config) matchPolicy() (*admissionregv1.MatchPolicyType, error) { + var matchPolicy admissionregv1.MatchPolicyType switch strings.ToLower(c.MatchPolicy) { - case strings.ToLower(string(admissionreg.Exact)): - matchPolicy = admissionreg.Exact - case strings.ToLower(string(admissionreg.Equivalent)): - matchPolicy = admissionreg.Equivalent + case strings.ToLower(string(admissionregv1.Exact)): + matchPolicy = admissionregv1.Exact + case strings.ToLower(string(admissionregv1.Equivalent)): + matchPolicy = admissionregv1.Equivalent case "": return nil, nil default: @@ -212,31 +236,27 @@ func (c Config) matchPolicy() (*admissionreg.MatchPolicyType, error) { } // clientConfig returns the client config for a webhook. -func (c Config) clientConfig() admissionreg.WebhookClientConfig { +func (c Config) clientConfig() admissionregv1.WebhookClientConfig { path := c.Path - return admissionreg.WebhookClientConfig{ - Service: &admissionreg.ServiceReference{ + return admissionregv1.WebhookClientConfig{ + Service: &admissionregv1.ServiceReference{ Name: "webhook-service", Namespace: "system", Path: &path, }, - // OpenAPI marks the field as required before 1.13 because of a bug that got fixed in - // https://github.com/kubernetes/api/commit/e7d9121e9ffd63cea0288b36a82bcc87b073bd1b - // Put "\n" as an placeholder as a workaround til 1.13+ is almost everywhere. - CABundle: []byte("\n"), } } // sideEffects returns the sideEffects config for a webhook. -func (c Config) sideEffects() *admissionreg.SideEffectClass { - var sideEffects admissionreg.SideEffectClass +func (c Config) sideEffects() *admissionregv1.SideEffectClass { + var sideEffects admissionregv1.SideEffectClass switch strings.ToLower(c.SideEffects) { - case strings.ToLower(string(admissionreg.SideEffectClassNone)): - sideEffects = admissionreg.SideEffectClassNone - case strings.ToLower(string(admissionreg.SideEffectClassNoneOnDryRun)): - sideEffects = admissionreg.SideEffectClassNoneOnDryRun - case strings.ToLower(string(admissionreg.SideEffectClassSome)): - sideEffects = admissionreg.SideEffectClassSome + case strings.ToLower(string(admissionregv1.SideEffectClassNone)): + sideEffects = admissionregv1.SideEffectClassNone + case strings.ToLower(string(admissionregv1.SideEffectClassNoneOnDryRun)): + sideEffects = admissionregv1.SideEffectClassNoneOnDryRun + case strings.ToLower(string(admissionregv1.SideEffectClassSome)): + sideEffects = admissionregv1.SideEffectClassSome case "": return nil default: @@ -245,6 +265,21 @@ func (c Config) sideEffects() *admissionreg.SideEffectClass { return &sideEffects } +// webhookVersions returns the target API versions of the {Mutating,Validating}WebhookConfiguration objects for a webhook. +func (c Config) webhookVersions() ([]string, error) { + // If WebhookVersions is not specified, we default it to `v1`. + if len(c.WebhookVersions) == 0 { + return []string{defaultWebhookVersion}, nil + } + supportedWebhookVersions := sets.NewString(supportedWebhookVersions()...) + for _, version := range c.WebhookVersions { + if !supportedWebhookVersions.Has(version) { + return nil, fmt.Errorf("unsupported webhook version: %s", version) + } + } + return sets.NewString(c.WebhookVersions...).UnsortedList(), nil +} + // +controllertools:marker:generateHelp // Generator generates (partial) {Mutating,Validating}WebhookConfiguration objects. @@ -259,8 +294,9 @@ func (Generator) RegisterMarkers(into *markers.Registry) error { } func (Generator) Generate(ctx *genall.GenerationContext) error { - var mutatingCfgs []admissionreg.MutatingWebhook - var validatingCfgs []admissionreg.ValidatingWebhook + supportedWebhookVersions := supportedWebhookVersions() + mutatingCfgs := make(map[string][]admissionregv1.MutatingWebhook, len(supportedWebhookVersions)) + validatingCfgs := make(map[string][]admissionregv1.ValidatingWebhook, len(supportedWebhookVersions)) for _, root := range ctx.Roots { markerSet, err := markers.PackageMarkers(ctx.Collector, root) if err != nil { @@ -269,47 +305,122 @@ func (Generator) Generate(ctx *genall.GenerationContext) error { for _, cfg := range markerSet[ConfigDefinition.Name] { cfg := cfg.(Config) + webhookVersions, err := cfg.webhookVersions() + if err != nil { + return err + } if cfg.Mutating { - w, _ := cfg.ToMutatingWebhook() - mutatingCfgs = append(mutatingCfgs, w) + w, err := cfg.ToMutatingWebhook() + if err != nil { + return err + } + for _, webhookVersion := range webhookVersions { + mutatingCfgs[webhookVersion] = append(mutatingCfgs[webhookVersion], w) + } } else { - w, _ := cfg.ToValidatingWebhook() - validatingCfgs = append(validatingCfgs, w) + w, err := cfg.ToValidatingWebhook() + if err != nil { + return err + } + for _, webhookVersion := range webhookVersions { + validatingCfgs[webhookVersion] = append(validatingCfgs[webhookVersion], w) + } } } } - var objs []interface{} - if len(mutatingCfgs) > 0 { - objs = append(objs, &admissionreg.MutatingWebhookConfiguration{ - TypeMeta: metav1.TypeMeta{ - Kind: "MutatingWebhookConfiguration", - APIVersion: admissionreg.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "mutating-webhook-configuration", - }, - Webhooks: mutatingCfgs, - }) - } - - if len(validatingCfgs) > 0 { - objs = append(objs, &admissionreg.ValidatingWebhookConfiguration{ - TypeMeta: metav1.TypeMeta{ - Kind: "ValidatingWebhookConfiguration", - APIVersion: admissionreg.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "validating-webhook-configuration", - }, - Webhooks: validatingCfgs, - }) + versionedWebhooks := make(map[string][]interface{}, len(supportedWebhookVersions)) + for _, version := range supportedWebhookVersions { + if cfgs, ok := mutatingCfgs[version]; ok { + objRaw := &admissionregv1.MutatingWebhookConfiguration{ + TypeMeta: metav1.TypeMeta{ + Kind: "MutatingWebhookConfiguration", + APIVersion: admissionregv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "mutating-webhook-configuration", + }, + Webhooks: cfgs, + } + if version == defaultWebhookVersion { + for i := range objRaw.Webhooks { + // SideEffects is required in admissionregistration/v1, if this is not set or set to `Some` or `Known`, + // we return an error + if err := checkSideEffectsForV1(objRaw.Webhooks[i].SideEffects); err != nil { + return err + } + // AdmissionReviewVersions is required in admissionregistration/v1, if this is not set, + // we return an error + if len(objRaw.Webhooks[i].AdmissionReviewVersions) == 0 { + return fmt.Errorf("AdmissionReviewVersions is mandatory for v1 {Mutating,Validating}WebhookConfiguration") + } + } + versionedWebhooks[version] = append(versionedWebhooks[version], objRaw) + } else { + conv, err := MutatingWebhookConfigurationAsVersion(objRaw, schema.GroupVersion{Group: admissionregv1.SchemeGroupVersion.Group, Version: version}) + if err != nil { + return err + } + versionedWebhooks[version] = append(versionedWebhooks[version], conv) + } + } + if cfgs, ok := validatingCfgs[version]; ok { + objRaw := &admissionregv1.ValidatingWebhookConfiguration{ + TypeMeta: metav1.TypeMeta{ + Kind: "ValidatingWebhookConfiguration", + APIVersion: admissionregv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "validating-webhook-configuration", + }, + Webhooks: cfgs, + } + if version == defaultWebhookVersion { + for i := range objRaw.Webhooks { + // SideEffects is required in admissionregistration/v1, if this is not set or set to `Some` or `Known`, + // we return an error + if err := checkSideEffectsForV1(objRaw.Webhooks[i].SideEffects); err != nil { + return err + } + // AdmissionReviewVersions is required in admissionregistration/v1, if this is not set, + // we return an error + if len(objRaw.Webhooks[i].AdmissionReviewVersions) == 0 { + return fmt.Errorf("AdmissionReviewVersions is mandatory for v1 {Mutating,Validating}WebhookConfiguration") + } + } + versionedWebhooks[version] = append(versionedWebhooks[version], objRaw) + } else { + conv, err := ValidatingWebhookConfigurationAsVersion(objRaw, schema.GroupVersion{Group: admissionregv1.SchemeGroupVersion.Group, Version: version}) + if err != nil { + return err + } + versionedWebhooks[version] = append(versionedWebhooks[version], conv) + } + } } - if len(objs) > 0 { - return ctx.WriteYAML("manifests.yaml", objs...) + for k, v := range versionedWebhooks { + var fileName string + if k == defaultWebhookVersion { + fileName = fmt.Sprintf("manifests.yaml") + } else { + fileName = fmt.Sprintf("manifests.%s.yaml", k) + } + if err := ctx.WriteYAML(fileName, v...); err != nil { + return err + } } + return nil +} +func checkSideEffectsForV1(sideEffects *admissionregv1.SideEffectClass) error { + if sideEffects == nil { + return fmt.Errorf("SideEffects is required for creating v1 {Mutating,Validating}WebhookConfiguration") + } + if *sideEffects == admissionregv1.SideEffectClassUnknown || + *sideEffects == admissionregv1.SideEffectClassSome { + return fmt.Errorf("SideEffects should not be set to `Some` or `Unknown` for v1 {Mutating,Validating}WebhookConfiguration") + } return nil } diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/webhook/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/webhook/zz_generated.markerhelp.go index cf4772106..84e86cdbb 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/webhook/zz_generated.markerhelp.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/webhook/zz_generated.markerhelp.go @@ -72,6 +72,14 @@ func (Config) Help() *markers.DefinitionHelp { Summary: "specifies that path that the API server should connect to this webhook on. Must be prefixed with a '/validate-' or '/mutate-' depending on the type, and followed by $GROUP-$VERSION-$KIND where all values are lower-cased and the periods in the group are substituted for hyphens. For example, a validating webhook path for type batch.tutorial.kubebuilder.io/v1,Kind=CronJob would be /validate-batch-tutorial-kubebuilder-io-v1-cronjob", Details: "", }, + "WebhookVersions": markers.DetailedHelp{ + Summary: "specifies the target API versions of the {Mutating,Validating}WebhookConfiguration objects itself to generate. Defaults to v1.", + Details: "", + }, + "AdmissionReviewVersions": markers.DetailedHelp{ + Summary: "is an ordered list of preferred `AdmissionReview` versions the Webhook expects. For generating v1 {Mutating,Validating}WebhookConfiguration, this is mandatory. For generating v1beta1 {Mutating,Validating}WebhookConfiguration, this is optional, and default to v1beta1.", + Details: "", + }, }, } }