@parity/product-sdk-descriptors 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +1 -1
  2. package/chains/bulletin/.papi/polkadot-api.json +1 -1
  3. package/chains/bulletin/generated/dist/bulletin.d.ts +455 -91
  4. package/chains/bulletin/generated/dist/bulletin_metadata-CtL8fKr5.js +3 -0
  5. package/chains/bulletin/generated/dist/common-types.d.ts +543 -195
  6. package/chains/bulletin/generated/dist/descriptors-DkP_3gZV.js +25 -0
  7. package/chains/bulletin/generated/dist/index.js +65 -236
  8. package/chains/bulletin/generated/dist/metadataTypes-BOa_7XZY.js +3 -0
  9. package/chains/bulletin/generated/dist/metadataTypes.d.ts +1 -1
  10. package/chains/individuality/generated/dist/common-types.d.ts +245 -245
  11. package/chains/individuality/generated/dist/descriptors-D3unnGtJ.js +25 -0
  12. package/chains/individuality/generated/dist/index.js +65 -236
  13. package/chains/individuality/generated/dist/individuality.d.ts +71 -71
  14. package/chains/individuality/generated/dist/individuality_metadata-DRlJN3X6.js +3 -0
  15. package/chains/individuality/generated/dist/metadataTypes-DOUrKMCQ.js +3 -0
  16. package/chains/kusama-asset-hub/.papi/polkadot-api.json +1 -1
  17. package/chains/kusama-asset-hub/generated/dist/common-types.d.ts +255 -255
  18. package/chains/kusama-asset-hub/generated/dist/descriptors-DYyEriME.js +25 -0
  19. package/chains/kusama-asset-hub/generated/dist/index.js +93 -292
  20. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub.d.ts +74 -74
  21. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub_metadata-C4kQ8RaO.js +3 -0
  22. package/chains/kusama-asset-hub/generated/dist/metadataTypes-DU1nurc8.js +3 -0
  23. package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +256 -256
  24. package/chains/paseo-asset-hub/generated/dist/descriptors-BQiUtMPR.js +25 -0
  25. package/chains/paseo-asset-hub/generated/dist/index.js +94 -294
  26. package/chains/paseo-asset-hub/generated/dist/metadataTypes-BB9mDcdX.js +3 -0
  27. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub.d.ts +69 -69
  28. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-DPz-Byze.js +3 -0
  29. package/chains/polkadot-asset-hub/generated/dist/common-types.d.ts +256 -256
  30. package/chains/polkadot-asset-hub/generated/dist/descriptors-BLVA_gBo.js +25 -0
  31. package/chains/polkadot-asset-hub/generated/dist/index.js +94 -294
  32. package/chains/polkadot-asset-hub/generated/dist/metadataTypes-BAQsZ8u3.js +3 -0
  33. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub.d.ts +69 -69
  34. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-CQQZadL1.js +3 -0
  35. package/package.json +8 -13
  36. package/chains/bulletin/generated/dist/bulletin_metadata-ZWUBSZT2.mjs +0 -6
  37. package/chains/bulletin/generated/dist/descriptors-6AYAE4ZU.mjs +0 -27
  38. package/chains/bulletin/generated/dist/index.mjs +0 -170
  39. package/chains/bulletin/generated/dist/metadataTypes-QQHZQ7NV.mjs +0 -6
  40. package/chains/individuality/generated/dist/descriptors-WSAVDU67.mjs +0 -27
  41. package/chains/individuality/generated/dist/index.mjs +0 -170
  42. package/chains/individuality/generated/dist/individuality_metadata-K52S3PRM.mjs +0 -6
  43. package/chains/individuality/generated/dist/metadataTypes-7J5JOTD4.mjs +0 -6
  44. package/chains/kusama-asset-hub/generated/dist/descriptors-LD24UXAS.mjs +0 -27
  45. package/chains/kusama-asset-hub/generated/dist/index.mjs +0 -226
  46. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub_metadata-3SMOB25O.mjs +0 -6
  47. package/chains/kusama-asset-hub/generated/dist/metadataTypes-YAQTJRTG.mjs +0 -6
  48. package/chains/paseo-asset-hub/generated/dist/descriptors-SGZOCR6W.mjs +0 -27
  49. package/chains/paseo-asset-hub/generated/dist/index.mjs +0 -228
  50. package/chains/paseo-asset-hub/generated/dist/metadataTypes-FMC56OR6.mjs +0 -6
  51. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-DYCTETUD.mjs +0 -6
  52. package/chains/polkadot-asset-hub/generated/dist/descriptors-YG75KGXS.mjs +0 -27
  53. package/chains/polkadot-asset-hub/generated/dist/index.mjs +0 -228
  54. package/chains/polkadot-asset-hub/generated/dist/metadataTypes-B4DAEUPM.mjs +0 -6
  55. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-CM4WGYCW.mjs +0 -6
@@ -0,0 +1,3 @@
1
+ const binMeta = "bWV0YRCpFAAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWUsUnVudGltZUNhbGwAAdAYU3lzdGVtBAAkAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN5c3RlbSwgUnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBABEAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFjaGFpblN5c3RlbSwgUnVudGltZT4AAQAkVGltZXN0YW1wBAC0AbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFRpbWVzdGFtcCwgUnVudGltZT4AAwA0UGFyYWNoYWluSW5mbwQAvAHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5JbmZvLCBSdW50aW1lPgAEAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAwAHlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrTWlncmF0aW9ucywgUnVudGltZT4ABQAgUHJlaW1hZ2UEAOwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJlaW1hZ2UsIFJ1bnRpbWU+AAYAJFNjaGVkdWxlcgQA9AG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY2hlZHVsZXIsIFJ1bnRpbWU+AAcAKFBhcmFtZXRlcnMEAAEBAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFtZXRlcnMsIFJ1bnRpbWU+AAgAIEJhbGFuY2VzBACNAQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxCYWxhbmNlcywgUnVudGltZT4ACgAcVmVzdGluZwQApQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VmVzdGluZywgUnVudGltZT4ADgAYQ2xhaW1zBACtAQGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDbGFpbXMsIFJ1bnRpbWU+AA8ARENvbGxhdG9yU2VsZWN0aW9uBADNAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb2xsYXRvclNlbGVjdGlvbiwgUnVudGltZT4AFQAcU2Vzc2lvbgQA0QEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2Vzc2lvbiwgUnVudGltZT4AFgAkWGNtcFF1ZXVlBADdAQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxYY21wUXVldWUsIFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBADhAQHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQb2xrYWRvdFhjbSwgUnVudGltZT4AHwAoQ3VtdWx1c1hjbQQA4QMBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q3VtdWx1c1hjbSwgUnVudGltZT4AIABMVG9Qb2xrYWRvdFhjbVJvdXRlcgQA5QMB4QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VG9Qb2xrYWRvdFhjbVJvdXRlciwgUnVudGltZT4AIgAwTWVzc2FnZVF1ZXVlBADpAwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACMAHFV0aWxpdHkEAPEDAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFV0aWxpdHksIFJ1bnRpbWU+ACgAIE11bHRpc2lnBAAZBAG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aXNpZywgUnVudGltZT4AKQAUUHJveHkEACUEAakBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByb3h5LCBSdW50aW1lPgAqAFRSZW1vdGVQcm94eVJlbGF5Q2hhaW4EADEEAekBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJlbW90ZVByb3h5UmVsYXlDaGFpbiwgUnVudGltZT4AKwAcSW5kaWNlcwQAOQQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SW5kaWNlcywgUnVudGltZT4ALAAYQXNzZXRzBAA9BAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+ADIAHFVuaXF1ZXMEAEkEAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFVuaXF1ZXMsIFJ1bnRpbWU+ADMAEE5mdHMEAGUEAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdHMsIFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAMUEAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEZvcmVpZ25Bc3NldHMsIFJ1bnRpbWU+ADUAUE5mdEZyYWN0aW9uYWxpemF0aW9uBADVBAHlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZnRGcmFjdGlvbmFsaXphdGlvbiwgUnVudGltZT4ANgAoUG9vbEFzc2V0cwQA2QQBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9vbEFzc2V0cywgUnVudGltZT4ANwA8QXNzZXRDb252ZXJzaW9uBADdBAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldENvbnZlcnNpb24sIFJ1bnRpbWU+ADgAIFJlY292ZXJ5BADlBAG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZWNvdmVyeSwgUnVudGltZT4AOQAcU29jaWV0eQQA6QQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U29jaWV0eSwgUnVudGltZT4AOgAYUmV2aXZlBADtBAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZXZpdmUsIFJ1bnRpbWU+ADwASFN0YXRlVHJpZU1pZ3JhdGlvbgQAAQUB3QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3RhdGVUcmllTWlncmF0aW9uLCBSdW50aW1lPgBGADxOb21pbmF0aW9uUG9vbHMEABkFAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5vbWluYXRpb25Qb29scywgUnVudGltZT4AUAAkVm90ZXJMaXN0BABRBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxWb3Rlckxpc3QsIFJ1bnRpbWU+AFIAPFN0YWtpbmdSY0NsaWVudAQAVQUB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3Rha2luZ1JjQ2xpZW50LCBSdW50aW1lPgBUAEhNdWx0aUJsb2NrRWxlY3Rpb24EAHkFAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvbiwgUnVudGltZT4AVQBoTXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIEAK0FAf0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyLCBSdW50aW1lPgBWAGhNdWx0aUJsb2NrRWxlY3Rpb25VbnNpZ25lZAQAsQUB/QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQsIFJ1bnRpbWU+AFcAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAQA6QYB9QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkLCBSdW50aW1lPgBYABxTdGFraW5nBADxBgGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdGFraW5nLCBSdW50aW1lPgBZACBUcmVhc3VyeQQAPQcBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VHJlYXN1cnksIFJ1bnRpbWU+AFoAQENvbnZpY3Rpb25Wb3RpbmcEAEkHAdUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbnZpY3Rpb25Wb3RpbmcsIFJ1bnRpbWU+AFsAJFJlZmVyZW5kYQQAXQcBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UmVmZXJlbmRhLCBSdW50aW1lPgBcACRXaGl0ZWxpc3QEAHEHAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFdoaXRlbGlzdCwgUnVudGltZT4AXgAgQm91bnRpZXMEAHUHAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJvdW50aWVzLCBSdW50aW1lPgBfADRDaGlsZEJvdW50aWVzBAB5BwHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDaGlsZEJvdW50aWVzLCBSdW50aW1lPgBgACRBc3NldFJhdGUEAH0HAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AYQBITXVsdGlBc3NldEJvdW50aWVzBACFBwHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUFzc2V0Qm91bnRpZXMsIFJ1bnRpbWU+AGIAFEFoT3BzBACJBwGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBaE9wcywgUnVudGltZT4A/gAoQWhNaWdyYXRvcgQAkQcBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QWhNaWdyYXRvciwgUnVudGltZT4A/wAAJAwwZnJhbWVfc3lzdGVtGHBhbGxldBBDYWxsBARUAAEwGHJlbWFyawQBGHJlbWFyaxgBHFZlYzx1OD4AAAxoTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyay4AiENhbiBiZSBleGVjdXRlZCBieSBldmVyeSBgb3JpZ2luYC44c2V0X2hlYXBfcGFnZXMEARRwYWdlcygBDHU2NAABBPhTZXQgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgV2ViQXNzZW1ibHkgZW52aXJvbm1lbnQncyBoZWFwLiBzZXRfY29kZQQBEGNvZGUYARxWZWM8dTg+AAIEZFNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZS5cc2V0X2NvZGVfd2l0aG91dF9jaGVja3MEARBjb2RlGAEcVmVjPHU4PgADEBkBU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlIHdpdGhvdXQgZG9pbmcgYW55IGNoZWNrcyBvZiB0aGUgZ2l2ZW4gYGNvZGVgLgBRAU5vdGUgdGhhdCBydW50aW1lIHVwZ3JhZGVzIHdpbGwgbm90IHJ1biBpZiB0aGlzIGlzIGNhbGxlZCB3aXRoIGEgbm90LWluY3JlYXNpbmcgc3BlYyB2ZXJzaW9uISxzZXRfc3RvcmFnZQQBFGl0ZW1zLAE0VmVjPEtleVZhbHVlPgAEBGhTZXQgc29tZSBpdGVtcyBvZiBzdG9yYWdlLjBraWxsX3N0b3JhZ2UEARBrZXlzNAEgVmVjPEtleT4ABQR0S2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgIARhwcmVmaXgYAQxLZXkAARxzdWJrZXlzOAEMdTMyAAYQEQFLaWxsIGFsbCBzdG9yYWdlIGl0ZW1zIHdpdGggYSBrZXkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LgA5ASoqTk9URToqKiBXZSByZWx5IG9uIHRoZSBSb290IG9yaWdpbiB0byBwcm92aWRlIHVzIHRoZSBudW1iZXIgb2Ygc3Via2V5cyB1bmRlcj0BdGhlIHByZWZpeCB3ZSBhcmUgcmVtb3ZpbmcgdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUgdGhlIHdlaWdodCBvZiB0aGlzIGZ1bmN0aW9uLkRyZW1hcmtfd2l0aF9ldmVudAQBGHJlbWFyaxgBHFZlYzx1OD4ABwSkTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyayBhbmQgZW1pdCBldmVudC4cZG9fdGFzawQBEHRhc2s8AThUOjpSdW50aW1lVGFzawAIAERhdXRob3JpemVfdXBncmFkZQQBJGNvZGVfaGFzaEABHFQ6Okhhc2gACRBhAUF1dGhvcml6ZSBhbiB1cGdyYWRlIHRvIGEgZ2l2ZW4gYGNvZGVfaGFzaGAgZm9yIHRoZSBydW50aW1lLiBUaGUgcnVudGltZSBjYW4gYmUgc3VwcGxpZWQYbGF0ZXIuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4ugGF1dGhvcml6ZV91cGdyYWRlX3dpdGhvdXRfY2hlY2tzBAEkY29kZV9oYXNoQAEcVDo6SGFzaAAKIGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AXQFXQVJOSU5HOiBUaGlzIGF1dGhvcml6ZXMgYW4gdXBncmFkZSB0aGF0IHdpbGwgdGFrZSBwbGFjZSB3aXRob3V0IGFueSBzYWZldHkgY2hlY2tzLCBmb3JZAWV4YW1wbGUgdGhhdCB0aGUgc3BlYyBuYW1lIHJlbWFpbnMgdGhlIHNhbWUgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGluY3JlYXNlcy4gTm908HJlY29tbWVuZGVkIGZvciBub3JtYWwgdXNlLiBVc2UgYGF1dGhvcml6ZV91cGdyYWRlYCBpbnN0ZWFkLgB8VGhpcyBjYWxsIHJlcXVpcmVzIFJvb3Qgb3JpZ2luLmBhcHBseV9hdXRob3JpemVkX3VwZ3JhZGUEARBjb2RlGAEcVmVjPHU4PgALJFUBUHJvdmlkZSB0aGUgcHJlaW1hZ2UgKHJ1bnRpbWUgYmluYXJ5KSBgY29kZWAgZm9yIGFuIHVwZ3JhZGUgdGhhdCBoYXMgYmVlbiBhdXRob3JpemVkLgBJAUlmIHRoZSBhdXRob3JpemF0aW9uIHJlcXVpcmVkIGEgdmVyc2lvbiBjaGVjaywgdGhpcyBjYWxsIHdpbGwgZW5zdXJlIHRoZSBzcGVjIG5hbWXocmVtYWlucyB1bmNoYW5nZWQgYW5kIHRoYXQgdGhlIHNwZWMgdmVyc2lvbiBoYXMgaW5jcmVhc2VkLgBZAURlcGVuZGluZyBvbiB0aGUgcnVudGltZSdzIGBPblNldENvZGVgIGNvbmZpZ3VyYXRpb24sIHRoaXMgZnVuY3Rpb24gbWF5IGRpcmVjdGx5IGFwcGx5EQF0aGUgbmV3IGBjb2RlYCBpbiB0aGUgc2FtZSBibG9jayBvciBhdHRlbXB0IHRvIHNjaGVkdWxlIHRoZSB1cGdyYWRlLgBgQWxsIG9yaWdpbnMgYXJlIGFsbG93ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLigAAAUGACwAAAIwADAAAAQIGBgANAAAAhgAOAAABQUAPAhgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lLFJ1bnRpbWVUYXNrAAEAAEAIPHByaW1pdGl2ZV90eXBlcxBIMjU2AAAEAAgBIFt1ODsgMzJdAABEDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBBDYWxsBARUAAEITHNldF92YWxpZGF0aW9uX2RhdGEIARBkYXRhSAFoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAAVRpbmJvdW5kX21lc3NhZ2VzX2RhdGGAAUxJbmJvdW5kTWVzc2FnZXNEYXRhAAAkgFNldCB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGRhdGEuAEEBVGhpcyBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb26IcGhhc2UgaWYgdGhlIGNhbGwgd2FzIG5vdCBpbnZva2VkLgDQVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYEluaGVyZW50YAAhAUFzIGEgc2lkZSBlZmZlY3QsIHRoaXMgZnVuY3Rpb24gdXBncmFkZXMgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBmdW5jdGlvboRpZiB0aGUgYXBwcm9wcmlhdGUgdGltZSBoYXMgY29tZS5gc3Vkb19zZW5kX3Vwd2FyZF9tZXNzYWdlBAEcbWVzc2FnZRgBNFVwd2FyZE1lc3NhZ2UAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuSAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAABABPHZhbGlkYXRpb25fZGF0YUwBXFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhAAFEcmVsYXlfY2hhaW5fc3RhdGVUAVRzcF90cmllOjpTdG9yYWdlUHJvb2YAAWByZWxheV9wYXJlbnRfZGVzY2VuZGFudHNcAUBWZWM8UmVsYXlIZWFkZXI+AAFAY29sbGF0b3JfcGVlcl9pZHgBWE9wdGlvbjxBcHByb3ZlZFBlZXJJZD4AAEwMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlcUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGEIBEgBQAROATgAEAEscGFyZW50X2hlYWRQASBIZWFkRGF0YQABTHJlbGF5X3BhcmVudF9udW1iZXI4AQROAAFkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdEABBEgAATBtYXhfcG92X3NpemU4AQx1MzIAAFAMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMgSGVhZERhdGEAAAQAGAEcVmVjPHU4PgAAVAwcc3BfdHJpZTRzdG9yYWdlX3Byb29mMFN0b3JhZ2VQcm9vZgAABAEodHJpZV9ub2Rlc1gBREJUcmVlU2V0PFZlYzx1OD4+AABYBCBCVHJlZVNldAQEVAEYAAQANAAAAFwAAAJgAGAQKHNwX3J1bnRpbWUcZ2VuZXJpYxhoZWFkZXIYSGVhZGVyCBhOdW1iZXIBOBBIYXNoAAAUASxwYXJlbnRfaGFzaEABMEhhc2g6Ok91dHB1dAABGG51bWJlcmQBGE51bWJlcgABKHN0YXRlX3Jvb3RAATBIYXNoOjpPdXRwdXQAATxleHRyaW5zaWNzX3Jvb3RAATBIYXNoOjpPdXRwdXQAARhkaWdlc3RoARhEaWdlc3QAAGQAAAY4AGgQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QYRGlnZXN0AAAEARBsb2dzbAE8VmVjPERpZ2VzdEl0ZW0+AABsAAACcABwEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0KERpZ2VzdEl0ZW0AARQoUHJlUnVudGltZQgAdAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABgAkQ29uc2Vuc3VzCAB0AURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAEABBTZWFsCAB0AURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAFABRPdGhlcgQAGAEcVmVjPHU4PgAAAGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAgAAHQAAAMEAAAADAB4BBhPcHRpb24EBFQBfAEIEE5vbmUAAAAQU29tZQQAfAAAAQAAfAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAIAMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50TEluYm91bmRNZXNzYWdlc0RhdGEAAAgBRGRvd253YXJkX21lc3NhZ2VzhAF8QWJyaWRnZWRJbmJvdW5kRG93bndhcmRNZXNzYWdlcwABTGhvcml6b250YWxfbWVzc2FnZXOYAWxBYnJpZGdlZEluYm91bmRIcm1wTWVzc2FnZXMAAIQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGIAAgBNGZ1bGxfbWVzc2FnZXOMATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOQAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACICGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNYSW5ib3VuZERvd253YXJkTWVzc2FnZQQsQmxvY2tOdW1iZXIBOAAIARxzZW50X2F0OAEsQmxvY2tOdW1iZXIAAQxtc2cYATxEb3dud2FyZE1lc3NhZ2UAAIwAAAKIAJAAAAKUAJQIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnQ0SGFzaGVkTWVzc2FnZQAACAEcc2VudF9hdDgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABIG1zZ19oYXNoQAE0c3BfY29yZTo6SDI1NgAAmAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnSEQWJyaWRnZWRJbmJvdW5kTWVzc2FnZXNDb2xsZWN0aW9uBBxNZXNzYWdlAZwACAE0ZnVsbF9tZXNzYWdlc6gBMFZlYzxNZXNzYWdlPgABPGhhc2hlZF9tZXNzYWdlc6wBfFZlYzxNZXNzYWdlOjpDb21wcmVzc2VkTWVzc2FnZT4AAJwAAAQIoKQAoAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcwhJZAAABAA4AQx1MzIAAKQIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0hJbmJvdW5kSHJtcE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAKgAAAKcAKwAAAKwALAAAAQIoJQAtAxAcGFsbGV0X3RpbWVzdGFtcBhwYWxsZXQQQ2FsbAQEVAABBAxzZXQEAQxub3e4ASRUOjpNb21lbnQAAExUU2V0IHRoZSBjdXJyZW50IHRpbWUuAFUBVGhpcyBjYWxsIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbtRwaGFzZSwgaWYgdGhpcyBjYWxsIGhhc24ndCBiZWVuIGludm9rZWQgYnkgdGhhdCB0aW1lLgBBAVRoZSB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5aFtgQ29uZmlnOjpNaW5pbXVtUGVyaW9kYF0uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFEBVGhpcyBkaXNwYXRjaCBjbGFzcyBpcyBfTWFuZGF0b3J5XyB0byBlbnN1cmUgaXQgZ2V0cyBleGVjdXRlZCBpbiB0aGUgYmxvY2suIEJlIGF3YXJlUQF0aGF0IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IG9mIHRoaXMgY2FsbCBjb3VsZCByZXN1bHQgZXhoYXVzdGluZyB0aGUgcmVzb3VyY2VzIGluIGGEYmxvY2sgdG8gZXhlY3V0ZSBhbnkgb3RoZXIgY2FsbHMuADQjIyBDb21wbGV4aXR5MQEtIGBPKDEpYCAoTm90ZSB0aGF0IGltcGxlbWVudGF0aW9ucyBvZiBgT25UaW1lc3RhbXBTZXRgIG11c3QgYWxzbyBiZSBgTygxKWApVQEtIDEgc3RvcmFnZSByZWFkIGFuZCAxIHN0b3JhZ2UgbXV0YXRpb24gKGNvZGVjIGBPKDEpYCBiZWNhdXNlIG9mIGBEaWRVcGRhdGU6OnRha2VgIGluQCAgYG9uX2ZpbmFsaXplYCnULSAxIGV2ZW50IGhhbmRsZXIgYG9uX3RpbWVzdGFtcF9zZXRgLiBNdXN0IGJlIGBPKDEpYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuuAAABigAvAxYc3RhZ2luZ19wYXJhY2hhaW5faW5mbxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7ADERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29yxAFMT3B0aW9uPEN1cnNvck9mPFQ+PgAAFF0BQWxsb3dzIHJvb3QgdG8gc2V0IGEgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQsIHN0b3Agb3IgZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEkBU2hvdWxkIG5vcm1hbGx5IG5vdCBiZSBuZWVkZWQgYW5kIGlzIG9ubHkgaW4gcGxhY2UgYXMgZW1lcmdlbmN5IG1lYXN1cmUuIE5vdGUgdGhhdAUBcmVzdGFydGluZyB0aGUgbWlncmF0aW9uIHByb2Nlc3MgaW4gdGhpcyBtYW5uZXIgd2lsbCBub3QgY2FsbCB0aGUtAVtgTWlncmF0aW9uU3RhdHVzSGFuZGxlcjo6c3RhcnRlZGBdIGhvb2sgb3IgZW1pdCBhbiBgVXBncmFkZVN0YXJ0ZWRgIGV2ZW50Llxmb3JjZV9zZXRfYWN0aXZlX2N1cnNvcgwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29y1AFYT3B0aW9uPFJhd0N1cnNvck9mPFQ+PgABKHN0YXJ0ZWRfYXTYAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAEYWQFBbGxvd3Mgcm9vdCB0byBzZXQgYW4gYWN0aXZlIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0L2ZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBFAVRoaXMgaXMgYW4gZWRnZS1jYXNlIHZlcnNpb24gb2YgW2BTZWxmOjpmb3JjZV9zZXRfY3Vyc29yYF0gdGhhdCBhbGxvd3MgdG8gc2V0IHRoZWEBYHN0YXJ0ZWRfYXRgIHZhbHVlIHRvIHRoZSBuZXh0IGJsb2NrIG51bWJlci4gT3RoZXJ3aXNlIHRoaXMgd291bGQgbm90IGJlIHBvc3NpYmxlLCBzaW5jZUUBYGZvcmNlX3NldF9jdXJzb3JgIHRha2VzIGFuIGFic29sdXRlIGJsb2NrIG51bWJlci4gU2V0dGluZyBgc3RhcnRlZF9hdGAgdG8gYE5vbmVgAQFpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBibG9jayBudW1iZXIgcGx1cyBvbmUgc2hvdWxkIGJlIHVzZWQuSGZvcmNlX29uYm9hcmRfbWJtcwACEKBGb3JjZXMgdGhlIG9uYm9hcmRpbmcgb2YgdGhlIG1pZ3JhdGlvbnMuAF0BVGhpcyBwcm9jZXNzIGhhcHBlbnMgYXV0b21hdGljYWxseSBvbiBhIHJ1bnRpbWUgdXBncmFkZS4gSXQgaXMgaW4gcGxhY2UgYXMgYW4gZW1lcmdlbmN5/G1lYXN1cmVtZW50LiBUaGUgY3Vyc29yIG5lZWRzIHRvIGJlIGBOb25lYCBmb3IgdGhpcyB0byBzdWNjZWVkLjhjbGVhcl9oaXN0b3JpYwQBIHNlbGVjdG9y3AGgSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3I8SWRlbnRpZmllck9mPFQ+PgADFGhDbGVhcnMgdGhlIGBIaXN0b3JpY2Agc2V0LgANAWBtYXBfY3Vyc29yYCBtdXN0IGJlIHNldCB0byB0aGUgbGFzdCB2YWx1ZSB0aGF0IHdhcyByZXR1cm5lZCBieSB0aGVdAWBIaXN0b3JpY0NsZWFyZWRgIGV2ZW50LiBUaGUgZmlyc3QgdGltZSBgTm9uZWAgY2FuIGJlIHVzZWQuIGBsaW1pdGAgbXVzdCBiZSBjaG9zZW4gaW4gYah3YXkgdGhhdCB3aWxsIHJlc3VsdCBpbiBhIHNlbnNpYmxlIHdlaWdodC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuxAQYT3B0aW9uBARUAcgBCBBOb25lAAAAEFNvbWUEAMgAAAEAAMgIRHBhbGxldF9taWdyYXRpb25zPE1pZ3JhdGlvbkN1cnNvcggYQ3Vyc29yAcwsQmxvY2tOdW1iZXIBOAEIGEFjdGl2ZQQA0AGEQWN0aXZlQ3Vyc29yPEN1cnNvciwgQmxvY2tOdW1iZXI+AAAAFFN0dWNrAAEAAMwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADQCERwYWxsZXRfbWlncmF0aW9uczBBY3RpdmVDdXJzb3IIGEN1cnNvcgHMLEJsb2NrTnVtYmVyATgADAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3LUAThPcHRpb248Q3Vyc29yPgABKHN0YXJ0ZWRfYXQ4ASxCbG9ja051bWJlcgAA1AQYT3B0aW9uBARUAcwBCBBOb25lAAAAEFNvbWUEAMwAAAEAANgEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAADcCERwYWxsZXRfbWlncmF0aW9uc1xIaXN0b3JpY0NsZWFudXBTZWxlY3RvcgQISWQB4AEIIFNwZWNpZmljBADkARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXTYASxPcHRpb248dTMyPgABPHByZXZpb3VzX2N1cnNvcugBPE9wdGlvbjxWZWM8dTg+PgABAADgDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA5AAAAuAA6AQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAOwMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQQQ2FsbAQEVAABFDRub3RlX3ByZWltYWdlBAEUYnl0ZXMYARxWZWM8dTg+AAAQdFJlZ2lzdGVyIGEgcHJlaW1hZ2Ugb24tY2hhaW4uAFUBSWYgdGhlIHByZWltYWdlIHdhcyBwcmV2aW91c2x5IHJlcXVlc3RlZCwgbm8gZmVlcyBvciBkZXBvc2l0cyBhcmUgdGFrZW4gZm9yIHByb3ZpZGluZ1UBdGhlIHByZWltYWdlLiBPdGhlcndpc2UsIGEgZGVwb3NpdCBpcyB0YWtlbiBwcm9wb3J0aW9uYWwgdG8gdGhlIHNpemUgb2YgdGhlIHByZWltYWdlLjx1bm5vdGVfcHJlaW1hZ2UEARBoYXNoQAEcVDo6SGFzaAABGNxDbGVhciBhbiB1bnJlcXVlc3RlZCBwcmVpbWFnZSBmcm9tIHRoZSBydW50aW1lIHN0b3JhZ2UuAPxJZiBgbGVuYCBpcyBwcm92aWRlZCwgdGhlbiBpdCB3aWxsIGJlIGEgbXVjaCBjaGVhcGVyIG9wZXJhdGlvbi4AAQEtIGBoYXNoYDogVGhlIGhhc2ggb2YgdGhlIHByZWltYWdlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmUuuC0gYGxlbmA6IFRoZSBsZW5ndGggb2YgdGhlIHByZWltYWdlIG9mIGBoYXNoYC5AcmVxdWVzdF9wcmVpbWFnZQQBEGhhc2hAARxUOjpIYXNoAAIQQQFSZXF1ZXN0IGEgcHJlaW1hZ2UgYmUgdXBsb2FkZWQgdG8gdGhlIGNoYWluIHdpdGhvdXQgcGF5aW5nIGFueSBmZWVzIG9yIGRlcG9zaXRzLgBVAUlmIHRoZSBwcmVpbWFnZSByZXF1ZXN0cyBoYXMgYWxyZWFkeSBiZWVuIHByb3ZpZGVkIG9uLWNoYWluLCB3ZSB1bnJlc2VydmUgYW55IGRlcG9zaXQ5AWEgdXNlciBtYXkgaGF2ZSBwYWlkLCBhbmQgdGFrZSB0aGUgY29udHJvbCBvZiB0aGUgcHJlaW1hZ2Ugb3V0IG9mIHRoZWlyIGhhbmRzLkh1bnJlcXVlc3RfcHJlaW1hZ2UEARBoYXNoQAEcVDo6SGFzaAADDLxDbGVhciBhIHByZXZpb3VzbHkgbWFkZSByZXF1ZXN0IGZvciBhIHByZWltYWdlLgAtAU5PVEU6IFRISVMgTVVTVCBOT1QgQkUgQ0FMTEVEIE9OIGBoYXNoYCBNT1JFIFRJTUVTIFRIQU4gYHJlcXVlc3RfcHJlaW1hZ2VgLjhlbnN1cmVfdXBkYXRlZAQBGGhhc2hlc/ABMFZlYzxUOjpIYXNoPgAEDLxFbnN1cmUgdGhhdCB0aGUgYnVsayBvZiBwcmUtaW1hZ2VzIGlzIHVwZ3JhZGVkLgA9AVRoZSBjYWxsZXIgcGF5cyBubyBmZWUgaWYgYXQgbGVhc3QgOTAlIG9mIHByZS1pbWFnZXMgd2VyZSBzdWNjZXNzZnVsbHkgdXBkYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu8AAAAkAA9AxAcGFsbGV0X3NjaGVkdWxlchhwYWxsZXQQQ2FsbAQEVAABKCBzY2hlZHVsZRABEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGlj+AGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAARwQW5vbnltb3VzbHkgc2NoZWR1bGUgYSB0YXNrLhhjYW5jZWwIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgABBJRDYW5jZWwgYW4gYW5vbnltb3VzbHkgc2NoZWR1bGVkIHRhc2suOHNjaGVkdWxlX25hbWVkFAEIaWQIASBUYXNrTmFtZQABEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGlj+AGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAgRYU2NoZWR1bGUgYSBuYW1lZCB0YXNrLjBjYW5jZWxfbmFtZWQEAQhpZAgBIFRhc2tOYW1lAAMEeENhbmNlbCBhIG5hbWVkIHNjaGVkdWxlZCB0YXNrLjhzY2hlZHVsZV9hZnRlchABFGFmdGVyOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY/gBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQEqEFub255bW91c2x5IHNjaGVkdWxlIGEgdGFzayBhZnRlciBhIGRlbGF5LlBzY2hlZHVsZV9uYW1lZF9hZnRlchQBCGlkCAEgVGFza05hbWUAARRhZnRlcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWP4AaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAFBJBTY2hlZHVsZSBhIG5hbWVkIHRhc2sgYWZ0ZXIgYSBkZWxheS4kc2V0X3JldHJ5DAEQdGFza/wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABHHJldHJpZXMMAQh1OAABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAYwWQFTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIHRhc2sgc28gdGhhdCwgaW4gY2FzZSBpdHMgc2NoZWR1bGVkIHJ1biBmYWlscywgaXQgd2lsbFUBYmUgcmV0cmllZCBhZnRlciBgcGVyaW9kYCBibG9ja3MsIGZvciBhIHRvdGFsIGFtb3VudCBvZiBgcmV0cmllc2AgcmV0cmllcyBvciB1bnRpbCBpdCRzdWNjZWVkcy4AVQFUYXNrcyB3aGljaCBuZWVkIHRvIGJlIHNjaGVkdWxlZCBmb3IgYSByZXRyeSBhcmUgc3RpbGwgc3ViamVjdCB0byB3ZWlnaHQgbWV0ZXJpbmcgYW5kUQFhZ2VuZGEgc3BhY2UsIHNhbWUgYXMgYSByZWd1bGFyIHRhc2suIElmIGEgcGVyaW9kaWMgdGFzayBmYWlscywgaXQgd2lsbCBiZSBzY2hlZHVsZWSQbm9ybWFsbHkgd2hpbGUgdGhlIHRhc2sgaXMgcmV0cnlpbmcuAFEBVGFza3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0IG9mIGEgcmV0cnkgZm9yIGEgcGVyaW9kaWMgdGFzayBhcmUgdW5uYW1lZCwgbm9uLXBlcmlvZGljPQFjbG9uZXMgb2YgdGhlIG9yaWdpbmFsIHRhc2suIFRoZWlyIHJldHJ5IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlTQFvcmlnaW5hbCB0YXNrJ3MgY29uZmlndXJhdGlvbiwgYnV0IHdpbGwgaGF2ZSBhIGxvd2VyIHZhbHVlIGZvciBgcmVtYWluaW5nYCB0aGFuIHRoZWRvcmlnaW5hbCBgdG90YWxfcmV0cmllc2AuPHNldF9yZXRyeV9uYW1lZAwBCGlkCAEgVGFza05hbWUAARxyZXRyaWVzDAEIdTgAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAHMF0BU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrIHNvIHRoYXQsIGluIGNhc2UgaXRzIHNjaGVkdWxlZCBydW4gZmFpbHMsIGl0XQF3aWxsIGJlIHJldHJpZWQgYWZ0ZXIgYHBlcmlvZGAgYmxvY2tzLCBmb3IgYSB0b3RhbCBhbW91bnQgb2YgYHJldHJpZXNgIHJldHJpZXMgb3IgdW50aWwwaXQgc3VjY2VlZHMuAFUBVGFza3Mgd2hpY2ggbmVlZCB0byBiZSBzY2hlZHVsZWQgZm9yIGEgcmV0cnkgYXJlIHN0aWxsIHN1YmplY3QgdG8gd2VpZ2h0IG1ldGVyaW5nIGFuZFEBYWdlbmRhIHNwYWNlLCBzYW1lIGFzIGEgcmVndWxhciB0YXNrLiBJZiBhIHBlcmlvZGljIHRhc2sgZmFpbHMsIGl0IHdpbGwgYmUgc2NoZWR1bGVkkG5vcm1hbGx5IHdoaWxlIHRoZSB0YXNrIGlzIHJldHJ5aW5nLgBRAVRhc2tzIHNjaGVkdWxlZCBhcyBhIHJlc3VsdCBvZiBhIHJldHJ5IGZvciBhIHBlcmlvZGljIHRhc2sgYXJlIHVubmFtZWQsIG5vbi1wZXJpb2RpYz0BY2xvbmVzIG9mIHRoZSBvcmlnaW5hbCB0YXNrLiBUaGVpciByZXRyeSBjb25maWd1cmF0aW9uIHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZU0Bb3JpZ2luYWwgdGFzaydzIGNvbmZpZ3VyYXRpb24sIGJ1dCB3aWxsIGhhdmUgYSBsb3dlciB2YWx1ZSBmb3IgYHJlbWFpbmluZ2AgdGhhbiB0aGVkb3JpZ2luYWwgYHRvdGFsX3JldHJpZXNgLjBjYW5jZWxfcmV0cnkEARB0YXNr/AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAgEqFJlbW92ZXMgdGhlIHJldHJ5IGNvbmZpZ3VyYXRpb24gb2YgYSB0YXNrLkhjYW5jZWxfcmV0cnlfbmFtZWQEAQhpZAgBIFRhc2tOYW1lAAkEvENhbmNlbCB0aGUgcmV0cnkgY29uZmlndXJhdGlvbiBvZiBhIG5hbWVkIHRhc2suBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvgEGE9wdGlvbgQEVAH8AQgQTm9uZQAAABBTb21lBAD8AAABAAD8AAAECDg4AAEBDERwYWxsZXRfcGFyYW1ldGVycxhwYWxsZXQQQ2FsbAQEVAABBDRzZXRfcGFyYW1ldGVyBAEka2V5X3ZhbHVlBQEBUFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzAAAQdFNldCB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBgQWRtaW5PcmlnaW5gIGZvciB0aGUgZ2l2ZW4gYGtleWAuIFZhbHVlcyBiZYhkZWxldGVkIGJ5IHNldHRpbmcgdGhlbSB0byBgTm9uZWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgUBCGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWVEUnVudGltZVBhcmFtZXRlcnMAARQgSXNzdWFuY2UEAAkBAZBkeW5hbWljX3BhcmFtczo6aXNzdWFuY2U6OlBhcmFtZXRlcnMAAAAgVHJlYXN1cnkEACUBAZBkeW5hbWljX3BhcmFtczo6dHJlYXN1cnk6OlBhcmFtZXRlcnMAAQA8U3Rha2luZ0VsZWN0aW9uBABFAQGwZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMAAgAkU2NoZWR1bGVyBABpAQGUZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycwADADBNZXNzYWdlUXVldWUEAH0BAaRkeW5hbWljX3BhcmFtczo6bWVzc2FnZV9xdWV1ZTo6UGFyYW1ldGVycwAEAAAJARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zIGlzc3VhbmNlKFBhcmFtZXRlcnMAARAwTWluSW5mbGF0aW9uCAANAQEwTWluSW5mbGF0aW9uAAARAQFMT3B0aW9uPFBlcnF1aW50aWxsPgAAADBNYXhJbmZsYXRpb24IABkBATBNYXhJbmZsYXRpb24AABEBAUxPcHRpb248UGVycXVpbnRpbGw+AAEAKElkZWFsU3Rha2UIAB0BAShJZGVhbFN0YWtlAAARAQFMT3B0aW9uPFBlcnF1aW50aWxsPgACABxGYWxsb2ZmCAAhAQEcRmFsbG9mZgAAEQEBTE9wdGlvbjxQZXJxdWludGlsbD4AAwAADQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyBpc3N1YW5jZTBNaW5JbmZsYXRpb24AAAAAEQEEGE9wdGlvbgQEVAEVAQEIEE5vbmUAAAAQU29tZQQAFQEAAAEAABUBDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3MsUGVycXVpbnRpbGwAAAQAKAEMdTY0AAAZARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zIGlzc3VhbmNlME1heEluZmxhdGlvbgAAAAAdARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zIGlzc3VhbmNlKElkZWFsU3Rha2UAAAAAIQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyBpc3N1YW5jZRxGYWxsb2ZmAAAAACUBEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMgdHJlYXN1cnkoUGFyYW1ldGVycwABCCxCdXJuUG9ydGlvbggAKQEBLEJ1cm5Qb3J0aW9uAAAtAQE8T3B0aW9uPFBlcm1pbGw+AAAAPEJ1cm5EZXN0aW5hdGlvbggANQEBPEJ1cm5EZXN0aW5hdGlvbgAAOQEBvE9wdGlvbjxjcmF0ZTo6dHJlYXN1cnk6OkJ1cm5EZXN0aW5hdGlvbkFjY291bnQ+AAEAACkBEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMgdHJlYXN1cnksQnVyblBvcnRpb24AAAAALQEEGE9wdGlvbgQEVAExAQEIEE5vbmUAAAAQU29tZQQAMQEAAAEAADEBDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVybWlsbAAABAA4AQx1MzIAADUBEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMgdHJlYXN1cnk8QnVybkRlc3RpbmF0aW9uAAAAADkBBBhPcHRpb24EBFQBPQEBCBBOb25lAAAAEFNvbWUEAD0BAAABAAA9AQxgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lIHRyZWFzdXJ5WEJ1cm5EZXN0aW5hdGlvbkFjY291bnQAAAQAQQEBrE9wdGlvbjxwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXM6OkFjY291bnRJZD4AAEEBBBhPcHRpb24EBFQBBAEIEE5vbmUAAAAQU29tZQQABAAAAQAARQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uKFBhcmFtZXRlcnMAARwsU2lnbmVkUGhhc2UIAEkBASxTaWduZWRQaGFzZQAA2AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwgATQEBUE1heFNpZ25lZFN1Ym1pc3Npb25zAADYASxPcHRpb248dTMyPgABADRVbnNpZ25lZFBoYXNlCABRAQE0VW5zaWduZWRQaGFzZQAA2AFMT3B0aW9uPEJsb2NrTnVtYmVyPgACAChNaW5lclBhZ2VzCABVAQEoTWluZXJQYWdlcwAA2AEsT3B0aW9uPHUzMj4AAwBETWF4RWxlY3RpbmdWb3RlcnMIAFkBAURNYXhFbGVjdGluZ1ZvdGVycwAA2AEsT3B0aW9uPHUzMj4ABABYVGFyZ2V0U25hcHNob3RQZXJCbG9jawgAXQEBWFRhcmdldFNuYXBzaG90UGVyQmxvY2sAANgBLE9wdGlvbjx1MzI+AAUAOE1heEVyYUR1cmF0aW9uCABhAQE4TWF4RXJhRHVyYXRpb24AAGUBASxPcHRpb248dTY0PgAGAABJARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb24sU2lnbmVkUGhhc2UAAAAATQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uUE1heFNpZ25lZFN1Ym1pc3Npb25zAAAAAFEBEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjRVbnNpZ25lZFBoYXNlAAAAAFUBEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihNaW5lclBhZ2VzAAAAAFkBEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbkRNYXhFbGVjdGluZ1ZvdGVycwAAAABdARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb25YVGFyZ2V0U25hcHNob3RQZXJCbG9jawAAAABhARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb244TWF4RXJhRHVyYXRpb24AAAAAZQEEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAABpARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcihQYXJhbWV0ZXJzAAEIUE1heFNjaGVkdWxlZFBlckJsb2NrCABtAQFQTWF4U2NoZWR1bGVkUGVyQmxvY2sAANgBLE9wdGlvbjx1MzI+AAAANE1heGltdW1XZWlnaHQIAHEBATRNYXhpbXVtV2VpZ2h0AAB1AQE4T3B0aW9uPFdlaWdodD4AAQAAbQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXJQTWF4U2NoZWR1bGVkUGVyQmxvY2sAAAAAcQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXI0TWF4aW11bVdlaWdodAAAAAB1AQQYT3B0aW9uBARUAXkBAQgQTm9uZQAAABBTb21lBAB5AQAAAQAAeQEMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW4AQx1NjQAAShwcm9vZl9zaXpluAEMdTY0AAB9ARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWUoUGFyYW1ldGVycwABCDxNYXhPbkluaXRXZWlnaHQIAIEBATxNYXhPbkluaXRXZWlnaHQAAIUBAVhPcHRpb248T3B0aW9uPFdlaWdodD4+AAAAPE1heE9uSWRsZVdlaWdodAgAiQEBPE1heE9uSWRsZVdlaWdodAAAhQEBWE9wdGlvbjxPcHRpb248V2VpZ2h0Pj4AAQAAgQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlPE1heE9uSW5pdFdlaWdodAAAAACFAQQYT3B0aW9uBARUAXUBAQgQTm9uZQAAABBTb21lBAB1AQAAAQAAiQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlPE1heE9uSWRsZVdlaWdodAAAAACNAQw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWWRAQEoVDo6QmFsYW5jZQAAHNRUcmFuc2ZlciBzb21lIGxpcXVpZCBmcmVlIGJhbGFuY2UgdG8gYW5vdGhlciBhY2NvdW50LgA1AWB0cmFuc2Zlcl9hbGxvd19kZWF0aGAgd2lsbCBzZXQgdGhlIGBGcmVlQmFsYW5jZWAgb2YgdGhlIHNlbmRlciBhbmQgcmVjZWl2ZXIuEQFJZiB0aGUgc2VuZGVyJ3MgYWNjb3VudCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdLBvZiB0aGUgdHJhbnNmZXIsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB0cmFuc2FjdG9yLjhmb3JjZV90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWWRAQEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWWRAQEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZZkBARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UABQywVW5yZXNlcnZlIHNvbWUgYmFsYW5jZSBmcm9tIGEgdXNlciBieSBmb3JjZS4AbENhbiBvbmx5IGJlIGNhbGxlZCBieSBST09ULkB1cGdyYWRlX2FjY291bnRzBAEMd2hvnQEBRFZlYzxUOjpBY2NvdW50SWQ+AAYgcFVwZ3JhZGUgYSBzcGVjaWZpZWQgYWNjb3VudC4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVwZ3JhZGVkLgBVAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIGF0IGxlYXN0IGFsbCBidXQgMTAlIG9mIHRoZSBhY2NvdW50cyBuZWVkZWQgdG9BAWJlIHVwZ3JhZGVkLiAoV2UgbGV0IHNvbWUgbm90IGhhdmUgdG8gYmUgdXBncmFkZWQganVzdCBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGhlWHBvc3NpYmlsaXR5IG9mIGNodXJuKS5EZm9yY2Vfc2V0X2JhbGFuY2UIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVlkQEBKFQ6OkJhbGFuY2UACAysU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50LgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC5sZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlCAEkZGlyZWN0aW9uoQEBTEFkanVzdG1lbnREaXJlY3Rpb24AARRkZWx0YZEBAShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZZEBAShUOjpCYWxhbmNlAAEoa2VlcF9hbGl2ZZkBARBib29sAAoc/EJ1cm4gdGhlIHNwZWNpZmllZCBsaXF1aWQgZnJlZSBiYWxhbmNlIGZyb20gdGhlIG9yaWdpbiBhY2NvdW50LgAlAUlmIHRoZSBvcmlnaW4ncyBhY2NvdW50IGVuZHMgdXAgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHQJAW9mIHRoZSBidXJuIGFuZCBga2VlcF9hbGl2ZWAgaXMgZmFsc2UsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgBRAVVubGlrZSBzZW5kaW5nIGZ1bmRzIHRvIGEgX2J1cm5fIGFkZHJlc3MsIHdoaWNoIG1lcmVseSBtYWtlcyB0aGUgZnVuZHMgaW5hY2Nlc3NpYmxlLCEBdGhpcyBgYnVybmAgb3BlcmF0aW9uIHdpbGwgcmVkdWNlIHRvdGFsIGlzc3VhbmNlIGJ5IHRoZSBhbW91bnQgX2J1cm5lZF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpEBAAAGlQEAlQEAAAUHAJkBAAAFAACdAQAAAgQAoQEMPHBhbGxldF9iYWxhbmNlcxR0eXBlc0xBZGp1c3RtZW50RGlyZWN0aW9uAAEIIEluY3JlYXNlAAAAIERlY3JlYXNlAAEAAKUBDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQQQ2FsbAQEVAABGBB2ZXN0AAAkuFVubG9jayBhbnkgdmVzdGVkIGZ1bmRzIG9mIHRoZSBzZW5kZXIgYWNjb3VudC4AXQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgZnVuZHMgc3RpbGxkbG9ja2VkIHVuZGVyIHRoaXMgcGFsbGV0LgDQRW1pdHMgZWl0aGVyIGBWZXN0aW5nQ29tcGxldGVkYCBvciBgVmVzdGluZ1VwZGF0ZWRgLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4odmVzdF9vdGhlcgQBGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsuFVubG9jayBhbnkgdmVzdGVkIGZ1bmRzIG9mIGEgYHRhcmdldGAgYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBRAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHdob3NlIHZlc3RlZCBmdW5kcyBzaG91bGQgYmUgdW5sb2NrZWQuIE11c3QgaGF2ZSBmdW5kcyBzdGlsbGRsb2NrZWQgdW5kZXIgdGhpcyBwYWxsZXQuANBFbWl0cyBlaXRoZXIgYFZlc3RpbmdDb21wbGV0ZWRgIG9yIGBWZXN0aW5nVXBkYXRlZGAuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjx2ZXN0ZWRfdHJhbnNmZXIIARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIHNjaGVkdWxlqQEBsFZlc3RpbmdJbmZvPEJhbGFuY2VPZjxUPiwgQmxvY2tOdW1iZXJGb3I8VD4+AAI0ZENyZWF0ZSBhIHZlc3RlZCB0cmFuc2Zlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDMLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgcmVjZWl2aW5nIHRoZSB2ZXN0ZWQgZnVuZHMu8C0gYHNjaGVkdWxlYDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zZmVyLgBcRW1pdHMgYFZlc3RpbmdDcmVhdGVkYC4A/E5PVEU6IFRoaXMgd2lsbCB1bmxvY2sgYWxsIHNjaGVkdWxlcyB0aHJvdWdoIHRoZSBjdXJyZW50IGJsb2NrLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC5UZm9yY2VfdmVzdGVkX3RyYW5zZmVyDAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIHNjaGVkdWxlqQEBsFZlc3RpbmdJbmZvPEJhbGFuY2VPZjxUPiwgQmxvY2tOdW1iZXJGb3I8VD4+AAM4YEZvcmNlIGEgdmVzdGVkIHRyYW5zZmVyLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgDoLSBgc291cmNlYDogVGhlIGFjY291bnQgd2hvc2UgZnVuZHMgc2hvdWxkIGJlIHRyYW5zZmVycmVkLhEBLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdGhhdCBzaG91bGQgYmUgdHJhbnNmZXJyZWQgdGhlIHZlc3RlZCBmdW5kcy7wLSBgc2NoZWR1bGVgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBhdHRhY2hlZCB0byB0aGUgdHJhbnNmZXIuAFxFbWl0cyBgVmVzdGluZ0NyZWF0ZWRgLgD8Tk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2suADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjxtZXJnZV9zY2hlZHVsZXMIATxzY2hlZHVsZTFfaW5kZXg4AQx1MzIAATxzY2hlZHVsZTJfaW5kZXg4AQx1MzIABFRdAU1lcmdlIHR3byB2ZXN0aW5nIHNjaGVkdWxlcyB0b2dldGhlciwgY3JlYXRpbmcgYSBuZXcgdmVzdGluZyBzY2hlZHVsZSB0aGF0IHVubG9ja3Mgb3ZlclUBdGhlIGhpZ2hlc3QgcG9zc2libGUgc3RhcnQgYW5kIGVuZCBibG9ja3MuIElmIGJvdGggc2NoZWR1bGVzIGhhdmUgYWxyZWFkeSBzdGFydGVkIHRoZVkBY3VycmVudCBibG9jayB3aWxsIGJlIHVzZWQgYXMgdGhlIHNjaGVkdWxlIHN0YXJ0OyB3aXRoIHRoZSBjYXZlYXQgdGhhdCBpZiBvbmUgc2NoZWR1bGVdAWlzIGZpbmlzaGVkIGJ5IHRoZSBjdXJyZW50IGJsb2NrLCB0aGUgb3RoZXIgd2lsbCBiZSB0cmVhdGVkIGFzIHRoZSBuZXcgbWVyZ2VkIHNjaGVkdWxlLCx1bm1vZGlmaWVkLgD4Tk9URTogSWYgYHNjaGVkdWxlMV9pbmRleCA9PSBzY2hlZHVsZTJfaW5kZXhgIHRoaXMgaXMgYSBuby1vcC5BAU5PVEU6IFRoaXMgd2lsbCB1bmxvY2sgYWxsIHNjaGVkdWxlcyB0aHJvdWdoIHRoZSBjdXJyZW50IGJsb2NrIHByaW9yIHRvIG1lcmdpbmcuYQFOT1RFOiBJZiBib3RoIHNjaGVkdWxlcyBoYXZlIGVuZGVkIGJ5IHRoZSBjdXJyZW50IGJsb2NrLCBubyBuZXcgc2NoZWR1bGUgd2lsbCBiZSBjcmVhdGVkZGFuZCBib3RoIHdpbGwgYmUgcmVtb3ZlZC4AbE1lcmdlZCBzY2hlZHVsZSBhdHRyaWJ1dGVzOjUBLSBgc3RhcnRpbmdfYmxvY2tgOiBgTUFYKHNjaGVkdWxlMS5zdGFydGluZ19ibG9jaywgc2NoZWR1bGVkMi5zdGFydGluZ19ibG9jayxIICBjdXJyZW50X2Jsb2NrKWAuIQEtIGBlbmRpbmdfYmxvY2tgOiBgTUFYKHNjaGVkdWxlMS5lbmRpbmdfYmxvY2ssIHNjaGVkdWxlMi5lbmRpbmdfYmxvY2spYC5ZAS0gYGxvY2tlZGA6IGBzY2hlZHVsZTEubG9ja2VkX2F0KGN1cnJlbnRfYmxvY2spICsgc2NoZWR1bGUyLmxvY2tlZF9hdChjdXJyZW50X2Jsb2NrKWAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A6C0gYHNjaGVkdWxlMV9pbmRleGA6IGluZGV4IG9mIHRoZSBmaXJzdCBzY2hlZHVsZSB0byBtZXJnZS7sLSBgc2NoZWR1bGUyX2luZGV4YDogaW5kZXggb2YgdGhlIHNlY29uZCBzY2hlZHVsZSB0byBtZXJnZS50Zm9yY2VfcmVtb3ZlX3Zlc3Rpbmdfc2NoZWR1bGUIARh0YXJnZXQAAYw8VDo6TG9va3VwIGFzIFN0YXRpY0xvb2t1cD46OlNvdXJjZQABOHNjaGVkdWxlX2luZGV4OAEMdTMyAAUYfEZvcmNlIHJlbW92ZSBhIHZlc3Rpbmcgc2NoZWR1bGUAxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4AyC0gYHRhcmdldGA6IEFuIGFjY291bnQgdGhhdCBoYXMgYSB2ZXN0aW5nIHNjaGVkdWxlFQEtIGBzY2hlZHVsZV9pbmRleGA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGluZGV4IHRoYXQgc2hvdWxkIGJlIHJlbW92ZWQEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuqQEMOHBhbGxldF92ZXN0aW5nMHZlc3RpbmdfaW5mbyxWZXN0aW5nSW5mbwgcQmFsYW5jZQGVASxCbG9ja051bWJlcgE4AAwBGGxvY2tlZJUBARxCYWxhbmNlAAEkcGVyX2Jsb2NrlQEBHEJhbGFuY2UAAThzdGFydGluZ19ibG9jazgBLEJsb2NrTnVtYmVyAACtARBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBBDYWxsBARUAAEUFGNsYWltCAEQZGVzdAQBMFQ6OkFjY291bnRJZAABSGV0aGVyZXVtX3NpZ25hdHVyZbEBAThFY2RzYVNpZ25hdHVyZQAAYIhNYWtlIGEgY2xhaW0gdG8gY29sbGVjdCB5b3VyIERPVHMuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFBVbnNpZ25lZCBWYWxpZGF0aW9uOgUBQSBjYWxsIHRvIGNsYWltIGlzIGRlZW1lZCB2YWxpZCBpZiB0aGUgc2lnbmF0dXJlIHByb3ZpZGVkIG1hdGNoZXN8dGhlIGV4cGVjdGVkIHNpZ25lZCBtZXNzYWdlIG9mOgBoPiBFdGhlcmV1bSBTaWduZWQgTWVzc2FnZTqUPiAoY29uZmlndXJlZCBwcmVmaXggc3RyaW5nKShhZGRyZXNzKQCkYW5kIGBhZGRyZXNzYCBtYXRjaGVzIHRoZSBgZGVzdGAgYWNjb3VudC4ALFBhcmFtZXRlcnM62C0gYGRlc3RgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCB0byBwYXlvdXQgdGhlIGNsYWltLl0BLSBgZXRoZXJldW1fc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiBhbiBldGhlcmV1bSBzaWduZWQgbWVzc2FnZSBtYXRjaGluZyB0aGUgZm9ybWF0SCAgZGVzY3JpYmVkIGFib3ZlLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMu4FdlaWdodCBpbmNsdWRlcyBsb2dpYyB0byB2YWxpZGF0ZSB1bnNpZ25lZCBgY2xhaW1gIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PihtaW50X2NsYWltEAEMd2hvuQEBPEV0aGVyZXVtQWRkcmVzcwABFHZhbHVllQEBMEJhbGFuY2VPZjxUPgABQHZlc3Rpbmdfc2NoZWR1bGW9AQHcT3B0aW9uPChCYWxhbmNlT2Y8VD4sIEJhbGFuY2VPZjxUPiwgQmxvY2tOdW1iZXJGb3I8VD4pPgABJHN0YXRlbWVudMUBAVRPcHRpb248U3RhdGVtZW50S2luZD4AATyETWludCBhIG5ldyBjbGFpbSB0byBjb2xsZWN0IERPVHMuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uACxQYXJhbWV0ZXJzOvAtIGB3aG9gOiBUaGUgRXRoZXJldW0gYWRkcmVzcyBhbGxvd2VkIHRvIGNvbGxlY3QgdGhpcyBjbGFpbS7MLSBgdmFsdWVgOiBUaGUgbnVtYmVyIG9mIERPVHMgdGhhdCB3aWxsIGJlIGNsYWltZWQuCQEtIGB2ZXN0aW5nX3NjaGVkdWxlYDogQW4gb3B0aW9uYWwgdmVzdGluZyBzY2hlZHVsZSBmb3IgdGhlc2UgRE9Ucy4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLh0BV2UgYXNzdW1lIHdvcnN0IGNhc2UgdGhhdCBib3RoIHZlc3RpbmcgYW5kIHN0YXRlbWVudCBpcyBiZWluZyBpbnNlcnRlZC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+MGNsYWltX2F0dGVzdAwBEGRlc3QEATBUOjpBY2NvdW50SWQAAUhldGhlcmV1bV9zaWduYXR1cmWxAQE4RWNkc2FTaWduYXR1cmUAASRzdGF0ZW1lbnQYARxWZWM8dTg+AAJs5E1ha2UgYSBjbGFpbSB0byBjb2xsZWN0IHlvdXIgRE9UcyBieSBzaWduaW5nIGEgc3RhdGVtZW50LgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBQVW5zaWduZWQgVmFsaWRhdGlvbjopAUEgY2FsbCB0byBgY2xhaW1fYXR0ZXN0YCBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNpZ25hdHVyZSBwcm92aWRlZCBtYXRjaGVzfHRoZSBleHBlY3RlZCBzaWduZWQgbWVzc2FnZSBvZjoAaD4gRXRoZXJldW0gU2lnbmVkIE1lc3NhZ2U6wD4gKGNvbmZpZ3VyZWQgcHJlZml4IHN0cmluZykoYWRkcmVzcykoc3RhdGVtZW50KQBJAWFuZCBgYWRkcmVzc2AgbWF0Y2hlcyB0aGUgYGRlc3RgIGFjY291bnQ7IHRoZSBgc3RhdGVtZW50YCBtdXN0IG1hdGNoIHRoYXQgd2hpY2ggaXPAZXhwZWN0ZWQgYWNjb3JkaW5nIHRvIHlvdXIgcHVyY2hhc2UgYXJyYW5nZW1lbnQuACxQYXJhbWV0ZXJzOtgtIGBkZXN0YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgdG8gcGF5b3V0IHRoZSBjbGFpbS5dAS0gYGV0aGVyZXVtX3NpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgYW4gZXRoZXJldW0gc2lnbmVkIG1lc3NhZ2UgbWF0Y2hpbmcgdGhlIGZvcm1hdEggIGRlc2NyaWJlZCBhYm92ZS45AS0gYHN0YXRlbWVudGA6IFRoZSBpZGVudGl0eSBvZiB0aGUgc3RhdGVtZW50IHdoaWNoIGlzIGJlaW5nIGF0dGVzdGVkIHRvIGluIHRoZTAgIHNpZ25hdHVyZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLvxXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gdmFsaWRhdGUgdW5zaWduZWQgYGNsYWltX2F0dGVzdGAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+GGF0dGVzdAQBJHN0YXRlbWVudBgBHFZlYzx1OD4AA0z0QXR0ZXN0IHRvIGEgc3RhdGVtZW50LCBuZWVkZWQgdG8gZmluYWxpemUgdGhlIGNsYWltcyBwcm9jZXNzLgAZAVdBUk5JTkc6IEluc2VjdXJlIHVubGVzcyB5b3VyIGNoYWluIGluY2x1ZGVzIGBQcmV2YWxpZGF0ZUF0dGVzdHNgIGFzIGFcYFRyYW5zYWN0aW9uRXh0ZW5zaW9uYC4AUFVuc2lnbmVkIFZhbGlkYXRpb246KQFBIGNhbGwgdG8gYXR0ZXN0IGlzIGRlZW1lZCB2YWxpZCBpZiB0aGUgc2VuZGVyIGhhcyBhIGBQcmVjbGFpbWAgcmVnaXN0ZXJlZPRhbmQgcHJvdmlkZXMgYSBgc3RhdGVtZW50YCB3aGljaCBpcyBleHBlY3RlZCBmb3IgdGhlIGFjY291bnQuACxQYXJhbWV0ZXJzOjkBLSBgc3RhdGVtZW50YDogVGhlIGlkZW50aXR5IG9mIHRoZSBzdGF0ZW1lbnQgd2hpY2ggaXMgYmVpbmcgYXR0ZXN0ZWQgdG8gaW4gdGhlMCAgc2lnbmF0dXJlLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMu8FdlaWdodCBpbmNsdWRlcyBsb2dpYyB0byBkbyBwcmUtdmFsaWRhdGlvbiBvbiBgYXR0ZXN0YCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4obW92ZV9jbGFpbQwBDG9sZLkBATxFdGhlcmV1bUFkZHJlc3MAAQxuZXe5AQE8RXRoZXJldW1BZGRyZXNzAAE4bWF5YmVfcHJlY2xhaW1BAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4ABAAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMusQEMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltczhFY2RzYVNpZ25hdHVyZQAABAC1AQEgW3U4OyA2NV0AALUBAAADQQAAAAwAuQEMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltczxFdGhlcmV1bUFkZHJlc3MAAAQAHAEgW3U4OyAyMF0AAL0BBBhPcHRpb24EBFQBwQEBCBBOb25lAAAAEFNvbWUEAMEBAAABAADBAQAABAyVAZUBOADFAQQYT3B0aW9uBARUAckBAQgQTm9uZQAAABBTb21lBADJAQAAAQAAyQEMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltczRTdGF0ZW1lbnRLaW5kAAEIHFJlZ3VsYXIAAAAQU2FmdAABAADNAQxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQQQ2FsbAQEVAABJERzZXRfaW52dWxuZXJhYmxlcwQBDG5ld50BAURWZWM8VDo6QWNjb3VudElkPgAANDEBU2V0IHRoZSBsaXN0IG9mIGludnVsbmVyYWJsZSAoZml4ZWQpIGNvbGxhdG9ycy4gVGhlc2UgY29sbGF0b3JzIG11c3QgZG8gc29tZdBwcmVwYXJhdGlvbiwgbmFtZWx5IHRvIGhhdmUgcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuAFkBVGhlIGNhbGwgd2lsbCByZW1vdmUgYW55IGFjY291bnRzIHRoYXQgaGF2ZSBub3QgcmVnaXN0ZXJlZCBrZXlzIGZyb20gdGhlIHNldC4gVGhhdCBpcyxdAWl0IGlzIG5vbi1hdG9taWM7IHRoZSBjYWxsZXIgYWNjZXB0cyBhbGwgYEFjY291bnRJZGBzIHBhc3NlZCBpbiBgbmV3YCBfaW5kaXZpZHVhbGx5XyBhczEBYWNjZXB0YWJsZSBJbnZ1bG5lcmFibGVzLCBhbmQgaXMgbm90IHByb3Bvc2luZyBhIF9zZXRfIG9mIG5ldyBJbnZ1bG5lcmFibGVzLgBZAVRoaXMgY2FsbCBkb2VzIG5vdCBtYWludGFpbiBtdXR1YWwgZXhjbHVzaXZpdHkgb2YgYEludnVsbmVyYWJsZXNgIGFuZCBgQ2FuZGlkYXRlc2AuIEl0YQFpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBiYXRjaCBvZiBgYWRkX2ludnVsbmVyYWJsZWAgYW5kIGByZW1vdmVfaW52dWxuZXJhYmxlYCBpbnN0ZWFkLiBBUQFgYmF0Y2hfYWxsYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuZm9yY2UgYXRvbWljaXR5LiBJZiBhbnkgY2FuZGlkYXRlcyBhcmUgaW5jbHVkZWQgaW5NAWBuZXdgLCB0aGV5IHNob3VsZCBiZSByZW1vdmVkIHdpdGggYHJlbW92ZV9pbnZ1bG5lcmFibGVfY2FuZGlkYXRlYCBhZnRlciBleGVjdXRpb24uAJRNdXN0IGJlIGNhbGxlZCBieSB0aGUgYFVwZGF0ZU9yaWdpbmAuWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMEAQxtYXg4AQx1MzIAARRVAVNldCB0aGUgaWRlYWwgbnVtYmVyIG9mIG5vbi1pbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBJZiBsb3dlcmluZyB0aGlzIG51bWJlciwgdGhlbiB0aGVhAW51bWJlciBvZiBydW5uaW5nIGNvbGxhdG9ycyBjb3VsZCBiZSBoaWdoZXIgdGhhbiB0aGlzIGZpZ3VyZS4gQXNpZGUgZnJvbSB0aGF0IGVkZ2UgY2FzZSw1AXRoZXJlIHNob3VsZCBiZSBubyBvdGhlciB3YXkgdG8gaGF2ZSBtb3JlIGNhbmRpZGF0ZXMgdGhhbiB0aGUgZGVzaXJlZCBudW1iZXIuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuSHNldF9jYW5kaWRhY3lfYm9uZAQBEGJvbmSVAQEwQmFsYW5jZU9mPFQ+AAIceFNldCB0aGUgY2FuZGlkYWN5IGJvbmQgYW1vdW50LgBRAUlmIHRoZSBjYW5kaWRhY3kgYm9uZCBpcyBpbmNyZWFzZWQgYnkgdGhpcyBjYWxsLCBhbGwgY3VycmVudCBjYW5kaWRhdGVzIHdoaWNoIGhhdmUgYU0BZGVwb3NpdCBsb3dlciB0aGFuIHRoZSBuZXcgYm9uZCB3aWxsIGJlIGtpY2tlZCBmcm9tIHRoZSBsaXN0IGFuZCBnZXQgdGhlaXIgZGVwb3NpdHMUYmFjay4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5UcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAMQQQFSZWdpc3RlciB0aGlzIGFjY291bnQgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIFRoZSBhY2NvdW50IG11c3QgKGEpIGFscmVhZHkgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMgYW5kIChiKSBiZSBhYmxlIHRvIHJlc2VydmUgdGhlIGBDYW5kaWRhY3lCb25kYC4A3FRoaXMgY2FsbCBpcyBub3QgYXZhaWxhYmxlIHRvIGBJbnZ1bG5lcmFibGVgIGNvbGxhdG9ycy4wbGVhdmVfaW50ZW50AAQUVQFEZXJlZ2lzdGVyIGBvcmlnaW5gIGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBOb3RlIHRoYXQgdGhlIGNvbGxhdG9yIGNhbiBvbmx5IGxlYXZlIG9uDQFzZXNzaW9uIGNoYW5nZS4gVGhlIGBDYW5kaWRhY3lCb25kYCB3aWxsIGJlIHVucmVzZXJ2ZWQgaW1tZWRpYXRlbHkuABkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgd291bGQgZHJvcCBiZWxvd1xgTWluRWxpZ2libGVDb2xsYXRvcnNgLkBhZGRfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAUQRQFBZGQgYSBuZXcgYWNjb3VudCBgd2hvYCB0byB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgd2hvYCBtdXN0IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLiBJZiBgd2hvYCBpcyBhIGNhbmRpZGF0ZSwgdGhleSB3aWxsIGJlIHJlbW92ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuTHJlbW92ZV9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABhBhAVJlbW92ZSBhbiBhY2NvdW50IGB3aG9gIGZyb20gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYEludnVsbmVyYWJsZXNgIG11c3QoYmUgc29ydGVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLix1cGRhdGVfYm9uZAQBLG5ld19kZXBvc2l0lQEBMEJhbGFuY2VPZjxUPgAHHF0BVXBkYXRlIHRoZSBjYW5kaWRhY3kgYm9uZCBvZiBjb2xsYXRvciBjYW5kaWRhdGUgYG9yaWdpbmAgdG8gYSBuZXcgYW1vdW50IGBuZXdfZGVwb3NpdGAuAEEBU2V0dGluZyBhIGBuZXdfZGVwb3NpdGAgdGhhdCBpcyBsb3dlciB0aGFuIHRoZSBjdXJyZW50IGRlcG9zaXQgd2hpbGUgYG9yaWdpbmAgaXPgb2NjdXB5aW5nIGEgdG9wLWBEZXNpcmVkQ2FuZGlkYXRlc2Agc2xvdCBpcyBub3QgYWxsb3dlZC4AWQFUaGlzIGNhbGwgd2lsbCBmYWlsIGlmIGBvcmlnaW5gIGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSwgdGhlIHVwZGF0ZWQgYm9uZCBpcyBsb3dlchkBdGhhbiB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZCwgYW5kL29yIHRoZSBhbW91bnQgY2Fubm90IGJlIHJlc2VydmVkLkx0YWtlX2NhbmRpZGF0ZV9zbG90CAEcZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4AARh0YXJnZXQEATBUOjpBY2NvdW50SWQACBxNAVRoZSBjYWxsZXIgYG9yaWdpbmAgcmVwbGFjZXMgYSBjYW5kaWRhdGUgYHRhcmdldGAgaW4gdGhlIGNvbGxhdG9yIGNhbmRpZGF0ZSBsaXN0IGJ5VQFyZXNlcnZpbmcgYGRlcG9zaXRgLiBUaGUgYW1vdW50IGBkZXBvc2l0YCByZXNlcnZlZCBieSB0aGUgY2FsbGVyIG11c3QgYmUgZ3JlYXRlciB0aGFu4HRoZSBleGlzdGluZyBib25kIG9mIHRoZSB0YXJnZXQgaXQgaXMgdHJ5aW5nIHRvIHJlcGxhY2UuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgYSBjb2xsYXRvciBjYW5kaWRhdGUgb3IgaW52dWxuZXJhYmxlLCB0aGVVAWNhbGxlciBkb2VzIG5vdCBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLCB0aGUgdGFyZ2V0IGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSy8YW5kL29yIHRoZSBgZGVwb3NpdGAgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu0QEMOHBhbGxldF9zZXNzaW9uGHBhbGxldBBDYWxsBARUAAEIIHNldF9rZXlzCAEQa2V5c9UBARxUOjpLZXlzAAEUcHJvb2YYARxWZWM8dTg+AAAk5FNldHMgdGhlIHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIgdG8gYGtleXNgLh0BQWxsb3dzIGFuIGFjY291bnQgdG8gc2V0IGl0cyBzZXNzaW9uIGtleSBwcmlvciB0byBiZWNvbWluZyBhIHZhbGlkYXRvci7AVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uANBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuADQjIyBDb21wbGV4aXR5WQEtIGBPKDEpYC4gQWN0dWFsIGNvc3QgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mIGxlbmd0aCBvZiBgVDo6S2V5czo6a2V5X2lkcygpYCB3aGljaCBpcyAgIGZpeGVkLihwdXJnZV9rZXlzAAEwyFJlbW92ZXMgYW55IHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIuAMBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBhY2NvdW50IG11c3QgYmUgZWl0aGVyIGJlXQFjb252ZXJ0aWJsZSB0byBhIHZhbGlkYXRvciBJRCB1c2luZyB0aGUgY2hhaW4ncyB0eXBpY2FsIGFkZHJlc3Npbmcgc3lzdGVtICh0aGlzIHVzdWFsbHlRAW1lYW5zIGJlaW5nIGEgY29udHJvbGxlciBhY2NvdW50KSBvciBkaXJlY3RseSBjb252ZXJ0aWJsZSBpbnRvIGEgdmFsaWRhdG9yIElEICh3aGljaJR1c3VhbGx5IG1lYW5zIGJlaW5nIGEgc3Rhc2ggYWNjb3VudCkuADQjIyBDb21wbGV4aXR5PQEtIGBPKDEpYCBpbiBudW1iZXIgb2Yga2V5IHR5cGVzLiBBY3R1YWwgY29zdCBkZXBlbmRzIG9uIHRoZSBudW1iZXIgb2YgbGVuZ3RoIG9mmCAgYFQ6OktleXM6OmtleV9pZHMoKWAgd2hpY2ggaXMgZml4ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtUBCGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmHZAQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAA2QEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAA3QEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu4QEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3TlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2VtAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3TlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ55QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHOpAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdOUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c6kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2WtAwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodHkBARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbjkCATRCb3g8TG9jYXRpb24+AAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ABBhJAUV4dG9sbCB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBjYW4gYmUgY29tbXVuaWNhdGVkIHdpdGggdGhyb3VnaCBhIHBhcnRpY3VsYXI8dmVyc2lvbiBvZiBYQ00uANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u2C0gYGxvY2F0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRoYXQgaXMgYmVpbmcgZGVzY3JpYmVkLhEBLSBgeGNtX3ZlcnNpb25gOiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgWENNIHRoYXQgYGxvY2F0aW9uYCBzdXBwb3J0cy5kZm9yY2VfZGVmYXVsdF94Y21fdmVyc2lvbgQBRG1heWJlX3hjbV92ZXJzaW9u2AFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbuUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27lAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdOUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c6kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl04QIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdOUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c6kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl04QIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZJkBARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN05QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeeUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzqQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXThAgEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c6kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ55QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADBhVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdOUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzqQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGXZAwFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZN0DAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGXZAwFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3RtAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl04QIBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlBhZGRfYXV0aG9yaXplZF9hbGlhcwgBHGFsaWFzZXLlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHGV4cGlyZXNlAQEsT3B0aW9uPHU2ND4ADixdAUF1dGhvcml6ZSBhbm90aGVyIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLikBVGhlIGBhbGlhc2VyYCBpcyBvbmx5IGF1dGhvcml6ZWQgdW50aWwgdGhlIHByb3ZpZGVkIGBleHBpcnlgIGJsb2NrIG51bWJlci5JAVRoZSBjYWxsIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGFsaWFzIGluIG9yZGVyIHRvIHVwZGF0ZSBpdHNYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLgBRAVVzdWFsbHkgdXNlZnVsIHRvIGFsbG93IHlvdXIgbG9jYWwgYWNjb3VudCB0byBiZSBhbGlhc2VkIGludG8gZnJvbSBhIHJlbW90ZSBsb2NhdGlvbvRhbHNvIHVuZGVyIHlvdXIgY29udHJvbCAobGlrZSB5b3VyIGFjY291bnQgb24gYW5vdGhlciBjaGFpbikuAFEBV0FSTklORzogbWFrZSBzdXJlIHRoZSBjYWxsZXIgYG9yaWdpbmAgKHlvdSkgdHJ1c3RzIHRoZSBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWN0IGluWQF0aGVpci95b3VyIG5hbWUuIE9uY2UgYXV0aG9yaXplZCB1c2luZyB0aGlzIGNhbGwsIHRoZSBgYWxpYXNlcmAgY2FuIGZyZWVseSBpbXBlcnNvbmF0ZdRgb3JpZ2luYCBpbiBYQ00gcHJvZ3JhbXMgZXhlY3V0ZWQgb24gdGhlIGxvY2FsIGNoYWluLlxyZW1vdmVfYXV0aG9yaXplZF9hbGlhcwQBHGFsaWFzZXLlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAPCF0BUmVtb3ZlIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYCBmcm9tIHRoZSBsaXN0IG9mIGxvY2F0aW9ucyB0aGF0IGNhbiBhbGlhcyBpbnRvkHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLnRyZW1vdmVfYWxsX2F1dGhvcml6ZWRfYWxpYXNlcwAQCEkBUmVtb3ZlIGFsbCBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgcyB0aGF0IGNhbiBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYERtYWtpbmcgdGhpcyBjYWxsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7lAQgMeGNtRFZlcnNpb25lZExvY2F0aW9uAAEMCFYzBADpAQFEdjM6Ok11bHRpTG9jYXRpb24AAwAIVjQEAAUCATB2NDo6TG9jYXRpb24ABAAIVjUEADkCATB2NTo6TG9jYXRpb24ABQAA6QEQLHN0YWdpbmdfeGNtCHYzNG11bHRpbG9jYXRpb240TXVsdGlMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3LtAQEkSnVuY3Rpb25zAADtARAMeGNtCHYzJGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA8QEBIEp1bmN0aW9uAAEACFgyCADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgACAAhYMwwA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgADAAhYNBAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAAQACFg1FADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAFAAhYNhgA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAGAAhYNxwA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAAcACFg4IADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAIAADxARAMeGNtCHYzIGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAZAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya/UBAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3Jr9QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi4AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya/UBAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAJEBARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWT9AQEYQm9keUlkAAEQcGFydAECASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAPkBASROZXR3b3JrSWQACQAA9QEEGE9wdGlvbgQEVAH5AQEIEE5vbmUAAAAQU29tZQQA+QEAAAEAAPkBEAx4Y20IdjMganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLgBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAP0BEAx4Y20IdjMganVuY3Rpb24YQm9keUlkAAEoEFVuaXQAAAAcTW9uaWtlcgQAdAEcW3U4OyA0XQABABRJbmRleAQAZAEMdTMyAAIAJEV4ZWN1dGl2ZQADACRUZWNobmljYWwABAAsTGVnaXNsYXRpdmUABQAgSnVkaWNpYWwABgAcRGVmZW5zZQAHADhBZG1pbmlzdHJhdGlvbgAIACBUcmVhc3VyeQAJAAABAhAMeGNtCHYzIGp1bmN0aW9uIEJvZHlQYXJ0AAEUFFZvaWNlAAAAHE1lbWJlcnMEARRjb3VudGQBDHUzMgABACBGcmFjdGlvbggBDG5vbWQBDHUzMgABFGRlbm9tZAEMdTMyAAIAREF0TGVhc3RQcm9wb3J0aW9uCAEMbm9tZAEMdTMyAAEUZGVub21kAQx1MzIAAwBITW9yZVRoYW5Qcm9wb3J0aW9uCAEMbm9tZAEMdTMyAAEUZGVub21kAQx1MzIABAAABQIQLHN0YWdpbmdfeGNtCHY0IGxvY2F0aW9uIExvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcgkCASRKdW5jdGlvbnMAAAkCECxzdGFnaW5nX3hjbQh2NCRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAA0CAUhBcmM8W0p1bmN0aW9uOyAxXT4AAQAIWDIEAB0CAUhBcmM8W0p1bmN0aW9uOyAyXT4AAgAIWDMEACECAUhBcmM8W0p1bmN0aW9uOyAzXT4AAwAIWDQEACUCAUhBcmM8W0p1bmN0aW9uOyA0XT4ABAAIWDUEACkCAUhBcmM8W0p1bmN0aW9uOyA1XT4ABQAIWDYEAC0CAUhBcmM8W0p1bmN0aW9uOyA2XT4ABgAIWDcEADECAUhBcmM8W0p1bmN0aW9uOyA3XT4ABwAIWDgEADUCAUhBcmM8W0p1bmN0aW9uOyA4XT4ACAAADQIAAAMBAAAAEQIAEQIQLHN0YWdpbmdfeGNtCHY0IGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAZAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29yaxUCAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3JrFQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi4AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29yaxUCAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAJEBARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWT9AQEYQm9keUlkAAEQcGFydAECASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEABkCASROZXR3b3JrSWQACQAAFQIEGE9wdGlvbgQEVAEZAgEIEE5vbmUAAAAQU29tZQQAGQIAAAEAABkCECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiROZXR3b3JrSWQAASwkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAHFdlc3RlbmQABAAYUm9jb2NvAAUAGFdvY29jbwAGACBFdGhlcmV1bQQBIGNoYWluX2lkuAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAHQIAAAMCAAAAEQIAIQIAAAMDAAAAEQIAJQIAAAMEAAAAEQIAKQIAAAMFAAAAEQIALQIAAAMGAAAAEQIAMQIAAAMHAAAAEQIANQIAAAMIAAAAEQIAOQIQLHN0YWdpbmdfeGNtCHY1IGxvY2F0aW9uIExvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcj0CASRKdW5jdGlvbnMAAD0CECxzdGFnaW5nX3hjbQh2NSRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAEECAUhBcmM8W0p1bmN0aW9uOyAxXT4AAQAIWDIEAFECAUhBcmM8W0p1bmN0aW9uOyAyXT4AAgAIWDMEAFUCAUhBcmM8W0p1bmN0aW9uOyAzXT4AAwAIWDQEAFkCAUhBcmM8W0p1bmN0aW9uOyA0XT4ABAAIWDUEAF0CAUhBcmM8W0p1bmN0aW9uOyA1XT4ABQAIWDYEAGECAUhBcmM8W0p1bmN0aW9uOyA2XT4ABgAIWDcEAGUCAUhBcmM8W0p1bmN0aW9uOyA3XT4ABwAIWDgEAGkCAUhBcmM8W0p1bmN0aW9uOyA4XT4ACAAAQQIAAAMBAAAARQIARQIQLHN0YWdpbmdfeGNtCHY1IGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAZAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya0kCAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3JrSQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi4AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya0kCAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAJEBARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWT9AQEYQm9keUlkAAEQcGFydAECASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAE0CASROZXR3b3JrSWQACQAASQIEGE9wdGlvbgQEVAFNAgEIEE5vbmUAAAAQU29tZQQATQIAAAEAAE0CECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiROZXR3b3JrSWQAASAkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAIEV0aGVyZXVtBAEgY2hhaW5faWS4AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAABRAgAAAwIAAABFAgBVAgAAAwMAAABFAgBZAgAAAwQAAABFAgBdAgAAAwUAAABFAgBhAgAAAwYAAABFAgBlAgAAAwcAAABFAgBpAgAAAwgAAABFAgBtAggMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAHECAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQA5QIBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BAAxAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAcQIMDHhjbQh2MwxYY20EEENhbGwAAAQAdQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAHUCAAACeQIAeQIMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAB9AgEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAB9AgEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAfQIBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLgBHFF1ZXJ5SWQAASByZXNwb25zZZ0CASBSZXNwb25zZQABKG1heF93ZWlnaHR5AQEYV2VpZ2h0AAEccXVlcmllcsUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c30CASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ56QEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHN9AgEsTXVsdGlBc3NldHMAARBkZXN06QEBNE11bHRpTG9jYXRpb24AAQx4Y21xAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kyQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0eQEBGFdlaWdodAABEGNhbGzNAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyZAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWQBDHUzMgABMG1heF9jYXBhY2l0eWQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50ZAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmQBDHUzMgABGHNlbmRlcmQBDHUzMgABJHJlY2lwaWVudGQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADtAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBADRAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRz1QIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeekBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHPVAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TpAQE0TXVsdGlMb2NhdGlvbgABDHhjbXECARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZl1QIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50fQIBLE11bHRpQXNzZXRzAAEcbWF4aW1hbJkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRz1QIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZl6QEBNE11bHRpTG9jYXRpb24AAQx4Y21xAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRz1QIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN06QEBNE11bHRpTG9jYXRpb24AAQx4Y21xAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb9ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c9UCAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXOFAgEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdOECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAcQIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAcQIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHN9AgEsTXVsdGlBc3NldHMAARh0aWNrZXTpAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC4AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkuAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAH0CASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQAfQIBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAxQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAoQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAC9AgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZv0QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4ZAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcmQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQA0QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADxAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmv5AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27tAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNtcQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXSFAgEoTXVsdGlBc3NldAABIHVubG9ja2Vy6QEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldIUCAShNdWx0aUFzc2V0AAEYdGFyZ2V06QEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldIUCAShNdWx0aUFzc2V0AAEUb3duZXLpAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXSFAgEoTXVsdGlBc3NldAABGGxvY2tlcukBATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3mQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAOkBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdOECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbsUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAfQIQDHhjbQh2MyhtdWx0aWFzc2V0LE11bHRpQXNzZXRzAAAEAIECATxWZWM8TXVsdGlBc3NldD4AAIECAAAChQIAhQIQDHhjbQh2MyhtdWx0aWFzc2V0KE11bHRpQXNzZXQAAAgBCGlkiQIBHEFzc2V0SWQAAQxmdW6NAgEsRnVuZ2liaWxpdHkAAIkCEAx4Y20IdjMobXVsdGlhc3NldBxBc3NldElkAAEIIENvbmNyZXRlBADpAQE0TXVsdGlMb2NhdGlvbgAAACBBYnN0cmFjdAQACAEgW3U4OyAzMl0AAQAAjQIQDHhjbQh2MyhtdWx0aWFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBACRAQEQdTEyOAAAACxOb25GdW5naWJsZQQAkQIBNEFzc2V0SW5zdGFuY2UAAQAAkQIQDHhjbQh2MyhtdWx0aWFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BACRAQEQdTEyOAABABhBcnJheTQEAHQBHFt1ODsgNF0AAgAYQXJyYXk4BACVAgEcW3U4OyA4XQADABxBcnJheTE2BACZAgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAAlQIAAAMIAAAADACZAgAAAxAAAAAMAJ0CDAx4Y20IdjMgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAH0CASxNdWx0aUFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAKECAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQArQIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BAC9AgE4TWF5YmVFcnJvckNvZGUABQAAoQIEGE9wdGlvbgQEVAGlAgEIEE5vbmUAAAAQU29tZQQApQIAAAEAAKUCAAAECDipAgCpAhAMeGNtCHYzGHRyYWl0cxRFcnJvcgABoCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgBMVW5oYW5kbGVkWGNtVmVyc2lvbgAjAEhXZWlnaHRMaW1pdFJlYWNoZWQEAHkBARhXZWlnaHQAJAAcQmFycmllcgAlAExXZWlnaHROb3RDb21wdXRhYmxlACYAREV4Y2VlZHNTdGFja0xpbWl0ACcAAK0CDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBsQIEUwAABAC5AgEYVmVjPFQ+AACxAgwMeGNtCHYzKFBhbGxldEluZm8AABgBFGluZGV4ZAEMdTMyAAEQbmFtZbUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1ltQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JkAQx1MzIAARRtaW5vcmQBDHUzMgABFHBhdGNoZAEMdTMyAAC1AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AALkCAAACsQIAvQIMDHhjbQh2MzhNYXliZUVycm9yQ29kZQABDBxTdWNjZXNzAAAAFEVycm9yBADBAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAQA4VHJ1bmNhdGVkRXJyb3IEAMECAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgACAADBAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAMUCBBhPcHRpb24EBFQB6QEBCBBOb25lAAAAEFNvbWUEAOkBAAABAADJAgwMeGNtCHYzKE9yaWdpbktpbmQAARAYTmF0aXZlAAAAQFNvdmVyZWlnbkFjY291bnQAAQAkU3VwZXJ1c2VyAAIADFhjbQADAADNAgwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQYARxWZWM8dTg+AADRAgwMeGNtCHYzRFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbukBATRNdWx0aUxvY2F0aW9uAAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEobWF4X3dlaWdodHkBARhXZWlnaHQAANUCEAx4Y20IdjMobXVsdGlhc3NldEBNdWx0aUFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAB9AgEsTXVsdGlBc3NldHMAAAAQV2lsZAQA2QIBOFdpbGRNdWx0aUFzc2V0AAEAANkCEAx4Y20IdjMobXVsdGlhc3NldDhXaWxkTXVsdGlBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZIkCARxBc3NldElkAAEMZnVu3QIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABkAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWSJAgEcQXNzZXRJZAABDGZ1bt0CATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGQBDHUzMgADAADdAhAMeGNtCHYzKG11bHRpYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAOECDAx4Y20IdjMsV2VpZ2h0TGltaXQAAQgkVW5saW1pdGVkAAAAHExpbWl0ZWQEAHkBARhXZWlnaHQAAQAA5QIMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABADpAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAA6QIAAALtAgDtAgwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQA8QIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAPECARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQA8QIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEgcmVzcG9uc2UJAwEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0eQEBGFdlaWdodAABHHF1ZXJpZXIdAwFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRz8QIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5BQIBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRz8QIBGEFzc2V0cwABEGRlc3QFAgEgTG9jYXRpb24AAQx4Y23lAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kyQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0eQEBGFdlaWdodAABEGNhbGzNAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyZAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWQBDHUzMgABMG1heF9jYXBhY2l0eWQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50ZAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmQBDHUzMgABGHNlbmRlcmQBDHUzMgABJHJlY2lwaWVudGQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAAJAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAIQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0cyUDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5BQIBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMlAwEsQXNzZXRGaWx0ZXIAARBkZXN0BQIBIExvY2F0aW9uAAEMeGNt5QIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUlAwEsQXNzZXRGaWx0ZXIAARB3YW508QIBGEFzc2V0cwABHG1heGltYWyZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cyUDASxBc3NldEZpbHRlcgABHHJlc2VydmUFAgEgTG9jYXRpb24AAQx4Y23lAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzJQMBLEFzc2V0RmlsdGVyAAEQZGVzdAUCASBMb2NhdGlvbgABDHhjbeUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvIQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzJQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXP5AgEUQXNzZXQAATB3ZWlnaHRfbGltaXThAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAOUCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAOUCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRz8QIBGEFzc2V0cwABGHRpY2tldAUCASBMb2NhdGlvbgAYABBUcmFwBAC4AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkuAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAPECARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAPECARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAAdAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAoQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAC9AgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvIQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4ZAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcmQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAIQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAARAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsZAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24JAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbeUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0+QIBFEFzc2V0AAEgdW5sb2NrZXIFAgEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldPkCARRBc3NldAABGHRhcmdldAUCASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0+QIBFEFzc2V0AAEUb3duZXIFAgEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0+QIBFEFzc2V0AAEYbG9ja2VyBQIBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3mQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAAUCASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXThAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW4dAwFAT3B0aW9uPExvY2F0aW9uPgAvAADxAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQYQXNzZXRzAAAEAPUCAShWZWM8QXNzZXQ+AAD1AgAAAvkCAPkCECxzdGFnaW5nX3hjbQh2NBRhc3NldBRBc3NldAAACAEIaWT9AgEcQXNzZXRJZAABDGZ1bgEDASxGdW5naWJpbGl0eQAA/QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0HEFzc2V0SWQAAAQABQIBIExvY2F0aW9uAAABAxAsc3RhZ2luZ194Y20IdjQUYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAJEBARB1MTI4AAAALE5vbkZ1bmdpYmxlBAAFAwE0QXNzZXRJbnN0YW5jZQABAAAFAxAsc3RhZ2luZ194Y20IdjQUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAJEBARB1MTI4AAEAGEFycmF5NAQAdAEcW3U4OyA0XQACABhBcnJheTgEAJUCARxbdTg7IDhdAAMAHEFycmF5MTYEAJkCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAAJAwwsc3RhZ2luZ194Y20IdjQgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAPECARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BAChAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAA0DAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAvQIBOE1heWJlRXJyb3JDb2RlAAUAAA0DDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEQMEUwAABAAZAwEYVmVjPFQ+AAARAwwsc3RhZ2luZ194Y20IdjQoUGFsbGV0SW5mbwAAGAEUaW5kZXhkAQx1MzIAARBuYW1lFQMBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWUVAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmQBDHUzMgABFG1pbm9yZAEMdTMyAAEUcGF0Y2hkAQx1MzIAABUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAGQMAAAIRAwAdAwQYT3B0aW9uBARUAQUCAQgQTm9uZQAAABBTb21lBAAFAgAAAQAAIQMMLHN0YWdpbmdfeGNtCHY0RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbgUCASBMb2NhdGlvbgABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABKG1heF93ZWlnaHR5AQEYV2VpZ2h0AAAlAxAsc3RhZ2luZ194Y20IdjQUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAPECARhBc3NldHMAAAAQV2lsZAQAKQMBJFdpbGRBc3NldAABAAApAxAsc3RhZ2luZ194Y20IdjQUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlk/QIBHEFzc2V0SWQAAQxmdW4tAwE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGQBDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZP0CARxBc3NldElkAAEMZnVuLQMBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50ZAEMdTMyAAMAAC0DECxzdGFnaW5nX3hjbQh2NBRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAMQMMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABAA1AwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAANQMAAAI5AwA5Awwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQAPQMBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAD0DARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAPQMBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEgcmVzcG9uc2VVAwEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0eQEBGFdlaWdodAABHHF1ZXJpZXJ1AwFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzPQMBGEFzc2V0cwABLGJlbmVmaWNpYXJ5OQIBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzPQMBGEFzc2V0cwABEGRlc3Q5AgEgTG9jYXRpb24AAQx4Y20xAwEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kyQIBKE9yaWdpbktpbmQAAUxmYWxsYmFja19tYXhfd2VpZ2h0dQEBOE9wdGlvbjxXZWlnaHQ+AAEQY2FsbM0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplZAEMdTMyAAEwbWF4X2NhcGFjaXR5ZAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yZAEMdTMyAAEYc2VuZGVyZAEMdTMyAAEkcmVjaXBpZW50ZAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAD0CAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAB5AwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzfQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnk5AgEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c30DASxBc3NldEZpbHRlcgABEGRlc3Q5AgEgTG9jYXRpb24AAQx4Y20xAwEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZX0DASxBc3NldEZpbHRlcgABEHdhbnQ9AwEYQXNzZXRzAAEcbWF4aW1hbJkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzfQMBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZTkCASBMb2NhdGlvbgABDHhjbTEDARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHN9AwEsQXNzZXRGaWx0ZXIAARBkZXN0OQIBIExvY2F0aW9uAAEMeGNtMQMBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm95AwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHN9AwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc0UDARRBc3NldAABMHdlaWdodF9saW1pdOECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAMQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAMQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHM9AwEYQXNzZXRzAAEYdGlja2V0OQIBIExvY2F0aW9uABgAEFRyYXAEALgBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS4ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodHkBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAPQMBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAPQMBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAHUDAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABZAwFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAL0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm95AwFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhkAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yZAEMdTMyAAE8bWluX2NyYXRlX21pbm9yZAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAB5AwFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAEUCASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya00CASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbj0CAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtMQMBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRFAwEUQXNzZXQAASB1bmxvY2tlcjkCASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0RQMBFEFzc2V0AAEYdGFyZ2V0OQIBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXRFAwEUQXNzZXQAARRvd25lcjkCASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRFAwEUQXNzZXQAARhsb2NrZXI5AgEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXeZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAOQIBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdOECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbnUDAUBPcHRpb248TG9jYXRpb24+AC8AHFBheUZlZXMEARRhc3NldEUDARRBc3NldAAwAEBJbml0aWF0ZVRyYW5zZmVyFAEsZGVzdGluYXRpb245AgEgTG9jYXRpb24AASxyZW1vdGVfZmVlc4kDAWxPcHRpb248QXNzZXRUcmFuc2ZlckZpbHRlcj4AATxwcmVzZXJ2ZV9vcmlnaW6ZAQEQYm9vbAABGGFzc2V0c5EDAeBCb3VuZGVkVmVjPEFzc2V0VHJhbnNmZXJGaWx0ZXIsIE1heEFzc2V0VHJhbnNmZXJGaWx0ZXJzPgABKHJlbW90ZV94Y20xAwEcWGNtPCgpPgAxAERFeGVjdXRlV2l0aE9yaWdpbggBRGRlc2NlbmRhbnRfb3JpZ2lumQMBYE9wdGlvbjxJbnRlcmlvckxvY2F0aW9uPgABDHhjbTEDASRYY208Q2FsbD4AMgAgU2V0SGludHMEARRoaW50c50DAYRCb3VuZGVkVmVjPEhpbnQsIEhpbnROdW1WYXJpYW50cz4AMwAAPQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0GEFzc2V0cwAABABBAwEoVmVjPEFzc2V0PgAAQQMAAAJFAwBFAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQUQXNzZXQAAAgBCGlkSQMBHEFzc2V0SWQAAQxmdW5NAwEsRnVuZ2liaWxpdHkAAEkDECxzdGFnaW5nX3hjbQh2NRRhc3NldBxBc3NldElkAAAEADkCASBMb2NhdGlvbgAATQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBACRAQEQdTEyOAAAACxOb25GdW5naWJsZQQAUQMBNEFzc2V0SW5zdGFuY2UAAQAAUQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BACRAQEQdTEyOAABABhBcnJheTQEAHQBHFt1ODsgNF0AAgAYQXJyYXk4BACVAgEcW3U4OyA4XQADABxBcnJheTE2BACZAgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAAVQMMLHN0YWdpbmdfeGNtCHY1IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBAA9AwEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAWQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBABlAwGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAL0CAThNYXliZUVycm9yQ29kZQAFAABZAwQYT3B0aW9uBARUAV0DAQgQTm9uZQAAABBTb21lBABdAwAAAQAAXQMAAAQIOGEDAGEDEAx4Y20IdjUYdHJhaXRzFEVycm9yAAGkIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkBAB5AQEYV2VpZ2h0ACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAABlAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWkDBFMAAAQAcQMBGFZlYzxUPgAAaQMMLHN0YWdpbmdfeGNtCHY1KFBhbGxldEluZm8AABgBFGluZGV4ZAEMdTMyAAEQbmFtZW0DAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1lbQMBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JkAQx1MzIAARRtaW5vcmQBDHUzMgABFHBhdGNoZAEMdTMyAABtAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAHEDAAACaQMAdQMEGE9wdGlvbgQEVAE5AgEIEE5vbmUAAAAQU29tZQQAOQIAAAEAAHkDDCxzdGFnaW5nX3hjbQh2NURRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb245AgEgTG9jYXRpb24AASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0eQEBGFdlaWdodAAAfQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAA9AwEYQXNzZXRzAAAAEFdpbGQEAIEDASRXaWxkQXNzZXQAAQAAgQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZEkDARxBc3NldElkAAEMZnVuhQMBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABkAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWRJAwEcQXNzZXRJZAABDGZ1boUDATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGQBDHUzMgADAACFAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAIkDBBhPcHRpb24EBFQBjQMBCBBOb25lAAAAEFNvbWUEAI0DAAABAACNAxAsc3RhZ2luZ194Y20IdjUUYXNzZXRMQXNzZXRUcmFuc2ZlckZpbHRlcgABDCBUZWxlcG9ydAQAfQMBLEFzc2V0RmlsdGVyAAAAOFJlc2VydmVEZXBvc2l0BAB9AwEsQXNzZXRGaWx0ZXIAAQA8UmVzZXJ2ZVdpdGhkcmF3BAB9AwEsQXNzZXRGaWx0ZXIAAgAAkQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGNAwRTAAAEAJUDARhWZWM8VD4AAJUDAAACjQMAmQMEGE9wdGlvbgQEVAE9AgEIEE5vbmUAAAAQU29tZQQAPQIAAAEAAJ0DDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBoQMEUwAABAClAwEYVmVjPFQ+AAChAwwsc3RhZ2luZ194Y20IdjUQSGludAABBDBBc3NldENsYWltZXIEASBsb2NhdGlvbjkCASBMb2NhdGlvbgAAAAClAwAAAqEDAKkDCAx4Y208VmVyc2lvbmVkQXNzZXRzAAEMCFYzBAB9AgE8djM6Ok11bHRpQXNzZXRzAAMACFY0BADxAgEodjQ6OkFzc2V0cwAEAAhWNQQAPQMBKHY1OjpBc3NldHMABQAArQMIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYzBACxAwFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEAMEDAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAhWNQQAzQMBUHY1OjpYY208UnVudGltZUNhbGw+AAUAALEDDAx4Y20IdjMMWGNtBBBDYWxsAAAEALUDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAC1AwAAArkDALkDDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAfQIBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAfQIBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAH0CASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEgcmVzcG9uc2WdAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0eQEBGFdlaWdodAABHHF1ZXJpZXLFAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHN9AgEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyeekBATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzfQIBLE11bHRpQXNzZXRzAAEQZGVzdOkBATRNdWx0aUxvY2F0aW9uAAEMeGNtcQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZMkCAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdHkBARhXZWlnaHQAARBjYWxsvQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmQBDHUzMgABQG1heF9tZXNzYWdlX3NpemVkAQx1MzIAATBtYXhfY2FwYWNpdHlkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JkAQx1MzIAARhzZW5kZXJkAQx1MzIAASRyZWNpcGllbnRkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA7QEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQA0QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c9UCAUBNdWx0aUFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnpAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRz1QIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN06QEBNE11bHRpTG9jYXRpb24AAQx4Y21xAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZdUCAUBNdWx0aUFzc2V0RmlsdGVyAAEQd2FudH0CASxNdWx0aUFzc2V0cwABHG1heGltYWyZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c9UCAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZekBATRNdWx0aUxvY2F0aW9uAAEMeGNtcQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c9UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdOkBATRNdWx0aUxvY2F0aW9uAAEMeGNtcQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm/RAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHPVAgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzhQIBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXThAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEALEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEALEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzfQIBLE11bHRpQXNzZXRzAAEYdGlja2V06QEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAuAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0eQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAB9AgEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAH0CASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAMUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAKECAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAvQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb9ECAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGQBDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JkAQx1MzIAATxtaW5fY3JhdGVfbWlub3JkAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEANECAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA8QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr+QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u7QEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbXECARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0hQIBKE11bHRpQXNzZXQAASB1bmxvY2tlcukBATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXSFAgEoTXVsdGlBc3NldAABGHRhcmdldOkBATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXSFAgEoTXVsdGlBc3NldAABFG93bmVy6QEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0hQIBKE11bHRpQXNzZXQAARhsb2NrZXLpAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd5kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADpAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXThAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW7FAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAL0DDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AAMEDDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAxQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAMUDAAACyQMAyQMMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAPECARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADxAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAPECARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABIHJlc3BvbnNlCQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodHkBARhXZWlnaHQAARxxdWVyaWVyHQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c/ECARhBc3NldHMAASxiZW5lZmljaWFyeQUCASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c/ECARhBc3NldHMAARBkZXN0BQIBIExvY2F0aW9uAAEMeGNt5QIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZMkCAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdHkBARhXZWlnaHQAARBjYWxsvQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmQBDHUzMgABQG1heF9tZXNzYWdlX3NpemVkAQx1MzIAATBtYXhfY2FwYWNpdHlkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JkAQx1MzIAARhzZW5kZXJkAQx1MzIAASRyZWNpcGllbnRkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQACQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEACEDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMlAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeQUCASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzJQMBLEFzc2V0RmlsdGVyAAEQZGVzdAUCASBMb2NhdGlvbgABDHhjbeUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlJQMBLEFzc2V0RmlsdGVyAAEQd2FudPECARhBc3NldHMAARxtYXhpbWFsmQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMlAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlBQIBIExvY2F0aW9uAAEMeGNt5QIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cyUDASxBc3NldEZpbHRlcgABEGRlc3QFAgEgTG9jYXRpb24AAQx4Y23lAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbyEDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cyUDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVz+QIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl04QIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBADBAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BADBAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c/ECARhBc3NldHMAARh0aWNrZXQFAgEgTG9jYXRpb24AGAAQVHJhcAQAuAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0eQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADxAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BADxAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAHQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAKECAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAvQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbyEDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGQBDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JkAQx1MzIAATxtaW5fY3JhdGVfbWlub3JkAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEACEDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAEQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrGQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uCQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y23lAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldPkCARRBc3NldAABIHVubG9ja2VyBQIBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXT5AgEUQXNzZXQAARh0YXJnZXQFAgEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldPkCARRBc3NldAABFG93bmVyBQIBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldPkCARRBc3NldAABGGxvY2tlcgUCASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd5kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAAFAgEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl04QIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luHQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAAzQMMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABADRAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAA0QMAAALVAwDVAwwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQAPQMBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAD0DARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAPQMBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEgcmVzcG9uc2VVAwEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0eQEBGFdlaWdodAABHHF1ZXJpZXJ1AwFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzPQMBGEFzc2V0cwABLGJlbmVmaWNpYXJ5OQIBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzPQMBGEFzc2V0cwABEGRlc3Q5AgEgTG9jYXRpb24AAQx4Y20xAwEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kyQIBKE9yaWdpbktpbmQAAUxmYWxsYmFja19tYXhfd2VpZ2h0dQEBOE9wdGlvbjxXZWlnaHQ+AAEQY2FsbL0DAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplZAEMdTMyAAEwbWF4X2NhcGFjaXR5ZAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yZAEMdTMyAAEYc2VuZGVyZAEMdTMyAAEkcmVjaXBpZW50ZAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAD0CAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAB5AwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzfQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnk5AgEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c30DASxBc3NldEZpbHRlcgABEGRlc3Q5AgEgTG9jYXRpb24AAQx4Y20xAwEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZX0DASxBc3NldEZpbHRlcgABEHdhbnQ9AwEYQXNzZXRzAAEcbWF4aW1hbJkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzfQMBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZTkCASBMb2NhdGlvbgABDHhjbTEDARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHN9AwEsQXNzZXRGaWx0ZXIAARBkZXN0OQIBIExvY2F0aW9uAAEMeGNtMQMBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm95AwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHN9AwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc0UDARRBc3NldAABMHdlaWdodF9saW1pdOECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAzQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAzQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHM9AwEYQXNzZXRzAAEYdGlja2V0OQIBIExvY2F0aW9uABgAEFRyYXAEALgBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS4ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodHkBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAPQMBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAPQMBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAHUDAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABZAwFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAL0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm95AwFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhkAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yZAEMdTMyAAE8bWluX2NyYXRlX21pbm9yZAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAB5AwFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAEUCASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya00CASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbj0CAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtMQMBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRFAwEUQXNzZXQAASB1bmxvY2tlcjkCASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0RQMBFEFzc2V0AAEYdGFyZ2V0OQIBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXRFAwEUQXNzZXQAARRvd25lcjkCASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRFAwEUQXNzZXQAARhsb2NrZXI5AgEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXeZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAOQIBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdOECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbnUDAUBPcHRpb248TG9jYXRpb24+AC8AHFBheUZlZXMEARRhc3NldEUDARRBc3NldAAwAEBJbml0aWF0ZVRyYW5zZmVyFAEsZGVzdGluYXRpb245AgEgTG9jYXRpb24AASxyZW1vdGVfZmVlc4kDAWxPcHRpb248QXNzZXRUcmFuc2ZlckZpbHRlcj4AATxwcmVzZXJ2ZV9vcmlnaW6ZAQEQYm9vbAABGGFzc2V0c5EDAeBCb3VuZGVkVmVjPEFzc2V0VHJhbnNmZXJGaWx0ZXIsIE1heEFzc2V0VHJhbnNmZXJGaWx0ZXJzPgABKHJlbW90ZV94Y20xAwEcWGNtPCgpPgAxAERFeGVjdXRlV2l0aE9yaWdpbggBRGRlc2NlbmRhbnRfb3JpZ2lumQMBYE9wdGlvbjxJbnRlcmlvckxvY2F0aW9uPgABDHhjbc0DASRYY208Q2FsbD4AMgAgU2V0SGludHMEARRoaW50c50DAYRCb3VuZGVkVmVjPEhpbnQsIEhpbnROdW1WYXJpYW50cz4AMwAA2QMQUHN0YWdpbmdfeGNtX2V4ZWN1dG9yGHRyYWl0czhhc3NldF90cmFuc2ZlcjBUcmFuc2ZlclR5cGUAARAgVGVsZXBvcnQAAAAwTG9jYWxSZXNlcnZlAAEASERlc3RpbmF0aW9uUmVzZXJ2ZQACADRSZW1vdGVSZXNlcnZlBADlAQFEVmVyc2lvbmVkTG9jYXRpb24AAwAA3QMIDHhjbUBWZXJzaW9uZWRBc3NldElkAAEMCFYzBACJAgEsdjM6OkFzc2V0SWQAAwAIVjQEAP0CASx2NDo6QXNzZXRJZAAEAAhWNQQASQMBLHY1OjpBc3NldElkAAUAAOEDDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu5QMMcHBhbGxldF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIYcGFsbGV0EENhbGwIBFQABEkAAQRQcmVwb3J0X2JyaWRnZV9zdGF0dXMIASRicmlkZ2VfaWRAARBIMjU2AAEwaXNfY29uZ2VzdGVkmQEBEGJvb2wAAASoTm90aWZpY2F0aW9uIGFib3V0IGNvbmdlc3RlZCBicmlkZ2UgcXVldWUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLukDDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABCCRyZWFwX3BhZ2UIAThtZXNzYWdlX29yaWdpbu0DAUhNZXNzYWdlT3JpZ2luT2Y8VD4AAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAAEPQFSZW1vdmUgYSBwYWdlIHdoaWNoIGhhcyBubyBtb3JlIG1lc3NhZ2VzIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgb3IgaXMgc3RhbGUuSGV4ZWN1dGVfb3ZlcndlaWdodBABOG1lc3NhZ2Vfb3JpZ2lu7QMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABEHBhZ2U4ASRQYWdlSW5kZXgAARRpbmRleDgBHFQ6OlNpemUAATB3ZWlnaHRfbGltaXR5AQEYV2VpZ2h0AAE0eEV4ZWN1dGUgYW4gb3ZlcndlaWdodCBtZXNzYWdlLgBNAVRlbXBvcmFyeSBwcm9jZXNzaW5nIGVycm9ycyB3aWxsIGJlIHByb3BhZ2F0ZWQgd2hlcmVhcyBwZXJtYW5lbnQgZXJyb3JzIGFyZSB0cmVhdGVkVGFzIHN1Y2Nlc3MgY29uZGl0aW9uLgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC41AS0gYG1lc3NhZ2Vfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGFycml2ZWQuPQEtIGBwYWdlYDogVGhlIHBhZ2UgaW4gdGhlIHF1ZXVlIGluIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGlzIHNpdHRpbmcuCQEtIGBpbmRleGA6IFRoZSBpbmRleCBpbnRvIHRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZC5ZAS0gYHdlaWdodF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgYWxsb3dlZCB0byBiZSBjb25zdW1lZCBpbiB0aGUgZXhlY3V0aW9uRCAgb2YgdGhlIG1lc3NhZ2UuAPRCZW5jaG1hcmsgY29tcGxleGl0eSBjb25zaWRlcmF0aW9uczogTyhpbmRleCArIHdlaWdodF9saW1pdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLu0DCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZVhBZ2dyZWdhdGVNZXNzYWdlT3JpZ2luAAEMEEhlcmUAAAAYUGFyZW50AAEAHFNpYmxpbmcEAKABGFBhcmFJZAACAADxAww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc/UDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AABIfFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4AVQFUaGlzIHdpbGwgcmV0dXJuIGBPa2AgaW4gYWxsIGNpcmN1bXN0YW5jZXMuIFRvIGRldGVybWluZSB0aGUgc3VjY2VzcyBvZiB0aGUgYmF0Y2gsIGFuMQFldmVudCBpcyBkZXBvc2l0ZWQuIElmIGEgY2FsbCBmYWlsZWQgYW5kIHRoZSBiYXRjaCB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gdGhlVQFgQmF0Y2hJbnRlcnJ1cHRlZGAgZXZlbnQgaXMgZGVwb3NpdGVkLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjYWxscyBtYWRlTQFhbmQgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgY2FsbC4gSWYgYWxsIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgYEJhdGNoQ29tcGxldGVkYExldmVudCBpcyBkZXBvc2l0ZWQuNGFzX2Rlcml2YXRpdmUIARRpbmRlePkDAQx1MTYAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABNNxTZW5kIGEgY2FsbCB0aHJvdWdoIGFuIGluZGV4ZWQgcHNldWRvbnltIG9mIHRoZSBzZW5kZXIuAFUBRmlsdGVyIGZyb20gb3JpZ2luIGFyZSBwYXNzZWQgYWxvbmcuIFRoZSBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB3aXRoIGFuIG9yaWdpbiB3aGljaLx1c2UgdGhlIHNhbWUgZmlsdGVyIGFzIHRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsLgBFAU5PVEU6IElmIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFueSBhY2NvdW50LWJhc2VkIGZpbHRlcmluZyBpcyBub3QgaG9ub3JlZCAoaS5lLmEBYmVjYXVzZSB5b3UgZXhwZWN0IGBwcm94eWAgdG8gaGF2ZSBiZWVuIHVzZWQgcHJpb3IgaW4gdGhlIGNhbGwgc3RhY2sgYW5kIHlvdSBkbyBub3Qgd2FudFEBdGhlIGNhbGwgcmVzdHJpY3Rpb25zIHRvIGFwcGx5IHRvIGFueSBzdWItYWNjb3VudHMpLCB0aGVuIHVzZSBgYXNfbXVsdGlfdGhyZXNob2xkXzFgfGluIHRoZSBNdWx0aXNpZyBwYWxsZXQgaW5zdGVhZC4A9E5PVEU6IFByaW9yIHRvIHZlcnNpb24gKjEyLCB0aGlzIHdhcyBjYWxsZWQgYGFzX2xpbWl0ZWRfc3ViYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiRiYXRjaF9hbGwEARRjYWxsc/UDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW79AwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxjIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLixmb3JjZV9iYXRjaAQBFGNhbGxz9QMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABDR8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLtRVbmxpa2UgYGJhdGNoYCwgaXQgYWxsb3dzIGVycm9ycyBhbmQgd29uJ3QgaW50ZXJydXB0LgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBNAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sd2l0aF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodHkBARhXZWlnaHQABRjERGlzcGF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBzcGVjaWZpZWQgd2VpZ2h0LgAtAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbhSb290IG9yaWdpbiB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uHGlmX2Vsc2UIARBtYWluIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABIGZhbGxiYWNrIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAGXBUBRGlzcGF0Y2ggYSBmYWxsYmFjayBjYWxsIGluIHRoZSBldmVudCB0aGUgbWFpbiBjYWxsIGZhaWxzIHRvIGV4ZWN1dGUusE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAORUaGlzIGZ1bmN0aW9uIGZpcnN0IGF0dGVtcHRzIHRvIGRpc3BhdGNoIHRoZSBgbWFpbmAgY2FsbC7USWYgdGhlIGBtYWluYCBjYWxsIGZhaWxzLCB0aGUgYGZhbGxiYWNrYCBpcyBhdHRlbXRlZC4VAWlmIHRoZSBmYWxsYmFjayBpcyBzdWNjZXNzZnVsbHkgZGlzcGF0Y2hlZCwgdGhlIHdlaWdodHMgb2YgYm90aCBjYWxscyUBYXJlIGFjY3VtdWxhdGVkIGFuZCBhbiBldmVudCBjb250YWluaW5nIHRoZSBtYWluIGNhbGwgZXJyb3IgaXMgZGVwb3NpdGVkLgDcSW4gdGhlIGV2ZW50IG9mIGEgZmFsbGJhY2sgZmFpbHVyZSB0aGUgd2hvbGUgY2FsbCBmYWlsc2h3aXRoIHRoZSB3ZWlnaHRzIHJldHVybmVkLgBBAS0gYG1haW5gOiBUaGUgbWFpbiBjYWxsIHRvIGJlIGRpc3BhdGNoZWQuIFRoaXMgaXMgdGhlIHByaW1hcnkgYWN0aW9uIHRvIGV4ZWN1dGUuPQEtIGBmYWxsYmFja2A6IFRoZSBmYWxsYmFjayBjYWxsIHRvIGJlIGRpc3BhdGNoZWQgaW4gY2FzZSB0aGUgYG1haW5gIGNhbGwgZmFpbHMuAEQjIyBEaXNwYXRjaCBMb2dpY0EBLSBJZiB0aGUgb3JpZ2luIGlzIGByb290YCwgYm90aCB0aGUgbWFpbiBhbmQgZmFsbGJhY2sgY2FsbHMgYXJlIGV4ZWN1dGVkIHdpdGhvdXR4ICBhcHBseWluZyBhbnkgb3JpZ2luIGZpbHRlcnMuSQEtIElmIHRoZSBvcmlnaW4gaXMgbm90IGByb290YCwgdGhlIG9yaWdpbiBmaWx0ZXIgaXMgYXBwbGllZCB0byBib3RoIHRoZSBgbWFpbmAgYW5kTCAgYGZhbGxiYWNrYCBjYWxscy4ALCMjIFVzZSBDYXNlWQEtIFNvbWUgdXNlIGNhc2VzIG1pZ2h0IGludm9sdmUgc3VibWl0dGluZyBhIGBiYXRjaGAgdHlwZSBjYWxsIGluIGVpdGhlciBtYWluLCBmYWxsYmFjayggIG9yIGJvdGguUGRpc3BhdGNoX2FzX2ZhbGxpYmxlCAEkYXNfb3JpZ2lu/QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvUDAAACIAD5AwAABQQA/QMIYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZTBPcmlnaW5DYWxsZXIAARQYc3lzdGVtBAABBAF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAAAsUG9sa2Fkb3RYY20EAAUEAUhwYWxsZXRfeGNtOjpPcmlnaW4AHwAoQ3VtdWx1c1hjbQQACQQBaGN1bXVsdXNfcGFsbGV0X3hjbTo6T3JpZ2luACAAGFJldml2ZQQADQQBeHBhbGxldF9yZXZpdmU6Ok9yaWdpbjxSdW50aW1lPgA8ABxPcmlnaW5zBAAVBAF0cGFsbGV0X2N1c3RvbV9vcmlnaW5zOjpPcmlnaW4AXQAAAQQMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBBAEQEFJvb3QAAAAYU2lnbmVkBAAEASRBY2NvdW50SWQAAQAQTm9uZQACAChBdXRob3JpemVkAAMAAAUEDChwYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgMWGNtBAA5AgEgTG9jYXRpb24AAAAgUmVzcG9uc2UEADkCASBMb2NhdGlvbgABAAAJBAxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgUUmVsYXkAAABAU2libGluZ1BhcmFjaGFpbgQAoAEYUGFyYUlkAAEAAA0EDDRwYWxsZXRfcmV2aXZlGHBhbGxldBhPcmlnaW4EBFQBEQQBBDhFdGhUcmFuc2FjdGlvbgQABAEwVDo6QWNjb3VudElkAAAAABEECGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWUcUnVudGltZQAAAAAVBBRgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lKGdvdmVybmFuY2Ucb3JpZ2luc1RwYWxsZXRfY3VzdG9tX29yaWdpbnMYT3JpZ2luAAFwMFN0YWtpbmdBZG1pbgAAACRUcmVhc3VyZXIAAQA8RmVsbG93c2hpcEFkbWluAAIAMEdlbmVyYWxBZG1pbgADADBBdWN0aW9uQWRtaW4ABAAoTGVhc2VBZG1pbgAFAExSZWZlcmVuZHVtQ2FuY2VsbGVyAAYAQFJlZmVyZW5kdW1LaWxsZXIABwAsU21hbGxUaXBwZXIACAAkQmlnVGlwcGVyAAkAMFNtYWxsU3BlbmRlcgAKADRNZWRpdW1TcGVuZGVyAAsAKEJpZ1NwZW5kZXIADABEV2hpdGVsaXN0ZWRDYWxsZXIADQBMRmVsbG93c2hpcEluaXRpYXRlcwAOABxGZWxsb3dzAA8AREZlbGxvd3NoaXBFeHBlcnRzABAAREZlbGxvd3NoaXBNYXN0ZXJzABEAOEZlbGxvd3NoaXAxRGFuABIAOEZlbGxvd3NoaXAyRGFuABMAOEZlbGxvd3NoaXAzRGFuABQAOEZlbGxvd3NoaXA0RGFuABUAOEZlbGxvd3NoaXA1RGFuABYAOEZlbGxvd3NoaXA2RGFuABcAOEZlbGxvd3NoaXA3RGFuABgAOEZlbGxvd3NoaXA4RGFuABkAOEZlbGxvd3NoaXA5RGFuABoANFdpc2hGb3JDaGFuZ2UAGwAAGQQMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQQQ2FsbAQEVAABFFBhc19tdWx0aV90aHJlc2hvbGRfMQgBRG90aGVyX3NpZ25hdG9yaWVznQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AADBRAUltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbXVsdGktc2lnbmF0dXJlIGNhbGwgdXNpbmcgYSBzaW5nbGUgYXBwcm92YWwgZnJvbSB0aGUgY2FsbGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAD0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZQEBbXVsdGktc2lnbmF0dXJlLCBidXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBhcHByb3ZhbCBwcm9jZXNzLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuALhSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQuADQjIyBDb21wbGV4aXR5GQFPKFogKyBDKSB3aGVyZSBaIGlzIHRoZSBsZW5ndGggb2YgdGhlIGNhbGwgYW5kIEMgaXRzIGV4ZWN1dGlvbiB3ZWlnaHQuIGFzX211bHRpFAEkdGhyZXNob2xk+QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVznQEBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW50HQQBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEobWF4X3dlaWdodHkBARhXZWlnaHQAAZxVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4AsElmIHRoZXJlIGFyZSBlbm91Z2gsIHRoZW4gZGlzcGF0Y2ggdGhlIGNhbGwuAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAB0BTk9URTogVW5sZXNzIHRoaXMgaXMgdGhlIGZpbmFsIGFwcHJvdmFsLCB5b3Ugd2lsbCBnZW5lcmFsbHkgd2FudCB0byB1c2UZAWBhcHByb3ZlX2FzX211bHRpYCBpbnN0ZWFkLCBzaW5jZSBpdCBvbmx5IHJlcXVpcmVzIGEgaGFzaCBvZiB0aGUgY2FsbC4AWQFSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQgaWYgYHRocmVzaG9sZGAgaXMgZXhhY3RseSBgMWAuIE90aGVyd2lzZVUBb24gc3VjY2VzcywgcmVzdWx0IGlzIGBPa2AgYW5kIHRoZSByZXN1bHQgZnJvbSB0aGUgaW50ZXJpb3IgY2FsbCwgaWYgaXQgd2FzIGV4ZWN1dGVkLNxtYXkgYmUgZm91bmQgaW4gdGhlIGRlcG9zaXRlZCBgTXVsdGlzaWdFeGVjdXRlZGAgZXZlbnQuADQjIyBDb21wbGV4aXR5UC0gYE8oUyArIFogKyBDYWxsKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuIQEtIE9uZSBjYWxsIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhaKWAgd2hlcmUgYFpgIGlzIHR4LWxlbi68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQubC0gVGhlIHdlaWdodCBvZiB0aGUgYGNhbGxgLk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC5AYXBwcm92ZV9hc19tdWx0aRQBJHRocmVzaG9sZPkDAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc50BAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludB0EAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQABKG1heF93ZWlnaHR5AQEYV2VpZ2h0AAJ4VQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLswtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBleGVjdXRlZC4ANQFOT1RFOiBJZiB0aGlzIGlzIHRoZSBmaW5hbCBhcHByb3ZhbCwgeW91IHdpbGwgd2FudCB0byB1c2UgYGFzX211bHRpYCBpbnN0ZWFkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLjxjYW5jZWxfYXNfbXVsdGkQASR0aHJlc2hvbGT5AwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXOdAQFEVmVjPFQ6OkFjY291bnRJZD4AASR0aW1lcG9pbnQhBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAANUVQFDYW5jZWwgYSBwcmUtZXhpc3RpbmcsIG9uLWdvaW5nIG11bHRpc2lnIHRyYW5zYWN0aW9uLiBBbnkgZGVwb3NpdCByZXNlcnZlZCBwcmV2aW91c2x5xGZvciB0aGlzIG9wZXJhdGlvbiB3aWxsIGJlIHVucmVzZXJ2ZWQgb24gc3VjY2Vzcy4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5Ll0BLSBgdGltZXBvaW50YDogVGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZCB0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFseHRyYW5zYWN0aW9uIGZvciB0aGlzIGRpc3BhdGNoLswtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBleGVjdXRlZC4ANCMjIENvbXBsZXhpdHkkLSBgTyhTKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAuMC0gT25lIGV2ZW50LoQtIEkvTzogMSByZWFkIGBPKFMpYCwgb25lIHJlbW92ZS5wLSBTdG9yYWdlOiByZW1vdmVzIG9uZSBpdGVtLjBwb2tlX2RlcG9zaXQMASR0aHJlc2hvbGT5AwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXOdAQFEVmVjPFQ6OkFjY291bnRJZD4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQAENPRQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBhbiBleGlzdGluZyBtdWx0aXNpZyBvcGVyYXRpb24uAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIG11c3QgYmUgdGhlIG9yaWdpbmFsIGRlcG9zaXRvciBvZlx0aGUgbXVsdGlzaWcgb3BlcmF0aW9uLgABAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGFtb3VudCBoYXMgY2hhbmdlZC4AGQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBuZWVkZWQgZm9yIHRoaXMgbXVsdGlzaWcuPQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlLCAgbXVsdGlzaWcuBQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0aGlzIGRlcG9zaXQgaXMgcmVzZXJ2ZWQgZm9yLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuHQQEGE9wdGlvbgQEVAEhBAEIEE5vbmUAAAAQU29tZQQAIQQAAAEAACEECDxwYWxsZXRfbXVsdGlzaWckVGltZXBvaW50BCxCbG9ja051bWJlcgE4AAgBGGhlaWdodDgBLEJsb2NrTnVtYmVyAAEUaW5kZXg4AQx1MzIAACUEDDBwYWxsZXRfcHJveHkYcGFsbGV0EENhbGwEBFQAASwUcHJveHkMARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlKQQBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AACRNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3Jpc2VkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuJGFkZF9wcm94eQwBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlLQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AASRFAVJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlciB0aGF0IGlzIGFibGUgdG8gbWFrZSBjYWxscyBvbiBpdHMgYmVoYWxmLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOhEBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIG1ha2UgYSBwcm94eS78LSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBhbGxvd2VkIGZvciB0aGlzIHByb3h5IGFjY291bnQuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLjByZW1vdmVfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZS0EATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAIcqFVucmVnaXN0ZXIgYSBwcm94eSBhY2NvdW50IGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOiUBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIHJlbW92ZSBhcyBhIHByb3h5LkEBLSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBjdXJyZW50bHkgZW5hYmxlZCBmb3IgdGhlIHJlbW92ZWQgcHJveHkgYWNjb3VudC44cmVtb3ZlX3Byb3hpZXMAAxi0VW5yZWdpc3RlciBhbGwgcHJveHkgYWNjb3VudHMgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AXQFXQVJOSU5HOiBUaGlzIG1heSBiZSBjYWxsZWQgb24gYWNjb3VudHMgY3JlYXRlZCBieSBgY3JlYXRlX3B1cmVgLCBob3dldmVyIGlmIGRvbmUsIHRoZW5ZAXRoZSB1bnJlc2VydmVkIGZlZXMgd2lsbCBiZSBpbmFjY2Vzc2libGUuICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqLGNyZWF0ZV9wdXJlDAEocHJveHlfdHlwZS0EATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXj5AwEMdTE2AARIOQFTcGF3biBhIGZyZXNoIG5ldyBhY2NvdW50IHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvdGhlcndpc2UgaW5hY2Nlc3NpYmxlLCBhbmT8aW5pdGlhbGl6ZSBpdCB3aXRoIGEgcHJveHkgb2YgYHByb3h5X3R5cGVgIGZvciBgb3JpZ2luYCBzZW5kZXIuAGxSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbi4AUQEtIGBwcm94eV90eXBlYDogVGhlIHR5cGUgb2YgdGhlIHByb3h5IHRoYXQgdGhlIHNlbmRlciB3aWxsIGJlIHJlZ2lzdGVyZWQgYXMgb3ZlciB0aGVNAW5ldyBhY2NvdW50LiBUaGlzIHdpbGwgYWxtb3N0IGFsd2F5cyBiZSB0aGUgbW9zdCBwZXJtaXNzaXZlIGBQcm94eVR5cGVgIHBvc3NpYmxlIHRveGFsbG93IGZvciBtYXhpbXVtIGZsZXhpYmlsaXR5LlEBLSBgaW5kZXhgOiBBIGRpc2FtYmlndWF0aW9uIGluZGV4LCBpbiBjYXNlIHRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGluIHRoZSBzYW1lXQF0cmFuc2FjdGlvbiAoZS5nLiB3aXRoIGB1dGlsaXR5OjpiYXRjaGApLiBVbmxlc3MgeW91J3JlIHVzaW5nIGBiYXRjaGAgeW91IHByb2JhYmx5IGp1c3RAd2FudCB0byB1c2UgYDBgLk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4AUQFGYWlscyB3aXRoIGBEdXBsaWNhdGVgIGlmIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgaW4gdGhpcyB0cmFuc2FjdGlvbiwgZnJvbSB0aGWYc2FtZSBzZW5kZXIsIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycy4A5EZhaWxzIGlmIHRoZXJlIGFyZSBpbnN1ZmZpY2llbnQgZnVuZHMgdG8gcGF5IGZvciBkZXBvc2l0LiRraWxsX3B1cmUUARxzcGF3bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlLQQBMFQ6OlByb3h5VHlwZQABFGluZGV4+QMBDHUxNgABGGhlaWdodGQBREJsb2NrTnVtYmVyRm9yPFQ+AAEkZXh0X2luZGV4ZAEMdTMyAAVAoFJlbW92ZXMgYSBwcmV2aW91c2x5IHNwYXduZWQgcHVyZSBwcm94eS4ASQFXQVJOSU5HOiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKiBBbnkgZnVuZHMgaGVsZCBpbiBpdCB3aWxsIGJlNGluYWNjZXNzaWJsZS4AWQFSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbiwgYW5kIHRoZSBzZW5kZXIgYWNjb3VudCBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGEgY2FsbCB0b7BgY3JlYXRlX3B1cmVgIHdpdGggY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLgBVAS0gYHNwYXduZXJgOiBUaGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY2FsbGVkIGBjcmVhdGVfcHVyZWAgdG8gY3JlYXRlIHRoaXMgYWNjb3VudC5VAS0gYGluZGV4YDogVGhlIGRpc2FtYmlndWF0aW9uIGluZGV4IG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBjcmVhdGVfcHVyZWAuIFByb2JhYmx5IGAwYC4JAS0gYHByb3h5X3R5cGVgOiBUaGUgcHJveHkgdHlwZSBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLkUBLSBgaGVpZ2h0YDogVGhlIGhlaWdodCBvZiB0aGUgY2hhaW4gd2hlbiB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuUQEtIGBleHRfaW5kZXhgOiBUaGUgZXh0cmluc2ljIGluZGV4IGluIHdoaWNoIHRoZSBjYWxsIHRvIGBjcmVhdGVfcHVyZWAgd2FzIHByb2Nlc3NlZC4ANQFGYWlscyB3aXRoIGBOb1Blcm1pc3Npb25gIGluIGNhc2UgdGhlIGNhbGxlciBpcyBub3QgYSBwcmV2aW91c2x5IGNyZWF0ZWQgcHVyZfhhY2NvdW50IHdob3NlIGBjcmVhdGVfcHVyZWAgY2FsbCBoYXMgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLiBhbm5vdW5jZQgBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaEABNENhbGxIYXNoT2Y8VD4ABjwFAVB1Ymxpc2ggdGhlIGhhc2ggb2YgYSBwcm94eS1jYWxsIHRoYXQgd2lsbCBiZSBtYWRlIGluIHRoZSBmdXR1cmUuAF0BVGhpcyBtdXN0IGJlIGNhbGxlZCBzb21lIG51bWJlciBvZiBibG9ja3MgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nIGBwcm94eWAgaXMgYXR0ZW1wdGVkJQFpZiB0aGUgZGVsYXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm94eSByZWxhdGlvbnNoaXAgaXMgZ3JlYXRlciB0aGFuIHplcm8uABEBTm8gbW9yZSB0aGFuIGBNYXhQZW5kaW5nYCBhbm5vdW5jZW1lbnRzIG1heSBiZSBtYWRlIGF0IGFueSBvbmUgdGltZS4ACQFUaGlzIHdpbGwgdGFrZSBhIGRlcG9zaXQgb2YgYEFubm91bmNlbWVudERlcG9zaXRGYWN0b3JgIGFzIHdlbGwgYXMZAWBBbm5vdW5jZW1lbnREZXBvc2l0QmFzZWAgaWYgdGhlcmUgYXJlIG5vIG90aGVyIHBlbmRpbmcgYW5ub3VuY2VtZW50cy4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgYSBwcm94eSBvZiBgcmVhbGAuACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlbW92ZV9hbm5vdW5jZW1lbnQIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2hAATRDYWxsSGFzaE9mPFQ+AAcocFJlbW92ZSBhIGdpdmVuIGFubm91bmNlbWVudC4AWQFNYXkgYmUgY2FsbGVkIGJ5IGEgcHJveHkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoZXkgcHJldmlvdXNseSBhbm5vdW5jZWQgYW5kIHJldHVybjB0aGUgZGVwb3NpdC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZWplY3RfYW5ub3VuY2VtZW50CAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaEABNENhbGxIYXNoT2Y8VD4ACCiwUmVtb3ZlIHRoZSBnaXZlbiBhbm5vdW5jZW1lbnQgb2YgYSBkZWxlZ2F0ZS4AYQFNYXkgYmUgY2FsbGVkIGJ5IGEgdGFyZ2V0IChwcm94aWVkKSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhhdCBvbmUgb2YgdGhlaXIgZGVsZWdhdGVzJQEoYGRlbGVnYXRlYCkgaGFzIGFubm91bmNlZCB0aGV5IHdhbnQgdG8gZXhlY3V0ZS4gVGhlIGRlcG9zaXQgaXMgcmV0dXJuZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM69C0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBwcmV2aW91c2x5IGFubm91bmNlZCB0aGUgY2FsbC68LSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZS48cHJveHlfYW5ub3VuY2VkEAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGUpBAFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJLE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcml6ZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAKhSZW1vdmVzIGFueSBjb3JyZXNwb25kaW5nIGFubm91bmNlbWVudChzKS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LjBwb2tlX2RlcG9zaXQACiBJAVBva2UgLyBBZGp1c3QgZGVwb3NpdHMgbWFkZSBmb3IgcHJveGllcyBhbmQgYW5ub3VuY2VtZW50cyBiYXNlZCBvbiBjdXJyZW50IHZhbHVlcy4NAVRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gcG9zc2libHkgbG93ZXIgdGhlaXIgbG9ja2VkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgABAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGFtb3VudCBoYXMgY2hhbmdlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLikEBBhPcHRpb24EBFQBLQQBCBBOb25lAAAAEFNvbWUEAC0EAAABAAAtBAhgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lJFByb3h5VHlwZQABPAxBbnkAAAAsTm9uVHJhbnNmZXIAAQAsQ2FuY2VsUHJveHkAAgAYQXNzZXRzAAMAKEFzc2V0T3duZXIABAAwQXNzZXRNYW5hZ2VyAAUAIENvbGxhdG9yAAYAKEdvdmVybmFuY2UABwAcU3Rha2luZwAIADxOb21pbmF0aW9uUG9vbHMACQAcQXVjdGlvbgAKAEBQYXJhUmVnaXN0cmF0aW9uAAsAHFNvY2lldHkADAAwU3Bva2VzcGVyc29uAA0APFN0YWtpbmdPcGVyYXRvcgAOAAAxBAxMcGFsbGV0X3JlbW90ZV9wcm94eRhwYWxsZXQQQ2FsbAgEVAAESQABDDByZW1vdGVfcHJveHkQARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlKQQBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABtEJveDw8VCBhcyBwYWxsZXRfcHJveHk6OkNvbmZpZz46OlJ1bnRpbWVDYWxsPgABFHByb29mNQQBrFJlbW90ZVByb3h5UHJvb2Y8UmVtb3RlQmxvY2tOdW1iZXJPZjxULCBJPj4AAChNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3Jpc2VkIG9uIGEgcmVtb3RlGGNoYWluLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuMQEtIGBwcm9vZmA6IFRoZSBwcm9vZiBmcm9tIHRoZSByZW1vdGUgY2hhaW4gYWJvdXQgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgcHJveHkubHJlZ2lzdGVyX3JlbW90ZV9wcm94eV9wcm9vZgQBFHByb29mNQQBrFJlbW90ZVByb3h5UHJvb2Y8UmVtb3RlQmxvY2tOdW1iZXJPZjxULCBJPj4AAXghAVJlZ2lzdGVyIGEgZ2l2ZW4gcmVtb3RlIHByb3h5IHByb29mIGluIHRoZSBjdXJyZW50IFtgZGlzcGF0Y2hfY29udGV4dGBdLgBNAVRoZSByZWdpc3RlcmVkIHJlbW90ZSBwcm9vZiBjYW4gdGhlbiBiZSB1c2VkIGxhdGVyIGluIHRoZSBzYW1lIGNvbnRleHQgdG8gZXhlY3V0ZSBhTQFyZW1vdGUgcHJveHkgY2FsbC4gVGhpcyBpcyBmb3IgZXhhbXBsZSB1c2VmdWwgd2hlbiBoYXZpbmcgYSBtdWx0aXNpZyBvcGVyYXRpb24uIFRoZWEBbXVsdGlzaWcgY2FsbCBjYW4gdXNlIFtgU2VsZjo6cmVtb3RlX3Byb3h5X3dpdGhfcmVnaXN0ZXJlZF9wcm9vZmBdIHRvIGdldCBhbiBhcHByb3ZhbCBieWEBdGhlIG1lbWJlcnMgb2YgdGhlIG11bHRpc2lnLiBUaGUgZmluYWwgZXhlY3V0aW9uIG9mIHRoZSBtdWx0aXNpZyBjYWxsIHNob3VsZCBiZSBhdCBsZWFzdCEBYSBiYXRjaCBvZiBgcmVnaXN0ZXJfcmVtb3RlX3Byb3h5X3Byb29mYCBhbmQgdGhlIG11bHRpc2lnIGNhbGwgdGhhdCB1c2VzYQFgcmVtb3RlX3Byb3h5X3dpdGhfcmVnaXN0ZXJlZF9wcm9vZmAuIFRoaXMgd2F5IHRoZSBmaW5hbCBhcHByb3ZlciBjYW4gdXNlIGEgcmVjZW50IHByb29mTQF0byBwcm92ZSB0aGUgZXhpc3RlbmNlIG9mIHRoZSByZW1vdGUgcHJveHkuIE90aGVyd2lzZSBpdCB3b3VsZCByZXF1aXJlIHRoZSBtdWx0aXNpZ0EBbWVtYmVycyB0byBhcHByb3ZlIHRoZSBjYWxsIGluIFtgQ29uZmlnOjpNYXhTdG9yYWdlUm9vdHNUb0tlZXBgXSBhbW91bnQgb2YgdGltZS4AWQFJdCBpcyBzdXBwb3J0ZWQgdG8gcmVnaXN0ZXIgbXVsdGlwbGUgcHJvb2ZzLCBidXQgdGhlIHByb29mcyBuZWVkIHRvIGJlIGNvbnN1bWVkIGluIHRoZT0BcmV2ZXJzZSBvcmRlciBhcyB0aGV5IHdlcmUgcmVnaXN0ZXJlZC4gQmFzaWNhbGx5IHRoaXMgbWVhbnMgbGFzdCBpbiwgZmlyc3Qgb3V0LgBVAVRoZSBbYGRpc3BhdGNoX2NvbnRleHRgXSBzcGFucyB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGEgdHJhbnNhY3Rpb24gYW5kIGV2ZXJ5IGNhbGwgaW7AdGhlIHRyYW5zYWN0aW9uIGdldHMgYWNjZXNzIHRvIHRoZSBzYW1lIGNvbnRleHQuACQjIEV4YW1wbGUAJGBgYGlnbm9yZRxiYXRjaChbgCAgICByZWdpc3Rlcl9yZW1vdGVfcHJveHlfcHJvb2Ys9CAgICBhc19tdWx0aXNpZyhyZW1vdGVfcHJveHlfd2l0aF9yZWdpc3RlcmVkX3Byb29mKHRyYW5zZmVyKSkIXSkMYGBgAFkBQXMgYHByb29mc2AgY2FuIG5vdCBiZSB2ZXJpZmllZCBpbmRlZmluaXRlbHkgKHRoZSB0aW1lIHRoZSBzdG9yYWdlIHJvb3RzIGFyZSBzdG9yZWQgaXNVAWxpbWl0ZWQpIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHBvc3NpYmlsaXR5IHRvIHByb3ZpZGUgYSAiZnJlc2ggcHJvb2YiIGF0IHRpbWUgb2ZNAWRpc3BhdGNoLiBBcyBpbiB0aGUgZXhhbXBsZSBhYm92ZSwgdGhpcyBjb3VsZCBiZSB1c2VmdWwgZm9yIG11bHRpc2lnIG9wZXJhdGlvbiB0aGF0VQFkZXBlbmQgb24gbXVsdGlwbGUgbWVtYmVycyB0byBhcHByb3ZlIGEgY2VydGFpbiBhY3Rpb24sIHdoaWNoIGNhbiB0YWtlIG11bHRpcGxlIGRheXMuiHJlbW90ZV9wcm94eV93aXRoX3JlZ2lzdGVyZWRfcHJvb2YMARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlKQQBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABtEJveDw8VCBhcyBwYWxsZXRfcHJveHk6OkNvbmZpZz46OlJ1bnRpbWVDYWxsPgACLE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcmlzZWQgb24gYSByZW1vdGUYY2hhaW4uABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uIFRoZSBkaWZmZXJlbmNlIHRvIQFbYFNlbGY6OnJlbW90ZV9wcm94eWBdIGlzIHRoYXQgdGhlIHByb29mIG5lZXMgdG8gcmVnaXN0ZXJlZCBiZWZvcmUgdXNpbmcFAVtgU2VsZjo6cmVnaXN0ZXJfcmVtb3RlX3Byb3h5X3Byb29mYF0gKHNlZSBmb3IgbW9yZSBpbmZvcm1hdGlvbikuACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjUEDExwYWxsZXRfcmVtb3RlX3Byb3h5GHBhbGxldEBSZW1vdGVQcm94eVByb29mBERSZW1vdGVCbG9ja051bWJlcgE4AQQoUmVsYXlDaGFpbggBFHByb29mNAEwVmVjPFZlYzx1OD4+AAEUYmxvY2s4AURSZW1vdGVCbG9ja051bWJlcgAAAAA5BAw4cGFsbGV0X2luZGljZXMYcGFsbGV0EENhbGwEBFQAARgUY2xhaW0EARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAAMJhBc3NpZ24gYW4gcHJldmlvdXNseSB1bmFzc2lnbmVkIGluZGV4LgDcUGF5bWVudDogYERlcG9zaXRgIGlzIHJlc2VydmVkIGZyb20gdGhlIHNlbmRlciBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAPAtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSBjbGFpbWVkLiBUaGlzIG11c3Qgbm90IGJlIGluIHVzZS4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4gdHJhbnNmZXIIAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEwXQFBc3NpZ24gYW4gaW5kZXggYWxyZWFkeSBvd25lZCBieSB0aGUgc2VuZGVyIHRvIGFub3RoZXIgYWNjb3VudC4gVGhlIGJhbGFuY2UgcmVzZXJ2YXRpb264aXMgZWZmZWN0aXZlbHkgdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACUBLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgcmUtYXNzaWduZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLl0BLSBgbmV3YDogdGhlIG5ldyBvd25lciBvZiB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiBpdCBpcyBlcXVhbCB0byBzZW5kZXIuAJBFbWl0cyBgSW5kZXhBc3NpZ25lZGAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuEGZyZWUEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAACMJRGcmVlIHVwIGFuIGluZGV4IG93bmVkIGJ5IHRoZSBzZW5kZXIuAF0BUGF5bWVudDogQW55IHByZXZpb3VzIGRlcG9zaXQgcGxhY2VkIGZvciB0aGUgaW5kZXggaXMgdW5yZXNlcnZlZCBpbiB0aGUgc2VuZGVyIGFjY291bnQuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBvd24gdGhlIGluZGV4LgANAS0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGZyZWVkLiBUaGlzIG11c3QgYmUgb3duZWQgYnkgdGhlIHNlbmRlci4AhEVtaXRzIGBJbmRleEZyZWVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC44Zm9yY2VfdHJhbnNmZXIMAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEYZnJlZXplmQEBEGJvb2wAAzRVAUZvcmNlIGFuIGluZGV4IHRvIGFuIGFjY291bnQuIFRoaXMgZG9lc24ndCByZXF1aXJlIGEgZGVwb3NpdC4gSWYgdGhlIGluZGV4IGlzIGFscmVhZHnoaGVsZCwgdGhlbiBhbnkgZGVwb3NpdCBpcyByZWltYnVyc2VkIHRvIGl0cyBjdXJyZW50IG93bmVyLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgCkLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgKHJlLSlhc3NpZ25lZC5dAS0gYG5ld2A6IHRoZSBuZXcgb3duZXIgb2YgdGhlIGluZGV4LiBUaGlzIGZ1bmN0aW9uIGlzIGEgbm8tb3AgaWYgaXQgaXMgZXF1YWwgdG8gc2VuZGVyLkEBLSBgZnJlZXplYDogaWYgc2V0IHRvIGB0cnVlYCwgd2lsbCBmcmVlemUgdGhlIGluZGV4IHNvIGl0IGNhbm5vdCBiZSB0cmFuc2ZlcnJlZC4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4YZnJlZXplBAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgABDBBAUZyZWV6ZSBhbiBpbmRleCBzbyBpdCB3aWxsIGFsd2F5cyBwb2ludCB0byB0aGUgc2VuZGVyIGFjY291bnQuIFRoaXMgY29uc3VtZXMgdGhlIGRlcG9zaXQuAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBoYXZlIGFsbm9uLWZyb3plbiBhY2NvdW50IGBpbmRleGAuAKwtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSBmcm96ZW4gaW4gcGxhY2UuAIhFbWl0cyBgSW5kZXhGcm96ZW5gIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjBwb2tlX2RlcG9zaXQEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAFKJxQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBhbiBpbmRleC4AWQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGhhdmUgYWxub24tZnJvemVuIGFjY291bnQgYGluZGV4YC4AWQFUaGUgdHJhbnNhY3Rpb24gZmVlcyBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgaXMgY2hhbmdlZCBhZnRlciBwb2tpbmcvcmVjb25zaWRlcmF0aW9uLgD8LSBgaW5kZXhgOiB0aGUgaW5kZXggd2hvc2UgZGVwb3NpdCBpcyB0byBiZSBwb2tlZC9yZWNvbnNpZGVyZWQuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy49BAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2WVAQEoVDo6QmFsYW5jZQAATOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudJkBARBib29sAAEsbWluX2JhbGFuY2WRAQEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW6ZAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlkQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50mQEBEGJvb2wAASRpc19mcm96ZW6ZAQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybpkBARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2WVAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmWZAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzQQQByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5BBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARAEUwAABABFBAEYVmVjPFQ+AABFBAAAAhAASQQMOHBhbGxldF91bmlxdWVzGHBhbGxldBBDYWxsCARUAARJAAFoGGNyZWF0ZQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AABACQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4ArGBJdGVtRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6YQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBjb2xsZWN0aW9uLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuRQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABMGZyZWVfaG9sZGluZ5kBARBib29sAAFEGQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uAKxUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAEkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgaXRlbS4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlLjkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uIG9mIGl0ZW1zLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyNCAgcGVybWlzc2lvbnMhAW92ZXIgdGhpcyBpdGVtLCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgHGRlc3Ryb3kIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcd2l0bmVzc00EAThEZXN0cm95V2l0bmVzcwACPJxEZXN0cm95IGEgY29sbGVjdGlvbiBvZiBmdW5naWJsZSBpdGVtcy4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVob3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4ABQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gYmUgZGVzdHJveWVkLjEBLSBgd2l0bmVzc2A6IEluZm9ybWF0aW9uIG9uIHRoZSBpdGVtcyBtaW50ZWQgaW4gdGhlIGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBiZSBjb3JyZWN0LgCgRW1pdHMgYERlc3Ryb3llZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgBkV2VpZ2h0OiBgTyhuICsgbSlgIHdoZXJlOlQtIGBuID0gd2l0bmVzcy5pdGVtc2B4LSBgbSA9IHdpdG5lc3MuaXRlbV9tZXRhZGF0YXNgaC0gYGEgPSB3aXRuZXNzLmF0dHJpYnV0ZXNgEG1pbnQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAyygTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLsgtIGBpdGVtYDogVGhlIGl0ZW0gdmFsdWUgb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLtgtIGBiZW5lZmljaWFyeWA6IFRoZSBpbml0aWFsIG93bmVyIG9mIHRoZSBtaW50ZWQgaXRlbS4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgEGJ1cm4MAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABLGNoZWNrX293bmVyUQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ABDxYRGVzdHJveSBhIHNpbmdsZSBpdGVtLgD0T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgYmUgZWl0aGVyOoAtIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gO2gtIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOwDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGJ1cm5lZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGJ1cm5lZC5RAS0gYGNoZWNrX293bmVyYDogSWYgYFNvbWVgIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgd2l0aCBgV3JvbmdPd25lcmAgdW5sZXNzIHRoZXggIGl0ZW0gaXMgb3duZWQgYnkgdGhpcyB2YWx1ZS4AtEVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLgA4V2VpZ2h0OiBgTygxKWB8TW9kZXM6IGBjaGVja19vd25lci5pc19zb21lKClgLiB0cmFuc2ZlcgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAVEwE1vdmUgYW4gaXRlbSBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgC0VGhpcyByZXNldHMgdGhlIGFwcHJvdmVkIGFjY291bnQgb2YgdGhlIGl0ZW0uAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6gC0gdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA7aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7NQEtIHRoZSBhcHByb3ZlZCBkZWxlZ2F0ZSBmb3IgdGhlIGBpdGVtYCAoaW4gdGhpcyBjYXNlLCB0aGUgYXBwcm92YWwgaXMgcmVzZXQpLgAoQXJndW1lbnRzOvQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQuxC0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7cLSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIHJlY2VpdmUgb3duZXJzaGlwIG9mIHRoZSBpdGVtLgBQRW1pdHMgYFRyYW5zZmVycmVkYC4AOFdlaWdodDogYE8oMSlgJHJlZGVwb3NpdAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRpdGVtc1UEAThWZWM8VDo6SXRlbUlkPgAGRJhSZWV2YWx1YXRlIHRoZSBkZXBvc2l0cyBvbiBzb21lIGl0ZW1zLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuALAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gdG8gYmUgZnJvemVuLikBLSBgaXRlbXNgOiBUaGUgaXRlbXMgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgZGVwb3NpdHMgd2lsbCBiZSByZWV2YWx1YXRlZC4ALQFOT1RFOiBUaGlzIGV4aXN0cyBhcyBhIGJlc3QtZWZmb3J0IGZ1bmN0aW9uLiBBbnkgaXRlbXMgd2hpY2ggYXJlIHVua25vd24gb3I5AWluIHRoZSBjYXNlIHRoYXQgdGhlIG93bmVyIGFjY291bnQgZG9lcyBub3QgaGF2ZSByZXNlcnZhYmxlIGZ1bmRzIHRvIHBheSBmb3IgYU0BZGVwb3NpdCBpbmNyZWFzZSBhcmUgaWdub3JlZC4gR2VuZXJhbGx5IHRoZSBvd25lciBpc24ndCBnb2luZyB0byBjYWxsIHRoaXMgb24gaXRlbXNVAXdob3NlIGV4aXN0aW5nIGRlcG9zaXQgaXMgbGVzcyB0aGFuIHRoZSByZWZyZXNoZWQgZGVwb3NpdCBhcyBpdCB3b3VsZCBvbmx5IGNvc3QgdGhlbSx4c28gaXQncyBvZiBsaXR0bGUgY29uc2VxdWVuY2UuAFkBSXQgd2lsbCBzdGlsbCByZXR1cm4gYW4gZXJyb3IgaW4gdGhlIGNhc2UgdGhhdCB0aGUgY29sbGVjdGlvbiBpcyB1bmtub3duIG9mIHRoZSBzaWduZXJwaXMgbm90IHBlcm1pdHRlZCB0byBjYWxsIGl0LgBgV2VpZ2h0OiBgTyhpdGVtcy5sZW4oKSlgGGZyZWV6ZQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAcoyERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGZyb3plbi6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAgoqFJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0aGF3ZWQusC0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgRGZyZWV6ZV9jb2xsZWN0aW9uBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAJJPxEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuALAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gdG8gYmUgZnJvemVuLgBkRW1pdHMgYENvbGxlY3Rpb25Gcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWA8dGhhd19jb2xsZWN0aW9uBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAKJNxSZS1hbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciBhIHdob2xlIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSB0aGF3ZWQuAGRFbWl0cyBgQ29sbGVjdGlvblRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACyyEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A9C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSBvd25lciBzaG91bGQgYmUgY2hhbmdlZC4JAS0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZXkgbXVzdCBoYXZlIGNhbGxlZEkBICBgc2V0X2FjY2VwdF9vd25lcnNoaXBgIHdpdGggYGNvbGxlY3Rpb25gIGluIG9yZGVyIGZvciB0aGlzIG9wZXJhdGlvbiB0byBzdWNjZWVkLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADDDUQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIHRlYW0gc2hvdWxkIGJlIGNoYW5nZWQuuC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgY29sbGVjdGlvbi6wLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi7ALSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGNvbGxlY3Rpb24uAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgANOBUBQXBwcm92ZSBhbiBpdGVtIHRvIGJlIHRyYW5zZmVycmVkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAE0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIG11c3QgYmX4ZWl0aGVyIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gIG9yIHRoZSBhZG1pbiBvZiB0aGUgY29sbGVjdGlvbi4ARQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci4VAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhkBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIHRoZSBpdGVtLgAZAUltcG9ydGFudCBOT1RFOiBUaGUgYGFwcHJvdmVkYCBhY2NvdW50IGdldHMgcmVzZXQgYWZ0ZXIgZWFjaCB0cmFuc2Zlci4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAAVBtYXliZV9jaGVja19kZWxlZ2F0ZVEEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AA5AEQFDYW5jZWwgdGhlIHByaW9yIGFwcHJvdmFsIGZvciB0aGUgdHJhbnNmZXIgb2YgYW4gaXRlbSBieSBhIGRlbGVnYXRlLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjv8LSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA75C0gYFNpZ25lZGAgd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOwAoQXJndW1lbnRzOj0BLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIG9mIHdob3NlIGFwcHJvdmFsIHdpbGwgYmUgY2FuY2VsbGVkLg0BLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIG9mIHdob3NlIGFwcHJvdmFsIHdpbGwgYmUgY2FuY2VsbGVkLlEBLSBgbWF5YmVfY2hlY2tfZGVsZWdhdGVgOiBJZiBgU29tZWAgd2lsbCBlbnN1cmUgdGhhdCB0aGUgZ2l2ZW4gYWNjb3VudCBpcyB0aGUgb25lIHRvsCAgd2hpY2ggcGVybWlzc2lvbiBvZiB0cmFuc2ZlciBpcyBkZWxlZ2F0ZWQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYERmb3JjZV9pdGVtX3N0YXR1cxwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwZnJlZV9ob2xkaW5nmQEBEGJvb2wAASRpc19mcm96ZW6ZAQEQYm9vbAAPQJRBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGl0ZW0uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtLpgtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBpdGVtLqAtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGl0ZW0umC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGl0ZW0uqC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBpdGVtLlEBLSBgZnJlZV9ob2xkaW5nYDogV2hldGhlciBhIGRlcG9zaXQgaXMgdGFrZW4gZm9yIGhvbGRpbmcgYW4gaXRlbSBvZiB0aGlzIGNvbGxlY3Rpb24uOQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgY29sbGVjdGlvbiBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDgRW1pdHMgYEl0ZW1TdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgaXRlbS4AOFdlaWdodDogYE8oMSlgNHNldF9hdHRyaWJ1dGUQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbdgBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5WQQBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlfAF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AEESoU2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AUQFJZiB0aGUgb3JpZ2luIGlzIFNpZ25lZCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTopAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiAoa2V5LmxlbiArIHZhbHVlLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuADkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQuBQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0LogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuzC0gYHZhbHVlYDogVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgYXR0cmlidXRlLgBURW1pdHMgYEF0dHJpYnV0ZVNldGAuADhXZWlnaHQ6IGBPKDEpYDxjbGVhcl9hdHRyaWJ1dGUMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbdgBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5WQQBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgAROLBDbGVhciBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLg0BLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuAGRFbWl0cyBgQXR0cmlidXRlQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRhdGFdBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVumQEBEGJvb2wAEkR0U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuADkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQu7C0gYGl0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuTQEtIGBkYXRhYDogVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBpdGVtLiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLjUBLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGUgbWV0YWRhdGEgc2hvdWxkIGJlIGZyb3plbiBhZ2FpbnN0IGZ1cnRoZXIgY2hhbmdlcy4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABM0fENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUcYGl0ZW1gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuAEEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBjbGVhci70LSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxzZXRfY29sbGVjdGlvbl9tZXRhZGF0YQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhXQQBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbpkBARBib29sABRAiFNldCB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAFkBSWYgdGhlIG9yaWdpbiBpcyBgU2lnbmVkYCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTr0YE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIGRhdGEubGVuYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgARAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byB1cGRhdGUuTQEtIGBkYXRhYDogVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBpdGVtLiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLjUBLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGUgbWV0YWRhdGEgc2hvdWxkIGJlIGZyb3plbiBhZ2FpbnN0IGZ1cnRoZXIgY2hhbmdlcy4AeEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWBkY2xlYXJfY29sbGVjdGlvbl9tZXRhZGF0YQQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAFTCQQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZkR0aGUgYGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuACUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgCIRW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBQc2V0X2FjY2VwdF9vd25lcnNoaXAEAUBtYXliZV9jb2xsZWN0aW9u2AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AFigRAVNldCAob3IgcmVzZXQpIHRoZSBhY2NlcHRhbmNlIG9mIG93bmVyc2hpcCBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQuAGEBT3JpZ2luIG11c3QgYmUgYFNpZ25lZGAgYW5kIGlmIGBtYXliZV9jb2xsZWN0aW9uYCBpcyBgU29tZWAsIHRoZW4gdGhlIHNpZ25lciBtdXN0IGhhdmUgYUxwcm92aWRlciByZWZlcmVuY2UuAFEBLSBgbWF5YmVfY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyc2hpcCB0aGUgc2lnbmVyIGlzYQEgIHdpbGxpbmcgdG8gYWNjZXB0LCBvciBpZiBgTm9uZWAsIGFuIGluZGljYXRpb24gdGhhdCB0aGUgc2lnbmVyIGlzIHdpbGxpbmcgdG8gYWNjZXB0IG5vXCAgb3duZXJzaGlwIHRyYW5zZmVyYWwuAIxFbWl0cyBgT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWRgLmRzZXRfY29sbGVjdGlvbl9tYXhfc3VwcGx5CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAFyzgU2V0IHRoZSBtYXhpbXVtIGFtb3VudCBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAOROb3RlOiBUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHN1Y2NlZWQgb25jZSBwZXIgY29sbGVjdGlvbi4A7C0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBjaGFuZ2UuEQEtIGBtYXhfc3VwcGx5YDogVGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgDURW1pdHMgYENvbGxlY3Rpb25NYXhTdXBwbHlTZXRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4kc2V0X3ByaWNlEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZWEEAVxPcHRpb248SXRlbVByaWNlPFQsIEk+PgABRHdoaXRlbGlzdGVkX2J1eWVyUQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AGCyUU2V0IChvciByZXNldCkgdGhlIHByaWNlIGZvciBhbiBpdGVtLgABAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIGFzc2V0IGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6gLSBgaXRlbWA6IFRoZSBpdGVtIHRvIHNldCB0aGUgcHJpY2UgZm9yLg0BLSBgcHJpY2VgOiBUaGUgcHJpY2UgZm9yIHRoZSBpdGVtLiBQYXNzIGBOb25lYCwgdG8gcmVzZXQgdGhlIHByaWNlLvQtIGBidXllcmA6IFJlc3RyaWN0cyB0aGUgYnV5IG9wZXJhdGlvbiB0byBhIHNwZWNpZmljIGFjY291bnQuAOxFbWl0cyBgSXRlbVByaWNlU2V0YCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBub3QgYE5vbmVgLuxFbWl0cyBgSXRlbVByaWNlUmVtb3ZlZGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgYE5vbmVgLiBidXlfaXRlbQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEkYmlkX3ByaWNllQEBPEl0ZW1QcmljZTxULCBJPgAZJKhBbGxvd3MgdG8gYnV5IGFuIGl0ZW0gaWYgaXQncyB1cCBmb3Igc2FsZS4A+E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBub3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0urC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGUgc2VuZGVyIHdhbnRzIHRvIGJ1eS7YLSBgYmlkX3ByaWNlYDogVGhlIHByaWNlIHRoZSBzZW5kZXIgaXMgd2lsbGluZyB0byBwYXkuAHhFbWl0cyBgSXRlbUJvdWdodGAgb24gc3VjY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuTQQMOHBhbGxldF91bmlxdWVzFHR5cGVzOERlc3Ryb3lXaXRuZXNzAAAMARRpdGVtc2QBDHUzMgABOGl0ZW1fbWV0YWRhdGFzZAEMdTMyAAEoYXR0cmlidXRlc2QBDHUzMgAAUQQEGE9wdGlvbgQEVAEAAQgQTm9uZQAAABBTb21lBAAAAAABAABVBAAAAjgAWQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABdBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAGEEBBhPcHRpb24EBFQBlQEBCBBOb25lAAAAEFNvbWUEAJUBAAABAABlBAwscGFsbGV0X25mdHMYcGFsbGV0EENhbGwIBFQABEkAAZwYY3JlYXRlCAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ2kEAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAA8CQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgAlAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AxGBDb2xsZWN0aW9uRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6RQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUIARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYY29uZmlnaQQBZENvbGxlY3Rpb25Db25maWdGb3I8VCwgST4AATwZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXJZASAgcGVybWlzc2lvbnMgb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nmCAgYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBxkZXN0cm95CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHHdpdG5lc3OFBAE4RGVzdHJveVdpdG5lc3MAAkScRGVzdHJveSBhIGNvbGxlY3Rpb24gb2YgZnVuZ2libGUgaXRlbXMuAF0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlaG93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuANxOT1RFOiBUaGUgY29sbGVjdGlvbiBtdXN0IGhhdmUgMCBpdGVtcyB0byBiZSBkZXN0cm95ZWQuAAUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGJlIGRlc3Ryb3llZC4xAS0gYHdpdG5lc3NgOiBJbmZvcm1hdGlvbiBvbiB0aGUgaXRlbXMgbWludGVkIGluIHRoZSBjb2xsZWN0aW9uLiBUaGlzIG11c3QgYmUgY29ycmVjdC4AoEVtaXRzIGBEZXN0cm95ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AdFdlaWdodDogYE8obSArIGMgKyBhKWAgd2hlcmU6eC0gYG0gPSB3aXRuZXNzLml0ZW1fbWV0YWRhdGFzYHAtIGBjID0gd2l0bmVzcy5pdGVtX2NvbmZpZ3NgaC0gYGEgPSB3aXRuZXNzLmF0dHJpYnV0ZXNgEG1pbnQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABHG1pbnRfdG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABMHdpdG5lc3NfZGF0YYkEAdhPcHRpb248TWludFdpdG5lc3M8VDo6SXRlbUlkLCBEZXBvc2l0QmFsYW5jZU9mPFQsIEk+Pj4AA0CgTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uLgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBjb21wbHkgd2l0aCB0aGUgYG1pbnRfc2V0dGluZ3NgIHJ1bGVzLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC6gLSBgaXRlbWA6IEFuIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLuAtIGBtaW50X3RvYDogQWNjb3VudCBpbnRvIHdoaWNoIHRoZSBpdGVtIHdpbGwgYmUgbWludGVkLkUBLSBgd2l0bmVzc19kYXRhYDogV2hlbiB0aGUgbWludCB0eXBlIGlzIGBIb2xkZXJPZihjb2xsZWN0aW9uX2lkKWAsIHRoZW4gdGhlIG93bmVkWQEgIGl0ZW1faWQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gbmVlZHMgdG8gYmUgcHJvdmlkZWQgd2l0aGluIHRoZSB3aXRuZXNzIGRhdGEgb2JqZWN0LiBJZmEBICB0aGUgbWludCBwcmljZSBpcyBzZXQsIHRoZW4gaXQgc2hvdWxkIGJlIGFkZGl0aW9uYWxseSBjb25maXJtZWQgaW4gdGhlIGB3aXRuZXNzX2RhdGFgLgBRAU5vdGU6IHRoZSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgYG9yaWdpbmAgYW5kIG5vdCB0aGUgYG93bmVyYCBvZiB0aGUgYGl0ZW1gLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAoZm9yY2VfbWludBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEcbWludF90bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsaXRlbV9jb25maWeRBAEoSXRlbUNvbmZpZwAENAUBTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVsSXNzdWVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuqC0gYGl0ZW1fY29uZmlnYDogQSBjb25maWcgb2YgdGhlIG5ldyBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAUsWERlc3Ryb3kgYSBzaW5nbGUgaXRlbS4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3RsYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLoAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYnVybmVkLgA8RW1pdHMgYEJ1cm5lZGAuADhXZWlnaHQ6IGBPKDEpYCB0cmFuc2ZlcgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAY4wE1vdmUgYW4gaXRlbSBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgD0T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgYmUgZWl0aGVyOmgtIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOzUBLSB0aGUgYXBwcm92ZWQgZGVsZWdhdGUgZm9yIHRoZSBgaXRlbWAgKGluIHRoaXMgY2FzZSwgdGhlIGFwcHJvdmFsIGlzIHJlc2V0KS4AKEFyZ3VtZW50czr0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLpQtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQu3C0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byByZWNlaXZlIG93bmVyc2hpcCBvZiB0aGUgaXRlbS4AUEVtaXRzIGBUcmFuc2ZlcnJlZGAuADhXZWlnaHQ6IGBPKDEpYCRyZWRlcG9zaXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUaXRlbXNVBAE4VmVjPFQ6Okl0ZW1JZD4AB0ScUmUtZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A+C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbXMgdG8gYmUgcmVldmFsdWF0ZWQuKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb3IgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWBIbG9ja19pdGVtX3RyYW5zZmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgY2hhbmdlZC64LSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlY29tZSBub24tdHJhbnNmZXJhYmxlLgBsRW1pdHMgYEl0ZW1UcmFuc2ZlckxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYFB1bmxvY2tfaXRlbV90cmFuc2ZlcggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAkoqFJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A5C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBjaGFuZ2VkLqgtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmVjb21lIHRyYW5zZmVyYWJsZS4AdEVtaXRzIGBJdGVtVHJhbnNmZXJVbmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDxsb2NrX2NvbGxlY3Rpb24IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0bG9ja19zZXR0aW5nc20EAUhDb2xsZWN0aW9uU2V0dGluZ3MACjDYRGlzYWxsb3dzIHNwZWNpZmllZCBzZXR0aW5ncyBmb3IgdGhlIHdob2xlIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBsb2NrZWQutC0gYGxvY2tfc2V0dGluZ3NgOiBUaGUgc2V0dGluZ3MgdG8gYmUgbG9ja2VkLgAdAU5vdGU6IGl0J3MgcG9zc2libGUgdG8gb25seSBsb2NrKHNldCkgdGhlIHNldHRpbmcsIGJ1dCBub3QgdG8gdW5zZXQgaXQuAGRFbWl0cyBgQ29sbGVjdGlvbkxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACyyEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A9C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSBvd25lciBzaG91bGQgYmUgY2hhbmdlZC4JAS0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZXkgbXVzdCBoYXZlIGNhbGxlZEkBICBgc2V0X2FjY2VwdF9vd25lcnNoaXBgIHdpdGggYGNvbGxlY3Rpb25gIGluIG9yZGVyIGZvciB0aGlzIG9wZXJhdGlvbiB0byBzdWNjZWVkLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXJRBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABFGFkbWluUQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AARxmcmVlemVyUQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADEDUQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGEgY29sbGVjdGlvbi4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAU5vdGU6IGJ5IHNldHRpbmcgdGhlIHJvbGUgdG8gYE5vbmVgIG9ubHkgdGhlIGBGb3JjZU9yaWdpbmAgd2lsbCBiZSBhYmxlIHRvIGNoYW5nZSBpdGRhZnRlciB0byBgU29tZShhY2NvdW50KWAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFhmb3JjZV9jb2xsZWN0aW9uX293bmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADSiEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrAtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFxmb3JjZV9jb2xsZWN0aW9uX2NvbmZpZwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhjb25maWdpBAFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgAOKIhDaGFuZ2UgdGhlIGNvbmZpZyBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrgtIGBjb25maWdgOiBUaGUgbmV3IGNvbmZpZyBvZiB0aGlzIGNvbGxlY3Rpb24uAIBFbWl0cyBgQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlchABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABOG1heWJlX2RlYWRsaW5l2AFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAPOBUBQXBwcm92ZSBhbiBpdGVtIHRvIGJlIHRyYW5zZmVycmVkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlHGBpdGVtYC4ARQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci7kLSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uSQEtIGBtYXliZV9kZWFkbGluZWA6IE9wdGlvbmFsIGRlYWRsaW5lIGZvciB0aGUgYXBwcm92YWwuIFNwZWNpZmllZCBieSBwcm92aWRpbmcgdGhl2AludW1iZXIgb2YgYmxvY2tzIGFmdGVyIHdoaWNoIHRoZSBhcHByb3ZhbCB3aWxsIGV4cGlyZQCQRW1pdHMgYFRyYW5zZmVyQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDjkQ2FuY2VsIG9uZSBvZiB0aGUgdHJhbnNmZXIgYXBwcm92YWxzIGZvciBhIHNwZWNpZmljIGl0ZW0uAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo9AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4lAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4BAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBpcyBnb2luZyB0byBsb29zZSB0aGVpciBhcHByb3ZhbC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgcGNsZWFyX2FsbF90cmFuc2Zlcl9hcHByb3ZhbHMIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAARNLBDYW5jZWwgYWxsIHRoZSBhcHByb3ZhbHMgb2YgYSBzcGVjaWZpYyBpdGVtLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6OQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWxzIHdpbGwgYmUgY2xlYXJlZC4hAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbHMgd2lsbCBiZSBjbGVhcmVkLgCkRW1pdHMgYEFsbEFwcHJvdmFsc0NhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgUGxvY2tfaXRlbV9wcm9wZXJ0aWVzEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhmQEBEGJvb2wAATxsb2NrX2F0dHJpYnV0ZXOZAQEQYm9vbAASROhEaXNhbGxvd3MgY2hhbmdpbmcgdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uAEEBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW5Qb2YgdGhlIGBjb2xsZWN0aW9uYC4AtC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBpZiB0aGUgYGl0ZW1gLnwtIGBpdGVtYDogQW4gaXRlbSB0byBiZSBsb2NrZWQuDQEtIGBsb2NrX21ldGFkYXRhYDogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1ldGFkYXRhIHNob3VsZCBiZSBsb2NrZWQuYQEtIGBsb2NrX2F0dHJpYnV0ZXNgOiBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXR0cmlidXRlcyBpbiB0aGUgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlTCAgc2hvdWxkIGJlIGxvY2tlZC4AXQFOb3RlOiBgbG9ja19hdHRyaWJ1dGVzYCBhZmZlY3RzIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2Ugb25seS5FAVdoZW4gdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgYXJlIGxvY2tlZCwgaXQgd29uJ3QgYmUgcG9zc2libGUgdGhlIHVubG9jayB0aGVtLgB0RW1pdHMgYEl0ZW1Qcm9wZXJ0aWVzTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgNHNldF9hdHRyaWJ1dGUUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbdgBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNllQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5fAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWXgAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgATWKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AAQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgY29uZm9ybSB0byB0aGUgbmFtZXNwYWNlIHJ1bGVzZXQ6PQEtIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZSBjb3VsZCBiZSBtb2RpZmllZCBieSB0aGUgYGNvbGxlY3Rpb25gIEFkbWluIG9ubHk7WQEtIGBJdGVtT3duZXJgIG5hbWVzcGFjZSBjb3VsZCBiZSBtb2RpZmllZCBieSB0aGUgYG1heWJlX2l0ZW1gIG93bmVyIG9ubHkuIGBtYXliZV9pdGVtYHQgIHNob3VsZCBiZSBzZXQgaW4gdGhhdCBjYXNlO1UBLSBgQWNjb3VudChBY2NvdW50SWQpYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgb25seSB3aGVuIHRoZSBgb3JpZ2luYCB3YXMgZ2l2ZW4gYVggIHBlcm1pc3Npb24gdG8gZG8gc287APBUaGUgZnVuZHMgb2YgYG9yaWdpbmAgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTotAWBBdHRyaWJ1dGVEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogKGtleS5sZW4gKyB2YWx1ZS5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgA5AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LgUBLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuzC0gYHZhbHVlYDogVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgYXR0cmlidXRlLgBURW1pdHMgYEF0dHJpYnV0ZVNldGAuADhXZWlnaHQ6IGBPKDEpYExmb3JjZV9zZXRfYXR0cmlidXRlGAEYc2V0X2FzQQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3YAURPcHRpb248VDo6SXRlbUlkPgABJG5hbWVzcGFjZZUEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgABDGtleXwBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVl4AF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AFETARm9yY2Utc2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgA5AUlmIHRoZSBhdHRyaWJ1dGUgYWxyZWFkeSBleGlzdHMgYW5kIGl0IHdhcyBzZXQgYnkgYW5vdGhlciBhY2NvdW50LCB0aGUgZGVwb3NpdJx3aWxsIGJlIHJldHVybmVkIHRvIHRoZSBwcmV2aW91cyBvd25lci4AvC0gYHNldF9hc2A6IEFuIG9wdGlvbmFsIG93bmVyIG9mIHRoZSBhdHRyaWJ1dGUuOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLswtIGB2YWx1ZWA6IFRoZSB2YWx1ZSB0byB3aGljaCB0byBzZXQgdGhlIGF0dHJpYnV0ZS4AVEVtaXRzIGBBdHRyaWJ1dGVTZXRgLgA4V2VpZ2h0OiBgTygxKWA8Y2xlYXJfYXR0cmlidXRlEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3YAURPcHRpb248VDo6SXRlbUlkPgABJG5hbWVzcGFjZZUEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgABDGtleXwBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgAVPLBDbGVhciBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZShhdHRyaWJ1dGUuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLg0BLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLpQtIGBuYW1lc3BhY2VgOiBBdHRyaWJ1dGUncyBuYW1lc3BhY2UuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXGFwcHJvdmVfaXRlbV9hdHRyaWJ1dGVzDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABYkLQFBcHByb3ZlIGl0ZW0ncyBhdHRyaWJ1dGVzIHRvIGJlIGNoYW5nZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgCkLSBgY29sbGVjdGlvbmA6IEEgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6kLSBgaXRlbWA6IFRoZSBpdGVtIHRoYXQgaG9sZHMgYXR0cmlidXRlcy5JAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byBjaGFuZ2UgYXR0cmlidXRlcyBvZiB0aGUgaXRlbS4AvEVtaXRzIGBJdGVtQXR0cmlidXRlc0FwcHJvdmFsQWRkZWRgIG9uIHN1Y2Nlc3MufGNhbmNlbF9pdGVtX2F0dHJpYnV0ZXNfYXBwcm92YWwQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARx3aXRuZXNzmQQBfENhbmNlbEF0dHJpYnV0ZXNBcHByb3ZhbFdpdG5lc3MAFygRAUNhbmNlbCB0aGUgcHJldmlvdXNseSBwcm92aWRlZCBhcHByb3ZhbCB0byBjaGFuZ2UgaXRlbSdzIGF0dHJpYnV0ZXMuEQFBbGwgdGhlIHByZXZpb3VzbHkgc2V0IGF0dHJpYnV0ZXMgYnkgdGhlIGBkZWxlZ2F0ZWAgd2lsbCBiZSByZW1vdmVkLgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAPQtIGBjb2xsZWN0aW9uYDogQ29sbGVjdGlvbiB0aGF0IHRoZSBpdGVtIGlzIGNvbnRhaW5lZCB3aXRoaW4upC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGF0IGhvbGRzIGF0dHJpYnV0ZXMu4C0gYGRlbGVnYXRlYDogVGhlIHByZXZpb3VzbHkgYXBwcm92ZWQgYWNjb3VudCB0byByZW1vdmUuAMRFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbFJlbW92ZWRgIG9uIHN1Y2Nlc3MuMHNldF9tZXRhZGF0YQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YeABeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAYQHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuAGBFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAGTR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAHBFbWl0cyBgSXRlbU1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxzZXRfY29sbGVjdGlvbl9tZXRhZGF0YQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRh4AF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABo8iFNldCB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mRHRoZSBgY29sbGVjdGlvbmAuAFkBSWYgdGhlIG9yaWdpbiBpcyBgU2lnbmVkYCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTr0YE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIGRhdGEubGVuYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgARAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byB1cGRhdGUuTQEtIGBkYXRhYDogVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBpdGVtLiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAbMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27YAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAcKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAdJOBTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A7C0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBjaGFuZ2UuEQEtIGBtYXhfc3VwcGx5YDogVGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgDURW1pdHMgYENvbGxlY3Rpb25NYXhTdXBwbHlTZXRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC5QdXBkYXRlX21pbnRfc2V0dGluZ3MIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0bWludF9zZXR0aW5nc3UEARUBTWludFNldHRpbmdzPEJhbGFuY2VPZjxULCBJPiwgQmxvY2tOdW1iZXJGb3I8VCwgST4sIFQ6OgpDb2xsZWN0aW9uSWQ+AB4kVFVwZGF0ZSBtaW50IHNldHRpbmdzLgBNAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgSXNzdWVyUG9mIHRoZSBgY29sbGVjdGlvbmAuAOwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gY2hhbmdlLqQtIGBtaW50X3NldHRpbmdzYDogVGhlIG5ldyBtaW50IHNldHRpbmdzLgDwRW1pdHMgYENvbGxlY3Rpb25NaW50U2V0dGluZ3NVcGRhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuJHNldF9wcmljZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2VhBAFcT3B0aW9uPEl0ZW1QcmljZTxULCBJPj4AAUR3aGl0ZWxpc3RlZF9idXllclEEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AB8slFNldCAob3IgcmVzZXQpIHRoZSBwcmljZSBmb3IgYW4gaXRlbS4A6E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6gLSBgaXRlbWA6IFRoZSBpdGVtIHRvIHNldCB0aGUgcHJpY2UgZm9yLg0BLSBgcHJpY2VgOiBUaGUgcHJpY2UgZm9yIHRoZSBpdGVtLiBQYXNzIGBOb25lYCwgdG8gcmVzZXQgdGhlIHByaWNlLvQtIGBidXllcmA6IFJlc3RyaWN0cyB0aGUgYnV5IG9wZXJhdGlvbiB0byBhIHNwZWNpZmljIGFjY291bnQuAOxFbWl0cyBgSXRlbVByaWNlU2V0YCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBub3QgYE5vbmVgLuxFbWl0cyBgSXRlbVByaWNlUmVtb3ZlZGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgYE5vbmVgLiBidXlfaXRlbQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEkYmlkX3ByaWNllQEBPEl0ZW1QcmljZTxULCBJPgAgJKhBbGxvd3MgdG8gYnV5IGFuIGl0ZW0gaWYgaXQncyB1cCBmb3Igc2FsZS4A+E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBub3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0urC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGUgc2VuZGVyIHdhbnRzIHRvIGJ1eS7YLSBgYmlkX3ByaWNlYDogVGhlIHByaWNlIHRoZSBzZW5kZXIgaXMgd2lsbGluZyB0byBwYXkuAHhFbWl0cyBgSXRlbUJvdWdodGAgb24gc3VjY2Vzcy4gcGF5X3RpcHMEARB0aXBznQQBnEJvdW5kZWRWZWM8SXRlbVRpcE9mPFQsIEk+LCBUOjpNYXhUaXBzPgAhHFxBbGxvd3MgdG8gcGF5IHRoZSB0aXBzLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBULSBgdGlwc2A6IFRpcHMgYXJyYXkuAJhFbWl0cyBgVGlwU2VudGAgb24gZXZlcnkgdGlwIHRyYW5zZmVyLixjcmVhdGVfc3dhcBgBSG9mZmVyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbTgBJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABSG1heWJlX2Rlc2lyZWRfaXRlbdgBRE9wdGlvbjxUOjpJdGVtSWQ+AAEsbWF5YmVfcHJpY2WpBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGR1cmF0aW9uOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIkBRAVJlZ2lzdGVyIGEgbmV3IGF0b21pYyBzd2FwLCBkZWNsYXJpbmcgYW4gaW50ZW50aW9uIHRvIHNlbmQgYW4gYGl0ZW1gIGluIGV4Y2hhbmdlIGZvcvxgZGVzaXJlZF9pdGVtYCBmcm9tIG9yaWdpbiB0byB0YXJnZXQgb24gdGhlIGN1cnJlbnQgYmxvY2tjaGFpbi5NAVRoZSB0YXJnZXQgY2FuIGV4ZWN1dGUgdGhlIHN3YXAgZHVyaW5nIHRoZSBzcGVjaWZpZWQgYGR1cmF0aW9uYCBvZiBibG9ja3MgKGlmIHNldCku8EFkZGl0aW9uYWxseSwgdGhlIHByaWNlIGNvdWxkIGJlIHNldCBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uqC0gYGl0ZW1gOiBUaGUgaXRlbSBhbiBvd25lciB3YW50cyB0byBnaXZlLuwtIGBkZXNpcmVkX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgZGVzaXJlZCBpdGVtLvQtIGBkZXNpcmVkX2l0ZW1gOiBUaGUgZGVzaXJlZCBpdGVtIGFuIG93bmVyIHdhbnRzIHRvIHJlY2VpdmUuYQEtIGBtYXliZV9wcmljZWA6IFRoZSBwcmljZSBhbiBvd25lciBpcyB3aWxsaW5nIHRvIHBheSBvciByZWNlaXZlIGZvciB0aGUgZGVzaXJlZCBgaXRlbWAuSQEtIGBkdXJhdGlvbmA6IEEgZGVhZGxpbmUgZm9yIHRoZSBzd2FwLiBTcGVjaWZpZWQgYnkgcHJvdmlkaW5nIHRoZSBudW1iZXIgb2YgYmxvY2tziAlhZnRlciB3aGljaCB0aGUgc3dhcCB3aWxsIGV4cGlyZS4AfEVtaXRzIGBTd2FwQ3JlYXRlZGAgb24gc3VjY2Vzcy4sY2FuY2VsX3N3YXAIAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAIyRYQ2FuY2VsIGFuIGF0b21pYyBzd2FwLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLhUBT3JpZ2luIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYCBpZiB0aGUgZGVhZGxpbmUgaGFzbid0IGV4cGlyZWQuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uqC0gYGl0ZW1gOiBUaGUgaXRlbSBhbiBvd25lciB3YW50cyB0byBnaXZlLgCERW1pdHMgYFN3YXBDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuKGNsYWltX3N3YXAUATxzZW5kX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRzZW5kX2l0ZW04ASRUOjpJdGVtSWQAAUhyZWNlaXZlX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATByZWNlaXZlX2l0ZW04ASRUOjpJdGVtSWQAATR3aXRuZXNzX3ByaWNlqQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AJDBUQ2xhaW0gYW4gYXRvbWljIHN3YXAuOQFUaGlzIG1ldGhvZCBleGVjdXRlcyBhIHBlbmRpbmcgc3dhcCwgdGhhdCB3YXMgY3JlYXRlZCBieSBhIGNvdW50ZXJwYXJ0IGJlZm9yZS4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgDsLSBgc2VuZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgc2VudC6MLSBgc2VuZF9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgc2VudC4JAS0gYHJlY2VpdmVfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHJlY2VpdmVkLqgtIGByZWNlaXZlX2l0ZW1gOiBUaGUgaXRlbSB0byBiZSByZWNlaXZlZC7kLSBgd2l0bmVzc19wcmljZWA6IEEgcHJpY2UgdGhhdCB3YXMgcHJldmlvdXNseSBhZ3JlZWQgb24uAHxFbWl0cyBgU3dhcENsYWltZWRgIG9uIHN1Y2Nlc3MuPG1pbnRfcHJlX3NpZ25lZAwBJG1pbnRfZGF0YbUEAWhCb3g8UHJlU2lnbmVkTWludE9mPFQsIEk+PgABJHNpZ25hdHVyZbkEAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgQBMFQ6OkFjY291bnRJZAAlNMhNaW50IGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBdAS0gYG1pbnRfZGF0YWA6IFRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsIHRoYXQgY29uc2lzdHMgb2YgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpdGVtLFEBICBpdHMgbWV0YWRhdGEsIGF0dHJpYnV0ZXMsIHdobyBjYW4gbWludCBpdCAoYE5vbmVgIGZvciBhbnlvbmUpIGFuZCB1bnRpbCB3aGF0IGJsb2NrJCAgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LjkBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBJc3N1ZXIgb2YgdGhlIGNvbGxlY3Rpb24uAGhFbWl0cyBgSXNzdWVkYCBvbiBzdWNjZXNzLtRFbWl0cyBgQXR0cmlidXRlU2V0YCBpZiB0aGUgYXR0cmlidXRlcyB3ZXJlIHByb3ZpZGVkLthFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YCBpZiB0aGUgbWV0YWRhdGEgd2FzIG5vdCBlbXB0eS5kc2V0X2F0dHJpYnV0ZXNfcHJlX3NpZ25lZAwBEGRhdGHBBAFsUHJlU2lnbmVkQXR0cmlidXRlc09mPFQsIEk+AAEkc2lnbmF0dXJluQQBUFQ6Ok9mZmNoYWluU2lnbmF0dXJlAAEYc2lnbmVyBAEwVDo6QWNjb3VudElkACY0AQFTZXQgYXR0cmlidXRlcyBmb3IgYW4gaXRlbSBieSBwcm92aWRpbmcgdGhlIHByZS1zaWduZWQgYXBwcm92YWwuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBkYXRhLml0ZW1gLgBJAS0gYGRhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSzMICBhdHRyaWJ1dGVzIHRvIHVwZGF0ZSBhbmQgdW50aWwgd2hhdCBibG9jayBudW1iZXIuyC0gYHNpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgdGhlIGBkYXRhYCBvYmplY3QuUQEtIGBzaWduZXJgOiBUaGUgYGRhdGFgIG9iamVjdCdzIHNpZ25lci4gU2hvdWxkIGJlIGFuIEFkbWluIG9mIHRoZSBjb2xsZWN0aW9uIGZvciB0aGV4ICBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UuAMRFbWl0cyBgQXR0cmlidXRlU2V0YCBmb3IgZWFjaCBwcm92aWRlZCBhdHRyaWJ1dGUuGQFFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkYCBpZiB0aGUgYXBwcm92YWwgd2Fzbid0IHNldCBiZWZvcmUuqEVtaXRzIGBQcmVTaWduZWRBdHRyaWJ1dGVzU2V0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5pBAwscGFsbGV0X25mdHMUdHlwZXNAQ29sbGVjdGlvbkNvbmZpZwwUUHJpY2UBlQEsQmxvY2tOdW1iZXIBODBDb2xsZWN0aW9uSWQBOAAMASBzZXR0aW5nc20EAUhDb2xsZWN0aW9uU2V0dGluZ3MAAShtYXhfc3VwcGx52AEsT3B0aW9uPHUzMj4AATRtaW50X3NldHRpbmdzdQQBuE1pbnRTZXR0aW5nczxQcmljZSwgQmxvY2tOdW1iZXIsIENvbGxlY3Rpb25JZD4AAG0EDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAFxBAAEACgBRENvbGxlY3Rpb25TZXR0aW5nAABxBAwscGFsbGV0X25mdHMUdHlwZXNEQ29sbGVjdGlvblNldHRpbmcAARREVHJhbnNmZXJhYmxlSXRlbXMAAQBAVW5sb2NrZWRNZXRhZGF0YQACAEhVbmxvY2tlZEF0dHJpYnV0ZXMABABEVW5sb2NrZWRNYXhTdXBwbHkACAA8RGVwb3NpdFJlcXVpcmVkABAAAHUEDCxwYWxsZXRfbmZ0cxR0eXBlczBNaW50U2V0dGluZ3MMFFByaWNlAZUBLEJsb2NrTnVtYmVyATgwQ29sbGVjdGlvbklkATgAFAEkbWludF90eXBleQQBWE1pbnRUeXBlPENvbGxlY3Rpb25JZD4AARRwcmljZWEEATRPcHRpb248UHJpY2U+AAEsc3RhcnRfYmxvY2vYAUxPcHRpb248QmxvY2tOdW1iZXI+AAEkZW5kX2Jsb2Nr2AFMT3B0aW9uPEJsb2NrTnVtYmVyPgABVGRlZmF1bHRfaXRlbV9zZXR0aW5nc30EATBJdGVtU2V0dGluZ3MAAHkEDCxwYWxsZXRfbmZ0cxR0eXBlcyBNaW50VHlwZQQwQ29sbGVjdGlvbklkATgBDBhJc3N1ZXIAAAAYUHVibGljAAEAIEhvbGRlck9mBAA4ATBDb2xsZWN0aW9uSWQAAgAAfQQMLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAYEEAAQAKAEsSXRlbVNldHRpbmcAAIEEDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtU2V0dGluZwABDDBUcmFuc2ZlcmFibGUAAQBAVW5sb2NrZWRNZXRhZGF0YQACAEhVbmxvY2tlZEF0dHJpYnV0ZXMABAAAhQQMLHBhbGxldF9uZnRzFHR5cGVzOERlc3Ryb3lXaXRuZXNzAAAMAThpdGVtX21ldGFkYXRhc2QBDHUzMgABMGl0ZW1fY29uZmlnc2QBDHUzMgABKGF0dHJpYnV0ZXNkAQx1MzIAAIkEBBhPcHRpb24EBFQBjQQBCBBOb25lAAAAEFNvbWUEAI0EAAABAACNBAwscGFsbGV0X25mdHMUdHlwZXMsTWludFdpdG5lc3MIGEl0ZW1JZAE4HEJhbGFuY2UBlQEACAEob3duZWRfaXRlbdgBOE9wdGlvbjxJdGVtSWQ+AAEobWludF9wcmljZWEEATxPcHRpb248QmFsYW5jZT4AAJEEDCxwYWxsZXRfbmZ0cxR0eXBlcyhJdGVtQ29uZmlnAAAEASBzZXR0aW5nc30EATBJdGVtU2V0dGluZ3MAAJUEDCxwYWxsZXRfbmZ0cxR0eXBlc0hBdHRyaWJ1dGVOYW1lc3BhY2UEJEFjY291bnRJZAEEARAYUGFsbGV0AAAAPENvbGxlY3Rpb25Pd25lcgABACRJdGVtT3duZXIAAgAcQWNjb3VudAQABAEkQWNjb3VudElkAAMAAJkEDCxwYWxsZXRfbmZ0cxR0eXBlc3xDYW5jZWxBdHRyaWJ1dGVzQXBwcm92YWxXaXRuZXNzAAAEAUhhY2NvdW50X2F0dHJpYnV0ZXM4AQx1MzIAAJ0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBoQQEUwAABAClBAEYVmVjPFQ+AAChBAwscGFsbGV0X25mdHMUdHlwZXMcSXRlbVRpcBAwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQYQW1vdW50AZUBABABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEYSXRlbUlkAAEgcmVjZWl2ZXIEASRBY2NvdW50SWQAARhhbW91bnSVAQEYQW1vdW50AAClBAAAAqEEAKkEBBhPcHRpb24EBFQBrQQBCBBOb25lAAAAEFNvbWUEAK0EAAABAACtBAwscGFsbGV0X25mdHMUdHlwZXNIUHJpY2VXaXRoRGlyZWN0aW9uBBhBbW91bnQBlQEACAEYYW1vdW50lQEBGEFtb3VudAABJGRpcmVjdGlvbrEEAThQcmljZURpcmVjdGlvbgAAsQQMLHBhbGxldF9uZnRzFHR5cGVzOFByaWNlRGlyZWN0aW9uAAEIEFNlbmQAAAAcUmVjZWl2ZQABAAC1BAwscGFsbGV0X25mdHMUdHlwZXM0UHJlU2lnbmVkTWludBQwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQgRGVhZGxpbmUBOBxCYWxhbmNlAZUBABwBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEYSXRlbUlkAAEoYXR0cmlidXRlcywBXFZlYzwoVmVjPHU4PiwgVmVjPHU4Pik+AAEgbWV0YWRhdGEYARxWZWM8dTg+AAEwb25seV9hY2NvdW50QQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEgZGVhZGxpbmU4ASBEZWFkbGluZQABKG1pbnRfcHJpY2VhBAE8T3B0aW9uPEJhbGFuY2U+AAC5BAgoc3BfcnVudGltZThNdWx0aVNpZ25hdHVyZQABEBxFZDI1NTE5BAC9BAFIZWQyNTUxOTo6U2lnbmF0dXJlAAAAHFNyMjU1MTkEAL0EAUhzcjI1NTE5OjpTaWduYXR1cmUAAQAURWNkc2EEALUBAUBlY2RzYTo6U2lnbmF0dXJlAAIADEV0aAQAtQEBWGVjZHNhOjpLZWNjYWtTaWduYXR1cmUAAwAAvQQAAANAAAAADADBBAwscGFsbGV0X25mdHMUdHlwZXNMUHJlU2lnbmVkQXR0cmlidXRlcxAwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQgRGVhZGxpbmUBOAAUAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABKGF0dHJpYnV0ZXMsAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABJG5hbWVzcGFjZZUEAXRBdHRyaWJ1dGVOYW1lc3BhY2U8QWNjb3VudElkPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAMUEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2WVAQEoVDo6QmFsYW5jZQAATOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABNGlzX3N1ZmZpY2llbnSZAQEQYm9vbAABLG1pbl9iYWxhbmNlkQEBKFQ6OkJhbGFuY2UAAUz4SXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AtFRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgBZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlciBwZXJtaXNzaW9ucyUBb3ZlciB0aGlzIGFzc2V0LCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDRzdGFydF9kZXN0cm95BAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABDBhAURlc3Ryb3kgYWxsIGFwcHJvdmFscyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldCB1cCB0byB0aGUgbWF4IChUOjpSZW1vdmVJdGVtc0xpbWl0KS4AYQFgZGVzdHJveV9hcHByb3ZhbHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTkBZGVzdHJveSBhbGwgYXBwcm92YWxzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFwcHJvdmFscyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A2EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBcHByb3ZhbHNgIGV2ZW50LjhmaW5pc2hfZGVzdHJveQQBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVumQEBEGJvb2wAEzi4Rm9yY2UgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldCB0byBzb21lIHZhbHVlLgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGhBbnkgZGVwb3NpdCBpcyBsZWZ0IGFsb25lLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuAFEBV2VpZ2h0OiBgTyhOICsgUylgIHdoZXJlIE4gYW5kIFMgYXJlIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgYW5kIHN5bWJvbCByZXNwZWN0aXZlbHkuUGZvcmNlX2NsZWFyX21ldGFkYXRhBAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlkQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50mQEBEGJvb2wAASRpc19mcm96ZW6ZAQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAWUC0BQXBwcm92ZSBhbiBhbW91bnQgb2YgYXNzZXQgZm9yIHRyYW5zZmVyIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAE0BRW5zdXJlcyB0aGF0IGBBcHByb3ZhbERlcG9zaXRgIHdvcnRoIG9mIGBDdXJyZW5jeWAgaXMgcmVzZXJ2ZWQgZnJvbSBzaWduaW5nIGFjY291bnRVAWZvciB0aGUgcHVycG9zZSBvZiBob2xkaW5nIHRoZSBhcHByb3ZhbC4gSWYgc29tZSBub24temVybyBhbW91bnQgb2YgYXNzZXRzIGlzIGFscmVhZHlJAWFwcHJvdmVkIGZyb20gc2lnbmluZyBhY2NvdW50IHRvIGBkZWxlZ2F0ZWAsIHRoZW4gaXQgaXMgdG9wcGVkIHVwIG9yIHVucmVzZXJ2ZWQgdG9UbWVldCB0aGUgcmlnaHQgdmFsdWUuAEUBTk9URTogVGhlIHNpZ25pbmcgYWNjb3VudCBkb2VzIG5vdCBuZWVkIHRvIG93biBgYW1vdW50YCBvZiBhc3NldHMgYXQgdGhlIHBvaW50IG9mRG1ha2luZyB0aGlzIGNhbGwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4NAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC5JAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXQgdGhhdCBtYXkgYmUgdHJhbnNmZXJyZWQgYnkgYGRlbGVnYXRlYC4gSWYgdGhlcmUgaXPgYWxyZWFkeSBhbiBhcHByb3ZhbCBpbiBwbGFjZSwgdGhlbiB0aGlzIGFjdHMgYWRkaXRpdmVseS4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsCAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxkZXN0aW5hdGlvbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybpkBARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLG1pbl9iYWxhbmNllQEBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLix0b3VjaF9vdGhlcggBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAfKFkBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBgd2hvYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCdzIGFzc2V0LpQtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmJsb2NrZWQuAEBFbWl0cyBgQmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDB0cmFuc2Zlcl9hbGwMAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZZkBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzyQQByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7JBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAc0EBFMAAAQA0QQBGFZlYzxUPgAAzQQMNGFzc2V0c19jb21tb25gbG9jYWxfYW5kX2ZvcmVpZ25fYXNzZXRzXEZvcmVpZ25Bc3NldFJlc2VydmVEYXRhAAAIARxyZXNlcnZlOQIBIExvY2F0aW9uAAEwdGVsZXBvcnRhYmxlmQEBEGJvb2wAANEEAAACzQQA1QQMcHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb24YcGFsbGV0EENhbGwEBFQAAQg0ZnJhY3Rpb25hbGl6ZRQBRG5mdF9jb2xsZWN0aW9uX2lkOAFIVDo6TmZ0Q29sbGVjdGlvbklkAAEYbmZ0X2lkOAEgVDo6TmZ0SWQAASBhc3NldF9pZDgBMEFzc2V0SWRPZjxUPgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRmcmFjdGlvbnOVAQFEQXNzZXRCYWxhbmNlT2Y8VD4AAESsTG9jayB0aGUgTkZUIGFuZCBtaW50IGEgbmV3IGZ1bmdpYmxlIGFzc2V0LgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgEBVGhlIG9yaWdpbiBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgTkZUIHRoZXkgYXJlIHRyeWluZyB0byBsb2NrLgCcYERlcG9zaXRgIGZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQuACUBLSBgbmZ0X2NvbGxlY3Rpb25faWRgOiBUaGUgSUQgdXNlZCB0byBpZGVudGlmeSB0aGUgY29sbGVjdGlvbiBvZiB0aGUgTkZULrBJcyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFsbGV0X25mdHNgLiEBLSBgbmZ0X2lkYDogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIE5GVCB3aXRoaW4gdGhlIGdpdmVuIGNvbGxlY3Rpb24usElzIHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBwYWxsZXRfbmZ0c2Au5C0gYGFzc2V0X2lkYDogVGhlIElEIG9mIHRoZSBuZXcgYXNzZXQuIEl0IG11c3Qgbm90IGV4aXN0LrhJcyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFsbGV0X2Fzc2V0c2AuHQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRoYXQgd2lsbCByZWNlaXZlIHRoZSBuZXdseSBjcmVhdGVkIGFzc2V0Lg0BLSBgZnJhY3Rpb25zYDogVGhlIHRvdGFsIGlzc3VhbmNlIG9mIHRoZSBuZXdseSBjcmVhdGVkIGFzc2V0IGNsYXNzLgDARW1pdHMgYE5mdEZyYWN0aW9uYWxpemVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFHVuaWZ5EAFEbmZ0X2NvbGxlY3Rpb25faWQ4AUhUOjpOZnRDb2xsZWN0aW9uSWQAARhuZnRfaWQ4ASBUOjpOZnRJZAABIGFzc2V0X2lkOAEwQXNzZXRJZE9mPFQ+AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQEUBQnVybiB0aGUgdG90YWwgaXNzdWFuY2Ugb2YgdGhlIGZ1bmdpYmxlIGFzc2V0IGFuZCByZXR1cm4gKHVubG9jaykgdGhlIGxvY2tlZCBORlQuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuANBgRGVwb3NpdGAgZnVuZHMgd2lsbCBiZSByZXR1cm5lZCB0byBgYXNzZXRfY3JlYXRvcmAuACUBLSBgbmZ0X2NvbGxlY3Rpb25faWRgOiBUaGUgSUQgdXNlZCB0byBpZGVudGlmeSB0aGUgY29sbGVjdGlvbiBvZiB0aGUgTkZULrBJcyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFsbGV0X25mdHNgLiEBLSBgbmZ0X2lkYDogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIE5GVCB3aXRoaW4gdGhlIGdpdmVuIGNvbGxlY3Rpb24usElzIHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBwYWxsZXRfbmZ0c2AuKQEtIGBhc3NldF9pZGA6IFRoZSBJRCBvZiB0aGUgYXNzZXQgYmVpbmcgcmV0dXJuZWQgYW5kIGRlc3Ryb3llZC4gTXVzdCBtYXRjaPx0aGUgb3JpZ2luYWwgSUQgb2YgdGhlIGNyZWF0ZWQgYXNzZXQsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIE5GVC64SXMgdXNlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYHBhbGxldF9hc3NldHNgLvwtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRoYXQgd2lsbCByZWNlaXZlIHRoZSB1bmlmaWVkIE5GVC4ApEVtaXRzIGBOZnRVbmlmaWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtkEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZZUBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50mQEBEGJvb2wAASxtaW5fYmFsYW5jZZEBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbpkBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2WRAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnSZAQEQYm9vbAABJGlzX2Zyb3plbpkBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJumQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZZUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZZkBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXNBBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLt0EDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQQQ2FsbAQEVAABGCxjcmVhdGVfcG9vbAgBGGFzc2V0MTkCAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MjkCAURCb3g8VDo6QXNzZXRLaW5kPgAAEBkBQ3JlYXRlcyBhbiBlbXB0eSBsaXF1aWRpdHkgcG9vbCBhbmQgYW4gYXNzb2NpYXRlZCBuZXcgYGxwX3Rva2VuYCBhc3NldAEBKHRoZSBpZCBvZiB3aGljaCBpcyByZXR1cm5lZCBpbiB0aGUgYEV2ZW50OjpQb29sQ3JlYXRlZGAgZXZlbnQpLgARAU9uY2UgYSBwb29sIGlzIGNyZWF0ZWQsIHNvbWVvbmUgbWF5IFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gdG8gaXQuNGFkZF9saXF1aWRpdHkcARhhc3NldDE5AgFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDI5AgFEQm94PFQ6OkFzc2V0S2luZD4AATxhbW91bnQxX2Rlc2lyZWSVAQEoVDo6QmFsYW5jZQABPGFtb3VudDJfZGVzaXJlZJUBAShUOjpCYWxhbmNlAAEsYW1vdW50MV9taW6VAQEoVDo6QmFsYW5jZQABLGFtb3VudDJfbWlulQEBKFQ6OkJhbGFuY2UAARxtaW50X3RvBAEwVDo6QWNjb3VudElkAAE45FByb3ZpZGUgbGlxdWlkaXR5IGludG8gdGhlIHBvb2wgb2YgYGFzc2V0MWAgYW5kIGBhc3NldDJgLg0BTk9URTogYW4gb3B0aW1hbCBhbW91bnQgb2YgYXNzZXQxIGFuZCBhc3NldDIgd2lsbCBiZSBjYWxjdWxhdGVkIGFuZCEBbWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gdGhlIHByb3ZpZGVkIGBhbW91bnQxX2Rlc2lyZWRgL2BhbW91bnQyX2Rlc2lyZWRg/HRodXMgeW91IHNob3VsZCBwcm92aWRlIHRoZSBtaW4gYW1vdW50IHlvdSdyZSBoYXBweSB0byBwcm92aWRlLshQYXJhbXMgYGFtb3VudDFfbWluYC9gYW1vdW50Ml9taW5gIHJlcHJlc2VudCB0aGF0LkkBYG1pbnRfdG9gIHdpbGwgYmUgc2VudCB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHJlcHJlc2VudCB0aGlzIHNoYXJlIG9mIHRoZSBwb29sLgBdAU5PVEU6IHdoZW4gZW5jb3VudGVyaW5nIGFuIGluY29ycmVjdCBleGNoYW5nZSByYXRlIGFuZCBub24td2l0aGRyYXdhYmxlIHBvb2wgbGlxdWlkaXR5LNxiYXRjaCBhbiBhdG9taWMgY2FsbCB3aXRoIFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gYW5kUQFbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIG9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0lAWNhbGxzIHRvIHJlbmRlciB0aGUgbGlxdWlkaXR5IHdpdGhkcmF3YWJsZSBhbmQgcmVjdGlmeSB0aGUgZXhjaGFuZ2UgcmF0ZS4A2E9uY2UgbGlxdWlkaXR5IGlzIGFkZGVkLCBzb21lb25lIG1heSBzdWNjZXNzZnVsbHkgY2FsbKRbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdLkByZW1vdmVfbGlxdWlkaXR5GAEYYXNzZXQxOQIBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyOQIBREJveDxUOjpBc3NldEtpbmQ+AAE0bHBfdG9rZW5fYnVybpUBAShUOjpCYWxhbmNlAAFMYW1vdW50MV9taW5fcmVjZWl2ZZUBAShUOjpCYWxhbmNlAAFMYW1vdW50Ml9taW5fcmVjZWl2ZZUBAShUOjpCYWxhbmNlAAEsd2l0aGRyYXdfdG8EATBUOjpBY2NvdW50SWQAAgxNAUFsbG93cyB5b3UgdG8gcmVtb3ZlIGxpcXVpZGl0eSBieSBwcm92aWRpbmcgdGhlIGBscF90b2tlbl9idXJuYCB0b2tlbnMgdGhhdCB3aWxsIGJlUQFidXJuZWQgaW4gdGhlIHByb2Nlc3MuIFdpdGggdGhlIHVzYWdlIG9mIGBhbW91bnQxX21pbl9yZWNlaXZlYC9gYW1vdW50Ml9taW5fcmVjZWl2ZWA1AWl0J3MgcG9zc2libGUgdG8gY29udHJvbCB0aGUgbWluIGFtb3VudCBvZiByZXR1cm5lZCB0b2tlbnMgeW91J3JlIGhhcHB5IHdpdGgucHN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMUARBwYXRo4QQBWFZlYzxCb3g8VDo6QXNzZXRLaW5kPj4AASRhbW91bnRfaW6VAQEoVDo6QmFsYW5jZQABOGFtb3VudF9vdXRfbWlulQEBKFQ6OkJhbGFuY2UAARxzZW5kX3RvBAEwVDo6QWNjb3VudElkAAEoa2VlcF9hbGl2ZZkBARBib29sAAMYwFN3YXAgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQxYCBpbnRvIGBhc3NldDJgLi0BYGFtb3VudF9vdXRfbWluYCBwYXJhbSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG1pbiBhbW91bnQgb2YgdGhlIGBhc3NldDJgYHlvdSdyZSBoYXBweSB0byByZWNlaXZlLgBZAVtgQXNzZXRDb252ZXJzaW9uQXBpOjpxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIHJ1bnRpbWUgY2FsbCBjYW4gYmUgY2FsbGVkMGZvciBhIHF1b3RlLnBzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zFAEQcGF0aOEEAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEoYW1vdW50X291dJUBAShUOjpCYWxhbmNlAAE0YW1vdW50X2luX21heJUBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmWZAQEQYm9vbAAEGAEBU3dhcCBhbnkgYW1vdW50IG9mIGBhc3NldDFgIHRvIGdldCB0aGUgZXhhY3QgYW1vdW50IG9mIGBhc3NldDJgLhkBYGFtb3VudF9pbl9tYXhgIHBhcmFtIGFsbG93cyB0byBzcGVjaWZ5IHRoZSBtYXggYW1vdW50IG9mIHRoZSBgYXNzZXQxYGB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS4UdG91Y2gIARhhc3NldDE5AgFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDI5AgFEQm94PFQ6OkFzc2V0S2luZD4ABSxNAVRvdWNoIGFuIGV4aXN0aW5nIHBvb2wgdG8gZnVsZmlsbCBwcmVyZXF1aXNpdGVzIGJlZm9yZSBwcm92aWRpbmcgbGlxdWlkaXR5LCBzdWNoIGFzSQFlbnN1cmluZyB0aGF0IHRoZSBwb29sJ3MgYWNjb3VudHMgYXJlIGluIHBsYWNlLiBJdCBpcyB0eXBpY2FsbHkgdXNlZnVsIHdoZW4gYSBwb29sVQFjcmVhdG9yIHJlbW92ZXMgdGhlIHBvb2wncyBhY2NvdW50cyBhbmQgZG9lcyBub3QgcHJvdmlkZSBhIGxpcXVpZGl0eS4gVGhpcyBhY3Rpb24gbWF5VQFpbnZvbHZlIGhvbGRpbmcgYXNzZXRzIGZyb20gdGhlIGNhbGxlciBhcyBhIGRlcG9zaXQgZm9yIGNyZWF0aW5nIHRoZSBwb29sJ3MgYWNjb3VudHMuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgApAS0gYGFzc2V0MWA6IFRoZSBhc3NldCBJRCBvZiBhbiBleGlzdGluZyBwb29sIHdpdGggYSBwYWlyIChhc3NldDEsIGFzc2V0MikuKQEtIGBhc3NldDJgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EcFBhbGxldCdzIGNhbGxhYmxlIGZ1bmN0aW9ucy7hBAAAAjkCAOUEDDxwYWxsZXRfcmVjb3ZlcnkYcGFsbGV0EENhbGwEBFQAASgwYXNfcmVjb3ZlcmVkCAEcYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AACCgU2VuZCBhIGNhbGwgdGhyb3VnaCBhIHJlY292ZXJlZCBhY2NvdW50LgARAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCByZWdpc3RlcmVkIHRv5GJlIGFibGUgdG8gbWFrZSBjYWxscyBvbiBiZWhhbGYgb2YgdGhlIHJlY292ZXJlZCBhY2NvdW50LgAsUGFyYW1ldGVyczohAS0gYGFjY291bnRgOiBUaGUgcmVjb3ZlcmVkIGFjY291bnQgeW91IHdhbnQgdG8gbWFrZSBhIGNhbGwgb24tYmVoYWxmLW9mLvwtIGBjYWxsYDogVGhlIGNhbGwgeW91IHdhbnQgdG8gbWFrZSB3aXRoIHRoZSByZWNvdmVyZWQgYWNjb3VudC40c2V0X3JlY292ZXJlZAgBEGxvc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHJlc2N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIA0BQWxsb3cgUk9PVCB0byBieXBhc3MgdGhlIHJlY292ZXJ5IHByb2Nlc3MgYW5kIHNldCBhIHJlc2N1ZXIgYWNjb3VudHBmb3IgYSBsb3N0IGFjY291bnQgZGlyZWN0bHkuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUk9PVF8uACxQYXJhbWV0ZXJzOrQtIGBsb3N0YDogVGhlICJsb3N0IGFjY291bnQiIHRvIGJlIHJlY292ZXJlZC4ZAS0gYHJlc2N1ZXJgOiBUaGUgInJlc2N1ZXIgYWNjb3VudCIgd2hpY2ggY2FuIGNhbGwgYXMgdGhlIGxvc3QgYWNjb3VudC48Y3JlYXRlX3JlY292ZXJ5DAEcZnJpZW5kc50BAURWZWM8VDo6QWNjb3VudElkPgABJHRocmVzaG9sZPkDAQx1MTYAATBkZWxheV9wZXJpb2Q4AXBCbG9ja051bWJlckZyb21Qcm92aWRlck9mPFQ+AAJAWQFDcmVhdGUgYSByZWNvdmVyeSBjb25maWd1cmF0aW9uIGZvciB5b3VyIGFjY291bnQuIFRoaXMgbWFrZXMgeW91ciBhY2NvdW50IHJlY292ZXJhYmxlLgAtAVBheW1lbnQ6IGBDb25maWdEZXBvc2l0QmFzZWAgKyBgRnJpZW5kRGVwb3NpdEZhY3RvcmAgKiAjX29mX2ZyaWVuZHMgYmFsYW5jZUUBd2lsbCBiZSByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGUgcmVjb3ZlcnkgY29uZmlndXJhdGlvbi4gVGhpcyBkZXBvc2l0IGlzIHJldHVybmVkuGluIGZ1bGwgd2hlbiB0aGUgdXNlciBjYWxscyBgcmVtb3ZlX3JlY292ZXJ5YC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczpJAS0gYGZyaWVuZHNgOiBBIGxpc3Qgb2YgZnJpZW5kcyB5b3UgdHJ1c3QgdG8gdm91Y2ggZm9yIHJlY292ZXJ5IGF0dGVtcHRzLiBTaG91bGQgYmWoICBvcmRlcmVkIGFuZCBjb250YWluIG5vIGR1cGxpY2F0ZSB2YWx1ZXMuWQEtIGB0aHJlc2hvbGRgOiBUaGUgbnVtYmVyIG9mIGZyaWVuZHMgdGhhdCBtdXN0IHZvdWNoIGZvciBhIHJlY292ZXJ5IGF0dGVtcHQgYmVmb3JlIHRoZVUBICBhY2NvdW50IGNhbiBiZSByZWNvdmVyZWQuIFNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0aGUgbGlzdCBvZiggIGZyaWVuZHMuTQEtIGBkZWxheV9wZXJpb2RgOiBUaGUgbnVtYmVyIG9mIGJsb2NrcyBhZnRlciBhIHJlY292ZXJ5IGF0dGVtcHQgaXMgaW5pdGlhbGl6ZWQgdGhhdNAgIG5lZWRzIHRvIHBhc3MgYmVmb3JlIHRoZSBhY2NvdW50IGNhbiBiZSByZWNvdmVyZWQuRGluaXRpYXRlX3JlY292ZXJ5BAEcYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAMs6EluaXRpYXRlIHRoZSBwcm9jZXNzIGZvciByZWNvdmVyaW5nIGEgcmVjb3ZlcmFibGUgYWNjb3VudC4AGQFQYXltZW50OiBgUmVjb3ZlcnlEZXBvc2l0YCBiYWxhbmNlIHdpbGwgYmUgcmVzZXJ2ZWQgZm9yIGluaXRpYXRpbmcgdGhlIQFyZWNvdmVyeSBwcm9jZXNzLiBUaGlzIGRlcG9zaXQgd2lsbCBhbHdheXMgYmUgcmVwYXRyaWF0ZWQgdG8gdGhlIGFjY291bnS0dHJ5aW5nIHRvIGJlIHJlY292ZXJlZC4gU2VlIGBjbG9zZV9yZWNvdmVyeWAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6QQEtIGBhY2NvdW50YDogVGhlIGxvc3QgYWNjb3VudCB0aGF0IHlvdSB3YW50IHRvIHJlY292ZXIuIFRoaXMgYWNjb3VudCBuZWVkcyB0byBiZcwgIHJlY292ZXJhYmxlIChpLmUuIGhhdmUgYSByZWNvdmVyeSBjb25maWd1cmF0aW9uKS44dm91Y2hfcmVjb3ZlcnkIARBsb3N0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxyZXNjdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABDAlAUFsbG93IGEgImZyaWVuZCIgb2YgYSByZWNvdmVyYWJsZSBhY2NvdW50IHRvIHZvdWNoIGZvciBhbiBhY3RpdmUgcmVjb3ZlcnlkcHJvY2VzcyBmb3IgdGhhdCBhY2NvdW50LgAlAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBtdXN0IGJlIGEgImZyaWVuZCJwZm9yIHRoZSByZWNvdmVyYWJsZSBhY2NvdW50LgAsUGFyYW1ldGVyczrQLSBgbG9zdGA6IFRoZSBsb3N0IGFjY291bnQgdGhhdCB5b3Ugd2FudCB0byByZWNvdmVyLlkBLSBgcmVzY3VlcmA6IFRoZSBhY2NvdW50IHRyeWluZyB0byByZXNjdWUgdGhlIGxvc3QgYWNjb3VudCB0aGF0IHlvdSB3YW50IHRvIHZvdWNoIGZvci4AIQFUaGUgY29tYmluYXRpb24gb2YgdGhlc2UgdHdvIHBhcmFtZXRlcnMgbXVzdCBwb2ludCB0byBhbiBhY3RpdmUgcmVjb3ZlcnkgcHJvY2Vzcy44Y2xhaW1fcmVjb3ZlcnkEARxhY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABSTwQWxsb3cgYSBzdWNjZXNzZnVsIHJlc2N1ZXIgdG8gY2xhaW0gdGhlaXIgcmVjb3ZlcmVkIGFjY291bnQuACkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIG11c3QgYmUgYSAicmVzY3VlciIZAXdobyBoYXMgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCB0aGUgYWNjb3VudCByZWNvdmVyeSBwcm9jZXNzOiBjb2xsZWN0ZWQtAWB0aHJlc2hvbGRgIG9yIG1vcmUgdm91Y2hlcywgd2FpdGVkIGBkZWxheV9wZXJpb2RgIGJsb2NrcyBzaW5jZSBpbml0aWF0aW9uLgAsUGFyYW1ldGVyczpdAS0gYGFjY291bnRgOiBUaGUgbG9zdCBhY2NvdW50IHRoYXQgeW91IHdhbnQgdG8gY2xhaW0gaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlY292ZXJlZCBieRggIHlvdS44Y2xvc2VfcmVjb3ZlcnkEARxyZXNjdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABiwRAUFzIHRoZSBjb250cm9sbGVyIG9mIGEgcmVjb3ZlcmFibGUgYWNjb3VudCwgY2xvc2UgYW4gYWN0aXZlIHJlY292ZXJ5ZHByb2Nlc3MgZm9yIHlvdXIgYWNjb3VudC4AHQFQYXltZW50OiBCeSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSByZWNvdmVyYWJsZSBhY2NvdW50IHdpbGwgcmVjZWl2ZfR0aGUgcmVjb3ZlcnkgZGVwb3NpdCBgUmVjb3ZlcnlEZXBvc2l0YCBwbGFjZWQgYnkgdGhlIHJlc2N1ZXIuAAEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIG11c3QgYmUgYexyZWNvdmVyYWJsZSBhY2NvdW50IHdpdGggYW4gYWN0aXZlIHJlY292ZXJ5IHByb2Nlc3MgZm9yIGl0LgAsUGFyYW1ldGVyczoNAS0gYHJlc2N1ZXJgOiBUaGUgYWNjb3VudCB0cnlpbmcgdG8gcmVzY3VlIHRoaXMgcmVjb3ZlcmFibGUgYWNjb3VudC48cmVtb3ZlX3JlY292ZXJ5AAcsWQFSZW1vdmUgdGhlIHJlY292ZXJ5IHByb2Nlc3MgZm9yIHlvdXIgYWNjb3VudC4gUmVjb3ZlcmVkIGFjY291bnRzIGFyZSBzdGlsbCBhY2Nlc3NpYmxlLgARAU5PVEU6IFRoZSB1c2VyIG11c3QgbWFrZSBzdXJlIHRvIGNhbGwgYGNsb3NlX3JlY292ZXJ5YCBvbiBhbGwgYWN0aXZlBQFyZWNvdmVyeSBhdHRlbXB0cyBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGVsc2UgaXQgd2lsbCBmYWlsLgAhAVBheW1lbnQ6IEJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB0aGUgcmVjb3ZlcmFibGUgYWNjb3VudCB3aWxsIHVucmVzZXJ2ZZR0aGVpciByZWNvdmVyeSBjb25maWd1cmF0aW9uIGRlcG9zaXQu8ChgQ29uZmlnRGVwb3NpdEJhc2VgICsgYEZyaWVuZERlcG9zaXRGYWN0b3JgICogI19vZl9mcmllbmRzKQABAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBtdXN0IGJlIGHgcmVjb3ZlcmFibGUgYWNjb3VudCAoaS5lLiBoYXMgYSByZWNvdmVyeSBjb25maWd1cmF0aW9uKS5AY2FuY2VsX3JlY292ZXJlZAQBHGFjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAIHNxDYW5jZWwgdGhlIGFiaWxpdHkgdG8gdXNlIGBhc19yZWNvdmVyZWRgIGZvciBgYWNjb3VudGAuABEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHJlZ2lzdGVyZWQgdG/kYmUgYWJsZSB0byBtYWtlIGNhbGxzIG9uIGJlaGFsZiBvZiB0aGUgcmVjb3ZlcmVkIGFjY291bnQuACxQYXJhbWV0ZXJzOhUBLSBgYWNjb3VudGA6IFRoZSByZWNvdmVyZWQgYWNjb3VudCB5b3UgYXJlIGFibGUgdG8gY2FsbCBvbi1iZWhhbGYtb2YuMHBva2VfZGVwb3NpdAQBNG1heWJlX2FjY291bnRRBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAJXBUBUG9rZSBkZXBvc2l0cyBmb3IgcmVjb3ZlcnkgY29uZmlndXJhdGlvbnMgYW5kIC8gb3IgYWN0aXZlIHJlY292ZXJpZXMuAA0BVGhpcyBjYW4gYmUgdXNlZCBieSBhY2NvdW50cyB0byBwb3NzaWJseSBsb3dlciB0aGVpciBsb2NrZWQgYW1vdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOlUBLSBgbWF5YmVfYWNjb3VudGA6IE9wdGlvbmFsIHJlY292ZXJhYmxlIGFjY291bnQgZm9yIHdoaWNoIHlvdSBoYXZlIGFuIGFjdGl2ZSByZWNvdmVyedxhbmQgd2FudCB0byBhZGp1c3QgdGhlIGRlcG9zaXQgZm9yIHRoZSBhY3RpdmUgcmVjb3ZlcnkuAFUBVGhpcyBmdW5jdGlvbiBjaGVja3MgYm90aCByZWNvdmVyeSBjb25maWd1cmF0aW9uIGRlcG9zaXQgYW5kIGFjdGl2ZSByZWNvdmVyeSBkZXBvc2l0czhvZiB0aGUgY2FsbGVyOlEBLSBJZiB0aGUgY2FsbGVyIGhhcyBjcmVhdGVkIGEgcmVjb3ZlcnkgY29uZmlndXJhdGlvbiwgY2hlY2tzIGFuZCBhZGp1c3RzIGl0cyBkZXBvc2l0QQEtIElmIHRoZSBjYWxsZXIgaGFzIGluaXRpYXRlZCBhbnkgYWN0aXZlIHJlY292ZXJpZXMsIGFuZCBwcm92aWRlcyB0aGUgYWNjb3VudCBpbshgbWF5YmVfYWNjb3VudGAsIGNoZWNrcyBhbmQgYWRqdXN0cyB0aG9zZSBkZXBvc2l0cwBdAUlmIGFueSBkZXBvc2l0IGlzIHVwZGF0ZWQsIHRoZSBkaWZmZXJlbmNlIHdpbGwgYmUgcmVzZXJ2ZWQvdW5yZXNlcnZlZCBmcm9tIHRoZSBjYWxsZXIncyBhY2NvdW50LgApAVRoZSB0cmFuc2FjdGlvbiBpcyBtYWRlIGZyZWUgaWYgYW55IGRlcG9zaXQgaXMgdXBkYXRlZCBhbmQgcGFpZCBvdGhlcndpc2UuALxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBhbnkgZGVwb3NpdCBpcyB1cGRhdGVkLikBTXVsdGlwbGUgZXZlbnRzIG1heSBiZSBlbWl0dGVkIGluIGNhc2UgYm90aCB0eXBlcyBvZiBkZXBvc2l0cyBhcmUgdXBkYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu6QQMOHBhbGxldF9zb2NpZXR5GHBhbGxldBBDYWxsCARUAARJAAFYDGJpZAQBFHZhbHVllQEBPEJhbGFuY2VPZjxULCBJPgAAJNxBIHVzZXIgb3V0c2lkZSBvZiB0aGUgc29jaWV0eSBjYW4gbWFrZSBhIGJpZCBmb3IgZW50cnkuAGEBUGF5bWVudDogVGhlIGdyb3VwJ3MgQ2FuZGlkYXRlIERlcG9zaXQgd2lsbCBiZSByZXNlcnZlZCBmb3IgbWFraW5nIGEgYmlkLiBJdCBpcyByZXR1cm5lZOx3aGVuIHRoZSBiaWQgYmVjb21lcyBhIG1lbWJlciwgb3IgaWYgdGhlIGJpZCBjYWxscyBgdW5iaWRgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOlUBLSBgdmFsdWVgOiBBIG9uZSB0aW1lIHBheW1lbnQgdGhlIGJpZCB3b3VsZCBsaWtlIHRvIHJlY2VpdmUgd2hlbiBqb2luaW5nIHRoZSBzb2NpZXR5LhR1bmJpZAABHNRBIGJpZGRlciBjYW4gcmVtb3ZlIHRoZWlyIGJpZCBmb3IgZW50cnkgaW50byBzb2NpZXR5LvxCeSBkb2luZyBzbywgdGhleSB3aWxsIGhhdmUgdGhlaXIgY2FuZGlkYXRlIGRlcG9zaXQgcmV0dXJuZWQgb3KAdGhleSB3aWxsIHVudm91Y2ggdGhlaXIgdm91Y2hlci4A+FBheW1lbnQ6IFRoZSBiaWQgZGVwb3NpdCBpcyB1bnJlc2VydmVkIGlmIHRoZSB1c2VyIG1hZGUgYSBiaWQuAAEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgYmlkZGVyLhR2b3VjaAwBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWWVAQE8QmFsYW5jZU9mPFQsIEk+AAEMdGlwlQEBPEJhbGFuY2VPZjxULCBJPgACREEBQXMgYSBtZW1iZXIsIHZvdWNoIGZvciBzb21lb25lIHRvIGpvaW4gc29jaWV0eSBieSBwbGFjaW5nIGEgYmlkIG9uIHRoZWlyIGJlaGFsZi4AUQFUaGVyZSBpcyBubyBkZXBvc2l0IHJlcXVpcmVkIHRvIHZvdWNoIGZvciBhIG5ldyBiaWQsIGJ1dCBhIG1lbWJlciBjYW4gb25seSB2b3VjaCBmb3JZAW9uZSBiaWQgYXQgYSB0aW1lLiBJZiB0aGUgYmlkIGJlY29tZXMgYSBzdXNwZW5kZWQgY2FuZGlkYXRlIGFuZCB1bHRpbWF0ZWx5IHJlamVjdGVkIGJ5PQF0aGUgc3VzcGVuc2lvbiBqdWRnZW1lbnQgb3JpZ2luLCB0aGUgbWVtYmVyIHdpbGwgYmUgYmFubmVkIGZyb20gdm91Y2hpbmcgYWdhaW4uAFUBQXMgYSB2b3VjaGluZyBtZW1iZXIsIHlvdSBjYW4gY2xhaW0gYSB0aXAgaWYgdGhlIGNhbmRpZGF0ZSBpcyBhY2NlcHRlZC4gVGhpcyB0aXAgd2lsbE0BYmUgcGFpZCBhcyBhIHBvcnRpb24gb2YgdGhlIHJld2FyZCB0aGUgbWVtYmVyIHdpbGwgcmVjZWl2ZSBmb3Igam9pbmluZyB0aGUgc29jaWV0eS4AAQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgYSBtZW1iZXIuACxQYXJhbWV0ZXJzOsgtIGB3aG9gOiBUaGUgdXNlciB3aG8geW91IHdvdWxkIGxpa2UgdG8gdm91Y2ggZm9yLk0BLSBgdmFsdWVgOiBUaGUgdG90YWwgcmV3YXJkIHRvIGJlIHBhaWQgYmV0d2VlbiB5b3UgYW5kIHRoZSBjYW5kaWRhdGUgaWYgdGhleSBiZWNvbWVgYSBtZW1iZXIgaW4gdGhlIHNvY2lldHkuRQEtIGB0aXBgOiBZb3VyIGN1dCBvZiB0aGUgdG90YWwgYHZhbHVlYCBwYXlvdXQgd2hlbiB0aGUgY2FuZGlkYXRlIGlzIGluZHVjdGVkIGludG8RAXRoZSBzb2NpZXR5LiBUaXBzIGxhcmdlciB0aGFuIGB2YWx1ZWAgd2lsbCBiZSBzYXR1cmF0ZWQgdXBvbiBwYXlvdXQuHHVudm91Y2gAAxwpAUFzIGEgdm91Y2hpbmcgbWVtYmVyLCB1bnZvdWNoIGEgYmlkLiBUaGlzIG9ubHkgd29ya3Mgd2hpbGUgdm91Y2hlZCB1c2VyIGlzkG9ubHkgYSBiaWRkZXIgKGFuZCBub3QgYSBjYW5kaWRhdGUpLgAlAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBhIHZvdWNoaW5nIG1lbWJlci4ALFBhcmFtZXRlcnM6KQEtIGBwb3NgOiBQb3NpdGlvbiBpbiB0aGUgYEJpZHNgIHZlY3RvciBvZiB0aGUgYmlkIHdobyBzaG91bGQgYmUgdW52b3VjaGVkLhB2b3RlCAEkY2FuZGlkYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxhcHByb3ZlmQEBEGJvb2wABCCEQXMgYSBtZW1iZXIsIHZvdGUgb24gYSBjYW5kaWRhdGUuAAEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgbWVtYmVyLgAsUGFyYW1ldGVyczoJAS0gYGNhbmRpZGF0ZWA6IFRoZSBjYW5kaWRhdGUgdGhhdCB0aGUgbWVtYmVyIHdvdWxkIGxpa2UgdG8gYmlkIG9uLkUBLSBgYXBwcm92ZWA6IEEgYm9vbGVhbiB3aGljaCBzYXlzIGlmIHRoZSBjYW5kaWRhdGUgc2hvdWxkIGJlIGFwcHJvdmVkIChgdHJ1ZWApIG9yVCAgcmVqZWN0ZWQgKGBmYWxzZWApLjRkZWZlbmRlcl92b3RlBAEcYXBwcm92ZZkBARBib29sAAUciEFzIGEgbWVtYmVyLCB2b3RlIG9uIHRoZSBkZWZlbmRlci4AAQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgYSBtZW1iZXIuACxQYXJhbWV0ZXJzOvAtIGBhcHByb3ZlYDogQSBib29sZWFuIHdoaWNoIHNheXMgaWYgdGhlIGNhbmRpZGF0ZSBzaG91bGQgYmWgYXBwcm92ZWQgKGB0cnVlYCkgb3IgcmVqZWN0ZWQgKGBmYWxzZWApLhhwYXlvdXQABihBAVRyYW5zZmVyIHRoZSBmaXJzdCBtYXR1cmVkIHBheW91dCBmb3IgdGhlIHNlbmRlciBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIHJlY29yZHMuAEEBTk9URTogVGhpcyBleHRyaW5zaWMgbmVlZHMgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGNsYWltIG11bHRpcGxlIG1hdHVyZWQgcGF5b3V0cy4AHQFQYXltZW50OiBUaGUgbWVtYmVyIHdpbGwgcmVjZWl2ZSBhIHBheW1lbnQgZXF1YWwgdG8gdGhlaXIgZmlyc3QgbWF0dXJlZHRwYXlvdXQgdG8gdGhlaXIgZnJlZSBiYWxhbmNlLgARAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBhIG1lbWJlciB3aXRoSHBheW91dHMgcmVtYWluaW5nLix3YWl2ZV9yZXBheQQBGGFtb3VudJUBATxCYWxhbmNlT2Y8VCwgST4ABwhNAVJlcGF5IHRoZSBwYXltZW50IHByZXZpb3VzbHkgZ2l2ZW4gdG8gdGhlIG1lbWJlciB3aXRoIHRoZSBzaWduZWQgb3JpZ2luLCByZW1vdmUgYW555HBlbmRpbmcgcGF5bWVudHMsIGFuZCBlbGV2YXRlIHRoZW0gZnJvbSByYW5rIDAgdG8gcmFuayAxLjRmb3VuZF9zb2NpZXR5GAEcZm91bmRlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWF4X21lbWJlcnM4AQx1MzIAAShtYXhfaW50YWtlOAEMdTMyAAEsbWF4X3N0cmlrZXM4AQx1MzIAAURjYW5kaWRhdGVfZGVwb3NpdJUBATxCYWxhbmNlT2Y8VCwgST4AARRydWxlcxgBHFZlYzx1OD4ACERIRm91bmQgdGhlIHNvY2lldHkuAOxUaGlzIGlzIGRvbmUgYXMgYSBkaXNjcmV0ZSBhY3Rpb24gaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHRoZRUBcGFsbGV0IHRvIGJlIGluY2x1ZGVkIGludG8gYSBydW5uaW5nIGNoYWluIGFuZCBjYW4gb25seSBiZSBkb25lIG9uY2UuABkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgZnJvbSB0aGUgX0ZvdW5kZXJTZXRPcmlnaW5fLgAsUGFyYW1ldGVyczoVAS0gYGZvdW5kZXJgIC0gVGhlIGZpcnN0IG1lbWJlciBhbmQgaGVhZCBvZiB0aGUgbmV3bHkgZm91bmRlZCBzb2NpZXR5LhEBLSBgbWF4X21lbWJlcnNgIC0gVGhlIGluaXRpYWwgbWF4IG51bWJlciBvZiBtZW1iZXJzIGZvciB0aGUgc29jaWV0eS4RAS0gYG1heF9pbnRha2VgIC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgcGVyIGludGFrZSBwZXJpb2QuSQEtIGBtYXhfc3RyaWtlc2A6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdHJpa2VzIGEgbWVtYmVyIG1heSBnZXQgYmVmb3JlIHRoZXkgYmVjb21l2CAgc3VzcGVuZGVkIGFuZCBtYXkgb25seSBiZSByZWluc3RhdGVkIGJ5IHRoZSBmb3VuZGVyLlkBLSBgY2FuZGlkYXRlX2RlcG9zaXRgOiBUaGUgZGVwb3NpdCByZXF1aXJlZCB0byBtYWtlIGEgYmlkIGZvciBtZW1iZXJzaGlwIG9mIHRoZSBncm91cC7wLSBgcnVsZXNgIC0gVGhlIHJ1bGVzIG9mIHRoaXMgc29jaWV0eSBjb25jZXJuaW5nIG1lbWJlcnNoaXAuAEBDb21wbGV4aXR5OiBPKDEpIGRpc3NvbHZlAAkUsERpc3NvbHZlIHRoZSBzb2NpZXR5IGFuZCByZW1vdmUgYWxsIG1lbWJlcnMuAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGJvdGhVAXRoZSBgRm91bmRlcmAgYW5kIHRoZSBgSGVhZGAuIFRoaXMgaW1wbGllcyB0aGF0IGl0IG1heSBvbmx5IGJlIGRvbmUgd2hlbiB0aGVyZSBpcyBvbmUcbWVtYmVyLlhqdWRnZV9zdXNwZW5kZWRfbWVtYmVyCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmb3JnaXZlmQEBEGJvb2wACjgpAUFsbG93IHN1c3BlbnNpb24ganVkZ2VtZW50IG9yaWdpbiB0byBtYWtlIGp1ZGdlbWVudCBvbiBhIHN1c3BlbmRlZCBtZW1iZXIuAFUBSWYgYSBzdXNwZW5kZWQgbWVtYmVyIGlzIGZvcmdpdmVuLCB3ZSBzaW1wbHkgYWRkIHRoZW0gYmFjayBhcyBhIG1lbWJlciwgbm90IGFmZmVjdGluZ8hhbnkgb2YgdGhlIGV4aXN0aW5nIHN0b3JhZ2UgaXRlbXMgZm9yIHRoYXQgbWVtYmVyLgBFAUlmIGEgc3VzcGVuZGVkIG1lbWJlciBpcyByZWplY3RlZCwgcmVtb3ZlIGFsbCBhc3NvY2lhdGVkIHN0b3JhZ2UgaXRlbXMsIGluY2x1ZGluZ/x0aGVpciBwYXlvdXRzLCBhbmQgcmVtb3ZlIGFueSB2b3VjaGVkIGJpZHMgdGhleSBjdXJyZW50bHkgaGF2ZS4ACQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQgZnJvbSB0aGUgRm91bmRlci4ALFBhcmFtZXRlcnM6sC0gYHdob2AgLSBUaGUgc3VzcGVuZGVkIG1lbWJlciB0byBiZSBqdWRnZWQuVQEtIGBmb3JnaXZlYCAtIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgd2hldGhlciB0aGUgc3VzcGVuc2lvbiBqdWRnZW1lbnQgb3JpZ2luIGZvcmdpdmVzzCAgKGB0cnVlYCkgb3IgcmVqZWN0cyAoYGZhbHNlYCkgYSBzdXNwZW5kZWQgbWVtYmVyLjhzZXRfcGFyYW1ldGVycxABLG1heF9tZW1iZXJzOAEMdTMyAAEobWF4X2ludGFrZTgBDHUzMgABLG1heF9zdHJpa2VzOAEMdTMyAAFEY2FuZGlkYXRlX2RlcG9zaXSVAQE8QmFsYW5jZU9mPFQsIEk+AAswYQFDaGFuZ2UgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgaW4gc29jaWV0eSBhbmQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5ldyBjYW5kaWRhdGVzaGluIGEgc2luZ2xlIGludGFrZSBwZXJpb2QuAAEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkIGJ5IHRoZSBGb3VuZGVyLgAsUGFyYW1ldGVyczpVAS0gYG1heF9tZW1iZXJzYCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIGZvciB0aGUgc29jaWV0eS4gVGhpcyBtdXN0IGJlIG5vIGxlc3OUICB0aGFuIHRoZSBjdXJyZW50IG51bWJlciBvZiBtZW1iZXJzLhEBLSBgbWF4X2ludGFrZWAgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyBwZXIgaW50YWtlIHBlcmlvZC5JAS0gYG1heF9zdHJpa2VzYDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0cmlrZXMgYSBtZW1iZXIgbWF5IGdldCBiZWZvcmUgdGhleSBiZWNvbWXYICBzdXNwZW5kZWQgYW5kIG1heSBvbmx5IGJlIHJlaW5zdGF0ZWQgYnkgdGhlIGZvdW5kZXIuWQEtIGBjYW5kaWRhdGVfZGVwb3NpdGA6IFRoZSBkZXBvc2l0IHJlcXVpcmVkIHRvIG1ha2UgYSBiaWQgZm9yIG1lbWJlcnNoaXAgb2YgdGhlIGdyb3VwLjhwdW5pc2hfc2tlcHRpYwAMCFUBUHVuaXNoIHRoZSBza2VwdGljIHdpdGggYSBzdHJpa2UgaWYgdGhleSBkaWQgbm90IHZvdGUgb24gYSBjYW5kaWRhdGUuIENhbGxhYmxlIGJ5IHRoZShjYW5kaWRhdGUuQGNsYWltX21lbWJlcnNoaXAADQgNAVRyYW5zZm9ybSBhbiBhcHByb3ZlZCBjYW5kaWRhdGUgaW50byBhIG1lbWJlci4gQ2FsbGFibGUgb25seSBieSB0aGX4dGhlIGNhbmRpZGF0ZSwgYW5kIG9ubHkgYWZ0ZXIgdGhlIHBlcmlvZCBmb3Igdm90aW5nIGhhcyBlbmRlZC5EYmVzdG93X21lbWJlcnNoaXAEASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQADgxhAVRyYW5zZm9ybSBhbiBhcHByb3ZlZCBjYW5kaWRhdGUgaW50byBhIG1lbWJlci4gQ2FsbGFibGUgb25seSBieSB0aGUgU2lnbmVkIG9yaWdpbiBvZiB0aGVZAUZvdW5kZXIsIG9ubHkgYWZ0ZXIgdGhlIHBlcmlvZCBmb3Igdm90aW5nIGhhcyBlbmRlZCBhbmQgb25seSB3aGVuIHRoZSBjYW5kaWRhdGUgaXMgbm90RGNsZWFybHkgcmVqZWN0ZWQuOGtpY2tfY2FuZGlkYXRlBAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAA8UXQFSZW1vdmUgdGhlIGNhbmRpZGF0ZSdzIGFwcGxpY2F0aW9uIGZyb20gdGhlIHNvY2lldHkuIENhbGxhYmxlIG9ubHkgYnkgdGhlIFNpZ25lZCBvcmlnaW5VAW9mIHRoZSBGb3VuZGVyLCBvbmx5IGFmdGVyIHRoZSBwZXJpb2QgZm9yIHZvdGluZyBoYXMgZW5kZWQsIGFuZCBvbmx5IHdoZW4gdGhleSBkbyBub3RYaGF2ZSBhIGNsZWFyIGFwcHJvdmFsLgC4QW55IGJpZCBkZXBvc2l0IGlzIGxvc3QgYW5kIHZvdWNoZXIgaXMgYmFubmVkLkByZXNpZ25fY2FuZGlkYWN5ABAMUQFSZW1vdmUgdGhlIGNhbmRpZGF0ZSdzIGFwcGxpY2F0aW9uIGZyb20gdGhlIHNvY2lldHkuIENhbGxhYmxlIG9ubHkgYnkgdGhlIGNhbmRpZGF0ZS4AuEFueSBiaWQgZGVwb3NpdCBpcyBsb3N0IGFuZCB2b3VjaGVyIGlzIGJhbm5lZC44ZHJvcF9jYW5kaWRhdGUEASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQAERQtAVJlbW92ZSBhIGBjYW5kaWRhdGVgJ3MgZmFpbGVkIGFwcGxpY2F0aW9uIGZyb20gdGhlIHNvY2lldHkuIENhbGxhYmxlIGJ5IGFueRkBc2lnbmVkIG9yaWdpbiBidXQgb25seSBhdCB0aGUgZW5kIG9mIHRoZSBzdWJzZXF1ZW50IHJvdW5kIGFuZCBvbmx5IGZvcsBhIGNhbmRpZGF0ZSB3aXRoIG1vcmUgcmVqZWN0aW9ucyB0aGFuIGFwcHJvdmFscy4AyFRoZSBiaWQgZGVwb3NpdCBpcyBsb3N0IGFuZCB0aGUgdm91Y2hlciBpcyBiYW5uZWQuRGNsZWFudXBfY2FuZGlkYWN5CAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAEMbWF4OAEMdTMyABIM5FJlbW92ZSB1cCB0byBgbWF4YCBzdGFsZSB2b3RlcyBmb3IgdGhlIGdpdmVuIGBjYW5kaWRhdGVgLgBZAU1heSBiZSBjYWxsZWQgYnkgYW55IFNpZ25lZCBvcmlnaW4sIGJ1dCBvbmx5IGFmdGVyIHRoZSBjYW5kaWRhdGUncyBjYW5kaWRhY3kgaXMgZW5kZWQuRGNsZWFudXBfY2hhbGxlbmdlCAE8Y2hhbGxlbmdlX3JvdW5kOAEoUm91bmRJbmRleAABDG1heDgBDHUzMgATDD0BUmVtb3ZlIHVwIHRvIGBtYXhgIHN0YWxlIHZvdGVzIGZvciB0aGUgZGVmZW5kZXIgaW4gdGhlIGdpdmVuIGBjaGFsbGVuZ2Vfcm91bmRgLgBBAU1heSBiZSBjYWxsZWQgYnkgYW55IFNpZ25lZCBvcmlnaW4sIGJ1dCBvbmx5IGFmdGVyIHRoZSBjaGFsbGVuZ2Ugcm91bmQgaXMgZW5kZWQuMHBva2VfZGVwb3NpdAAUHJxQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIHdoZW4gYmlkZGluZy4AKQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgbXVzdCBiZSB0aGUgYmlkZGVyLgBVAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGlzIGNoYW5nZWQgYWZ0ZXIgcG9raW5nL3JlY29uc2lkZXJhdGlvbi4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuLGtpY2tfbWVtYmVyBAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFRxJAUtpY2sgYSBtZW1iZXIgZnJvbSB0aGUgc29jaWV0eS4gQ2FsbGFibGUgb25seSBieSB0aGUgU2lnbmVkIG9yaWdpbiBvZiB0aGUgRm91bmRlci4ASQFUaGUgbWVtYmVyIGlzIGZ1bGx5IHJlbW92ZWQgKG5vdCBzdXNwZW5kZWQpLiBBbGwgdW5jbGFpbWVkIHBheW91dHMgYXJlIHNsYXNoZWQgYW5kcHJldHVybmVkIHRvIHRoZSBzb2NpZXR5IHBvdC4ALFBhcmFtZXRlcnM6iC0gYHdob2A6IFRoZSBtZW1iZXIgdG8gYmUgcmVtb3ZlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu7QQMNHBhbGxldF9yZXZpdmUYcGFsbGV0EENhbGwEBFQAATQwZXRoX3RyYW5zYWN0BAEccGF5bG9hZBgBHFZlYzx1OD4AADAtAUEgcmF3IEVWTSB0cmFuc2FjdGlvbiwgdHlwaWNhbGx5IGRpc3BhdGNoZWQgYnkgYW4gRXRoZXJldW0gSlNPTi1SUEMgc2VydmVyLgAwIyBQYXJhbWV0ZXJzAOwqIGBwYXlsb2FkYDogVGhlIGVuY29kZWQgW2BjcmF0ZTo6ZXZtOjpUcmFuc2FjdGlvblNpZ25lZGBdLgAYIyBOb3RlAFEBVGhpcyBjYWxsIGNhbm5vdCBiZSBkaXNwYXRjaGVkIGRpcmVjdGx5OyBhdHRlbXB0aW5nIHRvIGRvIHNvIHdpbGwgcmVzdWx0IGluIGEgZmFpbGVkUQF0cmFuc2FjdGlvbi4gSXQgc2VydmVzIGFzIGEgd3JhcHBlciBmb3IgYW4gRXRoZXJldW0gdHJhbnNhY3Rpb24uIFdoZW4gc3VibWl0dGVkLCB0aGVZAXJ1bnRpbWUgY29udmVydHMgaXQgaW50byBhIFtgc3BfcnVudGltZTo6Z2VuZXJpYzo6Q2hlY2tlZEV4dHJpbnNpY2BdIGJ5IHJlY292ZXJpbmcgdGhlmHNpZ25lciBhbmQgdmFsaWRhdGluZyB0aGUgdHJhbnNhY3Rpb24uEGNhbGwUARBkZXN08QQBEEgxNjAAARR2YWx1ZZEBATBCYWxhbmNlT2Y8VD4AATB3ZWlnaHRfbGltaXR5AQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0kQEBMEJhbGFuY2VPZjxUPgABEGRhdGEYARxWZWM8dTg+AAFABQFNYWtlcyBhIGNhbGwgdG8gYW4gYWNjb3VudCwgb3B0aW9uYWxseSB0cmFuc2ZlcnJpbmcgc29tZSBiYWxhbmNlLgAwIyBQYXJhbWV0ZXJzAKgqIGBkZXN0YDogQWRkcmVzcyBvZiB0aGUgY29udHJhY3QgdG8gY2FsbC78KiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byBgZGVzdGAuLQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgd2VpZ2h0IGxpbWl0IGVuZm9yY2VkIHdoZW4gZXhlY3V0aW5nIHRoZSBjb25zdHJ1Y3Rvci5VASogYHN0b3JhZ2VfZGVwb3NpdF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiBiYWxhbmNlIHRoYXQgY2FuIGJlIGNoYXJnZWQgZnJvbSB0aGWkICBjYWxsZXIgdG8gcGF5IGZvciB0aGUgc3RvcmFnZSBjb25zdW1lZC7EKiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0LgAlASogSWYgdGhlIGFjY291bnQgaXMgYSBzbWFydC1jb250cmFjdCBhY2NvdW50LCB0aGUgYXNzb2NpYXRlZCBjb2RlIHdpbGwgYmWsZXhlY3V0ZWQgYW5kIGFueSB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkLhUBKiBJZiB0aGUgYWNjb3VudCBpcyBhIHJlZ3VsYXIgYWNjb3VudCwgYW55IHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQuRQEqIElmIG5vIGFjY291bnQgZXhpc3RzIGFuZCB0aGUgY2FsbCB2YWx1ZSBpcyBub3QgbGVzcyB0aGFuIGBleGlzdGVudGlhbF9kZXBvc2l0YCwRAWEgcmVndWxhciBhY2NvdW50IHdpbGwgYmUgY3JlYXRlZCBhbmQgYW55IHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQuLGluc3RhbnRpYXRlGAEUdmFsdWWRAQEwQmFsYW5jZU9mPFQ+AAEwd2VpZ2h0X2xpbWl0eQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdJEBATBCYWxhbmNlT2Y8VD4AASRjb2RlX2hhc2hAATRzcF9jb3JlOjpIMjU2AAEQZGF0YRgBHFZlYzx1OD4AARBzYWx09QQBQE9wdGlvbjxbdTg7IDMyXT4AAhT0SW5zdGFudGlhdGVzIGEgY29udHJhY3QgZnJvbSBhIHByZXZpb3VzbHkgZGVwbG95ZWQgdm0gYmluYXJ5LgA1AVRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF0gYnV0IHdpdGhvdXQgdGhlQQFjb2RlIGRlcGxveW1lbnQgc3RlcC4gSW5zdGVhZCwgdGhlIGBjb2RlX2hhc2hgIG9mIGFuIG9uLWNoYWluIGRlcGxveWVkIHZtIGJpbmFyeURtdXN0IGJlIHN1cHBsaWVkLlRpbnN0YW50aWF0ZV93aXRoX2NvZGUYARR2YWx1ZZEBATBCYWxhbmNlT2Y8VD4AATB3ZWlnaHRfbGltaXR5AQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0kQEBMEJhbGFuY2VPZjxUPgABEGNvZGUYARxWZWM8dTg+AAEQZGF0YRgBHFZlYzx1OD4AARBzYWx09QQBQE9wdGlvbjxbdTg7IDMyXT4AA2wxAUluc3RhbnRpYXRlcyBhIG5ldyBjb250cmFjdCBmcm9tIHRoZSBzdXBwbGllZCBgY29kZWAgb3B0aW9uYWxseSB0cmFuc2ZlcnJpbmc0c29tZSBiYWxhbmNlLgAhAVRoaXMgZGlzcGF0Y2hhYmxlIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgY2FsbGluZyBbYFNlbGY6OnVwbG9hZF9jb2RlYF0gKz0BW2BTZWxmOjppbnN0YW50aWF0ZWBdLiBCdW5kbGluZyB0aGVtIHRvZ2V0aGVyIHByb3ZpZGVzIGVmZmljaWVuY3kgZ2FpbnMuIFBsZWFzZdhhbHNvIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgU2VsZjo6dXBsb2FkX2NvZGVgXS4AMCMgUGFyYW1ldGVycwBNASogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY29udHJhY3QuLQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgd2VpZ2h0IGxpbWl0IGVuZm9yY2VkIHdoZW4gZXhlY3V0aW5nIHRoZSBjb25zdHJ1Y3Rvci5VASogYHN0b3JhZ2VfZGVwb3NpdF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiBiYWxhbmNlIHRoYXQgY2FuIGJlIGNoYXJnZWQvcmVzZXJ2ZWTIICBmcm9tIHRoZSBjYWxsZXIgdG8gcGF5IGZvciB0aGUgc3RvcmFnZSBjb25zdW1lZC7MKiBgY29kZWA6IFRoZSBjb250cmFjdCBjb2RlIHRvIGRlcGxveSBpbiByYXcgYnl0ZXMu9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci49ASogYHNhbHRgOiBVc2VkIGZvciB0aGUgYWRkcmVzcyBkZXJpdmF0aW9uLiBJZiBgU29tZWAgaXMgc3VwcGxpZWQgdGhlbiBgQ1JFQVRFMmDUCXNlbWFudGljcyBhcmUgdXNlZC4gSWYgYE5vbmVgIHRoZW4gYENSQVRFMWAgaXMgdXNlZC4AAJRJbnN0YW50aWF0aW9uIGlzIGV4ZWN1dGVkIGFzIGZvbGxvd3M6ADkBLSBUaGUgc3VwcGxpZWQgYGNvZGVgIGlzIGRlcGxveWVkLCBhbmQgYSBgY29kZV9oYXNoYCBpcyBjcmVhdGVkIGZvciB0aGF0IGNvZGUuWQEtIElmIHRoZSBgY29kZV9oYXNoYCBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgY2hhaW4gdGhlIHVuZGVybHlpbmcgYGNvZGVgIHdpbGwgYmUgc2hhcmVkLkkBLSBUaGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyBjb21wdXRlZCBiYXNlZCBvbiB0aGUgc2VuZGVyLCBjb2RlX2hhc2ggYW5kIHRoZSBzYWx0LgEBLSBUaGUgc21hcnQtY29udHJhY3QgYWNjb3VudCBpcyBjcmVhdGVkIGF0IHRoZSBjb21wdXRlZCBhZGRyZXNzLsAtIFRoZSBgdmFsdWVgIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBuZXcgYWNjb3VudC5BAS0gVGhlIGBkZXBsb3lgIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBuZXdseS1jcmVhdGVkIGFjY291bnQuZGV0aF9pbnN0YW50aWF0ZV93aXRoX2NvZGUgARR2YWx1ZfkEARBVMjU2AAEwd2VpZ2h0X2xpbWl0eQEBGFdlaWdodAABNGV0aF9nYXNfbGltaXT5BAEQVTI1NgABEGNvZGUYARxWZWM8dTg+AAEQZGF0YRgBHFZlYzx1OD4AAUx0cmFuc2FjdGlvbl9lbmNvZGVkGAEcVmVjPHU4PgABTGVmZmVjdGl2ZV9nYXNfcHJpY2X5BAEQVTI1NgABLGVuY29kZWRfbGVuOAEMdTMyAApUPQFTYW1lIGFzIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF0sIGJ1dCBpbnRlbmRlZCB0byBiZSBkaXNwYXRjaGVkICoqb25seSoq6GJ5IGFuIEVWTSB0cmFuc2FjdGlvbiB0aHJvdWdoIHRoZSBFVk0gY29tcGF0aWJpbGl0eSBsYXllci4AMCMgUGFyYW1ldGVycwBNASogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY29udHJhY3QuVQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgZ2FzIGxpbWl0IHVzZWQgdG8gZGVyaXZlIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZm9yIHRyYW5zYWN0aW9uJCAgcGF5bWVudF0BKiBgZXRoX2dhc19saW1pdGA6IFRoZSBFdGhlcmV1bSBnYXMgbGltaXQgZ292ZXJuaW5nIHRoZSByZXNvdXJjZSB1c2FnZSBvZiB0aGUgZXhlY3V0aW9uzCogYGNvZGVgOiBUaGUgY29udHJhY3QgY29kZSB0byBkZXBsb3kgaW4gcmF3IGJ5dGVzLvQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QgY29uc3RydWN0b3IuNQEqIGB0cmFuc2FjdGlvbl9lbmNvZGVkYDogVGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgc2lnbmVkIEV0aGVyZXVtIHRyYW5zYWN0aW9uLF0BICByZXByZXNlbnRlZCBhcyBbY3JhdGU6OmV2bTo6VHJhbnNhY3Rpb25TaWduZWRdLCBwcm92aWRlZCBieSB0aGUgRXRoZXJldW0gd2FsbGV0LiBUaGlz1CAgaXMgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHJvb3QuxCogZWZmZWN0aXZlX2dhc19wcmljZTogdGhlIHByaWNlIG9mIGEgdW5pdCBvZiBnYXMFASogZW5jb2RlZCBsZW46IHRoZSBieXRlIGNvZGUgc2l6ZSBvZiB0aGUgYGV0aF90cmFuc2FjdGAgZXh0cmluc2ljADkBQ2FsbGluZyB0aGlzIGRpc3BhdGNoYWJsZSBlbnN1cmVzIHRoYXQgdGhlIG9yaWdpbidzIG5vbmNlIGlzIGJ1bXBlZCBvbmx5IG9uY2UsYQF2aWEgdGhlIGBDaGVja05vbmNlYCB0cmFuc2FjdGlvbiBleHRlbnNpb24uIEluIGNvbnRyYXN0LCBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdTQFhbHNvIGJ1bXBzIHRoZSBub25jZSBhZnRlciBjb250cmFjdCBpbnN0YW50aWF0aW9uLCBzaW5jZSBpdCBtYXkgYmUgaW52b2tlZCBtdWx0aXBsZZh0aW1lcyB3aXRoaW4gYSBiYXRjaCBjYWxsIHRyYW5zYWN0aW9uLiBldGhfY2FsbCABEGRlc3TxBAEQSDE2MAABFHZhbHVl+QQBEFUyNTYAATB3ZWlnaHRfbGltaXR5AQEYV2VpZ2h0AAE0ZXRoX2dhc19saW1pdPkEARBVMjU2AAEQZGF0YRgBHFZlYzx1OD4AAUx0cmFuc2FjdGlvbl9lbmNvZGVkGAEcVmVjPHU4PgABTGVmZmVjdGl2ZV9nYXNfcHJpY2X5BAEQVTI1NgABLGVuY29kZWRfbGVuOAEMdTMyAAtA+FNhbWUgYXMgW2BTZWxmOjpjYWxsYF0sIGJ1dCBpbnRlbmRlZCB0byBiZSBkaXNwYXRjaGVkICoqb25seSoq6GJ5IGFuIEVWTSB0cmFuc2FjdGlvbiB0aHJvdWdoIHRoZSBFVk0gY29tcGF0aWJpbGl0eSBsYXllci4AMCMgUGFyYW1ldGVycwDoKiBgZGVzdGA6IFRoZSBFdGhlcmV1bSBhZGRyZXNzIG9mIHRoZSBhY2NvdW50IHRvIGJlIGNhbGxlZE0BKiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb250cmFjdC5VASogYHdlaWdodF9saW1pdGA6IFRoZSBnYXMgbGltaXQgdXNlZCB0byBkZXJpdmUgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmb3IgdHJhbnNhY3Rpb24kICBwYXltZW50XQEqIGBldGhfZ2FzX2xpbWl0YDogVGhlIEV0aGVyZXVtIGdhcyBsaW1pdCBnb3Zlcm5pbmcgdGhlIHJlc291cmNlIHVzYWdlIG9mIHRoZSBleGVjdXRpb270KiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0IGNvbnN0cnVjdG9yLjUBKiBgdHJhbnNhY3Rpb25fZW5jb2RlZGA6IFRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIHNpZ25lZCBFdGhlcmV1bSB0cmFuc2FjdGlvbixdASAgcmVwcmVzZW50ZWQgYXMgW2NyYXRlOjpldm06OlRyYW5zYWN0aW9uU2lnbmVkXSwgcHJvdmlkZWQgYnkgdGhlIEV0aGVyZXVtIHdhbGxldC4gVGhpc9QgIGlzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiByb290LsQqIGVmZmVjdGl2ZV9nYXNfcHJpY2U6IHRoZSBwcmljZSBvZiBhIHVuaXQgb2YgZ2FzBQEqIGVuY29kZWQgbGVuOiB0aGUgYnl0ZSBjb2RlIHNpemUgb2YgdGhlIGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpY0hldGhfc3Vic3RyYXRlX2NhbGwIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABTHRyYW5zYWN0aW9uX2VuY29kZWQYARxWZWM8dTg+AAwo/EV4ZWN1dGVzIGEgU3Vic3RyYXRlIHJ1bnRpbWUgY2FsbCBmcm9tIGFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uLgBFAVRoaXMgZGlzcGF0Y2hhYmxlIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCAqKm9ubHkqKiB0aHJvdWdoIHRoZSBFVk0gY29tcGF0aWJpbGl0eRkBbGF5ZXIuIFRoZSBwcm92aWRlZCBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB1c2luZyBgUmF3T3JpZ2luOjpTaWduZWRgLgAwIyBQYXJhbWV0ZXJzAOQqIGBvcmlnaW5gOiBNdXN0IGJlIGFuIFtgT3JpZ2luOjpFdGhUcmFuc2FjdGlvbmBdIG9yaWdpbi7AKiBgY2FsbGA6IFRoZSBTdWJzdHJhdGUgcnVudGltZSBjYWxsIHRvIGV4ZWN1dGUuGQEqIGB0cmFuc2FjdGlvbl9lbmNvZGVkYDogVGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgRXRoZXJldW0gdHJhbnNhY3Rpb24sLHVwbG9hZF9jb2RlCAEQY29kZRgBHFZlYzx1OD4AAVRzdG9yYWdlX2RlcG9zaXRfbGltaXSRAQEwQmFsYW5jZU9mPFQ+AAQ47FVwbG9hZCBuZXcgYGNvZGVgIHdpdGhvdXQgaW5zdGFudGlhdGluZyBhIGNvbnRyYWN0IGZyb20gaXQuACEBSWYgdGhlIGNvZGUgZG9lcyBub3QgYWxyZWFkeSBleGlzdCBhIGRlcG9zaXQgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgY2FsbGVyDQFUaGUgc2l6ZSBvZiB0aGUgcmVzZXJ2ZSBkZXBlbmRzIG9uIHRoZSBzaXplIG9mIHRoZSBzdXBwbGllZCBgY29kZWAuABgjIE5vdGUAWQFBbnlvbmUgY2FuIGluc3RhbnRpYXRlIGEgY29udHJhY3QgZnJvbSBhbnkgdXBsb2FkZWQgY29kZSBhbmQgdGh1cyBwcmV2ZW50IGl0cyByZW1vdmFsLkEBVG8gYXZvaWQgdGhpcyBzaXR1YXRpb24gYSBjb25zdHJ1Y3RvciBjb3VsZCBlbXBsb3kgYWNjZXNzIGNvbnRyb2wgc28gdGhhdCBpdCBjYW45AW9ubHkgYmUgaW5zdGFudGlhdGVkIGJ5IHBlcm1pc3Npb25lZCBlbnRpdGllcy4gVGhlIHNhbWUgaXMgdHJ1ZSB3aGVuIHVwbG9hZGluZ6B0aHJvdWdoIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF0uAEUBSWYgdGhlIHJlZmNvdW50IG9mIHRoZSBjb2RlIHJlYWNoZXMgemVybyBhZnRlciB0ZXJtaW5hdGluZyB0aGUgbGFzdCBjb250cmFjdCB0aGF09HJlZmVyZW5jZXMgdGhpcyBjb2RlLCB0aGUgY29kZSB3aWxsIGJlIHJlbW92ZWQgYXV0b21hdGljYWxseS4scmVtb3ZlX2NvZGUEASRjb2RlX2hhc2hAATRzcF9jb3JlOjpIMjU2AAUQNQFSZW1vdmUgdGhlIGNvZGUgc3RvcmVkIHVuZGVyIGBjb2RlX2hhc2hgIGFuZCByZWZ1bmQgdGhlIGRlcG9zaXQgdG8gaXRzIG93bmVyLgBFAUEgY29kZSBjYW4gb25seSBiZSByZW1vdmVkIGJ5IGl0cyBvcmlnaW5hbCB1cGxvYWRlciAoaXRzIG93bmVyKSBhbmQgb25seSBpZiBpdCBpc2Rub3QgdXNlZCBieSBhbnkgY29udHJhY3QuIHNldF9jb2RlCAEQZGVzdPEEARBIMTYwAAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgAGKAkBUHJpdmlsZWdlZCBmdW5jdGlvbiB0aGF0IGNoYW5nZXMgdGhlIGNvZGUgb2YgYW4gZXhpc3RpbmcgY29udHJhY3QuAEUBVGhpcyB0YWtlcyBjYXJlIG9mIHVwZGF0aW5nIHJlZmNvdW50cyBhbmQgYWxsIG90aGVyIG5lY2Vzc2FyeSBvcGVyYXRpb25zLiBSZXR1cm5z6GFuIGVycm9yIGlmIGVpdGhlciB0aGUgYGNvZGVfaGFzaGAgb3IgYGRlc3RgIGRvIG5vdCBleGlzdC4AGCMgTm90ZQAxAVRoaXMgZG9lcyAqKm5vdCoqIGNoYW5nZSB0aGUgYWRkcmVzcyBvZiB0aGUgY29udHJhY3QgaW4gcXVlc3Rpb24uIFRoaXMgbWVhbnM9AXRoYXQgdGhlIGNvbnRyYWN0IGFkZHJlc3MgaXMgbm8gbG9uZ2VyIGRlcml2ZWQgZnJvbSBpdHMgY29kZSBoYXNoIGFmdGVyIGNhbGxpbmdIdGhpcyBkaXNwYXRjaGFibGUuLG1hcF9hY2NvdW50AAcQQQFSZWdpc3RlciB0aGUgY2FsbGVycyBhY2NvdW50IGlkIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gY29udHJhY3QgaW50ZXJhY3Rpb25zLgBdAVRoaXMgd2lsbCBlcnJvciBpZiB0aGUgb3JpZ2luIGlzIGFscmVhZHkgbWFwcGVkIG9yIGlzIGEgZXRoIG5hdGl2ZSBgQWRkcmVzczIwYC4gSXQgd2lsbB0BdGFrZSBhIGRlcG9zaXQgdGhhdCBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBbYFNlbGY6OnVubWFwX2FjY291bnRgXS40dW5tYXBfYWNjb3VudAAIEPxVbnJlZ2lzdGVyIHRoZSBjYWxsZXJzIGFjY291bnQgaWQgaW4gb3JkZXIgdG8gZnJlZSB0aGUgZGVwb3NpdC4AQQFUaGVyZSBpcyBubyByZWFzb24gdG8gZXZlciBjYWxsIHRoaXMgZnVuY3Rpb24gb3RoZXIgdGhhbiBmcmVlaW5nIHVwIHRoZSBkZXBvc2l0LvhUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gdGhlIGFjY291bnQgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLnBkaXNwYXRjaF9hc19mYWxsYmFja19hY2NvdW50BAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ACRQdAURpc3BhdGNoIGFuIGBjYWxsYCB3aXRoIHRoZSBvcmlnaW4gc2V0IHRvIHRoZSBjYWxsZXJzIGZhbGxiYWNrIGFkZHJlc3MuAGEBRXZlcnkgYEFjY291bnRJZDMyYCBjYW4gY29udHJvbCBpdHMgY29ycmVzcG9uZGluZyBmYWxsYmFjayBhY2NvdW50LiBUaGUgZmFsbGJhY2sgYWNjb3VudEEBaXMgdGhlIGBBY2NvdW50SWQyMGAgd2l0aCB0aGUgbGFzdCAxMiBieXRlcyBzZXQgdG8gYDB4RUVgLiBUaGlzIGlzIGVzc2VudGlhbGx5IGFVAXJlY292ZXJ5IGZ1bmN0aW9uIGluIGNhc2UgYW4gYEFjY291bnRJZDIwYCB3YXMgdXNlZCB3aXRob3V0IGNyZWF0aW5nIGEgbWFwcGluZyBmaXJzdC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu8QQIPHByaW1pdGl2ZV90eXBlcxBIMTYwAAAEABwBIFt1ODsgMjBdAAD1BAQYT3B0aW9uBARUAQgBCBBOb25lAAAAEFNvbWUEAAgAAAEAAPkECDxwcmltaXRpdmVfdHlwZXMQVTI1NgAABAD9BAEgW3U2NDsgNF0AAP0EAAADBAAAACgAAQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQQQ2FsbAQEVAABGFhjb250cm9sX2F1dG9fbWlncmF0aW9uBAEwbWF5YmVfY29uZmlnBQUBXE9wdGlvbjxNaWdyYXRpb25MaW1pdHM+AAAMgENvbnRyb2wgdGhlIGF1dG9tYXRpYyBtaWdyYXRpb24uAA0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBbYENvbmZpZzo6Q29udHJvbE9yaWdpbmBdLkBjb250aW51ZV9taWdyYXRlDAEYbGltaXRzCQUBPE1pZ3JhdGlvbkxpbWl0cwABPHJlYWxfc2l6ZV91cHBlcjgBDHUzMgABMHdpdG5lc3NfdGFzaw0FAUBNaWdyYXRpb25UYXNrPFQ+AAFUuENvbnRpbnVlIHRoZSBtaWdyYXRpb24gZm9yIHRoZSBnaXZlbiBgbGltaXRzYC4A7FRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBhbnkgc2lnbmVkIGFjY291bnQuAF0BVGhpcyB0cmFuc2FjdGlvbiBoYXMgTk8gTU9ORVRBUlkgSU5DRU5USVZFUy4gY2FsbGluZyBpdCB3aWxsIG5vdCByZXdhcmQgYW55b25lLiBBbGJlaXQs7FVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24sIHRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgcmV0dXJuZWQuAEEBVGhlIChwb3RlbnRpYWxseSBvdmVyLWVzdGltYXRlZCkgb2YgdGhlIGJ5dGUgbGVuZ3RoIG9mIGFsbCB0aGUgZGF0YSByZWFkIG11c3QgYmVZAXByb3ZpZGVkIGZvciB1cC1mcm9udCBmZWUtcGF5bWVudCBhbmQgd2VpZ2hpbmcuIEluIGVzc2VuY2UsIHRoZSBjYWxsZXIgaXMgZ3VhcmFudGVlaW5nSQF0aGF0IGV4ZWN1dGluZyB0aGUgY3VycmVudCBgTWlncmF0aW9uVGFza2Agd2l0aCB0aGUgZ2l2ZW4gYGxpbWl0c2Agd2lsbCBub3QgZXhjZWVklGByZWFsX3NpemVfdXBwZXJgIGJ5dGVzIG9mIHJlYWQgZGF0YS4ARQFUaGUgYHdpdG5lc3NfdGFza2AgaXMgbWVyZWx5IGEgaGVscGVyIHRvIHByZXZlbnQgdGhlIGNhbGxlciBmcm9tIGJlaW5nIHNsYXNoZWQgb3JdAWdlbmVyYWxseSB0cmlnZ2VyIGEgbWlncmF0aW9uIHRoYXQgdGhleSBkbyBub3QgaW50ZW5kLiBUaGlzIHBhcmFtZXRlciBpcyBqdXN0IGEgbWVzc2FnZT0BZnJvbSBjYWxsZXIsIHNheWluZyB0aGF0IHRoZXkgYmVsaWV2ZWQgYHdpdG5lc3NfdGFza2Agd2FzIHRoZSBsYXN0IHN0YXRlIG9mIHRoZVkBbWlncmF0aW9uLCBhbmQgdGhleSBvbmx5IHdpc2ggZm9yIHRoZWlyIHRyYW5zYWN0aW9uIHRvIGRvIGFueXRoaW5nLCBpZiB0aGlzIGFzc3VtcHRpb24RAWhvbGRzLiBJbiBjYXNlIGB3aXRuZXNzX3Rhc2tgIGRvZXMgbm90IG1hdGNoLCB0aGUgdHJhbnNhY3Rpb24gZmFpbHMuADkBQmFzZWQgb24gdGhlIGRvY3VtZW50YXRpb24gb2YgW2BNaWdyYXRpb25UYXNrOjptaWdyYXRlX3VudGlsX2V4aGF1c3Rpb25gXSwgdGhlTQFyZWNvbW1lbmRlZCB3YXkgb2YgZG9pbmcgdGhpcyBpcyB0byBwYXNzIGEgYGxpbWl0YCB0aGF0IG9ubHkgYm91bmRzIGBjb3VudGAsIGFzIHRoZZxgc2l6ZWAgbGltaXQgY2FuIGFsd2F5cyBiZSBvdmVyd3JpdHRlbi5IbWlncmF0ZV9jdXN0b21fdG9wCAEQa2V5czQBMFZlYzxWZWM8dTg+PgABMHdpdG5lc3Nfc2l6ZTgBDHUzMgACEAkBTWlncmF0ZSB0aGUgbGlzdCBvZiB0b3Aga2V5cyBieSBpdGVyYXRpbmcgZWFjaCBvZiB0aGVtIG9uZSBieSBvbmUuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5QbWlncmF0ZV9jdXN0b21fY2hpbGQMARByb290GAEcVmVjPHU4PgABKGNoaWxkX2tleXM0ATBWZWM8VmVjPHU4Pj4AASh0b3RhbF9zaXplOAEMdTMyAAMYEQFNaWdyYXRlIHRoZSBsaXN0IG9mIGNoaWxkIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgANAUFsbCBvZiB0aGUgZ2l2ZW4gY2hpbGQga2V5cyBtdXN0IGJlIHByZXNlbnQgdW5kZXIgb25lIGBjaGlsZF9yb290YC4AVQFUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgZ2xvYmFsIG1pZ3JhdGlvbiBwcm9jZXNzIHRyYWNrZXIgKFtgTWlncmF0aW9uUHJvY2Vzc2BdKSwgYW5k/HNob3VsZCBvbmx5IGJlIHVzZWQgaW4gY2FzZSBhbnkga2V5cyBhcmUgbGVmdG92ZXIgZHVlIHRvIGEgYnVnLlRzZXRfc2lnbmVkX21heF9saW1pdHMEARhsaW1pdHMJBQE8TWlncmF0aW9uTGltaXRzAAQEuFNldCB0aGUgbWF4aW11bSBsaW1pdCBvZiB0aGUgc2lnbmVkIG1pZ3JhdGlvbi5IZm9yY2Vfc2V0X3Byb2dyZXNzCAEwcHJvZ3Jlc3NfdG9wEQUBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZBEFATRQcm9ncmVzc09mPFQ+AAUkyEZvcmNlZnVsbHkgc2V0IHRoZSBwcm9ncmVzcyB0aGUgcnVubmluZyBtaWdyYXRpb24uAF0BVGhpcyBpcyBvbmx5IHVzZWZ1bCBpbiBvbmUgY2FzZTogdGhlIG5leHQga2V5IHRvIG1pZ3JhdGUgaXMgdG9vIGJpZyB0byBiZSBtaWdyYXRlZCB3aXRoVQFhIHNpZ25lZCBhY2NvdW50LCBpbiBhIHBhcmFjaGFpbiBjb250ZXh0LCBhbmQgd2Ugc2ltcGx5IHdhbnQgdG8gc2tpcCBpdC4gQSByZWFzb25hYmxlYQFleGFtcGxlIG9mIHRoaXMgd291bGQgYmUgYDpjb2RlOmAsIHdoaWNoIGlzIGJvdGggdmVyeSBleHBlbnNpdmUgdG8gbWlncmF0ZSwgYW5kIGNvbW1vbmx5pHVzZWQsIHNvIHByb2JhYmx5IGl0IGlzIGFscmVhZHkgbWlncmF0ZWQuAF0BSW4gY2FzZSB5b3UgbWVzcyB0aGluZ3MgdXAsIHlvdSBjYW4gYWxzbywgaW4gcHJpbmNpcGxlLCB1c2UgdGhpcyB0byByZXNldCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgUFBBhPcHRpb24EBFQBCQUBCBBOb25lAAAAEFNvbWUEAAkFAAABAAAJBQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldDxNaWdyYXRpb25MaW1pdHMAAAgBEHNpemU4AQx1MzIAARBpdGVtOAEMdTMyAAANBQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldDRNaWdyYXRpb25UYXNrBARUAAAUATBwcm9ncmVzc190b3ARBQE0UHJvZ3Jlc3NPZjxUPgABOHByb2dyZXNzX2NoaWxkEQUBNFByb2dyZXNzT2Y8VD4AARBzaXplOAEMdTMyAAEkdG9wX2l0ZW1zOAEMdTMyAAEsY2hpbGRfaXRlbXM4AQx1MzIAABEFDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0IFByb2dyZXNzBCRNYXhLZXlMZW4AAQwcVG9TdGFydAAAABxMYXN0S2V5BAAVBQFkQm91bmRlZFZlYzx1OCwgTWF4S2V5TGVuPgABACBDb21wbGV0ZQACAAAVBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AABkFDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQQQ2FsbAQEVAABaBBqb2luCAEYYW1vdW50kQEBMEJhbGFuY2VPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQAAEBFAVN0YWtlIGZ1bmRzIHdpdGggYSBwb29sLiBUaGUgYW1vdW50IHRvIGJvbmQgaXMgZGVsZWdhdGVkIChvciB0cmFuc2ZlcnJlZCBiYXNlZCBvbk0BW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdKSBmcm9tIHRoZSBtZW1iZXIgdG8gdGhlIHBvb2wgYWNjb3VudCBhbmQgaW1tZWRpYXRlbHloaW5jcmVhc2VzIHRoZSBwb29sJ3MgYm9uZC4AKQFUaGUgbWV0aG9kIG9mIHRyYW5zZmVycmluZyB0aGUgYW1vdW50IHRvIHRoZSBwb29sIGFjY291bnQgaXMgZGV0ZXJtaW5lZCBieQEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdLiBJZiB0aGUgcG9vbCBpcyBjb25maWd1cmVkIHRvIHVzZTEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXSwgdGhlIGZ1bmRzIHJlbWFpbiBpbiB0aGUgYWNjb3VudCBvZjEBdGhlIGBvcmlnaW5gLCB3aGlsZSB0aGUgcG9vbCBnYWlucyB0aGUgcmlnaHQgdG8gdXNlIHRoZXNlIGZ1bmRzIGZvciBzdGFraW5nLgAYIyBOb3RlAMwqIEFuIGFjY291bnQgY2FuIG9ubHkgYmUgYSBtZW1iZXIgb2YgYSBzaW5nbGUgcG9vbC7YKiBBbiBhY2NvdW50IGNhbm5vdCBqb2luIHRoZSBzYW1lIHBvb2wgbXVsdGlwbGUgdGltZXMuQQEqIFRoaXMgY2FsbCB3aWxsICpub3QqIGR1c3QgdGhlIG1lbWJlciBhY2NvdW50LCBzbyB0aGUgbWVtYmVyIG11c3QgaGF2ZSBhdCBsZWFzdMggIGBleGlzdGVudGlhbCBkZXBvc2l0ICsgYW1vdW50YCBpbiB0aGVpciBhY2NvdW50LtAqIE9ubHkgYSBwb29sIHdpdGggW2BQb29sU3RhdGU6Ok9wZW5gXSBjYW4gYmUgam9pbmVkKGJvbmRfZXh0cmEEARRleHRyYR0FAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgABHEUBQm9uZCBgZXh0cmFgIG1vcmUgZnVuZHMgZnJvbSBgb3JpZ2luYCBpbnRvIHRoZSBwb29sIHRvIHdoaWNoIHRoZXkgYWxyZWFkeSBiZWxvbmcuAEkBQWRkaXRpb25hbCBmdW5kcyBjYW4gY29tZSBmcm9tIGVpdGhlciB0aGUgZnJlZSBiYWxhbmNlIG9mIHRoZSBhY2NvdW50LCBvZiBmcm9tIHRoZZxhY2N1bXVsYXRlZCByZXdhcmRzLCBzZWUgW2BCb25kRXh0cmFgXS4APQFCb25kaW5nIGV4dHJhIGZ1bmRzIGltcGxpZXMgYW4gYXV0b21hdGljIHBheW91dCBvZiBhbGwgcGVuZGluZyByZXdhcmRzIGFzIHdlbGwuCQFTZWUgYGJvbmRfZXh0cmFfb3RoZXJgIHRvIGJvbmQgcGVuZGluZyByZXdhcmRzIG9mIGBvdGhlcmAgbWVtYmVycy4wY2xhaW1fcGF5b3V0AAIgVQFBIGJvbmRlZCBtZW1iZXIgY2FuIHVzZSB0aGlzIHRvIGNsYWltIHRoZWlyIHBheW91dCBiYXNlZCBvbiB0aGUgcmV3YXJkcyB0aGF0IHRoZSBwb29sYQFoYXMgYWNjdW11bGF0ZWQgc2luY2UgdGhlaXIgbGFzdCBjbGFpbWVkIHBheW91dCAoT1Igc2luY2Ugam9pbmluZyBpZiB0aGlzIGlzIHRoZWlyIGZpcnN0PQF0aW1lIGNsYWltaW5nIHJld2FyZHMpLiBUaGUgcGF5b3V0IHdpbGwgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIG1lbWJlcidzIGFjY291bnQuAEkBVGhlIG1lbWJlciB3aWxsIGVhcm4gcmV3YXJkcyBwcm8gcmF0YSBiYXNlZCBvbiB0aGUgbWVtYmVycyBzdGFrZSB2cyB0aGUgc3VtIG9mIHRoZdBtZW1iZXJzIGluIHRoZSBwb29scyBzdGFrZS4gUmV3YXJkcyBkbyBub3QgImV4cGlyZSIuAEEBU2VlIGBjbGFpbV9wYXlvdXRfb3RoZXJgIHRvIGNsYWltIHJld2FyZHMgb24gYmVoYWxmIG9mIHNvbWUgYG90aGVyYCBwb29sIG1lbWJlci4YdW5ib25kCAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQHVuYm9uZGluZ19wb2ludHORAQEwQmFsYW5jZU9mPFQ+AAN8RQFVbmJvbmQgdXAgdG8gYHVuYm9uZGluZ19wb2ludHNgIG9mIHRoZSBgbWVtYmVyX2FjY291bnRgJ3MgZnVuZHMgZnJvbSB0aGUgcG9vbC4gSXRFAWltcGxpY2l0bHkgY29sbGVjdHMgdGhlIHJld2FyZHMgb25lIGxhc3QgdGltZSwgc2luY2Ugbm90IGRvaW5nIHNvIHdvdWxkIG1lYW4gc29tZWxyZXdhcmRzIHdvdWxkIGJlIGZvcmZlaXRlZC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4ArCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaC4AXQEqIFRoZSBwb29sIGlzIGJsb2NrZWQgYW5kIHRoZSBjYWxsZXIgaXMgZWl0aGVyIHRoZSByb290IG9yIGJvdW5jZXIuIFRoaXMgaXMgcmVmZXJlZWQgdG8wICBhcyBhIGtpY2su9CogVGhlIHBvb2wgaXMgZGVzdHJveWluZyBhbmQgdGhlIG1lbWJlciBpcyBub3QgdGhlIGRlcG9zaXRvci5VASogVGhlIHBvb2wgaXMgZGVzdHJveWluZywgdGhlIG1lbWJlciBpcyB0aGUgZGVwb3NpdG9yIGFuZCBubyBvdGhlciBtZW1iZXJzIGFyZSBpbiB0aGUcICBwb29sLgARASMjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaCAoaS5lLiB0aGUgY2FsbGVyIGlzIGFsc28gdGhlSGBtZW1iZXJfYWNjb3VudGApOgCIKiBUaGUgY2FsbGVyIGlzIG5vdCB0aGUgZGVwb3NpdG9yLlUBKiBUaGUgY2FsbGVyIGlzIHRoZSBkZXBvc2l0b3IsIHRoZSBwb29sIGlzIGRlc3Ryb3lpbmcgYW5kIG5vIG90aGVyIG1lbWJlcnMgYXJlIGluIHRoZRwgIHBvb2wuABgjIE5vdGUAHQFJZiB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcyB0byB1bmJvbmQgd2l0aCB0aGUgcG9vbCBhY2NvdW50LFEBW2BDYWxsOjpwb29sX3dpdGhkcmF3X3VuYm9uZGVkYF0gY2FuIGJlIGNhbGxlZCB0byB0cnkgYW5kIG1pbmltaXplIHVubG9ja2luZyBjaHVua3MuWQFUaGUgW2BTdGFraW5nSW50ZXJmYWNlOjp1bmJvbmRgXSB3aWxsIGltcGxpY2l0bHkgY2FsbCBbYENhbGw6OnBvb2xfd2l0aGRyYXdfdW5ib25kZWRgXVUBdG8gdHJ5IHRvIGZyZWUgY2h1bmtzIGlmIG5lY2Vzc2FyeSAoaWUuIGlmIHVuYm91bmQgd2FzIGNhbGxlZCBhbmQgbm8gdW5sb2NraW5nIGNodW5rc2EBYXJlIGF2YWlsYWJsZSkuIEhvd2V2ZXIsIGl0IG1heSBub3QgYmUgcG9zc2libGUgdG8gcmVsZWFzZSB0aGUgY3VycmVudCB1bmxvY2tpbmcgY2h1bmtzLF0BaW4gd2hpY2ggY2FzZSwgdGhlIHJlc3VsdCBvZiB0aGlzIGNhbGwgd2lsbCBsaWtlbHkgYmUgdGhlIGBOb01vcmVDaHVua3NgIGVycm9yIGZyb20gdGhlPHN0YWtpbmcgc3lzdGVtLlhwb29sX3dpdGhkcmF3X3VuYm9uZGVkCAEccG9vbF9pZDgBGFBvb2xJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAEGFUBQ2FsbCBgd2l0aGRyYXdfdW5ib25kZWRgIGZvciB0aGUgcG9vbHMgYWNjb3VudC4gVGhpcyBjYWxsIGNhbiBiZSBtYWRlIGJ5IGFueSBhY2NvdW50LgBBAVRoaXMgaXMgdXNlZnVsIGlmIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzIHRvIGNhbGwgYHVuYm9uZGAsIGFuZCBzb21lYQFjYW4gYmUgY2xlYXJlZCBieSB3aXRoZHJhd2luZy4gSW4gdGhlIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MsIHRoZSB1c2VyUQF3b3VsZCBwcm9iYWJseSBzZWUgYW4gZXJyb3IgbGlrZSBgTm9Nb3JlQ2h1bmtzYCBlbWl0dGVkIGZyb20gdGhlIHN0YWtpbmcgc3lzdGVtIHdoZW5cdGhleSBhdHRlbXB0IHRvIHVuYm9uZC5Ed2l0aGRyYXdfdW5ib25kZWQIAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAAVYVQFXaXRoZHJhdyB1bmJvbmRlZCBmdW5kcyBmcm9tIGBtZW1iZXJfYWNjb3VudGAuIElmIG5vIGJvbmRlZCBmdW5kcyBjYW4gYmUgdW5ib25kZWQsIGFuSGVycm9yIGlzIHJldHVybmVkLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCoIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoAAkBKiBUaGUgcG9vbCBpcyBpbiBkZXN0cm95IG1vZGUgYW5kIHRoZSB0YXJnZXQgaXMgbm90IHRoZSBkZXBvc2l0b3IuMQEqIFRoZSB0YXJnZXQgaXMgdGhlIGRlcG9zaXRvciBhbmQgdGhleSBhcmUgdGhlIG9ubHkgbWVtYmVyIGluIHRoZSBzdWIgcG9vbHMuDQEqIFRoZSBwb29sIGlzIGJsb2NrZWQgYW5kIHRoZSBjYWxsZXIgaXMgZWl0aGVyIHRoZSByb290IG9yIGJvdW5jZXIuAJgjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaADoKiBUaGUgY2FsbGVyIGlzIHRoZSB0YXJnZXQgYW5kIHRoZXkgYXJlIG5vdCB0aGUgZGVwb3NpdG9yLgAYIyBOb3RlAPQtIElmIHRoZSB0YXJnZXQgaXMgdGhlIGRlcG9zaXRvciwgdGhlIHBvb2wgd2lsbCBiZSBkZXN0cm95ZWQuYQEtIElmIHRoZSBwb29sIGhhcyBhbnkgcGVuZGluZyBzbGFzaCwgd2UgYWxzbyB0cnkgdG8gc2xhc2ggdGhlIG1lbWJlciBiZWZvcmUgbGV0dGluZyB0aGVtXQF3aXRoZHJhdy4gVGhpcyBjYWxjdWxhdGlvbiBhZGRzIHNvbWUgd2VpZ2h0IG92ZXJoZWFkIGFuZCBpcyBvbmx5IGRlZmVuc2l2ZS4gSW4gcmVhbGl0eSxVAXBvb2wgc2xhc2hlcyBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5IGFwcGxpZWQgdmlhIHBlcm1pc3Npb25sZXNzIFtgQ2FsbDo6YXBwbHlfc2xhc2hgXS4YY3JlYXRlEAEYYW1vdW50kQEBMEJhbGFuY2VPZjxUPgABEHJvb3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJG5vbWluYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcYm91bmNlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAZEdENyZWF0ZSBhIG5ldyBkZWxlZ2F0aW9uIHBvb2wuACwjIEFyZ3VtZW50cwBVASogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIGZ1bmRzIHRvIGRlbGVnYXRlIHRvIHRoZSBwb29sLiBUaGlzIGFsc28gYWN0cyBvZiBhIHNvcnQgb2ZNASAgZGVwb3NpdCBzaW5jZSB0aGUgcG9vbHMgY3JlYXRvciBjYW5ub3QgZnVsbHkgdW5ib25kIGZ1bmRzIHVudGlsIHRoZSBwb29sIGlzIGJlaW5nMCAgZGVzdHJveWVkLlEBKiBgaW5kZXhgIC0gQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBmb3IgY3JlYXRpbmcgdGhlIGFjY291bnQuIExpa2VseSBvbmx5IHVzZWZ1bCB3aGVuwCAgY3JlYXRpbmcgbXVsdGlwbGUgcG9vbHMgaW4gdGhlIHNhbWUgZXh0cmluc2ljLtQqIGByb290YCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyBbYFBvb2xSb2xlczo6cm9vdGBdLg0BKiBgbm9taW5hdG9yYCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyB0aGUgW2BQb29sUm9sZXM6Om5vbWluYXRvcmBdLvwqIGBib3VuY2VyYCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyB0aGUgW2BQb29sUm9sZXM6OmJvdW5jZXJgXS4AGCMgTm90ZQBhAUluIGFkZGl0aW9uIHRvIGBhbW91bnRgLCB0aGUgY2FsbGVyIHdpbGwgdHJhbnNmZXIgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQ7IHNvIHRoZSBjYWxsZXINAW5lZWRzIGF0IGhhdmUgYXQgbGVhc3QgYGFtb3VudCArIGV4aXN0ZW50aWFsX2RlcG9zaXRgIHRyYW5zZmVyYWJsZS5MY3JlYXRlX3dpdGhfcG9vbF9pZBQBGGFtb3VudJEBATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQABxjsQ3JlYXRlIGEgbmV3IGRlbGVnYXRpb24gcG9vbCB3aXRoIGEgcHJldmlvdXNseSB1c2VkIHBvb2wgaWQALCMgQXJndW1lbnRzAJhzYW1lIGFzIGBjcmVhdGVgIHdpdGggdGhlIGluY2x1c2lvbiBvZngqIGBwb29sX2lkYCAtIGBBIHZhbGlkIFBvb2xJZC4gbm9taW5hdGUIARxwb29sX2lkOAEYUG9vbElkAAEodmFsaWRhdG9yc50BAURWZWM8VDo6QWNjb3VudElkPgAIMHxOb21pbmF0ZSBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29sKHJvb3Qgcm9sZS4ARQFUaGlzIGRpcmVjdGx5IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFuIGltcGxlbWVudGF0aW9uIG9mIGBTdGFraW5nSW50ZXJmYWNlYCAoZS5nLixFAWBwYWxsZXQtc3Rha2luZ2ApIHRocm91Z2ggW2BDb25maWc6OlN0YWtlQWRhcHRlcmBdLCBvbiBiZWhhbGYgb2YgdGhlIGJvbmRlZCBwb29sLgAYIyBOb3RlAFkBSW4gYWRkaXRpb24gdG8gYSBgcm9vdGAgb3IgYG5vbWluYXRvcmAgcm9sZSBvZiBgb3JpZ2luYCwgdGhlIHBvb2wncyBkZXBvc2l0b3IgbmVlZHMgdG8NAWhhdmUgYXQgbGVhc3QgYGRlcG9zaXRvcl9taW5fYm9uZGAgaW4gdGhlIHBvb2wgdG8gc3RhcnQgbm9taW5hdGluZy4kc2V0X3N0YXRlCAEccG9vbF9pZDgBGFBvb2xJZAABFHN0YXRlIQUBJFBvb2xTdGF0ZQAJKHRTZXQgYSBuZXcgc3RhdGUgZm9yIHRoZSBwb29sLgBVAUlmIGEgcG9vbCBpcyBhbHJlYWR5IGluIHRoZSBgRGVzdHJveWluZ2Agc3RhdGUsIHRoZW4gdW5kZXIgbm8gY29uZGl0aW9uIGNhbiBpdHMgc3RhdGU0Y2hhbmdlIGFnYWluLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBlaXRoZXI6ANwxLiBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlIHBvb2wsXQEyLiBpZiB0aGUgcG9vbCBjb25kaXRpb25zIHRvIGJlIG9wZW4gYXJlIE5PVCBtZXQgKGFzIGRlc2NyaWJlZCBieSBgb2tfdG9fYmVfb3BlbmApLCBhbmQ5ASAgIHRoZW4gdGhlIHN0YXRlIG9mIHRoZSBwb29sIGNhbiBiZSBwZXJtaXNzaW9ubGVzc2x5IGNoYW5nZWQgdG8gYERlc3Ryb3lpbmdgLjBzZXRfbWV0YWRhdGEIARxwb29sX2lkOAEYUG9vbElkAAEgbWV0YWRhdGEYARxWZWM8dTg+AAoQgFNldCBhIG5ldyBtZXRhZGF0YSBmb3IgdGhlIHBvb2wuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlFHBvb2wuLHNldF9jb25maWdzGAE0bWluX2pvaW5fYm9uZCUFAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAE8bWluX2NyZWF0ZV9ib25kJQUBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AASRtYXhfcG9vbHMpBQE0Q29uZmlnT3A8dTMyPgABLG1heF9tZW1iZXJzKQUBNENvbmZpZ09wPHUzMj4AAVBtYXhfbWVtYmVyc19wZXJfcG9vbCkFATRDb25maWdPcDx1MzI+AAFUZ2xvYmFsX21heF9jb21taXNzaW9uLQUBRENvbmZpZ09wPFBlcmJpbGw+AAssQQFVcGRhdGUgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBub21pbmF0aW9uIHBvb2xzLiBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZWBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXS4ALCMgQXJndW1lbnRzAKAqIGBtaW5fam9pbl9ib25kYCAtIFNldCBbYE1pbkpvaW5Cb25kYF0usCogYG1pbl9jcmVhdGVfYm9uZGAgLSBTZXQgW2BNaW5DcmVhdGVCb25kYF0uhCogYG1heF9wb29sc2AgLSBTZXQgW2BNYXhQb29sc2BdLqQqIGBtYXhfbWVtYmVyc2AgLSBTZXQgW2BNYXhQb29sTWVtYmVyc2BdLuQqIGBtYXhfbWVtYmVyc19wZXJfcG9vbGAgLSBTZXQgW2BNYXhQb29sTWVtYmVyc1BlclBvb2xgXS7gKiBgZ2xvYmFsX21heF9jb21taXNzaW9uYCAtIFNldCBbYEdsb2JhbE1heENvbW1pc3Npb25gXS4wdXBkYXRlX3JvbGVzEAEccG9vbF9pZDgBGFBvb2xJZAABIG5ld19yb290NQUBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AATRuZXdfbm9taW5hdG9yNQUBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AASxuZXdfYm91bmNlcjUFAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAwcdFVwZGF0ZSB0aGUgcm9sZXMgb2YgdGhlIHBvb2wuAD0BVGhlIHJvb3QgaXMgdGhlIG9ubHkgZW50aXR5IHRoYXQgY2FuIGNoYW5nZSBhbnkgb2YgdGhlIHJvbGVzLCBpbmNsdWRpbmcgaXRzZWxmLLhleGNsdWRpbmcgdGhlIGRlcG9zaXRvciwgd2hvIGNhbiBuZXZlciBjaGFuZ2UuAFEBSXQgZW1pdHMgYW4gZXZlbnQsIG5vdGlmeWluZyBVSXMgb2YgdGhlIHJvbGUgY2hhbmdlLiBUaGlzIGV2ZW50IGlzIHF1aXRlIHJlbGV2YW50IHRvHQFtb3N0IHBvb2wgbWVtYmVycyBhbmQgdGhleSBzaG91bGQgYmUgaW5mb3JtZWQgb2YgY2hhbmdlcyB0byBwb29sIHJvbGVzLhRjaGlsbAQBHHBvb2xfaWQ4ARhQb29sSWQADURwQ2hpbGwgb24gYmVoYWxmIG9mIHRoZSBwb29sLgBBAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29soHJvb3Qgcm9sZSwgc2FtZSBhcyBbYFBhbGxldDo6bm9taW5hdGVgXS4ARQFUaGlzIGRpcmVjdGx5IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFuIGltcGxlbWVudGF0aW9uIG9mIGBTdGFraW5nSW50ZXJmYWNlYCAoZS5nLixFAWBwYWxsZXQtc3Rha2luZ2ApIHRocm91Z2ggW2BDb25maWc6OlN0YWtlQWRhcHRlcmBdLCBvbiBiZWhhbGYgb2YgdGhlIGJvbmRlZCBwb29sLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCsIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoOlUBKiBXaGVuIHBvb2wgZGVwb3NpdG9yIGhhcyBsZXNzIHRoYW4gYE1pbk5vbWluYXRvckJvbmRgIHN0YWtlZCwgb3RoZXJ3aXNlIHBvb2wgbWVtYmVyc1wgIGFyZSB1bmFibGUgdG8gdW5ib25kLgCcIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2g6tCogVGhlIGNhbGxlciBpcyB0aGUgcG9vbCdzIG5vbWluYXRvciBvciByb290LkBib25kX2V4dHJhX290aGVyCAEYbWVtYmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRleHRyYR0FAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgAOJFUBYG9yaWdpbmAgYm9uZHMgZnVuZHMgZnJvbSBgZXh0cmFgIGZvciBzb21lIHBvb2wgbWVtYmVyIGBtZW1iZXJgIGludG8gdGhlaXIgcmVzcGVjdGl2ZRhwb29scy4ASQFgb3JpZ2luYCBjYW4gYm9uZCBleHRyYSBmdW5kcyBmcm9tIGZyZWUgYmFsYW5jZSBvciBwZW5kaW5nIHJld2FyZHMgd2hlbiBgb3JpZ2luID09HG90aGVyYC4ARQFJbiB0aGUgY2FzZSBvZiBgb3JpZ2luICE9IG90aGVyYCwgYG9yaWdpbmAgY2FuIG9ubHkgYm9uZCBleHRyYSBwZW5kaW5nIHJld2FyZHMgb2YVAWBvdGhlcmAgbWVtYmVycyBhc3N1bWluZyBzZXRfY2xhaW1fcGVybWlzc2lvbiBmb3IgdGhlIGdpdmVuIG1lbWJlciBpc8BgUGVybWlzc2lvbmxlc3NDb21wb3VuZGAgb3IgYFBlcm1pc3Npb25sZXNzQWxsYC5Qc2V0X2NsYWltX3Blcm1pc3Npb24EAShwZXJtaXNzaW9uOQUBPENsYWltUGVybWlzc2lvbgAPHEkBQWxsb3dzIGEgcG9vbCBtZW1iZXIgdG8gc2V0IGEgY2xhaW0gcGVybWlzc2lvbiB0byBhbGxvdyBvciBkaXNhbGxvdyBwZXJtaXNzaW9ubGVzc2Bib25kaW5nIGFuZCB3aXRoZHJhd2luZy4ALCMgQXJndW1lbnRzAHgqIGBvcmlnaW5gIC0gTWVtYmVyIG9mIGEgcG9vbC64KiBgcGVybWlzc2lvbmAgLSBUaGUgcGVybWlzc2lvbiB0byBiZSBhcHBsaWVkLkhjbGFpbV9wYXlvdXRfb3RoZXIEARRvdGhlcgQBMFQ6OkFjY291bnRJZAAQEAEBYG9yaWdpbmAgY2FuIGNsYWltIHBheW91dHMgb24gc29tZSBwb29sIG1lbWJlciBgb3RoZXJgJ3MgYmVoYWxmLgBVAVBvb2wgbWVtYmVyIGBvdGhlcmAgbXVzdCBoYXZlIGEgYFBlcm1pc3Npb25sZXNzV2l0aGRyYXdgIG9yIGBQZXJtaXNzaW9ubGVzc0FsbGAgY2xhaW2ocGVybWlzc2lvbiBmb3IgdGhpcyBjYWxsIHRvIGJlIHN1Y2Nlc3NmdWwuOHNldF9jb21taXNzaW9uCAEccG9vbF9pZDgBGFBvb2xJZAABOG5ld19jb21taXNzaW9uPQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AERR0U2V0IHRoZSBjb21taXNzaW9uIG9mIGEgcG9vbC5VAUJvdGggYSBjb21taXNzaW9uIHBlcmNlbnRhZ2UgYW5kIGEgY29tbWlzc2lvbiBwYXllZSBtdXN0IGJlIHByb3ZpZGVkIGluIHRoZSBgY3VycmVudGBdAXR1cGxlLiBXaGVyZSBhIGBjdXJyZW50YCBvZiBgTm9uZWAgaXMgcHJvdmlkZWQsIGFueSBjdXJyZW50IGNvbW1pc3Npb24gd2lsbCBiZSByZW1vdmVkLgBNAS0gSWYgYSBgTm9uZWAgaXMgc3VwcGxpZWQgdG8gYG5ld19jb21taXNzaW9uYCwgZXhpc3RpbmcgY29tbWlzc2lvbiB3aWxsIGJlIHJlbW92ZWQuSHNldF9jb21taXNzaW9uX21heAgBHHBvb2xfaWQ4ARhQb29sSWQAAThtYXhfY29tbWlzc2lvbjEFARxQZXJiaWxsABIUlFNldCB0aGUgbWF4aW11bSBjb21taXNzaW9uIG9mIGEgcG9vbC4AOQEtIEluaXRpYWwgbWF4IGNhbiBiZSBzZXQgdG8gYW55IGBQZXJiaWxsYCwgYW5kIG9ubHkgc21hbGxlciB2YWx1ZXMgdGhlcmVhZnRlci41AS0gQ3VycmVudCBjb21taXNzaW9uIHdpbGwgYmUgbG93ZXJlZCBpbiB0aGUgZXZlbnQgaXQgaXMgaGlnaGVyIHRoYW4gYSBuZXcgbWF4NCAgY29tbWlzc2lvbi5oc2V0X2NvbW1pc3Npb25fY2hhbmdlX3JhdGUIARxwb29sX2lkOAEYUG9vbElkAAEsY2hhbmdlX3JhdGVFBQGcQ29tbWlzc2lvbkNoYW5nZVJhdGU8QmxvY2tOdW1iZXJGb3I8VD4+ABMQqFNldCB0aGUgY29tbWlzc2lvbiBjaGFuZ2UgcmF0ZSBmb3IgYSBwb29sLgA9AUluaXRpYWwgY2hhbmdlIHJhdGUgaXMgbm90IGJvdW5kZWQsIHdoZXJlYXMgc3Vic2VxdWVudCB1cGRhdGVzIGNhbiBvbmx5IGJlIG1vcmV0cmVzdHJpY3RpdmUgdGhhbiB0aGUgY3VycmVudC5AY2xhaW1fY29tbWlzc2lvbgQBHHBvb2xfaWQ4ARhQb29sSWQAFEBkQ2xhaW0gcGVuZGluZyBjb21taXNzaW9uLgA9AVRoZSBgcm9vdGAgcm9sZSBvZiB0aGUgcG9vbCBpcyBfYWx3YXlzXyBhbGxvd2VkIHRvIGNsYWltIHRoZSBwb29sJ3MgY29tbWlzc2lvbi4AVQFJZiB0aGUgcG9vbCBoYXMgc2V0IGBDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uOjpQZXJtaXNzaW9ubGVzc2AsIHRoZW4gYW55IGFjY291bnQgY2Fu2HRyaWdnZXIgdGhlIHByb2Nlc3Mgb2YgY2xhaW1pbmcgdGhlIHBvb2wncyBjb21taXNzaW9uLgBBAUlmIHRoZSBwb29sIGhhcyBzZXQgaXRzIGBDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uYCB0byBgQWNjb3VudChhY2MpYCwgdGhlbiBvbmx5IGFjY291bnRzMCogYGFjY2AsIGFuZGQqIHRoZSBwb29sJ3Mgcm9vdCBhY2NvdW50ALhtYXkgY2FsbCB0aGlzIGV4dHJpbnNpYyBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAC0BUGVuZGluZyBjb21taXNzaW9ucyBhcmUgcGFpZCBvdXQgYW5kIGFkZGVkIHRvIHRoZSB0b3RhbCBjbGFpbWVkIGNvbW1pc3Npb24uuFRoZSB0b3RhbCBwZW5kaW5nIGNvbW1pc3Npb24gaXMgcmVzZXQgdG8gemVyby5MYWRqdXN0X3Bvb2xfZGVwb3NpdAQBHHBvb2xfaWQ4ARhQb29sSWQAFRzsVG9wIHVwIHRoZSBkZWZpY2l0IG9yIHdpdGhkcmF3IHRoZSBleGNlc3MgRUQgZnJvbSB0aGUgcG9vbC4AUQFXaGVuIGEgcG9vbCBpcyBjcmVhdGVkLCB0aGUgcG9vbCBkZXBvc2l0b3IgdHJhbnNmZXJzIEVEIHRvIHRoZSByZXdhcmQgYWNjb3VudCBvZiB0aGVVAXBvb2wuIEVEIGlzIHN1YmplY3QgdG8gY2hhbmdlIGFuZCBvdmVyIHRpbWUsIHRoZSBkZXBvc2l0IGluIHRoZSByZXdhcmQgYWNjb3VudCBtYXkgYmVRAWluc3VmZmljaWVudCB0byBjb3ZlciB0aGUgRUQgZGVmaWNpdCBvZiB0aGUgcG9vbCBvciB2aWNlLXZlcnNhIHdoZXJlIHRoZXJlIGlzIGV4Y2VzczEBZGVwb3NpdCB0byB0aGUgcG9vbC4gVGhpcyBjYWxsIGFsbG93cyBhbnlvbmUgdG8gYWRqdXN0IHRoZSBFRCBkZXBvc2l0IG9mIHRoZfRwb29sIGJ5IGVpdGhlciB0b3BwaW5nIHVwIHRoZSBkZWZpY2l0IG9yIGNsYWltaW5nIHRoZSBleGNlc3MufHNldF9jb21taXNzaW9uX2NsYWltX3Blcm1pc3Npb24IARxwb29sX2lkOAEYUG9vbElkAAEocGVybWlzc2lvbkkFAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAWEMxTZXQgb3IgcmVtb3ZlIGEgcG9vbCdzIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbi4AYQFEZXRlcm1pbmVzIHdobyBjYW4gY2xhaW0gdGhlIHBvb2wncyBwZW5kaW5nIGNvbW1pc3Npb24uIE9ubHkgdGhlIGBSb290YCByb2xlIG9mIHRoZSBwb29syGlzIGFibGUgdG8gY29uZmlndXJlIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbnMuLGFwcGx5X3NsYXNoBAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXJIhBcHBseSBhIHBlbmRpbmcgc2xhc2ggb24gYSBtZW1iZXIuACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgBdAVRoZSBwZW5kaW5nIHNsYXNoIGFtb3VudCBvZiB0aGUgbWVtYmVyIG11c3QgYmUgZXF1YWwgb3IgbW9yZSB0aGFuIGBFeGlzdGVudGlhbERlcG9zaXRgLlEBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55IGFjY291bnQpLiBJZiB0aGUgZXhlY3V0aW9uSQFpcyBzdWNjZXNzZnVsLCBmZWUgaXMgcmVmdW5kZWQgYW5kIGNhbGxlciBtYXkgYmUgcmV3YXJkZWQgd2l0aCBhIHBhcnQgb2YgdGhlIHNsYXNoDQFiYXNlZCBvbiB0aGUgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGNvbmZpZ3VyYXRpb24uSG1pZ3JhdGVfZGVsZWdhdGlvbgQBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGCQdAU1pZ3JhdGVzIGRlbGVnYXRlZCBmdW5kcyBmcm9tIHRoZSBwb29sIGFjY291bnQgdG8gdGhlIGBtZW1iZXJfYWNjb3VudGAuACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgApAVRoaXMgaXMgYSBwZXJtaXNzaW9uLWxlc3MgY2FsbCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIGNsYWltIGlzIHN1Y2Nlc3NmdWwuAF0BSWYgdGhlIHBvb2wgaGFzIG1pZ3JhdGVkIHRvIGRlbGVnYXRpb24gYmFzZWQgc3Rha2luZywgdGhlIHN0YWtlZCB0b2tlbnMgb2YgcG9vbCBtZW1iZXJzKQFjYW4gYmUgbW92ZWQgYW5kIGhlbGQgaW4gdGhlaXIgb3duIGFjY291bnQuIFNlZSBbYGFkYXB0ZXI6OkRlbGVnYXRlU3Rha2VgXXhtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2UEARxwb29sX2lkOAEYUG9vbElkABkk9E1pZ3JhdGUgcG9vbCBmcm9tIFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OlRyYW5zZmVyYF0gdG+kW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AJQFGYWlscyB1bmxlc3MgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGlzIG9mIHN0cmF0ZWd5IHR5cGU6pFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uAEEBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHksIGFuZCByZWZ1bmRzIGFueSBmZWUgaWYgc3VjY2Vzc2Z1bC4ASQFJZiB0aGUgcG9vbCBoYXMgYWxyZWFkeSBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoaXMgY2FsbCB3aWxsIGZhaWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLh0FCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyRCb25kRXh0cmEEHEJhbGFuY2UBlQEBCCxGcmVlQmFsYW5jZQQAlQEBHEJhbGFuY2UAAAAcUmV3YXJkcwABAAAhBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFN0YXRlAAEMEE9wZW4AAAAcQmxvY2tlZAABAChEZXN0cm95aW5nAAIAACUFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAGVAQEMEE5vb3AAAAAMU2V0BACVAQEEVAABABhSZW1vdmUAAgAAKQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAALQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUATEFAQwQTm9vcAAAAAxTZXQEADEFAQRUAAEAGFJlbW92ZQACAAAxBQw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmJpbGwAAAQAOAEMdTMyAAA1BQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBBAEMEE5vb3AAAAAMU2V0BAAEAQRUAAEAGFJlbW92ZQACAAA5BQhccGFsbGV0X25vbWluYXRpb25fcG9vbHM8Q2xhaW1QZXJtaXNzaW9uAAEQMFBlcm1pc3Npb25lZAAAAFhQZXJtaXNzaW9ubGVzc0NvbXBvdW5kAAEAWFBlcm1pc3Npb25sZXNzV2l0aGRyYXcAAgBEUGVybWlzc2lvbmxlc3NBbGwAAwAAPQUEGE9wdGlvbgQEVAFBBQEIEE5vbmUAAAAQU29tZQQAQQUAAAEAAEEFAAAECDEFBABFBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHNQQ29tbWlzc2lvbkNoYW5nZVJhdGUELEJsb2NrTnVtYmVyATgACAEwbWF4X2luY3JlYXNlMQUBHFBlcmJpbGwAASRtaW5fZGVsYXk4ASxCbG9ja051bWJlcgAASQUEGE9wdGlvbgQEVAFNBQEIEE5vbmUAAAAQU29tZQQATQUAAAEAAE0FCFxwYWxsZXRfbm9taW5hdGlvbl9wb29sc2RDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uBCRBY2NvdW50SWQBBAEIOFBlcm1pc3Npb25sZXNzAAAAHEFjY291bnQEAAQBJEFjY291bnRJZAABAABRBQxAcGFsbGV0X2JhZ3NfbGlzdBhwYWxsZXQQQ2FsbAgEVAAESQABDBRyZWJhZwQBKGRpc2xvY2F0ZWQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAAKFkBRGVjbGFyZSB0aGF0IHNvbWUgYGRpc2xvY2F0ZWRgIGFjY291bnQgaGFzLCB0aHJvdWdoIHJld2FyZHMgb3IgcGVuYWx0aWVzLCBzdWZmaWNpZW50bHlRAWNoYW5nZWQgaXRzIHNjb3JlIHRoYXQgaXQgc2hvdWxkIHByb3Blcmx5IGZhbGwgaW50byBhIGRpZmZlcmVudCBiYWcgdGhhbiBpdHMgY3VycmVudBBvbmUuAB0BQW55b25lIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gYWJvdXQgYW55IHBvdGVudGlhbGx5IGRpc2xvY2F0ZWQgYWNjb3VudC4ASQFXaWxsIGFsd2F5cyB1cGRhdGUgdGhlIHN0b3JlZCBzY29yZSBvZiBgZGlzbG9jYXRlZGAgdG8gdGhlIGNvcnJlY3Qgc2NvcmUsIGJhc2VkIG9uQGBTY29yZVByb3ZpZGVyYC4A1ElmIGBkaXNsb2NhdGVkYCBkb2VzIG5vdCBleGlzdHMsIGl0IHJldHVybnMgYW4gZXJyb3IuPHB1dF9pbl9mcm9udF9vZgQBHGxpZ2h0ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKNBNb3ZlIHRoZSBjYWxsZXIncyBJZCBkaXJlY3RseSBpbiBmcm9udCBvZiBgbGlnaHRlcmAuAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgSWQgb2Y1AXRoZSBhY2NvdW50IGdvaW5nIGluIGZyb250IG9mIGBsaWdodGVyYC4gRmVlIGlzIHBheWVkIGJ5IHRoZSBvcmlnaW4gdW5kZXIgYWxsOGNpcmN1bXN0YW5jZXMuADhPbmx5IHdvcmtzIGlmOgCULSBib3RoIG5vZGVzIGFyZSB3aXRoaW4gdGhlIHNhbWUgYmFnLNAtIGFuZCBgb3JpZ2luYCBoYXMgYSBncmVhdGVyIGBTY29yZWAgdGhhbiBgbGlnaHRlcmAuVHB1dF9pbl9mcm9udF9vZl9vdGhlcggBHGhlYXZpZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGxpZ2h0ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACDBEBU2FtZSBhcyBbYFBhbGxldDo6cHV0X2luX2Zyb250X29mYF0sIGJ1dCBpdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZS4AyEZlZSBpcyBwYWlkIGJ5IHRoZSBvcmlnaW4gdW5kZXIgYWxsIGNpcmN1bXN0YW5jZXMuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlUFDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0EENhbGwEBFQAARBQcmVsYXlfc2Vzc2lvbl9yZXBvcnQEARhyZXBvcnRZBQFsU2Vzc2lvblJlcG9ydDxUOjpBY2NvdW50SWQ+AAAEBQFDYWxsZWQgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIGEgbmV3IHNlc3Npb24gb24gdGhlIHJlbGF5IGNoYWluLlxyZWxheV9uZXdfb2ZmZW5jZV9wYWdlZAQBIG9mZmVuY2VzbQUBqFZlYzwoU2Vzc2lvbkluZGV4LCBPZmZlbmNlPFQ6OkFjY291bnRJZD4pPgABACBzZXRfa2V5cwwBEGtleXMYARxWZWM8dTg+AAEUcHJvb2YYARxWZWM8dTg+AAGUbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZWEEAVBPcHRpb248QmFsYW5jZU9mPFQ+PgAKhFUBU2V0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuIEtleXMgYXJlIHZhbGlkYXRlZCBvbiBBc3NldEh1YiBhbmQgZm9yd2FyZGVkIHRvIFJDLgBVAU9uIHRoZSBmaXJzdCBjYWxsLCBhIGRlcG9zaXQgb2YgYEtleURlcG9zaXRgIGlzIGhlbGQgZnJvbSB0aGUgc3Rhc2guIFN1YnNlcXVlbnQgY2FsbHP0ZG8gbm90IGNoYXJnZSBhZ2Fpbi4gVGhlIGRlcG9zaXQgaXMgcmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgBsKipWYWxpZGF0aW9uIG9uIEFzc2V0SHViOioqTQEtIEtleXMgYXJlIGRlY29kZWQgYXMgYFQ6OlJlbGF5Q2hhaW5TZXNzaW9uS2V5c2AgdG8gZW5zdXJlIHRoZXkgbWF0Y2ggUkMncyBleHBlY3RlZCQgIGZvcm1hdC4AQQFJZiB2YWxpZGF0aW9uIHBhc3Nlcywgb25seSB0aGUgdmFsaWRhdGVkIGtleXMgYXJlIHNlbnQgdG8gUkMgKHdpdGggZW1wdHkgcHJvb2YpLIBzaW5jZSBSQyB0cnVzdHMgQUgncyB2YWxpZGF0aW9uLgA1AU5vdGU6IE93bmVyc2hpcCBwcm9vZiB2YWxpZGF0aW9uIHJlcXVpcmVzIFBSICMxNzM5IHdoaWNoIGlzIG5vdCBiYWNrcG9ydGVkIHRvJQFzdGFibGUyNTEyLiBUaGUgcHJvb2YgcGFyYW1ldGVyIHdpbGwgYmUgYWRkZWQgd2hlbiB0aGF0IFBSIGlzIGJhY2twb3J0ZWQuACQqKkZlZXM6KipVAVRoZSBhY3R1YWwgY29zdCBvZiB0aGlzIGNhbGwgaXMgaGlnaGVyIHRoYW4gd2hhdCB0aGUgd2VpZ2h0LWJhc2VkIGZlZSBlc3RpbWF0ZSBzaG93cy5RAUluIGFkZGl0aW9uIHRvIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLCB0aGUgc3Rhc2ggYWNjb3VudCBpcyBjaGFyZ2VkIGFuIFhDTUkBZmVlIChkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBjb3N0KSB2aWEgYFhjbUV4ZWN1dG9yOjpjaGFyZ2VfZmVlc2AuIFRoZSByZWxheSBjaGFpbj0BdXNlcyBgVW5wYWlkRXhlY3V0aW9uYCwgc28gdGhlIGZ1bGwgcmVtb3RlIGNvc3QgaXMgY2hhcmdlZCB1cGZyb250IG9uIEFzc2V0SHViLgAtAVdoZW4gY2FsbGVkIHZpYSBhIHN0YWtpbmcgcHJveHksIHRoZSBwcm94eSBwYXlzIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLNh3aGlsZSB0aGUgc3Rhc2ggKGRlbGVnYXRpbmcgYWNjb3VudCkgcGF5cyB0aGUgWENNIGZlZS4ASCoqTWF4IEZlZSBMaW1pdDoqKkUBVXNlcnMgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBgbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZWAgdG8gbGltaXQgdGhlXQFkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBmZWUuIFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZS4gSWZdAXRoZSBmZWUgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGUgb3BlcmF0aW9uIGZhaWxzIHdpdGggYEZlZXNFeGNlZWRlZE1heGAuIFBhc3MgYE5vbmVgIGZvckx1bmxpbWl0ZWQgKG5vIGNhcCkuAFkBTk9URTogdW5saWtlIHRoZSBjdXJyZW50IGZsb3cgZm9yIG5ldyB2YWxpZGF0b3JzIG9uIFJDIChib25kIC0+IHNldF9rZXlzIC0+IHZhbGlkYXRlKSxVAXVzZXJzIG9uIEFzc2V0IEh1YiBNVVNUIGNhbGwgYm9uZCBhbmQgdmFsaWRhdGUgQkVGT1JFIGNhbGxpbmcgc2V0X2tleXMuIEF0dGVtcHRpbmcgdG8lAXNldCBrZXlzIGJlZm9yZSBkZWNsYXJpbmcgaW50ZW50IHRvIHZhbGlkYXRlIHdpbGwgZmFpbCB3aXRoIE5vdFZhbGlkYXRvci4ocHVyZ2Vfa2V5cwQBlG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVhBAFQT3B0aW9uPEJhbGFuY2VPZjxUPj4AC2gBAVJlbW92ZSBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yIGFuZCByZWxlYXNlIHRoZSBrZXkgZGVwb3NpdC4AqFRoaXMgcHVyZ2VzIHRoZSBrZXlzIGZyb20gdGhlIFJlbGF5IENoYWluLgBFAVVubGlrZSBgc2V0X2tleXNgLCB0aGlzIGRvZXMgbm90IHJlcXVpcmUgdGhlIGNhbGxlciB0byBiZSBhIHJlZ2lzdGVyZWQgdmFsaWRhdG9yLkkBVGhpcyBpcyBpbnRlbnRpb25hbDogYSB2YWxpZGF0b3Igd2hvIGhhcyBjaGlsbGVkIChzdG9wcGVkIHZhbGlkYXRpbmcpIHNob3VsZCBzdGlsbDkBYmUgYWJsZSB0byBwdXJnZSB0aGVpciBzZXNzaW9uIGtleXMuIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIG9yaWdpbmFs8GBwYWxsZXQtc2Vzc2lvbjo6cHVyZ2Vfa2V5c2Agd2hpY2ggYWxsb3dzIGFueW9uZSB0byBjYWxsIGl0LgA5AVRoZSBSZWxheSBDaGFpbiB3aWxsIHJlamVjdCB0aGUgY2FsbCB3aXRoIGBOb0tleXNgIGVycm9yIGlmIHRoZSBhY2NvdW50IGhhcyBubyRrZXlzIHNldC4AJCoqRmVlczoqKlUBVGhlIGFjdHVhbCBjb3N0IG9mIHRoaXMgY2FsbCBpcyBoaWdoZXIgdGhhbiB3aGF0IHRoZSB3ZWlnaHQtYmFzZWQgZmVlIGVzdGltYXRlIHNob3dzLkUBSW4gYWRkaXRpb24gdG8gdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUsIHRoZSBjYWxsZXIgaXMgY2hhcmdlZCBhbiBYQ00gZmVlTQEoZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gY29zdCkgdmlhIGBYY21FeGVjdXRvcjo6Y2hhcmdlX2ZlZXNgLiBUaGUgcmVsYXkgY2hhaW4gdXNlcykBYFVucGFpZEV4ZWN1dGlvbmAsIHNvIHRoZSBmdWxsIHJlbW90ZSBjb3N0IGlzIGNoYXJnZWQgdXBmcm9udCBvbiBBc3NldEh1Yi4ALQFXaGVuIGNhbGxlZCB2aWEgYSBzdGFraW5nIHByb3h5LCB0aGUgcHJveHkgcGF5cyB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSy4d2hpbGUgdGhlIGRlbGVnYXRpbmcgYWNjb3VudCBwYXlzIHRoZSBYQ00gZmVlLgBIKipNYXggRmVlIExpbWl0OioqRQFVc2VycyBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGBtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlYCB0byBsaW1pdCB0aGVdAWRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGZlZS4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLiBJZl0BdGhlIGZlZSBleGNlZWRzIHRoaXMgbGltaXQsIHRoZSBvcGVyYXRpb24gZmFpbHMgd2l0aCBgRmVlc0V4Y2VlZGVkTWF4YC4gUGFzcyBgTm9uZWAgZm9yTHVubGltaXRlZCAobm8gY2FwKS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuWQUIeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDRTZXNzaW9uUmVwb3J0BCRBY2NvdW50SWQBBAAQASRlbmRfaW5kZXg4ATBTZXNzaW9uSW5kZXgAAUB2YWxpZGF0b3JfcG9pbnRzXQUBVFZlYzwoQWNjb3VudElkLCB1MzIpPgABUGFjdGl2YXRpb25fdGltZXN0YW1wZQUBSE9wdGlvbjwodTY0LCB1MzIpPgABIGxlZnRvdmVymQEBEGJvb2wAAF0FAAACYQUAYQUAAAQIBDgAZQUEGE9wdGlvbgQEVAFpBQEIEE5vbmUAAAAQU29tZQQAaQUAAAEAAGkFAAAECCg4AG0FAAACcQUAcQUAAAQIOHUFAHUFCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQcT2ZmZW5jZQQkQWNjb3VudElkAQQADAEgb2ZmZW5kZXIEASRBY2NvdW50SWQAASRyZXBvcnRlcnOdAQE4VmVjPEFjY291bnRJZD4AAThzbGFzaF9mcmFjdGlvbjEFARxQZXJiaWxsAAB5BQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBBDYWxsBARUAAEIGG1hbmFnZQQBCG9wfQUBTE1hbmFnZXJPcGVyYXRpb248VD4AABRMTWFuYWdlIHRoaXMgcGFsbGV0LgDoVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdLgAJAVNlZSBbYE1hbmFnZXJPcGVyYXRpb25gXSBmb3IgdmFyaW91cyBvcGVyYXRpb25zIHRoYXQgYXJlIHBvc3NpYmxlLhRhZG1pbgQBCG9whQUBREFkbWluT3BlcmF0aW9uPFQ+AAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLn0FCJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2tATWFuYWdlck9wZXJhdGlvbgQEVAABDEBGb3JjZVJvdGF0ZVJvdW5kAAAANEZvcmNlU2V0UGhhc2UEAIEFASBQaGFzZTxUPgABAERFbWVyZ2VuY3lGYWxsYmFjawACAACBBQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrFHR5cGVzFFBoYXNlBARUAAEgDE9mZgAAABhTaWduZWQEADgBREJsb2NrTnVtYmVyRm9yPFQ+AAEAQFNpZ25lZFZhbGlkYXRpb24EADgBREJsb2NrTnVtYmVyRm9yPFQ+AAIAIFVuc2lnbmVkBAA4AURCbG9ja051bWJlckZvcjxUPgADACBTbmFwc2hvdAQAOAEkUGFnZUluZGV4AAQAEERvbmUABQAYRXhwb3J0BAA4ASRQYWdlSW5kZXgABgAkRW1lcmdlbmN5AAcAAIUFCJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s4QWRtaW5PcGVyYXRpb24EBFQAAQhQRW1lcmdlbmN5U2V0U29sdXRpb24IAIkFAYRCb3g8Qm91bmRlZFN1cHBvcnRzT2Y8UGFsbGV0PFQ+Pj4AAKkFATRFbGVjdGlvblNjb3JlAAAAUFNldE1pblVudHJ1c3RlZFNjb3JlBACpBQE0RWxlY3Rpb25TY29yZQABAACJBQh8ZnJhbWVfZWxlY3Rpb25fcHJvdmlkZXJfc3VwcG9ydDxCb3VuZGVkU3VwcG9ydHMMJEFjY291bnRJZAEEGEJPdXRlcgAYQklubmVyAAAEAI0FAQkBQm91bmRlZFZlYzwoQWNjb3VudElkLCBCb3VuZGVkU3VwcG9ydDxBY2NvdW50SWQsIEJJbm5lcj4pLCBCT3V0ZXI+AACNBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZEFBFMAAAQApQUBGFZlYzxUPgAAkQUAAAQIBJUFAJUFCHxmcmFtZV9lbGVjdGlvbl9wcm92aWRlcl9zdXBwb3J0OEJvdW5kZWRTdXBwb3J0CCRBY2NvdW50SWQBBBRCb3VuZAAACAEUdG90YWyVAQE8RXh0ZW5kZWRCYWxhbmNlAAEYdm90ZXJzmQUBvEJvdW5kZWRWZWM8KEFjY291bnRJZCwgRXh0ZW5kZWRCYWxhbmNlKSwgQm91bmQ+AACZBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZ0FBFMAAAQAoQUBGFZlYzxUPgAAnQUAAAQIBJUBAKEFAAACnQUApQUAAAKRBQCpBQhEc3BfbnBvc19lbGVjdGlvbnM0RWxlY3Rpb25TY29yZQAADAE0bWluaW1hbF9zdGFrZZUBATxFeHRlbmRlZEJhbGFuY2UAASRzdW1fc3Rha2WVAQE8RXh0ZW5kZWRCYWxhbmNlAAFEc3VtX3N0YWtlX3NxdWFyZWSVAQE8RXh0ZW5kZWRCYWxhbmNlAACtBRSQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrEFEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdW5zaWduZWQYcGFsbGV0EENhbGwEBFQAAQQ8c3VibWl0X3Vuc2lnbmVkBAE4cGFnZWRfc29sdXRpb261BQGUQm94PFBhZ2VkUmF3U29sdXRpb248VDo6TWluZXJDb25maWc+PgAAPHBTdWJtaXQgYW4gdW5zaWduZWQgc29sdXRpb24uAFUBVGhpcyB3b3JrcyB2ZXJ5IG11Y2ggbGlrZSBhbiBpbmhlcmVudCwgYXMgb25seSB0aGUgdmFsaWRhdG9ycyBhcmUgcGVybWl0dGVkIHRvIHN1Ym1pdFkBYW55dGhpbmcuIEJ5IGRlZmF1bHQgdmFsaWRhdG9ycyB3aWxsIGNvbXB1dGUgdGhpcyBjYWxsIGluIHRoZWlyIGBvZmZjaGFpbl93b3JrZXJgIGhvb2tsYW5kIHRyeSBhbmQgc3VibWl0IGl0IGJhY2suAEUBVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBzaWduZWQgcGFnZSBzdWJtaXNzaW9uIG1haW5seSBpbiB0aGF0IHRoZSBzb2x1dGlvbiBwYWdlIGlzUHZlcmlmaWVkIG9uIHRoZSBmbHkuAD0BVGhlIGBwYWdlZF9zb2x1dGlvbmAgbWF5IGNvbnRhaW4gYXQgbW9zdCBbYENvbmZpZzo6TWluZXJQYWdlc2BdIHBhZ2VzLiBUaGV5IGFyZQ0BaW50ZXJwcmV0ZWQgYXMgbXNwIC0+IGxzcCwgYXMgcGVyIFtgY3JhdGU6OlBhbGxldDo6bXNwX3JhbmdlX2ZvcmBdLgBdAUZvciBleGFtcGxlLCBpZiBgUGFnZXMgPSA0YCwgYW5kIGBNaW5lclBhZ2VzID0gMmAsIG91ciBmdWxsIHNuYXBzaG90IHJhbmdlIHdvdWxkIGJlIFswLFUBMSwgMiwgM10sIHdpdGggMyBiZWluZyBtc3AuIEJ1dCwgaW4gdGhpcyBjYXNlLCB0aGVuIHRoZSBgcGFnZWRfcmF3X3NvbHV0aW9uLnBhZ2VzYCBpc9xleHBlY3RlZCB0byBjb3JyZXNwb25kIHRvIGBbc25hcHNob3QoMiksIHNuYXBzaG90KDMpXWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrUFDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sUdHlwZXNAUGFnZWRSYXdTb2x1dGlvbgQEVAAADAE4c29sdXRpb25fcGFnZXO5BQFIVmVjPFNvbHV0aW9uT2Y8VD4+AAEUc2NvcmWpBQE0RWxlY3Rpb25TY29yZQABFHJvdW5kOAEMdTMyAAC5BQAAAr0FAL0FDGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWUcc3Rha2luZ1ROcG9zQ29tcGFjdFNvbHV0aW9uMjQAAGABGHZvdGVzMcEFAAABGHZvdGVzMs0FAAABGHZvdGVzM+EFAAABGHZvdGVzNO0FAAABGHZvdGVzNfkFAAABGHZvdGVzNgUGAAABGHZvdGVzNxEGAAABGHZvdGVzOB0GAAABGHZvdGVzOSkGAAABHHZvdGVzMTA1BgAAARx2b3RlczExQQYAAAEcdm90ZXMxMk0GAAABHHZvdGVzMTNZBgAAARx2b3RlczE0ZQYAAAEcdm90ZXMxNXEGAAABHHZvdGVzMTZ9BgAAARx2b3RlczE3iQYAAAEcdm90ZXMxOJUGAAABHHZvdGVzMTmhBgAAARx2b3RlczIwrQYAAAEcdm90ZXMyMbkGAAABHHZvdGVzMjLFBgAAARx2b3RlczIz0QYAAAEcdm90ZXMyNN0GAAAAwQUAAALFBQDFBQAABAhkyQUAyQUAAAb5AwDNBQAAAtEFANEFAAAEDGTVBckFANUFAAAECMkF2QUA2QUAAAbdBQDdBQw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzGFBlclUxNgAABAD5AwEMdTE2AADhBQAAAuUFAOUFAAAEDGTpBckFAOkFAAADAgAAANUFAO0FAAAC8QUA8QUAAAQMZPUFyQUA9QUAAAMDAAAA1QUA+QUAAAL9BQD9BQAABAxkAQbJBQABBgAAAwQAAADVBQAFBgAAAgkGAAkGAAAEDGQNBskFAA0GAAADBQAAANUFABEGAAACFQYAFQYAAAQMZBkGyQUAGQYAAAMGAAAA1QUAHQYAAAIhBgAhBgAABAxkJQbJBQAlBgAAAwcAAADVBQApBgAAAi0GAC0GAAAEDGQxBskFADEGAAADCAAAANUFADUGAAACOQYAOQYAAAQMZD0GyQUAPQYAAAMJAAAA1QUAQQYAAAJFBgBFBgAABAxkSQbJBQBJBgAAAwoAAADVBQBNBgAAAlEGAFEGAAAEDGRVBskFAFUGAAADCwAAANUFAFkGAAACXQYAXQYAAAQMZGEGyQUAYQYAAAMMAAAA1QUAZQYAAAJpBgBpBgAABAxkbQbJBQBtBgAAAw0AAADVBQBxBgAAAnUGAHUGAAAEDGR5BskFAHkGAAADDgAAANUFAH0GAAACgQYAgQYAAAQMZIUGyQUAhQYAAAMPAAAA1QUAiQYAAAKNBgCNBgAABAxkkQbJBQCRBgAAAxAAAADVBQCVBgAAApkGAJkGAAAEDGSdBskFAJ0GAAADEQAAANUFAKEGAAACpQYApQYAAAQMZKkGyQUAqQYAAAMSAAAA1QUArQYAAAKxBgCxBgAABAxktQbJBQC1BgAAAxMAAADVBQC5BgAAAr0GAL0GAAAEDGTBBskFAMEGAAADFAAAANUFAMUGAAACyQYAyQYAAAQMZM0GyQUAzQYAAAMVAAAA1QUA0QYAAALVBgDVBgAABAxk2QbJBQDZBgAAAxYAAADVBQDdBgAAAuEGAOEGAAAEDGTlBskFAOUGAAADFwAAANUFAOkGEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBBDYWxsBARUAAEUIHJlZ2lzdGVyBAE0Y2xhaW1lZF9zY29yZakFATRFbGVjdGlvblNjb3JlAAAExFJlZ2lzdGVyIG9uZXNlbGYgZm9yIGFuIHVwY29taW5nIHNpZ25lZCBlbGVjdGlvbi4sc3VibWl0X3BhZ2UIARBwYWdlOAEkUGFnZUluZGV4AAE4bWF5YmVfc29sdXRpb27tBgGcT3B0aW9uPEJveDxTb2x1dGlvbk9mPFQ6Ok1pbmVyQ29uZmlnPj4+AAEgjFN1Ym1pdCBhIHNpbmdsZSBwYWdlIG9mIGEgc29sdXRpb24uALBNdXN0IGFsd2F5cyBjb21lIGFmdGVyIFtgUGFsbGV0OjpyZWdpc3RlcmBdLgDgYG1heWJlX3NvbHV0aW9uYCBjYW4gYmUgc2V0IHRvIGBOb25lYCB0byBlcmFzZSB0aGUgcGFnZS4ANQFDb2xsZWN0cyBkZXBvc2l0cyBmcm9tIHRoZSBzaWduZWQgb3JpZ2luIGJhc2VkIG9uIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFuZGxbYENvbmZpZzo6RGVwb3NpdFBlclBhZ2VgXS4QYmFpbAACFFRSZXRyYWN0IGEgc3VibWlzc2lvbi4ATQFBIHBvcnRpb24gb2YgdGhlIGRlcG9zaXQgbWF5IGJlIHJldHVybmVkLCBiYXNlZCBvbiB0aGUgW2BDb25maWc6OkVqZWN0R3JhY2VSYXRpb2BdLgDEVGhpcyB3aWxsIGZ1bGx5IHJlbW92ZSB0aGUgc29sdXRpb24gZnJvbSBzdG9yYWdlLlBjbGVhcl9vbGRfcm91bmRfZGF0YQgBFHJvdW5kOAEMdTMyAAE0d2l0bmVzc19wYWdlczgBDHUzMgADGMBDbGVhciB0aGUgZGF0YSBvZiBhIHN1Ym1pdHRlciBmb3JtIGFuIG9sZCByb3VuZC4AMQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIHNpZ25lZCwgYW5kIHRoZSBvcmlnaW5hbCBzdWJtaXR0ZXIuAF0BVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgZm9yIHN1Ym1pc3Npb25zIHRoYXQgZW5kIHVwIGJlaW5nIGRpc2NhcmRlZCwgYXMgaW4gdGhleSBhcmUgbm90xHByb2Nlc3NlZCBhbmQgdGhleSBlbmQgdXAgbGluZ2VyaW5nIGluIHRoZSBxdWV1ZS5Ec2V0X2ludnVsbmVyYWJsZXMEAQxpbnadAQFEVmVjPFQ6OkFjY291bnRJZD4ABAxoU2V0IHRoZSBpbnZ1bG5lcmFibGUgbGlzdC4AEQFEaXNwYXRjaCBvcmlnaW4gbXVzdCB0aGUgdGhlIHNhbWUgYXMgW2BjcmF0ZTo6Q29uZmlnOjpBZG1pbk9yaWdpbmBdLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7tBgQYT3B0aW9uBARUAb0FAQgQTm9uZQAAABBTb21lBAC9BQAAAQAA8QYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQQQ2FsbAQEVAABhBBib25kCAEUdmFsdWWRAQEwQmFsYW5jZU9mPFQ+AAEUcGF5ZWX1BgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgAAMGEBVGFrZSB0aGUgb3JpZ2luIGFjY291bnQgYXMgYSBzdGFzaCBhbmQgbG9jayB1cCBgdmFsdWVgIG9mIGl0cyBiYWxhbmNlLiBgY29udHJvbGxlcmAgd2lsbIBiZSB0aGUgYWNjb3VudCB0aGF0IGNvbnRyb2xzIGl0LgAtAWB2YWx1ZWAgbXVzdCBiZSBtb3JlIHRoYW4gdGhlIGBtaW5pbXVtX2JhbGFuY2VgIHNwZWNpZmllZCBieSBgVDo6Q3VycmVuY3lgLgAhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCBhY2NvdW50LgA8RW1pdHMgYEJvbmRlZGAuAE0BTk9URTogVHdvIG9mIHRoZSBzdG9yYWdlIHdyaXRlcyAoYFNlbGY6OmJvbmRlZGAsIGBTZWxmOjpwYXllZWApIGFyZSBfbmV2ZXJfIGNsZWFuZWRZAXVubGVzcyB0aGUgYG9yaWdpbmAgZmFsbHMgYmVsb3cgX2V4aXN0ZW50aWFsIGRlcG9zaXRfIChvciBlcXVhbCB0byAwKSBhbmQgZ2V0cyByZW1vdmVkIGFzIGR1c3QuKGJvbmRfZXh0cmEEAThtYXhfYWRkaXRpb25hbJEBATBCYWxhbmNlT2Y8VD4AAShhAUFkZCBzb21lIGV4dHJhIGFtb3VudCB0aGF0IGhhdmUgYXBwZWFyZWQgaW4gdGhlIHN0YXNoIGBmcmVlX2JhbGFuY2VgIGludG8gdGhlIGJhbGFuY2UgdXAwZm9yIHN0YWtpbmcuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoLCBub3QgdGhlIGNvbnRyb2xsZXIuAE0BVXNlIHRoaXMgaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgZnVuZHMgaW4geW91ciBzdGFzaCBhY2NvdW50IHRoYXQgeW91IHdpc2ggdG8gYm9uZC5VAVVubGlrZSBbYGJvbmRgXShTZWxmOjpib25kKSBvciBbYHVuYm9uZGBdKFNlbGY6OnVuYm9uZCkgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBpbXBvc2W8YW55IGxpbWl0YXRpb24gb24gdGhlIGFtb3VudCB0aGF0IGNhbiBiZSBhZGRlZC4APEVtaXRzIGBCb25kZWRgLhh1bmJvbmQEARR2YWx1ZZEBATBCYWxhbmNlT2Y8VD4AAkxRAVNjaGVkdWxlIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggdG8gYmUgdW5sb2NrZWQgcmVhZHkgZm9yIHRyYW5zZmVyIG91dCBhZnRlciB0aGUgYm9uZPxwZXJpb2QgZW5kcy4gSWYgdGhpcyBsZWF2ZXMgYW4gYW1vdW50IGFjdGl2ZWx5IGJvbmRlZCBsZXNzIHRoYW4hAVtgYXNzZXQ6OmV4aXN0ZW50aWFsX2RlcG9zaXRgXSwgdGhlbiBpdCBpcyBpbmNyZWFzZWQgdG8gdGhlIGZ1bGwgYW1vdW50LgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBFAU9uY2UgdGhlIHVubG9jayBwZXJpb2QgaXMgZG9uZSwgeW91IGNhbiBjYWxsIGB3aXRoZHJhd191bmJvbmRlZGAgdG8gYWN0dWFsbHkgbW92Zbx0aGUgZnVuZHMgb3V0IG9mIG1hbmFnZW1lbnQgcmVhZHkgZm9yIHRyYW5zZmVyLgAxAU5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTWF4VW5sb2NraW5nQ2h1bmtzYClBAWNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSWYgdGhlcmUgYXJlIG5vIHVubG9ja2luZyBjaHVua3Mgc2xvdHMgYXZhaWxhYmxlRQFbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gaXMgY2FsbGVkIHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AOQFJZiBhIHVzZXIgZW5jb3VudGVycyB0aGUgYEluc3VmZmljaWVudEJvbmRgIGVycm9yIHdoZW4gY2FsbGluZyB0aGlzIGV4dHJpbnNpYywZAXRoZXkgc2hvdWxkIGNhbGwgYGNoaWxsYCBmaXJzdCBpbiBvcmRlciB0byBmcmVlIHVwIHRoZWlyIGJvbmRlZCBmdW5kcy4AREVtaXRzIGBVbmJvbmRlZGAuAJRTZWUgYWxzbyBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0uRHdpdGhkcmF3X3VuYm9uZGVkBAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAANMKQFSZW1vdmUgYW55IHN0YWtlIHRoYXQgaGFzIGJlZW4gZnVsbHkgdW5ib25kZWQgYW5kIGlzIHJlYWR5IGZvciB3aXRoZHJhd2FsLgBVAVN0YWtlIGlzIGNvbnNpZGVyZWQgZnVsbHkgdW5ib25kZWQgb25jZSBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gaGFzIGVsYXBzZWQgc2luY2VdAXRoZSB1bmJvbmRpbmcgd2FzIGluaXRpYXRlZC4gSW4gcmFyZSBjYXNlc+KAlHN1Y2ggYXMgd2hlbiBvZmZlbmNlcyBmb3IgdGhlIHVuYm9uZGVkIGVyYVUBaGF2ZSBiZWVuIHJlcG9ydGVkIGJ1dCBub3QgeWV0IHByb2Nlc3NlZOKAlHdpdGhkcmF3YWwgaXMgcmVzdHJpY3RlZCB0byBlcmFzIGZvciB3aGljaIRhbGwgb2ZmZW5jZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4AJQFUaGUgdW5sb2NrZWQgc3Rha2Ugd2lsbCBiZSByZXR1cm5lZCBhcyBmcmVlIGJhbGFuY2UgaW4gdGhlIHN0YXNoIGFjY291bnQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIuAEhFbWl0cyBgV2l0aGRyYXduYC4AaFNlZSBhbHNvIFtgQ2FsbDo6dW5ib25kYF0uADQjIyBQYXJhbWV0ZXJzAFkBLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFJldGFpbmVkIG9ubHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk7IHRoaXNoICBwYXJhbWV0ZXIgaGFzIG5vIGVmZmVjdC4gdmFsaWRhdGUEARRwcmVmc/kGAThWYWxpZGF0b3JQcmVmcwAEFOREZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLiBub21pbmF0ZQQBHHRhcmdldHMBBwFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAFFA0BRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIGB0YXJnZXRzYCBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guFGNoaWxsAAYoxERlY2xhcmUgbm8gZGVzaXJlIHRvIGVpdGhlciB2YWxpZGF0ZSBvciBub21pbmF0ZS4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgA0IyMgQ29tcGxleGl0eeQtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS5QLSBDb250YWlucyBvbmUgcmVhZC7ELSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LiRzZXRfcGF5ZWUEARRwYXllZfUGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAcUtChSZS0pc2V0IHRoZSBwYXltZW50IHRhcmdldCBmb3IgYSBjb250cm9sbGVyLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLjhzZXRfY29udHJvbGxlcgAIIEUBKFJlLSlzZXRzIHRoZSBjb250cm9sbGVyIG9mIGEgc3Rhc2ggdG8gdGhlIHN0YXNoIGl0c2VsZi4gVGhpcyBmdW5jdGlvbiBwcmV2aW91c2x5TQFhY2NlcHRlZCBhIGBjb250cm9sbGVyYCBhcmd1bWVudCB0byBzZXQgdGhlIGNvbnRyb2xsZXIgdG8gYW4gYWNjb3VudCBvdGhlciB0aGFuIHRoZVkBc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdyBiZWVuIHJlbW92ZWQsIG5vdyBvbmx5IHNldHRpbmcgdGhlIGNvbnRyb2xsZXKMdG8gdGhlIHN0YXNoLCBpZiBpdCBpcyBub3QgYWxyZWFkeS4AUQFFZmZlY3RzIHdpbGwgYmUgZmVsdCBpbnN0YW50bHkgKGFzIHNvb24gYXMgdGhpcyBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5KS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci5Mc2V0X3ZhbGlkYXRvcl9jb3VudAQBDG5ld2QBDHUzMgAJDJBTZXRzIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycy4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LmBpbmNyZWFzZV92YWxpZGF0b3JfY291bnQEAShhZGRpdGlvbmFsZAEMdTMyAAoQ6EluY3JlbWVudHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIHVwIHRvIG1heGltdW0gb2ZUYFQ6Ok1heFZhbGlkYXRvclNldGAuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC5Uc2NhbGVfdmFsaWRhdG9yX2NvdW50BAEYZmFjdG9yBQcBHFBlcmNlbnQACxARAVNjYWxlIHVwIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyBieSBhIGZhY3RvciB1cCB0byBtYXhpbXVtIG9mVGBUOjpNYXhWYWxpZGF0b3JTZXRgLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuNGZvcmNlX25vX2VyYXMADCSsRm9yY2UgdGhlcmUgdG8gYmUgbm8gbmV3IGVyYXMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuOQFUaHVzIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBiZSBvbmdvaW5nIHdoZW4gdGhpcyBpcyBjYWxsZWQuIEluIHRoaXMgY2FzZSB0aGXcZWxlY3Rpb24gd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgbmV4dCBlcmEgaXMgdHJpZ2dlcmVkLjRmb3JjZV9uZXdfZXJhAA0oSQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXNzaW9uLiBBZnRlciB0aGlzLCBpdCB3aWxsIGJlnHJlc2V0IHRvIG5vcm1hbCAobm9uLWZvcmNlZCkgYmVoYXZpb3VyLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuRHNldF9pbnZ1bG5lcmFibGVzBAE0aW52dWxuZXJhYmxlc50BAURWZWM8VDo6QWNjb3VudElkPgAODMhTZXQgdGhlIHZhbGlkYXRvcnMgd2hvIGNhbm5vdCBiZSBzbGFzaGVkIChpZiBhbnkpLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuNGZvcmNlX3Vuc3Rha2UIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAPIAkBRm9yY2UgYSBjdXJyZW50IHN0YWtlciB0byBiZWNvbWUgY29tcGxldGVseSB1bnN0YWtlZCwgaW1tZWRpYXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC40IyMgUGFyYW1ldGVycwCwLSBgc3Rhc2hgOiBUaGUgc3Rhc2ggYWNjb3VudCB0byBiZSB1bnN0YWtlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LlBmb3JjZV9uZXdfZXJhX2Fsd2F5cwAQJAEBRm9yY2UgdGhlcmUgdG8gYmUgYSBuZXcgZXJhIGF0IHRoZSBlbmQgb2Ygc2Vzc2lvbnMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuVGNhbmNlbF9kZWZlcnJlZF9zbGFzaAgBDGVyYTgBIEVyYUluZGV4AAFEdmFsaWRhdG9yX3NsYXNoZXMJBwFwVmVjPChUOjpBY2NvdW50SWQsIFBlcmJpbGwpPgARLAkBQ2FuY2VscyBzY2hlZHVsZWQgc2xhc2hlcyBmb3IgYSBnaXZlbiBlcmEgYmVmb3JlIHRoZXkgYXJlIGFwcGxpZWQuAGEBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYFQ6OkFkbWluT3JpZ2luYCB0byBjYW5jZWwgcGVuZGluZyBzbGFzaGVzIGZvciBzcGVjaWZpZWQgdmFsaWRhdG9yc0kBaW4gYSBnaXZlbiBlcmEuIFRoZSBjYW5jZWxsZWQgc2xhc2hlcyBhcmUgc3RvcmVkIGFuZCB3aWxsIGJlIGNoZWNrZWQgd2hlbiBhcHBseWluZyBzbGFzaGVzLgA0IyMgUGFyYW1ldGVyc1UBLSBgZXJhYDogVGhlIHN0YWtpbmcgZXJhIGZvciB3aGljaCBzbGFzaGVzIHNob3VsZCBiZSBjYW5jZWxsZWQuIFRoaXMgaXMgdGhlIGVyYSB3aGVyZTUBICB0aGUgc2xhc2ggd291bGQgYmUgYXBwbGllZCwgbm90IHRoZSBlcmEgaW4gd2hpY2ggdGhlIG9mZmVuY2Ugd2FzIGNvbW1pdHRlZC5ZAS0gYHZhbGlkYXRvcl9zbGFzaGVzYDogQSBsaXN0IG9mIHZhbGlkYXRvciBzdGFzaCBhY2NvdW50cyBhbmQgdGhlaXIgc2xhc2ggZnJhY3Rpb25zIHRvPCAgYmUgY2FuY2VsbGVkLjhwYXlvdXRfc3Rha2VycwgBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4ABI0GQFQYXkgb3V0IG5leHQgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgBJAVRoZSByZXdhcmQgcGF5b3V0IGNvdWxkIGJlIHBhZ2VkIGluIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IG5vbWluYXRvcnMgYmFja2luZyB0aGVdAWB2YWxpZGF0b3Jfc3Rhc2hgLiBUaGlzIGNhbGwgd2lsbCBwYXlvdXQgdW5wYWlkIHBhZ2VzIGluIGFuIGFzY2VuZGluZyBvcmRlci4gVG8gY2xhaW0gYbRzcGVjaWZpYyBwYWdlLCB1c2UgYHBheW91dF9zdGFrZXJzX2J5X3BhZ2VgLmAA8ElmIGFsbCBwYWdlcyBhcmUgY2xhaW1lZCwgaXQgcmV0dXJucyBhbiBlcnJvciBgSW52YWxpZFBhZ2VgLhhyZWJvbmQEARR2YWx1ZZEBATBCYWxhbmNlT2Y8VD4AEwzcUmVib25kIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggc2NoZWR1bGVkIHRvIGJlIHVubG9ja2VkLgDUVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgY29udHJvbGxlci4ocmVhcF9zdGFzaAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyABRIXQFSZW1vdmUgYWxsIGRhdGEgc3RydWN0dXJlcyBjb25jZXJuaW5nIGEgc3Rha2VyL3N0YXNoIG9uY2UgaXQgaXMgYXQgYSBzdGF0ZSB3aGVyZSBpdCBjYW4FAWJlIGNvbnNpZGVyZWQgYGR1c3RgIGluIHRoZSBzdGFraW5nIHN5c3RlbS4gVGhlIHJlcXVpcmVtZW50cyBhcmU6AC0BMS4gdGhlIGB0b3RhbF9iYWxhbmNlYCBvZiB0aGUgc3Rhc2ggaXMgYmVsb3cgYG1pbl9jaGlsbGVkX2JvbmRgIG9yIGlzIHplcm8uOQEyLiBvciwgdGhlIGBsZWRnZXIudG90YWxgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyBgbWluX2NoaWxsZWRfYm9uZGAgb3IgaXMgemVyby4AVQFUaGUgZm9ybWVyIGNhbiBoYXBwZW4gaW4gY2FzZXMgbGlrZSBhIHNsYXNoOyB0aGUgbGF0dGVyIHdoZW4gYSBmdWxseSB1bmJvbmRlZCBhY2NvdW50CQFpcyBzdGlsbCByZWNlaXZpbmcgc3Rha2luZyByZXdhcmRzIGluIGBSZXdhcmREZXN0aW5hdGlvbjo6U3Rha2VkYC4AMQFJdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZSwgYXMgbG9uZyBhcyBgc3Rhc2hgIG1lZXRzIHRoZSBhYm92ZSByZXF1aXJlbWVudHMuANxSZWZ1bmRzIHRoZSB0cmFuc2FjdGlvbiBmZWVzIHVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24uADQjIyBQYXJhbWV0ZXJzAKgtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IHRvIGJlIHJlYXBlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LhBraWNrBAEMd2hvAQcBZFZlYzxBY2NvdW50SWRMb29rdXBPZjxUPj4AFSzgUmVtb3ZlIHRoZSBnaXZlbiBub21pbmF0aW9ucyBmcm9tIHRoZSBjYWxsaW5nIHZhbGlkYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBNAS0gYHdob2A6IEEgbGlzdCBvZiBub21pbmF0b3Igc3Rhc2ggYWNjb3VudHMgd2hvIGFyZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yIHdoaWNowCAgc2hvdWxkIG5vIGxvbmdlciBiZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yLgBVAU5vdGU6IE1ha2luZyB0aGlzIGNhbGwgb25seSBtYWtlcyBzZW5zZSBpZiB5b3UgZmlyc3Qgc2V0IHRoZSB2YWxpZGF0b3IgcHJlZmVyZW5jZXMgdG94YmxvY2sgYW55IGZ1cnRoZXIgbm9taW5hdGlvbnMuTHNldF9zdGFraW5nX2NvbmZpZ3MgAUhtaW5fbm9taW5hdG9yX2JvbmQRBwFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABSG1pbl92YWxpZGF0b3JfYm9uZBEHAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMbWF4X25vbWluYXRvcl9jb3VudBUHATRDb25maWdPcDx1MzI+AAFMbWF4X3ZhbGlkYXRvcl9jb3VudBUHATRDb25maWdPcDx1MzI+AAE8Y2hpbGxfdGhyZXNob2xkGQcBRENvbmZpZ09wPFBlcmNlbnQ+AAE4bWluX2NvbW1pc3Npb24dBwFEQ29uZmlnT3A8UGVyYmlsbD4AAUhtYXhfc3Rha2VkX3Jld2FyZHMZBwFEQ29uZmlnT3A8UGVyY2VudD4AAWBhcmVfbm9taW5hdG9yc19zbGFzaGFibGUhBwE4Q29uZmlnT3A8Ym9vbD4AFkSsVXBkYXRlIHRoZSB2YXJpb3VzIHN0YWtpbmcgY29uZmlndXJhdGlvbnMgLgAlASogYG1pbl9ub21pbmF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIG5vbWluYXRvci4lASogYG1pbl92YWxpZGF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIHZhbGlkYXRvci5VASogYG1heF9ub21pbmF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgbm9taW5hdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5VASogYG1heF92YWxpZGF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgdmFsaWRhdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5ZASogYGNoaWxsX3RocmVzaG9sZGA6IFRoZSByYXRpbyBvZiBgbWF4X25vbWluYXRvcl9jb3VudGAgb3IgYG1heF92YWxpZGF0b3JfY291bnRgIHdoaWNoGQEgIHNob3VsZCBiZSBmaWxsZWQgaW4gb3JkZXIgZm9yIHRoZSBgY2hpbGxfb3RoZXJgIHRyYW5zYWN0aW9uIHRvIHdvcmsuYQEqIGBtaW5fY29tbWlzc2lvbmA6IFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uVQEgIFRoaXMgaXMgY2hlY2tlZCBvbmx5IHVwb24gY2FsbGluZyBgdmFsaWRhdGVgLiBFeGlzdGluZyB2YWxpZGF0b3JzIGFyZSBub3QgYWZmZWN0ZWQuAMRSdW50aW1lT3JpZ2luIG11c3QgYmUgUm9vdCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uADUBTk9URTogRXhpc3Rpbmcgbm9taW5hdG9ycyBhbmQgdmFsaWRhdG9ycyB3aWxsIG5vdCBiZSBhZmZlY3RlZCBieSB0aGlzIHVwZGF0ZS4RAXRvIGtpY2sgcGVvcGxlIHVuZGVyIHRoZSBuZXcgbGltaXRzLCBgY2hpbGxfb3RoZXJgIHNob3VsZCBiZSBjYWxsZWQuLGNoaWxsX290aGVyBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAF2hBAURlY2xhcmUgYSBgY29udHJvbGxlcmAgdG8gc3RvcCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYnV0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLgBZAUlmIHRoZSBjYWxsZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZW4gbm8gZnVydGhlciBjaGVja3MgYXJl2GVuZm9yY2VkLCBhbmQgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGp1c3QgbGlrZSBgY2hpbGxgLgBdAUlmIHRoZSBjYWxsZXIgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczBtdXN0IGJlIG1ldDoAHQEqIGBjb250cm9sbGVyYCBtdXN0IGJlbG9uZyB0byBhIG5vbWluYXRvciB3aG8gaGFzIGJlY29tZSBub24tZGVjb2RhYmxlLAAMT3I6AD0BKiBBIGBDaGlsbFRocmVzaG9sZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQgd2hpY2ggZGVmaW5lcyBob3cgY2xvc2UgdG8gdGhlIG1heFUBICBub21pbmF0b3JzIG9yIHZhbGlkYXRvcnMgd2UgbXVzdCByZWFjaCBiZWZvcmUgdXNlcnMgY2FuIHN0YXJ0IGNoaWxsaW5nIG9uZS1hbm90aGVyLlkBKiBBIGBNYXhOb21pbmF0b3JDb3VudGAgYW5kIGBNYXhWYWxpZGF0b3JDb3VudGAgbXVzdCBiZSBzZXQgd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmWQICBob3cgY2xvc2Ugd2UgYXJlIHRvIHRoZSB0aHJlc2hvbGQuXQEqIEEgYE1pbk5vbWluYXRvckJvbmRgIGFuZCBgTWluVmFsaWRhdG9yQm9uZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQsIHdoaWNoIGRldGVybWluZXNRASAgaWYgdGhpcyBpcyBhIHBlcnNvbiB0aGF0IHNob3VsZCBiZSBjaGlsbGVkIGJlY2F1c2UgdGhleSBoYXZlIG5vdCBtZXQgdGhlIHRocmVzaG9sZEAgIGJvbmQgcmVxdWlyZWQuAFUBVGhpcyBjYW4gYmUgaGVscGZ1bCBpZiBib25kIHJlcXVpcmVtZW50cyBhcmUgdXBkYXRlZCwgYW5kIHdlIG5lZWQgdG8gcmVtb3ZlIG9sZCB1c2Vyc5h3aG8gZG8gbm90IHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLmhmb3JjZV9hcHBseV9taW5fY29tbWlzc2lvbgQBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAAYDEUBRm9yY2UgYSB2YWxpZGF0b3IgdG8gaGF2ZSBhdCBsZWFzdCB0aGUgbWluaW11bSBjb21taXNzaW9uLiBUaGlzIHdpbGwgbm90IGFmZmVjdCBhYQF2YWxpZGF0b3Igd2hvIGFscmVhZHkgaGFzIGEgY29tbWlzc2lvbiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0uIEFueSBhY2NvdW50OGNhbiBjYWxsIHRoaXMuSHNldF9taW5fY29tbWlzc2lvbgQBDG5ldzEFARxQZXJiaWxsABkQJQFTZXRzIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uAFkBVGhpcyBjYWxsIGhhcyBsb3dlciBwcml2aWxlZ2UgcmVxdWlyZW1lbnRzIHRoYW4gYHNldF9zdGFraW5nX2NvbmZpZ2AgYW5kIGNhbiBiZSBjYWxsZWTMYnkgdGhlIGBUOjpBZG1pbk9yaWdpbmAuIFJvb3QgY2FuIGFsd2F5cyBjYWxsIHRoaXMuWHBheW91dF9zdGFrZXJzX2J5X3BhZ2UMATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAAQxlcmE4ASBFcmFJbmRleAABEHBhZ2U4ARBQYWdlABpEMQFQYXkgb3V0IGEgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEgYW5kIHBhZ2UuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuMQEtIGBwYWdlYCBpcyB0aGUgcGFnZSBpbmRleCBvZiBub21pbmF0b3JzIHRvIHBheSBvdXQgd2l0aCB2YWx1ZSBiZXR3ZWVuIDAgYW5ksCAgYG51bV9ub21pbmF0b3JzIC8gVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgA9AUlmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gW2BDb25maWc6Ok1heEV4cG9zdXJlUGFnZVNpemVgXSBub21pbmF0b3JzIGJhY2tpbmcpAXRoZW0sIHRoZW4gdGhlIGxpc3Qgb2Ygbm9taW5hdG9ycyBpcyBwYWdlZCwgd2l0aCBlYWNoIHBhZ2UgYmVpbmcgY2FwcGVkIGF0VQFbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWAuXSBJZiBhIHZhbGlkYXRvciBoYXMgbW9yZSB0aGFuIG9uZSBwYWdlIG9mIG5vbWluYXRvcnMsSQF0aGUgY2FsbCBuZWVkcyB0byBiZSBtYWRlIGZvciBlYWNoIHBhZ2Ugc2VwYXJhdGVseSBpbiBvcmRlciBmb3IgYWxsIHRoZSBub21pbmF0b3JzVQFiYWNraW5nIGEgdmFsaWRhdG9yIHRvIHJlY2VpdmUgdGhlIHJld2FyZC4gVGhlIG5vbWluYXRvcnMgYXJlIG5vdCBzb3J0ZWQgYWNyb3NzIHBhZ2VzYQFhbmQgc28gaXQgc2hvdWxkIG5vdCBiZSBhc3N1bWVkIHRoZSBoaWdoZXN0IHN0YWtlciB3b3VsZCBiZSBvbiB0aGUgdG9wbW9zdCBwYWdlIGFuZCB2aWNlSQF2ZXJzYS4gSWYgcmV3YXJkcyBhcmUgbm90IGNsYWltZWQgaW4gW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMsIHRoZXkgYXJlIGxvc3QuMHVwZGF0ZV9wYXllZQQBKGNvbnRyb2xsZXIEATBUOjpBY2NvdW50SWQAGxjgTWlncmF0ZXMgYW4gYWNjb3VudCdzIGBSZXdhcmREZXN0aW5hdGlvbjo6Q29udHJvbGxlcmAgdG+kYFJld2FyZERlc3RpbmF0aW9uOjpBY2NvdW50KGNvbnRyb2xsZXIpYC4AUQFFZmZlY3RzIHdpbGwgYmUgZmVsdCBpbnN0YW50bHkgKGFzIHNvb24gYXMgdGhpcyBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5KS4AMQFUaGlzIHdpbGwgd2FpdmUgdGhlIHRyYW5zYWN0aW9uIGZlZSBpZiB0aGUgYHBheWVlYCBpcyBzdWNjZXNzZnVsbHkgbWlncmF0ZWQuaGRlcHJlY2F0ZV9jb250cm9sbGVyX2JhdGNoBAEsY29udHJvbGxlcnMlBwH0Qm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIFQ6Ok1heENvbnRyb2xsZXJzSW5EZXByZWNhdGlvbkJhdGNoPgAcHF0BVXBkYXRlcyBhIGJhdGNoIG9mIGNvbnRyb2xsZXIgYWNjb3VudHMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBzdGFzaCBhY2NvdW50IGlmIHRoZXkgYXJlYQFub3QgdGhlIHNhbWUuIElnbm9yZXMgYW55IGNvbnRyb2xsZXIgYWNjb3VudHMgdGhhdCBkbyBub3QgZXhpc3QsIGFuZCBkb2VzIG5vdCBvcGVyYXRlIGlmuHRoZSBzdGFzaCBhbmQgY29udHJvbGxlciBhcmUgYWxyZWFkeSB0aGUgc2FtZS4AUQFFZmZlY3RzIHdpbGwgYmUgZmVsdCBpbnN0YW50bHkgKGFzIHNvb24gYXMgdGhpcyBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5KS4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLjhyZXN0b3JlX2xlZGdlchABFHN0YXNoBAEwVDo6QWNjb3VudElkAAFAbWF5YmVfY29udHJvbGxlckEBAVBPcHRpb248VDo6QWNjb3VudElkPgABLG1heWJlX3RvdGFsYQQBUE9wdGlvbjxCYWxhbmNlT2Y8VD4+AAE8bWF5YmVfdW5sb2NraW5nKQcBFQFPcHRpb248Qm91bmRlZFZlYzxVbmxvY2tDaHVuazxCYWxhbmNlT2Y8VD4+LCBUOjoKTWF4VW5sb2NraW5nQ2h1bmtzPj4AHSwFAVJlc3RvcmVzIHRoZSBzdGF0ZSBvZiBhIGxlZGdlciB3aGljaCBpcyBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUuANxUaGUgcmVxdWlyZW1lbnRzIHRvIHJlc3RvcmUgYSBsZWRnZXIgYXJlIHRoZSBmb2xsb3dpbmc6ZCogVGhlIHN0YXNoIGlzIGJvbmRlZDsgb3INASogVGhlIHN0YXNoIGlzIG5vdCBib25kZWQgYnV0IGl0IGhhcyBhIHN0YWtpbmcgbG9jayBsZWZ0IGJlaGluZDsgb3IlASogSWYgdGhlIHN0YXNoIGhhcyBhbiBhc3NvY2lhdGVkIGxlZGdlciBhbmQgaXRzIHN0YXRlIGlzIGluY29uc2lzdGVudDsgb3IdASogSWYgdGhlIGxlZGdlciBpcyBub3QgY29ycnVwdGVkICpidXQqIGl0cyBzdGFraW5nIGxvY2sgaXMgb3V0IG9mIHN5bmMuAGEBVGhlIGBtYXliZV8qYCBpbnB1dCBwYXJhbWV0ZXJzIHdpbGwgb3ZlcndyaXRlIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgYW5kIG1ldGFkYXRhIG9mIHRoZVkBbGVkZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3Rhc2guIElmIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGFyZSBub3Qgc2V0LCB0aGUgbGVkZ2VyIHdpbGyQYmUgcmVzZXQgdmFsdWVzIGZyb20gb24tY2hhaW4gc3RhdGUuQG1pZ3JhdGVfY3VycmVuY3kEARRzdGFzaAQBMFQ6OkFjY291bnRJZAAeHNhNaWdyYXRlcyBwZXJtaXNzaW9ubGVzc2x5IGEgc3Rhc2ggZnJvbSBsb2NrcyB0byBob2xkcy4ASQFUaGlzIHJlbW92ZXMgdGhlIG9sZCBsb2NrIG9uIHRoZSBzdGFrZSBhbmQgY3JlYXRlcyBhIGhvbGQgb24gaXQgYXRvbWljYWxseS4gSWYgYWxsYQFzdGFrZSBjYW5ub3QgYmUgaGVsZCwgdGhlIGJlc3QgZWZmb3J0IGlzIG1hZGUgdG8gaG9sZCBhcyBtdWNoIGFzIHBvc3NpYmxlLiBUaGUgcmVtYWluaW5nhHN0YWtlIGlzIHJlbW92ZWQgZnJvbSB0aGUgbGVkZ2VyLgDEVGhlIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIG1pZ3JhdGlvbiBpcyBzdWNjZXNzZnVsLixhcHBseV9zbGFzaAgBJHNsYXNoX2VyYTgBIEVyYUluZGV4AAEkc2xhc2hfa2V5OQcBcChUOjpBY2NvdW50SWQsIFBlcmJpbGwsIHUzMikAH4QdAU1hbnVhbGx5IGFuZCBwZXJtaXNzaW9ubGVzc2x5IGFwcGxpZXMgYSBkZWZlcnJlZCBzbGFzaCBmb3IgYSBnaXZlbiBlcmEuAF0BTm9ybWFsbHksIHNsYXNoZXMgYXJlIGF1dG9tYXRpY2FsbHkgYXBwbGllZCBzaG9ydGx5IGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgYHNsYXNoX2VyYWAuWQFUaGUgYXV0b21hdGljIGFwcGxpY2F0aW9uIG9mIHNsYXNoZXMgaXMgaGFuZGxlZCBieSB0aGUgcGFsbGV0J3MgaW50ZXJuYWwgbG9naWMsIGFuZCBpdMx0cmllcyB0byBhcHBseSBvbmUgc2xhc2ggcGFnZSBwZXIgYmxvY2sgb2YgdGhlIGVyYS5VAUlmIGZvciBzb21lIHJlYXNvbiwgb25lIGVyYSBpcyBub3QgZW5vdWdoIGZvciBhcHBseWluZyBhbGwgc2xhc2ggcGFnZXMsIHRoZSByZW1haW5pbmfcc2xhc2hlcyBuZWVkIHRvIGJlIG1hbnVhbGx5IChwZXJtaXNzaW9ubGVzc2x5KSBhcHBsaWVkLgBJAUZvciBhIGdpdmVuIGVyYSB4LCBpZiBhdCBlcmEgeCsxLCBzbGFzaGVzIGFyZSBzdGlsbCB1bmFwcGxpZWQsIGFsbCB3aXRoZHJhd2FscyBnZXQhAWJsb2NrZWQsIGFuZCB0aGVzZSBuZWVkIHRvIGJlIG1hbnVhbGx5IGFwcGxpZWQgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLk0BVGhpcyBmdW5jdGlvbiBleGlzdHMgYXMgYSAqKmZhbGxiYWNrIG1lY2hhbmlzbSoqIGZvciB0aGlzIGV4dHJlbWUgc2l0dWF0aW9uLCBidXQgd2XMbmV2ZXIgZXhwZWN0IHRvIGVuY291bnRlciB0aGlzIGluIG5vcm1hbCBzY2VuYXJpb3MuAGEBVGhlIHBhcmFtZXRlcnMgZm9yIHRoaXMgY2FsbCBjYW4gYmUgcXVlcmllZCBieSBsb29raW5nIGF0IHRoZSBgVW5hcHBsaWVkU2xhc2hlc2Agc3RvcmFnZYxmb3IgZXJhcyBvbGRlciB0aGFuIHRoZSBhY3RpdmUgZXJhLgA0IyMgUGFyYW1ldGVycy0BLSBgc2xhc2hfZXJhYDogVGhlIHN0YWtpbmcgZXJhIGluIHdoaWNoIHRoZSBzbGFzaCB3YXMgb3JpZ2luYWxseSBzY2hlZHVsZWQuJQEtIGBzbGFzaF9rZXlgOiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc2xhc2gsIHJlcHJlc2VudGVkIGFzIGEgdHVwbGU6+CAgLSBgc3Rhc2hgOiBUaGUgc3Rhc2ggYWNjb3VudCBvZiB0aGUgdmFsaWRhdG9yIGJlaW5nIHNsYXNoZWQuBQEgIC0gYHNsYXNoX2ZyYWN0aW9uYDogVGhlIGZyYWN0aW9uIG9mIHRoZSBzdGFrZSB0aGF0IHdhcyBzbGFzaGVkLgUBICAtIGBwYWdlX2luZGV4YDogVGhlIGluZGV4IG9mIHRoZSBleHBvc3VyZSBwYWdlIGJlaW5nIHByb2Nlc3NlZC4ALCMjIEJlaGF2aW9y6C0gVGhlIGZ1bmN0aW9uIGlzICoqcGVybWlzc2lvbmxlc3MqKuKAlGFueW9uZSBjYW4gY2FsbCBpdC7wLSBUaGUgYHNsYXNoX2VyYWAgKiptdXN0IGJlIHRoZSBjdXJyZW50IGVyYSBvciBhIHBhc3QgZXJhKioubElmIGl0IGlzIGluIHRoZSBmdXR1cmUsIHRoZYggIGNhbGwgZmFpbHMgd2l0aCBgRXJhTm90U3RhcnRlZGAu5C0gVGhlIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIHNsYXNoIGlzIHN1Y2Nlc3NmdWxseSBhcHBsaWVkLgBUIyMgRnV0dXJlIEltcHJvdmVtZW50YQEtIEltcGxlbWVudCBhbiAqKm9mZi1jaGFpbiB3b3JrZXIgKE9DVykgdGFzayoqIHRvIGF1dG9tYXRpY2FsbHkgYXBwbHkgc2xhc2hlcyB3aGVuIHRoZXJluCAgaXMgdW51c2VkIGJsb2NrIHNwYWNlLCBpbXByb3ZpbmcgZWZmaWNpZW5jeS44cHJ1bmVfZXJhX3N0ZXAEAQxlcmE4ASBFcmFJbmRleAAgLGEBUGVyZm9ybSBvbmUgc3RlcCBvZiBlcmEgcHJ1bmluZyB0byBwcmV2ZW50IFBvViBzaXplIGV4aGF1c3Rpb24gZnJvbSB1bmJvdW5kZWQgZGVsZXRpb25zLgAxAVRoaXMgZXh0cmluc2ljIGVuYWJsZXMgcGVybWlzc2lvbmxlc3MgbGF6eSBwcnVuaW5nIG9mIGVyYSBkYXRhIGJ5IHBlcmZvcm1pbmctAWluY3JlbWVudGFsIGRlbGV0aW9uIG9mIHN0b3JhZ2UgaXRlbXMuIEVhY2ggY2FsbCBwcm9jZXNzZXMgYSBsaW1pdGVkIG51bWJlciUBb2YgaXRlbXMgYmFzZWQgb24gYXZhaWxhYmxlIGJsb2NrIHdlaWdodCB0byBhdm9pZCBleGNlZWRpbmcgYmxvY2sgbGltaXRzLgA1AVJldHVybnMgYFBheXM6Ok5vYCB3aGVuIHdvcmsgaXMgcGVyZm9ybWVkIHRvIGluY2VudGl2aXplIHJlZ3VsYXIgbWFpbnRlbmFuY2UuBQFBbnlvbmUgY2FuIGNhbGwgdGhpcyB0byBoZWxwIG1haW50YWluIHRoZSBjaGFpbidzIHN0b3JhZ2UgaGVhbHRoLgANAVRoZSBlcmEgbXVzdCBiZSBlbGlnaWJsZSBmb3IgcHJ1bmluZyAob2xkZXIgdGhhbiBIaXN0b3J5RGVwdGggKyAxKS45AUNoZWNrIGBFcmFQcnVuaW5nU3RhdGVgIHN0b3JhZ2UgdG8gc2VlIGlmIGFuIGVyYSBuZWVkcyBwcnVuaW5nIGJlZm9yZSBjYWxsaW5nLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy71BghQcGFsbGV0X3N0YWtpbmdfYXN5bmNEUmV3YXJkRGVzdGluYXRpb24EJEFjY291bnRJZAEEARQYU3Rha2VkAAAAFFN0YXNoAAEAKENvbnRyb2xsZXIAAgAcQWNjb3VudAQABAEkQWNjb3VudElkAAMAEE5vbmUABAAA+QYIUHBhbGxldF9zdGFraW5nX2FzeW5jOFZhbGlkYXRvclByZWZzAAAIAShjb21taXNzaW9u/QYBHFBlcmJpbGwAARxibG9ja2VkmQEBEGJvb2wAAP0GAAAGMQUAAQcAAAIAAAUHDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyY2VudAAABAAMAQh1OAAACQcAAAINBwANBwAABAgEMQUAEQcQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBlQEBDBBOb29wAAAADFNldAQAlQEBBFQAAQAYUmVtb3ZlAAIAABUHEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAAGQcQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBBQcBDBBOb29wAAAADFNldAQABQcBBFQAAQAYUmVtb3ZlAAIAAB0HEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUATEFAQwQTm9vcAAAAAxTZXQEADEFAQRUAAEAGFJlbW92ZQACAAAhBxBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAGZAQEMEE5vb3AAAAAMU2V0BACZAQEEVAABABhSZW1vdmUAAgAAJQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAnQEBGFZlYzxUPgAAKQcEGE9wdGlvbgQEVAEtBwEIEE5vbmUAAAAQU29tZQQALQcAAAEAAC0HDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBMQcEUwAABAA1BwEYVmVjPFQ+AAAxBwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYbGVkZ2VyLFVubG9ja0NodW5rBBxCYWxhbmNlAZUBAAgBFHZhbHVlkQEBHEJhbGFuY2UAAQxlcmFkASBFcmFJbmRleAAANQcAAAIxBwA5BwAABAwEMQU4AD0HDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0EENhbGwIBFQABEkAARgsc3BlbmRfbG9jYWwIARhhbW91bnSRAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADRLhQcm9wb3NlIGFuZCBhcHByb3ZlIGEgc3BlbmQgb2YgdHJlYXN1cnkgZnVuZHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4ARQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdCBgYW1vdW50YC4ALCMjIyBEZXRhaWxzRQFOT1RFOiBGb3IgcmVjb3JkLWtlZXBpbmcgcHVycG9zZXMsIHRoZSBwcm9wb3NlciBpcyBkZWVtZWQgdG8gYmUgZXF1aXZhbGVudCB0byB0aGUwYmVuZWZpY2lhcnkuADgjIyMgUGFyYW1ldGVyc0EBLSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB0cmVhc3VyeSB0byB0aGUgYGJlbmVmaWNpYXJ5YC7oLSBgYmVuZWZpY2lhcnlgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHRyYW5zZmVyLgAkIyMgRXZlbnRzALRFbWl0cyBbYEV2ZW50OjpTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC48cmVtb3ZlX2FwcHJvdmFsBAEscHJvcG9zYWxfaWRkATRQcm9wb3NhbEluZGV4AARULQFGb3JjZSBhIHByZXZpb3VzbHkgYXBwcm92ZWQgcHJvcG9zYWwgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhcHByb3ZhbCBxdWV1ZS4ASCMjIERpc3BhdGNoIE9yaWdpbgCETXVzdCBiZSBbYENvbmZpZzo6UmVqZWN0T3JpZ2luYF0uACgjIyBEZXRhaWxzAMBUaGUgb3JpZ2luYWwgZGVwb3NpdCB3aWxsIG5vIGxvbmdlciBiZSByZXR1cm5lZC4AOCMjIyBQYXJhbWV0ZXJzoC0gYHByb3Bvc2FsX2lkYDogVGhlIGluZGV4IG9mIGEgcHJvcG9zYWwAOCMjIyBDb21wbGV4aXR5rC0gTyhBKSB3aGVyZSBgQWAgaXMgdGhlIG51bWJlciBvZiBhcHByb3ZhbHMAKCMjIyBFcnJvcnNFAS0gW2BFcnJvcjo6UHJvcG9zYWxOb3RBcHByb3ZlZGBdOiBUaGUgYHByb3Bvc2FsX2lkYCBzdXBwbGllZCB3YXMgbm90IGZvdW5kIGluIHRoZVEBICBhcHByb3ZhbCBxdWV1ZSwgaS5lLiwgdGhlIHByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC4gVGhpcyBjb3VsZCBhbHNvIG1lYW4gdGhlWQEgIHByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IGFsdG9nZXRoZXIsIHRodXMgdGhlcmUgaXMgbm8gd2F5IGl0IHdvdWxkIGhhdmUgYmVlbiBhcHByb3ZlZFQgIGluIHRoZSBmaXJzdCBwbGFjZS4Uc3BlbmQQAShhc3NldF9raW5kQQcBREJveDxUOjpBc3NldEtpbmQ+AAEYYW1vdW50kQEBUEFzc2V0QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnlFBwF4Qm94PEJlbmVmaWNpYXJ5TG9va3VwT2Y8VCwgST4+AAEodmFsaWRfZnJvbdgBcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ABWi4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAB0BTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3RVAWBhbW91bnRgIG9mIGBhc3NldF9raW5kYCBpbiB0aGUgbmF0aXZlIGFzc2V0LiBUaGUgYW1vdW50IG9mIGBhc3NldF9raW5kYCBpcyBjb252ZXJ0ZWTUZm9yIGFzc2VydGlvbiB1c2luZyB0aGUgW2BDb25maWc6OkJhbGFuY2VDb252ZXJ0ZXJgXS4AKCMjIERldGFpbHMASQFDcmVhdGUgYW4gYXBwcm92ZWQgc3BlbmQgZm9yIHRyYW5zZmVycmluZyBhIHNwZWNpZmljIGBhbW91bnRgIG9mIGBhc3NldF9raW5kYCB0byBhYQFkZXNpZ25hdGVkIGJlbmVmaWNpYXJ5LiBUaGUgc3BlbmQgbXVzdCBiZSBjbGFpbWVkIHVzaW5nIHRoZSBgcGF5b3V0YCBkaXNwYXRjaGFibGUgd2l0aGludHRoZSBbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0uADgjIyMgUGFyYW1ldGVycxUBLSBgYXNzZXRfa2luZGA6IEFuIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWMgYXNzZXQgY2xhc3MgdG8gYmUgc3BlbnQuQQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHRyZWFzdXJ5IHRvIHRoZSBgYmVuZWZpY2lhcnlgLrgtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBvZiB0aGUgc3BlbmQuVQEtIGB2YWxpZF9mcm9tYDogVGhlIGJsb2NrIG51bWJlciBmcm9tIHdoaWNoIHRoZSBzcGVuZCBjYW4gYmUgY2xhaW1lZC4gSXQgY2FuIHJlZmVyIHRvGQEgIHRoZSBwYXN0IGlmIHRoZSByZXN1bHRpbmcgc3BlbmQgaGFzIG5vdCB5ZXQgZXhwaXJlZCBhY2NvcmRpbmcgdG8gdGhlRQEgIFtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXS4gSWYgYE5vbmVgLCB0aGUgc3BlbmQgY2FuIGJlIGNsYWltZWQgaW1tZWRpYXRlbHkgYWZ0ZXIsICBhcHByb3ZhbC4AJCMjIEV2ZW50cwDIRW1pdHMgW2BFdmVudDo6QXNzZXRTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC4YcGF5b3V0BAEUaW5kZXg4AShTcGVuZEluZGV4AAZMOENsYWltIGEgc3BlbmQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AOE11c3QgYmUgc2lnbmVkACgjIyBEZXRhaWxzAFUBU3BlbmRzIG11c3QgYmUgY2xhaW1lZCB3aXRoaW4gc29tZSB0ZW1wb3JhbCBib3VuZHMuIEEgc3BlbmQgbWF5IGJlIGNsYWltZWQgd2l0aGluIG9uZdRbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0gZnJvbSB0aGUgYHZhbGlkX2Zyb21gIGJsb2NrLlUBSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgc3BlbmQgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZSBgY2hlY2tfc3RhdHVzYNxkaXNwYXRjaGFibGUgYmVmb3JlIHJldHJ5aW5nIHdpdGggdGhlIGN1cnJlbnQgZnVuY3Rpb24uADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwCQRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNoZWNrX3N0YXR1cwQBFGluZGV4OAEoU3BlbmRJbmRleAAHTCkBQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlbmQgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBzdG9yYWdlIGlmIHByb2Nlc3NlZC4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAAEBVGhlIHN0YXR1cyBjaGVjayBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgcmV0cnlpbmcgYSBmYWlsZWQgcGF5b3V0LkkBSWYgYSBzcGVuZCBoYXMgZWl0aGVyIHN1Y2NlZWRlZCBvciBleHBpcmVkLCBpdCBpcyByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UgYnkgdGhpc+xmdW5jdGlvbi4gSW4gc3VjaCBpbnN0YW5jZXMsIHRyYW5zYWN0aW9uIGZlZXMgYXJlIHJlZnVuZGVkLgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMA+EVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgc3BlbmQgcGF5b3V0IGhhcyBmYWlsZWQuAQFFbWl0cyBbYEV2ZW50OjpTcGVuZFByb2Nlc3NlZGBdIGlmIHRoZSBzcGVuZCBwYXlvdXQgaGFzIHN1Y2NlZWQuKHZvaWRfc3BlbmQEARRpbmRleDgBKFNwZW5kSW5kZXgACEB8Vm9pZCBwcmV2aW91c2x5IGFwcHJvdmVkIHNwZW5kLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAIRNdXN0IGJlIFtgQ29uZmlnOjpSZWplY3RPcmlnaW5gXS4AKCMjIERldGFpbHMAHQFBIHNwZW5kIHZvaWQgaXMgb25seSBwb3NzaWJsZSBpZiB0aGUgcGF5b3V0IGhhcyBub3QgYmVlbiBhdHRlbXB0ZWQgeWV0LgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMAwEVtaXRzIFtgRXZlbnQ6OkFzc2V0U3BlbmRWb2lkZWRgXSBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5BBwxccG9sa2Fkb3RfcnVudGltZV9jb21tb24UaW1wbHNcVmVyc2lvbmVkTG9jYXRhYmxlQXNzZXQAAQwIVjMIASBsb2NhdGlvbukBAUR4Y206OnYzOjpMb2NhdGlvbgABIGFzc2V0X2lkiQIBQHhjbTo6djM6OkFzc2V0SWQAAwAIVjQIASBsb2NhdGlvbgUCAUR4Y206OnY0OjpMb2NhdGlvbgABIGFzc2V0X2lk/QIBQHhjbTo6djQ6OkFzc2V0SWQABAAIVjUIASBsb2NhdGlvbjkCAUR4Y206OnY1OjpMb2NhdGlvbgABIGFzc2V0X2lkSQMBQHhjbTo6djU6OkFzc2V0SWQABQAARQcMRHBhcmFjaGFpbnNfY29tbW9uDHBheWRWZXJzaW9uZWRMb2NhdGFibGVBY2NvdW50AAEICFY0CAEgbG9jYXRpb24FAgFEeGNtOjp2NDo6TG9jYXRpb24AAShhY2NvdW50X2lkBQIBRHhjbTo6djQ6OkxvY2F0aW9uAAQACFY1CAEgbG9jYXRpb245AgFEeGNtOjp2NTo6TG9jYXRpb24AAShhY2NvdW50X2lkOQIBRHhjbTo6djU6OkxvY2F0aW9uAAUAAEkHDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0EENhbGwIBFQABEkAARgQdm90ZQgBKHBvbGxfaW5kZXhkAURQb2xsSW5kZXhPZjxULCBJPgABEHZvdGVNBwFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgAAJBkBVm90ZSBpbiBhIHBvbGwuIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7hvdGhlcndpc2UgaXQgaXMgYSB2b3RlIHRvIGtlZXAgdGhlIHN0YXR1cyBxdW8uAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDILSBgcG9sbF9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcG9sbCB0byB2b3RlIGZvci6ELSBgdm90ZWA6IFRoZSB2b3RlIGNvbmZpZ3VyYXRpb24uABUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBoYXMgdm90ZWQgb24uIGRlbGVnYXRlEAEUY2xhc3P5AwE0Q2xhc3NPZjxULCBJPgABCHRvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShjb252aWN0aW9uVQcBKENvbnZpY3Rpb24AARxiYWxhbmNllQEBPEJhbGFuY2VPZjxULCBJPgABXE0BRGVsZWdhdGUgdGhlIHZvdGluZyBwb3dlciAod2l0aCBzb21lIGdpdmVuIGNvbnZpY3Rpb24pIG9mIHRoZSBzZW5kaW5nIGFjY291bnQgZm9yIGFocGFydGljdWxhciBjbGFzcyBvZiBwb2xscy4AVQFUaGUgYmFsYW5jZSBkZWxlZ2F0ZWQgaXMgbG9ja2VkIGZvciBhcyBsb25nIGFzIGl0J3MgZGVsZWdhdGVkLCBhbmQgdGhlcmVhZnRlciBmb3IgdGhlyHRpbWUgYXBwcm9wcmlhdGUgZm9yIHRoZSBjb252aWN0aW9uJ3MgbG9jayBwZXJpb2QuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBlaXRoZXI6dCAgLSBiZSBkZWxlZ2F0aW5nIGFscmVhZHk7IG9yRQEgIC0gaGF2ZSBubyB2b3RpbmcgYWN0aXZpdHkgKGlmIHRoZXJlIGlzLCB0aGVuIGl0IHdpbGwgbmVlZCB0byBiZSByZW1vdmVkIHRocm91Z2hMICAgIGByZW1vdmVfdm90ZWApLgBFAS0gYHRvYDogVGhlIGFjY291bnQgd2hvc2Ugdm90aW5nIHRoZSBgdGFyZ2V0YCBhY2NvdW50J3Mgdm90aW5nIHBvd2VyIHdpbGwgZm9sbG93Ll0BLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gZGVsZWdhdGUuIFRvIGRlbGVnYXRlIG11bHRpcGxlIGNsYXNzZXMsIG11bHRpcGxlIGNhbGxzgCAgdG8gdGhpcyBmdW5jdGlvbiBhcmUgcmVxdWlyZWQuVQEtIGBjb252aWN0aW9uYDogVGhlIGNvbnZpY3Rpb24gdGhhdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBkZWxlZ2F0ZWQgdm90ZXMuIFdoZW4gdGhlQQEgIGFjY291bnQgaXMgdW5kZWxlZ2F0ZWQsIHRoZSBmdW5kcyB3aWxsIGJlIGxvY2tlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcGVyaW9kLmEBLSBgYmFsYW5jZWA6IFRoZSBhbW91bnQgb2YgdGhlIGFjY291bnQncyBiYWxhbmNlIHRvIGJlIHVzZWQgaW4gZGVsZWdhdGluZy4gVGhpcyBtdXN0IG5vdLQgIGJlIG1vcmUgdGhhbiB0aGUgYWNjb3VudCdzIGN1cnJlbnQgYmFsYW5jZS4ASEVtaXRzIGBEZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuKHVuZGVsZWdhdGUEARRjbGFzc/kDATRDbGFzc09mPFQsIEk+AAI4TQFVbmRlbGVnYXRlIHRoZSB2b3RpbmcgcG93ZXIgb2YgdGhlIHNlbmRpbmcgYWNjb3VudCBmb3IgYSBwYXJ0aWN1bGFyIGNsYXNzIG9mIHBvbGxzLgBdAVRva2VucyBtYXkgYmUgdW5sb2NrZWQgZm9sbG93aW5nIG9uY2UgYW4gYW1vdW50IG9mIHRpbWUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2NrIHBlcmlvZAkBb2YgdGhlIGNvbnZpY3Rpb24gd2l0aCB3aGljaCB0aGUgZGVsZWdhdGlvbiB3YXMgaXNzdWVkIGhhcyBwYXNzZWQuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlVGN1cnJlbnRseSBkZWxlZ2F0aW5nLgDwLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gcmVtb3ZlIHRoZSBkZWxlZ2F0aW9uIGZyb20uAFBFbWl0cyBgVW5kZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuGHVubG9jawgBFGNsYXNz+QMBNENsYXNzT2Y8VCwgST4AARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADJF0BUmVtb3ZlIHRoZSBsb2NrIGNhdXNlZCBieSBwcmlvciB2b3RpbmcvZGVsZWdhdGluZyB3aGljaCBoYXMgZXhwaXJlZCB3aXRoaW4gYSBwYXJ0aWN1bGFyGGNsYXNzLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AoC0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIHVubG9jay64LSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIHRoZSBsb2NrIG9uLgC8V2VpZ2h0OiBgTyhSKWAgd2l0aCBSIG51bWJlciBvZiB2b3RlIG9mIHRhcmdldC4scmVtb3ZlX3ZvdGUIARRjbGFzc1kHAVRPcHRpb248Q2xhc3NPZjxULCBJPj4AARRpbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAR0ZFJlbW92ZSBhIHZvdGUgZm9yIGEgcG9sbC4ADElmOnAtIHRoZSBwb2xsIHdhcyBjYW5jZWxsZWQsIG9yZC0gdGhlIHBvbGwgaXMgb25nb2luZywgb3J4LSB0aGUgcG9sbCBoYXMgZW5kZWQgc3VjaCB0aGF0/CAgLSB0aGUgdm90ZSBvZiB0aGUgYWNjb3VudCB3YXMgaW4gb3Bwb3NpdGlvbiB0byB0aGUgcmVzdWx0OyBvctQgIC0gdGhlcmUgd2FzIG5vIGNvbnZpY3Rpb24gdG8gdGhlIGFjY291bnQncyB2b3RlOyBvcoQgIC0gdGhlIGFjY291bnQgbWFkZSBhIHNwbGl0IHZvdGVdAS4uLnRoZW4gdGhlIHZvdGUgaXMgcmVtb3ZlZCBjbGVhbmx5IGFuZCBhIGZvbGxvd2luZyBjYWxsIHRvIGB1bmxvY2tgIG1heSByZXN1bHQgaW4gbW9yZVhmdW5kcyBiZWluZyBhdmFpbGFibGUuAJBJZiwgaG93ZXZlciwgdGhlIHBvbGwgaGFzIGVuZGVkIGFuZDrsLSBpdCBmaW5pc2hlZCBjb3JyZXNwb25kaW5nIHRvIHRoZSB2b3RlIG9mIHRoZSBhY2NvdW50LCBhbmTcLSB0aGUgYWNjb3VudCBtYWRlIGEgc3RhbmRhcmQgdm90ZSB3aXRoIGNvbnZpY3Rpb24sIGFuZLwtIHRoZSBsb2NrIHBlcmlvZCBvZiB0aGUgY29udmljdGlvbiBpcyBub3Qgb3ZlclkBLi4udGhlbiB0aGUgbG9jayB3aWxsIGJlIGFnZ3JlZ2F0ZWQgaW50byB0aGUgb3ZlcmFsbCBhY2NvdW50J3MgbG9jaywgd2hpY2ggbWF5IGludm9sdmVZASpvdmVybG9ja2luZyogKHdoZXJlIHRoZSB0d28gbG9ja3MgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgbG9jayB0aGF0IGlzIHRoZSBtYXhpbXVt5G9mIGJvdGggdGhlIGFtb3VudCBsb2NrZWQgYW5kIHRoZSB0aW1lIGlzIGl0IGxvY2tlZCBmb3IpLgBJAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8sIGFuZCB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhIHZvdGVwcmVnaXN0ZXJlZCBmb3IgcG9sbCBgaW5kZXhgLgDcLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLlUBLSBgY2xhc3NgOiBPcHRpb25hbCBwYXJhbWV0ZXIsIGlmIGdpdmVuIGl0IGluZGljYXRlcyB0aGUgY2xhc3Mgb2YgdGhlIHBvbGwuIEZvciBwb2xsc/AgIHdoaWNoIGhhdmUgZmluaXNoZWQgb3IgYXJlIGNhbmNlbGxlZCwgdGhpcyBtdXN0IGJlIGBTb21lYC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuRHJlbW92ZV9vdGhlcl92b3RlDAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRjbGFzc/kDATRDbGFzc09mPFQsIEk+AAEUaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgAFQGRSZW1vdmUgYSB2b3RlIGZvciBhIHBvbGwuAE0BSWYgdGhlIGB0YXJnZXRgIGlzIGVxdWFsIHRvIHRoZSBzaWduZXIsIHRoZW4gdGhpcyBmdW5jdGlvbiBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8tAWByZW1vdmVfdm90ZWAuIElmIG5vdCBlcXVhbCB0byB0aGUgc2lnbmVyLCB0aGVuIHRoZSB2b3RlIG11c3QgaGF2ZSBleHBpcmVkLCUBZWl0aGVyIGJlY2F1c2UgdGhlIHBvbGwgd2FzIGNhbmNlbGxlZCwgYmVjYXVzZSB0aGUgdm90ZXIgbG9zdCB0aGUgcG9sbCBvcphiZWNhdXNlIHRoZSBjb252aWN0aW9uIHBlcmlvZCBpcyBvdmVyLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AYQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkOyB0aGlzIGFjY291bnQgbXVzdCBoYXZlIHZvdGVkIGZvciBwb2xsKCAgYGluZGV4YC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLoQtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiB0aGUgcG9sbC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLk0HDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZSxBY2NvdW50Vm90ZQQcQmFsYW5jZQGVAQEMIFN0YW5kYXJkCAEQdm90ZVEHARBWb3RlAAEcYmFsYW5jZZUBARxCYWxhbmNlAAAAFFNwbGl0CAEMYXlllQEBHEJhbGFuY2UAAQxuYXmVAQEcQmFsYW5jZQABADBTcGxpdEFic3RhaW4MAQxheWWVAQEcQmFsYW5jZQABDG5heZUBARxCYWxhbmNlAAEcYWJzdGFpbpUBARxCYWxhbmNlAAIAAFEHDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRBWb3RlAAAEAAwAAABVBwxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nKGNvbnZpY3Rpb24oQ29udmljdGlvbgABHBBOb25lAAAAIExvY2tlZDF4AAEAIExvY2tlZDJ4AAIAIExvY2tlZDN4AAMAIExvY2tlZDR4AAQAIExvY2tlZDV4AAUAIExvY2tlZDZ4AAYAAFkHBBhPcHRpb24EBFQB+QMBCBBOb25lAAAAEFNvbWUEAPkDAAABAABdBwxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQQQ2FsbAgEVAAESQABJBhzdWJtaXQMATxwcm9wb3NhbF9vcmlnaW79AwFcQm94PFBhbGxldHNPcmlnaW5PZjxUPj4AASBwcm9wb3NhbGEHAUxCb3VuZGVkQ2FsbE9mPFQsIEk+AAFAZW5hY3RtZW50X21vbWVudGkHAYhEaXNwYXRjaFRpbWU8QmxvY2tOdW1iZXJGb3I8VCwgST4+AAAksFByb3Bvc2UgYSByZWZlcmVuZHVtIG9uIGEgcHJpdmlsZWdlZCBhY3Rpb24uAFkBLSBgb3JpZ2luYDogbXVzdCBiZSBgU3VibWl0T3JpZ2luYCBhbmQgdGhlIGFjY291bnQgbXVzdCBoYXZlIGBTdWJtaXNzaW9uRGVwb3NpdGAgZnVuZHMwICBhdmFpbGFibGUuLQEtIGBwcm9wb3NhbF9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIHByb3Bvc2FsIHNob3VsZCBiZSBleGVjdXRlZC5sLSBgcHJvcG9zYWxgOiBUaGUgcHJvcG9zYWwuFQEtIGBlbmFjdG1lbnRfbW9tZW50YDogVGhlIG1vbWVudCB0aGF0IHRoZSBwcm9wb3NhbCBzaG91bGQgYmUgZW5hY3RlZC4ASEVtaXRzIGBTdWJtaXR0ZWRgLlhwbGFjZV9kZWNpc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAASCsUG9zdCB0aGUgRGVjaXNpb24gRGVwb3NpdCBmb3IgYSByZWZlcmVuZHVtLgA5AS0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBhY2NvdW50IG11c3QgaGF2ZSBmdW5kcyBhdmFpbGFibGUgZm9yIHRoZaAgIHJlZmVyZW5kdW0ncyB0cmFjaydzIERlY2lzaW9uIERlcG9zaXQuUQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgc3VibWl0dGVkIHJlZmVyZW5kdW0gd2hvc2UgRGVjaXNpb24gRGVwb3NpdCBpcyB5ZXQgdG8gYmUkICBwb3N0ZWQuAHhFbWl0cyBgRGVjaXNpb25EZXBvc2l0UGxhY2VkYC5ccmVmdW5kX2RlY2lzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAACHCkBUmVmdW5kIHRoZSBEZWNpc2lvbiBEZXBvc2l0IGZvciBhIGNsb3NlZCByZWZlcmVuZHVtIGJhY2sgdG8gdGhlIGRlcG9zaXRvci4AnC0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgb3IgYFJvb3RgLk0BLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgYSBjbG9zZWQgcmVmZXJlbmR1bSB3aG9zZSBEZWNpc2lvbiBEZXBvc2l0IGhhcyBub3QgeWV0IGJlZW4sICByZWZ1bmRlZC4AgEVtaXRzIGBEZWNpc2lvbkRlcG9zaXRSZWZ1bmRlZGAuGGNhbmNlbAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAMYdENhbmNlbCBhbiBvbmdvaW5nIHJlZmVyZW5kdW0uAJwtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgQ2FuY2VsT3JpZ2luYC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHJlZmVyZW5kdW0gdG8gYmUgY2FuY2VsbGVkLgBIRW1pdHMgYENhbmNlbGxlZGAuEGtpbGwEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAEGNBDYW5jZWwgYW4gb25nb2luZyByZWZlcmVuZHVtIGFuZCBzbGFzaCB0aGUgZGVwb3NpdHMuAJQtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgS2lsbE9yaWdpbmAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWZlcmVuZHVtIHRvIGJlIGNhbmNlbGxlZC4AkEVtaXRzIGBLaWxsZWRgIGFuZCBgRGVwb3NpdFNsYXNoZWRgLkBudWRnZV9yZWZlcmVuZHVtBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABRAdAUFkdmFuY2UgYSByZWZlcmVuZHVtIG9udG8gaXRzIG5leHQgbG9naWNhbCBzdGF0ZS4gT25seSB1c2VkIGludGVybmFsbHkuAGwtIGBvcmlnaW5gOiBtdXN0IGJlIGBSb290YC6kLSBgaW5kZXhgOiB0aGUgcmVmZXJlbmR1bSB0byBiZSBhZHZhbmNlZC5Ib25lX2Zld2VyX2RlY2lkaW5nBAEUdHJhY2v5AwE8VHJhY2tJZE9mPFQsIEk+AAYkCQFBZHZhbmNlIGEgdHJhY2sgb250byBpdHMgbmV4dCBsb2dpY2FsIHN0YXRlLiBPbmx5IHVzZWQgaW50ZXJuYWxseS4AbC0gYG9yaWdpbmA6IG11c3QgYmUgYFJvb3RgLpAtIGB0cmFja2A6IHRoZSB0cmFjayB0byBiZSBhZHZhbmNlZC4AUQFBY3Rpb24gaXRlbSBmb3Igd2hlbiB0aGVyZSBpcyBub3cgb25lIGZld2VyIHJlZmVyZW5kdW0gaW4gdGhlIGRlY2lkaW5nIHBoYXNlIGFuZCB0aGUVAWBEZWNpZGluZ0NvdW50YCBpcyBub3QgeWV0IHVwZGF0ZWQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBzaG91bGQgZWl0aGVyOiUBLSBiZWdpbiBkZWNpZGluZyBhbm90aGVyIHJlZmVyZW5kdW0gKGFuZCBsZWF2ZSBgRGVjaWRpbmdDb3VudGAgYWxvbmUpOyBvcnAtIGRlY3JlbWVudCBgRGVjaWRpbmdDb3VudGAuZHJlZnVuZF9zdWJtaXNzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAHHDEBUmVmdW5kIHRoZSBTdWJtaXNzaW9uIERlcG9zaXQgZm9yIGEgY2xvc2VkIHJlZmVyZW5kdW0gYmFjayB0byB0aGUgZGVwb3NpdG9yLgCcLSBgb3JpZ2luYDogbXVzdCBiZSBgU2lnbmVkYCBvciBgUm9vdGAuVQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBhIGNsb3NlZCByZWZlcmVuZHVtIHdob3NlIFN1Ym1pc3Npb24gRGVwb3NpdCBoYXMgbm90IHlldCBiZWVuLCAgcmVmdW5kZWQuAIhFbWl0cyBgU3VibWlzc2lvbkRlcG9zaXRSZWZ1bmRlZGAuMHNldF9tZXRhZGF0YQgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAEobWF5YmVfaGFzaG0HATxPcHRpb248VDo6SGFzaD4ACByYU2V0IG9yIGNsZWFyIG1ldGFkYXRhIG9mIGEgcmVmZXJlbmR1bS4ALFBhcmFtZXRlcnM6RQEtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgIGJ5IGEgY3JlYXRvciBvZiBhIHJlZmVyZW5kdW0gb3IgYnkgYW55b25lIHRvIGNsZWFyIGGQICBtZXRhZGF0YSBvZiBhIGZpbmlzaGVkIHJlZmVyZW5kdW0uDQEtIGBpbmRleGA6ICBUaGUgaW5kZXggb2YgYSByZWZlcmVuZHVtIHRvIHNldCBvciBjbGVhciBtZXRhZGF0YSBmb3IuUQEtIGBtYXliZV9oYXNoYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlLiBgTm9uZWAgdG8gY2xlYXIgYSBtZXRhZGF0YS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuYQcQNGZyYW1lX3N1cHBvcnQYdHJhaXRzJHByZWltYWdlcxxCb3VuZGVkCARUASAESAFlBwEMGExlZ2FjeQQBEGhhc2hAASRIOjpPdXRwdXQAAAAYSW5saW5lBABdBAE0Qm91bmRlZElubGluZQABABhMb29rdXAIARBoYXNoQAEkSDo6T3V0cHV0AAEMbGVuOAEMdTMyAAIAAGUHDChzcF9ydW50aW1lGHRyYWl0cyxCbGFrZVR3bzI1NgAAAABpBxA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgc2NoZWR1bGUwRGlzcGF0Y2hUaW1lBCxCbG9ja051bWJlcgE4AQgIQXQEADgBLEJsb2NrTnVtYmVyAAAAFEFmdGVyBAA4ASxCbG9ja051bWJlcgABAABtBwQYT3B0aW9uBARUAUABCBBOb25lAAAAEFNvbWUEAEAAAAEAAHEHDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBBDYWxsBARUAAEQOHdoaXRlbGlzdF9jYWxsBAEkY2FsbF9oYXNoQAEcVDo6SGFzaAAAAFxyZW1vdmVfd2hpdGVsaXN0ZWRfY2FsbAQBJGNhbGxfaGFzaEABHFQ6Okhhc2gAAQBkZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbAwBJGNhbGxfaGFzaEABHFQ6Okhhc2gAAUBjYWxsX2VuY29kZWRfbGVuOAEMdTMyAAFMY2FsbF93ZWlnaHRfd2l0bmVzc3kBARhXZWlnaHQAAgCcZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbF93aXRoX3ByZWltYWdlBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAwAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMudQcMPHBhbGxldF9ib3VudGllcxhwYWxsZXQQQ2FsbAgEVAAESQABLDhwcm9wb3NlX2JvdW50eQgBFHZhbHVlkQEBPEJhbGFuY2VPZjxULCBJPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAAMFRQcm9wb3NlIGEgbmV3IGJvdW50eS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBRAVBheW1lbnQ6IGBUaXBSZXBvcnREZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudCwgYXMgd2VsbCBhc1EBYERhdGFEZXBvc2l0UGVyQnl0ZWAgZm9yIGVhY2ggYnl0ZSBpbiBgcmVhc29uYC4gSXQgd2lsbCBiZSB1bnJlc2VydmVkIHVwb24gYXBwcm92YWwsZG9yIHNsYXNoZWQgd2hlbiByZWplY3RlZC4A+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4lAS0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LCBjdXJhdG9yIGZlZSBpbmNsdWRlZC7ALSBgZGVzY3JpcHRpb25gOiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBib3VudHkuOGFwcHJvdmVfYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxdAUFwcHJvdmUgYSBib3VudHkgcHJvcG9zYWwuIEF0IGEgbGF0ZXIgdGltZSwgdGhlIGJvdW50eSB3aWxsIGJlIGZ1bmRlZCBhbmQgYmVjb21lIGFjdGl2ZahhbmQgdGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBiZSByZXR1cm5lZC4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS48cHJvcG9zZV9jdXJhdG9yDAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWWRAQE8QmFsYW5jZU9mPFQsIEk+AAIYlFByb3Bvc2UgYSBjdXJhdG9yIHRvIGEgZnVuZGVkIGJvdW50eS4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS5AdW5hc3NpZ25fY3VyYXRvcgQBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AANEfFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGJvdW50eS4AHQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgYSBzaWduZWQgb3JpZ2luLgA9AUlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMxAW1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsIHdlIHdpbGwgc2xhc2ggdGhlIGN1cmF0b3Igd2hlbiBwb3NzaWJsZS4AYQFJZiB0aGUgb3JpZ2luIGlzIHRoZSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduIHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IgYW5kXQF0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHJlY292ZXIgdGhlaXI1AWRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmIGl0IGlzIGFidXNlZC4pAF0BRmluYWxseSwgdGhlIG9yaWdpbiBjYW4gYmUgYW55b25lIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJhdG9yIGlzICJpbmFjdGl2ZSIuIFRoaXMgYWxsb3dzYQFhbnlvbmUgaW4gdGhlIGNvbW11bml0eSB0byBjYWxsIG91dCB0aGF0IGEgY3VyYXRvciBpcyBub3QgZG9pbmcgdGhlaXIgZHVlIGRpbGlnZW5jZSwgYW5kOQF3ZSBzaG91bGQgcGljayBhIG5ldyBjdXJhdG9yLiBJbiB0aGlzIGNhc2UgdGhlIGN1cmF0b3Igc2hvdWxkIGFsc28gYmUgc2xhc2hlZC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjhhY2NlcHRfY3VyYXRvcgQBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AAQclEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGJvdW50eS4pAUEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gY3VyYXRvciBhbmQgcmVmdW5kIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuAJBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgY3VyYXRvci4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBhd2FyZF9ib3VudHkIASRib3VudHlfaWRkASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABShZAUF3YXJkIGJvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQuIFRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzOGFmdGVyIGEgZGVsYXkuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gYXdhcmQuGQEtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBhY2NvdW50IHdob20gd2lsbCByZWNlaXZlIHRoZSBwYXlvdXQuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xhaW1fYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgABiDsQ2xhaW0gdGhlIHBheW91dCBmcm9tIGFuIGF3YXJkZWQgYm91bnR5IGFmdGVyIHBheW91dCBkZWxheS4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYmVuZWZpY2lhcnkgb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2xhaW0uADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xvc2VfYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAByQ5AUNhbmNlbCBhIHByb3Bvc2VkIG9yIGFjdGl2ZSBib3VudHkuIEFsbCB0aGUgZnVuZHMgd2lsbCBiZSBzZW50IHRvIHRyZWFzdXJ5IGFuZMx0aGUgY3VyYXRvciBkZXBvc2l0IHdpbGwgYmUgdW5yZXNlcnZlZCBpZiBwb3NzaWJsZS4AyE9ubHkgYFQ6OlJlamVjdE9yaWdpbmAgaXMgYWJsZSB0byBjYW5jZWwgYSBib3VudHkuAIwtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2FuY2VsLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuUGV4dGVuZF9ib3VudHlfZXhwaXJ5CAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARhyZW1hcmsYARxWZWM8dTg+AAgkrEV4dGVuZCB0aGUgZXhwaXJ5IHRpbWUgb2YgYW4gYWN0aXZlIGJvdW50eS4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzIGJvdW50eS4AjC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBleHRlbmQujC0gYHJlbWFya2A6IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uADQjIyBDb21wbGV4aXR5HC0gTygxKS5sYXBwcm92ZV9ib3VudHlfd2l0aF9jdXJhdG9yDAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWWRAQE8QmFsYW5jZU9mPFQsIEk+AAks1EFwcHJvdmUgYm91bnRyeSBhbmQgcHJvcG9zZSBhIGN1cmF0b3Igc2ltdWx0YW5lb3VzbHkuVQFUaGlzIGNhbGwgaXMgYSBzaG9ydGN1dCB0byBjYWxsaW5nIGBhcHByb3ZlX2JvdW50eWAgYW5kIGBwcm9wb3NlX2N1cmF0b3JgIHNlcGFyYXRlbHkuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgCQLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGFwcHJvdmUu+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBwb2tlX2RlcG9zaXQEASRib3VudHlfaWRkASxCb3VudHlJbmRleAAKPORQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBjcmVhdGluZyBhIGJvdW50eSBwcm9wb3NhbC4A9FRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gdXBkYXRlIHRoZWlyIHJlc2VydmVkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgYm91bnR5X2lkYDogVGhlIGJvdW50eSBpZCBmb3Igd2hpY2ggdG8gYWRqdXN0IHRoZSBkZXBvc2l0LgA5AUlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQsIHRoZSBkaWZmZXJlbmNlIHdpbGwgYmUgcmVzZXJ2ZWQvdW5yZXNlcnZlZCBmcm9tIHRoZUxwcm9wb3NlcidzIGFjY291bnQuACkBVGhlIHRyYW5zYWN0aW9uIGlzIG1hZGUgZnJlZSBpZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkIGFuZCBwYWlkIG90aGVyd2lzZS4AvEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnkHDFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0EENhbGwEBFQAARxAYWRkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABFHZhbHVlkQEBMEJhbGFuY2VPZjxUPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAATFxBZGQgYSBuZXcgY2hpbGQtYm91bnR5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgcGFyZW503GJvdW50eSBhbmQgdGhlIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbiAiYWN0aXZlIiBzdGF0ZS4ABQFDaGlsZC1ib3VudHkgZ2V0cyBhZGRlZCBzdWNjZXNzZnVsbHkgJiBmdW5kIGdldHMgdHJhbnNmZXJyZWQgZnJvbQkBcGFyZW50IGJvdW50eSB0byBjaGlsZC1ib3VudHkgYWNjb3VudCwgaWYgcGFyZW50IGJvdW50eSBoYXMgZW5vdWdobGZ1bmRzLCBlbHNlIHRoZSBjYWxsIGZhaWxzLgANAVVwcGVyIGJvdW5kIHRvIG1heGltdW0gbnVtYmVyIG9mIGFjdGl2ZSAgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmWoYWRkZWQgYXJlIG1hbmFnZWQgdmlhIHJ1bnRpbWUgdHJhaXQgY29uZmlnmFtgQ29uZmlnOjpNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YF0uAAEBSWYgdGhlIGNhbGwgaXMgc3VjY2VzcywgdGhlIHN0YXR1cyBvZiBjaGlsZC1ib3VudHkgaXMgdXBkYXRlZCB0byAiQWRkZWQiLgBNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQusC0gYHZhbHVlYDogVmFsdWUgZm9yIGV4ZWN1dGluZyB0aGUgcHJvcG9zYWwu3C0gYGRlc2NyaXB0aW9uYDogVGV4dCBkZXNjcmlwdGlvbiBmb3IgdGhlIGNoaWxkLWJvdW50eS48cHJvcG9zZV9jdXJhdG9yEAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWWRAQEwQmFsYW5jZU9mPFQ+AAE8oFByb3Bvc2UgY3VyYXRvciBmb3IgZnVuZGVkIGNoaWxkLWJvdW50eS4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBjdXJhdG9yIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQWRkZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUgY2FsbC4gQW5kBQFzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkN1cmF0b3JQcm9wb3NlZCIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci7sLSBgZmVlYDogcGF5bWVudCBmZWUgdG8gY2hpbGQtYm91bnR5IGN1cmF0b3IgZm9yIGV4ZWN1dGlvbi44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRkASxCb3VudHlJbmRleAACTLRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgdGhlIGNoaWxkLWJvdW50eS4A9FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXM0Y2hpbGQtYm91bnR5LgDsQSBkZXBvc2l0IHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgY3VyYXRvciBhbmQgcmVmdW5kIHVwb26Ic3VjY2Vzc2Z1bCBwYXlvdXQgb3IgY2FuY2VsbGF0aW9uLgD4RmVlIGZvciBjdXJhdG9yIGlzIGRlZHVjdGVkIGZyb20gY3VyYXRvciBmZWUgb2YgcGFyZW50IGJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgANAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJDdXJhdG9yUHJvcG9zZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUJAWNhbGwuIEFuZCBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkFjdGl2ZSIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAA4iUVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtYm91bnR5LgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBjYW4gYmUgZWl0aGVyIGBSZWplY3RPcmlnaW5gLCBvctx0aGUgY3VyYXRvciBvZiB0aGUgcGFyZW50IGJvdW50eSwgb3IgYW55IHNpZ25lZCBvcmlnaW4uAPhGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiBhbmQgdGhlIGNoaWxkLWJvdW50eQEBY3VyYXRvciwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2FsbCB0bwkBd29yay4gV2UgYWxsb3cgY2hpbGQtYm91bnR5IGN1cmF0b3IgYW5kIFQ6OlJlamVjdE9yaWdpbiB0byBleGVjdXRlyHRoaXMgY2FsbCBpcnJlc3BlY3RpdmUgb2YgdGhlIHBhcmVudCBib3VudHkgc3RhdGUuANxJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlBQFwYXJlbnQgYm91bnR5IGN1cmF0b3IsIHdlIGFzc3VtZSB0aGF0IHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcw0BbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCwgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgAFAUlmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduCQF0aGF0IHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IsIGFuZCBhcmUgd2lsbGluZ2x5IGdpdmluZyB1cC4JAVdlIGNvdWxkIHNsYXNoIHRoZSBkZXBvc2l0LCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHVucmVzZXJ2ZREBdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWY4aXQgaXMgYWJ1c2VkLikABQFGaW5hbGx5LCB0aGUgb3JpZ2luIGNhbiBiZSBhbnlvbmUgaWZmIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcwkBImluYWN0aXZlIi4gRXhwaXJ5IHVwZGF0ZSBkdWUgb2YgcGFyZW50IGJvdW50eSBpcyB1c2VkIHRvIGVzdGltYXRlnGluYWN0aXZlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgANAVRoaXMgYWxsb3dzIGFueW9uZSBpbiB0aGUgY29tbXVuaXR5IHRvIGNhbGwgb3V0IHRoYXQgYSBjaGlsZC1ib3VudHkJAWN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZCB3ZSBzaG91bGQgcGljayBhIG5ld/hvbmUuIEluIHRoaXMgY2FzZSB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgABAVN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byBBZGRlZCBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGF3YXJkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAERJBBd2FyZCBjaGlsZC1ib3VudHkgdG8gYSBiZW5lZmljaWFyeS4A+FRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzIGFmdGVyIGEgZGVsYXkuAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFyZW50IGN1cmF0b3Igb3J0Y3VyYXRvciBvZiB0aGlzIGNoaWxkLWJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgAJAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlIGNhbGwuIEFuZBEBc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJQZW5kaW5nUGF5b3V0IiBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkulC0gYGJlbmVmaWNpYXJ5YDogQmVuZWZpY2lhcnkgYWNjb3VudC5IY2xhaW1fY2hpbGRfYm91bnR5CAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgABUAFAUNsYWltIHRoZSBwYXlvdXQgZnJvbSBhbiBhd2FyZGVkIGNoaWxkLWJvdW50eSBhZnRlciBwYXlvdXQgZGVsYXkuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbWF5IGJlIGFueSBzaWduZWQgb3JpZ2luLgAFAUNhbGwgd29ya3MgaW5kZXBlbmRlbnQgb2YgcGFyZW50IGJvdW50eSBzdGF0ZSwgTm8gbmVlZCBmb3IgcGFyZW50dGJvdW50eSB0byBiZSBpbiBhY3RpdmUgc3RhdGUuABEBVGhlIEJlbmVmaWNpYXJ5IGlzIHBhaWQgb3V0IHdpdGggYWdyZWVkIGJvdW50eSB2YWx1ZS4gQ3VyYXRvciBmZWUgaXOUcGFpZCAmIGN1cmF0b3IgZGVwb3NpdCBpcyB1bnJlc2VydmVkLgAFAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJQZW5kaW5nUGF5b3V0IiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhl/GNhbGwuIEFuZCBpbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbmxzdWNjZXNzZnVsIGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGNsb3NlX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAZYEQFDYW5jZWwgYSBwcm9wb3NlZCBvciBhY3RpdmUgY2hpbGQtYm91bnR5LiBDaGlsZC1ib3VudHkgYWNjb3VudCBmdW5kcwkBYXJlIHRyYW5zZmVycmVkIHRvIHBhcmVudCBib3VudHkgYWNjb3VudC4gVGhlIGNoaWxkLWJvdW50eSBjdXJhdG9ymGRlcG9zaXQgbWF5IGJlIHVucmVzZXJ2ZWQgaWYgcG9zc2libGUuAAkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyIHBhcmVudCBjdXJhdG9yIG9ySGBUOjpSZWplY3RPcmlnaW5gLgDwSWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgQWN0aXZlYCwgY3VyYXRvciBkZXBvc2l0IGlzLHVucmVzZXJ2ZWQuAPRJZiB0aGUgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIGBQZW5kaW5nUGF5b3V0YCwgY2FsbCBmYWlscyAmeHJldHVybnMgYFBlbmRpbmdQYXlvdXRgIGVycm9yLgANAUZvciB0aGUgb3JpZ2luIG90aGVyIHRoYW4gVDo6UmVqZWN0T3JpZ2luLCBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW7wYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0byB3b3JrLiBGb3Igb3JpZ2lukFQ6OlJlamVjdE9yaWdpbiBleGVjdXRpb24gaXMgZm9yY2VkLgABAUluc3RhbmNlIG9mIGNoaWxkLWJvdW50eSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YXRlIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMufQcMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmRBBwFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlgQcBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZEEHAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGWBBwEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZEEHAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMugQcMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAJUBARB1MTI4AACFBwxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBBDYWxsCARUAARJAAEkLGZ1bmRfYm91bnR5EAEoYXNzZXRfa2luZEEHAURCb3g8VDo6QXNzZXRLaW5kPgABFHZhbHVlkQEBKFQ6OkJhbGFuY2UAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBtZXRhZGF0YUABHFQ6Okhhc2gAAGgpAUZ1bmQgYSBuZXcgYm91bnR5IHdpdGggYSBwcm9wb3NlZCBjdXJhdG9yLCBpbml0aWF0aW5nIHRoZSBwYXltZW50IGZyb20gdGhluGZ1bmRpbmcgc291cmNlIHRvIHRoZSBib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgAdAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0QQF0aGUgYm91bnR5IHZhbHVlIGNvbnZlcnRlZCB0byBuYXRpdmUgYmFsYW5jZSB1c2luZyBbYENvbmZpZzo6QmFsYW5jZUNvbnZlcnRlcmBdLjUBVGhlIGNvbnZlcnRlZCBuYXRpdmUgYW1vdW50IGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBtYXhpbXVtIHNwZW5kYWJsZSBhbW91bnSQcmV0dXJuZWQgYnkgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0uACgjIyBEZXRhaWxzACEBLSBUaGUgYFNwZW5kT3JpZ2luYCBtdXN0IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBmdW5kIHRoZSBib3VudHkuWQEtIFRoZSBib3VudHkgYHZhbHVlYCAoaW4gYXNzZXQgYmFsYW5jZSkgaXMgY29udmVydGVkIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB2YWxpZGF0aW9uLikBLSBJbiBjYXNlIG9mIGEgZnVuZGluZyBmYWlsdXJlLCB0aGUgYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUBASAgYGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJzGQEtIGBhc3NldF9raW5kYDogQW4gaW5kaWNhdG9yIG9mIHRoZSBzcGVjaWZpYyBhc3NldCBjbGFzcyB0byBiZSBmdW5kZWQuzC0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LpwtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBib3VudHkgY3VyYXRvci4tAS0gYG1ldGFkYXRhYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlIHdpdGggYm91bnR5IG1ldGFkYXRhLgAkIyMgRXZlbnRzAAUBRW1pdHMgW2BFdmVudDo6Qm91bnR5Q3JlYXRlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC5EZnVuZF9jaGlsZF9ib3VudHkQAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARR2YWx1ZZEBAShUOjpCYWxhbmNlAAEgbWV0YWRhdGFAARxUOjpIYXNoAAEcY3VyYXRvclEEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAFgXQFGdW5kIGEgbmV3IGNoaWxkLWJvdW50eSB3aXRoIGEgcHJvcG9zZWQgY3VyYXRvciwgaW5pdGlhdGluZyB0aGUgcGF5bWVudCBmcm9tIHRoZSBwYXJlbnSwYm91bnR5IHRvIHRoZSBjaGlsZC1ib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgCUTXVzdCBiZSBzaWduZWQgYnkgdGhlIHBhcmVudCBjdXJhdG9yLgAoIyMgRGV0YWlscwBFAS0gSWYgYGN1cmF0b3JgIGlzIG5vdCBwcm92aWRlZCwgdGhlIGNoaWxkLWJvdW50eSB3aWxsIGRlZmF1bHQgdG8gdXNpbmcgdGhlIHBhcmVudDUBICBjdXJhdG9yLCBhbGxvd2luZyB0aGUgcGFyZW50IGN1cmF0b3IgdG8gaW1tZWRpYXRlbHkgY2FsbCBgY2hlY2tfc3RhdHVzYCBhbmSwICBgYXdhcmRfYm91bnR5YCB0byBwYXlvdXQgdGhlIGNoaWxkLWJvdW50eS5FAS0gSW4gY2FzZSBvZiBhIGZ1bmRpbmcgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZQEBICBgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnNNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQuzC0gYHZhbHVlYDogVGhlIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgY2hpbGQtYm91bnR5LkUBLSBgbWV0YWRhdGFgOiBUaGUgaGFzaCBvZiBhbiBvbi1jaGFpbiBzdG9yZWQgcHJlaW1hZ2Ugd2l0aCBjaGlsZC1ib3VudHkgbWV0YWRhdGEutC0gYGN1cmF0b3JgOiBBZGRyZXNzIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgAkIyMgRXZlbnRzABkBRW1pdHMgW2BFdmVudDo6Q2hpbGRCb3VudHlDcmVhdGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjxwcm9wb3NlX2N1cmF0b3IMAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTYAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAJUMQFQcm9wb3NlIGEgbmV3IGN1cmF0b3IgZm9yIGEgY2hpbGQtL2JvdW50eSBhZnRlciB0aGUgcHJldmlvdXMgd2FzIHVuYXNzaWduZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AQQFNdXN0IGJlIHNpZ25lZCBieSBgVDo6U3BlbmRPcmlnaW5gIGZvciBhIGJvdW50eSwgb3IgYnkgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvckxmb3IgYSBjaGlsZC1ib3VudHkuACgjIyBEZXRhaWxzAPQtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBDdXJhdG9yVW5hc3NpZ25lZGAgc3RhdGUuRQEtIEZvciBhIGJvdW50eSwgdGhlIGBTcGVuZE9yaWdpbmAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcHJvcG9zZSB0aGUoICBjdXJhdG9yLgA4IyMjIFBhcmFtZXRlcnOYLSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LswtIGBjdXJhdG9yYDogQWNjb3VudCB0byBiZSBwcm9wb3NlZCBhcyB0aGUgY3VyYXRvci4AJCMjIEV2ZW50cwC8RW1pdHMgW2BFdmVudDo6Q3VyYXRvclByb3Bvc2VkYF0gaWYgc3VjY2Vzc2Z1bC44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTYAUxPcHRpb248Qm91bnR5SW5kZXg+AANMsEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGNoaWxkLS9ib3VudHkuAEgjIyBEaXNwYXRjaCBPcmlnaW4AnE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwcm9wb3NlZCBjdXJhdG9yLgAoIyMgRGV0YWlscwDILSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgRnVuZGVkYCBzdGF0ZS7wLSBUaGUgY3VyYXRvciBtdXN0IGFjY2VwdCB0aGUgcm9sZSBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uSQEtIEEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gdGhlIGN1cmF0b3IgYW5kIHJlZnVuZGVkIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMhFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiBzdWNjZXNzZnVsLkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk2AFMT3B0aW9uPEJvdW50eUluZGV4PgAEZJhVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBjaGlsZC0vYm91bnR5LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAGEBLSBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAsIG9yIGJ5IHRoZSBwYXJlbnQgY3VyYXRvciBpbiB0aGUgY2FzZVkBICBvZiBhIGNoaWxkIGJvdW50eSwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMgbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCyoICB3ZSB3aWxsIHNsYXNoIHRoZSBjdXJhdG9yIHdoZW4gcG9zc2libGUuXQEtIElmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbiB0aGV5IGFyZSB1bmFibGUgdG9RASAgZG8gdGhlaXIgam9iIGFuZCB0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvd1kBICB0aGVtIHRvIHJlY292ZXIgdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWZAICBpdCBpcyBhYnVzZWQpLj0BLSBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgQ3VyYXRvclVuYXNzaWduZWRgLiBUb0UBICByZWFjdGl2YXRlIHRoZSBib3VudHksIGEgbmV3IGN1cmF0b3IgbXVzdCBiZSBwcm9wb3NlZCBhbmQgbXVzdCBhY2NlcHQgdGhlIHJvbGUuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMRFbWl0cyBbYEV2ZW50OjpDdXJhdG9yVW5hc3NpZ25lZGBdIGlmIHN1Y2Nlc3NmdWwuMGF3YXJkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZNgBTE9wdGlvbjxCb3VudHlJbmRleD4AASxiZW5lZmljaWFyeUUHAWRCZW5lZmljaWFyeUxvb2t1cE9mPFQsIEk+AAVg7EF3YXJkcyB0aGUgY2hpbGQtL2JvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24sHQFpbml0aWF0aW5nIHRoZSBwYXlvdXQgcGF5bWVudHMgdG8gYm90aCB0aGUgYmVuZWZpY2lhcnkgYW5kIHRoZSBjdXJhdG9yLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAMgtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBBY3RpdmVgIHN0YXRlLj0BLSBpZiBhd2FyZGluZyBhIHBhcmVudCBib3VudHkgaXQgbXVzdCBub3QgaGF2ZSBhY3RpdmUgb3IgZnVuZGVkIGNoaWxkIGJvdW50aWVzLlkBLSBJbml0aWF0ZXMgcGF5b3V0IHBheW1lbnQgZnJvbSB0aGUgY2hpbGQtL2JvdW50eSB0byB0aGUgYmVuZWZpY2lhcnkgYWNjb3VudC9sb2NhdGlvbi4lAS0gSWYgc3VjY2Vzc2Z1bCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgUGF5b3V0QXR0ZW1wdGVkYC4xAS0gSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGj4YGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuCQEtIGBiZW5lZmljaWFyeWA6IEFjY291bnQvbG9jYXRpb24gdG8gYmUgYXdhcmRlZCB0aGUgY2hpbGQtL2JvdW50eS4AJCMjIEV2ZW50cwAFAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUF3YXJkZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNsb3NlX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZNgBTE9wdGlvbjxCb3VudHlJbmRleD4ABlxhAUNhbmNlbCBhbiBhY3RpdmUgY2hpbGQtL2JvdW50eS4gQSBwYXltZW50IHRvIHNlbmQgYWxsIHRoZSBmdW5kcyB0byB0aGUgZnVuZGluZyBzb3VyY2UgaXMwaW5pdGlhbGl6ZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AUQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMAPQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgRnVuZGVkYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQuWQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgQWN0aXZlYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQgYW5kIHRoZREBICBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1cGRhdGVkIHdpdGggdGhlIGN1cmF0b3IgYWNjb3VudC9sb2NhdGlvbi5BAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgaXMgaW4gdGhlIGZ1bmRpbmcgb3IgcGF5b3V0IHBoYXNlLCBpdCBjYW5ub3QgYmUgY2FuY2VsZWQuQQEtIEluIGNhc2Ugb2YgYSByZWZ1bmQgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZfhgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwAJAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUNhbmNlbGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjaGVja19zdGF0dXMIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTYAUxPcHRpb248Qm91bnR5SW5kZXg+AAdk3ENoZWNrIGFuZCB1cGRhdGUgdGhlIHBheW1lbnQgc3RhdHVzIG9mIGEgY2hpbGQtL2JvdW50eS4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAFUBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYEZ1bmRpbmdBdHRlbXB0ZWRgLCBpdCBjaGVja3MgaWYgdGhlIGZ1bmRpbmcgcGF5bWVudA0BICBoYXMgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgYm91bnR5IHN0YXR1cyBiZWNvbWVzIGBGdW5kZWRgLl0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IGNoZWNrcyBpZiB0aGUgcmVmdW5kIHBheW1lbnQgaGFzGQEgIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuXQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUGF5b3V0QXR0ZW1wdGVkYCwgaXQgY2hlY2tzIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMZASAgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBpcyByZW1vdmVkIGZyb20gc3RvcmFnZS4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMAXQFFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiB0aGUgY2hpbGQvYm91bnR5IHN0YXR1cyB0cmFuc2l0aW9ucyB0byBgQWN0aXZlYC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVJlZnVuZFByb2Nlc3NlZGBdIGlmIHRoZSByZWZ1bmQgcGF5bWVudCBoYXMgc3VjY2VlZC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVBheW91dFByb2Nlc3NlZGBdIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMgc3VjY2VlZC5VAUVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgZnVuZGluZywgcmVmdW5kIG91ciBwYXltZW50IHBheW1lbnQgaGFzIGZhaWxlZC40cmV0cnlfcGF5bWVudAgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZNgBTE9wdGlvbjxCb3VudHlJbmRleD4ACFi0UmV0cnkgdGhlIGZ1bmRpbmcsIHJlZnVuZCBvciBwYXlvdXQgcGF5bWVudHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwBhAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBGdW5kaW5nQXR0ZW1wdGVkYCwgaXQgcmV0cmllcyB0aGUgZnVuZGluZyBwYXltZW50IGZyb23QICBmdW5kaW5nIHNvdXJjZSB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uLlkBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IHJldHJpZXMgdGhlIHJlZnVuZCBwYXltZW50IGZyb23sICB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uIHRvIHRoZSBmdW5kaW5nIHNvdXJjZS5ZAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBQYXlvdXRBdHRlbXB0ZWRgLCBpdCByZXRyaWVzIHRoZSBwYXlvdXQgcGF5bWVudCBmcm9tJQEgIHRoZSBjaGlsZC0vYm91bnR5IGFjY291bnQvbG9jYXRpb24gdG8gdGhlIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24uADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzADUBRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHRoZSBmdW5kaW5nLCByZWZ1bmQgb3IgcGF5b3V0IHBheW1lbnQgaGFzIGluaXRpYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuiQcMNHBhbGxldF9haF9vcHMYcGFsbGV0EENhbGwEBFQAARRcdW5yZXNlcnZlX2xlYXNlX2RlcG9zaXQMARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkZGVwb3NpdG9yQQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEccGFyYV9pZKABGFBhcmFJZAAAIPhVbnJlc2VydmUgdGhlIGRlcG9zaXQgdGhhdCB3YXMgdGFrZW4gZm9yIGNyZWF0aW5nIGEgY3Jvd2Rsb2FuLgBdAVRoaXMgY2FuIGJlIGNhbGxlZCBieSBhbnkgc2lnbmVkIG9yaWdpbi4gSXQgdW5yZXNlcnZlcyB0aGUgbGVhc2UgZGVwb3NpdCBvbiB0aGUgYWNjb3VudFkBdGhhdCB3b24gdGhlIGxlYXNlIGF1Y3Rpb24uIEl0IGNhbiBiZSB1bnJlc2VydmVkIG9uY2UgYWxsIGxlYXNlcyBleHBpcmVkLiBOb3RlIHRoYXQgaXRRAXdpbGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBgd2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbmAgZm9yIHRoZSBtYXRjaGluZ0hjcm93ZGxvYW4gYWNjb3VudC4AUQFTb2xvIGJpZGRlciBhY2NvdW50cyB0aGF0IHdvbiBsZWFzZSBhdWN0aW9ucyBjYW4gdXNlIHRoaXMgdG8gdW5yZXNlcnZlIHRoZWlyIGFtb3VudC58d2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbgwBFGJsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4AASRkZXBvc2l0b3JBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxwYXJhX2lkoAEYUGFyYUlkAAEcyFdpdGhkcmF3IHRoZSBjb250cmlidXRpb24gb2YgYSBmaW5pc2hlZCBjcm93ZGxvYW4uANBBIGNyb3dkbG9hbiBjb250cmlidXRpb24gY2FuIGJlIHdpdGhkcmF3biBpZiBlaXRoZXI61C0gVGhlIGNyb3dkbG9hbiBmYWlsZWQgdG8gaW4gYW4gYXVjdGlvbiBhbmQgdGltZWQgb3V0nC0gV29uIGFuIGF1Y3Rpb24gYW5kIGFsbCBsZWFzZXMgZXhwaXJlZACMQ2FuIGJlIGNhbGxlZCBieSBhbnkgc2lnbmVkIG9yaWdpbi5sdW5yZXNlcnZlX2Nyb3dkbG9hbl9yZXNlcnZlDAEUYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgABJGRlcG9zaXRvckEBAVBPcHRpb248VDo6QWNjb3VudElkPgABHHBhcmFfaWSgARhQYXJhSWQAAiD4VW5yZXNlcnZlIHRoZSBkZXBvc2l0IHRoYXQgd2FzIHRha2VuIGZvciBjcmVhdGluZyBhIGNyb3dkbG9hbi4AfFRoaXMgY2FuIGJlIGNhbGxlZCBvbmNlIGVpdGhlcjrYLSBUaGUgY3Jvd2Rsb2FuIGZhaWxlZCB0byB3aW4gYW4gYXVjdGlvbiBhbmQgdGltZWQgb3V0IQEtIFdvbiBhbiBhdWN0aW9uLCBhbGwgbGVhc2VzIGV4cGlyZWQgYW5kIGFsbCBjb250cmlidXRpb25zIGFyZSB3aXRoZHJhd24AWQFDYW4gYmUgY2FsbGVkIGJ5IGFueSBzaWduZWQgb3JpZ2luLiBUaGUgY29uZGl0aW9uIHRoYXQgYWxsIGNvbnRyaWJ1dGlvbnMgYXJlIHdpdGhkcmF3buBpcyBpbiBwbGFjZSBzaW5jZSB0aGUgcmVzZXJ2ZSBhY3RzIGFzIGEgc3RvcmFnZSBkZXBvc2l0Lox0cmFuc2Zlcl90b19wb3N0X21pZ3JhdGlvbl90cmVhc3VyeQQBIGFzc2V0X2lkOQIB+EJveDw8VDo6RnVuZ2libGVzIGFzIEZ1bmdpYmxlc0luc3BlY3Q8VDo6QWNjb3VudElkPj46OkFzc2V0SWQ+AAMQSQFUcmFuc2ZlciB0aGUgYmFsYW5jZSBmcm9tIHRoZSBwcmUtbWlncmF0aW9uIHRyZWFzdXJ5IGFjY291bnQgdG8gdGhlIHBvc3QtbWlncmF0aW9uRHRyZWFzdXJ5IGFjY291bnQuAPhUaGlzIGNhbGwgY2FuIG9ubHkgYmUgY2FsbGVkIGFmdGVyIHRoZSBtaWdyYXRpb24gaXMgY29tcGxldGVkLsR0cmFuc2xhdGVfcGFyYV9zb3ZlcmVpZ25fY2hpbGRfdG9fc2libGluZ19kZXJpdmVkEAEccGFyYV9pZPkDAQx1MTYAATxkZXJpdmF0aW9uX3BhdGiNBwEgVmVjPHUxNj4AASxvbGRfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABLG5ld19hY2NvdW50BAEwVDo6QWNjb3VudElkAAQsPQFUcmFuc2xhdGUgcmVjdXJzaXZlbHkgZGVyaXZlZCBwYXJhY2hhaW4gc292ZXJlaWduIGNoaWxkIGFjY291bnQgdG8gaXRzIHNpYmxpbmcuAGEBVXNlcyB0aGUgc2FtZSBkZXJpdmF0aW9uIHBhdGggb24gdGhlIHNpYmxpbmcuIFRoZSBvbGQgYW5kIG5ldyBhY2NvdW50IGFyZ3VtZW50cyBhcmUgb25seUEBd2l0bmVzcyBkYXRhIHRvIGVuc3VyZSBjb3JyZWN0IHVzYWdlLiBDYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBNaWdyYXRlT3JpZ2luYC4AOFRoaXMgbWlncmF0ZXM6UC0gTmF0aXZlIERPVCBiYWxhbmNlqC0gQWxsIGFzc2V0cyBsaXN0ZWQgaW4gYFQ6OlJlbGV2YW50QXNzZXRzYEQtIFN0YWtlZCBiYWxhbmNlcwBJAVRoaW5ncyBsaWtlIG5vbi1yZWxldmFudCBhc3NldHMgb3IgdmVzdGVkIHRyYW5zZmVycyBtYXkgcmVtYWluIG9uIHRoZSBvbGQgYWNjb3VudC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMujQcAAAL5AwCRBwxIcGFsbGV0X2FoX21pZ3JhdG9yGHBhbGxldBBDYWxsBARUAAGEQHJlY2VpdmVfYWNjb3VudHMEASBhY2NvdW50c5UHAVBWZWM8UmNBY2NvdW50Rm9yPFQ+PgAADJhSZWNlaXZlIGFjY291bnRzIGZyb20gdGhlIFJlbGF5IENoYWluLgA9AVRoZSBhY2NvdW50cyBzZW50IHdpdGggYHBhbGxldF9yY19taWdyYXRvcjo6UGFsbGV0OjptaWdyYXRlX2FjY291bnRzYCBmdW5jdGlvbi5EcmVjZWl2ZV9tdWx0aXNpZ3MEASBhY2NvdW50c+kHAVBWZWM8UmNNdWx0aXNpZ09mPFQ+PgABFJxSZWNlaXZlIG11bHRpc2lncyBmcm9tIHRoZSBSZWxheSBDaGFpbi4ARQFUaGlzIHdpbGwgYmUgY2FsbGVkIGZyb20gYW4gWENNIGBUcmFuc2FjdGAgaW5zaWRlIGEgRE1QIGZyb20gdGhlIHJlbGF5IGNoYWluLiBUaGVobXVsdGlzaWdzIHdlcmUgcHJlcGFyZWQgYnn8YHBhbGxldF9yY19taWdyYXRvcjo6bXVsdGlzaWc6Ok11bHRpc2lnTWlncmF0b3I6Om1pZ3JhdGVfbWFueWAuVHJlY2VpdmVfcHJveHlfcHJveGllcwQBHHByb3hpZXPxBwGEVmVjPFJjUHJveHlPZjxULCBUOjpSY1Byb3h5VHlwZT4+AAIElFJlY2VpdmUgcHJveGllcyBmcm9tIHRoZSBSZWxheSBDaGFpbi5scmVjZWl2ZV9wcm94eV9hbm5vdW5jZW1lbnRzBAE0YW5ub3VuY2VtZW50cwUIAXRWZWM8UmNQcm94eUFubm91bmNlbWVudE9mPFQ+PgADBMRSZWNlaXZlIHByb3h5IGFubm91bmNlbWVudHMgZnJvbSB0aGUgUmVsYXkgQ2hhaW4uXHJlY2VpdmVfcHJlaW1hZ2VfY2h1bmtzBAEYY2h1bmtzDQgBUFZlYzxSY1ByZWltYWdlQ2h1bms+AAQAfHJlY2VpdmVfcHJlaW1hZ2VfcmVxdWVzdF9zdGF0dXMEAThyZXF1ZXN0X3N0YXR1cxkIAWhWZWM8UG9ydGFibGVSZXF1ZXN0U3RhdHVzPgAFAHhyZWNlaXZlX3ByZWltYWdlX2xlZ2FjeV9zdGF0dXMEATRsZWdhY3lfc3RhdHVzMQgBgFZlYzxSY1ByZWltYWdlTGVnYWN5U3RhdHVzT2Y8VD4+AAYAaHJlY2VpdmVfbm9tX3Bvb2xzX21lc3NhZ2VzBAEgbWVzc2FnZXM5CAFkVmVjPFJjTm9tUG9vbHNNZXNzYWdlPFQ+PgAHAGRyZWNlaXZlX3Zlc3Rpbmdfc2NoZWR1bGVzBAEkc2NoZWR1bGVzoQgBZFZlYzxSY1Zlc3RpbmdTY2hlZHVsZTxUPj4ACABgcmVjZWl2ZV9yZWZlcmVuZGFfdmFsdWVzBAEYdmFsdWVzsQgBnFZlYzxSZWZlcmVuZGFNZXNzYWdlPFRyYWNrSWRPZjxULCAoKT4+PgAKBBkBUmVjZWl2ZSByZWZlcmVuZHVtIGNvdW50cywgZGVjaWRpbmcgY291bnRzLCB2b3RlcyBmb3IgdGhlIHRyYWNrIHF1ZXVlLkxyZWNlaXZlX3JlZmVyZW5kdW1zBAEscmVmZXJlbmR1bXPJCAGUVmVjPCh1MzIsIFJjUmVmZXJlbmR1bUluZm9PZjxULCAoKT4pPgALBKRSZWNlaXZlIHJlZmVyZW5kdW1zIGZyb20gdGhlIFJlbGF5IENoYWluLjhyZWNlaXZlX2NsYWltcwQBIG1lc3NhZ2Vz+QgBZFZlYzxSY0NsYWltc01lc3NhZ2VPZjxUPj4ADABocmVjZWl2ZV9iYWdzX2xpc3RfbWVzc2FnZXMEASBtZXNzYWdlcw0JAXBWZWM8UG9ydGFibGVCYWdzTGlzdE1lc3NhZ2U+AA0AaHJlY2VpdmVfc2NoZWR1bGVyX21lc3NhZ2VzBAEgbWVzc2FnZXMdCQFwVmVjPFJjU2NoZWR1bGVyTWVzc2FnZU9mPFQ+PgAOADxyZWNlaXZlX2luZGljZXMEARxpbmRpY2VzMQkBYFZlYzxSY0luZGljZXNJbmRleE9mPFQ+PgAPAIhyZWNlaXZlX2NvbnZpY3Rpb25fdm90aW5nX21lc3NhZ2VzBAEgbWVzc2FnZXM5CQGMVmVjPFJjQ29udmljdGlvblZvdGluZ01lc3NhZ2VPZjxUPj4AEABkcmVjZWl2ZV9ib3VudGllc19tZXNzYWdlcwQBIG1lc3NhZ2VzaQkBbFZlYzxSY0JvdW50aWVzTWVzc2FnZU9mPFQ+PgARAExyZWNlaXZlX2Fzc2V0X3JhdGVzBAEUcmF0ZXOBCQH0VmVjPCg8VCBhcyBwYWxsZXRfYXNzZXRfcmF0ZTo6Q29uZmlnPjo6QXNzZXRLaW5kLCBGaXhlZFUxMjgpPgASAGhyZWNlaXZlX2Nyb3dkbG9hbl9tZXNzYWdlcwQBIG1lc3NhZ2VziQkBcFZlYzxSY0Nyb3dkbG9hbk1lc3NhZ2VPZjxUPj4AEwBocmVjZWl2ZV9yZWZlcmVuZGFfbWV0YWRhdGEEASBtZXRhZGF0YZEJAbBWZWM8KHUzMiw8VCBhcyBmcmFtZV9zeXN0ZW06OkNvbmZpZz46Okhhc2gpPgAUAGRyZWNlaXZlX3RyZWFzdXJ5X21lc3NhZ2VzBAEgbWVzc2FnZXOZCQFwVmVjPFBvcnRhYmxlVHJlYXN1cnlNZXNzYWdlPgAVAIRyZWNlaXZlX3NjaGVkdWxlcl9hZ2VuZGFfbWVzc2FnZXMEASBtZXNzYWdlc7EJATEBVmVjPFNjaGVkdWxlckFnZW5kYU1lc3NhZ2U8QmxvY2tOdW1iZXJGb3I8VD4sIHNjaGVkdWxlcjo6ClJjU2NoZWR1bGVkT2Y8VD4+PgAWAIhyZWNlaXZlX2RlbGVnYXRlZF9zdGFraW5nX21lc3NhZ2VzBAEgbWVzc2FnZXPFCQGQVmVjPFBvcnRhYmxlRGVsZWdhdGVkU3Rha2luZ01lc3NhZ2U+ABcAfHJlY2VpdmVfY2hpbGRfYm91bnRpZXNfbWVzc2FnZXMEASBtZXNzYWdlc80JAYRWZWM8UG9ydGFibGVDaGlsZEJvdW50aWVzTWVzc2FnZT4AGABgcmVjZWl2ZV9zdGFraW5nX21lc3NhZ2VzBAEgbWVzc2FnZXPhCQFsVmVjPFBvcnRhYmxlU3Rha2luZ01lc3NhZ2U+ABkAZHJlY2VpdmVfcmVjb3ZlcnlfbWVzc2FnZXMEASBtZXNzYWdlc1EKAXBWZWM8UG9ydGFibGVSZWNvdmVyeU1lc3NhZ2U+ABoAYHJlY2VpdmVfc29jaWV0eV9tZXNzYWdlcwQBIG1lc3NhZ2VzdQoBbFZlYzxQb3J0YWJsZVNvY2lldHlNZXNzYWdlPgAbADxmb3JjZV9zZXRfc3RhZ2UEARRzdGFnZcUKAThNaWdyYXRpb25TdGFnZQBkEGBTZXQgdGhlIG1pZ3JhdGlvbiBzdGFnZS4ACQFUaGlzIGNhbGwgaXMgaW50ZW5kZWQgZm9yIGVtZXJnZW5jeSB1c2Ugb25seSBhbmQgaXMgZ3VhcmRlZCBieSB0aGVgW2BDb25maWc6OkFkbWluT3JpZ2luYF0uPHN0YXJ0X21pZ3JhdGlvbgBlEGRTdGFydCB0aGUgZGF0YSBtaWdyYXRpb24uAF0BVGhpcyBpcyB0eXBpY2FsbHkgY2FsbGVkIGJ5IHRoZSBSZWxheSBDaGFpbiB0byBzdGFydCB0aGUgbWlncmF0aW9uIG9uIHRoZSBBc3NldCBIdWIgYW5kBQFyZWNlaXZlIGEgaGFuZHNoYWtlIG1lc3NhZ2UgaW5kaWNhdGluZyB0aGUgQXNzZXQgSHViJ3MgcmVhZGluZXNzLlhzZXRfZG1wX3F1ZXVlX3ByaW9yaXR5BAEMbmV3yQoBjERtcFF1ZXVlUHJpb3JpdHk8QmxvY2tOdW1iZXJGb3I8VD4+AGYMpFNldCB0aGUgRE1QIHF1ZXVlIHByaW9yaXR5IGNvbmZpZ3VyYXRpb24uAKBDYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBBZG1pbk9yaWdpbmAuLHNldF9tYW5hZ2VyBAEMbmV3QQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AGcQbFNldCB0aGUgbWFuYWdlciBhY2NvdW50IGlkLgBBAVRoZSBtYW5hZ2VyIGhhcyB0aGUgc2ltaWxhciB0byBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXSBwcml2aWxlZ2VzIGV4Y2VwdCB0aGF0IGl06GNhbiBub3Qgc2V0IHRoZSBtYW5hZ2VyIGFjY291bnQgaWQgdmlhIGBzZXRfbWFuYWdlcmAgY2FsbC5AZmluaXNoX21pZ3JhdGlvbggBEGRhdGHNCgGkT3B0aW9uPE1pZ3JhdGlvbkZpbmlzaGVkRGF0YTxUOjpCYWxhbmNlPj4AATxjb29sX29mZl9lbmRfYXQ4AQx1MzIAbhxURmluaXNoIHRoZSBtaWdyYXRpb24uAEUBVGhpcyBpcyB0eXBpY2FsbHkgY2FsbGVkIGJ5IHRoZSBSZWxheSBDaGFpbiB0byBzaWduYWwgdGhlIG1pZ3JhdGlvbiBoYXMgZmluaXNoZWQuAFkBVGhlIGBkYXRhYCBwYXJhbWV0ZXIgbWlnaHQgYmUgYE5vbmVgIGlmIHdlIGFyZSBydW5uaW5nIHRoZSBtaWdyYXRpb24gZm9yIGEgc2Vjb25kIHRpbWVRAWZvciBzb21lIHBhbGxldHMgYW5kIGhhdmUgYWxyZWFkeSBwZXJmb3JtZWQgdGhlIGNoZWNraW5nIGFjY291bnQgYmFsYW5jZSBjb3JyZWN0aW9uLJRzbyB3ZSBkbyBub3QgbmVlZCB0byBkbyBpdCB0aGlzIHRpbWUuQHNlbmRfeGNtX21lc3NhZ2UIARBkZXN05QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARxtZXNzYWdlbQIBVEJveDxWZXJzaW9uZWRYY208KCk+PgBvDDUBWENNIHNlbmQgY2FsbCBpZGVudGljYWwgdG8gdGhlIFtgcGFsbGV0X3hjbTo6UGFsbGV0OjpzZW5kYF0gY2FsbCBidXQgd2l0aCB0aGVZAVtDb25maWc6OlNlbmRYY21dIHJvdXRlciB3aGljaCB3aWxsIGJlIGFibGUgdG8gc2VuZCBtZXNzYWdlcyB0byB0aGUgUmVsYXkgQ2hhaW4gZHVyaW5nOHRoZSBtaWdyYXRpb24uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpUHAAACmQcAmQcMSHBhbGxldF9yY19taWdyYXRvciBhY2NvdW50cxxBY2NvdW50ECRBY2NvdW50SWQBBBxCYWxhbmNlAZUBKEhvbGRSZWFzb24BnQcwRnJlZXplUmVhc29uAbkHACgBDHdobwQBJEFjY291bnRJZAABEGZyZWWVAQEcQmFsYW5jZQABIHJlc2VydmVklQEBHEJhbGFuY2UAARhmcm96ZW6VAQEcQmFsYW5jZQABFGhvbGRzwQcB2EJvdW5kZWRWZWM8SWRBbW91bnQ8SG9sZFJlYXNvbiwgQmFsYW5jZT4sIENvbnN0VTMyPDU+PgABHGZyZWV6ZXPNBwHgQm91bmRlZFZlYzxJZEFtb3VudDxGcmVlemVSZWFzb24sIEJhbGFuY2U+LCBDb25zdFUzMjw1Pj4AARRsb2Nrc9kHAbRCb3VuZGVkVmVjPEJhbGFuY2VMb2NrPEJhbGFuY2U+LCBDb25zdFUzMjw1Pj4AATx1bm5hbWVkX3Jlc2VydmWVAQEcQmFsYW5jZQABJGNvbnN1bWVycwwBCHU4AAEkcHJvdmlkZXJzDAEIdTgAAJ0HDEhwYWxsZXRfcmNfbWlncmF0b3IUdHlwZXNIUG9ydGFibGVIb2xkUmVhc29uAAEYIFByZWltYWdlBAChBwFscGFsbGV0X3ByZWltYWdlOjpIb2xkUmVhc29uAAAAHFN0YWtpbmcEAKUHAWhwYWxsZXRfc3Rha2luZzo6SG9sZFJlYXNvbgABAEhTdGF0ZVRyaWVNaWdyYXRpb24EAKkHAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24AAgBARGVsZWdhdGVkU3Rha2luZwQArQcBkHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6SG9sZFJlYXNvbgADABxTZXNzaW9uBACxBwFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24ABAAkWGNtUGFsbGV0BAC1BwFYcGFsbGV0X3hjbTo6SG9sZFJlYXNvbgAFAAChBww8cGFsbGV0X3ByZWltYWdlGHBhbGxldChIb2xkUmVhc29uAAEEIFByZWltYWdlAAAAAKUHEDhwYWxsZXRfc3Rha2luZxhwYWxsZXQYcGFsbGV0KEhvbGRSZWFzb24AAQQcU3Rha2luZwAAAACpBwxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldChIb2xkUmVhc29uAAEEPFNsYXNoRm9yTWlncmF0ZQAAAACtBwxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldChIb2xkUmVhc29uAAEERFN0YWtpbmdEZWxlZ2F0aW9uAAAAALEHDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAALUHDChwYWxsZXRfeGNtGHBhbGxldChIb2xkUmVhc29uAAEEOEF1dGhvcml6ZUFsaWFzAAAAALkHDEhwYWxsZXRfcmNfbWlncmF0b3IUdHlwZXNQUG9ydGFibGVGcmVlemVSZWFzb24AAQQ8Tm9taW5hdGlvblBvb2xzBAC9BwGUcGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkZyZWV6ZVJlYXNvbgAAAAC9BwxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0MEZyZWV6ZVJlYXNvbgABBDhQb29sTWluQmFsYW5jZQAAAADBBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcUHBFMAAAQAyQcBGFZlYzxUPgAAxQcUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAGdBxxCYWxhbmNlAZUBAAgBCGlknQcBCElkAAEYYW1vdW50lQEBHEJhbGFuY2UAAMkHAAACxQcAzQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHRBwRTAAAEANUHARhWZWM8VD4AANEHFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBuQccQmFsYW5jZQGVAQAIAQhpZLkHAQhJZAABGGFtb3VudJUBARxCYWxhbmNlAADVBwAAAtEHANkHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB3QcEUwAABADlBwEYVmVjPFQ+AADdBww8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEJhbGFuY2VMb2NrBBxCYWxhbmNlAZUBAAwBCGlklQIBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50lQEBHEJhbGFuY2UAARxyZWFzb25z4QcBHFJlYXNvbnMAAOEHDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMcUmVhc29ucwABDAxGZWUAAAAQTWlzYwABAAxBbGwAAgAA5QcAAALdBwDpBwAAAu0HAO0HDEhwYWxsZXRfcmNfbWlncmF0b3IgbXVsdGlzaWcoUmNNdWx0aXNpZwgkQWNjb3VudElkAQQcQmFsYW5jZQGVAQAIARxjcmVhdG9yBAEkQWNjb3VudElkAAEcZGVwb3NpdJUBARxCYWxhbmNlAADxBwAAAvUHAPUHDEhwYWxsZXRfcmNfbWlncmF0b3IUcHJveHkcUmNQcm94eRAkQWNjb3VudElkAQQcQmFsYW5jZQGVASRQcm94eVR5cGUB+QcsQmxvY2tOdW1iZXIBOAAMASRkZWxlZ2F0b3IEASRBY2NvdW50SWQAARxkZXBvc2l0lQEBHEJhbGFuY2UAARxwcm94aWVz/QcBFQFWZWM8cGFsbGV0X3Byb3h5OjpQcm94eURlZmluaXRpb248QWNjb3VudElkLCBQcm94eVR5cGUsIEJsb2NrTnVtYmVyPj4AAPkHDGBrdXNhbWFfcnVudGltZV9jb25zdGFudHMUcHJveHkkUHJveHlUeXBlAAEoDEFueQAAACxOb25UcmFuc2ZlcgABAChHb3Zlcm5hbmNlAAIAHFN0YWtpbmcAAwAsQ2FuY2VsUHJveHkABQAcQXVjdGlvbgAGABxTb2NpZXR5AAcAPE5vbWluYXRpb25Qb29scwAIADBTcG9rZXNwZXJzb24ACQBAUGFyYVJlZ2lzdHJhdGlvbgAKAAD9BwAAAgEIAAEICDBwYWxsZXRfcHJveHk8UHJveHlEZWZpbml0aW9uDCRBY2NvdW50SWQBBCRQcm94eVR5cGUB+QcsQmxvY2tOdW1iZXIBOAAMASBkZWxlZ2F0ZQQBJEFjY291bnRJZAABKHByb3h5X3R5cGX5BwEkUHJveHlUeXBlAAEUZGVsYXk4ASxCbG9ja051bWJlcgAABQgAAAIJCAAJCAxIcGFsbGV0X3JjX21pZ3JhdG9yFHByb3h5TFJjUHJveHlBbm5vdW5jZW1lbnQIJEFjY291bnRJZAEEHEJhbGFuY2UBlQEACAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEcZGVwb3NpdJUBARxCYWxhbmNlAAANCAAAAhEIABEIEEhwYWxsZXRfcmNfbWlncmF0b3IgcHJlaW1hZ2UYY2h1bmtzPFJjUHJlaW1hZ2VDaHVuawAAEAE0cHJlaW1hZ2VfaGFzaEABEEgyNTYAATBwcmVpbWFnZV9sZW44AQx1MzIAAURjaHVua19ieXRlX29mZnNldDgBDHUzMgABLGNodW5rX2J5dGVzFQgBkEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPENIVU5LX1NJWkU+PgAAFQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAZCAAAAh0IAB0IEEhwYWxsZXRfcmNfbWlncmF0b3IgcHJlaW1hZ2U4cmVxdWVzdF9zdGF0dXNUUG9ydGFibGVSZXF1ZXN0U3RhdHVzAAAIARBoYXNoQAEQSDI1NgABOHJlcXVlc3Rfc3RhdHVzIQgBaFBvcnRhYmxlUmVxdWVzdFN0YXR1c0lubmVyAAAhCBBIcGFsbGV0X3JjX21pZ3JhdG9yIHByZWltYWdlOHJlcXVlc3Rfc3RhdHVzaFBvcnRhYmxlUmVxdWVzdFN0YXR1c0lubmVyAAEILFVucmVxdWVzdGVkCAEYdGlja2V0JQgBdChBY2NvdW50SWQzMiwgUG9ydGFibGVUaWNrZXQpAAEMbGVuOAEMdTMyAAAAJFJlcXVlc3RlZAwBMG1heWJlX3RpY2tldC0IAZRPcHRpb248KEFjY291bnRJZDMyLCBQb3J0YWJsZVRpY2tldCk+AAEUY291bnQ4AQx1MzIAASRtYXliZV9sZW7YASxPcHRpb248dTMyPgABAAAlCAAABAgEKQgAKQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAtCAQYT3B0aW9uBARUASUIAQgQTm9uZQAAABBTb21lBAAlCAAAAQAAMQgAAAI1CAA1CBBIcGFsbGV0X3JjX21pZ3JhdG9yIHByZWltYWdlVGxlZ2FjeV9yZXF1ZXN0X3N0YXR1c1hSY1ByZWltYWdlTGVnYWN5U3RhdHVzCCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBAAwBEGhhc2hAARBIMjU2AAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEcZGVwb3NpdJUBARxCYWxhbmNlAAA5CAAAAj0IAD0IEEhwYWxsZXRfcmNfbWlncmF0b3Icc3Rha2luZyRub21fcG9vbHNEUmNOb21Qb29sc01lc3NhZ2UEBFQAASA0U3RvcmFnZVZhbHVlcwQBGHZhbHVlc0EIAWhOb21Qb29sc1N0b3JhZ2VWYWx1ZXNPZjxUPgAAACxQb29sTWVtYmVycwQBGG1lbWJlckkIAXQoVDo6QWNjb3VudElkLCBQb29sTWVtYmVyPFQ+KQABACxCb25kZWRQb29scwQBEHBvb2xhCAFwKFBvb2xJZCwgQm9uZGVkUG9vbElubmVyPFQ+KQACACxSZXdhcmRQb29scwQBHHJld2FyZHN1CAFcKFBvb2xJZCwgUmV3YXJkUG9vbDxUPikAAwA8U3ViUG9vbHNTdG9yYWdlBAEkc3ViX3Bvb2xzfQgBVChQb29sSWQsIFN1YlBvb2xzPFQ+KQAEACBNZXRhZGF0YQQBEG1ldGGZCAGsKFBvb2xJZCwgQm91bmRlZFZlYzx1OCwgVDo6TWF4TWV0YWRhdGFMZW4+KQAFAExSZXZlcnNlUG9vbElkTG9va3VwBAEcbG9va3Vwc2EFAVgoVDo6QWNjb3VudElkLCBQb29sSWQpAAYAQENsYWltUGVybWlzc2lvbnMEARRwZXJtc50IAXwoVDo6QWNjb3VudElkLCBDbGFpbVBlcm1pc3Npb24pAAcAAEEIEEhwYWxsZXRfcmNfbWlncmF0b3Icc3Rha2luZyRub21fcG9vbHNUTm9tUG9vbHNTdG9yYWdlVmFsdWVzBBxCYWxhbmNlAZUBACABSHRvdGFsX3ZhbHVlX2xvY2tlZGEEATxPcHRpb248QmFsYW5jZT4AATRtaW5fam9pbl9ib25kYQQBPE9wdGlvbjxCYWxhbmNlPgABPG1pbl9jcmVhdGVfYm9uZGEEATxPcHRpb248QmFsYW5jZT4AASRtYXhfcG9vbHPYASxPcHRpb248dTMyPgABQG1heF9wb29sX21lbWJlcnPYASxPcHRpb248dTMyPgABZG1heF9wb29sX21lbWJlcnNfcGVyX3Bvb2zYASxPcHRpb248dTMyPgABVGdsb2JhbF9tYXhfY29tbWlzc2lvbkUIATxPcHRpb248UGVyYmlsbD4AATBsYXN0X3Bvb2xfaWTYASxPcHRpb248dTMyPgAARQgEGE9wdGlvbgQEVAExBQEIEE5vbmUAAAAQU29tZQQAMQUAAAEAAEkIAAAECARNCABNCAhccGFsbGV0X25vbWluYXRpb25fcG9vbHMoUG9vbE1lbWJlcgQEVAAAEAEccG9vbF9pZDgBGFBvb2xJZAABGHBvaW50c5UBATBCYWxhbmNlT2Y8VD4AAXBsYXN0X3JlY29yZGVkX3Jld2FyZF9jb3VudGVygQcBQFQ6OlJld2FyZENvdW50ZXIAATh1bmJvbmRpbmdfZXJhc1EIAeBCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIEJhbGFuY2VPZjxUPiwgVDo6TWF4VW5ib25kaW5nPgAAUQgMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgGVAQRTAAAEAFUIAThCVHJlZU1hcDxLLCBWPgAAVQgEIEJUcmVlTWFwCARLATgEVgGVAQAEAFkIAAAAWQgAAAJdCABdCAAABAg4lQEAYQgAAAQIOGUIAGUICFxwYWxsZXRfbm9taW5hdGlvbl9wb29sczxCb25kZWRQb29sSW5uZXIEBFQAABQBKGNvbW1pc3Npb25pCAE0Q29tbWlzc2lvbjxUPgABOG1lbWJlcl9jb3VudGVyOAEMdTMyAAEYcG9pbnRzlQEBMEJhbGFuY2VPZjxUPgABFHJvbGVzcQgBXFBvb2xSb2xlczxUOjpBY2NvdW50SWQ+AAEUc3RhdGUhBQEkUG9vbFN0YXRlAABpCAhccGFsbGV0X25vbWluYXRpb25fcG9vbHMoQ29tbWlzc2lvbgQEVAAAFAEcY3VycmVudD0FAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+AAEMbWF4RQgBPE9wdGlvbjxQZXJiaWxsPgABLGNoYW5nZV9yYXRlbQgBvE9wdGlvbjxDb21taXNzaW9uQ2hhbmdlUmF0ZTxCbG9ja051bWJlckZvcjxUPj4+AAE0dGhyb3R0bGVfZnJvbdgBZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4AAUBjbGFpbV9wZXJtaXNzaW9uSQUBvE9wdGlvbjxDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uPFQ6OkFjY291bnRJZD4+AABtCAQYT3B0aW9uBARUAUUFAQgQTm9uZQAAABBTb21lBABFBQAAAQAAcQgIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzJFBvb2xSb2xlcwQkQWNjb3VudElkAQQAEAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEQcm9vdEEBAURPcHRpb248QWNjb3VudElkPgABJG5vbWluYXRvckEBAURPcHRpb248QWNjb3VudElkPgABHGJvdW5jZXJBAQFET3B0aW9uPEFjY291bnRJZD4AAHUIAAAECDh5CAB5CBBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmc8bm9tX3Bvb2xzX2FsaWFzKFJld2FyZFBvb2wEBFQAABQBcGxhc3RfcmVjb3JkZWRfcmV3YXJkX2NvdW50ZXKBBwFAVDo6UmV3YXJkQ291bnRlcgABbGxhc3RfcmVjb3JkZWRfdG90YWxfcGF5b3V0c5UBATBCYWxhbmNlT2Y8VD4AAVR0b3RhbF9yZXdhcmRzX2NsYWltZWSVAQEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9wZW5kaW5nlQEBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fY2xhaW1lZJUBATBCYWxhbmNlT2Y8VD4AAH0IAAAECDiBCACBCBBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmc8bm9tX3Bvb2xzX2FsaWFzIFN1YlBvb2xzBARUAAAIARhub19lcmGFCAE0VW5ib25kUG9vbDxUPgABIHdpdGhfZXJhiQgBAQFCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIFVuYm9uZFBvb2w8VD4sIFRvdGFsVW5ib25kaW5nUG9vbHM8VD4+AACFCBBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmc8bm9tX3Bvb2xzX2FsaWFzKFVuYm9uZFBvb2wEBFQAAAgBGHBvaW50c5UBATBCYWxhbmNlT2Y8VD4AARxiYWxhbmNllQEBMEJhbGFuY2VPZjxUPgAAiQgMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgGFCARTAAAEAI0IAThCVHJlZU1hcDxLLCBWPgAAjQgEIEJUcmVlTWFwCARLATgEVgGFCAAEAJEIAAAAkQgAAAKVCACVCAAABAg4hQgAmQgAAAQIOOAAnQgAAAQIBDkFAKEIAAACpQgApQgMSHBhbGxldF9yY19taWdyYXRvchx2ZXN0aW5nRFJjVmVzdGluZ1NjaGVkdWxlBARUAAAIAQx3aG8EAZg8VCBhcyBmcmFtZV9zeXN0ZW06OkNvbmZpZz46OkFjY291bnRJZAABJHNjaGVkdWxlc6kIAZUBQm91bmRlZFZlYzxwYWxsZXRfdmVzdGluZzo6VmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcgo8VD4+LCBNYXhWZXN0aW5nU2NoZWR1bGVzR2V0PFQ+LD4AAKkIDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBqQEEUwAABACtCAEYVmVjPFQ+AACtCAAAAqkBALEIAAACtQgAtQgMSHBhbGxldF9yY19taWdyYXRvciRyZWZlcmVuZGFAUmVmZXJlbmRhTWVzc2FnZQQUVHJhY2sB+QMADAFAcmVmZXJlbmR1bV9jb3VudNgBLE9wdGlvbjx1MzI+AAE4ZGVjaWRpbmdfY291bnS5CAFEVmVjPChUcmFjaywgdTMyKT4AASx0cmFja19xdWV1ZcEIAXhWZWM8KFRyYWNrLCBWZWM8KHUzMiwgdTEyOCk+KT4AALkIAAACvQgAvQgAAAQI+QM4AMEIAAACxQgAxQgAAAQI+QNZCADJCAAAAs0IAM0IAAAECDjRCADRCAxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczhSZWZlcmVuZHVtSW5mbyAcVHJhY2tJZAH5AzRSdW50aW1lT3JpZ2luAdUIGE1vbWVudAE4EENhbGwBYQccQmFsYW5jZQGVARRUYWxseQHZCCRBY2NvdW50SWQBBDxTY2hlZHVsZUFkZHJlc3MB/AEYHE9uZ29pbmcEAN0IAY0BUmVmZXJlbmR1bVN0YXR1czxUcmFja0lkLCBSdW50aW1lT3JpZ2luLCBNb21lbnQsIENhbGwsIEJhbGFuY2UsIFRhbGx5LApBY2NvdW50SWQsIFNjaGVkdWxlQWRkcmVzcyw+AAAAIEFwcHJvdmVkDAA4ARhNb21lbnQAAOUIAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAA5QgBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEAIFJlamVjdGVkDAA4ARhNb21lbnQAAOUIAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAA5QgBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAIAJENhbmNlbGxlZAwAOAEYTW9tZW50AADlCAGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAOUIAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgADACBUaW1lZE91dAwAOAEYTW9tZW50AADlCAGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAOUIAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAEABhLaWxsZWQEADgBGE1vbWVudAAFAADVCAxgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lMGFoX21pZ3JhdGlvbjxSY1BhbGxldHNPcmlnaW4AAQgYc3lzdGVtBAABBAF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAAAcT3JpZ2lucwQAFQQBdHBhbGxldF9jdXN0b21fb3JpZ2luczo6T3JpZ2luACsAANkIDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcUdHlwZXMUVGFsbHkIFFZvdGVzAZUBFFRvdGFsAAAMARBheWVzlQEBFFZvdGVzAAEQbmF5c5UBARRWb3RlcwABHHN1cHBvcnSVAQEUVm90ZXMAAN0IDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzQFJlZmVyZW5kdW1TdGF0dXMgHFRyYWNrSWQB+QM0UnVudGltZU9yaWdpbgHVCBhNb21lbnQBOBBDYWxsAWEHHEJhbGFuY2UBlQEUVGFsbHkB2QgkQWNjb3VudElkAQQ8U2NoZWR1bGVBZGRyZXNzAfwALAEUdHJhY2v5AwEcVHJhY2tJZAABGG9yaWdpbtUIATRSdW50aW1lT3JpZ2luAAEgcHJvcG9zYWxhBwEQQ2FsbAABJGVuYWN0bWVudGkHAVBEaXNwYXRjaFRpbWU8TW9tZW50PgABJHN1Ym1pdHRlZDgBGE1vbWVudAABSHN1Ym1pc3Npb25fZGVwb3NpdOEIAWxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4AAUBkZWNpc2lvbl9kZXBvc2l05QgBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEgZGVjaWRpbmfpCAF4T3B0aW9uPERlY2lkaW5nU3RhdHVzPE1vbWVudD4+AAEUdGFsbHnZCAEUVGFsbHkAASBpbl9xdWV1ZZkBARBib29sAAEUYWxhcm3xCAGET3B0aW9uPChNb21lbnQsIFNjaGVkdWxlQWRkcmVzcyk+AADhCAxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlcxxEZXBvc2l0CCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBAAgBDHdobwQBJEFjY291bnRJZAABGGFtb3VudJUBARxCYWxhbmNlAADlCAQYT3B0aW9uBARUAeEIAQgQTm9uZQAAABBTb21lBADhCAAAAQAA6QgEGE9wdGlvbgQEVAHtCAEIEE5vbmUAAAAQU29tZQQA7QgAAAEAAO0IDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOERlY2lkaW5nU3RhdHVzBCxCbG9ja051bWJlcgE4AAgBFHNpbmNlOAEsQmxvY2tOdW1iZXIAAShjb25maXJtaW5n2AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAA8QgEGE9wdGlvbgQEVAH1CAEIEE5vbmUAAAAQU29tZQQA9QgAAAEAAPUIAAAECDj8APkIAAAC/QgA/QgMSHBhbGxldF9yY19taWdyYXRvchhjbGFpbXM8UmNDbGFpbXNNZXNzYWdlDCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBLEJsb2NrTnVtYmVyATgBFDRTdG9yYWdlVmFsdWVzBAEUdG90YWyVAQEcQmFsYW5jZQAAABhDbGFpbXMEAAEJAWgoRXRoZXJldW1BZGRyZXNzLCBCYWxhbmNlKQABABxWZXN0aW5nCAEMd2hvuQEBPEV0aGVyZXVtQWRkcmVzcwABIHNjaGVkdWxlwQEBfChCYWxhbmNlLCBCYWxhbmNlLCBCbG9ja051bWJlcikAAgAcU2lnbmluZwQABQkBgChFdGhlcmV1bUFkZHJlc3MsIFN0YXRlbWVudEtpbmQpAAMAJFByZWNsYWltcwQACQkBcChBY2NvdW50SWQsIEV0aGVyZXVtQWRkcmVzcykABAAAAQkAAAQIuQGVAQAFCQAABAi5AckBAAkJAAAECAS5AQANCQAAAhEJABEJEEhwYWxsZXRfcmNfbWlncmF0b3Icc3Rha2luZyRiYWdzX2xpc3RcUG9ydGFibGVCYWdzTGlzdE1lc3NhZ2UAAQgQTm9kZQgBCGlkBAEsQWNjb3VudElkMzIAARBub2RlFQkBMFBvcnRhYmxlTm9kZQAAAAxCYWcIARRzY29yZSgBDHU2NAABDGJhZxkJASxQb3J0YWJsZUJhZwABAAAVCRBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmckYmFnc19saXN0MFBvcnRhYmxlTm9kZQAAFAEIaWQEASxBY2NvdW50SWQzMgABEHByZXZBAQFMT3B0aW9uPEFjY291bnRJZDMyPgABEG5leHRBAQFMT3B0aW9uPEFjY291bnRJZDMyPgABJGJhZ191cHBlcigBDHU2NAABFHNjb3JlKAEMdTY0AAAZCRBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmckYmFnc19saXN0LFBvcnRhYmxlQmFnAAAMARBoZWFkQQEBTE9wdGlvbjxBY2NvdW50SWQzMj4AARB0YWlsQQEBTE9wdGlvbjxBY2NvdW50SWQzMj4AASRiYWdfdXBwZXIoAQx1NjQAAB0JAAACIQkAIQkMSHBhbGxldF9yY19taWdyYXRvciRzY2hlZHVsZXJIUmNTY2hlZHVsZXJNZXNzYWdlBCxCbG9ja051bWJlcgE4AQw8SW5jb21wbGV0ZVNpbmNlBAA4ASxCbG9ja051bWJlcgAAABxSZXRyaWVzBAAlCQHQKFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyPiwgUmV0cnlDb25maWc8QmxvY2tOdW1iZXI+KQABABhMb29rdXAEAC0JAZAoVGFza05hbWUsIFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyPikAAgAAJQkAAAQI/CkJACkJCEBwYWxsZXRfc2NoZWR1bGVyLFJldHJ5Q29uZmlnBBhQZXJpb2QBOAAMATR0b3RhbF9yZXRyaWVzDAEIdTgAASRyZW1haW5pbmcMAQh1OAABGHBlcmlvZDgBGFBlcmlvZAAALQkAAAQICPwAMQkAAAI1CQA1CQxIcGFsbGV0X3JjX21pZ3JhdG9yHGluZGljZXM4UmNJbmRpY2VzSW5kZXgMMEFjY291bnRJbmRleAE4JEFjY291bnRJZAEEHEJhbGFuY2UBlQEAEAEUaW5kZXg4ATBBY2NvdW50SW5kZXgAAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0lQEBHEJhbGFuY2UAARhmcm96ZW6ZAQEQYm9vbAAAOQkAAAI9CQA9CQxIcGFsbGV0X3JjX21pZ3JhdG9yRGNvbnZpY3Rpb25fdm90aW5nZFJjQ29udmljdGlvblZvdGluZ01lc3NhZ2UQJEFjY291bnRJZAEEFENsYXNzAfkDGFZvdGluZwFBCRxCYWxhbmNlAZUBAQgkVm90aW5nRm9yDAAEASRBY2NvdW50SWQAAPkDARRDbGFzcwAAQQkBGFZvdGluZwAAADRDbGFzc0xvY2tzRm9yCAAEASRBY2NvdW50SWQAAGEJAVRWZWM8KENsYXNzLCBCYWxhbmNlKT4AAQAAQQkMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlGFZvdGluZxQcQmFsYW5jZQGVASRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAEIHENhc3RpbmcEAEUJAchDYXN0aW5nPEJhbGFuY2UsIEJsb2NrTnVtYmVyLCBQb2xsSW5kZXgsIE1heFZvdGVzPgAAAChEZWxlZ2F0aW5nBABdCQGsRGVsZWdhdGluZzxCYWxhbmNlLCBBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgABAABFCQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUcQ2FzdGluZxAcQmFsYW5jZQGVASxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAAMARR2b3Rlc0kJAdxCb3VuZGVkVmVjPChQb2xsSW5kZXgsIEFjY291bnRWb3RlPEJhbGFuY2U+KSwgTWF4Vm90ZXM+AAEsZGVsZWdhdGlvbnNVCQFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvclkJAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AABJCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAU0JBFMAAAQAUQkBGFZlYzxUPgAATQkAAAQIOE0HAFEJAAACTQkAVQkMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxR0eXBlcyxEZWxlZ2F0aW9ucwQcQmFsYW5jZQGVAQAIARR2b3Rlc5UBARxCYWxhbmNlAAEcY2FwaXRhbJUBARxCYWxhbmNlAABZCQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUkUHJpb3JMb2NrCCxCbG9ja051bWJlcgE4HEJhbGFuY2UBlQEACAA4ASxCbG9ja051bWJlcgAAlQEBHEJhbGFuY2UAAF0JDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZShEZWxlZ2F0aW5nDBxCYWxhbmNlAZUBJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgAFAEcYmFsYW5jZZUBARxCYWxhbmNlAAEYdGFyZ2V0BAEkQWNjb3VudElkAAEoY29udmljdGlvblUHAShDb252aWN0aW9uAAEsZGVsZWdhdGlvbnNVCQFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvclkJAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AABhCQAAAmUJAGUJAAAECPkDlQEAaQkAAAJtCQBtCQxIcGFsbGV0X3JjX21pZ3JhdG9yIGJvdW50aWVzRFJjQm91bnRpZXNNZXNzYWdlDCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBLEJsb2NrTnVtYmVyATgBECxCb3VudHlDb3VudAQAOAEsQm91bnR5SW5kZXgAAAA8Qm91bnR5QXBwcm92YWxzBABVBAFAVmVjPEJvdW50eUluZGV4PgABAEhCb3VudHlEZXNjcmlwdGlvbnMEAHEJAVgoQm91bnR5SW5kZXgsIFZlYzx1OD4pAAIAIEJvdW50aWVzBAB1CQH0KEJvdW50eUluZGV4LCBhbGlhczo6Qm91bnR5PEFjY291bnRJZCwgQmFsYW5jZSwgQmxvY2tOdW1iZXI+KQADAABxCQAABAg4GAB1CQAABAg4eQkAeQkQSHBhbGxldF9yY19taWdyYXRvciBib3VudGllcxRhbGlhcxhCb3VudHkMJEFjY291bnRJZAEEHEJhbGFuY2UBlQEsQmxvY2tOdW1iZXIBOAAYASBwcm9wb3NlcgQBJEFjY291bnRJZAABFHZhbHVllQEBHEJhbGFuY2UAAQxmZWWVAQEcQmFsYW5jZQABPGN1cmF0b3JfZGVwb3NpdJUBARxCYWxhbmNlAAEQYm9uZJUBARxCYWxhbmNlAAEYc3RhdHVzfQkBkEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAAfQkIPHBhbGxldF9ib3VudGllczBCb3VudHlTdGF0dXMIJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgBHCBQcm9wb3NlZAAAACBBcHByb3ZlZAABABhGdW5kZWQAAgA8Q3VyYXRvclByb3Bvc2VkBAEcY3VyYXRvcgQBJEFjY291bnRJZAADABhBY3RpdmUIARxjdXJhdG9yBAEkQWNjb3VudElkAAEodXBkYXRlX2R1ZTgBLEJsb2NrTnVtYmVyAAQANFBlbmRpbmdQYXlvdXQMARxjdXJhdG9yBAEkQWNjb3VudElkAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAASR1bmxvY2tfYXQ4ASxCbG9ja051bWJlcgAFAExBcHByb3ZlZFdpdGhDdXJhdG9yBAEcY3VyYXRvcgQBJEFjY291bnRJZAAGAACBCQAAAoUJAIUJAAAECEEHgQcAiQkAAAKNCQCNCQxIcGFsbGV0X3JjX21pZ3JhdG9yJGNyb3dkbG9hbkhSY0Nyb3dkbG9hbk1lc3NhZ2UMLEJsb2NrTnVtYmVyATgkQWNjb3VudElkAQQcQmFsYW5jZQGVAQEMMExlYXNlUmVzZXJ2ZRABPHVucmVzZXJ2ZV9ibG9jazgBLEJsb2NrTnVtYmVyAAEcYWNjb3VudAQBJEFjY291bnRJZAABHHBhcmFfaWSgARhQYXJhSWQAARhhbW91bnSVAQEcQmFsYW5jZQAAAFRDcm93ZGxvYW5Db250cmlidXRpb24UATh3aXRoZHJhd19ibG9jazgBLEJsb2NrTnVtYmVyAAEsY29udHJpYnV0b3IEASRBY2NvdW50SWQAARxwYXJhX2lkoAEYUGFyYUlkAAEYYW1vdW50lQEBHEJhbGFuY2UAAURjcm93ZGxvYW5fYWNjb3VudAQBJEFjY291bnRJZAABAEBDcm93ZGxvYW5SZXNlcnZlEAE8dW5yZXNlcnZlX2Jsb2NrOAEsQmxvY2tOdW1iZXIAASRkZXBvc2l0b3IEASRBY2NvdW50SWQAARxwYXJhX2lkoAEYUGFyYUlkAAEYYW1vdW50lQEBHEJhbGFuY2UAAgAAkQkAAAKVCQCVCQAABAg4QACZCQAAAp0JAJ0JDEhwYWxsZXRfcmNfbWlncmF0b3IgdHJlYXN1cnlcUG9ydGFibGVUcmVhc3VyeU1lc3NhZ2UAARw0UHJvcG9zYWxDb3VudAQAOAE0UHJvcG9zYWxJbmRleAAAACRQcm9wb3NhbHMEAKEJAbAoUHJvcG9zYWxJbmRleCwgUHJvcG9zYWw8QWNjb3VudElkMzIsIHUxMjg+KQABACRBcHByb3ZhbHMEAFUEAUhWZWM8UHJvcG9zYWxJbmRleD4AAgAoU3BlbmRDb3VudAQAOAEoU3BlbmRJbmRleAADABhTcGVuZHMIAQhpZDgBKFNwZW5kSW5kZXgAARhzdGF0dXOpCQFgQm94PFBvcnRhYmxlU3BlbmRTdGF0dXM+AAQAPExhc3RTcGVuZFBlcmlvZAQA2AEsT3B0aW9uPHUzMj4ABQAURnVuZHMABgAAoQkAAAQIOKUJAKUJCDxwYWxsZXRfdHJlYXN1cnkgUHJvcG9zYWwIJEFjY291bnRJZAEEHEJhbGFuY2UBlQEAEAEgcHJvcG9zZXIEASRBY2NvdW50SWQAARR2YWx1ZZUBARxCYWxhbmNlAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAARBib25klQEBHEJhbGFuY2UAAKkJDEhwYWxsZXRfcmNfbWlncmF0b3IgdHJlYXN1cnlMUG9ydGFibGVTcGVuZFN0YXR1cwAAGAEoYXNzZXRfa2luZEEHAVxWZXJzaW9uZWRMb2NhdGFibGVBc3NldAABGGFtb3VudJUBARB1MTI4AAEsYmVuZWZpY2lhcnnlAQFEVmVyc2lvbmVkTG9jYXRpb24AASh2YWxpZF9mcm9tOAEMdTMyAAEkZXhwaXJlX2F0OAEMdTMyAAEYc3RhdHVzrQkBUFBvcnRhYmxlUGF5bWVudFN0YXRlAACtCQxIcGFsbGV0X3JjX21pZ3JhdG9yIHRyZWFzdXJ5UFBvcnRhYmxlUGF5bWVudFN0YXRlAAEMHFBlbmRpbmcAAAAkQXR0ZW1wdGVkBAEIaWQoAQx1NjQAAQAYRmFpbGVkAAIAALEJAAACtQkAtQkMSHBhbGxldF9yY19taWdyYXRvciRzY2hlZHVsZXJYU2NoZWR1bGVyQWdlbmRhTWVzc2FnZQgEQgE4BFMBuQkACAEUYmxvY2s4AQRCAAEYYWdlbmRhvQkBOFZlYzxPcHRpb248Uz4+AAC5CRBIcGFsbGV0X3JjX21pZ3JhdG9yJHNjaGVkdWxlchRhbGlhcyRTY2hlZHVsZWQMEENhbGwBYQcsQmxvY2tOdW1iZXIBODRQYWxsZXRzT3JpZ2luAdUIABQBIG1heWJlX2lk9QQBQE9wdGlvbjxUYXNrTmFtZT4AASBwcmlvcml0eQwBIFByaW9yaXR5AAEQY2FsbGEHARBDYWxsAAE4bWF5YmVfcGVyaW9kaWP4AWxPcHRpb248UGVyaW9kPEJsb2NrTnVtYmVyPj4AARhvcmlnaW7VCAE0UGFsbGV0c09yaWdpbgAAvQkAAALBCQDBCQQYT3B0aW9uBARUAbkJAQgQTm9uZQAAABBTb21lBAC5CQAAAQAAxQkAAALJCQDJCRBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmdEZGVsZWdhdGVkX3N0YWtpbmd8UG9ydGFibGVEZWxlZ2F0ZWRTdGFraW5nTWVzc2FnZQABCChEZWxlZ2F0b3JzDAEkZGVsZWdhdG9yBAEsQWNjb3VudElkMzIAARRhZ2VudAQBLEFjY291bnRJZDMyAAEYYW1vdW50lQEBEHUxMjgAAAAYQWdlbnRzFAEUYWdlbnQEASxBY2NvdW50SWQzMgABFHBheWVlBAEsQWNjb3VudElkMzIAATx0b3RhbF9kZWxlZ2F0ZWSVAQEQdTEyOAABVHVuY2xhaW1lZF93aXRoZHJhd2Fsc5UBARB1MTI4AAE0cGVuZGluZ19zbGFzaJUBARB1MTI4AAEAAM0JAAAC0QkA0QkMSHBhbGxldF9yY19taWdyYXRvcjhjaGlsZF9ib3VudGllc3BQb3J0YWJsZUNoaWxkQm91bnRpZXNNZXNzYWdlAAEcQENoaWxkQm91bnR5Q291bnQEADgBLEJvdW50eUluZGV4AAAATFBhcmVudENoaWxkQm91bnRpZXMIADgBLEJvdW50eUluZGV4AAA4AQx1MzIAAQBgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzCAA4ASxCb3VudHlJbmRleAAAOAEMdTMyAAIALENoaWxkQm91bnR5DAEkcGFyZW50X2lkOAEsQm91bnR5SW5kZXgAASBjaGlsZF9pZDgBLEJvdW50eUluZGV4AAEwY2hpbGRfYm91bnR51QkBTFBvcnRhYmxlQ2hpbGRCb3VudHkAAwBkQ2hpbGRCb3VudHlEZXNjcmlwdGlvbnNWMQwBJHBhcmVudF9pZDgBLEJvdW50eUluZGV4AAEgY2hpbGRfaWQ4ASxCb3VudHlJbmRleAABLGRlc2NyaXB0aW9u3QkBfEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPDE3MDAwPj4ABABQVjBUb1YxQ2hpbGRCb3VudHlJZHMMASx2MF9jaGlsZF9pZDgBLEJvdW50eUluZGV4AAEkcGFyZW50X2lkOAEsQm91bnR5SW5kZXgAASx2MV9jaGlsZF9pZDgBLEJvdW50eUluZGV4AAUATENoaWxkcmVuQ3VyYXRvckZlZXMIASBjaGlsZF9pZDgBLEJvdW50eUluZGV4AAEYYW1vdW50lQEBEHUxMjgABgAA1QkMSHBhbGxldF9yY19taWdyYXRvcjhjaGlsZF9ib3VudGllc0xQb3J0YWJsZUNoaWxkQm91bnR5AAAUATRwYXJlbnRfYm91bnR5OAEsQm91bnR5SW5kZXgAARR2YWx1ZZUBARB1MTI4AAEMZmVllQEBEHUxMjgAATxjdXJhdG9yX2RlcG9zaXSVAQEQdTEyOAABGHN0YXR1c9kJAWRQb3J0YWJsZUNoaWxkQm91bnR5U3RhdHVzAADZCQxIcGFsbGV0X3JjX21pZ3JhdG9yOGNoaWxkX2JvdW50aWVzZFBvcnRhYmxlQ2hpbGRCb3VudHlTdGF0dXMAARAUQWRkZWQAAAA8Q3VyYXRvclByb3Bvc2VkBAEcY3VyYXRvcgQBLEFjY291bnRJZDMyAAEAGEFjdGl2ZQQBHGN1cmF0b3IEASxBY2NvdW50SWQzMgACADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgQBLEFjY291bnRJZDMyAAEsYmVuZWZpY2lhcnkEASxBY2NvdW50SWQzMgABJHVubG9ja19hdDgBDHUzMgADAADdCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAOEJAAAC5QkA5QkQSHBhbGxldF9yY19taWdyYXRvchxzdGFraW5nHG1lc3NhZ2VYUG9ydGFibGVTdGFraW5nTWVzc2FnZQABSBhWYWx1ZXMEAOkJAVRQb3J0YWJsZVN0YWtpbmdWYWx1ZXMAAAA0SW52dWxuZXJhYmxlcwQAnQEBQFZlYzxBY2NvdW50SWQzMj4AAQAYQm9uZGVkCAEUc3Rhc2gEASxBY2NvdW50SWQzMgABKGNvbnRyb2xsZXIEASxBY2NvdW50SWQzMgACABhMZWRnZXIIAShjb250cm9sbGVyBAEsQWNjb3VudElkMzIAARhsZWRnZXIBCgFUUG9ydGFibGVTdGFraW5nTGVkZ2VyAAMAFFBheWVlCAEUc3Rhc2gEASxBY2NvdW50SWQzMgABHHBheW1lbnQRCgFkUG9ydGFibGVSZXdhcmREZXN0aW5hdGlvbgAEAChWYWxpZGF0b3JzCAEUc3Rhc2gEASxBY2NvdW50SWQzMgABKHZhbGlkYXRvcnMVCgFYUG9ydGFibGVWYWxpZGF0b3JQcmVmcwAFAChOb21pbmF0b3JzCAEUc3Rhc2gEASxBY2NvdW50SWQzMgABLG5vbWluYXRpb25zGQoBTFBvcnRhYmxlTm9taW5hdGlvbnMABgA4VmlydHVhbFN0YWtlcnMEAAQBLEFjY291bnRJZDMyAAcATEVyYXNTdGFrZXJzT3ZlcnZpZXcMAQxlcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBLEFjY291bnRJZDMyAAEgZXhwb3N1cmUhCgF0UG9ydGFibGVQYWdlZEV4cG9zdXJlTWV0YWRhdGEACABARXJhc1N0YWtlcnNQYWdlZBABDGVyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEsQWNjb3VudElkMzIAARBwYWdlOAEQUGFnZQABIGV4cG9zdXJlJQoBUFBvcnRhYmxlRXhwb3N1cmVQYWdlAAkAOENsYWltZWRSZXdhcmRzDAEMZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEASxBY2NvdW50SWQzMgABHHJld2FyZHNVBAEkVmVjPFBhZ2U+AAoASEVyYXNWYWxpZGF0b3JQcmVmcwwBDGVyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEsQWNjb3VudElkMzIAARRwcmVmcxUKAVhQb3J0YWJsZVZhbGlkYXRvclByZWZzAAsATEVyYXNWYWxpZGF0b3JSZXdhcmQIAQxlcmE4ASBFcmFJbmRleAABGHJld2FyZJUBARB1MTI4AAwAQEVyYXNSZXdhcmRQb2ludHMIAQxlcmE4ASBFcmFJbmRleAABGHBvaW50czUKAVxQb3J0YWJsZUVyYVJld2FyZFBvaW50cwANADhFcmFzVG90YWxTdGFrZQgBDGVyYTgBIEVyYUluZGV4AAEsdG90YWxfc3Rha2WVAQEQdTEyOAAOAEBVbmFwcGxpZWRTbGFzaGVzCAEMZXJhOAEgRXJhSW5kZXgAARRzbGFzaD0KAVhQb3J0YWJsZVVuYXBwbGllZFNsYXNoAA8AKEJvbmRlZEVyYXMEAEkKAXRWZWM8KEVyYUluZGV4LCBTZXNzaW9uSW5kZXgpPgAQAExWYWxpZGF0b3JTbGFzaEluRXJhDAEMZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEASxBY2NvdW50SWQzMgABFHNsYXNoTQoBPChQZXJiaWxsLCB1MTI4KQARAADpCRBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmccbWVzc2FnZTRTdGFraW5nVmFsdWVzBBxCYWxhbmNlAZUBAEABPHZhbGlkYXRvcl9jb3VudNgBLE9wdGlvbjx1MzI+AAFMbWluX3ZhbGlkYXRvcl9jb3VudNgBLE9wdGlvbjx1MzI+AAFIbWluX25vbWluYXRvcl9ib25kYQQBPE9wdGlvbjxCYWxhbmNlPgABSG1pbl92YWxpZGF0b3JfYm9uZGEEATxPcHRpb248QmFsYW5jZT4AAUBtaW5fYWN0aXZlX3N0YWtlYQQBPE9wdGlvbjxCYWxhbmNlPgABOG1pbl9jb21taXNzaW9uRQgBPE9wdGlvbjxQZXJiaWxsPgABUG1heF92YWxpZGF0b3JzX2NvdW502AEsT3B0aW9uPHUzMj4AAVBtYXhfbm9taW5hdG9yc19jb3VudNgBLE9wdGlvbjx1MzI+AAEsY3VycmVudF9lcmHYAUBPcHRpb248RXJhSW5kZXg+AAEoYWN0aXZlX2VyYe0JAXRPcHRpb248UG9ydGFibGVBY3RpdmVFcmFJbmZvPgABJGZvcmNlX2VyYfUJAVxPcHRpb248UG9ydGFibGVGb3JjaW5nPgABSG1heF9zdGFrZWRfcmV3YXJkc/0JATxPcHRpb248UGVyY2VudD4AAVRzbGFzaF9yZXdhcmRfZnJhY3Rpb25FCAE8T3B0aW9uPFBlcmJpbGw+AAFUY2FuY2VsZWRfc2xhc2hfcGF5b3V0YQQBPE9wdGlvbjxCYWxhbmNlPgABXGN1cnJlbnRfcGxhbm5lZF9zZXNzaW9u2AFQT3B0aW9uPFNlc3Npb25JbmRleD4AATxjaGlsbF90aHJlc2hvbGT9CQE8T3B0aW9uPFBlcmNlbnQ+AADtCQQYT3B0aW9uBARUAfEJAQgQTm9uZQAAABBTb21lBADxCQAAAQAA8QkQSHBhbGxldF9yY19taWdyYXRvchxzdGFraW5nHG1lc3NhZ2VUUG9ydGFibGVBY3RpdmVFcmFJbmZvAAAIARRpbmRleDgBIEVyYUluZGV4AAEUc3RhcnRlAQEsT3B0aW9uPHU2ND4AAPUJBBhPcHRpb24EBFQB+QkBCBBOb25lAAAAEFNvbWUEAPkJAAABAAD5CRBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmccbWVzc2FnZTxQb3J0YWJsZUZvcmNpbmcAARAoTm90Rm9yY2luZwAAACBGb3JjZU5ldwABACRGb3JjZU5vbmUAAgAsRm9yY2VBbHdheXMAAwAA/QkEGE9wdGlvbgQEVAEFBwEIEE5vbmUAAAAQU29tZQQABQcAAAEAAAEKEEhwYWxsZXRfcmNfbWlncmF0b3Icc3Rha2luZxxtZXNzYWdlVFBvcnRhYmxlU3Rha2luZ0xlZGdlcgAAEAEUc3Rhc2gEASxBY2NvdW50SWQzMgABFHRvdGFslQEBEHUxMjgAARhhY3RpdmWVAQEQdTEyOAABJHVubG9ja2luZwUKAbhCb3VuZGVkVmVjPFBvcnRhYmxlVW5sb2NrQ2h1bmssIENvbnN0VTMyPDEwMD4+AAAFCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQkKBFMAAAQADQoBGFZlYzxUPgAACQoQSHBhbGxldF9yY19taWdyYXRvchxzdGFraW5nHG1lc3NhZ2VMUG9ydGFibGVVbmxvY2tDaHVuawAACAEUdmFsdWWVAQEQdTEyOAABDGVyYTgBIEVyYUluZGV4AAANCgAAAgkKABEKEEhwYWxsZXRfcmNfbWlncmF0b3Icc3Rha2luZxxtZXNzYWdlZFBvcnRhYmxlUmV3YXJkRGVzdGluYXRpb24AARQYU3Rha2VkAAAAFFN0YXNoAAEAKENvbnRyb2xsZXIAAgAcQWNjb3VudAQABAEsQWNjb3VudElkMzIAAwAQTm9uZQAEAAAVChBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmccbWVzc2FnZVhQb3J0YWJsZVZhbGlkYXRvclByZWZzAAAIAShjb21taXNzaW9uMQUBHFBlcmJpbGwAARxibG9ja2VkmQEBEGJvb2wAABkKEEhwYWxsZXRfcmNfbWlncmF0b3Icc3Rha2luZxxtZXNzYWdlTFBvcnRhYmxlTm9taW5hdGlvbnMAAAwBHHRhcmdldHMdCgGUQm91bmRlZFZlYzxBY2NvdW50SWQzMiwgQ29uc3RVMzI8MzI+PgABMHN1Ym1pdHRlZF9pbjgBIEVyYUluZGV4AAEoc3VwcHJlc3NlZJkBARBib29sAAAdCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABACdAQEYVmVjPFQ+AAAhChBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmccbWVzc2FnZXRQb3J0YWJsZVBhZ2VkRXhwb3N1cmVNZXRhZGF0YQAAEAEUdG90YWyVAQEQdTEyOAABDG93bpUBARB1MTI4AAE8bm9taW5hdG9yX2NvdW50OAEMdTMyAAEocGFnZV9jb3VudDgBEFBhZ2UAACUKEEhwYWxsZXRfcmNfbWlncmF0b3Icc3Rha2luZxxtZXNzYWdlUFBvcnRhYmxlRXhwb3N1cmVQYWdlAAAIAShwYWdlX3RvdGFslQEBEHUxMjgAARhvdGhlcnMpCgHUQm91bmRlZFZlYzxQb3J0YWJsZUluZGl2aWR1YWxFeHBvc3VyZSwgQ29uc3RVMzI8NjAwPj4AACkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBLQoEUwAABAAxCgEYVmVjPFQ+AAAtChBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmccbWVzc2FnZWhQb3J0YWJsZUluZGl2aWR1YWxFeHBvc3VyZQAACAEMd2hvBAEsQWNjb3VudElkMzIAARR2YWx1ZZUBARB1MTI4AAAxCgAAAi0KADUKEEhwYWxsZXRfcmNfbWlncmF0b3Icc3Rha2luZxxtZXNzYWdlXFBvcnRhYmxlRXJhUmV3YXJkUG9pbnRzAAAIARR0b3RhbDgBDHUzMgABKGluZGl2aWR1YWw5CgG4Qm91bmRlZFZlYzwoQWNjb3VudElkMzIsIHUzMiksIENvbnN0VTMyPDIwMDA+PgAAOQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFhBQRTAAAEAF0FARhWZWM8VD4AAD0KEEhwYWxsZXRfcmNfbWlncmF0b3Icc3Rha2luZxxtZXNzYWdlWFBvcnRhYmxlVW5hcHBsaWVkU2xhc2gAABQBJHZhbGlkYXRvcgQBLEFjY291bnRJZDMyAAEMb3dulQEBEHUxMjgAARhvdGhlcnNBCgG4Qm91bmRlZFZlYzwoQWNjb3VudElkMzIsIHUxMjgpLCBDb25zdFUzMjw2MDA+PgABJHJlcG9ydGVyc0UKAZRCb3VuZGVkVmVjPEFjY291bnRJZDMyLCBDb25zdFUzMjwxMD4+AAEYcGF5b3V0lQEBEHUxMjgAAEEKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBnQUEUwAABAChBQEYVmVjPFQ+AABFCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABACdAQEYVmVjPFQ+AABJCgAAAvwATQoAAAQIMQWVAQBRCgAAAlUKAFUKDEhwYWxsZXRfcmNfbWlncmF0b3IgcmVjb3ZlcnlcUG9ydGFibGVSZWNvdmVyeU1lc3NhZ2UAAQwsUmVjb3ZlcmFibGUEAFkKAZQoQWNjb3VudElkMzIsIFBvcnRhYmxlUmVjb3ZlcnlDb25maWcpAAAAQEFjdGl2ZVJlY292ZXJpZXMEAGkKAcgoQWNjb3VudElkMzIsIEFjY291bnRJZDMyLCBQb3J0YWJsZUFjdGl2ZVJlY292ZXJ5KQABABRQcm94eQQAcQoBaChBY2NvdW50SWQzMiwgQWNjb3VudElkMzIpAAIAAFkKAAAECARdCgBdCgxIcGFsbGV0X3JjX21pZ3JhdG9yIHJlY292ZXJ5WFBvcnRhYmxlUmVjb3ZlcnlDb25maWcAABABMGRlbGF5X3BlcmlvZDgBDHUzMgABHGRlcG9zaXSVAQEQdTEyOAABHGZyaWVuZHNhCgFcUG9ydGFibGVSZWNvdmVyeUZyaWVuZHMAASR0aHJlc2hvbGT5AwEMdTE2AABhCgxIcGFsbGV0X3JjX21pZ3JhdG9yIHJlY292ZXJ5XFBvcnRhYmxlUmVjb3ZlcnlGcmllbmRzAAAEARxmcmllbmRzZQoBuEJvdW5kZWRWZWM8QWNjb3VudElkMzIsIENvbnN0VTMyPE1BWF9GUklFTkRTPj4AAGUKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAJ0BARhWZWM8VD4AAGkKAAAEDAQEbQoAbQoMSHBhbGxldF9yY19taWdyYXRvciByZWNvdmVyeVhQb3J0YWJsZUFjdGl2ZVJlY292ZXJ5AAAMARxjcmVhdGVkOAEMdTMyAAEcZGVwb3NpdJUBARB1MTI4AAEcZnJpZW5kc2EKAVxQb3J0YWJsZVJlY292ZXJ5RnJpZW5kcwAAcQoAAAQIBAQAdQoAAAJ5CgB5CgxIcGFsbGV0X3JjX21pZ3JhdG9yHHNvY2lldHlYUG9ydGFibGVTb2NpZXR5TWVzc2FnZQABJBhWYWx1ZXMEAH0KAUhCb3g8U29jaWV0eVZhbHVlcz4AAAAYTWVtYmVyCAAEASxBY2NvdW50SWQzMgAArQoBUFBvcnRhYmxlTWVtYmVyUmVjb3JkAAEAGFBheW91dAgABAEsQWNjb3VudElkMzIAALkKAVBQb3J0YWJsZVBheW91dFJlY29yZAACADRNZW1iZXJCeUluZGV4CAA4AQx1MzIAAAQBLEFjY291bnRJZDMyAAMAQFN1c3BlbmRlZE1lbWJlcnMIAAQBLEFjY291bnRJZDMyAACtCgFQUG9ydGFibGVNZW1iZXJSZWNvcmQABAAoQ2FuZGlkYXRlcwgABAEsQWNjb3VudElkMzIAAL0KAURQb3J0YWJsZUNhbmRpZGFjeQAFABRWb3RlcwwABAEsQWNjb3VudElkMzIAAAQBLEFjY291bnRJZDMyAADBCgEwUG9ydGFibGVWb3RlAAYAPFZvdGVDbGVhckN1cnNvcggABAEsQWNjb3VudElkMzIAABgBHFZlYzx1OD4ABwA0RGVmZW5kZXJWb3RlcwwAOAEMdTMyAAAEASxBY2NvdW50SWQzMgAAwQoBMFBvcnRhYmxlVm90ZQAIAAB9CgxIcGFsbGV0X3JjX21pZ3JhdG9yHHNvY2lldHk0U29jaWV0eVZhbHVlcwAAOAEocGFyYW1ldGVyc4EKAWxPcHRpb248UG9ydGFibGVHcm91cFBhcmFtcz4AAQxwb3RhBAEwT3B0aW9uPHUxMjg+AAEcZm91bmRlckEBAUxPcHRpb248QWNjb3VudElkMzI+AAEQaGVhZEEBAUxPcHRpb248QWNjb3VudElkMzI+AAEUcnVsZXNtBwEwT3B0aW9uPEgyNTY+AAEwbWVtYmVyX2NvdW502AEsT3B0aW9uPHUzMj4AASxyb3VuZF9jb3VudNgBLE9wdGlvbjx1MzI+AAEQYmlkc4kKAWBPcHRpb248VmVjPFBvcnRhYmxlQmlkPj4AARxzY2VwdGljQQEBTE9wdGlvbjxBY2NvdW50SWQzMj4AASRuZXh0X2hlYWSZCgFwT3B0aW9uPFBvcnRhYmxlSW50YWtlUmVjb3JkPgABVGNoYWxsZW5nZV9yb3VuZF9jb3VudNgBLE9wdGlvbjx1MzI+AAEkZGVmZW5kaW5noQoBxE9wdGlvbjwoQWNjb3VudElkMzIsIEFjY291bnRJZDMyLCBQb3J0YWJsZVRhbGx5KT4AAThuZXh0X2ludGFrZV9hdNgBLE9wdGlvbjx1MzI+AAFEbmV4dF9jaGFsbGVuZ2VfYXTYASxPcHRpb248dTMyPgAAgQoEGE9wdGlvbgQEVAGFCgEIEE5vbmUAAAAQU29tZQQAhQoAAAEAAIUKDEhwYWxsZXRfcmNfbWlncmF0b3Icc29jaWV0eUxQb3J0YWJsZUdyb3VwUGFyYW1zAAAQASxtYXhfbWVtYmVyczgBDHUzMgABKG1heF9pbnRha2U4AQx1MzIAASxtYXhfc3RyaWtlczgBDHUzMgABRGNhbmRpZGF0ZV9kZXBvc2l0lQEBEHUxMjgAAIkKBBhPcHRpb24EBFQBjQoBCBBOb25lAAAAEFNvbWUEAI0KAAABAACNCgAAApEKAJEKDEhwYWxsZXRfcmNfbWlncmF0b3Icc29jaWV0eSxQb3J0YWJsZUJpZAAADAEMd2hvBAEsQWNjb3VudElkMzIAARBraW5klQoBPFBvcnRhYmxlQmlkS2luZAABFHZhbHVllQEBEHUxMjgAAJUKDEhwYWxsZXRfcmNfbWlncmF0b3Icc29jaWV0eTxQb3J0YWJsZUJpZEtpbmQAAQgcRGVwb3NpdAQAlQEBEHUxMjgAAAAUVm91Y2gIAAQBLEFjY291bnRJZDMyAACVAQEQdTEyOAABAACZCgQYT3B0aW9uBARUAZ0KAQgQTm9uZQAAABBTb21lBACdCgAAAQAAnQoMSHBhbGxldF9yY19taWdyYXRvchxzb2NpZXR5UFBvcnRhYmxlSW50YWtlUmVjb3JkAAAMAQx3aG8EASxBY2NvdW50SWQzMgABDGJpZJUBARB1MTI4AAEUcm91bmQ4AQx1MzIAAKEKBBhPcHRpb24EBFQBpQoBCBBOb25lAAAAEFNvbWUEAKUKAAABAAClCgAABAwEBKkKAKkKDEhwYWxsZXRfcmNfbWlncmF0b3Icc29jaWV0eTRQb3J0YWJsZVRhbGx5AAAIASRhcHByb3ZhbHM4AQx1MzIAAShyZWplY3Rpb25zOAEMdTMyAACtCgxIcGFsbGV0X3JjX21pZ3JhdG9yHHNvY2lldHlQUG9ydGFibGVNZW1iZXJSZWNvcmQAABABEHJhbms4AQx1MzIAARxzdHJpa2VzOAEMdTMyAAEgdm91Y2hpbmexCgF4T3B0aW9uPFBvcnRhYmxlVm91Y2hpbmdTdGF0dXM+AAEUaW5kZXg4AQx1MzIAALEKBBhPcHRpb24EBFQBtQoBCBBOb25lAAAAEFNvbWUEALUKAAABAAC1CgxIcGFsbGV0X3JjX21pZ3JhdG9yHHNvY2lldHlYUG9ydGFibGVWb3VjaGluZ1N0YXR1cwABCCBWb3VjaGluZwAAABhCYW5uZWQAAQAAuQoMSHBhbGxldF9yY19taWdyYXRvchxzb2NpZXR5UFBvcnRhYmxlUGF5b3V0UmVjb3JkAAAIARBwYWlklQEBEHUxMjgAARxwYXlvdXRzWQgBQFZlYzwodTMyLCB1MTI4KT4AAL0KDEhwYWxsZXRfcmNfbWlncmF0b3Icc29jaWV0eURQb3J0YWJsZUNhbmRpZGFjeQAAFAEUcm91bmQ4AQx1MzIAARBraW5klQoBPFBvcnRhYmxlQmlkS2luZAABDGJpZJUBARB1MTI4AAEUdGFsbHmpCgE0UG9ydGFibGVUYWxseQABOHNrZXB0aWNfc3RydWNrmQEBEGJvb2wAAMEKDEhwYWxsZXRfcmNfbWlncmF0b3Icc29jaWV0eTBQb3J0YWJsZVZvdGUAAAgBHGFwcHJvdmWZAQEQYm9vbAABGHdlaWdodDgBDHUzMgAAxQoISHBhbGxldF9haF9taWdyYXRvcjhNaWdyYXRpb25TdGFnZQABEBxQZW5kaW5nAAAAUERhdGFNaWdyYXRpb25PbmdvaW5nAAEANE1pZ3JhdGlvbkRvbmUAAgAcQ29vbE9mZgQBGGVuZF9hdDgBDHUzMgADAADJCgxIcGFsbGV0X3JjX21pZ3JhdG9yFHR5cGVzNFF1ZXVlUHJpb3JpdHkELEJsb2NrTnVtYmVyATgBDBhDb25maWcAAAA4T3ZlcnJpZGVDb25maWcIADgBLEJsb2NrTnVtYmVyAAA4ASxCbG9ja051bWJlcgABACBEaXNhYmxlZAACAADNCgQYT3B0aW9uBARUAdEKAQgQTm9uZQAAABBTb21lBADRCgAAAQAA0QoMSHBhbGxldF9yY19taWdyYXRvchR0eXBlc1RNaWdyYXRpb25GaW5pc2hlZERhdGEEHEJhbGFuY2UBlQEABAE8cmNfYmFsYW5jZV9rZXB0lQEBHEJhbGFuY2UAANUKEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczhhdXRob3JpemVfY2FsbDRBdXRob3JpemVDYWxsBARUAAAAANkKEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAAN0KEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAADhChAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAADlChAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAA6QoQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABADtCgEMRXJhAADtChAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AAPEKEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGQBIFQ6Ok5vbmNlAAD1ChAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAAPkKCIhwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50UENoYXJnZUFzc2V0VHhQYXltZW50BARUAAAIAQx0aXCRAQEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWR1AwFIT3B0aW9uPFQ6OkFzc2V0SWQ+AAD9Cgh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb25EQ2hlY2tNZXRhZGF0YUhhc2gEBFQAAAQBEG1vZGUBCwEQTW9kZQAAAQsIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uEE1vZGUAAQggRGlzYWJsZWQAAAAcRW5hYmxlZAABAAAFCxA0cGFsbGV0X3Jldml2ZQxldm0wdHhfZXh0ZW5zaW9uJFNldE9yaWdpbgQEVAAAAAAJCwgwZnJhbWVfc3lzdGVtLEFjY291bnRJbmZvCBROb25jZQE4LEFjY291bnREYXRhAQ0LABQBFG5vbmNlOAEUTm9uY2UAASRjb25zdW1lcnM4ASBSZWZDb3VudAABJHByb3ZpZGVyczgBIFJlZkNvdW50AAEsc3VmZmljaWVudHM4ASBSZWZDb3VudAABEGRhdGENCwEsQWNjb3VudERhdGEAAA0LDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQWNjb3VudERhdGEEHEJhbGFuY2UBlQEAEAEQZnJlZZUBARxCYWxhbmNlAAEgcmVzZXJ2ZWSVAQEcQmFsYW5jZQABGGZyb3plbpUBARxCYWxhbmNlAAEUZmxhZ3MRCwEoRXh0cmFGbGFncwAAEQsMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyhFeHRyYUZsYWdzAAAEAJUBARB1MTI4AAAVCww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAXkBAAwBGG5vcm1hbHkBAQRUAAEsb3BlcmF0aW9uYWx5AQEEVAABJG1hbmRhdG9yeXkBAQRUAAAZCwAAAh0LAB0LCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUBIQsEVAFAAAwBFHBoYXNl0QwBFFBoYXNlAAEUZXZlbnQhCwEERQABGHRvcGljc/ABGFZlYzxUPgAAIQsIYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZTBSdW50aW1lRXZlbnQAAcwYU3lzdGVtBAAlCwFwZnJhbWVfc3lzdGVtOjpFdmVudDxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAE0LAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFdmVudDxSdW50aW1lPgABAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAUQsBhHBhbGxldF9taWdyYXRpb25zOjpFdmVudDxSdW50aW1lPgAFACBQcmVpbWFnZQQAVQsBfHBhbGxldF9wcmVpbWFnZTo6RXZlbnQ8UnVudGltZT4ABgAkU2NoZWR1bGVyBABZCwGAcGFsbGV0X3NjaGVkdWxlcjo6RXZlbnQ8UnVudGltZT4ABwAoUGFyYW1ldGVycwQAYQsBhHBhbGxldF9wYXJhbWV0ZXJzOjpFdmVudDxSdW50aW1lPgAIACBCYWxhbmNlcwQAmQsBfHBhbGxldF9iYWxhbmNlczo6RXZlbnQ8UnVudGltZT4ACgBIVHJhbnNhY3Rpb25QYXltZW50BADBCwGocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAsAOEFzc2V0VHhQYXltZW50BADFCwHIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ADQAcVmVzdGluZwQAyQsBeHBhbGxldF92ZXN0aW5nOjpFdmVudDxSdW50aW1lPgAOABhDbGFpbXMEAM0LAXRwYWxsZXRfY2xhaW1zOjpFdmVudDxSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQA0QsBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkV2ZW50PFJ1bnRpbWU+ABUAHFNlc3Npb24EANULAXhwYWxsZXRfc2Vzc2lvbjo6RXZlbnQ8UnVudGltZT4AFgAkWGNtcFF1ZXVlBADZCwGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAN0LAWhwYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAfAChDdW11bHVzWGNtBADtCwGIY3VtdWx1c19wYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAgAExUb1BvbGthZG90WGNtUm91dGVyBADxCwFZAXBhbGxldF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXI6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIKOjpJbnN0YW5jZTE+ACIAME1lc3NhZ2VRdWV1ZQQA9QsBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAjABxVdGlsaXR5BAD9CwFUcGFsbGV0X3V0aWxpdHk6OkV2ZW50ACgAIE11bHRpc2lnBAABDAF8cGFsbGV0X211bHRpc2lnOjpFdmVudDxSdW50aW1lPgApABRQcm94eQQABQwBcHBhbGxldF9wcm94eTo6RXZlbnQ8UnVudGltZT4AKgAcSW5kaWNlcwQADQwBeHBhbGxldF9pbmRpY2VzOjpFdmVudDxSdW50aW1lPgAsABhBc3NldHMEABEMAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ADIAHFVuaXF1ZXMEABUMAXhwYWxsZXRfdW5pcXVlczo6RXZlbnQ8UnVudGltZT4AMwAQTmZ0cwQAGQwBbHBhbGxldF9uZnRzOjpFdmVudDxSdW50aW1lPgA0ADRGb3JlaWduQXNzZXRzBAAhDAHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UyPgA1AFBOZnRGcmFjdGlvbmFsaXphdGlvbgQAJQwBsHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb246OkV2ZW50PFJ1bnRpbWU+ADYAKFBvb2xBc3NldHMEACkMAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTM+ADcAPEFzc2V0Q29udmVyc2lvbgQALQwBnHBhbGxldF9hc3NldF9jb252ZXJzaW9uOjpFdmVudDxSdW50aW1lPgA4ACBSZWNvdmVyeQQAPQwBfHBhbGxldF9yZWNvdmVyeTo6RXZlbnQ8UnVudGltZT4AOQAcU29jaWV0eQQARQwBeHBhbGxldF9zb2NpZXR5OjpFdmVudDxSdW50aW1lPgA6ABhSZXZpdmUEAE0MAXRwYWxsZXRfcmV2aXZlOjpFdmVudDxSdW50aW1lPgA8AEhTdGF0ZVRyaWVNaWdyYXRpb24EAFEMAaxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkV2ZW50PFJ1bnRpbWU+AEYAPE5vbWluYXRpb25Qb29scwQAXQwBnHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpFdmVudDxSdW50aW1lPgBQACRWb3Rlckxpc3QEAGEMAfRwYWxsZXRfYmFnc19saXN0OjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYmFnc19saXN0OjpJbnN0YW5jZTE+AFIAQERlbGVnYXRlZFN0YWtpbmcEAGUMAaBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmc6OkV2ZW50PFJ1bnRpbWU+AFMAPFN0YWtpbmdSY0NsaWVudAQAaQwBuHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6RXZlbnQ8UnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBABxDAHQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpFdmVudDxSdW50aW1lPgBVAGhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllcgQAdQwB+HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6dmVyaWZpZXI6OkV2ZW50PFJ1bnRpbWU+AFYAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAQAhQwB8HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6c2lnbmVkOjpFdmVudDxSdW50aW1lPgBYABxTdGFraW5nBACJDAGQcGFsbGV0X3N0YWtpbmdfYXN5bmM6OkV2ZW50PFJ1bnRpbWU+AFkAIFRyZWFzdXJ5BACZDAF8cGFsbGV0X3RyZWFzdXJ5OjpFdmVudDxSdW50aW1lPgBaAEBDb252aWN0aW9uVm90aW5nBACdDAGgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nOjpFdmVudDxSdW50aW1lPgBbACRSZWZlcmVuZGEEAKEMAYBwYWxsZXRfcmVmZXJlbmRhOjpFdmVudDxSdW50aW1lPgBcACRXaGl0ZWxpc3QEAKUMAYBwYWxsZXRfd2hpdGVsaXN0OjpFdmVudDxSdW50aW1lPgBeACBCb3VudGllcwQAtQwBfHBhbGxldF9ib3VudGllczo6RXZlbnQ8UnVudGltZT4AXwA0Q2hpbGRCb3VudGllcwQAuQwBlHBhbGxldF9jaGlsZF9ib3VudGllczo6RXZlbnQ8UnVudGltZT4AYAAkQXNzZXRSYXRlBAC9DAGEcGFsbGV0X2Fzc2V0X3JhdGU6OkV2ZW50PFJ1bnRpbWU+AGEASE11bHRpQXNzZXRCb3VudGllcwQAwQwBrHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6RXZlbnQ8UnVudGltZT4AYgAUQWhPcHMEAMUMAXRwYWxsZXRfYWhfb3BzOjpFdmVudDxSdW50aW1lPgD+AChBaE1pZ3JhdG9yBADJDAGIcGFsbGV0X2FoX21pZ3JhdG9yOjpFdmVudDxSdW50aW1lPgD/AAAlCwwwZnJhbWVfc3lzdGVtGHBhbGxldBRFdmVudAQEVAABLEBFeHRyaW5zaWNTdWNjZXNzBAE0ZGlzcGF0Y2hfaW5mbykLAUREaXNwYXRjaEV2ZW50SW5mbwAABJBBbiBleHRyaW5zaWMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS48RXh0cmluc2ljRmFpbGVkCAE4ZGlzcGF0Y2hfZXJyb3I1CwE0RGlzcGF0Y2hFcnJvcgABNGRpc3BhdGNoX2luZm8pCwFERGlzcGF0Y2hFdmVudEluZm8AAQRQQW4gZXh0cmluc2ljIGZhaWxlZC4sQ29kZVVwZGF0ZWQAAgRQYDpjb2RlYCB3YXMgdXBkYXRlZC4oTmV3QWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABEGhhc2hAARxUOjpIYXNoAAUEcE9uIG9uLWNoYWluIHJlbWFyayBoYXBwZW5lZC4sVGFza1N0YXJ0ZWQEARB0YXNrPAE4VDo6UnVudGltZVRhc2sABgSAQSBbYFRhc2tgXSBoYXMgc3RhcnRlZCBleGVjdXRpbmc0VGFza0NvbXBsZXRlZAQBEHRhc2s8AThUOjpSdW50aW1lVGFzawAHBIhBIFtgVGFza2BdIGhhcyBmaW5pc2hlZCBleGVjdXRpbmcuKFRhc2tGYWlsZWQIARB0YXNrPAE4VDo6UnVudGltZVRhc2sAAQxlcnI1CwE0RGlzcGF0Y2hFcnJvcgAIBIxBIFtgVGFza2BdIGZhaWxlZCBkdXJpbmcgZXhlY3V0aW9uLkRVcGdyYWRlQXV0aG9yaXplZAgBJGNvZGVfaGFzaEABHFQ6Okhhc2gAATRjaGVja192ZXJzaW9umQEBEGJvb2wACQRoQW4gdXBncmFkZSB3YXMgYXV0aG9yaXplZC6AUmVqZWN0ZWRJbnZhbGlkQXV0aG9yaXplZFVwZ3JhZGUIASRjb2RlX2hhc2hAARxUOjpIYXNoAAEUZXJyb3I1CwE0RGlzcGF0Y2hFcnJvcgAKBBEBQW4gaW52YWxpZCBhdXRob3JpemVkIHVwZ3JhZGUgd2FzIHJlamVjdGVkIHdoaWxlIHRyeWluZyB0byBhcHBseSBpdC4EcEV2ZW50IGZvciB0aGUgU3lzdGVtIHBhbGxldC4pCwgwZnJhbWVfc3lzdGVtRERpc3BhdGNoRXZlbnRJbmZvAAAMARh3ZWlnaHR5AQEYV2VpZ2h0AAEUY2xhc3MtCwE0RGlzcGF0Y2hDbGFzcwABIHBheXNfZmVlMQsBEFBheXMAAC0LDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoNERpc3BhdGNoQ2xhc3MAAQwYTm9ybWFsAAAALE9wZXJhdGlvbmFsAAEAJE1hbmRhdG9yeQACAAAxCww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaBBQYXlzAAEIDFllcwAAAAhObwABAAA1Cwgoc3BfcnVudGltZTREaXNwYXRjaEVycm9yAAE8FE90aGVyAAAAMENhbm5vdExvb2t1cAABACRCYWRPcmlnaW4AAgAYTW9kdWxlBAA5CwEsTW9kdWxlRXJyb3IAAwBEQ29uc3VtZXJSZW1haW5pbmcABAAsTm9Qcm92aWRlcnMABQBAVG9vTWFueUNvbnN1bWVycwAGABRUb2tlbgQAPQsBKFRva2VuRXJyb3IABwAoQXJpdGhtZXRpYwQAQQsBPEFyaXRobWV0aWNFcnJvcgAIADRUcmFuc2FjdGlvbmFsBABFCwFIVHJhbnNhY3Rpb25hbEVycm9yAAkAJEV4aGF1c3RlZAAKAChDb3JydXB0aW9uAAsALFVuYXZhaWxhYmxlAAwAOFJvb3ROb3RBbGxvd2VkAA0AEFRyaWUEAEkLASRUcmllRXJyb3IADgAAOQsIKHNwX3J1bnRpbWUsTW9kdWxlRXJyb3IAAAgBFGluZGV4DAEIdTgAARRlcnJvcnQBjFt1ODsgTUFYX01PRFVMRV9FUlJPUl9FTkNPREVEX1NJWkVdAAA9Cwgoc3BfcnVudGltZShUb2tlbkVycm9yAAEoQEZ1bmRzVW5hdmFpbGFibGUAAAAwT25seVByb3ZpZGVyAAEAMEJlbG93TWluaW11bQACADBDYW5ub3RDcmVhdGUAAwAwVW5rbm93bkFzc2V0AAQAGEZyb3plbgAFACxVbnN1cHBvcnRlZAAGAEBDYW5ub3RDcmVhdGVIb2xkAAcANE5vdEV4cGVuZGFibGUACAAcQmxvY2tlZAAJAABBCwg0c3BfYXJpdGhtZXRpYzxBcml0aG1ldGljRXJyb3IAAQwkVW5kZXJmbG93AAAAIE92ZXJmbG93AAEAOERpdmlzaW9uQnlaZXJvAAIAAEULCChzcF9ydW50aW1lSFRyYW5zYWN0aW9uYWxFcnJvcgABCDBMaW1pdFJlYWNoZWQAAAAcTm9MYXllcgABAABJCwwoc3BfcnVudGltZTBwcm92aW5nX3RyaWUkVHJpZUVycm9yAAE4QEludmFsaWRTdGF0ZVJvb3QAAABISW5jb21wbGV0ZURhdGFiYXNlAAEAUFZhbHVlQXRJbmNvbXBsZXRlS2V5AAIAMERlY29kZXJFcnJvcgADACxJbnZhbGlkSGFzaAAEADBEdXBsaWNhdGVLZXkABQA4RXh0cmFuZW91c05vZGUABgA8RXh0cmFuZW91c1ZhbHVlAAcAXEV4dHJhbmVvdXNIYXNoUmVmZXJlbmNlAAgAVEludmFsaWRDaGlsZFJlZmVyZW5jZQAJADRWYWx1ZU1pc21hdGNoAAoAPEluY29tcGxldGVQcm9vZgALADBSb290TWlzbWF0Y2gADAAsRGVjb2RlRXJyb3IADQAATQsMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEYYFZhbGlkYXRpb25GdW5jdGlvblN0b3JlZAAABNBUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgYmVlbiBzY2hlZHVsZWQgdG8gYXBwbHkuZFZhbGlkYXRpb25GdW5jdGlvbkFwcGxpZWQEAVRyZWxheV9jaGFpbl9ibG9ja19udW04AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAAQRFAVRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGFzIG9mIHRoZSBjb250YWluZWQgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyLmxWYWxpZGF0aW9uRnVuY3Rpb25EaXNjYXJkZWQAAgSwVGhlIHJlbGF5LWNoYWluIGFib3J0ZWQgdGhlIHVwZ3JhZGUgcHJvY2Vzcy5gRG93bndhcmRNZXNzYWdlc1JlY2VpdmVkBAEUY291bnQ4AQx1MzIAAwQBAVNvbWUgZG93bndhcmQgbWVzc2FnZXMgaGF2ZSBiZWVuIHJlY2VpdmVkIGFuZCB3aWxsIGJlIHByb2Nlc3NlZC5kRG93bndhcmRNZXNzYWdlc1Byb2Nlc3NlZAgBLHdlaWdodF91c2VkeQEBGFdlaWdodAABIGRtcV9oZWFkQAFEcmVsYXlfY2hhaW46Okhhc2gABATgRG93bndhcmQgbWVzc2FnZXMgd2VyZSBwcm9jZXNzZWQgdXNpbmcgdGhlIGdpdmVuIHdlaWdodC5EVXB3YXJkTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2j1BAE8T3B0aW9uPFhjbUhhc2g+AAUEuEFuIHVwd2FyZCBtZXNzYWdlIHdhcyBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRRCwxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0FEV2ZW50BARUAAEgOFVwZ3JhZGVTdGFydGVkBAEobWlncmF0aW9uczgBDHUzMhDQVGhlIG51bWJlciBvZiBtaWdyYXRpb25zIHRoYXQgdGhpcyB1cGdyYWRlIGNvbnRhaW5zLgBBAVRoaXMgY2FuIGJlIHVzZWQgdG8gZGVzaWduIGEgcHJvZ3Jlc3MgaW5kaWNhdG9yIGluIGNvbWJpbmF0aW9uIHdpdGggY291bnRpbmcgdGhlzGBNaWdyYXRpb25Db21wbGV0ZWRgIGFuZCBgTWlncmF0aW9uU2tpcHBlZGAgZXZlbnRzLgAMaEEgUnVudGltZSB1cGdyYWRlIHN0YXJ0ZWQuAPhJdHMgZW5kIGlzIGluZGljYXRlZCBieSBgVXBncmFkZUNvbXBsZXRlZGAgb3IgYFVwZ3JhZGVGYWlsZWRgLkBVcGdyYWRlQ29tcGxldGVkAAEMmFRoZSBjdXJyZW50IHJ1bnRpbWUgdXBncmFkZSBjb21wbGV0ZWQuAB0BVGhpcyBpbXBsaWVzIHRoYXQgYWxsIG9mIGl0cyBtaWdyYXRpb25zIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgYXMgd2VsbC40VXBncmFkZUZhaWxlZAACDFxSdW50aW1lIHVwZ3JhZGUgZmFpbGVkLgDoVGhpcyBpcyB2ZXJ5IGJhZCBhbmQgd2lsbCByZXF1aXJlIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uLkBNaWdyYXRpb25Ta2lwcGVkBAEUaW5kZXg4AQx1MzIEKQFUaGUgaW5kZXggb2YgdGhlIHNraXBwZWQgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgMECQFBIG1pZ3JhdGlvbiB3YXMgc2tpcHBlZCBzaW5jZSBpdCB3YXMgYWxyZWFkeSBleGVjdXRlZCBpbiB0aGUgcGFzdC5ETWlncmF0aW9uQWR2YW5jZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgQEXEEgbWlncmF0aW9uIHByb2dyZXNzZWQuSE1pZ3JhdGlvbkNvbXBsZXRlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBQRYQSBNaWdyYXRpb24gY29tcGxldGVkLjxNaWdyYXRpb25GYWlsZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgYMTEEgTWlncmF0aW9uIGZhaWxlZC4ATQFUaGlzIGltcGxpZXMgdGhhdCB0aGUgd2hvbGUgdXBncmFkZSBmYWlsZWQgYW5kIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHJlcXVpcmVkLjxIaXN0b3JpY0NsZWFyZWQEASxuZXh0X2N1cnNvcugBPE9wdGlvbjxWZWM8dTg+PgToU2hvdWxkIGJlIHBhc3NlZCB0byBgY2xlYXJfaGlzdG9yaWNgIGluIGEgc3VjY2Vzc2l2ZSBjYWxsLgcEyFRoZSBzZXQgb2YgaGlzdG9yaWNhbCBtaWdyYXRpb25zIGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0VQsMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQURXZlbnQEBFQAAQwUTm90ZWQEARBoYXNoQAEcVDo6SGFzaAAABGhBIHByZWltYWdlIGhhcyBiZWVuIG5vdGVkLiRSZXF1ZXN0ZWQEARBoYXNoQAEcVDo6SGFzaAABBHhBIHByZWltYWdlIGhhcyBiZWVuIHJlcXVlc3RlZC4cQ2xlYXJlZAQBEGhhc2hAARxUOjpIYXNoAAIEbEEgcHJlaW1hZ2UgaGFzIGJlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldFkLDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFdmVudAQEVAABKCRTY2hlZHVsZWQIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgAABFBTY2hlZHVsZWQgc29tZSB0YXNrLiBDYW5jZWxlZAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAEETENhbmNlbGVkIHNvbWUgdGFzay4oRGlzcGF0Y2hlZAwBEHRhc2v8AXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZPUEAUBPcHRpb248VGFza05hbWU+AAEYcmVzdWx0XQsBOERpc3BhdGNoUmVzdWx0AAIEVERpc3BhdGNoZWQgc29tZSB0YXNrLiBSZXRyeVNldBABEHRhc2v8AXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZPUEAUBPcHRpb248VGFza05hbWU+AAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4AARxyZXRyaWVzDAEIdTgAAwSgU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3Igc29tZSB0YXNrLjhSZXRyeUNhbmNlbGxlZAgBEHRhc2v8AXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZPUEAUBPcHRpb248VGFza05hbWU+AAQErENhbmNlbCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIHNvbWUgdGFzay48Q2FsbFVuYXZhaWxhYmxlCAEQdGFza/wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlk9QQBQE9wdGlvbjxUYXNrTmFtZT4ABQQpAVRoZSBjYWxsIGZvciB0aGUgcHJvdmlkZWQgaGFzaCB3YXMgbm90IGZvdW5kIHNvIHRoZSB0YXNrIGhhcyBiZWVuIGFib3J0ZWQuOFBlcmlvZGljRmFpbGVkCAEQdGFza/wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlk9QQBQE9wdGlvbjxUYXNrTmFtZT4ABgQ9AVRoZSBnaXZlbiB0YXNrIHdhcyB1bmFibGUgdG8gYmUgcmVuZXdlZCBzaW5jZSB0aGUgYWdlbmRhIGlzIGZ1bGwgYXQgdGhhdCBibG9jay4sUmV0cnlGYWlsZWQIARB0YXNr/AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWT1BAFAT3B0aW9uPFRhc2tOYW1lPgAHCF0BVGhlIGdpdmVuIHRhc2sgd2FzIHVuYWJsZSB0byBiZSByZXRyaWVkIHNpbmNlIHRoZSBhZ2VuZGEgaXMgZnVsbCBhdCB0aGF0IGJsb2NrIG9yIHRoZXJlnHdhcyBub3QgZW5vdWdoIHdlaWdodCB0byByZXNjaGVkdWxlIGl0LlRQZXJtYW5lbnRseU92ZXJ3ZWlnaHQIARB0YXNr/AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWT1BAFAT3B0aW9uPFRhc2tOYW1lPgAIBPBUaGUgZ2l2ZW4gdGFzayBjYW4gbmV2ZXIgYmUgZXhlY3V0ZWQgc2luY2UgaXQgaXMgb3ZlcndlaWdodC5AQWdlbmRhSW5jb21wbGV0ZQQBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgAJBIRBZ2VuZGEgaXMgaW5jb21wbGV0ZSBmcm9tIGB3aGVuYC4EMEV2ZW50cyB0eXBlLl0LBBhSZXN1bHQIBFQBEARFATULAQgIT2sEABAAAAAADEVycgQANQsAAAEAAGELDERwYWxsZXRfcGFyYW1ldGVycxhwYWxsZXQURXZlbnQEBFQAAQQcVXBkYXRlZAwBDGtleWULAcQ8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6S2V5BGRUaGUga2V5IHRoYXQgd2FzIHVwZGF0ZWQuASRvbGRfdmFsdWV9CwHsT3B0aW9uPDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZT4EfFRoZSBvbGQgdmFsdWUgYmVmb3JlIHRoaXMgY2FsbC4BJG5ld192YWx1ZX0LAexPcHRpb248PFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlPgR4VGhlIG5ldyB2YWx1ZSBhZnRlciB0aGlzIGNhbGwuAAxQQSBQYXJhbWV0ZXIgd2FzIHNldC4AvElzIGFsc28gZW1pdHRlZCB3aGVuIHRoZSB2YWx1ZSB3YXMgbm90IGNoYW5nZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0ZQsIYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZVBSdW50aW1lUGFyYW1ldGVyc0tleQABFCBJc3N1YW5jZQQAaQsBpQE8ZHluYW1pY19wYXJhbXM6Omlzc3VhbmNlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAAAgVHJlYXN1cnkEAG0LAaUBPGR5bmFtaWNfcGFyYW1zOjp0cmVhc3VyeTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAEAPFN0YWtpbmdFbGVjdGlvbgQAcQsBxQE8ZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQACACRTY2hlZHVsZXIEAHULAakBPGR5bmFtaWNfcGFyYW1zOjpzY2hlZHVsZXI6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQADADBNZXNzYWdlUXVldWUEAHkLAbkBPGR5bmFtaWNfcGFyYW1zOjptZXNzYWdlX3F1ZXVlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkABAAAaQsQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyBpc3N1YW5jZTRQYXJhbWV0ZXJzS2V5AAEQME1pbkluZmxhdGlvbgQADQEBME1pbkluZmxhdGlvbgAAADBNYXhJbmZsYXRpb24EABkBATBNYXhJbmZsYXRpb24AAQAoSWRlYWxTdGFrZQQAHQEBKElkZWFsU3Rha2UAAgAcRmFsbG9mZgQAIQEBHEZhbGxvZmYAAwAAbQsQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyB0cmVhc3VyeTRQYXJhbWV0ZXJzS2V5AAEILEJ1cm5Qb3J0aW9uBAApAQEsQnVyblBvcnRpb24AAAA8QnVybkRlc3RpbmF0aW9uBAA1AQE8QnVybkRlc3RpbmF0aW9uAAEAAHELEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjRQYXJhbWV0ZXJzS2V5AAEcLFNpZ25lZFBoYXNlBABJAQEsU2lnbmVkUGhhc2UAAABQTWF4U2lnbmVkU3VibWlzc2lvbnMEAE0BAVBNYXhTaWduZWRTdWJtaXNzaW9ucwABADRVbnNpZ25lZFBoYXNlBABRAQE0VW5zaWduZWRQaGFzZQACAChNaW5lclBhZ2VzBABVAQEoTWluZXJQYWdlcwADAERNYXhFbGVjdGluZ1ZvdGVycwQAWQEBRE1heEVsZWN0aW5nVm90ZXJzAAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sEAF0BAVhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAAUAOE1heEVyYUR1cmF0aW9uBABhAQE4TWF4RXJhRHVyYXRpb24ABgAAdQsQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXI0UGFyYW1ldGVyc0tleQABCFBNYXhTY2hlZHVsZWRQZXJCbG9jawQAbQEBUE1heFNjaGVkdWxlZFBlckJsb2NrAAAANE1heGltdW1XZWlnaHQEAHEBATRNYXhpbXVtV2VpZ2h0AAEAAHkLEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTRQYXJhbWV0ZXJzS2V5AAEIPE1heE9uSW5pdFdlaWdodAQAgQEBPE1heE9uSW5pdFdlaWdodAAAADxNYXhPbklkbGVXZWlnaHQEAIkBATxNYXhPbklkbGVXZWlnaHQAAQAAfQsEGE9wdGlvbgQEVAGBCwEIEE5vbmUAAAAQU29tZQQAgQsAAAEAAIELCGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWVYUnVudGltZVBhcmFtZXRlcnNWYWx1ZQABFCBJc3N1YW5jZQQAhQsBrQE8ZHluYW1pY19wYXJhbXM6Omlzc3VhbmNlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQAAACBUcmVhc3VyeQQAiQsBrQE8ZHluYW1pY19wYXJhbXM6OnRyZWFzdXJ5OjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQABADxTdGFraW5nRWxlY3Rpb24EAI0LAc0BPGR5bmFtaWNfcGFyYW1zOjpzdGFraW5nX2VsZWN0aW9uOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQACACRTY2hlZHVsZXIEAJELAbEBPGR5bmFtaWNfcGFyYW1zOjpzY2hlZHVsZXI6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAMAME1lc3NhZ2VRdWV1ZQQAlQsBwQE8ZHluYW1pY19wYXJhbXM6Om1lc3NhZ2VfcXVldWU6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAQAAIULEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMgaXNzdWFuY2U8UGFyYW1ldGVyc1ZhbHVlAAEQME1pbkluZmxhdGlvbgQAFQEBLFBlcnF1aW50aWxsAAAAME1heEluZmxhdGlvbgQAFQEBLFBlcnF1aW50aWxsAAEAKElkZWFsU3Rha2UEABUBASxQZXJxdWludGlsbAACABxGYWxsb2ZmBAAVAQEsUGVycXVpbnRpbGwAAwAAiQsQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyB0cmVhc3VyeTxQYXJhbWV0ZXJzVmFsdWUAAQgsQnVyblBvcnRpb24EADEBARxQZXJtaWxsAAAAPEJ1cm5EZXN0aW5hdGlvbgQAPQEBnGNyYXRlOjp0cmVhc3VyeTo6QnVybkRlc3RpbmF0aW9uQWNjb3VudAABAACNCxBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb248UGFyYW1ldGVyc1ZhbHVlAAEcLFNpZ25lZFBoYXNlBAA4ASxCbG9ja051bWJlcgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQAOAEMdTMyAAEANFVuc2lnbmVkUGhhc2UEADgBLEJsb2NrTnVtYmVyAAIAKE1pbmVyUGFnZXMEADgBDHUzMgADAERNYXhFbGVjdGluZ1ZvdGVycwQAOAEMdTMyAAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sEADgBDHUzMgAFADhNYXhFcmFEdXJhdGlvbgQAKAEMdTY0AAYAAJELEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyPFBhcmFtZXRlcnNWYWx1ZQABCFBNYXhTY2hlZHVsZWRQZXJCbG9jawQAOAEMdTMyAAAANE1heGltdW1XZWlnaHQEAHkBARhXZWlnaHQAAQAAlQsQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlPFBhcmFtZXRlcnNWYWx1ZQABCDxNYXhPbkluaXRXZWlnaHQEAHUBAThPcHRpb248V2VpZ2h0PgAAADxNYXhPbklkbGVXZWlnaHQEAHUBAThPcHRpb248V2VpZ2h0PgABAACZCww8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFdmVudAgEVAAESQABeBxFbmRvd2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABMGZyZWVfYmFsYW5jZZUBAShUOjpCYWxhbmNlAAAEuEFuIGFjY291bnQgd2FzIGNyZWF0ZWQgd2l0aCBzb21lIGZyZWUgYmFsYW5jZS4gRHVzdExvc3QIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAAQg9AUFuIGFjY291bnQgd2FzIHJlbW92ZWQgd2hvc2UgYmFsYW5jZSB3YXMgbm9uLXplcm8gYnV0IGJlbG93IEV4aXN0ZW50aWFsRGVwb3NpdCx4cmVzdWx0aW5nIGluIGFuIG91dHJpZ2h0IGxvc3MuIFRyYW5zZmVyDAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAAgRMVHJhbnNmZXIgc3VjY2VlZGVkLihCYWxhbmNlU2V0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZnJlZZUBAShUOjpCYWxhbmNlAAMEaEEgYmFsYW5jZSB3YXMgc2V0IGJ5IHJvb3QuIFJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UABATgU29tZSBiYWxhbmNlIHdhcyByZXNlcnZlZCAobW92ZWQgZnJvbSBmcmVlIHRvIHJlc2VydmVkKS4oVW5yZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAAUE6FNvbWUgYmFsYW5jZSB3YXMgdW5yZXNlcnZlZCAobW92ZWQgZnJvbSByZXNlcnZlZCB0byBmcmVlKS5IUmVzZXJ2ZVJlcGF0cmlhdGVkEAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAAUhkZXN0aW5hdGlvbl9zdGF0dXOdCwEYU3RhdHVzAAYITQFTb21lIGJhbGFuY2Ugd2FzIG1vdmVkIGZyb20gdGhlIHJlc2VydmUgb2YgdGhlIGZpcnN0IGFjY291bnQgdG8gdGhlIHNlY29uZCBhY2NvdW50LthGaW5hbCBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIGJhbGFuY2UgdHlwZS4cRGVwb3NpdAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAAcE2FNvbWUgYW1vdW50IHdhcyBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiBXaXRoZHJhdwgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAAgEHQFTb21lIGFtb3VudCB3YXMgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UACQQBAVNvbWUgYW1vdW50IHdhcyByZW1vdmVkIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIG1pc2JlaGF2aW9yKS4YTWludGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UACgScU29tZSBhbW91bnQgd2FzIG1pbnRlZCBpbnRvIGFuIGFjY291bnQuME1pbnRlZENyZWRpdAQBGGFtb3VudJUBAShUOjpCYWxhbmNlAAsE4FNvbWUgY3JlZGl0IHdhcyBiYWxhbmNlZCBhbmQgYWRkZWQgdG8gdGhlIFRvdGFsSXNzdWFuY2UuGEJ1cm5lZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAAwEnFNvbWUgYW1vdW50IHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LihCdXJuZWREZWJ0BAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UADQTMU29tZSBkZWJ0IGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgVG90YWwgSXNzdWFuY2UuJFN1c3BlbmRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAA4EFQFTb21lIGFtb3VudCB3YXMgc3VzcGVuZGVkIGZyb20gYW4gYWNjb3VudCAoaXQgY2FuIGJlIHJlc3RvcmVkIGxhdGVyKS4gUmVzdG9yZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAPBKRTb21lIGFtb3VudCB3YXMgcmVzdG9yZWQgaW50byBhbiBhY2NvdW50LiBVcGdyYWRlZAQBDHdobwQBMFQ6OkFjY291bnRJZAAQBGBBbiBhY2NvdW50IHdhcyB1cGdyYWRlZC4YSXNzdWVkBAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAEQQtAVRvdGFsIGlzc3VhbmNlIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgY3JlZGl0IHRvIGJlIGJhbGFuY2VkLiRSZXNjaW5kZWQEARhhbW91bnSVAQEoVDo6QmFsYW5jZQASBCUBVG90YWwgaXNzdWFuY2Ugd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBkZWJ0IHRvIGJlIGJhbGFuY2VkLhhMb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQATBGBTb21lIGJhbGFuY2Ugd2FzIGxvY2tlZC4gVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAUBGhTb21lIGJhbGFuY2Ugd2FzIHVubG9ja2VkLhhGcm96ZW4IAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAVBGBTb21lIGJhbGFuY2Ugd2FzIGZyb3plbi4YVGhhd2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAFgRgU29tZSBiYWxhbmNlIHdhcyB0aGF3ZWQuTFRvdGFsSXNzdWFuY2VGb3JjZWQIAQxvbGSVAQEoVDo6QmFsYW5jZQABDG5ld5UBAShUOjpCYWxhbmNlABcErFRoZSBgVG90YWxJc3N1YW5jZWAgd2FzIGZvcmNlZnVsbHkgY2hhbmdlZC4QSGVsZAwBGHJlYXNvbqELAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABgEgFNvbWUgYmFsYW5jZSB3YXMgcGxhY2VkIG9uIGhvbGQuKEJ1cm5lZEhlbGQMARhyZWFzb26hCwFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAZBKBIZWxkIGJhbGFuY2Ugd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuOFRyYW5zZmVyT25Ib2xkEAEYcmVhc29uoQsBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABoEFQFBIHRyYW5zZmVyIG9mIGBhbW91bnRgIG9uIGhvbGQgZnJvbSBgc291cmNlYCB0byBgZGVzdGAgd2FzIGluaXRpYXRlZC48VHJhbnNmZXJBbmRIb2xkEAEYcmVhc29uoQsBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABLHRyYW5zZmVycmVklQEBKFQ6OkJhbGFuY2UAGwQJAVRoZSBgdHJhbnNmZXJyZWRgIGJhbGFuY2UgaXMgcGxhY2VkIG9uIGhvbGQgYXQgdGhlIGBkZXN0YCBhY2NvdW50LiBSZWxlYXNlZAwBGHJlYXNvbqELAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABwEkFNvbWUgYmFsYW5jZSB3YXMgcmVsZWFzZWQgZnJvbSBob2xkLihVbmV4cGVjdGVkBAC9CwE4VW5leHBlY3RlZEtpbmQAHQSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSdCxQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2M0QmFsYW5jZVN0YXR1cwABCBBGcmVlAAAAIFJlc2VydmVkAAEAAKELCGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWVEUnVudGltZUhvbGRSZWFzb24AASwgUHJlaW1hZ2UEAKEHAWxwYWxsZXRfcHJlaW1hZ2U6OkhvbGRSZWFzb24ABgAcU2Vzc2lvbgQAsQcBaHBhbGxldF9zZXNzaW9uOjpIb2xkUmVhc29uABYALFBvbGthZG90WGNtBAC1BwFYcGFsbGV0X3hjbTo6SG9sZFJlYXNvbgAfAFBOZnRGcmFjdGlvbmFsaXphdGlvbgQApQsBoHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb246OkhvbGRSZWFzb24ANgAYUmV2aXZlBACpCwFkcGFsbGV0X3Jldml2ZTo6SG9sZFJlYXNvbgA8AEhTdGF0ZVRyaWVNaWdyYXRpb24EAKkHAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24ARgBARGVsZWdhdGVkU3Rha2luZwQArQcBkHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6SG9sZFJlYXNvbgBTADxTdGFraW5nUmNDbGllbnQEAK0LAahwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkhvbGRSZWFzb24AVABgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBACxCwHgcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkhvbGRSZWFzb24AWAAcU3Rha2luZwQAtQsBgHBhbGxldF9zdGFraW5nX2FzeW5jOjpIb2xkUmVhc29uAFkASE11bHRpQXNzZXRCb3VudGllcwQAuQsBnHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6SG9sZFJlYXNvbgBiAAClCwxwcGFsbGV0X25mdF9mcmFjdGlvbmFsaXphdGlvbhhwYWxsZXQoSG9sZFJlYXNvbgABBDhGcmFjdGlvbmFsaXplZAAAAACpCww0cGFsbGV0X3Jldml2ZRhwYWxsZXQoSG9sZFJlYXNvbgABDGBDb2RlVXBsb2FkRGVwb3NpdFJlc2VydmUAAABUU3RvcmFnZURlcG9zaXRSZXNlcnZlAAEAOEFkZHJlc3NNYXBwaW5nAAIAAK0LDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0KEhvbGRSZWFzb24AAQQQS2V5cwAAAACxCxCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZBhwYWxsZXQoSG9sZFJlYXNvbgABBEBTaWduZWRTdWJtaXNzaW9uAAAAALULEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0KEhvbGRSZWFzb24AAQQcU3Rha2luZwAAAAC5CwxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldChIb2xkUmVhc29uBARJAAEEOEN1cmF0b3JEZXBvc2l0AAAAAL0LDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEIOEJhbGFuY2VVcGRhdGVkAAAAVEZhaWxlZFRvTXV0YXRlQWNjb3VudAABAADBCwxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEESFRyYW5zYWN0aW9uRmVlUGFpZAwBDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWWVAQEwQmFsYW5jZU9mPFQ+AAEMdGlwlQEBMEJhbGFuY2VPZjxUPgAACFkBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgLCBvZiB3aGljaCBgdGlwYCB3YXMgYWRkZWQgdG8gdGhlIG1pbmltdW0gaW5jbHVzaW9uIGZlZSxcaGFzIGJlZW4gcGFpZCBieSBgd2hvYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTFCwyIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQg4QXNzZXRUeEZlZVBhaWQQAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVllQEBMEJhbGFuY2VPZjxUPgABDHRpcJUBATBCYWxhbmNlT2Y8VD4AASBhc3NldF9pZDkCAShUOjpBc3NldElkAAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLLhoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gIGluIGFuIGFzc2V0IGBhc3NldF9pZGAuREFzc2V0UmVmdW5kRmFpbGVkBAFIbmF0aXZlX2Ftb3VudF9rZXB0lQEBMEJhbGFuY2VPZjxUPgABBPRBIHN3YXAgb2YgdGhlIHJlZnVuZCBpbiBuYXRpdmUgY3VycmVuY3kgYmFjayB0byBhc3NldCBmYWlsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0yQsMOHBhbGxldF92ZXN0aW5nGHBhbGxldBRFdmVudAQEVAABDDhWZXN0aW5nQ3JlYXRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAThzY2hlZHVsZV9pbmRleDgBDHUzMgAABJBBIHZlc3Rpbmcgc2NoZWR1bGUgaGFzIGJlZW4gY3JlYXRlZC44VmVzdGluZ1VwZGF0ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEgdW52ZXN0ZWSVAQEwQmFsYW5jZU9mPFQ+AAEIUQFUaGUgYW1vdW50IHZlc3RlZCBoYXMgYmVlbiB1cGRhdGVkLiBUaGlzIGNvdWxkIGluZGljYXRlIGEgY2hhbmdlIGluIGZ1bmRzIGF2YWlsYWJsZS4lAVRoZSBiYWxhbmNlIGdpdmVuIGlzIHRoZSBhbW91bnQgd2hpY2ggaXMgbGVmdCB1bnZlc3RlZCAoYW5kIHRodXMgbG9ja2VkKS5AVmVzdGluZ0NvbXBsZXRlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAgScQW4gXFthY2NvdW50XF0gaGFzIGJlY29tZSBmdWxseSB2ZXN0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0zQsQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltcxhwYWxsZXQURXZlbnQEBFQAAQQcQ2xhaW1lZAwBDHdobwQBMFQ6OkFjY291bnRJZAABQGV0aGVyZXVtX2FkZHJlc3O5AQE8RXRoZXJldW1BZGRyZXNzAAEYYW1vdW50lQEBMEJhbGFuY2VPZjxUPgAABGhTb21lb25lIGNsYWltZWQgc29tZSBET1RzLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNELDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBRFdmVudAQEVAABKEBOZXdJbnZ1bG5lcmFibGVzBAE0aW52dWxuZXJhYmxlc50BAURWZWM8VDo6QWNjb3VudElkPgAABGxOZXcgSW52dWxuZXJhYmxlcyB3ZXJlIHNldC5ESW52dWxuZXJhYmxlQWRkZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEEdEEgbmV3IEludnVsbmVyYWJsZSB3YXMgYWRkZWQuTEludnVsbmVyYWJsZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAIEcEFuIEludnVsbmVyYWJsZSB3YXMgcmVtb3ZlZC5QTmV3RGVzaXJlZENhbmRpZGF0ZXMEAUhkZXNpcmVkX2NhbmRpZGF0ZXM4AQx1MzIAAwSkVGhlIG51bWJlciBvZiBkZXNpcmVkIGNhbmRpZGF0ZXMgd2FzIHNldC5ATmV3Q2FuZGlkYWN5Qm9uZAQBLGJvbmRfYW1vdW50lQEBMEJhbGFuY2VPZjxUPgAEBGxUaGUgY2FuZGlkYWN5IGJvbmQgd2FzIHNldC44Q2FuZGlkYXRlQWRkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4ABQRcQSBuZXcgY2FuZGlkYXRlIGpvaW5lZC5QQ2FuZGlkYXRlQm9uZFVwZGF0ZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4ABgRwQm9uZCBvZiBhIGNhbmRpZGF0ZSB1cGRhdGVkLkBDYW5kaWRhdGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAHBGBBIGNhbmRpZGF0ZSB3YXMgcmVtb3ZlZC5EQ2FuZGlkYXRlUmVwbGFjZWQMAQxvbGQEATBUOjpBY2NvdW50SWQAAQxuZXcEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0lQEBMEJhbGFuY2VPZjxUPgAIBPRBbiBhY2NvdW50IHdhcyByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgYnkgYW5vdGhlciBvbmUuaEludmFsaWRJbnZ1bG5lcmFibGVTa2lwcGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAJCFUBQW4gYWNjb3VudCB3YXMgdW5hYmxlIHRvIGJlIGFkZGVkIHRvIHRoZSBJbnZ1bG5lcmFibGVzIGJlY2F1c2UgdGhleSBkaWQgbm90IGhhdmUga2V5c8hyZWdpc3RlcmVkLiBPdGhlciBJbnZ1bG5lcmFibGVzIG1heSBoYXZlIGJlZW4gc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNULDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXZlbnQEBFQAARAoTmV3U2Vzc2lvbgQBNHNlc3Npb25faW5kZXg4ATBTZXNzaW9uSW5kZXgAAAg5AU5ldyBzZXNzaW9uIGhhcyBoYXBwZW5lZC4gTm90ZSB0aGF0IHRoZSBhcmd1bWVudCBpcyB0aGUgc2Vzc2lvbiBpbmRleCwgbm90IHRoZZxibG9jayBudW1iZXIgYXMgdGhlIHR5cGUgbWlnaHQgc3VnZ2VzdC4kTmV3UXVldWVkAAEISQFUaGUgYE5ld1Nlc3Npb25gIGV2ZW50IGluIHRoZSBjdXJyZW50IGJsb2NrIGFsc28gaW1wbGllcyBhIG5ldyB2YWxpZGF0b3Igc2V0IHRvIGJlHHF1ZXVlZC5EVmFsaWRhdG9yRGlzYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAACBHBWYWxpZGF0b3IgaGFzIGJlZW4gZGlzYWJsZWQuSFZhbGlkYXRvclJlZW5hYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAMEeFZhbGlkYXRvciBoYXMgYmVlbiByZS1lbmFibGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNkLDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABBDxYY21wTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2gIARxYY21IYXNoAAAEwEFuIEhSTVAgbWVzc2FnZSB3YXMgc2VudCB0byBhIHNpYmxpbmcgcGFyYWNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldN0LDChwYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABdCRBdHRlbXB0ZWQEARxvdXRjb21l4QsBUHhjbTo6bGF0ZXN0OjpPdXRjb21lAAAEqEV4ZWN1dGlvbiBvZiBhbiBYQ00gbWVzc2FnZSB3YXMgYXR0ZW1wdGVkLhBTZW50EAEYb3JpZ2luOQIBIExvY2F0aW9uAAEsZGVzdGluYXRpb245AgEgTG9jYXRpb24AARxtZXNzYWdlMQMBHFhjbTwoKT4AAShtZXNzYWdlX2lkCAEcWGNtSGFzaAABBGBBbiBYQ00gbWVzc2FnZSB3YXMgc2VudC4oU2VuZEZhaWxlZBABGG9yaWdpbjkCASBMb2NhdGlvbgABLGRlc3RpbmF0aW9uOQIBIExvY2F0aW9uAAEUZXJyb3LpCwEkU2VuZEVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAgR4QW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHNlbmQuPFByb2Nlc3NYY21FcnJvcgwBGG9yaWdpbjkCASBMb2NhdGlvbgABFGVycm9yYQMBIFhjbUVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAwSEQW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHByb2Nlc3MuSFVuZXhwZWN0ZWRSZXNwb25zZQgBGG9yaWdpbjkCASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAAEDFkBUXVlcnkgcmVzcG9uc2UgcmVjZWl2ZWQgd2hpY2ggZG9lcyBub3QgbWF0Y2ggYSByZWdpc3RlcmVkIHF1ZXJ5LiBUaGlzIG1heSBiZSBiZWNhdXNlIGFVAW1hdGNoaW5nIHF1ZXJ5IHdhcyBuZXZlciByZWdpc3RlcmVkLCBpdCBtYXkgYmUgYmVjYXVzZSBpdCBpcyBhIGR1cGxpY2F0ZSByZXNwb25zZSwgb3JwYmVjYXVzZSB0aGUgcXVlcnkgdGltZWQgb3V0LjRSZXNwb25zZVJlYWR5CAEgcXVlcnlfaWQoARxRdWVyeUlkAAEgcmVzcG9uc2VVAwEgUmVzcG9uc2UABQhdAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBpcyByZWFkeSBmb3IgdGFraW5nIHdpdGggYHRha2VfcmVzcG9uc2VgLiBUaGVyZSBpc4BubyByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBjYWxsLiBOb3RpZmllZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAYIWQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGhhc6hiZWVuIGRpc3BhdGNoZWQgYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS5ATm90aWZ5T3ZlcndlaWdodBQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAE0YWN0dWFsX3dlaWdodHkBARhXZWlnaHQAAUxtYXhfYnVkZ2V0ZWRfd2VpZ2h0eQEBGFdlaWdodAAHDEkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvblkBY291bGQgbm90IGJlIGRpc3BhdGNoZWQgYmVjYXVzZSB0aGUgZGlzcGF0Y2ggd2VpZ2h0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSB3ZWlnaHTkb3JpZ2luYWxseSBidWRnZXRlZCBieSB0aGlzIHJ1bnRpbWUgZm9yIHRoZSBxdWVyeSByZXN1bHQuTE5vdGlmeURpc3BhdGNoRXJyb3IMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAICFUBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZXJlIHdhcyBhIGdlbmVyYWwgZXJyb3Igd2l0aIhkaXNwYXRjaGluZyB0aGUgbm90aWZpY2F0aW9uIGNhbGwuSE5vdGlmeURlY29kZUZhaWxlZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAkMUQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIGRpc3BhdGNoIHdhcyB1bmFibGUgdG8gYmVZAWRlY29kZWQgaW50byBhIGBDYWxsYDsgdGhpcyBtaWdodCBiZSBkdWUgdG8gZGlzcGF0Y2ggZnVuY3Rpb24gaGF2aW5nIGEgc2lnbmF0dXJlIHdoaWNolGlzIG5vdCBgKG9yaWdpbiwgUXVlcnlJZCwgUmVzcG9uc2UpYC5ASW52YWxpZFJlc3BvbmRlcgwBGG9yaWdpbjkCASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABRGV4cGVjdGVkX2xvY2F0aW9udQMBQE9wdGlvbjxMb2NhdGlvbj4ACgxZAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgb3JpZ2luIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzVQFub3QgbWF0Y2ggdGhhdCBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlxJbnZhbGlkUmVzcG9uZGVyVmVyc2lvbggBGG9yaWdpbjkCASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAALHFEBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBvcmlnaW4gbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjRSZXNwb25zZVRha2VuBAEgcXVlcnlfaWQoARxRdWVyeUlkAAwEyFJlY2VpdmVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlYWQgYW5kIHJlbW92ZWQuNEFzc2V0c1RyYXBwZWQMARBoYXNoQAEQSDI1NgABGG9yaWdpbjkCASBMb2NhdGlvbgABGGFzc2V0c6kDATxWZXJzaW9uZWRBc3NldHMADQS4U29tZSBhc3NldHMgaGF2ZSBiZWVuIHBsYWNlZCBpbiBhbiBhc3NldCB0cmFwLlRWZXJzaW9uQ2hhbmdlTm90aWZpZWQQASxkZXN0aW5hdGlvbjkCASBMb2NhdGlvbgABGHJlc3VsdDgBKFhjbVZlcnNpb24AARBjb3N0PQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoAA4MJQFBbiBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIG1lc3NhZ2UgaGFzIGJlZW4gYXR0ZW1wdGVkIHRvIGJlIHNlbnQuAOBUaGUgY29zdCBvZiBzZW5kaW5nIGl0IChib3JuZSBieSB0aGUgY2hhaW4pIGlzIGluY2x1ZGVkLlxTdXBwb3J0ZWRWZXJzaW9uQ2hhbmdlZAgBIGxvY2F0aW9uOQIBIExvY2F0aW9uAAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ADwg5AVRoZSBzdXBwb3J0ZWQgdmVyc2lvbiBvZiBhIGxvY2F0aW9uIGhhcyBiZWVuIGNoYW5nZWQuIFRoaXMgbWlnaHQgYmUgdGhyb3VnaCBhbsBhdXRvbWF0aWMgbm90aWZpY2F0aW9uIG9yIGEgbWFudWFsIGludGVydmVudGlvbi5QTm90aWZ5VGFyZ2V0U2VuZEZhaWwMASBsb2NhdGlvbjkCASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABFGVycm9yYQMBIFhjbUVycm9yABAIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcnxzZW5kaW5nIHRoZSBub3RpZmljYXRpb24gdG8gaXQuZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwIASBsb2NhdGlvbuUBAURWZXJzaW9uZWRMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAARCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3K0bWlncmF0aW5nIHRoZSBsb2NhdGlvbiB0byBvdXIgbmV3IFhDTSBmb3JtYXQuVEludmFsaWRRdWVyaWVyVmVyc2lvbggBGG9yaWdpbjkCASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAASHFUBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBxdWVyaWVyIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC44SW52YWxpZFF1ZXJpZXIQARhvcmlnaW45AgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAUBleHBlY3RlZF9xdWVyaWVyOQIBIExvY2F0aW9uAAFQbWF5YmVfYWN0dWFsX3F1ZXJpZXJ1AwFAT3B0aW9uPExvY2F0aW9uPgATDF0BRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBxdWVyaWVyIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzUQFub3QgbWF0Y2ggdGhlIGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uUFZlcnNpb25Ob3RpZnlTdGFydGVkDAEsZGVzdGluYXRpb245AgEgTG9jYXRpb24AARBjb3N0PQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABQIWQFBIHJlbW90ZSBoYXMgcmVxdWVzdGVkIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gZnJvbSB1cyBhbmQgd2UgaGF2ZSBob25vcmVkIGl0Lh0BQSB2ZXJzaW9uIGluZm9ybWF0aW9uIG1lc3NhZ2UgaXMgc2VudCB0byB0aGVtIGFuZCBpdHMgY29zdCBpcyBpbmNsdWRlZC5YVmVyc2lvbk5vdGlmeVJlcXVlc3RlZAwBLGRlc3RpbmF0aW9uOQIBIExvY2F0aW9uAAEQY29zdD0DARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAVBD0BV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzZW5kIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb25zLmBWZXJzaW9uTm90aWZ5VW5yZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbjkCASBMb2NhdGlvbgABEGNvc3Q9AwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFgglAVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc3RvcHMgc2VuZGluZyB1cyBYQ00gdmVyc2lvbiBjaGFuZ2U4bm90aWZpY2F0aW9ucy4gRmVlc1BhaWQIARhwYXlpbmc5AgEgTG9jYXRpb24AARBmZWVzPQMBGEFzc2V0cwAXBDEBRmVlcyB3ZXJlIHBhaWQgZnJvbSBhIGxvY2F0aW9uIGZvciBhbiBvcGVyYXRpb24gKG9mdGVuIGZvciB1c2luZyBgU2VuZFhjbWApLjRBc3NldHNDbGFpbWVkDAEQaGFzaEABEEgyNTYAARhvcmlnaW45AgEgTG9jYXRpb24AARhhc3NldHOpAwE8VmVyc2lvbmVkQXNzZXRzABgEwFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBjbGFpbWVkIGZyb20gYW4gYXNzZXQgdHJhcGBWZXJzaW9uTWlncmF0aW9uRmluaXNoZWQEARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAZBIRBIFhDTSB2ZXJzaW9uIG1pZ3JhdGlvbiBmaW5pc2hlZC48QWxpYXNBdXRob3JpemVkDAEcYWxpYXNlcjkCASBMb2NhdGlvbgABGHRhcmdldDkCASBMb2NhdGlvbgABGGV4cGlyeWUBASxPcHRpb248dTY0PgAaCF0BQW4gYGFsaWFzZXJgIGxvY2F0aW9uIHdhcyBhdXRob3JpemVkIGJ5IGB0YXJnZXRgIHRvIGFsaWFzIGl0LCBhdXRob3JpemF0aW9uIHZhbGlkIHVudGlsWGBleHBpcnlgIGJsb2NrIG51bWJlci5kQWxpYXNBdXRob3JpemF0aW9uUmVtb3ZlZAgBHGFsaWFzZXI5AgEgTG9jYXRpb24AARh0YXJnZXQ5AgEgTG9jYXRpb24AGwTMYHRhcmdldGAgcmVtb3ZlZCBhbGlhcyBhdXRob3JpemF0aW9uIGZvciBgYWxpYXNlcmAucEFsaWFzZXNBdXRob3JpemF0aW9uc1JlbW92ZWQEARh0YXJnZXQ5AgEgTG9jYXRpb24AHASoYHRhcmdldGAgcmVtb3ZlZCBhbGwgYWxpYXMgYXV0aG9yaXphdGlvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV04QsQLHN0YWdpbmdfeGNtCHY1GHRyYWl0cxxPdXRjb21lAAEMIENvbXBsZXRlBAEQdXNlZHkBARhXZWlnaHQAAAAoSW5jb21wbGV0ZQgBEHVzZWR5AQEYV2VpZ2h0AAEUZXJyb3LlCwFASW5zdHJ1Y3Rpb25FcnJvcgABABRFcnJvcgQA5QsBQEluc3RydWN0aW9uRXJyb3IAAgAA5QsQLHN0YWdpbmdfeGNtCHY1GHRyYWl0c0BJbnN0cnVjdGlvbkVycm9yAAAIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvcmEDARRFcnJvcgAA6QsQDHhjbQh2Mxh0cmFpdHMkU2VuZEVycm9yAAEcNE5vdEFwcGxpY2FibGUAAAAkVHJhbnNwb3J0AAEAKFVucm91dGFibGUAAgBYRGVzdGluYXRpb25VbnN1cHBvcnRlZAADAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUABAA8TWlzc2luZ0FyZ3VtZW50AAUAEEZlZXMABgAA7QsMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAQw0SW52YWxpZEZvcm1hdAQACAEgW3U4OyAzMl0AAAiARG93bndhcmQgbWVzc2FnZSBpcyBpbnZhbGlkIFhDTS4gXFsgaWQgXF1IVW5zdXBwb3J0ZWRWZXJzaW9uBAAIASBbdTg7IDMyXQABCLxEb3dud2FyZCBtZXNzYWdlIGlzIHVuc3VwcG9ydGVkIHZlcnNpb24gb2YgWENNLiBcWyBpZCBcXUBFeGVjdXRlZERvd253YXJkCAAIASBbdTg7IDMyXQAA4QsBHE91dGNvbWUAAgjERG93bndhcmQgbWVzc2FnZSBleGVjdXRlZCB3aXRoIHRoZSBnaXZlbiBvdXRjb21lLkRcWyBpZCwgb3V0Y29tZSBcXQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPELDHBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyGHBhbGxldBRFdmVudAgEVAAESQABCGhEZWxpdmVyeUZlZUZhY3RvckRlY3JlYXNlZAQBJG5ld192YWx1ZYEHASRGaXhlZFUxMjgElE5ldyB2YWx1ZSBvZiB0aGUgYERlbGl2ZXJ5RmVlRmFjdG9yYC4ABJxEZWxpdmVyeSBmZWUgZmFjdG9yIGhhcyBiZWVuIGRlY3JlYXNlZC5oRGVsaXZlcnlGZWVGYWN0b3JJbmNyZWFzZWQEASRuZXdfdmFsdWWBBwEkRml4ZWRVMTI4BJROZXcgdmFsdWUgb2YgdGhlIGBEZWxpdmVyeUZlZUZhY3RvcmAuAQScRGVsaXZlcnkgZmVlIGZhY3RvciBoYXMgYmVlbiBpbmNyZWFzZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV09QsMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABEEBQcm9jZXNzaW5nRmFpbGVkDAEIaWRAARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7tAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuARRlcnJvcvkLAUxQcm9jZXNzTWVzc2FnZUVycm9yEGBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4ASQFUaGlzIGVycm9yIGlzIHByZXR0eSBvcGFxdWUuIE1vcmUgZmluZS1ncmFpbmVkIGVycm9ycyBuZWVkIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAARVAU1lc3NhZ2UgZGlzY2FyZGVkIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgICh1c3VhbGx5IGEgZm9ybWF0IGVycm9yKS4kUHJvY2Vzc2VkEAEIaWRAARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7tAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuASx3ZWlnaHRfdXNlZHkBARhXZWlnaHQEwEhvdyBtdWNoIHdlaWdodCB3YXMgdXNlZCB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgEcc3VjY2Vzc5kBARBib29sGIhXaGV0aGVyIHRoZSBtZXNzYWdlIHdhcyBwcm9jZXNzZWQuAEkBTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1bmRlcmx5aW5nIGBNZXNzYWdlUHJvY2Vzc29yYCB3YXMgaW50ZXJuYWxseTUBc3VjY2Vzc2Z1bC4gSXQgKnNvbGVseSogbWVhbnMgdGhhdCB0aGUgTVEgcGFsbGV0IHdpbGwgdHJlYXQgdGhpcyBhcyBhIHN1Y2Nlc3NNAWNvbmRpdGlvbiBhbmQgZGlzY2FyZCB0aGUgbWVzc2FnZS4gQW55IGludGVybmFsIGVycm9yIG5lZWRzIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAQRUTWVzc2FnZSBpcyBwcm9jZXNzZWQuSE92ZXJ3ZWlnaHRFbnF1ZXVlZBABCGlkCAEgW3U4OyAzMl0ElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbu0DAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgEYFRoZSBwYWdlIG9mIHRoZSBtZXNzYWdlLgE0bWVzc2FnZV9pbmRleDgBHFQ6OlNpemUEpFRoZSBpbmRleCBvZiB0aGUgbWVzc2FnZSB3aXRoaW4gdGhlIHBhZ2UuAgSMTWVzc2FnZSBwbGFjZWQgaW4gb3ZlcndlaWdodCBxdWV1ZS4oUGFnZVJlYXBlZAgBGG9yaWdpbu0DAUhNZXNzYWdlT3JpZ2luT2Y8VD4EWFRoZSBxdWV1ZSBvZiB0aGUgcGFnZS4BFGluZGV4OAEkUGFnZUluZGV4BFhUaGUgaW5kZXggb2YgdGhlIHBhZ2UuAwRUVGhpcyBwYWdlIHdhcyByZWFwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0+QsQNGZyYW1lX3N1cHBvcnQYdHJhaXRzIG1lc3NhZ2VzTFByb2Nlc3NNZXNzYWdlRXJyb3IAARgkQmFkRm9ybWF0AAAAHENvcnJ1cHQAAQAsVW5zdXBwb3J0ZWQAAgAoT3ZlcndlaWdodAQAeQEBGFdlaWdodAADABRZaWVsZAAEAERTdGFja0xpbWl0UmVhY2hlZAAFAAD9Cww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0FEV2ZW50AAEgQEJhdGNoSW50ZXJydXB0ZWQIARRpbmRleDgBDHUzMgABFGVycm9yNQsBNERpc3BhdGNoRXJyb3IAAAhVAUJhdGNoIG9mIGRpc3BhdGNoZXMgZGlkIG5vdCBjb21wbGV0ZSBmdWxseS4gSW5kZXggb2YgZmlyc3QgZmFpbGluZyBkaXNwYXRjaCBnaXZlbiwgYXNId2VsbCBhcyB0aGUgZXJyb3IuOEJhdGNoQ29tcGxldGVkAAEEyEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGZ1bGx5IHdpdGggbm8gZXJyb3IuYEJhdGNoQ29tcGxldGVkV2l0aEVycm9ycwACBLRCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBidXQgaGFzIGVycm9ycy40SXRlbUNvbXBsZXRlZAADBB0BQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBubyBlcnJvci4oSXRlbUZhaWxlZAQBFGVycm9yNQsBNERpc3BhdGNoRXJyb3IABAQRAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggZXJyb3IuMERpc3BhdGNoZWRBcwQBGHJlc3VsdF0LAThEaXNwYXRjaFJlc3VsdAAFBFhBIGNhbGwgd2FzIGRpc3BhdGNoZWQuRElmRWxzZU1haW5TdWNjZXNzAAYEZE1haW4gY2FsbCB3YXMgZGlzcGF0Y2hlZC5QSWZFbHNlRmFsbGJhY2tDYWxsZWQEAShtYWluX2Vycm9yNQsBNERpc3BhdGNoRXJyb3IABwSEVGhlIGZhbGxiYWNrIGNhbGwgd2FzIGRpc3BhdGNoZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0AQwMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXZlbnQEBFQAARQsTmV3TXVsdGlzaWcMASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAAEjEEgbmV3IG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVndW4uQE11bHRpc2lnQXBwcm92YWwQASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQhBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAQTIQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gYXBwcm92ZWQgYnkgc29tZW9uZS5ATXVsdGlzaWdFeGVjdXRlZBQBJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludCEEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABGHJlc3VsdF0LAThEaXNwYXRjaFJlc3VsdAACBJxBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBleGVjdXRlZC5ETXVsdGlzaWdDYW5jZWxsZWQQAShjYW5jZWxsaW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50IQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAMEoEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGNhbmNlbGxlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAASxvbGRfZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4AASxuZXdfZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4ABATwVGhlIGRlcG9zaXQgZm9yIGEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQvcG9rZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0BQwMMHBhbGxldF9wcm94eRhwYWxsZXQURXZlbnQEBFQAARw0UHJveHlFeGVjdXRlZAQBGHJlc3VsdF0LAThEaXNwYXRjaFJlc3VsdAAABLxBIHByb3h5IHdhcyBleGVjdXRlZCBjb3JyZWN0bHksIHdpdGggdGhlIGdpdmVuLixQdXJlQ3JlYXRlZBgBEHB1cmUEATBUOjpBY2NvdW50SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlLQQBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV4+QMBDHUxNgABCGF0OAFEQmxvY2tOdW1iZXJGb3I8VD4AATxleHRyaW5zaWNfaW5kZXg4AQx1MzIAAQjcQSBwdXJlIGFjY291bnQgaGFzIGJlZW4gY3JlYXRlZCBieSBuZXcgcHJveHkgd2l0aCBnaXZlbpBkaXNhbWJpZ3VhdGlvbiBpbmRleCBhbmQgcHJveHkgdHlwZS4oUHVyZUtpbGxlZBABEHB1cmUEATBUOjpBY2NvdW50SWQAARxzcGF3bmVyBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZS0EATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRlePkDAQx1MTYAAgScQSBwdXJlIHByb3h5IHdhcyBraWxsZWQgYnkgaXRzIHNwYXduZXIuJEFubm91bmNlZAwBEHJlYWwEATBUOjpBY2NvdW50SWQAARRwcm94eQQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaEABNENhbGxIYXNoT2Y8VD4AAwTgQW4gYW5ub3VuY2VtZW50IHdhcyBwbGFjZWQgdG8gbWFrZSBhIGNhbGwgaW4gdGhlIGZ1dHVyZS4oUHJveHlBZGRlZBABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRlZQQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGUtBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgAEBEhBIHByb3h5IHdhcyBhZGRlZC4wUHJveHlSZW1vdmVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZS0EATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAUEUEEgcHJveHkgd2FzIHJlbW92ZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABEGtpbmQJDAEsRGVwb3NpdEtpbmQAASxvbGRfZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4AASxuZXdfZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4ABgQJAUEgZGVwb3NpdCBzdG9yZWQgZm9yIHByb3hpZXMgb3IgYW5ub3VuY2VtZW50cyB3YXMgcG9rZWQgLyB1cGRhdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAkMCDBwYWxsZXRfcHJveHksRGVwb3NpdEtpbmQAAQgcUHJveGllcwAAADRBbm5vdW5jZW1lbnRzAAEAAA0MDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQURXZlbnQEBFQAARA0SW5kZXhBc3NpZ25lZAgBDHdobwQBMFQ6OkFjY291bnRJZAABFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAAEdEEgYWNjb3VudCBpbmRleCB3YXMgYXNzaWduZWQuKEluZGV4RnJlZWQEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABBLxBIGFjY291bnQgaW5kZXggaGFzIGJlZW4gZnJlZWQgdXAgKHVuYXNzaWduZWQpLixJbmRleEZyb3plbggBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEMd2hvBAEwVDo6QWNjb3VudElkAAIE6EEgYWNjb3VudCBpbmRleCBoYXMgYmVlbiBmcm96ZW4gdG8gaXRzIGN1cnJlbnQgYWNjb3VudCBJRC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAASxvbGRfZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4AASxuZXdfZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4AAwToQSBkZXBvc2l0IHRvIHJlc2VydmUgYW4gaW5kZXggaGFzIGJlZW4gcG9rZWQvcmVjb25zaWRlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBEMDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABcBxDcmVhdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNllQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAQEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC4wT3duZXJDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAcEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgdGhhd2VkLixBc3NldEZyb3plbgQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFIYWNjb3VudHNfZGVzdHJveWVkOAEMdTMyAAFIYWNjb3VudHNfcmVtYWluaW5nOAEMdTMyAAoEoEFjY291bnRzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IQXBwcm92YWxzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAA0EdEFuIGFzc2V0IGNsYXNzIHdhcyBkZXN0cm95ZWQuMEZvcmNlQ3JlYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbpkBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABMIMQFBbiBgYW1vdW50YCB3YXMgdHJhbnNmZXJyZWQgaW4gaXRzIGVudGlyZXR5IGZyb20gYG93bmVyYCB0byBgZGVzdGluYXRpb25gIGJ5YHRoZSBhcHByb3ZlZCBgZGVsZWdhdGVgLkhBc3NldFN0YXR1c0NoYW5nZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZZUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABkEIQFTb21lIGFzc2V0cyB3ZXJlIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS48UmVzZXJ2ZXNVcGRhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEgcmVzZXJ2ZXNFBAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0FQwMOHBhbGxldF91bmlxdWVzGHBhbGxldBRFdmVudAgEVAAESQABbBxDcmVhdGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABGxBIGBjb2xsZWN0aW9uYCB3YXMgY3JlYXRlZC4wRm9yY2VDcmVhdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEEhEEgYGNvbGxlY3Rpb25gIHdhcyBmb3JjZS1jcmVhdGVkLiREZXN0cm95ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAIEdEEgYGNvbGxlY3Rpb25gIHdhcyBkZXN0cm95ZWQuGElzc3VlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAwRUQW4gYGl0ZW1gIHdhcyBpc3N1ZWQuLFRyYW5zZmVycmVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQABARoQW4gYGl0ZW1gIHdhcyB0cmFuc2ZlcnJlZC4YQnVybmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBGBBbiBgaXRlbWAgd2FzIGRlc3Ryb3llZC4YRnJvemVuCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABgRcU29tZSBgaXRlbWAgd2FzIGZyb3plbi4YVGhhd2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABwRcU29tZSBgaXRlbWAgd2FzIHRoYXdlZC5AQ29sbGVjdGlvbkZyb3plbgQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQACAR0U29tZSBgY29sbGVjdGlvbmAgd2FzIGZyb3plbi5AQ29sbGVjdGlvblRoYXdlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQACQR0U29tZSBgY29sbGVjdGlvbmAgd2FzIHRoYXdlZC4wT3duZXJDaGFuZ2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcgQBMFQ6OkFjY291bnRJZAAKBEhUaGUgb3duZXIgY2hhbmdlZC4sVGVhbUNoYW5nZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAsEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC5AQXBwcm92ZWRUcmFuc2ZlchABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAAMCDEBQW4gYGl0ZW1gIG9mIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHRoZSBgb3duZXJgIGZvciB0cmFuc2ZlciBieTRhIGBkZWxlZ2F0ZWAuREFwcHJvdmFsQ2FuY2VsbGVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAA0IGQFBbiBhcHByb3ZhbCBmb3IgYSBgZGVsZWdhdGVgIGFjY291bnQgdG8gdHJhbnNmZXIgdGhlIGBpdGVtYCBvZiBhbiBpdGVtqGBjb2xsZWN0aW9uYCB3YXMgY2FuY2VsbGVkIGJ5IGl0cyBgb3duZXJgLkRJdGVtU3RhdHVzQ2hhbmdlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQADgQRAUEgYGNvbGxlY3Rpb25gIGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uVENvbGxlY3Rpb25NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhXQQBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbpkBARBib29sAA8EtE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gLmRDb2xsZWN0aW9uTWV0YWRhdGFDbGVhcmVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAQBLRNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYC4sTWV0YWRhdGFTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRhdGFdBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVumQEBEGJvb2wAEQSYTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gaXRlbS48TWV0YWRhdGFDbGVhcmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEgSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4sUmVkZXBvc2l0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAFAc3VjY2Vzc2Z1bF9pdGVtc1UEAThWZWM8VDo6SXRlbUlkPgATBJhNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBpdGVtLjBBdHRyaWJ1dGVTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbdgBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5WQQBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlfAF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AFAQFAU5ldyBhdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuQEF0dHJpYnV0ZUNsZWFyZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbdgBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5WQQBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgAVBAUBQXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5oT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb2xsZWN0aW9u2AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AFgTAT3duZXJzaGlwIGFjY2VwdGFuY2UgaGFzIGNoYW5nZWQgZm9yIGFuIGFjY291bnQuWENvbGxlY3Rpb25NYXhTdXBwbHlTZXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAXBKRNYXggc3VwcGx5IGhhcyBiZWVuIHNldCBmb3IgYSBjb2xsZWN0aW9uLjBJdGVtUHJpY2VTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNllQEBPEl0ZW1QcmljZTxULCBJPgABRHdoaXRlbGlzdGVkX2J1eWVyQQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+ABgEjFRoZSBwcmljZSB3YXMgc2V0IGZvciB0aGUgaW5zdGFuY2UuQEl0ZW1QcmljZVJlbW92ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAZBJxUaGUgcHJpY2UgZm9yIHRoZSBpbnN0YW5jZSB3YXMgcmVtb3ZlZC4oSXRlbUJvdWdodBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2WVAQE8SXRlbVByaWNlPFQsIEk+AAEYc2VsbGVyBAEwVDo6QWNjb3VudElkAAEUYnV5ZXIEATBUOjpBY2NvdW50SWQAGgRMQW4gaXRlbSB3YXMgYm91Z2h0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBkMDCxwYWxsZXRfbmZ0cxhwYWxsZXQURXZlbnQIBFQABEkAAZgcQ3JlYXRlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAARsQSBgY29sbGVjdGlvbmAgd2FzIGNyZWF0ZWQuMEZvcmNlQ3JlYXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABBIRBIGBjb2xsZWN0aW9uYCB3YXMgZm9yY2UtY3JlYXRlZC4kRGVzdHJveWVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAACBHRBIGBjb2xsZWN0aW9uYCB3YXMgZGVzdHJveWVkLhhJc3N1ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAMEVEFuIGBpdGVtYCB3YXMgaXNzdWVkLixUcmFuc2ZlcnJlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAQEaEFuIGBpdGVtYCB3YXMgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRgQW4gYGl0ZW1gIHdhcyBkZXN0cm95ZWQuSEl0ZW1UcmFuc2ZlckxvY2tlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAYEiEFuIGBpdGVtYCBiZWNhbWUgbm9uLXRyYW5zZmVyYWJsZS5QSXRlbVRyYW5zZmVyVW5sb2NrZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAHBHhBbiBgaXRlbWAgYmVjYW1lIHRyYW5zZmVyYWJsZS5QSXRlbVByb3BlcnRpZXNMb2NrZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABNGxvY2tfbWV0YWRhdGGZAQEQYm9vbAABPGxvY2tfYXR0cmlidXRlc5kBARBib29sAAgEqGBpdGVtYCBtZXRhZGF0YSBvciBhdHRyaWJ1dGVzIHdlcmUgbG9ja2VkLkBDb2xsZWN0aW9uTG9ja2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAJBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgbG9ja2VkLjBPd25lckNoYW5nZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyBAEwVDo6QWNjb3VudElkAAoESFRoZSBvd25lciBjaGFuZ2VkLixUZWFtQ2hhbmdlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXJBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARRhZG1pbkEBAVBPcHRpb248VDo6QWNjb3VudElkPgABHGZyZWV6ZXJBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4ACwRwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLkBUcmFuc2ZlckFwcHJvdmVkFAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEgZGVhZGxpbmXYAXBPcHRpb248QmxvY2tOdW1iZXJGb3I8VCwgST4+AAwIMQFBbiBgaXRlbWAgb2YgYSBgY29sbGVjdGlvbmAgaGFzIGJlZW4gYXBwcm92ZWQgYnkgdGhlIGBvd25lcmAgZm9yIHRyYW5zZmVyIGJ5NGEgYGRlbGVnYXRlYC5EQXBwcm92YWxDYW5jZWxsZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQADQgZAUFuIGFwcHJvdmFsIGZvciBhIGBkZWxlZ2F0ZWAgYWNjb3VudCB0byB0cmFuc2ZlciB0aGUgYGl0ZW1gIG9mIGFuIGl0ZW2oYGNvbGxlY3Rpb25gIHdhcyBjYW5jZWxsZWQgYnkgaXRzIGBvd25lcmAuVEFsbEFwcHJvdmFsc0NhbmNlbGxlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgScQWxsIGFwcHJvdmFscyBvZiBhbiBpdGVtIGdvdCBjYW5jZWxsZWQuXENvbGxlY3Rpb25Db25maWdDaGFuZ2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAPBAEBQSBgY29sbGVjdGlvbmAgaGFzIGhhZCBpdHMgY29uZmlnIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlRDb2xsZWN0aW9uTWV0YWRhdGFTZXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQZGF0YeABeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAQBLROZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYC5kQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAEQS0TWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAuPEl0ZW1NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YeABeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgASBJhOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBpdGVtLkxJdGVtTWV0YWRhdGFDbGVhcmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEwSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4sUmVkZXBvc2l0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAFAc3VjY2Vzc2Z1bF9pdGVtc1UEAThWZWM8VDo6SXRlbUlkPgAUBCEBVGhlIGRlcG9zaXQgZm9yIGEgc2V0IG9mIGBpdGVtYHMgd2l0aGluIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIHVwZGF0ZWQuMEF0dHJpYnV0ZVNldBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt2AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXl8AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZeABdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+AAEkbmFtZXNwYWNllQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ABUEBQFOZXcgYXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLkBBdHRyaWJ1dGVDbGVhcmVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3YAURPcHRpb248VDo6SXRlbUlkPgABDGtleXwBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABJG5hbWVzcGFjZZUEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgAWBAUBQXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5sSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAAXBMxBIG5ldyBhcHByb3ZhbCB0byBtb2RpZnkgaXRlbSBhdHRyaWJ1dGVzIHdhcyBhZGRlZC50SXRlbUF0dHJpYnV0ZXNBcHByb3ZhbFJlbW92ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABgE1EEgbmV3IGFwcHJvdmFsIHRvIG1vZGlmeSBpdGVtIGF0dHJpYnV0ZXMgd2FzIHJlbW92ZWQuaE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAFAbWF5YmVfY29sbGVjdGlvbtgBXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABkEwE93bmVyc2hpcCBhY2NlcHRhbmNlIGhhcyBjaGFuZ2VkIGZvciBhbiBhY2NvdW50LlhDb2xsZWN0aW9uTWF4U3VwcGx5U2V0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAGgSkTWF4IHN1cHBseSBoYXMgYmVlbiBzZXQgZm9yIGEgY29sbGVjdGlvbi50Q29sbGVjdGlvbk1pbnRTZXR0aW5nc1VwZGF0ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkABsErE1pbnQgc2V0dGluZ3MgZm9yIGEgY29sbGVjdGlvbiBoYWQgY2hhbmdlZC5sTmV4dENvbGxlY3Rpb25JZEluY3JlbWVudGVkBAEcbmV4dF9pZNgBXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABwEAQFFdmVudCBnZXRzIGVtaXR0ZWQgd2hlbiB0aGUgYE5leHRDb2xsZWN0aW9uSWRgIGdldHMgaW5jcmVtZW50ZWQuMEl0ZW1QcmljZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2WVAQE8SXRlbVByaWNlPFQsIEk+AAFEd2hpdGVsaXN0ZWRfYnV5ZXJBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AHQR8VGhlIHByaWNlIHdhcyBzZXQgZm9yIHRoZSBpdGVtLkBJdGVtUHJpY2VSZW1vdmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAHgSMVGhlIHByaWNlIGZvciB0aGUgaXRlbSB3YXMgcmVtb3ZlZC4oSXRlbUJvdWdodBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2WVAQE8SXRlbVByaWNlPFQsIEk+AAEYc2VsbGVyBAEwVDo6QWNjb3VudElkAAEUYnV5ZXIEATBUOjpBY2NvdW50SWQAHwRMQW4gaXRlbSB3YXMgYm91Z2h0LhxUaXBTZW50FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARhzZW5kZXIEATBUOjpBY2NvdW50SWQAASByZWNlaXZlcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAVhEZXBvc2l0QmFsYW5jZU9mPFQsIEk+ACAEPEEgdGlwIHdhcyBzZW50LixTd2FwQ3JlYXRlZBgBSG9mZmVyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbTgBJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbdgBRE9wdGlvbjxUOjpJdGVtSWQ+AAEUcHJpY2WpBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIQSIQW4gYGl0ZW1gIHN3YXAgaW50ZW50IHdhcyBjcmVhdGVkLjRTd2FwQ2FuY2VsbGVkGAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkAAFIZGVzaXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwZGVzaXJlZF9pdGVt2AFET3B0aW9uPFQ6Okl0ZW1JZD4AARRwcmljZakEAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmU4AVBCbG9ja051bWJlckZvcjxULCBJPgAiBFxUaGUgc3dhcCB3YXMgY2FuY2VsbGVkLixTd2FwQ2xhaW1lZCABPHNlbnRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJHNlbnRfaXRlbTgBJFQ6Okl0ZW1JZAABPHNlbnRfaXRlbV9vd25lcgQBMFQ6OkFjY291bnRJZAABTHJlY2VpdmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATRyZWNlaXZlZF9pdGVtOAEkVDo6SXRlbUlkAAFMcmVjZWl2ZWRfaXRlbV9vd25lcgQBMFQ6OkFjY291bnRJZAABFHByaWNlqQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACMEaFRoZSBzd2FwIGhhcyBiZWVuIGNsYWltZWQuWFByZVNpZ25lZEF0dHJpYnV0ZXNTZXQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABJG5hbWVzcGFjZZUEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgAkBPxOZXcgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0IGZvciBhbiBgaXRlbWAgb2YgdGhlIGBjb2xsZWN0aW9uYC5IUGFsbGV0QXR0cmlidXRlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW3YAURPcHRpb248VDo6SXRlbUlkPgABJGF0dHJpYnV0ZR0MAYRQYWxsZXRBdHRyaWJ1dGVzPFQ6OkNvbGxlY3Rpb25JZD4AARR2YWx1ZeABdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ACUITQFBIG5ldyBhdHRyaWJ1dGUgaW4gdGhlIGBQYWxsZXRgIG5hbWVzcGFjZSB3YXMgc2V0IGZvciB0aGUgYGNvbGxlY3Rpb25gIG9yIGFuIGBpdGVtYGR3aXRoaW4gdGhhdCBgY29sbGVjdGlvbmAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0HQwMLHBhbGxldF9uZnRzFHR5cGVzQFBhbGxldEF0dHJpYnV0ZXMEMENvbGxlY3Rpb25JZAE4AQgsVXNlZFRvQ2xhaW0EADgBMENvbGxlY3Rpb25JZAAAAEBUcmFuc2ZlckRpc2FibGVkAAEAACEMDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABcBxDcmVhdGVkDAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZZUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZDkCAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZDkCAShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW6ZAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2WVAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEgcmVzZXJ2ZXPRBAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCUMDHBwYWxsZXRfbmZ0X2ZyYWN0aW9uYWxpemF0aW9uGHBhbGxldBRFdmVudAQEVAABCEROZnRGcmFjdGlvbmFsaXplZBQBOG5mdF9jb2xsZWN0aW9uOAFIVDo6TmZ0Q29sbGVjdGlvbklkAAEMbmZ0OAEgVDo6TmZ0SWQAASRmcmFjdGlvbnOVAQFEQXNzZXRCYWxhbmNlT2Y8VD4AARRhc3NldDgBMEFzc2V0SWRPZjxUPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAAEnEFuIE5GVCB3YXMgc3VjY2Vzc2Z1bGx5IGZyYWN0aW9uYWxpemVkLihOZnRVbmlmaWVkEAE4bmZ0X2NvbGxlY3Rpb244AUhUOjpOZnRDb2xsZWN0aW9uSWQAAQxuZnQ4ASBUOjpOZnRJZAABFGFzc2V0OAEwQXNzZXRJZE9mPFQ+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAQSYQW4gTkZUIHdhcyBzdWNjZXNzZnVsbHkgcmV0dXJuZWQgYmFjay4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQpDAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAXAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZZUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW6ZAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2WVAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVzRQQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldC0MDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQURXZlbnQEBFQAARgsUG9vbENyZWF0ZWQQARxjcmVhdG9yBAEwVDo6QWNjb3VudElkBIhUaGUgYWNjb3VudCB0aGF0IGNyZWF0ZWQgdGhlIHBvb2wuARxwb29sX2lkMQwBJFQ6OlBvb2xJZAhJAVRoZSBwb29sIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbC4gTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgYXNzZXRzIG1heSBub3QgYmX0dGhlIHNhbWUgYXMgdGhlIG9yZGVyIHNwZWNpZmllZCBpbiB0aGUgY3JlYXRlIHBvb2wgZXh0cmluc2ljLgEwcG9vbF9hY2NvdW50BAEwVDo6QWNjb3VudElkBGxUaGUgYWNjb3VudCBJRCBvZiB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQIQQFUaGUgaWQgb2YgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCB3aWxsIGJlIG1pbnRlZCB3aGVuIGFzc2V0cyBhcmUgYWRkZWQgdG8gdGhpcxRwb29sLgAEHQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYENyZWF0ZVBvb2xgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjhMaXF1aWRpdHlBZGRlZBwBDHdobwQBMFQ6OkFjY291bnRJZAS4VGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyB0YWtlbiBmcm9tLgEcbWludF90bwQBMFQ6OkFjY291bnRJZATUVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIG1pbnRlZCB0by4BHHBvb2xfaWQxDAEkVDo6UG9vbElkBOBUaGUgcG9vbCBpZCBvZiB0aGUgcG9vbCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIGFkZGVkIHRvLgFAYW1vdW50MV9wcm92aWRlZJUBAShUOjpCYWxhbmNlBORUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BQGFtb3VudDJfcHJvdmlkZWSVAQEoVDo6QmFsYW5jZQToVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBtaW50ZWQuATxscF90b2tlbl9taW50ZWSVAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIG1pbnRlZCBvZiB0aGF0IGlkLgEEJQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYEFkZExpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuQExpcXVpZGl0eVJlbW92ZWQgAQx3aG8EATBUOjpBY2NvdW50SWQE3FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBidXJuZWQgZnJvbS4BLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BHHBvb2xfaWQxDAEkVDo6UG9vbElkBMBUaGUgcG9vbCBpZCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHJlbW92ZWQgZnJvbS4BHGFtb3VudDGVAQEoVDo6QmFsYW5jZQT0VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEcYW1vdW50MpUBAShUOjpCYWxhbmNlBPhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBidXJuZWQuATxscF90b2tlbl9idXJuZWSVAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIGJ1cm5lZCBvZiB0aGF0IGlkLgE4d2l0aGRyYXdhbF9mZWUxAQEcUGVybWlsbAR0TGlxdWlkaXR5IHdpdGhkcmF3YWwgZmVlICglKS4CBDEBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBSZW1vdmVMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjBTd2FwRXhlY3V0ZWQUAQx3aG8EATBUOjpBY2NvdW50SWQEtFdoaWNoIGFjY291bnQgd2FzIHRoZSBpbnN0aWdhdG9yIG9mIHRoZSBzd2FwLgEcc2VuZF90bwQBMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uASRhbW91bnRfaW6VAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXSVAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aDUMAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpAwg1AUFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuIEJvdGggYFN3YXBFeGFjdFRva2VuRm9yVG9rZW5g2GFuZCBgU3dhcFRva2VuRm9yRXhhY3RUb2tlbmAgd2lsbCBnZW5lcmF0ZSB0aGlzIGV2ZW50LkhTd2FwQ3JlZGl0RXhlY3V0ZWQMASRhbW91bnRfaW6VAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXSVAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aDUMAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpBAS8QXNzZXRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgZnJvbSBvbmUgdG8gYW5vdGhlci4cVG91Y2hlZAgBHHBvb2xfaWQxDAEkVDo6UG9vbElkBExUaGUgSUQgb2YgdGhlIHBvb2wuAQx3aG8EATBUOjpBY2NvdW50SWQEhFRoZSBhY2NvdW50IGluaXRpYXRpbmcgdGhlIHRvdWNoLgUEDQFQb29sIGhhcyBiZWVuIHRvdWNoZWQgaW4gb3JkZXIgdG8gZnVsZmlsbCBvcGVyYXRpb25hbCByZXF1aXJlbWVudHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0MQwAAAQIOQI5AgA1DAAAAjkMADkMAAAECDkClQEAPQwMPHBhbGxldF9yZWNvdmVyeRhwYWxsZXQURXZlbnQEBFQAARw8UmVjb3ZlcnlDcmVhdGVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAABMhBIHJlY292ZXJ5IHByb2Nlc3MgaGFzIGJlZW4gc2V0IHVwIGZvciBhbiBhY2NvdW50LkRSZWNvdmVyeUluaXRpYXRlZAgBMGxvc3RfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABPHJlc2N1ZXJfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABBCkBQSByZWNvdmVyeSBwcm9jZXNzIGhhcyBiZWVuIGluaXRpYXRlZCBmb3IgbG9zdCBhY2NvdW50IGJ5IHJlc2N1ZXIgYWNjb3VudC48UmVjb3ZlcnlWb3VjaGVkDAEwbG9zdF9hY2NvdW50BAEwVDo6QWNjb3VudElkAAE8cmVzY3Vlcl9hY2NvdW50BAEwVDo6QWNjb3VudElkAAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAIEWQFBIHJlY292ZXJ5IHByb2Nlc3MgZm9yIGxvc3QgYWNjb3VudCBieSByZXNjdWVyIGFjY291bnQgaGFzIGJlZW4gdm91Y2hlZCBmb3IgYnkgc2VuZGVyLjhSZWNvdmVyeUNsb3NlZAgBMGxvc3RfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABPHJlc2N1ZXJfYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBB0BQSByZWNvdmVyeSBwcm9jZXNzIGZvciBsb3N0IGFjY291bnQgYnkgcmVzY3VlciBhY2NvdW50IGhhcyBiZWVuIGNsb3NlZC5AQWNjb3VudFJlY292ZXJlZAgBMGxvc3RfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABPHJlc2N1ZXJfYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBAEBTG9zdCBhY2NvdW50IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSByZWNvdmVyZWQgYnkgcmVzY3VlciBhY2NvdW50LjxSZWNvdmVyeVJlbW92ZWQEATBsb3N0X2FjY291bnQEATBUOjpBY2NvdW50SWQABQTMQSByZWNvdmVyeSBwcm9jZXNzIGhhcyBiZWVuIHJlbW92ZWQgZm9yIGFuIGFjY291bnQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABEGtpbmRBDAE4RGVwb3NpdEtpbmQ8VD4AASxvbGRfZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4AASxuZXdfZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4ABgRsQSBkZXBvc2l0IGhhcyBiZWVuIHVwZGF0ZWQuBDBFdmVudHMgdHlwZS5BDAg8cGFsbGV0X3JlY292ZXJ5LERlcG9zaXRLaW5kBARUAREEAQg4UmVjb3ZlcnlDb25maWcAAABEQWN0aXZlUmVjb3ZlcnlGb3IEAAQBmDxUIGFzIGZyYW1lX3N5c3RlbTo6Q29uZmlnPjo6QWNjb3VudElkAAEAAEUMDDhwYWxsZXRfc29jaWV0eRhwYWxsZXQURXZlbnQIBFQABEkAAUwcRm91bmRlZAQBHGZvdW5kZXIEATBUOjpBY2NvdW50SWQAAAS0VGhlIHNvY2lldHkgaXMgZm91bmRlZCBieSB0aGUgZ2l2ZW4gaWRlbnRpdHkuDEJpZAgBMGNhbmRpZGF0ZV9pZAQBMFQ6OkFjY291bnRJZAABFG9mZmVylQEBPEJhbGFuY2VPZjxULCBJPgABCF0BQSBtZW1iZXJzaGlwIGJpZCBqdXN0IGhhcHBlbmVkLiBUaGUgZ2l2ZW4gYWNjb3VudCBpcyB0aGUgY2FuZGlkYXRlJ3MgSUQgYW5kIHRoZWlyIG9mZmVyOGlzIHRoZSBzZWNvbmQuFFZvdWNoDAEwY2FuZGlkYXRlX2lkBAEwVDo6QWNjb3VudElkAAEUb2ZmZXKVAQE8QmFsYW5jZU9mPFQsIEk+AAEgdm91Y2hpbmcEATBUOjpBY2NvdW50SWQAAghdAUEgbWVtYmVyc2hpcCBiaWQganVzdCBoYXBwZW5lZCBieSB2b3VjaGluZy4gVGhlIGdpdmVuIGFjY291bnQgaXMgdGhlIGNhbmRpZGF0ZSdzIElEIGFuZOx0aGVpciBvZmZlciBpcyB0aGUgc2Vjb25kLiBUaGUgdm91Y2hpbmcgcGFydHkgaXMgdGhlIHRoaXJkLiRBdXRvVW5iaWQEASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQAAwQFAUEgY2FuZGlkYXRlIHdhcyBkcm9wcGVkIChkdWUgdG8gYW4gZXhjZXNzIG9mIGJpZHMgaW4gdGhlIHN5c3RlbSkuFFVuYmlkBAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAQErEEgY2FuZGlkYXRlIHdhcyBkcm9wcGVkIChieSB0aGVpciByZXF1ZXN0KS4cVW52b3VjaAQBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZAAFBPRBIGNhbmRpZGF0ZSB3YXMgZHJvcHBlZCAoYnkgcmVxdWVzdCBvZiB3aG8gdm91Y2hlZCBmb3IgdGhlbSkuIEluZHVjdGVkCAEccHJpbWFyeQQBMFQ6OkFjY291bnRJZAABKGNhbmRpZGF0ZXOdAQFEVmVjPFQ6OkFjY291bnRJZD4ABghVAUEgZ3JvdXAgb2YgY2FuZGlkYXRlcyBoYXZlIGJlZW4gaW5kdWN0ZWQuIFRoZSBiYXRjaCdzIHByaW1hcnkgaXMgdGhlIGZpcnN0IHZhbHVlLCB0aGVwYmF0Y2ggaW4gZnVsbCBpcyB0aGUgc2Vjb25kLmBTdXNwZW5kZWRNZW1iZXJKdWRnZW1lbnQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhqdWRnZWSZAQEQYm9vbAAHBIxBIHN1c3BlbmRlZCBtZW1iZXIgaGFzIGJlZW4ganVkZ2VkLkhDYW5kaWRhdGVTdXNwZW5kZWQEASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQACAR4QSBjYW5kaWRhdGUgaGFzIGJlZW4gc3VzcGVuZGVkPE1lbWJlclN1c3BlbmRlZAQBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAAJBGxBIG1lbWJlciBoYXMgYmVlbiBzdXNwZW5kZWQoQ2hhbGxlbmdlZAQBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAAKBHBBIG1lbWJlciBoYXMgYmVlbiBjaGFsbGVuZ2VkEFZvdGUMASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQAARR2b3RlcgQBMFQ6OkFjY291bnRJZAABEHZvdGWZAQEQYm9vbAALBFhBIHZvdGUgaGFzIGJlZW4gcGxhY2VkMERlZmVuZGVyVm90ZQgBFHZvdGVyBAEwVDo6QWNjb3VudElkAAEQdm90ZZkBARBib29sAAwEtEEgdm90ZSBoYXMgYmVlbiBwbGFjZWQgZm9yIGEgZGVmZW5kaW5nIG1lbWJlciROZXdQYXJhbXMEARhwYXJhbXNJDAFQR3JvdXBQYXJhbXNGb3I8VCwgST4ADQTMQSBuZXcgc2V0IG9mIFxbcGFyYW1zXF0gaGFzIGJlZW4gc2V0IGZvciB0aGUgZ3JvdXAuJFVuZm91bmRlZAQBHGZvdW5kZXIEATBUOjpBY2NvdW50SWQADgRUU29jaWV0eSBpcyB1bmZvdW5kZWQuHERlcG9zaXQEARR2YWx1ZZUBATxCYWxhbmNlT2Y8VCwgST4ADwTMU29tZSBmdW5kcyB3ZXJlIGRlcG9zaXRlZCBpbnRvIHRoZSBzb2NpZXR5IGFjY291bnQuIEVsZXZhdGVkCAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEQcmFuazgBEFJhbmsAEASYQSBcW21lbWJlclxdIGdvdCBlbGV2YXRlZCB0byBcW3JhbmtcXS4wRGVwb3NpdFBva2VkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEsb2xkX2RlcG9zaXSVAQE8QmFsYW5jZU9mPFQsIEk+AAEsbmV3X2RlcG9zaXSVAQE8QmFsYW5jZU9mPFQsIEk+ABEEfEEgZGVwb3NpdCB3YXMgcG9rZWQgLyBhZGp1c3RlZC4wTWVtYmVyS2lja2VkBAEYbWVtYmVyBAEwVDo6QWNjb3VudElkABIEjEEgbWVtYmVyIHdhcyBraWNrZWQgYnkgdGhlIGZvdW5kZXIuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0SQwIOHBhbGxldF9zb2NpZXR5LEdyb3VwUGFyYW1zBBxCYWxhbmNlAZUBABABLG1heF9tZW1iZXJzOAEMdTMyAAEobWF4X2ludGFrZTgBDHUzMgABLG1heF9zdHJpa2VzOAEMdTMyAAFEY2FuZGlkYXRlX2RlcG9zaXSVAQEcQmFsYW5jZQAATQwMNHBhbGxldF9yZXZpdmUYcGFsbGV0FEV2ZW50BARUAAEMPENvbnRyYWN0RW1pdHRlZAwBIGNvbnRyYWN08QQBEEgxNjAEkFRoZSBjb250cmFjdCB0aGF0IGVtaXR0ZWQgdGhlIGV2ZW50LgEQZGF0YRgBHFZlYzx1OD4INQFEYXRhIHN1cHBsaWVkIGJ5IHRoZSBjb250cmFjdC4gTWV0YWRhdGEgZ2VuZXJhdGVkIGR1cmluZyBjb250cmFjdCBjb21waWxhdGlvblxpcyBuZWVkZWQgdG8gZGVjb2RlIGl0LgEYdG9waWNz8AEkVmVjPEgyNTY+CKRBIGxpc3Qgb2YgdG9waWNzIHVzZWQgdG8gaW5kZXggdGhlIGV2ZW50LuxOdW1iZXIgb2YgdG9waWNzIGlzIGNhcHBlZCBieSBbYGxpbWl0czo6TlVNX0VWRU5UX1RPUElDU2BdLgAEnEEgY3VzdG9tIGV2ZW50IGVtaXR0ZWQgYnkgdGhlIGNvbnRyYWN0LjBJbnN0YW50aWF0ZWQIASBkZXBsb3llcvEEARBIMTYwAAEgY29udHJhY3TxBAEQSDE2MAABBNxDb250cmFjdCBkZXBsb3llZCBieSBkZXBsb3llciBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuSEV0aEV4dHJpbnNpY1JldmVydAQBOGRpc3BhdGNoX2Vycm9yNQsBNERpc3BhdGNoRXJyb3IAAhi0RW1pdHRlZCB3aGVuIGFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHJldmVydHMuACkBRXRoZXJldW0gdHJhbnNhY3Rpb25zIGFsd2F5cyBjb21wbGV0ZSBzdWNjZXNzZnVsbHkgYXQgdGhlIGV4dHJpbnNpYyBsZXZlbCzYYXMgZXZlbiByZXZlcnRlZCBjYWxscyBtdXN0IHN0b3JlIHRoZWlyIGBSZWNlaXB0SW5mb2AuJQFUbyBkaXN0aW5ndWlzaCByZXZlcnRlZCBjYWxscyBmcm9tIHN1Y2Nlc3NmdWwgb25lcywgdGhpcyBldmVudCBpcyBlbWl0dGVkhGZvciBmYWlsZWQgRXRoZXJldW0gdHJhbnNhY3Rpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldFEMDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0FEV2ZW50BARUAAEQIE1pZ3JhdGVkDAEMdG9wOAEMdTMyAAEUY2hpbGQ4AQx1MzIAARxjb21wdXRlVQwBQE1pZ3JhdGlvbkNvbXB1dGUAAAg5AUdpdmVuIG51bWJlciBvZiBgKHRvcCwgY2hpbGQpYCBrZXlzIHdlcmUgbWlncmF0ZWQgcmVzcGVjdGl2ZWx5LCB3aXRoIHRoZSBnaXZlbihgY29tcHV0ZWAuHFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEwQmFsYW5jZU9mPFQ+AAEEtFNvbWUgYWNjb3VudCBnb3Qgc2xhc2hlZCBieSB0aGUgZ2l2ZW4gYW1vdW50LlRBdXRvTWlncmF0aW9uRmluaXNoZWQAAgSEVGhlIGF1dG8gbWlncmF0aW9uIHRhc2sgZmluaXNoZWQuGEhhbHRlZAQBFGVycm9yWQwBIEVycm9yPFQ+AAME7E1pZ3JhdGlvbiBnb3QgaGFsdGVkIGR1ZSB0byBhbiBlcnJvciBvciBtaXNzLWNvbmZpZ3VyYXRpb24uBHBJbm5lciBldmVudHMgb2YgdGhpcyBwYWxsZXQuVQwMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXRATWlncmF0aW9uQ29tcHV0ZQABCBhTaWduZWQAAAAQQXV0bwABAABZDAxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBRFcnJvcgQEVAABGDxNYXhTaWduZWRMaW1pdHMAAASATWF4IHNpZ25lZCBsaW1pdHMgbm90IHJlc3BlY3RlZC4oS2V5VG9vTG9uZwABHLRBIGtleSB3YXMgbG9uZ2VyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgbWF4aW11bS4AEQFUaGlzIG1lYW5zIHRoYXQgdGhlIG1pZ3JhdGlvbiBoYWx0ZWQgYXQgdGhlIGN1cnJlbnQgW2BQcm9ncmVzc2BdIGFuZAEBY2FuIGJlIHJlc3VtZWQgd2l0aCBhIGxhcmdlciBbYGNyYXRlOjpDb25maWc6Ok1heEtleUxlbmBdIHZhbHVlLiEBUmV0cnlpbmcgd2l0aCB0aGUgc2FtZSBbYGNyYXRlOjpDb25maWc6Ok1heEtleUxlbmBdIHZhbHVlIHdpbGwgbm90IHdvcmsuRQFUaGUgdmFsdWUgc2hvdWxkIG9ubHkgYmUgaW5jcmVhc2VkIHRvIGF2b2lkIGEgc3RvcmFnZSBtaWdyYXRpb24gZm9yIHRoZSBjdXJyZW50bHmQc3RvcmVkIFtgY3JhdGU6OlByb2dyZXNzOjpMYXN0S2V5YF0uOE5vdEVub3VnaEZ1bmRzAAIElHN1Ym1pdHRlciBkb2VzIG5vdCBoYXZlIGVub3VnaCBmdW5kcy4oQmFkV2l0bmVzcwADBGhCYWQgd2l0bmVzcyBkYXRhIHByb3ZpZGVkLmRTaWduZWRNaWdyYXRpb25Ob3RBbGxvd2VkAAQEJQFTaWduZWQgbWlncmF0aW9uIGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgdGhlIG1heGltdW0gbGltaXQgaXMgbm90IHNldCB5ZXQuMEJhZENoaWxkUm9vdAAFBGBCYWQgY2hpbGQgcm9vdCBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuXQwMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFdmVudAQEVAABXBxDcmVhdGVkCAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAAABGBBIHBvb2wgaGFzIGJlZW4gY3JlYXRlZC4YQm9uZGVkEAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABGGJvbmRlZJUBATBCYWxhbmNlT2Y8VD4AARhqb2luZWSZAQEQYm9vbAABBJRBIG1lbWJlciBoYXMgYmVjYW1lIGJvbmRlZCBpbiBhIHBvb2wuHFBhaWRPdXQMARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEYcGF5b3V0lQEBMEJhbGFuY2VPZjxUPgACBIxBIHBheW91dCBoYXMgYmVlbiBtYWRlIHRvIGEgbWVtYmVyLiBVbmJvbmRlZBQBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARxiYWxhbmNllQEBMEJhbGFuY2VPZjxUPgABGHBvaW50c5UBATBCYWxhbmNlT2Y8VD4AAQxlcmE4ASBFcmFJbmRleAADLJhBIG1lbWJlciBoYXMgdW5ib25kZWQgZnJvbSB0aGVpciBwb29sLgA5AS0gYGJhbGFuY2VgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJhbGFuY2Ugb2YgdGhlIG51bWJlciBvZiBwb2ludHMgdGhhdCBoYXMgYmVlblUBICByZXF1ZXN0ZWQgdG8gYmUgdW5ib25kZWQgKHRoZSBhcmd1bWVudCBvZiB0aGUgYHVuYm9uZGAgdHJhbnNhY3Rpb24pIGZyb20gdGhlIGJvbmRlZBwgIHBvb2wuRQEtIGBwb2ludHNgIGlzIHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgYXJlIGlzc3VlZCBhcyBhIHJlc3VsdCBvZiBgYmFsYW5jZWAgYmVpbmfAZGlzc29sdmVkIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgdW5ib25kaW5nIHBvb2wu5C0gYGVyYWAgaXMgdGhlIGVyYSBpbiB3aGljaCB0aGUgYmFsYW5jZSB3aWxsIGJlIHVuYm9uZGVkLlUBSW4gdGhlIGFic2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZXNlIHZhbHVlcyB3aWxsIG1hdGNoLiBJbiB0aGUgcHJlc2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZU0BbnVtYmVyIG9mIHBvaW50cyB0aGF0IGFyZSBpc3N1ZWQgaW4gdGhlIHVuYm9uZGluZyBwb29sIHdpbGwgYmUgbGVzcyB0aGFuIHRoZSBhbW91bnRkcmVxdWVzdGVkIHRvIGJlIHVuYm9uZGVkLiRXaXRoZHJhd24QARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZZUBATBCYWxhbmNlT2Y8VD4AARhwb2ludHOVAQEwQmFsYW5jZU9mPFQ+AAQYnEEgbWVtYmVyIGhhcyB3aXRoZHJhd24gZnJvbSB0aGVpciBwb29sLgAhAVRoZSBnaXZlbiBudW1iZXIgb2YgYHBvaW50c2AgaGF2ZSBiZWVuIGRpc3NvbHZlZCBpbiByZXR1cm4gb2YgYGJhbGFuY2VgLgBZAVNpbWlsYXIgdG8gYFVuYm9uZGVkYCBldmVudCwgaW4gdGhlIGFic2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZSByYXRpbyBvZiBwb2ludCB0byBiYWxhbmNlKHdpbGwgYmUgMS4kRGVzdHJveWVkBAEccG9vbF9pZDgBGFBvb2xJZAAFBGhBIHBvb2wgaGFzIGJlZW4gZGVzdHJveWVkLjBTdGF0ZUNoYW5nZWQIARxwb29sX2lkOAEYUG9vbElkAAEkbmV3X3N0YXRlIQUBJFBvb2xTdGF0ZQAGBHxUaGUgc3RhdGUgb2YgYSBwb29sIGhhcyBjaGFuZ2VkNE1lbWJlclJlbW92ZWQMARxwb29sX2lkOAEYUG9vbElkAAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAFAcmVsZWFzZWRfYmFsYW5jZZUBATBCYWxhbmNlT2Y8VD4ABxSYQSBtZW1iZXIgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGEgcG9vbC4AUQFUaGUgcmVtb3ZhbCBjYW4gYmUgdm9sdW50YXJ5ICh3aXRoZHJhd24gYWxsIHVuYm9uZGVkIGZ1bmRzKSBvciBpbnZvbHVudGFyeSAoa2lja2VkKS5JAUFueSBmdW5kcyB0aGF0IGFyZSBzdGlsbCBkZWxlZ2F0ZWQgKGkuZS4gZGFuZ2xpbmcgZGVsZWdhdGlvbikgYXJlIHJlbGVhc2VkIGFuZCBhcmWIcmVwcmVzZW50ZWQgYnkgYHJlbGVhc2VkX2JhbGFuY2VgLjBSb2xlc1VwZGF0ZWQMARByb290QQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEcYm91bmNlckEBAVBPcHRpb248VDo6QWNjb3VudElkPgABJG5vbWluYXRvckEBAVBPcHRpb248VDo6QWNjb3VudElkPgAICFUBVGhlIHJvbGVzIG9mIGEgcG9vbCBoYXZlIGJlZW4gdXBkYXRlZCB0byB0aGUgZ2l2ZW4gbmV3IHJvbGVzLiBOb3RlIHRoYXQgdGhlIGRlcG9zaXRvckRjYW4gbmV2ZXIgY2hhbmdlLixQb29sU2xhc2hlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARxiYWxhbmNllQEBMEJhbGFuY2VPZjxUPgAJBA0BVGhlIGFjdGl2ZSBiYWxhbmNlIG9mIHBvb2wgYHBvb2xfaWRgIGhhcyBiZWVuIHNsYXNoZWQgdG8gYGJhbGFuY2VgLlBVbmJvbmRpbmdQb29sU2xhc2hlZAwBHHBvb2xfaWQ4ARhQb29sSWQAAQxlcmE4ASBFcmFJbmRleAABHGJhbGFuY2WVAQEwQmFsYW5jZU9mPFQ+AAoEJQFUaGUgdW5ib25kIHBvb2wgYXQgYGVyYWAgb2YgcG9vbCBgcG9vbF9pZGAgaGFzIGJlZW4gc2xhc2hlZCB0byBgYmFsYW5jZWAuVFBvb2xDb21taXNzaW9uVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARxjdXJyZW50PQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4ACwS0QSBwb29sJ3MgY29tbWlzc2lvbiBzZXR0aW5nIGhhcyBiZWVuIGNoYW5nZWQuYFBvb2xNYXhDb21taXNzaW9uVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAAThtYXhfY29tbWlzc2lvbjEFARxQZXJiaWxsAAwE1EEgcG9vbCdzIG1heGltdW0gY29tbWlzc2lvbiBzZXR0aW5nIGhhcyBiZWVuIGNoYW5nZWQufFBvb2xDb21taXNzaW9uQ2hhbmdlUmF0ZVVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEsY2hhbmdlX3JhdGVFBQGcQ29tbWlzc2lvbkNoYW5nZVJhdGU8QmxvY2tOdW1iZXJGb3I8VD4+AA0EzEEgcG9vbCdzIGNvbW1pc3Npb24gYGNoYW5nZV9yYXRlYCBoYXMgYmVlbiBjaGFuZ2VkLpBQb29sQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEocGVybWlzc2lvbkkFAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAOBMhQb29sIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbiBoYXMgYmVlbiB1cGRhdGVkLlRQb29sQ29tbWlzc2lvbkNsYWltZWQIARxwb29sX2lkOAEYUG9vbElkAAEoY29tbWlzc2lvbpUBATBCYWxhbmNlT2Y8VD4ADwSEUG9vbCBjb21taXNzaW9uIGhhcyBiZWVuIGNsYWltZWQuZE1pbkJhbGFuY2VEZWZpY2l0QWRqdXN0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEYYW1vdW50lQEBMEJhbGFuY2VPZjxUPgAQBMhUb3BwZWQgdXAgZGVmaWNpdCBpbiBmcm96ZW4gRUQgb2YgdGhlIHJld2FyZCBwb29sLmBNaW5CYWxhbmNlRXhjZXNzQWRqdXN0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEYYW1vdW50lQEBMEJhbGFuY2VPZjxUPgARBLxDbGFpbWVkIGV4Y2VzcyBmcm96ZW4gRUQgb2YgYWYgdGhlIHJld2FyZCBwb29sLnBNZW1iZXJDbGFpbVBlcm1pc3Npb25VcGRhdGVkCAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEocGVybWlzc2lvbjkFATxDbGFpbVBlcm1pc3Npb24AEgTIQSBwb29sIG1lbWJlcidzIGNsYWltIHBlcm1pc3Npb24gaGFzIGJlZW4gdXBkYXRlZC48TWV0YWRhdGFVcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGNhbGxlcgQBMFQ6OkFjY291bnRJZAATBHhBIHBvb2wncyBtZXRhZGF0YSB3YXMgdXBkYXRlZC5IUG9vbE5vbWluYXRpb25NYWRlCAEccG9vbF9pZDgBGFBvb2xJZAABGGNhbGxlcgQBMFQ6OkFjY291bnRJZAAUCFkBQSBwb29sJ3Mgbm9taW5hdGluZyBhY2NvdW50IChvciB0aGUgcG9vbCdzIHJvb3QgYWNjb3VudCkgaGFzIG5vbWluYXRlZCBhIHZhbGlkYXRvciBzZXRYb24gYmVoYWxmIG9mIHRoZSBwb29sLlBQb29sTm9taW5hdG9yQ2hpbGxlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAFQS4VGhlIHBvb2wgaXMgY2hpbGxlZCBpLmUuIG5vIGxvbmdlciBub21pbmF0aW5nLkxHbG9iYWxQYXJhbXNVcGRhdGVkGAE0bWluX2pvaW5fYm9uZJUBATBCYWxhbmNlT2Y8VD4AATxtaW5fY3JlYXRlX2JvbmSVAQEwQmFsYW5jZU9mPFQ+AAEkbWF4X3Bvb2xz2AEsT3B0aW9uPHUzMj4AASxtYXhfbWVtYmVyc9gBLE9wdGlvbjx1MzI+AAFQbWF4X21lbWJlcnNfcGVyX3Bvb2zYASxPcHRpb248dTMyPgABVGdsb2JhbF9tYXhfY29tbWlzc2lvbkUIATxPcHRpb248UGVyYmlsbD4AFgQBAUdsb2JhbCBwYXJhbWV0ZXJzIHJlZ3VsYXRpbmcgbm9taW5hdGlvbiBwb29scyBoYXZlIGJlZW4gdXBkYXRlZC4EWEV2ZW50cyBvZiB0aGlzIHBhbGxldC5hDAxAcGFsbGV0X2JhZ3NfbGlzdBhwYWxsZXQURXZlbnQIBFQABEkAAQggUmViYWdnZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARBmcm9tKAEgVDo6U2NvcmUAAQh0bygBIFQ6OlNjb3JlAAAEpE1vdmVkIGFuIGFjY291bnQgZnJvbSBvbmUgYmFnIHRvIGFub3RoZXIuMFNjb3JlVXBkYXRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABJG5ld19zY29yZSgBIFQ6OlNjb3JlAAEE2FVwZGF0ZWQgdGhlIHNjb3JlIG9mIHNvbWUgYWNjb3VudCB0byB0aGUgZ2l2ZW4gYW1vdW50LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldGUMDGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcYcGFsbGV0FEV2ZW50BARUAAEQJERlbGVnYXRlZAwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBMEJhbGFuY2VPZjxUPgAABHxGdW5kcyBkZWxlZ2F0ZWQgYnkgYSBkZWxlZ2F0b3IuIFJlbGVhc2VkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEwQmFsYW5jZU9mPFQ+AAEEeEZ1bmRzIHJlbGVhc2VkIHRvIGEgZGVsZWdhdG9yLhxTbGFzaGVkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEwQmFsYW5jZU9mPFQ+AAIEfEZ1bmRzIHNsYXNoZWQgZnJvbSBhIGRlbGVnYXRvci5ITWlncmF0ZWREZWxlZ2F0aW9uDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEwQmFsYW5jZU9mPFQ+AAMExFVuY2xhaW1lZCBkZWxlZ2F0aW9uIGZ1bmRzIG1pZ3JhdGVkIHRvIGRlbGVnYXRvci4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRpDAx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBRFdmVudAQEVAABEFRTZXNzaW9uUmVwb3J0UmVjZWl2ZWQQASRlbmRfaW5kZXg4ATBTZXNzaW9uSW5kZXgAAVBhY3RpdmF0aW9uX3RpbWVzdGFtcGUFAUhPcHRpb248KHU2NCwgdTMyKT4AAVx2YWxpZGF0b3JfcG9pbnRzX2NvdW50czgBDHUzMgABIGxlZnRvdmVymQEBEGJvb2wAAASMQSBzYWlkIHNlc3Npb24gcmVwb3J0IHdhcyByZWNlaXZlZC48T2ZmZW5jZVJlY2VpdmVkCAE0c2xhc2hfc2Vzc2lvbjgBMFNlc3Npb25JbmRleAABOG9mZmVuY2VzX2NvdW50OAEMdTMyAAEEbEEgbmV3IG9mZmVuY2Ugd2FzIHJlcG9ydGVkLiBGZWVzUGFpZAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZlZXOVAQEwQmFsYW5jZU9mPFQ+AAIMAQFGZWVzIHdlcmUgY2hhcmdlZCBmb3IgYSB1c2VyIG9wZXJhdGlvbiAoc2V0X2tleXMgb3IgcHVyZ2Vfa2V5cykuABkBVGhlIGZlZSBpbmNsdWRlcyBib3RoIFhDTSBkZWxpdmVyeSBmZWUgYW5kIHJlbGF5IGNoYWluIGV4ZWN1dGlvbiBjb3N0LihVbmV4cGVjdGVkBABtDAE4VW5leHBlY3RlZEtpbmQAAwgNAVNvbWV0aGluZyBvY2N1cnJlZCB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4gdW5kZXIgbm9ybWFsIG9wZXJhdGlvbi68TG9nZ2VkIGFzIGFuIGV2ZW50IGZvciBmYWlsLXNhZmUgb2JzZXJ2YWJpbGl0eS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRtDAx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldDhVbmV4cGVjdGVkS2luZAABGHBTZXNzaW9uUmVwb3J0SW50ZWdyaXR5RmFpbGVkAAAAbFZhbGlkYXRvclNldEludGVncml0eUZhaWxlZAABADhTZXNzaW9uU2tpcHBlZAACAFxTZXNzaW9uQWxyZWFkeVByb2Nlc3NlZAADAFhWYWxpZGF0b3JTZXRTZW5kRmFpbGVkAAQATFZhbGlkYXRvclNldERyb3BwZWQABQAAcQwMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhwYWxsZXQURXZlbnQEBFQAAQxEUGhhc2VUcmFuc2l0aW9uZWQIARBmcm9tgQUBIFBoYXNlPFQ+BEB0aGUgc291cmNlIHBoYXNlAQh0b4EFASBQaGFzZTxUPgRAVGhlIHRhcmdldCBwaGFzZQAIXQFBIHBoYXNlIHRyYW5zaXRpb24gaGFwcGVuZWQuIE9ubHkgY2hlY2tzIG1ham9yIGNoYW5nZXMgaW4gdGhlIHZhcmlhbnRzLCBub3QgbWlub3IgaW5uZXIcdmFsdWVzLnhVbmV4cGVjdGVkVGFyZ2V0U25hcHNob3RGYWlsZWQAAQR8VGFyZ2V0IHNuYXBzaG90IGNyZWF0aW9uIGZhaWxlZHRVbmV4cGVjdGVkVm90ZXJTbmFwc2hvdEZhaWxlZAACBHhWb3RlciBzbmFwc2hvdCBjcmVhdGlvbiBmYWlsZWQEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR1DBSQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGHBhbGxldBRFdmVudAQEVAABDEhWZXJpZmljYXRpb25GYWlsZWQIADgBJFBhZ2VJbmRleAAAeQwBQEZlYXNpYmlsaXR5RXJyb3IAABCgQSB2ZXJpZmljYXRpb24gZmFpbGVkIGF0IHRoZSBnaXZlbiBwYWdlLgBVAU5PVEU6IGlmIHRoZSBpbmRleCBpcyAwLCB0aGVuIHRoaXMgY291bGQgbWVhbiBlaXRoZXIgdGhlIGZlYXNpYmlsaXR5IG9mIHRoZSBsYXN0IHBhZ2UFAXdhcyB3cm9uZywgb3IgdGhlIGZpbmFsIGNoZWNrcyBvZiBgZmluYWxpemVfdmVyaWZpY2F0aW9uYCBmYWlsZWQuIFZlcmlmaWVkCAA4ASRQYWdlSW5kZXgAADgBDHUzMgABCFkBVGhlIGdpdmVuIHBhZ2Ugb2YgYSBzb2x1dGlvbiBoYXMgYmVlbiB2ZXJpZmllZCwgd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHdpbm5lcnMgYmVpbmcwZm91bmQgaW4gaXQuGFF1ZXVlZAgAqQUBNEVsZWN0aW9uU2NvcmUAAIEMAVRPcHRpb248RWxlY3Rpb25TY29yZT4AAgQdAUEgc29sdXRpb24gd2l0aCB0aGUgZ2l2ZW4gc2NvcmUgaGFzIHJlcGxhY2VkIG91ciBjdXJyZW50IGJlc3Qgc29sdXRpb24uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0eQwMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllckBGZWFzaWJpbGl0eUVycm9yAAEsQFdyb25nV2lubmVyQ291bnQAAABMU25hcHNob3RVbmF2YWlsYWJsZQABACxJbnZhbGlkVm90ZQACADBJbnZhbGlkVm90ZXIAAwA0SW52YWxpZFdpbm5lcgAEADBJbnZhbGlkU2NvcmUABQAwSW52YWxpZFJvdW5kAAYALFNjb3JlVG9vTG93AAcAUEZhaWxlZFRvQm91bmRTdXBwb3J0AAgAME5wb3NFbGVjdGlvbgQAfQwBYHNwX25wb3NfZWxlY3Rpb25zOjpFcnJvcgAJAChJbmNvbXBsZXRlAAoAAH0MCERzcF9ucG9zX2VsZWN0aW9ucxRFcnJvcgABKFhTb2x1dGlvbldlaWdodE92ZXJmbG93AAAAWFNvbHV0aW9uVGFyZ2V0T3ZlcmZsb3cAAQBQU29sdXRpb25JbnZhbGlkSW5kZXgAAgBgU29sdXRpb25JbnZhbGlkUGFnZUluZGV4AAMAPEFyaXRobWV0aWNFcnJvcgAEAEhJbnZhbGlkU3VwcG9ydEVkZ2UABQA0VG9vTWFueVZvdGVycwAGADhCb3VuZHNFeGNlZWRlZAAHADhEdXBsaWNhdGVWb3RlcgAIADxEdXBsaWNhdGVUYXJnZXQACQAAgQwEGE9wdGlvbgQEVAGpBQEIEE5vbmUAAAAQU29tZQQAqQUAAAEAAIUMEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBRFdmVudAQEVAABHChSZWdpc3RlcmVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAAqQUBNEVsZWN0aW9uU2NvcmUAAARRAVVwY29taW5nIHN1Ym1pc3Npb24gaGFzIGJlZW4gcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIGFjY291bnQsIHdpdGggdGhlIGdpdmVuIHNjb3JlLhhTdG9yZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAA4ASRQYWdlSW5kZXgAAQRdAUEgcGFnZSBvZiBzb2x1dGlvbiBzb2x1dGlvbiB3aXRoIHRoZSBnaXZlbiBpbmRleCBoYXMgYmVlbiBzdG9yZWQgZm9yIHRoZSBnaXZlbiBhY2NvdW50LiBSZXdhcmRlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAAJUBATBCYWxhbmNlT2Y8VD4AAgToVGhlIGdpdmVuIGFjY291bnQgaGFzIGJlZW4gcmV3YXJkZWQgd2l0aCB0aGUgZ2l2ZW4gYW1vdW50LhxTbGFzaGVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAAlQEBMEJhbGFuY2VPZjxUPgADBORUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBzbGFzaGVkIHdpdGggdGhlIGdpdmVuIGFtb3VudC4cRWplY3RlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABATUVGhlIGdpdmVuIHNvbHV0aW9uLCBmb3IgdGhlIGdpdmVuIHJvdW5kLCB3YXMgZWplY3RlZC4kRGlzY2FyZGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAFBJRUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBkaXNjYXJkZWQuGEJhaWxlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABgR0VGhlIGdpdmVuIGFjY291bnQgaGFzIGJhaWxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSJDBBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldBRFdmVudAQEVAABZBxFcmFQYWlkDAEkZXJhX2luZGV4OAEgRXJhSW5kZXgAAUB2YWxpZGF0b3JfcGF5b3V0lQEBMEJhbGFuY2VPZjxUPgABJHJlbWFpbmRlcpUBATBCYWxhbmNlT2Y8VD4AAAhVAVRoZSBlcmEgcGF5b3V0IGhhcyBiZWVuIHNldDsgdGhlIGZpcnN0IGJhbGFuY2UgaXMgdGhlIHZhbGlkYXRvci1wYXlvdXQ7IHRoZSBzZWNvbmQgaXPAdGhlIHJlbWFpbmRlciBmcm9tIHRoZSBtYXhpbXVtIGFtb3VudCBvZiByZXdhcmQuIFJld2FyZGVkDAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARBkZXN09QYBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4AARhhbW91bnSVAQEwQmFsYW5jZU9mPFQ+AAEEDQFUaGUgbm9taW5hdG9yIGhhcyBiZWVuIHJld2FyZGVkIGJ5IHRoaXMgYW1vdW50IHRvIHRoaXMgZGVzdGluYXRpb24uHFNsYXNoZWQIARhzdGFrZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEwQmFsYW5jZU9mPFQ+AAIEHQFBIHN0YWtlciAodmFsaWRhdG9yIG9yIG5vbWluYXRvcikgaGFzIGJlZW4gc2xhc2hlZCBieSB0aGUgZ2l2ZW4gYW1vdW50LmhPbGRTbGFzaGluZ1JlcG9ydERpc2NhcmRlZAQBNHNlc3Npb25faW5kZXg4ATBTZXNzaW9uSW5kZXgAAwgZAUFuIG9sZCBzbGFzaGluZyByZXBvcnQgZnJvbSBhIHByaW9yIGVyYSB3YXMgZGlzY2FyZGVkIGJlY2F1c2UgaXQgY291bGREbm90IGJlIHByb2Nlc3NlZC4YQm9uZGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEwQmFsYW5jZU9mPFQ+AAQQ0EFuIGFjY291bnQgaGFzIGJvbmRlZCB0aGlzIGFtb3VudC4gXFtzdGFzaCwgYW1vdW50XF0ATQFOT1RFOiBUaGlzIGV2ZW50IGlzIG9ubHkgZW1pdHRlZCB3aGVuIGZ1bmRzIGFyZSBib25kZWQgdmlhIGEgZGlzcGF0Y2hhYmxlLiBOb3RhYmx5LCEBaXQgd2lsbCBub3QgYmUgZW1pdHRlZCBmb3Igc3Rha2luZyByZXdhcmRzIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gc3Rha2UuIFVuYm9uZGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEwQmFsYW5jZU9mPFQ+AAUEkEFuIGFjY291bnQgaGFzIHVuYm9uZGVkIHRoaXMgYW1vdW50LiRXaXRoZHJhd24IARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBATBCYWxhbmNlT2Y8VD4ABghZAUFuIGFjY291bnQgaGFzIGNhbGxlZCBgd2l0aGRyYXdfdW5ib25kZWRgIGFuZCByZW1vdmVkIHVuYm9uZGluZyBjaHVua3Mgd29ydGggYEJhbGFuY2VgZGZyb20gdGhlIHVubG9ja2luZyBxdWV1ZS40U3Rha2VyUmVtb3ZlZAQBFHN0YXNoBAEwVDo6QWNjb3VudElkAAcIVQFBIHN1YnNlcXVlbnQgZXZlbnQgb2YgYFdpdGhkcmF3bmAsIGluZGljYXRpbmcgdGhhdCBgc3Rhc2hgIHdhcyBmdWxseSByZW1vdmVkIGZyb20gdGhlHHN5c3RlbS4YS2lja2VkCAEkbm9taW5hdG9yBAEwVDo6QWNjb3VudElkAAEUc3Rhc2gEATBUOjpBY2NvdW50SWQACAS0QSBub21pbmF0b3IgaGFzIGJlZW4ga2lja2VkIGZyb20gYSB2YWxpZGF0b3IuHENoaWxsZWQEARRzdGFzaAQBMFQ6OkFjY291bnRJZAAJBCEBQW4gYWNjb3VudCBoYXMgc3RvcHBlZCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuNFBheW91dFN0YXJ0ZWQQASRlcmFfaW5kZXg4ASBFcmFJbmRleAABPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABEHBhZ2U4ARBQYWdlAAEQbmV4dNgBME9wdGlvbjxQYWdlPgAKBFkBQSBQYWdlIG9mIHN0YWtlcnMgcmV3YXJkcyBhcmUgZ2V0dGluZyBwYWlkLiBgbmV4dGAgaXMgYE5vbmVgIGlmIGFsbCBwYWdlcyBhcmUgY2xhaW1lZC5EVmFsaWRhdG9yUHJlZnNTZXQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABFHByZWZz+QYBOFZhbGlkYXRvclByZWZzAAsEmEEgdmFsaWRhdG9yIGhhcyBzZXQgdGhlaXIgcHJlZmVyZW5jZXMuaFNuYXBzaG90Vm90ZXJzU2l6ZUV4Y2VlZGVkBAEQc2l6ZTgBDHUzMgAMBGhWb3RlcnMgc2l6ZSBsaW1pdCByZWFjaGVkLmxTbmFwc2hvdFRhcmdldHNTaXplRXhjZWVkZWQEARBzaXplOAEMdTMyAA0EbFRhcmdldHMgc2l6ZSBsaW1pdCByZWFjaGVkLiBGb3JjZUVyYQQBEG1vZGWNDAEcRm9yY2luZwAOAGRDb250cm9sbGVyQmF0Y2hEZXByZWNhdGVkBAEgZmFpbHVyZXM4AQx1MzIADwSkUmVwb3J0IG9mIGEgY29udHJvbGxlciBiYXRjaCBkZXByZWNhdGlvbi5AQ3VycmVuY3lNaWdyYXRlZAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAE4Zm9yY2Vfd2l0aGRyYXeVAQEwQmFsYW5jZU9mPFQ+ABAIVQFTdGFraW5nIGJhbGFuY2UgbWlncmF0ZWQgZnJvbSBsb2NrcyB0byBob2xkcywgd2l0aCBhbnkgYmFsYW5jZSB0aGF0IGNvdWxkIG5vdCBiZSBoZWxkTGlzIGZvcmNlIHdpdGhkcmF3bi5YUGFnZWRFbGVjdGlvblByb2NlZWRlZAgBEHBhZ2U4ASRQYWdlSW5kZXgAARhyZXN1bHSRDAFAUmVzdWx0PHUzMiwgdTMyPgARJEEBQSBwYWdlIGZyb20gYSBtdWx0aS1wYWdlIGVsZWN0aW9uIHdhcyBmZXRjaGVkLiBBIG51bWJlciBvZiB0aGVzZSBhcmUgZm9sbG93ZWQgYnlEYFN0YWtlcnNFbGVjdGVkYC4A8GBPayhjb3VudClgIGluZGljYXRlcyB0aGUgZ2l2ZSBudW1iZXIgb2Ygc3Rhc2hlcyB3ZXJlIGFkZGVkLgUBYEVycihpbmRleClgIGluZGljYXRlcyB0aGF0IHRoZSBzdGFzaGVzIGFmdGVyIGluZGV4IHdlcmUgZHJvcHBlZC5BAWBFcnIoMClgIGluZGljYXRlcyB0aGF0IGFuIGVycm9yIGhhcHBlbmVkIGJ1dCBubyBzdGFzaGVzIHdlcmUgZHJvcHBlZCBub3IgYWRkZWQuAFEBVGhlIGVycm9yIGluZGljYXRlcyB0aGF0IGEgbnVtYmVyIG9mIHZhbGlkYXRvcnMgd2VyZSBkcm9wcGVkIGR1ZSB0byBleGNlc3Mgc2l6ZSwgYnV0jHRoZSBvdmVyYWxsIGVsZWN0aW9uIHdpbGwgY29udGludWUuPE9mZmVuY2VSZXBvcnRlZAwBLG9mZmVuY2VfZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAASBmcmFjdGlvbjEFARxQZXJiaWxsABIITQFBbiBvZmZlbmNlIGZvciB0aGUgZ2l2ZW4gdmFsaWRhdG9yLCBmb3IgdGhlIGdpdmVuIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgc3Rha2UsIGF0IHRoZWxnaXZlbiBlcmEgYXMgYmVlbiByZXBvcnRlZC40U2xhc2hDb21wdXRlZBABLG9mZmVuY2VfZXJhOAEgRXJhSW5kZXgAASRzbGFzaF9lcmE4ASBFcmFJbmRleAABIG9mZmVuZGVyBAEwVDo6QWNjb3VudElkAAEQcGFnZTgBDHUzMgATBDEBQW4gb2ZmZW5jZSBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHNsYXNoIGhhcyBiZWVuIGNvbXB1dGVkLjhTbGFzaENhbmNlbGxlZAgBJHNsYXNoX2VyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkABQEmEFuIHVuYXBwbGllZCBzbGFzaCBoYXMgYmVlbiBjYW5jZWxsZWQuOFNlc3Npb25Sb3RhdGVkDAFAc3RhcnRpbmdfc2Vzc2lvbjgBMFNlc3Npb25JbmRleAABKGFjdGl2ZV9lcmE4ASBFcmFJbmRleAABLHBsYW5uZWRfZXJhOAEgRXJhSW5kZXgAFRCIU2Vzc2lvbiBjaGFuZ2UgaGFzIGJlZW4gdHJpZ2dlcmVkLgBZAUlmIHBsYW5uZWRfZXJhIGlzIG9uZSBlcmEgYWhlYWQgb2YgYWN0aXZlX2VyYSwgaXQgaW1wbGllcyBuZXcgZXJhIGlzIGJlaW5nIHBsYW5uZWQgYW5kUGVsZWN0aW9uIGlzIG9uZ29pbmcuKFVuZXhwZWN0ZWQEAJUMAThVbmV4cGVjdGVkS2luZAAWCA0BU29tZXRoaW5nIG9jY3VycmVkIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLrxMb2dnZWQgYXMgYW4gZXZlbnQgZm9yIGZhaWwtc2FmZSBvYnNlcnZhYmlsaXR5LjRPZmZlbmNlVG9vT2xkDAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAABIGZyYWN0aW9uMQUBHFBlcmJpbGwAFwQ9AUFuIG9mZmVuY2Ugd2FzIHJlcG9ydGVkIHRoYXQgd2FzIHRvbyBvbGQgdG8gYmUgcHJvY2Vzc2VkLCBhbmQgdGh1cyB3YXMgZHJvcHBlZC4kRXJhUHJ1bmVkBAEUaW5kZXg4ASBFcmFJbmRleAAYBKxBbiBvbGQgZXJhIHdpdGggdGhlIGdpdmVuIGluZGV4IHdhcyBwcnVuZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0jQwIUHBhbGxldF9zdGFraW5nX2FzeW5jHEZvcmNpbmcAARAoTm90Rm9yY2luZwAAACBGb3JjZU5ldwABACRGb3JjZU5vbmUAAgAsRm9yY2VBbHdheXMAAwAAkQwEGFJlc3VsdAgEVAE4BEUBOAEICE9rBAA4AAAAAAxFcnIEADgAAAEAAJUMEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEIYEVyYUR1cmF0aW9uQm91bmRFeGNlZWRlZAAAAGhVbmtub3duVmFsaWRhdG9yQWN0aXZhdGlvbgABAACZDAw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBRFdmVudAgEVAAESQABMCBTcGVuZGluZwQBQGJ1ZGdldF9yZW1haW5pbmeVAQE8QmFsYW5jZU9mPFQsIEk+AAAE5FdlIGhhdmUgZW5kZWQgYSBzcGVuZCBwZXJpb2QgYW5kIHdpbGwgbm93IGFsbG9jYXRlIGZ1bmRzLhxBd2FyZGVkDAE4cHJvcG9zYWxfaW5kZXg4ATRQcm9wb3NhbEluZGV4AAEUYXdhcmSVAQE8QmFsYW5jZU9mPFQsIEk+AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABBHxTb21lIGZ1bmRzIGhhdmUgYmVlbiBhbGxvY2F0ZWQuFEJ1cm50BAEsYnVybnRfZnVuZHOVAQE8QmFsYW5jZU9mPFQsIEk+AAIEiFNvbWUgb2Ygb3VyIGZ1bmRzIGhhdmUgYmVlbiBidXJudC4gUm9sbG92ZXIEAUByb2xsb3Zlcl9iYWxhbmNllQEBPEJhbGFuY2VPZjxULCBJPgADBC0BU3BlbmRpbmcgaGFzIGZpbmlzaGVkOyB0aGlzIGlzIHRoZSBhbW91bnQgdGhhdCByb2xscyBvdmVyIHVudGlsIG5leHQgc3BlbmQuHERlcG9zaXQEARR2YWx1ZZUBATxCYWxhbmNlT2Y8VCwgST4ABAR8U29tZSBmdW5kcyBoYXZlIGJlZW4gZGVwb3NpdGVkLjRTcGVuZEFwcHJvdmVkDAE4cHJvcG9zYWxfaW5kZXg4ATRQcm9wb3NhbEluZGV4AAEYYW1vdW50lQEBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAUEnEEgbmV3IHNwZW5kIHByb3Bvc2FsIGhhcyBiZWVuIGFwcHJvdmVkLjxVcGRhdGVkSW5hY3RpdmUIASxyZWFjdGl2YXRlZJUBATxCYWxhbmNlT2Y8VCwgST4AASxkZWFjdGl2YXRlZJUBATxCYWxhbmNlT2Y8VCwgST4ABgTMVGhlIGluYWN0aXZlIGZ1bmRzIG9mIHRoZSBwYWxsZXQgaGF2ZSBiZWVuIHVwZGF0ZWQuSEFzc2V0U3BlbmRBcHByb3ZlZBgBFGluZGV4OAEoU3BlbmRJbmRleAABKGFzc2V0X2tpbmRBBwEwVDo6QXNzZXRLaW5kAAEYYW1vdW50lQEBUEFzc2V0QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnlFBwE4VDo6QmVuZWZpY2lhcnkAASh2YWxpZF9mcm9tOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AASRleHBpcmVfYXQ4AVBCbG9ja051bWJlckZvcjxULCBJPgAHBLRBIG5ldyBhc3NldCBzcGVuZCBwcm9wb3NhbCBoYXMgYmVlbiBhcHByb3ZlZC5AQXNzZXRTcGVuZFZvaWRlZAQBFGluZGV4OAEoU3BlbmRJbmRleAAIBHRBbiBhcHByb3ZlZCBzcGVuZCB3YXMgdm9pZGVkLhBQYWlkCAEUaW5kZXg4AShTcGVuZEluZGV4AAEocGF5bWVudF9pZCgBZDxUOjpQYXltYXN0ZXIgYXMgUGF5Pjo6SWQACQRMQSBwYXltZW50IGhhcHBlbmVkLjRQYXltZW50RmFpbGVkCAEUaW5kZXg4AShTcGVuZEluZGV4AAEocGF5bWVudF9pZCgBZDxUOjpQYXltYXN0ZXIgYXMgUGF5Pjo6SWQACgSQQSBwYXltZW50IGZhaWxlZCBhbmQgY2FuIGJlIHJldHJpZWQuOFNwZW5kUHJvY2Vzc2VkBAEUaW5kZXg4AShTcGVuZEluZGV4AAsITQFBIHNwZW5kIHdhcyBwcm9jZXNzZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmFnZS4gSXQgbWlnaHQgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseXBwYWlkIG9yIGl0IG1heSBoYXZlIGV4cGlyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0nQwMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxhwYWxsZXQURXZlbnQIBFQABEkAARQkRGVsZWdhdGVkDAAEATBUOjpBY2NvdW50SWQAAAQBMFQ6OkFjY291bnRJZAAA+QMBNENsYXNzT2Y8VCwgST4AAAQdAUFuIGFjY291bnQgaGFzIGRlbGVnYXRlZCB0aGVpciB2b3RlIHRvIGFub3RoZXIgYWNjb3VudC4gXFt3aG8sIHRhcmdldFxdLFVuZGVsZWdhdGVkCAAEATBUOjpBY2NvdW50SWQAAPkDATRDbGFzc09mPFQsIEk+AAEE9EFuIFxbYWNjb3VudFxdIGhhcyBjYW5jZWxsZWQgYSBwcmV2aW91cyBkZWxlZ2F0aW9uIG9wZXJhdGlvbi4UVm90ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARB2b3RlTQcBcEFjY291bnRWb3RlPEJhbGFuY2VPZjxULCBJPj4AAShwb2xsX2luZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4AAgRQQW4gYWNjb3VudCBoYXMgdm90ZWQsVm90ZVJlbW92ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARB2b3RlTQcBcEFjY291bnRWb3RlPEJhbGFuY2VPZjxULCBJPj4AAShwb2xsX2luZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4AAwRcQSB2b3RlIGhhcyBiZWVuIHJlbW92ZWQwVm90ZVVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEUY2xhc3P5AwE0Q2xhc3NPZjxULCBJPgAEBEUBVGhlIGxvY2t1cCBwZXJpb2Qgb2YgYSBjb252aWN0aW9uIHZvdGUgZXhwaXJlZCwgYW5kIHRoZSBmdW5kcyBoYXZlIGJlZW4gdW5sb2NrZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0oQwMQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0FEV2ZW50CARUAARJAAFAJFN1Ym1pdHRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRyYWNr+QMBPFRyYWNrSWRPZjxULCBJPgQlAVRoZSB0cmFjayAoYW5kIGJ5IGV4dGVuc2lvbiBwcm9wb3NhbCBkaXNwYXRjaCBvcmlnaW4pIG9mIHRoaXMgcmVmZXJlbmR1bS4BIHByb3Bvc2FsYQcBTEJvdW5kZWRDYWxsT2Y8VCwgST4EgFRoZSBwcm9wb3NhbCBmb3IgdGhlIHJlZmVyZW5kdW0uAASAQSByZWZlcmVuZHVtIGhhcyBiZWVuIHN1Ym1pdHRlZC5URGVjaXNpb25EZXBvc2l0UGxhY2VkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50lQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuAQSUVGhlIGRlY2lzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcGxhY2VkLlxEZWNpc2lvbkRlcG9zaXRSZWZ1bmRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudJUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgIEnFRoZSBkZWNpc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHJlZnVuZGVkLjhEZXBvc2l0U2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudJUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgMEbEEgZGVwb3NpdCBoYXMgYmVlbiBzbGFzaGVkLjxEZWNpc2lvblN0YXJ0ZWQQARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0cmFja/kDATxUcmFja0lkT2Y8VCwgST4EJQFUaGUgdHJhY2sgKGFuZCBieSBleHRlbnNpb24gcHJvcG9zYWwgZGlzcGF0Y2ggb3JpZ2luKSBvZiB0aGlzIHJlZmVyZW5kdW0uASBwcm9wb3NhbGEHAUxCb3VuZGVkQ2FsbE9mPFQsIEk+BIBUaGUgcHJvcG9zYWwgZm9yIHRoZSByZWZlcmVuZHVtLgEUdGFsbHnZCAEgVDo6VGFsbHkEuFRoZSBjdXJyZW50IHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4EBLxBIHJlZmVyZW5kdW0gaGFzIG1vdmVkIGludG8gdGhlIGRlY2lkaW5nIHBoYXNlLjhDb25maXJtU3RhcnRlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4FADhDb25maXJtQWJvcnRlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4GACRDb25maXJtZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxsedkIASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4HBCEBQSByZWZlcmVuZHVtIGhhcyBlbmRlZCBpdHMgY29uZmlybWF0aW9uIHBoYXNlIGFuZCBpcyByZWFkeSBmb3IgYXBwcm92YWwuIEFwcHJvdmVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLggEDQFBIHJlZmVyZW5kdW0gaGFzIGJlZW4gYXBwcm92ZWQgYW5kIGl0cyBwcm9wb3NhbCBoYXMgYmVlbiBzY2hlZHVsZWQuIFJlamVjdGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHnZCAEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCQSsQSBwcm9wb3NhbCBoYXMgYmVlbiByZWplY3RlZCBieSByZWZlcmVuZHVtLiBUaW1lZE91dAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx52QgBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgoE2EEgcmVmZXJlbmR1bSBoYXMgYmVlbiB0aW1lZCBvdXQgd2l0aG91dCBiZWluZyBkZWNpZGVkLiRDYW5jZWxsZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxsedkIASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4LBIBBIHJlZmVyZW5kdW0gaGFzIGJlZW4gY2FuY2VsbGVkLhhLaWxsZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxsedkIASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4MBHRBIHJlZmVyZW5kdW0gaGFzIGJlZW4ga2lsbGVkLmRTdWJtaXNzaW9uRGVwb3NpdFJlZnVuZGVkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50lQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuDQSkVGhlIHN1Ym1pc3Npb24gZGVwb3NpdCBoYXMgYmVlbiByZWZ1bmRlZC4sTWV0YWRhdGFTZXQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARBoYXNoQAEcVDo6SGFzaAQ4UHJlaW1hZ2UgaGFzaC4OBJxNZXRhZGF0YSBmb3IgYSByZWZlcmVuZHVtIGhhcyBiZWVuIHNldC48TWV0YWRhdGFDbGVhcmVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEQaGFzaEABHFQ6Okhhc2gEOFByZWltYWdlIGhhc2guDwSsTWV0YWRhdGEgZm9yIGEgcmVmZXJlbmR1bSBoYXMgYmVlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKUMDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBRFdmVudAQEVAABDDxDYWxsV2hpdGVsaXN0ZWQEASRjYWxsX2hhc2hAARxUOjpIYXNoAAAAWFdoaXRlbGlzdGVkQ2FsbFJlbW92ZWQEASRjYWxsX2hhc2hAARxUOjpIYXNoAAEAZFdoaXRlbGlzdGVkQ2FsbERpc3BhdGNoZWQIASRjYWxsX2hhc2hAARxUOjpIYXNoAAEYcmVzdWx0qQwBaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0qQwEGFJlc3VsdAgEVAGtDARFAbEMAQgIT2sEAK0MAAAAAAxFcnIEALEMAAABAACtDAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0dQEBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWUxCwEQUGF5cwAAsQwIKHNwX3J1bnRpbWVkRGlzcGF0Y2hFcnJvcldpdGhQb3N0SW5mbwQQSW5mbwGtDAAIASRwb3N0X2luZm+tDAEQSW5mbwABFGVycm9yNQsBNERpc3BhdGNoRXJyb3IAALUMDDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0FEV2ZW50CARUAARJAAEwOEJvdW50eVByb3Bvc2VkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAABFBOZXcgYm91bnR5IHByb3Bvc2FsLjhCb3VudHlSZWplY3RlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAARBib25klQEBPEJhbGFuY2VPZjxULCBJPgABBMxBIGJvdW50eSBwcm9wb3NhbCB3YXMgcmVqZWN0ZWQ7IGZ1bmRzIHdlcmUgc2xhc2hlZC5IQm91bnR5QmVjYW1lQWN0aXZlBAEUaW5kZXg4ASxCb3VudHlJbmRleAACBLhBIGJvdW50eSBwcm9wb3NhbCBpcyBmdW5kZWQgYW5kIGJlY2FtZSBhY3RpdmUuNEJvdW50eUF3YXJkZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAwSUQSBib3VudHkgaXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LjRCb3VudHlDbGFpbWVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABGHBheW91dJUBATxCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAAEBIxBIGJvdW50eSBpcyBjbGFpbWVkIGJ5IGJlbmVmaWNpYXJ5LjhCb3VudHlDYW5jZWxlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABQRYQSBib3VudHkgaXMgY2FuY2VsbGVkLjhCb3VudHlFeHRlbmRlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABgRwQSBib3VudHkgZXhwaXJ5IGlzIGV4dGVuZGVkLjhCb3VudHlBcHByb3ZlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABwRUQSBib3VudHkgaXMgYXBwcm92ZWQuPEN1cmF0b3JQcm9wb3NlZAgBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAIBHRBIGJvdW50eSBjdXJhdG9yIGlzIHByb3Bvc2VkLkRDdXJhdG9yVW5hc3NpZ25lZAQBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAkEfEEgYm91bnR5IGN1cmF0b3IgaXMgdW5hc3NpZ25lZC48Q3VyYXRvckFjY2VwdGVkCAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgAARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAoEdEEgYm91bnR5IGN1cmF0b3IgaXMgYWNjZXB0ZWQuMERlcG9zaXRQb2tlZBABJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEgcHJvcG9zZXIEATBUOjpBY2NvdW50SWQAASxvbGRfZGVwb3NpdJUBATxCYWxhbmNlT2Y8VCwgST4AASxuZXdfZGVwb3NpdJUBATxCYWxhbmNlT2Y8VCwgST4ACwSAQSBib3VudHkgZGVwb3NpdCBoYXMgYmVlbiBwb2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS5DAxUcGFsbGV0X2NoaWxkX2JvdW50aWVzGHBhbGxldBRFdmVudAQEVAABEBRBZGRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAAEYEEgY2hpbGQtYm91bnR5IGlzIGFkZGVkLhxBd2FyZGVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAABBKxBIGNoaWxkLWJvdW50eSBpcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuHENsYWltZWQQARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABGHBheW91dJUBATBCYWxhbmNlT2Y8VD4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAACBKRBIGNoaWxkLWJvdW50eSBpcyBjbGFpbWVkIGJ5IGJlbmVmaWNpYXJ5LiBDYW5jZWxlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAMEcEEgY2hpbGQtYm91bnR5IGlzIGNhbmNlbGxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS9DAxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEV2ZW50BARUAAEMQEFzc2V0UmF0ZUNyZWF0ZWQIAShhc3NldF9raW5kQQcBMFQ6OkFzc2V0S2luZAABEHJhdGWBBwEkRml4ZWRVMTI4AAAAQEFzc2V0UmF0ZVJlbW92ZWQEAShhc3NldF9raW5kQQcBMFQ6OkFzc2V0S2luZAABAEBBc3NldFJhdGVVcGRhdGVkDAEoYXNzZXRfa2luZEEHATBUOjpBc3NldEtpbmQAAQxvbGSBBwEkRml4ZWRVMTI4AAEMbmV3gQcBJEZpeGVkVTEyOAACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMEMDGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0FEV2ZW50CARUAARJAAEwNEJvdW50eUNyZWF0ZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAAE4EEgbmV3IGJvdW50eSB3YXMgY3JlYXRlZCBhbmQgZnVuZGluZyBoYXMgYmVlbiBpbml0aWF0ZWQuSENoaWxkQm91bnR5Q3JlYXRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEE+EEgbmV3IGNoaWxkLWJvdW50eSB3YXMgY3JlYXRlZCBhbmQgZnVuZGluZyBoYXMgYmVlbiBpbml0aWF0ZWQuSEJvdW50eUJlY2FtZUFjdGl2ZQwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleNgBTE9wdGlvbjxCb3VudHlJbmRleD4AARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAIE6FRoZSBjdXJhdG9yIGFjY2VwdGVkIHJvbGUgYW5kIGNoaWxkLS9ib3VudHkgYmVjYW1lIGFjdGl2ZS40Qm91bnR5QXdhcmRlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleNgBTE9wdGlvbjxCb3VudHlJbmRleD4AASxiZW5lZmljaWFyeUUHAThUOjpCZW5lZmljaWFyeQADBLRBIGNoaWxkLS9ib3VudHkgd2FzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS5UQm91bnR5UGF5b3V0UHJvY2Vzc2VkFAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV42AFMT3B0aW9uPEJvdW50eUluZGV4PgABKGFzc2V0X2tpbmRBBwEwVDo6QXNzZXRLaW5kAAEUdmFsdWWVAQEoVDo6QmFsYW5jZQABLGJlbmVmaWNpYXJ5RQcBOFQ6OkJlbmVmaWNpYXJ5AAQE9FBheW91dCBwYXltZW50IHRvIHRoZSBiZW5lZmljaWFyeSBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS5YQm91bnR5RnVuZGluZ1Byb2Nlc3NlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleNgBTE9wdGlvbjxCb3VudHlJbmRleD4ABQSsRnVuZGluZyBwYXltZW50IGhhcyBjb25jbHVkZWQgc3VjY2Vzc2Z1bGx5LlRCb3VudHlSZWZ1bmRQcm9jZXNzZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjYAUxPcHRpb248Qm91bnR5SW5kZXg+AAYEqFJlZnVuZCBwYXltZW50IGhhcyBjb25jbHVkZWQgc3VjY2Vzc2Z1bGx5LjhCb3VudHlDYW5jZWxlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleNgBTE9wdGlvbjxCb3VudHlJbmRleD4ABwR4QSBjaGlsZC0vYm91bnR5IHdhcyBjYW5jZWxsZWQuREN1cmF0b3JVbmFzc2lnbmVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV42AFMT3B0aW9uPEJvdW50eUluZGV4PgAIBJxBIGNoaWxkLS9ib3VudHkgY3VyYXRvciB3YXMgdW5hc3NpZ25lZC48Q3VyYXRvclByb3Bvc2VkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV42AFMT3B0aW9uPEJvdW50eUluZGV4PgABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACQSUQSBjaGlsZC0vYm91bnR5IGN1cmF0b3Igd2FzIHByb3Bvc2VkLjRQYXltZW50RmFpbGVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV42AFMT3B0aW9uPEJvdW50eUluZGV4PgABKHBheW1lbnRfaWQoAURQYXltZW50SWRPZjxULCBJPgAKBJBBIHBheW1lbnQgZmFpbGVkIGFuZCBjYW4gYmUgcmV0cmllZC4QUGFpZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleNgBTE9wdGlvbjxCb3VudHlJbmRleD4AAShwYXltZW50X2lkKAFEUGF5bWVudElkT2Y8VCwgST4ACwSYQSBwYXltZW50IGhhcHBlbmVkIGFuZCBjYW4gYmUgY2hlY2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTFDAw0cGFsbGV0X2FoX29wcxhwYWxsZXQURXZlbnQEBFQAARBcTGVhc2VVbnJlc2VydmVSZW1haW5pbmcMASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAARxwYXJhX2lkoAEYUGFyYUlkAAEkcmVtYWluaW5nlQEBMEJhbGFuY2VPZjxUPgAABBEBU29tZSBsZWFzZSByZXNlcnZlIGNvdWxkIG5vdCBiZSB1bnJlc2VydmVkIGFuZCBuZWVkcyBtYW51YWwgY2xlYW51cC5sQ3Jvd2Rsb2FuVW5yZXNlcnZlUmVtYWluaW5nDAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkAAEccGFyYV9pZKABGFBhcmFJZAABJHJlbWFpbmluZ5UBATBCYWxhbmNlT2Y8VD4AAQRVAVNvbWUgYW1vdW50IGZvciBhIGNyb3dkbG9hbiByZXNlcnZlIGNvdWxkIG5vdCBiZSB1bnJlc2VydmVkIGFuZCBuZWVkcyBtYW51YWwgY2xlYW51cC5EU292ZXJlaWduTWlncmF0ZWQQARxwYXJhX2lk+QMBDHUxNgS8VGhlIHBhcmFjaGFpbiBJRCB0aGF0IGhhZCBpdHMgYWNjb3VudCBtaWdyYXRlZC4BEGZyb20EATBUOjpBY2NvdW50SWQEpFRoZSBvbGQgYWNjb3VudCB0aGF0IHdhcyBtaWdyYXRlZCBvdXQgb2YuAQh0bwQBMFQ6OkFjY291bnRJZAScVGhlIG5ldyBhY2NvdW50IHRoYXQgd2FzIG1pZ3JhdGVkIGludG8uATxkZXJpdmF0aW9uX3BhdGiNBwEgVmVjPHUxNj4E7FRoZSBkZXJpdmF0aW9uIHBhdGggdGhhdCB3YXMgdXNlZCB0byB0cmFuc2xhdGUgdGhlIGFjY291bnQuAgglAUEgc292ZXJlaWduIHBhcmFjaGFpbiBhY2NvdW50IGhhcyBiZWVuIG1pZ3JhdGVkIGZyb20gaXRzIGNoaWxkIHRvIHNpYmxpbmc8cmVwcmVzZW50YXRpb24uMEZhaWxlZFRvQm9uZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEwQmFsYW5jZU9mPFQ+AAMEmEZhaWxlZCB0byByZS1ib25kIHNvbWUgbWlncmF0ZWQgZnVuZHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0yQwMSHBhbGxldF9haF9taWdyYXRvchhwYWxsZXQURXZlbnQEBFQAAUA8U3RhZ2VUcmFuc2l0aW9uCAEMb2xkxQoBOE1pZ3JhdGlvblN0YWdlBJBUaGUgb2xkIHN0YWdlIGJlZm9yZSB0aGUgdHJhbnNpdGlvbi4BDG5ld8UKAThNaWdyYXRpb25TdGFnZQSMVGhlIG5ldyBzdGFnZSBhZnRlciB0aGUgdHJhbnNpdGlvbi4ABIBBIHN0YWdlIHRyYW5zaXRpb24gaGFzIG9jY3VycmVkLjRCYXRjaFJlY2VpdmVkCAEYcGFsbGV0zQwBPFBhbGxldEV2ZW50TmFtZQABFGNvdW50OAEMdTMyAAEEGQFXZSByZWNlaXZlZCBhIGJhdGNoIG9mIG1lc3NhZ2VzIHRoYXQgd2lsbCBiZSBpbnRlZ3JhdGVkIGludG8gYSBwYWxsZXQuOEJhdGNoUHJvY2Vzc2VkDAEYcGFsbGV0zQwBPFBhbGxldEV2ZW50TmFtZQABKGNvdW50X2dvb2Q4AQx1MzIAASRjb3VudF9iYWQ4AQx1MzIAAgTEV2UgcHJvY2Vzc2VkIGEgYmF0Y2ggb2YgbWVzc2FnZXMgZm9yIHRoaXMgcGFsbGV0LmBBc3NldEh1Yk1pZ3JhdGlvblN0YXJ0ZWQAAxhJAVRoZSBBc3NldCBIdWIgTWlncmF0aW9uIHN0YXJ0ZWQgYW5kIGlzIGFjdGl2ZSB1bnRpbCBgQXNzZXRIdWJNaWdyYXRpb25GaW5pc2hlZGAgaXMgZW1pdHRlZC4AWQFUaGlzIGV2ZW50IGlzIGVxdWl2YWxlbnQgdG8gYFN0YWdlVHJhbnNpdGlvbiB7IG5ldzogRGF0YU1pZ3JhdGlvbk9uZ29pbmcsIC4uIH1gIGJ1dCBpc0kBZWFzaWVyIHRvIHVuZGVyc3RhbmQuIFRoZSBhY3RpdmF0aW9uIGlzIGltbWVkaWF0ZSBhbmQgYWZmZWN0cyBhbGwgZXZlbnRzIGhhcHBlbmluZyxhZnRlcndhcmRzLmRBc3NldEh1Yk1pZ3JhdGlvbkZpbmlzaGVkAAQUhFRoZSBBc3NldCBIdWIgTWlncmF0aW9uIGZpbmlzaGVkLgBZAVRoaXMgZXZlbnQgaXMgZXF1aXZhbGVudCB0byBgU3RhZ2VUcmFuc2l0aW9uIHsgbmV3OiBNaWdyYXRpb25Eb25lLCAuLiB9YCBidXQgaXMgZWFzaWVyKQF0byB1bmRlcnN0YW5kLiBUaGUgZmluaXNoaW5nIGlzIGltbWVkaWF0ZSBhbmQgYWZmZWN0cyBhbGwgZXZlbnRzIGhhcHBlbmluZyxhZnRlcndhcmRzLkxEbXBRdWV1ZVByaW9yaXR5U2V0DAEscHJpb3JpdGl6ZWSZAQEQYm9vbAzgSW5kaWNhdGVzIGlmIERNUCBxdWV1ZSB3YXMgc3VjY2Vzc2Z1bGx5IHNldCBhcyBwcmlvcml0eS4tAUlmIGBmYWxzZWAsIGl0IG1lYW5zIHdlJ3JlIGluIHRoZSByb3VuZC1yb2JpbiBwaGFzZSBvZiBvdXIgcHJpb3JpdHkgcGF0dGVybiEBKHNlZSBbYENvbmZpZzo6RG1wUXVldWVQcmlvcml0eVBhdHRlcm5gXSksIHdoZXJlIG5vIHF1ZXVlIGdldHMgcHJpb3JpdHkuASxjeWNsZV9ibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+BPBDdXJyZW50IGJsb2NrIG51bWJlciB3aXRoaW4gdGhlIHBhdHRlcm4gY3ljbGUgKDEgdG8gcGVyaW9kKS4BMGN5Y2xlX3BlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+BKxUb3RhbCBudW1iZXIgb2YgYmxvY2tzIGluIHRoZSBwYXR0ZXJuIGN5Y2xlBQTkV2hldGhlciB0aGUgRE1QIHF1ZXVlIHdhcyBwcmlvcml0aXplZCBmb3IgdGhlIG5leHQgYmxvY2suZERtcFF1ZXVlUHJpb3JpdHlDb25maWdTZXQIAQxvbGTJCgGMRG1wUXVldWVQcmlvcml0eTxCbG9ja051bWJlckZvcjxUPj4EZFRoZSBvbGQgcHJpb3JpdHkgcGF0dGVybi4BDG5ld8kKAYxEbXBRdWV1ZVByaW9yaXR5PEJsb2NrTnVtYmVyRm9yPFQ+PgRkVGhlIG5ldyBwcmlvcml0eSBwYXR0ZXJuLgYEmFRoZSBETVAgcXVldWUgcHJpb3JpdHkgY29uZmlnIHdhcyBzZXQuXEJhbGFuY2VzQmVmb3JlUmVjb3JkU2V0CAFAY2hlY2tpbmdfYWNjb3VudJUBAShUOjpCYWxhbmNlAAE4dG90YWxfaXNzdWFuY2WVAQEoVDo6QmFsYW5jZQAHBMBUaGUgYmFsYW5jZXMgYmVmb3JlIHRoZSBtaWdyYXRpb24gd2VyZSByZWNvcmRlZC5wQmFsYW5jZXNCZWZvcmVSZWNvcmRDb25zdW1lZAgBQGNoZWNraW5nX2FjY291bnSVAQEoVDo6QmFsYW5jZQABOHRvdGFsX2lzc3VhbmNllQEBKFQ6OkJhbGFuY2UACATAVGhlIGJhbGFuY2VzIGJlZm9yZSB0aGUgbWlncmF0aW9uIHdlcmUgY29uc3VtZWQuSFJlZmVyZW5kdW1DYW5jZWxlZAQBCGlkOAEMdTMyAAkE6EEgcmVmZXJlbmR1bSB3YXMgY2FuY2VsbGVkIGJlY2F1c2UgaXQgY291bGQgbm90IGJlIG1hcHBlZC4oTWFuYWdlclNldAgBDG9sZEEBAVBPcHRpb248VDo6QWNjb3VudElkPgRsVGhlIG9sZCBtYW5hZ2VyIGFjY291bnQgaWQuAQxuZXdBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4EbFRoZSBuZXcgbWFuYWdlciBhY2NvdW50IGlkLgoEfFRoZSBtYW5hZ2VyIGFjY291bnQgaWQgd2FzIHNldC6MQWNjb3VudFRyYW5zbGF0ZWRQYXJhY2hhaW5Tb3ZlcmVpZ24IARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQACwCoQWNjb3VudFRyYW5zbGF0ZWRQYXJhY2hhaW5Tb3ZlcmVpZ25EZXJpdmVkDAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAFAZGVyaXZhdGlvbl9pbmRlePkDAQx1MTYADAAcWGNtU2VudBABGG9yaWdpbjkCASBMb2NhdGlvbgABLGRlc3RpbmF0aW9uOQIBIExvY2F0aW9uAAEcbWVzc2FnZTEDARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gADQRgQW4gWENNIG1lc3NhZ2Ugd2FzIHNlbnQugEZhaWxlZFRvVW5yZXNlcnZlTXVsdGlzaWdEZXBvc2l0DAE8ZXhwZWN0ZWRfYW1vdW50lQEBqHBhbGxldF9yY19taWdyYXRvcjo6bXVsdGlzaWc6OkJhbGFuY2VPZjxUPgQZAVRoZSBleHBlY3RlZCBhbW91bnQgb2YgdGhlIGRlcG9zaXQgdGhhdCB3YXMgZXhwZWN0ZWQgdG8gYmUgdW5yZXNlcnZlZC4BOG1pc3NpbmdfYW1vdW50lQEBqHBhbGxldF9yY19taWdyYXRvcjo6bXVsdGlzaWc6OkJhbGFuY2VPZjxUPgSIVGhlIG1pc3NpbmcgYW1vdW50IG9mIHRoZSBkZXBvc2l0LgEcYWNjb3VudAQBMFQ6OkFjY291bnRJZATEVGhlIGFjY291bnQgdGhhdCB0aGUgZGVwb3NpdCB3YXMgdW5yZXNlcnZlZCBmcm9tLg4EnEZhaWxlZCB0byB1bnJlc2VydmUgYSBtdWx0aXNpZyBkZXBvc2l0LoBGYWlsZWRUb1VucmVzZXJ2ZVByZWltYWdlRGVwb3NpdAwBPGV4cGVjdGVkX2Ftb3VudJUBAXRwYWxsZXRfcHJlaW1hZ2U6OkJhbGFuY2VPZjxUPgQZAVRoZSBleHBlY3RlZCBhbW91bnQgb2YgdGhlIGRlcG9zaXQgdGhhdCB3YXMgZXhwZWN0ZWQgdG8gYmUgdW5yZXNlcnZlZC4BOG1pc3NpbmdfYW1vdW50lQEBdHBhbGxldF9wcmVpbWFnZTo6QmFsYW5jZU9mPFQ+BIhUaGUgbWlzc2luZyBhbW91bnQgb2YgdGhlIGRlcG9zaXQuARxhY2NvdW50BAEwVDo6QWNjb3VudElkBMRUaGUgYWNjb3VudCB0aGF0IHRoZSBkZXBvc2l0IHdhcyB1bnJlc2VydmVkIGZyb20uDwTURmFpbGVkIHRvIHVucmVzZXJ2ZSBhIGxlZ2FjeSBzdGF0dXMgcHJlaW1hZ2UgZGVwb3NpdC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTNDAhIcGFsbGV0X2FoX21pZ3JhdG9yPFBhbGxldEV2ZW50TmFtZQABbChBc3NldFJhdGVzAAAAIEJhZ3NMaXN0AAEAIEJhbGFuY2VzAAIAIEJvdW50aWVzAAMANENoaWxkQm91bnRpZXMABAAYQ2xhaW1zAAUAQENvbnZpY3Rpb25Wb3RpbmcABgAkQ3Jvd2Rsb2FuAAcAQERlbGVnYXRlZFN0YWtpbmcACAAcSW5kaWNlcwAJACBNdWx0aXNpZwAKACBOb21Qb29scwALADRQcmVpbWFnZUNodW5rAAwAUFByZWltYWdlTGVnYWN5U3RhdHVzAA0AVFByZWltYWdlUmVxdWVzdFN0YXR1cwAOAEhQcm94eUFubm91bmNlbWVudHMADwAwUHJveHlQcm94aWVzABAAIFJlY292ZXJ5ABEARFJlZmVyZW5kYU1ldGFkYXRhABIAUFJlZmVyZW5kYVJlZmVyZW5kdW1zABMAPFJlZmVyZW5kYVZhbHVlcwAUACRTY2hlZHVsZXIAFQA8U2NoZWR1bGVyQWdlbmRhABYAHFN0YWtpbmcAFwAgVHJlYXN1cnkAGAAcVmVzdGluZwAZABxTb2NpZXR5ABoAANEMCDBmcmFtZV9zeXN0ZW0UUGhhc2UAAQw4QXBwbHlFeHRyaW5zaWMEADgBDHUzMgAAADBGaW5hbGl6YXRpb24AAQA4SW5pdGlhbGl6YXRpb24AAgAA1QwIMGZyYW1lX3N5c3RlbVhMYXN0UnVudGltZVVwZ3JhZGVJbmZvAAAIATBzcGVjX3ZlcnNpb25kAUxjb2RlYzo6Q29tcGFjdDx1MzI+AAEkc3BlY19uYW1l2QwBRENvdzwnc3RhdGljLCBzdHI+AADZDAQMQ293BARUAd0MAAQA3QwAAADdDAAABQIA4QwIMGZyYW1lX3N5c3RlbWBDb2RlVXBncmFkZUF1dGhvcml6YXRpb24EBFQAAAgBJGNvZGVfaGFzaEABHFQ6Okhhc2gAATRjaGVja192ZXJzaW9umQEBEGJvb2wAAOUMDDBmcmFtZV9zeXN0ZW0YbGltaXRzMEJsb2NrV2VpZ2h0cwAADAEoYmFzZV9ibG9ja3kBARhXZWlnaHQAASRtYXhfYmxvY2t5AQEYV2VpZ2h0AAEkcGVyX2NsYXNz6QwBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAA6QwMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAHtDAAMARhub3JtYWztDAEEVAABLG9wZXJhdGlvbmFs7QwBBFQAASRtYW5kYXRvcnntDAEEVAAA7QwMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpY3kBARhXZWlnaHQAATRtYXhfZXh0cmluc2ljdQEBOE9wdGlvbjxXZWlnaHQ+AAEkbWF4X3RvdGFsdQEBOE9wdGlvbjxXZWlnaHQ+AAEgcmVzZXJ2ZWR1AQE4T3B0aW9uPFdlaWdodD4AAPEMDDBmcmFtZV9zeXN0ZW0YbGltaXRzLEJsb2NrTGVuZ3RoAAAEAQxtYXj1DAFUUGVyRGlzcGF0Y2hDbGFzczx1MzI+AAD1DAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATgADAEYbm9ybWFsOAEEVAABLG9wZXJhdGlvbmFsOAEEVAABJG1hbmRhdG9yeTgBBFQAAPkMCChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZCgBDHU2NAABFHdyaXRlKAEMdTY0AAD9DAgoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1l2QwBRENvdzwnc3RhdGljLCBzdHI+AAEkaW1wbF9uYW1l2QwBRENvdzwnc3RhdGljLCBzdHI+AAFEYXV0aG9yaW5nX3ZlcnNpb244AQx1MzIAATBzcGVjX3ZlcnNpb244AQx1MzIAATBpbXBsX3ZlcnNpb244AQx1MzIAARBhcGlzAQ0BHEFwaXNWZWMAAUx0cmFuc2FjdGlvbl92ZXJzaW9uOAEMdTMyAAE4c3lzdGVtX3ZlcnNpb24MAQh1OAAAAQ0EDENvdwQEVAEFDQAEAAUNAAAABQ0AAAIJDQAJDQAABAiVAjgADQ0MMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASw8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC4sSW52YWxpZFRhc2sABwSQVGhlIHNwZWNpZmllZCBbYFRhc2tgXSBpcyBub3QgdmFsaWQuKEZhaWxlZFRhc2sACAS8VGhlIHNwZWNpZmllZCBbYFRhc2tgXSBmYWlsZWQgZHVyaW5nIGV4ZWN1dGlvbi5ETm90aGluZ0F1dGhvcml6ZWQACQRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACgSUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0EQ0QKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jaxRCbG9jawgYSGVhZGVyAWAkRXh0cmluc2ljARUNAAgBGGhlYWRlcmABGEhlYWRlcgABKGV4dHJpbnNpY3MhDQE4VmVjPEV4dHJpbnNpYz4AABUNEChzcF9ydW50aW1lHGdlbmVyaWNMdW5jaGVja2VkX2V4dHJpbnNpY0hVbmNoZWNrZWRFeHRyaW5zaWMQHEFkZHJlc3MBABBDYWxsASAkU2lnbmF0dXJlAbkEFEV4dHJhARkNAAQAGAAAABkNCHRjdW11bHVzX3BhbGxldF93ZWlnaHRfcmVjbGFpbVBTdG9yYWdlV2VpZ2h0UmVjbGFpbQgEVAAEUwEdDQAEAB0NAQRTAAAdDQAABCzVCtkK3QrhCuUK6QrxCvUK+Qr9CgULACENAAACFQ0AJQ0AAAIpDQApDQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQgQW5jZXN0b3IEBEgBQAAMATh1c2VkX2JhbmR3aWR0aC0NATRVc2VkQmFuZHdpZHRoAAE4cGFyYV9oZWFkX2hhc2htBwEkT3B0aW9uPEg+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsQQ0BjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AAAtDQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ0VXNlZEJhbmR3aWR0aAAADAE0dW1wX21zZ19jb3VudDgBDHUzMgABPHVtcF90b3RhbF9ieXRlczgBDHUzMgABNGhybXBfb3V0Z29pbmcxDQGMQlRyZWVNYXA8UGFyYUlkLCBIcm1wQ2hhbm5lbFVwZGF0ZT4AADENBCBCVHJlZU1hcAgESwGgBFYBNQ0ABAA5DQAAADUNDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudERIcm1wQ2hhbm5lbFVwZGF0ZQAACAEkbXNnX2NvdW50OAEMdTMyAAEsdG90YWxfYnl0ZXM4AQx1MzIAADkNAAACPQ0APQ0AAAQIoDUNAEENBBhPcHRpb24EBFQBRQ0BCBBOb25lAAAAEFNvbWUEAEUNAAABAABFDQxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OThVcGdyYWRlR29BaGVhZAABCBRBYm9ydAAAABxHb0FoZWFkAAEAAEkNDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDhTZWdtZW50VHJhY2tlcgQESAFAAAwBOHVzZWRfYmFuZHdpZHRoLQ0BNFVzZWRCYW5kd2lkdGgAAThocm1wX3dhdGVybWFya9gBgE9wdGlvbjxyZWxheV9jaGFpbjo6QmxvY2tOdW1iZXI+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsQQ0BjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AABNDQQYT3B0aW9uBARUAVENAQgQTm9uZQAAABBTb21lBABRDQAAAQAAUQ0MTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlIVXBncmFkZVJlc3RyaWN0aW9uAAEEHFByZXNlbnQAAAAAVQ0MfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3RYTWVzc2FnaW5nU3RhdGVTbmFwc2hvdAAAEAEwZG1xX21xY19oZWFkQAFEcmVsYXlfY2hhaW46Okhhc2gAAZxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHlZDQGMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAUBpbmdyZXNzX2NoYW5uZWxzXQ0BiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AATxlZ3Jlc3NfY2hhbm5lbHNdDQGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgAAWQ0MfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3SMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAAgBPHJlbWFpbmluZ19jb3VudDgBDHUzMgABOHJlbWFpbmluZ19zaXplOAEMdTMyAABdDQAAAmENAGENAAAECKBlDQBlDQxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUxBYnJpZGdlZEhybXBDaGFubmVsAAAYATBtYXhfY2FwYWNpdHk4AQx1MzIAAThtYXhfdG90YWxfc2l6ZTgBDHUzMgABQG1heF9tZXNzYWdlX3NpemU4AQx1MzIAASRtc2dfY291bnQ4AQx1MzIAASh0b3RhbF9zaXplOAEMdTMyAAEgbXFjX2hlYWRtBwEwT3B0aW9uPEhhc2g+AABpDQxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OWRBYnJpZGdlZEhvc3RDb25maWd1cmF0aW9uAAAoATRtYXhfY29kZV9zaXplOAEMdTMyAAFIbWF4X2hlYWRfZGF0YV9zaXplOAEMdTMyAAFYbWF4X3Vwd2FyZF9xdWV1ZV9jb3VudDgBDHUzMgABVG1heF91cHdhcmRfcXVldWVfc2l6ZTgBDHUzMgABXG1heF91cHdhcmRfbWVzc2FnZV9zaXplOAEMdTMyAAGQbWF4X3Vwd2FyZF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAGIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZTgBDHUzMgABbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bjgBLEJsb2NrTnVtYmVyAAFgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5OAEsQmxvY2tOdW1iZXIAAVBhc3luY19iYWNraW5nX3BhcmFtc20NAUhBc3luY0JhY2tpbmdQYXJhbXMAAG0NEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NGFzeW5jX2JhY2tpbmdIQXN5bmNCYWNraW5nUGFyYW1zAAAIAUxtYXhfY2FuZGlkYXRlX2RlcHRoOAEMdTMyAAFQYWxsb3dlZF9hbmNlc3RyeV9sZW44AQx1MzIAAHENCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50RE1lc3NhZ2VRdWV1ZUNoYWluAAAEAEABJFJlbGF5SGFzaAAAdQ0EIEJUcmVlTWFwCARLAaAEVgFxDQAEAHkNAAAAeQ0AAAJ9DQB9DQAABAigcQ0AgQ0MfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50QEluYm91bmRNZXNzYWdlSWQAAAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABLHJldmVyc2VfaWR4OAEMdTMyAACFDQAAAokNAIkNCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNMT3V0Ym91bmRIcm1wTWVzc2FnZQQISWQBoAAIASRyZWNpcGllbnSgAQhJZAABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACNDQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAARhMT3ZlcmxhcHBpbmdVcGdyYWRlcwAABBkBQXR0ZW1wdCB0byB1cGdyYWRlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2hpbGUgZXhpc3RpbmcgdXBncmFkZSBwZW5kaW5nLlBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBE0BUG9sa2Fkb3QgY3VycmVudGx5IHByb2hpYml0cyB0aGlzIHBhcmFjaGFpbiBmcm9tIHVwZ3JhZGluZyBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvbi4YVG9vQmlnAAIIRQFUaGUgc3VwcGxpZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgY29tcGlsZWQgaW50byBhIGJsb2IgbGFyZ2VyIHRoYW4gUG9sa2Fkb3QgaXM8d2lsbGluZyB0byBydW4uaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAMEHQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIHZhbGlkYXRpb24gZGF0YSBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLnRIb3N0Q29uZmlndXJhdGlvbk5vdEF2YWlsYWJsZQAEBCkBVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSBob3N0IGNvbmZpZ3VyYXRpb24gZGlkIG5vdCBydW4gdGhpcyBibG9jay4wTm90U2NoZWR1bGVkAAUE2E5vIHZhbGlkYXRpb24gZnVuY3Rpb24gdXBncmFkZSBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6RDQxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0FEVycm9yBARUAAEEHE9uZ29pbmcAAAToVGhlIG9wZXJhdGlvbiBjYW5ub3QgY29tcGxldGUgc2luY2Ugc29tZSBNQk1zIGFyZSBvbmdvaW5nLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6VDQg8cGFsbGV0X3ByZWltYWdlQE9sZFJlcXVlc3RTdGF0dXMIJEFjY291bnRJZAEEHEJhbGFuY2UBlQEBCCxVbnJlcXVlc3RlZAgBHGRlcG9zaXSdBQFQKEFjY291bnRJZCwgQmFsYW5jZSkAAQxsZW44AQx1MzIAAAAkUmVxdWVzdGVkDAEcZGVwb3NpdJkNAXBPcHRpb248KEFjY291bnRJZCwgQmFsYW5jZSk+AAEUY291bnQ4AQx1MzIAAQxsZW7YASxPcHRpb248dTMyPgABAACZDQQYT3B0aW9uBARUAZ0FAQgQTm9uZQAAABBTb21lBACdBQAAAQAAnQ0IPHBhbGxldF9wcmVpbWFnZTRSZXF1ZXN0U3RhdHVzCCRBY2NvdW50SWQBBBhUaWNrZXQBoQ0BCCxVbnJlcXVlc3RlZAgBGHRpY2tldKUNAUwoQWNjb3VudElkLCBUaWNrZXQpAAEMbGVuOAEMdTMyAAAAJFJlcXVlc3RlZAwBMG1heWJlX3RpY2tldKkNAWxPcHRpb248KEFjY291bnRJZCwgVGlja2V0KT4AARRjb3VudDgBDHUzMgABJG1heWJlX2xlbtgBLE9wdGlvbjx1MzI+AAEAAKENFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAJUBAShGOjpCYWxhbmNlAAClDQAABAgEoQ0AqQ0EGE9wdGlvbgQEVAGlDQEIEE5vbmUAAAAQU29tZQQApQ0AAAEAAK0NAAAECEA4ALENDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAtQ0MPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQURXJyb3IEBFQAASAYVG9vQmlnAAAEoFByZWltYWdlIGlzIHRvbyBsYXJnZSB0byBzdG9yZSBvbi1jaGFpbi4wQWxyZWFkeU5vdGVkAAEEpFByZWltYWdlIGhhcyBhbHJlYWR5IGJlZW4gbm90ZWQgb24tY2hhaW4uNE5vdEF1dGhvcml6ZWQAAgTIVGhlIHVzZXIgaXMgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi4gTm90Tm90ZWQAAwT8VGhlIHByZWltYWdlIGNhbm5vdCBiZSByZW1vdmVkIHNpbmNlIGl0IGhhcyBub3QgeWV0IGJlZW4gbm90ZWQuJFJlcXVlc3RlZAAEBAkBQSBwcmVpbWFnZSBtYXkgbm90IGJlIHJlbW92ZWQgd2hlbiB0aGVyZSBhcmUgb3V0c3RhbmRpbmcgcmVxdWVzdHMuME5vdFJlcXVlc3RlZAAFBC0BVGhlIHByZWltYWdlIHJlcXVlc3QgY2Fubm90IGJlIHJlbW92ZWQgc2luY2Ugbm8gb3V0c3RhbmRpbmcgcmVxdWVzdHMgZXhpc3QuHFRvb01hbnkABgRVAU1vcmUgdGhhbiBgTUFYX0hBU0hfVVBHUkFERV9CVUxLX0NPVU5UYCBoYXNoZXMgd2VyZSByZXF1ZXN0ZWQgdG8gYmUgdXBncmFkZWQgYXQgb25jZS4YVG9vRmV3AAcE5FRvbyBmZXcgaGFzaGVzIHdlcmUgcmVxdWVzdGVkIHRvIGJlIHVwZ3JhZGVkIChpLmUuIHplcm8pLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC65DQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAb0NBFMAAAQAxQ0BGFZlYzxUPgAAvQ0EGE9wdGlvbgQEVAHBDQEIEE5vbmUAAAAQU29tZQQAwQ0AAAEAAMENCEBwYWxsZXRfc2NoZWR1bGVyJFNjaGVkdWxlZBQQTmFtZQEIEENhbGwBYQcsQmxvY2tOdW1iZXIBODRQYWxsZXRzT3JpZ2luAf0DJEFjY291bnRJZAEEABQBIG1heWJlX2lk9QQBME9wdGlvbjxOYW1lPgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbGEHARBDYWxsAAE4bWF5YmVfcGVyaW9kaWP4AZRPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlcj4+AAEYb3JpZ2lu/QMBNFBhbGxldHNPcmlnaW4AAMUNAAACvQ0AyQ0MQHBhbGxldF9zY2hlZHVsZXIYcGFsbGV0FEVycm9yBARUAAEUQEZhaWxlZFRvU2NoZWR1bGUAAARkRmFpbGVkIHRvIHNjaGVkdWxlIGEgY2FsbCBOb3RGb3VuZAABBHxDYW5ub3QgZmluZCB0aGUgc2NoZWR1bGVkIGNhbGwuXFRhcmdldEJsb2NrTnVtYmVySW5QYXN0AAIEpEdpdmVuIHRhcmdldCBibG9jayBudW1iZXIgaXMgaW4gdGhlIHBhc3QuSFJlc2NoZWR1bGVOb0NoYW5nZQADBPBSZXNjaGVkdWxlIGZhaWxlZCBiZWNhdXNlIGl0IGRvZXMgbm90IGNoYW5nZSBzY2hlZHVsZWQgdGltZS4UTmFtZWQABATQQXR0ZW1wdCB0byB1c2UgYSBub24tbmFtZWQgZnVuY3Rpb24gb24gYSBuYW1lZCB0YXNrLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7NDQxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAd0HBFMAAAQA5QcBGFZlYzxUPgAA0Q0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHVDQRTAAAEANkNARhWZWM8VD4AANUNDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsUmVzZXJ2ZURhdGEIRFJlc2VydmVJZGVudGlmaWVyAZUCHEJhbGFuY2UBlQEACAEIaWSVAgFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnSVAQEcQmFsYW5jZQAA2Q0AAALVDQDdDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeENBFMAAAQA5Q0BGFZlYzxUPgAA4Q0UNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAGhCxxCYWxhbmNlAZUBAAgBCGlkoQsBCElkAAEYYW1vdW50lQEBHEJhbGFuY2UAAOUNAAAC4Q0A6Q0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHtDQRTAAAEAPUNARhWZWM8VD4AAO0NFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQB8Q0cQmFsYW5jZQGVAQAIAQhpZPENAQhJZAABGGFtb3VudJUBARxCYWxhbmNlAADxDQhgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lTFJ1bnRpbWVGcmVlemVSZWFzb24AAQQ8Tm9taW5hdGlvblBvb2xzBAC9BwGUcGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkZyZWV6ZVJlYXNvbgBQAAD1DQAAAu0NAPkNDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEVycm9yCARUAARJAAEwOFZlc3RpbmdCYWxhbmNlAAAEnFZlc3RpbmcgYmFsYW5jZSB0b28gaGlnaCB0byBzZW5kIHZhbHVlLlRMaXF1aWRpdHlSZXN0cmljdGlvbnMAAQTIQWNjb3VudCBsaXF1aWRpdHkgcmVzdHJpY3Rpb25zIHByZXZlbnQgd2l0aGRyYXdhbC5MSW5zdWZmaWNpZW50QmFsYW5jZQACBHhCYWxhbmNlIHRvbyBsb3cgdG8gc2VuZCB2YWx1ZS5IRXhpc3RlbnRpYWxEZXBvc2l0AAME7FZhbHVlIHRvbyBsb3cgdG8gY3JlYXRlIGFjY291bnQgZHVlIHRvIGV4aXN0ZW50aWFsIGRlcG9zaXQuNEV4cGVuZGFiaWxpdHkABASQVHJhbnNmZXIvcGF5bWVudCB3b3VsZCBraWxsIGFjY291bnQuXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAUEzEEgdmVzdGluZyBzY2hlZHVsZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBhY2NvdW50LixEZWFkQWNjb3VudAAGBIxCZW5lZmljaWFyeSBhY2NvdW50IG11c3QgcHJlLWV4aXN0LjxUb29NYW55UmVzZXJ2ZXMABwS4TnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIGV4Y2VlZCBgTWF4UmVzZXJ2ZXNgLjBUb29NYW55SG9sZHMACAT4TnVtYmVyIG9mIGhvbGRzIGV4Y2VlZCBgVmFyaWFudENvdW50T2Y8VDo6UnVudGltZUhvbGRSZWFzb24+YC44VG9vTWFueUZyZWV6ZXMACQSYTnVtYmVyIG9mIGZyZWV6ZXMgZXhjZWVkIGBNYXhGcmVlemVzYC5MSXNzdWFuY2VEZWFjdGl2YXRlZAAKBAEBVGhlIGlzc3VhbmNlIGNhbm5vdCBiZSBtb2RpZmllZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGRlYWN0aXZhdGVkLiREZWx0YVplcm8ACwRkVGhlIGRlbHRhIGNhbm5vdCBiZSB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC79DQhocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQgUmVsZWFzZXMAAQgkVjFBbmNpZW50AAAACFYyAAEAAAEOEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlGE5vRHJvcAQEVAEFDgAEAAUOAQRUAAAFDhg0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlJGltYmFsYW5jZSRJbWJhbGFuY2UMBEIBlQEYT25Ecm9wADhPcHBvc2l0ZU9uRHJvcAAABAEYYW1vdW50lQEBBEIAAAkOCDhwYWxsZXRfdmVzdGluZyBSZWxlYXNlcwABCAhWMAAAAAhWMQABAAANDgw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEVycm9yBARUAAEUKE5vdFZlc3RpbmcAAASEVGhlIGFjY291bnQgZ2l2ZW4gaXMgbm90IHZlc3RpbmcuVEF0TWF4VmVzdGluZ1NjaGVkdWxlcwABCCUBVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYE1heFZlc3RpbmdTY2hlZHVsZXNgIGNvdW50IG9mIHNjaGVkdWxlcyBhbmQgdGh1c1EBY2Fubm90IGFkZCBhbm90aGVyIG9uZS4gQ29uc2lkZXIgbWVyZ2luZyBleGlzdGluZyBzY2hlZHVsZXMgaW4gb3JkZXIgdG8gYWRkIGFub3RoZXIuJEFtb3VudExvdwACBAUBQW1vdW50IGJlaW5nIHRyYW5zZmVycmVkIGlzIHRvbyBsb3cgdG8gY3JlYXRlIGEgdmVzdGluZyBzY2hlZHVsZS5gU2NoZWR1bGVJbmRleE91dE9mQm91bmRzAAME0EFuIGluZGV4IHdhcyBvdXQgb2YgYm91bmRzIG9mIHRoZSB2ZXN0aW5nIHNjaGVkdWxlcy5USW52YWxpZFNjaGVkdWxlUGFyYW1zAAQEDQFGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHNjaGVkdWxlIGJlY2F1c2Ugc29tZSBwYXJhbWV0ZXIgd2FzIGludmFsaWQuBHRFcnJvciBmb3IgdGhlIHZlc3RpbmcgcGFsbGV0LhEOEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0FEVycm9yBARUAAEYYEludmFsaWRFdGhlcmV1bVNpZ25hdHVyZQAABGxJbnZhbGlkIEV0aGVyZXVtIHNpZ25hdHVyZS5AU2lnbmVySGFzTm9DbGFpbQABBHhFdGhlcmV1bSBhZGRyZXNzIGhhcyBubyBjbGFpbS5AU2VuZGVySGFzTm9DbGFpbQACBLBBY2NvdW50IElEIHNlbmRpbmcgdHJhbnNhY3Rpb24gaGFzIG5vIGNsYWltLjBQb3RVbmRlcmZsb3cAAwhJAVRoZXJlJ3Mgbm90IGVub3VnaCBpbiB0aGUgcG90IHRvIHBheSBvdXQgc29tZSB1bnZlc3RlZCBhbW91bnQuIEdlbmVyYWxseSBpbXBsaWVzIGEwbG9naWMgZXJyb3IuQEludmFsaWRTdGF0ZW1lbnQABASQQSBuZWVkZWQgc3RhdGVtZW50IHdhcyBub3QgaW5jbHVkZWQuTFZlc3RlZEJhbGFuY2VFeGlzdHMABQSkVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYSB2ZXN0ZWQgYmFsYW5jZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuFQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAnQEBGFZlYzxUPgAAGQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEdDgRTAAAEACEOARhWZWM8VD4AAB0ODGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldDRDYW5kaWRhdGVJbmZvCCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBAAgBDHdobwQBJEFjY291bnRJZAABHGRlcG9zaXSVAQEcQmFsYW5jZQAAIQ4AAAIdDgAlDgg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABACVAgEcW3U4OyA4XQAAKQ4MZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuLQ4AAAIxDgAxDgAABAgE1QEANQ4AAAI5DgA5DgAABAg4PQ4APQ4MKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQAMQUBHFBlcmJpbGwAAEEOAAAECEUOGABFDgwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHQBHFt1ODsgNF0AAEkODDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQuTQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHZAQRTAAAEAFEOARhWZWM8VD4AAFEOAAAC2QEAVQ4ISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAWQ4AAAQIVQ44AF0ODExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGgBFMAAAQAYQ4BLEJUcmVlU2V0PFQ+AABhDgQgQlRyZWVTZXQEBFQBoAAEAGUOAAAAZQ4AAAKgAGkODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBbQ4EUwAABAB1DgEYVmVjPFQ+AABtDghkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVhPdXRib3VuZENoYW5uZWxEZXRhaWxzAAAUASRyZWNpcGllbnSgARhQYXJhSWQAARRzdGF0ZXEOATRPdXRib3VuZFN0YXRlAAE0c2lnbmFsc19leGlzdJkBARBib29sAAEsZmlyc3RfaW5kZXj5AwEMdTE2AAEobGFzdF9pbmRlePkDAQx1MTYAAHEOCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlNE91dGJvdW5kU3RhdGUAAQgIT2sAAAAkU3VzcGVuZGVkAAEAAHUOAAACbQ4AeQ4AAAQIoPkDAH0ODExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAgQ4IZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU8UXVldWVDb25maWdEYXRhAAAMAURzdXNwZW5kX3RocmVzaG9sZDgBDHUzMgABOGRyb3BfdGhyZXNob2xkOAEMdTMyAAFAcmVzdW1lX3RocmVzaG9sZDgBDHUzMgAAhQ4MZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEVycm9yBARUAAEUOEJhZFF1ZXVlQ29uZmlnAAAEEQFTZXR0aW5nIHRoZSBxdWV1ZSBjb25maWcgZmFpbGVkIHNpbmNlIG9uZSBvZiBpdHMgdmFsdWVzIHdhcyBpbnZhbGlkLkBBbHJlYWR5U3VzcGVuZGVkAAEEjFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSBzdXNwZW5kZWQuOEFscmVhZHlSZXN1bWVkAAIEhFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSByZXN1bWVkLnRUb29NYW55QWN0aXZlT3V0Ym91bmRDaGFubmVscwADBLBUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIG91dGJvdW5kIGNoYW5uZWxzLhhUb29CaWcABARcVGhlIG1lc3NhZ2UgaXMgdG9vIGJpZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuiQ4MKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgE4AQwcUGVuZGluZxABJHJlc3BvbmRlcuUBAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXKNDgFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmeZEOAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbuUBAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZZkBARBib29sAAEAFFJlYWR5CAEgcmVzcG9uc2WZDgFEVmVyc2lvbmVkUmVzcG9uc2UAAQhhdDgBLEJsb2NrTnVtYmVyAAIAAI0OBBhPcHRpb24EBFQB5QEBCBBOb25lAAAAEFNvbWUEAOUBAAABAACRDgQYT3B0aW9uBARUAZUOAQgQTm9uZQAAABBTb21lBACVDgAAAQAAlQ4AAAQIDAwAmQ4IDHhjbURWZXJzaW9uZWRSZXNwb25zZQABDAhWMwQAnQIBMHYzOjpSZXNwb25zZQADAAhWNAQACQMBMHY0OjpSZXNwb25zZQAEAAhWNQQAVQMBMHY1OjpSZXNwb25zZQAFAACdDgAABAg45QEAoQ4AAAQMKHkBOAClDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAakOBFMAAAQArQ4BGFZlYzxUPgAAqQ4AAAQI5QE4AK0OAAACqQ4AsQ4MKHBhbGxldF94Y20YcGFsbGV0VFZlcnNpb25NaWdyYXRpb25TdGFnZQABEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgAAAFxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABAFBOb3RpZnlDdXJyZW50VGFyZ2V0cwQA6AE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAALUOAAAEDDgE3QMAuQ4MKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudJUBARB1MTI4AAEUb3duZXLlAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXLlAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnO9DgHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAAvQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHBDgRTAAAEAMUOARhWZWM8VD4AAMEOAAAECBCVAQDFDgAAAsEOAMkODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzQ4EUwAABADRDgEYVmVjPFQ+AADNDgAABAiVAeUBANEOAAACzQ4A1Q4IKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0AdkODE1BWAHdDgAIASBhbGlhc2Vyc+EOAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXTZDgEYVGlja2V0AADZDhQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABACVAQEoRjo6QmFsYW5jZQAA3Q4MKHBhbGxldF94Y20YcGFsbGV0UE1heEF1dGhvcml6ZWRBbGlhc2VzAAAAAOEODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB5Q4EUwAABADpDgEYVmVjPFQ+AADlDgxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXM0T3JpZ2luQWxpYXNlcgAACAEgbG9jYXRpb27lAQFEVmVyc2lvbmVkTG9jYXRpb24AARhleHBpcnllAQEsT3B0aW9uPHU2ND4AAOkOAAAC5Q4A7Q4MKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFwLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLmBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAGQS4VG9vIG1hbnkgbG9jYXRpb25zIGF1dGhvcml6ZWQgdG8gYWxpYXMgb3JpZ2luLjRFeHBpcmVzSW5QYXN0ABoEjEV4cGlyeSBibG9jayBudW1iZXIgaXMgaW4gdGhlIHBhc3QuNEFsaWFzTm90Rm91bmQAGwTQVGhlIGFsaWFzIHRvIHJlbW92ZSBhdXRob3JpemF0aW9uIGZvciB3YXMgbm90IGZvdW5kLoRMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3IIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvcvEOAThFeGVjdXRpb25FcnJvcgAcCDUBTG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlIHdpdGggdGhlIGFjdHVhbCBYQ00gZXJyb3IgYW5kIHRoZSBpbmRleCBvZiB0aGWIaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZWQgdGhlIGVycm9yLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7xDgwocGFsbGV0X3hjbRhlcnJvcnM4RXhlY3V0aW9uRXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAAD1DghgYnBfeGNtX2JyaWRnZV9odWJfcm91dGVyLEJyaWRnZVN0YXRlAAAIAUxkZWxpdmVyeV9mZWVfZmFjdG9ygQcBJEZpeGVkVTEyOAABMGlzX2Nvbmdlc3RlZJkBARBib29sAAD5DghQcGFsbGV0X21lc3NhZ2VfcXVldWUkQm9va1N0YXRlBDRNZXNzYWdlT3JpZ2luAe0DABgBFGJlZ2luOAEkUGFnZUluZGV4AAEMZW5kOAEkUGFnZUluZGV4AAEUY291bnQ4ASRQYWdlSW5kZXgAAUByZWFkeV9uZWlnaGJvdXJz/Q4BhE9wdGlvbjxOZWlnaGJvdXJzPE1lc3NhZ2VPcmlnaW4+PgABNG1lc3NhZ2VfY291bnQoAQx1NjQAARBzaXplKAEMdTY0AAD9DgQYT3B0aW9uBARUAQEPAQgQTm9uZQAAABBTb21lBAABDwAAAQAAAQ8IUHBhbGxldF9tZXNzYWdlX3F1ZXVlKE5laWdoYm91cnMENE1lc3NhZ2VPcmlnaW4B7QMACAEQcHJldu0DATRNZXNzYWdlT3JpZ2luAAEQbmV4dO0DATRNZXNzYWdlT3JpZ2luAAAFDwAABAjtAzgACQ8IUHBhbGxldF9tZXNzYWdlX3F1ZXVlEFBhZ2UIEFNpemUBOCBIZWFwU2l6ZQAAGAEkcmVtYWluaW5nOAEQU2l6ZQABOHJlbWFpbmluZ19zaXplOAEQU2l6ZQABLGZpcnN0X2luZGV4OAEQU2l6ZQABFGZpcnN0OAEQU2l6ZQABEGxhc3Q4ARBTaXplAAEQaGVhcA0PAZxCb3VuZGVkVmVjPHU4LCBJbnRvVTMyPEhlYXBTaXplLCBTaXplPj4AAA0PDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAEQ8MUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABJCxOb3RSZWFwYWJsZQAACEkBUGFnZSBpcyBub3QgcmVhcGFibGUgYmVjYXVzZSBpdCBoYXMgaXRlbXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBhbmQgaXMgbm90IG9sZBxlbm91Z2guGE5vUGFnZQABBIRQYWdlIHRvIGJlIHJlYXBlZCBkb2VzIG5vdCBleGlzdC4kTm9NZXNzYWdlAAIEqFRoZSByZWZlcmVuY2VkIG1lc3NhZ2UgY291bGQgbm90IGJlIGZvdW5kLkBBbHJlYWR5UHJvY2Vzc2VkAAMEAQFUaGUgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQgYWdhaW4uGFF1ZXVlZAAEBKxUaGUgbWVzc2FnZSBpcyBxdWV1ZWQgZm9yIGZ1dHVyZSBleGVjdXRpb24uSEluc3VmZmljaWVudFdlaWdodAAFBBkBVGhlcmUgaXMgdGVtcG9yYXJpbHkgbm90IGVub3VnaCB3ZWlnaHQgdG8gY29udGludWUgc2VydmljaW5nIG1lc3NhZ2VzLmBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUABhCoVGhpcyBtZXNzYWdlIGlzIHRlbXBvcmFyaWx5IHVucHJvY2Vzc2FibGUuAFkBU3VjaCBlcnJvcnMgYXJlIGV4cGVjdGVkLCBidXQgbm90IGd1YXJhbnRlZWQsIHRvIHJlc29sdmUgdGhlbXNlbHZlcyBldmVudHVhbGx5IHRocm91Z2gkcmV0cnlpbmcuLFF1ZXVlUGF1c2VkAAcM7FRoZSBxdWV1ZSBpcyBwYXVzZWQgYW5kIG5vIG1lc3NhZ2UgY2FuIGJlIGV4ZWN1dGVkIGZyb20gaXQuAB0BVGhpcyBjYW4gY2hhbmdlIGF0IGFueSB0aW1lIGFuZCBtYXkgcmVzb2x2ZSBpbiB0aGUgZnV0dXJlIGJ5IHJlLXRyeWluZy5MUmVjdXJzaXZlRGlzYWxsb3dlZAAIBDEBQW5vdGhlciBjYWxsIGlzIGluIHByb2dyZXNzIGFuZCBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHRoaXMgY2FsbCBjYW4gaGFwcGVuLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4VDww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0FEVycm9yBARUAAEEMFRvb01hbnlDYWxscwAABFxUb28gbWFueSBjYWxscyBiYXRjaGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4ZDwAABAgECAAdDwg8cGFsbGV0X211bHRpc2lnIE11bHRpc2lnECxCbG9ja051bWJlcgE4HEJhbGFuY2UBlQEkQWNjb3VudElkAQQwTWF4QXBwcm92YWxzAAAQARB3aGVuIQQBWFRpbWVwb2ludDxCbG9ja051bWJlcj4AARxkZXBvc2l0lQEBHEJhbGFuY2UAASRkZXBvc2l0b3IEASRBY2NvdW50SWQAASRhcHByb3ZhbHMhDwGMQm91bmRlZFZlYzxBY2NvdW50SWQsIE1heEFwcHJvdmFscz4AACEPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAJ0BARhWZWM8VD4AACUPDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEVycm9yBARUAAE4QE1pbmltdW1UaHJlc2hvbGQAAAR8VGhyZXNob2xkIG11c3QgYmUgMiBvciBncmVhdGVyLjxBbHJlYWR5QXBwcm92ZWQAAQSsQ2FsbCBpcyBhbHJlYWR5IGFwcHJvdmVkIGJ5IHRoaXMgc2lnbmF0b3J5LkROb0FwcHJvdmFsc05lZWRlZAACBJxDYWxsIGRvZXNuJ3QgbmVlZCBhbnkgKG1vcmUpIGFwcHJvdmFscy5EVG9vRmV3U2lnbmF0b3JpZXMAAwSoVGhlcmUgYXJlIHRvbyBmZXcgc2lnbmF0b3JpZXMgaW4gdGhlIGxpc3QuSFRvb01hbnlTaWduYXRvcmllcwAEBKxUaGVyZSBhcmUgdG9vIG1hbnkgc2lnbmF0b3JpZXMgaW4gdGhlIGxpc3QuVFNpZ25hdG9yaWVzT3V0T2ZPcmRlcgAFBA0BVGhlIHNpZ25hdG9yaWVzIHdlcmUgcHJvdmlkZWQgb3V0IG9mIG9yZGVyOyB0aGV5IHNob3VsZCBiZSBvcmRlcmVkLkxTZW5kZXJJblNpZ25hdG9yaWVzAAYEDQFUaGUgc2VuZGVyIHdhcyBjb250YWluZWQgaW4gdGhlIG90aGVyIHNpZ25hdG9yaWVzOyBpdCBzaG91bGRuJ3QgYmUuIE5vdEZvdW5kAAcEoE11bHRpc2lnIG9wZXJhdGlvbiBub3QgZm91bmQgaW4gc3RvcmFnZS4gTm90T3duZXIACAhRAU9ubHkgdGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNyZWF0ZWQgdGhlIG11bHRpc2lnIGlzIGFibGUgdG8gY2FuY2VsIGl0IG9yIHVwZGF0ZTRpdHMgZGVwb3NpdHMuLE5vVGltZXBvaW50AAkEHQFObyB0aW1lcG9pbnQgd2FzIGdpdmVuLCB5ZXQgdGhlIG11bHRpc2lnIG9wZXJhdGlvbiBpcyBhbHJlYWR5IHVuZGVyd2F5LjhXcm9uZ1RpbWVwb2ludAAKBC0BQSBkaWZmZXJlbnQgdGltZXBvaW50IHdhcyBnaXZlbiB0byB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIHRoYXQgaXMgdW5kZXJ3YXkuTFVuZXhwZWN0ZWRUaW1lcG9pbnQACwT0QSB0aW1lcG9pbnQgd2FzIGdpdmVuLCB5ZXQgbm8gbXVsdGlzaWcgb3BlcmF0aW9uIGlzIHVuZGVyd2F5LjxNYXhXZWlnaHRUb29Mb3cADATQVGhlIG1heGltdW0gd2VpZ2h0IGluZm9ybWF0aW9uIHByb3ZpZGVkIHdhcyB0b28gbG93LjRBbHJlYWR5U3RvcmVkAA0EoFRoZSBkYXRhIHRvIGJlIHN0b3JlZCBpcyBhbHJlYWR5IHN0b3JlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuKQ8AAAQILQ+VAQAtDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATEPBFMAAAQANQ8BGFZlYzxUPgAAMQ8IMHBhbGxldF9wcm94eTxQcm94eURlZmluaXRpb24MJEFjY291bnRJZAEEJFByb3h5VHlwZQEtBCxCbG9ja051bWJlcgE4AAwBIGRlbGVnYXRlBAEkQWNjb3VudElkAAEocHJveHlfdHlwZS0EASRQcm94eVR5cGUAARRkZWxheTgBLEJsb2NrTnVtYmVyAAA1DwAAAjEPADkPAAAECD0PlQEAPQ8MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFBDwRTAAAEAEUPARhWZWM8VD4AAEEPCDBwYWxsZXRfcHJveHkwQW5ub3VuY2VtZW50DCRBY2NvdW50SWQBBBBIYXNoAUAsQmxvY2tOdW1iZXIBOAAMARByZWFsBAEkQWNjb3VudElkAAEkY2FsbF9oYXNoQAEQSGFzaAABGGhlaWdodDgBLEJsb2NrTnVtYmVyAABFDwAAAkEPAEkPDDBwYWxsZXRfcHJveHkYcGFsbGV0FEVycm9yBARUAAEgHFRvb01hbnkAAAQhAVRoZXJlIGFyZSB0b28gbWFueSBwcm94aWVzIHJlZ2lzdGVyZWQgb3IgdG9vIG1hbnkgYW5ub3VuY2VtZW50cyBwZW5kaW5nLiBOb3RGb3VuZAABBHRQcm94eSByZWdpc3RyYXRpb24gbm90IGZvdW5kLiBOb3RQcm94eQACBMxTZW5kZXIgaXMgbm90IGEgcHJveHkgb2YgdGhlIGFjY291bnQgdG8gYmUgcHJveGllZC4sVW5wcm94eWFibGUAAwQhAUEgY2FsbCB3aGljaCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgcHJveHkgdHlwZSdzIGZpbHRlciB3YXMgYXR0ZW1wdGVkLiREdXBsaWNhdGUABARsQWNjb3VudCBpcyBhbHJlYWR5IGEgcHJveHkuME5vUGVybWlzc2lvbgAFBBUBQ2FsbCBtYXkgbm90IGJlIG1hZGUgYnkgcHJveHkgYmVjYXVzZSBpdCBtYXkgZXNjYWxhdGUgaXRzIHByaXZpbGVnZXMuLFVuYW5ub3VuY2VkAAYE0EFubm91bmNlbWVudCwgaWYgbWFkZSBhdCBhbGwsIHdhcyBtYWRlIHRvbyByZWNlbnRseS4sTm9TZWxmUHJveHkABwRkQ2Fubm90IGFkZCBzZWxmIGFzIHByb3h5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5NDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZUJBFMAAAQAkQkBGFZlYzxUPgAAUQ8MTHBhbGxldF9yZW1vdGVfcHJveHkYcGFsbGV0FEVycm9yCARUAARJAAEclENvdWxkTm90Q29udmVydExvY2FsVG9SZW1vdGVBY2NvdW50SWQAAAQJAVRoZSBsb2NhbCBhY2NvdW50IGlkIGNvdWxkIG5vdCBjb252ZXJ0ZWQgdG8gdGhlIHJlbW90ZSBhY2NvdW50IGlkLlxVbmtub3duUHJvb2ZBbmNob3JCbG9jawABBMBUaGUgYW5jaG9yIGJsb2NrIG9mIHRoZSByZW1vdGUgcHJvb2YgaXMgdW5rbm93bi4wSW52YWxpZFByb29mAAIE1FRoZSBwcm94eSBkZWZpbml0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUgcHJvb2YudFByb3h5RGVmaW5pdGlvbkRlY29kaW5nRmFpbGVkAAME8EZhaWxlZCB0byBkZWNvZGUgdGhlIHJlbW90ZSBwcm94eSBkZWZpbml0aW9uIGZyb20gdGhlIHByb29mLixVbmFubm91bmNlZAAEBNBBbm5vdW5jZW1lbnQsIGlmIG1hZGUgYXQgYWxsLCB3YXMgbWFkZSB0b28gcmVjZW50bHkuhERpZE5vdEZpbmRNYXRjaGluZ1Byb3h5RGVmaW5pdGlvbgAFBOhDb3VsZCBub3QgZmluZCBhbnkgbWF0Y2hpbmcgcHJveHkgZGVmaW5pdGlvbiBpbiB0aGUgcHJvb2YuXFByb3h5UHJvb2ZOb3RSZWdpc3RlcmVkAAYEbFByb3h5IHByb29mIG5vdCByZWdpc3RlcmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5VDwAABAwElQGZAQBZDww4cGFsbGV0X2luZGljZXMYcGFsbGV0FEVycm9yBARUAAEULE5vdEFzc2lnbmVkAAAEjFRoZSBpbmRleCB3YXMgbm90IGFscmVhZHkgYXNzaWduZWQuIE5vdE93bmVyAAEEpFRoZSBpbmRleCBpcyBhc3NpZ25lZCB0byBhbm90aGVyIGFjY291bnQuFEluVXNlAAIEcFRoZSBpbmRleCB3YXMgbm90IGF2YWlsYWJsZS4sTm90VHJhbnNmZXIAAwTIVGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYWNjb3VudHMgYXJlIGlkZW50aWNhbC4kUGVybWFuZW50AAQE0FRoZSBpbmRleCBpcyBwZXJtYW5lbnQgYW5kIG1heSBub3QgYmUgZnJlZWQvY2hhbmdlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuXQ8MNHBhbGxldF9hc3NldHMUdHlwZXMwQXNzZXREZXRhaWxzDBxCYWxhbmNlAZUBJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlAZUBADABFG93bmVyBAEkQWNjb3VudElkAAEYaXNzdWVyBAEkQWNjb3VudElkAAEUYWRtaW4EASRBY2NvdW50SWQAARxmcmVlemVyBAEkQWNjb3VudElkAAEYc3VwcGx5lQEBHEJhbGFuY2UAARxkZXBvc2l0lQEBOERlcG9zaXRCYWxhbmNlAAEsbWluX2JhbGFuY2WVAQEcQmFsYW5jZQABNGlzX3N1ZmZpY2llbnSZAQEQYm9vbAABIGFjY291bnRzOAEMdTMyAAEsc3VmZmljaWVudHM4AQx1MzIAASRhcHByb3ZhbHM4AQx1MzIAARhzdGF0dXNhDwEsQXNzZXRTdGF0dXMAAGEPDDRwYWxsZXRfYXNzZXRzFHR5cGVzLEFzc2V0U3RhdHVzAAEMEExpdmUAAAAYRnJvemVuAAEAKERlc3Ryb3lpbmcAAgAAZQ8AAAQIOAQAaQ8MNHBhbGxldF9hc3NldHMUdHlwZXMwQXNzZXRBY2NvdW50EBxCYWxhbmNlAZUBOERlcG9zaXRCYWxhbmNlAZUBFEV4dHJhARAkQWNjb3VudElkAQQAEAEcYmFsYW5jZZUBARxCYWxhbmNlAAEYc3RhdHVzbQ8BNEFjY291bnRTdGF0dXMAARhyZWFzb25xDwGoRXhpc3RlbmNlUmVhc29uPERlcG9zaXRCYWxhbmNlLCBBY2NvdW50SWQ+AAEUZXh0cmEQARRFeHRyYQAAbQ8MNHBhbGxldF9hc3NldHMUdHlwZXM0QWNjb3VudFN0YXR1cwABDBhMaXF1aWQAAAAYRnJvemVuAAEAHEJsb2NrZWQAAgAAcQ8MNHBhbGxldF9hc3NldHMUdHlwZXM8RXhpc3RlbmNlUmVhc29uCBxCYWxhbmNlAZUBJEFjY291bnRJZAEEARQgQ29uc3VtZXIAAAAoU3VmZmljaWVudAABACxEZXBvc2l0SGVsZAQAlQEBHEJhbGFuY2UAAgA8RGVwb3NpdFJlZnVuZGVkAAMALERlcG9zaXRGcm9tCAAEASRBY2NvdW50SWQAAJUBARxCYWxhbmNlAAQAAHUPAAAEDDgEBAB5Dww0cGFsbGV0X2Fzc2V0cxR0eXBlcyBBcHByb3ZhbAgcQmFsYW5jZQGVAThEZXBvc2l0QmFsYW5jZQGVAQAIARhhbW91bnSVAQEcQmFsYW5jZQABHGRlcG9zaXSVAQE4RGVwb3NpdEJhbGFuY2UAAH0PDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFzc2V0TWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlAZUBNEJvdW5kZWRTdHJpbmcBgQ8AFAEcZGVwb3NpdJUBAThEZXBvc2l0QmFsYW5jZQABEG5hbWWBDwE0Qm91bmRlZFN0cmluZwABGHN5bWJvbIEPATRCb3VuZGVkU3RyaW5nAAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbpkBARBib29sAACBDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAIUPDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABYChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEyFRoZSBhc3NldCBJRCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBbYE5leHRBc3NldElkYF0uPENvbnRhaW5zRnJlZXplcwAVBE0BVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gZnJlZXplcy40Q29udGFpbnNIb2xkcwAWBEUBVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gaG9sZHMuPFRvb01hbnlSZXNlcnZlcwAXBIBUcmllZCBzZXR0aW5nIHRvbyBtYW55IHJlc2VydmVzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6JDwQYT3B0aW9uBARUAV0PAQgQTm9uZQAAABBTb21lBABdDwAAAQAAjQ8EGE9wdGlvbgQEVAF9DwEIEE5vbmUAAAAQU29tZQQAfQ8AAAEAAJEPDDhwYWxsZXRfdW5pcXVlcxR0eXBlc0RDb2xsZWN0aW9uRGV0YWlscwgkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBlQEAKAEUb3duZXIEASRBY2NvdW50SWQAARhpc3N1ZXIEASRBY2NvdW50SWQAARRhZG1pbgQBJEFjY291bnRJZAABHGZyZWV6ZXIEASRBY2NvdW50SWQAATR0b3RhbF9kZXBvc2l0lQEBOERlcG9zaXRCYWxhbmNlAAEwZnJlZV9ob2xkaW5nmQEBEGJvb2wAARRpdGVtczgBDHUzMgABOGl0ZW1fbWV0YWRhdGFzOAEMdTMyAAEoYXR0cmlidXRlczgBDHUzMgABJGlzX2Zyb3plbpkBARBib29sAACVDwAABAwEODgAmQ8MOHBhbGxldF91bmlxdWVzFHR5cGVzLEl0ZW1EZXRhaWxzCCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQGVAQAQARRvd25lcgQBJEFjY291bnRJZAABIGFwcHJvdmVkQQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEkaXNfZnJvemVumQEBEGJvb2wAARxkZXBvc2l0lQEBOERlcG9zaXRCYWxhbmNlAACdDww4cGFsbGV0X3VuaXF1ZXMUdHlwZXNIQ29sbGVjdGlvbk1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQGVASxTdHJpbmdMaW1pdAAADAEcZGVwb3NpdJUBAThEZXBvc2l0QmFsYW5jZQABEGRhdGFdBAFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AAEkaXNfZnJvemVumQEBEGJvb2wAAKEPDDhwYWxsZXRfdW5pcXVlcxR0eXBlczBJdGVtTWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlAZUBLFN0cmluZ0xpbWl0AAAMARxkZXBvc2l0lQEBOERlcG9zaXRCYWxhbmNlAAEQZGF0YV0EAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AASRpc19mcm96ZW6ZAQEQYm9vbAAApQ8AAAQMONhZBACpDwAABAh8lQEArQ8AAAQIlQFBAQCxDww4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0FEVycm9yCARUAARJAAFYME5vUGVybWlzc2lvbgAABOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uRFVua25vd25Db2xsZWN0aW9uAAEEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAgS4VGhlIGl0ZW0gSUQgaGFzIGFscmVhZHkgYmVlbiB1c2VkIGZvciBhbiBpdGVtLihXcm9uZ093bmVyAAME6FRoZSBvd25lciB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oQmFkV2l0bmVzcwAEBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi4USW5Vc2UABQR0VGhlIGl0ZW0gSUQgaXMgYWxyZWFkeSB0YWtlbi4YRnJvemVuAAYEhFRoZSBpdGVtIG9yIGNvbGxlY3Rpb24gaXMgZnJvemVuLjRXcm9uZ0RlbGVnYXRlAAcE9FRoZSBkZWxlZ2F0ZSB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oTm9EZWxlZ2F0ZQAIBHhUaGVyZSBpcyBubyBkZWxlZ2F0ZSBhcHByb3ZlZC4oVW5hcHByb3ZlZAAJBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuKFVuYWNjZXB0ZWQACgQlAVRoZSBuYW1lZCBvd25lciBoYXMgbm90IHNpZ25lZCBvd25lcnNoaXAgb2YgdGhlIGNvbGxlY3Rpb24gaXMgYWNjZXB0YWJsZS4YTG9ja2VkAAsETFRoZSBpdGVtIGlzIGxvY2tlZC5ATWF4U3VwcGx5UmVhY2hlZAAMBGxBbGwgaXRlbXMgaGF2ZSBiZWVuIG1pbnRlZC5MTWF4U3VwcGx5QWxyZWFkeVNldAANBJBUaGUgbWF4IHN1cHBseSBoYXMgYWxyZWFkeSBiZWVuIHNldC5ETWF4U3VwcGx5VG9vU21hbGwADgRBAVRoZSBwcm92aWRlZCBtYXggc3VwcGx5IGlzIGxlc3MgdG8gdGhlIGFtb3VudCBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gYWxyZWFkeSBoYXMuLFVua25vd25JdGVtAA8EdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uKE5vdEZvclNhbGUAEARUSXRlbSBpcyBub3QgZm9yIHNhbGUuJEJpZFRvb0xvdwARBHBUaGUgcHJvdmlkZWQgYmlkIGlzIHRvbyBsb3cuKE5vTWV0YWRhdGEAEgRUTm8gbWV0YWRhdGEgaXMgZm91bmQuNFdyb25nTWV0YWRhdGEAEwSgV3JvbmcgbWV0YWRhdGEga2V5L3ZhbHVlIGJ5dGVzIHN1cHBsaWVkLkRBdHRyaWJ1dGVOb3RGb3VuZAAUBGhBbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLjhXcm9uZ0F0dHJpYnV0ZQAVBKRXcm9uZyBhdHRyaWJ1dGUga2V5L3ZhbHVlIGJ5dGVzIHN1cHBsaWVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC61DwwscGFsbGV0X25mdHMUdHlwZXNEQ29sbGVjdGlvbkRldGFpbHMIJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlAZUBABgBFG93bmVyBAEkQWNjb3VudElkAAE0b3duZXJfZGVwb3NpdJUBAThEZXBvc2l0QmFsYW5jZQABFGl0ZW1zOAEMdTMyAAE4aXRlbV9tZXRhZGF0YXM4AQx1MzIAATBpdGVtX2NvbmZpZ3M4AQx1MzIAAShhdHRyaWJ1dGVzOAEMdTMyAAC5DwwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBvQ8ABAAMAThDb2xsZWN0aW9uUm9sZQAAvQ8MLHBhbGxldF9uZnRzFHR5cGVzOENvbGxlY3Rpb25Sb2xlAAEMGElzc3VlcgABABxGcmVlemVyAAIAFEFkbWluAAQAAMEPDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtRGV0YWlscwwkQWNjb3VudElkAQQcRGVwb3NpdAHFDyRBcHByb3ZhbHMByQ8ADAEUb3duZXIEASRBY2NvdW50SWQAASRhcHByb3ZhbHPJDwEkQXBwcm92YWxzAAEcZGVwb3NpdMUPARxEZXBvc2l0AADFDwwscGFsbGV0X25mdHMUdHlwZXMsSXRlbURlcG9zaXQIOERlcG9zaXRCYWxhbmNlAZUBJEFjY291bnRJZAEEAAgBHGFjY291bnQEASRBY2NvdW50SWQAARhhbW91bnSVAQE4RGVwb3NpdEJhbGFuY2UAAMkPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwEEBFYB2ARTAAAEAM0PAThCVHJlZU1hcDxLLCBWPgAAzQ8EIEJUcmVlTWFwCARLAQQEVgHYAAQA0Q8AAADRDwAAAtUPANUPAAAECATYANkPDCxwYWxsZXRfbmZ0cxR0eXBlc0hDb2xsZWN0aW9uTWV0YWRhdGEIHERlcG9zaXQBlQEsU3RyaW5nTGltaXQAAAgBHGRlcG9zaXSVAQEcRGVwb3NpdAABEGRhdGHgAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AAN0PDCxwYWxsZXRfbmZ0cxR0eXBlczBJdGVtTWV0YWRhdGEIHERlcG9zaXQB4Q8sU3RyaW5nTGltaXQAAAgBHGRlcG9zaXThDwEcRGVwb3NpdAABEGRhdGHgAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AAOEPDCxwYWxsZXRfbmZ0cxR0eXBlc0xJdGVtTWV0YWRhdGFEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQGVASRBY2NvdW50SWQBBAAIARxhY2NvdW50QQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEYYW1vdW50lQEBOERlcG9zaXRCYWxhbmNlAADlDwAABBA42JUEfADpDwAABAjg7Q8A7Q8MLHBhbGxldF9uZnRzFHR5cGVzQEF0dHJpYnV0ZURlcG9zaXQIOERlcG9zaXRCYWxhbmNlAZUBJEFjY291bnRJZAEEAAgBHGFjY291bnRBAQFET3B0aW9uPEFjY291bnRJZD4AARhhbW91bnSVAQE4RGVwb3NpdEJhbGFuY2UAAPEPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAEEBFMAAAQA9Q8BLEJUcmVlU2V0PFQ+AAD1DwQgQlRyZWVTZXQEBFQBBAAEAJ0BAAAA+Q8MLHBhbGxldF9uZnRzFHR5cGVzLFBlbmRpbmdTd2FwEDBDb2xsZWN0aW9uSWQBOBhJdGVtSWQBOFhJdGVtUHJpY2VXaXRoRGlyZWN0aW9uAa0EIERlYWRsaW5lATgAEAFIZGVzaXJlZF9jb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEwZGVzaXJlZF9pdGVt2AE4T3B0aW9uPEl0ZW1JZD4AARRwcmljZakEAXhPcHRpb248SXRlbVByaWNlV2l0aERpcmVjdGlvbj4AASBkZWFkbGluZTgBIERlYWRsaW5lAAD9DwwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBARAABAAoATRQYWxsZXRGZWF0dXJlAAABEAwscGFsbGV0X25mdHMUdHlwZXM0UGFsbGV0RmVhdHVyZQABEBxUcmFkaW5nAAEAKEF0dHJpYnV0ZXMAAgAkQXBwcm92YWxzAAQAFFN3YXBzAAgAAAUQDCxwYWxsZXRfbmZ0cxhwYWxsZXQURXJyb3IIBFQABEkAAbQwTm9QZXJtaXNzaW9uAAAE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi5EVW5rbm93bkNvbGxlY3Rpb24AAQR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwACBLhUaGUgaXRlbSBJRCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgZm9yIGFuIGl0ZW0uPEFwcHJvdmFsRXhwaXJlZAADBDkBVGhlIGFwcHJvdmFsIGhhZCBhIGRlYWRsaW5lIHRoYXQgZXhwaXJlZCwgc28gdGhlIGFwcHJvdmFsIGlzbid0IHZhbGlkIGFueW1vcmUuKFdyb25nT3duZXIABAToVGhlIG93bmVyIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihCYWRXaXRuZXNzAAUEFQFUaGUgd2l0bmVzcyBkYXRhIGdpdmVuIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjaGFpbi5EQ29sbGVjdGlvbklkSW5Vc2UABgR8Q29sbGVjdGlvbiBJRCBpcyBhbHJlYWR5IHRha2VuLlBJdGVtc05vblRyYW5zZmVyYWJsZQAHBMhJdGVtcyB3aXRoaW4gdGhhdCBjb2xsZWN0aW9uIGFyZSBub24tdHJhbnNmZXJhYmxlLixOb3REZWxlZ2F0ZQAIBJxUaGUgcHJvdmlkZWQgYWNjb3VudCBpcyBub3QgYSBkZWxlZ2F0ZS40V3JvbmdEZWxlZ2F0ZQAJBPRUaGUgZGVsZWdhdGUgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLihVbmFjY2VwdGVkAAsEGQFUaGUgbmFtZWQgb3duZXIgaGFzIG5vdCBzaWduZWQgb3duZXJzaGlwIGFjY2VwdGFuY2Ugb2YgdGhlIGNvbGxlY3Rpb24uKEl0ZW1Mb2NrZWQADASYVGhlIGl0ZW0gaXMgbG9ja2VkIChub24tdHJhbnNmZXJhYmxlKS5QTG9ja2VkSXRlbUF0dHJpYnV0ZXMADQR0SXRlbSdzIGF0dHJpYnV0ZXMgYXJlIGxvY2tlZC5oTG9ja2VkQ29sbGVjdGlvbkF0dHJpYnV0ZXMADgSMQ29sbGVjdGlvbidzIGF0dHJpYnV0ZXMgYXJlIGxvY2tlZC5ITG9ja2VkSXRlbU1ldGFkYXRhAA8EaEl0ZW0ncyBtZXRhZGF0YSBpcyBsb2NrZWQuYExvY2tlZENvbGxlY3Rpb25NZXRhZGF0YQAQBIBDb2xsZWN0aW9uJ3MgbWV0YWRhdGEgaXMgbG9ja2VkLkBNYXhTdXBwbHlSZWFjaGVkABEEbEFsbCBpdGVtcyBoYXZlIGJlZW4gbWludGVkLjxNYXhTdXBwbHlMb2NrZWQAEgS4VGhlIG1heCBzdXBwbHkgaXMgbG9ja2VkIGFuZCBjYW4ndCBiZSBjaGFuZ2VkLkRNYXhTdXBwbHlUb29TbWFsbAATBEkBVGhlIHByb3ZpZGVkIG1heCBzdXBwbHkgaXMgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGFscmVhZHkgaGFzLixVbmtub3duSXRlbQAUBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLixVbmtub3duU3dhcAAVBExTd2FwIGRvZXNuJ3QgZXhpc3QuQE1ldGFkYXRhTm90Rm91bmQAFgSMVGhlIGdpdmVuIGl0ZW0gaGFzIG5vIG1ldGFkYXRhIHNldC5EQXR0cmlidXRlTm90Rm91bmQAFwSYVGhlIHByb3ZpZGVkIGF0dHJpYnV0ZSBjYW4ndCBiZSBmb3VuZC4oTm90Rm9yU2FsZQAYBFRJdGVtIGlzIG5vdCBmb3Igc2FsZS4kQmlkVG9vTG93ABkEcFRoZSBwcm92aWRlZCBiaWQgaXMgdG9vIGxvdy5QUmVhY2hlZEFwcHJvdmFsTGltaXQAGgSgVGhlIGl0ZW0gaGFzIHJlYWNoZWQgaXRzIGFwcHJvdmFsIGxpbWl0LjxEZWFkbGluZUV4cGlyZWQAGwSEVGhlIGRlYWRsaW5lIGhhcyBhbHJlYWR5IGV4cGlyZWQuNFdyb25nRHVyYXRpb24AHAQxAVRoZSBkdXJhdGlvbiBwcm92aWRlZCBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBNYXhEZWFkbGluZUR1cmF0aW9uYC44TWV0aG9kRGlzYWJsZWQAHQSoVGhlIG1ldGhvZCBpcyBkaXNhYmxlZCBieSBzeXN0ZW0gc2V0dGluZ3MuMFdyb25nU2V0dGluZwAeBIhUaGUgcHJvdmlkZWQgc2V0dGluZyBjYW4ndCBiZSBzZXQuWEluY29uc2lzdGVudEl0ZW1Db25maWcAHwQVAUl0ZW0ncyBjb25maWcgYWxyZWFkeSBleGlzdHMgYW5kIHNob3VsZCBiZSBlcXVhbCB0byB0aGUgcHJvdmlkZWQgb25lLiBOb0NvbmZpZwAgBMhDb25maWcgZm9yIGEgY29sbGVjdGlvbiBvciBhbiBpdGVtIGNhbid0IGJlIGZvdW5kLjxSb2xlc05vdENsZWFyZWQAIQRwU29tZSByb2xlcyB3ZXJlIG5vdCBjbGVhcmVkLjhNaW50Tm90U3RhcnRlZAAiBGRNaW50IGhhcyBub3Qgc3RhcnRlZCB5ZXQuJE1pbnRFbmRlZAAjBFxNaW50IGhhcyBhbHJlYWR5IGVuZGVkLjhBbHJlYWR5Q2xhaW1lZAAkBMBUaGUgcHJvdmlkZWQgSXRlbSB3YXMgYWxyZWFkeSB1c2VkIGZvciBjbGFpbWluZy40SW5jb3JyZWN0RGF0YQAlBHxUaGUgcHJvdmlkZWQgZGF0YSBpcyBpbmNvcnJlY3QuLFdyb25nT3JpZ2luACYErFRoZSBleHRyaW5zaWMgd2FzIHNlbnQgYnkgdGhlIHdyb25nIG9yaWdpbi44V3JvbmdTaWduYXR1cmUAJwSQVGhlIHByb3ZpZGVkIHNpZ25hdHVyZSBpcyBpbmNvcnJlY3QuREluY29ycmVjdE1ldGFkYXRhACgEoFRoZSBwcm92aWRlZCBtZXRhZGF0YSBtaWdodCBiZSB0b28gbG9uZy5kTWF4QXR0cmlidXRlc0xpbWl0UmVhY2hlZAApBJxDYW4ndCBzZXQgbW9yZSBhdHRyaWJ1dGVzIHBlciBvbmUgY2FsbC44V3JvbmdOYW1lc3BhY2UAKgTQVGhlIHByb3ZpZGVkIG5hbWVzcGFjZSBpc24ndCBzdXBwb3J0ZWQgaW4gdGhpcyBjYWxsLkhDb2xsZWN0aW9uTm90RW1wdHkAKwSMQ2FuJ3QgZGVsZXRlIG5vbi1lbXB0eSBjb2xsZWN0aW9ucy48V2l0bmVzc1JlcXVpcmVkACwEkFRoZSB3aXRuZXNzIGRhdGEgc2hvdWxkIGJlIHByb3ZpZGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4JEAAABAg5AgQADRAAAAQMOQIEBAAREAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQGVATRCb3VuZGVkU3RyaW5nARUQABQBHGRlcG9zaXSVAQE4RGVwb3NpdEJhbGFuY2UAARBuYW1lFRABNEJvdW5kZWRTdHJpbmcAARhzeW1ib2wVEAE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW6ZAQEQYm9vbAAAFRAMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAZEAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuHRAEGE9wdGlvbgQEVAEREAEIEE5vbmUAAAAQU29tZQQAERAAAAEAACEQDHBwYWxsZXRfbmZ0X2ZyYWN0aW9uYWxpemF0aW9uFHR5cGVzHERldGFpbHMQHEFzc2V0SWQBOCRGcmFjdGlvbnMBlQEcRGVwb3NpdAGVASRBY2NvdW50SWQBBAAQARRhc3NldDgBHEFzc2V0SWQAASRmcmFjdGlvbnOVAQEkRnJhY3Rpb25zAAEcZGVwb3NpdJUBARxEZXBvc2l0AAE0YXNzZXRfY3JlYXRvcgQBJEFjY291bnRJZAAAJRAMcHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb24YcGFsbGV0FEVycm9yBARUAAEQQEluY29ycmVjdEFzc2V0SWQAAASsQXNzZXQgSUQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBsb2NrZWQgTkZULjBOb1Blcm1pc3Npb24AAQToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLixOZnROb3RGb3VuZAACBEhORlQgZG9lc24ndCBleGlzdC5QTmZ0Tm90RnJhY3Rpb25hbGl6ZWQAAwSQTkZUIGhhcyBub3QgeWV0IGJlZW4gZnJhY3Rpb25hbGlzZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LikQDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFzc2V0TWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlAZUBNEJvdW5kZWRTdHJpbmcBLRAAFAEcZGVwb3NpdJUBAThEZXBvc2l0QmFsYW5jZQABEG5hbWUtEAE0Qm91bmRlZFN0cmluZwABGHN5bWJvbC0QATRCb3VuZGVkU3RyaW5nAAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbpkBARBib29sAAAtEAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AADEQDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABYChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEyFRoZSBhc3NldCBJRCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBbYE5leHRBc3NldElkYF0uPENvbnRhaW5zRnJlZXplcwAVBE0BVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gZnJlZXplcy40Q29udGFpbnNIb2xkcwAWBEUBVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gaG9sZHMuPFRvb01hbnlSZXNlcnZlcwAXBIBUcmllZCBzZXR0aW5nIHRvbyBtYW55IHJlc2VydmVzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC41EAQYT3B0aW9uBARUASkQAQgQTm9uZQAAABBTb21lBAApEAAAAQAAORAMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uFHR5cGVzIFBvb2xJbmZvBCxQb29sQXNzZXRJZAE4AAQBIGxwX3Rva2VuOAEsUG9vbEFzc2V0SWQAAD0QDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQURXJyb3IEBFQAAVxASW52YWxpZEFzc2V0UGFpcgAABLhQcm92aWRlZCBhc3NldCBwYWlyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBvb2wuKFBvb2xFeGlzdHMAAQRQUG9vbCBhbHJlYWR5IGV4aXN0cy5IV3JvbmdEZXNpcmVkQW1vdW50AAIEdERlc2lyZWQgYW1vdW50IGNhbid0IGJlIHplcm8uYEFtb3VudE9uZUxlc3NUaGFuTWluaW1hbAADCEkBUHJvdmlkZWQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5gQW1vdW50VHdvTGVzc1RoYW5NaW5pbWFsAAQISQFQcm92aWRlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LmhSZXNlcnZlTGVmdExlc3NUaGFuTWluaW1hbAAFCE0BUmVzZXJ2ZSBuZWVkcyB0byBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuQEFtb3VudE91dFRvb0hpZ2gABgTIRGVzaXJlZCBhbW91bnQgY2FuJ3QgYmUgZXF1YWwgdG8gdGhlIHBvb2wgcmVzZXJ2ZS4wUG9vbE5vdEZvdW5kAAcEXFRoZSBwb29sIGRvZXNuJ3QgZXhpc3QuIE92ZXJmbG93AAgEVEFuIG92ZXJmbG93IGhhcHBlbmVkLoBBc3NldE9uZURlcG9zaXREaWROb3RNZWV0TWluaW11bQAJBCkBVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgZmlyc3QgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6AQXNzZXRUd29EZXBvc2l0RGlkTm90TWVldE1pbmltdW0ACgQtAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIHNlY29uZCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoxBc3NldE9uZVdpdGhkcmF3YWxEaWROb3RNZWV0TWluaW11bQALBCkBVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgZmlyc3QgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6MQXNzZXRUd29XaXRoZHJhd2FsRGlkTm90TWVldE1pbmltdW0ADAQtAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIHNlY29uZCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LnBPcHRpbWFsQW1vdW50TGVzc1RoYW5EZXNpcmVkAA0EvE9wdGltYWwgY2FsY3VsYXRlZCBhbW91bnQgaXMgbGVzcyB0aGFuIGRlc2lyZWQubEluc3VmZmljaWVudExpcXVpZGl0eU1pbnRlZAAOBHhJbnN1ZmZpY2llbnQgbGlxdWlkaXR5IG1pbnRlZC40WmVyb0xpcXVpZGl0eQAPBIhSZXF1ZXN0ZWQgbGlxdWlkaXR5IGNhbid0IGJlIHplcm8uKFplcm9BbW91bnQAEARUQW1vdW50IGNhbid0IGJlIHplcm8ujFByb3ZpZGVkTWluaW11bU5vdFN1ZmZpY2llbnRGb3JTd2FwABEE7ENhbGN1bGF0ZWQgYW1vdW50IG91dCBpcyBsZXNzIHRoYW4gcHJvdmlkZWQgbWluaW11bSBhbW91bnQujFByb3ZpZGVkTWF4aW11bU5vdFN1ZmZpY2llbnRGb3JTd2FwABIEzFByb3ZpZGVkIG1heGltdW0gYW1vdW50IGlzIG5vdCBzdWZmaWNpZW50IGZvciBzd2FwLixJbnZhbGlkUGF0aAATBNRUaGUgcHJvdmlkZWQgcGF0aCBtdXN0IGNvbnNpc3RzIG9mIDIgYXNzZXRzIGF0IGxlYXN0LjROb25VbmlxdWVQYXRoABQExFRoZSBwcm92aWRlZCBwYXRoIG11c3QgY29uc2lzdHMgb2YgdW5pcXVlIGFzc2V0cy5QSW5jb3JyZWN0UG9vbEFzc2V0SWQAFQTsSXQgd2FzIG5vdCBwb3NzaWJsZSB0byBnZXQgb3IgaW5jcmVtZW50IHRoZSBJZCBvZiB0aGUgcG9vbC4wQmVsb3dNaW5pbXVtABYE8FRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGNhbm5vdCBleGlzdCB3aXRoIHRoZSBzd2FwcGVkIGZ1bmRzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5BEAQYUmVzdWx0CARUAUUQBEUBPRABCAhPawQARRAAAAAADEVycgQAPRAAAAEAAEUQAAAECJUBlQEASRAIPHBhbGxldF9yZWNvdmVyeThSZWNvdmVyeUNvbmZpZwwsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAZUBHEZyaWVuZHMBZQoAEAEwZGVsYXlfcGVyaW9kOAEsQmxvY2tOdW1iZXIAARxkZXBvc2l0lQEBHEJhbGFuY2UAARxmcmllbmRzZQoBHEZyaWVuZHMAASR0aHJlc2hvbGT5AwEMdTE2AABNEAg8cGFsbGV0X3JlY292ZXJ5OEFjdGl2ZVJlY292ZXJ5DCxCbG9ja051bWJlcgE4HEJhbGFuY2UBlQEcRnJpZW5kcwFlCgAMARxjcmVhdGVkOAEsQmxvY2tOdW1iZXIAARxkZXBvc2l0lQEBHEJhbGFuY2UAARxmcmllbmRzZQoBHEZyaWVuZHMAAFEQDDxwYWxsZXRfcmVjb3ZlcnkYcGFsbGV0FEVycm9yBARUAAFAKE5vdEFsbG93ZWQAAATwVXNlciBpcyBub3QgYWxsb3dlZCB0byBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YgdGhpcyBhY2NvdW50NFplcm9UaHJlc2hvbGQAAQSMVGhyZXNob2xkIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm9ATm90RW5vdWdoRnJpZW5kcwACBNBGcmllbmRzIGxpc3QgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgdGhyZXNob2xkKE1heEZyaWVuZHMAAwSoRnJpZW5kcyBsaXN0IG11c3QgYmUgbGVzcyB0aGFuIG1heCBmcmllbmRzJE5vdFNvcnRlZAAEBMhGcmllbmRzIGxpc3QgbXVzdCBiZSBzb3J0ZWQgYW5kIGZyZWUgb2YgZHVwbGljYXRlczhOb3RSZWNvdmVyYWJsZQAFBJxUaGlzIGFjY291bnQgaXMgbm90IHNldCB1cCBmb3IgcmVjb3ZlcnlIQWxyZWFkeVJlY292ZXJhYmxlAAYErFRoaXMgYWNjb3VudCBpcyBhbHJlYWR5IHNldCB1cCBmb3IgcmVjb3Zlcnk4QWxyZWFkeVN0YXJ0ZWQABwTcQSByZWNvdmVyeSBwcm9jZXNzIGhhcyBhbHJlYWR5IHN0YXJ0ZWQgZm9yIHRoaXMgYWNjb3VudChOb3RTdGFydGVkAAgEzEEgcmVjb3ZlcnkgcHJvY2VzcyBoYXMgbm90IHN0YXJ0ZWQgZm9yIHRoaXMgcmVzY3VlciROb3RGcmllbmQACQSoVGhpcyBhY2NvdW50IGlzIG5vdCBhIGZyaWVuZCB3aG8gY2FuIHZvdWNoLERlbGF5UGVyaW9kAAoEGQFUaGUgZnJpZW5kIG11c3Qgd2FpdCB1bnRpbCB0aGUgZGVsYXkgcGVyaW9kIHRvIHZvdWNoIGZvciB0aGlzIHJlY292ZXJ5OEFscmVhZHlWb3VjaGVkAAsEvFRoaXMgdXNlciBoYXMgYWxyZWFkeSB2b3VjaGVkIGZvciB0aGlzIHJlY292ZXJ5JFRocmVzaG9sZAAMBOhUaGUgdGhyZXNob2xkIGZvciByZWNvdmVyaW5nIHRoaXMgYWNjb3VudCBoYXMgbm90IGJlZW4gbWV0LFN0aWxsQWN0aXZlAA0E/FRoZXJlIGFyZSBzdGlsbCBhY3RpdmUgcmVjb3ZlcnkgYXR0ZW1wdHMgdGhhdCBuZWVkIHRvIGJlIGNsb3NlZDBBbHJlYWR5UHJveHkADgSsVGhpcyBhY2NvdW50IGlzIGFscmVhZHkgc2V0IHVwIGZvciByZWNvdmVyeSBCYWRTdGF0ZQAPBHhTb21lIGludGVybmFsIHN0YXRlIGlzIGJyb2tlbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuVRAIOHBhbGxldF9zb2NpZXR5ME1lbWJlclJlY29yZAAAEAEQcmFuazgBEFJhbmsAARxzdHJpa2VzOAEsU3RyaWtlQ291bnQAASB2b3VjaGluZ1kQAVhPcHRpb248Vm91Y2hpbmdTdGF0dXM+AAEUaW5kZXg4AQx1MzIAAFkQBBhPcHRpb24EBFQBXRABCBBOb25lAAAAEFNvbWUEAF0QAAABAABdEAg4cGFsbGV0X3NvY2lldHk4Vm91Y2hpbmdTdGF0dXMAAQggVm91Y2hpbmcAAAAYQmFubmVkAAEAAGEQCDhwYWxsZXRfc29jaWV0eTBQYXlvdXRSZWNvcmQIHEJhbGFuY2UBlQEoUGF5b3V0c1ZlYwFlEAAIARBwYWlklQEBHEJhbGFuY2UAARxwYXlvdXRzZRABKFBheW91dHNWZWMAAGUQDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBXQgEUwAABABZCAEYVmVjPFQ+AABpEAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAW0QBFMAAAQAdRABGFZlYzxUPgAAbRAIOHBhbGxldF9zb2NpZXR5DEJpZAgkQWNjb3VudElkAQQcQmFsYW5jZQGVAQAMAQx3aG8EASRBY2NvdW50SWQAARBraW5kcRABbEJpZEtpbmQ8QWNjb3VudElkLCBCYWxhbmNlPgABFHZhbHVllQEBHEJhbGFuY2UAAHEQCDhwYWxsZXRfc29jaWV0eRxCaWRLaW5kCCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBAQgcRGVwb3NpdAQAlQEBHEJhbGFuY2UAAAAUVm91Y2gIAAQBJEFjY291bnRJZAAAlQEBHEJhbGFuY2UAAQAAdRAAAAJtEAB5EAg4cGFsbGV0X3NvY2lldHkkQ2FuZGlkYWN5CCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBABQBFHJvdW5kOAEoUm91bmRJbmRleAABEGtpbmRxEAFsQmlkS2luZDxBY2NvdW50SWQsIEJhbGFuY2U+AAEMYmlklQEBHEJhbGFuY2UAARR0YWxseX0QARRUYWxseQABOHNrZXB0aWNfc3RydWNrmQEBEGJvb2wAAH0QCDhwYWxsZXRfc29jaWV0eRRUYWxseQAACAEkYXBwcm92YWxzOAEkVm90ZUNvdW50AAEocmVqZWN0aW9uczgBJFZvdGVDb3VudAAAgRAIOHBhbGxldF9zb2NpZXR5EFZvdGUAAAgBHGFwcHJvdmWZAQEQYm9vbAABGHdlaWdodDgBDHUzMgAAhRAMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACJEAg4cGFsbGV0X3NvY2lldHkwSW50YWtlUmVjb3JkCCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBAAwBDHdobwQBJEFjY291bnRJZAABDGJpZJUBARxCYWxhbmNlAAEUcm91bmQ4AShSb3VuZEluZGV4AACNEAAABAwEBH0QAJEQDDhwYWxsZXRfc29jaWV0eRhwYWxsZXQURXJyb3IIBFQABEkAAYQkTm90TWVtYmVyAAAEVFVzZXIgaXMgbm90IGEgbWVtYmVyLjRBbHJlYWR5TWVtYmVyAAEEZFVzZXIgaXMgYWxyZWFkeSBhIG1lbWJlci4kU3VzcGVuZGVkAAIESFVzZXIgaXMgc3VzcGVuZGVkLjBOb3RTdXNwZW5kZWQAAwRYVXNlciBpcyBub3Qgc3VzcGVuZGVkLiBOb1BheW91dAAEBEhOb3RoaW5nIHRvIHBheW91dC44QWxyZWFkeUZvdW5kZWQABQRgU29jaWV0eSBhbHJlYWR5IGZvdW5kZWQuPEluc3VmZmljaWVudFBvdAAGBJhOb3QgZW5vdWdoIGluIHBvdCB0byBhY2NlcHQgY2FuZGlkYXRlLjxBbHJlYWR5Vm91Y2hpbmcABwTkTWVtYmVyIGlzIGFscmVhZHkgdm91Y2hpbmcgb3IgYmFubmVkIGZyb20gdm91Y2hpbmcgYWdhaW4uTE5vdFZvdWNoaW5nT25CaWRkZXIACARcTWVtYmVyIGlzIG5vdCB2b3VjaGluZy4QSGVhZAAJBJBDYW5ub3QgcmVtb3ZlIHRoZSBoZWFkIG9mIHRoZSBjaGFpbi4cRm91bmRlcgAKBGhDYW5ub3QgcmVtb3ZlIHRoZSBmb3VuZGVyLihBbHJlYWR5QmlkAAsEcFVzZXIgaGFzIGFscmVhZHkgbWFkZSBhIGJpZC5AQWxyZWFkeUNhbmRpZGF0ZQAMBHBVc2VyIGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQANBGBVc2VyIGlzIG5vdCBhIGNhbmRpZGF0ZS4oTWF4TWVtYmVycwAOBIBUb28gbWFueSBtZW1iZXJzIGluIHRoZSBzb2NpZXR5LihOb3RGb3VuZGVyAA8EeFRoZSBjYWxsZXIgaXMgbm90IHRoZSBmb3VuZGVyLhxOb3RIZWFkABAEbFRoZSBjYWxsZXIgaXMgbm90IHRoZSBoZWFkLixOb3RBcHByb3ZlZAARBC0BVGhlIG1lbWJlcnNoaXAgY2Fubm90IGJlIGNsYWltZWQgYXMgdGhlIGNhbmRpZGF0ZSB3YXMgbm90IGNsZWFybHkgYXBwcm92ZWQuLE5vdFJlamVjdGVkABIEJQFUaGUgY2FuZGlkYXRlIGNhbm5vdCBiZSBraWNrZWQgYXMgdGhlIGNhbmRpZGF0ZSB3YXMgbm90IGNsZWFybHkgcmVqZWN0ZWQuIEFwcHJvdmVkABMEGQFUaGUgY2FuZGlkYWN5IGNhbm5vdCBiZSBkcm9wcGVkIGFzIHRoZSBjYW5kaWRhdGUgd2FzIGNsZWFybHkgYXBwcm92ZWQuIFJlamVjdGVkABQEHQFUaGUgY2FuZGlkYWN5IGNhbm5vdCBiZSBiZXN0b3dlZCBhcyB0aGUgY2FuZGlkYXRlIHdhcyBjbGVhcmx5IHJlamVjdGVkLihJblByb2dyZXNzABUEFQFUaGUgY2FuZGlkYWN5IGNhbm5vdCBiZSBjb25jbHVkZWQgYXMgdGhlIHZvdGluZyBpcyBzdGlsbCBpbiBwcm9ncmVzcy4gVG9vRWFybHkAFgRBAVRoZSBjYW5kaWRhY3kgY2Fubm90IGJlIHBydW5lZCB1bnRpbCBhIGZ1bGwgYWRkaXRpb25hbCBpbnRha2UgcGVyaW9kIGhhcyBwYXNzZWQuFFZvdGVkABcEaFRoZSBza2VwdGljIGFscmVhZHkgdm90ZWQuHEV4cGlyZWQAGATwVGhlIHNrZXB0aWMgbmVlZCBub3Qgdm90ZSBvbiBjYW5kaWRhdGVzIGZyb20gZXhwaXJlZCByb3VuZHMuJE5vdEJpZGRlcgAZBFRVc2VyIGlzIG5vdCBhIGJpZGRlci4oTm9EZWZlbmRlcgAaBHxUaGVyZSBpcyBubyBkZWZlbmRlciBjdXJyZW50bHkuIE5vdEdyb3VwABsEUEdyb3VwIGRvZXNuJ3QgZXhpc3QuPEFscmVhZHlFbGV2YXRlZAAcBLBUaGUgbWVtYmVyIGlzIGFscmVhZHkgZWxldmF0ZWQgdG8gdGhpcyByYW5rLjxBbHJlYWR5UHVuaXNoZWQAHQTcVGhlIHNrZXB0aWMgaGFzIGFscmVhZHkgYmVlbiBwdW5pc2hlZCBmb3IgdGhpcyBvZmZlbmNlLkRJbnN1ZmZpY2llbnRGdW5kcwAeBMBGdW5kcyBhcmUgaW5zdWZmaWNpZW50IHRvIHBheSBvZmYgc29jaWV0eSBkZWJ0cy4cTm9Wb3RlcwAfBNBUaGUgY2FuZGlkYXRlL2RlZmVuZGVyIGhhcyBubyBzdGFsZSB2b3RlcyB0byByZW1vdmUuJE5vRGVwb3NpdAAgBKhUaGVyZSBpcyBubyBkZXBvc2l0IGFzc29jaWF0ZWQgd2l0aCBhIGJpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQulRAMNHBhbGxldF9yZXZpdmUIdm0gQ29kZUluZm8EBFQAABgBFG93bmVyBAE4QWNjb3VudElkT2Y8VD4AARxkZXBvc2l0kQEBMEJhbGFuY2VPZjxUPgABIHJlZmNvdW50uAEMdTY0AAEgY29kZV9sZW44AQx1MzIAASRjb2RlX3R5cGWZEAEwQnl0ZWNvZGVUeXBlAAFEYmVoYXZpb3VyX3ZlcnNpb244AQx1MzIAAJkQDDRwYWxsZXRfcmV2aXZlCHZtMEJ5dGVjb2RlVHlwZQABCAxQdm0AAAAMRXZtAAEAAJ0QDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UsQWNjb3VudEluZm8EBFQAAAgBMGFjY291bnRfdHlwZaEQAThBY2NvdW50VHlwZTxUPgABEGR1c3Q4AQx1MzIAAKEQDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UsQWNjb3VudFR5cGUEBFQAAQggQ29udHJhY3QEAKUQATxDb250cmFjdEluZm88VD4AAAAMRU9BAAEAAKUQDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UwQ29udHJhY3RJbmZvBARUAAAgARx0cmllX2lkXQQBGFRyaWVJZAABJGNvZGVfaGFzaEABNHNwX2NvcmU6OkgyNTYAATRzdG9yYWdlX2J5dGVzOAEMdTMyAAE0c3RvcmFnZV9pdGVtczgBDHUzMgABUHN0b3JhZ2VfYnl0ZV9kZXBvc2l0lQEBMEJhbGFuY2VPZjxUPgABUHN0b3JhZ2VfaXRlbV9kZXBvc2l0lQEBMEJhbGFuY2VPZjxUPgABUHN0b3JhZ2VfYmFzZV9kZXBvc2l0lQEBMEJhbGFuY2VPZjxUPgABSGltbXV0YWJsZV9kYXRhX2xlbjgBDHUzMgAAqRAMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACtEAw0cGFsbGV0X3Jldml2ZRxzdG9yYWdlUERlbGV0aW9uUXVldWVNYW5hZ2VyBARUAAAIAThpbnNlcnRfY291bnRlcjgBDHUzMgABOGRlbGV0ZV9jb3VudGVyOAEMdTMyAACxEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4UQmxvY2sAAGwBQGJhc2VfZmVlX3Blcl9nYXP5BAEQVTI1NgABNGJsb2JfZ2FzX3VzZWT5BAEQVTI1NgABKGRpZmZpY3VsdHn5BAEQVTI1NgABPGV4Y2Vzc19ibG9iX2dhc/kEARBVMjU2AAEoZXh0cmFfZGF0YbUQARRCeXRlcwABJGdhc19saW1pdPkEARBVMjU2AAEgZ2FzX3VzZWT5BAEQVTI1NgABEGhhc2hAARBIMjU2AAEobG9nc19ibG9vbbkQASBCeXRlczI1NgABFG1pbmVy8QQBHEFkZHJlc3MAASBtaXhfaGFzaEABEEgyNTYAARRub25jZcEQARhCeXRlczgAARhudW1iZXL5BAEQVTI1NgABYHBhcmVudF9iZWFjb25fYmxvY2tfcm9vdG0HATBPcHRpb248SDI1Nj4AASxwYXJlbnRfaGFzaEABEEgyNTYAATRyZWNlaXB0c19yb290QAEQSDI1NgABNHJlcXVlc3RzX2hhc2htBwEwT3B0aW9uPEgyNTY+AAEwc2hhXzNfdW5jbGVzQAEQSDI1NgABEHNpemX5BAEQVTI1NgABKHN0YXRlX3Jvb3RAARBIMjU2AAEkdGltZXN0YW1w+QQBEFUyNTYAAUB0b3RhbF9kaWZmaWN1bHR5xRABME9wdGlvbjxVMjU2PgABMHRyYW5zYWN0aW9uc8kQAWBIYXNoZXNPclRyYW5zYWN0aW9uSW5mb3MAAUR0cmFuc2FjdGlvbnNfcm9vdEABEEgyNTYAARh1bmNsZXPwASRWZWM8SDI1Nj4AASx3aXRoZHJhd2FscxURATxWZWM8V2l0aGRyYXdhbD4AAUB3aXRoZHJhd2Fsc19yb290QAEQSDI1NgAAtRAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlFEJ5dGVzAAAEABgBHFZlYzx1OD4AALkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZSBCeXRlczI1NgAABAC9EAEkW3U4OyAyNTZdAAC9EAAAAwABAAAMAMEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRhCeXRlczgAAAQAlQIBHFt1ODsgOF0AAMUQBBhPcHRpb24EBFQB+QQBCBBOb25lAAAAEFNvbWUEAPkEAAABAADJEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5gSGFzaGVzT3JUcmFuc2FjdGlvbkluZm9zAAEIGEhhc2hlcwQA8AEkVmVjPEgyNTY+AAAAQFRyYW5zYWN0aW9uSW5mb3MEAM0QAVBWZWM8VHJhbnNhY3Rpb25JbmZvPgABAADNEAAAAtEQANEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxUcmFuc2FjdGlvbkluZm8AABgBKGJsb2NrX2hhc2hAARBIMjU2AAEwYmxvY2tfbnVtYmVy+QQBEFUyNTYAARBmcm9t8QQBHEFkZHJlc3MAARBoYXNoQAEQSDI1NgABRHRyYW5zYWN0aW9uX2luZGV4+QQBEFUyNTYAAUh0cmFuc2FjdGlvbl9zaWduZWTVEAFEVHJhbnNhY3Rpb25TaWduZWQAANUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkRUcmFuc2FjdGlvblNpZ25lZAABFFRUcmFuc2FjdGlvbjc3MDJTaWduZWQEANkQAVRUcmFuc2FjdGlvbjc3MDJTaWduZWQAAABUVHJhbnNhY3Rpb240ODQ0U2lnbmVkBADxEAFUVHJhbnNhY3Rpb240ODQ0U2lnbmVkAAEAVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAQA+RABVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAACAFRUcmFuc2FjdGlvbjI5MzBTaWduZWQEAAURAVRUcmFuc2FjdGlvbjI5MzBTaWduZWQAAwBcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQEAA0RAVxUcmFuc2FjdGlvbkxlZ2FjeVNpZ25lZAAEAADZEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb243NzAyU2lnbmVkAAAUAWR0cmFuc2FjdGlvbl83NzAyX3Vuc2lnbmVk3RABXFRyYW5zYWN0aW9uNzcwMlVuc2lnbmVkAAEEcvkEARBVMjU2AAEEc/kEARBVMjU2AAEEdsUQATBPcHRpb248VTI1Nj4AASB5X3Bhcml0efkEARBVMjU2AADdEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb243NzAyVW5zaWduZWQAADABLGFjY2Vzc19saXN04RABKEFjY2Vzc0xpc3QAAUhhdXRob3JpemF0aW9uX2xpc3TpEAFsVmVjPEF1dGhvcml6YXRpb25MaXN0RW50cnk+AAEgY2hhaW5faWT5BAEQVTI1NgABDGdhc/kEARBVMjU2AAEkZ2FzX3ByaWNl+QQBEFUyNTYAARRpbnB1dLUQARRCeXRlcwABPG1heF9mZWVfcGVyX2dhc/kEARBVMjU2AAFgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2Fz+QQBEFUyNTYAARRub25jZfkEARBVMjU2AAEIdG/xBAEcQWRkcmVzcwABGHIjdHlwZQwBLFR5cGVFaXA3NzAyAAEUdmFsdWX5BAEQVTI1NgAA4RAAAALlEADlEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW48QWNjZXNzTGlzdEVudHJ5AAAIARxhZGRyZXNz8QQBHEFkZHJlc3MAATBzdG9yYWdlX2tleXPwASRWZWM8SDI1Nj4AAOkQAAAC7RAA7RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuWEF1dGhvcml6YXRpb25MaXN0RW50cnkAABgBIGNoYWluX2lk+QQBEFUyNTYAARxhZGRyZXNz8QQBHEFkZHJlc3MAARRub25jZfkEARBVMjU2AAEgeV9wYXJpdHn5BAEQVTI1NgABBHL5BAEQVTI1NgABBHP5BAEQVTI1NgAA8RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuVFRyYW5zYWN0aW9uNDg0NFNpZ25lZAAAEAFkdHJhbnNhY3Rpb25fNDg0NF91bnNpZ25lZPUQAVxUcmFuc2FjdGlvbjQ4NDRVbnNpZ25lZAABBHL5BAEQVTI1NgABBHP5BAEQVTI1NgABIHlfcGFyaXR5+QQBEFUyNTYAAPUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjQ4NDRVbnNpZ25lZAAAMAEsYWNjZXNzX2xpc3ThEAEoQWNjZXNzTGlzdAABVGJsb2JfdmVyc2lvbmVkX2hhc2hlc/ABJFZlYzxIMjU2PgABIGNoYWluX2lk+QQBEFUyNTYAAQxnYXP5BAEQVTI1NgABFGlucHV0tRABFEJ5dGVzAAFQbWF4X2ZlZV9wZXJfYmxvYl9nYXP5BAEQVTI1NgABPG1heF9mZWVfcGVyX2dhc/kEARBVMjU2AAFgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2Fz+QQBEFUyNTYAARRub25jZfkEARBVMjU2AAEIdG/xBAEcQWRkcmVzcwABGHIjdHlwZQwBLFR5cGVFaXA0ODQ0AAEUdmFsdWX5BAEQVTI1NgAA+RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAAAFAFkdHJhbnNhY3Rpb25fMTU1OV91bnNpZ25lZP0QAVxUcmFuc2FjdGlvbjE1NTlVbnNpZ25lZAABBHL5BAEQVTI1NgABBHP5BAEQVTI1NgABBHbFEAEwT3B0aW9uPFUyNTY+AAEgeV9wYXJpdHn5BAEQVTI1NgAA/RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uMTU1OVVuc2lnbmVkAAAsASxhY2Nlc3NfbGlzdOEQAShBY2Nlc3NMaXN0AAEgY2hhaW5faWT5BAEQVTI1NgABDGdhc/kEARBVMjU2AAEkZ2FzX3ByaWNl+QQBEFUyNTYAARRpbnB1dLUQARRCeXRlcwABPG1heF9mZWVfcGVyX2dhc/kEARBVMjU2AAFgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2Fz+QQBEFUyNTYAARRub25jZfkEARBVMjU2AAEIdG8BEQE8T3B0aW9uPEFkZHJlc3M+AAEYciN0eXBlDAEsVHlwZUVpcDE1NTkAARR2YWx1ZfkEARBVMjU2AAABEQQYT3B0aW9uBARUAfEEAQgQTm9uZQAAABBTb21lBADxBAAAAQAABREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuVFRyYW5zYWN0aW9uMjkzMFNpZ25lZAAAFAFkdHJhbnNhY3Rpb25fMjkzMF91bnNpZ25lZAkRAVxUcmFuc2FjdGlvbjI5MzBVbnNpZ25lZAABBHL5BAEQVTI1NgABBHP5BAEQVTI1NgABBHbFEAEwT3B0aW9uPFUyNTY+AAEgeV9wYXJpdHn5BAEQVTI1NgAACREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uMjkzMFVuc2lnbmVkAAAkASxhY2Nlc3NfbGlzdOEQAShBY2Nlc3NMaXN0AAEgY2hhaW5faWT5BAEQVTI1NgABDGdhc/kEARBVMjU2AAEkZ2FzX3ByaWNl+QQBEFUyNTYAARRpbnB1dLUQARRCeXRlcwABFG5vbmNl+QQBEFUyNTYAAQh0bwERATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGUMASxUeXBlRWlwMjkzMAABFHZhbHVl+QQBEFUyNTYAAA0RFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbkxlZ2FjeVNpZ25lZAAAEAFsdHJhbnNhY3Rpb25fbGVnYWN5X3Vuc2lnbmVkEREBZFRyYW5zYWN0aW9uTGVnYWN5VW5zaWduZWQAAQRy+QQBEFUyNTYAAQRz+QQBEFUyNTYAAQR2+QQBEFUyNTYAABERFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbmRUcmFuc2FjdGlvbkxlZ2FjeVVuc2lnbmVkAAAgASBjaGFpbl9pZMUQATBPcHRpb248VTI1Nj4AAQxnYXP5BAEQVTI1NgABJGdhc19wcmljZfkEARBVMjU2AAEUaW5wdXS1EAEUQnl0ZXMAARRub25jZfkEARBVMjU2AAEIdG8BEQE8T3B0aW9uPEFkZHJlc3M+AAEYciN0eXBlDAEoVHlwZUxlZ2FjeQABFHZhbHVl+QQBEFUyNTYAABURAAACGREAGREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuKFdpdGhkcmF3YWwAABABHGFkZHJlc3PxBAEcQWRkcmVzcwABGGFtb3VudPkEARBVMjU2AAEUaW5kZXj5BAEQVTI1NgABPHZhbGlkYXRvcl9pbmRlePkEARBVMjU2AAAdEQAAAiERACEREDRwYWxsZXRfcmV2aXZlDGV2bShibG9ja19oYXNoOFJlY2VpcHRHYXNJbmZvAAAIASBnYXNfdXNlZPkEARBVMjU2AAFMZWZmZWN0aXZlX2dhc19wcmljZfkEARBVMjU2AAAlERQ0cGFsbGV0X3Jldml2ZQxldm0oYmxvY2tfaGFzaDRibG9ja19idWlsZGVyWEV0aGVyZXVtQmxvY2tCdWlsZGVySVIEBFQAACABYHRyYW5zYWN0aW9uX3Jvb3RfYnVpbGRlcikRAWBJbmNyZW1lbnRhbEhhc2hCdWlsZGVySVIAAVRyZWNlaXB0c19yb290X2J1aWxkZXIpEQFgSW5jcmVtZW50YWxIYXNoQnVpbGRlcklSAAFAYmFzZV9mZWVfcGVyX2dhc/kEARBVMjU2AAE8YmxvY2tfZ2FzX2xpbWl0+QQBEFUyNTYAASBnYXNfdXNlZPkEARBVMjU2AAEobG9nc19ibG9vbb0QAVhbdTg7IEJMT09NX1NJWkVfQllURVNdAAEkdHhfaGFzaGVz8AEkVmVjPEgyNTY+AAEgZ2FzX2luZm8dEQFMVmVjPFJlY2VpcHRHYXNJbmZvPgAAKREUNHBhbGxldF9yZXZpdmUMZXZtKGJsb2NrX2hhc2gwaGFzaF9idWlsZGVyYEluY3JlbWVudGFsSGFzaEJ1aWxkZXJJUgAAKAEMa2V5GAEcVmVjPHU4PgABKHZhbHVlX3R5cGUMAQh1OAABNGJ1aWxkZXJfdmFsdWUYARxWZWM8dTg+AAEUc3RhY2s0ATBWZWM8VmVjPHU4Pj4AASxzdGF0ZV9tYXNrc40HASBWZWM8dTE2PgABKHRyZWVfbWFza3ONBwEgVmVjPHUxNj4AAShoYXNoX21hc2tzjQcBIFZlYzx1MTY+AAFIc3RvcmVkX2luX2RhdGFiYXNlmQEBEGJvb2wAARxybHBfYnVmGAEcVmVjPHU4PgABFGluZGV4KAEMdTY0AAAtEQQYT3B0aW9uBARUATABCBBOb25lAAAAEFNvbWUEADAAAAEAADERDDRwYWxsZXRfcmV2aXZlFGRlYnVnNERlYnVnU2V0dGluZ3MAAAwBdGFsbG93X3VubGltaXRlZF9jb250cmFjdF9zaXplmQEBEGJvb2wAATxieXBhc3NfZWlwXzM2MDeZAQEQYm9vbAABIHB2bV9sb2dzmQEBEGJvb2wAADURDDRwYWxsZXRfcmV2aXZlGHBhbGxldBRFcnJvcgQEVAAB4DxJbnZhbGlkU2NoZWR1bGUAAQQZAUludmFsaWQgc2NoZWR1bGUgc3VwcGxpZWQsIGUuZy4gd2l0aCB6ZXJvIHdlaWdodCBvZiBhIGJhc2ljIG9wZXJhdGlvbi5ASW52YWxpZENhbGxGbGFncwACBDUBSW52YWxpZCBjb21iaW5hdGlvbiBvZiBmbGFncyBzdXBwbGllZCB0byBgc2VhbF9jYWxsYCBvciBgc2VhbF9kZWxlZ2F0ZV9jYWxsYC4gT3V0T2ZHYXMAAwS4VGhlIGV4ZWN1dGVkIGNvbnRyYWN0IGV4aGF1c3RlZCBpdHMgZ2FzIGxpbWl0LjhUcmFuc2ZlckZhaWxlZAAECDUBUGVyZm9ybWluZyB0aGUgcmVxdWVzdGVkIHRyYW5zZmVyIGZhaWxlZC4gUHJvYmFibHkgYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2iUZnJlZSBiYWxhbmNlIGluIHRoZSBzZW5kZXIncyBhY2NvdW50LkxNYXhDYWxsRGVwdGhSZWFjaGVkAAUIIQFQZXJmb3JtaW5nIGEgY2FsbCB3YXMgZGVuaWVkIGJlY2F1c2UgdGhlIGNhbGxpbmcgZGVwdGggcmVhY2hlZCB0aGUgbGltaXSUb2Ygd2hhdCBpcyBzcGVjaWZpZWQgaW4gdGhlIHNjaGVkdWxlLkBDb250cmFjdE5vdEZvdW5kAAYEvE5vIGNvbnRyYWN0IHdhcyBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuMENvZGVOb3RGb3VuZAAHBMRObyBjb2RlIGNvdWxkIGJlIGZvdW5kIGF0IHRoZSBzdXBwbGllZCBjb2RlIGhhc2guQENvZGVJbmZvTm90Rm91bmQACATYTm8gY29kZSBpbmZvIGNvdWxkIGJlIGZvdW5kIGF0IHRoZSBzdXBwbGllZCBjb2RlIGhhc2guLE91dE9mQm91bmRzAAkEJQFBIGJ1ZmZlciBvdXRzaWRlIG9mIHNhbmRib3ggbWVtb3J5IHdhcyBwYXNzZWQgdG8gYSBjb250cmFjdCBBUEkgZnVuY3Rpb24uOERlY29kaW5nRmFpbGVkAAoEKQFJbnB1dCBwYXNzZWQgdG8gYSBjb250cmFjdCBBUEkgZnVuY3Rpb24gZmFpbGVkIHRvIGRlY29kZSBhcyBleHBlY3RlZCB0eXBlLjxDb250cmFjdFRyYXBwZWQACwSIQ29udHJhY3QgdHJhcHBlZCBkdXJpbmcgZXhlY3V0aW9uLjRWYWx1ZVRvb0xhcmdlAAwE9EV2ZW50IGJvZHkgb3Igc3RvcmFnZSBpdGVtIGV4Y2VlZHMgW2BsaW1pdHM6OlNUT1JBR0VfQllURVNgXS5gVGVybWluYXRlZFdoaWxlUmVlbnRyYW50AA0IGQFUZXJtaW5hdGlvbiBvZiBhIGNvbnRyYWN0IGlzIG5vdCBhbGxvd2VkIHdoaWxlIHRoZSBjb250cmFjdCBpcyBhbHJlYWR54G9uIHRoZSBjYWxsIHN0YWNrLiBDYW4gYmUgdHJpZ2dlcmVkIGJ5IGBzZWFsX3Rlcm1pbmF0ZWAuOElucHV0Rm9yd2FyZGVkAA4EQQFgc2VhbF9jYWxsYCBmb3J3YXJkZWQgdGhpcyBjb250cmFjdHMgaW5wdXQuIEl0IHRoZXJlZm9yZSBpcyBubyBsb25nZXIgYXZhaWxhYmxlLjRUb29NYW55VG9waWNzAA8EHQFUaGUgYW1vdW50IG9mIHRvcGljcyBwYXNzZWQgdG8gYHNlYWxfZGVwb3NpdF9ldmVudHNgIGV4Y2VlZHMgdGhlIGxpbWl0LkREdXBsaWNhdGVDb250cmFjdAASBMhBIGNvbnRyYWN0IHdpdGggdGhlIHNhbWUgQWNjb3VudElkIGFscmVhZHkgZXhpc3RzLlxUZXJtaW5hdGVkSW5Db25zdHJ1Y3RvcgATDLhBIGNvbnRyYWN0IHNlbGYgZGVzdHJ1Y3RlZCBpbiBpdHMgY29uc3RydWN0b3IuANBUaGlzIGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBjYWxsIHRvIGBzZWFsX3Rlcm1pbmF0ZWAuQFJlZW50cmFuY2VEZW5pZWQAFAQNAUEgY2FsbCB0cmllZCB0byBpbnZva2UgYSBjb250cmFjdCB0aGF0IGlzIGZsYWdnZWQgYXMgbm9uLXJlZW50cmFudC48UmVlbnRlcmVkUGFsbGV0ABUELQFBIGNvbnRyYWN0IGNhbGxlZCBpbnRvIHRoZSBydW50aW1lIHdoaWNoIHRoZW4gY2FsbGVkIGJhY2sgaW50byB0aGlzIHBhbGxldC5EU3RhdGVDaGFuZ2VEZW5pZWQAFgRNAUEgY29udHJhY3QgYXR0ZW1wdGVkIHRvIGludm9rZSBhIHN0YXRlIG1vZGlmeWluZyBBUEkgd2hpbGUgYmVpbmcgaW4gcmVhZC1vbmx5IG1vZGUucFN0b3JhZ2VEZXBvc2l0Tm90RW5vdWdoRnVuZHMAFwQhAU9yaWdpbiBkb2Vzbid0IGhhdmUgZW5vdWdoIGJhbGFuY2UgdG8gcGF5IHRoZSByZXF1aXJlZCBzdG9yYWdlIGRlcG9zaXRzLnBTdG9yYWdlRGVwb3NpdExpbWl0RXhoYXVzdGVkABgEDQFNb3JlIHN0b3JhZ2Ugd2FzIGNyZWF0ZWQgdGhhbiBhbGxvd2VkIGJ5IHRoZSBzdG9yYWdlIGRlcG9zaXQgbGltaXQuJENvZGVJblVzZQAZBEkBQ29kZSByZW1vdmFsIHdhcyBkZW5pZWQgYmVjYXVzZSB0aGUgY29kZSBpcyBzdGlsbCBpbiB1c2UgYnkgYXQgbGVhc3Qgb25lIGNvbnRyYWN0LkBDb250cmFjdFJldmVydGVkABoQJQFUaGUgY29udHJhY3QgcmFuIHRvIGNvbXBsZXRpb24gYnV0IGRlY2lkZWQgdG8gcmV2ZXJ0IGl0cyBzdG9yYWdlIGNoYW5nZXMuSQFQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZXJyb3IgaXMgb25seSByZXR1cm5lZCBmcm9tIGV4dHJpbnNpY3MuIFdoZW4gY2FsbGVkIGRpcmVjdGx5XQFvciB2aWEgUlBDIGFuIGBPa2Agd2lsbCBiZSByZXR1cm5lZC4gSW4gdGhpcyBjYXNlIHRoZSBjYWxsZXIgbmVlZHMgdG8gaW5zcGVjdCB0aGUgZmxhZ3PEdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSByZXZlcnNpb24gaGFzIHRha2VuIHBsYWNlLjBDb2RlUmVqZWN0ZWQAGxAZAVRoZSBjb250cmFjdCBmYWlsZWQgdG8gY29tcGlsZSBvciBpcyBtaXNzaW5nIHRoZSBjb3JyZWN0IGVudHJ5IHBvaW50cy4AUQFBIG1vcmUgZGV0YWlsZWQgZXJyb3IgY2FuIGJlIGZvdW5kIG9uIHRoZSBub2RlIGNvbnNvbGUgaWYgZGVidWcgbWVzc2FnZXMgYXJlIGVuYWJsZWScYnkgc3VwcGx5aW5nIGAtbHJ1bnRpbWU6OnJldml2ZT1kZWJ1Z2AuMEJsb2JUb29MYXJnZQAcBA0BVGhlIGNvZGUgYmxvYiBzdXBwbGllZCBpcyBsYXJnZXIgdGhhbiBbYGxpbWl0czo6Y29kZTo6QkxPQl9CWVRFU2BdLlBTdGF0aWNNZW1vcnlUb29MYXJnZQAdBOBUaGUgY29udHJhY3QgZGVjbGFyZXMgdG9vIG11Y2ggbWVtb3J5IChybyArIHJ3ICsgc3RhY2spLkhCYXNpY0Jsb2NrVG9vTGFyZ2UAHgT8VGhlIHByb2dyYW0gY29udGFpbnMgYSBiYXNpYyBibG9jayB0aGF0IGlzIGxhcmdlciB0aGFuIGFsbG93ZWQuSEludmFsaWRJbnN0cnVjdGlvbgAfBLBUaGUgcHJvZ3JhbSBjb250YWlucyBhbiBpbnZhbGlkIGluc3RydWN0aW9uLnhNYXhEZWxlZ2F0ZURlcGVuZGVuY2llc1JlYWNoZWQAIAQVAVRoZSBjb250cmFjdCBoYXMgcmVhY2hlZCBpdHMgbWF4aW11bSBudW1iZXIgb2YgZGVsZWdhdGUgZGVwZW5kZW5jaWVzLmhEZWxlZ2F0ZURlcGVuZGVuY3lOb3RGb3VuZAAhBBUBVGhlIGRlcGVuZGVuY3kgd2FzIG5vdCBmb3VuZCBpbiB0aGUgY29udHJhY3QncyBkZWxlZ2F0ZSBkZXBlbmRlbmNpZXMufERlbGVnYXRlRGVwZW5kZW5jeUFscmVhZHlFeGlzdHMAIgT4VGhlIGNvbnRyYWN0IGFscmVhZHkgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gZGVsZWdhdGUgZGVwZW5kZW5jeS6EQ2Fubm90QWRkU2VsZkFzRGVsZWdhdGVEZXBlbmRlbmN5ACMEKQFDYW4gbm90IGFkZCBhIGRlbGVnYXRlIGRlcGVuZGVuY3kgdG8gdGhlIGNvZGUgaGFzaCBvZiB0aGUgY29udHJhY3QgaXRzZWxmLlRPdXRPZlRyYW5zaWVudFN0b3JhZ2UAJASsQ2FuIG5vdCBhZGQgbW9yZSBkYXRhIHRvIHRyYW5zaWVudCBzdG9yYWdlLjhJbnZhbGlkU3lzY2FsbAAlBFUBVGhlIGNvbnRyYWN0IHRyaWVkIHRvIGNhbGwgYSBzeXNjYWxsIHdoaWNoIGRvZXMgbm90IGV4aXN0IChhdCBpdHMgY3VycmVudCBhcGkgbGV2ZWwpLkxJbnZhbGlkU3RvcmFnZUZsYWdzACYEBQFJbnZhbGlkIHN0b3JhZ2UgZmxhZ3Mgd2VyZSBwYXNzZWQgdG8gb25lIG9mIHRoZSBzdG9yYWdlIHN5c2NhbGxzLjxFeGVjdXRpb25GYWlsZWQAJwQpAVBvbGthVk0gZmFpbGVkIGR1cmluZyBjb2RlIGV4ZWN1dGlvbi4gUHJvYmFibHkgZHVlIHRvIGEgbWFsZm9ybWVkIHByb2dyYW0uXEJhbGFuY2VDb252ZXJzaW9uRmFpbGVkACgEmEZhaWxlZCB0byBjb252ZXJ0IGEgVTI1NiB0byBhIEJhbGFuY2UuWEludmFsaWRJbW11dGFibGVBY2Nlc3MAKggxAUltbXV0YWJsZSBkYXRhIGNhbiBvbmx5IGJlIHNldCBkdXJpbmcgZGVwbG95cyBhbmQgb25seSBiZSByZWFkIGR1cmluZyBjYWxscy41AUFkZGl0aW9uYWxseSwgaXQgaXMgb25seSB2YWxpZCB0byBzZXQgdGhlIGRhdGEgb25jZSBhbmQgaXQgbXVzdCBub3QgYmUgZW1wdHkuPEFjY291bnRVbm1hcHBlZAArDFEBQW4gYEFjY291bnRJRDMyYCBhY2NvdW50IHRyaWVkIHRvIGludGVyYWN0IHdpdGggdGhlIHBhbGxldCB3aXRob3V0IGhhdmluZyBhIG1hcHBpbmcuACkBQ2FsbCBbYFBhbGxldDo6bWFwX2FjY291bnRgXSBpbiBvcmRlciB0byBjcmVhdGUgYSBtYXBwaW5nIGZvciB0aGUgYWNjb3VudC5QQWNjb3VudEFscmVhZHlNYXBwZWQALAS8VHJpZWQgdG8gbWFwIGFuIGFjY291bnQgdGhhdCBpcyBhbHJlYWR5IG1hcHBlZC5kSW52YWxpZEdlbmVyaWNUcmFuc2FjdGlvbgAtBNhUaGUgdHJhbnNhY3Rpb24gdXNlZCB0byBkcnktcnVuIGEgY29udHJhY3QgaXMgaW52YWxpZC5cUmVmY291bnRPdmVyT3JVbmRlcmZsb3cALgTIVGhlIHJlZmNvdW50IG9mIGEgY29kZSBlaXRoZXIgb3ZlciBvciB1bmRlcmZsb3dlZC5wVW5zdXBwb3J0ZWRQcmVjb21waWxlQWRkcmVzcwAvBHxVbnN1cHBvcnRlZCBwcmVjb21waWxlIGFkZHJlc3MuQENhbGxEYXRhVG9vTGFyZ2UAMATAVGhlIGNhbGxkYXRhIGV4Y2VlZHMgW2BsaW1pdHM6OkNBTExEQVRBX0JZVEVTYF0uSFJldHVybkRhdGFUb29MYXJnZQAxBMxUaGUgcmV0dXJuIGRhdGEgZXhjZWVkcyBbYGxpbWl0czo6Q0FMTERBVEFfQllURVNgXS4sSW52YWxpZEp1bXAAMgQ5AUludmFsaWQganVtcCBkZXN0aW5hdGlvbi4gRHluYW1pYyBqdW1wcyBwb2ludHMgdG8gaW52YWxpZCBub3QganVtcGRlc3Qgb3Bjb2RlLjhTdGFja1VuZGVyZmxvdwAzBLhBdHRlbXB0aW5nIHRvIHBvcCBhIHZhbHVlIGZyb20gYW4gZW1wdHkgc3RhY2suNFN0YWNrT3ZlcmZsb3cANAS0QXR0ZW1wdGluZyB0byBwdXNoIGEgdmFsdWUgb250byBhIGZ1bGwgc3RhY2suNFR4RmVlT3ZlcmRyYXcANQwRAVRvbyBtdWNoIGRlcG9zaXQgd2FzIGRyYXduIGZyb20gdGhlIHNoYXJlZCB0eGZlZSBhbmQgZGVwb3NpdCBjcmVkaXQuADEBVGhpcyBoYXBwZW5zIGlmIHRoZSBwYXNzZWQgYGdhc2AgaW5zaWRlIHRoZSBldGhlcmV1bSB0cmFuc2FjdGlvbiBpcyB0b28gbG93LmhFdm1Db25zdHJ1Y3Rvck5vbkVtcHR5RGF0YQA2DNxXaGVuIGNhbGxpbmcgYW4gRVZNIGNvbnN0cnVjdG9yIGBkYXRhYCBoYXMgdG8gYmUgZW1wdHkuAFkBRVZNIGNvbnN0cnVjdG9ycyBkbyBub3QgYWNjZXB0IGRhdGEuIFRoZWlyIGlucHV0IGRhdGEgaXMgcGFydCBvZiB0aGUgY29kZSBibG9iIGl0c2VsZi5YRXZtQ29uc3RydWN0ZWRGcm9tSGFzaAA3EMRUcmllZCB0byBjb25zdHJ1Y3QgYW4gRVZNIGNvbnRyYWN0IHZpYSBjb2RlIGhhc2guACEBRVZNIGNvbnRyYWN0cyBjYW4gb25seSBiZSBpbnN0YW50aWF0ZWQgdmlhIGNvZGUgdXBsb2FkIGFzIG5vIGluaXRjb2RlIGlzQHN0b3JlZCBvbi1jaGFpbi5sU3RvcmFnZVJlZnVuZE5vdEVub3VnaEZ1bmRzADgMIQFUaGUgY29udHJhY3QgZG9lcyBub3QgaGF2ZSBlbm91Z2ggYmFsYW5jZSB0byByZWZ1bmQgdGhlIHN0b3JhZ2UgZGVwb3NpdC4APQFUaGlzIGlzIGEgYnVnIGFuZCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBJdCBtZWFucyB0aGUgYWNjb3VudGluZyBnb3Qgb3V0IG9mIHN5bmMuTFN0b3JhZ2VSZWZ1bmRMb2NrZWQAORBdAVRoaXMgbWVhbnMgdGhlcmUgYXJlIGxvY2tzIG9uIHRoZSBjb250cmFjdHMgc3RvcmFnZSBkZXBvc2l0IHRoYXQgcHJldmVudHMgcmVmdW5kaW5nIGl0LgA9AVRoaXMgd291bGQgYmUgdGhlIGNhc2UgaWYgdGhlIGNvbnRyYWN0IHVzZWQgaXRzIHN0b3JhZ2UgZGVwb3NpdHMgZm9yIGdvdmVybmFuY2X0b3Igb3RoZXIgcGFsbGV0cyB0aGF0IGFsbG93IGNyZWF0aW5nIGxvY2tzIG92ZXIgaGVsZCBiYWxhbmNlLmBQcmVjb21waWxlRGVsZWdhdGVEZW5pZWQAQBD8Q2FsbGVkIGEgcHJlLWNvbXBpbGUgdGhhdCBpcyBub3QgYWxsb3dlZCB0byBiZSBkZWxlZ2F0ZSBjYWxsZWQuACUBU29tZSBwcmUtY29tcGlsZSBmdW5jdGlvbnMgd2lsbCB0cmFwIHRoZSBjYWxsZXIgY29udGV4dCBpZiBiZWluZyBkZWxlZ2F0ZdBjYWxsZWQgb3IgaWYgdGhlaXIgY2FsbGVyIHdhcyBiZWluZyBkZWxlZ2F0ZSBjYWxsZWQuTEVjZHNhUmVjb3ZlcnlGYWlsZWQAQQQ9AUVDRFNBIHB1YmxpYyBrZXkgcmVjb3ZlcnkgZmFpbGVkLiBNb3N0IHByb2JhYmx5IHdyb25nIHJlY292ZXJ5IGlkIG9yIHNpZ25hdHVyZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuOREIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFJld2FyZFBvb2wEBFQAABQBcGxhc3RfcmVjb3JkZWRfcmV3YXJkX2NvdW50ZXKBBwFAVDo6UmV3YXJkQ291bnRlcgABbGxhc3RfcmVjb3JkZWRfdG90YWxfcGF5b3V0c5UBATBCYWxhbmNlT2Y8VD4AAVR0b3RhbF9yZXdhcmRzX2NsYWltZWSVAQEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9wZW5kaW5nlQEBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fY2xhaW1lZJUBATBCYWxhbmNlT2Y8VD4AAD0RCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBTdWJQb29scwQEVAAACAEYbm9fZXJhQREBNFVuYm9uZFBvb2w8VD4AASB3aXRoX2VyYUURAQEBQm91bmRlZEJUcmVlTWFwPEVyYUluZGV4LCBVbmJvbmRQb29sPFQ+LCBUb3RhbFVuYm9uZGluZ1Bvb2xzPFQ+PgAAQREIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFVuYm9uZFBvb2wEBFQAAAgBGHBvaW50c5UBATBCYWxhbmNlT2Y8VD4AARxiYWxhbmNllQEBMEJhbGFuY2VPZjxUPgAARREMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgFBEQRTAAAEAEkRAThCVHJlZU1hcDxLLCBWPgAASREEIEJUcmVlTWFwCARLATgEVgFBEQAEAE0RAAAATREAAAJREQBREQAABAg4QREAVREMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFcnJvcgQEVAABmDBQb29sTm90Rm91bmQAAASIQSAoYm9uZGVkKSBwb29sIGlkIGRvZXMgbm90IGV4aXN0LkhQb29sTWVtYmVyTm90Rm91bmQAAQRsQW4gYWNjb3VudCBpcyBub3QgYSBtZW1iZXIuSFJld2FyZFBvb2xOb3RGb3VuZAACBCEBQSByZXdhcmQgcG9vbCBkb2VzIG5vdCBleGlzdC4gSW4gYWxsIGNhc2VzIHRoaXMgaXMgYSBzeXN0ZW0gbG9naWMgZXJyb3IuQFN1YlBvb2xzTm90Rm91bmQAAwRoQSBzdWIgcG9vbCBkb2VzIG5vdCBleGlzdC5kQWNjb3VudEJlbG9uZ3NUb090aGVyUG9vbAAECE0BQW4gYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcgaW4gYW5vdGhlciBwb29sLiBBbiBhY2NvdW50IG1heSBvbmx5IGJlbG9uZyB0byBvbmU8cG9vbCBhdCBhIHRpbWUuOEZ1bGx5VW5ib25kaW5nAAUIPQFUaGUgbWVtYmVyIGlzIGZ1bGx5IHVuYm9uZGVkIChhbmQgdGh1cyBjYW5ub3QgYWNjZXNzIHRoZSBib25kZWQgYW5kIHJld2FyZCBwb29sqGFueW1vcmUgdG8sIGZvciBleGFtcGxlLCBjb2xsZWN0IHJld2FyZHMpLkRNYXhVbmJvbmRpbmdMaW1pdAAGBAkBVGhlIG1lbWJlciBjYW5ub3QgdW5ib25kIGZ1cnRoZXIgY2h1bmtzIGR1ZSB0byByZWFjaGluZyB0aGUgbGltaXQuRENhbm5vdFdpdGhkcmF3QW55AAcETQFOb25lIG9mIHRoZSBmdW5kcyBjYW4gYmUgd2l0aGRyYXduIHlldCBiZWNhdXNlIHRoZSBib25kaW5nIGR1cmF0aW9uIGhhcyBub3QgcGFzc2VkLkRNaW5pbXVtQm9uZE5vdE1ldAAIFCkBVGhlIGFtb3VudCBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbXVtIGJvbmQgdG8gZWl0aGVyIGpvaW4gb3IgY3JlYXRlIGEgcG9vbC4AVQFUaGUgZGVwb3NpdG9yIGNhbiBuZXZlciB1bmJvbmQgdG8gYSB2YWx1ZSBsZXNzIHRoYW4gYFBhbGxldDo6ZGVwb3NpdG9yX21pbl9ib25kYC4gVGhlXQFjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC4gTWVtYmVycyBjYW4gbmV2ZXIgdW5ib25kIHRvIGFodmFsdWUgYmVsb3cgYE1pbkpvaW5Cb25kYC4wT3ZlcmZsb3dSaXNrAAkEIQFUaGUgdHJhbnNhY3Rpb24gY291bGQgbm90IGJlIGV4ZWN1dGVkIGR1ZSB0byBvdmVyZmxvdyByaXNrIGZvciB0aGUgcG9vbC40Tm90RGVzdHJveWluZwAKCF0BQSBwb29sIG11c3QgYmUgaW4gW2BQb29sU3RhdGU6OkRlc3Ryb3lpbmdgXSBpbiBvcmRlciBmb3IgdGhlIGRlcG9zaXRvciB0byB1bmJvbmQgb3IgZm9yuG90aGVyIG1lbWJlcnMgdG8gYmUgcGVybWlzc2lvbmxlc3NseSB1bmJvbmRlZC4wTm90Tm9taW5hdG9yAAsE9FRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC5UTm90S2lja2VyT3JEZXN0cm95aW5nAAwEPQFFaXRoZXIgYSkgdGhlIGNhbGxlciBjYW5ub3QgbWFrZSBhIHZhbGlkIGtpY2sgb3IgYikgdGhlIHBvb2wgaXMgbm90IGRlc3Ryb3lpbmcuHE5vdE9wZW4ADQRwVGhlIHBvb2wgaXMgbm90IG9wZW4gdG8gam9pbiBNYXhQb29scwAOBIRUaGUgc3lzdGVtIGlzIG1heGVkIG91dCBvbiBwb29scy44TWF4UG9vbE1lbWJlcnMADwScVG9vIG1hbnkgbWVtYmVycyBpbiB0aGUgcG9vbCBvciBzeXN0ZW0uRENhbk5vdENoYW5nZVN0YXRlABAEiFRoZSBwb29scyBzdGF0ZSBjYW5ub3QgYmUgY2hhbmdlZC5URG9lc05vdEhhdmVQZXJtaXNzaW9uABEEuFRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBhZGVxdWF0ZSBwZXJtaXNzaW9ucy5UTWV0YWRhdGFFeGNlZWRzTWF4TGVuABIErE1ldGFkYXRhIGV4Y2VlZHMgW2BDb25maWc6Ok1heE1ldGFkYXRhTGVuYF0kRGVmZW5zaXZlBABZEQE4RGVmZW5zaXZlRXJyb3IAEwgxAVNvbWUgZXJyb3Igb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBUaGlzIHNob3VsZCBiZSByZXBvcnRlZCB0byB0aGUwbWFpbnRhaW5lcnMunFBhcnRpYWxVbmJvbmROb3RBbGxvd2VkUGVybWlzc2lvbmxlc3NseQAUBLxQYXJ0aWFsIHVuYm9uZGluZyBub3cgYWxsb3dlZCBwZXJtaXNzaW9ubGVzc2x5LlxNYXhDb21taXNzaW9uUmVzdHJpY3RlZAAVBB0BVGhlIHBvb2wncyBtYXggY29tbWlzc2lvbiBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIHRoZSBleGlzdGluZyB2YWx1ZS5gQ29tbWlzc2lvbkV4Y2VlZHNNYXhpbXVtABYE7FRoZSBzdXBwbGllZCBjb21taXNzaW9uIGV4Y2VlZHMgdGhlIG1heCBhbGxvd2VkIGNvbW1pc3Npb24ueENvbW1pc3Npb25FeGNlZWRzR2xvYmFsTWF4aW11bQAXBOhUaGUgc3VwcGxpZWQgY29tbWlzc2lvbiBleGNlZWRzIGdsb2JhbCBtYXhpbXVtIGNvbW1pc3Npb24uZENvbW1pc3Npb25DaGFuZ2VUaHJvdHRsZWQAGAQJAU5vdCBlbm91Z2ggYmxvY2tzIGhhdmUgc3VycGFzc2VkIHNpbmNlIHRoZSBsYXN0IGNvbW1pc3Npb24gdXBkYXRlLnhDb21taXNzaW9uQ2hhbmdlUmF0ZU5vdEFsbG93ZWQAGQQBAVRoZSBzdWJtaXR0ZWQgY2hhbmdlcyB0byBjb21taXNzaW9uIGNoYW5nZSByYXRlIGFyZSBub3QgYWxsb3dlZC5MTm9QZW5kaW5nQ29tbWlzc2lvbgAaBKBUaGVyZSBpcyBubyBwZW5kaW5nIGNvbW1pc3Npb24gdG8gY2xhaW0uWE5vQ29tbWlzc2lvbkN1cnJlbnRTZXQAGwSMTm8gY29tbWlzc2lvbiBjdXJyZW50IGhhcyBiZWVuIHNldC4sUG9vbElkSW5Vc2UAHARkUG9vbCBpZCBjdXJyZW50bHkgaW4gdXNlLjRJbnZhbGlkUG9vbElkAB0EnFBvb2wgaWQgcHJvdmlkZWQgaXMgbm90IGNvcnJlY3QvdXNhYmxlLkxCb25kRXh0cmFSZXN0cmljdGVkAB4E/EJvbmRpbmcgZXh0cmEgaXMgcmVzdHJpY3RlZCB0byB0aGUgZXhhY3QgcGVuZGluZyByZXdhcmQgYW1vdW50LjxOb3RoaW5nVG9BZGp1c3QAHwSwTm8gaW1iYWxhbmNlIGluIHRoZSBFRCBkZXBvc2l0IGZvciB0aGUgcG9vbC44Tm90aGluZ1RvU2xhc2gAIATMTm8gc2xhc2ggcGVuZGluZyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIHRoZSBtZW1iZXIuLFNsYXNoVG9vTG93ACEEqFRoZSBzbGFzaCBhbW91bnQgaXMgdG9vIGxvdyB0byBiZSBhcHBsaWVkLjxBbHJlYWR5TWlncmF0ZWQAIgQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBhbHJlYWR5IG1pZ3JhdGVkIHRvIGRlbGVnYXRlIHN0YWtlLixOb3RNaWdyYXRlZAAjBBUBVGhlIHBvb2wgb3IgbWVtYmVyIGRlbGVnYXRpb24gaGFzIG5vdCBtaWdyYXRlZCB5ZXQgdG8gZGVsZWdhdGUgc3Rha2UuME5vdFN1cHBvcnRlZAAkBPBUaGlzIGNhbGwgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbGxldC4oUmVzdHJpY3RlZAAlCFEBQWNjb3VudCBpcyByZXN0cmljdGVkIGZyb20gcGFydGljaXBhdGlvbiBpbiBwb29scy4gVGhpcyBtYXkgaGFwcGVuIGlmIHRoZSBhY2NvdW50IGlzfHN0YWtpbmcgaW4gYW5vdGhlciB3YXkgYWxyZWFkeS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuWREMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDhEZWZlbnNpdmVFcnJvcgABHGhOb3RFbm91Z2hTcGFjZUluVW5ib25kUG9vbAAAADBQb29sTm90Rm91bmQAAQBIUmV3YXJkUG9vbE5vdEZvdW5kAAIAQFN1YlBvb2xzTm90Rm91bmQAAwBwQm9uZGVkU3Rhc2hLaWxsZWRQcmVtYXR1cmVseQAEAFREZWxlZ2F0aW9uVW5zdXBwb3J0ZWQABQA8U2xhc2hOb3RBcHBsaWVkAAYAAF0RDEBwYWxsZXRfYmFnc19saXN0EGxpc3QQTm9kZQgEVAAESQAAFAEIaWQEATBUOjpBY2NvdW50SWQAARBwcmV2QQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEQbmV4dEEBAVBPcHRpb248VDo6QWNjb3VudElkPgABJGJhZ191cHBlcigBIFQ6OlNjb3JlAAEUc2NvcmUoASBUOjpTY29yZQAAYREMQHBhbGxldF9iYWdzX2xpc3QQbGlzdAxCYWcIBFQABEkAAAgBEGhlYWRBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARB0YWlsQQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AABlEQAAAigAaREMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEVycm9yCARUAARJAAEIEExpc3QEAG0RASRMaXN0RXJyb3IAAAS0QSBlcnJvciBpbiB0aGUgbGlzdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uGExvY2tlZAABBNhDb3VsZCBub3QgdXBkYXRlIGEgbm9kZSwgYmVjYXVzZSB0aGUgcGFsbGV0IGlzIGxvY2tlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQubREMQHBhbGxldF9iYWdzX2xpc3QQbGlzdCRMaXN0RXJyb3IAARQkRHVwbGljYXRlAAAAKE5vdEhlYXZpZXIAAQAwTm90SW5TYW1lQmFnAAIAME5vZGVOb3RGb3VuZAADABhMb2NrZWQABAAAcREAAAQIZQFlAQB1EQxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nFHR5cGVzKERlbGVnYXRpb24EBFQAAAgBFGFnZW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBMEJhbGFuY2VPZjxUPgAAeREMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyxBZ2VudExlZGdlcgQEVAAAEAEUcGF5ZWUEATBUOjpBY2NvdW50SWQAATx0b3RhbF9kZWxlZ2F0ZWSRAQEwQmFsYW5jZU9mPFQ+AAFUdW5jbGFpbWVkX3dpdGhkcmF3YWxzkQEBMEJhbGFuY2VPZjxUPgABNHBlbmRpbmdfc2xhc2iRAQEwQmFsYW5jZU9mPFQ+AAB9EQxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldBRFcnJvcgQEVAABMChOb3RBbGxvd2VkAAAEqFRoZSBhY2NvdW50IGNhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uLjhBbHJlYWR5U3Rha2luZwABBLhBbiBleGlzdGluZyBzdGFrZXIgY2Fubm90IHBlcmZvcm0gdGhpcyBhY3Rpb24uYEludmFsaWRSZXdhcmREZXN0aW5hdGlvbgACBNRSZXdhcmQgRGVzdGluYXRpb24gY2Fubm90IGJlIHNhbWUgYXMgYEFnZW50YCBhY2NvdW50LkRJbnZhbGlkRGVsZWdhdGlvbgADFIhEZWxlZ2F0aW9uIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuAExQb3NzaWJsZSBpc3N1ZXMgYXJlbDEpIENhbm5vdCBkZWxlZ2F0ZSB0byBzZWxmLKQyKSBDYW5ub3QgZGVsZWdhdGUgdG8gbXVsdGlwbGUgZGVsZWdhdGVzLjhOb3RFbm91Z2hGdW5kcwAEBAEBVGhlIGFjY291bnQgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLiBOb3RBZ2VudAAFBIBOb3QgYW4gZXhpc3RpbmcgYEFnZW50YCBhY2NvdW50LjBOb3REZWxlZ2F0b3IABgRgTm90IGEgRGVsZWdhdG9yIGFjY291bnQuIEJhZFN0YXRlAAcEiFNvbWUgY29ycnVwdGlvbiBpbiBpbnRlcm5hbCBzdGF0ZS44VW5hcHBsaWVkU2xhc2gACATcVW5hcHBsaWVkIHBlbmRpbmcgc2xhc2ggcmVzdHJpY3RzIG9wZXJhdGlvbiBvbiBgQWdlbnRgLjhOb3RoaW5nVG9TbGFzaAAJBKxgQWdlbnRgIGhhcyBubyBwZW5kaW5nIHNsYXNoIHRvIGJlIGFwcGxpZWQuOFdpdGhkcmF3RmFpbGVkAAoEsEZhaWxlZCB0byB3aXRoZHJhdyBhbW91bnQgZnJvbSBDb3JlIFN0YWtpbmcuME5vdFN1cHBvcnRlZAALBJxPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIHBhbGxldC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQugREAAAQIhRE4AIURCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnRIVmFsaWRhdG9yU2V0UmVwb3J0BCRBY2NvdW50SWQBBAAQAURuZXdfdmFsaWRhdG9yX3NldJ0BAThWZWM8QWNjb3VudElkPgABCGlkOAEMdTMyAAEscHJ1bmVfdXBfdG/YAVBPcHRpb248U2Vzc2lvbkluZGV4PgABIGxlZnRvdmVymQEBEGJvb2wAAIkRDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0FEVycm9yBARUAAEUNFhjbVNlbmRGYWlsZWQAAAS4RmFpbGVkIHRvIHNlbmQgWENNIG1lc3NhZ2UgdG8gdGhlIFJlbGF5IENoYWluLjBOb3RWYWxpZGF0b3IAARTEVGhlIG9yaWdpbiBhY2NvdW50IGlzIG5vdCBhIHJlZ2lzdGVyZWQgdmFsaWRhdG9yLgBZAU9ubHkgYWNjb3VudHMgdGhhdCBoYXZlIGNhbGxlZCBgdmFsaWRhdGUoKWAgY2FuIHNldCBvciBwdXJnZSBzZXNzaW9uIGtleXMuIFdoZW4gY2FsbGVkSQF2aWEgYSBzdGFraW5nIHByb3h5LCB0aGUgb3JpZ2luIGlzIHRoZSBkZWxlZ2F0aW5nIGFjY291bnQgKHN0YXNoKSwgd2hpY2ggbXVzdCBiZSBhVHJlZ2lzdGVyZWQgdmFsaWRhdG9yLixJbnZhbGlkS2V5cwACBEUBVGhlIHNlc3Npb24ga2V5cyBjb3VsZCBub3QgYmUgZGVjb2RlZCBhcyB0aGUgZXhwZWN0ZWQgUmVsYXlDaGFpblNlc3Npb25LZXlzIHR5cGUuMEludmFsaWRQcm9vZgADBNBUaGUgb3duZXJzaGlwIHByb29mIGZvciB0aGUgc2Vzc2lvbiBrZXlzIGlzIGludmFsaWQuPEZlZXNFeGNlZWRlZE1heAAEBLREZWxpdmVyeSBmZWVzIGV4Y2VlZGVkIHRoZSBzcGVjaWZpZWQgbWF4aW11bS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQujREMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGREQRTAAAEAJkRARhWZWM8VD4AAJERAAAEDAQolREAlREMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAnQEBGFZlYzxUPgAAmREAAAKREQCdEQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABACdAQEYVmVjPFQ+AAChEQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBRFcnJvcgQEVAABDCBGYWxsYmFjawAABIRUcmlnZ2VyaW5nIHRoZSBgRmFsbGJhY2tgIGZhaWxlZC48VW5leHBlY3RlZFBoYXNlAAEEQFVuZXhwZWN0ZWQgcGhhc2UgU25hcHNob3QAAgRkU25hcHNob3Qgd2FzIHVuYXZhaWxhYmxlLgQNAUVycm9yIG9mIHRoZSBwYWxsZXQgdGhhdCBjYW4gYmUgcmV0dXJuZWQgaW4gcmVzcG9uc2UgdG8gZGlzcGF0Y2hlcy6lERCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzNFZhbGlkU29sdXRpb24AAQgEWAAAAARZAAEAAKkRDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBrREEUwAABAC1EQEYVmVjPFQ+AACtEQAABAgEsREAsREQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBsczxQYXJ0aWFsQmFja2luZ3MAAAgBFHRvdGFslQEBPEV4dGVuZGVkQmFsYW5jZQABHGJhY2tlcnM4AQx1MzIAALURAAACrREAuREQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhTdGF0dXMAAQgcT25nb2luZwQAOAEkUGFnZUluZGV4AAAAHE5vdGhpbmcAAQAAvREMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAnQEBGFZlYzxUPgAAwREMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHFEQRTAAAEAMkRARhWZWM8VD4AAMURAAAECASpBQDJEQAAAsURAM0RAAAEDDgEOADREQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZEhTdWJtaXNzaW9uTWV0YWRhdGEEBFQAABQBHGRlcG9zaXSVAQEwQmFsYW5jZU9mPFQ+AAEMZmVllQEBMEJhbGFuY2VPZjxUPgABGHJld2FyZJUBATBCYWxhbmNlT2Y8VD4AATRjbGFpbWVkX3Njb3JlqQUBNEVsZWN0aW9uU2NvcmUAARRwYWdlc9URAWhCb3VuZGVkVmVjPGJvb2wsIFQ6OlBhZ2VzPgAA1REMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZAQRTAAAEANkRARhWZWM8VD4AANkRAAACmQEA3REQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0FEVycm9yBARUAAEkOFBoYXNlTm90U2lnbmVkAAAEYFRoZSBwaGFzZSBpcyBub3Qgc2lnbmVkLiREdXBsaWNhdGUAAQR4VGhlIHN1Ym1pc3Npb24gaXMgYSBkdXBsaWNhdGUuJFF1ZXVlRnVsbAACBEhUaGUgcXVldWUgaXMgZnVsbC4wQmFkUGFnZUluZGV4AAMEgFRoZSBwYWdlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuNE5vdFJlZ2lzdGVyZWQABAR4VGhlIGFjY291bnQgaXMgbm90IHJlZ2lzdGVyZWQuME5vU3VibWlzc2lvbgAFBFBObyBzdWJtaXNzaW9uIGZvdW5kLjBSb3VuZE5vdE92ZXIABgRYUm91bmQgaXMgbm90IHlldCBvdmVyLjhCYWRXaXRuZXNzRGF0YQAHBGhCYWQgd2l0bmVzcyBkYXRhIHByb3ZpZGVkLlBUb29NYW55SW52dWxuZXJhYmxlcwAIBLBUb28gbWFueSBpbnZ1bG5lcmFibGUgYWNjb3VudHMgYXJlIHByb3ZpZGVkLASAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7hEQxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYbGVkZ2VyNFN0YWtpbmdMZWRnZXIEBFQAABABFHN0YXNoBAEwVDo6QWNjb3VudElkAAEUdG90YWyRAQEwQmFsYW5jZU9mPFQ+AAEYYWN0aXZlkQEBMEJhbGFuY2VPZjxUPgABJHVubG9ja2luZy0HAfBCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6Ok1heFVubG9ja2luZ0NodW5rcz4AAOURCFBwYWxsZXRfc3Rha2luZ19hc3luYyxOb21pbmF0aW9ucwQEVAAADAEcdGFyZ2V0c5URAbRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgTWF4Tm9taW5hdGlvbnNPZjxUPj4AATBzdWJtaXR0ZWRfaW44ASBFcmFJbmRleAABKHN1cHByZXNzZWSZAQEQYm9vbAAA6REIUHBhbGxldF9zdGFraW5nX2FzeW5jNEFjdGl2ZUVyYUluZm8AAAgBFGluZGV4OAEgRXJhSW5kZXgAARRzdGFydGUBASxPcHRpb248dTY0PgAA7REMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAH8BFMAAAQASQoBGFZlYzxUPgAA8REIKHNwX3N0YWtpbmdUUGFnZWRFeHBvc3VyZU1ldGFkYXRhBBxCYWxhbmNlAZUBABABFHRvdGFskQEBHEJhbGFuY2UAAQxvd26RAQEcQmFsYW5jZQABPG5vbWluYXRvcl9jb3VudDgBDHUzMgABKHBhZ2VfY291bnQ4ARBQYWdlAAD1ERBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldExCb3VuZGVkRXhwb3N1cmVQYWdlBARUAAAEAPkRAaBFeHBvc3VyZVBhZ2U8VDo6QWNjb3VudElkLCBCYWxhbmNlT2Y8VD4+AAD5EQgoc3Bfc3Rha2luZzBFeHBvc3VyZVBhZ2UIJEFjY291bnRJZAEEHEJhbGFuY2UBlQEACAEocGFnZV90b3RhbJEBARxCYWxhbmNlAAEYb3RoZXJz/REBrFZlYzxJbmRpdmlkdWFsRXhwb3N1cmU8QWNjb3VudElkLCBCYWxhbmNlPj4AAP0RAAACARIAARIIKHNwX3N0YWtpbmdISW5kaXZpZHVhbEV4cG9zdXJlCCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBAAgBDHdobwQBJEFjY291bnRJZAABFHZhbHVlkQEBHEJhbGFuY2UAAAUSDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBOARTAAAEAFUEARhWZWM8VD4AAAkSCFBwYWxsZXRfc3Rha2luZ19hc3luYzxFcmFSZXdhcmRQb2ludHMEBFQAAAgBFHRvdGFsOAEsUmV3YXJkUG9pbnQAAShpbmRpdmlkdWFsDRIB+EJvdW5kZWRCVHJlZU1hcDxUOjpBY2NvdW50SWQsIFJld2FyZFBvaW50LCBUOjpNYXhWYWxpZGF0b3JTZXQ+AAANEgxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX21hcDxCb3VuZGVkQlRyZWVNYXAMBEsBBARWATgEUwAABAAREgE4QlRyZWVNYXA8SywgVj4AABESBCBCVHJlZU1hcAgESwEEBFYBOAAEAF0FAAAAFRIMUHBhbGxldF9zdGFraW5nX2FzeW5jIHNsYXNoaW5nNE9mZmVuY2VSZWNvcmQEJEFjY291bnRJZAEEABQBIHJlcG9ydGVyQQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEwcmVwb3J0ZWRfZXJhOAEgRXJhSW5kZXgAATRleHBvc3VyZV9wYWdlOAEMdTMyAAE4c2xhc2hfZnJhY3Rpb24xBQEcUGVyYmlsbAABUHByaW9yX3NsYXNoX2ZyYWN0aW9uMQUBHFBlcmJpbGwAABkSDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBOARTAAAEAFUEARhWZWM8VD4AAB0SAAAEDDgEFRIAIRIAAAQIODkHACUSCFBwYWxsZXRfc3Rha2luZ19hc3luYzhVbmFwcGxpZWRTbGFzaAQEVAAAFAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkAAEMb3dulQEBMEJhbGFuY2VPZjxUPgABGG90aGVycykSAREBV2Vha0JvdW5kZWRWZWM8KFQ6OkFjY291bnRJZCwgQmFsYW5jZU9mPFQ+KSwgVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZT4AASByZXBvcnRlckEBAVBPcHRpb248VDo6QWNjb3VudElkPgABGHBheW91dJUBATBCYWxhbmNlT2Y8VD4AACkSDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBnQUEUwAABAChBQEYVmVjPFQ+AAAtEgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQ0HBFMAAAQACQcBGFZlYzxUPgAAMRIIUHBhbGxldF9zdGFraW5nX2FzeW5jOFNuYXBzaG90U3RhdHVzBCRBY2NvdW50SWQBBAEMHE9uZ29pbmcEAAQBJEFjY291bnRJZAAAACBDb25zdW1lZAABABxXYWl0aW5nAAIAADUSDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAEEBFMAAAQA9Q8BLEJUcmVlU2V0PFQ+AAA5EhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCxQcnVuaW5nU3RlcAABIEBFcmFzU3Rha2Vyc1BhZ2VkAAAATEVyYXNTdGFrZXJzT3ZlcnZpZXcAAQBIRXJhc1ZhbGlkYXRvclByZWZzAAIAOENsYWltZWRSZXdhcmRzAAMATEVyYXNWYWxpZGF0b3JSZXdhcmQABABARXJhc1Jld2FyZFBvaW50cwAFAExTaW5nbGVFbnRyeUNsZWFudXBzAAYATFZhbGlkYXRvclNsYXNoSW5FcmEABwAAPRIQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQURXJyb3IEBFQAAZA0Tm90Q29udHJvbGxlcgAABGROb3QgYSBjb250cm9sbGVyIGFjY291bnQuIE5vdFN0YXNoAAEEUE5vdCBhIHN0YXNoIGFjY291bnQuNEFscmVhZHlCb25kZWQAAgRgU3Rhc2ggaXMgYWxyZWFkeSBib25kZWQuNEFscmVhZHlQYWlyZWQAAwR0Q29udHJvbGxlciBpcyBhbHJlYWR5IHBhaXJlZC4wRW1wdHlUYXJnZXRzAAQEYFRhcmdldHMgY2Fubm90IGJlIGVtcHR5LjhEdXBsaWNhdGVJbmRleAAFBEBEdXBsaWNhdGUgaW5kZXguSEludmFsaWRTbGFzaFJlY29yZAAGBFxTbGFzaCByZWNvcmQgbm90IGZvdW5kLkBJbnN1ZmZpY2llbnRCb25kAAcMNQFDYW5ub3QgYm9uZCwgbm9taW5hdGUgb3IgdmFsaWRhdGUgd2l0aCB2YWx1ZSBsZXNzIHRoYW4gdGhlIG1pbmltdW0gZGVmaW5lZCBieT0BZ292ZXJuYW5jZSAoc2VlIGBNaW5WYWxpZGF0b3JCb25kYCBhbmQgYE1pbk5vbWluYXRvckJvbmRgKS4gSWYgdW5ib25kaW5nIGlzIHRoZRUBaW50ZW50aW9uLCBgY2hpbGxgIGZpcnN0IHRvIHJlbW92ZSBvbmUncyByb2xlIGFzIHZhbGlkYXRvci9ub21pbmF0b3IuME5vTW9yZUNodW5rcwAIBJBDYW4gbm90IHNjaGVkdWxlIG1vcmUgdW5sb2NrIGNodW5rcy40Tm9VbmxvY2tDaHVuawAJBKBDYW4gbm90IHJlYm9uZCB3aXRob3V0IHVubG9ja2luZyBjaHVua3MuMEZ1bmRlZFRhcmdldAAKBMhBdHRlbXB0aW5nIHRvIHRhcmdldCBhIHN0YXNoIHRoYXQgc3RpbGwgaGFzIGZ1bmRzLkhJbnZhbGlkRXJhVG9SZXdhcmQACwRYSW52YWxpZCBlcmEgdG8gcmV3YXJkLmhJbnZhbGlkTnVtYmVyT2ZOb21pbmF0aW9ucwAMBHhJbnZhbGlkIG51bWJlciBvZiBub21pbmF0aW9ucy44QWxyZWFkeUNsYWltZWQADQQJAVJld2FyZHMgZm9yIHRoaXMgZXJhIGhhdmUgYWxyZWFkeSBiZWVuIGNsYWltZWQgZm9yIHRoaXMgdmFsaWRhdG9yLixJbnZhbGlkUGFnZQAOBIRObyBub21pbmF0b3JzIGV4aXN0IG9uIHRoaXMgcGFnZS5USW5jb3JyZWN0SGlzdG9yeURlcHRoAA8EwEluY29ycmVjdCBwcmV2aW91cyBoaXN0b3J5IGRlcHRoIGlucHV0IHByb3ZpZGVkLiBCYWRTdGF0ZQAQBDkBSW50ZXJuYWwgc3RhdGUgaGFzIGJlY29tZSBzb21laG93IGNvcnJ1cHRlZCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3QgY29udGludWUuOFRvb01hbnlUYXJnZXRzABEElFRvbyBtYW55IG5vbWluYXRpb24gdGFyZ2V0cyBzdXBwbGllZC4kQmFkVGFyZ2V0ABIEPQFBIG5vbWluYXRpb24gdGFyZ2V0IHdhcyBzdXBwbGllZCB0aGF0IHdhcyBibG9ja2VkIG9yIG90aGVyd2lzZSBub3QgYSB2YWxpZGF0b3IuQENhbm5vdENoaWxsT3RoZXIAEwRVAVRoZSB1c2VyIGhhcyBlbm91Z2ggYm9uZCBhbmQgdGh1cyBjYW5ub3QgYmUgY2hpbGxlZCBmb3JjZWZ1bGx5IGJ5IGFuIGV4dGVybmFsIHBlcnNvbi5EVG9vTWFueU5vbWluYXRvcnMAFAhNAVRoZXJlIGFyZSB0b28gbWFueSBub21pbmF0b3JzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZSBzdGFraW5ntHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkRUb29NYW55VmFsaWRhdG9ycwAVCFUBVGhlcmUgYXJlIHRvbyBtYW55IHZhbGlkYXRvciBjYW5kaWRhdGVzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZdRzdGFraW5nIHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkBDb21taXNzaW9uVG9vTG93ABYE4ENvbW1pc3Npb24gaXMgdG9vIGxvdy4gTXVzdCBiZSBhdCBsZWFzdCBgTWluQ29tbWlzc2lvbmAuLEJvdW5kTm90TWV0ABcEWFNvbWUgYm91bmQgaXMgbm90IG1ldC5QQ29udHJvbGxlckRlcHJlY2F0ZWQAGAQBAVVzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBkZXByZWNhdGVkIGNvbnRyb2xsZXIgYWNjb3VudCBsb2dpYy5MQ2Fubm90UmVzdG9yZUxlZGdlcgAZBFhDYW5ub3QgcmVzZXQgYSBsZWRnZXIubFJld2FyZERlc3RpbmF0aW9uUmVzdHJpY3RlZAAaBKxQcm92aWRlZCByZXdhcmQgZGVzdGluYXRpb24gaXMgbm90IGFsbG93ZWQuOE5vdEVub3VnaEZ1bmRzABsEnE5vdCBlbm91Z2ggZnVuZHMgYXZhaWxhYmxlIHRvIHdpdGhkcmF3LlxWaXJ0dWFsU3Rha2VyTm90QWxsb3dlZAAcBKhPcGVyYXRpb24gbm90IGFsbG93ZWQgZm9yIHZpcnR1YWwgc3Rha2Vycy48Q2Fubm90UmVhcFN0YXNoAB0E9FN0YXNoIGNvdWxkIG5vdCBiZSByZWFwZWQgYXMgb3RoZXIgcGFsbGV0IG1pZ2h0IGRlcGVuZCBvbiBpdC48QWxyZWFkeU1pZ3JhdGVkAB4ECQFUaGUgc3Rha2Ugb2YgdGhpcyBhY2NvdW50IGlzIGFscmVhZHkgbWlncmF0ZWQgdG8gYEZ1bmdpYmxlYCBob2xkcy40RXJhTm90U3RhcnRlZAAfBFBFcmEgbm90IHlldCBzdGFydGVkLihSZXN0cmljdGVkACAIWQFBY2NvdW50IGlzIHJlc3RyaWN0ZWQgZnJvbSBwYXJ0aWNpcGF0aW9uIGluIHN0YWtpbmcuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgYWNjb3VudCBpc8RzdGFraW5nIGluIGFub3RoZXIgd2F5IGFscmVhZHksIHN1Y2ggYXMgdmlhIHBvb2wudFVuYXBwbGllZFNsYXNoZXNJblByZXZpb3VzRXJhACEILQFVbmFwcGxpZWQgc2xhc2hlcyBpbiB0aGUgcmVjZW50bHkgY29uY2x1ZGVkIGVyYSBpcyBibG9ja2luZyB0aGlzIG9wZXJhdGlvbi6YU2VlIGBDYWxsOjphcHBseV9zbGFzaGAgdG8gYXBwbHkgdGhlbS44RXJhTm90UHJ1bmFibGUAIgSQVGhlIGVyYSBpcyBub3QgZWxpZ2libGUgZm9yIHBydW5pbmcuOENhbmNlbGxlZFNsYXNoACMEzFRoZSBzbGFzaCBoYXMgYmVlbiBjYW5jZWxsZWQgYW5kIGNhbm5vdCBiZSBhcHBsaWVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5BEgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABVBAEYVmVjPFQ+AABFEgg8cGFsbGV0X3RyZWFzdXJ5LFNwZW5kU3RhdHVzFCRBc3NldEtpbmQBQQcwQXNzZXRCYWxhbmNlAZUBLEJlbmVmaWNpYXJ5AUUHLEJsb2NrTnVtYmVyATgkUGF5bWVudElkASgAGAEoYXNzZXRfa2luZEEHASRBc3NldEtpbmQAARhhbW91bnSVAQEwQXNzZXRCYWxhbmNlAAEsYmVuZWZpY2lhcnlFBwEsQmVuZWZpY2lhcnkAASh2YWxpZF9mcm9tOAEsQmxvY2tOdW1iZXIAASRleHBpcmVfYXQ4ASxCbG9ja051bWJlcgABGHN0YXR1c0kSAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAASRIIPHBhbGxldF90cmVhc3VyeTBQYXltZW50U3RhdGUECElkASgBDBxQZW5kaW5nAAAAJEF0dGVtcHRlZAQBCGlkKAEISWQAAQAYRmFpbGVkAAIAAE0SDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0FEVycm9yCARUAARJAAEsMEludmFsaWRJbmRleAAABKxObyBwcm9wb3NhbCwgYm91bnR5IG9yIHNwZW5kIGF0IHRoYXQgaW5kZXguQFRvb01hbnlBcHByb3ZhbHMAAQSAVG9vIG1hbnkgYXBwcm92YWxzIGluIHRoZSBxdWV1ZS5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgACCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlTGFtb3VudCB0byBiZSBzcGVudC5MUHJvcG9zYWxOb3RBcHByb3ZlZAADBHxQcm9wb3NhbCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuWEZhaWxlZFRvQ29udmVydEJhbGFuY2UABARRAVRoZSBiYWxhbmNlIG9mIHRoZSBhc3NldCBraW5kIGlzIG5vdCBjb252ZXJ0aWJsZSB0byB0aGUgYmFsYW5jZSBvZiB0aGUgbmF0aXZlIGFzc2V0LjBTcGVuZEV4cGlyZWQABQSwVGhlIHNwZW5kIGhhcyBleHBpcmVkIGFuZCBjYW5ub3QgYmUgY2xhaW1lZC4sRWFybHlQYXlvdXQABgSkVGhlIHNwZW5kIGlzIG5vdCB5ZXQgZWxpZ2libGUgZm9yIHBheW91dC5AQWxyZWFkeUF0dGVtcHRlZAAHBJxUaGUgcGF5bWVudCBoYXMgYWxyZWFkeSBiZWVuIGF0dGVtcHRlZC4sUGF5b3V0RXJyb3IACATMVGhlcmUgd2FzIHNvbWUgaXNzdWUgd2l0aCB0aGUgbWVjaGFuaXNtIG9mIHBheW1lbnQuME5vdEF0dGVtcHRlZAAJBKRUaGUgcGF5b3V0IHdhcyBub3QgeWV0IGF0dGVtcHRlZC9jbGFpbWVkLjBJbmNvbmNsdXNpdmUACgTEVGhlIHBheW1lbnQgaGFzIG5laXRoZXIgZmFpbGVkIG5vciBzdWNjZWVkZWQgeWV0LgR4RXJyb3IgZm9yIHRoZSB0cmVhc3VyeSBwYWxsZXQuURIAAAQIBPkDAFUSDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRhWb3RpbmcUHEJhbGFuY2UBlQEkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOCRQb2xsSW5kZXgBOCBNYXhWb3RlcwABCBxDYXN0aW5nBABZEgHIQ2FzdGluZzxCYWxhbmNlLCBCbG9ja051bWJlciwgUG9sbEluZGV4LCBNYXhWb3Rlcz4AAAAoRGVsZWdhdGluZwQAXQkBrERlbGVnYXRpbmc8QmFsYW5jZSwgQWNjb3VudElkLCBCbG9ja051bWJlcj4AAQAAWRIMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlHENhc3RpbmcQHEJhbGFuY2UBlQEsQmxvY2tOdW1iZXIBOCRQb2xsSW5kZXgBOCBNYXhWb3RlcwAADAEUdm90ZXNdEgHcQm91bmRlZFZlYzwoUG9sbEluZGV4LCBBY2NvdW50Vm90ZTxCYWxhbmNlPiksIE1heFZvdGVzPgABLGRlbGVnYXRpb25zVQkBUERlbGVnYXRpb25zPEJhbGFuY2U+AAEUcHJpb3JZCQF8UHJpb3JMb2NrPEJsb2NrTnVtYmVyLCBCYWxhbmNlPgAAXRIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFNCQRTAAAEAFEJARhWZWM8VD4AAGESDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBZQkEUwAABABhCQEYVmVjPFQ+AABlEgxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBRFcnJvcggEVAAESQABMChOb3RPbmdvaW5nAAAEUFBvbGwgaXMgbm90IG9uZ29pbmcuIE5vdFZvdGVyAAEErFRoZSBnaXZlbiBhY2NvdW50IGRpZCBub3Qgdm90ZSBvbiB0aGUgcG9sbC4wTm9QZXJtaXNzaW9uAAIEyFRoZSBhY3RvciBoYXMgbm8gcGVybWlzc2lvbiB0byBjb25kdWN0IHRoZSBhY3Rpb24uPE5vUGVybWlzc2lvbllldAADBFkBVGhlIGFjdG9yIGhhcyBubyBwZXJtaXNzaW9uIHRvIGNvbmR1Y3QgdGhlIGFjdGlvbiByaWdodCBub3cgYnV0IHdpbGwgZG8gaW4gdGhlIGZ1dHVyZS5EQWxyZWFkeURlbGVnYXRpbmcABASIVGhlIGFjY291bnQgaXMgYWxyZWFkeSBkZWxlZ2F0aW5nLjRBbHJlYWR5Vm90aW5nAAUIVQFUaGUgYWNjb3VudCBjdXJyZW50bHkgaGFzIHZvdGVzIGF0dGFjaGVkIHRvIGl0IGFuZCB0aGUgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIHVudGlsoHRoZXNlIGFyZSByZW1vdmVkIHRocm91Z2ggYHJlbW92ZV92b3RlYC5ESW5zdWZmaWNpZW50RnVuZHMABgT8VG9vIGhpZ2ggYSBiYWxhbmNlIHdhcyBwcm92aWRlZCB0aGF0IHRoZSBhY2NvdW50IGNhbm5vdCBhZmZvcmQuNE5vdERlbGVnYXRpbmcABwSgVGhlIGFjY291bnQgaXMgbm90IGN1cnJlbnRseSBkZWxlZ2F0aW5nLiBOb25zZW5zZQAIBJREZWxlZ2F0aW9uIHRvIG9uZXNlbGYgbWFrZXMgbm8gc2Vuc2UuPE1heFZvdGVzUmVhY2hlZAAJBIBNYXhpbXVtIG51bWJlciBvZiB2b3RlcyByZWFjaGVkLixDbGFzc05lZWRlZAAKBDkBVGhlIGNsYXNzIG11c3QgYmUgc3VwcGxpZWQgc2luY2UgaXQgaXMgbm90IGVhc2lseSBkZXRlcm1pbmFibGUgZnJvbSB0aGUgc3RhdGUuIEJhZENsYXNzAAsEhFRoZSBjbGFzcyBJRCBzdXBwbGllZCBpcyBpbnZhbGlkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5pEgxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczhSZWZlcmVuZHVtSW5mbyAcVHJhY2tJZAH5AzRSdW50aW1lT3JpZ2luAf0DGE1vbWVudAE4EENhbGwBYQccQmFsYW5jZQGVARRUYWxseQHZCCRBY2NvdW50SWQBBDxTY2hlZHVsZUFkZHJlc3MB/AEYHE9uZ29pbmcEAG0SAY0BUmVmZXJlbmR1bVN0YXR1czxUcmFja0lkLCBSdW50aW1lT3JpZ2luLCBNb21lbnQsIENhbGwsIEJhbGFuY2UsIFRhbGx5LApBY2NvdW50SWQsIFNjaGVkdWxlQWRkcmVzcyw+AAAAIEFwcHJvdmVkDAA4ARhNb21lbnQAAOUIAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAA5QgBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEAIFJlamVjdGVkDAA4ARhNb21lbnQAAOUIAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAA5QgBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAIAJENhbmNlbGxlZAwAOAEYTW9tZW50AADlCAGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAOUIAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgADACBUaW1lZE91dAwAOAEYTW9tZW50AADlCAGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAOUIAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAEABhLaWxsZWQEADgBGE1vbWVudAAFAABtEgxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlc0BSZWZlcmVuZHVtU3RhdHVzIBxUcmFja0lkAfkDNFJ1bnRpbWVPcmlnaW4B/QMYTW9tZW50ATgQQ2FsbAFhBxxCYWxhbmNlAZUBFFRhbGx5AdkIJEFjY291bnRJZAEEPFNjaGVkdWxlQWRkcmVzcwH8ACwBFHRyYWNr+QMBHFRyYWNrSWQAARhvcmlnaW79AwE0UnVudGltZU9yaWdpbgABIHByb3Bvc2FsYQcBEENhbGwAASRlbmFjdG1lbnRpBwFQRGlzcGF0Y2hUaW1lPE1vbWVudD4AASRzdWJtaXR0ZWQ4ARhNb21lbnQAAUhzdWJtaXNzaW9uX2RlcG9zaXThCAFsRGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+AAFAZGVjaXNpb25fZGVwb3NpdOUIAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgABIGRlY2lkaW5n6QgBeE9wdGlvbjxEZWNpZGluZ1N0YXR1czxNb21lbnQ+PgABFHRhbGx52QgBFFRhbGx5AAEgaW5fcXVldWWZAQEQYm9vbAABFGFsYXJt8QgBhE9wdGlvbjwoTW9tZW50LCBTY2hlZHVsZUFkZHJlc3MpPgAAcRIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFdCARTAAAEAFkIARhWZWM8VD4AAHUSAAACeRIAeRIAAAQI+QN9EgB9EgxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczBUcmFja0RldGFpbHMMHEJhbGFuY2UBlQEYTW9tZW50ATgQTmFtZQHdDAAkARBuYW1l3QwBEE5hbWUAATBtYXhfZGVjaWRpbmc4AQx1MzIAAUBkZWNpc2lvbl9kZXBvc2l0lQEBHEJhbGFuY2UAAThwcmVwYXJlX3BlcmlvZDgBGE1vbWVudAABPGRlY2lzaW9uX3BlcmlvZDgBGE1vbWVudAABOGNvbmZpcm1fcGVyaW9kOAEYTW9tZW50AAFQbWluX2VuYWN0bWVudF9wZXJpb2Q4ARhNb21lbnQAATBtaW5fYXBwcm92YWyBEgEUQ3VydmUAASxtaW5fc3VwcG9ydIESARRDdXJ2ZQAAgRIMQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMUQ3VydmUAAQxATGluZWFyRGVjcmVhc2luZwwBGGxlbmd0aDEFARxQZXJiaWxsAAEUZmxvb3IxBQEcUGVyYmlsbAABEGNlaWwxBQEcUGVyYmlsbAAAAERTdGVwcGVkRGVjcmVhc2luZxABFGJlZ2luMQUBHFBlcmJpbGwAAQxlbmQxBQEcUGVyYmlsbAABEHN0ZXAxBQEcUGVyYmlsbAABGHBlcmlvZDEFARxQZXJiaWxsAAEAKFJlY2lwcm9jYWwMARhmYWN0b3KFEgEgRml4ZWRJNjQAASB4X29mZnNldIUSASBGaXhlZEk2NAABIHlfb2Zmc2V0hRIBIEZpeGVkSTY0AAIAAIUSDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50IEZpeGVkSTY0AAAEAIkSAQxpNjQAAIkSAAAFDACNEgxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQURXJyb3IIBFQABEkAATgoTm90T25nb2luZwAABGhSZWZlcmVuZHVtIGlzIG5vdCBvbmdvaW5nLihIYXNEZXBvc2l0AAEEuFJlZmVyZW5kdW0ncyBkZWNpc2lvbiBkZXBvc2l0IGlzIGFscmVhZHkgcGFpZC4gQmFkVHJhY2sAAgScVGhlIHRyYWNrIGlkZW50aWZpZXIgZ2l2ZW4gd2FzIGludmFsaWQuEEZ1bGwAAwQxAVRoZXJlIGFyZSBhbHJlYWR5IGEgZnVsbCBjb21wbGVtZW50IG9mIHJlZmVyZW5kYSBpbiBwcm9ncmVzcyBmb3IgdGhpcyB0cmFjay4oUXVldWVFbXB0eQAEBIBUaGUgcXVldWUgb2YgdGhlIHRyYWNrIGlzIGVtcHR5LjRCYWRSZWZlcmVuZHVtAAUE5FRoZSByZWZlcmVuZHVtIGluZGV4IHByb3ZpZGVkIGlzIGludmFsaWQgaW4gdGhpcyBjb250ZXh0LixOb3RoaW5nVG9EbwAGBKxUaGVyZSB3YXMgbm90aGluZyB0byBkbyBpbiB0aGUgYWR2YW5jZW1lbnQuHE5vVHJhY2sABwSgTm8gdHJhY2sgZXhpc3RzIGZvciB0aGUgcHJvcG9zYWwgb3JpZ2luLihVbmZpbmlzaGVkAAgEAQFBbnkgZGVwb3NpdCBjYW5ub3QgYmUgcmVmdW5kZWQgdW50aWwgYWZ0ZXIgdGhlIGRlY2lzaW9uIGlzIG92ZXIuME5vUGVybWlzc2lvbgAJBKhUaGUgZGVwb3NpdCByZWZ1bmRlciBpcyBub3QgdGhlIGRlcG9zaXRvci4kTm9EZXBvc2l0AAoEzFRoZSBkZXBvc2l0IGNhbm5vdCBiZSByZWZ1bmRlZCBzaW5jZSBub25lIHdhcyBtYWRlLiRCYWRTdGF0dXMACwTQVGhlIHJlZmVyZW5kdW0gc3RhdHVzIGlzIGludmFsaWQgZm9yIHRoaXMgb3BlcmF0aW9uLkBQcmVpbWFnZU5vdEV4aXN0AAwEcFRoZSBwcmVpbWFnZSBkb2VzIG5vdCBleGlzdC6EUHJlaW1hZ2VTdG9yZWRXaXRoRGlmZmVyZW50TGVuZ3RoAA0EFQFUaGUgcHJlaW1hZ2UgaXMgc3RvcmVkIHdpdGggYSBkaWZmZXJlbnQgbGVuZ3RoIHRoYW4gdGhlIG9uZSBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQukRIMQHBhbGxldF93aGl0ZWxpc3QYcGFsbGV0FEVycm9yBARUAAEUTFVuYXZhaWxhYmxlUHJlSW1hZ2UAAATIVGhlIHByZWltYWdlIG9mIHRoZSBjYWxsIGhhc2ggY291bGQgbm90IGJlIGxvYWRlZC48VW5kZWNvZGFibGVDYWxsAAEEeFRoZSBjYWxsIGNvdWxkIG5vdCBiZSBkZWNvZGVkLmBJbnZhbGlkQ2FsbFdlaWdodFdpdG5lc3MAAgTsVGhlIHdlaWdodCBvZiB0aGUgZGVjb2RlZCBjYWxsIHdhcyBoaWdoZXIgdGhhbiB0aGUgd2l0bmVzcy5QQ2FsbElzTm90V2hpdGVsaXN0ZWQAAwR0VGhlIGNhbGwgd2FzIG5vdCB3aGl0ZWxpc3RlZC5YQ2FsbEFscmVhZHlXaGl0ZWxpc3RlZAAEBKBUaGUgY2FsbCB3YXMgYWxyZWFkeSB3aGl0ZWxpc3RlZDsgTm8tT3AuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpUSCDxwYWxsZXRfYm91bnRpZXMYQm91bnR5DCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBLEJsb2NrTnVtYmVyATgAGAEgcHJvcG9zZXIEASRBY2NvdW50SWQAARR2YWx1ZZUBARxCYWxhbmNlAAEMZmVllQEBHEJhbGFuY2UAATxjdXJhdG9yX2RlcG9zaXSVAQEcQmFsYW5jZQABEGJvbmSVAQEcQmFsYW5jZQABGHN0YXR1c30JAZBCb3VudHlTdGF0dXM8QWNjb3VudElkLCBCbG9ja051bWJlcj4AAJkSDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAnRIMPHBhbGxldF9ib3VudGllcxhwYWxsZXQURXJyb3IIBFQABEkAATBwSW5zdWZmaWNpZW50UHJvcG9zZXJzQmFsYW5jZQAABHhQcm9wb3NlcidzIGJhbGFuY2UgaXMgdG9vIGxvdy4wSW52YWxpZEluZGV4AAEEkE5vIHByb3Bvc2FsIG9yIGJvdW50eSBhdCB0aGF0IGluZGV4LjBSZWFzb25Ub29CaWcAAgSEVGhlIHJlYXNvbiBnaXZlbiBpcyBqdXN0IHRvbyBiaWcuQFVuZXhwZWN0ZWRTdGF0dXMAAwSAVGhlIGJvdW50eSBzdGF0dXMgaXMgdW5leHBlY3RlZC44UmVxdWlyZUN1cmF0b3IABARcUmVxdWlyZSBib3VudHkgY3VyYXRvci4wSW52YWxpZFZhbHVlAAUEVEludmFsaWQgYm91bnR5IHZhbHVlLihJbnZhbGlkRmVlAAYETEludmFsaWQgYm91bnR5IGZlZS40UGVuZGluZ1BheW91dAAHCGxBIGJvdW50eSBwYXlvdXQgaXMgcGVuZGluZy74VG8gY2FuY2VsIHRoZSBib3VudHksIHlvdSBtdXN0IHVuYXNzaWduIGFuZCBzbGFzaCB0aGUgY3VyYXRvci4kUHJlbWF0dXJlAAgERQFUaGUgYm91bnRpZXMgY2Fubm90IGJlIGNsYWltZWQvY2xvc2VkIGJlY2F1c2UgaXQncyBzdGlsbCBpbiB0aGUgY291bnRkb3duIHBlcmlvZC5QSGFzQWN0aXZlQ2hpbGRCb3VudHkACQQFAVRoZSBib3VudHkgY2Fubm90IGJlIGNsb3NlZCBiZWNhdXNlIGl0IGhhcyBhY3RpdmUgY2hpbGQgYm91bnRpZXMuNFRvb01hbnlRdWV1ZWQACgSYVG9vIG1hbnkgYXBwcm92YWxzIGFyZSBhbHJlYWR5IHF1ZXVlZC4sTm90UHJvcG9zZXIACwScVXNlciBpcyBub3QgdGhlIHByb3Bvc2VyIG9mIHRoZSBib3VudHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqESCFRwYWxsZXRfY2hpbGRfYm91bnRpZXMsQ2hpbGRCb3VudHkMJEFjY291bnRJZAEEHEJhbGFuY2UBlQEsQmxvY2tOdW1iZXIBOAAUATRwYXJlbnRfYm91bnR5OAEsQm91bnR5SW5kZXgAARR2YWx1ZZUBARxCYWxhbmNlAAEMZmVllQEBHEJhbGFuY2UAATxjdXJhdG9yX2RlcG9zaXSVAQEcQmFsYW5jZQABGHN0YXR1c6USAaRDaGlsZEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAApRIIVHBhbGxldF9jaGlsZF9ib3VudGllc0RDaGlsZEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEQFEFkZGVkAAAAPEN1cmF0b3JQcm9wb3NlZAQBHGN1cmF0b3IEASRBY2NvdW50SWQAAQAYQWN0aXZlBAEcY3VyYXRvcgQBJEFjY291bnRJZAACADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgQBJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEkdW5sb2NrX2F0OAEsQmxvY2tOdW1iZXIAAwAAqRIMVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXJyb3IEBFQAAQxUUGFyZW50Qm91bnR5Tm90QWN0aXZlAAAEpFRoZSBwYXJlbnQgYm91bnR5IGlzIG5vdCBpbiBhY3RpdmUgc3RhdGUuZEluc3VmZmljaWVudEJvdW50eUJhbGFuY2UAAQTkVGhlIGJvdW50eSBiYWxhbmNlIGlzIG5vdCBlbm91Z2ggdG8gYWRkIG5ldyBjaGlsZC1ib3VudHkuUFRvb01hbnlDaGlsZEJvdW50aWVzAAIEDQFOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgZXhjZWVkcyBsaW1pdCBgTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lq0SDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXJyb3IEBFQAAQxAVW5rbm93bkFzc2V0S2luZAAABHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwABBFEBVGhlIGdpdmVuIGFzc2V0IElEIGFscmVhZHkgaGFzIGFuIGFzc2lnbmVkIGNvbnZlcnNpb24gcmF0ZSBhbmQgY2Fubm90IGJlIHJlLWNyZWF0ZWQuIE92ZXJmbG93AAIEzE92ZXJmbG93IG9jdXJyZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSByYXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6xEghscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGEJvdW50eRgkQWNjb3VudElkAQQcQmFsYW5jZQGVASRBc3NldEtpbmQBQQcQSGFzaAFAJFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5AUUHABABKGFzc2V0X2tpbmRBBwEkQXNzZXRLaW5kAAEUdmFsdWWVAQEcQmFsYW5jZQABIG1ldGFkYXRhQAEQSGFzaAABGHN0YXR1c7USAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAAtRIIbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczBCb3VudHlTdGF0dXMMJEFjY291bnRJZAEEJFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5AUUHARhARnVuZGluZ0F0dGVtcHRlZAgBHGN1cmF0b3IEASRBY2NvdW50SWQAAThwYXltZW50X3N0YXR1c7kSAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAAABhGdW5kZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAEAREN1cmF0b3JVbmFzc2lnbmVkAAIAGEFjdGl2ZQQBHGN1cmF0b3IEASRBY2NvdW50SWQAAwA8UmVmdW5kQXR0ZW1wdGVkCAEcY3VyYXRvckEBAURPcHRpb248QWNjb3VudElkPgABOHBheW1lbnRfc3RhdHVzuRIBXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAQAPFBheW91dEF0dGVtcHRlZAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyeUUHASxCZW5lZmljaWFyeQABOHBheW1lbnRfc3RhdHVzuRIBXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAUAALkSCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMwUGF5bWVudFN0YXRlBAhJZAEoARAcUGVuZGluZwAAACRBdHRlbXB0ZWQEAQhpZCgBCElkAAEAGEZhaWxlZAACACRTdWNjZWVkZWQAAwAAvRIIbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcyxDaGlsZEJvdW50eRQkQWNjb3VudElkAQQcQmFsYW5jZQGVARBIYXNoAUAkUGF5bWVudElkASgsQmVuZWZpY2lhcnkBRQcAEAE0cGFyZW50X2JvdW50eTgBLEJvdW50eUluZGV4AAEUdmFsdWWVAQEcQmFsYW5jZQABIG1ldGFkYXRhQAEQSGFzaAABGHN0YXR1c7USAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAAwRIAAAQIONgAxRIUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAlQEBKEY6OkJhbGFuY2UAAMkSDGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0FEVycm9yCARUAARJAAFIMEludmFsaWRJbmRleAAABHxObyBjaGlsZC0vYm91bnR5IGF0IHRoYXQgaW5kZXguMFJlYXNvblRvb0JpZwABBIRUaGUgcmVhc29uIGdpdmVuIGlzIGp1c3QgdG9vIGJpZy4wSW52YWxpZFZhbHVlAAIEcEludmFsaWQgY2hpbGQtL2JvdW50eSB2YWx1ZS5YRmFpbGVkVG9Db252ZXJ0QmFsYW5jZQADCF0BVGhlIGJhbGFuY2Ugb2YgdGhlIGFzc2V0IGtpbmQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBuYXRpdmUgYXNzZXQgZm9yhGFzc2VydGluZyB0aGUgb3JpZ2luIHBlcm1pc3Npb25zLkBVbmV4cGVjdGVkU3RhdHVzAAQEnFRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1bmV4cGVjdGVkLjhSZXF1aXJlQ3VyYXRvcgAFBHhSZXF1aXJlIGNoaWxkLS9ib3VudHkgY3VyYXRvci5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgAGCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlRHJlcXVlc3RlZCBhbW91bnQuMEZ1bmRpbmdFcnJvcgAHBLxUaGVyZSB3YXMgaXNzdWUgd2l0aCBmdW5kaW5nIHRoZSBjaGlsZC0vYm91bnR5LixSZWZ1bmRFcnJvcgAIBMRUaGVyZSB3YXMgaXNzdWUgd2l0aCByZWZ1bmRpbmcgdGhlIGNoaWxkLS9ib3VudHkuLFBheW91dEVycm9yAAkATEZ1bmRpbmdJbmNvbmNsdXNpdmUACgSwQ2hpbGQtL2JvdW50eSBmdW5kaW5nIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUmVmdW5kSW5jb25jbHVzaXZlAAsErENoaWxkLS9ib3VudHkgcmVmdW5kIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUGF5b3V0SW5jb25jbHVzaXZlAAwErENoaWxkLS9ib3VudHkgcGF5b3V0IGhhcyBub3QgY29uY2x1ZGVkIHlldC5URmFpbGVkVG9Db252ZXJ0U291cmNlAA0IVQFUaGUgY2hpbGQtL2JvdW50eSBvciBmdW5kaW5nIHNvdXJjZSBhY2NvdW50IGNvdWxkIG5vdCBiZSBkZXJpdmVkIGZyb20gdGhlIGluZGV4ZXMgYW5kLGFzc2V0IGtpbmQuUEhhc0FjdGl2ZUNoaWxkQm91bnR5AA4EIQFUaGUgcGFyZW50IGJvdW50eSBjYW5ub3QgYmUgY2xvc2VkIGJlY2F1c2UgaXQgaGFzIGFjdGl2ZSBjaGlsZCBib3VudGllcy5QVG9vTWFueUNoaWxkQm91bnRpZXMADwQNAU51bWJlciBvZiBjaGlsZCBib3VudGllcyBleGNlZWRzIGxpbWl0IGBNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YC5cSW5zdWZmaWNpZW50Qm91bnR5VmFsdWUAEAT4VGhlIHBhcmVudCBib3VudHkgdmFsdWUgaXMgbm90IGVub3VnaCB0byBhZGQgbmV3IGNoaWxkLWJvdW50eS5AUHJlaW1hZ2VOb3RFeGlzdAARBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ls0SAAAEDDigBADREgw0cGFsbGV0X2FoX29wcxhwYWxsZXQURXJyb3IEBFQAATw4Tm9MZWFzZVJlc2VydmUAAAS4RWl0aGVyIG5vIGxlYXNlIGRlcG9zaXQgb3IgYWxyZWFkeSB1bnJlc2VydmVkLlxOb0Nyb3dkbG9hbkNvbnRyaWJ1dGlvbgABBNhFaXRoZXIgbm8gY3Jvd2Rsb2FuIGNvbnRyaWJ1dGlvbiBvciBhbHJlYWR5IHdpdGhkcmF3bi5ITm9Dcm93ZGxvYW5SZXNlcnZlAAIEyEVpdGhlciBubyBjcm93ZGxvYW4gcmVzZXJ2ZSBvciBhbHJlYWR5IHVucmVzZXJ2ZWQulEZhaWxlZFRvV2l0aGRyYXdDcm93ZGxvYW5Db250cmlidXRpb24AAwSoRmFpbGVkIHRvIHdpdGhkcmF3IGNyb3dkbG9hbiBjb250cmlidXRpb24uGE5vdFlldAAEBIBCbG9jayBudW1iZXIgaXMgbm90IHlldCByZWFjaGVkLlhDb250cmlidXRpb25zUmVtYWluaW5nAAUEkE5vdCBhbGwgY29udHJpYnV0aW9ucyBhcmUgd2l0aGRyYXduLlxXcm9uZ0Rlcml2ZWRUcmFuc2xhdGlvbgAGBJRUaGUgYWNjb3VudCBpcyBub3QgYSBkZXJpdmVkIGFjY291bnQuME5vdFNvdmVyZWlnbgAHBCUBQWNjb3VudCBjYW5ub3QgYmUgbWlncmF0ZWQgc2luY2UgaXQgaXMgbm90IGEgc292ZXJlaWduIHBhcmFjaGFpbiBhY2NvdW50LjRJbnRlcm5hbEVycm9yAAgEiEludGVybmFsIGVycm9yLCBwbGVhc2UgYnVnIHJlcG9ydC5UTWlncmF0aW9uTm90Q29tcGxldGVkAAkEpFRoZSBBc3NldCBIdWIgbWlncmF0aW9uIGlzIG5vdCBjb21wbGV0ZWQuLFplcm9CYWxhbmNlAAoEUFRoZSBiYWxhbmNlIGlzIHplcm8uQEZhaWxlZFRvVHJhbnNmZXIACwRsRmFpbGVkIHRvIHRyYW5zZmVyIGJhbGFuY2UuREFscmVhZHlUcmFuc2xhdGVkAAwEoFRoZSBhY2NvdW50IGhhcyBhbHJlYWR5IGJlZW4gdHJhbnNsYXRlZC5UVG9vTG9uZ0Rlcml2YXRpb25QYXRoAA0EgFRoZSBkZXJpdmF0aW9uIHBhdGggaXMgdG9vIGxvbmcuUEZhaWxlZFRvRm9yY2VVbnN0YWtlAA4EYEZhaWxlZCB0byBmb3JjZSB1bnN0YWtlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7VEghIcGFsbGV0X2FoX21pZ3JhdG9yOEJhbGFuY2VzQmVmb3JlBBxCYWxhbmNlAZUBAAgBQGNoZWNraW5nX2FjY291bnSVAQEcQmFsYW5jZQABOHRvdGFsX2lzc3VhbmNllQEBHEJhbGFuY2UAANkSDEhwYWxsZXRfYWhfbWlncmF0b3IYcGFsbGV0FEVycm9yBARUAAFMYEZhaWxlZFRvVW5yZXNlcnZlRGVwb3NpdAAABHBGYWlsZWQgdG8gdW5yZXNlcnZlIGRlcG9zaXQuWEZhaWxlZFRvUHJvY2Vzc0FjY291bnQAAQSoRmFpbGVkIHRvIHByb2Nlc3MgYW4gYWNjb3VudCBkYXRhIGZyb20gUkMuOEluc2VydENvbmZsaWN0AAIE6FNvbWUgaXRlbSBjb3VsZCBub3QgYmUgaW5zZXJ0ZWQgYmVjYXVzZSBpdCBhbHJlYWR5IGV4aXN0cy5MRmFpbGVkVG9Db252ZXJ0VHlwZQADBJRGYWlsZWQgdG8gY29udmVydCBSQyB0eXBlIHRvIEFIIHR5cGUuQFByZWltYWdlTm90Rm91bmQABARkRmFpbGVkIHRvIGZldGNoIHByZWltYWdlLkxGYWlsZWRUb0NvbnZlcnRDYWxsAAUElEZhaWxlZCB0byBjb252ZXJ0IFJDIGNhbGwgdG8gQUggY2FsbC5ERmFpbGVkVG9Cb3VuZENhbGwABgRcRmFpbGVkIHRvIGJvdW5kIGEgY2FsbC4gWGNtRXJyb3IABwRsRmFpbGVkIHRvIHNlbmQgWENNIG1lc3NhZ2UugEZhaWxlZFRvSW50ZWdyYXRlVmVzdGluZ1NjaGVkdWxlAAgEnEZhaWxlZCB0byBpbnRlZ3JhdGUgYSB2ZXN0aW5nIHNjaGVkdWxlLoBGYWlsZWRUb0NhbGN1bGF0ZUNoZWNraW5nQWNjb3VudAAJBJxDaGVja2luZyBhY2NvdW50IG92ZXJmbG93IG9yIHVuZGVyZmxvdy5MRmFpbGVkVG9Cb3VuZFZlY3RvcgAKBLxWZWN0b3IgZGlkIG5vdCBmaXQgaW50byBpdHMgY29tcGlsZS10aW1lIGJvdW5kLmhEbXBRdWV1ZVByaW9yaXR5QWxyZWFkeVNldAALBOBUaGUgRE1QIHF1ZXVlIHByaW9yaXR5IGlzIGFscmVhZHkgc2V0IHRvIHRoZSBzYW1lIHZhbHVlLkBJbnZhbGlkUGFyYW1ldGVyAAwESEludmFsaWQgcGFyYW1ldGVyLjxQcmVpbWFnZU1pc3NpbmcADQREUHJlaW1hZ2UgbWlzc2luZy44UHJlaW1hZ2VUb29CaWcADgREUHJlaW1hZ2UgdG9vIGJpZy5QUHJlaW1hZ2VDaHVua01pc3NpbmcADwRcUHJlaW1hZ2UgY2h1bmsgbWlzc2luZy5UUHJlaW1hZ2VTdGF0dXNJbnZhbGlkABAEYFByZWltYWdlIHN0YXR1cyBpbnZhbGlkLjRCYWRYY21WZXJzaW9uABEEbFRoZSBYQ00gdmVyc2lvbiBpcyBpbnZhbGlkLjRJbnZhbGlkT3JpZ2luABIEWFRoZSBvcmlnaW4gaXMgaW52YWxpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu3RIISHNwX2NvbnNlbnN1c19zbG90czBTbG90RHVyYXRpb24AAAQAKAEMdTY0AADhEhAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAWAkRXh0cmluc2ljARUNAAgBGGhlYWRlcmABGEhlYWRlcgABKGV4dHJpbnNpY3PlEgFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AAOUSAAAC6RIA6RIIKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AAO0SCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAAPESCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AAPUSBBhPcHRpb24EBFQB8RIBCBBOb25lAAAAEFNvbWUEAPESAAABAAD5EgQYUmVzdWx0CARUAV0LBEUB/RIBCAhPawQAXQsAAAAADEVycgQA/RIAAAEAAP0SDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5YFRyYW5zYWN0aW9uVmFsaWRpdHlFcnJvcgABCBxJbnZhbGlkBAABEwFISW52YWxpZFRyYW5zYWN0aW9uAAAAHFVua25vd24EAAUTAUhVbmtub3duVHJhbnNhY3Rpb24AAQAAARMMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlISW52YWxpZFRyYW5zYWN0aW9uAAE0EENhbGwAAAAcUGF5bWVudAABABhGdXR1cmUAAgAUU3RhbGUAAwAgQmFkUHJvb2YABABEQW5jaWVudEJpcnRoQmxvY2sABQBERXhoYXVzdHNSZXNvdXJjZXMABgAYQ3VzdG9tBAAMAQh1OAAHADBCYWRNYW5kYXRvcnkACABMTWFuZGF0b3J5VmFsaWRhdGlvbgAJACRCYWRTaWduZXIACgBUSW5kZXRlcm1pbmF0ZUltcGxpY2l0AAsANFVua25vd25PcmlnaW4ADAAABRMMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlIVW5rbm93blRyYW5zYWN0aW9uAAEMMENhbm5vdExvb2t1cAAAAExOb1Vuc2lnbmVkVmFsaWRhdG9yAAEAGEN1c3RvbQQADAEIdTgAAgAACRMIMHNwX2luaGVyZW50czBJbmhlcmVudERhdGEAAAQBEGRhdGENEwGUQlRyZWVNYXA8SW5oZXJlbnRJZGVudGlmaWVyLCBWZWM8dTg+PgAADRMEIEJUcmVlTWFwCARLAZUCBFYBGAAEABETAAAAERMAAAIVEwAVEwAABAiVAhgAGRMIMHNwX2luaGVyZW50c1BDaGVja0luaGVyZW50c1Jlc3VsdAAADAEQb2theZkBARBib29sAAEsZmF0YWxfZXJyb3KZAQEQYm9vbAABGGVycm9ycwkTATBJbmhlcmVudERhdGEAAB0TDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5RFRyYW5zYWN0aW9uU291cmNlAAEMHEluQmxvY2sAAAAUTG9jYWwAAQAgRXh0ZXJuYWwAAgAAIRMEGFJlc3VsdAgEVAElEwRFAf0SAQgIT2sEACUTAAAAAAxFcnIEAP0SAAABAAAlEwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUBWYWxpZFRyYW5zYWN0aW9uAAAUASBwcmlvcml0eSgBTFRyYW5zYWN0aW9uUHJpb3JpdHkAASByZXF1aXJlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASBwcm92aWRlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASRsb25nZXZpdHkoAVBUcmFuc2FjdGlvbkxvbmdldml0eQABJHByb3BhZ2F0ZZkBARBib29sAAApEwQYT3B0aW9uBARUAS0TAQgQTm9uZQAAABBTb21lBAAtEwAAAQAALRMAAAIxEwAxEwAABAgYRQ4ANRMMNGZyYW1lX3N1cHBvcnQ4dmlld19mdW5jdGlvbnM4Vmlld0Z1bmN0aW9uSWQAAAgBGHByZWZpeJkCASBbdTg7IDE2XQABGHN1ZmZpeJkCASBbdTg7IDE2XQAAORMEGFJlc3VsdAgEVAEYBEUBPRMBCAhPawQAGAAAAAAMRXJyBAA9EwAAAQAAPRMMNGZyYW1lX3N1cHBvcnQ4dmlld19mdW5jdGlvbnNkVmlld0Z1bmN0aW9uRGlzcGF0Y2hFcnJvcgABDDhOb3RJbXBsZW1lbnRlZAAAACBOb3RGb3VuZAQANRMBOFZpZXdGdW5jdGlvbklkAAEAFENvZGVjAAIAAEETBBhPcHRpb24EBFQBRRABCBBOb25lAAAAEFNvbWUEAEUQAAABAABFEwxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXNMUnVudGltZURpc3BhdGNoSW5mbwgcQmFsYW5jZQGVARhXZWlnaHQBeQEADAEYd2VpZ2h0eQEBGFdlaWdodAABFGNsYXNzLQsBNERpc3BhdGNoQ2xhc3MAASxwYXJ0aWFsX2ZlZZUBARxCYWxhbmNlAABJEwxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMoRmVlRGV0YWlscwQcQmFsYW5jZQGVAQAIATRpbmNsdXNpb25fZmVlTRMBdE9wdGlvbjxJbmNsdXNpb25GZWU8QmFsYW5jZT4+AAEMdGlwlQEBHEJhbGFuY2UAAE0TBBhPcHRpb24EBFQBURMBCBBOb25lAAAAEFNvbWUEAFETAAABAABREwxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMwSW5jbHVzaW9uRmVlBBxCYWxhbmNlAZUBAAwBIGJhc2VfZmVllQEBHEJhbGFuY2UAARxsZW5fZmVllQEBHEJhbGFuY2UAAUxhZGp1c3RlZF93ZWlnaHRfZmVllQEBHEJhbGFuY2UAAFUTBBhSZXN1bHQIBFQBWRMERQFdEwEICE9rBABZEwAAAAAMRXJyBABdEwAAAQAAWRMAAALdAwBdEwxAeGNtX3J1bnRpbWVfYXBpcxBmZWVzFEVycm9yAAEYNFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAExXZWlnaHROb3RDb21wdXRhYmxlAAIATFVuaGFuZGxlZFhjbVZlcnNpb24AAwA0QXNzZXROb3RGb3VuZAAEAChVbnJvdXRhYmxlAAUAAGETBBhSZXN1bHQIBFQBeQEERQFdEwEICE9rBAB5AQAAAAAMRXJyBABdEwAAAQAAZRMEGFJlc3VsdAgEVAGVAQRFAV0TAQgIT2sEAJUBAAAAAAxFcnIEAF0TAAABAABpEwQYUmVzdWx0CARUAakDBEUBXRMBCAhPawQAqQMAAAAADEVycgQAXRMAAAEAAG0TBBhSZXN1bHQIBFQBcRMERQGJEwEICE9rBABxEwAAAAAMRXJyBACJEwAAAQAAcRMMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkRDYWxsRHJ5UnVuRWZmZWN0cwQURXZlbnQBIQsAEAFAZXhlY3V0aW9uX3Jlc3VsdKkMAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwABOGVtaXR0ZWRfZXZlbnRzdRMBKFZlYzxFdmVudD4AASRsb2NhbF94Y215EwFgT3B0aW9uPFZlcnNpb25lZFhjbTwoKT4+AAE4Zm9yd2FyZGVkX3hjbXN9EwG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAHUTAAACIQsAeRMEGE9wdGlvbgQEVAFtAgEIEE5vbmUAAAAQU29tZQQAbQIAAAEAAH0TAAACgRMAgRMAAAQI5QGFEwCFEwAAAm0CAIkTDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAI0TBBhSZXN1bHQIBFQBkRMERQGJEwEICE9rBACREwAAAAAMRXJyBACJEwAAAQAAkRMMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAEhCwAMAUBleGVjdXRpb25fcmVzdWx04QsBHE91dGNvbWUAAThlbWl0dGVkX2V2ZW50c3UTAShWZWM8RXZlbnQ+AAE4Zm9yd2FyZGVkX3hjbXN9EwG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAJUTBBhSZXN1bHQIBFQBBARFAZkTAQgIT2sEAAQAAAAADEVycgQAmRMAAAEAAJkTDEB4Y21fcnVudGltZV9hcGlzLGNvbnZlcnNpb25zFEVycm9yAAEILFVuc3VwcG9ydGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAAnRMIDHhjbThWZXJzaW9uZWRBc3NldAABDAhWMwQAhQIBOHYzOjpNdWx0aUFzc2V0AAMACFY0BAD5AgEkdjQ6OkFzc2V0AAQACFY1BABFAwEkdjU6OkFzc2V0AAUAAKETBBhSZXN1bHQIBFQBmQEERQGlEwEICE9rBACZAQAAAAAMRXJyBAClEwAAAQAApRMMQHhjbV9ydW50aW1lX2FwaXM0dHJ1c3RlZF9xdWVyeRRFcnJvcgABCHhWZXJzaW9uZWRBc3NldENvbnZlcnNpb25GYWlsZWQAAACEVmVyc2lvbmVkTG9jYXRpb25Db252ZXJzaW9uRmFpbGVkAAEAAKkTBBhSZXN1bHQIBFQB6Q4ERQGtEwEICE9rBADpDgAAAAAMRXJyBACtEwAAAQAArRMMQHhjbV9ydW50aW1lX2FwaXNIYXV0aG9yaXplZF9hbGlhc2VzFEVycm9yAAEEfExvY2F0aW9uVmVyc2lvbkNvbnZlcnNpb25GYWlsZWQAAAAAsRMEGFJlc3VsdAgEVAGZAQRFAa0TAQgIT2sEAJkBAAAAAAxFcnIEAK0TAAABAAC1EwQYUmVzdWx0CARUAakDBEUBuRMBCAhPawQAqQMAAAAADEVycgQAuRMAAAEAALkTDDRhc3NldHNfY29tbW9uLHJ1bnRpbWVfYXBpUEZ1bmdpYmxlc0FjY2Vzc0Vycm9yAAEIXEFzc2V0SWRDb252ZXJzaW9uRmFpbGVkAAAAfEFtb3VudFRvQmFsYW5jZUNvbnZlcnNpb25GYWlsZWQAAQAAvRMIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlNENvbGxhdGlvbkluZm8AABgBPHVwd2FyZF9tZXNzYWdlczQBSFZlYzxVcHdhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXOFDQFgVmVjPE91dGJvdW5kSHJtcE1lc3NhZ2U+AAFMbmV3X3ZhbGlkYXRpb25fY29kZcETAYxPcHRpb248cmVsYXlfY2hhaW46OlZhbGlkYXRpb25Db2RlPgABbHByb2Nlc3NlZF9kb3dud2FyZF9tZXNzYWdlczgBDHUzMgABOGhybXBfd2F0ZXJtYXJrOAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAEkaGVhZF9kYXRhUAEgSGVhZERhdGEAAMETBBhPcHRpb24EBFQBxRMBCBBOb25lAAAAEFNvbWUEAMUTAAABAADFEwx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczhWYWxpZGF0aW9uQ29kZQAABAAYARxWZWM8dTg+AADJEwQYUmVzdWx0CARUARAERQHdDAEICE9rBAAQAAAAAAxFcnIEAN0MAAABAADNEwQYT3B0aW9uBARUAd0MAQgQTm9uZQAAABBTb21lBADdDAAAAQAA0RMAAALdDADVEwxgc3lzdGVtX3BhcmFjaGFpbnNfY29tbW9uEGFwaXM0SW5mbGF0aW9uSW5mbwAACAEgaXNzdWFuY2UVAQFcc3BfcnVudGltZTo6UGVycXVpbnRpbGwAASRuZXh0X21pbnRFEAHwKHBvbGthZG90X3ByaW1pdGl2ZXM6OkJhbGFuY2UsIHBvbGthZG90X3ByaW1pdGl2ZXM6OkJhbGFuY2UpAADZEww0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOENvbnRyYWN0UmVzdWx0CARSAd0THEJhbGFuY2UBlQEAGAE8d2VpZ2h0X2NvbnN1bWVkeQEBGFdlaWdodAABPHdlaWdodF9yZXF1aXJlZHkBARhXZWlnaHQAATxzdG9yYWdlX2RlcG9zaXTlEwFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AAUxtYXhfc3RvcmFnZV9kZXBvc2l05RMBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAEwZ2FzX2NvbnN1bWVklQEBHEJhbGFuY2UAARhyZXN1bHTpEwFgUmVzdWx0PFIsIERpc3BhdGNoRXJyb3I+AADdEww0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzPEV4ZWNSZXR1cm5WYWx1ZQAACAEUZmxhZ3PhEwEsUmV0dXJuRmxhZ3MAARBkYXRhGAEcVmVjPHU4PgAA4RMMSHBhbGxldF9yZXZpdmVfdWFwaRRmbGFncyxSZXR1cm5GbGFncwAABAEQYml0czgBDHUzMgAA5RMMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhTdG9yYWdlRGVwb3NpdAQcQmFsYW5jZQGVAQEIGFJlZnVuZAQAlQEBHEJhbGFuY2UAAAAYQ2hhcmdlBACVAQEcQmFsYW5jZQABAADpEwQYUmVzdWx0CARUAd0TBEUBNQsBCAhPawQA3RMAAAAADEVycgQANQsAAAEAAO0TDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXMQQ29kZQABCBhVcGxvYWQEABgBHFZlYzx1OD4AAAAgRXhpc3RpbmcEAEABNHNwX2NvcmU6OkgyNTYAAQAA8RMMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhDb250cmFjdFJlc3VsdAgEUgH1ExxCYWxhbmNlAZUBABgBPHdlaWdodF9jb25zdW1lZHkBARhXZWlnaHQAATx3ZWlnaHRfcmVxdWlyZWR5AQEYV2VpZ2h0AAE8c3RvcmFnZV9kZXBvc2l05RMBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAFMbWF4X3N0b3JhZ2VfZGVwb3NpdOUTAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABMGdhc19jb25zdW1lZJUBARxCYWxhbmNlAAEYcmVzdWx0+RMBYFJlc3VsdDxSLCBEaXNwYXRjaEVycm9yPgAA9RMMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1hJbnN0YW50aWF0ZVJldHVyblZhbHVlAAAIARhyZXN1bHTdEwE8RXhlY1JldHVyblZhbHVlAAEQYWRkcvEEARBIMTYwAAD5EwQYUmVzdWx0CARUAfUTBEUBNQsBCAhPawQA9RMAAAAADEVycgQANQsAAAEAAP0TFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkhHZW5lcmljVHJhbnNhY3Rpb24AAEABLGFjY2Vzc19saXN0ARQBSE9wdGlvbjxBY2Nlc3NMaXN0PgABSGF1dGhvcml6YXRpb25fbGlzdOkQAWxWZWM8QXV0aG9yaXphdGlvbkxpc3RFbnRyeT4AAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPwASRWZWM8SDI1Nj4AARRibG9icwUUAShWZWM8Qnl0ZXM+AAEgY2hhaW5faWTFEAEwT3B0aW9uPFUyNTY+AAEQZnJvbQERATxPcHRpb248QWRkcmVzcz4AAQxnYXPFEAEwT3B0aW9uPFUyNTY+AAEkZ2FzX3ByaWNlxRABME9wdGlvbjxVMjU2PgABFGlucHV0CRQBLElucHV0T3JEYXRhAAFQbWF4X2ZlZV9wZXJfYmxvYl9nYXPFEAEwT3B0aW9uPFUyNTY+AAE8bWF4X2ZlZV9wZXJfZ2FzxRABME9wdGlvbjxVMjU2PgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc8UQATBPcHRpb248VTI1Nj4AARRub25jZcUQATBPcHRpb248VTI1Nj4AAQh0bwERATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGURFAEwT3B0aW9uPEJ5dGU+AAEUdmFsdWXFEAEwT3B0aW9uPFUyNTY+AAABFAQYT3B0aW9uBARUAeEQAQgQTm9uZQAAABBTb21lBADhEAAAAQAABRQAAAK1EAAJFBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4sSW5wdXRPckRhdGEAAAgBFGlucHV0DRQBNE9wdGlvbjxCeXRlcz4AARBkYXRhDRQBNE9wdGlvbjxCeXRlcz4AAA0UBBhPcHRpb24EBFQBtRABCBBOb25lAAAAEFNvbWUEALUQAAABAAARFAQYT3B0aW9uBARUARUUAQgQTm9uZQAAABBTb21lBAAVFAAAAQAAFRQUNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlEEJ5dGUAAAQADAEIdTgAABkUBBhSZXN1bHQIBFQBHRQERQEhFAEICE9rBAAdFAAAAAAMRXJyBAAhFAAAAQAAHRQMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczxFdGhUcmFuc2FjdEluZm8EHEJhbGFuY2UBlQEAFAE8d2VpZ2h0X3JlcXVpcmVkeQEBGFdlaWdodAABPHN0b3JhZ2VfZGVwb3NpdJUBARxCYWxhbmNlAAFMbWF4X3N0b3JhZ2VfZGVwb3NpdJUBARxCYWxhbmNlAAEcZXRoX2dhc/kEARBVMjU2AAEQZGF0YRgBHFZlYzx1OD4AACEUDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNARXRoVHJhbnNhY3RFcnJvcgABCBBEYXRhBAAYARxWZWM8dTg+AAAAHE1lc3NhZ2UEAN0MARhTdHJpbmcAAQAAJRQUNHBhbGxldF9yZXZpdmUMZXZtDGFwaSRycGNfdHlwZXMwRHJ5UnVuQ29uZmlnBBhNb21lbnQBKAAIAUh0aW1lc3RhbXBfb3ZlcnJpZGVlAQE4T3B0aW9uPE1vbWVudD4AASByZXNlcnZlZCkUAShPcHRpb248KCk+AAApFAQYT3B0aW9uBARUARABCBBOb25lAAAAEFNvbWUEABAAAAEAAC0UBBhSZXN1bHQIBFQBMRQERQE1CwEICE9rBAAxFAAAAAAMRXJyBAA1CwAAAQAAMRQMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1RDb2RlVXBsb2FkUmV0dXJuVmFsdWUEHEJhbGFuY2UBlQEACAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgABHGRlcG9zaXSVAQEcQmFsYW5jZQAANRQEGFJlc3VsdAgEVAHoBEUBORQBCAhPawQA6AAAAAAMRXJyBAA5FAAAAQAAORQMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc0xDb250cmFjdEFjY2Vzc0Vycm9yAAEMLERvZXNudEV4aXN0AAAAREtleURlY29kaW5nRmFpbGVkAAEASFN0b3JhZ2VXcml0ZUZhaWxlZAQANQsBNERpc3BhdGNoRXJyb3IAAgAAPRQUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMoVHJhY2VyVHlwZQABCChDYWxsVHJhY2VyBABBFAFgT3B0aW9uPENhbGxUcmFjZXJDb25maWc+AAAAOFByZXN0YXRlVHJhY2VyBABJFAFwT3B0aW9uPFByZXN0YXRlVHJhY2VyQ29uZmlnPgABAABBFAQYT3B0aW9uBARUAUUUAQgQTm9uZQAAABBTb21lBABFFAAAAQAARRQUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNAQ2FsbFRyYWNlckNvbmZpZwAACAEkd2l0aF9sb2dzmQEBEGJvb2wAATRvbmx5X3RvcF9jYWxsmQEBEGJvb2wAAEkUBBhPcHRpb24EBFQBTRQBCBBOb25lAAAAEFNvbWUEAE0UAAABAABNFBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc1BQcmVzdGF0ZVRyYWNlckNvbmZpZwAADAEkZGlmZl9tb2RlmQEBEGJvb2wAATxkaXNhYmxlX3N0b3JhZ2WZAQEQYm9vbAABMGRpc2FibGVfY29kZZkBARBib29sAABRFAAAAlUUAFUUAAAECDhZFABZFBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcxRUcmFjZQABCBBDYWxsBABdFAEkQ2FsbFRyYWNlAAAAIFByZXN0YXRlBABxFAE0UHJlc3RhdGVUcmFjZQABAABdFBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyRDYWxsVHJhY2UEDEdhcwH5BAA0ARBmcm9t8QQBEEgxNjAAAQxnYXP5BAEMR2FzAAEgZ2FzX3VzZWT5BAEMR2FzAAEIdG/xBAEQSDE2MAABFGlucHV0tRABFEJ5dGVzAAEYb3V0cHV0tRABFEJ5dGVzAAEUZXJyb3LNEwE4T3B0aW9uPFN0cmluZz4AATRyZXZlcnRfcmVhc29uzRMBOE9wdGlvbjxTdHJpbmc+AAEUY2FsbHNhFAFMVmVjPENhbGxUcmFjZTxHYXM+PgABEGxvZ3NlFAEwVmVjPENhbGxMb2c+AAEUdmFsdWXFEAEwT3B0aW9uPFUyNTY+AAEkY2FsbF90eXBlbRQBIENhbGxUeXBlAAFAY2hpbGRfY2FsbF9jb3VudDgBDHUzMgAAYRQAAAJdFABlFAAAAmkUAGkUFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzHENhbGxMb2cAABABHGFkZHJlc3PxBAEQSDE2MAABGHRvcGljc/ABJFZlYzxIMjU2PgABEGRhdGG1EAEUQnl0ZXMAASBwb3NpdGlvbjgBDHUzMgAAbRQUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMgQ2FsbFR5cGUAARgQQ2FsbAAAAChTdGF0aWNDYWxsAAEAMERlbGVnYXRlQ2FsbAACABhDcmVhdGUAAwAcQ3JlYXRlMgAEADBTZWxmZGVzdHJ1Y3QABQAAcRQUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM0UHJlc3RhdGVUcmFjZQABCCBQcmVzdGF0ZQQAdRQBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgAAACBEaWZmTW9kZQgBDHByZXUUAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AARBwb3N0dRQBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgABAAB1FAQgQlRyZWVNYXAIBEsB8QQEVgF5FAAEAIkUAAAAeRQUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNEUHJlc3RhdGVUcmFjZUluZm8AABABHGJhbGFuY2XFEAEwT3B0aW9uPFUyNTY+AAEUbm9uY2XYASxPcHRpb248dTMyPgABEGNvZGUNFAE0T3B0aW9uPEJ5dGVzPgABHHN0b3JhZ2V9FAF4QlRyZWVNYXA8Qnl0ZXMsIE9wdGlvbjxCeXRlcz4+AAB9FAQgQlRyZWVNYXAIBEsBtRAEVgENFAAEAIEUAAAAgRQAAAKFFACFFAAABAi1EA0UAIkUAAACjRQAjRQAAAQI8QR5FACRFAQYT3B0aW9uBARUAVkUAQgQTm9uZQAAABBTb21lBABZFAAAAQAAlRQEGFJlc3VsdAgEVAFZFARFASEUAQgIT2sEAFkUAAAAAAxFcnIEACEUAAABAACZFAQYUmVzdWx0CARUAZ0UBEUBoRQBCAhPawQAnRQAAAAADEVycgQAoRQAAAEAAJ0UAAAECJUBOAChFAw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzWEJhbGFuY2VDb252ZXJzaW9uRXJyb3IAAQgUVmFsdWUAAAAQRHVzdAABAAClFAhgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lMFJ1bnRpbWVFcnJvcgABuBhTeXN0ZW0EAA0NAXBmcmFtZV9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAjQ0BvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAEAUE11bHRpQmxvY2tNaWdyYXRpb25zBACRDQGEcGFsbGV0X21pZ3JhdGlvbnM6OkVycm9yPFJ1bnRpbWU+AAUAIFByZWltYWdlBAC1DQF8cGFsbGV0X3ByZWltYWdlOjpFcnJvcjxSdW50aW1lPgAGACRTY2hlZHVsZXIEAMkNAYBwYWxsZXRfc2NoZWR1bGVyOjpFcnJvcjxSdW50aW1lPgAHACBCYWxhbmNlcwQA+Q0BfHBhbGxldF9iYWxhbmNlczo6RXJyb3I8UnVudGltZT4ACgAcVmVzdGluZwQADQ4BeHBhbGxldF92ZXN0aW5nOjpFcnJvcjxSdW50aW1lPgAOABhDbGFpbXMEABEOAXRwYWxsZXRfY2xhaW1zOjpFcnJvcjxSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQAKQ4BpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkVycm9yPFJ1bnRpbWU+ABUAHFNlc3Npb24EAEkOAXhwYWxsZXRfc2Vzc2lvbjo6RXJyb3I8UnVudGltZT4AFgAkWGNtcFF1ZXVlBACFDgGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXJyb3I8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAO0OAWhwYWxsZXRfeGNtOjpFcnJvcjxSdW50aW1lPgAfADBNZXNzYWdlUXVldWUEABEPAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXJyb3I8UnVudGltZT4AIwAcVXRpbGl0eQQAFQ8BeHBhbGxldF91dGlsaXR5OjpFcnJvcjxSdW50aW1lPgAoACBNdWx0aXNpZwQAJQ8BfHBhbGxldF9tdWx0aXNpZzo6RXJyb3I8UnVudGltZT4AKQAUUHJveHkEAEkPAXBwYWxsZXRfcHJveHk6OkVycm9yPFJ1bnRpbWU+ACoAVFJlbW90ZVByb3h5UmVsYXlDaGFpbgQAUQ8BjHBhbGxldF9yZW1vdGVfcHJveHk6OkVycm9yPFJ1bnRpbWU+ACsAHEluZGljZXMEAFkPAXhwYWxsZXRfaW5kaWNlczo6RXJyb3I8UnVudGltZT4ALAAYQXNzZXRzBACFDwHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgAyABxVbmlxdWVzBACxDwF4cGFsbGV0X3VuaXF1ZXM6OkVycm9yPFJ1bnRpbWU+ADMAEE5mdHMEAAUQAWxwYWxsZXRfbmZ0czo6RXJyb3I8UnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQAGRAB3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMj4ANQBQTmZ0RnJhY3Rpb25hbGl6YXRpb24EACUQAbBwYWxsZXRfbmZ0X2ZyYWN0aW9uYWxpemF0aW9uOjpFcnJvcjxSdW50aW1lPgA2AChQb29sQXNzZXRzBAAxEAHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UzPgA3ADxBc3NldENvbnZlcnNpb24EAD0QAZxwYWxsZXRfYXNzZXRfY29udmVyc2lvbjo6RXJyb3I8UnVudGltZT4AOAAgUmVjb3ZlcnkEAFEQAXxwYWxsZXRfcmVjb3Zlcnk6OkVycm9yPFJ1bnRpbWU+ADkAHFNvY2lldHkEAJEQAXhwYWxsZXRfc29jaWV0eTo6RXJyb3I8UnVudGltZT4AOgAYUmV2aXZlBAA1EQF0cGFsbGV0X3Jldml2ZTo6RXJyb3I8UnVudGltZT4APABIU3RhdGVUcmllTWlncmF0aW9uBABZDAGscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uOjpFcnJvcjxSdW50aW1lPgBGADxOb21pbmF0aW9uUG9vbHMEAFURAZxwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RXJyb3I8UnVudGltZT4AUAAkVm90ZXJMaXN0BABpEQH0cGFsbGV0X2JhZ3NfbGlzdDo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2JhZ3NfbGlzdDo6SW5zdGFuY2UxPgBSAEBEZWxlZ2F0ZWRTdGFraW5nBAB9EQGgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nOjpFcnJvcjxSdW50aW1lPgBTADxTdGFraW5nUmNDbGllbnQEAIkRAbhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkVycm9yPFJ1bnRpbWU+AFQASE11bHRpQmxvY2tFbGVjdGlvbgQAoREB0HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6RXJyb3I8UnVudGltZT4AVQBgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBADdEQHwcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkVycm9yPFJ1bnRpbWU+AFgAHFN0YWtpbmcEAD0SAZBwYWxsZXRfc3Rha2luZ19hc3luYzo6RXJyb3I8UnVudGltZT4AWQAgVHJlYXN1cnkEAE0SAXxwYWxsZXRfdHJlYXN1cnk6OkVycm9yPFJ1bnRpbWU+AFoAQENvbnZpY3Rpb25Wb3RpbmcEAGUSAaBwYWxsZXRfY29udmljdGlvbl92b3Rpbmc6OkVycm9yPFJ1bnRpbWU+AFsAJFJlZmVyZW5kYQQAjRIBgHBhbGxldF9yZWZlcmVuZGE6OkVycm9yPFJ1bnRpbWU+AFwAJFdoaXRlbGlzdAQAkRIBgHBhbGxldF93aGl0ZWxpc3Q6OkVycm9yPFJ1bnRpbWU+AF4AIEJvdW50aWVzBACdEgF8cGFsbGV0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBfADRDaGlsZEJvdW50aWVzBACpEgGUcGFsbGV0X2NoaWxkX2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBgACRBc3NldFJhdGUEAK0SAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXJyb3I8UnVudGltZT4AYQBITXVsdGlBc3NldEJvdW50aWVzBADJEgGscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBiABRBaE9wcwQA0RIBdHBhbGxldF9haF9vcHM6OkVycm9yPFJ1bnRpbWU+AP4AKEFoTWlncmF0b3IEANkSAYhwYWxsZXRfYWhfbWlncmF0b3I6OkVycm9yPFJ1bnRpbWU+AP8AAPAYU3lzdGVtARhTeXN0ZW1MHEFjY291bnQBAQQCBAkLQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELgA4RXh0cmluc2ljQ291bnQAADgEAAS4IFRvdGFsIGV4dHJpbnNpY3MgY291bnQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgBASW5oZXJlbnRzQXBwbGllZAEAmQEEAASkIFdoZXRoZXIgYWxsIGluaGVyZW50cyBoYXZlIGJlZW4gYXBwbGllZC4ALEJsb2NrV2VpZ2h0AQAVCxgAAAAAAAAEiCBUaGUgY3VycmVudCB3ZWlnaHQgZm9yIHRoZSBibG9jay4AQEFsbEV4dHJpbnNpY3NMZW4AADgEAARBASBUb3RhbCBsZW5ndGggKGluIGJ5dGVzKSBmb3IgYWxsIGV4dHJpbnNpY3MgcHV0IHRvZ2V0aGVyLCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACRCbG9ja0hhc2gBAQQFOECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmCBNYXAgb2YgYmxvY2sgbnVtYmVycyB0byBibG9jayBoYXNoZXMuADRFeHRyaW5zaWNEYXRhAQEEBTgYBAAEPQEgRXh0cmluc2ljcyBkYXRhIGZvciB0aGUgY3VycmVudCBibG9jayAobWFwcyBhbiBleHRyaW5zaWMncyBpbmRleCB0byBpdHMgZGF0YSkuABhOdW1iZXIBADgQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLgAoUGFyZW50SGFzaAEAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLgAYRGlnZXN0AQBoBAAE8CBEaWdlc3Qgb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGFsc28gcGFydCBvZiB0aGUgYmxvY2sgaGVhZGVyLgAYRXZlbnRzAQAZCwQAHKAgRXZlbnRzIGRlcG9zaXRlZCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgAtASBFdmVudHMgaGF2ZSBhIGxhcmdlIGluLW1lbW9yeSBzaXplLiBCb3ggdGhlIGV2ZW50cyB0byBub3QgZ28gb3V0LW9mLW1lbW9yefwganVzdCBpbiBjYXNlIHNvbWVvbmUgc3RpbGwgcmVhZHMgdGhlbSBmcm9tIHdpdGhpbiB0aGUgcnVudGltZS4AKEV2ZW50Q291bnQBADgQAAAAAAS4IFRoZSBudW1iZXIgb2YgZXZlbnRzIGluIHRoZSBgRXZlbnRzPFQ+YCBsaXN0LgAsRXZlbnRUb3BpY3MBAQQCQEkKBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC4ASExhc3RSdW50aW1lVXBncmFkZQAA1QwEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC4AVFVwZ3JhZGVkVG9VMzJSZWZDb3VudAEAmQEEAARNASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBgdHlwZSBSZWZDb3VudGAgaXMgYHUzMmAuIEZhbHNlIChkZWZhdWx0KSBpZiBub3QuAGBVcGdyYWRlZFRvVHJpcGxlUmVmQ291bnQBAJkBBAAIXQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgQWNjb3VudEluZm8gY29udGFpbnMgdGhyZWUgdHlwZXMgb2YgYFJlZkNvdW50YC4gRmFsc2VIIChkZWZhdWx0KSBpZiBub3QuADhFeGVjdXRpb25QaGFzZQAA0QwEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLgBEQXV0aG9yaXplZFVwZ3JhZGUAAOEMBAAEuCBgU29tZWAgaWYgYSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4AYEV4dHJpbnNpY1dlaWdodFJlY2xhaW1lZAEAeQEIAAAcoCBUaGUgd2VpZ2h0IHJlY2xhaW1lZCBmb3IgdGhlIGV4dHJpbnNpYy4AIQEgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZXh0cmluc2ljIGV4ZWN1dGlvbi4hASBNb3JlIHByZWNpc2VseSB0aGlzIGluZm9ybWF0aW9uIGlzIHJlbW92ZWQgaW4gYG5vdGVfYXBwbGllZF9leHRyaW5zaWNgLgBxASBMb2dpYyBkb2luZyBzb21lIHBvc3QgZGlzcGF0Y2ggd2VpZ2h0IHJlZHVjdGlvbiBtdXN0IHVwZGF0ZSB0aGlzIHN0b3JhZ2UgdG8gYXZvaWQgZHVwbGljYXRlLCByZWR1Y3Rpb24uAAEkAAElCwAYMEJsb2NrV2VpZ2h0c+UMiQEHAPIFKgEACwAgSqnRAQIAgAICZc0dAAELwCb7f3QBAgAAAgELAGjlz4sBAgAgAgEAAAJlzR0AAQvA3l9ZugECAGACAQsAIEqp0QECAIACAQcAuGTZRQIAYAACZc0dAAAAAATQIEJsb2NrICYgZXh0cmluc2ljcyB3ZWlnaHRzOiBiYXNlIHZhbHVlcyBhbmQgbGltaXRzLgAsQmxvY2tMZW5ndGjxDDAAAEQAAABQAAAAUAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBibG9jayAoaW4gYnl0ZXMpLgA4QmxvY2tIYXNoQ291bnQ4EAAQAAAEVQEgTWF4aW11bSBudW1iZXIgb2YgYmxvY2sgbnVtYmVyIHRvIGJsb2NrIGhhc2ggbWFwcGluZ3MgdG8ga2VlcCAob2xkZXN0IHBydW5lZCBmaXJzdCkuACBEYldlaWdodPkMQIgP0QAAAAAAoHT4AQAAAAAECQEgVGhlIHdlaWdodCBvZiBydW50aW1lIGRhdGFiYXNlIG9wZXJhdGlvbnMgdGhlIHJ1bnRpbWUgY2FuIGludm9rZS4AHFZlcnNpb279DKkFJHN0YXRlbWluZSRzdGF0ZW1pbmUBAAAAaIgeAAAAAABs3XGNXMUyYtQBAAAABOcFIaDT0vgBAAAA173YonLKDWUCAAAA32rLaJkHYJsFAAAAN+OX/HyR9eQCAAAAQP461AH4lZoGAAAA0ryYl+7QjxUDAAAA94sni+U/RUwCAAAAqzwFcikf64sBAAAAzNneY5bImcoBAAAAvJ2JkE9bkj8BAAAAioBHpTqCd+wBAAAAN8i7E1CpoqgEAAAA8/8U1atScFkDAAAAb/Uu6Fjmxb0CAAAAkbHIsWMo65ICAAAAn/tQWqc41pwBAAAAJgm+g6xEaNwBAAAAEsjj1NfgbeABAAAA3pK4oEJrm/YCAAAA6pPj8W89aWIDAAAA+8V3uddH79YBAAAAot22pYR3v2MBAAAAF6a8DQBirrMBAAAAGO9Yo7Z7p3ABAAAAxR/x+j9dDMoBAAAAjEA+XEqf1EIBAAAADwAAAAEEhCBHZXQgdGhlIGNoYWluJ3MgaW4tY29kZSB2ZXJzaW9uLgAoU1M1OFByZWZpePkDCAIAFKggVGhlIGRlc2lnbmF0ZWQgU1M1OCBwcmVmaXggb2YgdGhpcyBjaGFpbi4AOQEgVGhpcyByZXBsYWNlcyB0aGUgInNzNThGb3JtYXQiIHByb3BlcnR5IGRlY2xhcmVkIGluIHRoZSBjaGFpbiBzcGVjLiBSZWFzb24gaXMxASB0aGF0IHRoZSBydW50aW1lIHNob3VsZCBrbm93IGFib3V0IHRoZSBwcmVmaXggaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2YgaXQgYXNwIGFuIGlkZW50aWZpZXIgb2YgdGhlIGNoYWluLgABDQ0AHCxSdW50aW1lQ2FsbCAEjCBUaGUgYWdncmVnYXRlZCBgUnVudGltZUNhbGxgIHR5cGUuFE5vbmNlOARJASBUaGlzIHN0b3JlcyB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHRyYW5zYWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSBzZW5kZXIgYWNjb3VudC4QSGFzaEAEmCBUaGUgb3V0cHV0IG9mIHRoZSBgSGFzaGluZ2AgZnVuY3Rpb24uHEhhc2hpbmdlBwQhASBUaGUgaGFzaGluZyBzeXN0ZW0gKGFsZ29yaXRobSkgYmVpbmcgdXNlZCBpbiB0aGUgcnVudGltZSAoZS5nLiBCbGFrZTIpLiRBY2NvdW50SWQEBMggVGhlIHVzZXIgYWNjb3VudCBpZGVudGlmaWVyIHR5cGUgZm9yIHRoZSBydW50aW1lLhRCbG9jaxENCGEBIFRoZSBCbG9jayB0eXBlIHVzZWQgYnkgdGhlIHJ1bnRpbWUuIFRoaXMgaXMgdXNlZCBieSBgY29uc3RydWN0X3J1bnRpbWVgIHRvIHJldHJpZXZlIHRoZcwgZXh0cmluc2ljcyBvciBvdGhlciBibG9jayBzcGVjaWZpYyBkYXRhIGFzIG5lZWRlZC4sQWNjb3VudERhdGENCwhhASBEYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBhY2NvdW50IChvdGhlciB0aGFuIG5vbmNlL3RyYW5zYWN0aW9uIGNvdW50ZXIsIHdoaWNoIHRoaXNkIHBhbGxldCBkb2VzIHJlZ2FyZGxlc3MpLgAAAAA8UGFyYWNoYWluU3lzdGVtATxQYXJhY2hhaW5TeXN0ZW1sRFVuaW5jbHVkZWRTZWdtZW50AQAlDQQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AABJDQQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVxASBbYDpjb2RlYF1bc3BfY29yZTo6c3RvcmFnZTo6d2VsbF9rbm93bl9rZXlzOjpDT0RFXSB3aGljaCB3aWxsIHJlc3VsdCB0aGUgbmV4dCBibG9jayBwcm9jZXNzCQEgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABMBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAJkBBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQBNDQQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBAEENBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAVAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAAFUNBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AAGkNBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEAcQ2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBAHUNBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAAgQ0EAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAIENBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAIUNBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBcVXB3YXJkRGVsaXZlcnlGZWVGYWN0b3IBAIEHQAAAZKeztuANAAAAAAAAAAAE5CBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieSBmb3IgVU1QLgCEQW5ub3VuY2VkSHJtcE1lc3NhZ2VzUGVyQ2FuZGlkYXRlAQA4EAAAAAAIZQEgVGhlIG51bWJlciBvZiBIUk1QIG1lc3NhZ2VzIHdlIG9ic2VydmVkIGluIGBvbl9pbml0aWFsaXplYCBhbmQgdGh1cyB1c2VkIHRoYXQgbnVtYmVyIGZvcvAgYW5ub3VuY2luZyB0aGUgd2VpZ2h0IG9mIGBvbl9pbml0aWFsaXplYCBhbmQgYG9uX2ZpbmFsaXplYC4AaFJlc2VydmVkWGNtcFdlaWdodE92ZXJyaWRlAAB5AQQACF0BIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBYQ01QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AZFJlc2VydmVkRG1wV2VpZ2h0T3ZlcnJpZGUAAHkBBAAIWQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIERNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGBDdXN0b21WYWxpZGF0aW9uSGVhZERhdGEAABgEAAwpASBBIGN1c3RvbSBoZWFkIGRhdGEgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYXMgcmVzdWx0IG9mIGB2YWxpZGF0ZV9ibG9ja2AuABEBIFNlZSBgUGFsbGV0OjpzZXRfY3VzdG9tX3ZhbGlkYXRpb25faGVhZF9kYXRhYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4AAUQAAU0LAAQoU2VsZlBhcmFJZKAQ6AMAAAS4IFJldHVybnMgdGhlIHBhcmFjaGFpbiBJRCB3ZSBhcmUgcnVubmluZyB3aXRoLgABjQ0AAAABAAAkVGltZXN0YW1wASRUaW1lc3RhbXAIDE5vdwEAKCAAAAAAAAAAAASgIFRoZSBjdXJyZW50IHRpbWUgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAkRGlkVXBkYXRlAQCZAQQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbQAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgADAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAKAQZAAAAAAAAbwAAAAAAAAEAABQTXVsdGlCbG9ja01pZ3JhdGlvbnMBUE11bHRpQmxvY2tNaWdyYXRpb25zCBhDdXJzb3IAAMgEAAzYIFRoZSBjdXJyZW50bHkgYWN0aXZlIG1pZ3JhdGlvbiB0byBydW4gYW5kIGl0cyBjdXJzb3IuALwgYE5vbmVgIGluZGljYXRlcyB0aGF0IG5vIG1pZ3JhdGlvbiBpcyBydW5uaW5nLgAgSGlzdG9yaWMAAQQF4BAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AAcAAAVELAAgwQ3Vyc29yTWF4TGVuOBAAAAEAEKQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgY3Vyc29yLgBlASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGEgY3Vyc29yIHdpdGggTUVMCQEgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AQElkZW50aWZpZXJNYXhMZW44EAABAAAQtCBUaGUgbWF4aW1hbCBsZW5ndGggb2YgYW4gZW5jb2RlZCBpZGVudGlmaWVyLgBVASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGFuIGlkZW50aWZpZXItASB3aXRoIE1FTCBhYm92ZSB0aGlzIGxpbWl0LiBUaGlzIGlzIHN0YXRpY2FsbHkgY2hlY2tlZCBpbiBgaW50ZWdyaXR5X3Rlc3RgLgABkQ0AAAAFAAAgUHJlaW1hZ2UBIFByZWltYWdlDCRTdGF0dXNGb3IAAQQGQJUNBAAEkCBUaGUgcmVxdWVzdCBzdGF0dXMgb2YgYSBnaXZlbiBoYXNoLgJAUmVxdWVzdFN0YXR1c0ZvcgBAUmVxdWVzdFN0YXR1c0ZvcgABBAZAnQ0EAASQIFRoZSByZXF1ZXN0IHN0YXR1cyBvZiBhIGdpdmVuIGhhc2guACxQcmVpbWFnZUZvcgABBAatDbENBAAAAAHsAAFVCwAAAbUNAAAABgAAJFNjaGVkdWxlcgEkU2NoZWR1bGVyEDxJbmNvbXBsZXRlU2luY2UAADgEAAT0IEJsb2NrIG51bWJlciBhdCB3aGljaCB0aGUgYWdlbmRhIGJlZ2FuIGluY29tcGxldGUgZXhlY3V0aW9uLgAYQWdlbmRhAQEEBTi5DQQABE0BIEl0ZW1zIHRvIGJlIGV4ZWN1dGVkLCBpbmRleGVkIGJ5IHRoZSBibG9jayBudW1iZXIgdGhhdCB0aGV5IHNob3VsZCBiZSBleGVjdXRlZCBvbi4AHFJldHJpZXMAAQQC/CkJBAAEIQEgUmV0cnkgY29uZmlndXJhdGlvbnMgZm9yIGl0ZW1zIHRvIGJlIGV4ZWN1dGVkLCBpbmRleGVkIGJ5IHRhc2sgYWRkcmVzcy4AGExvb2t1cAABBAUI/AQAEPggTG9va3VwIGZyb20gYSBuYW1lIHRvIHRoZSBibG9jayBudW1iZXIgYW5kIGluZGV4IG9mIHRoZSB0YXNrLgBZASBGb3IgdjMgLT4gdjQgdGhlIHByZXZpb3VzbHkgdW5ib3VuZGVkIGlkZW50aXRpZXMgYXJlIEJsYWtlMi0yNTYgaGFzaGVkIHRvIGZvcm0gdGhlIHY0MCBpZGVudGl0aWVzLgAB9AABWQsACDRNYXhpbXVtV2VpZ2h0eQEsCwCAbod0AQIAAAIEKQEgVGhlIG1heGltdW0gd2VpZ2h0IHRoYXQgbWF5IGJlIHNjaGVkdWxlZCBwZXIgYmxvY2sgZm9yIGFueSBkaXNwYXRjaGFibGVzLgBQTWF4U2NoZWR1bGVkUGVyQmxvY2s4EDIAAAAUHQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNjaGVkdWxlZCBjYWxscyBpbiB0aGUgcXVldWUgZm9yIGEgc2luZ2xlIGJsb2NrLgAYIE5PVEU6UQEgKyBEZXBlbmRlbnQgcGFsbGV0cycgYmVuY2htYXJrcyBtaWdodCByZXF1aXJlIGEgaGlnaGVyIGxpbWl0IGZvciB0aGUgc2V0dGluZy4gU2V0IGHEIGhpZ2hlciBsaW1pdCB1bmRlciBgcnVudGltZS1iZW5jaG1hcmtzYCBmZWF0dXJlLgAByQ0ABCxSdW50aW1lQ2FsbCAEaCBUaGUgYWdncmVnYXRlZCBjYWxsIHR5cGUuAAcAAChQYXJhbWV0ZXJzAShQYXJhbWV0ZXJzBChQYXJhbWV0ZXJzAAEEAmULgQsEAARMIFN0b3JlZCBwYXJhbWV0ZXJzLgABAQEAAWELAAAAAAAIAAA0V2VpZ2h0UmVjbGFpbQAAAAAAAAAJCIEBIFBhbGxldCB0byB1c2UgYWxvbmdzaWRlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW2BTdG9yYWdlV2VpZ2h0UmVjbGFpbWBdLCB0aGUgcGFsbGV0IHByb3ZpZGVzjCB3ZWlnaHQgaW5mb3JtYXRpb24gYW5kIGJlbmNobWFya3MuACBCYWxhbmNlcwEgQmFsYW5jZXMcNFRvdGFsSXNzdWFuY2UBAJUBQAAAAAAAAAAAAAAAAAAAAAAEmCBUaGUgdG90YWwgdW5pdHMgaXNzdWVkIGluIHRoZSBzeXN0ZW0uAEBJbmFjdGl2ZUlzc3VhbmNlAQCVAUAAAAAAAAAAAAAAAAAAAAAABAkBIFRoZSB0b3RhbCB1bml0cyBvZiBvdXRzdGFuZGluZyBkZWFjdGl2YXRlZCBiYWxhbmNlIGluIHRoZSBzeXN0ZW0uABxBY2NvdW50AQEEAgQNCwEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGAJASBUaGUgQmFsYW5jZXMgcGFsbGV0IGV4YW1wbGUgb2Ygc3RvcmluZyB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUgexkCICAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3RvcmFnZU1hcFNoaW08U2VsZjo6QWNjb3VudDxSdW50aW1lPiwgZnJhbWVfc3lzdGVtOjpQcm92aWRlcjxSdW50aW1lPiwgQWNjb3VudElkLCBTZWxmOjpBY2NvdW50RGF0YTxCYWxhbmNlPj4MICB9ECBgYGAAFQEgWW91IGNhbiBhbHNvIHN0b3JlIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQgaW4gdGhlIGBTeXN0ZW1gIHBhbGxldC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHt0ICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTeXN0ZW0MICB9ECBgYGAAUQEgQnV0IHRoaXMgY29tZXMgd2l0aCB0cmFkZW9mZnMsIHN0b3JpbmcgYWNjb3VudCBiYWxhbmNlcyBpbiB0aGUgc3lzdGVtIHBhbGxldCBzdG9yZXNtASBgZnJhbWVfc3lzdGVtYCBkYXRhIGFsb25nc2lkZSB0aGUgYWNjb3VudCBkYXRhIGNvbnRyYXJ5IHRvIHN0b3JpbmcgYWNjb3VudCBiYWxhbmNlcyBpbiB0aGUpASBgQmFsYW5jZXNgIHBhbGxldCwgd2hpY2ggdXNlcyBhIGBTdG9yYWdlTWFwYCB0byBzdG9yZSBiYWxhbmNlcyBkYXRhIG9ubHkuQQEgTk9URTogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGhlIGNhc2UgdGhhdCB0aGlzIHBhbGxldCBpcyB1c2VkIHRvIHN0b3JlIGJhbGFuY2VzLgAUTG9ja3MBAQQCBM0NBAAQuCBBbnkgbGlxdWlkaXR5IGxvY2tzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4lASBOT1RFOiBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB3aGVuIHNldHRpbmcsIGNoYW5naW5nIGFuZCBmcmVlaW5nIGEgbG9jay4ArQEgVXNlIG9mIGxvY2tzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGZyZWV6ZXMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAgUmVzZXJ2ZXMBAQQCBNENBAAMpCBOYW1lZCByZXNlcnZlcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gABRIb2xkcwEBBAIE3Q0EAARsIEhvbGRzIG9uIGFjY291bnQgYmFsYW5jZXMuABxGcmVlemVzAQEEAgTpDQQABIggRnJlZXplIGxvY2tzIG9uIGFjY291bnQgYmFsYW5jZXMuAAGNAQABmQsAEEhFeGlzdGVudGlhbERlcG9zaXSVAUDV3DIAAAAAAAAAAAAAAAAAIEEBIFRoZSBtaW5pbXVtIGFtb3VudCByZXF1aXJlZCB0byBrZWVwIGFuIGFjY291bnQgb3Blbi4gTVVTVCBCRSBHUkVBVEVSIFRIQU4gWkVSTyEAWQEgSWYgeW91ICpyZWFsbHkqIG5lZWQgaXQgdG8gYmUgemVybywgeW91IGNhbiBlbmFibGUgdGhlIGZlYXR1cmUgYGluc2VjdXJlX3plcm9fZWRgIGZvcmEBIHRoaXMgcGFsbGV0LiBIb3dldmVyLCB5b3UgZG8gc28gYXQgeW91ciBvd24gcmlzazogdGhpcyB3aWxsIG9wZW4gdXAgYSBtYWpvciBEb1MgdmVjdG9yLlkBIEluIGNhc2UgeW91IGhhdmUgbXVsdGlwbGUgc291cmNlcyBvZiBwcm92aWRlciByZWZlcmVuY2VzLCB5b3UgbWF5IGFsc28gZ2V0IHVuZXhwZWN0ZWSMIGJlaGF2aW91ciBpZiB5b3Ugc2V0IHRoaXMgdG8gemVyby4A8CBCb3R0b20gbGluZTogRG8geW91cnNlbGYgYSBmYXZvdXIgYW5kIG1ha2UgaXQgYXQgbGVhc3Qgb25lIQAgTWF4TG9ja3M4EDIAAAAQ9CBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9ja3MgdGhhdCBzaG91bGQgZXhpc3Qgb24gYW4gYWNjb3VudC7cIE5vdCBzdHJpY3RseSBlbmZvcmNlZCwgYnV0IHVzZWQgZm9yIHdlaWdodCBlc3RpbWF0aW9uLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACxNYXhSZXNlcnZlczgQMgAAAAwNASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudC4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAKE1heEZyZWV6ZXM4EAEAAAAEYQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluZGl2aWR1YWwgZnJlZXplIGxvY2tzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQgYXQgYW55IHRpbWUuAAH5DQAQRFJ1bnRpbWVIb2xkUmVhc29uoQsEdCBUaGUgb3ZlcmFyY2hpbmcgaG9sZCByZWFzb24uHEJhbGFuY2WVAQRsIFRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuRFJlc2VydmVJZGVudGlmaWVylQIMaCBUaGUgSUQgdHlwZSBmb3IgcmVzZXJ2ZXMuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gQEZyZWV6ZUlkZW50aWZpZXLxDQRkIFRoZSBJRCB0eXBlIGZvciBmcmVlemVzLgAKAABIVHJhbnNhY3Rpb25QYXltZW50AUhUcmFuc2FjdGlvblBheW1lbnQMRE5leHRGZWVNdWx0aXBsaWVyAQCBB0AAAGSns7bgDQAAAAAAAAAAAAA4U3RvcmFnZVZlcnNpb24BAP0NBAAAADxUeFBheW1lbnRDcmVkaXQAAAEOBAAM8CBUaGUgYE9uQ2hhcmdlVHJhbnNhY3Rpb25gIHN0b3JlcyB0aGUgd2l0aGRyYXduIHR4IGZlZSBoZXJlLgA1ASBVc2UgYHdpdGhkcmF3X3R4ZmVlYCBhbmQgYHJlbWFpbmluZ190eGZlZWAgdG8gYWNjZXNzIGZyb20gb3V0c2lkZSB0aGUgY3JhdGUuAAABwQsABGBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXIMBAVUWQEgQSBmZWUgbXVsdGlwbGllciBmb3IgYE9wZXJhdGlvbmFsYCBleHRyaW5zaWNzIHRvIGNvbXB1dGUgInZpcnR1YWwgdGlwIiB0byBib29zdCB0aGVpciwgYHByaW9yaXR5YABRASBUaGlzIHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgdGhlIGBmaW5hbF9mZWVgIHRvIG9idGFpbiBhICJ2aXJ0dWFsIHRpcCIgdGhhdCBpcyBsYXRlcvQgYWRkZWQgdG8gYSB0aXAgY29tcG9uZW50IGluIHJlZ3VsYXIgYHByaW9yaXR5YCBjYWxjdWxhdGlvbnMuTQEgSXQgbWVhbnMgdGhhdCBhIGBOb3JtYWxgIHRyYW5zYWN0aW9uIGNhbiBmcm9udC1ydW4gYSBzaW1pbGFybHktc2l6ZWQgYE9wZXJhdGlvbmFsYEEBIGV4dHJpbnNpYyAod2l0aCBubyB0aXApLCBieSBpbmNsdWRpbmcgYSB0aXAgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSB2aXJ0dWFsIHRpcC4APCBgYGBydXN0LGlnbm9yZUAgLy8gRm9yIGBOb3JtYWxgjCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCk7AFQgLy8gRm9yIGBPcGVyYXRpb25hbGARASBsZXQgdmlydHVhbF90aXAgPSAoaW5jbHVzaW9uX2ZlZSArIHRpcCkgKiBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXI7xCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCArIHZpcnR1YWxfdGlwKTsQIGBgYABRASBOb3RlIHRoYXQgc2luY2Ugd2UgdXNlIGBmaW5hbF9mZWVgIHRoZSBtdWx0aXBsaWVyIGFwcGxpZXMgYWxzbyB0byB0aGUgcmVndWxhciBgdGlwYF0BIHNlbnQgd2l0aCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBub3Qgb25seSBkb2VzIHRoZSB0cmFuc2FjdGlvbiBnZXQgYSBwcmlvcml0eSBidW1wIGJhc2VkYQEgb24gdGhlIGBpbmNsdXNpb25fZmVlYCwgYnV0IHdlIGFsc28gYW1wbGlmeSB0aGUgaW1wYWN0IG9mIHRpcHMgYXBwbGllZCB0byBgT3BlcmF0aW9uYWxgOCB0cmFuc2FjdGlvbnMuAAAAAAsAADhBc3NldFR4UGF5bWVudAAAAcULAAAAAAANAAAcVmVzdGluZwEcVmVzdGluZwgcVmVzdGluZwABBAIEqQgEAATYIEluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgdmVzdGluZyBvZiBhIGdpdmVuIGFjY291bnQuADhTdG9yYWdlVmVyc2lvbgEACQ4EAAx8IFN0b3JhZ2UgdmVyc2lvbiBvZiB0aGUgcGFsbGV0LgAxASBOZXcgbmV0d29ya3Mgc3RhcnQgd2l0aCBsYXRlc3QgdmVyc2lvbiwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgZ2VuZXNpcyBidWlsZC4AAaUBAAHJCwAIRE1pblZlc3RlZFRyYW5zZmVylQFA1dwyAAAAAAAAAAAAAAAAAAToIFRoZSBtaW5pbXVtIGFtb3VudCB0cmFuc2ZlcnJlZCB0byBjYWxsIGB2ZXN0ZWRfdHJhbnNmZXJgLgBMTWF4VmVzdGluZ1NjaGVkdWxlczgQHAAAAAAAAQ0OAAAADgAAGENsYWltcwEYQ2xhaW1zFBhDbGFpbXMAAQQGuQGVAQQAAAAUVG90YWwBAJUBQAAAAAAAAAAAAAAAAAAAAAAAABxWZXN0aW5nAAEEBrkBwQEEABB4IFZlc3Rpbmcgc2NoZWR1bGUgZm9yIGEgY2xhaW0uDQEgRmlyc3QgYmFsYW5jZSBpcyB0aGUgdG90YWwgYW1vdW50IHRoYXQgc2hvdWxkIGJlIGhlbGQgZm9yIHZlc3Rpbmcu5CBTZWNvbmQgYmFsYW5jZSBpcyBob3cgbXVjaCBzaG91bGQgYmUgdW5sb2NrZWQgcGVyIGJsb2NrLswgVGhlIGJsb2NrIG51bWJlciBpcyB3aGVuIHRoZSB2ZXN0aW5nIHNob3VsZCBzdGFydC4AHFNpZ25pbmcAAQQGuQHJAQQABMAgVGhlIHN0YXRlbWVudCBraW5kIHRoYXQgbXVzdCBiZSBzaWduZWQsIGlmIGFueS4AJFByZWNsYWltcwABBAYEuQEEAAQtASBQcmUtY2xhaW1lZCBFdGhlcmV1bSBhY2NvdW50cywgYnkgdGhlIEFjY291bnQgSUQgdGhhdCB0aGV5IGFyZSBjbGFpbWVkIHRvLgABrQEAAc0LAAQYUHJlZml4GIB8UGF5IEtTTXMgdG8gdGhlIEt1c2FtYSBhY2NvdW50OgAAAREOAAAADwAAKEF1dGhvcnNoaXABKEF1dGhvcnNoaXAEGEF1dGhvcgAABAQABGQgQXV0aG9yIG9mIGN1cnJlbnQgYmxvY2suAAAAAAAAABQAAERDb2xsYXRvclNlbGVjdGlvbgFEQ29sbGF0b3JTZWxlY3Rpb24UNEludnVsbmVyYWJsZXMBABUOBAAEEQEgVGhlIGludnVsbmVyYWJsZSwgcGVybWlzc2lvbmVkIGNvbGxhdG9ycy4gVGhpcyBsaXN0IG11c3QgYmUgc29ydGVkLgA0Q2FuZGlkYXRlTGlzdAEAGQ4EABRpASBUaGUgKGNvbW11bml0eSwgbGltaXRlZCkgY29sbGF0aW9uIGNhbmRpZGF0ZXMuIGBDYW5kaWRhdGVzYCBhbmQgYEludnVsbmVyYWJsZXNgIHNob3VsZCBiZVAgbXV0dWFsbHkgZXhjbHVzaXZlLgB1ASBUaGlzIGxpc3QgaXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSBkZXBvc2l0IGFuZCB3aGVuIHRoZSBkZXBvc2l0cyBhcmUgZXF1YWwsIHRoZSBsZWFzdKAgcmVjZW50bHkgdXBkYXRlZCBpcyBjb25zaWRlcmVkIGdyZWF0ZXIuAERMYXN0QXV0aG9yZWRCbG9jawEBBAUEOBAAAAAABIQgTGFzdCBibG9jayBhdXRob3JlZCBieSBjb2xsYXRvci4ARERlc2lyZWRDYW5kaWRhdGVzAQA4EAAAAAAMeCBEZXNpcmVkIG51bWJlciBvZiBjYW5kaWRhdGVzLgB1ASBUaGlzIHNob3VsZCBpZGVhbGx5IGFsd2F5cyBiZSBsZXNzIHRoYW4gW2BDb25maWc6Ok1heENhbmRpZGF0ZXNgXSBmb3Igd2VpZ2h0cyB0byBiZSBjb3JyZWN0LgA0Q2FuZGlkYWN5Qm9uZAEAlQFAAAAAAAAAAAAAAAAAAAAAAAy4IEZpeGVkIGFtb3VudCB0byBkZXBvc2l0IHRvIGJlY29tZSBhIGNvbGxhdG9yLgBBASBXaGVuIGEgY29sbGF0b3IgY2FsbHMgYGxlYXZlX2ludGVudGAgdGhleSBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBkZXBvc2l0IGJhY2suAAHNAQAB0QsAGBRQb3RJZCUOIFBvdFN0YWtlBPQgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIGludGVybmFsIFBvdCBpcyBnZW5lcmF0ZWQuADRNYXhDYW5kaWRhdGVzOBBkAAAADMggTWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlLgDMIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGludnVsbmVyYWJsZXMuAFBNaW5FbGlnaWJsZUNvbGxhdG9yczgQBAAAAAxVASBNaW5pbXVtIG51bWJlciBlbGlnaWJsZSBjb2xsYXRvcnMuIFNob3VsZCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIHplcm8uIFRoaXMgaW5jbHVkZXNRASBJbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBvbmUgY29sbGF0b3Igd2hvIGNhbkQgcHJvZHVjZSBhIGJsb2NrLgBATWF4SW52dWxuZXJhYmxlczgQFAAAAASEIE1heGltdW0gbnVtYmVyIG9mIGludnVsbmVyYWJsZXMuADRLaWNrVGhyZXNob2xkOBAQDgAAAAAscG90X2FjY291bnQEgG1vZGxQb3RTdGFrZQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAEpDgAELFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4AFQAAHFNlc3Npb24BHFNlc3Npb24gKFZhbGlkYXRvcnMBAJ0BBAAEfCBUaGUgY3VycmVudCBzZXQgb2YgdmFsaWRhdG9ycy4AMEN1cnJlbnRJbmRleAEAOBAAAAAABHggQ3VycmVudCBpbmRleCBvZiB0aGUgc2Vzc2lvbi4ANFF1ZXVlZENoYW5nZWQBAJkBBAAIOQEgVHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBlY29ub21pYyBpZGVudGl0aWVzIG9yIHdlaWdodGluZyBiZWhpbmQgdGhlIHZhbGlkYXRvcnOkIGhhcyBjaGFuZ2VkIGluIHRoZSBxdWV1ZWQgdmFsaWRhdG9yIHNldC4AKFF1ZXVlZEtleXMBAC0OBAAIPQEgVGhlIHF1ZXVlZCBrZXlzIGZvciB0aGUgbmV4dCBzZXNzaW9uLiBXaGVuIHRoZSBuZXh0IHNlc3Npb24gYmVnaW5zLCB0aGVzZSBrZXlz4CB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZGF0b3IncyBzZXNzaW9uIGtleXMuAEhEaXNhYmxlZFZhbGlkYXRvcnMBADUOBAAUgCBJbmRpY2VzIG9mIGRpc2FibGVkIHZhbGlkYXRvcnMuAD0BIFRoZSB2ZWMgaXMgYWx3YXlzIGtlcHQgc29ydGVkIHNvIHRoYXQgd2UgY2FuIGZpbmQgd2hldGhlciBhIGdpdmVuIHZhbGlkYXRvciBpcz0BIGRpc2FibGVkIHVzaW5nIGJpbmFyeSBzZWFyY2guIEl0IGdldHMgY2xlYXJlZCB3aGVuIGBvbl9zZXNzaW9uX2VuZGluZ2AgcmV0dXJuc2QgYSBuZXcgc2V0IG9mIGlkZW50aXRpZXMuACBOZXh0S2V5cwABBAUE1QEEAAScIFRoZSBuZXh0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuACBLZXlPd25lcgABBAVBDgQEAAQJASBUaGUgb3duZXIgb2YgYSBrZXkuIFRoZSBrZXkgaXMgdGhlIGBLZXlUeXBlSWRgICsgdGhlIGVuY29kZWQga2V5LgBERXh0ZXJuYWxseVNldEtleXMAAQQFBBAEABAxASBBY2NvdW50cyB3aG9zZSBrZXlzIHdlcmUgc2V0IHZpYSBgU2Vzc2lvbkludGVyZmFjZWAgKGV4dGVybmFsIHBhdGgpIHdpdGhvdXQ5ASBpbmNyZW1lbnRpbmcgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBvciBwbGFjaW5nIGEga2V5IGRlcG9zaXQuIGBkb19wdXJnZV9rZXlzYDkBIG9ubHkgZGVjcmVtZW50cyBjb25zdW1lcnMgZm9yIGFjY291bnRzIHRoYXQgd2VyZSByZWdpc3RlcmVkIHRocm91Z2ggdGhlIGxvY2FsQCBzZXNzaW9uIHBhbGxldC4AAdEBAAHVCwAEKEtleURlcG9zaXSVAUAAAAAAAAAAAAAAAAAAAAAABKQgVGhlIGFtb3VudCB0byBiZSBoZWxkIHdoZW4gc2V0dGluZyBrZXlzLgABSQ4ACCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuEEtleXPVAQQoIFRoZSBrZXlzLgAWAAAQQXVyYQEQQXVyYQgsQXV0aG9yaXRpZXMBAE0OBAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LgAsQ3VycmVudFNsb3QBAFUOIAAAAAAAAAAADIAgVGhlIGN1cnJlbnQgc2xvdCBvZiB0aGlzIGJsb2NrLgCUIFRoaXMgd2lsbCBiZSBzZXQgaW4gYG9uX2luaXRpYWxpemVgLgAAAAQwU2xvdER1cmF0aW9uKCDgLgAAAAAAABANASBUaGUgc2xvdCBkdXJhdGlvbiBBdXJhIHNob3VsZCBydW4gd2l0aCwgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcy49ASBUaGUgZWZmZWN0aXZlIHZhbHVlIG9mIHRoaXMgdHlwZSBzaG91bGQgbm90IGNoYW5nZSB3aGlsZSB0aGUgY2hhaW4gaXMgcnVubmluZy4ANQEgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGVpdGhlciB1c2UgW2BNaW5pbXVtUGVyaW9kVGltZXNUd29gXSBvciBhIGNvbnN0LgAABCxBdXRob3JpdHlJZNkBBJggVGhlIGlkZW50aWZpZXIgdHlwZSBmb3IgYW4gYXV0aG9yaXR5LgAXAAAcQXVyYUV4dAEcQXVyYUV4dAgsQXV0aG9yaXRpZXMBAE0OBAAUlCBTZXJ2ZXMgYXMgY2FjaGUgZm9yIHRoZSBhdXRob3JpdGllcy4AcQEgVGhlIGF1dGhvcml0aWVzIGluIEF1UmEgYXJlIG92ZXJ3cml0dGVuIGluIGBvbl9pbml0aWFsaXplYCB3aGVuIHdlIHN3aXRjaCB0byBhIG5ldyBzZXNzaW9uLF0BIGJ1dCB3ZSByZXF1aXJlIHRoZSBvbGQgYXV0aG9yaXRpZXMgdG8gdmVyaWZ5IHRoZSBzZWFsIHdoZW4gdmFsaWRhdGluZyBhIFBvVi4gVGhpcyB3aWxsDQEgYWx3YXlzIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBBdVJhIGF1dGhvcml0aWVzIGluIGBvbl9maW5hbGl6ZWAuADRSZWxheVNsb3RJbmZvAABZDgQAEAkBIEN1cnJlbnQgcmVsYXkgY2hhaW4gc2xvdCBwYWlyZWQgd2l0aCBhIG51bWJlciBvZiBhdXRob3JlZCBibG9ja3MuAGUBIFRoaXMgaXMgdXBkYXRlZCBpbiBbYEZpeGVkVmVsb2NpdHlDb25zZW5zdXNIb29rOjpvbl9zdGF0ZV9wcm9vZmBdIHdpdGggdGhlIGN1cnJlbnQgcmVsYXncIGNoYWluIHNsb3QgYXMgcHJvdmlkZWQgYnkgdGhlIHJlbGF5IGNoYWluIHN0YXRlIHByb29mLgAAAAAAAAAYAAAkWGNtcFF1ZXVlASRYY21wUXVldWUcUEluYm91bmRYY21wU3VzcGVuZGVkAQBdDgQAIA0BIFRoZSBzdXNwZW5kZWQgaW5ib3VuZCBYQ01QIGNoYW5uZWxzLiBBbGwgb3RoZXJzIGFyZSBub3Qgc3VzcGVuZGVkLgBxASBUaGlzIGlzIGEgYFN0b3JhZ2VWYWx1ZWAgaW5zdGVhZCBvZiBhIGBTdG9yYWdlTWFwYCBzaW5jZSB3ZSBleHBlY3QgbXVsdGlwbGUgcmVhZHMgcGVyIGJsb2NraQEgdG8gZGlmZmVyZW50IGtleXMgd2l0aCBhIG9uZSBieXRlIHBheWxvYWQuIFRoZSBhY2Nlc3MgdG8gYEJvdW5kZWRCVHJlZVNldGAgd2lsbCBiZSBjYWNoZWQVASB3aXRoaW4gdGhlIGJsb2NrIGFuZCB0aGVyZWZvcmUgb25seSBpbmNsdWRlZCBvbmNlIGluIHRoZSBwcm9vZiBzaXplLgBlASBOT1RFOiBUaGUgUG9WIGJlbmNobWFya2luZyBjYW5ub3Qga25vdyB0aGlzIGFuZCB3aWxsIG92ZXItZXN0aW1hdGUsIGJ1dCB0aGUgYWN0dWFsIHByb29mRCB3aWxsIGJlIHNtYWxsZXIuAEhPdXRib3VuZFhjbXBTdGF0dXMBAGkOBAAYXQEgVGhlIG5vbi1lbXB0eSBYQ01QIGNoYW5uZWxzIGluIG9yZGVyIG9mIGJlY29taW5nIG5vbi1lbXB0eSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RRASBhbmQgbGFzdCBvdXRib3VuZCBtZXNzYWdlLiBJZiB0aGUgdHdvIGluZGljZXMgYXJlIGVxdWFsLCB0aGVuIGl0IGluZGljYXRlcyBhbiBlbXB0eVkBIHF1ZXVlIGFuZCB0aGVyZSBtdXN0IGJlIGEgbm9uLWBPa2AgYE91dGJvdW5kU3RhdHVzYC4gV2UgYXNzdW1lIHF1ZXVlcyBncm93IG5vIGdyZWF0ZXJZASB0aGFuIDY1NTM1IGl0ZW1zLiBRdWV1ZSBpbmRpY2VzIGZvciBub3JtYWwgbWVzc2FnZXMgYmVnaW4gYXQgb25lOyB6ZXJvIGlzIHJlc2VydmVkIGluEQEgY2FzZSBvZiB0aGUgbmVlZCB0byBzZW5kIGEgaGlnaC1wcmlvcml0eSBzaWduYWwgbWVzc2FnZSB0aGlzIGJsb2NrLgkBIFRoZSBib29sIGlzIHRydWUgaWYgdGhlcmUgaXMgYSBzaWduYWwgbWVzc2FnZSB3YWl0aW5nIHRvIGJlIHNlbnQuAFBPdXRib3VuZFhjbXBNZXNzYWdlcwEBCAIFeQ59DgQABLwgVGhlIG1lc3NhZ2VzIG91dGJvdW5kIGluIGEgZ2l2ZW4gWENNUCBjaGFubmVsLgA4U2lnbmFsTWVzc2FnZXMBAQQCoH0OBAAEoCBBbnkgc2lnbmFsIG1lc3NhZ2VzIHdhaXRpbmcgdG8gYmUgc2VudC4ALFF1ZXVlQ29uZmlnAQCBDjAgAAAAMAAAAAgAAAAEFQEgVGhlIGNvbmZpZ3VyYXRpb24gd2hpY2ggY29udHJvbHMgdGhlIGR5bmFtaWNzIG9mIHRoZSBvdXRib3VuZCBxdWV1ZS4AOFF1ZXVlU3VzcGVuZGVkAQCZAQQABEEBIFdoZXRoZXIgb3Igbm90IHRoZSBYQ01QIHF1ZXVlIGlzIHN1c3BlbmRlZCBmcm9tIGV4ZWN1dGluZyBpbmNvbWluZyBYQ01zIG9yIG5vdC4ARERlbGl2ZXJ5RmVlRmFjdG9yAQEEBaCBB0AAAGSns7bgDQAAAAAAAAAABMQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkuAAHdAQAB2QsADExNYXhJbmJvdW5kU3VzcGVuZGVkOBDoAwAAFEkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gYmUgc3VzcGVuZGVkIHNpbXVsdGFuZW91c2x5LgBdASBBbnkgZnVydGhlciBjaGFubmVsIHN1c3BlbnNpb25zIHdpbGwgZmFpbCBhbmQgbWVzc2FnZXMgbWF5IGdldCBkcm9wcGVkIHdpdGhvdXQgZnVydGhlckUBIG5vdGljZS4gQ2hvb3NpbmcgYSBoaWdoIHZhbHVlICgxMDAwKSBpcyBva2F5OyB0aGUgdHJhZGUtb2ZmIHRoYXQgaXMgZGVzY3JpYmVkIGlu2CBbYEluYm91bmRYY21wU3VzcGVuZGVkYF0gc3RpbGwgYXBwbGllcyBhdCB0aGF0IHNjYWxlLgBkTWF4QWN0aXZlT3V0Ym91bmRDaGFubmVsczgQgAAAACBlASBNYXhpbWFsIG51bWJlciBvZiBvdXRib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGhhdmUgbWVzc2FnZXMgcXVldWVkIGF0IHRoZSBzYW1lIHRpbWUuAFUBIElmIHRoaXMgaXMgcmVhY2hlZCwgdGhlbiBubyBmdXJ0aGVyIG1lc3NhZ2VzIGNhbiBiZSBzZW50IHRvIGNoYW5uZWxzIHRoYXQgZG8gbm90IHlldF0BIGhhdmUgYSBtZXNzYWdlIHF1ZXVlZC4gVGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBleHBlY3RlZCBtYXhpbXVtIG9mIG91dGJvdW5kIGNoYW5uZWxzYQEgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSBbYFNlbGY6OkNoYW5uZWxJbmZvYF0uIEl0IGlzIGltcG9ydGFudCB0byBzZXQgdGhpcyBsYXJnZSBlbm91Z2gsXQEgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgcHJvdG9jb2wgd2lsbCBub3Qgd29yayBhcyBpbnRlbmRlZCBhbmQgbWVzc2FnZXNRASBtYXkgYmUgZHJvcHBlZC4gVGhpcyB2YWx1ZSBpbmNyZWFzZXMgdGhlIFBvViBhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgYmUgcGlja2VkIHRvb00BIGhpZ2guIEdvdmVybmFuY2UgbmVlZHMgdG8gcGF5IGF0dGVudGlvbiB0byBub3Qgb3BlbiBtb3JlIGNoYW5uZWxzIHRoYW4gdGhpcyB2YWx1ZS4ALE1heFBhZ2VTaXplOBAAnAEAFLggVGhlIG1heGltYWwgcGFnZSBzaXplIGZvciBIUk1QIG1lc3NhZ2UgcGFnZXMuAGEBIEEgbG93ZXIgbGltaXQgY2FuIGJlIHNldCBkeW5hbWljYWxseSwgYnV0IHRoaXMgaXMgdGhlIGhhcmQtbGltaXQgZm9yIHRoZSBQb1Ygd29yc3QgY2FzZVUBIGJlbmNobWFya2luZy4gVGhlIGxpbWl0IGZvciB0aGUgc2l6ZSBvZiBhIG1lc3NhZ2UgaXMgc2xpZ2h0bHkgYmVsb3cgdGhpcywgc2luY2Ugc29tZbggb3ZlcmhlYWQgaXMgaW5jdXJyZWQgZm9yIGVuY29kaW5nIHRoZSBmb3JtYXQuAAGFDgAAAB4AACxQb2xrYWRvdFhjbQEsUG9sa2Fkb3RYY208MFF1ZXJ5Q291bnRlcgEAKCAAAAAAAAAAAASIIFRoZSBsYXRlc3QgYXZhaWxhYmxlIHF1ZXJ5IGluZGV4LgAcUXVlcmllcwABBAIoiQ4EAARUIFRoZSBvbmdvaW5nIHF1ZXJpZXMuAChBc3NldFRyYXBzAQEEBkA4EAAAAAAQaCBUaGUgZXhpc3RpbmcgYXNzZXQgdHJhcHMuAGEBIEtleSBpcyB0aGUgYmxha2UyIDI1NiBoYXNoIG9mIChvcmlnaW4sIHZlcnNpb25lZCBgQXNzZXRzYCkgcGFpci4gVmFsdWUgaXMgdGhlIG51bWJlciBvZh0BIHRpbWVzIHRoaXMgcGFpciBoYXMgYmVlbiB0cmFwcGVkICh1c3VhbGx5IGp1c3QgMSBpZiBpdCBleGlzdHMgYXQgYWxsKS4AOFNhZmVYY21WZXJzaW9uAAA4BAAIYQEgRGVmYXVsdCB2ZXJzaW9uIHRvIGVuY29kZSBYQ00gd2hlbiBsYXRlc3QgdmVyc2lvbiBvZiBkZXN0aW5hdGlvbiBpcyB1bmtub3duLiBJZiBgTm9uZWAsPQEgdGhlbiB0aGUgZGVzdGluYXRpb25zIHdob3NlIFhDTSB2ZXJzaW9uIGlzIHVua25vd24gYXJlIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUuAEBTdXBwb3J0ZWRWZXJzaW9uAAEIBQKdDjgEAATwIFRoZSBMYXRlc3QgdmVyc2lvbnMgdGhhdCB3ZSBrbm93IHZhcmlvdXMgbG9jYXRpb25zIHN1cHBvcnQuAEBWZXJzaW9uTm90aWZpZXJzAAEIBQKdDigEAAQFASBBbGwgbG9jYXRpb25zIHRoYXQgd2UgaGF2ZSByZXF1ZXN0ZWQgdmVyc2lvbiBub3RpZmljYXRpb25zIGZyb20uAFBWZXJzaW9uTm90aWZ5VGFyZ2V0cwABCAUCnQ6hDgQACHEBIFRoZSB0YXJnZXQgbG9jYXRpb25zIHRoYXQgYXJlIHN1YnNjcmliZWQgdG8gb3VyIHZlcnNpb24gY2hhbmdlcywgYXMgd2VsbCBhcyB0aGUgbW9zdCByZWNlbnSUIG9mIG91ciB2ZXJzaW9ucyB3ZSBpbmZvcm1lZCB0aGVtIG9mLgBUVmVyc2lvbkRpc2NvdmVyeVF1ZXVlAQClDgQADGUBIERlc3RpbmF0aW9ucyB3aG9zZSBsYXRlc3QgWENNIHZlcnNpb24gd2Ugd291bGQgbGlrZSB0byBrbm93LiBEdXBsaWNhdGVzIG5vdCBhbGxvd2VkLCBhbmRxASB0aGUgYHUzMmAgY291bnRlciBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBzZW5kIHRvIHRoZSBkZXN0aW5hdGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsjCB3aGljaCBpcyB1c2VkIGFzIGEgcHJpb3JpdGl6YXRpb24uAEBDdXJyZW50TWlncmF0aW9uAACxDgQABJwgVGhlIGN1cnJlbnQgbWlncmF0aW9uJ3Mgc3RhZ2UsIGlmIGFueS4AVFJlbW90ZUxvY2tlZEZ1bmdpYmxlcwABDAUCArUOuQ4EAATwIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gYSByZW1vdGUgY2hhaW4uADxMb2NrZWRGdW5naWJsZXMAAQQCBMkOBAAE4CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIHRoaXMgY2hhaW4uAFRYY21FeGVjdXRpb25TdXNwZW5kZWQBAJkBBAAEtCBHbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgA8U2hvdWxkUmVjb3JkWGNtAQCZAQQAHFkBIFdoZXRoZXIgb3Igbm90IGluY29taW5nIFhDTXMgKGJvdGggZXhlY3V0ZWQgbG9jYWxseSBhbmQgcmVjZWl2ZWQpIHNob3VsZCBiZSByZWNvcmRlZC7EIE9ubHkgb25lIFhDTSBwcm9ncmFtIHdpbGwgYmUgcmVjb3JkZWQgYXQgYSB0aW1lLikBIFRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBydW50aW1lIEFQSXMsIGFuZCBpdCdzIGFkdmlzZWQgaXQgc3RheXMgZmFsc2UNASBmb3IgYWxsIG90aGVyIHVzZSBjYXNlcywgc28gYXMgdG8gbm90IGRlZ3JhZGUgcmVndWxhciBwZXJmb3JtYW5jZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgAsUmVjb3JkZWRYY20AADEDBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgBEQXV0aG9yaXplZEFsaWFzZXMAAQQC5QHVDgQADGUBIE1hcCBvZiBhdXRob3JpemVkIGFsaWFzZXJzIG9mIGxvY2FsIG9yaWdpbnMuIEVhY2ggbG9jYWwgbG9jYXRpb24gY2FuIGF1dGhvcml6ZSBhIGxpc3Qgb2ZZASBvdGhlciBsb2NhdGlvbnMgdG8gYWxpYXMgaW50byBpdC4gRWFjaCBhbGlhc2VyIGlzIG9ubHkgdmFsaWQgdW50aWwgaXRzIGlubmVyIGBleHBpcnlgOCBibG9jayBudW1iZXIuAAHhAQgBArkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAgLZAVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAd0LABBEVW5pdmVyc2FsTG9jYXRpb249AhgCCQMAoQ8EhCBUaGlzIGNoYWluJ3MgVW5pdmVyc2FsIExvY2F0aW9uLgBQQWR2ZXJ0aXNlZFhjbVZlcnNpb244EAUAAAAIJQEgVGhlIGxhdGVzdCBzdXBwb3J0ZWQgdmVyc2lvbiB0aGF0IHdlIGFkdmVydGlzZS4gR2VuZXJhbGx5IGp1c3Qgc2V0IGl0IHRvhCBgcGFsbGV0X3hjbTo6Q3VycmVudFhjbVZlcnNpb25gLgAoTWF4TG9ja2VyczgQCAAAAAQZASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9jYWwgWENNIGxvY2tzIHRoYXQgYSBzaW5nbGUgYWNjb3VudCBtYXkgaGF2ZS4AWE1heFJlbW90ZUxvY2tDb25zdW1lcnM4EAAAAAAE/CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGEgc2luZ2xlIHJlbW90ZSBsb2NrIG1heSBoYXZlLgAB7Q4EGAK8VXNlIGBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3JgIGluc3RlYWQBGDIwLjAuMAgsUnVudGltZUNhbGwgBGQgVGhlIHJ1bnRpbWUgYENhbGxgIHR5cGUucFJlbW90ZUxvY2tDb25zdW1lcklkZW50aWZpZXIQBMQgVGhlIElEIHR5cGUgZm9yIGxvY2FsIGNvbnN1bWVycyBvZiByZW1vdGUgbG9ja3MuAB8AAChDdW11bHVzWGNtAAHhAwAB7QsAAAAAACAAAExUb1BvbGthZG90WGNtUm91dGVyAUxUb1BvbGthZG90WGNtUm91dGVyBBhCcmlkZ2UBAPUORAAAZKeztuANAAAAAAAAAAAAHGggQnJpZGdlIHRoYXQgd2UgYXJlIHVzaW5nLgBxASAqKmJyaWRnZXMtdjEqKiBhc3N1bXB0aW9uczogYWxsIG91dGJvdW5kIG1lc3NhZ2VzIHRocm91Z2ggdGhpcyByb3V0ZXIgYXJlIHVzaW5nIHNpbmdsZSBsYW5lbQEgYW5kIHRvIHNpbmdsZSByZW1vdGUgY29uc2Vuc3VzLiBJZiB0aGVyZSBpcyBzb21lIG90aGVyIHJlbW90ZSBjb25zZW5zdXMgdGhhdCB1c2VzIHRoZSBzYW1lYQEgYnJpZGdlIGh1YiwgdGhlIHNlcGFyYXRlIHBhbGxldCBpbnN0YW5jZSBzaGFsbCBiZSB1c2VkLCBJbiBgdjJgIHdlJ2xsIGhhdmUgYWxsIHJlcXVpcmVkcQEgcHJpbWl0aXZlcyAobGFuZS1pZCBha2EgYnJpZGdlLWlkLCBkZXJpdmVkIGZyb20gWENNIGxvY2F0aW9ucykgdG8gc3VwcG9ydCBtdWx0aXBsZSAgYnJpZGdlc3QgYnkgdGhlIHNhbWUgcGFsbGV0IGluc3RhbmNlLgAB5QMAAfELAAAAAAAiAAAwTWVzc2FnZVF1ZXVlATBNZXNzYWdlUXVldWUMMEJvb2tTdGF0ZUZvcgEBBAXtA/kOdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMwgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhbmQgbGFzdCAobm9uLWVtcHR5KSBwYWdlcy4ALFNlcnZpY2VIZWFkAADtAwQABLwgVGhlIG9yaWdpbiBhdCB3aGljaCB3ZSBzaG91bGQgYmVnaW4gc2VydmljaW5nLgAUUGFnZXMAAQgFBQUPCQ8EAASIIFRoZSBtYXAgb2YgcGFnZSBpbmRpY2VzIHRvIHBhZ2VzLgAB6QMAAfULABAgSGVhcFNpemU4EAAAAQAUPQEgVGhlIHNpemUgb2YgdGhlIHBhZ2U7IHRoaXMgaW1wbGllcyB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgd2hpY2ggY2FuIGJlIHNlbnQuAFkBIEEgZ29vZCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBleHBlY3RlZCBtZXNzYWdlIHNpemVzLCB0aGVpciB3ZWlnaHRzLCB0aGUgd2VpZ2h0IHRoYXQgaXNdASBhdmFpbGFibGUgZm9yIHByb2Nlc3NpbmcgdGhlbSBhbmQgdGhlIG1heGltYWwgbmVlZGVkIG1lc3NhZ2Ugc2l6ZS4gVGhlIG1heGltYWwgbWVzc2FnZREBIHNpemUgaXMgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGlzIGFzIGRlZmluZWQgYnkgW2BNYXhNZXNzYWdlTGVuT2ZgXS4AIE1heFN0YWxlOBAIAAAADF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFsZSBwYWdlcyAoaS5lLiBvZiBvdmVyd2VpZ2h0IG1lc3NhZ2VzKSBhbGxvd2VkIGJlZm9yZSBjdWxsaW5nUQEgY2FuIGhhcHBlbi4gT25jZSB0aGVyZSBhcmUgbW9yZSBzdGFsZSBwYWdlcyB0aGFuIHRoaXMsIHRoZW4gaGlzdG9yaWNhbCBwYWdlcyBtYXkgYmX8IGRyb3BwZWQsIGV2ZW4gaWYgdGhleSBjb250YWluIHVucHJvY2Vzc2VkIG92ZXJ3ZWlnaHQgbWVzc2FnZXMuADRTZXJ2aWNlV2VpZ2h0dQEsAQcAEKXU6AIAQAEYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLgBQSWRsZU1heFNlcnZpY2VXZWlnaHR1ASwBBwAQpdToAgBAARRdASBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHRvIGJlIHVzZWQgZnJvbSByZW1haW5pbmcgd2VpZ2h0IGBvbl9pZGxlYCB3aGljaEEBIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3Igc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pZGxlYC49ASBVc2VmdWwgZm9yIHBhcmFjaGFpbnMgdG8gcHJvY2VzcyBtZXNzYWdlcyBhdCB0aGUgc2FtZSBibG9jayB0aGV5IGFyZSByZWNlaXZlZC4AKQEgSWYgYE5vbmVgLCBpdCB3aWxsIG5vdCBjYWxsIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgaW4gYG9uX2lkbGVgLgABEQ8ABBBTaXplOARUIFBhZ2UvaGVhcCBzaXplIHR5cGUuACMAABxVdGlsaXR5AAHxAwAB/QsABExiYXRjaGVkX2NhbGxzX2xpbWl0OBCqKgAABKggVGhlIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgYmF0Y2hlZCBjYWxscy4AARUPAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS40UGFsbGV0c09yaWdpbv0DBPAgVGhlIGNhbGxlciBvcmlnaW4sIG92ZXJhcmNoaW5nIHR5cGUgb2YgYWxsIHBhbGxldHMgb3JpZ2lucy4AKAAAIE11bHRpc2lnASBNdWx0aXNpZwQkTXVsdGlzaWdzAAEIBQIZDx0PBAAElCBUaGUgc2V0IG9mIG9wZW4gbXVsdGlzaWcgb3BlcmF0aW9ucy4AARkEAAEBDAAMLERlcG9zaXRCYXNllQFA3NkcjwEAAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ANERlcG9zaXRGYWN0b3KVAUCgwqIAAAAAAAAAAAAAAAAADFUBIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciB1bml0IHRocmVzaG9sZCB3aGVuIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uLgAlASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBtb3JlIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AOE1heFNpZ25hdG9yaWVzOBBkAAAABOwgVGhlIG1heGltdW0gYW1vdW50IG9mIHNpZ25hdG9yaWVzIGFsbG93ZWQgaW4gdGhlIG11bHRpc2lnLgABJQ8ABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgApAAAUUHJveHkBFFByb3h5CBxQcm94aWVzAQEEBQQpD0QAAAAAAAAAAAAAAAAAAAAAAAhFASBUaGUgc2V0IG9mIGFjY291bnQgcHJveGllcy4gTWFwcyB0aGUgYWNjb3VudCB3aGljaCBoYXMgZGVsZWdhdGVkIHRvIHRoZSBhY2NvdW50cyEBIHdoaWNoIGFyZSBiZWluZyBkZWxlZ2F0ZWQgdG8sIHRvZ2V0aGVyIHdpdGggdGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQuADRBbm5vdW5jZW1lbnRzAQEEBQQ5D0QAAAAAAAAAAAAAAAAAAAAAAASsIFRoZSBhbm5vdW5jZW1lbnRzIG1hZGUgYnkgdGhlIHByb3h5IChrZXkpLgABJQQAAQUMABhAUHJveHlEZXBvc2l0QmFzZZUBQOy1KI4BAAAAAAAAAAAAAAAQEQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIHByb3h5LgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMlASBgc2l6ZW9mKEJhbGFuY2UpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXMgYHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ASFByb3h5RGVwb3NpdEZhY3RvcpUBQLXYpwAAAAAAAAAAAAAAAAAUvCBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgcHJveHkgYWRkZWQuADUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIHBsdXMgYW4gaW5zdGFuY2Ugb2YgYFByb3h5VHlwZWAgbW9yZSBpbnRvIGFhASBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4gVGh1cywgd2hlbiBjb25maWd1cmluZyBgUHJveHlEZXBvc2l0RmFjdG9yYCBvbmUgc2hvdWxkIHRha2X0IGludG8gYWNjb3VudCBgMzIgKyBwcm94eV90eXBlLmVuY29kZSgpLmxlbigpYCBieXRlcyBvZiBkYXRhLgAoTWF4UHJveGllczgQIAAAAATwIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBwcm94aWVzIGFsbG93ZWQgZm9yIGEgc2luZ2xlIGFjY291bnQuAChNYXhQZW5kaW5nOBAgAAAABEUBIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lLWRlbGF5ZWQgYW5ub3VuY2VtZW50cyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHBlbmRpbmcuAFxBbm5vdW5jZW1lbnREZXBvc2l0QmFzZZUBQJRmUY4BAAAAAAAAAAAAAAAQMQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhbiBhbm5vdW5jZW1lbnQuAEkBIFRoaXMgaXMgaGVsZCB3aGVuIGEgbmV3IHN0b3JhZ2UgaXRlbSBob2xkaW5nIGEgYEJhbGFuY2VgIGlzIGNyZWF0ZWQgKHR5cGljYWxseSAxNiAgYnl0ZXMpLgBkQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvcpUBQGqxTwEAAAAAAAAAAAAAAAAQ1CBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgYW5ub3VuY2VtZW50IG1hZGUuAFkBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGFuIGBBY2NvdW50SWRgLCBgSGFzaGAgYW5kIGBCbG9ja051bWJlcmAgKHR5cGljYWxseSA2OCBieXRlcymMIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AAUkPAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4kUHJveHlUeXBlLQQQVQEgQSBraW5kIG9mIHByb3h5OyBzcGVjaWZpZWQgd2l0aCB0aGUgcHJveHkgYW5kIHBhc3NlZCBpbiB0byB0aGUgYElzUHJveHlhYmxlYCBmaWx0ZXIuUQEgVGhlIGluc3RhbmNlIGZpbHRlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBjYWxsIG1heSBiZSBwcm94aWVkIHVuZGVyIHRoaXMgdHlwZS4ATQEgSU1QT1JUQU5UOiBgRGVmYXVsdGAgbXVzdCBiZSBwcm92aWRlZCBhbmQgTVVTVCBCRSB0aGUgdGhlICptb3N0IHBlcm1pc3NpdmUqIHZhbHVlLggYCdeDRnJ6DvWMD6A7r6Mjy8UUiNkqGqcTewO/tQ78F0RjaGVja19wZXJtaXNzaW9ucwgQY2FsbCAocHJveHlfdHlwZS0EmQEE9CBDaGVjayBpZiBhIGBSdW50aW1lQ2FsbGAgaXMgYWxsb3dlZCBmb3IgYSBnaXZlbiBgUHJveHlUeXBlYC4AGAnXg0Zyeg71jA+gO6+jIxcUsGB9Yq8KOzsK0sXVXFgsaXNfc3VwZXJzZXQIIHRvX2NoZWNrLQQcYWdhaW5zdC0EmQEE9CBDaGVjayBpZiBvbmUgYFByb3h5VHlwZWAgaXMgYSBzdWJzZXQgb2YgYW5vdGhlciBgUHJveHlUeXBlYC4AKgAAVFJlbW90ZVByb3h5UmVsYXlDaGFpbgFUUmVtb3RlUHJveHlSZWxheUNoYWluBCxCbG9ja1RvUm9vdAEATQ8EAAhhASBTdG9yZXMgdGhlIGxhc3QgW2BDb25maWc6Ok1heFN0b3JhZ2VSb290c1RvS2VlcGBdIGJsb2NrIHRvIHN0b3JhZ2Ugcm9vdCBtYXBwaW5ncyBvZiB0aGU4IHRhcmdldCBjaGFpbi4AATEEAAAAAVEPAAAAKwAAHEluZGljZXMBHEluZGljZXMEIEFjY291bnRzAAEEAjhVDwQABIggVGhlIGxvb2t1cCBmcm9tIGluZGV4IHRvIGFjY291bnQuAAE5BAABDQwABBxEZXBvc2l0lQFAlGZRjgEAAAAAAAAAAAAAAASsIFRoZSBkZXBvc2l0IG5lZWRlZCBmb3IgcmVzZXJ2aW5nIGFuIGluZGV4LgABWQ8ABDBBY2NvdW50SW5kZXg4CFUBIFR5cGUgdXNlZCBmb3Igc3RvcmluZyBhbiBhY2NvdW50J3MgaW5kZXg7IGltcGxpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoZUQgc3lzdGVtIGNhbiBob2xkLgAsAAAYQXNzZXRzARhBc3NldHMYFEFzc2V0AAEEAjhdDwQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAmUPaQ8EAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgJ1D3kPBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4fQ9QAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjhBBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAT0EAAERDAAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdJUBQDqmI5EBAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0lQFA9KOujQEAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2WVAUA4ILeOAQAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRllQFAFRYFAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0lQFA1dwyAAAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAGFDwAUHEJhbGFuY2WVAQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQ4BIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVyZBxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhEAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEGgqWdUaueSKjIzEGP+XCNKnApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkOIkPBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0lMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZDhhBAS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNIuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWQ4jQ8EwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQ4RQQE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuADIAABxVbmlxdWVzARxVbmlxdWVzKBRDbGFzcwABBAI4kQ8EAARkIERldGFpbHMgb2YgYSBjb2xsZWN0aW9uLgBMT3duZXJzaGlwQWNjZXB0YW5jZQABBAIEOAQABCkBIFRoZSBjb2xsZWN0aW9uLCBpZiBhbnksIG9mIHdoaWNoIGFuIGFjY291bnQgaXMgd2lsbGluZyB0byB0YWtlIG93bmVyc2hpcC4AHEFjY291bnQAAQwCAgKVDxAEAAhZASBUaGUgaXRlbXMgaGVsZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGl0ZW1zIG93bmVkIGJ5IGEgc2luZ2xlbCBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgAwQ2xhc3NBY2NvdW50AAEIAgJhBRAEAAhpASBUaGUgY29sbGVjdGlvbnMgb3duZWQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBjb2xsZWN0aW9ucyBvd25lZCBieZAgYSBzaW5nbGUgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4AFEFzc2V0AAEIAgL8mQ8EAATQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLgA8Q2xhc3NNZXRhZGF0YU9mAAEEAjidDwQABGggTWV0YWRhdGEgb2YgYSBjb2xsZWN0aW9uLgBISW5zdGFuY2VNZXRhZGF0YU9mAAEIAgL8oQ8EAARUIE1ldGFkYXRhIG9mIGFuIGl0ZW0uACRBdHRyaWJ1dGUAAQwCAgKlD6kPBAAEcCBBdHRyaWJ1dGVzIG9mIGEgY29sbGVjdGlvbi4ALEl0ZW1QcmljZU9mAAEIAgL8rQ8EAARwIFByaWNlIG9mIGFuIGFzc2V0IGluc3RhbmNlLgBMQ29sbGVjdGlvbk1heFN1cHBseQABBAI4OAQABPAgS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gbWlnaHQgaGF2ZS4AAUkEAAEVDAAgRENvbGxlY3Rpb25EZXBvc2l0lQFAAOh2SBcAAAAAAAAAAAAAAAQBASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgY29sbGVjdGlvbi4ALEl0ZW1EZXBvc2l0lQFAAMqaOwAAAAAAAAAAAAAAAAT0IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBpdGVtLgBMTWV0YWRhdGFEZXBvc2l0QmFzZZUBQDlj7Y8BAAAAAAAAAAAAAAAETQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBpdGVtLgBQQXR0cmlidXRlRGVwb3NpdEJhc2WVAUCkQl2NAQAAAAAAAAAAAAAABFUBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIGFuIGF0dHJpYnV0ZSB0byBhbiBpdGVtLgA4RGVwb3NpdFBlckJ5dGWVAUAVFgUAAAAAAAAAAAAAAAAACFkBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZSBpbiBtZXRhZGF0YSzAIGVpdGhlciAibm9ybWFsIiBtZXRhZGF0YSBvciBhdHRyaWJ1dGUgbWV0YWRhdGEuACxTdHJpbmdMaW1pdDgQgAAAAASwIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkYXRhIHN0b3JlZCBvbi1jaGFpbi4AIEtleUxpbWl0OBAgAAAABKAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSBrZXkuAChWYWx1ZUxpbWl0OBBAAAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSB2YWx1ZS4AAbEPAAgwQ29sbGVjdGlvbklkOAScIElkZW50aWZpZXIgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIGl0ZW0uGEl0ZW1JZDgE9CBUaGUgdHlwZSB1c2VkIHRvIGlkZW50aWZ5IGEgdW5pcXVlIGl0ZW0gd2l0aGluIGEgY29sbGVjdGlvbi4AMwAAEE5mdHMBEE5mdHM8KENvbGxlY3Rpb24AAQQCOLUPBAAEZCBEZXRhaWxzIG9mIGEgY29sbGVjdGlvbi4ATE93bmVyc2hpcEFjY2VwdGFuY2UAAQQCBDgEAAQpASBUaGUgY29sbGVjdGlvbiwgaWYgYW55LCBvZiB3aGljaCBhbiBhY2NvdW50IGlzIHdpbGxpbmcgdG8gdGFrZSBvd25lcnNoaXAuABxBY2NvdW50AAEMAgIClQ8QBAAIWQEgVGhlIGl0ZW1zIGhlbGQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBpdGVtcyBvd25lZCBieSBhIHNpbmdsZWwgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4ARENvbGxlY3Rpb25BY2NvdW50AAEIAgJhBRAEAAhpASBUaGUgY29sbGVjdGlvbnMgb3duZWQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBjb2xsZWN0aW9ucyBvd25lZCBieZAgYSBzaW5nbGUgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4AQENvbGxlY3Rpb25Sb2xlT2YAAQgCAmUPuQ8EAAjQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLqAgU3RvcmVzIGNvbGxlY3Rpb24gcm9sZXMgYXMgcGVyIGFjY291bnQuABBJdGVtAAEIAgL8wQ8EAATQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLgBQQ29sbGVjdGlvbk1ldGFkYXRhT2YAAQQCONkPBAAEaCBNZXRhZGF0YSBvZiBhIGNvbGxlY3Rpb24uADhJdGVtTWV0YWRhdGFPZgABCAIC/N0PBAAEVCBNZXRhZGF0YSBvZiBhbiBpdGVtLgAkQXR0cmlidXRlAAEQAgICAuUP6Q8EAARwIEF0dHJpYnV0ZXMgb2YgYSBjb2xsZWN0aW9uLgAsSXRlbVByaWNlT2YAAQgCAvytDwQABFAgQSBwcmljZSBvZiBhbiBpdGVtLgBkSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbHNPZgEBCAIC/PEPBAAEaCBJdGVtIGF0dHJpYnV0ZSBhcHByb3ZhbHMuAEBOZXh0Q29sbGVjdGlvbklkAAA4BAAIMQEgU3RvcmVzIHRoZSBgQ29sbGVjdGlvbklkYCB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGNvbGxlY3Rpb24u8CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgY29sbGVjdGlvbiBpcyBjcmVhdGVkLgA0UGVuZGluZ1N3YXBPZgABCAIC/PkPBAAEfCBIYW5kbGVzIGFsbCB0aGUgcGVuZGluZyBzd2Fwcy4ASENvbGxlY3Rpb25Db25maWdPZgABBAI4aQQEAARgIENvbmZpZyBvZiBhIGNvbGxlY3Rpb24uADBJdGVtQ29uZmlnT2YAAQgCAvyRBAQABEwgQ29uZmlnIG9mIGFuIGl0ZW0uAAFlBAABGQwAOERDb2xsZWN0aW9uRGVwb3NpdJUBQE558o8BAAAAAAAAAAAAAAAEAQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGNvbGxlY3Rpb24uACxJdGVtRGVwb3NpdJUBQDP8AwoAAAAAAAAAAAAAAAAE9CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gaXRlbS4ATE1ldGFkYXRhRGVwb3NpdEJhc2WVAUCFI/4nAAAAAAAAAAAAAAAABE0BIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgaXRlbS4AUEF0dHJpYnV0ZURlcG9zaXRCYXNllQFAqoa8JwAAAAAAAAAAAAAAAARVASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBhbiBhdHRyaWJ1dGUgdG8gYW4gaXRlbS4AOERlcG9zaXRQZXJCeXRllQFAFRYFAAAAAAAAAAAAAAAAAAhZASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3RvcmUgaW4gbWV0YWRhdGEswCBlaXRoZXIgIm5vcm1hbCIgbWV0YWRhdGEgb3IgYXR0cmlidXRlIG1ldGFkYXRhLgAsU3RyaW5nTGltaXQ4EAABAAAEsCBUaGUgbWF4aW11bSBsZW5ndGggb2YgZGF0YSBzdG9yZWQgb24tY2hhaW4uACBLZXlMaW1pdDgQQAAAAASgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUga2V5LgAoVmFsdWVMaW1pdDgQAAEAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUgdmFsdWUuADhBcHByb3ZhbHNMaW1pdDgQFAAAAASoIFRoZSBtYXhpbXVtIGFwcHJvdmFscyBhbiBpdGVtIGNvdWxkIGhhdmUuAHBJdGVtQXR0cmlidXRlc0FwcHJvdmFsc0xpbWl0OBAeAAAABNQgVGhlIG1heGltdW0gYXR0cmlidXRlcyBhcHByb3ZhbHMgYW4gaXRlbSBjb3VsZCBoYXZlLgAcTWF4VGlwczgQCgAAAASoIFRoZSBtYXggbnVtYmVyIG9mIHRpcHMgYSB1c2VyIGNvdWxkIHNlbmQuAExNYXhEZWFkbGluZUR1cmF0aW9uOBAAGk8ABKggVGhlIG1heCBkdXJhdGlvbiBpbiBibG9ja3MgZm9yIGRlYWRsaW5lcy4AUE1heEF0dHJpYnV0ZXNQZXJDYWxsOBAKAAAABOAgVGhlIG1heCBudW1iZXIgb2YgYXR0cmlidXRlcyBhIHVzZXIgY291bGQgc2V0IHBlciBjYWxsLgAgRmVhdHVyZXP9DyAAAAAAAAAAAASQIERpc2FibGVzIHNvbWUgb2YgcGFsbGV0J3MgZmVhdHVyZXMuAAEFEAAMMENvbGxlY3Rpb25JZDgknCBJZGVudGlmaWVyIGZvciB0aGUgY29sbGVjdGlvbiBvZiBpdGVtLgBJASBTQUZFVFk6IFRoZSBmdW5jdGlvbnMgaW4gdGhlIGBJbmNyZW1lbnRhYmxlYCB0cmFpdCBhcmUgZmFsbGlibGUuIElmIHRoZSBmdW5jdGlvbnNBASBvZiB0aGUgaW1wbGVtZW50YXRpb24gYm90aCByZXR1cm4gYE5vbmVgLCB0aGUgYXV0b21hdGljIENvbGxlY3Rpb25JZCBnZW5lcmF0aW9uKQEgc2hvdWxkIG5vdCBiZSB1c2VkLiBTbyB0aGUgYGNyZWF0ZWAgYW5kIGBmb3JjZV9jcmVhdGVgIGV4dHJpbnNpY3MgYW5kIHRoZU0BIGBjcmVhdGVfY29sbGVjdGlvbmAgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gYFVua25vd25Db2xsZWN0aW9uYCBFcnJvci4gSW5zdGVhZCB1c2VBASB0aGUgYGNyZWF0ZV9jb2xsZWN0aW9uX3dpdGhfaWRgIGZ1bmN0aW9uLiBIb3dldmVyLCBpZiB0aGUgYEluY3JlbWVudGFibGVgIHRyYWl0SQEgaW1wbGVtZW50YXRpb24gaGFzIGFuIGluY3JlbWVudGFsIG9yZGVyLCB0aGUgYGNyZWF0ZV9jb2xsZWN0aW9uX3dpdGhfaWRgIGZ1bmN0aW9u/CBzaG91bGQgbm90IGJlIHVzZWQgYXMgaXQgY2FuIGNsYWltIGEgdmFsdWUgaW4gdGhlIElEIHNlcXVlbmNlLhhJdGVtSWQ4BPQgVGhlIHR5cGUgdXNlZCB0byBpZGVudGlmeSBhIHVuaXF1ZSBpdGVtIHdpdGhpbiBhIGNvbGxlY3Rpb24uRE9mZmNoYWluU2lnbmF0dXJluQQMaCBPZmYtQ2hhaW4gc2lnbmF0dXJlIHR5cGUuAAkBIENhbiB2ZXJpZnkgd2hldGhlciBhbiBgU2VsZjo6T2ZmY2hhaW5QdWJsaWNgIGNyZWF0ZWQgYSBzaWduYXR1cmUuADQAADRGb3JlaWduQXNzZXRzATRGb3JlaWduQXNzZXRzGBRBc3NldAABBAI5Al0PBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICCRBpDwQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICAg0QeQ8EAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAjkCERBQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjkCyQQEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAAOQIEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgABxQQAASEMABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0lQFAOqYjkQEAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXSVAUD0o66NAQAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZZUBQDggt44BAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGWVAUAVFgUAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXSVAUDV3DIAAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AARkQABQcQmFsYW5jZZUBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZDkCBIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVyOQIcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0Yc0EBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QMOZKVgJvS148LRlig6mhfacCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWQ5AokPBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4AMOZKVgJvS148LRlig6mhfVMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZDkCYQQEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgAw5kpWAm9LXjwtGWKDqaF9LodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlkOQIdEATAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuADDmSlYCb0tePC0ZYoOpoX1k9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZDkC0QQE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuADUAAFBOZnRGcmFjdGlvbmFsaXphdGlvbgFQTmZ0RnJhY3Rpb25hbGl6YXRpb24EKE5mdFRvQXNzZXQAAQQC/CEQBAAEFQEgS2VlcHMgdHJhY2sgb2YgdGhlIGNvcnJlc3BvbmRpbmcgTkZUIElELCBhc3NldCBJRCBhbmQgYW1vdW50IG1pbnRlZC4AAdUEAAElDAAUHERlcG9zaXSVAUA6piORAQAAAAAAAAAAAAAACGUBIFRoZSBkZXBvc2l0IHBhaWQgYnkgdGhlIHVzZXIgbG9ja2luZyBhbiBORlQuIFRoZSBkZXBvc2l0IGlzIHJldHVybmVkIHRvIHRoZSBvcmlnaW5hbCBORlTkIG93bmVyIHdoZW4gdGhlIGFzc2V0IGlzIHVuaWZpZWQgYW5kIHRoZSBORlQgaXMgdW5sb2NrZWQuACBQYWxsZXRJZCUOIGZyYWN0aW9uBPQgVGhlIHBhbGxldCdzIGlkLCB1c2VkIGZvciBkZXJpdmluZyBpdHMgc292ZXJlaWduIGFjY291bnQgSUQuADhOZXdBc3NldFN5bWJvbIEPFBBGUkFDBIggVGhlIG5ld2x5IGNyZWF0ZWQgYXNzZXQncyBzeW1ib2wuADBOZXdBc3NldE5hbWWBDxQQRnJhYwSAIFRoZSBuZXdseSBjcmVhdGVkIGFzc2V0J3MgbmFtZS4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABJRAACDxOZnRDb2xsZWN0aW9uSWQ4BJggSWRlbnRpZmllciBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgTkZULhROZnRJZDgE2CBUaGUgdHlwZSB1c2VkIHRvIGlkZW50aWZ5IGFuIE5GVCB3aXRoaW4gYSBjb2xsZWN0aW9uLgA2AAAoUG9vbEFzc2V0cwEoUG9vbEFzc2V0cxgUQXNzZXQAAQQCOF0PBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICZQ9pDwQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICAnUPeQ8EAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAjgpEFAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCOEEEBAAE/CBNYXBzIGFuIGFzc2V0IHRvIGEgbGlzdCBvZiBpdHMgY29uZmlndXJlZCByZXNlcnZlIGluZm9ybWF0aW9uLgAsTmV4dEFzc2V0SWQAADgEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgAB2QQAASkMABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0lQFAAAAAAAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXSVAUD0o66NAQAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZZUBQAAAAAAAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGWVAUAAAAAAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXSVAUDV3DIAAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AATEQABQcQmFsYW5jZZUBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZDgEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXI4HFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGEQBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QTbBrocpvGLHtsG/wgtJECacCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWQ4iQ8EqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkOGEEBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECS6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZDg1EATAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAlk9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZDhFBATUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4ANwAAPEFzc2V0Q29udmVyc2lvbgE8QXNzZXRDb252ZXJzaW9uCBRQb29scwABBAIxDDkQBAAIaQEgTWFwIGZyb20gYFBvb2xBc3NldElkYCB0byBgUG9vbEluZm9gLiBUaGlzIGVzdGFibGlzaGVzIHdoZXRoZXIgYSBwb29sIGhhcyBiZWVuIG9mZmljaWFsbHk9ASBjcmVhdGVkIHJhdGhlciB0aGFuIHBlb3BsZSBzZW5kaW5nIHRva2VucyBkaXJlY3RseSB0byBhIHBvb2wncyBwdWJsaWMgYWNjb3VudC4APE5leHRQb29sQXNzZXRJZAAAOAQACCUBIFN0b3JlcyB0aGUgYFBvb2xBc3NldElkYCB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGxwIHRva2VuLuQgVGhpcyBnZXRzIGluY3JlbWVudGVkIHdoZW5ldmVyIGEgbmV3IGxwIHBvb2wgaXMgY3JlYXRlZC4AAd0EAAEtDAAcFExQRmVlOBADAAAABFEBIEEgJSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVycyB3aWxsIHRha2Ugb2YgZXZlcnkgc3dhcC4gUmVwcmVzZW50cyAxMHRocyBvZiBhIHBlcmNlbnQuADBQb29sU2V0dXBGZWWVAUAyQZUeAwAAAAAAAAAAAAAABIggQSBvbmUtdGltZSBmZWUgdG8gc2V0dXAgdGhlIHBvb2wuAERQb29sU2V0dXBGZWVBc3NldDkCCAEABDkBIEFzc2V0IGNsYXNzIGZyb20gW2BDb25maWc6OkFzc2V0c2BdIHVzZWQgdG8gcGF5IHRoZSBbYENvbmZpZzo6UG9vbFNldHVwRmVlYF0uAFhMaXF1aWRpdHlXaXRoZHJhd2FsRmVlMQEQAAAAAASEIEEgZmVlIHRvIHdpdGhkcmF3IHRoZSBsaXF1aWRpdHkuAEBNaW50TWluTGlxdWlkaXR5lQFAZAAAAAAAAAAAAAAAAAAAAAQ9ASBUaGUgbWluaW11bSBMUCB0b2tlbiBhbW91bnQgdGhhdCBjb3VsZCBiZSBtaW50ZWQuIEFtZWxpb3JhdGVzIHJvdW5kaW5nIGVycm9ycy4ARE1heFN3YXBQYXRoTGVuZ3RoOBADAAAABIggVGhlIG1heCBudW1iZXIgb2YgaG9wcyBpbiBhIHN3YXAuACBQYWxsZXRJZCUOIHB5L2FzY29uBPQgVGhlIHBhbGxldCdzIGlkLCB1c2VkIGZvciBkZXJpdmluZyBpdHMgc292ZXJlaWduIGFjY291bnQgSUQuAAE9EAAIJEFzc2V0S2luZDkCCF0BIFR5cGUgb2YgYXNzZXQgY2xhc3MsIHNvdXJjZWQgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0sIHV0aWxpemVkIHRvIG9mZmVyIGxpcXVpZGl0eSB0byBhGCBwb29sLhhQb29sSWQxDARsIExpcXVpZGl0eSBwb29sIGlkZW50aWZpZXIuDLUmBtqA0CqzdEKDaaXyRvFLWmdWZt7//dMa0S/bqv/jMGdldF9yZXNlcnZlcwgYYXNzZXQxOQIYYXNzZXQyOQJBEAi8IFJldHVybnMgdGhlIGJhbGFuY2Ugb2YgZWFjaCBhc3NldCBpbiB0aGUgcG9vbC5VASBUaGUgdHVwbGUgcmVzdWx0IGlzIGluIHRoZSBvcmRlciByZXF1ZXN0ZWQgKG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyBwb29sIG9yZGVyKS4AtSYG2oDQKrN0QoNppfJG8Xjng3C91VyYZEm8bNVQEAuMcXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMQGGFzc2V0MTkCGGFzc2V0MjkCGGFtb3VudJUBLGluY2x1ZGVfZmVlmQFhBBwRASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGFuIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQxYCBmb3IgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6wIChVc2UgYGFtb3VudF9vdXRfbWluYCB0byBjb250cm9sIHNsaXBwYWdlLimoIFJldHVybnMgYFNvbWUocXVvdGVkX2Ftb3VudClgIG9uIHN1Y2Nlc3MuALUmBtqA0CqzdEKDaaXyRvEoeQ/vmy3jX0SNPsNzk2mNjHF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zEBhhc3NldDE5Ahhhc3NldDI5AhhhbW91bnSVASxpbmNsdWRlX2ZlZZkBYQQcQQEgR2V0cyBhIHF1b3RlIGZvciBzd2FwcGluZyBgYW1vdW50YCBvZiBgYXNzZXQxYCBmb3IgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDJgLgA1ASBJZiBgaW5jbHVkZV9mZWVgIGlzIHRydWUsIHRoZSBxdW90ZSB3aWxsIGluY2x1ZGUgdGhlIGxpcXVpZGl0eSBwcm92aWRlciBmZWUuEQEgSWYgdGhlIHBvb2wgZG9lcyBub3QgZXhpc3Qgb3IgaGFzIG5vIGxpcXVpZGl0eSwgYE5vbmVgIGlzIHJldHVybmVkLjkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQurCAoVXNlIGBhbW91bnRfaW5fbWF4YCB0byBjb250cm9sIHNsaXBwYWdlLimoIFJldHVybnMgYFNvbWUocXVvdGVkX2Ftb3VudClgIG9uIHN1Y2Nlc3MuADgAACBSZWNvdmVyeQEgUmVjb3ZlcnkMLFJlY292ZXJhYmxlAAEEBQRJEAQABAkBIFRoZSBzZXQgb2YgcmVjb3ZlcmFibGUgYWNjb3VudHMgYW5kIHRoZWlyIHJlY292ZXJ5IGNvbmZpZ3VyYXRpb24uAEBBY3RpdmVSZWNvdmVyaWVzAAEIBQVxCk0QBAAQaCBBY3RpdmUgcmVjb3ZlcnkgYXR0ZW1wdHMuABUBIEZpcnN0IGFjY291bnQgaXMgdGhlIGFjY291bnQgdG8gYmUgcmVjb3ZlcmVkLCBhbmQgdGhlIHNlY29uZCBhY2NvdW50rCBpcyB0aGUgdXNlciB0cnlpbmcgdG8gcmVjb3ZlciB0aGUgYWNjb3VudC4AFFByb3h5AAEEAgQEBAAMkCBUaGUgbGlzdCBvZiBhbGxvd2VkIHByb3h5IGFjY291bnRzLgD4IE1hcCBmcm9tIHRoZSB1c2VyIHdobyBjYW4gYWNjZXNzIGl0IHRvIHRoZSByZWNvdmVyZWQgYWNjb3VudC4AAeUEAAE9DAAQRENvbmZpZ0RlcG9zaXRCYXNllQFABIIbziYAAAAAAAAAAAAAABBVASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgcmVjb3ZlcnkgY29uZmlndXJhdGlvbi4AAQEgVGhpcyBpcyBoZWxkIGZvciBhbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzqCBgMiArIHNpemVvZihCbG9ja051bWJlciwgQmFsYW5jZSlgIGJ5dGVzLgBMRnJpZW5kRGVwb3NpdEZhY3RvcpUBQJomaeEDAAAAAAAAAAAAAAAULQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIGFkZGl0aW9uYWwgdXNlciB3aGVuIGNyZWF0aW5nIGEgcmVjb3Zlcnk8IGNvbmZpZ3VyYXRpb24uAE0BIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGBzaXplb2YoQWNjb3VudElkKWAgYnl0ZXMgbW9yZSBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UcIHZhbHVlLgAoTWF4RnJpZW5kczgQCQAAABgNASBUaGUgbWF4aW11bSBhbW91bnQgb2YgZnJpZW5kcyBhbGxvd2VkIGluIGEgcmVjb3ZlcnkgY29uZmlndXJhdGlvbi4ADQEgTk9URTogVGhlIHRocmVzaG9sZCBwcm9ncmFtbWVkIGluIHRoaXMgUGFsbGV0IHVzZXMgdTE2LCBzbyBpdCBkb2VzCQEgbm90IHJlYWxseSBtYWtlIHNlbnNlIHRvIGhhdmUgYSBsaW1pdCBoZXJlIGdyZWF0ZXIgdGhhbiB1MTY6Ok1BWC4VASBCdXQgYWxzbywgdGhhdCBpcyBhIGxvdCBtb3JlIHRoYW4geW91IHNob3VsZCBwcm9iYWJseSBzZXQgdGhpcyB2YWx1ZTQgdG8gYW55d2F5Li4uADxSZWNvdmVyeURlcG9zaXSVAUAEghvOJgAAAAAAAAAAAAAAHB0BIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3Igc3RhcnRpbmcgYSByZWNvdmVyeS4ANQEgVGhpcyBpcyBwcmltYXJpbHkgaGVsZCBmb3IgZGV0ZXJyaW5nIG1hbGljaW91cyByZWNvdmVyeSBhdHRlbXB0cywgYW5kIHNob3VsZCkBIGhhdmUgYSB2YWx1ZSBsYXJnZSBlbm91Z2ggdGhhdCBhIGJhZCBhY3RvciB3b3VsZCBjaG9vc2Ugbm90IHRvIHBsYWNlIHRoaXMpASBkZXBvc2l0LiBJdCBhbHNvIGFjdHMgdG8gZnVuZCBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzQQEgYHNpemVvZihCbG9ja051bWJlciwgQmFsYW5jZSArIFQgKiBBY2NvdW50SWQpYCBieXRlcy4gV2hlcmUgVCBpcyBhIGNvbmZpZ3VyYWJsZSwgdGhyZXNob2xkLgABURAABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgA5AAAcU29jaWV0eQEcU29jaWV0eVgoUGFyYW1ldGVycwAASQwEAATcIFRoZSBtYXggbnVtYmVyIG9mIG1lbWJlcnMgZm9yIHRoZSBzb2NpZXR5IGF0IG9uZSB0aW1lLgAMUG90AQCVAUAAAAAAAAAAAAAAAAAAAAAABEEBIEFtb3VudCBvZiBvdXIgYWNjb3VudCBiYWxhbmNlIHRoYXQgaXMgc3BlY2lmaWNhbGx5IGZvciB0aGUgbmV4dCByb3VuZCdzIGJpZChzKS4AHEZvdW5kZXIAAAQEAARIIFRoZSBmaXJzdCBtZW1iZXIuABBIZWFkAAAEBAAEQQEgVGhlIG1vc3QgcHJpbWFyeSBmcm9tIHRoZSBtb3N0IHJlY2VudGx5IGFwcHJvdmVkIHJhbmsgMCBtZW1iZXJzIGluIHRoZSBzb2NpZXR5LgAUUnVsZXMAAEAEAAhRASBBIGhhc2ggb2YgdGhlIHJ1bGVzIG9mIHRoaXMgc29jaWV0eSBjb25jZXJuaW5nIG1lbWJlcnNoaXAuIENhbiBvbmx5IGJlIHNldCBvbmNlIGFuZFQgb25seSBieSB0aGUgZm91bmRlci4AHE1lbWJlcnMAAQQFBFUQBAAEIQEgVGhlIGN1cnJlbnQgbWVtYmVycyBhbmQgdGhlaXIgcmFuay4gRG9lc24ndCBpbmNsdWRlIGBTdXNwZW5kZWRNZW1iZXJzYC4AHFBheW91dHMBAQQFBGEQRAAAAAAAAAAAAAAAAAAAAAAABNwgSW5mb3JtYXRpb24gcmVnYXJkaW5nIHJhbmstMCBwYXlvdXRzLCBwYXN0IGFuZCBmdXR1cmUuACxNZW1iZXJDb3VudAEAOBAAAAAABEkBIFRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYE1lbWJlcnNgIGN1cnJlbnRseS4gKERvZXNuJ3QgaW5jbHVkZSBgU3VzcGVuZGVkTWVtYmVyc2AuKQA0TWVtYmVyQnlJbmRleAABBAU4BAQACF0BIFRoZSBjdXJyZW50IGl0ZW1zIGluIGBNZW1iZXJzYCBrZXllZCBieSB0aGVpciB1bmlxdWUgaW5kZXguIEtleXMgYXJlIGRlbnNlbHkgcG9wdWxhdGVkzCBgMC4uTWVtYmVyQ291bnRgIChkb2VzIG5vdCBpbmNsdWRlIGBNZW1iZXJDb3VudGApLgBAU3VzcGVuZGVkTWVtYmVycwABBAUEVRAEAAQBASBUaGUgc2V0IG9mIHN1c3BlbmRlZCBtZW1iZXJzLCB3aXRoIHRoZWlyIG9sZCBtZW1iZXJzaGlwIHJlY29yZC4AKFJvdW5kQ291bnQBADgQAAAAAASgIFRoZSBudW1iZXIgb2Ygcm91bmRzIHdoaWNoIGhhdmUgcGFzc2VkLgAQQmlkcwEAaRAEAAToIFRoZSBjdXJyZW50IGJpZHMsIHN0b3JlZCBvcmRlcmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgYmlkLgAoQ2FuZGlkYXRlcwABBAIEeRAEAAAAHFNrZXB0aWMAAAQEAARUIFRoZSBjdXJyZW50IHNrZXB0aWMuABRWb3RlcwABCAUFcQqBEAQABNAgRG91YmxlIG1hcCBmcm9tIENhbmRpZGF0ZSAtPiBWb3RlciAtPiAoTWF5YmUpIFZvdGUuADxWb3RlQ2xlYXJDdXJzb3IAAQQFBIUQBAAE9CBDbGVhci1jdXJzb3IgZm9yIFZvdGUsIG1hcCBmcm9tIENhbmRpZGF0ZSAtPiAoTWF5YmUpIEN1cnNvci4AIE5leHRIZWFkAACJEAQADHUBIEF0IHRoZSBlbmQgb2YgdGhlIGNsYWltIHBlcmlvZCwgdGhpcyBjb250YWlucyB0aGUgbW9zdCByZWNlbnRseSBhcHByb3ZlZCBtZW1iZXJzIChhbG9uZyB3aXRoZQEgdGhlaXIgYmlkIGFuZCByb3VuZCBJRCkgd2hvIGlzIGZyb20gdGhlIG1vc3QgcmVjZW50IHJvdW5kIHdpdGggdGhlIGxvd2VzdCBiaWQuIFRoZXkgd2lsbFwgYmVjb21lIHRoZSBuZXcgYEhlYWRgLgBMQ2hhbGxlbmdlUm91bmRDb3VudAEAOBAAAAAABFkBIFRoZSBudW1iZXIgb2YgY2hhbGxlbmdlIHJvdW5kcyB0aGVyZSBoYXZlIGJlZW4uIFVzZWQgdG8gaWRlbnRpZnkgc3RhbGUgRGVmZW5kZXJWb3Rlcy4AJERlZmVuZGluZwAAjRAEAARZASBUaGUgZGVmZW5kaW5nIG1lbWJlciBjdXJyZW50bHkgYmVpbmcgY2hhbGxlbmdlZCwgYWxvbmcgd2l0aCBhIHJ1bm5pbmcgdGFsbHkgb2Ygdm90ZXMuADREZWZlbmRlclZvdGVzAAEIBQVlD4EQBAAEyCBWb3RlcyBmb3IgdGhlIGRlZmVuZGVyLCBrZXllZCBieSBjaGFsbGVuZ2Ugcm91bmQuADBOZXh0SW50YWtlQXQAADgEAAQNASBOZXh0IGludGFrZSByb3RhdGlvbiBzY2hlZHVsZWQgd2l0aCBbQ29uZmlnOjpCbG9ja051bWJlclByb3ZpZGVyXS4APE5leHRDaGFsbGVuZ2VBdAAAOAQABBkBIE5leHQgY2hhbGxlbmdlIHJvdGF0aW9uIHNjaGVkdWxlZCB3aXRoIFtDb25maWc6OkJsb2NrTnVtYmVyUHJvdmlkZXJdLgAB6QQAAUUMACQgUGFsbGV0SWQlDiBweS9zb2NpZQRoIFRoZSBzb2NpZXRpZXMncyBwYWxsZXQgaWQAMEdyYWNlU3RyaWtlczgQCgAAAAQJASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RyaWtlcyBiZWZvcmUgYSBtZW1iZXIgZ2V0cyBmdW5kcyBzbGFzaGVkLgAsUGVyaW9kU3BlbmSVAUAECr+CKA8AAAAAAAAAAAAABC0BIFRoZSBhbW91bnQgb2YgaW5jZW50aXZlIHBhaWQgd2l0aGluIGVhY2ggcGVyaW9kLiBEb2Vzbid0IGluY2x1ZGUgVm90ZXJUaXAuADBWb3RpbmdQZXJpb2Q4EEAZAQAMVQEgVGhlIG51bWJlciBvZiBbQ29uZmlnOjpCbG9ja051bWJlclByb3ZpZGVyXSBibG9ja3Mgb24gd2hpY2ggbmV3IGNhbmRpZGF0ZXMgc2hvdWxkIGJlYCB2b3RlZCBvbi4gVG9nZXRoZXIgd2l0aE0BIGBDbGFpbVBlcmlvZGAsIHRoaXMgc3VtcyB0byB0aGUgbnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIGNhbmRpZGF0ZSBpbnRha2UgcGVyaW9kcy4ALENsYWltUGVyaW9kOBCAcAAACFUBIFRoZSBudW1iZXIgb2YgW0NvbmZpZzo6QmxvY2tOdW1iZXJQcm92aWRlcl0gYmxvY2tzIG9uIHdoaWNoIG5ldyBjYW5kaWRhdGVzIGNhbiBjbGFpbaAgdGhlaXIgbWVtYmVyc2hpcCBhbmQgYmUgdGhlIG5hbWVkIGhlYWQuADxNYXhMb2NrRHVyYXRpb244EABO7QAEpCBUaGUgbWF4aW11bSBkdXJhdGlvbiBvZiB0aGUgcGF5b3V0IGxvY2suADxDaGFsbGVuZ2VQZXJpb2Q4EMCJAQAESQEgVGhlIG51bWJlciBvZiBbQ29uZmlnOjpCbG9ja051bWJlclByb3ZpZGVyXSBibG9ja3MgYmV0d2VlbiBtZW1iZXJzaGlwIGNoYWxsZW5nZXMuAChNYXhQYXlvdXRzOBAIAAAABA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXlvdXRzIGEgbWVtYmVyIG1heSBoYXZlIHdhaXRpbmcgdW5jbGFpbWVkLgAcTWF4QmlkczgQAAIAAASQIFRoZSBtYXhpbXVtIG51bWJlciBvZiBiaWRzIGF0IG9uY2UuAAGREAAAADoAABhSZXZpdmUBGFJldml2ZTQwUHJpc3RpbmVDb2RlAAEEBkAYBAAMzCBBIG1hcHBpbmcgZnJvbSBhIGNvbnRyYWN0J3MgY29kZSBoYXNoIHRvIGl0cyBjb2RlLiEBIFRoZSBjb2RlJ3Mgc2l6ZSBpcyBib3VuZGVkIGJ5IFtgY3JhdGU6OmxpbWl0czo6QkxPQl9CWVRFU2BdIGZvciBQVk0gYW5k+CBbYHJldm06OnByaW1pdGl2ZXM6OmVpcDE3MDo6TUFYX0NPREVfU0laRWBdIGZvciBFVk0gYnl0ZWNvZGUuAChDb2RlSW5mb09mAAEEBkCVEAQABOAgQSBtYXBwaW5nIGZyb20gYSBjb250cmFjdCdzIGNvZGUgaGFzaCB0byBpdHMgY29kZSBpbmZvLgA0QWNjb3VudEluZm9PZgABBAbxBJ0QBAAE/CBUaGUgZGF0YSBhc3NvY2lhdGVkIHRvIGEgY29udHJhY3Qgb3IgZXh0ZXJuYWxseSBvd25lZCBhY2NvdW50LgA8SW1tdXRhYmxlRGF0YU9mAAEEBvEEqRAEAATQIFRoZSBpbW11dGFibGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhY2NvdW50LgA0RGVsZXRpb25RdWV1ZQABBAU4XQQEABDIIEV2aWN0ZWQgY29udHJhY3RzIHRoYXQgYXdhaXQgY2hpbGQgdHJpZSBkZWxldGlvbi4ASQEgQ2hpbGQgdHJpZSBkZWxldGlvbiBpcyBhIGhlYXZ5IG9wZXJhdGlvbiBkZXBlbmRpbmcgb24gdGhlIGFtb3VudCBvZiBzdG9yYWdlIGl0ZW1zQQEgc3RvcmVkIGluIHNhaWQgdHJpZS4gVGhlcmVmb3JlIHRoaXMgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBsYXppbHkgaW4gYG9uX2lkbGVgLgBQRGVsZXRpb25RdWV1ZUNvdW50ZXIBAK0QIAAAAAAAAAAACE0BIEEgcGFpciBvZiBtb25vdG9uaWMgY291bnRlcnMgdXNlZCB0byB0cmFjayB0aGUgbGF0ZXN0IGNvbnRyYWN0IG1hcmtlZCBmb3IgZGVsZXRpb26oIGFuZCB0aGUgbGF0ZXN0IGRlbGV0ZWQgY29udHJhY3QgaW4gcXVldWUuADxPcmlnaW5hbEFjY291bnQAAQQG8QQEBAAY2CBNYXAgYSBFdGhlcmV1bSBhZGRyZXNzIHRvIGl0cyBvcmlnaW5hbCBgQWNjb3VudElkMzJgLgBFASBXaGVuIGRlcml2aW5nIGEgYEgxNjBgIGZyb20gYW4gYEFjY291bnRJZDMyYCB3ZSB1c2UgYSBoYXNoIGZ1bmN0aW9uLiBJbiBvcmRlciB0bzEBIHJlY29uc3RydWN0IHRoZSBvcmlnaW5hbCBhY2NvdW50IHdlIG5lZWQgdG8gc3RvcmUgdGhlIHJldmVyc2UgbWFwcGluZyBoZXJlLhkBIFJlZ2lzdGVyIHlvdXIgYEFjY291bnRJZDMyYCB1c2luZyBbYFBhbGxldDo6bWFwX2FjY291bnRgXSBpbiBvcmRlciB0b2QgdXNlIGl0IHdpdGggdGhpcyBwYWxsZXQuADRFdGhlcmV1bUJsb2NrAQCxEBENAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkHQEgVGhlIGN1cnJlbnQgRXRoZXJldW0gYmxvY2sgdGhhdCBpcyBzdG9yZWQgaW4gdGhlIGBvbl9maW5hbGl6ZWAgbWV0aG9kLgAcICMgTm90ZQApASBUaGlzIGNvdWxkIGJlIGZ1cnRoZXIgb3B0aW1pemVkIGludG8gdGhlIGZ1dHVyZSB0byBzdG9yZSBvbmx5IHRoZSBtaW5pbXVtHQEgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSBFdGhlcmV1bSBibG9jayBhdCB0aGUgUlBDIGxldmVsLgA9ASBTaW5jZSB0aGUgYmxvY2sgaXMgY29udmVuaWVudCB0byBoYXZlIGFyb3VuZCwgYW5kIHRoZSBleHRyYSBkZXRhaWxzIGFyZSBjYXBwZWQ9ASBieSBhIGZldyBoYXNoZXMgYW5kIHRoZSB2ZWN0b3Igb2YgdHJhbnNhY3Rpb24gaGFzaGVzLCB3ZSBzdG9yZSB0aGUgYmxvY2sgaGVyZS4AJEJsb2NrSGFzaAEBBAY4QIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyUIE1hcHBpbmcgZm9yIGJsb2NrIG51bWJlciBhbmQgaGFzaGVzLgBxASBUaGUgbWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMgc3RvcmVkIGlzIGNhcHBlZCBieSB0aGUgYmxvY2sgaGFzaCBjb3VudCBgQkxPQ0tfSEFTSF9DT1VOVGAuADxSZWNlaXB0SW5mb0RhdGEBAB0RBAAY9CBUaGUgZGV0YWlscyBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIHJlY2VpcHQgaW5mbyBvZmZjaGFpbi4AKQEgVGhpcyBjb250YWlucyB2YWx1YWJsZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ2FzIHVzZWQgYnkgdGhlIHRyYW5zYWN0aW9uLgAdASBOT1RFOiBUaGUgaXRlbSBpcyB1bmJvdW5kIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5ldmVyIGJlIHJlYWQgb24gY2hhaW4u0CBJdCBjb3VsZCBvdGhlcndpc2UgaW5mbGF0ZSB0aGUgUG9WIHNpemUgb2YgYSBibG9jay4AREV0aEJsb2NrQnVpbGRlcklSAQAlEREGAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAADkC1QCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASQIEluY3JlbWVudGFsIGV0aGVyZXVtIGJsb2NrIGJ1aWxkZXIuAGhFdGhCbG9ja0J1aWxkZXJGaXJzdFZhbHVlcwEALREEABDkIFRoZSBmaXJzdCB0cmFuc2FjdGlvbiBhbmQgcmVjZWlwdCBvZiB0aGUgZXRoZXJldW0gYmxvY2suAD0BIFRoZXNlIHZhbHVlcyBhcmUgbW92ZWQgb3V0IG9mIHRoZSBgRXRoQmxvY2tCdWlsZGVySVJgIHRvIGF2b2lkIHNlcmlhbGl6aW5nIGFuZD0BIGRlc2VyaWFsaXppbmcgdGhlbSBvbiBldmVyeSB0cmFuc2FjdGlvbi4gSW5zdGVhZCwgdGhleSBhcmUgbG9hZGVkIHdoZW4gbmVlZGVkLgA8RGVidWdTZXR0aW5nc09mAQAxEQwAAAAEMQEgRGVidWdnaW5nIHNldHRpbmdzIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2hlbiBEZWJ1Z0VuYWJsZWQgY29uZmlnIGlzIHRydWUuAAHtBAABTQwALDhEZXBvc2l0UGVyQnl0ZZUBQBUWBQAAAAAAAAAAAAAAAAAUEQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggYnl0ZSBvZiBzdG9yYWdlLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuADhEZXBvc2l0UGVySXRlbZUBQKRCXY0BAAAAAAAAAAAAAAAUBQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggc3RvcmFnZSBpdGVtLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAFxEZXBvc2l0UGVyQ2hpbGRUcmllSXRlbZUBQKqGvCcAAAAAAAAAAAAAAAAkMQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggY2hpbGQgdHJpZSBzdG9yYWdlIGl0ZW0uADkBIFRob3NlIGFyZSB0aGUgaXRlbXMgY3JlYXRlZCBieSBhIGNvbnRyYWN0LiBJbiBTb2xpZGl0eSBlYWNoIHZhbHVlIGlzIGEgc2luZ2xlOQEgc3RvcmFnZSBpdGVtLiBUaGlzIGlzIHdoeSB3ZSBuZWVkIHRvIHNldCBhIGxvd2VyIHZhbHVlIGhlcmUgdGhhbiBmb3IgdGhlIG1haW7cIHRyaWUgaXRlbXMuIE90aGVyd2lzZSB0aGUgc3RvcmFnZSBkZXBvc2l0IGlzIHRvbyBoaWdoLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAHBDb2RlSGFzaExvY2t1cERlcG9zaXRQZXJjZW50MQUQAKPhEQxFASBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc3RvcmFnZSBkZXBvc2l0IHRoYXQgc2hvdWxkIGJlIGhlbGQgZm9yIHVzaW5nIGEgY29kZSBoYXNoLlEBIEluc3RhbnRpYXRpbmcgYSBjb250cmFjdCwgcHJvdGVjdHMgdGhlIGNvZGUgZnJvbSBiZWluZyByZW1vdmVkLiBJbiBvcmRlciB0byBwcmV2ZW50JQEgYWJ1c2UgdGhlc2UgYWN0aW9ucyBhcmUgcHJvdGVjdGVkIHdpdGggYSBwZXJjZW50YWdlIG9mIHRoZSBjb2RlIGRlcG9zaXQuAFxVbnNhZmVVbnN0YWJsZUludGVyZmFjZZkBBAAkEQEgTWFrZSBjb250cmFjdCBjYWxsYWJsZSBmdW5jdGlvbnMgbWFya2VkIGFzIGAjW3Vuc3RhYmxlXWAgYXZhaWxhYmxlLgA9ASBDb250cmFjdHMgdGhhdCB1c2UgYCNbdW5zdGFibGVdYCBmdW5jdGlvbnMgd29uJ3QgYmUgYWJsZSB0byBiZSB1cGxvYWRlZCB1bmxlc3NFASB0aGlzIGlzIHNldCB0byBgdHJ1ZWAuIFRoaXMgaXMgb25seSBtZWFudCBmb3IgdGVzdG5ldHMgYW5kIGRldiBub2RlcyBpbiBvcmRlciB0b3ggZXhwZXJpbWVudCB3aXRoIG5ldyBmZWF0dXJlcy4AKCAjIFdhcm5pbmcAwCBEbyAqKm5vdCoqIHNldCB0byBgdHJ1ZWAgb24gcHJvZHVjdGlvbnMgY2hhaW5zLgBAQWxsb3dFVk1CeXRlY29kZZkBBAEE0CBBbGxvdyBFVk0gYnl0ZWNvZGUgdG8gYmUgdXBsb2FkZWQgYW5kIGluc3RhbnRpYXRlZC4AHENoYWluSWQoIEIbDxkAAAAAEAEBIFRoZSBbRUlQLTE1NV0oaHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0xNTUpIGNoYWluIElELgAFASBUaGlzIGlzIGEgdW5pcXVlIGlkZW50aWZpZXIgYXNzaWduZWQgdG8gZWFjaCBibG9ja2NoYWluIG5ldHdvcmssbCBwcmV2ZW50aW5nIHJlcGxheSBhdHRhY2tzLgBATmF0aXZlVG9FdGhSYXRpbzgQQEIPAARRASBUaGUgcmF0aW8gYmV0d2VlbiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmF0aXZlIHRva2VuIGFuZCB0aGUgRVRIIHRva2VuLgBUTWF4RXRoRXh0cmluc2ljV2VpZ2h0gQdAAACy01lb8AYAAAAAAAAAADBNASBUaGUgZnJhY3Rpb24gdGhlIG1heGltdW0gZXh0cmluc2ljIHdlaWdodCBgZXRoX3RyYW5zYWN0YCBleHRyaW5zaWNzIGFyZSBjYXBwZWQgdG8uAFEBIFRoaXMgaXMgbm90IGEgc2VjdXJpdHkgbWVhc3VyZSBidXQgYSByZXF1aXJlbWVudCBkdWUgdG8gaG93IHdlIG1hcCBnYXMgdG8gYChXZWlnaHQsXQEgU3RvcmFnZURlcG9zaXQpYC4gVGhlIG1hcHBpbmcgbWlnaHQgZGVyaXZlIGEgYFdlaWdodGAgdGhhdCBpcyB0b28gbGFyZ2UgdG8gZml0IGludG8gYW78IGV4dHJpbnNpYy4gSW4gdGhpcyBjYXNlIHdlIGNhcCBpdCB0byB0aGUgbGltaXQgc3BlY2lmaWVkIGhlcmUuAGUBIGBldGhfdHJhbnNhY3RgIHRyYW5zYWN0aW9ucyB0aGF0IHVzZSBtb3JlIHdlaWdodCB0aGFuIHNwZWNpZmllZCB3aWxsIGZhaWwgd2l0aCBhbiBvdXQgb2ZJASBnYXMgZXJyb3IgZHVyaW5nIGV4ZWN1dGlvbi4gTGFyZ2VyIGZyYWN0aW9ucyB3aWxsIGFsbG93IG1vcmUgdHJhbnNhY3Rpb25zIHRvIHJ1bi5NASBTbWFsbGVyIHZhbHVlcyB3YXN0ZSBsZXNzIGJsb2NrIHNwYWNlOiBDaG9vc2UgYXMgc21hbGwgYXMgcG9zc2libGUgYW5kIGFzIGxhcmdlIGFzLCBuZWNlc3NhcnkuAEQgIERlZmF1bHQ6IGAwLjVgLgAwRGVidWdFbmFibGVkmQEEAAQtASBBbGxvd3MgZGVidWctbW9kZSBjb25maWd1cmF0aW9uLCBzdWNoIGFzIGVuYWJsaW5nIHVubGltaXRlZCBjb250cmFjdCBzaXplLgAgR2FzU2NhbGU4EKCGAQBEHQEgVGhpcyBkZXRlcm1pbmVzIHRoZSByZWxhdGl2ZSBzY2FsZSBvZiBvdXIgZ2FzIHByaWNlIGFuZCBnYXMgZXN0aW1hdGVzLgBVASBCeSBkZWZhdWx0LCB0aGUgZ2FzIHByaWNlIChpbiB3ZWkpIGlzIGBGZWVJbmZvOjpuZXh0X2ZlZV9tdWx0aXBsaWVyKClgIG11bHRpcGxpZWQgYnldASBgTmF0aXZlVG9FdGhSYXRpb2AuIGBHYXNTY2FsZWAgYWxsb3dzIHRvIHNjYWxlIHRoaXMgdmFsdWU6IHRoZSBhY3R1YWwgZ2FzIHByaWNlIGlzIHRoZbAgZGVmYXVsdCBnYXMgcHJpY2UgbXVsdGlwbGllZCBieSBgR2FzU2NhbGVgLgBZASBBcyBhIGNvbnNlcXVlbmNlLCBnYXMgY29zdCAoZ2FzIGVzdGltYXRlcyBhbmQgYWN0dWFsIGdhcyB1c2FnZSBkdXJpbmcgdHJhbnNhY3Rpb24pIGlzUQEgc2NhbGVkIGRvd24gYnkgdGhlIHNhbWUgZmFjdG9yLiBUaHVzLCB0aGUgdG90YWwgdHJhbnNhY3Rpb24gY29zdCBpcyBub3QgYWZmZWN0ZWQgYnltASBgR2FzU2NhbGVgIOKAk8KgYXBhcnQgZnJvbSByb3VuZGluZyBkaWZmZXJlbmNlczogdGhlIHRyYW5zYWN0aW9uIGNvc3QgaXMgYWx3YXlzIGEgbXVsdGlwbGVhASBvZiB0aGUgZ2FzIHByaWNlIGFuZCBpcyBkZXJpdmVkIGJ5IHJvdW5kZWQgdXAsIHNvIHRoYXQgd2l0aCBoaWdoZXIgYEdhc1NjYWxlc2AgdGhpcyBjYW4RASBsZWFkIHRvIGhpZ2hlciBnYXMgY29zdCBhcyB0aGUgcm91bmRpbmcgZGlmZmVyZW5jZSB3b3VsZCBiZSBsYXJnZXIuAGUBIFRoZSBtYWluIHB1cnBvc2Ugb2YgY2hhbmdpbmcgdGhlIGBHYXNTY2FsZWAgaXMgdG8gdHVuZSB0aGUgZ2FzIGNvc3Qgc28gdGhhdCBpdCBpcyBjbG9zZXJJASB0byBzdGFuZGFyZCBFVk0gZ2FzIGNvc3QgYW5kIGNvbnRyYWN0cyB3aWxsIG5vdCBydW4gb3V0IG9mIGdhcyB3aGVuIHRvb2xzIG9yIGNvZGV4IGFzc3VtZSBoYXJkIGNvZGVkIGdhcyBsaW1pdHMuAJggUmVxdWlyZW1lbnQ6IGBHYXNTY2FsZWAgbXVzdCBub3QgYmUgMAABNREABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgA8AABIU3RhdGVUcmllTWlncmF0aW9uAUhTdGF0ZVRyaWVNaWdyYXRpb24MQE1pZ3JhdGlvblByb2Nlc3MBAA0FOAAAAAAAAAAAAAAAAAAAEFAgTWlncmF0aW9uIHByb2dyZXNzLgBdASBUaGlzIHN0b3JlcyB0aGUgc25hcHNob3Qgb2YgdGhlIGxhc3QgbWlncmF0ZWQga2V5cy4gSXQgY2FuIGJlIHNldCBpbnRvIG1vdGlvbiBhbmQgbW92ZdQgZm9yd2FyZCBieSBhbnkgb2YgdGhlIG1lYW5zIHByb3ZpZGVkIGJ5IHRoaXMgcGFsbGV0LgAoQXV0b0xpbWl0cwEABQUEAAzUIFRoZSBsaW1pdHMgdGhhdCBhcmUgaW1wb3NlZCBvbiBhdXRvbWF0aWMgbWlncmF0aW9ucy4A1CBJZiBzZXQgdG8gTm9uZSwgdGhlbiBubyBhdXRvbWF0aWMgbWlncmF0aW9uIGhhcHBlbnMuAGBTaWduZWRNaWdyYXRpb25NYXhMaW1pdHMAAAkFBAAM4CBUaGUgbWF4aW11bSBsaW1pdHMgdGhhdCB0aGUgc2lnbmVkIG1pZ3JhdGlvbiBjb3VsZCB1c2UuALQgSWYgbm90IHNldCwgbm8gc2lnbmVkIHN1Ym1pc3Npb24gaXMgYWxsb3dlZC4AAQEFAAFRDAAEJE1heEtleUxlbjgQAAIAAFS0IE1heGltYWwgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgYSBrZXkgY2FuIGhhdmUuALAgRlJBTUUgaXRzZWxmIGRvZXMgbm90IGxpbWl0IHRoZSBrZXkgbGVuZ3RoLgEBIFRoZSBjb25jcmV0ZSB2YWx1ZSBtdXN0IHRoZXJlZm9yZSBkZXBlbmQgb24geW91ciBzdG9yYWdlIHVzYWdlLlkBIEEgW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTk1hcGBdIGZvciBleGFtcGxlIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2ZFASBrZXlzIHdoaWNoIGFyZSB0aGVuIGhhc2hlZCBhbmQgY29uY2F0ZW5hdGVkLCByZXN1bHRpbmcgaW4gYXJiaXRyYXJpbHkgbG9uZyBrZXlzLgBBASBVc2UgdGhlICpzdGF0ZSBtaWdyYXRpb24gUlBDKiB0byByZXRyaWV2ZSB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGtleSBpbiB5b3VyAQEgc3RvcmFnZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9pc3N1ZXMvMTE2NDI+ACkBIFRoZSBtaWdyYXRpb24gd2lsbCBoYWx0IHdpdGggYSBgSGFsdGVkYCBldmVudCBpZiB0aGlzIHZhbHVlIGlzIHRvbyBzbWFsbC5JASBTaW5jZSB0aGVyZSBpcyBubyByZWFsIHBlbmFsdHkgZnJvbSBvdmVyLWVzdGltYXRpbmcsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIGEgbGFyZ2WAIHZhbHVlLiBUaGUgZGVmYXVsdCBpcyA1MTIgYnl0ZS4AgCBTb21lIGtleSBsZW5ndGhzIGZvciByZWZlcmVuY2U60CAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZVZhbHVlYF06IDMyIGJ5dGXIIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTWFwYF06IDY0IGJ5dGXgIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlRG91YmxlTWFwYF06IDk2IGJ5dGUASCBGb3IgbW9yZSBpbmZvIHNlZUkBIDxodHRwczovL3d3dy5zaGF3bnRhYnJpemkuY29tL2Jsb2cvc3Vic3RyYXRlL3F1ZXJ5aW5nLXN1YnN0cmF0ZS1zdG9yYWdlLXZpYS1ycGMvPgABWQwAAABGAAA8Tm9taW5hdGlvblBvb2xzATxOb21pbmF0aW9uUG9vbHNUQFRvdGFsVmFsdWVMb2NrZWQBAJUBQAAAAAAAAAAAAAAAAAAAAAAUjCBUaGUgc3VtIG9mIGZ1bmRzIGFjcm9zcyBhbGwgcG9vbHMuAHEBIFRoaXMgbWlnaHQgYmUgbG93ZXIgYnV0IG5ldmVyIGhpZ2hlciB0aGFuIHRoZSBzdW0gb2YgYHRvdGFsX2JhbGFuY2VgIG9mIGFsbCBbYFBvb2xNZW1iZXJzYF1ZASBiZWNhdXNlIGNhbGxpbmcgYHBvb2xfd2l0aGRyYXdfdW5ib25kZWRgIG1pZ2h0IGRlY3JlYXNlIHRoZSB0b3RhbCBzdGFrZSBvZiB0aGUgcG9vbCdzKQEgYGJvbmRlZF9hY2NvdW50YCB3aXRob3V0IGFkanVzdGluZyB0aGUgcGFsbGV0LWludGVybmFsIGBVbmJvbmRpbmdQb29sYCdzLgAsTWluSm9pbkJvbmQBAJUBQAAAAAAAAAAAAAAAAAAAAAAEnCBNaW5pbXVtIGFtb3VudCB0byBib25kIHRvIGpvaW4gYSBwb29sLgA0TWluQ3JlYXRlQm9uZAEAlQFAAAAAAAAAAAAAAAAAAAAAABygIE1pbmltdW0gYm9uZCByZXF1aXJlZCB0byBjcmVhdGUgYSBwb29sLgBlASBUaGlzIGlzIHRoZSBhbW91bnQgdGhhdCB0aGUgZGVwb3NpdG9yIG11c3QgcHV0IGFzIHRoZWlyIGluaXRpYWwgc3Rha2UgaW4gdGhlIHBvb2wsIGFzIGFuiCBpbmRpY2F0aW9uIG9mICJza2luIGluIHRoZSBnYW1lIi4AaQEgVGhpcyBpcyB0aGUgdmFsdWUgdGhhdCB3aWxsIGFsd2F5cyBleGlzdCBpbiB0aGUgc3Rha2luZyBsZWRnZXIgb2YgdGhlIHBvb2wgYm9uZGVkIGFjY291bnSAIHdoaWxlIGFsbCBvdGhlciBhY2NvdW50cyBsZWF2ZS4AIE1heFBvb2xzAAA4BAAIaQEgTWF4aW11bSBudW1iZXIgb2Ygbm9taW5hdGlvbiBwb29scyB0aGF0IGNhbiBleGlzdC4gSWYgYE5vbmVgLCB0aGVuIGFuIHVuYm91bmRlZCBudW1iZXIgb2ZEIHBvb2xzIGNhbiBleGlzdC4AOE1heFBvb2xNZW1iZXJzAAA4BAAISQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IGNhbiBleGlzdCBpbiB0aGUgc3lzdGVtLiBJZiBgTm9uZWAsIHRoZW4gdGhlIGNvdW50uCBtZW1iZXJzIGFyZSBub3QgYm91bmQgb24gYSBzeXN0ZW0gd2lkZSBiYXNpcy4AVE1heFBvb2xNZW1iZXJzUGVyUG9vbAAAOAQACEEBIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgdGhhdCBtYXkgYmVsb25nIHRvIHBvb2wuIElmIGBOb25lYCwgdGhlbiB0aGUgY291bnQgb2aoIG1lbWJlcnMgaXMgbm90IGJvdW5kIG9uIGEgcGVyIHBvb2wgYmFzaXMuAExHbG9iYWxNYXhDb21taXNzaW9uAAAxBQQADGkBIFRoZSBtYXhpbXVtIGNvbW1pc3Npb24gdGhhdCBjYW4gYmUgY2hhcmdlZCBieSBhIHBvb2wuIFVzZWQgb24gY29tbWlzc2lvbiBwYXlvdXRzIHRvIGJvdW5kJQEgcG9vbCBjb21taXNzaW9ucyB0aGF0IGFyZSA+IGBHbG9iYWxNYXhDb21taXNzaW9uYCwgbmVjZXNzYXJ5IGlmIGEgZnV0dXJlDQEgYEdsb2JhbE1heENvbW1pc3Npb25gIGlzIGxvd2VyIHRoYW4gc29tZSBjdXJyZW50IHBvb2wgY29tbWlzc2lvbnMuACxQb29sTWVtYmVycwABBAUETQgEAAxAIEFjdGl2ZSBtZW1iZXJzLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBUQ291bnRlckZvclBvb2xNZW1iZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAALEJvbmRlZFBvb2xzAAEEBThlCAQABGggU3RvcmFnZSBmb3IgYm9uZGVkIHBvb2xzLgBUQ291bnRlckZvckJvbmRlZFBvb2xzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAALFJld2FyZFBvb2xzAAEEBTg5EQQACHUBIFJld2FyZCBwb29scy4gVGhpcyBpcyB3aGVyZSB0aGVyZSByZXdhcmRzIGZvciBlYWNoIHBvb2wgYWNjdW11bGF0ZS4gV2hlbiBhIG1lbWJlcnMgcGF5b3V0IGlzWQEgY2xhaW1lZCwgdGhlIGJhbGFuY2UgY29tZXMgb3V0IG9mIHRoZSByZXdhcmQgcG9vbC4gS2V5ZWQgYnkgdGhlIGJvbmRlZCBwb29scyBhY2NvdW50LgBUQ291bnRlckZvclJld2FyZFBvb2xzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAPFN1YlBvb2xzU3RvcmFnZQABBAU4PREEAAgZASBHcm91cHMgb2YgdW5ib25kaW5nIHBvb2xzLiBFYWNoIGdyb3VwIG9mIHVuYm9uZGluZyBwb29scyBiZWxvbmdzIHRvIGEpASBib25kZWQgcG9vbCwgaGVuY2UgdGhlIG5hbWUgc3ViLXBvb2xzLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuAGRDb3VudGVyRm9yU3ViUG9vbHNTdG9yYWdlAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAIE1ldGFkYXRhAQEEBTjgBAAEXCBNZXRhZGF0YSBmb3IgdGhlIHBvb2wuAEhDb3VudGVyRm9yTWV0YWRhdGEBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAoTGFzdFBvb2xJZAEAOBAAAAAABNAgRXZlciBpbmNyZWFzaW5nIG51bWJlciBvZiBhbGwgcG9vbHMgY3JlYXRlZCBzbyBmYXIuAExSZXZlcnNlUG9vbElkTG9va3VwAAEEBQQ4BAAQ3CBBIHJldmVyc2UgbG9va3VwIGZyb20gdGhlIHBvb2wncyBhY2NvdW50IGlkIHRvIGl0cyBpZC4AdQEgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNsYXNoaW5nIGFuZCBvbiBhdXRvbWF0aWMgd2l0aGRyYXcgdXBkYXRlLiBJbiBhbGwgb3RoZXIgaW5zdGFuY2VzLCB0aGUlASBwb29sIGlkIGlzIHVzZWQsIGFuZCB0aGUgYWNjb3VudHMgYXJlIGRldGVybWluaXN0aWNhbGx5IGRlcml2ZWQgZnJvbSBpdC4AdENvdW50ZXJGb3JSZXZlcnNlUG9vbElkTG9va3VwAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAQENsYWltUGVybWlzc2lvbnMBAQQFBDkFBAIEAQEgTWFwIGZyb20gYSBwb29sIG1lbWJlciBhY2NvdW50IHRvIHRoZWlyIG9wdGVkIGNsYWltIHBlcm1pc3Npb24uAAEZBQABXQwADCBQYWxsZXRJZCUOIHB5L25vcGxzBIQgVGhlIG5vbWluYXRpb24gcG9vbCdzIHBhbGxldCBpZC4ASE1heFBvaW50c1RvQmFsYW5jZQwECjAdASBUaGUgbWF4aW11bSBwb29sIHBvaW50cy10by1iYWxhbmNlIHJhdGlvIHRoYXQgYW4gYG9wZW5gIHBvb2wgY2FuIGhhdmUuAFUBIFRoaXMgaXMgaW1wb3J0YW50IGluIHRoZSBldmVudCBzbGFzaGluZyB0YWtlcyBwbGFjZSBhbmQgdGhlIHBvb2wncyBwb2ludHMtdG8tYmFsYW5jZXwgcmF0aW8gYmVjb21lcyBkaXNwcm9wb3J0aW9uYWwuAGUBIE1vcmVvdmVyLCB0aGlzIHJlbGF0ZXMgdG8gdGhlIGBSZXdhcmRDb3VudGVyYCB0eXBlIGFzIHdlbGwsIGFzIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnNVASBhcmUgYSBmdW5jdGlvbiBvZiBudW1iZXIgb2YgcG9pbnRzLCBhbmQgYnkgc2V0dGluZyB0aGlzIHZhbHVlIHRvIGUuZy4gMTAsIHlvdSBlbnN1cmVlASB0aGF0IHRoZSB0b3RhbCBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSBzeXN0ZW0gYXJlIGF0IG1vc3QgMTAgdGltZXMgdGhlIHRvdGFsX2lzc3VhbmNlIG9mnCB0aGUgY2hhaW4sIGluIHRoZSBhYnNvbHV0ZSB3b3JzZSBjYXNlLgBJASBGb3IgYSB2YWx1ZSBvZiAxMCwgdGhlIHRocmVzaG9sZCB3b3VsZCBiZSBhIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gb2YgMTA6MS4xASBTdWNoIGEgc2NlbmFyaW8gd291bGQgYWxzbyBiZSB0aGUgZXF1aXZhbGVudCBvZiB0aGUgcG9vbCBiZWluZyA5MCUgc2xhc2hlZC4AME1heFVuYm9uZGluZzgQIAAAAAQ9ASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIHVuYm9uZGluZyBjaHVua3MgdGhhdCBjYW4gZXhpc3QgcGVyIG1lbWJlci4AAVURAAQ0UmV3YXJkQ291bnRlcoEHMKggVGhlIHR5cGUgdGhhdCBpcyB1c2VkIGZvciByZXdhcmQgY291bnRlci4ANQEgVGhlIGFyaXRobWV0aWMgb2YgdGhlIHJld2FyZCBjb3VudGVyIG1pZ2h0IHNhdHVyYXRlIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZWUBIGBDdXJyZW5jeTo6QmFsYW5jZWAuIElmIHRoaXMgaGFwcGVucywgb3BlcmF0aW9ucyBmYWlscy4gTm9uZXRoZWxlc3MsIHRoaXMgdHlwZSBzaG91bGQgYmVlASBjaG9zZW4gc3VjaCB0aGF0IHRoaXMgZmFpbHVyZSBhbG1vc3QgbmV2ZXIgaGFwcGVucywgYXMgaWYgaXQgaGFwcGVucywgdGhlIHBvb2wgYmFzaWNhbGx5ZQEgbmVlZHMgdG8gYmUgZGlzbWFudGxlZCAob3IgYWxsIHBvb2xzIG1pZ3JhdGVkIHRvIGEgbGFyZ2VyIGBSZXdhcmRDb3VudGVyYCB0eXBlLCB3aGljaCBpczwgYSBQSVRBIHRvIGRvKS4AYQEgU2VlIHRoZSBpbmxpbmUgY29kZSBkb2NzIG9mIGBNZW1iZXI6OnBlbmRpbmdfcmV3YXJkc2AgYW5kIGBSZXdhcmRQb29sOjp1cGRhdGVfcmVjb3JkZWRgZQEgZm9yIGV4YW1wbGUgYW5hbHlzaXMuIEEgW2BzcF9ydW50aW1lOjpGaXhlZFUxMjhgXSBzaG91bGQgYmUgZmluZSBmb3IgY2hhaW5zIHdpdGggYmFsYW5jZVEBIHR5cGVzIHNpbWlsYXIgdG8gdGhhdCBvZiBQb2xrYWRvdCBhbmQgS3VzYW1hLCBpbiB0aGUgYWJzZW5jZSBvZiBzZXZlcmUgc2xhc2hpbmcgKG9yPQEgcHJldmVudGVkIHZpYSBhIHJlYXNvbmFibGUgYE1heFBvaW50c1RvQmFsYW5jZWApLCBmb3IgbWFueSBtYW55IHllYXJzIHRvIGNvbWUuAFAAACRWb3Rlckxpc3QBJFZvdGVyTGlzdBwkTGlzdE5vZGVzAAEEBQRdEQQADIAgQSBzaW5nbGUgbm9kZSwgd2l0aGluIHNvbWUgYmFnLgAFASBOb2RlcyBzdG9yZSBsaW5rcyBmb3J3YXJkIGFuZCBiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIGJhZ3MuAExDb3VudGVyRm9yTGlzdE5vZGVzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAIExpc3RCYWdzAAEEBShhEQQADGQgQSBiYWcgc3RvcmVkIGluIHN0b3JhZ2UuABkBIFN0b3JlcyBhIGBCYWdgIHN0cnVjdCwgd2hpY2ggc3RvcmVzIGhlYWQgYW5kIHRhaWwgcG9pbnRlcnMgdG8gaXRzZWxmLgBQTmV4dE5vZGVBdXRvUmViYWdnZWQAAAQEAAgFASBQb2ludGVyIHRoYXQgcmVtZW1iZXJzIHRoZSBuZXh0IG5vZGUgdGhhdCB3aWxsIGJlIGF1dG8tcmViYWdnZWQuAQEgV2hlbiBgTm9uZWAsIHRoZSBuZXh0IHNjYW4gd2lsbCBzdGFydCBmcm9tIHRoZSBsaXN0IGhlYWQgYWdhaW4uABBMb2NrAAAQBAAQhCBMb2NrIGFsbCB1cGRhdGVzIHRvIHRoaXMgcGFsbGV0LgA5ASBJZiBhbnkgbm9kZXMgbmVlZHMgdXBkYXRpbmcsIHJlbW92YWwgb3IgYWRkaXRpb24gZHVlIHRvIGEgdGVtcG9yYXJ5IGxvY2ssIHRoZXQgW2BDYWxsOjpyZWJhZ2BdIGNhbiBiZSB1c2VkLgAwUGVuZGluZ1JlYmFnAAEEBQQQBAA4HQEgQWNjb3VudHMgdGhhdCBmYWlsZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgYmFncy1saXN0IGR1ZSB0byBsb2NraW5nLlkBIFRoZXNlIGFjY291bnRzIHdpbGwgYmUgcHJvY2Vzc2VkIHdpdGggcHJpb3JpdHkgaW4gYG9uX2lkbGVgIG9yIHZpYSBgcmViYWdgIGV4dHJpbnNpYy4ATQEgTm90ZTogVGhpcyBzdG9yYWdlIGlzIGludGVudGlvbmFsbHkgdW5ib3VuZGVkLiBUaGUgZm9sbG93aW5nIGZhY3RvcnMgbWFrZSBib3VuZGluZzQgdW5uZWNlc3Nhcnk6UQEgMS4gVGhlIHN0b3JhZ2UgdXNhZ2UgaXMgdGVtcG9yYXJ5IC0gYWNjb3VudHMgYXJlIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBpbiBgb25faWRsZWBFASAyLiBUaGUgcGFsbGV0IGlzIG9ubHkgbG9ja2VkIGR1cmluZyBzbmFwc2hvdCBnZW5lcmF0aW9uLCB3aGljaCBpcyB3ZWlnaHQtbGltaXRlZG0BIDMuIFByb2Nlc3NpbmcgaGFwcGVucyBhdCBtdWx0aXBsZSBhY2NvdW50cyBwZXIgYmxvY2ssIGNsZWFyaW5nIGV2ZW4gbGFyZ2UgYmFja2xvZ3MgcXVpY2tseUEBIDQuIEFuIGFydGlmaWNpYWwgbGltaXQgY291bGQgYmUgZXhoYXVzdGVkIGJ5IGFuIGF0dGFja2VyLCBwcmV2ZW50aW5nIGxlZ2l0aW1hdGUBASAgICBhdXRvLXJlYmFnZ2luZyBmcm9tIHB1dHRpbmcgYWNjb3VudHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24AaQEgV2UgZG9uJ3Qgc3RvcmUgdGhlIHNjb3JlIGhlcmUgLSBpdCdzIGFsd2F5cyBmZXRjaGVkIGZyb20gYFNjb3JlUHJvdmlkZXJgIHdoZW4gcHJvY2Vzc2luZyxpASBlbnN1cmluZyB3ZSB1c2UgdGhlIG1vc3QgdXAtdG8tZGF0ZSBzY29yZSAoYWNjb3VudHMgbWF5IGhhdmUgYmVlbiBzbGFzaGVkLCByZXdhcmRlZCwgZXRjLnQgd2hpbGUgd2FpdGluZyBpbiB0aGUgcXVldWUpLgBYQ291bnRlckZvclBlbmRpbmdSZWJhZwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAAFRBQABYQwACDRCYWdUaHJlc2hvbGRzZREJGSEDVaD8AQAAAADapkYCAAAAAG5zmwIAAAAAeZf8AgAAAADQ3msDAAAAADNY6wMAAAAADV99BAAAAACapiQFAAAAALFG5AUAAAAAZ8q/BgAAAADWQLsHAAAAAFNQ2wgAAAAAcUwlCgAAAAA2T58LAAAAAABWUA0AAAAAmGJADwAAAAAboXgRAAAAAGWTAxQAAAAAzULtFgAAAAAgeUMaAAAAAOQBFh4AAAAAHvV2IgAAAAD5DHsnAAAAAOAHOi0AAAAA6BjPMwAAAACMaFk7AAAAAC6o/EMAAAAACrvhTQAAAADDdzdZAAAAABmGM2YAAAAA6FwTdQAAAAAYZR2GAAAAAOhGopkAAAAAvmf+rwAAAACEn5vJAAAAAK0t8+YAAAAAKPePCAEAAADYFxEvAQAAAL7TLFsBAAAAwvWzjQEAAAAKrJXHAQAAACv04wkCAAAAIqzYVQIAAAAQYNusAgAAAC7whxADAAAAfC62ggMAAAArmIIFBAAAABdUWJsEAAAAnaX8RgUAAAD/CZwLBgAAAGw+2ewGAAAAxHXe7gcAAACWD3EWCQAAAKotCGkKAAAA+JLm7AsAAACMRjipDQAAAJeGNKYPAAAAbaxE7REAAAB4uTCJFAAAABZgUoYXAAAA5HnP8hoAAABAAN3eHgAAAP/DC10jAAAAgk+ggigAAAAnk/dnLgAAAKY4+ig1AAAASL+g5TwAAABH0orCRQAAAMWlrOlPAAAA9o4Vi1sAAACQg9PdaAAAAGa19yB4AAAAzxvBnIkAAAD8b/KjnQAAAB7vWZW0AAAAwCCS3c4AAACy7QP57AAAAAeJM3YPAQAA0w5j+DYBAAASUpc6ZAEAAOEjDROYAQAAoHIvd9MBAAB4ASGAFwIAAGUz729lAgAAQoWGt74CAAAo54T9JAMAALE/CiaaAwAA0BasWyAEAAAiyLYZugQAAHnH7DdqBQAA4JL79zMGAAA9BeYUGwcAAPcBrdQjCAAA2BCKHFMJAADIqxuIrgoAALLv8IM8DAAA6FjyawQOAAAPfTeuDhAAANWn7vJkEgAAWD8TShIVAAAXU8tfIxgAAFw2ZLimGwAAphoK9awfAAAz8n8iSSQAAEs6TBORKQAAKIgFx50vAAA306fgizYAAP+hIi58PgAA8MShQ5RHAADlrW8t/1EAAAduuzvuXQAAq/AG7JlrAACMbI70QnsAADrWmnYzjQAAuldpXcChAABd2iTwSrkAALZvYJ5C1AAAdlWWDyfzAAAljWx/ihYBAFFp63EUPwEAub5yzIRtAQA8Sxdit6IBAMwvNASo3wEA9yduKnclAgBICzNIb3UCAB1c9egK0QIAD2QQsPs5AwCpBHddMrIDAC3hIf3nOwQAMK+3bKjZBAD7dT5pXo4FADxE5F1hXQYALLk7NYVKBwCo+Mt3LFoIAHpIuQ1dkQkAPT3HBdj1CgANHkLSNI4MABywvnwAYg4AJHljZOF5EAAbje0vwN8SANPpQrX2nhUA6MqZtIXEGADQyIxlUl8cAML1d/lsgCAACrziYGE7JQB0vU3Sk6YqAOxLYciq2zAASLA3bQj4NwDAE4SxVR1AANwr/aEhckkAcLZF7ZciVABs/FH6UWFgAGyTCG1GaG4AnKrohtt5fgDANoN2IeKQAKBkm2U6+KUAKKNM7vYfvgA4WqKXrsvZAEgzNRZdfvkA0MrkUg7OHQEAkKeupGZHAeCdkqUGDXcBMHeO3MKirQHQC7jVOyrsAUCxjAlvyzMCgFGTAm7ZhQKg9tZjo9jjAmC7y4cBhk8DoEX4tjzfygNAgW3oNyxYBEBeIKnQCfoEgI1yRT12swWA81vAN9+HBoBO7Kg4MnsHALGYoQ7vkQiACy+bKj3RCYCiSJQFBD8LAHJMWhMH4gwA2PiXxgXCDgCYkL494OcQAENPZUbBXRMA1hz/fU4vFgCbMrhz32kZAACHddC8HB0A2lbrr2hZIQDay0KB8TMmADyInvdQwysACrfmy9ghMgA0ba1Sr205AFBH6TNeyUEAJO4Y6HVcSwA41LQASVRWAAh9drLC5GIAmBwDmVxJcQCIHlU/OMaBALDLkKFhqZQAKE/lnkBMqgDA5UowQBXDAGDNdDezed///////////6zQIFRoZSBsaXN0IG9mIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgdmFyaW91cyBiYWdzLgBJASBJZHMgYXJlIHNlcGFyYXRlZCBpbnRvIHVuc29ydGVkIGJhZ3MgYWNjb3JkaW5nIHRvIHRoZWlyIHNjb3JlLiBUaGlzIHNwZWNpZmllcyB0aGVhASB0aHJlc2hvbGRzIHNlcGFyYXRpbmcgdGhlIGJhZ3MuIEFuIGlkJ3MgYmFnIGlzIHRoZSBsYXJnZXN0IGJhZyBmb3Igd2hpY2ggdGhlIGlkJ3Mgc2NvcmW4IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBpdHMgdXBwZXIgdGhyZXNob2xkLgBlASBXaGVuIGlkcyBhcmUgaXRlcmF0ZWQsIGhpZ2hlciBiYWdzIGFyZSBpdGVyYXRlZCBjb21wbGV0ZWx5IGJlZm9yZSBsb3dlciBiYWdzLiBUaGlzIG1lYW5zWQEgdGhhdCBpdGVyYXRpb24gaXMgX3NlbWktc29ydGVkXzogaWRzIG9mIGhpZ2hlciBzY29yZSB0ZW5kIHRvIGNvbWUgYmVmb3JlIGlkcyBvZiBsb3dlci0BIHNjb3JlLCBidXQgcGVlciBpZHMgd2l0aGluIGEgcGFydGljdWxhciBiYWcgYXJlIHNvcnRlZCBpbiBpbnNlcnRpb24gb3JkZXIuAGggIyBFeHByZXNzaW5nIHRoZSBjb25zdGFudABNASBUaGlzIGNvbnN0YW50IG11c3QgYmUgc29ydGVkIGluIHN0cmljdGx5IGluY3JlYXNpbmcgb3JkZXIuIER1cGxpY2F0ZSBpdGVtcyBhcmUgbm90LCBwZXJtaXR0ZWQuAEEBIFRoZXJlIGlzIGFuIGltcGxpZWQgdXBwZXIgbGltaXQgb2YgYFNjb3JlOjpNQVhgOyB0aGF0IHZhbHVlIGRvZXMgbm90IG5lZWQgdG8gYmUhASBzcGVjaWZpZWQgd2l0aGluIHRoZSBiYWcuIEZvciBhbnkgdHdvIHRocmVzaG9sZCBsaXN0cywgaWYgb25lIGVuZHMgd2l0aDEBIGBTY29yZTo6TUFYYCwgdGhlIG90aGVyIG9uZSBkb2VzIG5vdCwgYW5kIHRoZXkgYXJlIG90aGVyd2lzZSBlcXVhbCwgdGhlIHR3b3wgbGlzdHMgd2lsbCBiZWhhdmUgaWRlbnRpY2FsbHkuADggIyBDYWxjdWxhdGlvbgBVASBJdCBpcyByZWNvbW1lbmRlZCB0byBnZW5lcmF0ZSB0aGUgc2V0IG9mIHRocmVzaG9sZHMgaW4gYSBnZW9tZXRyaWMgc2VyaWVzLCBzdWNoIHRoYXRBASB0aGVyZSBleGlzdHMgc29tZSBjb25zdGFudCByYXRpbyBzdWNoIHRoYXQgYHRocmVzaG9sZFtrICsgMV0gPT0gKHRocmVzaG9sZFtrXSAq0CBjb25zdGFudF9yYXRpbykubWF4KHRocmVzaG9sZFtrXSArIDEpYCBmb3IgYWxsIGBrYC4AWQEgVGhlIGhlbHBlcnMgaW4gdGhlIGAvdXRpbHMvZnJhbWUvZ2VuZXJhdGUtYmFnc2AgbW9kdWxlIGNhbiBzaW1wbGlmeSB0aGlzIGNhbGN1bGF0aW9uLgAsICMgRXhhbXBsZXMAUQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkuaXNfZW1wdHkoKWAsIHRoZW4gYWxsIGlkcyBhcmUgcHV0IGludG8gdGhlIHNhbWUgYmFnLCBhbmSwICAgaXRlcmF0aW9uIGlzIHN0cmljdGx5IGluIGluc2VydGlvbiBvcmRlci5hASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSA2NGAsIGFuZCB0aGUgdGhyZXNob2xkcyBhcmUgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8RASAgIHRoZSBwcm9jZWR1cmUgZ2l2ZW4gYWJvdmUsIHRoZW4gdGhlIGNvbnN0YW50IHJhdGlvIGlzIGVxdWFsIHRvIDIuZQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkubGVuKCkgPT0gMjAwYCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0b1kBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgYXBwcm94aW1hdGVseSBlcXVhbCB0byAxLjI0OC5hASAtIElmIHRoZSB0aHJlc2hvbGQgbGlzdCBiZWdpbnMgYFsxLCAyLCAzLCAuLi5dYCwgdGhlbiBhbiBpZCB3aXRoIHNjb3JlIDAgb3IgMSB3aWxsIGZhbGzwICAgaW50byBiYWcgMCwgYW4gaWQgd2l0aCBzY29yZSAyIHdpbGwgZmFsbCBpbnRvIGJhZyAxLCBldGMuADAgIyBNaWdyYXRpb24AYQEgSW4gdGhlIGV2ZW50IHRoYXQgdGhpcyBsaXN0IGV2ZXIgY2hhbmdlcywgYSBjb3B5IG9mIHRoZSBvbGQgYmFncyBsaXN0IG11c3QgYmUgcmV0YWluZWQuXQEgV2l0aCB0aGF0IGBMaXN0OjptaWdyYXRlYCBjYW4gYmUgY2FsbGVkLCB3aGljaCB3aWxsIHBlcmZvcm0gdGhlIGFwcHJvcHJpYXRlIG1pZ3JhdGlvbi4AUE1heEF1dG9SZWJhZ1BlckJsb2NrOBAKAAAAEDUBIE1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoYXQgbWF5IGJlIHJlLWJhZ2dlZCBhdXRvbWF0aWNhbGx5IGluIGBvbl9pZGxlYC4AUQEgQSB2YWx1ZSBvZiBgMGAgKG9idGFpbmVkIGJ5IGNvbmZpZ3VyaW5nIGB0eXBlIE1heEF1dG9SZWJhZ1BlckJsb2NrID0gKCk7YCkgZGlzYWJsZXM0IHRoZSBmZWF0dXJlLgABaREABBRTY29yZSgECQEgVGhlIHR5cGUgdXNlZCB0byBkaWN0YXRlIGEgbm9kZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBvdGhlciBub2Rlcy4EdN1wLaRvd9es939aSNSvfRJGUJ0hzbEm6LrFaBPEop4Yc2NvcmVzBAx3aG8EcREcsCBHZXQgdGhlIGN1cnJlbnQgYHNjb3JlYCBvZiBhIGdpdmVuIGFjY291bnQuAGEBIFJldHVybnMgYChjdXJyZW50LCByZWFsX3Njb3JlKWAsIHRoZSBmb3JtZXIgYmVpbmcgdGhlIGN1cnJlbnQgc2NvcmUgdGhhdCB0aGlzIHBhbGxldCBpc1kBIGF3YXJlIG9mLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSB1cCB0byBkYXRlLCBhbmQgdGhlIGxhdHRlciBiZWluZyB0aGUgcmVhbCBzY29yZSwgYXMwIHByb3ZpZGVkIGJ5AB0BIElmIHRoZSB0d28gZGlmZmVyLCBpdCBtZWFucyB0aGlzIG5vZGUgaXMgZWxpZ2libGUgZm9yIFtgQ2FsbDo6cmViYWdgXS4AUgAAQERlbGVnYXRlZFN0YWtpbmcBQERlbGVnYXRlZFN0YWtpbmcQKERlbGVnYXRvcnMAAQQFBHURBAAQpCBNYXAgb2YgRGVsZWdhdG9ycyB0byB0aGVpciBgRGVsZWdhdGlvbmAuAGEBIEltcGxlbWVudGF0aW9uIG5vdGU6IFdlIGFyZSBub3QgdXNpbmcgYSBkb3VibGUgbWFwIHdpdGggYGRlbGVnYXRvcmAgYW5kIGBhZ2VudGAgYWNjb3VudGEBIGFzIGtleXMgc2luY2Ugd2Ugd2FudCB0byByZXN0cmljdCBkZWxlZ2F0b3JzIHRvIGRlbGVnYXRlIG9ubHkgdG8gb25lIGFjY291bnQgYXQgYSB0aW1lLgBQQ291bnRlckZvckRlbGVnYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAYQWdlbnRzAAEEBQR5EQQABIggTWFwIG9mIGBBZ2VudGAgdG8gdGhlaXIgYExlZGdlcmAuAEBDb3VudGVyRm9yQWdlbnRzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAAAFlDAAIIFBhbGxldElkJQ4gcHkvZGxzdGsEkCBJbmplY3RlZCBpZGVudGlmaWVyIGZvciB0aGUgcGFsbGV0LgBMU2xhc2hSZXdhcmRGcmFjdGlvbjEFEICWmAAEUQEgRnJhY3Rpb24gb2YgdGhlIHNsYXNoIHRoYXQgaXMgcmV3YXJkZWQgdG8gdGhlIGNhbGxlciBvZiBwZW5kaW5nIHNsYXNoIHRvIHRoZSBhZ2VudC4AAX0RAAAAUwAAPFN0YWtpbmdSY0NsaWVudAE8U3Rha2luZ1JjQ2xpZW50DFxJbmNvbXBsZXRlU2Vzc2lvblJlcG9ydAAAWQUEAAQdASBBbiBpbmNvbXBsZXRlIGluY29taW5nIHNlc3Npb24gcmVwb3J0IHRoYXQgd2UgaGF2ZSBub3QgYWN0ZWQgdXBvbiB5ZXQuAHBMYXN0U2Vzc2lvblJlcG9ydEVuZGluZ0luZGV4AAA4BAAg/CBUaGUgbGFzdCBzZXNzaW9uIHJlcG9ydCdzIGBlbmRfaW5kZXhgIHRoYXQgd2UgaGF2ZSBhY3RlZCB1cG9uLgBhASBUaGlzIGFsbG93cyB0aGlzIHBhbGxldCB0byBlbnN1cmUgYSBzZXF1ZW50aWFsbHkgaW5jcmVhc2luZyBzZXF1ZW5jZSBvZiBzZXNzaW9uIHJlcG9ydHNMIHBhc3NlZCB0byBzdGFraW5nLgBdASBOb3RlIHRoYXQgd2l0aCB0aGUgWENNIGJlaW5nIHRoZSBiYWNrYm9uZSBvZiBjb21tdW5pY2F0aW9uLCB3ZSBoYXZlIGEgZ3VhcmFudGVlIG9uIHRoZWEBIG9yZGVyaW5nIG9mIG1lc3NhZ2VzLiBBcyBsb25nIGFzIHRoZSBSQyBzZW5kcyBzZXNzaW9uIHJlcG9ydHMgaW4gb3JkZXIsIHdlIF9ldmVudHVhbGx5X8AgcmVjZWl2ZSB0aGVtIGluIHRoZSBzYW1lIGNvcnJlY3Qgb3JkZXIgYXMgd2VsbC4AUE91dGdvaW5nVmFsaWRhdG9yU2V0AACBEQQAENggQSB2YWxpZGF0b3Igc2V0IHRoYXQgaXMgb3V0Z29pbmcsIGFuZCBzaG91bGQgYmUgc2VudC4AdQEgVGhpcyB3aWxsIGJlIGF0dGVtcHRlZCB0byBiZSBzZW50LCBwb3NzaWJseSBvbiBldmVyeSBgb25faW5pdGlhbGl6ZWAgY2FsbCwgdW50aWwgaXQgaXMgc2VudCz0IG9yIHRoZSBzZWNvbmQgdmFsdWUgcmVhY2hlcyB6ZXJvLCBhdCB3aGljaCBwb2ludCB3ZSBkcm9wIGl0LgABVQUAAWkMAAQoS2V5RGVwb3NpdJUBQLArBmjSAQAAAAAAAAAAAAAELQEgRGVwb3NpdCBoZWxkIHdoZW4gYSB2YWxpZGF0b3Igc2V0cyBzZXNzaW9uIGtleXMuIFJlbGVhc2VkIG9uIGBwdXJnZV9rZXlzYC4AAYkRAAAAVAAASE11bHRpQmxvY2tFbGVjdGlvbgFITXVsdGlCbG9ja0VsZWN0aW9uHBRSb3VuZAEAOBAAAAAAGKwgSW50ZXJuYWwgY291bnRlciBmb3IgdGhlIG51bWJlciBvZiByb3VuZHMuAFUBIFRoaXMgaXMgdXNlZnVsIGZvciBkZS1kdXBsaWNhdGlvbiBvZiB0cmFuc2FjdGlvbnMgc3VibWl0dGVkIHRvIHRoZSBwb29sLCBhbmQgZ2VuZXJhbGwgZGlhZ25vc3RpY3Mgb2YgdGhlIHBhbGxldC4ATQEgVGhpcyBpcyBtZXJlbHkgaW5jcmVtZW50ZWQgb25jZSBwZXIgZXZlcnkgdGltZSB0aGF0IGFuIHVwc3RyZWFtIGBlbGVjdGAgaXMgY2FsbGVkLgAwQ3VycmVudFBoYXNlAQCBBQQABDwgQ3VycmVudCBwaGFzZS4AOERlc2lyZWRUYXJnZXRzAAEEBTg4BAAEzCBEZXNpcmVkIG51bWJlciBvZiB0YXJnZXRzIHRvIGVsZWN0IGZvciB0aGlzIHJvdW5kLgBIUGFnZWRWb3RlclNuYXBzaG90AAEIBQX8jREEAAQBASBQYWdpbmF0ZWQgdm90ZXIgc25hcHNob3QuIEF0IG1vc3QgW2BUOjpQYWdlc2BdIGtleXMgd2lsbCBleGlzdC4AWFBhZ2VkVm90ZXJTbmFwc2hvdEhhc2gAAQgFBfxABAAMMQEgU2FtZSBhcyBbYFBhZ2VkVm90ZXJTbmFwc2hvdGBdLCBidXQgaXQgd2lsbCBzdG9yZSB0aGUgaGFzaCBvZiB0aGUgc25hcHNob3QuAPwgVGhlIGhhc2ggaXMgZ2VuZXJhdGVkIHVzaW5nIFtgZnJhbWVfc3lzdGVtOjpDb25maWc6Okhhc2hpbmdgXS4ATFBhZ2VkVGFyZ2V0U25hcHNob3QAAQgFBfydEQQADGwgUGFnaW5hdGVkIHRhcmdldCBzbmFwc2hvdC4AWQEgRm9yIHRoZSB0aW1lIGJlaW5nLCBzaW5jZSB3ZSBhc3N1bWUgb25lIHBhZ2VzIG9mIHRhcmdldHMsIGF0IG1vc3QgT05FIGtleSB3aWxsIGV4aXN0LgBcUGFnZWRUYXJnZXRTbmFwc2hvdEhhc2gAAQgFBfxABAAMNQEgU2FtZSBhcyBbYFBhZ2VkVGFyZ2V0U25hcHNob3RgXSwgYnV0IGl0IHdpbGwgc3RvcmUgdGhlIGhhc2ggb2YgdGhlIHNuYXBzaG90LgD8IFRoZSBoYXNoIGlzIGdlbmVyYXRlZCB1c2luZyBbYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpIYXNoaW5nYF0uAAF5BQABcQwAGDRVbnNpZ25lZFBoYXNlOBAyAAAABIAgRHVyYXRpb24gb2YgdGhlIHVuc2lnbmVkIHBoYXNlLgAsU2lnbmVkUGhhc2U4EGQAAAAEeCBEdXJhdGlvbiBvZiB0aGUgc2lnbmVkIHBoYXNlLgBUU2lnbmVkVmFsaWRhdGlvblBoYXNlOBAAAQAAFKQgRHVyYXRpb24gb2YgdGhlIHNpbmdlZCB2YWxpZGF0aW9uIHBoYXNlLgBVASBUaGUgZHVyYXRpb24gb2YgdGhpcyBzaG91bGQgbm90IGJlIGxlc3MgdGhhbiBgVDo6UGFnZXNgLCBhbmQgdGhlcmUgaXMgbm8gcG9pbnQgaW4gaXRlASBiZWluZyBtb3JlIHRoYW4gYFNpZ25lZFBoYXNlOjpNYXhTdWJtaXNzaW9uOjpnZXQoKSAqIFQ6OlBhZ2VzYC4gVE9ETzogaW50ZWdyaXR5IHRlc3QgZm9yECBpdC4AVFZvdGVyU25hcHNob3RQZXJCbG9jazgQDgMAAATIIFRoZSBudW1iZXIgb2Ygc25hcHNob3Qgdm90ZXJzIHRvIGZldGNoIHBlciBibG9jay4AWFRhcmdldFNuYXBzaG90UGVyQmxvY2s4EMQJAAAEzCBUaGUgbnVtYmVyIG9mIHNuYXBzaG90IHRhcmdldHMgdG8gZmV0Y2ggcGVyIGJsb2NrLgAUUGFnZXM4EBAAAAAYVCBUaGUgbnVtYmVyIG9mIHBhZ2VzLgABASBUaGUgc25hcHNob3QgaXMgY3JlYXRlZCB3aXRoIHRoaXMgbWFueSBrZXlzIGluIHRoZSBzdG9yYWdlIG1hcC4AUQEgVGhlIHNvbHV0aW9ucyBtYXkgY29udGFpbiBhdCBNT1NUIHRoaXMgbWFueSBwYWdlcywgYnV0IGxlc3MgcGFnZXMgYXJlIGFjY2VwdGFibGUgYXMYIHdlbGwuAAGhEQAAAFUAAGhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllcgFoTXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIcPFF1ZXVlZFNvbHV0aW9uWAABCAUF/IkFBAAcPQEgVGhlIGBYYCB2YXJpYW50IG9mIHRoZSBjdXJyZW50IHF1ZXVlZCBzb2x1dGlvbi4gTWlnaHQgYmUgdGhlIHZhbGlkIG9uZSBvciBub3QuAGkBIFRoZSB0d28gdmFyaWFudHMgb2YgdGhpcyBzdG9yYWdlIGl0ZW0gaXMgdG8gYXZvaWQgdGhlIG5lZWQgb2YgY29weWluZy4gUmVjYWxsIHRoYXQgb25jZSBhcQEgYFZlcmlmeWluZ1NvbHV0aW9uYCBpcyBiZWluZyBwcm9jZXNzZWQsIGl0IG5lZWRzIHRvIHdyaXRlIGl0cyBwYXJ0aWFsIHN1cHBvcnRzICpzb21ld2hlcmUqLmkBIFdyaXRpbmcgdGhlc2VzIHN1cHBvcnRzIG9uIHRvcCBvZiBhICpnb29kKiBxdWV1ZWQgc3VwcG9ydHMgaXMgd3JvbmcsIHNpbmNlIHdlIG1pZ2h0IGJhaWwudQEgV3JpdGluZyB0aGVtIHRvIGEgYnVnZ2VyIGFuZCBjb3B5aW5nIGF0IHRoZSBuZWQgaXMgc2xpZ2h0bHkgYmV0dGVyLCBidXQgZXhwZW5zaXZlLiBUaGlzIGZsYWd8IHN5c3RlbSBpcyBiZXN0IG9mIGJvdGggd29ybGRzLgA8UXVldWVkU29sdXRpb25ZAAEIBQX8iQUEAAQ9ASBUaGUgYFlgIHZhcmlhbnQgb2YgdGhlIGN1cnJlbnQgcXVldWVkIHNvbHV0aW9uLiBNaWdodCBiZSB0aGUgdmFsaWQgb25lIG9yIG5vdC4ASFF1ZXVlZFZhbGlkVmFyaWFudAEBBAU4pREEAQhdASBQb2ludGVyIHRvIHRoZSB2YXJpYW50IG9mIFtgUXVldWVkU29sdXRpb25YYF0gb3IgW2BRdWV1ZWRTb2x1dGlvbllgXSB0aGF0IGlzIGN1cnJlbnRseRwgdmFsaWQuAFhRdWV1ZWRTb2x1dGlvbkJhY2tpbmdzAAEIBQX8qREEACDUIFRoZSBgKGFtb3VudCwgY291bnQpYCBvZiBiYWNraW5ncywgZGl2aWRlZCBwZXIgcGFnZS4AcQEgVGhpcyBpcyBzdG9yZWQgYmVjYXVzZSBpbiB0aGUgbGFzdCBibG9jayBvZiB2ZXJpZmljYXRpb24gd2UgbmVlZCB0aGVtIHRvIGNvbXB1dGUgdGhlIHNjb3JlLJggYW5kIGNoZWNrIGBNYXhCYWNrZXJzUGVyV2lubmVyRmluYWxgLgBxASBUaGlzIGNhbiBvbmx5IGV2ZXIgbGl2ZSBmb3IgdGhlIGludmFsaWQgdmFyaWFudCBvZiB0aGUgc29sdXRpb24uIE9uY2UgaXQgaXMgdmFsaWQsIHdlIGRvbid0FQEgbmVlZCB0aGlzIGluZm9ybWF0aW9uIGFueW1vcmU7IHRoZSBzY29yZSBpcyBhbHJlYWR5IGNvbXB1dGVkIG9uY2UgaW70IFtgUXVldWVkU29sdXRpb25TY29yZWBdLCBhbmQgdGhlIGJhY2tpbmcgY291bnRzIGFyZSBjaGVja2VkLgBMUXVldWVkU29sdXRpb25TY29yZQABBAU4qQUEAAzYIFRoZSBzY29yZSBvZiB0aGUgdmFsaWQgdmFyaWFudCBvZiBbYFF1ZXVlZFNvbHV0aW9uYF0uALggVGhpcyBvbmx5IGV2ZXIgbGl2ZXMgZm9yIHRoZSBgdmFsaWRgIHZhcmlhbnQuADBNaW5pbXVtU2NvcmUAAKkFBAAEVQEgVGhlIG1pbmltdW0gc2NvcmUgdGhhdCBlYWNoIHNvbHV0aW9uIG11c3QgYXR0YWluIGluIG9yZGVyIHRvIGJlIGNvbnNpZGVyZWQgZmVhc2libGUuADRTdGF0dXNTdG9yYWdlAQC5EQQBBHQgU3RvcmFnZSBpdGVtIGZvciBbYFN0YXR1c2BdLgABrQUAAXUMABBwU29sdXRpb25JbXByb3ZlbWVudFRocmVzaG9sZDEFEAAAAAAITQEgVGhlIG1pbmltdW0gYW1vdW50IG9mIGltcHJvdmVtZW50IHRvIHRoZSBzb2x1dGlvbiBzY29yZSB0aGF0IGRlZmluZXMgYSBzb2x1dGlvbiBhcyggImJldHRlciIuAGBNYXhCYWNrZXJzUGVyV2lubmVyRmluYWw4ENQwAAAUHQEgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgYW1vbmcgYWxsIHBhZ2VzIG9mIGFuIGVsZWN0aW9uLgAFASBUaGlzIGNhbiBvbmx5IGJlIGNoZWNrZWQgYXQgdGhlIHZlcnkgZmluYWwgc3RlcCBvZiB2ZXJpZmljYXRpb24uAF0BIE5PVEU6IGF0IHRoZSBtb21lbnQsIHdlIGRvbid0IGNoZWNrIHRoaXMsIGFuZCBpdCBpcyBpbiBwbGFjZSBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkuAExNYXhCYWNrZXJzUGVyV2lubmVyOBAOAwAABMQgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgcGVyIHBhZ2UuAERNYXhXaW5uZXJzUGVyUGFnZTgQ6AMAAAhhASBNYXhpbXVtIG51bWJlciBvZiBzdXBwb3J0cyAoYWthLiB3aW5uZXJzL3ZhbGlkYXRvcnMvdGFyZ2V0cykgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgaW5MIGEgcGFnZSBvZiByZXN1bHRzLgAAAABWAABoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQAAbEFAAAAAAAAVwAAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAFgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkEDRJbnZ1bG5lcmFibGVzAQC9EQQAJBUBIEFjY291bnRzIHdoaXRlbGlzdGVkIGJ5IGdvdmVybmFuY2UgdG8gYWx3YXlzIHN1Ym1pdCB0aGVpciBzb2x1dGlvbnMuAHAgVGhleSBhcmUgZGlmZmVyZW50IGluIHRoYXQ6APwgKiBUaGV5IGFsd2F5cyBwYXkgYSBmaXhlZCBkZXBvc2l0IGZvciBzdWJtaXNzaW9uLCBzcGVjaWZpZWQgYnn0ICAgW2BDb25maWc6OkludnVsbmVyYWJsZURlcG9zaXRgXS4gVGhleSBwYXkgbm8gcGFnZSBkZXBvc2l0LmkBICogSWYgX2VqZWN0ZWRfIGJ5IGJldHRlciBzb2x1dGlvbiBmcm9tIFtgU29ydGVkU2NvcmVzYF0sIHRoZXkgd2lsbCBnZXQgdGhlaXIgZnVsbCBkZXBvc2l0ICAgIGJhY2suCQEgKiBUaGV5IGFsd2F5cyBnZXQgdGhlaXIgdHgtZmVlIGJhY2sgZXZlbiBpZiB0aGV5IGFyZSBfZGlzY2FyZGVkXy4AMFNvcnRlZFNjb3JlcwEBBAU4wREEAAAARFN1Ym1pc3Npb25TdG9yYWdlAAEMBQUFzRG9BQQABOwgVHJpcGxlIG1hcCBmcm9tIChyb3VuZCwgYWNjb3VudCwgcGFnZSkgdG8gYSBzb2x1dGlvbiBwYWdlLgBkU3VibWlzc2lvbk1ldGFkYXRhU3RvcmFnZQABCAUFZQ/REQQAENggTWFwIGZyb20gYWNjb3VudCB0byB0aGUgbWV0YWRhdGEgb2YgdGhlaXIgc3VibWlzc2lvbi4AcQEgaW52YXJpYW50OiBmb3IgYW55IEtleTEgb2YgdHlwZSBgQWNjb3VudElkYCBpbiBbYFN1Ym1pc3Npb25zYF0sIHRoaXMgc3RvcmFnZSBtYXAgYWxzbyBoYXMgYRwgdmFsdWUuAAHpBgABhQwAAAHdEQAABHcLZVBCaAvPBTnSBN9Z0yiJr6YLyclMjiR27ZuqqTAFLGRlcG9zaXRfZm9yCAx3aG8EFHBhZ2VzOJUBFBEBIEdldCB0aGUgZGVwb3NpdCBhbW91bnQgdGhhdCB3aWxsIGJlIGhlbGQgZm9yIGEgc29sdXRpb24gb2YgYHBhZ2VzYC4AQQEgVGhpcyBhbGxvd3MgYW4gb2ZmY2hhaW4gYXBwbGljYXRpb24gdG8ga25vdyB3aGF0IFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdIGFuZGUBIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFyZSBkb2luZyB1bmRlciB0aGUgaG9vZC4gSXQgYWxzbyB0YWtlcyBpbnRvIGFjY291bnQgaWYgYHdob2AgaXNoIFtgSW52dWxuZXJhYmxlc2BdIG9yIG5vdC4AWAAAHFN0YWtpbmcBHFN0YWtpbme0OFZhbGlkYXRvckNvdW50AQA4EAAAAAAEnCBUaGUgaWRlYWwgbnVtYmVyIG9mIGFjdGl2ZSB2YWxpZGF0b3JzLgA0SW52dWxuZXJhYmxlcwEAFQ4EAAxZASBBbnkgdmFsaWRhdG9ycyB0aGF0IG1heSBuZXZlciBiZSBzbGFzaGVkIG9yIGZvcmNpYmx5IGtpY2tlZC4gSXQncyBhIFZlYyBzaW5jZSB0aGV5J3JlTQEgZWFzeSB0byBpbml0aWFsaXplIGFuZCB0aGUgcGVyZm9ybWFuY2UgaGl0IGlzIG1pbmltYWwgKHdlIGV4cGVjdCBubyBtb3JlIHRoYW4gZm91cqwgaW52dWxuZXJhYmxlcykgYW5kIHJlc3RyaWN0ZWQgdG8gdGVzdG5ldHMuABhCb25kZWQAAQQFBAQEAAwBASBNYXAgZnJvbSBhbGwgbG9ja2VkICJzdGFzaCIgYWNjb3VudHMgdG8gdGhlIGNvbnRyb2xsZXIgYWNjb3VudC4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AQE1pbk5vbWluYXRvckJvbmQBAJUBQAAAAAAAAAAAAAAAAAAAAAAEIQEgVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgdG8gYmVjb21lIGFuZCBtYWludGFpbiB0aGUgcm9sZSBvZiBhIG5vbWluYXRvci4AQE1pblZhbGlkYXRvckJvbmQBAJUBQAAAAAAAAAAAAAAAAAAAAAAEIQEgVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgdG8gYmVjb21lIGFuZCBtYWludGFpbiB0aGUgcm9sZSBvZiBhIHZhbGlkYXRvci4ASE1pbmltdW1BY3RpdmVTdGFrZQEAlQFAAAAAAAAAAAAAAAAAAAAAAAQRASBUaGUgbWluaW11bSBhY3RpdmUgbm9taW5hdG9yIHN0YWtlIG9mIHRoZSBsYXN0IHN1Y2Nlc3NmdWwgZWxlY3Rpb24uADRNaW5Db21taXNzaW9uAQAxBRAAAAAADOggVGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCB2YWxpZGF0b3JzIGNhbiBzZXQuAIAgSWYgc2V0IHRvIGAwYCwgbm8gbGltaXQgZXhpc3RzLgBYQXJlTm9taW5hdG9yc1NsYXNoYWJsZQEAmQEEARykIFdoZXRoZXIgbm9taW5hdG9ycyBhcmUgc2xhc2hhYmxlIG9yIG5vdC4AbQEgLSBXaGVuIHNldCB0byBgdHJ1ZWAgKGRlZmF1bHQpLCBub21pbmF0b3JzIGFyZSBzbGFzaGVkIGFsb25nIHdpdGggdmFsaWRhdG9ycyBhbmQgbXVzdCB3YWl0KQEgICB0aGUgZnVsbCBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gYmVmb3JlIHdpdGhkcmF3aW5nIHVuYm9uZGVkIGZ1bmRzLhUBIC0gV2hlbiBzZXQgdG8gYGZhbHNlYCwgbm9taW5hdG9ycyBhcmUgbm90IHNsYXNoZWQsIGFuZCBjYW4gdW5ib25kIGluDQEgICBbYENvbmZpZzo6Tm9taW5hdG9yRmFzdFVuYm9uZER1cmF0aW9uYF0gZXJhcyBpbnN0ZWFkIG9mIHRoZSBmdWxsWQEgICBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gKHNlZSBbYFN0YWtpbmdJbnRlcmZhY2U6Om5vbWluYXRvcl9ib25kaW5nX2R1cmF0aW9uYF0pLgBcRXJhc05vbWluYXRvcnNTbGFzaGFibGUAAQQFOJkBBAAc2CBQZXItZXJhIHNuYXBzaG90IG9mIHdoZXRoZXIgbm9taW5hdG9ycyBhcmUgc2xhc2hhYmxlLgBlASBUaGlzIGlzIGNvcGllZCBmcm9tIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGF0IHRoZSBzdGFydCBvZiBlYWNoIGVyYS4gV2hlbiBwcm9jZXNzaW5nUQEgb2ZmZW5jZXMsIHdlIHVzZSB0aGUgdmFsdWUgZnJvbSB0aGlzIHN0b3JhZ2UgZm9yIHRoZSBvZmZlbmNlIGVyYSB0byBlbnN1cmUgdGhhdCB0aGU5ASBzbGFzaGluZyBydWxlcyBhdCB0aGUgdGltZSBvZiB0aGUgb2ZmZW5jZSBhcmUgYXBwbGllZCwgbm90IHRoZSBjdXJyZW50IHJ1bGVzLgBlASBJZiBhbiBlbnRyeSBkb2VzIG5vdCBleGlzdCBmb3IgYW4gZXJhLCBub21pbmF0b3JzIGFyZSBhc3N1bWVkIHRvIGJlIHNsYXNoYWJsZSAoZGVmYXVsdCkuABhMZWRnZXIAAQQCBOERBAAQRQEgTWFwIGZyb20gYWxsICh1bmxvY2tlZCkgImNvbnRyb2xsZXIiIGFjY291bnRzIHRvIHRoZSBpbmZvIHJlZ2FyZGluZyB0aGUgc3Rha2luZy4AdQEgTm90ZTogQWxsIHRoZSByZWFkcyBhbmQgbXV0YXRpb25zIHRvIHRoaXMgc3RvcmFnZSAqTVVTVCogYmUgZG9uZSB0aHJvdWdoIHRoZSBtZXRob2RzIGV4cG9zZWToIGJ5IFtgU3Rha2luZ0xlZGdlcmBdIHRvIGVuc3VyZSBkYXRhIGFuZCBsb2NrIGNvbnNpc3RlbmN5LgAUUGF5ZWUAAQQFBPUGBAAM5CBXaGVyZSB0aGUgcmV3YXJkIHBheW1lbnQgc2hvdWxkIGJlIG1hZGUuIEtleWVkIGJ5IHN0YXNoLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgAoVmFsaWRhdG9ycwEBBAUE+QYIAAAMRQEgVGhlIG1hcCBmcm9tICh3YW5uYWJlKSB2YWxpZGF0b3Igc3Rhc2gga2V5IHRvIHRoZSBwcmVmZXJlbmNlcyBvZiB0aGF0IHZhbGlkYXRvci4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AUENvdW50ZXJGb3JWYWxpZGF0b3JzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASE1heFZhbGlkYXRvcnNDb3VudAAAOAQADDEBIFRoZSBtYXhpbXVtIHZhbGlkYXRvciBjb3VudCBiZWZvcmUgd2Ugc3RvcCBhbGxvd2luZyBuZXcgdmFsaWRhdG9ycyB0byBqb2luLgDQIFdoZW4gdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCBubyBsaW1pdHMgYXJlIGVuZm9yY2VkLgBATGFzdFZhbGlkYXRvckVyYQABBAUEOAQAMGUBIFRyYWNrcyB0aGUgbGFzdCBlcmEgaW4gd2hpY2ggYW4gYWNjb3VudCB3YXMgYWN0aXZlIGFzIGEgdmFsaWRhdG9yIChpbmNsdWRlZCBpbiB0aGUgZXJhJ3NQIGV4cG9zdXJlL3NuYXBzaG90KS4AWQEgVGhpcyBpcyB1c2VkIHRvIGVuZm9yY2UgdGhhdCBhY2NvdW50cyB3aG8gd2VyZSByZWNlbnRseSB2YWxpZGF0b3JzIG11c3Qgd2FpdCB0aGUgZnVsbGEBIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBiZWZvcmUgdGhlaXIgZnVuZHMgY2FuIGJlIHdpdGhkcmF3biwgZXZlbiBpZiB0aGV5IHN3aXRjaCB0b7wgbm9taW5hdG9yIHJvbGUuIFRoaXMgcHJldmVudHMgdmFsaWRhdG9ycyBmcm9tOqwgMS4gQ29tbWl0dGluZyBhIHNsYXNoYWJsZSBvZmZlbmNlIGluIGVyYSBOfCAyLiBTd2l0Y2hpbmcgdG8gbm9taW5hdG9yIHJvbGVlASAzLiBVc2luZyB0aGUgc2hvcnRlciBub21pbmF0b3IgdW5ib25kaW5nIGR1cmF0aW9uIHRvIHdpdGhkcmF3IGZ1bmRzIGJlZm9yZSBiZWluZyBzbGFzaGVkAFkBIFVwZGF0ZWQgd2hlbiBlcmEgc25hcHNob3RzIGFyZSBjcmVhdGVkIChpbiBgRXJhc1N0YWtlcnNQYWdlZGAvYEVyYXNTdGFrZXJzT3ZlcnZpZXdgKS74IENsZWFuZWQgdXAgd2hlbiB0aGUgc3Rhc2ggaXMga2lsbGVkIChmdWxseSB3aXRoZHJhd24vcmVhcGVkKS4AKE5vbWluYXRvcnMAAQQFBOURBABMdQEgVGhlIG1hcCBmcm9tIG5vbWluYXRvciBzdGFzaCBrZXkgdG8gdGhlaXIgbm9taW5hdGlvbiBwcmVmZXJlbmNlcywgbmFtZWx5IHRoZSB2YWxpZGF0b3JzIHRoYXRYIHRoZXkgd2lzaCB0byBzdXBwb3J0LgA5ASBOb3RlIHRoYXQgdGhlIGtleXMgb2YgdGhpcyBzdG9yYWdlIG1hcCBtaWdodCBiZWNvbWUgbm9uLWRlY29kYWJsZSBpbiBjYXNlIHRoZS0BIGFjY291bnQncyBbYE5vbWluYXRpb25zUXVvdGE6Ok1heE5vbWluYXRpb25zYF0gY29uZmlndXJhdGlvbiBpcyBkZWNyZWFzZWQukCBJbiB0aGlzIHJhcmUgY2FzZSwgdGhlc2Ugbm9taW5hdG9yc2UBIGFyZSBzdGlsbCBleGlzdGVudCBpbiBzdG9yYWdlLCB0aGVpciBrZXkgaXMgY29ycmVjdCBhbmQgcmV0cmlldmFibGUgKGkuZS4gYGNvbnRhaW5zX2tleWBxASBpbmRpY2F0ZXMgdGhhdCB0aGV5IGV4aXN0KSwgYnV0IHRoZWlyIHZhbHVlIGNhbm5vdCBiZSBkZWNvZGVkLiBUaGVyZWZvcmUsIHRoZSBub24tZGVjb2RhYmxlbQEgbm9taW5hdG9ycyB3aWxsIGVmZmVjdGl2ZWx5IG5vdC1leGlzdCwgdW50aWwgdGhleSByZS1zdWJtaXQgdGhlaXIgcHJlZmVyZW5jZXMgc3VjaCB0aGF0IGl0AQEgaXMgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhlIG5ld2x5IHNldCBgQ29uZmlnOjpNYXhOb21pbmF0aW9uc2AuAGEBIFRoaXMgaW1wbGllcyB0aGF0IGA6Oml0ZXJfa2V5cygpLmNvdW50KClgIGFuZCBgOjppdGVyKCkuY291bnQoKWAgbWlnaHQgcmV0dXJuIGRpZmZlcmVudG0BIHZhbHVlcyBmb3IgdGhpcyBtYXAuIE1vcmVvdmVyLCB0aGUgbWFpbiBgOjpjb3VudCgpYCBpcyBhbGlnbmVkIHdpdGggdGhlIGZvcm1lciwgbmFtZWx5IHRoZWwgbnVtYmVyIG9mIGtleXMgdGhhdCBleGlzdC4AbQEgTGFzdGx5LCBpZiBhbnkgb2YgdGhlIG5vbWluYXRvcnMgYmVjb21lIG5vbi1kZWNvZGFibGUsIHRoZXkgY2FuIGJlIGNoaWxsZWQgaW1tZWRpYXRlbHkgdmlhuCBbYENhbGw6OmNoaWxsX290aGVyYF0gZGlzcGF0Y2hhYmxlIGJ5IGFueW9uZS4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AUENvdW50ZXJGb3JOb21pbmF0b3JzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAOFZpcnR1YWxTdGFrZXJzAAEEBQQQBAAYyCBTdGFrZXJzIHdob3NlIGZ1bmRzIGFyZSBtYW5hZ2VkIGJ5IG90aGVyIHBhbGxldHMuAHUBIFRoaXMgcGFsbGV0IGRvZXMgbm90IGFwcGx5IGFueSBsb2NrcyBvbiB0aGVtLCB0aGVyZWZvcmUgdGhleSBhcmUgb25seSB2aXJ0dWFsbHkgYm9uZGVkLiBUaGV5bQEgYXJlIGV4cGVjdGVkIHRvIGJlIGtleWxlc3MgYWNjb3VudHMgYW5kIGhlbmNlIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBtdXRhdGUgdGhlaXIgbGVkZ2VycQEgZGlyZWN0bHkgdmlhIHRoaXMgcGFsbGV0LiBJbnN0ZWFkLCB0aGVzZSBhY2NvdW50cyBhcmUgbWFuYWdlZCBieSBvdGhlciBwYWxsZXRzIGFuZCBhY2Nlc3NlZCkBIHZpYSBsb3cgbGV2ZWwgYXBpcy4gV2Uga2VlcCB0cmFjayBvZiB0aGVtIHRvIGRvIG1pbmltYWwgaW50ZWdyaXR5IGNoZWNrcy4AYENvdW50ZXJGb3JWaXJ0dWFsU3Rha2VycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAEhNYXhOb21pbmF0b3JzQ291bnQAADgEAAwxASBUaGUgbWF4aW11bSBub21pbmF0b3IgY291bnQgYmVmb3JlIHdlIHN0b3AgYWxsb3dpbmcgbmV3IHZhbGlkYXRvcnMgdG8gam9pbi4A0CBXaGVuIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgbm8gbGltaXRzIGFyZSBlbmZvcmNlZC4AKEN1cnJlbnRFcmEAADgEABB8IFRoZSBjdXJyZW50IHBsYW5uZWQgZXJhIGluZGV4LgBlASBUaGlzIGlzIHRoZSBsYXRlc3QgcGxhbm5lZCBlcmEsIGRlcGVuZGluZyBvbiBob3cgdGhlIFNlc3Npb24gcGFsbGV0IHF1ZXVlcyB0aGUgdmFsaWRhdG9ygCBzZXQsIGl0IG1pZ2h0IGJlIGFjdGl2ZSBvciBub3QuACRBY3RpdmVFcmEAAOkRBAAQ2CBUaGUgYWN0aXZlIGVyYSBpbmZvcm1hdGlvbiwgaXQgaG9sZHMgaW5kZXggYW5kIHN0YXJ0LgBZASBUaGUgYWN0aXZlIGVyYSBpcyB0aGUgZXJhIGJlaW5nIGN1cnJlbnRseSByZXdhcmRlZC4gVmFsaWRhdG9yIHNldCBvZiB0aGlzIGVyYSBtdXN0IGJlmCBlcXVhbCB0byB3aGF0IGlzIFJDJ3Mgc2Vzc2lvbiBwYWxsZXQuAChCb25kZWRFcmFzAQDtEQQAECUBIEEgbWFwcGluZyBmcm9tIHN0aWxsLWJvbmRlZCBlcmFzIHRvIHRoZSBmaXJzdCBzZXNzaW9uIGluZGV4IG9mIHRoYXQgZXJhLgDIIE11c3QgY29udGFpbnMgaW5mb3JtYXRpb24gZm9yIGVyYXMgZm9yIHRoZSByYW5nZTq8IGBbYWN0aXZlX2VyYSAtIGJvdW5kaW5nX2R1cmF0aW9uOyBhY3RpdmVfZXJhXWAATEVyYXNTdGFrZXJzT3ZlcnZpZXcAAQgFBWUP8REEADC4IFN1bW1hcnkgb2YgdmFsaWRhdG9yIGV4cG9zdXJlIGF0IGEgZ2l2ZW4gZXJhLgBxASBUaGlzIGNvbnRhaW5zIHRoZSB0b3RhbCBzdGFrZSBpbiBzdXBwb3J0IG9mIHRoZSB2YWxpZGF0b3IgYW5kIHRoZWlyIG93biBzdGFrZS4gSW4gYWRkaXRpb24sdQEgaXQgY2FuIGFsc28gYmUgdXNlZCB0byBnZXQgdGhlIG51bWJlciBvZiBub21pbmF0b3JzIGJhY2tpbmcgdGhpcyB2YWxpZGF0b3IgYW5kIHRoZSBudW1iZXIgb2ZpASBleHBvc3VyZSBwYWdlcyB0aGV5IGFyZSBkaXZpZGVkIGludG8uIFRoZSBwYWdlIGNvdW50IGlzIHVzZWZ1bCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZqwgcGFnZXMgb2YgcmV3YXJkcyB0aGF0IG5lZWRzIHRvIGJlIGNsYWltZWQuAGEBIFRoaXMgaXMga2V5ZWQgZmlyc3QgYnkgdGhlIGVyYSBpbmRleCB0byBhbGxvdyBidWxrIGRlbGV0aW9uIGFuZCB0aGVuIHRoZSBzdGFzaCBhY2NvdW50LqAgU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBgRXJhc2AuAMwgSXMgaXQgcmVtb3ZlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy5BASBJZiBzdGFrZXJzIGhhc24ndCBiZWVuIHNldCBvciBoYXMgYmVlbiByZW1vdmVkIHRoZW4gZW1wdHkgb3ZlcnZpZXcgaXMgcmV0dXJuZWQuAEBFcmFzU3Rha2Vyc1BhZ2VkAAEMBQUFzRH1EQQAGMAgUGFnaW5hdGVkIGV4cG9zdXJlIG9mIGEgdmFsaWRhdG9yIGF0IGdpdmVuIGVyYS4AcQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24sIHRoZW4gc3Rhc2ggYWNjb3VudCBhbmQgZmluYWxsecggdGhlIHBhZ2UuIFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHRocm91Z2ggYEVyYXNgLgDUIFRoaXMgaXMgY2xlYXJlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4AOENsYWltZWRSZXdhcmRzAQEIBQVlDwUSBAAY3CBIaXN0b3J5IG9mIGNsYWltZWQgcGFnZWQgcmV3YXJkcyBieSBlcmEgYW5kIHZhbGlkYXRvci4AaQEgVGhpcyBpcyBrZXllZCBieSBlcmEgYW5kIHZhbGlkYXRvciBzdGFzaCB3aGljaCBtYXBzIHRvIHRoZSBzZXQgb2YgcGFnZSBpbmRleGVzIHdoaWNoIGhhdmU4IGJlZW4gY2xhaW1lZC4AzCBJdCBpcyByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgBIRXJhc1ZhbGlkYXRvclByZWZzAQEIBQVlD/kGCAAAFAUBIEV4cG9zdXJlIG9mIHZhbGlkYXRvciBhdCBlcmEgd2l0aCB0aGUgcHJlZmVyZW5jZXMgb2YgdmFsaWRhdG9ycy4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQuAMwgSXMgaXQgcmVtb3ZlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4ATEVyYXNWYWxpZGF0b3JSZXdhcmQAAQQFOJUBBAAMLQEgVGhlIHRvdGFsIHZhbGlkYXRvciBlcmEgcGF5b3V0IGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4AIQEgRXJhcyB0aGF0IGhhdmVuJ3QgZmluaXNoZWQgeWV0IG9yIGhhcyBiZWVuIHJlbW92ZWQgZG9lc24ndCBoYXZlIHJld2FyZC4AQEVyYXNSZXdhcmRQb2ludHMBAQQFOAkSFAAAAAAACNAgUmV3YXJkcyBmb3IgdGhlIGxhc3QgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuJQEgSWYgcmV3YXJkIGhhc24ndCBiZWVuIHNldCBvciBoYXMgYmVlbiByZW1vdmVkIHRoZW4gMCByZXdhcmQgaXMgcmV0dXJuZWQuADhFcmFzVG90YWxTdGFrZQEBBAU4lQFAAAAAAAAAAAAAAAAAAAAAAAgRASBUaGUgdG90YWwgYW1vdW50IHN0YWtlZCBmb3IgdGhlIGxhc3QgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuHQEgSWYgdG90YWwgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHN0YWtlIGlzIHJldHVybmVkLgAgRm9yY2VFcmEBAI0MBAAEVCBNb2RlIG9mIGVyYSBmb3JjaW5nLgBATWF4U3Rha2VkUmV3YXJkcwAABQcEAAwZASBNYXhpbXVtIHN0YWtlZCByZXdhcmRzLCBpLmUuIHRoZSBwZXJjZW50YWdlIG9mIHRoZSBlcmEgaW5mbGF0aW9uIHRoYXRsIGlzIHVzZWQgZm9yIHN0YWtlIHJld2FyZHMurCBTZWUgW0VyYSBwYXlvdXRdKC4vaW5kZXguaHRtbCNlcmEtcGF5b3V0KS4ATFNsYXNoUmV3YXJkRnJhY3Rpb24BADEFEAAAAAAM+CBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc2xhc2ggdGhhdCBpcyBkaXN0cmlidXRlZCB0byByZXBvcnRlcnMuAOQgVGhlIHJlc3Qgb2YgdGhlIHNsYXNoZWQgdmFsdWUgaXMgaGFuZGxlZCBieSB0aGUgYFNsYXNoYC4ATENhbmNlbGVkU2xhc2hQYXlvdXQBAJUBQAAAAAAAAAAAAAAAAAAAAAAIFQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBnaXZlbiB0byByZXBvcnRlcnMgb2YgYSBzbGFzaCBldmVudCB3aGljaCB3YXPsIGNhbmNlbGVkIGJ5IGV4dHJhb3JkaW5hcnkgY2lyY3Vtc3RhbmNlcyAoZS5nLiBnb3Zlcm5hbmNlKS4AME9mZmVuY2VRdWV1ZQABCAUFZQ8VEgQAKE0BIFN0b3JlcyByZXBvcnRlZCBvZmZlbmNlcyBpbiBhIHF1ZXVlIHVudGlsIHRoZXkgYXJlIHByb2Nlc3NlZCBpbiBzdWJzZXF1ZW50IGJsb2Nrcy4AZQEgRWFjaCBvZmZlbmNlIGlzIHJlY29yZGVkIHVuZGVyIHRoZSBjb3JyZXNwb25kaW5nIGVyYSBpbmRleCBhbmQgdGhlIG9mZmVuZGluZyB2YWxpZGF0b3Inc3EBIGFjY291bnQuIElmIGFuIG9mZmVuY2Ugc3BhbnMgbXVsdGlwbGUgcGFnZXMsIG9ubHkgb25lIHBhZ2UgaXMgcHJvY2Vzc2VkIGF0IGEgdGltZS4gT2ZmZW5jZXM9ASBhcmUgaGFuZGxlZCBzZXF1ZW50aWFsbHksIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBzbGFzaGVzIGNvbXB1dGVkIGFuZCBzdG9yZWQgaW5RASBgVW5hcHBsaWVkU2xhc2hlc2AuIFRoZXNlIHNsYXNoZXMgYXJlIHRoZW4gYXBwbGllZCBpbiBhIGZ1dHVyZSBlcmEgYXMgZGV0ZXJtaW5lZCBieVggYFNsYXNoRGVmZXJEdXJhdGlvbmAuAFEBIEFueSBvZmZlbmNlcyB0aWVkIHRvIGFuIGVyYSBvbGRlciB0aGFuIGBCb25kaW5nRHVyYXRpb25gIGFyZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQu0CBQcm9jZXNzaW5nIGFsd2F5cyBwcmlvcml0aXplcyB0aGUgb2xkZXN0IGVyYSBmaXJzdC4AQE9mZmVuY2VRdWV1ZUVyYXMAABkSBAAsdQEgVHJhY2tzIHRoZSBlcmFzIHRoYXQgY29udGFpbiBvZmZlbmNlcyBpbiBgT2ZmZW5jZVF1ZXVlYCwgc29ydGVkIGZyb20gKiplYXJsaWVzdCB0byBsYXRlc3QqKi4ATQEgLSBUaGlzIGVuc3VyZXMgZWZmaWNpZW50IHJldHJpZXZhbCBvZiB0aGUgb2xkZXN0IG9mZmVuY2Ugd2l0aG91dCBpdGVyYXRpbmcgdGhyb3VnaEAgYE9mZmVuY2VRdWV1ZWAuZQEgLSBXaGVuIGEgbmV3IG9mZmVuY2UgaXMgYWRkZWQgdG8gYE9mZmVuY2VRdWV1ZWAsIGl0cyBlcmEgaXMgKippbnNlcnRlZCBpbiBzb3J0ZWQgb3JkZXIqKmAgaWYgbm90IGFscmVhZHkgcHJlc2VudC5BASAtIFdoZW4gYWxsIG9mZmVuY2VzIGZvciBhbiBlcmEgYXJlIHByb2Nlc3NlZCwgaXQgaXMgKipyZW1vdmVkKiogZnJvbSB0aGlzIGxpc3QuFQEgLSBUaGUgbWF4aW11bSBsZW5ndGggb2YgdGhpcyB2ZWN0b3IgaXMgYm91bmRlZCBieSBgQm9uZGluZ0R1cmF0aW9uYC4AcQEgVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBleHBlbnNpdmUgaXRlcmF0aW9uIGFuZCBzb3J0aW5nIHdoZW4gZmV0Y2hpbmcgdGhlIG5leHQgb2ZmZW5jZTAgdG8gcHJvY2Vzcy4ARFByb2Nlc3NpbmdPZmZlbmNlAAAdEgQAMB0BIFRyYWNrcyB0aGUgY3VycmVudGx5IHByb2Nlc3NlZCBvZmZlbmNlIHJlY29yZCBmcm9tIHRoZSBgT2ZmZW5jZVF1ZXVlYC4ATQEgLSBXaGVuIHByb2Nlc3Npbmcgb2ZmZW5jZXMsIGFuIG9mZmVuY2UgcmVjb3JkIGlzICoqcG9wcGVkKiogZnJvbSB0aGUgb2xkZXN0IGVyYSBpboggICBgT2ZmZW5jZVF1ZXVlYCBhbmQgc3RvcmVkIGhlcmUudQEgLSBUaGUgZnVuY3Rpb24gYHByb2Nlc3Nfb2ZmZW5jZWAgcmVhZHMgZnJvbSB0aGlzIHN0b3JhZ2UsIHByb2Nlc3Npbmcgb25lIHBhZ2Ugb2YgZXhwb3N1cmUgYXQoICAgYSB0aW1lLmUBIC0gQWZ0ZXIgcHJvY2Vzc2luZyBhIHBhZ2UsIHRoZSBgZXhwb3N1cmVfcGFnZWAgY291bnQgaXMgKipkZWNyZW1lbnRlZCoqIHVudGlsIGl0IHJlYWNoZXMgICAgemVyby4lASAtIE9uY2UgZnVsbHkgcHJvY2Vzc2VkLCB0aGUgb2ZmZW5jZSByZWNvcmQgaXMgcmVtb3ZlZCBmcm9tIHRoaXMgc3RvcmFnZS4AZQEgVGhpcyBlbnN1cmVzIHRoYXQgb2ZmZW5jZXMgYXJlIHByb2Nlc3NlZCBpbmNyZW1lbnRhbGx5LCBwcmV2ZW50aW5nIGV4Y2Vzc2l2ZSBjb21wdXRhdGlvbvwgaW4gYSBzaW5nbGUgYmxvY2sgd2hpbGUgbWFpbnRhaW5pbmcgY29ycmVjdCBzbGFzaGluZyBiZWhhdmlvci4AQFVuYXBwbGllZFNsYXNoZXMAAQgFBSESJRIEAATEIEFsbCB1bmFwcGxpZWQgc2xhc2hlcyB0aGF0IGFyZSBxdWV1ZWQgZm9yIGxhdGVyLgBAQ2FuY2VsbGVkU2xhc2hlcwEBBAU4LRIEABRRASBDYW5jZWxsZWQgc2xhc2hlcyBieSBlcmEgYW5kIHZhbGlkYXRvciB3aXRoIG1heGltdW0gc2xhc2ggZnJhY3Rpb24gdG8gYmUgY2FuY2VsbGVkLgBFASBXaGVuIHNsYXNoZXMgYXJlIGNhbmNlbGxlZCBieSBnb3Zlcm5hbmNlLCB0aGlzIHN0b3JlcyB0aGUgZXJhIGFuZCB0aGUgdmFsaWRhdG9yc1UBIHdob3NlIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZCwgYWxvbmcgd2l0aCB0aGUgbWF4aW11bSBzbGFzaCBmcmFjdGlvbiB0aGF0IHNob3VsZIQgYmUgY2FuY2VsbGVkIGZvciBlYWNoIHZhbGlkYXRvci4ATFZhbGlkYXRvclNsYXNoSW5FcmEAAQgFBWUPTQoEAAhFASBBbGwgc2xhc2hpbmcgZXZlbnRzIG9uIHZhbGlkYXRvcnMsIG1hcHBlZCBieSBlcmEgdG8gdGhlIGhpZ2hlc3Qgc2xhc2ggcHJvcG9ydGlvbnAgYW5kIHNsYXNoIHZhbHVlIG9mIHRoZSBlcmEuADhDaGlsbFRocmVzaG9sZAAABQcEAAxRASBUaGUgdGhyZXNob2xkIGZvciB3aGVuIHVzZXJzIGNhbiBzdGFydCBjYWxsaW5nIGBjaGlsbF9vdGhlcmAgZm9yIG90aGVyIHZhbGlkYXRvcnMgL1kBIG5vbWluYXRvcnMuIFRoZSB0aHJlc2hvbGQgaXMgY29tcGFyZWQgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyAvIG5vbWluYXRvcnMpASAoYENvdW50Rm9yKmApIGluIHRoZSBzeXN0ZW0gY29tcGFyZWQgdG8gdGhlIGNvbmZpZ3VyZWQgbWF4IChgTWF4KkNvdW50YCkuAExWb3RlclNuYXBzaG90U3RhdHVzAQAxEgQCEIAgVm90ZXIgc25hcHNob3QgcHJvZ3Jlc3Mgc3RhdHVzLgBpASBJZiB0aGUgc3RhdHVzIGlzIGBPbmdvaW5nYCwgaXQga2VlcHMgYSBjdXJzb3Igb2YgdGhlIGxhc3Qgdm90ZXIgcmV0cmlldmVkIHRvIHByb2NlZWQgd2hlboQgY3JlYXRpbmcgdGhlIG5leHQgc25hcHNob3QgcGFnZS4AQE5leHRFbGVjdGlvblBhZ2UAADgEABgBASBLZWVwcyB0cmFjayBvZiBhbiBvbmdvaW5nIG11bHRpLXBhZ2UgZWxlY3Rpb24gc29sdXRpb24gcmVxdWVzdC4AZQEgSWYgYFNvbWUoXylgYCwgaXQgaXMgdGhlIG5leHQgcGFnZSB0aGF0IHdlIGludGVuZCB0byBlbGVjdC4gSWYgYE5vbmVgLCB3ZSBhcmUgbm90IGluIHRoZUggZWxlY3Rpb24gcHJvY2Vzcy4AOQEgVGhpcyBpcyBvbmx5IHNldCBpbiBtdWx0aS1ibG9jayBlbGVjdGlvbnMuIFNob3VsZCBhbHdheXMgYmUgYE5vbmVgIG90aGVyd2lzZS4AQEVsZWN0YWJsZVN0YXNoZXMBADUSBAAEUQEgQSBib3VuZGVkIGxpc3Qgb2YgdGhlICJlbGVjdGFibGUiIHN0YXNoZXMgdGhhdCByZXN1bHRlZCBmcm9tIGEgc3VjY2Vzc2Z1bCBlbGVjdGlvbi4APEVyYVBydW5pbmdTdGF0ZQABBAU4ORIEAARFASBUcmFja3MgdGhlIGN1cnJlbnQgc3RlcCBvZiBlcmEgcHJ1bmluZyBwcm9jZXNzIGZvciBlYWNoIGVyYSBiZWluZyBsYXppbHkgcHJ1bmVkLgAB8QYAAYkMADAwSGlzdG9yeURlcHRoOBBUAAAANIwgTnVtYmVyIG9mIGVyYXMgdG8ga2VlcCBpbiBoaXN0b3J5LgDoIEZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBrZXB0IGZvciBlcmFzIGluIGBbY3VycmVudF9lcmEgLSkBIEhpc3RvcnlEZXB0aCwgY3VycmVudF9lcmFdYDogYEVyYXNWYWxpZGF0b3JQcmVmc2AsIGBFcmFzVmFsaWRhdG9yUmV3YXJkYCzgIGBFcmFzUmV3YXJkUG9pbnRzYCwgYEVyYXNUb3RhbFN0YWtlYCwgYENsYWltZWRSZXdhcmRzYCysIGBFcmFzU3Rha2Vyc1BhZ2VkYCwgYEVyYXNTdGFrZXJzT3ZlcnZpZXdgLgDkIE11c3QgYmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgZXJhcyBkZWxheWVkIGJ5IHNlc3Npb24u+CBJLmUuIGFjdGl2ZSBlcmEgbXVzdCBhbHdheXMgYmUgaW4gaGlzdG9yeS4gSS5lLiBgYWN0aXZlX2VyYSA+xCBjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGhgIG11c3QgYmUgZ3VhcmFudGVlZC4AEQEgSWYgbWlncmF0aW5nIGFuIGV4aXN0aW5nIHBhbGxldCBmcm9tIHN0b3JhZ2UgdmFsdWUgdG8gY29uZmlnIHZhbHVlLOwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHNhbWUgdmFsdWUgb3IgZ3JlYXRlciBhcyBpbiBzdG9yYWdlLgA4U2Vzc2lvbnNQZXJFcmE4EAYAAAAELQEgTnVtYmVyIG9mIHNlc3Npb25zIHBlciBlcmEsIGFzIHBlciB0aGUgcHJlZmVyZW5jZXMgb2YgdGhlICoqcmVsYXkgY2hhaW4qKi4ARFBsYW5uaW5nRXJhT2Zmc2V0OBAGAAAAOFEBIE51bWJlciBvZiBzZXNzaW9ucyBiZWZvcmUgdGhlIGVuZCBvZiBhbiBlcmEgd2hlbiB0aGUgZWxlY3Rpb24gZm9yIHRoZSBuZXh0IGVyYSB3aWxsHCBzdGFydC4AXQEgLSBUaGlzIGRldGVybWluZXMgaG93IG1hbnkgc2Vzc2lvbnMgKipiZWZvcmUqKiB0aGUgbGFzdCBzZXNzaW9uIG9mIHRoZSBlcmEgdGhlIHN0YWtpbmeEICAgZWxlY3Rpb24gcHJvY2VzcyBzaG91bGQgYmVnaW4uTQEgLSBUaGUgdmFsdWUgaXMgYm91bmRlZCBiZXR3ZWVuICoqMSoqIChlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdF0BICAgc2Vzc2lvbikgYW5kIGBTZXNzaW9uc1BlckVyYWAgKGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBzZXNzaW9uPCAgIG9mIHRoZSBlcmEpLgA0ICMjIyBFeGFtcGxlOkkBIC0gSWYgYFNlc3Npb25zUGVyRXJhID0gNmAgYW5kIGBQbGFubmluZ0VyYU9mZnNldCA9IDFgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZZAgICBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDEgPSA1YC5dASAtIElmIGBQbGFubmluZ0VyYU9mZnNldCA9IDZgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDYgPeggICAwYCwgbWVhbmluZyBpdCBzdGFydHMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBlcmEuADxCb25kaW5nRHVyYXRpb244EBwAAAAU5CBOdW1iZXIgb2YgZXJhcyB0aGF0IHN0YWtlZCBmdW5kcyBtdXN0IHJlbWFpbiBib25kZWQgZm9yLgBNASBUaGlzIGlzIHRoZSBib25kaW5nIGR1cmF0aW9uIGZvciB2YWxpZGF0b3JzLiBOb21pbmF0b3JzIG1heSBoYXZlIGEgc2hvcnRlciBib25kaW5nAQEgZHVyYXRpb24gd2hlbiBbYEFyZU5vbWluYXRvcnNTbGFzaGFibGVgXSBpcyBzZXQgdG8gYGZhbHNlYCAoc2VlzCBbYFN0YWtpbmdJbnRlcmZhY2U6Om5vbWluYXRvcl9ib25kaW5nX2R1cmF0aW9uYF0pLgBsTm9taW5hdG9yRmFzdFVuYm9uZER1cmF0aW9uOBAcAAAAIC0BIE51bWJlciBvZiBlcmFzIG5vbWluYXRvcnMgbXVzdCB3YWl0IHRvIHVuYm9uZCB3aGVuIHRoZXkgYXJlIG5vdCBzbGFzaGFibGUuAEUBIFRoaXMgZHVyYXRpb24gaXMgdXNlZCBmb3Igbm9taW5hdG9ycyB3aGVuIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGlzIGBmYWxzZWAuXQEgV2hlbiBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUsIHRoZXkgdXNlIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSB0byBlbnN1cmXQIHNsYXNoZXMgY2FuIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSB1bmJvbmRpbmcgcGVyaW9kLgA9ASBTZXR0aW5nIHRoaXMgdG8gYSBsb3dlciB2YWx1ZSAoZS5nLiwgMSBlcmEpIGFsbG93cyBmb3IgZmFzdGVyIHdpdGhkcmF3YWxzIHdoZW60IG5vbWluYXRvcnMgYXJlIG5vdCBzdWJqZWN0IHRvIHNsYXNoaW5nIHJpc2suAEhTbGFzaERlZmVyRHVyYXRpb244EBsAAAAQAQEgTnVtYmVyIG9mIGVyYXMgdGhhdCBzbGFzaGVzIGFyZSBkZWZlcnJlZCBieSwgYWZ0ZXIgY29tcHV0YXRpb24uAA0BIFRoaXMgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgYm9uZGluZyBkdXJhdGlvbi4gU2V0IHRvIDAgaWYgc2xhc2hlcxUBIHNob3VsZCBiZSBhcHBsaWVkIGltbWVkaWF0ZWx5LCB3aXRob3V0IG9wcG9ydHVuaXR5IGZvciBpbnRlcnZlbnRpb24uAExNYXhFeHBvc3VyZVBhZ2VTaXplOBAAAgAALLAgVGhlIG1heGltdW0gc2l6ZSBvZiBlYWNoIGBUOjpFeHBvc3VyZVBhZ2VgLgApASBBbiBgRXhwb3N1cmVQYWdlYCBpcyB3ZWFrbHkgYm91bmRlZCB0byBhIG1heGltdW0gb2YgYE1heEV4cG9zdXJlUGFnZVNpemVgMCBub21pbmF0b3JzLgAhASBGb3Igb2xkZXIgbm9uLXBhZ2VkIGV4cG9zdXJlLCBhIHJld2FyZCBwYXlvdXQgd2FzIHJlc3RyaWN0ZWQgdG8gdGhlIHRvcCEBIGBNYXhFeHBvc3VyZVBhZ2VTaXplYCBub21pbmF0b3JzLiBUaGlzIGlzIHRvIGxpbWl0IHRoZSBpL28gY29zdCBmb3IgdGhlSCBub21pbmF0b3IgcGF5b3V0LgA9ASBOb3RlOiBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgaXMgdXNlZCB0byBib3VuZCBgQ2xhaW1lZFJld2FyZHNgIGFuZCBpcyB1bnNhZmUgdG+sIHJlZHVjZSB3aXRob3V0IGhhbmRsaW5nIGl0IGluIGEgbWlncmF0aW9uLgA8TWF4VmFsaWRhdG9yU2V0OBDoAwAAEBUBIFRoZSBhYnNvbHV0ZSBtYXhpbXVtIG9mIHdpbm5lciB2YWxpZGF0b3JzIHRoaXMgcGFsbGV0IHNob3VsZCByZXR1cm4uAEEBIEFzIHRoaXMgcGFsbGV0IHN1cHBvcnRzIG11bHRpLWJsb2NrIGVsZWN0aW9uLCB0aGUgc2V0IG9mIHdpbm5lciB2YWxpZGF0b3JzICpwZXKMIGVsZWN0aW9uKiBpcyBib3VuZGVkIGJ5IHRoaXMgdHlwZS4ASE1heFVubG9ja2luZ0NodW5rczgQIAAAACgFASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYHVubG9ja2luZ2AgY2h1bmtzIGEgW2BTdGFraW5nTGVkZ2VyYF0gY2FuCQEgaGF2ZS4gRWZmZWN0aXZlbHkgZGV0ZXJtaW5lcyBob3cgbWFueSB1bmlxdWUgZXJhcyBhIHN0YWtlciBtYXkgYmU4IHVuYm9uZGluZyBpbi4A+CBOb3RlOiBgTWF4VW5sb2NraW5nQ2h1bmtzYCBpcyB1c2VkIGFzIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlAQEgYEJvdW5kZWRWZWNgIGl0ZW0gYFN0YWtpbmdMZWRnZXIudW5sb2NraW5nYC4gU2V0dGluZyB0aGlzIHZhbHVlBQEgbG93ZXIgdGhhbiB0aGUgZXhpc3RpbmcgdmFsdWUgY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW5jaWVzIGluIHRoZQkBIGBTdGFraW5nTGVkZ2VyYCBhbmQgd2lsbCBuZWVkIHRvIGJlIGhhbmRsZWQgcHJvcGVybHkgaW4gYSBydW50aW1lBQEgbWlncmF0aW9uLiBUaGUgdGVzdCBgcmVkdWNpbmdfbWF4X3VubG9ja2luZ19jaHVua3NfYWJydXB0YCBzaG93czQgdGhpcyBlZmZlY3QuAEBNYXhJbnZ1bG5lcmFibGVzOBAUAAAABKwgTWF4aW11bSBudW1iZXIgb2YgaW52dWxuZXJhYmxlIHZhbGlkYXRvcnMuADhNYXhFcmFEdXJhdGlvbigggGLuAQAAAAAguCBNYXhpbXVtIGFsbG93ZWQgZXJhIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy4AUQEgVGhpcyBwcm92aWRlcyBhIGRlZmVuc2l2ZSB1cHBlciBib3VuZCB0byBjYXAgdGhlIGVmZmVjdGl2ZSBlcmEgZHVyYXRpb24sIHByZXZlbnRpbmdhASBleGNlc3NpdmVseSBsb25nIGVyYXMgZnJvbSBjYXVzaW5nIHJ1bmF3YXkgaW5mbGF0aW9uIChlLmcuLCBkdWUgdG8gYnVncykuIElmIHRoZSBhY3R1YWwVASBlcmEgZHVyYXRpb24gZXhjZWVkcyB0aGlzIHZhbHVlLCBpdCB3aWxsIGJlIGNsYW1wZWQgdG8gdGhpcyBtYXhpbXVtLgABASBFeGFtcGxlOiBGb3IgYW4gaWRlYWwgZXJhIGR1cmF0aW9uIG9mIDI0IGhvdXJzICg4Niw0MDAsMDAwIG1zKSywIHRoaXMgY2FuIGJlIHNldCB0byA2MDQsODAwLDAwMCBtcyAoNyBkYXlzKS4APE1heFBydW5pbmdJdGVtczgQZAAAABQVASBNYXhpbXVtIG51bWJlciBvZiBzdG9yYWdlIGl0ZW1zIHRoYXQgY2FuIGJlIHBydW5lZCBpbiBhIHNpbmdsZSBjYWxsLgBZASBUaGlzIGNvbnRyb2xzIGhvdyBtYW55IHN0b3JhZ2UgaXRlbXMgY2FuIGJlIGRlbGV0ZWQgaW4gZWFjaCBjYWxsIHRvIGBwcnVuZV9lcmFfc3RlcGAuTQEgVGhpcyBzaG91bGQgYmUgc2V0IHRvIGEgY29uc2VydmF0aXZlIHZhbHVlIChlLmcuLCAxMDAtNTAwIGl0ZW1zKSB0byBlbnN1cmUgcHJ1bmluZ1UBIGRvZXNuJ3QgY29uc3VtZSB0b28gbXVjaCBibG9jayBzcGFjZS4gVGhlIGFjdHVhbCB3ZWlnaHQgaXMgZGV0ZXJtaW5lZCBieSBiZW5jaG1hcmtzLgABPRIABDxDdXJyZW5jeUJhbGFuY2WVAQhRASBKdXN0IHRoZSBgQ3VycmVuY3k6OkJhbGFuY2VgIHR5cGU7IHdlIGhhdmUgdGhpcyBpdGVtIHRvIGFsbG93IHVzIHRvIGNvbnN0cmFpbiBpdCB0bzQgYEZyb208dTY0PmAuAFkAACBUcmVhc3VyeQEgVHJlYXN1cnkcNFByb3Bvc2FsQ291bnQBADgQAAAAABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4ApCBOdW1iZXIgb2YgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACRQcm9wb3NhbHMAAQQFOKUJBAAQQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuAHwgUHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACxEZWFjdGl2YXRlZAEAlQFAAAAAAAAAAAAAAAAAAAAAAATwIFRoZSBhbW91bnQgd2hpY2ggaGFzIGJlZW4gcmVwb3J0ZWQgYXMgaW5hY3RpdmUgdG8gQ3VycmVuY3kuACRBcHByb3ZhbHMBAEESBAAQQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuAPggUHJvcG9zYWwgaW5kaWNlcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBidXQgbm90IHlldCBhd2FyZGVkLgAoU3BlbmRDb3VudAEAOBAAAAAABKQgVGhlIGNvdW50IG9mIHNwZW5kcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAYU3BlbmRzAAEEBThFEgQABNAgU3BlbmRzIHRoYXQgaGF2ZSBiZWVuIGFwcHJvdmVkIGFuZCBiZWluZyBwcm9jZXNzZWQuADxMYXN0U3BlbmRQZXJpb2QAADgEAATUIFRoZSBibG9ja251bWJlciBmb3IgdGhlIGxhc3QgdHJpZ2dlcmVkIHNwZW5kIHBlcmlvZC4AAT0HCAMClQFUaGUgYHNwZW5kX2xvY2FsYCBjYWxsIHdpbGwgYmUgcmVtb3ZlZCBieSBNYXkgMjAyNS4gTWlncmF0ZSB0byB0aGUgbmV3IGZsb3cgYW5kIHVzZSB0aGUgYHNwZW5kYCBjYWxsLgAEArUBVGhlIGByZW1vdmVfYXBwcm92YWxgIGNhbGwgd2lsbCBiZSByZW1vdmVkIGJ5IE1heSAyMDI1LiBJdCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlcHJlY2F0ZWQgYHNwZW5kX2xvY2FsYCBjYWxsLgABmQwAGCxTcGVuZFBlcmlvZDgQgFEBAASIIFBlcmlvZCBiZXR3ZWVuIHN1Y2Nlc3NpdmUgc3BlbmRzLgAQQnVybjEBEAAAAAAEEQEgUGVyY2VudGFnZSBvZiBzcGFyZSBmdW5kcyAoaWYgYW55KSB0aGF0IGFyZSBidXJudCBwZXIgc3BlbmQgcGVyaW9kLgAgUGFsbGV0SWQlDiBweS90cnNyeQQZASBUaGUgdHJlYXN1cnkncyBwYWxsZXQgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AME1heEFwcHJvdmFsczgQZAAAABhBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4AFQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGNhbiB3YWl0IGluIHRoZSBzcGVuZGluZyBxdWV1ZS4ATQEgTk9URTogVGhpcyBwYXJhbWV0ZXIgaXMgYWxzbyB1c2VkIHdpdGhpbiB0aGUgQm91bnRpZXMgUGFsbGV0IGV4dGVuc2lvbiBpZiBlbmFibGVkLgAwUGF5b3V0UGVyaW9kOBCAxhMABBkBIFRoZSBwZXJpb2QgZHVyaW5nIHdoaWNoIGFuIGFwcHJvdmVkIHRyZWFzdXJ5IHNwZW5kIGhhcyB0byBiZSBjbGFpbWVkLgAscG90X2FjY291bnQEgG1vZGxweS90cnNyeQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAFNEgAIJEFzc2V0S2luZEEHBC0BIFR5cGUgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUgYXNzZXQga2luZHMgdG8gYmUgc3BlbnQgZnJvbSB0aGUgdHJlYXN1cnkuLEJlbmVmaWNpYXJ5RQcEXQEgVHlwZSBwYXJhbWV0ZXIgdXNlZCB0byBpZGVudGlmeSB0aGUgYmVuZWZpY2lhcmllcyBlbGlnaWJsZSB0byByZWNlaXZlIHRyZWFzdXJ5IHNwZW5kcy4AWgAAQENvbnZpY3Rpb25Wb3RpbmcBQENvbnZpY3Rpb25Wb3RpbmcIJFZvdGluZ0ZvcgEBCAUFURJVEtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIdQEgQWxsIHZvdGluZyBmb3IgYSBwYXJ0aWN1bGFyIHZvdGVyIGluIGEgcGFydGljdWxhciB2b3RpbmcgY2xhc3MuIFdlIHN0b3JlIHRoZSBiYWxhbmNlIGZvciB0aGWcIG51bWJlciBvZiB2b3RlcyB0aGF0IHdlIGhhdmUgcmVjb3JkZWQuADRDbGFzc0xvY2tzRm9yAQEEBQRhEgQADGkBIFRoZSB2b3RpbmcgY2xhc3NlcyB3aGljaCBoYXZlIGEgbm9uLXplcm8gbG9jayByZXF1aXJlbWVudCBhbmQgdGhlIGxvY2sgYW1vdW50cyB3aGljaCB0aGV5bQEgcmVxdWlyZS4gVGhlIGFjdHVhbCBhbW91bnQgbG9ja2VkIG9uIGJlaGFsZiBvZiB0aGlzIHBhbGxldCBzaG91bGQgYWx3YXlzIGJlIHRoZSBtYXhpbXVtIG9mLCB0aGlzIGxpc3QuAAFJBwABnQwACCBNYXhWb3RlczgQAAIAABDwIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50IHZvdGVzIGFuIGFjY291bnQgbWF5IGhhdmUuAFUBIEFsc28gdXNlZCB0byBjb21wdXRlIHdlaWdodCwgYW4gb3Zlcmx5IGxhcmdlIHZhbHVlIGNhbiBsZWFkIHRvIGV4dHJpbnNpY3Mgd2l0aCBsYXJnZcAgd2VpZ2h0IGVzdGltYXRpb246IHNlZSBgZGVsZWdhdGVgIGZvciBpbnN0YW5jZS4ARFZvdGVMb2NraW5nUGVyaW9kOBDAiQEAEJAgVGhlIG1pbmltdW0gcGVyaW9kIG9mIHZvdGUgbG9ja2luZy4AZQEgSXQgc2hvdWxkIGJlIG5vIHNob3J0ZXIgdGhhbiBlbmFjdG1lbnQgcGVyaW9kIHRvIGVuc3VyZSB0aGF0IGluIHRoZSBjYXNlIG9mIGFuIGFwcHJvdmFsLEkBIHRob3NlIHN1Y2Nlc3NmdWwgdm90ZXJzIGFyZSBsb2NrZWQgaW50byB0aGUgY29uc2VxdWVuY2VzIHRoYXQgdGhlaXIgdm90ZXMgZW50YWlsLgABZRIAAABbAAAkUmVmZXJlbmRhASRSZWZlcmVuZGEUPFJlZmVyZW5kdW1Db3VudAEAOBAAAAAABDEBIFRoZSBuZXh0IGZyZWUgcmVmZXJlbmR1bSBpbmRleCwgYWthIHRoZSBudW1iZXIgb2YgcmVmZXJlbmRhIHN0YXJ0ZWQgc28gZmFyLgBEUmVmZXJlbmR1bUluZm9Gb3IAAQQCOGkSBAAEtCBJbmZvcm1hdGlvbiBjb25jZXJuaW5nIGFueSBnaXZlbiByZWZlcmVuZHVtLgAoVHJhY2tRdWV1ZQEBBAX5A3ESBAAQXQEgVGhlIHNvcnRlZCBsaXN0IG9mIHJlZmVyZW5kYSByZWFkeSB0byBiZSBkZWNpZGVkIGJ1dCBub3QgeWV0IGJlaW5nIGRlY2lkZWQsIG9yZGVyZWQgYnl8IGNvbnZpY3Rpb24td2VpZ2h0ZWQgYXBwcm92YWxzLgBBASBUaGlzIHNob3VsZCBiZSBlbXB0eSBpZiBgRGVjaWRpbmdDb3VudGAgaXMgbGVzcyB0aGFuIGBUcmFja0luZm86Om1heF9kZWNpZGluZ2AuADREZWNpZGluZ0NvdW50AQEEBfkDOBAAAAAABMQgVGhlIG51bWJlciBvZiByZWZlcmVuZGEgYmVpbmcgZGVjaWRlZCBjdXJyZW50bHkuAChNZXRhZGF0YU9mAAEEAjhABAAYBQEgVGhlIG1ldGFkYXRhIGlzIGEgZ2VuZXJhbCBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIHRoZSByZWZlcmVuZHVtLkkBIFRoZSBgSGFzaGAgcmVmZXJzIHRvIHRoZSBwcmVpbWFnZSBvZiB0aGUgYFByZWltYWdlc2AgcHJvdmlkZXIgd2hpY2ggY2FuIGJlIGEgSlNPToggZHVtcCBvciBJUEZTIGhhc2ggb2YgYSBKU09OIGZpbGUuAHUBIENvbnNpZGVyIGEgZ2FyYmFnZSBjb2xsZWN0aW9uIGZvciBhIG1ldGFkYXRhIG9mIGZpbmlzaGVkIHJlZmVyZW5kdW1zIHRvIGB1bnJlcXVlc3RgIChyZW1vdmUpRCBsYXJnZSBwcmVpbWFnZXMuAAFdBwABoQwAFERTdWJtaXNzaW9uRGVwb3NpdJUBQFVN0sIHAAAAAAAAAAAAAAAENQEgVGhlIG1pbmltdW0gYW1vdW50IHRvIGJlIHVzZWQgYXMgYSBkZXBvc2l0IGZvciBhIHB1YmxpYyByZWZlcmVuZHVtIHByb3Bvc2FsLgAkTWF4UXVldWVkOBBkAAAABOQgTWF4aW11bSBzaXplIG9mIHRoZSByZWZlcmVuZHVtIHF1ZXVlIGZvciBhIHNpbmdsZSB0cmFjay4ARFVuZGVjaWRpbmdUaW1lb3V0OBCAEwMACFUBIFRoZSBudW1iZXIgb2YgYmxvY2tzIGFmdGVyIHN1Ym1pc3Npb24gdGhhdCBhIHJlZmVyZW5kdW0gbXVzdCBiZWdpbiBiZWluZyBkZWNpZGVkIGJ5LuQgT25jZSB0aGlzIHBhc3NlcywgdGhlbiBhbnlvbmUgbWF5IGNhbmNlbCB0aGUgcmVmZXJlbmR1bS4ANEFsYXJtSW50ZXJ2YWw4EAEAAAAMXQEgUXVhbnRpemF0aW9uIGxldmVsIGZvciB0aGUgcmVmZXJlbmR1bSB3YWtldXAgc2NoZWR1bGVyLiBBIGhpZ2hlciBudW1iZXIgd2lsbCByZXN1bHQgaW5dASBmZXdlciBzdG9yYWdlIHJlYWRzL3dyaXRlcyBuZWVkZWQgZm9yIHNtYWxsZXIgdm90ZXJzLCBidXQgYWxzbyByZXN1bHQgaW4gZGVsYXlzIHRvIHRoZVUBIGF1dG9tYXRpYyByZWZlcmVuZHVtIHN0YXR1cyBjaGFuZ2VzLiBFeHBsaWNpdCBzZXJ2aWNpbmcgaW5zdHJ1Y3Rpb25zIGFyZSB1bmFmZmVjdGVkLgAYVHJhY2tzdRIVGkAAAGRyb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACDTPyWm1wsAAAAAAAAAAACwBAAAgBMDAEA4AABAOAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0BAGR3aGl0ZWxpc3RlZF9jYWxsZXIAAAAAAAAAZAAAAFDI7DYqLwEAAAAAAAAAAAAsAQAAgBMDAGQAAABkAAAAAuyXJRAAAAAAe1c8FwAAAABCOS8SAAAAAAIOAIQAAAAAANbmHwEAAAAAOWJ5AgAAAAACAGR3aXNoX2Zvcl9jaGFuZ2UAAAAAAAAAAAAACgAAAKCQ2W1UXgIAAAAAAAAAAACwBAAAgBMDAEA4AABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0KAGRzdGFraW5nX2FkbWluAAAAAAAAAAAAAAAACgAAAChkdhuVlwAAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8LAGR0cmVhc3VyZXIAAAAAAAAAAAAAAAAAAAAACgAAAAgUfgVRHgAAAAAAAAAAAACwBAAAgBMDAIBwAABAOAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0MAGRsZWFzZV9hZG1pbgAAAAAAAAAAAAAAAAAACgAAAChkdhuVlwAAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8NAGRmZWxsb3dzaGlwX2FkbWluAAAAAAAAAAAACgAAAChkdhuVlwAAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8OAGRnZW5lcmFsX2FkbWluAAAAAAAAAAAAAAAACgAAAChkdhuVlwAAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAJZovQCAAAAAKMpawUAAAAALmtK/f////8PAGRhdWN0aW9uX2FkbWluAAAAAAAAAAAAAAAACgAAAChkdhuVlwAAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAJZovQCAAAAAKMpawUAAAAALmtK/f////8UAGRyZWZlcmVuZHVtX2NhbmNlbGxlcgAAAAAA6AMAAFDI7DYqLwEAAAAAAAAAAACwBAAAwIkBAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8VAGRyZWZlcmVuZHVtX2tpbGxlcgAAAAAAAAAA6AMAAJDpnxLT6wUAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8eAGRzbWFsbF90aXBwZXIAAAAAAAAAAAAAAAAAyAAAAFVN0sIHAAAAAAAAAAAAAAAKAAAAwIkBAGQAAAAKAAAAAEmRSRUAZc0dAMqaOwL5uhgAAAAAACpNMQAAAAAAa1nn//////8fAGRiaWdfdGlwcGVyAAAAAAAAAAAAAAAAAAAAZAAAAFIFN5xNAAAAAAAAAAAAAABkAAAAwIkBAFgCAABkAAAAAEmRSRUAZc0dAMqaOwJpTz8AAAAAADWWfQAAAAAA5TTB//////8gAGRzbWFsbF9zcGVuZGVyAAAAAAAAAAAAAAAAMgAAADQ1JhoIAwAAAAAAAAAAAABgCQAAgBMDACAcAABAOAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8hAGRtZWRpdW1fc3BlbmRlcgAAAAAAAAAAAAAAMgAAAGhqTDQQBgAAAAAAAAAAAABgCQAAgBMDAEA4AABAOAAAAFsB9jAAZc0dAMqaOwIRYdsAAAAAAL/RqgEAAAAAIJcq//////8iAGRiaWdfc3BlbmRlcgAAAAAAAAAAAAAAAAAAMgAAANDUmGggDAAAAAAAAAAAAABgCQAAgBMDAIBwAABAOAAAAADKmjsAZc0dAMqaOwJBPLABAAAAAHVdNAMAAAAARdFl/v////8MSCBBIGxpc3Qgb2YgdHJhY2tzLgBdASBOb3RlOiBpZiB0aGUgdHJhY2tzIGFyZSBkeW5hbWljLCB0aGUgdmFsdWUgaW4gdGhlIHN0YXRpYyBtZXRhZGF0YSBtaWdodCBiZSBpbmFjY3VyYXRlLgABjRIADCxSdW50aW1lQ2FsbCAAFFZvdGVzlQEEzCBUaGUgY291bnRpbmcgdHlwZSBmb3Igdm90ZXMuIFVzdWFsbHkganVzdCBiYWxhbmNlLhRUYWxsedkIBEwgVGhlIHRhbGx5aW5nIHR5cGUuAFwAABxPcmlnaW5zAAAAAAAAAF0AACRXaGl0ZWxpc3QBJFdoaXRlbGlzdAQ8V2hpdGVsaXN0ZWRDYWxsAAEEBUAQBAAAAAFxBwABpQwAAAGREgAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuAF4AACBCb3VudGllcwEgQm91bnRpZXMQLEJvdW50eUNvdW50AQA4EAAAAAAEwCBOdW1iZXIgb2YgYm91bnR5IHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAgQm91bnRpZXMAAQQFOJUSBAAEeCBCb3VudGllcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgBIQm91bnR5RGVzY3JpcHRpb25zAAEEBTiZEgQABIAgVGhlIGRlc2NyaXB0aW9uIG9mIGVhY2ggYm91bnR5LgA8Qm91bnR5QXBwcm92YWxzAQBBEgQABOwgQm91bnR5IGluZGljZXMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYnV0IG5vdCB5ZXQgZnVuZGVkLgABdQcAAbUMACREQm91bnR5RGVwb3NpdEJhc2WVAUBwLn8DAAAAAAAAAAAAAAAABOggVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgZm9yIHBsYWNpbmcgYSBib3VudHkgcHJvcG9zYWwuAGBCb3VudHlEZXBvc2l0UGF5b3V0RGVsYXk4EAAAAAAEWQEgVGhlIGRlbGF5IHBlcmlvZCBmb3Igd2hpY2ggYSBib3VudHkgYmVuZWZpY2lhcnkgbmVlZCB0byB3YWl0IGJlZm9yZSBjbGFpbSB0aGUgcGF5b3V0LgBIQm91bnR5VXBkYXRlUGVyaW9kOBAABBcDGPQgVGhlIHRpbWUgbGltaXQgZm9yIGEgY3VyYXRvciB0byBhY3QgYmVmb3JlIGEgYm91bnR5IGV4cGlyZXMuAFUBIFRoZSBwZXJpb2QgdGhhdCBzdGFydHMgd2hlbiBhIGN1cmF0b3IgaXMgYXBwcm92ZWQsIGR1cmluZyB3aGljaCB0aGV5IG11c3QgZXhlY3V0ZSBvclUBIHVwZGF0ZSB0aGUgYm91bnR5IHZpYSBgZXh0ZW5kX2JvdW50eV9leHBpcnlgLiBJZiBtaXNzZWQsIHRoZSBib3VudHkgZXhwaXJlcywgYW5kIHRoZVUBIGN1cmF0b3IgbWF5IGJlIHNsYXNoZWQuIElmIGBCbG9ja051bWJlckZvcjo6TUFYYCwgYm91bnRpZXMgc3RheSBhY3RpdmUgaW5kZWZpbml0ZWx5LLggcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIGBleHRlbmRfYm91bnR5X2V4cGlyeWAuAGBDdXJhdG9yRGVwb3NpdE11bHRpcGxpZXIxARAgoQcAEBkBIFRoZSBjdXJhdG9yIGRlcG9zaXQgaXMgY2FsY3VsYXRlZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGN1cmF0b3IgZmVlLgA5ASBUaGlzIGRlcG9zaXQgaGFzIG9wdGlvbmFsIHVwcGVyIGFuZCBsb3dlciBib3VuZHMgd2l0aCBgQ3VyYXRvckRlcG9zaXRNYXhgIGFuZFQgYEN1cmF0b3JEZXBvc2l0TWluYC4AREN1cmF0b3JEZXBvc2l0TWF4YQREAQSCG84mAAAAAAAAAAAAAAAESQEgTWF4aW11bSBhbW91bnQgb2YgZnVuZHMgdGhhdCBzaG91bGQgYmUgcGxhY2VkIGluIGEgZGVwb3NpdCBmb3IgbWFraW5nIGEgcHJvcG9zYWwuAERDdXJhdG9yRGVwb3NpdE1pbmEERAFSoa7GAAAAAAAAAAAAAAAABEkBIE1pbmltdW0gYW1vdW50IG9mIGZ1bmRzIHRoYXQgc2hvdWxkIGJlIHBsYWNlZCBpbiBhIGRlcG9zaXQgZm9yIG1ha2luZyBhIHByb3Bvc2FsLgBIQm91bnR5VmFsdWVNaW5pbXVtlQFAaJqkhQ8AAAAAAAAAAAAAAARwIE1pbmltdW0gdmFsdWUgZm9yIGEgYm91bnR5LgBIRGF0YURlcG9zaXRQZXJCeXRllQFAFRYFAAAAAAAAAAAAAAAAAARhASBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBwZXIgYnl0ZSB3aXRoaW4gdGhlIHRpcCByZXBvcnQgcmVhc29uIG9yIGJvdW50eSBkZXNjcmlwdGlvbi4ATE1heGltdW1SZWFzb25MZW5ndGg4EABAAAAMiCBNYXhpbXVtIGFjY2VwdGFibGUgcmVhc29uIGxlbmd0aC4AZQEgQmVuY2htYXJrcyBkZXBlbmQgb24gdGhpcyB2YWx1ZSwgYmUgc3VyZSB0byB1cGRhdGUgd2VpZ2h0cyBmaWxlIHdoZW4gY2hhbmdpbmcgdGhpcyB2YWx1ZQABnRIAAABfAAA0Q2hpbGRCb3VudGllcwE0Q2hpbGRCb3VudGllcxxAQ2hpbGRCb3VudHlDb3VudAEAOBAAAAAACG0BIERFUFJFQ0FURUQ6IFJlcGxhY2VkIHdpdGggYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllc2Agc3RvcmFnZSBpdGVtIGtlZXBpbmcgZGVkaWNhdGVkIGNvdW50c1UBIGZvciBlYWNoIHBhcmVudCBib3VudHkuIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcy4gV2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LgBMUGFyZW50Q2hpbGRCb3VudGllcwEBBAU4OBAAAAAACMwgTnVtYmVyIG9mIGFjdGl2ZSBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eS7gIE1hcCBvZiBwYXJlbnQgYm91bnR5IGluZGV4IHRvIG51bWJlciBvZiBjaGlsZCBib3VudGllcy4AYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllcwEBBAU4OBAAAAAABEEBIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eSwgaW5jbHVkaW5nIGNvbXBsZXRlZCBib3VudGllcy4ANENoaWxkQm91bnRpZXMAAQgFBfyhEgQABJQgQ2hpbGQgYm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuAGRDaGlsZEJvdW50eURlc2NyaXB0aW9uc1YxAAEIBQX8mRIEAAwpASBUaGUgZGVzY3JpcHRpb24gb2YgZWFjaCBjaGlsZC1ib3VudHkuIEluZGV4ZWQgYnkgYChwYXJlbnRfaWQsIGNoaWxkX2lkKWAuAG0BIFRoaXMgaXRlbSByZXBsYWNlcyB0aGUgYENoaWxkQm91bnR5RGVzY3JpcHRpb25zYCBzdG9yYWdlIGl0ZW0gZnJvbSB0aGUgVjAgc3RvcmFnZSB2ZXJzaW9uLgBQVjBUb1YxQ2hpbGRCb3VudHlJZHMAAQQFOPwEABRdASBUaGUgbWFwcGluZyBvZiB0aGUgY2hpbGQgYm91bnR5IGlkcyBmcm9tIHN0b3JhZ2UgdmVyc2lvbiBgVjBgIHRvIHRoZSBuZXcgYFYxYCB2ZXJzaW9uLgBtASBUaGUgYFYwYCBpZHMgYmFzZWQgb24gdG90YWwgY2hpbGQgYm91bnR5IGNvdW50IFtgQ2hpbGRCb3VudHlDb3VudGBdYC4gVGhlIGBWMWAgdmVyc2lvbiBpZHNBASBiYXNlZCBvbiB0aGUgY2hpbGQgYm91bnR5IGNvdW50IHBlciBwYXJlbnQgYm91bnR5IFtgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzYF0uZQEgVGhlIGl0ZW0gaW50ZW5kZWQgc29sZWx5IGZvciBjbGllbnQgY29udmVuaWVuY2UgYW5kIG5vdCB1c2VkIGluIHRoZSBwYWxsZXQncyBjb3JlIGxvZ2ljLgBMQ2hpbGRyZW5DdXJhdG9yRmVlcwEBBAU4lQFAAAAAAAAAAAAAAAAAAAAAAAQBASBUaGUgY3VtdWxhdGl2ZSBjaGlsZC1ib3VudHkgY3VyYXRvciBmZWUgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4AAXkHAAG5DAAIZE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnQ4EGQAAAAEHQEgTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gYSBwYXJlbnQgYm91bnR5LgBcQ2hpbGRCb3VudHlWYWx1ZU1pbmltdW2VAUCkQl2NAQAAAAAAAAAAAAAABIggTWluaW11bSB2YWx1ZSBmb3IgYSBjaGlsZC1ib3VudHkuAAGpEgAAAGAAACRBc3NldFJhdGUBJEFzc2V0UmF0ZQRYQ29udmVyc2lvblJhdGVUb05hdGl2ZQABBAJBB4EHBAAMHQEgTWFwcyBhbiBhc3NldCB0byBpdHMgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24gaW4gdGhlIG5hdGl2ZSBiYWxhbmNlLgBNASBFLmcuIGBuYXRpdmVfYW1vdW50ID0gYXNzZXRfYW1vdW50ICogQ29udmVyc2lvblJhdGVUb05hdGl2ZTo6PFQ+OjpnZXQoYXNzZXRfa2luZClgAAF9BwABvQwAAAGtEgAEJEFzc2V0S2luZEEHBEUBIFRoZSB0eXBlIGZvciBhc3NldCBraW5kcyBmb3Igd2hpY2ggdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBpcyBzZXQuAGEAAEhNdWx0aUFzc2V0Qm91bnRpZXMBSE11bHRpQXNzZXRCb3VudGllcxwsQm91bnR5Q291bnQBADgQAAAAAATAIE51bWJlciBvZiBib3VudHkgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACBCb3VudGllcwABBAU4sRIEAAR4IEJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuADRDaGlsZEJvdW50aWVzAAEIBQX8vRIEAAyUIENoaWxkIGJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkLgDIIEluZGV4ZWQgYnkgYChwYXJlbnRfYm91bnR5X2lkLCBjaGlsZF9ib3VudHlfaWQpYC4AWENoaWxkQm91bnRpZXNQZXJQYXJlbnQBAQQFODgQAAAAAAzMIE51bWJlciBvZiBhY3RpdmUgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHkuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuAGxUb3RhbENoaWxkQm91bnRpZXNQZXJQYXJlbnQBAQQFODgQAAAAAAxBASBOdW1iZXIgb2YgdG90YWwgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHksIGluY2x1ZGluZyBjb21wbGV0ZWQgYm91bnRpZXMuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuAGxDaGlsZEJvdW50aWVzVmFsdWVQZXJQYXJlbnQBAQQFOJUBQAAAAAAAAAAAAAAAAAAAAAAQbQEgVGhlIGN1bXVsYXRpdmUgY2hpbGQtYm91bnR5IHZhbHVlIGZvciBlYWNoIHBhcmVudCBib3VudHkuIFRvIGJlIHN1YnRyYWN0ZWQgZnJvbSB0aGUgcGFyZW50kCBib3VudHkgcGF5b3V0IHdoZW4gYXdhcmRpbmcgYm91bnR5LgB8IEluZGV4ZWQgYnkgYHBhcmVudF9ib3VudHlfaWRgLgA4Q3VyYXRvckRlcG9zaXQAAQgFBcESxRIEACxlASBUaGUgY29uc2lkZXJhdGlvbiBjb3N0IGluY3VycmVkIGJ5IHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IgZm9yIGNvbW1pdHRpbmcgdG8gdGhlIHJvbGUuAHEBIERldGVybWluZWQgYnkgW2BwYWxsZXQ6OkNvbmZpZzo6Q29uc2lkZXJhdGlvbmBdLiBJdCBpcyBjcmVhdGVkIHdoZW4gdGhlIGN1cmF0b3IgYWNjZXB0cyB0aGVFASByb2xlLCBhbmQgaXMgZWl0aGVyIGJ1cm5lZCBpZiB0aGUgY3VyYXRvciBtaXNiZWhhdmVzIG9yIGNvbnN1bWVkIHVwb24gc3VjY2Vzc2Z1bIQgY29tcGxldGlvbiBvZiB0aGUgY2hpbGQtL2JvdW50eS4AEQEgTm90ZTogSWYgdGhlIHBhcmVudCBjdXJhdG9yIGlzIGFsc28gYXNzaWduZWQgdG8gdGhlIGNoaWxkLWJvdW50eSwgIA0BIHRoZSBjb25zaWRlcmF0aW9uIGNvc3QgaXMgY2hhcmdlZCBvbmx5IG9uY2Ug4oCUIHdoZW4gdGhlIGN1cmF0b3IgIKAgYWNjZXB0cyB0aGUgcm9sZSBmb3IgdGhlIHBhcmVudCBib3VudHkuAMggSW5kZXhlZCBieSBgKHBhcmVudF9ib3VudHlfaWQsIGNoaWxkX2JvdW50eV9pZClgLgABhQcAAcEMAAxIQm91bnR5VmFsdWVNaW5pbXVtlQFAaJqkhQ8AAAAAAAAAAAAAAARwIE1pbmltdW0gdmFsdWUgZm9yIGEgYm91bnR5LgBcQ2hpbGRCb3VudHlWYWx1ZU1pbmltdW2VAUCkQl2NAQAAAAAAAAAAAAAABIggTWluaW11bSB2YWx1ZSBmb3IgYSBjaGlsZC1ib3VudHkuAGRNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50OBBkAAAABB0BIE1heGltdW0gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGEgcGFyZW50IGJvdW50eS4AAckSAAgkQXNzZXRLaW5kQQcIQQEgVHlwZSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBhc3NldCBraW5kcyB1c2VkIHRvIGZ1bmQsIHJlZnVuZCBhbmQgc3BlbmQgZnJvbSggYm91bnRpZXMuLEJlbmVmaWNpYXJ5RQcEQQEgVHlwZSBwYXJhbWV0ZXIgdXNlZCB0byBpZGVudGlmeSB0aGUgYmVuZWZpY2lhcmllcyBlbGlnaWJsZSB0byByZWNlaXZlIHBheW1lbnRzLgBiAAAUQWhPcHMBFEFoT3BzDDhSY0xlYXNlUmVzZXJ2ZQABDAUFBc0SlQEEADgFASBBbW91bnQgb2YgYmFsYW5jZSB0aGF0IHdhcyByZXNlcnZlZCBmb3Igd2lubmluZyBhIGxlYXNlIGF1Y3Rpb24uAGUBIGB1bnJlc2VydmVfbGVhc2VfZGVwb3NpdGAgY2FuIGJlIHBlcm1pc3Npb25sZXNzbHkgY2FsbGVkIG9uY2UgdGhlIGJsb2NrIG51bWJlciBwYXNzZWQgdG9VASB1bnJlc2VydmUgdGhlIGRlcG9zaXQuIEl0IGlzIGltcGxpY2l0bHkgY2FsbGVkIGJ5IGB3aXRoZHJhd19jcm93ZGxvYW5fY29udHJpYnV0aW9uYC4IICBpASBUaGUgYWNjb3VudCBoZXJlIGNhbiBlaXRoZXIgYmUgYSBjcm93ZGxvYW4gYWNjb3VudCBvciBhIHNvbG8gYmlkZGVyLiBJZiBpdCBpcyBhIGNyb3dkbG9hbmkBIGFjY291bnQsIHRoZW4gdGhlIHN1bW1lZCB1cCBjb250cmlidXRpb25zIGZvciBpdCBpbiB0aGUgY29udHJpYnV0aW9ucyBtYXAgd2lsbCBlcXVhdGUgdGhlXCByZXNlcnZlZCBiYWxhbmNlIGhlcmUuAGQgVGhlIGtleXMgYXJlIGFzIGZvbGxvd3M66CAtIEJsb2NrIG51bWJlciBhZnRlciB3aGljaCB0aGUgZGVwb3NpdCBjYW4gYmUgdW5yZXNlcnZlZC6EIC0gVGhlIHBhcmFfaWQgb2YgdGhlIGxlYXNlIHNsb3Qu1CAtIFRoZSBhY2NvdW50IHRoYXQgd2lsbCBoYXZlIHRoZSBiYWxhbmNlIHVucmVzZXJ2ZWQugCAtIFRoZSBiYWxhbmNlIHRvIGJlIHVucmVzZXJ2ZWQuAFxSY0Nyb3dkbG9hbkNvbnRyaWJ1dGlvbgABDAUFBc0SnQUEADD8IEFtb3VudCBvZiBiYWxhbmNlIHRoYXQgYSBjb250cmlidXRvciBtYWRlIHRvd2FyZHMgYSBjcm93ZGxvYW4uAF0BIGB3aXRoZHJhd19jcm93ZGxvYW5fY29udHJpYnV0aW9uYCBjYW4gYmUgcGVybWlzc2lvbmxlc3NseSBjYWxsZWQgb25jZSB0aGUgYmxvY2sgbnVtYmVy1CBwYXNzZWQgdG8gdW5sb2NrIHRoZSBiYWxhbmNlIGZvciBhIHNwZWNpZmljIGFjY291bnQuAGQgVGhlIGtleXMgYXJlIGFzIGZvbGxvd3M64CAtIEJsb2NrIG51bWJlciBhZnRlciB3aGljaCB0aGUgYmFsYW5jZSBjYW4gYmUgdW5sb2NrZWQugCAtIFRoZSBwYXJhX2lkIG9mIHRoZSBjcm93ZGxvYW4uqCAtIFRoZSBhY2NvdW50IHRoYXQgbWFkZSB0aGUgY29udHJpYnV0aW9uLgBBASBUaGUgdmFsdWUgaXMgKGZ1bmRfcG90LCBiYWxhbmNlKS4gVGhlIGNvbnRyaWJ1dGlvbiBwb3QgaXMgdGhlIHNlY29uZCBrZXkgaW4gdGhljCBgUmNDcm93ZGxvYW5Db250cmlidXRpb25gIHN0b3JhZ2UuAEhSY0Nyb3dkbG9hblJlc2VydmUAAQwFBQXNEpUBBAAkyCBUaGUgcmVzZXJ2ZSB0aGF0IHdhcyB0YWtlbiB0byBjcmVhdGUgYSBjcm93ZGxvYW4uABEBIFRoaXMgaXMgbm9ybWFsbHkgNTAwIERPVCBhbmQgY2FuIGJlIHJlZnVuZGVkIGFzIGxhc3Qgc3RlcCBhZnRlciBhbGz0IGBSY0Nyb3dkbG9hbkNvbnRyaWJ1dGlvbmBzIG9mIHRoaXMgbG9hbiBoYXZlIGJlZW4gd2l0aGRyYXduLgAYIEtleXM6yCAtIEJsb2NrIG51bWJlciBhZnRlciB3aGljaCB0aGlzIGNhbiBiZSB1bnJlc2VydmVkfCAtIFRoZSBwYXJhX2lkIG9mIHRoZSBjcm93ZGxvYW7QIC0gVGhlIGFjY291bnQgdGhhdCB3aWxsIGhhdmUgdGhlIGJhbGFuY2UgdW5yZXNlcnZlZAABiQcAAcUMAAAB0RIABBxBc3NldElkOQIEqCBBc3NldCBJRCB0eXBlIG9mIHRoZSBgRnVuZ2libGVzYCBhZGFwdGVyLgD+AAAoQWhNaWdyYXRvcgEoQWhNaWdyYXRvchwoUmNBY2NvdW50cwABBAUEmQcEAAwhASBSQyBhY2NvdW50cyB0aGF0IGZhaWxlZCB0byBtaWdyYXRlIHdoZW4gd2VyZSByZWNlaXZlZCBvbiB0aGUgQXNzZXQgSHViLgB1ASBUaGlzIGlzIHVubGlrZWx5IHRvIGhhcHBlbiwgc2luY2Ugd2UgZHJ5IHJ1biB0aGUgbWlncmF0aW9uLCBidXQgd2Uga2VlcCBpdCBmb3IgY29tcGxldGVuZXNzLgBAQWhNaWdyYXRpb25TdGFnZQEAxQoEAAR8IFRoZSBBc3NldCBIdWIgbWlncmF0aW9uIHN0YXRlLgBAQWhCYWxhbmNlc0JlZm9yZQEA1RKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMdQEgSGVscGVyIHN0b3JhZ2UgaXRlbSB0byBzdG9yZSB0aGUgdG90YWwgYmFsYW5jZSAvIHRvdGFsIGlzc3VhbmNlIG9mIG5hdGl2ZSB0b2tlbiBhdCB0aGUgc3RhcnR1ASBvZiB0aGUgbWlncmF0aW9uLiBTaW5jZSB0ZWxlcG9ydHMgYXJlIGRpc2FibGVkIGR1cmluZyBtaWdyYXRpb24sIHRoZSB0b3RhbCBpc3N1YW5jZSB3aWxsIG5vdMwgY2hhbmdlIGZvciBvdGhlciByZWFzb24gdGhhbiB0aGUgbWlncmF0aW9uIGl0c2VsZi4AWERtcFF1ZXVlUHJpb3JpdHlDb25maWcBAMkKBAAYwCBUaGUgcHJpb3JpdHkgb2YgdGhlIERNUCBxdWV1ZSBkdXJpbmcgbWlncmF0aW9uLgBxASBDb250cm9scyBob3cgdGhlIERNUCAoRG93bndhcmQgTWVzc2FnZSBQYXNzaW5nKSBxdWV1ZSBpcyBwcm9jZXNzZWQgcmVsYXRpdmUgdG8gb3RoZXIgcXVldWVzZQEgZHVyaW5nIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4gVGhpcyBoZWxwcyBlbnN1cmUgdGltZWx5IHByb2Nlc3Npbmcgb2YgbWlncmF0aW9uIG1lc3NhZ2VzLm0BIFRoZSBkZWZhdWx0IHByaW9yaXR5IHBhdHRlcm4gaXMgZGVmaW5lZCBpbiB0aGUgcGFsbGV0IGNvbmZpZ3VyYXRpb24sIGJ1dCBjYW4gYmUgb3ZlcnJpZGRlboQgYnkgYSBzdG9yYWdlIHZhbHVlIG9mIHRoaXMgdHlwZS4AHE1hbmFnZXIAAAQEABCUIEFuIG9wdGlvbmFsIGFjY291bnQgaWQgb2YgYSBtYW5hZ2VyLgBFASBUaGlzIGFjY291bnQgaWQgaGFzIHNpbWlsYXIgcHJpdmlsZWdlcyB0byBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXSBleGNlcHQgdGhhdCBpdOwgY2FuIG5vdCBzZXQgdGhlIG1hbmFnZXIgYWNjb3VudCBpZCB2aWEgYHNldF9tYW5hZ2VyYCBjYWxsLgBMTWlncmF0aW9uU3RhcnRCbG9jawAAOAQAEF0BIFRoZSBibG9jayBudW1iZXIgYXQgd2hpY2ggdGhlIG1pZ3JhdGlvbiBiZWdhbiBhbmQgdGhlIHBhbGxldCdzIGV4dHJpbnNpY3Mgd2VyZSBsb2NrZWQuABUBIFRoaXMgdmFsdWUgaXMgc2V0IHdoZW4gZW50ZXJpbmcgdGhlIGBXYWl0aW5nRm9yQWhgIHN0YWdlLCBpLmUuLCB3aGVuxCBgUmNNaWdyYXRpb25TdGFnZTo6aXNfb25nb2luZygpYCBiZWNvbWVzIGB0cnVlYC4ARE1pZ3JhdGlvbkVuZEJsb2NrAAA4BAAQDQEgQmxvY2sgbnVtYmVyIHdoZW4gbWlncmF0aW9uIGZpbmlzaGVkIGFuZCBleHRyaW5zaWNzIHdlcmUgdW5sb2NrZWQuAPwgVGhpcyBpcyBzZXQgd2hlbiBlbnRlcmluZyB0aGUgYE1pZ3JhdGlvbkRvbmVgIHN0YWdlIGhlbmNlIHdoZW7IIGBSY01pZ3JhdGlvblN0YWdlOjppc19maW5pc2hlZCgpYCBiZWNvbWVzIGB0cnVlYC4AAZEHAAHJDAAAAdkSABhEUnVudGltZUhvbGRSZWFzb26hCwBMUnVudGltZUZyZWV6ZVJlYXNvbvENAEhQb3J0YWJsZUhvbGRSZWFzb26dBwBQUG9ydGFibGVGcmVlemVSZWFzb265BwAsUmNQcm94eVR5cGX5BwyUIFRoZSBhYnJpZGdlZCBSZWxheSBDaGFpbiBQcm94eSBUeXBlLgA9ASBBZGRpdGlvbmFsbHkgcmVxdWlyZXMgdGhlIGBEZWZhdWx0YCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGJlbmNobWFya2luZyBtb2Nrcy48UmNQYWxsZXRzT3JpZ2lu1QgM5CBTb21lIHBhcnQgb2YgdGhlIFJlbGF5IENoYWluIG9yaWdpbnMgdXNlZCBpbiBHb3Zlcm5hbmNlLgA9ASBBZGRpdGlvbmFsbHkgcmVxdWlyZXMgdGhlIGBEZWZhdWx0YCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGJlbmNobWFya2luZyBtb2Nrcy4A/wAACAQFACC5BAQAMAAECAwQFBgcICQoLDA0QXV0aG9yaXplQ2FsbNUKEEhDaGVja05vblplcm9TZW5kZXLZChBAQ2hlY2tTcGVjVmVyc2lvbt0KODhDaGVja1R4VmVyc2lvbuEKODBDaGVja0dlbmVzaXPlCkA4Q2hlY2tNb3J0YWxpdHnpCkAoQ2hlY2tOb25jZfEKECxDaGVja1dlaWdodPUKEFBDaGFyZ2VBc3NldFR4UGF5bWVudPkKEERDaGVja01ldGFkYXRhSGFzaP0K9QQwRXRoU2V0T3JpZ2luBQsQUFN0b3JhZ2VXZWlnaHRSZWNsYWltEBBsHEF1cmFBcGkINHNsb3RfZHVyYXRpb24A3RIMkCBSZXR1cm5zIHRoZSBzbG90IGR1cmF0aW9uIGZvciBBdXJhLgAlASBDdXJyZW50bHksIG9ubHkgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoaXMgdHlwZSBhdCBnZW5lc2lzIHdpbGwgYmUgdXNlZC4ALGF1dGhvcml0aWVzAFEOBJwgUmV0dXJuIHRoZSBjdXJyZW50IHNldCBvZiBhdXRob3JpdGllcy4ABLggQVBJIG5lY2Vzc2FyeSBmb3IgYmxvY2sgYXV0aG9yc2hpcCB3aXRoIGF1cmEuBABQUmVsYXlQYXJlbnRPZmZzZXRBcGkETHJlbGF5X3BhcmVudF9vZmZzZXQAOAT0IEZldGNoIHRoZSBzbG90IG9mZnNldCB0aGF0IGlzIGV4cGVjdGVkIGZyb20gdGhlIHJlbGF5IGNoYWluLgAQBQEgQVBJIHRvIHRlbGwgdGhlIG5vZGUgc2lkZSBob3cgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgYmUgY2hvc2VuLgBpASBBIGxhcmdlciBvZmZzZXQgaW5kaWNhdGVzIHRoYXQgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgbm90IGJlIHRoZSB0aXAgb2YgdGhlIHJlbGF5IGNoYWluLDEBIGJ1dCBgTmAgYmxvY2tzIGJlaGluZCB0aGUgdGlwLiBUaGlzIG9mZnNldCBpcyB0aGVuIGVuZm9yY2VkIGJ5IHRoZSBydW50aW1lLgQAYEF1cmFVbmluY2x1ZGVkU2VnbWVudEFwaQQ4Y2FuX2J1aWxkX3Vwb24INGluY2x1ZGVkX2hhc2hAEHNsb3RVDpkBKDkBIFdoZXRoZXIgaXQgaXMgbGVnYWwgdG8gZXh0ZW5kIHRoZSBjaGFpbiwgYXNzdW1pbmcgdGhlIGdpdmVuIGJsb2NrIGlzIHRoZSBtb3N0NQEgcmVjZW50bHkgaW5jbHVkZWQgb25lIGFzLW9mIHRoZSByZWxheSBwYXJlbnQgdGhhdCB3aWxsIGJlIGJ1aWx0IGFnYWluc3QsIGFuZHAgdGhlIGdpdmVuIHJlbGF5IGNoYWluIHNsb3QuAFEBIFRoaXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9naWMgdGhlIHJ1bnRpbWUgdXNlcyB3aGVuIHZhbGlkYXRpbmcgYmxvY2tzIHRvOCBhdm9pZCBpc3N1ZXMuAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBlbXB0eSwgaS5lLiBgaW5jbHVkZWRfaGFzaCA9PSBhdGAsIHdoZXJlIGF0IGlzIHRoZSBibG9ja2EBIHdob3NlIHN0YXRlIHdlIGFyZSBxdWVyeWluZyBhZ2FpbnN0LCB0aGlzIG11c3QgYWx3YXlzIHJldHVybiBgdHJ1ZWAgYXMgbG9uZyBhcyB0aGUgc2xvdLwgaXMgbW9yZSByZWNlbnQgdGhhbiB0aGUgaW5jbHVkZWQgYmxvY2sgaXRzZWxmLgA0NQEgVGhpcyBydW50aW1lIEFQSSBpcyB1c2VkIHRvIGluZm9ybSBwb3RlbnRpYWwgYmxvY2sgYXV0aG9ycyB3aGV0aGVyIHRoZXkgd2lsbCUBIGhhdmUgdGhlIHJpZ2h0IHRvIGF1dGhvciBhdCBhIHNsb3QsIGFzc3VtaW5nIHRoZXkgaGF2ZSBjbGFpbWVkIHRoZSBzbG90LgB1ASBJbiBwYXJ0aWN1bGFyLCB0aGlzIEFQSSBhbGxvd3MgQXVyYS1iYXNlZCBwYXJhY2hhaW5zIHRvIHJlZ3VsYXRlIHRoZWlyICJ1bmluY2x1ZGVkIHNlZ21lbnQiLG0BIHdoaWNoIGlzIHRoZSBzZWN0aW9uIG9mIHRoZSBoZWFkIG9mIHRoZSBjaGFpbiB3aGljaCBoYXMgbm90IHlldCBiZWVuIG1hZGUgYXZhaWxhYmxlIGluIHRoZTQgcmVsYXkgY2hhaW4uAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBzaG9ydCwgQXVyYSBjaGFpbnMgd2lsbCBhbGxvdyBhdXRob3JzIHRvIGNyZWF0ZSBtdWx0aXBsZV0BIGJsb2NrcyBwZXIgc2xvdCBpbiBvcmRlciB0byBidWlsZCBhIGJhY2tsb2cuIFdoZW4gaXQgaXMgc2F0dXJhdGVkLCB0aGlzIEFQSSB3aWxsIGxpbWl0qCB0aGUgYW1vdW50IG9mIGJsb2NrcyB0aGF0IGNhbiBiZSBjcmVhdGVkLgAkIENoYW5nZXM6kQEgLSBWZXJzaW9uIDI6IFVwZGF0ZSB0byBgY2FuX2J1aWxkX3Vwb25gIHRvIHRha2UgYSByZWxheSBjaGFpbiBgU2xvdGAgaW5zdGVhZCBvZiBhIHBhcmFjaGFpbiBgU2xvdGAuCAAQQ29yZQwcdmVyc2lvbgD9DASQIFJldHVybnMgdGhlIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuADRleGVjdXRlX2Jsb2NrBBRibG9ja+ESEARkIEV4ZWN1dGUgdGhlIGdpdmVuIGJsb2NrLgBAaW5pdGlhbGl6ZV9ibG9jawQYaGVhZGVyYO0SBEEBIEluaXRpYWxpemUgYSBibG9jayB3aXRoIHRoZSBnaXZlbiBoZWFkZXIgYW5kIHJldHVybiB0aGUgcnVudGltZSBleGVjdXRpdmUgbW9kZS4ABCEBIFRoZSBgQ29yZWAgcnVudGltZSBhcGkgdGhhdCBldmVyeSBTdWJzdHJhdGUgcnVudGltZSBuZWVkcyB0byBpbXBsZW1lbnQuFAAgTWV0YWRhdGEMIG1ldGFkYXRhAPESBIwgUmV0dXJucyB0aGUgbWV0YWRhdGEgb2YgYSBydW50aW1lLgBMbWV0YWRhdGFfYXRfdmVyc2lvbgQcdmVyc2lvbjj1EhCkIFJldHVybnMgdGhlIG1ldGFkYXRhIGF0IGEgZ2l2ZW4gdmVyc2lvbi4ABQEgSWYgdGhlIGdpdmVuIGB2ZXJzaW9uYCBpc24ndCBzdXBwb3J0ZWQsIHRoaXMgd2lsbCByZXR1cm4gYE5vbmVgLnUBIFVzZSBbYFNlbGY6Om1ldGFkYXRhX3ZlcnNpb25zYF0gdG8gZmluZCBvdXQgYWJvdXQgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuAERtZXRhZGF0YV92ZXJzaW9ucwBVBAykIFJldHVybnMgdGhlIHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9ucy4AwCBUaGlzIGNhbiBiZSB1c2VkIHRvIGNhbGwgYG1ldGFkYXRhX2F0X3ZlcnNpb25gLgAEAQEgVGhlIGBNZXRhZGF0YWAgYXBpIHRyYWl0IHRoYXQgcmV0dXJucyBtZXRhZGF0YSBmb3IgdGhlIHJ1bnRpbWUuCAAwQmxvY2tCdWlsZGVyEDxhcHBseV9leHRyaW5zaWMEJGV4dHJpbnNpYxUN+RIQbCBBcHBseSB0aGUgZ2l2ZW4gZXh0cmluc2ljLgA5ASBSZXR1cm5zIGFuIGluY2x1c2lvbiBvdXRjb21lIHdoaWNoIHNwZWNpZmllcyBpZiB0aGlzIGV4dHJpbnNpYyBpcyBpbmNsdWRlZCBpbkwgdGhpcyBibG9jayBvciBub3QuADhmaW5hbGl6ZV9ibG9jawBgBGggRmluaXNoIHRoZSBjdXJyZW50IGJsb2NrLgBMaW5oZXJlbnRfZXh0cmluc2ljcwQgaW5oZXJlbnQJEyENBD0BIEdlbmVyYXRlIGluaGVyZW50IGV4dHJpbnNpY3MuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgA8Y2hlY2tfaW5oZXJlbnRzCBRibG9ja+ESEGRhdGEJExkTBFUBIENoZWNrIHRoYXQgdGhlIGluaGVyZW50cyBhcmUgdmFsaWQuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgAEcQEgVGhlIGBCbG9ja0J1aWxkZXJgIGFwaSB0cmFpdCB0aGF0IHByb3ZpZGVzIHRoZSByZXF1aXJlZCBmdW5jdGlvbmFsaXR5IGZvciBidWlsZGluZyBhIGJsb2NrLhgAWFRhZ2dlZFRyYW5zYWN0aW9uUXVldWUEUHZhbGlkYXRlX3RyYW5zYWN0aW9uDBhzb3VyY2UdEwh0eBUNKGJsb2NrX2hhc2hAIRMkaCBWYWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24uAGUBIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgdGhlIHRyYW5zYWN0aW9uIHBvb2wgdG8gbGVhcm4gZGV0YWlscyBhYm91dCBnaXZlbiB0cmFuc2FjdGlvbi5FASBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2Ugc3VyZSB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB0cmFuc2FjdGlvbk0BIGFnYWluc3QgY3VycmVudCBzdGF0ZS4gVGhlIGdpdmVuIGBibG9ja19oYXNoYCBjb3JyZXNwb25kcyB0byB0aGUgaGFzaCBvZiB0aGUgYmxvY2t8IHRoYXQgaXMgdXNlZCBhcyBjdXJyZW50IHN0YXRlLgBFASBOb3RlIHRoYXQgdGhpcyBjYWxsIG1heSBiZSBwZXJmb3JtZWQgYnkgdGhlIHBvb2wgbXVsdGlwbGUgdGltZXMgYW5kIHRyYW5zYWN0aW9uc6QgbWlnaHQgYmUgdmVyaWZpZWQgaW4gYW55IHBvc3NpYmxlIG9yZGVyLgAETQEgVGhlIGBUYWdnZWRUcmFuc2FjdGlvblF1ZXVlYCBhcGkgdHJhaXQgZm9yIGludGVyZmVyaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uIHF1ZXVlLgwARE9mZmNoYWluV29ya2VyQXBpBDxvZmZjaGFpbl93b3JrZXIEGGhlYWRlcmAQBMggU3RhcnRzIHRoZSBvZmYtY2hhaW4gdGFzayBmb3IgZ2l2ZW4gYmxvY2sgaGVhZGVyLgAEZCBUaGUgb2ZmY2hhaW4gd29ya2VyIGFwaS4IACxTZXNzaW9uS2V5cwhUZ2VuZXJhdGVfc2Vzc2lvbl9rZXlzBBBzZWVk6BgcFQEgR2VuZXJhdGUgYSBzZXQgb2Ygc2Vzc2lvbiBrZXlzIHdpdGggb3B0aW9uYWxseSB1c2luZyB0aGUgZ2l2ZW4gc2VlZC4JASBUaGUga2V5cyBzaG91bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUga2V5c3RvcmUgZXhwb3NlZCB2aWEgcnVudGltZTwgZXh0ZXJuYWxpdGllcy4AsCBUaGUgc2VlZCBuZWVkcyB0byBiZSBhIHZhbGlkIGB1dGY4YCBzdHJpbmcuANAgUmV0dXJucyB0aGUgY29uY2F0ZW5hdGVkIFNDQUxFIGVuY29kZWQgcHVibGljIGtleXMuAExkZWNvZGVfc2Vzc2lvbl9rZXlzBBxlbmNvZGVkGCkTDJggRGVjb2RlIHRoZSBnaXZlbiBwdWJsaWMgc2Vzc2lvbiBrZXlzLgDcIFJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljIHJhdyBwdWJsaWMga2V5cyArIGtleSB0eXBlLgAEaCBTZXNzaW9uIGtleXMgcnVudGltZSBhcGkuBABMUnVudGltZVZpZXdGdW5jdGlvbgRUZXhlY3V0ZV92aWV3X2Z1bmN0aW9uCCBxdWVyeV9pZDUTFGlucHV0GDkTBHwgRXhlY3V0ZSBhIHZpZXcgZnVuY3Rpb24gcXVlcnkuAASkIFJ1bnRpbWUgQVBJIGZvciBleGVjdXRpbmcgdmlldyBmdW5jdGlvbnMEADxBY2NvdW50Tm9uY2VBcGkENGFjY291bnRfbm9uY2UEHGFjY291bnQEOATAIEdldCBjdXJyZW50IGFjY291bnQgbm9uY2Ugb2YgZ2l2ZW4gYEFjY291bnRJZGAuAASAIFRoZSBBUEkgdG8gcXVlcnkgYWNjb3VudCBub25jZS4EAEhBc3NldENvbnZlcnNpb25BcGkMjHF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zEBhhc3NldDE5Ahhhc3NldDI5AhhhbW91bnSVASxpbmNsdWRlX2ZlZZkBYQQQ/CBQcm92aWRlcyBhIHF1b3RlIGZvciBbYFBhbGxldDo6c3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdLgA5ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLqwgKFVzZSBgYW1vdW50X2luX21heGAgdG8gY29udHJvbCBzbGlwcGFnZS4pAIxxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2VucxAYYXNzZXQxOQIYYXNzZXQyOQIYYW1vdW50lQEsaW5jbHVkZV9mZWWZAWEEEPwgUHJvdmlkZXMgYSBxdW90ZSBmb3IgW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXS4AOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6wIChVc2UgYGFtb3VudF9vdXRfbWluYCB0byBjb250cm9sIHNsaXBwYWdlLikAMGdldF9yZXNlcnZlcwgYYXNzZXQxOQIYYXNzZXQyOQJBEwQFASBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBsaXF1aWRpdHkgcG9vbCBmb3IgdGhlIGdpdmVuIGFzc2V0IHBhaXIuAAghASBUaGlzIHJ1bnRpbWUgYXBpIGFsbG93cyBwZW9wbGUgdG8gcXVlcnkgdGhlIHNpemUgb2YgdGhlIGxpcXVpZGl0eSBwb29sc3AgYW5kIHF1b3RlIHByaWNlcyBmb3Igc3dhcHMuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHQVDQxsZW44RRMAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0FQ0MbGVuOEkTAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0eQGVAQAATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDiVAQAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOEUTBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOEkTBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodHkBlQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4lQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgTGVuZ3RoVG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAAAMADRYY21QYXltZW50QXBpEHxxdWVyeV9hY2NlcHRhYmxlX3BheW1lbnRfYXNzZXRzBCx4Y21fdmVyc2lvbjhVExS0IFJldHVybnMgYSBsaXN0IG9mIGFjY2VwdGFibGUgcGF5bWVudCBhc3NldHMuADAgIyBBcmd1bWVudHMAaCAqIGB4Y21fdmVyc2lvbmA6IFZlcnNpb24uAEBxdWVyeV94Y21fd2VpZ2h0BBxtZXNzYWdlbQJhExSoIFJldHVybnMgYSB3ZWlnaHQgbmVlZGVkIHRvIGV4ZWN1dGUgYSBYQ00uADAgIyBBcmd1bWVudHMAdCAqIGBtZXNzYWdlYDogYFZlcnNpb25lZFhjbWAuAGRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHR5ARRhc3NldN0DZRMY6CBDb252ZXJ0cyBhIHdlaWdodCBpbnRvIGEgZmVlIGZvciB0aGUgc3BlY2lmaWVkIGBBc3NldElkYC4AMCAjIEFyZ3VtZW50cwCIICogYHdlaWdodGA6IGNvbnZlcnRpYmxlIGBXZWlnaHRgLnwgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRJZGAuAExxdWVyeV9kZWxpdmVyeV9mZWVzDCxkZXN0aW5hdGlvbuUBHG1lc3NhZ2VtAiBhc3NldF9pZN0DaRMoYCBRdWVyeSBkZWxpdmVyeSBmZWVzIFYyLgAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLgAscCBBIHRyYWl0IG9mIFhDTSBwYXltZW50IEFQSS4AqCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Igb2J0YWluaW5nOgDEICogdGhlIHdlaWdodCByZXF1aXJlZCB0byBleGVjdXRlIGFuIFhDTSBtZXNzYWdlLAUBICogYSBsaXN0IG9mIGFjY2VwdGFibGUgYEFzc2V0SWRgcyBmb3IgbWVzc2FnZSBleGVjdXRpb24gcGF5bWVudCwBASAqIHRoZSBjb3N0IG9mIHRoZSB3ZWlnaHQgaW4gdGhlIHNwZWNpZmllZCBhY2NlcHRhYmxlIGBBc3NldElkYC6gICogdGhlIGZlZXMgZm9yIGFuIFhDTSBtZXNzYWdlIGRlbGl2ZXJ5LgDwIFRvIGRldGVybWluZSB0aGUgZXhlY3V0aW9uIHdlaWdodCBvZiB0aGUgY2FsbHMgcmVxdWlyZWQgZm9ydQEgW2B4Y206OmxhdGVzdDo6SW5zdHJ1Y3Rpb246OlRyYW5zYWN0YF0gaW5zdHJ1Y3Rpb24sIGBUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpYCBjYW4gYmUgdXNlZC4IACREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAwYb3JpZ2lu/QMQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjhtEwREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb27lAQx4Y22tA40TBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9u5QGVEwSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EADxUcnVzdGVkUXVlcnlBcGkISGlzX3RydXN0ZWRfcmVzZXJ2ZQgUYXNzZXSdEyBsb2NhdGlvbuUBoRMU8CBSZXR1cm5zIGlmIHRoZSBsb2NhdGlvbiBpcyBhIHRydXN0ZWQgcmVzZXJ2ZSBmb3IgdGhlIGFzc2V0LgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAFRpc190cnVzdGVkX3RlbGVwb3J0ZXIIFGFzc2V0nRMgbG9jYXRpb27lAaETFOAgUmV0dXJucyBpZiB0aGUgYXNzZXQgY2FuIGJlIHRlbGVwb3J0ZWQgdG8gdGhlIGxvY2F0aW9uLgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAATsIEFQSSBmb3IgcXVlcnlpbmcgdHJ1c3RlZCByZXNlcnZlcyBhbmQgdHJ1c3RlZCB0ZWxlcG9ydGVycy4EAFRBdXRob3JpemVkQWxpYXNlcnNBcGkITGF1dGhvcml6ZWRfYWxpYXNlcnMEGHRhcmdldOUBqRME9CBSZXR1cm5zIGxvY2F0aW9ucyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ATGlzX2F1dGhvcml6ZWRfYWxpYXMIGG9yaWdpbuUBGHRhcmdldOUBsRMEHQEgUmV0dXJucyB3aGV0aGVyIGBvcmlnaW5gIGlzIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgAEoCBBUEkgZm9yIHF1ZXJ5aW5nIFhDTSBhdXRob3JpemVkIGFsaWFzZXMEADBGdW5naWJsZXNBcGkEWHF1ZXJ5X2FjY291bnRfYmFsYW5jZXMEHGFjY291bnQEtRME7CBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBbYEFzc2V0YF0gdGhhdCBhbiBgQWNjb3VudElkYCBoYXMuAATYIFRoZSBBUEkgZm9yIHF1ZXJ5aW5nIGFjY291bnQncyBiYWxhbmNlcyBmcm9tIHJ1bnRpbWUuCABQQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlcmC9ExCcIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAPQgVGhlIGdpdmVuIGBoZWFkZXJgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1aWx0IGJsb2NrIGZvciB0aGF0qCB3ZSBhcmUgY29sbGVjdGluZyB0aGUgY29sbGF0aW9uIGluZm8gZm9yLgAU2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgBEIFZlcnNpb24gaGlzdG9yeToBASAtIFZlcnNpb24gMjogQ2hhbmdlZCBbYFNlbGY6OmNvbGxlY3RfY29sbGF0aW9uX2luZm9gXSBzaWduYXR1cmU1ASAtIFZlcnNpb24gMzogU2lnbmFscyB0byB0aGUgbm9kZSB0byB1c2UgdmVyc2lvbiAxIG9mIFtgUGFyYWNoYWluQmxvY2tEYXRhYF0uDAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGMkTKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWTNE+g4YQEgUmV0dXJucyBhIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBpZGVudGlmaWVkIGJ5GCBgaWRgLgBVASBJZiBgaWRgIGlzIGBOb25lYCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlZmF1bHRJASBgUnVudGltZUdlbmVzaXNDb25maWdgIHN0cnVjdCBvZiB0aGUgcnVudGltZS4gSW1wbGVtZW50YXRpb24gbXVzdCBwcm92aWRlIGRlZmF1bHRgIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AuACEBIE90aGVyd2lzZSBmdW5jdGlvbiByZXR1cm5zIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4sIG5hbWVkUQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXQgaWRlbnRpZmllZCBieSBgaWRgLCBvciBgTm9uZWAgaWYgc3VjaCBwcmVzZXQgZG9lcyBub3RhASBleGlzdC4gUmV0dXJuZWQgYFZlYzx1OD5gIGNvbnRhaW5zIGJ5dGVzIG9mIEpTT04gYmxvYiAocGF0Y2gpIHdoaWNoIGNvbXByaXNlcyBhIGxpc3Qgb2ZNASAocG90ZW50aWFsbHkgbmVzdGVkKSBrZXktdmFsdWUgcGFpcnMgdGhhdCBhcmUgaW50ZW5kZWQgZm9yIGN1c3RvbWl6aW5nIHRoZSBkZWZhdWx0ZQEgcnVudGltZSBnZW5lc2lzIGNvbmZpZy4gVGhlIHBhdGNoIHNoYWxsIGJlIG1lcmdlZCAocmZjNzM4Nikgd2l0aCB0aGUgSlNPTiByZXByZXNlbnRhdGlvbmEBIG9mIHRoZSBkZWZhdWx0IGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgdG8gY3JlYXRlIGEgY29tcHJlaGVuc2l2ZSBnZW5lc2lzIGNvbmZpZyB0aGF0IGNhboQgYmUgdXNlZCBpbiBgYnVpbGRfc3RhdGVgIG1ldGhvZC4AMHByZXNldF9uYW1lcwDRExBRASBSZXR1cm5zIGEgbGlzdCBvZiBpZGVudGlmaWVycyBmb3IgYXZhaWxhYmxlIGJ1aWx0aW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXRzLgBhASBUaGUgcHJlc2V0cyBmcm9tIHRoZSBsaXN0IGNhbiBiZSBxdWVyaWVkIHdpdGggW2BHZW5lc2lzQnVpbGRlcjo6Z2V0X3ByZXNldGBdIG1ldGhvZC4gSWYBASBubyBuYW1lZCBwcmVzZXRzIGFyZSBwcm92aWRlZCBieSB0aGUgcnVudGltZSB0aGUgbGlzdCBpcyBlbXB0eS4ABPAgQVBJIHRvIGludGVyYWN0IHdpdGggYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmb3IgdGhlIHJ1bnRpbWUEAEBHZXRQYXJhY2hhaW5JbmZvBDBwYXJhY2hhaW5faWQAoASwIFJldHJpZXZlIHRoZSBwYXJhY2hhaW4gaWQgdXNlZCBmb3IgcnVudGltZS4ABA0BIFJ1bnRpbWUgYXBpIHVzZWQgdG8gYWNjZXNzIGdlbmVyYWwgaW5mbyBhYm91dCBhIHBhcmFjaGFpbiBydW50aW1lLgQASE5vbWluYXRpb25Qb29sc0FwaSg8cGVuZGluZ19yZXdhcmRzBAx3aG8ElQEENQEgUmV0dXJucyB0aGUgcGVuZGluZyByZXdhcmRzIGZvciB0aGUgbWVtYmVyIHRoYXQgdGhlIEFjY291bnRJZCB3YXMgZ2l2ZW4gZm9yLgBEcG9pbnRzX3RvX2JhbGFuY2UIHHBvb2xfaWQ4GHBvaW50c5UBlQEE9CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IGJhbGFuY2Ugb2YgYHBvaW50c2AgZm9yIGEgZ2l2ZW4gcG9vbC4ARGJhbGFuY2VfdG9fcG9pbnRzCBxwb29sX2lkOCRuZXdfZnVuZHOVAZUBBPwgUmV0dXJucyB0aGUgZXF1aXZhbGVudCBwb2ludHMgb2YgYG5ld19mdW5kc2AgZm9yIGEgZ2l2ZW4gcG9vbC4ASHBvb2xfcGVuZGluZ19zbGFzaAQccG9vbF9pZDiVAQSwIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbC4AUG1lbWJlcl9wZW5kaW5nX3NsYXNoBBhtZW1iZXIElQEQzCBSZXR1cm5zIHRoZSBwZW5kaW5nIHNsYXNoIGZvciBhIGdpdmVuIHBvb2wgbWVtYmVyLgBNASBJZiBwZW5kaW5nIHNsYXNoIG9mIHRoZSBtZW1iZXIgZXhjZWVkcyBgRXhpc3RlbnRpYWxEZXBvc2l0YCwgaXQgY2FuIGJlIHJlcG9ydGVkIG9uHCBjaGFpbi4AdHBvb2xfbmVlZHNfZGVsZWdhdGVfbWlncmF0aW9uBBxwb29sX2lkOJkBIOQgUmV0dXJucyB0cnVlIGlmIHRoZSBwb29sIHdpdGggYHBvb2xfaWRgIG5lZWRzIG1pZ3JhdGlvbi4ASQEgVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIGBwYWxsZXQtbm9taW5hdGlvbi1wb29sc2AgaGFzIHN3aXRjaGVkIHRvIHVzaW5nIHN0cmF0ZWd5QQEgW2BEZWxlZ2F0ZVN0YWtlYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OmFkYXB0ZXI6OkRlbGVnYXRlU3Rha2UpIGJ1dCB0aGUgcG9vbOggc3RpbGwgaGFzIGZ1bmRzIHRoYXQgd2VyZSBzdGFrZWQgdXNpbmcgdGhlIG9sZGVyIHN0cmF0ZWd5GQEgW1RyYW5zZmVyU3Rha2VdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpUcmFuc2ZlclN0YWtlKS4gVXNliQEgW2BtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6Q2FsbDo6bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlKVQgdG8gbWlncmF0ZSB0aGUgcG9vbC4AfG1lbWJlcl9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EGG1lbWJlcgSZARwpASBSZXR1cm5zIHRydWUgaWYgdGhlIGRlbGVnYXRlZCBmdW5kcyBvZiB0aGUgcG9vbCBgbWVtYmVyYCBuZWVkcyBtaWdyYXRpb24uANggT25jZSBhIHBvb2wgaGFzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCB0byB0aGUgc3RyYXRlZ3lVASBbYERlbGVnYXRlU3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6RGVsZWdhdGVTdGFrZSksIHRoZSBmdW5kcyBvZiB0aGUZASBtZW1iZXIgY2FuIGJlIG1pZ3JhdGVkIGZyb20gcG9vbCBhY2NvdW50IHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LiBVc2UpASBbYG1pZ3JhdGVfZGVsZWdhdGlvbmBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpDYWxsOjptaWdyYXRlX2RlbGVnYXRpb24ppCB0byBtaWdyYXRlIHRoZSBmdW5kcyBvZiB0aGUgcG9vbCBtZW1iZXIuAFBtZW1iZXJfdG90YWxfYmFsYW5jZQQMd2hvBJUBBGUBIFJldHVybnMgdGhlIHRvdGFsIGNvbnRyaWJ1dGlvbiBvZiBhIHBvb2wgbWVtYmVyIGluY2x1ZGluZyBhbnkgYmFsYW5jZSB0aGF0IGlzIHVuYm9uZGluZy4AMHBvb2xfYmFsYW5jZQQccG9vbF9pZDiVAQScIFRvdGFsIGJhbGFuY2UgY29udHJpYnV0ZWQgdG8gdGhlIHBvb2wuADRwb29sX2FjY291bnRzBBxwb29sX2lkOHEKBC0BIFJldHVybnMgdGhlIGJvbmRlZCBhY2NvdW50IGFuZCByZXdhcmQgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2xfaWQuAAT4IFJ1bnRpbWUgYXBpIGZvciBhY2Nlc3NpbmcgaW5mb3JtYXRpb24gYWJvdXQgbm9taW5hdGlvbiBwb29scy4EAChTdGFraW5nQXBpDERub21pbmF0aW9uc19xdW90YQQcYmFsYW5jZZUBOAQRASBSZXR1cm5zIHRoZSBub21pbmF0aW9ucyBxdW90YSBmb3IgYSBub21pbmF0b3Igd2l0aCBhIGdpdmVuIGJhbGFuY2UuAFxlcmFzX3N0YWtlcnNfcGFnZV9jb3VudAgMZXJhOBxhY2NvdW50BDgEOQEgUmV0dXJucyB0aGUgcGFnZSBjb3VudCBvZiBleHBvc3VyZXMgZm9yIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBpbiBhIGdpdmVuIGVyYS4APHBlbmRpbmdfcmV3YXJkcwgMZXJhOBxhY2NvdW50BJkBBEUBIFJldHVybnMgdHJ1ZSBpZiBhIHZhbGlkYXRvciBgYWNjb3VudGAgaGFzIHBhZ2VzIHRvIGJlIGNsYWltZWQgZm9yIHRoZSBnaXZlbiBlcmEuAAAEACRJbmZsYXRpb24ElGV4cGVyaW1lbnRhbF9pc3N1YW5jZV9wcmVkaWN0aW9uX2luZm8A1RMQ1CBSZXR1cm4gdGhlIGN1cnJlbnQgZXN0aW1hdGVzIG9mIHRoZSBpc3N1YW5jZSBhbW91bnQuAFEBIFRoaXMgaXMgbWFya2VkIGFzIGV4cGVyaW1lbnRhbCBpbiBsaWdodCBvZiBSRkMjODkuIE5vbmV0aGVsZXNzLCBpdHMgdXNhZ2UgaXMgaGlnaGx5JQEgcmVjb21tZW5kZWQgb3ZlciB0cnlpbmcgdG8gcmVhZC1zdG9yYWdlLCBvciByZS1jcmVhdGUgdGhlIG9uY2hhaW4gbG9naWMuAAAEACRSZXZpdmVBcGlcJGV0aF9ibG9jawCxEAx8IFJldHVybnMgdGhlIGN1cnJlbnQgRVRIIGJsb2NrLgC4IFRoaXMgaXMgb25lIGJsb2NrIGJlaGluZCB0aGUgc3Vic3RyYXRlIGJsb2NrLgA4ZXRoX2Jsb2NrX2hhc2gEGG51bWJlcvkEbQcE3CBSZXR1cm5zIHRoZSBFVEggYmxvY2sgaGFzaCBmb3IgdGhlIGdpdmVuIGJsb2NrIG51bWJlci4AQGV0aF9yZWNlaXB0X2RhdGEAHREUEQEgVGhlIGRldGFpbHMgbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSByZWNlaXB0IGluZm9ybWF0aW9uIG9mZmNoYWluLgAcICMgTm90ZQBVASBFYWNoIGVudHJ5IGNvcnJlc3BvbmRzIHRvIHRoZSBhcHByb3ByaWF0ZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiBpbiB0aGUgY3VycmVudCBibG9jay4APGJsb2NrX2dhc19saW1pdAD5BAR0IFJldHVybnMgdGhlIGJsb2NrIGdhcyBsaW1pdC4AHGJhbGFuY2UEHGFkZHJlc3PxBPkEBDEBIFJldHVybnMgdGhlIGZyZWUgYmFsYW5jZSBvZiB0aGUgZ2l2ZW4gYFtIMTYwXWAgYWRkcmVzcywgdXNpbmcgRVZNIGRlY2ltYWxzLgAkZ2FzX3ByaWNlAPkEBFwgUmV0dXJucyB0aGUgZ2FzIHByaWNlLgAUbm9uY2UEHGFkZHJlc3PxBDgExCBSZXR1cm5zIHRoZSBub25jZSBvZiB0aGUgZ2l2ZW4gYFtIMTYwXWAgYWRkcmVzcy4AEGNhbGwYGG9yaWdpbgQQZGVzdPEEFHZhbHVllQEkZ2FzX2xpbWl0dQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0YQQoaW5wdXRfZGF0YRjZEwz0IFBlcmZvcm0gYSBjYWxsIGZyb20gYSBzcGVjaWZpZWQgYWNjb3VudCB0byBhIGdpdmVuIGNvbnRyYWN0LgCIIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmJhcmVfY2FsbGBdLgAsaW5zdGFudGlhdGUcGG9yaWdpbgQUdmFsdWWVASRnYXNfbGltaXR1AVRzdG9yYWdlX2RlcG9zaXRfbGltaXRhBBBjb2Rl7RMQZGF0YRgQc2FsdPUE8RMMcCBJbnN0YW50aWF0ZSBhIG5ldyBjb250cmFjdC4ApCBTZWUgYFtjcmF0ZTo6UGFsbGV0OjpiYXJlX2luc3RhbnRpYXRlXWAuADBldGhfdHJhbnNhY3QECHR4/RMZFBBoIFBlcmZvcm0gYW4gRXRoZXJldW0gY2FsbC4AlCBEZXByZWNhdGVkIHVzZSBgdjJgIHZlcnNpb24gaW5zdGVhZC6wIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmRyeV9ydW5fZXRoX3RyYW5zYWN0YF0AYGV0aF90cmFuc2FjdF93aXRoX2NvbmZpZwgIdHj9Exhjb25maWclFBkUDGggUGVyZm9ybSBhbiBFdGhlcmV1bSBjYWxsLgCwIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmRyeV9ydW5fZXRoX3RyYW5zYWN0YF0ALHVwbG9hZF9jb2RlDBhvcmlnaW4EEGNvZGUYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdGEELRQM6CBVcGxvYWQgbmV3IGNvZGUgd2l0aG91dCBpbnN0YW50aWF0aW5nIGEgY29udHJhY3QgZnJvbSBpdC4ApCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpiYXJlX3VwbG9hZF9jb2RlYF0uACxnZXRfc3RvcmFnZQgcYWRkcmVzc/EEDGtleQg1FBS8IFF1ZXJ5IGEgZ2l2ZW4gc3RvcmFnZSBrZXkgaW4gYSBnaXZlbiBjb250cmFjdC4ATQEgUmV0dXJucyBgT2soU29tZShWZWM8dTg+KSlgIGlmIHRoZSBzdG9yYWdlIHZhbHVlIGV4aXN0cyB1bmRlciB0aGUgZ2l2ZW4ga2V5IGluIHRoZWEBIHNwZWNpZmllZCBhY2NvdW50IGFuZCBgT2soTm9uZSlgIGlmIGl0IGRvZXNuJ3QuIElmIHRoZSBhY2NvdW50IHNwZWNpZmllZCBieSB0aGUgYWRkcmVzcwkBIGRvZXNuJ3QgZXhpc3QsIG9yIGRvZXNuJ3QgaGF2ZSBhIGNvbnRyYWN0IHRoZW4gYEVycmAgaXMgcmV0dXJuZWQuAExnZXRfc3RvcmFnZV92YXJfa2V5CBxhZGRyZXNz8QQMa2V5GDUUFPggUXVlcnkgYSBnaXZlbiB2YXJpYWJsZS1zaXplZCBzdG9yYWdlIGtleSBpbiBhIGdpdmVuIGNvbnRyYWN0LgBNASBSZXR1cm5zIGBPayhTb21lKFZlYzx1OD4pKWAgaWYgdGhlIHN0b3JhZ2UgdmFsdWUgZXhpc3RzIHVuZGVyIHRoZSBnaXZlbiBrZXkgaW4gdGhlYQEgc3BlY2lmaWVkIGFjY291bnQgYW5kIGBPayhOb25lKWAgaWYgaXQgZG9lc24ndC4gSWYgdGhlIGFjY291bnQgc3BlY2lmaWVkIGJ5IHRoZSBhZGRyZXNzCQEgZG9lc24ndCBleGlzdCwgb3IgZG9lc24ndCBoYXZlIGEgY29udHJhY3QgdGhlbiBgRXJyYCBpcyByZXR1cm5lZC4ALHRyYWNlX2Jsb2NrCBRibG9jaxENGGNvbmZpZz0UURQYBQEgVHJhY2VzIHRoZSBleGVjdXRpb24gb2YgYW4gZW50aXJlIGJsb2NrIGFuZCByZXR1cm5zIGNhbGwgdHJhY2VzLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhlOCBwYXJlbnQgYmxvY2suAMggU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQmxvY2tCeU51bWJlcmAgZm9yIHVzYWdlLgAgdHJhY2VfdHgMFGJsb2NrEQ0gdHhfaW5kZXg4GGNvbmZpZz0UkRQY/CBUcmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiBhIHNwZWNpZmljIHRyYW5zYWN0aW9uIHdpdGhpbiBhIGJsb2NrLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhljCBwYXJlbnQgaGFzaCB1cCB0byB0aGUgdHJhbnNhY3Rpb24uAMAgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlVHJhbnNhY3Rpb25gIGZvciB1c2FnZS4AKHRyYWNlX2NhbGwICHR4/RMYY29uZmlnPRSVFAzAIERyeSBydW4gYW5kIHJldHVybiB0aGUgdHJhY2Ugb2YgdGhlIGdpdmVuIGNhbGwuAKQgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQ2FsbGAgZm9yIHVzYWdlLgAwYmxvY2tfYXV0aG9yAPEEBPggVGhlIGFkZHJlc3Mgb2YgdGhlIHZhbGlkYXRvciB0aGF0IHByb2R1Y2VkIHRoZSBjdXJyZW50IGJsb2NrLgAcYWRkcmVzcwQoYWNjb3VudF9pZATxBATMIEdldCB0aGUgSDE2MCBhZGRyZXNzIGFzc29jaWF0ZWQgdG8gdGhpcyBhY2NvdW50IGlkAChhY2NvdW50X2lkBBxhZGRyZXNz8QQEBNAgR2V0IHRoZSBhY2NvdW50IGlkIGFzc29jaWF0ZWQgdG8gdGhpcyBIMTYwIGFkZHJlc3MuAFxydW50aW1lX3BhbGxldHNfYWRkcmVzcwDxBAT0IFRoZSBhZGRyZXNzIHVzZWQgdG8gY2FsbCB0aGUgcnVudGltZSdzIHBhbGxldHMgZGlzcGF0Y2hhYmxlcwAQY29kZQQcYWRkcmVzc/EEGAQRASBUaGUgY29kZSBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgdGFraW5nIHByZS1jb21waWxlcyBpbnRvIGFjY291bnQuAFRuZXdfYmFsYW5jZV93aXRoX2R1c3QEHGJhbGFuY2X5BJkUBA0BIENvbnN0cnVjdCB0aGUgbmV3IGJhbGFuY2UgYW5kIGR1c3QgY29tcG9uZW50cyBvZiB0aGlzIEVWTSBiYWxhbmNlLgAEvCBUaGUgQVBJIHVzZWQgdG8gZHJ5LXJ1biBjb250cmFjdCBpbnRlcmFjdGlvbnMuBAAgIQulFAA=";
2
+
3
+ export { binMeta as default };