@parity/product-sdk-descriptors 0.11.0 → 0.13.0

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 (88) hide show
  1. package/README.md +3 -0
  2. package/chains/devnet-asset-hub/.papi/polkadot-api.json +1 -1
  3. package/chains/devnet-asset-hub/generated/dist/{devnet_asset_hub_metadata-DPRqW8eH.js → devnet_asset_hub_metadata-Ds1HrdOV.js} +1 -1
  4. package/chains/devnet-asset-hub/generated/dist/index.js +2 -2
  5. package/chains/devnet-individuality/.papi/polkadot-api.json +1 -1
  6. package/chains/devnet-individuality/generated/dist/{devnet_individuality_metadata-Bn9N9BNx.js → devnet_individuality_metadata-CPDaT0X3.js} +1 -1
  7. package/chains/devnet-individuality/generated/dist/index.js +2 -2
  8. package/chains/kusama-asset-hub/.papi/polkadot-api.json +1 -1
  9. package/chains/kusama-asset-hub/generated/dist/common-types.d.ts +114 -68
  10. package/chains/kusama-asset-hub/generated/dist/descriptors-DNAEasqY.js +25 -0
  11. package/chains/kusama-asset-hub/generated/dist/index.js +4 -4
  12. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub.d.ts +69 -32
  13. package/chains/kusama-asset-hub/generated/dist/{kusama_asset_hub_metadata-DXHUHPNj.js → kusama_asset_hub_metadata-BNhO8Mqj.js} +1 -1
  14. package/chains/kusama-asset-hub/generated/dist/metadataTypes-Cz8jP05k.js +3 -0
  15. package/chains/kusama-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  16. package/chains/paseo-asset-hub/.papi/polkadot-api.json +2 -2
  17. package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +1344 -360
  18. package/chains/paseo-asset-hub/generated/dist/descriptors-BAWSQ1Bl.js +25 -0
  19. package/chains/paseo-asset-hub/generated/dist/index.d.ts +1 -1
  20. package/chains/paseo-asset-hub/generated/dist/index.js +6 -6
  21. package/chains/paseo-asset-hub/generated/dist/metadataTypes-DQUR_0DF.js +3 -0
  22. package/chains/paseo-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  23. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub.d.ts +1250 -196
  24. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-CASqP59m.js +3 -0
  25. package/chains/paseo-bulletin/.papi/polkadot-api.json +1 -1
  26. package/chains/paseo-bulletin/generated/dist/common-types.d.ts +58 -54
  27. package/chains/paseo-bulletin/generated/dist/descriptors-B1VRTRQv.js +25 -0
  28. package/chains/paseo-bulletin/generated/dist/index.js +4 -4
  29. package/chains/paseo-bulletin/generated/dist/metadataTypes-DIFn96VK.js +3 -0
  30. package/chains/paseo-bulletin/generated/dist/metadataTypes.d.ts +1 -1
  31. package/chains/paseo-bulletin/generated/dist/paseo_bulletin.d.ts +111 -47
  32. package/chains/paseo-bulletin/generated/dist/paseo_bulletin_metadata-BXuTEONY.js +3 -0
  33. package/chains/paseo-individuality/.papi/polkadot-api.json +2 -2
  34. package/chains/paseo-individuality/generated/dist/common-types.d.ts +5487 -3342
  35. package/chains/paseo-individuality/generated/dist/descriptors-BjGIP9nH.js +25 -0
  36. package/chains/paseo-individuality/generated/dist/index.js +5 -5
  37. package/chains/paseo-individuality/generated/dist/metadataTypes-B2aDvcHG.js +3 -0
  38. package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +1 -1
  39. package/chains/paseo-individuality/generated/dist/paseo_individuality.d.ts +2553 -644
  40. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-CA3FRb1i.js +3 -0
  41. package/chains/polkadot-asset-hub/.papi/polkadot-api.json +1 -1
  42. package/chains/polkadot-asset-hub/generated/dist/common-types.d.ts +875 -178
  43. package/chains/polkadot-asset-hub/generated/dist/descriptors-B4K2pLTI.js +25 -0
  44. package/chains/polkadot-asset-hub/generated/dist/index.d.ts +1 -1
  45. package/chains/polkadot-asset-hub/generated/dist/index.js +5 -5
  46. package/chains/polkadot-asset-hub/generated/dist/metadataTypes-BgiH324c.js +3 -0
  47. package/chains/polkadot-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  48. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub.d.ts +733 -62
  49. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-DkUzze1o.js +3 -0
  50. package/chains/previewnet-asset-hub/.papi/polkadot-api.json +2 -2
  51. package/chains/previewnet-asset-hub/generated/dist/common-types.d.ts +309 -182
  52. package/chains/previewnet-asset-hub/generated/dist/descriptors-CQcPA8uu.js +25 -0
  53. package/chains/previewnet-asset-hub/generated/dist/index.js +5 -5
  54. package/chains/previewnet-asset-hub/generated/dist/metadataTypes-CzaLmQWq.js +3 -0
  55. package/chains/previewnet-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  56. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub.d.ts +293 -107
  57. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-DO5OICbZ.js +3 -0
  58. package/chains/previewnet-bulletin/.papi/polkadot-api.json +1 -1
  59. package/chains/previewnet-bulletin/generated/dist/index.js +1 -1
  60. package/chains/previewnet-individuality/.papi/polkadot-api.json +2 -2
  61. package/chains/previewnet-individuality/generated/dist/common-types.d.ts +371 -179
  62. package/chains/previewnet-individuality/generated/dist/descriptors-BSwriMav.js +25 -0
  63. package/chains/previewnet-individuality/generated/dist/index.js +5 -5
  64. package/chains/previewnet-individuality/generated/dist/metadataTypes-B2aDvcHG.js +3 -0
  65. package/chains/previewnet-individuality/generated/dist/metadataTypes.d.ts +1 -1
  66. package/chains/previewnet-individuality/generated/dist/previewnet_individuality.d.ts +573 -289
  67. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-C8MsIfh4.js +3 -0
  68. package/package.json +1 -1
  69. package/chains/kusama-asset-hub/generated/dist/descriptors-DISR3KIi.js +0 -25
  70. package/chains/kusama-asset-hub/generated/dist/metadataTypes-D7CQu3b0.js +0 -3
  71. package/chains/paseo-asset-hub/generated/dist/descriptors-D_6q-TZg.js +0 -25
  72. package/chains/paseo-asset-hub/generated/dist/metadataTypes-uABbUf26.js +0 -3
  73. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-BDERNxN0.js +0 -3
  74. package/chains/paseo-bulletin/generated/dist/descriptors-YjGUL06H.js +0 -25
  75. package/chains/paseo-bulletin/generated/dist/metadataTypes-BYRh30V_.js +0 -3
  76. package/chains/paseo-bulletin/generated/dist/paseo_bulletin_metadata-CWv0bj9A.js +0 -3
  77. package/chains/paseo-individuality/generated/dist/descriptors-BV8FuMxu.js +0 -25
  78. package/chains/paseo-individuality/generated/dist/metadataTypes-4OzMJJMF.js +0 -3
  79. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-Be34mrmF.js +0 -3
  80. package/chains/polkadot-asset-hub/generated/dist/descriptors-BwnkDiaI.js +0 -25
  81. package/chains/polkadot-asset-hub/generated/dist/metadataTypes--EQ8pxh1.js +0 -3
  82. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-CN_MTTeF.js +0 -3
  83. package/chains/previewnet-asset-hub/generated/dist/descriptors-D499B54L.js +0 -25
  84. package/chains/previewnet-asset-hub/generated/dist/metadataTypes-CKCAKys8.js +0 -3
  85. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-CPJf2_Ma.js +0 -3
  86. package/chains/previewnet-individuality/generated/dist/descriptors-BU9tL-VV.js +0 -25
  87. package/chains/previewnet-individuality/generated/dist/metadataTypes-D7WDCVlV.js +0 -3
  88. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-DEV5-BYY.js +0 -3
@@ -0,0 +1,3 @@
1
+ const binMeta = "bWV0YRDZEQAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZSxSdW50aW1lQ2FsbAAByBhTeXN0ZW0EACQBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3lzdGVtLCBSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAEQB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluU3lzdGVtLCBSdW50aW1lPgABACRUaW1lc3RhbXAEALQBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VGltZXN0YW1wLCBSdW50aW1lPgADADRQYXJhY2hhaW5JbmZvBAC8AckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFjaGFpbkluZm8sIFJ1bnRpbWU+AAQAIFByZWltYWdlBADAAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByZWltYWdlLCBSdW50aW1lPgAFACRTY2hlZHVsZXIEAMgBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NoZWR1bGVyLCBSdW50aW1lPgAGAChQYXJhbWV0ZXJzBADUAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFtZXRlcnMsIFJ1bnRpbWU+AAcAUE11bHRpQmxvY2tNaWdyYXRpb25zBAApAQHlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrTWlncmF0aW9ucywgUnVudGltZT4ACQAgQmFsYW5jZXMEAFEBAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJhbGFuY2VzLCBSdW50aW1lPgAKABxWZXN0aW5nBABpAQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxWZXN0aW5nLCBSdW50aW1lPgAOABhDbGFpbXMEAHEBAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENsYWltcywgUnVudGltZT4ADwAMRGFwBACVAQGhAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEYXAsIFJ1bnRpbWU+ABAARENvbGxhdG9yU2VsZWN0aW9uBACxAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb2xsYXRvclNlbGVjdGlvbiwgUnVudGltZT4AFQAcU2Vzc2lvbgQAtQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2Vzc2lvbiwgUnVudGltZT4AFgAkWGNtcFF1ZXVlBADBAQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxYY21wUXVldWUsIFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBADFAQHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQb2xrYWRvdFhjbSwgUnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAxQMBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q3VtdWx1c1hjbSwgUnVudGltZT4AIABEVG9LdXNhbWFYY21Sb3V0ZXIEAMkDAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFRvS3VzYW1hWGNtUm91dGVyLCBSdW50aW1lPgAiADBNZXNzYWdlUXVldWUEAM0DAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lc3NhZ2VRdWV1ZSwgUnVudGltZT4AIwBgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kBADVAwH1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQsIFJ1bnRpbWU+ACQAHFV0aWxpdHkEAOUDAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFV0aWxpdHksIFJ1bnRpbWU+ACgAIE11bHRpc2lnBAANBAG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aXNpZywgUnVudGltZT4AKQAUUHJveHkEABkEAakBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByb3h5LCBSdW50aW1lPgAqABxJbmRpY2VzBAAlBAGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxJbmRpY2VzLCBSdW50aW1lPgArABhBc3NldHMEACkEAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0cywgUnVudGltZT4AMgAcVW5pcXVlcwQANQQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VW5pcXVlcywgUnVudGltZT4AMwAQTmZ0cwQATQQBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TmZ0cywgUnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQArQQByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Rm9yZWlnbkFzc2V0cywgUnVudGltZT4ANQAoUG9vbEFzc2V0cwQAvQQBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9vbEFzc2V0cywgUnVudGltZT4ANgA8QXNzZXRDb252ZXJzaW9uBADBBAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldENvbnZlcnNpb24sIFJ1bnRpbWU+ADcADFBzbQQAyQQBoQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHNtLCBSdW50aW1lPgA4ACBUcmVhc3VyeQQA1QQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VHJlYXN1cnksIFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEAOEEAdUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbnZpY3Rpb25Wb3RpbmcsIFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQA9QQBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UmVmZXJlbmRhLCBSdW50aW1lPgA+ACRXaGl0ZWxpc3QEAAkFAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFdoaXRlbGlzdCwgUnVudGltZT4AQAAgQm91bnRpZXMEAA0FAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJvdW50aWVzLCBSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBAARBQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDaGlsZEJvdW50aWVzLCBSdW50aW1lPgBCACRBc3NldFJhdGUEABUFAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBAAdBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUFzc2V0Qm91bnRpZXMsIFJ1bnRpbWU+AEQASFN0YXRlVHJpZU1pZ3JhdGlvbgQAIQUB3QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3RhdGVUcmllTWlncmF0aW9uLCBSdW50aW1lPgBGADxOb21pbmF0aW9uUG9vbHMEADkFAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5vbWluYXRpb25Qb29scywgUnVudGltZT4AUAAkVm90ZXJMaXN0BABtBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxWb3Rlckxpc3QsIFJ1bnRpbWU+AFIAPFN0YWtpbmdSY0NsaWVudAQAcQUB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3Rha2luZ1JjQ2xpZW50LCBSdW50aW1lPgBUAEhNdWx0aUJsb2NrRWxlY3Rpb24EAJUFAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvbiwgUnVudGltZT4AVQBoTXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIEAMkFAf0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyLCBSdW50aW1lPgBWAGhNdWx0aUJsb2NrRWxlY3Rpb25VbnNpZ25lZAQAzQUB/QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQsIFJ1bnRpbWU+AFcAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAQApQYB9QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkLCBSdW50aW1lPgBYABxTdGFraW5nBACtBgGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdGFraW5nLCBSdW50aW1lPgBZABhSZXZpdmUEAPkGAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJldml2ZSwgUnVudGltZT4AWgAUQWhPcHMEAA0HAakBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFoT3BzLCBSdW50aW1lPgD+AAAkDDBmcmFtZV9zeXN0ZW0YcGFsbGV0EENhbGwEBFQAATAYcmVtYXJrBAEYcmVtYXJrGAEcVmVjPHU4PgAADGhNYWtlIHNvbWUgb24tY2hhaW4gcmVtYXJrLgCIQ2FuIGJlIGV4ZWN1dGVkIGJ5IGV2ZXJ5IGBvcmlnaW5gLjhzZXRfaGVhcF9wYWdlcwQBFHBhZ2VzKAEMdTY0AAEE+FNldCB0aGUgbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSBXZWJBc3NlbWJseSBlbnZpcm9ubWVudCdzIGhlYXAuIHNldF9jb2RlBAEQY29kZRgBHFZlYzx1OD4AAgRkU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlLlxzZXRfY29kZV93aXRob3V0X2NoZWNrcwQBEGNvZGUYARxWZWM8dTg+AAMQGQFTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUgd2l0aG91dCBkb2luZyBhbnkgY2hlY2tzIG9mIHRoZSBnaXZlbiBgY29kZWAuAFEBTm90ZSB0aGF0IHJ1bnRpbWUgdXBncmFkZXMgd2lsbCBub3QgcnVuIGlmIHRoaXMgaXMgY2FsbGVkIHdpdGggYSBub3QtaW5jcmVhc2luZyBzcGVjIHZlcnNpb24hLHNldF9zdG9yYWdlBAEUaXRlbXMsATRWZWM8S2V5VmFsdWU+AAQEaFNldCBzb21lIGl0ZW1zIG9mIHN0b3JhZ2UuMGtpbGxfc3RvcmFnZQQBEGtleXM0ASBWZWM8S2V5PgAFBHRLaWxsIHNvbWUgaXRlbXMgZnJvbSBzdG9yYWdlLixraWxsX3ByZWZpeAgBGHByZWZpeBgBDEtleQABHHN1YmtleXM4AQx1MzIABhARAUtpbGwgYWxsIHN0b3JhZ2UgaXRlbXMgd2l0aCBhIGtleSB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiBwcmVmaXguADkBKipOT1RFOioqIFdlIHJlbHkgb24gdGhlIFJvb3Qgb3JpZ2luIHRvIHByb3ZpZGUgdXMgdGhlIG51bWJlciBvZiBzdWJrZXlzIHVuZGVyPQF0aGUgcHJlZml4IHdlIGFyZSByZW1vdmluZyB0byBhY2N1cmF0ZWx5IGNhbGN1bGF0ZSB0aGUgd2VpZ2h0IG9mIHRoaXMgZnVuY3Rpb24uRHJlbWFya193aXRoX2V2ZW50BAEYcmVtYXJrGAEcVmVjPHU4PgAHBKRNYWtlIHNvbWUgb24tY2hhaW4gcmVtYXJrIGFuZCBlbWl0IGV2ZW50Lhxkb190YXNrBAEQdGFzazwBOFQ6OlJ1bnRpbWVUYXNrAAgARGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoQAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2hAARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZSxSdW50aW1lVGFzawABAABACDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAARAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUgBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhgAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFMAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlVAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzXAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR4AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABMDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIAUAETgE4ABABLHBhcmVudF9oZWFkUAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3RAAQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABQDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFQMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNYAURCVHJlZVNldDxWZWM8dTg+PgAAWAQgQlRyZWVTZXQEBFQBGAAEADQAAABcAAACYABgEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2hAATBIYXNoOjpPdXRwdXQAARhudW1iZXJkARhOdW1iZXIAAShzdGF0ZV9yb290QAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290QAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0aAEYRGlnZXN0AABkAAAGOABoEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2wBPFZlYzxEaWdlc3RJdGVtPgAAbAAAAnAAcBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHQBRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAdAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAdAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAAB0AAADBAAAAAwAeAQYT3B0aW9uBARUAXwBCBBOb25lAAAAEFNvbWUEAHwAAAEAAHwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4QBfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzmAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACEDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBiAAIATRmdWxsX21lc3NhZ2VzjAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzkAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAiAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACMAAACiACQAAAClACUCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaEABNHNwX2NvcmU6OkgyNTYAAJgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGcAAgBNGZ1bGxfbWVzc2FnZXOoATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOsAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACcAAAECKCkAKAMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACkCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACoAAACnACsAAACsACwAAAECKCUALQMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93uAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrgAAAYoALwMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuwAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBBDYWxsBARUAAEUNG5vdGVfcHJlaW1hZ2UEARRieXRlcxgBHFZlYzx1OD4AABB0UmVnaXN0ZXIgYSBwcmVpbWFnZSBvbi1jaGFpbi4AVQFJZiB0aGUgcHJlaW1hZ2Ugd2FzIHByZXZpb3VzbHkgcmVxdWVzdGVkLCBubyBmZWVzIG9yIGRlcG9zaXRzIGFyZSB0YWtlbiBmb3IgcHJvdmlkaW5nVQF0aGUgcHJlaW1hZ2UuIE90aGVyd2lzZSwgYSBkZXBvc2l0IGlzIHRha2VuIHByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiB0aGUgcHJlaW1hZ2UuPHVubm90ZV9wcmVpbWFnZQQBEGhhc2hAARxUOjpIYXNoAAEY3ENsZWFyIGFuIHVucmVxdWVzdGVkIHByZWltYWdlIGZyb20gdGhlIHJ1bnRpbWUgc3RvcmFnZS4A/ElmIGBsZW5gIGlzIHByb3ZpZGVkLCB0aGVuIGl0IHdpbGwgYmUgYSBtdWNoIGNoZWFwZXIgb3BlcmF0aW9uLgABAS0gYGhhc2hgOiBUaGUgaGFzaCBvZiB0aGUgcHJlaW1hZ2UgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yZS64LSBgbGVuYDogVGhlIGxlbmd0aCBvZiB0aGUgcHJlaW1hZ2Ugb2YgYGhhc2hgLkByZXF1ZXN0X3ByZWltYWdlBAEQaGFzaEABHFQ6Okhhc2gAAhBBAVJlcXVlc3QgYSBwcmVpbWFnZSBiZSB1cGxvYWRlZCB0byB0aGUgY2hhaW4gd2l0aG91dCBwYXlpbmcgYW55IGZlZXMgb3IgZGVwb3NpdHMuAFUBSWYgdGhlIHByZWltYWdlIHJlcXVlc3RzIGhhcyBhbHJlYWR5IGJlZW4gcHJvdmlkZWQgb24tY2hhaW4sIHdlIHVucmVzZXJ2ZSBhbnkgZGVwb3NpdDkBYSB1c2VyIG1heSBoYXZlIHBhaWQsIGFuZCB0YWtlIHRoZSBjb250cm9sIG9mIHRoZSBwcmVpbWFnZSBvdXQgb2YgdGhlaXIgaGFuZHMuSHVucmVxdWVzdF9wcmVpbWFnZQQBEGhhc2hAARxUOjpIYXNoAAMMvENsZWFyIGEgcHJldmlvdXNseSBtYWRlIHJlcXVlc3QgZm9yIGEgcHJlaW1hZ2UuAC0BTk9URTogVEhJUyBNVVNUIE5PVCBCRSBDQUxMRUQgT04gYGhhc2hgIE1PUkUgVElNRVMgVEhBTiBgcmVxdWVzdF9wcmVpbWFnZWAuOGVuc3VyZV91cGRhdGVkBAEYaGFzaGVzxAEwVmVjPFQ6Okhhc2g+AAQMvEVuc3VyZSB0aGF0IHRoZSBidWxrIG9mIHByZS1pbWFnZXMgaXMgdXBncmFkZWQuAD0BVGhlIGNhbGxlciBwYXlzIG5vIGZlZSBpZiBhdCBsZWFzdCA5MCUgb2YgcHJlLWltYWdlcyB3ZXJlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7EAAACQADIDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBBDYWxsBARUAAEoIHNjaGVkdWxlEAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPMAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAABHBBbm9ueW1vdXNseSBzY2hlZHVsZSBhIHRhc2suGGNhbmNlbAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAEQYQFDYW5jZWwgYSBzY2hlZHVsZWQgdGFzayAobmFtZWQgb3IgYW5vbnltb3VzKSwgYnkgcHJvdmlkaW5nIHRoZSBibG9jayBpdCBpcyBzY2hlZHVsZWQgZm9yGQFleGVjdXRpb24gaW4sIGFzIHdlbGwgYXMgdGhlIGluZGV4IG9mIHRoZSB0YXNrIGluIHRoYXQgYmxvY2sncyBhZ2VuZGEuADUBSW4gdGhlIGNhc2Ugb2YgYSBuYW1lZCB0YXNrLCBpdCB3aWxsIHJlbW92ZSBpdCBmcm9tIHRoZSBsb29rdXAgdGFibGUgYXMgd2VsbC44c2NoZWR1bGVfbmFtZWQUAQhpZAgBIFRhc2tOYW1lAAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPMAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACBFhTY2hlZHVsZSBhIG5hbWVkIHRhc2suMGNhbmNlbF9uYW1lZAQBCGlkCAEgVGFza05hbWUAAwR4Q2FuY2VsIGEgbmFtZWQgc2NoZWR1bGVkIHRhc2suOHNjaGVkdWxlX2FmdGVyEAEUYWZ0ZXI4AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljzAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABASoQW5vbnltb3VzbHkgc2NoZWR1bGUgYSB0YXNrIGFmdGVyIGEgZGVsYXkuUHNjaGVkdWxlX25hbWVkX2FmdGVyFAEIaWQIASBUYXNrTmFtZQABFGFmdGVyOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8wBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAUEkFNjaGVkdWxlIGEgbmFtZWQgdGFzayBhZnRlciBhIGRlbGF5LiRzZXRfcmV0cnkMARB0YXNr0AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEccmV0cmllcwwBCHU4AAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4ABjhZAVNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgdGFzayBzbyB0aGF0LCBpbiBjYXNlIGl0cyBzY2hlZHVsZWQgcnVuIGZhaWxzLCBpdCB3aWxsVQFiZSByZXRyaWVkIGFmdGVyIGBwZXJpb2RgIGJsb2NrcywgZm9yIGEgdG90YWwgYW1vdW50IG9mIGByZXRyaWVzYCByZXRyaWVzIG9yIHVudGlsIGl0JHN1Y2NlZWRzLgBVAVRhc2tzIHdoaWNoIG5lZWQgdG8gYmUgc2NoZWR1bGVkIGZvciBhIHJldHJ5IGFyZSBzdGlsbCBzdWJqZWN0IHRvIHdlaWdodCBtZXRlcmluZyBhbmRRAWFnZW5kYSBzcGFjZSwgc2FtZSBhcyBhIHJlZ3VsYXIgdGFzay4gSWYgYSBwZXJpb2RpYyB0YXNrIGZhaWxzLCBpdCB3aWxsIGJlIHNjaGVkdWxlZJBub3JtYWxseSB3aGlsZSB0aGUgdGFzayBpcyByZXRyeWluZy4AUQFUYXNrcyBzY2hlZHVsZWQgYXMgYSByZXN1bHQgb2YgYSByZXRyeSBmb3IgYSBwZXJpb2RpYyB0YXNrIGFyZSB1bm5hbWVkLCBub24tcGVyaW9kaWM9AWNsb25lcyBvZiB0aGUgb3JpZ2luYWwgdGFzay4gVGhlaXIgcmV0cnkgY29uZmlndXJhdGlvbiB3aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGVNAW9yaWdpbmFsIHRhc2sncyBjb25maWd1cmF0aW9uLCBidXQgd2lsbCBoYXZlIGEgbG93ZXIgdmFsdWUgZm9yIGByZW1haW5pbmdgIHRoYW4gdGhlZG9yaWdpbmFsIGB0b3RhbF9yZXRyaWVzYC4ALQFUaGlzIGNhbGwgKipjYW5ub3QqKiBiZSB1c2VkIHRvIHNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgbmFtZWQgdGFzay48c2V0X3JldHJ5X25hbWVkDAEIaWQIASBUYXNrTmFtZQABHHJldHJpZXMMAQh1OAABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAc4XQFTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIG5hbWVkIHRhc2sgc28gdGhhdCwgaW4gY2FzZSBpdHMgc2NoZWR1bGVkIHJ1biBmYWlscywgaXRdAXdpbGwgYmUgcmV0cmllZCBhZnRlciBgcGVyaW9kYCBibG9ja3MsIGZvciBhIHRvdGFsIGFtb3VudCBvZiBgcmV0cmllc2AgcmV0cmllcyBvciB1bnRpbDBpdCBzdWNjZWVkcy4AVQFUYXNrcyB3aGljaCBuZWVkIHRvIGJlIHNjaGVkdWxlZCBmb3IgYSByZXRyeSBhcmUgc3RpbGwgc3ViamVjdCB0byB3ZWlnaHQgbWV0ZXJpbmcgYW5kUQFhZ2VuZGEgc3BhY2UsIHNhbWUgYXMgYSByZWd1bGFyIHRhc2suIElmIGEgcGVyaW9kaWMgdGFzayBmYWlscywgaXQgd2lsbCBiZSBzY2hlZHVsZWSQbm9ybWFsbHkgd2hpbGUgdGhlIHRhc2sgaXMgcmV0cnlpbmcuAFEBVGFza3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0IG9mIGEgcmV0cnkgZm9yIGEgcGVyaW9kaWMgdGFzayBhcmUgdW5uYW1lZCwgbm9uLXBlcmlvZGljPQFjbG9uZXMgb2YgdGhlIG9yaWdpbmFsIHRhc2suIFRoZWlyIHJldHJ5IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlTQFvcmlnaW5hbCB0YXNrJ3MgY29uZmlndXJhdGlvbiwgYnV0IHdpbGwgaGF2ZSBhIGxvd2VyIHZhbHVlIGZvciBgcmVtYWluaW5nYCB0aGFuIHRoZWRvcmlnaW5hbCBgdG90YWxfcmV0cmllc2AuAA0BVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gc2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrLjBjYW5jZWxfcmV0cnkEARB0YXNr0AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAgEqFJlbW92ZXMgdGhlIHJldHJ5IGNvbmZpZ3VyYXRpb24gb2YgYSB0YXNrLkhjYW5jZWxfcmV0cnlfbmFtZWQEAQhpZAgBIFRhc2tOYW1lAAkEvENhbmNlbCB0aGUgcmV0cnkgY29uZmlndXJhdGlvbiBvZiBhIG5hbWVkIHRhc2suBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLswEGE9wdGlvbgQEVAHQAQgQTm9uZQAAABBTb21lBADQAAABAADQAAAECDg4ANQMRHBhbGxldF9wYXJhbWV0ZXJzGHBhbGxldBBDYWxsBARUAAEENHNldF9wYXJhbWV0ZXIEASRrZXlfdmFsdWXYAVBUOjpSdW50aW1lUGFyYW1ldGVycwAAEHRTZXQgdGhlIHZhbHVlIG9mIGEgcGFyYW1ldGVyLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgYEFkbWluT3JpZ2luYCBmb3IgdGhlIGdpdmVuIGBrZXlgLiBWYWx1ZXMgYmWIZGVsZXRlZCBieSBzZXR0aW5nIHRoZW0gdG8gYE5vbmVgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7YCGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZURSdW50aW1lUGFyYW1ldGVycwABDDxTdGFraW5nRWxlY3Rpb24EANwBsGR5bmFtaWNfcGFyYW1zOjpzdGFraW5nX2VsZWN0aW9uOjpQYXJhbWV0ZXJzAAAAJFNjaGVkdWxlcgQABQEBlGR5bmFtaWNfcGFyYW1zOjpzY2hlZHVsZXI6OlBhcmFtZXRlcnMAAQAwTWVzc2FnZVF1ZXVlBAAZAQGkZHluYW1pY19wYXJhbXM6Om1lc3NhZ2VfcXVldWU6OlBhcmFtZXRlcnMAAgAA3BBoYXNzZXRfaHViX3BvbGthZG90X3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihQYXJhbWV0ZXJzAAEcLFNpZ25lZFBoYXNlCADgASxTaWduZWRQaGFzZQAA5AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwgA6AFQTWF4U2lnbmVkU3VibWlzc2lvbnMAAOQBLE9wdGlvbjx1MzI+AAEANFVuc2lnbmVkUGhhc2UIAOwBNFVuc2lnbmVkUGhhc2UAAOQBTE9wdGlvbjxCbG9ja051bWJlcj4AAgAoTWluZXJQYWdlcwgA8AEoTWluZXJQYWdlcwAA5AEsT3B0aW9uPHUzMj4AAwBETWF4RWxlY3RpbmdWb3RlcnMIAPQBRE1heEVsZWN0aW5nVm90ZXJzAADkASxPcHRpb248dTMyPgAEAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrCAD4AVhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAADkASxPcHRpb248dTMyPgAFADhNYXhFcmFEdXJhdGlvbggA/AE4TWF4RXJhRHVyYXRpb24AAAEBASxPcHRpb248dTY0PgAGAADgEGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uLFNpZ25lZFBoYXNlAAAAAOQEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAADoEGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uUE1heFNpZ25lZFN1Ym1pc3Npb25zAAAAAOwQaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb240VW5zaWduZWRQaGFzZQAAAADwEGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uKE1pbmVyUGFnZXMAAAAA9BBoYXNzZXRfaHViX3BvbGthZG90X3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbkRNYXhFbGVjdGluZ1ZvdGVycwAAAAD4EGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uWFRhcmdldFNuYXBzaG90UGVyQmxvY2sAAAAA/BBoYXNzZXRfaHViX3BvbGthZG90X3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjhNYXhFcmFEdXJhdGlvbgAAAAABAQQYT3B0aW9uBARUASgBCBBOb25lAAAAEFNvbWUEACgAAAEAAAUBEGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXIoUGFyYW1ldGVycwABCFBNYXhTY2hlZHVsZWRQZXJCbG9jawgACQEBUE1heFNjaGVkdWxlZFBlckJsb2NrAADkASxPcHRpb248dTMyPgAAADRNYXhpbXVtV2VpZ2h0CAANAQE0TWF4aW11bVdlaWdodAAAEQEBOE9wdGlvbjxXZWlnaHQ+AAEAAAkBEGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXJQTWF4U2NoZWR1bGVkUGVyQmxvY2sAAAAADQEQaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjRNYXhpbXVtV2VpZ2h0AAAAABEBBBhPcHRpb24EBFQBFQEBCBBOb25lAAAAEFNvbWUEABUBAAABAAAVAQwoc3Bfd2VpZ2h0cyR3ZWlnaHRfdjIYV2VpZ2h0AAAIASByZWZfdGltZbgBDHU2NAABKHByb29mX3NpemW4AQx1NjQAABkBEGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlKFBhcmFtZXRlcnMAAQg8TWF4T25Jbml0V2VpZ2h0CAAdAQE8TWF4T25Jbml0V2VpZ2h0AAAhAQFYT3B0aW9uPE9wdGlvbjxXZWlnaHQ+PgAAADxNYXhPbklkbGVXZWlnaHQIACUBATxNYXhPbklkbGVXZWlnaHQAACEBAVhPcHRpb248T3B0aW9uPFdlaWdodD4+AAEAAB0BEGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlPE1heE9uSW5pdFdlaWdodAAAAAAhAQQYT3B0aW9uBARUAREBAQgQTm9uZQAAABBTb21lBAARAQAAAQAAJQEQaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8TWF4T25JZGxlV2VpZ2h0AAAAACkBDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29yLQEBTE9wdGlvbjxDdXJzb3JPZjxUPj4AABRdAUFsbG93cyByb290IHRvIHNldCBhIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0LCBzdG9wIG9yIGZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBJAVNob3VsZCBub3JtYWxseSBub3QgYmUgbmVlZGVkIGFuZCBpcyBvbmx5IGluIHBsYWNlIGFzIGVtZXJnZW5jeSBtZWFzdXJlLiBOb3RlIHRoYXQFAXJlc3RhcnRpbmcgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGluIHRoaXMgbWFubmVyIHdpbGwgbm90IGNhbGwgdGhlLQFbYE1pZ3JhdGlvblN0YXR1c0hhbmRsZXI6OnN0YXJ0ZWRgXSBob29rIG9yIGVtaXQgYW4gYFVwZ3JhZGVTdGFydGVkYCBldmVudC5cZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvcj0BAVhPcHRpb248UmF3Q3Vyc29yT2Y8VD4+AAEoc3RhcnRlZF9hdOQBZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4AARhZAUFsbG93cyByb290IHRvIHNldCBhbiBhY3RpdmUgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQvZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEUBVGhpcyBpcyBhbiBlZGdlLWNhc2UgdmVyc2lvbiBvZiBbYFNlbGY6OmZvcmNlX3NldF9jdXJzb3JgXSB0aGF0IGFsbG93cyB0byBzZXQgdGhlYQFgc3RhcnRlZF9hdGAgdmFsdWUgdG8gdGhlIG5leHQgYmxvY2sgbnVtYmVyLiBPdGhlcndpc2UgdGhpcyB3b3VsZCBub3QgYmUgcG9zc2libGUsIHNpbmNlRQFgZm9yY2Vfc2V0X2N1cnNvcmAgdGFrZXMgYW4gYWJzb2x1dGUgYmxvY2sgbnVtYmVyLiBTZXR0aW5nIGBzdGFydGVkX2F0YCB0byBgTm9uZWABAWluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBwbHVzIG9uZSBzaG91bGQgYmUgdXNlZC5IZm9yY2Vfb25ib2FyZF9tYm1zAAIQoEZvcmNlcyB0aGUgb25ib2FyZGluZyBvZiB0aGUgbWlncmF0aW9ucy4AXQFUaGlzIHByb2Nlc3MgaGFwcGVucyBhdXRvbWF0aWNhbGx5IG9uIGEgcnVudGltZSB1cGdyYWRlLiBJdCBpcyBpbiBwbGFjZSBhcyBhbiBlbWVyZ2VuY3n8bWVhc3VyZW1lbnQuIFRoZSBjdXJzb3IgbmVlZHMgdG8gYmUgYE5vbmVgIGZvciB0aGlzIHRvIHN1Y2NlZWQuOGNsZWFyX2hpc3RvcmljBAEgc2VsZWN0b3JBAQGgSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3I8SWRlbnRpZmllck9mPFQ+PgADFGhDbGVhcnMgdGhlIGBIaXN0b3JpY2Agc2V0LgANAWBtYXBfY3Vyc29yYCBtdXN0IGJlIHNldCB0byB0aGUgbGFzdCB2YWx1ZSB0aGF0IHdhcyByZXR1cm5lZCBieSB0aGVdAWBIaXN0b3JpY0NsZWFyZWRgIGV2ZW50LiBUaGUgZmlyc3QgdGltZSBgTm9uZWAgY2FuIGJlIHVzZWQuIGBsaW1pdGAgbXVzdCBiZSBjaG9zZW4gaW4gYah3YXkgdGhhdCB3aWxsIHJlc3VsdCBpbiBhIHNlbnNpYmxlIHdlaWdodC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuLQEEGE9wdGlvbgQEVAExAQEIEE5vbmUAAAAQU29tZQQAMQEAAAEAADEBCERwYWxsZXRfbWlncmF0aW9uczxNaWdyYXRpb25DdXJzb3IIGEN1cnNvcgE1ASxCbG9ja051bWJlcgE4AQgYQWN0aXZlBAA5AQGEQWN0aXZlQ3Vyc29yPEN1cnNvciwgQmxvY2tOdW1iZXI+AAAAFFN0dWNrAAEAADUBDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAOQEIRHBhbGxldF9taWdyYXRpb25zMEFjdGl2ZUN1cnNvcggYQ3Vyc29yATUBLEJsb2NrTnVtYmVyATgADAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3I9AQE4T3B0aW9uPEN1cnNvcj4AAShzdGFydGVkX2F0OAEsQmxvY2tOdW1iZXIAAD0BBBhPcHRpb24EBFQBNQEBCBBOb25lAAAAEFNvbWUEADUBAAABAABBAQhEcGFsbGV0X21pZ3JhdGlvbnNcSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3IECElkAUUBAQggU3BlY2lmaWMEAEkBARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXTkASxPcHRpb248dTMyPgABPHByZXZpb3VzX2N1cnNvck0BATxPcHRpb248VmVjPHU4Pj4AAQAARQEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABJAQAAAkUBAE0BBBhPcHRpb24EBFQBGAEIEE5vbmUAAAAQU29tZQQAGAAAAQAAUQEMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQQQ2FsbAgEVAAESQABJFB0cmFuc2Zlcl9hbGxvd19kZWF0aAgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlVQEBKFQ6OkJhbGFuY2UAABzUVHJhbnNmZXIgc29tZSBsaXF1aWQgZnJlZSBiYWxhbmNlIHRvIGFub3RoZXIgYWNjb3VudC4ANQFgdHJhbnNmZXJfYWxsb3dfZGVhdGhgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLhEBSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHSwb2YgdGhlIHRyYW5zZmVyLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgdHJhbnNhY3Rvci44Zm9yY2VfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlVQEBKFQ6OkJhbGFuY2UAAghhAUV4YWN0bHkgYXMgYHRyYW5zZmVyX2FsbG93X2RlYXRoYCwgZXhjZXB0IHRoZSBvcmlnaW4gbXVzdCBiZSByb290IGFuZCB0aGUgc291cmNlIGFjY291bnREbWF5IGJlIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlVQEBKFQ6OkJhbGFuY2UAAxhZAVNhbWUgYXMgdGhlIFtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXSBjYWxsLCBidXQgd2l0aCBhIGNoZWNrIHRoYXQgdGhlIHRyYW5zZmVyIHdpbGwgbm90YGtpbGwgdGhlIG9yaWdpbiBhY2NvdW50LgDoOTklIG9mIHRoZSB0aW1lIHlvdSB3YW50IFtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXSBpbnN0ZWFkLgDwW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdOiBzdHJ1Y3QuUGFsbGV0Lmh0bWwjbWV0aG9kLnRyYW5zZmVyMHRyYW5zZmVyX2FsbAgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVdAQEQYm9vbAAEPAUBVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdGEBYW55IGxvY2tlZCwgcmVzZXJ2ZWQsIG9yIGV4aXN0ZW50aWFsIGRlcG9zaXRzICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuAKAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYWNjb3VudCB0byBiZSBraWxsZWQgKGZhbHNlKSwgb3JZASAgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQsIHdoaWNoIHdpbGwgZ3VhcmFudGVlIHRvnCAga2VlcCB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUgKHRydWUpLjxmb3JjZV91bnJlc2VydmUIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFkBAShUOjpCYWxhbmNlAAUMsFVucmVzZXJ2ZSBzb21lIGJhbGFuY2UgZnJvbSBhIHVzZXIgYnkgZm9yY2UuAGxDYW4gb25seSBiZSBjYWxsZWQgYnkgUk9PVC5AdXBncmFkZV9hY2NvdW50cwQBDHdob2EBAURWZWM8VDo6QWNjb3VudElkPgAGIHBVcGdyYWRlIGEgc3BlY2lmaWVkIGFjY291bnQuAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1cGdyYWRlZC4AVQFUaGlzIHdpbGwgd2FpdmUgdGhlIHRyYW5zYWN0aW9uIGZlZSBpZiBhdCBsZWFzdCBhbGwgYnV0IDEwJSBvZiB0aGUgYWNjb3VudHMgbmVlZGVkIHRvQQFiZSB1cGdyYWRlZC4gKFdlIGxldCBzb21lIG5vdCBoYXZlIHRvIGJlIHVwZ3JhZGVkIGp1c3QgaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHRoZVhwb3NzaWJpbGl0eSBvZiBjaHVybikuRGZvcmNlX3NldF9iYWxhbmNlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBuZXdfZnJlZVUBAShUOjpCYWxhbmNlAAgMrFNldCB0aGUgcmVndWxhciBiYWxhbmNlIG9mIGEgZ2l2ZW4gYWNjb3VudC4AsFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBpcyBgcm9vdGAubGZvcmNlX2FkanVzdF90b3RhbF9pc3N1YW5jZQgBJGRpcmVjdGlvbmUBAUxBZGp1c3RtZW50RGlyZWN0aW9uAAEUZGVsdGFVAQEoVDo6QmFsYW5jZQAJFLhBZGp1c3QgdGhlIHRvdGFsIGlzc3VhbmNlIGluIGEgc2F0dXJhdGluZyB3YXkuAPxDYW4gb25seSBiZSBjYWxsZWQgYnkgcm9vdCBhbmQgYWx3YXlzIG5lZWRzIGEgcG9zaXRpdmUgYGRlbHRhYC4AJCMgRXhhbXBsZRBidXJuCAEUdmFsdWVVAQEoVDo6QmFsYW5jZQABKGtlZXBfYWxpdmVdAQEQYm9vbAAKHPxCdXJuIHRoZSBzcGVjaWZpZWQgbGlxdWlkIGZyZWUgYmFsYW5jZSBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudC4AJQFJZiB0aGUgb3JpZ2luJ3MgYWNjb3VudCBlbmRzIHVwIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0CQFvZiB0aGUgYnVybiBhbmQgYGtlZXBfYWxpdmVgIGlzIGZhbHNlLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AUQFVbmxpa2Ugc2VuZGluZyBmdW5kcyB0byBhIF9idXJuXyBhZGRyZXNzLCB3aGljaCBtZXJlbHkgbWFrZXMgdGhlIGZ1bmRzIGluYWNjZXNzaWJsZSwhAXRoaXMgYGJ1cm5gIG9wZXJhdGlvbiB3aWxsIHJlZHVjZSB0b3RhbCBpc3N1YW5jZSBieSB0aGUgYW1vdW50IF9idXJuZWRfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5VAQAABlkBAFkBAAAFBwBdAQAABQAAYQEAAAIEAGUBDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXNMQWRqdXN0bWVudERpcmVjdGlvbgABCCBJbmNyZWFzZQAAACBEZWNyZWFzZQABAABpAQw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0EENhbGwEBFQAARgQdmVzdAAAJLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiB0aGUgc2VuZGVyIGFjY291bnQuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGZ1bmRzIHN0aWxsZGxvY2tlZCB1bmRlciB0aGlzIHBhbGxldC4A0EVtaXRzIGVpdGhlciBgVmVzdGluZ0NvbXBsZXRlZGAgb3IgYFZlc3RpbmdVcGRhdGVkYC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuKHZlc3Rfb3RoZXIEARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiBhIGB0YXJnZXRgIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB3aG9zZSB2ZXN0ZWQgZnVuZHMgc2hvdWxkIGJlIHVubG9ja2VkLiBNdXN0IGhhdmUgZnVuZHMgc3RpbGxkbG9ja2VkIHVuZGVyIHRoaXMgcGFsbGV0LgDQRW1pdHMgZWl0aGVyIGBWZXN0aW5nQ29tcGxldGVkYCBvciBgVmVzdGluZ1VwZGF0ZWRgLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48dmVzdGVkX3RyYW5zZmVyCAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZW0BAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgACNGRDcmVhdGUgYSB2ZXN0ZWQgdHJhbnNmZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AzC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHJlY2VpdmluZyB0aGUgdmVzdGVkIGZ1bmRzLvAtIGBzY2hlZHVsZWA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2Zlci4AXEVtaXRzIGBWZXN0aW5nQ3JlYXRlZGAuAPxOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jay4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuVGZvcmNlX3Zlc3RlZF90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZW0BAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgADOGBGb3JjZSBhIHZlc3RlZCB0cmFuc2Zlci4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4A6C0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHdob3NlIGZ1bmRzIHNob3VsZCBiZSB0cmFuc2ZlcnJlZC4RAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRoYXQgc2hvdWxkIGJlIHRyYW5zZmVycmVkIHRoZSB2ZXN0ZWQgZnVuZHMu8C0gYHNjaGVkdWxlYDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zZmVyLgBcRW1pdHMgYFZlc3RpbmdDcmVhdGVkYC4A/E5PVEU6IFRoaXMgd2lsbCB1bmxvY2sgYWxsIHNjaGVkdWxlcyB0aHJvdWdoIHRoZSBjdXJyZW50IGJsb2NrLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48bWVyZ2Vfc2NoZWR1bGVzCAE8c2NoZWR1bGUxX2luZGV4OAEMdTMyAAE8c2NoZWR1bGUyX2luZGV4OAEMdTMyAARUXQFNZXJnZSB0d28gdmVzdGluZyBzY2hlZHVsZXMgdG9nZXRoZXIsIGNyZWF0aW5nIGEgbmV3IHZlc3Rpbmcgc2NoZWR1bGUgdGhhdCB1bmxvY2tzIG92ZXJVAXRoZSBoaWdoZXN0IHBvc3NpYmxlIHN0YXJ0IGFuZCBlbmQgYmxvY2tzLiBJZiBib3RoIHNjaGVkdWxlcyBoYXZlIGFscmVhZHkgc3RhcnRlZCB0aGVZAWN1cnJlbnQgYmxvY2sgd2lsbCBiZSB1c2VkIGFzIHRoZSBzY2hlZHVsZSBzdGFydDsgd2l0aCB0aGUgY2F2ZWF0IHRoYXQgaWYgb25lIHNjaGVkdWxlXQFpcyBmaW5pc2hlZCBieSB0aGUgY3VycmVudCBibG9jaywgdGhlIG90aGVyIHdpbGwgYmUgdHJlYXRlZCBhcyB0aGUgbmV3IG1lcmdlZCBzY2hlZHVsZSwsdW5tb2RpZmllZC4A+E5PVEU6IElmIGBzY2hlZHVsZTFfaW5kZXggPT0gc2NoZWR1bGUyX2luZGV4YCB0aGlzIGlzIGEgbm8tb3AuQQFOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jayBwcmlvciB0byBtZXJnaW5nLmEBTk9URTogSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBlbmRlZCBieSB0aGUgY3VycmVudCBibG9jaywgbm8gbmV3IHNjaGVkdWxlIHdpbGwgYmUgY3JlYXRlZGRhbmQgYm90aCB3aWxsIGJlIHJlbW92ZWQuAGxNZXJnZWQgc2NoZWR1bGUgYXR0cmlidXRlczo1AS0gYHN0YXJ0aW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuc3RhcnRpbmdfYmxvY2ssIHNjaGVkdWxlZDIuc3RhcnRpbmdfYmxvY2ssSCAgY3VycmVudF9ibG9jaylgLiEBLSBgZW5kaW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuZW5kaW5nX2Jsb2NrLCBzY2hlZHVsZTIuZW5kaW5nX2Jsb2NrKWAuWQEtIGBsb2NrZWRgOiBgc2NoZWR1bGUxLmxvY2tlZF9hdChjdXJyZW50X2Jsb2NrKSArIHNjaGVkdWxlMi5sb2NrZWRfYXQoY3VycmVudF9ibG9jaylgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAOgtIGBzY2hlZHVsZTFfaW5kZXhgOiBpbmRleCBvZiB0aGUgZmlyc3Qgc2NoZWR1bGUgdG8gbWVyZ2Uu7C0gYHNjaGVkdWxlMl9pbmRleGA6IGluZGV4IG9mIHRoZSBzZWNvbmQgc2NoZWR1bGUgdG8gbWVyZ2UudGZvcmNlX3JlbW92ZV92ZXN0aW5nX3NjaGVkdWxlCAEYdGFyZ2V0AAGMPFQ6Okxvb2t1cCBhcyBTdGF0aWNMb29rdXA+OjpTb3VyY2UAAThzY2hlZHVsZV9pbmRleDgBDHUzMgAFGHxGb3JjZSByZW1vdmUgYSB2ZXN0aW5nIHNjaGVkdWxlAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAMgtIGB0YXJnZXRgOiBBbiBhY2NvdW50IHRoYXQgaGFzIGEgdmVzdGluZyBzY2hlZHVsZRUBLSBgc2NoZWR1bGVfaW5kZXhgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBpbmRleCB0aGF0IHNob3VsZCBiZSByZW1vdmVkBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLm0BDDhwYWxsZXRfdmVzdGluZzB2ZXN0aW5nX2luZm8sVmVzdGluZ0luZm8IHEJhbGFuY2UBWQEsQmxvY2tOdW1iZXIBOAAMARhsb2NrZWRZAQEcQmFsYW5jZQABJHBlcl9ibG9ja1kBARxCYWxhbmNlAAE4c3RhcnRpbmdfYmxvY2s4ASxCbG9ja051bWJlcgAAcQEQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltcxhwYWxsZXQQQ2FsbAQEVAABFBRjbGFpbQgBEGRlc3QEATBUOjpBY2NvdW50SWQAAUhldGhlcmV1bV9zaWduYXR1cmV1AQE4RWNkc2FTaWduYXR1cmUAAGCITWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBQVW5zaWduZWQgVmFsaWRhdGlvbjoFAUEgY2FsbCB0byBjbGFpbSBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNpZ25hdHVyZSBwcm92aWRlZCBtYXRjaGVzfHRoZSBleHBlY3RlZCBzaWduZWQgbWVzc2FnZSBvZjoAaD4gRXRoZXJldW0gU2lnbmVkIE1lc3NhZ2U6lD4gKGNvbmZpZ3VyZWQgcHJlZml4IHN0cmluZykoYWRkcmVzcykApGFuZCBgYWRkcmVzc2AgbWF0Y2hlcyB0aGUgYGRlc3RgIGFjY291bnQuACxQYXJhbWV0ZXJzOtgtIGBkZXN0YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgdG8gcGF5b3V0IHRoZSBjbGFpbS5dAS0gYGV0aGVyZXVtX3NpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgYW4gZXRoZXJldW0gc2lnbmVkIG1lc3NhZ2UgbWF0Y2hpbmcgdGhlIGZvcm1hdEggIGRlc2NyaWJlZCBhYm92ZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLuBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gdmFsaWRhdGUgdW5zaWduZWQgYGNsYWltYCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4obWludF9jbGFpbRABDHdob30BATxFdGhlcmV1bUFkZHJlc3MAARR2YWx1ZVkBATBCYWxhbmNlT2Y8VD4AAUB2ZXN0aW5nX3NjaGVkdWxlgQEB3E9wdGlvbjwoQmFsYW5jZU9mPFQ+LCBCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+KT4AASRzdGF0ZW1lbnSJAQFUT3B0aW9uPFN0YXRlbWVudEtpbmQ+AAE8hE1pbnQgYSBuZXcgY2xhaW0gdG8gY29sbGVjdCBET1RzLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgAsUGFyYW1ldGVyczrwLSBgd2hvYDogVGhlIEV0aGVyZXVtIGFkZHJlc3MgYWxsb3dlZCB0byBjb2xsZWN0IHRoaXMgY2xhaW0uzC0gYHZhbHVlYDogVGhlIG51bWJlciBvZiBET1RzIHRoYXQgd2lsbCBiZSBjbGFpbWVkLgkBLSBgdmVzdGluZ19zY2hlZHVsZWA6IEFuIG9wdGlvbmFsIHZlc3Rpbmcgc2NoZWR1bGUgZm9yIHRoZXNlIERPVHMuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy4dAVdlIGFzc3VtZSB3b3JzdCBjYXNlIHRoYXQgYm90aCB2ZXN0aW5nIGFuZCBzdGF0ZW1lbnQgaXMgYmVpbmcgaW5zZXJ0ZWQuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PjBjbGFpbV9hdHRlc3QMARBkZXN0BAEwVDo6QWNjb3VudElkAAFIZXRoZXJldW1fc2lnbmF0dXJldQEBOEVjZHNhU2lnbmF0dXJlAAEkc3RhdGVtZW50GAEcVmVjPHU4PgACbORNYWtlIGEgY2xhaW0gdG8gY29sbGVjdCB5b3VyIERPVHMgYnkgc2lnbmluZyBhIHN0YXRlbWVudC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUFVuc2lnbmVkIFZhbGlkYXRpb246KQFBIGNhbGwgdG8gYGNsYWltX2F0dGVzdGAgaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzaWduYXR1cmUgcHJvdmlkZWQgbWF0Y2hlc3x0aGUgZXhwZWN0ZWQgc2lnbmVkIG1lc3NhZ2Ugb2Y6AGg+IEV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOsA+IChjb25maWd1cmVkIHByZWZpeCBzdHJpbmcpKGFkZHJlc3MpKHN0YXRlbWVudCkASQFhbmQgYGFkZHJlc3NgIG1hdGNoZXMgdGhlIGBkZXN0YCBhY2NvdW50OyB0aGUgYHN0YXRlbWVudGAgbXVzdCBtYXRjaCB0aGF0IHdoaWNoIGlzwGV4cGVjdGVkIGFjY29yZGluZyB0byB5b3VyIHB1cmNoYXNlIGFycmFuZ2VtZW50LgAsUGFyYW1ldGVyczrYLSBgZGVzdGA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IHRvIHBheW91dCB0aGUgY2xhaW0uXQEtIGBldGhlcmV1bV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIGFuIGV0aGVyZXVtIHNpZ25lZCBtZXNzYWdlIG1hdGNoaW5nIHRoZSBmb3JtYXRIICBkZXNjcmliZWQgYWJvdmUuOQEtIGBzdGF0ZW1lbnRgOiBUaGUgaWRlbnRpdHkgb2YgdGhlIHN0YXRlbWVudCB3aGljaCBpcyBiZWluZyBhdHRlc3RlZCB0byBpbiB0aGUwICBzaWduYXR1cmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy78V2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIHZhbGlkYXRlIHVuc2lnbmVkIGBjbGFpbV9hdHRlc3RgIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PhhhdHRlc3QEASRzdGF0ZW1lbnQYARxWZWM8dTg+AANM9EF0dGVzdCB0byBhIHN0YXRlbWVudCwgbmVlZGVkIHRvIGZpbmFsaXplIHRoZSBjbGFpbXMgcHJvY2Vzcy4AGQFXQVJOSU5HOiBJbnNlY3VyZSB1bmxlc3MgeW91ciBjaGFpbiBpbmNsdWRlcyBgUHJldmFsaWRhdGVBdHRlc3RzYCBhcyBhXGBUcmFuc2FjdGlvbkV4dGVuc2lvbmAuAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGF0dGVzdCBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNlbmRlciBoYXMgYSBgUHJlY2xhaW1gIHJlZ2lzdGVyZWT0YW5kIHByb3ZpZGVzIGEgYHN0YXRlbWVudGAgd2hpY2ggaXMgZXhwZWN0ZWQgZm9yIHRoZSBhY2NvdW50LgAsUGFyYW1ldGVyczo5AS0gYHN0YXRlbWVudGA6IFRoZSBpZGVudGl0eSBvZiB0aGUgc3RhdGVtZW50IHdoaWNoIGlzIGJlaW5nIGF0dGVzdGVkIHRvIGluIHRoZTAgIHNpZ25hdHVyZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLvBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gZG8gcHJlLXZhbGlkYXRpb24gb24gYGF0dGVzdGAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+KG1vdmVfY2xhaW0MAQxvbGR9AQE8RXRoZXJldW1BZGRyZXNzAAEMbmV3fQEBPEV0aGVyZXVtQWRkcmVzcwABOG1heWJlX3ByZWNsYWltkQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAQABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnUBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM4RWNkc2FTaWduYXR1cmUAAAQAeQEBIFt1ODsgNjVdAAB5AQAAA0EAAAAMAH0BDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM8RXRoZXJldW1BZGRyZXNzAAAEABwBIFt1ODsgMjBdAACBAQQYT3B0aW9uBARUAYUBAQgQTm9uZQAAABBTb21lBACFAQAAAQAAhQEAAAQMWQFZATgAiQEEGE9wdGlvbgQEVAGNAQEIEE5vbmUAAAAQU29tZQQAjQEAAAEAAI0BDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM0U3RhdGVtZW50S2luZAABCBxSZWd1bGFyAAAAEFNhZnQAAQAAkQEEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAACVAQwocGFsbGV0X2RhcBhwYWxsZXQQQ2FsbAQEVAABBFRzZXRfYnVkZ2V0X2FsbG9jYXRpb24EATxuZXdfYWxsb2NhdGlvbnOZAQFMQnVkZ2V0QWxsb2NhdGlvbk1hcAAAEHhTZXQgdGhlIGJ1ZGdldCBhbGxvY2F0aW9uIG1hcC4AOQFFYWNoIGtleSBtdXN0IG1hdGNoIGEgcmVnaXN0ZXJlZCBgQnVkZ2V0UmVjaXBpZW50YC4gVGhlIHN1bSBvZiBhbGwgcGVyY2VudGFnZXMlAW11c3QgYmUgZXhhY3RseSAxMDAlLiBSZWNpcGllbnRzIG5vdCBpbmNsdWRlZCBpbiB0aGUgbWFwIHJlY2VpdmUgbm90aGluZy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMumQEMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLAZ0BBFYBoQEEUwAABAClAQE4QlRyZWVNYXA8SywgVj4AAJ0BDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAoQEMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJiaWxsAAAEADgBDHUzMgAApQEEIEJUcmVlTWFwCARLAZ0BBFYBoQEABACpAQAAAKkBAAACrQEArQEAAAQInQGhAQCxAQxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQQQ2FsbAQEVAABJERzZXRfaW52dWxuZXJhYmxlcwQBDG5ld2EBAURWZWM8VDo6QWNjb3VudElkPgAANDEBU2V0IHRoZSBsaXN0IG9mIGludnVsbmVyYWJsZSAoZml4ZWQpIGNvbGxhdG9ycy4gVGhlc2UgY29sbGF0b3JzIG11c3QgZG8gc29tZdBwcmVwYXJhdGlvbiwgbmFtZWx5IHRvIGhhdmUgcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuAFkBVGhlIGNhbGwgd2lsbCByZW1vdmUgYW55IGFjY291bnRzIHRoYXQgaGF2ZSBub3QgcmVnaXN0ZXJlZCBrZXlzIGZyb20gdGhlIHNldC4gVGhhdCBpcyxdAWl0IGlzIG5vbi1hdG9taWM7IHRoZSBjYWxsZXIgYWNjZXB0cyBhbGwgYEFjY291bnRJZGBzIHBhc3NlZCBpbiBgbmV3YCBfaW5kaXZpZHVhbGx5XyBhczEBYWNjZXB0YWJsZSBJbnZ1bG5lcmFibGVzLCBhbmQgaXMgbm90IHByb3Bvc2luZyBhIF9zZXRfIG9mIG5ldyBJbnZ1bG5lcmFibGVzLgBZAVRoaXMgY2FsbCBkb2VzIG5vdCBtYWludGFpbiBtdXR1YWwgZXhjbHVzaXZpdHkgb2YgYEludnVsbmVyYWJsZXNgIGFuZCBgQ2FuZGlkYXRlc2AuIEl0YQFpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBiYXRjaCBvZiBgYWRkX2ludnVsbmVyYWJsZWAgYW5kIGByZW1vdmVfaW52dWxuZXJhYmxlYCBpbnN0ZWFkLiBBUQFgYmF0Y2hfYWxsYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuZm9yY2UgYXRvbWljaXR5LiBJZiBhbnkgY2FuZGlkYXRlcyBhcmUgaW5jbHVkZWQgaW5NAWBuZXdgLCB0aGV5IHNob3VsZCBiZSByZW1vdmVkIHdpdGggYHJlbW92ZV9pbnZ1bG5lcmFibGVfY2FuZGlkYXRlYCBhZnRlciBleGVjdXRpb24uAJRNdXN0IGJlIGNhbGxlZCBieSB0aGUgYFVwZGF0ZU9yaWdpbmAuWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMEAQxtYXg4AQx1MzIAARRVAVNldCB0aGUgaWRlYWwgbnVtYmVyIG9mIG5vbi1pbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBJZiBsb3dlcmluZyB0aGlzIG51bWJlciwgdGhlbiB0aGVhAW51bWJlciBvZiBydW5uaW5nIGNvbGxhdG9ycyBjb3VsZCBiZSBoaWdoZXIgdGhhbiB0aGlzIGZpZ3VyZS4gQXNpZGUgZnJvbSB0aGF0IGVkZ2UgY2FzZSw1AXRoZXJlIHNob3VsZCBiZSBubyBvdGhlciB3YXkgdG8gaGF2ZSBtb3JlIGNhbmRpZGF0ZXMgdGhhbiB0aGUgZGVzaXJlZCBudW1iZXIuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuSHNldF9jYW5kaWRhY3lfYm9uZAQBEGJvbmRZAQEwQmFsYW5jZU9mPFQ+AAIceFNldCB0aGUgY2FuZGlkYWN5IGJvbmQgYW1vdW50LgBRAUlmIHRoZSBjYW5kaWRhY3kgYm9uZCBpcyBpbmNyZWFzZWQgYnkgdGhpcyBjYWxsLCBhbGwgY3VycmVudCBjYW5kaWRhdGVzIHdoaWNoIGhhdmUgYU0BZGVwb3NpdCBsb3dlciB0aGFuIHRoZSBuZXcgYm9uZCB3aWxsIGJlIGtpY2tlZCBmcm9tIHRoZSBsaXN0IGFuZCBnZXQgdGhlaXIgZGVwb3NpdHMUYmFjay4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5UcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAMQQQFSZWdpc3RlciB0aGlzIGFjY291bnQgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIFRoZSBhY2NvdW50IG11c3QgKGEpIGFscmVhZHkgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMgYW5kIChiKSBiZSBhYmxlIHRvIHJlc2VydmUgdGhlIGBDYW5kaWRhY3lCb25kYC4A3FRoaXMgY2FsbCBpcyBub3QgYXZhaWxhYmxlIHRvIGBJbnZ1bG5lcmFibGVgIGNvbGxhdG9ycy4wbGVhdmVfaW50ZW50AAQUVQFEZXJlZ2lzdGVyIGBvcmlnaW5gIGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBOb3RlIHRoYXQgdGhlIGNvbGxhdG9yIGNhbiBvbmx5IGxlYXZlIG9uDQFzZXNzaW9uIGNoYW5nZS4gVGhlIGBDYW5kaWRhY3lCb25kYCB3aWxsIGJlIHVucmVzZXJ2ZWQgaW1tZWRpYXRlbHkuABkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgd291bGQgZHJvcCBiZWxvd1xgTWluRWxpZ2libGVDb2xsYXRvcnNgLkBhZGRfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAUQRQFBZGQgYSBuZXcgYWNjb3VudCBgd2hvYCB0byB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgd2hvYCBtdXN0IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLiBJZiBgd2hvYCBpcyBhIGNhbmRpZGF0ZSwgdGhleSB3aWxsIGJlIHJlbW92ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuTHJlbW92ZV9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABhBhAVJlbW92ZSBhbiBhY2NvdW50IGB3aG9gIGZyb20gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYEludnVsbmVyYWJsZXNgIG11c3QoYmUgc29ydGVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLix1cGRhdGVfYm9uZAQBLG5ld19kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgAHHF0BVXBkYXRlIHRoZSBjYW5kaWRhY3kgYm9uZCBvZiBjb2xsYXRvciBjYW5kaWRhdGUgYG9yaWdpbmAgdG8gYSBuZXcgYW1vdW50IGBuZXdfZGVwb3NpdGAuAEEBU2V0dGluZyBhIGBuZXdfZGVwb3NpdGAgdGhhdCBpcyBsb3dlciB0aGFuIHRoZSBjdXJyZW50IGRlcG9zaXQgd2hpbGUgYG9yaWdpbmAgaXPgb2NjdXB5aW5nIGEgdG9wLWBEZXNpcmVkQ2FuZGlkYXRlc2Agc2xvdCBpcyBub3QgYWxsb3dlZC4AWQFUaGlzIGNhbGwgd2lsbCBmYWlsIGlmIGBvcmlnaW5gIGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSwgdGhlIHVwZGF0ZWQgYm9uZCBpcyBsb3dlchkBdGhhbiB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZCwgYW5kL29yIHRoZSBhbW91bnQgY2Fubm90IGJlIHJlc2VydmVkLkx0YWtlX2NhbmRpZGF0ZV9zbG90CAEcZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4AARh0YXJnZXQEATBUOjpBY2NvdW50SWQACBxNAVRoZSBjYWxsZXIgYG9yaWdpbmAgcmVwbGFjZXMgYSBjYW5kaWRhdGUgYHRhcmdldGAgaW4gdGhlIGNvbGxhdG9yIGNhbmRpZGF0ZSBsaXN0IGJ5VQFyZXNlcnZpbmcgYGRlcG9zaXRgLiBUaGUgYW1vdW50IGBkZXBvc2l0YCByZXNlcnZlZCBieSB0aGUgY2FsbGVyIG11c3QgYmUgZ3JlYXRlciB0aGFu4HRoZSBleGlzdGluZyBib25kIG9mIHRoZSB0YXJnZXQgaXQgaXMgdHJ5aW5nIHRvIHJlcGxhY2UuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgYSBjb2xsYXRvciBjYW5kaWRhdGUgb3IgaW52dWxuZXJhYmxlLCB0aGVVAWNhbGxlciBkb2VzIG5vdCBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLCB0aGUgdGFyZ2V0IGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSy8YW5kL29yIHRoZSBgZGVwb3NpdGAgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMutQEMOHBhbGxldF9zZXNzaW9uGHBhbGxldBBDYWxsBARUAAEIIHNldF9rZXlzCAEQa2V5c7kBARxUOjpLZXlzAAEUcHJvb2YYARxWZWM8dTg+AAAs5FNldHMgdGhlIHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIgdG8gYGtleXNgLgAdAUFsbG93cyBhbiBhY2NvdW50IHRvIHNldCBpdHMgc2Vzc2lvbiBrZXkgcHJpb3IgdG8gYmVjb21pbmcgYSB2YWxpZGF0b3IuwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgABAS0gYG9yaWdpbmA6IFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHNpZ25lZC5VAS0gYGtleXNgOiBUaGUgbmV3IHNlc3Npb24ga2V5cyB0byBzZXQuIFRoZXNlIGFyZSB0aGUgcHVibGljIGtleXMgb2YgYWxsIHNlc3Npb25zIGtleXNcICBzZXR1cCBpbiB0aGUgcnVudGltZS5BAS0gYHByb29mYDogVGhlIHByb29mIHRoYXQgYG9yaWdpbmAgaGFzIGFjY2VzcyB0byB0aGUgcHJpdmF0ZSBrZXlzIG9mIGBrZXlzYC4gU2VlTQEgIFtgaW1wbF9vcGFxdWVfa2V5c2BdKHNwX3J1bnRpbWU6OmltcGxfb3BhcXVlX2tleXMpIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZTwgIHByb29mIGZvcm1hdC4ocHVyZ2Vfa2V5cwABIMhSZW1vdmVzIGFueSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyLgDAVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgYWNjb3VudCBtdXN0IGJlIGVpdGhlciBiZV0BY29udmVydGlibGUgdG8gYSB2YWxpZGF0b3IgSUQgdXNpbmcgdGhlIGNoYWluJ3MgdHlwaWNhbCBhZGRyZXNzaW5nIHN5c3RlbSAodGhpcyB1c3VhbGx5UQFtZWFucyBiZWluZyBhIGNvbnRyb2xsZXIgYWNjb3VudCkgb3IgZGlyZWN0bHkgY29udmVydGlibGUgaW50byBhIHZhbGlkYXRvciBJRCAod2hpY2iUdXN1YWxseSBtZWFucyBiZWluZyBhIHN0YXNoIGFjY291bnQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy65AQhoYXNzZXRfaHViX3BvbGthZG90X3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmG9AQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAAvQEQRHNwX2NvbnNlbnN1c19hdXJhHGVkMjU1MTksYXBwX2VkMjU1MTkYUHVibGljAAAEAAgBPGVkMjU1MTk6OlB1YmxpYwAAwQEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuxQEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3TJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2VRAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3TJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHONAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdMkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c40DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2WRAwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodBUBARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbh0CATRCb3g8TG9jYXRpb24+AAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ABBhJAUV4dG9sbCB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBjYW4gYmUgY29tbXVuaWNhdGVkIHdpdGggdGhyb3VnaCBhIHBhcnRpY3VsYXI8dmVyc2lvbiBvZiBYQ00uANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u2C0gYGxvY2F0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRoYXQgaXMgYmVpbmcgZGVzY3JpYmVkLhEBLSBgeGNtX3ZlcnNpb25gOiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgWENNIHRoYXQgYGxvY2F0aW9uYCBzdXBwb3J0cy5kZm9yY2VfZGVmYXVsdF94Y21fdmVyc2lvbgQBRG1heWJlX3hjbV92ZXJzaW9u5AFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbskBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27JAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdMkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c40DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdMkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c40DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZF0BARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN0yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeckBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzjQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c40DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ5yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADCBVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQuAAkBVGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgbGluZWFyIGluIHRoZSBudW1iZXIgb2YgYXNzZXRzIGNsYWltZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdMkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzjQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGW9AwFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZMEDAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGW9AwFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3RRAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlBhZGRfYXV0aG9yaXplZF9hbGlhcwgBHGFsaWFzZXLJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHGV4cGlyZXMBAQEsT3B0aW9uPHU2ND4ADixdAUF1dGhvcml6ZSBhbm90aGVyIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLikBVGhlIGBhbGlhc2VyYCBpcyBvbmx5IGF1dGhvcml6ZWQgdW50aWwgdGhlIHByb3ZpZGVkIGBleHBpcnlgIGJsb2NrIG51bWJlci5JAVRoZSBjYWxsIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGFsaWFzIGluIG9yZGVyIHRvIHVwZGF0ZSBpdHNYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLgBRAVVzdWFsbHkgdXNlZnVsIHRvIGFsbG93IHlvdXIgbG9jYWwgYWNjb3VudCB0byBiZSBhbGlhc2VkIGludG8gZnJvbSBhIHJlbW90ZSBsb2NhdGlvbvRhbHNvIHVuZGVyIHlvdXIgY29udHJvbCAobGlrZSB5b3VyIGFjY291bnQgb24gYW5vdGhlciBjaGFpbikuAFEBV0FSTklORzogbWFrZSBzdXJlIHRoZSBjYWxsZXIgYG9yaWdpbmAgKHlvdSkgdHJ1c3RzIHRoZSBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWN0IGluWQF0aGVpci95b3VyIG5hbWUuIE9uY2UgYXV0aG9yaXplZCB1c2luZyB0aGlzIGNhbGwsIHRoZSBgYWxpYXNlcmAgY2FuIGZyZWVseSBpbXBlcnNvbmF0ZdRgb3JpZ2luYCBpbiBYQ00gcHJvZ3JhbXMgZXhlY3V0ZWQgb24gdGhlIGxvY2FsIGNoYWluLlxyZW1vdmVfYXV0aG9yaXplZF9hbGlhcwQBHGFsaWFzZXLJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAPCF0BUmVtb3ZlIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYCBmcm9tIHRoZSBsaXN0IG9mIGxvY2F0aW9ucyB0aGF0IGNhbiBhbGlhcyBpbnRvkHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLnRyZW1vdmVfYWxsX2F1dGhvcml6ZWRfYWxpYXNlcwAQCEkBUmVtb3ZlIGFsbCBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgcyB0aGF0IGNhbiBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYERtYWtpbmcgdGhpcyBjYWxsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7JAQgMeGNtRFZlcnNpb25lZExvY2F0aW9uAAEMCFYzBADNAQFEdjM6Ok11bHRpTG9jYXRpb24AAwAIVjQEAOkBATB2NDo6TG9jYXRpb24ABAAIVjUEAB0CATB2NTo6TG9jYXRpb24ABQAAzQEQLHN0YWdpbmdfeGNtCHYzNG11bHRpbG9jYXRpb240TXVsdGlMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3LRAQEkSnVuY3Rpb25zAADRARAMeGNtCHYzJGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA1QEBIEp1bmN0aW9uAAEACFgyCADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgACAAhYMwwA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgADAAhYNBAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAAQACFg1FADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAFAAhYNhgA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAGAAhYNxwA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAAcACFg4IADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAIAADVARAMeGNtCHYzIGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAZAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya9kBAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3Jr2QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi4AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya9kBAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAFUBARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWThAQEYQm9keUlkAAEQcGFydOUBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAN0BASROZXR3b3JrSWQACQAA2QEEGE9wdGlvbgQEVAHdAQEIEE5vbmUAAAAQU29tZQQA3QEAAAEAAN0BEAx4Y20IdjMganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLgBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAOEBEAx4Y20IdjMganVuY3Rpb24YQm9keUlkAAEoEFVuaXQAAAAcTW9uaWtlcgQAdAEcW3U4OyA0XQABABRJbmRleAQAZAEMdTMyAAIAJEV4ZWN1dGl2ZQADACRUZWNobmljYWwABAAsTGVnaXNsYXRpdmUABQAgSnVkaWNpYWwABgAcRGVmZW5zZQAHADhBZG1pbmlzdHJhdGlvbgAIACBUcmVhc3VyeQAJAADlARAMeGNtCHYzIGp1bmN0aW9uIEJvZHlQYXJ0AAEUFFZvaWNlAAAAHE1lbWJlcnMEARRjb3VudGQBDHUzMgABACBGcmFjdGlvbggBDG5vbWQBDHUzMgABFGRlbm9tZAEMdTMyAAIAREF0TGVhc3RQcm9wb3J0aW9uCAEMbm9tZAEMdTMyAAEUZGVub21kAQx1MzIAAwBITW9yZVRoYW5Qcm9wb3J0aW9uCAEMbm9tZAEMdTMyAAEUZGVub21kAQx1MzIABAAA6QEQLHN0YWdpbmdfeGNtCHY0IGxvY2F0aW9uIExvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcu0BASRKdW5jdGlvbnMAAO0BECxzdGFnaW5nX3hjbQh2NCRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAPEBAUhBcmM8W0p1bmN0aW9uOyAxXT4AAQAIWDIEAAECAUhBcmM8W0p1bmN0aW9uOyAyXT4AAgAIWDMEAAUCAUhBcmM8W0p1bmN0aW9uOyAzXT4AAwAIWDQEAAkCAUhBcmM8W0p1bmN0aW9uOyA0XT4ABAAIWDUEAA0CAUhBcmM8W0p1bmN0aW9uOyA1XT4ABQAIWDYEABECAUhBcmM8W0p1bmN0aW9uOyA2XT4ABgAIWDcEABUCAUhBcmM8W0p1bmN0aW9uOyA3XT4ABwAIWDgEABkCAUhBcmM8W0p1bmN0aW9uOyA4XT4ACAAA8QEAAAMBAAAA9QEA9QEQLHN0YWdpbmdfeGNtCHY0IGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAZAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya/kBAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3Jr+QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi4AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya/kBAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAFUBARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWThAQEYQm9keUlkAAEQcGFydOUBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAP0BASROZXR3b3JrSWQACQAA+QEEGE9wdGlvbgQEVAH9AQEIEE5vbmUAAAAQU29tZQQA/QEAAAEAAP0BECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiROZXR3b3JrSWQAASwkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAHFdlc3RlbmQABAAYUm9jb2NvAAUAGFdvY29jbwAGACBFdGhlcmV1bQQBIGNoYWluX2lkuAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAAQIAAAMCAAAA9QEABQIAAAMDAAAA9QEACQIAAAMEAAAA9QEADQIAAAMFAAAA9QEAEQIAAAMGAAAA9QEAFQIAAAMHAAAA9QEAGQIAAAMIAAAA9QEAHQIQLHN0YWdpbmdfeGNtCHY1IGxvY2F0aW9uIExvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvciECASRKdW5jdGlvbnMAACECECxzdGFnaW5nX3hjbQh2NSRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEACUCAUhBcmM8W0p1bmN0aW9uOyAxXT4AAQAIWDIEADUCAUhBcmM8W0p1bmN0aW9uOyAyXT4AAgAIWDMEADkCAUhBcmM8W0p1bmN0aW9uOyAzXT4AAwAIWDQEAD0CAUhBcmM8W0p1bmN0aW9uOyA0XT4ABAAIWDUEAEECAUhBcmM8W0p1bmN0aW9uOyA1XT4ABQAIWDYEAEUCAUhBcmM8W0p1bmN0aW9uOyA2XT4ABgAIWDcEAEkCAUhBcmM8W0p1bmN0aW9uOyA3XT4ABwAIWDgEAE0CAUhBcmM8W0p1bmN0aW9uOyA4XT4ACAAAJQIAAAMBAAAAKQIAKQIQLHN0YWdpbmdfeGNtCHY1IGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAZAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29yay0CAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3JrLQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi4AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29yay0CAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAFUBARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWThAQEYQm9keUlkAAEQcGFydOUBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEADECASROZXR3b3JrSWQACQAALQIEGE9wdGlvbgQEVAExAgEIEE5vbmUAAAAQU29tZQQAMQIAAAEAADECECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiROZXR3b3JrSWQAASAkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAIEV0aGVyZXVtBAEgY2hhaW5faWS4AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAAA1AgAAAwIAAAApAgA5AgAAAwMAAAApAgA9AgAAAwQAAAApAgBBAgAAAwUAAAApAgBFAgAAAwYAAAApAgBJAgAAAwcAAAApAgBNAgAAAwgAAAApAgBRAggMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAFUCAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAyQIBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BAAVAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAVQIMDHhjbQh2MwxYY20EEENhbGwAAAQAWQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAFkCAAACXQIAXQIMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BABhAgEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBABhAgEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAYQIBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLgBHFF1ZXJ5SWQAASByZXNwb25zZYECASBSZXNwb25zZQABKG1heF93ZWlnaHQVAQEYV2VpZ2h0AAEccXVlcmllcqkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c2ECASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5zQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNhAgEsTXVsdGlBc3NldHMAARBkZXN0zQEBNE11bHRpTG9jYXRpb24AAQx4Y21VAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5krQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0FQEBGFdlaWdodAABEGNhbGyxAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyZAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWQBDHUzMgABMG1heF9jYXBhY2l0eWQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50ZAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmQBDHUzMgABGHNlbmRlcmQBDHUzMgABJHJlY2lwaWVudGQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADRAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAC1AgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzuQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyec0BATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHO5AgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TNAQE0TXVsdGlMb2NhdGlvbgABDHhjbVUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZluQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50YQIBLE11bHRpQXNzZXRzAAEcbWF4aW1hbF0BARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzuQIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZlzQEBNE11bHRpTG9jYXRpb24AAQx4Y21VAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzuQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0zQEBNE11bHRpTG9jYXRpb24AAQx4Y21VAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb7UCAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXNpAgEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAVQIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAVQIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNhAgEsTXVsdGlBc3NldHMAARh0aWNrZXTNAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC4AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkuAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAGECASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQAYQIBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAqQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAhQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAChAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvtQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4ZAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcmQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAtQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADVAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmvdAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27RAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRpAgEoTXVsdGlBc3NldAABIHVubG9ja2VyzQEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldGkCAShNdWx0aUFzc2V0AAEYdGFyZ2V0zQEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldGkCAShNdWx0aUFzc2V0AAEUb3duZXLNAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRpAgEoTXVsdGlBc3NldAABGGxvY2tlcs0BATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3XQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAM0BATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbqkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAYQIQDHhjbQh2MyhtdWx0aWFzc2V0LE11bHRpQXNzZXRzAAAEAGUCATxWZWM8TXVsdGlBc3NldD4AAGUCAAACaQIAaQIQDHhjbQh2MyhtdWx0aWFzc2V0KE11bHRpQXNzZXQAAAgBCGlkbQIBHEFzc2V0SWQAAQxmdW5xAgEsRnVuZ2liaWxpdHkAAG0CEAx4Y20IdjMobXVsdGlhc3NldBxBc3NldElkAAEIIENvbmNyZXRlBADNAQE0TXVsdGlMb2NhdGlvbgAAACBBYnN0cmFjdAQACAEgW3U4OyAzMl0AAQAAcQIQDHhjbQh2MyhtdWx0aWFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBABVAQEQdTEyOAAAACxOb25GdW5naWJsZQQAdQIBNEFzc2V0SW5zdGFuY2UAAQAAdQIQDHhjbQh2MyhtdWx0aWFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BABVAQEQdTEyOAABABhBcnJheTQEAHQBHFt1ODsgNF0AAgAYQXJyYXk4BAB5AgEcW3U4OyA4XQADABxBcnJheTE2BAB9AgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAAeQIAAAMIAAAADAB9AgAAAxAAAAAMAIECDAx4Y20IdjMgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAGECASxNdWx0aUFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAIUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQAkQIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BAChAgE4TWF5YmVFcnJvckNvZGUABQAAhQIEGE9wdGlvbgQEVAGJAgEIEE5vbmUAAAAQU29tZQQAiQIAAAEAAIkCAAAECDiNAgCNAhAMeGNtCHYzGHRyYWl0cxRFcnJvcgABoCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgBMVW5oYW5kbGVkWGNtVmVyc2lvbgAjAEhXZWlnaHRMaW1pdFJlYWNoZWQEABUBARhXZWlnaHQAJAAcQmFycmllcgAlAExXZWlnaHROb3RDb21wdXRhYmxlACYAREV4Y2VlZHNTdGFja0xpbWl0ACcAAJECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBlQIEUwAABACdAgEYVmVjPFQ+AACVAgwMeGNtCHYzKFBhbGxldEluZm8AABgBFGluZGV4ZAEMdTMyAAEQbmFtZZkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1lmQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JkAQx1MzIAARRtaW5vcmQBDHUzMgABFHBhdGNoZAEMdTMyAACZAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAJ0CAAAClQIAoQIMDHhjbQh2MzhNYXliZUVycm9yQ29kZQABDBxTdWNjZXNzAAAAFEVycm9yBAClAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAQA4VHJ1bmNhdGVkRXJyb3IEAKUCAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgACAAClAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAKkCBBhPcHRpb24EBFQBzQEBCBBOb25lAAAAEFNvbWUEAM0BAAABAACtAgwMeGNtCHYzKE9yaWdpbktpbmQAARAYTmF0aXZlAAAAQFNvdmVyZWlnbkFjY291bnQAAQAkU3VwZXJ1c2VyAAIADFhjbQADAACxAgwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQYARxWZWM8dTg+AAC1AgwMeGNtCHYzRFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbs0BATRNdWx0aUxvY2F0aW9uAAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEobWF4X3dlaWdodBUBARhXZWlnaHQAALkCEAx4Y20IdjMobXVsdGlhc3NldEBNdWx0aUFzc2V0RmlsdGVyAAEIIERlZmluaXRlBABhAgEsTXVsdGlBc3NldHMAAAAQV2lsZAQAvQIBOFdpbGRNdWx0aUFzc2V0AAEAAL0CEAx4Y20IdjMobXVsdGlhc3NldDhXaWxkTXVsdGlBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZG0CARxBc3NldElkAAEMZnVuwQIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABkAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWRtAgEcQXNzZXRJZAABDGZ1bsECATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGQBDHUzMgADAADBAhAMeGNtCHYzKG11bHRpYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAMUCDAx4Y20IdjMsV2VpZ2h0TGltaXQAAQgkVW5saW1pdGVkAAAAHExpbWl0ZWQEABUBARhXZWlnaHQAAQAAyQIMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABADNAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAzQIAAALRAgDRAgwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQA1QIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEANUCARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQA1QIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEgcmVzcG9uc2XtAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0FQEBGFdlaWdodAABHHF1ZXJpZXIBAwFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRz1QIBGEFzc2V0cwABLGJlbmVmaWNpYXJ56QEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRz1QIBGEFzc2V0cwABEGRlc3TpAQEgTG9jYXRpb24AAQx4Y23JAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5krQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0FQEBGFdlaWdodAABEGNhbGyxAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyZAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWQBDHUzMgABMG1heF9jYXBhY2l0eWQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50ZAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmQBDHUzMgABGHNlbmRlcmQBDHUzMgABJHJlY2lwaWVudGQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADtAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQABQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0cwkDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ56QEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMJAwEsQXNzZXRGaWx0ZXIAARBkZXN06QEBIExvY2F0aW9uAAEMeGNtyQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUJAwEsQXNzZXRGaWx0ZXIAARB3YW501QIBGEFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cwkDASxBc3NldEZpbHRlcgABHHJlc2VydmXpAQEgTG9jYXRpb24AAQx4Y23JAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzCQMBLEFzc2V0RmlsdGVyAAEQZGVzdOkBASBMb2NhdGlvbgABDHhjbckCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvBQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzCQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPdAgEUQXNzZXQAATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAMkCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAMkCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRz1QIBGEFzc2V0cwABGHRpY2tldOkBASBMb2NhdGlvbgAYABBUcmFwBAC4AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkuAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEANUCARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEANUCARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAABAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAhQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAChAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvBQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4ZAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcmQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQABQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAD1AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmv9AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27tAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbckCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V03QIBFEFzc2V0AAEgdW5sb2NrZXLpAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldN0CARRBc3NldAABGHRhcmdldOkBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V03QIBFEFzc2V0AAEUb3duZXLpAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V03QIBFEFzc2V0AAEYbG9ja2Vy6QEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3XQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAOkBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW4BAwFAT3B0aW9uPExvY2F0aW9uPgAvAADVAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQYQXNzZXRzAAAEANkCAShWZWM8QXNzZXQ+AADZAgAAAt0CAN0CECxzdGFnaW5nX3hjbQh2NBRhc3NldBRBc3NldAAACAEIaWThAgEcQXNzZXRJZAABDGZ1buUCASxGdW5naWJpbGl0eQAA4QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0HEFzc2V0SWQAAAQA6QEBIExvY2F0aW9uAADlAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAFUBARB1MTI4AAAALE5vbkZ1bmdpYmxlBADpAgE0QXNzZXRJbnN0YW5jZQABAADpAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAFUBARB1MTI4AAEAGEFycmF5NAQAdAEcW3U4OyA0XQACABhBcnJheTgEAHkCARxbdTg7IDhdAAMAHEFycmF5MTYEAH0CASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAADtAgwsc3RhZ2luZ194Y20IdjQgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEANUCARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BACFAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAPECAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAoQIBOE1heWJlRXJyb3JDb2RlAAUAAPECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB9QIEUwAABAD9AgEYVmVjPFQ+AAD1Agwsc3RhZ2luZ194Y20IdjQoUGFsbGV0SW5mbwAAGAEUaW5kZXhkAQx1MzIAARBuYW1l+QIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWX5AgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmQBDHUzMgABFG1pbm9yZAEMdTMyAAEUcGF0Y2hkAQx1MzIAAPkCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA/QIAAAL1AgABAwQYT3B0aW9uBARUAekBAQgQTm9uZQAAABBTb21lBADpAQAAAQAABQMMLHN0YWdpbmdfeGNtCHY0RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbukBASBMb2NhdGlvbgABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABKG1heF93ZWlnaHQVAQEYV2VpZ2h0AAAJAxAsc3RhZ2luZ194Y20IdjQUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEANUCARhBc3NldHMAAAAQV2lsZAQADQMBJFdpbGRBc3NldAABAAANAxAsc3RhZ2luZ194Y20IdjQUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlk4QIBHEFzc2V0SWQAAQxmdW4RAwE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGQBDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZOECARxBc3NldElkAAEMZnVuEQMBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50ZAEMdTMyAAMAABEDECxzdGFnaW5nX3hjbQh2NBRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAFQMMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABAAZAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAGQMAAAIdAwAdAwwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQAIQMBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEACEDARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAIQMBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEgcmVzcG9uc2U5AwEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0FQEBGFdlaWdodAABHHF1ZXJpZXJZAwFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzIQMBGEFzc2V0cwABLGJlbmVmaWNpYXJ5HQIBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzIQMBGEFzc2V0cwABEGRlc3QdAgEgTG9jYXRpb24AAQx4Y20VAwEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5krQIBKE9yaWdpbktpbmQAAUxmYWxsYmFja19tYXhfd2VpZ2h0EQEBOE9wdGlvbjxXZWlnaHQ+AAEQY2FsbLECAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplZAEMdTMyAAEwbWF4X2NhcGFjaXR5ZAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yZAEMdTMyAAEYc2VuZGVyZAEMdTMyAAEkcmVjaXBpZW50ZAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EACECAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBABdAwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnkdAgEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c2EDASxBc3NldEZpbHRlcgABEGRlc3QdAgEgTG9jYXRpb24AAQx4Y20VAwEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZWEDASxBc3NldEZpbHRlcgABEHdhbnQhAwEYQXNzZXRzAAEcbWF4aW1hbF0BARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZR0CASBMb2NhdGlvbgABDHhjbRUDARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHNhAwEsQXNzZXRGaWx0ZXIAARBkZXN0HQIBIExvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm9dAwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHNhAwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlcykDARRBc3NldAABMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAFQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAFQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHMhAwEYQXNzZXRzAAEYdGlja2V0HQIBIExvY2F0aW9uABgAEFRyYXAEALgBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS4ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAIQMBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAIQMBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAFkDAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBAA9AwFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAKECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm9dAwFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhkAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yZAEMdTMyAAE8bWluX2NyYXRlX21pbm9yZAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBABdAwFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EACkCASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29yazECASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbiECAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXQpAwEUQXNzZXQAASB1bmxvY2tlch0CASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0KQMBFEFzc2V0AAEYdGFyZ2V0HQIBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXQpAwEUQXNzZXQAARRvd25lch0CASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXQpAwEUQXNzZXQAARhsb2NrZXIdAgEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXddAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAHQIBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpblkDAUBPcHRpb248TG9jYXRpb24+AC8AHFBheUZlZXMEARRhc3NldCkDARRBc3NldAAwAEBJbml0aWF0ZVRyYW5zZmVyFAEsZGVzdGluYXRpb24dAgEgTG9jYXRpb24AASxyZW1vdGVfZmVlc20DAWxPcHRpb248QXNzZXRUcmFuc2ZlckZpbHRlcj4AATxwcmVzZXJ2ZV9vcmlnaW5dAQEQYm9vbAABGGFzc2V0c3UDAeBCb3VuZGVkVmVjPEFzc2V0VHJhbnNmZXJGaWx0ZXIsIE1heEFzc2V0VHJhbnNmZXJGaWx0ZXJzPgABKHJlbW90ZV94Y20VAwEcWGNtPCgpPgAxAERFeGVjdXRlV2l0aE9yaWdpbggBRGRlc2NlbmRhbnRfb3JpZ2lufQMBYE9wdGlvbjxJbnRlcmlvckxvY2F0aW9uPgABDHhjbRUDASRYY208Q2FsbD4AMgAgU2V0SGludHMEARRoaW50c4EDAYRCb3VuZGVkVmVjPEhpbnQsIEhpbnROdW1WYXJpYW50cz4AMwAAIQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0GEFzc2V0cwAABAAlAwEoVmVjPEFzc2V0PgAAJQMAAAIpAwApAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQUQXNzZXQAAAgBCGlkLQMBHEFzc2V0SWQAAQxmdW4xAwEsRnVuZ2liaWxpdHkAAC0DECxzdGFnaW5nX3hjbQh2NRRhc3NldBxBc3NldElkAAAEAB0CASBMb2NhdGlvbgAAMQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBABVAQEQdTEyOAAAACxOb25GdW5naWJsZQQANQMBNEFzc2V0SW5zdGFuY2UAAQAANQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BABVAQEQdTEyOAABABhBcnJheTQEAHQBHFt1ODsgNF0AAgAYQXJyYXk4BAB5AgEcW3U4OyA4XQADABxBcnJheTE2BAB9AgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAAOQMMLHN0YWdpbmdfeGNtCHY1IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBAAhAwEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAPQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBABJAwGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAKECAThNYXliZUVycm9yQ29kZQAFAAA9AwQYT3B0aW9uBARUAUEDAQgQTm9uZQAAABBTb21lBABBAwAAAQAAQQMAAAQIOEUDAEUDEAx4Y20IdjUYdHJhaXRzFEVycm9yAAGkIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkBAAVAQEYV2VpZ2h0ACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAABJAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAU0DBFMAAAQAVQMBGFZlYzxUPgAATQMMLHN0YWdpbmdfeGNtCHY1KFBhbGxldEluZm8AABgBFGluZGV4ZAEMdTMyAAEQbmFtZVEDAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1lUQMBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JkAQx1MzIAARRtaW5vcmQBDHUzMgABFHBhdGNoZAEMdTMyAABRAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAFUDAAACTQMAWQMEGE9wdGlvbgQEVAEdAgEIEE5vbmUAAAAQU29tZQQAHQIAAAEAAF0DDCxzdGFnaW5nX3hjbQh2NURRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb24dAgEgTG9jYXRpb24AASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0FQEBGFdlaWdodAAAYQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAAhAwEYQXNzZXRzAAAAEFdpbGQEAGUDASRXaWxkQXNzZXQAAQAAZQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZC0DARxBc3NldElkAAEMZnVuaQMBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABkAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWQtAwEcQXNzZXRJZAABDGZ1bmkDATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGQBDHUzMgADAABpAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAG0DBBhPcHRpb24EBFQBcQMBCBBOb25lAAAAEFNvbWUEAHEDAAABAABxAxAsc3RhZ2luZ194Y20IdjUUYXNzZXRMQXNzZXRUcmFuc2ZlckZpbHRlcgABDCBUZWxlcG9ydAQAYQMBLEFzc2V0RmlsdGVyAAAAOFJlc2VydmVEZXBvc2l0BABhAwEsQXNzZXRGaWx0ZXIAAQA8UmVzZXJ2ZVdpdGhkcmF3BABhAwEsQXNzZXRGaWx0ZXIAAgAAdQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFxAwRTAAAEAHkDARhWZWM8VD4AAHkDAAACcQMAfQMEGE9wdGlvbgQEVAEhAgEIEE5vbmUAAAAQU29tZQQAIQIAAAEAAIEDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBhQMEUwAABACJAwEYVmVjPFQ+AACFAwwsc3RhZ2luZ194Y20IdjUQSGludAABBDBBc3NldENsYWltZXIEASBsb2NhdGlvbh0CASBMb2NhdGlvbgAAAACJAwAAAoUDAI0DCAx4Y208VmVyc2lvbmVkQXNzZXRzAAEMCFYzBABhAgE8djM6Ok11bHRpQXNzZXRzAAMACFY0BADVAgEodjQ6OkFzc2V0cwAEAAhWNQQAIQMBKHY1OjpBc3NldHMABQAAkQMIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYzBACVAwFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEAKUDAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAhWNQQAsQMBUHY1OjpYY208UnVudGltZUNhbGw+AAUAAJUDDAx4Y20IdjMMWGNtBBBDYWxsAAAEAJkDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AACZAwAAAp0DAJ0DDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAYQIBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAYQIBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAGECASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEgcmVzcG9uc2WBAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0FQEBGFdlaWdodAABHHF1ZXJpZXKpAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHNhAgEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyec0BATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzYQIBLE11bHRpQXNzZXRzAAEQZGVzdM0BATRNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZK0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBUBARhXZWlnaHQAARBjYWxsoQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmQBDHUzMgABQG1heF9tZXNzYWdlX3NpemVkAQx1MzIAATBtYXhfY2FwYWNpdHlkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JkAQx1MzIAARhzZW5kZXJkAQx1MzIAASRyZWNpcGllbnRkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA0QEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAtQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnNAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzuQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0zQEBNE11bHRpTG9jYXRpb24AAQx4Y21VAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZbkCAUBNdWx0aUFzc2V0RmlsdGVyAAEQd2FudGECASxNdWx0aUFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2Zc0BATRNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdM0BATRNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm+1AgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHO5AgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzaQIBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAJUDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAJUDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzYQIBLE11bHRpQXNzZXRzAAEYdGlja2V0zQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAuAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0FQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BABhAgEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAGECASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAKkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAIUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAoQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb7UCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGQBDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JkAQx1MzIAATxtaW5fY3JhdGVfbWlub3JkAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEALUCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA1QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr3QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u0QEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbVUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0aQIBKE11bHRpQXNzZXQAASB1bmxvY2tlcs0BATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXRpAgEoTXVsdGlBc3NldAABGHRhcmdldM0BATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXRpAgEoTXVsdGlBc3NldAABFG93bmVyzQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0aQIBKE11bHRpQXNzZXQAARhsb2NrZXLNAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd10BARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADNAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW6pAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAKEDDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AAKUDDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAqQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAKkDAAACrQMArQMMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEANUCARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADVAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEANUCARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABIHJlc3BvbnNl7QIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBUBARhXZWlnaHQAARxxdWVyaWVyAQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c9UCARhBc3NldHMAASxiZW5lZmljaWFyeekBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c9UCARhBc3NldHMAARBkZXN06QEBIExvY2F0aW9uAAEMeGNtyQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZK0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBUBARhXZWlnaHQAARBjYWxsoQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmQBDHUzMgABQG1heF9tZXNzYWdlX3NpemVkAQx1MzIAATBtYXhfY2FwYWNpdHlkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JkAQx1MzIAARhzZW5kZXJkAQx1MzIAASRyZWNpcGllbnRkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA7QEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAAUDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMJAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeekBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzCQMBLEFzc2V0RmlsdGVyAAEQZGVzdOkBASBMb2NhdGlvbgABDHhjbckCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlCQMBLEFzc2V0RmlsdGVyAAEQd2FudNUCARhBc3NldHMAARxtYXhpbWFsXQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMJAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl6QEBIExvY2F0aW9uAAEMeGNtyQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cwkDASxBc3NldEZpbHRlcgABEGRlc3TpAQEgTG9jYXRpb24AAQx4Y23JAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbwUDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cwkDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVz3QIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAClAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAClAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c9UCARhBc3NldHMAARh0aWNrZXTpAQEgTG9jYXRpb24AGAAQVHJhcAQAuAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0FQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADVAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BADVAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAAQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAIUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAoQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbwUDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGQBDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JkAQx1MzIAATxtaW5fY3JhdGVfbWlub3JkAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAAUDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA9QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr/QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u7QEBQEludGVyaW9yTG9jYXRpb24AAQx4Y23JAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldN0CARRBc3NldAABIHVubG9ja2Vy6QEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTdAgEUQXNzZXQAARh0YXJnZXTpAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldN0CARRBc3NldAABFG93bmVy6QEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldN0CARRBc3NldAABGGxvY2tlcukBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd10BARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADpAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luAQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAAsQMMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABAC1AwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAtQMAAAK5AwC5Awwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQAIQMBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEACEDARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAIQMBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEgcmVzcG9uc2U5AwEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0FQEBGFdlaWdodAABHHF1ZXJpZXJZAwFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzIQMBGEFzc2V0cwABLGJlbmVmaWNpYXJ5HQIBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzIQMBGEFzc2V0cwABEGRlc3QdAgEgTG9jYXRpb24AAQx4Y20VAwEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5krQIBKE9yaWdpbktpbmQAAUxmYWxsYmFja19tYXhfd2VpZ2h0EQEBOE9wdGlvbjxXZWlnaHQ+AAEQY2FsbKEDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplZAEMdTMyAAEwbWF4X2NhcGFjaXR5ZAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yZAEMdTMyAAEYc2VuZGVyZAEMdTMyAAEkcmVjaXBpZW50ZAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EACECAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBABdAwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnkdAgEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c2EDASxBc3NldEZpbHRlcgABEGRlc3QdAgEgTG9jYXRpb24AAQx4Y20VAwEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZWEDASxBc3NldEZpbHRlcgABEHdhbnQhAwEYQXNzZXRzAAEcbWF4aW1hbF0BARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZR0CASBMb2NhdGlvbgABDHhjbRUDARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHNhAwEsQXNzZXRGaWx0ZXIAARBkZXN0HQIBIExvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm9dAwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHNhAwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlcykDARRBc3NldAABMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAsQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAsQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHMhAwEYQXNzZXRzAAEYdGlja2V0HQIBIExvY2F0aW9uABgAEFRyYXAEALgBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS4ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAIQMBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAIQMBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAFkDAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBAA9AwFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAKECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm9dAwFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhkAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yZAEMdTMyAAE8bWluX2NyYXRlX21pbm9yZAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBABdAwFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EACkCASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29yazECASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbiECAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXQpAwEUQXNzZXQAASB1bmxvY2tlch0CASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0KQMBFEFzc2V0AAEYdGFyZ2V0HQIBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXQpAwEUQXNzZXQAARRvd25lch0CASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXQpAwEUQXNzZXQAARhsb2NrZXIdAgEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXddAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAHQIBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpblkDAUBPcHRpb248TG9jYXRpb24+AC8AHFBheUZlZXMEARRhc3NldCkDARRBc3NldAAwAEBJbml0aWF0ZVRyYW5zZmVyFAEsZGVzdGluYXRpb24dAgEgTG9jYXRpb24AASxyZW1vdGVfZmVlc20DAWxPcHRpb248QXNzZXRUcmFuc2ZlckZpbHRlcj4AATxwcmVzZXJ2ZV9vcmlnaW5dAQEQYm9vbAABGGFzc2V0c3UDAeBCb3VuZGVkVmVjPEFzc2V0VHJhbnNmZXJGaWx0ZXIsIE1heEFzc2V0VHJhbnNmZXJGaWx0ZXJzPgABKHJlbW90ZV94Y20VAwEcWGNtPCgpPgAxAERFeGVjdXRlV2l0aE9yaWdpbggBRGRlc2NlbmRhbnRfb3JpZ2lufQMBYE9wdGlvbjxJbnRlcmlvckxvY2F0aW9uPgABDHhjbbEDASRYY208Q2FsbD4AMgAgU2V0SGludHMEARRoaW50c4EDAYRCb3VuZGVkVmVjPEhpbnQsIEhpbnROdW1WYXJpYW50cz4AMwAAvQMQUHN0YWdpbmdfeGNtX2V4ZWN1dG9yGHRyYWl0czhhc3NldF90cmFuc2ZlcjBUcmFuc2ZlclR5cGUAARAgVGVsZXBvcnQAAAAwTG9jYWxSZXNlcnZlAAEASERlc3RpbmF0aW9uUmVzZXJ2ZQACADRSZW1vdGVSZXNlcnZlBADJAQFEVmVyc2lvbmVkTG9jYXRpb24AAwAAwQMIDHhjbUBWZXJzaW9uZWRBc3NldElkAAEMCFYzBABtAgEsdjM6OkFzc2V0SWQAAwAIVjQEAOECASx2NDo6QXNzZXRJZAAEAAhWNQQALQMBLHY1OjpBc3NldElkAAUAAMUDDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuyQMMcHBhbGxldF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIYcGFsbGV0EENhbGwIBFQABEkAAQRQcmVwb3J0X2JyaWRnZV9zdGF0dXMIASRicmlkZ2VfaWRAARBIMjU2AAEwaXNfY29uZ2VzdGVkXQEBEGJvb2wAAASoTm90aWZpY2F0aW9uIGFib3V0IGNvbmdlc3RlZCBicmlkZ2UgcXVldWUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLs0DDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABCCRyZWFwX3BhZ2UIAThtZXNzYWdlX29yaWdpbtEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAAEPQFSZW1vdmUgYSBwYWdlIHdoaWNoIGhhcyBubyBtb3JlIG1lc3NhZ2VzIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgb3IgaXMgc3RhbGUuSGV4ZWN1dGVfb3ZlcndlaWdodBABOG1lc3NhZ2Vfb3JpZ2lu0QMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABEHBhZ2U4ASRQYWdlSW5kZXgAARRpbmRleDgBHFQ6OlNpemUAATB3ZWlnaHRfbGltaXQVAQEYV2VpZ2h0AAE0eEV4ZWN1dGUgYW4gb3ZlcndlaWdodCBtZXNzYWdlLgBNAVRlbXBvcmFyeSBwcm9jZXNzaW5nIGVycm9ycyB3aWxsIGJlIHByb3BhZ2F0ZWQgd2hlcmVhcyBwZXJtYW5lbnQgZXJyb3JzIGFyZSB0cmVhdGVkVGFzIHN1Y2Nlc3MgY29uZGl0aW9uLgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC41AS0gYG1lc3NhZ2Vfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGFycml2ZWQuPQEtIGBwYWdlYDogVGhlIHBhZ2UgaW4gdGhlIHF1ZXVlIGluIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGlzIHNpdHRpbmcuCQEtIGBpbmRleGA6IFRoZSBpbmRleCBpbnRvIHRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZC5ZAS0gYHdlaWdodF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgYWxsb3dlZCB0byBiZSBjb25zdW1lZCBpbiB0aGUgZXhlY3V0aW9uRCAgb2YgdGhlIG1lc3NhZ2UuAPRCZW5jaG1hcmsgY29tcGxleGl0eSBjb25zaWRlcmF0aW9uczogTyhpbmRleCArIHdlaWdodF9saW1pdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtEDCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZVhBZ2dyZWdhdGVNZXNzYWdlT3JpZ2luAAEMEEhlcmUAAAAYUGFyZW50AAEAHFNpYmxpbmcEAKABGFBhcmFJZAACAADVAwyEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kGHBhbGxldBBDYWxsBARUAAEMSHNldF9vcGVyYXRpbmdfbW9kZQQBEG1vZGXZAwE0T3BlcmF0aW5nTW9kZQAABOhTZXQgdGhlIG9wZXJhdGluZyBtb2RlIGZvciBleHBvcnRpbmcgbWVzc2FnZXMgdG8gRXRoZXJldW0uOHJlZ2lzdGVyX3Rva2VuDAEgYXNzZXRfaWTJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABIG1ldGFkYXRh3QMBNEFzc2V0TWV0YWRhdGEAASRmZWVfYXNzZXQpAwEUQXNzZXQAARxJAUluaXRpYXRlcyB0aGUgcmVnaXN0cmF0aW9uIGZvciBhIFBvbGthZG90LW5hdGl2ZSB0b2tlbiBhcyBhIHdyYXBwZWQgRVJDMjAgdG9rZW4gb24kRXRoZXJldW0ujC0gYGFzc2V0X2lkYDogTG9jYXRpb24gb2YgdGhlIGFzc2V0QQEtIGBtZXRhZGF0YWA6IE1ldGFkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIGluc3RhbnRpYXRlZCBFUkMyMCBjb250cmFjdCBvbiBFdGhlcmV1bQBdAUFsbCBvcmlnaW5zIGFyZSBhbGxvd2VkLCBob3dldmVyIGBhc3NldF9pZGAgbXVzdCBiZSBhIGxvY2F0aW9uIG5lc3RlZCB3aXRoaW4gdGhlIG9yaWdpbkRjb25zZW5zdXMgc3lzdGVtLhxhZGRfdGlwCAEobWVzc2FnZV9pZOEDASRNZXNzYWdlSWQAARRhc3NldCkDARRBc3NldAACCEUBQWRkIGFuIGFkZGl0aW9uYWwgcmVsYXllciB0aXAgZm9yIGEgY29tbWl0dGVkIG1lc3NhZ2UgaWRlbnRpZmllZCBieSBgbWVzc2FnZV9pZGAuoFRoZSB0aXAgYXNzZXQgd2lsbCBiZSBzd2FwcGVkIGZvciBldGhlci4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu2QMMPHNub3dicmlkZ2VfY29yZThvcGVyYXRpbmdfbW9kZUhCYXNpY09wZXJhdGluZ01vZGUAAQgYTm9ybWFsAAAAGEhhbHRlZAABAADdAwg8c25vd2JyaWRnZV9jb3JlNEFzc2V0TWV0YWRhdGEAAAwBEG5hbWWdAQHAQm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8TUVUQURBVEFfRklFTERfTUFYX0xFTj4+AAEYc3ltYm9snQEBwEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPE1FVEFEQVRBX0ZJRUxEX01BWF9MRU4+PgABIGRlY2ltYWxzDAEIdTgAAOEDDDxzbm93YnJpZGdlX2NvcmUYcmV3YXJkJE1lc3NhZ2VJZAABCBxJbmJvdW5kBAAoAQx1NjQAAAAgT3V0Ym91bmQEACgBDHU2NAABAADlAww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc+kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AABIfFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4AVQFUaGlzIHdpbGwgcmV0dXJuIGBPa2AgaW4gYWxsIGNpcmN1bXN0YW5jZXMuIFRvIGRldGVybWluZSB0aGUgc3VjY2VzcyBvZiB0aGUgYmF0Y2gsIGFuMQFldmVudCBpcyBkZXBvc2l0ZWQuIElmIGEgY2FsbCBmYWlsZWQgYW5kIHRoZSBiYXRjaCB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gdGhlVQFgQmF0Y2hJbnRlcnJ1cHRlZGAgZXZlbnQgaXMgZGVwb3NpdGVkLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjYWxscyBtYWRlTQFhbmQgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgY2FsbC4gSWYgYWxsIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgYEJhdGNoQ29tcGxldGVkYExldmVudCBpcyBkZXBvc2l0ZWQuNGFzX2Rlcml2YXRpdmUIARRpbmRleO0DAQx1MTYAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABNNxTZW5kIGEgY2FsbCB0aHJvdWdoIGFuIGluZGV4ZWQgcHNldWRvbnltIG9mIHRoZSBzZW5kZXIuAFUBRmlsdGVyIGZyb20gb3JpZ2luIGFyZSBwYXNzZWQgYWxvbmcuIFRoZSBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB3aXRoIGFuIG9yaWdpbiB3aGljaLx1c2UgdGhlIHNhbWUgZmlsdGVyIGFzIHRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsLgBFAU5PVEU6IElmIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFueSBhY2NvdW50LWJhc2VkIGZpbHRlcmluZyBpcyBub3QgaG9ub3JlZCAoaS5lLmEBYmVjYXVzZSB5b3UgZXhwZWN0IGBwcm94eWAgdG8gaGF2ZSBiZWVuIHVzZWQgcHJpb3IgaW4gdGhlIGNhbGwgc3RhY2sgYW5kIHlvdSBkbyBub3Qgd2FudFEBdGhlIGNhbGwgcmVzdHJpY3Rpb25zIHRvIGFwcGx5IHRvIGFueSBzdWItYWNjb3VudHMpLCB0aGVuIHVzZSBgYXNfbXVsdGlfdGhyZXNob2xkXzFgfGluIHRoZSBNdWx0aXNpZyBwYWxsZXQgaW5zdGVhZC4A9E5PVEU6IFByaW9yIHRvIHZlcnNpb24gKjEyLCB0aGlzIHdhcyBjYWxsZWQgYGFzX2xpbWl0ZWRfc3ViYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiRiYXRjaF9hbGwEARRjYWxsc+kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxjIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLixmb3JjZV9iYXRjaAQBFGNhbGxz6QMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABDR8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLtRVbmxpa2UgYGJhdGNoYCwgaXQgYWxsb3dzIGVycm9ycyBhbmQgd29uJ3QgaW50ZXJydXB0LgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBNAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sd2l0aF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodBUBARhXZWlnaHQABRjERGlzcGF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBzcGVjaWZpZWQgd2VpZ2h0LgAtAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbhSb290IG9yaWdpbiB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uHGlmX2Vsc2UIARBtYWluIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABIGZhbGxiYWNrIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAGXBUBRGlzcGF0Y2ggYSBmYWxsYmFjayBjYWxsIGluIHRoZSBldmVudCB0aGUgbWFpbiBjYWxsIGZhaWxzIHRvIGV4ZWN1dGUusE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAORUaGlzIGZ1bmN0aW9uIGZpcnN0IGF0dGVtcHRzIHRvIGRpc3BhdGNoIHRoZSBgbWFpbmAgY2FsbC7USWYgdGhlIGBtYWluYCBjYWxsIGZhaWxzLCB0aGUgYGZhbGxiYWNrYCBpcyBhdHRlbXRlZC4VAWlmIHRoZSBmYWxsYmFjayBpcyBzdWNjZXNzZnVsbHkgZGlzcGF0Y2hlZCwgdGhlIHdlaWdodHMgb2YgYm90aCBjYWxscyUBYXJlIGFjY3VtdWxhdGVkIGFuZCBhbiBldmVudCBjb250YWluaW5nIHRoZSBtYWluIGNhbGwgZXJyb3IgaXMgZGVwb3NpdGVkLgDcSW4gdGhlIGV2ZW50IG9mIGEgZmFsbGJhY2sgZmFpbHVyZSB0aGUgd2hvbGUgY2FsbCBmYWlsc2h3aXRoIHRoZSB3ZWlnaHRzIHJldHVybmVkLgBBAS0gYG1haW5gOiBUaGUgbWFpbiBjYWxsIHRvIGJlIGRpc3BhdGNoZWQuIFRoaXMgaXMgdGhlIHByaW1hcnkgYWN0aW9uIHRvIGV4ZWN1dGUuPQEtIGBmYWxsYmFja2A6IFRoZSBmYWxsYmFjayBjYWxsIHRvIGJlIGRpc3BhdGNoZWQgaW4gY2FzZSB0aGUgYG1haW5gIGNhbGwgZmFpbHMuAEQjIyBEaXNwYXRjaCBMb2dpY0EBLSBJZiB0aGUgb3JpZ2luIGlzIGByb290YCwgYm90aCB0aGUgbWFpbiBhbmQgZmFsbGJhY2sgY2FsbHMgYXJlIGV4ZWN1dGVkIHdpdGhvdXR4ICBhcHBseWluZyBhbnkgb3JpZ2luIGZpbHRlcnMuSQEtIElmIHRoZSBvcmlnaW4gaXMgbm90IGByb290YCwgdGhlIG9yaWdpbiBmaWx0ZXIgaXMgYXBwbGllZCB0byBib3RoIHRoZSBgbWFpbmAgYW5kTCAgYGZhbGxiYWNrYCBjYWxscy4ALCMjIFVzZSBDYXNlWQEtIFNvbWUgdXNlIGNhc2VzIG1pZ2h0IGludm9sdmUgc3VibWl0dGluZyBhIGBiYXRjaGAgdHlwZSBjYWxsIGluIGVpdGhlciBtYWluLCBmYWxsYmFjayggIG9yIGJvdGguUGRpc3BhdGNoX2FzX2ZhbGxpYmxlCAEkYXNfb3JpZ2lu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLukDAAACIADtAwAABQQA8QMIaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lME9yaWdpbkNhbGxlcgABFBhzeXN0ZW0EAPUDAXRmcmFtZV9zeXN0ZW06Ok9yaWdpbjxSdW50aW1lPgAAACxQb2xrYWRvdFhjbQQA+QMBSHBhbGxldF94Y206Ok9yaWdpbgAfAChDdW11bHVzWGNtBAD9AwFoY3VtdWx1c19wYWxsZXRfeGNtOjpPcmlnaW4AIAAcT3JpZ2lucwQAAQQBdHBhbGxldF9jdXN0b21fb3JpZ2luczo6T3JpZ2luAD8AGFJldml2ZQQABQQBeHBhbGxldF9yZXZpdmU6Ok9yaWdpbjxSdW50aW1lPgBaAAD1Aww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaCRSYXdPcmlnaW4EJEFjY291bnRJZAEEARAQUm9vdAAAABhTaWduZWQEAAQBJEFjY291bnRJZAABABBOb25lAAIAKEF1dGhvcml6ZWQAAwAA+QMMKHBhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCAxYY20EAB0CASBMb2NhdGlvbgAAACBSZXNwb25zZQQAHQIBIExvY2F0aW9uAAEAAP0DDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCBRSZWxheQAAAEBTaWJsaW5nUGFyYWNoYWluBACgARhQYXJhSWQAAQAAAQQUaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lKGdvdmVybmFuY2Ucb3JpZ2luc1RwYWxsZXRfY3VzdG9tX29yaWdpbnMYT3JpZ2luAAE8MFN0YWtpbmdBZG1pbgAAACRUcmVhc3VyZXIAAQA8RmVsbG93c2hpcEFkbWluAAIAMEdlbmVyYWxBZG1pbgADADBBdWN0aW9uQWRtaW4ABAAoTGVhc2VBZG1pbgAFAExSZWZlcmVuZHVtQ2FuY2VsbGVyAAYAQFJlZmVyZW5kdW1LaWxsZXIABwAsU21hbGxUaXBwZXIACAAkQmlnVGlwcGVyAAkAMFNtYWxsU3BlbmRlcgAKADRNZWRpdW1TcGVuZGVyAAsAKEJpZ1NwZW5kZXIADABEV2hpdGVsaXN0ZWRDYWxsZXIADQA0V2lzaEZvckNoYW5nZQAOAAAFBAw0cGFsbGV0X3Jldml2ZRhwYWxsZXQYT3JpZ2luBARUAQkEAQQ4RXRoVHJhbnNhY3Rpb24EAAQBMFQ6OkFjY291bnRJZAAAAAAJBAhoYXNzZXRfaHViX3BvbGthZG90X3J1bnRpbWUcUnVudGltZQAAAAANBAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBBDYWxsBARUAAEUUGFzX211bHRpX3RocmVzaG9sZF8xCAFEb3RoZXJfc2lnbmF0b3JpZXNhAQFEVmVjPFQ6OkFjY291bnRJZD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAMFEBSW1tZWRpYXRlbHkgZGlzcGF0Y2ggYSBtdWx0aS1zaWduYXR1cmUgY2FsbCB1c2luZyBhIHNpbmdsZSBhcHByb3ZhbCBmcm9tIHRoZSBjYWxsZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4APQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlAQFtdWx0aS1zaWduYXR1cmUsIGJ1dCBkbyBub3QgcGFydGljaXBhdGUgaW4gdGhlIGFwcHJvdmFsIHByb2Nlc3MuiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4AuFJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdC4ANCMjIENvbXBsZXhpdHkZAU8oWiArIEMpIHdoZXJlIFogaXMgdGhlIGxlbmd0aCBvZiB0aGUgY2FsbCBhbmQgQyBpdHMgZXhlY3V0aW9uIHdlaWdodC4gYXNfbXVsdGkUASR0aHJlc2hvbGTtAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNhAQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQRBAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAShtYXhfd2VpZ2h0FQEBGFdlaWdodAABqFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA9ASoqSWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpcyBtZXQgKGluY2x1ZGluZyB0aGUgc2VuZGVyJ3MgYXBwcm92YWwpLCB0aGlzIHdpbGxFAWltbWVkaWF0ZWx5IGV4ZWN1dGUgdGhlIGNhbGwuKiogVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZXhlY3V0ZSBhIG11bHRpc2lnIGNhbGwgLcBgYXBwcm92ZV9hc19tdWx0aWAgd2lsbCBuZXZlciB0cmlnZ2VyIGV4ZWN1dGlvbi4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4ATQFOT1RFOiBGb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyAobm90IHRoZSBmaW5hbCBhcHByb3ZhbCksIHlvdSBzaG91bGQgZ2VuZXJhbGx5IHVzZUUBYGFwcHJvdmVfYXNfbXVsdGlgIGluc3RlYWQsIHNpbmNlIGl0IG9ubHkgcmVxdWlyZXMgYSBoYXNoIG9mIHRoZSBjYWxsIGFuZCBpcyBtb3JlKGVmZmljaWVudC4AWQFSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQgaWYgYHRocmVzaG9sZGAgaXMgZXhhY3RseSBgMWAuIE90aGVyd2lzZVUBb24gc3VjY2VzcywgcmVzdWx0IGlzIGBPa2AgYW5kIHRoZSByZXN1bHQgZnJvbSB0aGUgaW50ZXJpb3IgY2FsbCwgaWYgaXQgd2FzIGV4ZWN1dGVkLNxtYXkgYmUgZm91bmQgaW4gdGhlIGRlcG9zaXRlZCBgTXVsdGlzaWdFeGVjdXRlZGAgZXZlbnQuADQjIyBDb21wbGV4aXR5UC0gYE8oUyArIFogKyBDYWxsKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuIQEtIE9uZSBjYWxsIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhaKWAgd2hlcmUgYFpgIGlzIHR4LWxlbi68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQubC0gVGhlIHdlaWdodCBvZiB0aGUgYGNhbGxgLk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC5AYXBwcm92ZV9hc19tdWx0aRQBJHRocmVzaG9sZO0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc2EBAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludBEEAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQABKG1heF93ZWlnaHQVAQEYV2VpZ2h0AAKYVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuADkBKipUaGlzIGZ1bmN0aW9uIHdpbGwgTkVWRVIgZXhlY3V0ZSB0aGUgY2FsbCwgZXZlbiBpZiB0aGUgYXBwcm92YWwgdGhyZXNob2xkIGlzUQFyZWFjaGVkLioqIEl0IG9ubHkgcmVnaXN0ZXJzIGFwcHJvdmFsLiBUbyBhY3R1YWxseSBleGVjdXRlIHRoZSBjYWxsLCBgYXNfbXVsdGlgIG11c3TwYmUgY2FsbGVkIHdpdGggdGhlIGZ1bGwgY2FsbCBkYXRhIGJ5IGFueSBvZiB0aGUgc2lnbmF0b3JpZXMuAE0BVGhpcyBmdW5jdGlvbiBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGBhc19tdWx0aWAgZm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgc2luY2UgaXTQb25seSByZXF1aXJlcyB0aGUgY2FsbCBoYXNoLCBub3QgdGhlIGZ1bGwgY2FsbCBkYXRhLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAD0BTk9URTogVG8gZXhlY3V0ZSB0aGUgY2FsbCBhZnRlciBhcHByb3ZhbHMgYXJlIGdhdGhlcmVkLCBhbnkgc2lnbmF0b3J5IG11c3QgY2FsbCkBYGFzX211bHRpYCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YS4gVGhpcyBmdW5jdGlvbiBjYW5ub3QgZXhlY3V0ZSB0aGUgY2FsbC4ANCMjIENvbXBsZXhpdHkkLSBgTyhTKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50Lk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC48Y2FuY2VsX2FzX211bHRpEAEkdGhyZXNob2xk7QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzYQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkdGltZXBvaW50FQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQADVFUBQ2FuY2VsIGEgcHJlLWV4aXN0aW5nLCBvbi1nb2luZyBtdWx0aXNpZyB0cmFuc2FjdGlvbi4gQW55IGRlcG9zaXQgcmVzZXJ2ZWQgcHJldmlvdXNsecRmb3IgdGhpcyBvcGVyYXRpb24gd2lsbCBiZSB1bnJlc2VydmVkIG9uIHN1Y2Nlc3MuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5dAS0gYHRpbWVwb2ludGA6IFRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmQgdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbHh0cmFuc2FjdGlvbiBmb3IgdGhpcyBkaXNwYXRjaC7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLjAtIE9uZSBldmVudC6ELSBJL086IDEgcmVhZCBgTyhTKWAsIG9uZSByZW1vdmUucC0gU3RvcmFnZTogcmVtb3ZlcyBvbmUgaXRlbS4wcG9rZV9kZXBvc2l0DAEkdGhyZXNob2xk7QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzYQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0ABDT0UG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgYW4gZXhpc3RpbmcgbXVsdGlzaWcgb3BlcmF0aW9uLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBtdXN0IGJlIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3Igb2ZcdGhlIG11bHRpc2lnIG9wZXJhdGlvbi4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuABkBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgbmVlZGVkIGZvciB0aGlzIG11bHRpc2lnLj0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZSwgIG11bHRpc2lnLgUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdGhpcyBkZXBvc2l0IGlzIHJlc2VydmVkIGZvci4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhEEBBhPcHRpb24EBFQBFQQBCBBOb25lAAAAEFNvbWUEABUEAAABAAAVBAg8cGFsbGV0X211bHRpc2lnJFRpbWVwb2ludAQsQmxvY2tOdW1iZXIBOAAIARhoZWlnaHQ4ASxCbG9ja051bWJlcgABFGluZGV4OAEMdTMyAAAZBAwwcGFsbGV0X3Byb3h5GHBhbGxldBBDYWxsBARUAAEsFHByb3h5DAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZR0EAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAkTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXNlZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LiRhZGRfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZSEEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkRQFSZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIgdGhhdCBpcyBhYmxlIHRvIG1ha2UgY2FsbHMgb24gaXRzIGJlaGFsZi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoRAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byBtYWtlIGEgcHJveHku/C0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdGhpcyBwcm94eSBhY2NvdW50Lk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4wcmVtb3ZlX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGUhBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgACHKhVbnJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczolAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byByZW1vdmUgYXMgYSBwcm94eS5BAS0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIHRoZSByZW1vdmVkIHByb3h5IGFjY291bnQuOHJlbW92ZV9wcm94aWVzAAMYtFVucmVnaXN0ZXIgYWxsIHByb3h5IGFjY291bnRzIGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAF0BV0FSTklORzogVGhpcyBtYXkgYmUgY2FsbGVkIG9uIGFjY291bnRzIGNyZWF0ZWQgYnkgYGNyZWF0ZV9wdXJlYCwgaG93ZXZlciBpZiBkb25lLCB0aGVuWQF0aGUgdW5yZXNlcnZlZCBmZWVzIHdpbGwgYmUgaW5hY2Nlc3NpYmxlLiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKixjcmVhdGVfcHVyZQwBKHByb3h5X3R5cGUhBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABFGluZGV47QMBDHUxNgAESDkBU3Bhd24gYSBmcmVzaCBuZXcgYWNjb3VudCB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb3RoZXJ3aXNlIGluYWNjZXNzaWJsZSwgYW5k/GluaXRpYWxpemUgaXQgd2l0aCBhIHByb3h5IG9mIGBwcm94eV90eXBlYCBmb3IgYG9yaWdpbmAgc2VuZGVyLgBsUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4uAFEBLSBgcHJveHlfdHlwZWA6IFRoZSB0eXBlIG9mIHRoZSBwcm94eSB0aGF0IHRoZSBzZW5kZXIgd2lsbCBiZSByZWdpc3RlcmVkIGFzIG92ZXIgdGhlTQFuZXcgYWNjb3VudC4gVGhpcyB3aWxsIGFsbW9zdCBhbHdheXMgYmUgdGhlIG1vc3QgcGVybWlzc2l2ZSBgUHJveHlUeXBlYCBwb3NzaWJsZSB0b3hhbGxvdyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS5RAS0gYGluZGV4YDogQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCwgaW4gY2FzZSB0aGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgc2FtZV0BdHJhbnNhY3Rpb24gKGUuZy4gd2l0aCBgdXRpbGl0eTo6YmF0Y2hgKS4gVW5sZXNzIHlvdSdyZSB1c2luZyBgYmF0Y2hgIHlvdSBwcm9iYWJseSBqdXN0QHdhbnQgdG8gdXNlIGAwYC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uAFEBRmFpbHMgd2l0aCBgRHVwbGljYXRlYCBpZiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGluIHRoaXMgdHJhbnNhY3Rpb24sIGZyb20gdGhlmHNhbWUgc2VuZGVyLCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuAORGYWlscyBpZiB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGZ1bmRzIHRvIHBheSBmb3IgZGVwb3NpdC4ka2lsbF9wdXJlFAEcc3Bhd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZSEEATBUOjpQcm94eVR5cGUAARRpbmRleO0DAQx1MTYAARhoZWlnaHRkAURCbG9ja051bWJlckZvcjxUPgABJGV4dF9pbmRleGQBDHUzMgAFQKBSZW1vdmVzIGEgcHJldmlvdXNseSBzcGF3bmVkIHB1cmUgcHJveHkuAEkBV0FSTklORzogKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiogQW55IGZ1bmRzIGhlbGQgaW4gaXQgd2lsbCBiZTRpbmFjY2Vzc2libGUuAFkBUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4sIGFuZCB0aGUgc2VuZGVyIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBieSBhIGNhbGwgdG+wYGNyZWF0ZV9wdXJlYCB3aXRoIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4AVQEtIGBzcGF3bmVyYDogVGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNhbGxlZCBgY3JlYXRlX3B1cmVgIHRvIGNyZWF0ZSB0aGlzIGFjY291bnQuVQEtIGBpbmRleGA6IFRoZSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLiBQcm9iYWJseSBgMGAuCQEtIGBwcm94eV90eXBlYDogVGhlIHByb3h5IHR5cGUgb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC5FAS0gYGhlaWdodGA6IFRoZSBoZWlnaHQgb2YgdGhlIGNoYWluIHdoZW4gdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLlEBLSBgZXh0X2luZGV4YDogVGhlIGV4dHJpbnNpYyBpbmRleCBpbiB3aGljaCB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuADUBRmFpbHMgd2l0aCBgTm9QZXJtaXNzaW9uYCBpbiBjYXNlIHRoZSBjYWxsZXIgaXMgbm90IGEgcHJldmlvdXNseSBjcmVhdGVkIHB1cmX4YWNjb3VudCB3aG9zZSBgY3JlYXRlX3B1cmVgIGNhbGwgaGFzIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4gYW5ub3VuY2UIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2hAATRDYWxsSGFzaE9mPFQ+AAY8BQFQdWJsaXNoIHRoZSBoYXNoIG9mIGEgcHJveHktY2FsbCB0aGF0IHdpbGwgYmUgbWFkZSBpbiB0aGUgZnV0dXJlLgBdAVRoaXMgbXVzdCBiZSBjYWxsZWQgc29tZSBudW1iZXIgb2YgYmxvY2tzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyBgcHJveHlgIGlzIGF0dGVtcHRlZCUBaWYgdGhlIGRlbGF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJveHkgcmVsYXRpb25zaGlwIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgARAU5vIG1vcmUgdGhhbiBgTWF4UGVuZGluZ2AgYW5ub3VuY2VtZW50cyBtYXkgYmUgbWFkZSBhdCBhbnkgb25lIHRpbWUuAAkBVGhpcyB3aWxsIHRha2UgYSBkZXBvc2l0IG9mIGBBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yYCBhcyB3ZWxsIGFzGQFgQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VgIGlmIHRoZXJlIGFyZSBubyBvdGhlciBwZW5kaW5nIGFubm91bmNlbWVudHMuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgcHJveHkgb2YgYHJlYWxgLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZW1vdmVfYW5ub3VuY2VtZW50CAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoQAE0Q2FsbEhhc2hPZjxUPgAHKHBSZW1vdmUgYSBnaXZlbiBhbm5vdW5jZW1lbnQuAFkBTWF5IGJlIGNhbGxlZCBieSBhIHByb3h5IGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGV5IHByZXZpb3VzbHkgYW5ub3VuY2VkIGFuZCByZXR1cm4wdGhlIGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVqZWN0X2Fubm91bmNlbWVudAgBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2hAATRDYWxsSGFzaE9mPFQ+AAgosFJlbW92ZSB0aGUgZ2l2ZW4gYW5ub3VuY2VtZW50IG9mIGEgZGVsZWdhdGUuAGEBTWF5IGJlIGNhbGxlZCBieSBhIHRhcmdldCAocHJveGllZCkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoYXQgb25lIG9mIHRoZWlyIGRlbGVnYXRlcyUBKGBkZWxlZ2F0ZWApIGhhcyBhbm5vdW5jZWQgdGhleSB3YW50IHRvIGV4ZWN1dGUuIFRoZSBkZXBvc2l0IGlzIHJldHVybmVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOvQtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRoYXQgcHJldmlvdXNseSBhbm5vdW5jZWQgdGhlIGNhbGwuvC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUuPHByb3h5X2Fubm91bmNlZBABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlHQQBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ACSxNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3JpemVkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgCoUmVtb3ZlcyBhbnkgY29ycmVzcG9uZGluZyBhbm5vdW5jZW1lbnQocykuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4wcG9rZV9kZXBvc2l0AAogSQFQb2tlIC8gQWRqdXN0IGRlcG9zaXRzIG1hZGUgZm9yIHByb3hpZXMgYW5kIGFubm91bmNlbWVudHMgYmFzZWQgb24gY3VycmVudCB2YWx1ZXMuDQFUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHBvc3NpYmx5IGxvd2VyIHRoZWlyIGxvY2tlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4dBAQYT3B0aW9uBARUASEEAQgQTm9uZQAAABBTb21lBAAhBAAAAQAAIQQIaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lJFByb3h5VHlwZQABNAxBbnkAAAAsTm9uVHJhbnNmZXIAAQAsQ2FuY2VsUHJveHkAAgAYQXNzZXRzAAMAKEFzc2V0T3duZXIABAAwQXNzZXRNYW5hZ2VyAAUAIENvbGxhdG9yAAYAKEdvdmVybmFuY2UABwAcU3Rha2luZwAIADxOb21pbmF0aW9uUG9vbHMACQAcQXVjdGlvbgAKAEBQYXJhUmVnaXN0cmF0aW9uAAsAPFN0YWtpbmdPcGVyYXRvcgAMAAAlBAw4cGFsbGV0X2luZGljZXMYcGFsbGV0EENhbGwEBFQAARgUY2xhaW0EARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAAMJhBc3NpZ24gYW4gcHJldmlvdXNseSB1bmFzc2lnbmVkIGluZGV4LgDcUGF5bWVudDogYERlcG9zaXRgIGlzIHJlc2VydmVkIGZyb20gdGhlIHNlbmRlciBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAPAtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSBjbGFpbWVkLiBUaGlzIG11c3Qgbm90IGJlIGluIHVzZS4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4gdHJhbnNmZXIIAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEwXQFBc3NpZ24gYW4gaW5kZXggYWxyZWFkeSBvd25lZCBieSB0aGUgc2VuZGVyIHRvIGFub3RoZXIgYWNjb3VudC4gVGhlIGJhbGFuY2UgcmVzZXJ2YXRpb264aXMgZWZmZWN0aXZlbHkgdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACUBLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgcmUtYXNzaWduZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLl0BLSBgbmV3YDogdGhlIG5ldyBvd25lciBvZiB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiBpdCBpcyBlcXVhbCB0byBzZW5kZXIuAJBFbWl0cyBgSW5kZXhBc3NpZ25lZGAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuEGZyZWUEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAACMJRGcmVlIHVwIGFuIGluZGV4IG93bmVkIGJ5IHRoZSBzZW5kZXIuAF0BUGF5bWVudDogQW55IHByZXZpb3VzIGRlcG9zaXQgcGxhY2VkIGZvciB0aGUgaW5kZXggaXMgdW5yZXNlcnZlZCBpbiB0aGUgc2VuZGVyIGFjY291bnQuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBvd24gdGhlIGluZGV4LgANAS0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGZyZWVkLiBUaGlzIG11c3QgYmUgb3duZWQgYnkgdGhlIHNlbmRlci4AhEVtaXRzIGBJbmRleEZyZWVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC44Zm9yY2VfdHJhbnNmZXIMAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEYZnJlZXplXQEBEGJvb2wAAzRVAUZvcmNlIGFuIGluZGV4IHRvIGFuIGFjY291bnQuIFRoaXMgZG9lc24ndCByZXF1aXJlIGEgZGVwb3NpdC4gSWYgdGhlIGluZGV4IGlzIGFscmVhZHnoaGVsZCwgdGhlbiBhbnkgZGVwb3NpdCBpcyByZWltYnVyc2VkIHRvIGl0cyBjdXJyZW50IG93bmVyLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgCkLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgKHJlLSlhc3NpZ25lZC5dAS0gYG5ld2A6IHRoZSBuZXcgb3duZXIgb2YgdGhlIGluZGV4LiBUaGlzIGZ1bmN0aW9uIGlzIGEgbm8tb3AgaWYgaXQgaXMgZXF1YWwgdG8gc2VuZGVyLkEBLSBgZnJlZXplYDogaWYgc2V0IHRvIGB0cnVlYCwgd2lsbCBmcmVlemUgdGhlIGluZGV4IHNvIGl0IGNhbm5vdCBiZSB0cmFuc2ZlcnJlZC4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4YZnJlZXplBAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgABDBBAUZyZWV6ZSBhbiBpbmRleCBzbyBpdCB3aWxsIGFsd2F5cyBwb2ludCB0byB0aGUgc2VuZGVyIGFjY291bnQuIFRoaXMgY29uc3VtZXMgdGhlIGRlcG9zaXQuAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBoYXZlIGFsbm9uLWZyb3plbiBhY2NvdW50IGBpbmRleGAuAKwtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSBmcm96ZW4gaW4gcGxhY2UuAIhFbWl0cyBgSW5kZXhGcm96ZW5gIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjBwb2tlX2RlcG9zaXQEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAFKJxQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBhbiBpbmRleC4AWQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGhhdmUgYWxub24tZnJvemVuIGFjY291bnQgYGluZGV4YC4AWQFUaGUgdHJhbnNhY3Rpb24gZmVlcyBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgaXMgY2hhbmdlZCBhZnRlciBwb2tpbmcvcmVjb25zaWRlcmF0aW9uLgD8LSBgaW5kZXhgOiB0aGUgaW5kZXggd2hvc2UgZGVwb3NpdCBpcyB0byBiZSBwb2tlZC9yZWNvbnNpZGVyZWQuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4pBAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VZAQEoVDo6QmFsYW5jZQAATOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudF0BARBib29sAAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5dAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlVQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50XQEBEGJvb2wAASRpc19mcm96ZW5dAQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybl0BARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2VZAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVdAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzLQQByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4tBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARAEUwAABAAxBAEYVmVjPFQ+AAAxBAAAAhAANQQMOHBhbGxldF91bmlxdWVzGHBhbGxldBBDYWxsCARUAARJAAFoGGNyZWF0ZQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AABACQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4ArGBJdGVtRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6YQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBjb2xsZWN0aW9uLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuRQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABMGZyZWVfaG9sZGluZ10BARBib29sAAFEGQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uAKxUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAEkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgaXRlbS4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlLjkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uIG9mIGl0ZW1zLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyNCAgcGVybWlzc2lvbnMhAW92ZXIgdGhpcyBpdGVtLCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgHGRlc3Ryb3kIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcd2l0bmVzczkEAThEZXN0cm95V2l0bmVzcwACPJxEZXN0cm95IGEgY29sbGVjdGlvbiBvZiBmdW5naWJsZSBpdGVtcy4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVob3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4ABQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gYmUgZGVzdHJveWVkLjEBLSBgd2l0bmVzc2A6IEluZm9ybWF0aW9uIG9uIHRoZSBpdGVtcyBtaW50ZWQgaW4gdGhlIGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBiZSBjb3JyZWN0LgCgRW1pdHMgYERlc3Ryb3llZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgBkV2VpZ2h0OiBgTyhuICsgbSlgIHdoZXJlOlQtIGBuID0gd2l0bmVzcy5pdGVtc2B4LSBgbSA9IHdpdG5lc3MuaXRlbV9tZXRhZGF0YXNgaC0gYGEgPSB3aXRuZXNzLmF0dHJpYnV0ZXNgEG1pbnQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAyygTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLsgtIGBpdGVtYDogVGhlIGl0ZW0gdmFsdWUgb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLtgtIGBiZW5lZmljaWFyeWA6IFRoZSBpbml0aWFsIG93bmVyIG9mIHRoZSBtaW50ZWQgaXRlbS4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgEGJ1cm4MAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABLGNoZWNrX293bmVyPQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ABDxYRGVzdHJveSBhIHNpbmdsZSBpdGVtLgD0T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgYmUgZWl0aGVyOoAtIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gO2gtIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOwDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGJ1cm5lZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGJ1cm5lZC5RAS0gYGNoZWNrX293bmVyYDogSWYgYFNvbWVgIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgd2l0aCBgV3JvbmdPd25lcmAgdW5sZXNzIHRoZXggIGl0ZW0gaXMgb3duZWQgYnkgdGhpcyB2YWx1ZS4AtEVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLgA4V2VpZ2h0OiBgTygxKWB8TW9kZXM6IGBjaGVja19vd25lci5pc19zb21lKClgLiB0cmFuc2ZlcgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAVEwE1vdmUgYW4gaXRlbSBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgC0VGhpcyByZXNldHMgdGhlIGFwcHJvdmVkIGFjY291bnQgb2YgdGhlIGl0ZW0uAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6gC0gdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA7aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7NQEtIHRoZSBhcHByb3ZlZCBkZWxlZ2F0ZSBmb3IgdGhlIGBpdGVtYCAoaW4gdGhpcyBjYXNlLCB0aGUgYXBwcm92YWwgaXMgcmVzZXQpLgAoQXJndW1lbnRzOvQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQuxC0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7cLSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIHJlY2VpdmUgb3duZXJzaGlwIG9mIHRoZSBpdGVtLgBQRW1pdHMgYFRyYW5zZmVycmVkYC4AOFdlaWdodDogYE8oMSlgJHJlZGVwb3NpdAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRpdGVtc0EEAThWZWM8VDo6SXRlbUlkPgAGRJhSZWV2YWx1YXRlIHRoZSBkZXBvc2l0cyBvbiBzb21lIGl0ZW1zLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuALAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gdG8gYmUgZnJvemVuLikBLSBgaXRlbXNgOiBUaGUgaXRlbXMgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgZGVwb3NpdHMgd2lsbCBiZSByZWV2YWx1YXRlZC4ALQFOT1RFOiBUaGlzIGV4aXN0cyBhcyBhIGJlc3QtZWZmb3J0IGZ1bmN0aW9uLiBBbnkgaXRlbXMgd2hpY2ggYXJlIHVua25vd24gb3I5AWluIHRoZSBjYXNlIHRoYXQgdGhlIG93bmVyIGFjY291bnQgZG9lcyBub3QgaGF2ZSByZXNlcnZhYmxlIGZ1bmRzIHRvIHBheSBmb3IgYU0BZGVwb3NpdCBpbmNyZWFzZSBhcmUgaWdub3JlZC4gR2VuZXJhbGx5IHRoZSBvd25lciBpc24ndCBnb2luZyB0byBjYWxsIHRoaXMgb24gaXRlbXNVAXdob3NlIGV4aXN0aW5nIGRlcG9zaXQgaXMgbGVzcyB0aGFuIHRoZSByZWZyZXNoZWQgZGVwb3NpdCBhcyBpdCB3b3VsZCBvbmx5IGNvc3QgdGhlbSx4c28gaXQncyBvZiBsaXR0bGUgY29uc2VxdWVuY2UuAFkBSXQgd2lsbCBzdGlsbCByZXR1cm4gYW4gZXJyb3IgaW4gdGhlIGNhc2UgdGhhdCB0aGUgY29sbGVjdGlvbiBpcyB1bmtub3duIG9mIHRoZSBzaWduZXJwaXMgbm90IHBlcm1pdHRlZCB0byBjYWxsIGl0LgBgV2VpZ2h0OiBgTyhpdGVtcy5sZW4oKSlgGGZyZWV6ZQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAcoyERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGZyb3plbi6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAgoqFJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0aGF3ZWQusC0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgRGZyZWV6ZV9jb2xsZWN0aW9uBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAJJPxEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuALAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gdG8gYmUgZnJvemVuLgBkRW1pdHMgYENvbGxlY3Rpb25Gcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWA8dGhhd19jb2xsZWN0aW9uBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAKJNxSZS1hbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciBhIHdob2xlIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSB0aGF3ZWQuAGRFbWl0cyBgQ29sbGVjdGlvblRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACyyEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A9C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSBvd25lciBzaG91bGQgYmUgY2hhbmdlZC4JAS0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZXkgbXVzdCBoYXZlIGNhbGxlZEkBICBgc2V0X2FjY2VwdF9vd25lcnNoaXBgIHdpdGggYGNvbGxlY3Rpb25gIGluIG9yZGVyIGZvciB0aGlzIG9wZXJhdGlvbiB0byBzdWNjZWVkLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADDDUQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIHRlYW0gc2hvdWxkIGJlIGNoYW5nZWQuuC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgY29sbGVjdGlvbi6wLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi7ALSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGNvbGxlY3Rpb24uAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgANOBUBQXBwcm92ZSBhbiBpdGVtIHRvIGJlIHRyYW5zZmVycmVkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAE0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIG11c3QgYmX4ZWl0aGVyIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gIG9yIHRoZSBhZG1pbiBvZiB0aGUgY29sbGVjdGlvbi4ARQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci4VAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhkBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIHRoZSBpdGVtLgAZAUltcG9ydGFudCBOT1RFOiBUaGUgYGFwcHJvdmVkYCBhY2NvdW50IGdldHMgcmVzZXQgYWZ0ZXIgZWFjaCB0cmFuc2Zlci4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAAVBtYXliZV9jaGVja19kZWxlZ2F0ZT0EAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AA5AEQFDYW5jZWwgdGhlIHByaW9yIGFwcHJvdmFsIGZvciB0aGUgdHJhbnNmZXIgb2YgYW4gaXRlbSBieSBhIGRlbGVnYXRlLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjv8LSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA75C0gYFNpZ25lZGAgd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOwAoQXJndW1lbnRzOj0BLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIG9mIHdob3NlIGFwcHJvdmFsIHdpbGwgYmUgY2FuY2VsbGVkLg0BLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIG9mIHdob3NlIGFwcHJvdmFsIHdpbGwgYmUgY2FuY2VsbGVkLlEBLSBgbWF5YmVfY2hlY2tfZGVsZWdhdGVgOiBJZiBgU29tZWAgd2lsbCBlbnN1cmUgdGhhdCB0aGUgZ2l2ZW4gYWNjb3VudCBpcyB0aGUgb25lIHRvsCAgd2hpY2ggcGVybWlzc2lvbiBvZiB0cmFuc2ZlciBpcyBkZWxlZ2F0ZWQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYERmb3JjZV9pdGVtX3N0YXR1cxwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwZnJlZV9ob2xkaW5nXQEBEGJvb2wAASRpc19mcm96ZW5dAQEQYm9vbAAPQJRBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGl0ZW0uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtLpgtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBpdGVtLqAtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGl0ZW0umC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGl0ZW0uqC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBpdGVtLlEBLSBgZnJlZV9ob2xkaW5nYDogV2hldGhlciBhIGRlcG9zaXQgaXMgdGFrZW4gZm9yIGhvbGRpbmcgYW4gaXRlbSBvZiB0aGlzIGNvbGxlY3Rpb24uOQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgY29sbGVjdGlvbiBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDgRW1pdHMgYEl0ZW1TdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgaXRlbS4AOFdlaWdodDogYE8oMSlgNHNldF9hdHRyaWJ1dGUQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5nQEBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlfAF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AEESoU2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AUQFJZiB0aGUgb3JpZ2luIGlzIFNpZ25lZCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTopAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiAoa2V5LmxlbiArIHZhbHVlLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuADkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQuBQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0LogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuzC0gYHZhbHVlYDogVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgYXR0cmlidXRlLgBURW1pdHMgYEF0dHJpYnV0ZVNldGAuADhXZWlnaHQ6IGBPKDEpYDxjbGVhcl9hdHRyaWJ1dGUMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5nQEBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgAROLBDbGVhciBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLg0BLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuAGRFbWl0cyBgQXR0cmlidXRlQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRhdGFFBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuXQEBEGJvb2wAEkR0U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuADkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQu7C0gYGl0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuTQEtIGBkYXRhYDogVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBpdGVtLiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLjUBLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGUgbWV0YWRhdGEgc2hvdWxkIGJlIGZyb3plbiBhZ2FpbnN0IGZ1cnRoZXIgY2hhbmdlcy4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABM0fENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUcYGl0ZW1gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuAEEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBjbGVhci70LSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxzZXRfY29sbGVjdGlvbl9tZXRhZGF0YQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhRQQBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbl0BARBib29sABRAiFNldCB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAFkBSWYgdGhlIG9yaWdpbiBpcyBgU2lnbmVkYCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTr0YE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIGRhdGEubGVuYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgARAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byB1cGRhdGUuTQEtIGBkYXRhYDogVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBpdGVtLiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLjUBLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGUgbWV0YWRhdGEgc2hvdWxkIGJlIGZyb3plbiBhZ2FpbnN0IGZ1cnRoZXIgY2hhbmdlcy4AeEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWBkY2xlYXJfY29sbGVjdGlvbl9tZXRhZGF0YQQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAFTCQQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZkR0aGUgYGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuACUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgCIRW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBQc2V0X2FjY2VwdF9vd25lcnNoaXAEAUBtYXliZV9jb2xsZWN0aW9u5AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AFigRAVNldCAob3IgcmVzZXQpIHRoZSBhY2NlcHRhbmNlIG9mIG93bmVyc2hpcCBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQuAGEBT3JpZ2luIG11c3QgYmUgYFNpZ25lZGAgYW5kIGlmIGBtYXliZV9jb2xsZWN0aW9uYCBpcyBgU29tZWAsIHRoZW4gdGhlIHNpZ25lciBtdXN0IGhhdmUgYUxwcm92aWRlciByZWZlcmVuY2UuAFEBLSBgbWF5YmVfY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyc2hpcCB0aGUgc2lnbmVyIGlzYQEgIHdpbGxpbmcgdG8gYWNjZXB0LCBvciBpZiBgTm9uZWAsIGFuIGluZGljYXRpb24gdGhhdCB0aGUgc2lnbmVyIGlzIHdpbGxpbmcgdG8gYWNjZXB0IG5vXCAgb3duZXJzaGlwIHRyYW5zZmVyYWwuAIxFbWl0cyBgT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWRgLmRzZXRfY29sbGVjdGlvbl9tYXhfc3VwcGx5CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAFyzgU2V0IHRoZSBtYXhpbXVtIGFtb3VudCBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAOROb3RlOiBUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHN1Y2NlZWQgb25jZSBwZXIgY29sbGVjdGlvbi4A7C0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBjaGFuZ2UuEQEtIGBtYXhfc3VwcGx5YDogVGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgDURW1pdHMgYENvbGxlY3Rpb25NYXhTdXBwbHlTZXRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4kc2V0X3ByaWNlEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZUkEAVxPcHRpb248SXRlbVByaWNlPFQsIEk+PgABRHdoaXRlbGlzdGVkX2J1eWVyPQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AGCyUU2V0IChvciByZXNldCkgdGhlIHByaWNlIGZvciBhbiBpdGVtLgABAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIGFzc2V0IGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6gLSBgaXRlbWA6IFRoZSBpdGVtIHRvIHNldCB0aGUgcHJpY2UgZm9yLg0BLSBgcHJpY2VgOiBUaGUgcHJpY2UgZm9yIHRoZSBpdGVtLiBQYXNzIGBOb25lYCwgdG8gcmVzZXQgdGhlIHByaWNlLvQtIGBidXllcmA6IFJlc3RyaWN0cyB0aGUgYnV5IG9wZXJhdGlvbiB0byBhIHNwZWNpZmljIGFjY291bnQuAOxFbWl0cyBgSXRlbVByaWNlU2V0YCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBub3QgYE5vbmVgLuxFbWl0cyBgSXRlbVByaWNlUmVtb3ZlZGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgYE5vbmVgLiBidXlfaXRlbQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEkYmlkX3ByaWNlWQEBPEl0ZW1QcmljZTxULCBJPgAZJKhBbGxvd3MgdG8gYnV5IGFuIGl0ZW0gaWYgaXQncyB1cCBmb3Igc2FsZS4A+E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBub3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0urC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGUgc2VuZGVyIHdhbnRzIHRvIGJ1eS7YLSBgYmlkX3ByaWNlYDogVGhlIHByaWNlIHRoZSBzZW5kZXIgaXMgd2lsbGluZyB0byBwYXkuAHhFbWl0cyBgSXRlbUJvdWdodGAgb24gc3VjY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuOQQMOHBhbGxldF91bmlxdWVzFHR5cGVzOERlc3Ryb3lXaXRuZXNzAAAMARRpdGVtc2QBDHUzMgABOGl0ZW1fbWV0YWRhdGFzZAEMdTMyAAEoYXR0cmlidXRlc2QBDHUzMgAAPQQEGE9wdGlvbgQEVAEAAQgQTm9uZQAAABBTb21lBAAAAAABAABBBAAAAjgARQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABJBAQYT3B0aW9uBARUAVkBAQgQTm9uZQAAABBTb21lBABZAQAAAQAATQQMLHBhbGxldF9uZnRzGHBhbGxldBBDYWxsCARUAARJAAGcGGNyZWF0ZQgBFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhjb25maWdRBAFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgAAPAkBSXNzdWUgYSBuZXcgY29sbGVjdGlvbiBvZiBub24tZnVuZ2libGUgaXRlbXMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uAB0BVGhpcyBuZXcgY29sbGVjdGlvbiBoYXMgbm8gaXRlbXMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AJQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuAMRgQ29sbGVjdGlvbkRlcG9zaXRgIGZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQuACxQYXJhbWV0ZXJzOkUBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNomG1lbWJlciBvZiB0aGUgY29sbGVjdGlvbidzIGFkbWluIHRlYW0uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlCAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ1EEAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAE8GQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uAKxUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuADkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uIG9mIGl0ZW1zLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyWQEgIHBlcm1pc3Npb25zIG92ZXIgdGhpcyBpdGVtLCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5ggIGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzbQQBOERlc3Ryb3lXaXRuZXNzAAJEnERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDcTk9URTogVGhlIGNvbGxlY3Rpb24gbXVzdCBoYXZlIDAgaXRlbXMgdG8gYmUgZGVzdHJveWVkLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAHRXZWlnaHQ6IGBPKG0gKyBjICsgYSlgIHdoZXJlOngtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BwLSBgYyA9IHdpdG5lc3MuaXRlbV9jb25maWdzYGgtIGBhID0gd2l0bmVzcy5hdHRyaWJ1dGVzYBBtaW50EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARxtaW50X3RvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATB3aXRuZXNzX2RhdGFxBAHYT3B0aW9uPE1pbnRXaXRuZXNzPFQ6Okl0ZW1JZCwgRGVwb3NpdEJhbGFuY2VPZjxULCBJPj4+AANAoE1pbnQgYW4gaXRlbSBvZiBhIHBhcnRpY3VsYXIgY29sbGVjdGlvbi4AUQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgY29tcGx5IHdpdGggdGhlIGBtaW50X3NldHRpbmdzYCBydWxlcy4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuoC0gYGl0ZW1gOiBBbiBpZGVudGlmaWVyIG9mIHRoZSBuZXcgaXRlbS7gLSBgbWludF90b2A6IEFjY291bnQgaW50byB3aGljaCB0aGUgaXRlbSB3aWxsIGJlIG1pbnRlZC5FAS0gYHdpdG5lc3NfZGF0YWA6IFdoZW4gdGhlIG1pbnQgdHlwZSBpcyBgSG9sZGVyT2YoY29sbGVjdGlvbl9pZClgLCB0aGVuIHRoZSBvd25lZFkBICBpdGVtX2lkIGZyb20gdGhhdCBjb2xsZWN0aW9uIG5lZWRzIHRvIGJlIHByb3ZpZGVkIHdpdGhpbiB0aGUgd2l0bmVzcyBkYXRhIG9iamVjdC4gSWZhASAgdGhlIG1pbnQgcHJpY2UgaXMgc2V0LCB0aGVuIGl0IHNob3VsZCBiZSBhZGRpdGlvbmFsbHkgY29uZmlybWVkIGluIHRoZSBgd2l0bmVzc19kYXRhYC4AUQFOb3RlOiB0aGUgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIGBvcmlnaW5gIGFuZCBub3QgdGhlIGBvd25lcmAgb2YgdGhlIGBpdGVtYC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgKGZvcmNlX21pbnQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABHG1pbnRfdG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGl0ZW1fY29uZmlneQQBKEl0ZW1Db25maWcABDQFAU1pbnQgYW4gaXRlbSBvZiBhIHBhcnRpY3VsYXIgY29sbGVjdGlvbiBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uAF0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlbElzc3VlciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC6gLSBgaXRlbWA6IEFuIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLuAtIGBtaW50X3RvYDogQWNjb3VudCBpbnRvIHdoaWNoIHRoZSBpdGVtIHdpbGwgYmUgbWludGVkLqgtIGBpdGVtX2NvbmZpZ2A6IEEgY29uZmlnIG9mIHRoZSBuZXcgaXRlbS4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgEGJ1cm4IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAFLFhEZXN0cm95IGEgc2luZ2xlIGl0ZW0uAF0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0bGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGJ1cm5lZC6ALSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIGJ1cm5lZC4APEVtaXRzIGBCdXJuZWRgLgA4V2VpZ2h0OiBgTygxKWAgdHJhbnNmZXIMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAGOMBNb3ZlIGFuIGl0ZW0gZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjpoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC6ULSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zQQQBOFZlYzxUOjpJdGVtSWQ+AAdEnFJlLWV2YWx1YXRlIHRoZSBkZXBvc2l0cyBvbiBzb21lIGl0ZW1zLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPgtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW1zIHRvIGJlIHJlZXZhbHVhdGVkLikBLSBgaXRlbXNgOiBUaGUgaXRlbXMgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgZGVwb3NpdHMgd2lsbCBiZSByZWV2YWx1YXRlZC4ALQFOT1RFOiBUaGlzIGV4aXN0cyBhcyBhIGJlc3QtZWZmb3J0IGZ1bmN0aW9uLiBBbnkgaXRlbXMgd2hpY2ggYXJlIHVua25vd24gb3I5AWluIHRoZSBjYXNlIHRoYXQgdGhlIG93bmVyIGFjY291bnQgZG9lcyBub3QgaGF2ZSByZXNlcnZhYmxlIGZ1bmRzIHRvIHBheSBmb3IgYU0BZGVwb3NpdCBpbmNyZWFzZSBhcmUgaWdub3JlZC4gR2VuZXJhbGx5IHRoZSBvd25lciBpc24ndCBnb2luZyB0byBjYWxsIHRoaXMgb24gaXRlbXNVAXdob3NlIGV4aXN0aW5nIGRlcG9zaXQgaXMgbGVzcyB0aGFuIHRoZSByZWZyZXNoZWQgZGVwb3NpdCBhcyBpdCB3b3VsZCBvbmx5IGNvc3QgdGhlbSx4c28gaXQncyBvZiBsaXR0bGUgY29uc2VxdWVuY2UuAFkBSXQgd2lsbCBzdGlsbCByZXR1cm4gYW4gZXJyb3IgaW4gdGhlIGNhc2UgdGhhdCB0aGUgY29sbGVjdGlvbiBpcyB1bmtub3duIG9yIHRoZSBzaWduZXJwaXMgbm90IHBlcm1pdHRlZCB0byBjYWxsIGl0LgBgV2VpZ2h0OiBgTyhpdGVtcy5sZW4oKSlgSGxvY2tfaXRlbV90cmFuc2ZlcggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAgoyERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDkLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGNoYW5nZWQuuC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZWNvbWUgbm9uLXRyYW5zZmVyYWJsZS4AbEVtaXRzIGBJdGVtVHJhbnNmZXJMb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWBQdW5sb2NrX2l0ZW1fdHJhbnNmZXIIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAJKKhSZS1hbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgY2hhbmdlZC6oLSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlY29tZSB0cmFuc2ZlcmFibGUuAHRFbWl0cyBgSXRlbVRyYW5zZmVyVW5sb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWA8bG9ja19jb2xsZWN0aW9uCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNGxvY2tfc2V0dGluZ3NVBAFIQ29sbGVjdGlvblNldHRpbmdzAAow2ERpc2FsbG93cyBzcGVjaWZpZWQgc2V0dGluZ3MgZm9yIHRoZSB3aG9sZSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuALAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gdG8gYmUgbG9ja2VkLrQtIGBsb2NrX3NldHRpbmdzYDogVGhlIHNldHRpbmdzIHRvIGJlIGxvY2tlZC4AHQFOb3RlOiBpdCdzIHBvc3NpYmxlIHRvIG9ubHkgbG9jayhzZXQpIHRoZSBzZXR0aW5nLCBidXQgbm90IHRvIHVuc2V0IGl0LgBkRW1pdHMgYENvbGxlY3Rpb25Mb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAsshENoYW5nZSB0aGUgT3duZXIgb2YgYSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXIgc2hvdWxkIGJlIGNoYW5nZWQuCQEtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uLiBUaGV5IG11c3QgaGF2ZSBjYWxsZWRJASAgYHNldF9hY2NlcHRfb3duZXJzaGlwYCB3aXRoIGBjb2xsZWN0aW9uYCBpbiBvcmRlciBmb3IgdGhpcyBvcGVyYXRpb24gdG8gc3VjY2VlZC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEYaXNzdWVyPQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AARRhZG1pbj0EAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAEcZnJlZXplcj0EAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAxA1ENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhIGNvbGxlY3Rpb24uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AUQFOb3RlOiBieSBzZXR0aW5nIHRoZSByb2xlIHRvIGBOb25lYCBvbmx5IHRoZSBgRm9yY2VPcmlnaW5gIHdpbGwgYmUgYWJsZSB0byBjaGFuZ2UgaXRkYWZ0ZXIgdG8gYFNvbWUoYWNjb3VudClgLgDwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIHRlYW0gc2hvdWxkIGJlIGNoYW5nZWQuuC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgY29sbGVjdGlvbi6wLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi7ALSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGNvbGxlY3Rpb24uAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBYZm9yY2VfY29sbGVjdGlvbl9vd25lcggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA0ohENoYW5nZSB0aGUgT3duZXIgb2YgYSBjb2xsZWN0aW9uLgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AxC0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbi6wLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBcZm9yY2VfY29sbGVjdGlvbl9jb25maWcIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEYY29uZmlnUQQBZENvbGxlY3Rpb25Db25maWdGb3I8VCwgST4ADiiIQ2hhbmdlIHRoZSBjb25maWcgb2YgYSBjb2xsZWN0aW9uLgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AxC0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbi64LSBgY29uZmlnYDogVGhlIG5ldyBjb25maWcgb2YgdGhpcyBjb2xsZWN0aW9uLgCARW1pdHMgYENvbGxlY3Rpb25Db25maWdDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAThtYXliZV9kZWFkbGluZeQBcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ADzgVAUFwcHJvdmUgYW4gaXRlbSB0byBiZSB0cmFuc2ZlcnJlZCBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAEUBLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIu5C0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhkBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIHRoZSBpdGVtLkkBLSBgbWF5YmVfZGVhZGxpbmVgOiBPcHRpb25hbCBkZWFkbGluZSBmb3IgdGhlIGFwcHJvdmFsLiBTcGVjaWZpZWQgYnkgcHJvdmlkaW5nIHRoZdgJbnVtYmVyIG9mIGJsb2NrcyBhZnRlciB3aGljaCB0aGUgYXBwcm92YWwgd2lsbCBleHBpcmUAkEVtaXRzIGBUcmFuc2ZlckFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABA45ENhbmNlbCBvbmUgb2YgdGhlIHRyYW5zZmVyIGFwcHJvdmFscyBmb3IgYSBzcGVjaWZpYyBpdGVtLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6PQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuJQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGNvbGxlY3Rpb24gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuAQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRoYXQgaXMgZ29pbmcgdG8gbG9vc2UgdGhlaXIgYXBwcm92YWwuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYHBjbGVhcl9hbGxfdHJhbnNmZXJfYXBwcm92YWxzCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAETSwQ2FuY2VsIGFsbCB0aGUgYXBwcm92YWxzIG9mIGEgc3BlY2lmaWMgaXRlbS4AWE9yaWdpbiBtdXN0IGJlIGVpdGhlcjpULSB0aGUgYEZvcmNlYCBvcmlnaW475C0gYFNpZ25lZGAgd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOwAoQXJndW1lbnRzOjkBLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIG9mIHdob3NlIGFwcHJvdmFscyB3aWxsIGJlIGNsZWFyZWQuIQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGNvbGxlY3Rpb24gb2Ygd2hvc2UgYXBwcm92YWxzIHdpbGwgYmUgY2xlYXJlZC4ApEVtaXRzIGBBbGxBcHByb3ZhbHNDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFBsb2NrX2l0ZW1fcHJvcGVydGllcxABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAE0bG9ja19tZXRhZGF0YV0BARBib29sAAE8bG9ja19hdHRyaWJ1dGVzXQEBEGJvb2wAEkToRGlzYWxsb3dzIGNoYW5naW5nIHRoZSBtZXRhZGF0YSBvciBhdHRyaWJ1dGVzIG9mIHRoZSBpdGVtLgBBAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluUG9mIHRoZSBgY29sbGVjdGlvbmAuALQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gaWYgdGhlIGBpdGVtYC58LSBgaXRlbWA6IEFuIGl0ZW0gdG8gYmUgbG9ja2VkLg0BLSBgbG9ja19tZXRhZGF0YWA6IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgbG9ja2VkLmEBLSBgbG9ja19hdHRyaWJ1dGVzYDogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZUwgIHNob3VsZCBiZSBsb2NrZWQuAF0BTm90ZTogYGxvY2tfYXR0cmlidXRlc2AgYWZmZWN0cyB0aGUgYXR0cmlidXRlcyBpbiB0aGUgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlIG9ubHkuRQFXaGVuIHRoZSBtZXRhZGF0YSBvciBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQsIGl0IHdvbid0IGJlIHBvc3NpYmxlIHRoZSB1bmxvY2sgdGhlbS4AdEVtaXRzIGBJdGVtUHJvcGVydGllc0xvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDRzZXRfYXR0cmlidXRlFAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3kAURPcHRpb248VDo6SXRlbUlkPgABJG5hbWVzcGFjZX0EAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgABDGtleXwBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlRQEBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABNYqFNldCBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgABAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBjb25mb3JtIHRvIHRoZSBuYW1lc3BhY2UgcnVsZXNldDo9AS0gYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlIGNvdWxkIGJlIG1vZGlmaWVkIGJ5IHRoZSBgY29sbGVjdGlvbmAgQWRtaW4gb25seTtZAS0gYEl0ZW1Pd25lcmAgbmFtZXNwYWNlIGNvdWxkIGJlIG1vZGlmaWVkIGJ5IHRoZSBgbWF5YmVfaXRlbWAgb3duZXIgb25seS4gYG1heWJlX2l0ZW1gdCAgc2hvdWxkIGJlIHNldCBpbiB0aGF0IGNhc2U7VQEtIGBBY2NvdW50KEFjY291bnRJZClgIG5hbWVzcGFjZSBjb3VsZCBiZSBtb2RpZmllZCBvbmx5IHdoZW4gdGhlIGBvcmlnaW5gIHdhcyBnaXZlbiBhWCAgcGVybWlzc2lvbiB0byBkbyBzbzsA8FRoZSBmdW5kcyBvZiBgb3JpZ2luYCBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOi0BYEF0dHJpYnV0ZURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiAoa2V5LmxlbiArIHZhbHVlLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuADkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQuBQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0LpQtIGBuYW1lc3BhY2VgOiBBdHRyaWJ1dGUncyBuYW1lc3BhY2UuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgTGZvcmNlX3NldF9hdHRyaWJ1dGUYARhzZXRfYXORAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlfQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5fAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWVFAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AFETARm9yY2Utc2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgA5AUlmIHRoZSBhdHRyaWJ1dGUgYWxyZWFkeSBleGlzdHMgYW5kIGl0IHdhcyBzZXQgYnkgYW5vdGhlciBhY2NvdW50LCB0aGUgZGVwb3NpdJx3aWxsIGJlIHJldHVybmVkIHRvIHRoZSBwcmV2aW91cyBvd25lci4AvC0gYHNldF9hc2A6IEFuIG9wdGlvbmFsIG93bmVyIG9mIHRoZSBhdHRyaWJ1dGUuOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLswtIGB2YWx1ZWA6IFRoZSB2YWx1ZSB0byB3aGljaCB0byBzZXQgdGhlIGF0dHJpYnV0ZS4AVEVtaXRzIGBBdHRyaWJ1dGVTZXRgLgA4V2VpZ2h0OiBgTygxKWA8Y2xlYXJfYXR0cmlidXRlEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3kAURPcHRpb248VDo6SXRlbUlkPgABJG5hbWVzcGFjZX0EAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgABDGtleXwBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgAVPLBDbGVhciBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZShhdHRyaWJ1dGUuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLg0BLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLpQtIGBuYW1lc3BhY2VgOiBBdHRyaWJ1dGUncyBuYW1lc3BhY2UuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXGFwcHJvdmVfaXRlbV9hdHRyaWJ1dGVzDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABYkLQFBcHByb3ZlIGl0ZW0ncyBhdHRyaWJ1dGVzIHRvIGJlIGNoYW5nZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgCkLSBgY29sbGVjdGlvbmA6IEEgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6kLSBgaXRlbWA6IFRoZSBpdGVtIHRoYXQgaG9sZHMgYXR0cmlidXRlcy5JAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byBjaGFuZ2UgYXR0cmlidXRlcyBvZiB0aGUgaXRlbS4AvEVtaXRzIGBJdGVtQXR0cmlidXRlc0FwcHJvdmFsQWRkZWRgIG9uIHN1Y2Nlc3MufGNhbmNlbF9pdGVtX2F0dHJpYnV0ZXNfYXBwcm92YWwQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARx3aXRuZXNzgQQBfENhbmNlbEF0dHJpYnV0ZXNBcHByb3ZhbFdpdG5lc3MAFygRAUNhbmNlbCB0aGUgcHJldmlvdXNseSBwcm92aWRlZCBhcHByb3ZhbCB0byBjaGFuZ2UgaXRlbSdzIGF0dHJpYnV0ZXMuEQFBbGwgdGhlIHByZXZpb3VzbHkgc2V0IGF0dHJpYnV0ZXMgYnkgdGhlIGBkZWxlZ2F0ZWAgd2lsbCBiZSByZW1vdmVkLgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAPQtIGBjb2xsZWN0aW9uYDogQ29sbGVjdGlvbiB0aGF0IHRoZSBpdGVtIGlzIGNvbnRhaW5lZCB3aXRoaW4upC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGF0IGhvbGRzIGF0dHJpYnV0ZXMu4C0gYGRlbGVnYXRlYDogVGhlIHByZXZpb3VzbHkgYXBwcm92ZWQgYWNjb3VudCB0byByZW1vdmUuAMRFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbFJlbW92ZWRgIG9uIHN1Y2Nlc3MuMHNldF9tZXRhZGF0YQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YUUBAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AGEB0U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuADkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQu7C0gYGl0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuTQEtIGBkYXRhYDogVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBpdGVtLiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLgBgRW1pdHMgYEl0ZW1NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABk0fENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGU0YGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuAEEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBjbGVhci70LSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgBwRW1pdHMgYEl0ZW1NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBcc2V0X2NvbGxlY3Rpb25fbWV0YWRhdGEIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQZGF0YUUBAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AGjyIU2V0IHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2ZEdGhlIGBjb2xsZWN0aW9uYC4AWQFJZiB0aGUgb3JpZ2luIGlzIGBTaWduZWRgLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuABEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHVwZGF0ZS5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuAHhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgZGNsZWFyX2NvbGxlY3Rpb25fbWV0YWRhdGEEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkABswkENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2ZEdGhlIGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgAlAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci4AiEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgUHNldF9hY2NlcHRfb3duZXJzaGlwBAFAbWF5YmVfY29sbGVjdGlvbuQBXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABwoEQFTZXQgKG9yIHJlc2V0KSB0aGUgYWNjZXB0YW5jZSBvZiBvd25lcnNoaXAgZm9yIGEgcGFydGljdWxhciBhY2NvdW50LgBhAU9yaWdpbiBtdXN0IGJlIGBTaWduZWRgIGFuZCBpZiBgbWF5YmVfY29sbGVjdGlvbmAgaXMgYFNvbWVgLCB0aGVuIHRoZSBzaWduZXIgbXVzdCBoYXZlIGFMcHJvdmlkZXIgcmVmZXJlbmNlLgBRAS0gYG1heWJlX2NvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBvd25lcnNoaXAgdGhlIHNpZ25lciBpc2EBICB3aWxsaW5nIHRvIGFjY2VwdCwgb3IgaWYgYE5vbmVgLCBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIHNpZ25lciBpcyB3aWxsaW5nIHRvIGFjY2VwdCBub1wgIG93bmVyc2hpcCB0cmFuc2ZlcmFsLgCMRW1pdHMgYE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkYC5kc2V0X2NvbGxlY3Rpb25fbWF4X3N1cHBseQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5OAEMdTMyAB0k4FNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZkR0aGUgYGNvbGxlY3Rpb25gLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLlB1cGRhdGVfbWludF9zZXR0aW5ncwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATRtaW50X3NldHRpbmdzXQQBFQFNaW50U2V0dGluZ3M8QmFsYW5jZU9mPFQsIEk+LCBCbG9ja051bWJlckZvcjxULCBJPiwgVDo6CkNvbGxlY3Rpb25JZD4AHiRUVXBkYXRlIG1pbnQgc2V0dGluZ3MuAE0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBJc3N1ZXJQb2YgdGhlIGBjb2xsZWN0aW9uYC4A7C0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBjaGFuZ2UupC0gYG1pbnRfc2V0dGluZ3NgOiBUaGUgbmV3IG1pbnQgc2V0dGluZ3MuAPBFbWl0cyBgQ29sbGVjdGlvbk1pbnRTZXR0aW5nc1VwZGF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4kc2V0X3ByaWNlEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZUkEAVxPcHRpb248SXRlbVByaWNlPFQsIEk+PgABRHdoaXRlbGlzdGVkX2J1eWVyPQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AHyyUU2V0IChvciByZXNldCkgdGhlIHByaWNlIGZvciBhbiBpdGVtLgDoT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gc2V0IHRoZSBwcmljZSBmb3IuDQEtIGBwcmljZWA6IFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0uIFBhc3MgYE5vbmVgLCB0byByZXNldCB0aGUgcHJpY2Uu9C0gYGJ1eWVyYDogUmVzdHJpY3RzIHRoZSBidXkgb3BlcmF0aW9uIHRvIGEgc3BlY2lmaWMgYWNjb3VudC4A7EVtaXRzIGBJdGVtUHJpY2VTZXRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIG5vdCBgTm9uZWAu7EVtaXRzIGBJdGVtUHJpY2VSZW1vdmVkYCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBgTm9uZWAuIGJ1eV9pdGVtDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRiaWRfcHJpY2VZAQE8SXRlbVByaWNlPFQsIEk+ACAkqEFsbG93cyB0byBidXkgYW4gaXRlbSBpZiBpdCdzIHVwIGZvciBzYWxlLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IG5vdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6sLSBgaXRlbWA6IFRoZSBpdGVtIHRoZSBzZW5kZXIgd2FudHMgdG8gYnV5LtgtIGBiaWRfcHJpY2VgOiBUaGUgcHJpY2UgdGhlIHNlbmRlciBpcyB3aWxsaW5nIHRvIHBheS4AeEVtaXRzIGBJdGVtQm91Z2h0YCBvbiBzdWNjZXNzLiBwYXlfdGlwcwQBEHRpcHOFBAGcQm91bmRlZFZlYzxJdGVtVGlwT2Y8VCwgST4sIFQ6Ok1heFRpcHM+ACEcXEFsbG93cyB0byBwYXkgdGhlIHRpcHMuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAFQtIGB0aXBzYDogVGlwcyBhcnJheS4AmEVtaXRzIGBUaXBTZW50YCBvbiBldmVyeSB0aXAgdHJhbnNmZXIuLGNyZWF0ZV9zd2FwGAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkAAFIZGVzaXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAFIbWF5YmVfZGVzaXJlZF9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AASxtYXliZV9wcmljZZEEAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZHVyYXRpb244AVBCbG9ja051bWJlckZvcjxULCBJPgAiQFEBUmVnaXN0ZXIgYSBuZXcgYXRvbWljIHN3YXAsIGRlY2xhcmluZyBhbiBpbnRlbnRpb24gdG8gc2VuZCBhbiBgaXRlbWAgaW4gZXhjaGFuZ2UgZm9y/GBkZXNpcmVkX2l0ZW1gIGZyb20gb3JpZ2luIHRvIHRhcmdldCBvbiB0aGUgY3VycmVudCBibG9ja2NoYWluLk0BVGhlIHRhcmdldCBjYW4gZXhlY3V0ZSB0aGUgc3dhcCBkdXJpbmcgdGhlIHNwZWNpZmllZCBgZHVyYXRpb25gIG9mIGJsb2NrcyAoaWYgc2V0KS7wQWRkaXRpb25hbGx5LCB0aGUgcHJpY2UgY291bGQgYmUgc2V0IGZvciB0aGUgZGVzaXJlZCBgaXRlbWAuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6oLSBgaXRlbWA6IFRoZSBpdGVtIGFuIG93bmVyIHdhbnRzIHRvIGdpdmUu7C0gYGRlc2lyZWRfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBkZXNpcmVkIGl0ZW0u9C0gYGRlc2lyZWRfaXRlbWA6IFRoZSBkZXNpcmVkIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gcmVjZWl2ZS5hAS0gYG1heWJlX3ByaWNlYDogVGhlIHByaWNlIGFuIG93bmVyIGlzIHdpbGxpbmcgdG8gcGF5IG9yIHJlY2VpdmUgZm9yIHRoZSBkZXNpcmVkIGBpdGVtYC5JAS0gYGR1cmF0aW9uYDogQSBkZWFkbGluZSBmb3IgdGhlIHN3YXAuIFNwZWNpZmllZCBieSBwcm92aWRpbmcgdGhlIG51bWJlciBvZiBibG9ja3OICWFmdGVyIHdoaWNoIHRoZSBzd2FwIHdpbGwgZXhwaXJlLgB8RW1pdHMgYFN3YXBDcmVhdGVkYCBvbiBzdWNjZXNzLixjYW5jZWxfc3dhcAgBSG9mZmVyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbTgBJFQ6Okl0ZW1JZAAjJFhDYW5jZWwgYW4gYXRvbWljIHN3YXAuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuFQFPcmlnaW4gbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gIGlmIHRoZSBkZWFkbGluZSBoYXNuJ3QgZXhwaXJlZC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6oLSBgaXRlbWA6IFRoZSBpdGVtIGFuIG93bmVyIHdhbnRzIHRvIGdpdmUuAIRFbWl0cyBgU3dhcENhbmNlbGxlZGAgb24gc3VjY2Vzcy4oY2xhaW1fc3dhcBQBPHNlbmRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJHNlbmRfaXRlbTgBJFQ6Okl0ZW1JZAABSHJlY2VpdmVfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMHJlY2VpdmVfaXRlbTgBJFQ6Okl0ZW1JZAABNHdpdG5lc3NfcHJpY2WRBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgAkMFRDbGFpbSBhbiBhdG9taWMgc3dhcC45AVRoaXMgbWV0aG9kIGV4ZWN1dGVzIGEgcGVuZGluZyBzd2FwLCB0aGF0IHdhcyBjcmVhdGVkIGJ5IGEgY291bnRlcnBhcnQgYmVmb3JlLgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAOwtIGBzZW5kX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBzZW50LowtIGBzZW5kX2l0ZW1gOiBUaGUgaXRlbSB0byBiZSBzZW50LgkBLSBgcmVjZWl2ZV9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgcmVjZWl2ZWQuqC0gYHJlY2VpdmVfaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHJlY2VpdmVkLuQtIGB3aXRuZXNzX3ByaWNlYDogQSBwcmljZSB0aGF0IHdhcyBwcmV2aW91c2x5IGFncmVlZCBvbi4AfEVtaXRzIGBTd2FwQ2xhaW1lZGAgb24gc3VjY2Vzcy48bWludF9wcmVfc2lnbmVkDAEkbWludF9kYXRhnQQBaEJveDxQcmVTaWduZWRNaW50T2Y8VCwgST4+AAEkc2lnbmF0dXJloQQBUFQ6Ok9mZmNoYWluU2lnbmF0dXJlAAEYc2lnbmVyBAEwVDo6QWNjb3VudElkACU0yE1pbnQgYW4gaXRlbSBieSBwcm92aWRpbmcgdGhlIHByZS1zaWduZWQgYXBwcm92YWwuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAF0BLSBgbWludF9kYXRhYDogVGhlIHByZS1zaWduZWQgYXBwcm92YWwgdGhhdCBjb25zaXN0cyBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW0sUQEgIGl0cyBtZXRhZGF0YSwgYXR0cmlidXRlcywgd2hvIGNhbiBtaW50IGl0IChgTm9uZWAgZm9yIGFueW9uZSkgYW5kIHVudGlsIHdoYXQgYmxvY2skICBudW1iZXIuyC0gYHNpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgdGhlIGBkYXRhYCBvYmplY3QuOQEtIGBzaWduZXJgOiBUaGUgYGRhdGFgIG9iamVjdCdzIHNpZ25lci4gU2hvdWxkIGJlIGFuIElzc3VlciBvZiB0aGUgY29sbGVjdGlvbi4AaEVtaXRzIGBJc3N1ZWRgIG9uIHN1Y2Nlc3Mu1EVtaXRzIGBBdHRyaWJ1dGVTZXRgIGlmIHRoZSBhdHRyaWJ1dGVzIHdlcmUgcHJvdmlkZWQu2EVtaXRzIGBJdGVtTWV0YWRhdGFTZXRgIGlmIHRoZSBtZXRhZGF0YSB3YXMgbm90IGVtcHR5LmRzZXRfYXR0cmlidXRlc19wcmVfc2lnbmVkDAEQZGF0YakEAWxQcmVTaWduZWRBdHRyaWJ1dGVzT2Y8VCwgST4AASRzaWduYXR1cmWhBAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAARhzaWduZXIEATBUOjpBY2NvdW50SWQAJjQBAVNldCBhdHRyaWJ1dGVzIGZvciBhbiBpdGVtIGJ5IHByb3ZpZGluZyB0aGUgcHJlLXNpZ25lZCBhcHByb3ZhbC4A+E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGRhdGEuaXRlbWAuAEkBLSBgZGF0YWA6IFRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsIHRoYXQgY29uc2lzdHMgb2YgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpdGVtLMwgIGF0dHJpYnV0ZXMgdG8gdXBkYXRlIGFuZCB1bnRpbCB3aGF0IGJsb2NrIG51bWJlci7ILSBgc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiB0aGUgYGRhdGFgIG9iamVjdC5RAS0gYHNpZ25lcmA6IFRoZSBgZGF0YWAgb2JqZWN0J3Mgc2lnbmVyLiBTaG91bGQgYmUgYW4gQWRtaW4gb2YgdGhlIGNvbGxlY3Rpb24gZm9yIHRoZXggIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZS4AxEVtaXRzIGBBdHRyaWJ1dGVTZXRgIGZvciBlYWNoIHByb3ZpZGVkIGF0dHJpYnV0ZS4ZAUVtaXRzIGBJdGVtQXR0cmlidXRlc0FwcHJvdmFsQWRkZWRgIGlmIHRoZSBhcHByb3ZhbCB3YXNuJ3Qgc2V0IGJlZm9yZS6oRW1pdHMgYFByZVNpZ25lZEF0dHJpYnV0ZXNTZXRgIG9uIHN1Y2Nlc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlEEDCxwYWxsZXRfbmZ0cxR0eXBlc0BDb2xsZWN0aW9uQ29uZmlnDBRQcmljZQFZASxCbG9ja051bWJlcgE4MENvbGxlY3Rpb25JZAE4AAwBIHNldHRpbmdzVQQBSENvbGxlY3Rpb25TZXR0aW5ncwABKG1heF9zdXBwbHnkASxPcHRpb248dTMyPgABNG1pbnRfc2V0dGluZ3NdBAG4TWludFNldHRpbmdzPFByaWNlLCBCbG9ja051bWJlciwgQ29sbGVjdGlvbklkPgAAVQQMLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAVkEAAQAKAFEQ29sbGVjdGlvblNldHRpbmcAAFkEDCxwYWxsZXRfbmZ0cxR0eXBlc0RDb2xsZWN0aW9uU2V0dGluZwABFERUcmFuc2ZlcmFibGVJdGVtcwABAEBVbmxvY2tlZE1ldGFkYXRhAAIASFVubG9ja2VkQXR0cmlidXRlcwAEAERVbmxvY2tlZE1heFN1cHBseQAIADxEZXBvc2l0UmVxdWlyZWQAEAAAXQQMLHBhbGxldF9uZnRzFHR5cGVzME1pbnRTZXR0aW5ncwwUUHJpY2UBWQEsQmxvY2tOdW1iZXIBODBDb2xsZWN0aW9uSWQBOAAUASRtaW50X3R5cGVhBAFYTWludFR5cGU8Q29sbGVjdGlvbklkPgABFHByaWNlSQQBNE9wdGlvbjxQcmljZT4AASxzdGFydF9ibG9ja+QBTE9wdGlvbjxCbG9ja051bWJlcj4AASRlbmRfYmxvY2vkAUxPcHRpb248QmxvY2tOdW1iZXI+AAFUZGVmYXVsdF9pdGVtX3NldHRpbmdzZQQBMEl0ZW1TZXR0aW5ncwAAYQQMLHBhbGxldF9uZnRzFHR5cGVzIE1pbnRUeXBlBDBDb2xsZWN0aW9uSWQBOAEMGElzc3VlcgAAABhQdWJsaWMAAQAgSG9sZGVyT2YEADgBMENvbGxlY3Rpb25JZAACAABlBAwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBaQQABAAoASxJdGVtU2V0dGluZwAAaQQMLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1TZXR0aW5nAAEMMFRyYW5zZmVyYWJsZQABAEBVbmxvY2tlZE1ldGFkYXRhAAIASFVubG9ja2VkQXR0cmlidXRlcwAEAABtBAwscGFsbGV0X25mdHMUdHlwZXM4RGVzdHJveVdpdG5lc3MAAAwBOGl0ZW1fbWV0YWRhdGFzZAEMdTMyAAEwaXRlbV9jb25maWdzZAEMdTMyAAEoYXR0cmlidXRlc2QBDHUzMgAAcQQEGE9wdGlvbgQEVAF1BAEIEE5vbmUAAAAQU29tZQQAdQQAAAEAAHUEDCxwYWxsZXRfbmZ0cxR0eXBlcyxNaW50V2l0bmVzcwgYSXRlbUlkATgcQmFsYW5jZQFZAQAIAShvd25lZF9pdGVt5AE4T3B0aW9uPEl0ZW1JZD4AAShtaW50X3ByaWNlSQQBPE9wdGlvbjxCYWxhbmNlPgAAeQQMLHBhbGxldF9uZnRzFHR5cGVzKEl0ZW1Db25maWcAAAQBIHNldHRpbmdzZQQBMEl0ZW1TZXR0aW5ncwAAfQQMLHBhbGxldF9uZnRzFHR5cGVzSEF0dHJpYnV0ZU5hbWVzcGFjZQQkQWNjb3VudElkAQQBEBhQYWxsZXQAAAA8Q29sbGVjdGlvbk93bmVyAAEAJEl0ZW1Pd25lcgACABxBY2NvdW50BAAEASRBY2NvdW50SWQAAwAAgQQMLHBhbGxldF9uZnRzFHR5cGVzfENhbmNlbEF0dHJpYnV0ZXNBcHByb3ZhbFdpdG5lc3MAAAQBSGFjY291bnRfYXR0cmlidXRlczgBDHUzMgAAhQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGJBARTAAAEAI0EARhWZWM8VD4AAIkEDCxwYWxsZXRfbmZ0cxR0eXBlcxxJdGVtVGlwEDBDb2xsZWN0aW9uSWQBOBhJdGVtSWQBOCRBY2NvdW50SWQBBBhBbW91bnQBWQEAEAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ARhJdGVtSWQAASByZWNlaXZlcgQBJEFjY291bnRJZAABGGFtb3VudFkBARhBbW91bnQAAI0EAAACiQQAkQQEGE9wdGlvbgQEVAGVBAEIEE5vbmUAAAAQU29tZQQAlQQAAAEAAJUEDCxwYWxsZXRfbmZ0cxR0eXBlc0hQcmljZVdpdGhEaXJlY3Rpb24EGEFtb3VudAFZAQAIARhhbW91bnRZAQEYQW1vdW50AAEkZGlyZWN0aW9umQQBOFByaWNlRGlyZWN0aW9uAACZBAwscGFsbGV0X25mdHMUdHlwZXM4UHJpY2VEaXJlY3Rpb24AAQgQU2VuZAAAABxSZWNlaXZlAAEAAJ0EDCxwYWxsZXRfbmZ0cxR0eXBlczRQcmVTaWduZWRNaW50FDBDb2xsZWN0aW9uSWQBOBhJdGVtSWQBOCRBY2NvdW50SWQBBCBEZWFkbGluZQE4HEJhbGFuY2UBWQEAHAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ARhJdGVtSWQAAShhdHRyaWJ1dGVzLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AASBtZXRhZGF0YRgBHFZlYzx1OD4AATBvbmx5X2FjY291bnSRAQFET3B0aW9uPEFjY291bnRJZD4AASBkZWFkbGluZTgBIERlYWRsaW5lAAEobWludF9wcmljZUkEATxPcHRpb248QmFsYW5jZT4AAKEECChzcF9ydW50aW1lOE11bHRpU2lnbmF0dXJlAAEQHEVkMjU1MTkEAKUEAUhlZDI1NTE5OjpTaWduYXR1cmUAAAAcU3IyNTUxOQQApQQBSHNyMjU1MTk6OlNpZ25hdHVyZQABABRFY2RzYQQAeQEBQGVjZHNhOjpTaWduYXR1cmUAAgAMRXRoBAB5AQFYZWNkc2E6OktlY2Nha1NpZ25hdHVyZQADAAClBAAAA0AAAAAMAKkEDCxwYWxsZXRfbmZ0cxR0eXBlc0xQcmVTaWduZWRBdHRyaWJ1dGVzEDBDb2xsZWN0aW9uSWQBOBhJdGVtSWQBOCRBY2NvdW50SWQBBCBEZWFkbGluZQE4ABQBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEYSXRlbUlkAAEoYXR0cmlidXRlcywBXFZlYzwoVmVjPHU4PiwgVmVjPHU4Pik+AAEkbmFtZXNwYWNlfQQBdEF0dHJpYnV0ZU5hbWVzcGFjZTxBY2NvdW50SWQ+AAEgZGVhZGxpbmU4ASBEZWFkbGluZQAArQQMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYgYY3JlYXRlDAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudF0BARBib29sAAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAIw3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWa4YW4gYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLkBkZXN0cm95X2FjY291bnRzBAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5dAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRdAQEQYm9vbAABJGlzX2Zyb3plbl0BARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuXQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2VZAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB0siENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLmEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQsIHRoZSBhc3NldCBzdGF0dXMgbXVzdCggIGJlIGxpdmUujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlXQEBEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLjBzZXRfcmVzZXJ2ZXMIAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXOxBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrEEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBtQQEUwAABAC5BAEYVmVjPFQ+AAC1BAw0YXNzZXRzX2NvbW1vbmBsb2NhbF9hbmRfZm9yZWlnbl9hc3NldHNcRm9yZWlnbkFzc2V0UmVzZXJ2ZURhdGEAAAgBHHJlc2VydmUdAgEgTG9jYXRpb24AATB0ZWxlcG9ydGFibGVdAQEQYm9vbAAAuQQAAAK1BAC9BAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VZAQEoVDo6QmFsYW5jZQAATOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudF0BARBib29sAAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5dAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlVQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50XQEBEGJvb2wAASRpc19mcm96ZW5dAQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybl0BARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2VZAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVdAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzLQQByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7BBAxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0EENhbGwEBFQAARgsY3JlYXRlX3Bvb2wIARhhc3NldDEdAgFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDIdAgFEQm94PFQ6OkFzc2V0S2luZD4AABAZAUNyZWF0ZXMgYW4gZW1wdHkgbGlxdWlkaXR5IHBvb2wgYW5kIGFuIGFzc29jaWF0ZWQgbmV3IGBscF90b2tlbmAgYXNzZXQBASh0aGUgaWQgb2Ygd2hpY2ggaXMgcmV0dXJuZWQgaW4gdGhlIGBFdmVudDo6UG9vbENyZWF0ZWRgIGV2ZW50KS4AEQFPbmNlIGEgcG9vbCBpcyBjcmVhdGVkLCBzb21lb25lIG1heSBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIHRvIGl0LjRhZGRfbGlxdWlkaXR5HAEYYXNzZXQxHQIBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyHQIBREJveDxUOjpBc3NldEtpbmQ+AAE8YW1vdW50MV9kZXNpcmVkWQEBKFQ6OkJhbGFuY2UAATxhbW91bnQyX2Rlc2lyZWRZAQEoVDo6QmFsYW5jZQABLGFtb3VudDFfbWluWQEBKFQ6OkJhbGFuY2UAASxhbW91bnQyX21pblkBAShUOjpCYWxhbmNlAAEcbWludF90bwQBMFQ6OkFjY291bnRJZAABOORQcm92aWRlIGxpcXVpZGl0eSBpbnRvIHRoZSBwb29sIG9mIGBhc3NldDFgIGFuZCBgYXNzZXQyYC4NAU5PVEU6IGFuIG9wdGltYWwgYW1vdW50IG9mIGFzc2V0MSBhbmQgYXNzZXQyIHdpbGwgYmUgY2FsY3VsYXRlZCBhbmQhAW1pZ2h0IGJlIGRpZmZlcmVudCB0aGFuIHRoZSBwcm92aWRlZCBgYW1vdW50MV9kZXNpcmVkYC9gYW1vdW50Ml9kZXNpcmVkYPx0aHVzIHlvdSBzaG91bGQgcHJvdmlkZSB0aGUgbWluIGFtb3VudCB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS7IUGFyYW1zIGBhbW91bnQxX21pbmAvYGFtb3VudDJfbWluYCByZXByZXNlbnQgdGhhdC5JAWBtaW50X3RvYCB3aWxsIGJlIHNlbnQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCByZXByZXNlbnQgdGhpcyBzaGFyZSBvZiB0aGUgcG9vbC4AXQFOT1RFOiB3aGVuIGVuY291bnRlcmluZyBhbiBpbmNvcnJlY3QgZXhjaGFuZ2UgcmF0ZSBhbmQgbm9uLXdpdGhkcmF3YWJsZSBwb29sIGxpcXVpZGl0eSzcYmF0Y2ggYW4gYXRvbWljIGNhbGwgd2l0aCBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIGFuZFEBW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBvciBbYFBhbGxldDo6c3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdJQFjYWxscyB0byByZW5kZXIgdGhlIGxpcXVpZGl0eSB3aXRoZHJhd2FibGUgYW5kIHJlY3RpZnkgdGhlIGV4Y2hhbmdlIHJhdGUuANhPbmNlIGxpcXVpZGl0eSBpcyBhZGRlZCwgc29tZW9uZSBtYXkgc3VjY2Vzc2Z1bGx5IGNhbGykW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXS5AcmVtb3ZlX2xpcXVpZGl0eRgBGGFzc2V0MR0CAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0Mh0CAURCb3g8VDo6QXNzZXRLaW5kPgABNGxwX3Rva2VuX2J1cm5ZAQEoVDo6QmFsYW5jZQABTGFtb3VudDFfbWluX3JlY2VpdmVZAQEoVDo6QmFsYW5jZQABTGFtb3VudDJfbWluX3JlY2VpdmVZAQEoVDo6QmFsYW5jZQABLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkAAIMTQFBbGxvd3MgeW91IHRvIHJlbW92ZSBsaXF1aWRpdHkgYnkgcHJvdmlkaW5nIHRoZSBgbHBfdG9rZW5fYnVybmAgdG9rZW5zIHRoYXQgd2lsbCBiZVEBYnVybmVkIGluIHRoZSBwcm9jZXNzLiBXaXRoIHRoZSB1c2FnZSBvZiBgYW1vdW50MV9taW5fcmVjZWl2ZWAvYGFtb3VudDJfbWluX3JlY2VpdmVgNQFpdCdzIHBvc3NpYmxlIHRvIGNvbnRyb2wgdGhlIG1pbiBhbW91bnQgb2YgcmV0dXJuZWQgdG9rZW5zIHlvdSdyZSBoYXBweSB3aXRoLnBzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zFAEQcGF0aMUEAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEkYW1vdW50X2luWQEBKFQ6OkJhbGFuY2UAAThhbW91bnRfb3V0X21pblkBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmVdAQEQYm9vbAADGMBTd2FwIHRoZSBleGFjdCBhbW91bnQgb2YgYGFzc2V0MWAgaW50byBgYXNzZXQyYC4tAWBhbW91bnRfb3V0X21pbmAgcGFyYW0gYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBtaW4gYW1vdW50IG9mIHRoZSBgYXNzZXQyYGB5b3UncmUgaGFwcHkgdG8gcmVjZWl2ZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS5wc3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxQBEHBhdGjFBAFYVmVjPEJveDxUOjpBc3NldEtpbmQ+PgABKGFtb3VudF9vdXRZAQEoVDo6QmFsYW5jZQABNGFtb3VudF9pbl9tYXhZAQEoVDo6QmFsYW5jZQABHHNlbmRfdG8EATBUOjpBY2NvdW50SWQAAShrZWVwX2FsaXZlXQEBEGJvb2wABBgBAVN3YXAgYW55IGFtb3VudCBvZiBgYXNzZXQxYCB0byBnZXQgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQyYC4ZAWBhbW91bnRfaW5fbWF4YCBwYXJhbSBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgbWF4IGFtb3VudCBvZiB0aGUgYGFzc2V0MWBgeW91J3JlIGhhcHB5IHRvIHByb3ZpZGUuAFkBW2BBc3NldENvbnZlcnNpb25BcGk6OnF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0gcnVudGltZSBjYWxsIGNhbiBiZSBjYWxsZWQwZm9yIGEgcXVvdGUuFHRvdWNoCAEYYXNzZXQxHQIBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyHQIBREJveDxUOjpBc3NldEtpbmQ+AAUsTQFUb3VjaCBhbiBleGlzdGluZyBwb29sIHRvIGZ1bGZpbGwgcHJlcmVxdWlzaXRlcyBiZWZvcmUgcHJvdmlkaW5nIGxpcXVpZGl0eSwgc3VjaCBhc0kBZW5zdXJpbmcgdGhhdCB0aGUgcG9vbCdzIGFjY291bnRzIGFyZSBpbiBwbGFjZS4gSXQgaXMgdHlwaWNhbGx5IHVzZWZ1bCB3aGVuIGEgcG9vbFUBY3JlYXRvciByZW1vdmVzIHRoZSBwb29sJ3MgYWNjb3VudHMgYW5kIGRvZXMgbm90IHByb3ZpZGUgYSBsaXF1aWRpdHkuIFRoaXMgYWN0aW9uIG1heVUBaW52b2x2ZSBob2xkaW5nIGFzc2V0cyBmcm9tIHRoZSBjYWxsZXIgYXMgYSBkZXBvc2l0IGZvciBjcmVhdGluZyB0aGUgcG9vbCdzIGFjY291bnRzLgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AKQEtIGBhc3NldDFgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLikBLSBgYXNzZXQyYDogVGhlIGFzc2V0IElEIG9mIGFuIGV4aXN0aW5nIHBvb2wgd2l0aCBhIHBhaXIgKGFzc2V0MSwgYXNzZXQyKS4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBHBQYWxsZXQncyBjYWxsYWJsZSBmdW5jdGlvbnMuxQQAAAIdAgDJBAwocGFsbGV0X3BzbRhwYWxsZXQQQ2FsbAQEVAABNBBtaW50EAE4aW50ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0HQIBKFQ6OkFzc2V0SWQAATxleHRlcm5hbF9hbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAEcbWF4X2ZlZc0EARxQZXJtaWxsAACk8FN3YXAgZXh0ZXJuYWwgYXNzZXQgZm9yIGludGVybmFsIG9uIGEgc3BlY2lmaWMgUFNNIGluc3RhbmNlLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAMRNdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB1c2VyIHBlcmZvcm1pbmcgdGhlIHN3YXAuACgjIyBEZXRhaWxzABkBVHJhbnNmZXJzIGBleHRlcm5hbF9hbW91bnRgIG9mIGBleHRlcm5hbF9hc3NldGAgZnJvbSB0aGUgY2FsbGVyIHRvIHRoZSkBYGludGVybmFsX2Fzc2V0YCdzIFBTTSByZXNlcnZlIGFjY291bnQsIHRoZW4gbWludHMgYGludGVybmFsX2Fzc2V0YCB0byB0aGUpAWNhbGxlciBtaW51cyB0aGUgbWludGluZyBmZWUuIFRoZSBmZWUgaXMgY2FsY3VsYXRlZCB1c2luZyBjZWlsaW5nIHJvdW5kaW5nCQEoYG11bF9jZWlsYCksIGVuc3VyaW5nIHRoZSBwcm90b2NvbCBuZXZlciB1bmRlcmNoYXJnZXMuIFRoZSBmZWUgaXMVAXRyYW5zZmVycmVkIHRvIFtgUHNtSW5mbzo6ZmVlX2Rlc3RpbmF0aW9uYF0gb2YgdGhlIHRhcmdldGVkIGluc3RhbmNlLgA0IyMgUGFyYW1ldGVycwA1AS0gYGludGVybmFsX2Fzc2V0YDogVGhlIGludGVybmFsIHN0YWJsZWNvaW4gdGhhdCBpZGVudGlmaWVzIHRoZSBQU00gaW5zdGFuY2UuGQEtIGBleHRlcm5hbF9hc3NldGA6IFRoZSBleHRlcm5hbCBhc3NldCB0byBkZXBvc2l0IChtdXN0IGJlIGFwcHJvdmVkIG9uUCAgYGludGVybmFsX2Fzc2V0YCku5C0gYGV4dGVybmFsX2Ftb3VudGA6IEFtb3VudCBvZiBleHRlcm5hbCBhc3NldCB0byBkZXBvc2l0LvQtIGBtYXhfZmVlYDogTWF4aW11bSBtaW50aW5nIGZlZSByYXRlIGFjY2VwdGVkIGJ5IHRoZSBjYWxsZXIuACQjIyBFcnJvcnMAHQEtIFtgRXJyb3I6OlBzbU5vdEZvdW5kYF06IElmIG5vIFBTTSBpcyByZWdpc3RlcmVkIGZvciBgaW50ZXJuYWxfYXNzZXRgLj0BLSBbYEVycm9yOjpVbnN1cHBvcnRlZEFzc2V0YF06IElmIGBleHRlcm5hbF9hc3NldGAgaXMgbm90IGFwcHJvdmVkIG9uIHRoaXMgUFNNLmEBLSBbYEVycm9yOjpNaW50aW5nU3RvcHBlZGBdOiBJZiB0aGUgcGVyLWV4dGVybmFsIGNpcmN1aXQgYnJlYWtlciBpcyBhdCBgTWludGluZ0Rpc2FibGVkYDAgIG9yIGhpZ2hlci5dAS0gW2BFcnJvcjo6QmVsb3dNaW5pbXVtU3dhcGBdOiBJZiB0aGUgaW50ZXJuYWwtZXF1aXZhbGVudCBvZiBgZXh0ZXJuYWxfYW1vdW50YCBpcyBiZWxvd4wgIHRoZSBpbnN0YW5jZSdzIGBtaW5fc3dhcF9hbW91bnRgLiUBLSBbYEVycm9yOjpGZWVUb29IaWdoYF06IElmIHRoZSBjb25maWd1cmVkIG1pbnRpbmcgZmVlIGV4Y2VlZHMgYG1heF9mZWVgLj0BLSBbYEVycm9yOjpFeGNlZWRzTWF4UHNtRGVidGBdOiBJZiBtaW50aW5nIHdvdWxkIGV4Y2VlZCB0aGlzIFBTTSdzIGRlYnQgY2VpbGluZ2wgIChhZ2dyZWdhdGUgb3IgcGVyLWFzc2V0KS5NAS0gW2BFcnJvcjo6RGVjaW1hbHNNaXNtYXRjaGBdOiBJZiBsaXZlIGRlY2ltYWxzIGRpdmVyZ2VkIGZyb20gdGhlIHNuYXBzaG90IHRha2VuIGF0PCAgcmVnaXN0cmF0aW9uLkkBLSBbYEVycm9yOjpBbW91bnRUb29TbWFsbEFmdGVyQ29udmVyc2lvbmBdOiBJZiB0aGUgY29udmVyc2lvbiB0byB0aGUgY291bnRlci1hc3NldLggIHJvdW5kcyB0byB6ZXJvOyBzd2FwIHdvdWxkIHRyYW5zZmVyIG5vdGhpbmcuACQjIyBFdmVudHMAwC0gW2BFdmVudDo6TWludGVkYF06IEVtaXR0ZWQgb24gc3VjY2Vzc2Z1bCBtaW50LhhyZWRlZW0QAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABPGludGVybmFsX2Ftb3VudFkBATBCYWxhbmNlT2Y8VD4AARxtYXhfZmVlzQQBHFBlcm1pbGwAAaDwU3dhcCBpbnRlcm5hbCBmb3IgZXh0ZXJuYWwgYXNzZXQgb24gYSBzcGVjaWZpYyBQU00gaW5zdGFuY2UuAEgjIyBEaXNwYXRjaCBPcmlnaW4AxE11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHVzZXIgcGVyZm9ybWluZyB0aGUgc3dhcC4AKCMjIERldGFpbHMASQFCdXJucyBgaW50ZXJuYWxfYW1vdW50YCBvZiBgaW50ZXJuYWxfYXNzZXRgIGZyb20gdGhlIGNhbGxlciBtaW51cyBmZWUgKHRyYW5zZmVycmVkNQF0byB0aGUgaW5zdGFuY2UncyBbYFBzbUluZm86OmZlZV9kZXN0aW5hdGlvbmBdKSwgdGhlbiB0cmFuc2ZlcnMgdGhlIHJlc3VsdGluZyUBYW1vdW50IGluIGBleHRlcm5hbF9hc3NldGAgZnJvbSB0aGUgUFNNIHJlc2VydmUgdG8gdGhlIGNhbGxlci4gVGhlIGZlZSBpcy0BY2FsY3VsYXRlZCB1c2luZyBjZWlsaW5nIHJvdW5kaW5nIChgbXVsX2NlaWxgKSwgZW5zdXJpbmcgdGhlIHByb3RvY29sIG5ldmVyRQF1bmRlcmNoYXJnZXMuIFJlZGVtcHRpb25zIHVzZSB0aGUgZGVjaW1hbHMgc25hcHNob3R0ZWQgd2hlbiB0aGUgUFNNL2V4dGVybmFsIHBhaXJFAXdhcyByZWdpc3RlcmVkLCBhbGxvd2luZyBleGlzdGluZyBwb3NpdGlvbnMgdG8gdW53aW5kIGV2ZW4gaWYgbGl2ZSBtZXRhZGF0YSBsYXRlciBjaGFuZ2VzLgA0IyMgUGFyYW1ldGVycwA1AS0gYGludGVybmFsX2Fzc2V0YDogVGhlIGludGVybmFsIHN0YWJsZWNvaW4gdGhhdCBpZGVudGlmaWVzIHRoZSBQU00gaW5zdGFuY2UuGQEtIGBleHRlcm5hbF9hc3NldGA6IFRoZSBleHRlcm5hbCBhc3NldCB0byByZWNlaXZlIChtdXN0IGJlIGFwcHJvdmVkIG9uUCAgYGludGVybmFsX2Fzc2V0YCku6C0gYGludGVybmFsX2Ftb3VudGA6IEFtb3VudCBvZiBgaW50ZXJuYWxfYXNzZXRgIHRvIHJlZGVlbS4BAS0gYG1heF9mZWVgOiBNYXhpbXVtIHJlZGVtcHRpb24gZmVlIHJhdGUgYWNjZXB0ZWQgYnkgdGhlIGNhbGxlci4AJCMjIEVycm9ycwAdAS0gW2BFcnJvcjo6UHNtTm90Rm91bmRgXTogSWYgbm8gUFNNIGlzIHJlZ2lzdGVyZWQgZm9yIGBpbnRlcm5hbF9hc3NldGAuPQEtIFtgRXJyb3I6OlVuc3VwcG9ydGVkQXNzZXRgXTogSWYgYGV4dGVybmFsX2Fzc2V0YCBpcyBub3QgYXBwcm92ZWQgb24gdGhpcyBQU00uWQEtIFtgRXJyb3I6OkFsbFN3YXBzU3RvcHBlZGBdOiBJZiB0aGUgcGVyLWV4dGVybmFsIGNpcmN1aXQgYnJlYWtlciBpcyBhdCBgQWxsRGlzYWJsZWRgLi0BLSBbYEVycm9yOjpCZWxvd01pbmltdW1Td2FwYF06IElmIGBpbnRlcm5hbF9hbW91bnRgIGlzIGJlbG93IHRoZSBpbnN0YW5jZSdzUCAgYG1pbl9zd2FwX2Ftb3VudGAuMQEtIFtgRXJyb3I6OkZlZVRvb0hpZ2hgXTogSWYgdGhlIGNvbmZpZ3VyZWQgcmVkZW1wdGlvbiBmZWUgZXhjZWVkcyBgbWF4X2ZlZWAuUQEtIFtgRXJyb3I6Okluc3VmZmljaWVudFJlc2VydmVgXTogSWYgdGhlIFBTTSBob2xkcyBsZXNzIG9mIGBleHRlcm5hbF9hc3NldGAgdGhhbiB0aGVYICByZWRlbXB0aW9uIHJlcXVpcmVzLkkBLSBbYEVycm9yOjpBbW91bnRUb29TbWFsbEFmdGVyQ29udmVyc2lvbmBdOiBJZiB0aGUgY29udmVyc2lvbiB0byB0aGUgY291bnRlci1hc3NldLggIHJvdW5kcyB0byB6ZXJvOyBzd2FwIHdvdWxkIHRyYW5zZmVyIG5vdGhpbmcuACQjIyBFdmVudHMA4C0gW2BFdmVudDo6UmVkZWVtZWRgXTogRW1pdHRlZCBvbiBzdWNjZXNzZnVsIHJlZGVtcHRpb24uKGNyZWF0ZV9wc20YAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAEoZnVsbF9hZG1pbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AATxlbWVyZ2VuY3lfYWRtaW7xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAE8ZmVlX2Rlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEgbWF4X2RlYnRZAQEwQmFsYW5jZU9mPFQ+AAE8bWluX3N3YXBfYW1vdW50WQEBMEJhbGFuY2VPZjxUPgACkKBDcmVhdGUgYSBQU00gZm9yIGEgZ2l2ZW4gaW50ZXJuYWwgYXNzZXQuAAEBSWYgW2BDb25maWc6OkNyZWF0ZU9yaWdpbmBdIHJlc29sdmVzIHRvIGBTb21lKGFjY291bnQpYCwgdGFrZXMgYUEBW2BDb25maWc6OkNvbnNpZGVyYXRpb25gXSBkZXBvc2l0IGZyb20gdGhhdCBhY2NvdW50IGZvciB0aGUgaW5zdGFuY2UncyBmb290cHJpbnQ5AShyZWZ1bmRlZCBvbiBgcmVtb3ZlX3BzbWApLiBJZiBpdCByZXNvbHZlcyB0byBgTm9uZWAsIG5vIGRlcG9zaXQgaXMgdGFrZW4uIFRoZVkBYGZ1bGxfYWRtaW5gIGFuZCBgZW1lcmdlbmN5X2FkbWluYCBvcmlnaW5zIGFyZSBzZXQgZnJvbSB0aGUgcHJvdmlkZWQgYXJndW1lbnRzIGFuZCBtYXlVAWxhdGVyIGJlIHJlYXNzaWduZWQgdmlhIFtgUGFsbGV0OjpzZXRfZnVsbF9hZG1pbmBdIC8gW2BQYWxsZXQ6OnNldF9lbWVyZ2VuY3lfYWRtaW5gXS4ASCMjIERpc3BhdGNoIE9yaWdpbgBFAVtgQ29uZmlnOjpDcmVhdGVPcmlnaW5gXSwgcGFyYW1ldGVyaXNlZCBieSBgaW50ZXJuYWxfYXNzZXRgLiBXaXRoIHRoZSByZWNvbW1lbmRlZCEBW2BFbnN1cmVBc3NldE93bmVyYF0gdGhpcyBpcyBhIHNpZ25lZCBvcmlnaW4gdGhhdCBvd25zIGBpbnRlcm5hbF9hc3NldGAuADQjIyBQYXJhbWV0ZXJzAEUBLSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgaW50ZXJuYWwgc3RhYmxlY29pbiBrZXlpbmcgdGhlIG5ldyBQU00uIE11c3QgZXhpc3QgaW4gdGhl8CAgZnVuZ2libGVzIGJhY2tlbmQ7IG11c3Qgbm90IGFscmVhZHkgaGF2ZSBhIFBTTSByZWdpc3RlcmVkLvgtIGBmdWxsX2FkbWluYDogT3JpZ2luIGdyYW50ZWQgZnVsbCBtYW5hZ2VtZW50IG9mIHRoZSBuZXcgUFNNLiEBLSBgZW1lcmdlbmN5X2FkbWluYDogT3JpZ2luIGdyYW50ZWQgZW1lcmdlbmN5IG1hbmFnZW1lbnQgb2YgdGhlIG5ldyBQU00uAQEtIGBmZWVfZGVzdGluYXRpb25gOiBBY2NvdW50IHRoYXQgd2lsbCByZWNlaXZlIG1pbnQvcmVkZWVtIGZlZXMu7C0gYG1heF9kZWJ0YDogSW5pdGlhbCBhYnNvbHV0ZSBpbnRlcm5hbC1hc3NldCBkZWJ0IGNlaWxpbmcuUQEtIGBtaW5fc3dhcF9hbW91bnRgOiBNaW5pbXVtIHN3YXAgYW1vdW50IGZvciB0aGlzIGluc3RhbmNlLCBpbiBpbnRlcm5hbC1hc3NldCB1bml0cy5MICBNdXN0IGJlIG5vbi16ZXJvLgAkIyMgRXJyb3JzAGEBLSBbYERpc3BhdGNoRXJyb3I6OkJhZE9yaWdpbmBdOiBUaGUgb3JpZ2luIGlzIG5vdCBwZXJtaXR0ZWQgYnkgW2BDb25maWc6OkNyZWF0ZU9yaWdpbmBdLkEBLSBbYEVycm9yOjpQc21BbHJlYWR5RXhpc3RzYF06IEEgUFNNIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgYGludGVybmFsX2Fzc2V0YC7oLSBbYEVycm9yOjpaZXJvTWluU3dhcEFtb3VudGBdOiBgbWluX3N3YXBfYW1vdW50YCBpcyB6ZXJvLgkBLSBbYEVycm9yOjpBc3NldERvZXNOb3RFeGlzdGBdOiBUaGUgaW50ZXJuYWwgYXNzZXQgZG9lcyBub3QgZXhpc3QuWQEtIEFueSBlcnJvciBmcm9tIGVzdGFibGlzaGluZyB0aGUgW2BDb25maWc6OkNvbnNpZGVyYXRpb25gXSBkZXBvc2l0IHdoZW4gb25lIGlzIG5lZWRlZJggIChlLmcuIHRoZSBhY2NvdW50IGNhbm5vdCBhZmZvcmQgaXQpLgAkIyMgRXZlbnRzAGAtIFtgRXZlbnQ6OlBzbUNyZWF0ZWRgXS4ocmVtb3ZlX3BzbQQBOGludGVybmFsX2Fzc2V0HQIBKFQ6OkFzc2V0SWQAA1wpAVJlbW92ZSBhIFBTTS4gQ2FsbGFibGUgYnkgdGhlIGN1cnJlbnQgYGZ1bGxfYWRtaW5gLiBBbGwgYXBwcm92ZWQgZXh0ZXJuYWxz6G11c3QgYmUgcmVtb3ZlZCBmaXJzdCBhbmQgYWdncmVnYXRlIFBTTSBkZWJ0IG11c3QgYmUgemVyby4AVQFJZiBhIGNyZWF0aW9uIGRlcG9zaXQgd2FzIHRha2VuLCBpdCBpcyBhbHdheXMgcmV0dXJuZWQgdG8gdGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx50HBhaWQgaXQsIHJlZ2FyZGxlc3Mgb2YgYW55IGxhdGVyIGFkbWluIHJlYXNzaWdubWVudC4ASCMjIERpc3BhdGNoIE9yaWdpbgCITXVzdCBtYXRjaCB0aGUgUFNNJ3MgYGZ1bGxfYWRtaW5gLgA0IyMgUGFyYW1ldGVycwC8LSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgUFNNIGluc3RhbmNlIHRvIHJlbW92ZS4AJCMjIEVycm9ycwARAS0gW2BFcnJvcjo6UHNtTm90Rm91bmRgXTogTm8gUFNNIGlzIHJlZ2lzdGVyZWQgZm9yIGBpbnRlcm5hbF9hc3NldGAuFQEtIFtgRXJyb3I6OlBzbUhhc0FwcHJvdmVkRXh0ZXJuYWxzYF06IEFwcHJvdmVkIGV4dGVybmFscyBzdGlsbCBleGlzdC4BAS0gW2BFcnJvcjo6UHNtSGFzRGVidGBdOiBPdXRzdGFuZGluZyBhZ2dyZWdhdGUgZGVidCBpcyBub24temVyby4AJCMjIEV2ZW50cwBgLSBbYEV2ZW50OjpQc21SZW1vdmVkYF0uPHNldF9taW50aW5nX2ZlZQwBOGludGVybmFsX2Fzc2V0HQIBKFQ6OkFzc2V0SWQAAThleHRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAEMZmVlzQQBHFBlcm1pbGwABFANAVNldCB0aGUgbWludGluZyBmZWUgZm9yIGFuIGAoaW50ZXJuYWxfYXNzZXQsIGV4dGVybmFsX2Fzc2V0KWAgcGFpci4ASCMjIERpc3BhdGNoIE9yaWdpbgAhAU11c3QgbWF0Y2ggdGhlIFBTTSBpbnN0YW5jZSdzIGBmdWxsX2FkbWluYCAodGhlIGBGdWxsYCBwcml2aWxlZ2UgbGV2ZWwpLgA0IyMgUGFyYW1ldGVycwDILSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgUFNNIGluc3RhbmNlIHRvIGNvbmZpZ3VyZS4pAS0gYGV4dGVybmFsX2Fzc2V0YDogVGhlIGV4dGVybmFsIGFzc2V0IHdob3NlIG1pbnRpbmcgZmVlIGlzIGJlaW5nIHVwZGF0ZWQudC0gYGZlZWA6IFRoZSBuZXcgbWludGluZyBmZWUuACQjIyBFcnJvcnMASQEtIFtgRXJyb3I6Okluc3VmZmljaWVudFByaXZpbGVnZWBdOiBJZiB0aGUgb3JpZ2luIG9ubHkgaGFzIGBFbWVyZ2VuY3lgIHByaXZpbGVnZXMuXQEtIFtgRXJyb3I6OkFzc2V0Tm90QXBwcm92ZWRgXTogSWYgYGV4dGVybmFsX2Fzc2V0YCBpcyBub3QgYXBwcm92ZWQgb24gYGludGVybmFsX2Fzc2V0YC4AJCMjIEV2ZW50cwABAS0gW2BFdmVudDo6TWludGluZ0ZlZVVwZGF0ZWRgXTogRW1pdHRlZCB3aXRoIG9sZCBhbmQgbmV3IHZhbHVlcy5Ic2V0X3JlZGVtcHRpb25fZmVlDAE4aW50ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0HQIBKFQ6OkFzc2V0SWQAAQxmZWXNBAEcUGVybWlsbAAFUBkBU2V0IHRoZSByZWRlbXB0aW9uIGZlZSBmb3IgYW4gYChpbnRlcm5hbF9hc3NldCwgZXh0ZXJuYWxfYXNzZXQpYCBwYWlyLgBIIyMgRGlzcGF0Y2ggT3JpZ2luACEBTXVzdCBtYXRjaCB0aGUgUFNNIGluc3RhbmNlJ3MgYGZ1bGxfYWRtaW5gICh0aGUgYEZ1bGxgIHByaXZpbGVnZSBsZXZlbCkuADQjIyBQYXJhbWV0ZXJzAMgtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBQU00gaW5zdGFuY2UgdG8gY29uZmlndXJlLjUBLSBgZXh0ZXJuYWxfYXNzZXRgOiBUaGUgZXh0ZXJuYWwgYXNzZXQgd2hvc2UgcmVkZW1wdGlvbiBmZWUgaXMgYmVpbmcgdXBkYXRlZC6ALSBgZmVlYDogVGhlIG5ldyByZWRlbXB0aW9uIGZlZS4AJCMjIEVycm9ycwBJAS0gW2BFcnJvcjo6SW5zdWZmaWNpZW50UHJpdmlsZWdlYF06IElmIHRoZSBvcmlnaW4gb25seSBoYXMgYEVtZXJnZW5jeWAgcHJpdmlsZWdlcy5dAS0gW2BFcnJvcjo6QXNzZXROb3RBcHByb3ZlZGBdOiBJZiBgZXh0ZXJuYWxfYXNzZXRgIGlzIG5vdCBhcHByb3ZlZCBvbiBgaW50ZXJuYWxfYXNzZXRgLgAkIyMgRXZlbnRzAA0BLSBbYEV2ZW50OjpSZWRlbXB0aW9uRmVlVXBkYXRlZGBdOiBFbWl0dGVkIHdpdGggb2xkIGFuZCBuZXcgdmFsdWVzLjBzZXRfbWF4X2RlYnQIAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAEUdmFsdWVZAQEwQmFsYW5jZU9mPFQ+AAZUQQFTZXQgdGhlIFBTTSBkZWJ0IGNlaWxpbmcgcGVyIGludGVybmFsIGFzc2V0LCBzaGFyZWQgYWNyb3NzIGFsbCBhcHByb3ZlZCBleHRlcm5hbBxhc3NldHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4ATQFNdXN0IG1hdGNoIHRoZSBQU00gaW5zdGFuY2UncyBgZnVsbF9hZG1pbmA7IG9ubHkgdGhlIGBGdWxsYCBwcml2aWxlZ2UgbGV2ZWwgbWF5IHVzZSh0aGlzIGNhbGwuADQjIyBQYXJhbWV0ZXJzAMgtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBQU00gaW5zdGFuY2UgdG8gY29uZmlndXJlLgkBLSBgdmFsdWVgOiBUaGUgbmV3IGFic29sdXRlIGRlYnQgY2VpbGluZywgaW4gaW50ZXJuYWwtYXNzZXQgdW5pdHMuACQjIyBFcnJvcnMAUQEtIFtgRXJyb3I6Okluc3VmZmljaWVudFByaXZpbGVnZWBdOiBJZiB0aGUgb3JpZ2luIGxldmVsIGNhbm5vdCBzZXQgdGhlIGRlYnQgY2VpbGluZy4dAS0gW2BFcnJvcjo6UHNtTm90Rm91bmRgXTogSWYgbm8gUFNNIGlzIHJlZ2lzdGVyZWQgZm9yIGBpbnRlcm5hbF9hc3NldGAuACQjIyBFdmVudHMA9C0gW2BFdmVudDo6TWF4RGVidFVwZGF0ZWRgXTogRW1pdHRlZCB3aXRoIG9sZCBhbmQgbmV3IHZhbHVlcy5Ac2V0X2Fzc2V0X3N0YXR1cwwBOGludGVybmFsX2Fzc2V0HQIBKFQ6OkFzc2V0SWQAAThleHRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAEYc3RhdHVz0QQBTENpcmN1aXRCcmVha2VyTGV2ZWwAB1D0U2V0IHRoZSBjaXJjdWl0IGJyZWFrZXIgcGVyIGV4dGVybmFsIGFzc2V0IG9uIGEgUFNNIGluc3RhbmNlLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAC0BTXVzdCBtYXRjaCB0aGUgUFNNIGluc3RhbmNlJ3MgYGZ1bGxfYWRtaW5gIG9yIGBlbWVyZ2VuY3lfYWRtaW5gOyBlaXRoZXIgdGhl4GBGdWxsYCBvciBgRW1lcmdlbmN5YCBwcml2aWxlZ2UgbGV2ZWwgbWF5IHVzZSB0aGlzIGNhbGwuADQjIyBQYXJhbWV0ZXJzAMgtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBQU00gaW5zdGFuY2UgdG8gY29uZmlndXJlLhUBLSBgZXh0ZXJuYWxfYXNzZXRgOiBUaGUgZXh0ZXJuYWwgYXNzZXQgd2hvc2Ugc3RhdHVzIGlzIGJlaW5nIHVwZGF0ZWQu8C0gYHN0YXR1c2A6IFRoZSBuZXcgY2lyY3VpdCBicmVha2VyIGxldmVsIGZvciB0aGF0IGV4dGVybmFsLgAkIyMgRXJyb3JzAF0BLSBbYEVycm9yOjpBc3NldE5vdEFwcHJvdmVkYF06IElmIGBleHRlcm5hbF9hc3NldGAgaXMgbm90IGFwcHJvdmVkIG9uIGBpbnRlcm5hbF9hc3NldGAuACQjIyBFdmVudHMAAQEtIFtgRXZlbnQ6OkFzc2V0U3RhdHVzVXBkYXRlZGBdOiBFbWl0dGVkIG9uIGEgc3VjY2Vzc2Z1bCB1cGRhdGUuYHNldF9hc3NldF9jZWlsaW5nX3dlaWdodAwBOGludGVybmFsX2Fzc2V0HQIBKFQ6OkFzc2V0SWQAAThleHRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAEYd2VpZ2h0zQQBHFBlcm1pbGwACGDwU2V0IHRoZSBjZWlsaW5nIHdlaWdodCBwZXIgZXh0ZXJuYWwgYXNzZXQgb24gYSBQU00gaW5zdGFuY2UuAC0BV2VpZ2h0cyBhcmUgbm9ybWFsaXNlZCBhZ2FpbnN0IHRoZSBzdW0gb2Ygd2VpZ2h0cyB3aXRoaW4gdGhlIHNhbWUgaW5zdGFuY2U69GBtYXhfYXNzZXRfZGVidCA9ICh3ZWlnaHQgLyBzdW1fb2Zfd2VpZ2h0cykgKiBpbmZvLm1heF9kZWJ0YC4ASCMjIERpc3BhdGNoIE9yaWdpbgBNAU11c3QgbWF0Y2ggdGhlIFBTTSBpbnN0YW5jZSdzIGBmdWxsX2FkbWluYDsgb25seSB0aGUgYEZ1bGxgIHByaXZpbGVnZSBsZXZlbCBtYXkgdXNlKHRoaXMgY2FsbC4ANCMjIFBhcmFtZXRlcnMAyC0gYGludGVybmFsX2Fzc2V0YDogVGhlIFBTTSBpbnN0YW5jZSB0byBjb25maWd1cmUuNQEtIGBleHRlcm5hbF9hc3NldGA6IFRoZSBleHRlcm5hbCBhc3NldCB3aG9zZSBjZWlsaW5nIHdlaWdodCBpcyBiZWluZyB1cGRhdGVkLjEBLSBgd2VpZ2h0YDogVGhlIG5ldyBjZWlsaW5nIHdlaWdodC4gWmVybyBkaXNhYmxlcyBtaW50aW5nIGZvciB0aGlzIGV4dGVybmFsLgAkIyMgRXJyb3JzAE0BLSBbYEVycm9yOjpJbnN1ZmZpY2llbnRQcml2aWxlZ2VgXTogSWYgdGhlIG9yaWdpbiBsZXZlbCBjYW5ub3Qgc2V0IGNlaWxpbmcgd2VpZ2h0cy5dAS0gW2BFcnJvcjo6QXNzZXROb3RBcHByb3ZlZGBdOiBJZiBgZXh0ZXJuYWxfYXNzZXRgIGlzIG5vdCBhcHByb3ZlZCBvbiBgaW50ZXJuYWxfYXNzZXRgLgAkIyMgRXZlbnRzACEBLSBbYEV2ZW50OjpBc3NldENlaWxpbmdXZWlnaHRVcGRhdGVkYF06IEVtaXR0ZWQgd2l0aCBvbGQgYW5kIG5ldyB2YWx1ZXMuSGFkZF9leHRlcm5hbF9hc3NldAgBOGludGVybmFsX2Fzc2V0HQIBKFQ6OkFzc2V0SWQAAThleHRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAl41EFwcHJvdmUgYW4gZXh0ZXJuYWwgYXNzZXQgZm9yIGEgZ2l2ZW4gaW50ZXJuYWwgYXNzZXQuABUBU25hcHNob3RzIHRoZSBleHRlcm5hbCBhc3NldCdzIGxpdmUgZGVjaW1hbHMgYXQgcmVnaXN0cmF0aW9uIHRpbWUgYW5knGluY3JlbWVudHMgW2BQc21JbmZvOjpleHRlcm5hbF9jb3VudGBdLgBIIyMgRGlzcGF0Y2ggT3JpZ2luACEBTXVzdCBtYXRjaCB0aGUgUFNNIGluc3RhbmNlJ3MgYGZ1bGxfYWRtaW5gICh0aGUgYEZ1bGxgIHByaXZpbGVnZSBsZXZlbCkuADQjIyBQYXJhbWV0ZXJzAAEBLSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgUFNNIGluc3RhbmNlIHRvIGFwcHJvdmUgdGhlIGV4dGVybmFsIG9uLsgtIGBleHRlcm5hbF9hc3NldGA6IFRoZSBleHRlcm5hbCBhc3NldCB0byBhcHByb3ZlLgAkIyMgRXJyb3JzAEkBLSBbYEVycm9yOjpJbnN1ZmZpY2llbnRQcml2aWxlZ2VgXTogSWYgdGhlIG9yaWdpbiBvbmx5IGhhcyBgRW1lcmdlbmN5YCBwcml2aWxlZ2VzLh0BLSBbYEVycm9yOjpQc21Ob3RGb3VuZGBdOiBJZiBubyBQU00gaXMgcmVnaXN0ZXJlZCBmb3IgYGludGVybmFsX2Fzc2V0YC45AS0gW2BFcnJvcjo6VG9vTWFueUFzc2V0c2BdOiBJZiB0aGUgUFNNIGlzIGFscmVhZHkgYXQgW2BDb25maWc6Ok1heEV4dGVybmFsc2BdLl0BLSBbYEVycm9yOjpBc3NldEFscmVhZHlBcHByb3ZlZGBdOiBJZiBgZXh0ZXJuYWxfYXNzZXRgIGlzIGFscmVhZHkgYXBwcm92ZWQgb24gdGhpcyBQU00uUQEtIFtgRXJyb3I6OkFzc2V0RG9lc05vdEV4aXN0YF06IElmIGBleHRlcm5hbF9hc3NldGAgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHVuZGVybHlpbmdQICBmdW5naWJsZXMgYmFja2VuZC5ZAS0gW2BFcnJvcjo6RGVjaW1hbHNNaXNtYXRjaGBdOiBJZiB0aGUgaW50ZXJuYWwgYXNzZXQncyBsaXZlIGRlY2ltYWxzIGRpdmVyZ2VkIGZyb20gdGhlaCAgc25hcHNob3QgaW4gW2BQc21JbmZvYF0uXQEtIFtgRXJyb3I6OkRlY2ltYWxzUmFuZ2VFeGNlZWRlZGBdOiBJZiBgfGFzc2V0X2RlY2ltYWxzIOKIkiBpbnRlcm5hbF9kZWNpbWFsc3xgIGV4Y2VlZHNgICBbYE1BWF9ERUNJTUFMU19ESUZGYF0uACQjIyBFdmVudHMACQEtIFtgRXZlbnQ6OkV4dGVybmFsQXNzZXRBZGRlZGBdOiBFbWl0dGVkIG9uIGEgc3VjY2Vzc2Z1bCBhcHByb3ZhbC5UcmVtb3ZlX2V4dGVybmFsX2Fzc2V0CAE4aW50ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0HQIBKFQ6OkFzc2V0SWQACmS0UmVtb3ZlIGFuIGV4dGVybmFsIGFzc2V0IGZyb20gYSBQU00gaW5zdGFuY2UuACEBV2lwZXMgdGhlIGV4dGVybmFsJ3MgcGVyLWluc3RhbmNlIHN0YXRlIChzdGF0dXMsIGRlY2ltYWxzLCBmZWVzLCBjZWlsaW5nFQF3ZWlnaHQsIGRlYnQgY291bnRlcikgYW5kIGRlY3JlbWVudHMgW2BQc21JbmZvOjpleHRlcm5hbF9jb3VudGBdLiBUaGXoZXh0ZXJuYWwgbXVzdCBoYXZlIHplcm8gb3V0c3RhbmRpbmcgZGVidCBvbiB0aGlzIGluc3RhbmNlLgBIIyMgRGlzcGF0Y2ggT3JpZ2luACEBTXVzdCBtYXRjaCB0aGUgUFNNIGluc3RhbmNlJ3MgYGZ1bGxfYWRtaW5gICh0aGUgYEZ1bGxgIHByaXZpbGVnZSBsZXZlbCkuADQjIyBQYXJhbWV0ZXJzAAUBLSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgUFNNIGluc3RhbmNlIHRvIHJlbW92ZSB0aGUgZXh0ZXJuYWwgZnJvbS7ELSBgZXh0ZXJuYWxfYXNzZXRgOiBUaGUgZXh0ZXJuYWwgYXNzZXQgdG8gcmVtb3ZlLgAkIyMgRXJyb3JzAEkBLSBbYEVycm9yOjpJbnN1ZmZpY2llbnRQcml2aWxlZ2VgXTogSWYgdGhlIG9yaWdpbiBvbmx5IGhhcyBgRW1lcmdlbmN5YCBwcml2aWxlZ2VzLh0BLSBbYEVycm9yOjpQc21Ob3RGb3VuZGBdOiBJZiBubyBQU00gaXMgcmVnaXN0ZXJlZCBmb3IgYGludGVybmFsX2Fzc2V0YC49AS0gW2BFcnJvcjo6QXNzZXROb3RBcHByb3ZlZGBdOiBJZiBgZXh0ZXJuYWxfYXNzZXRgIGlzIG5vdCBhcHByb3ZlZCBvbiB0aGlzIFBTTS49AS0gW2BFcnJvcjo6QXNzZXRIYXNEZWJ0YF06IElmIHRoZSBleHRlcm5hbCBzdGlsbCBoYXMgbm9uLXplcm8gb3V0c3RhbmRpbmcgZGVidC4AJCMjIEV2ZW50cwANAS0gW2BFdmVudDo6RXh0ZXJuYWxBc3NldFJlbW92ZWRgXTogRW1pdHRlZCBvbiBhIHN1Y2Nlc3NmdWwgcmVtb3ZhbC44c2V0X2Z1bGxfYWRtaW4IAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAEkbmV3X2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgALSBkBUmVhc3NpZ24gdGhlIFBTTSdzIGBmdWxsX2FkbWluYC4gQ2FsbGFibGUgYnkgdGhlIGN1cnJlbnQgYGZ1bGxfYWRtaW5gLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAKhNdXN0IG1hdGNoIHRoZSBQU00ncyBjdXJyZW50IGBmdWxsX2FkbWluYC4ANCMjIFBhcmFtZXRlcnMAAQEtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBQU00gd2hvc2UgYGZ1bGxfYWRtaW5gIGlzIGJlaW5nIGNoYW5nZWQurC0gYG5ld19hZG1pbmA6IFRoZSBuZXcgYGZ1bGxfYWRtaW5gIG9yaWdpbi4AJCMjIEVycm9ycwARAS0gW2BFcnJvcjo6UHNtTm90Rm91bmRgXTogTm8gUFNNIGlzIHJlZ2lzdGVyZWQgZm9yIGBpbnRlcm5hbF9hc3NldGAuACQjIyBFdmVudHMAeC0gW2BFdmVudDo6RnVsbEFkbWluQ2hhbmdlZGBdLkxzZXRfZW1lcmdlbmN5X2FkbWluCAE4aW50ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABJG5ld19hZG1pbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4ADEgtAVJlYXNzaWduIHRoZSBQU00ncyBgZW1lcmdlbmN5X2FkbWluYC4gQ2FsbGFibGUgYnkgdGhlIGN1cnJlbnQgYGZ1bGxfYWRtaW5gLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAKhNdXN0IG1hdGNoIHRoZSBQU00ncyBjdXJyZW50IGBmdWxsX2FkbWluYC4ANCMjIFBhcmFtZXRlcnMAFQEtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBQU00gd2hvc2UgYGVtZXJnZW5jeV9hZG1pbmAgaXMgYmVpbmcgY2hhbmdlZC7ALSBgbmV3X2FkbWluYDogVGhlIG5ldyBgZW1lcmdlbmN5X2FkbWluYCBvcmlnaW4uACQjIyBFcnJvcnMAEQEtIFtgRXJyb3I6OlBzbU5vdEZvdW5kYF06IE5vIFBTTSBpcyByZWdpc3RlcmVkIGZvciBgaW50ZXJuYWxfYXNzZXRgLgAkIyMgRXZlbnRzAIwtIFtgRXZlbnQ6OkVtZXJnZW5jeUFkbWluQ2hhbmdlZGBdLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NBAw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcm1pbGwAAAQAOAEMdTMyAADRBAwocGFsbGV0X3BzbRhwYWxsZXRMQ2lyY3VpdEJyZWFrZXJMZXZlbAABDChBbGxFbmFibGVkAAAAPE1pbnRpbmdEaXNhYmxlZAABACxBbGxEaXNhYmxlZAACAADVBAw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBBDYWxsCARUAARJAAEYLHNwZW5kX2xvY2FsCAEYYW1vdW50VQEBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AA0S4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAEUBTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3QgYGFtb3VudGAuACwjIyMgRGV0YWlsc0UBTk9URTogRm9yIHJlY29yZC1rZWVwaW5nIHB1cnBvc2VzLCB0aGUgcHJvcG9zZXIgaXMgZGVlbWVkIHRvIGJlIGVxdWl2YWxlbnQgdG8gdGhlMGJlbmVmaWNpYXJ5LgA4IyMjIFBhcmFtZXRlcnNBAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSB0aGUgdHJlYXN1cnkgdG8gdGhlIGBiZW5lZmljaWFyeWAu6C0gYGJlbmVmaWNpYXJ5YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSB0cmFuc2Zlci4AJCMjIEV2ZW50cwC0RW1pdHMgW2BFdmVudDo6U3BlbmRBcHByb3ZlZGBdIGlmIHN1Y2Nlc3NmdWwuPHJlbW92ZV9hcHByb3ZhbAQBLHByb3Bvc2FsX2lkZAE0UHJvcG9zYWxJbmRleAAEVC0BRm9yY2UgYSBwcmV2aW91c2x5IGFwcHJvdmVkIHByb3Bvc2FsIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgYXBwcm92YWwgcXVldWUuAEgjIyBEaXNwYXRjaCBPcmlnaW4AhE11c3QgYmUgW2BDb25maWc6OlJlamVjdE9yaWdpbmBdLgAoIyMgRGV0YWlscwDAVGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBubyBsb25nZXIgYmUgcmV0dXJuZWQuADgjIyMgUGFyYW1ldGVyc6AtIGBwcm9wb3NhbF9pZGA6IFRoZSBpbmRleCBvZiBhIHByb3Bvc2FsADgjIyMgQ29tcGxleGl0eawtIE8oQSkgd2hlcmUgYEFgIGlzIHRoZSBudW1iZXIgb2YgYXBwcm92YWxzACgjIyMgRXJyb3JzRQEtIFtgRXJyb3I6OlByb3Bvc2FsTm90QXBwcm92ZWRgXTogVGhlIGBwcm9wb3NhbF9pZGAgc3VwcGxpZWQgd2FzIG5vdCBmb3VuZCBpbiB0aGVRASAgYXBwcm92YWwgcXVldWUsIGkuZS4sIHRoZSBwcm9wb3NhbCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuIFRoaXMgY291bGQgYWxzbyBtZWFuIHRoZVkBICBwcm9wb3NhbCBkb2VzIG5vdCBleGlzdCBhbHRvZ2V0aGVyLCB0aHVzIHRoZXJlIGlzIG5vIHdheSBpdCB3b3VsZCBoYXZlIGJlZW4gYXBwcm92ZWRUICBpbiB0aGUgZmlyc3QgcGxhY2UuFHNwZW5kEAEoYXNzZXRfa2luZNkEAURCb3g8VDo6QXNzZXRLaW5kPgABGGFtb3VudFUBAVBBc3NldEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ53QQBeEJveDxCZW5lZmljaWFyeUxvb2t1cE9mPFQsIEk+PgABKHZhbGlkX2Zyb23kAXBPcHRpb248QmxvY2tOdW1iZXJGb3I8VCwgST4+AAVouFByb3Bvc2UgYW5kIGFwcHJvdmUgYSBzcGVuZCBvZiB0cmVhc3VyeSBmdW5kcy4ASCMjIERpc3BhdGNoIE9yaWdpbgAdAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0VQFgYW1vdW50YCBvZiBgYXNzZXRfa2luZGAgaW4gdGhlIG5hdGl2ZSBhc3NldC4gVGhlIGFtb3VudCBvZiBgYXNzZXRfa2luZGAgaXMgY29udmVydGVk1GZvciBhc3NlcnRpb24gdXNpbmcgdGhlIFtgQ29uZmlnOjpCYWxhbmNlQ29udmVydGVyYF0uACgjIyBEZXRhaWxzAEkBQ3JlYXRlIGFuIGFwcHJvdmVkIHNwZW5kIGZvciB0cmFuc2ZlcnJpbmcgYSBzcGVjaWZpYyBgYW1vdW50YCBvZiBgYXNzZXRfa2luZGAgdG8gYWEBZGVzaWduYXRlZCBiZW5lZmljaWFyeS4gVGhlIHNwZW5kIG11c3QgYmUgY2xhaW1lZCB1c2luZyB0aGUgYHBheW91dGAgZGlzcGF0Y2hhYmxlIHdpdGhpbnR0aGUgW2BDb25maWc6OlBheW91dFBlcmlvZGBdLgA4IyMjIFBhcmFtZXRlcnMVAS0gYGFzc2V0X2tpbmRgOiBBbiBpbmRpY2F0b3Igb2YgdGhlIHNwZWNpZmljIGFzc2V0IGNsYXNzIHRvIGJlIHNwZW50LkEBLSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB0cmVhc3VyeSB0byB0aGUgYGJlbmVmaWNpYXJ5YC64LSBgYmVuZWZpY2lhcnlgOiBUaGUgYmVuZWZpY2lhcnkgb2YgdGhlIHNwZW5kLlUBLSBgdmFsaWRfZnJvbWA6IFRoZSBibG9jayBudW1iZXIgZnJvbSB3aGljaCB0aGUgc3BlbmQgY2FuIGJlIGNsYWltZWQuIEl0IGNhbiByZWZlciB0bxkBICB0aGUgcGFzdCBpZiB0aGUgcmVzdWx0aW5nIHNwZW5kIGhhcyBub3QgeWV0IGV4cGlyZWQgYWNjb3JkaW5nIHRvIHRoZUUBICBbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0uIElmIGBOb25lYCwgdGhlIHNwZW5kIGNhbiBiZSBjbGFpbWVkIGltbWVkaWF0ZWx5IGFmdGVyLCAgYXBwcm92YWwuACQjIyBFdmVudHMAyEVtaXRzIFtgRXZlbnQ6OkFzc2V0U3BlbmRBcHByb3ZlZGBdIGlmIHN1Y2Nlc3NmdWwuGHBheW91dAQBFGluZGV4OAEoU3BlbmRJbmRleAAGTDhDbGFpbSBhIHNwZW5kLgBIIyMgRGlzcGF0Y2ggT3JpZ2luADhNdXN0IGJlIHNpZ25lZAAoIyMgRGV0YWlscwBVAVNwZW5kcyBtdXN0IGJlIGNsYWltZWQgd2l0aGluIHNvbWUgdGVtcG9yYWwgYm91bmRzLiBBIHNwZW5kIG1heSBiZSBjbGFpbWVkIHdpdGhpbiBvbmXUW2BDb25maWc6OlBheW91dFBlcmlvZGBdIGZyb20gdGhlIGB2YWxpZF9mcm9tYCBibG9jay5VAUluIGNhc2Ugb2YgYSBwYXlvdXQgZmFpbHVyZSwgdGhlIHNwZW5kIHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUgYGNoZWNrX3N0YXR1c2DcZGlzcGF0Y2hhYmxlIGJlZm9yZSByZXRyeWluZyB3aXRoIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMAkEVtaXRzIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjaGVja19zdGF0dXMEARRpbmRleDgBKFNwZW5kSW5kZXgAB0wpAUNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHNwZW5kIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgc3RvcmFnZSBpZiBwcm9jZXNzZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwABAVRoZSBzdGF0dXMgY2hlY2sgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIHJldHJ5aW5nIGEgZmFpbGVkIHBheW91dC5JAUlmIGEgc3BlbmQgaGFzIGVpdGhlciBzdWNjZWVkZWQgb3IgZXhwaXJlZCwgaXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yYWdlIGJ5IHRoaXPsZnVuY3Rpb24uIEluIHN1Y2ggaW5zdGFuY2VzLCB0cmFuc2FjdGlvbiBmZWVzIGFyZSByZWZ1bmRlZC4AOCMjIyBQYXJhbWV0ZXJzbC0gYGluZGV4YDogVGhlIHNwZW5kIGluZGV4LgAkIyMgRXZlbnRzAPhFbWl0cyBbYEV2ZW50OjpQYXltZW50RmFpbGVkYF0gaWYgdGhlIHNwZW5kIHBheW91dCBoYXMgZmFpbGVkLgEBRW1pdHMgW2BFdmVudDo6U3BlbmRQcm9jZXNzZWRgXSBpZiB0aGUgc3BlbmQgcGF5b3V0IGhhcyBzdWNjZWVkLih2b2lkX3NwZW5kBAEUaW5kZXg4AShTcGVuZEluZGV4AAhAfFZvaWQgcHJldmlvdXNseSBhcHByb3ZlZCBzcGVuZC4ASCMjIERpc3BhdGNoIE9yaWdpbgCETXVzdCBiZSBbYENvbmZpZzo6UmVqZWN0T3JpZ2luYF0uACgjIyBEZXRhaWxzAB0BQSBzcGVuZCB2b2lkIGlzIG9ubHkgcG9zc2libGUgaWYgdGhlIHBheW91dCBoYXMgbm90IGJlZW4gYXR0ZW1wdGVkIHlldC4AOCMjIyBQYXJhbWV0ZXJzbC0gYGluZGV4YDogVGhlIHNwZW5kIGluZGV4LgAkIyMgRXZlbnRzAMBFbWl0cyBbYEV2ZW50OjpBc3NldFNwZW5kVm9pZGVkYF0gaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu2QQMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uFGltcGxzXFZlcnNpb25lZExvY2F0YWJsZUFzc2V0AAEMCFYzCAEgbG9jYXRpb27NAQFEeGNtOjp2Mzo6TG9jYXRpb24AASBhc3NldF9pZG0CAUB4Y206OnYzOjpBc3NldElkAAMACFY0CAEgbG9jYXRpb27pAQFEeGNtOjp2NDo6TG9jYXRpb24AASBhc3NldF9pZOECAUB4Y206OnY0OjpBc3NldElkAAQACFY1CAEgbG9jYXRpb24dAgFEeGNtOjp2NTo6TG9jYXRpb24AASBhc3NldF9pZC0DAUB4Y206OnY1OjpBc3NldElkAAUAAN0EDERwYXJhY2hhaW5zX2NvbW1vbgxwYXlkVmVyc2lvbmVkTG9jYXRhYmxlQWNjb3VudAABCAhWNAgBIGxvY2F0aW9u6QEBRHhjbTo6djQ6OkxvY2F0aW9uAAEoYWNjb3VudF9pZOkBAUR4Y206OnY0OjpMb2NhdGlvbgAEAAhWNQgBIGxvY2F0aW9uHQIBRHhjbTo6djU6OkxvY2F0aW9uAAEoYWNjb3VudF9pZB0CAUR4Y206OnY1OjpMb2NhdGlvbgAFAADhBAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBBDYWxsCARUAARJAAEYEHZvdGUIAShwb2xsX2luZGV4ZAFEUG9sbEluZGV4T2Y8VCwgST4AARB2b3Rl5QQBcEFjY291bnRWb3RlPEJhbGFuY2VPZjxULCBJPj4AACQZAVZvdGUgaW4gYSBwb2xsLiBJZiBgdm90ZS5pc19heWUoKWAsIHRoZSB2b3RlIGlzIHRvIGVuYWN0IHRoZSBwcm9wb3NhbDu4b3RoZXJ3aXNlIGl0IGlzIGEgdm90ZSB0byBrZWVwIHRoZSBzdGF0dXMgcXVvLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AyC0gYHBvbGxfaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHBvbGwgdG8gdm90ZSBmb3IuhC0gYHZvdGVgOiBUaGUgdm90ZSBjb25maWd1cmF0aW9uLgAVAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgaGFzIHZvdGVkIG9uLiBkZWxlZ2F0ZRABFGNsYXNz7QMBNENsYXNzT2Y8VCwgST4AAQh0bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoY29udmljdGlvbu0EAShDb252aWN0aW9uAAEcYmFsYW5jZVkBATxCYWxhbmNlT2Y8VCwgST4AAVxNAURlbGVnYXRlIHRoZSB2b3RpbmcgcG93ZXIgKHdpdGggc29tZSBnaXZlbiBjb252aWN0aW9uKSBvZiB0aGUgc2VuZGluZyBhY2NvdW50IGZvciBhaHBhcnRpY3VsYXIgY2xhc3Mgb2YgcG9sbHMuAFUBVGhlIGJhbGFuY2UgZGVsZWdhdGVkIGlzIGxvY2tlZCBmb3IgYXMgbG9uZyBhcyBpdCdzIGRlbGVnYXRlZCwgYW5kIHRoZXJlYWZ0ZXIgZm9yIHRoZch0aW1lIGFwcHJvcHJpYXRlIGZvciB0aGUgY29udmljdGlvbidzIGxvY2sgcGVyaW9kLgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8sIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgZWl0aGVyOnQgIC0gYmUgZGVsZWdhdGluZyBhbHJlYWR5OyBvckUBICAtIGhhdmUgbm8gdm90aW5nIGFjdGl2aXR5IChpZiB0aGVyZSBpcywgdGhlbiBpdCB3aWxsIG5lZWQgdG8gYmUgcmVtb3ZlZCB0aHJvdWdoTCAgICBgcmVtb3ZlX3ZvdGVgKS4ARQEtIGB0b2A6IFRoZSBhY2NvdW50IHdob3NlIHZvdGluZyB0aGUgYHRhcmdldGAgYWNjb3VudCdzIHZvdGluZyBwb3dlciB3aWxsIGZvbGxvdy5dAS0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIGRlbGVnYXRlLiBUbyBkZWxlZ2F0ZSBtdWx0aXBsZSBjbGFzc2VzLCBtdWx0aXBsZSBjYWxsc4AgIHRvIHRoaXMgZnVuY3Rpb24gYXJlIHJlcXVpcmVkLlUBLSBgY29udmljdGlvbmA6IFRoZSBjb252aWN0aW9uIHRoYXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgZGVsZWdhdGVkIHZvdGVzLiBXaGVuIHRoZUEBICBhY2NvdW50IGlzIHVuZGVsZWdhdGVkLCB0aGUgZnVuZHMgd2lsbCBiZSBsb2NrZWQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHBlcmlvZC5hAS0gYGJhbGFuY2VgOiBUaGUgYW1vdW50IG9mIHRoZSBhY2NvdW50J3MgYmFsYW5jZSB0byBiZSB1c2VkIGluIGRlbGVnYXRpbmcuIFRoaXMgbXVzdCBub3S0ICBiZSBtb3JlIHRoYW4gdGhlIGFjY291bnQncyBjdXJyZW50IGJhbGFuY2UuAEhFbWl0cyBgRGVsZWdhdGVkYC4AJQFXZWlnaHQ6IGBPKFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhlIHZvdGVyIGRlbGVnYXRpbmcgdG8gaGFzTQEgIHZvdGVkIG9uLiBXZWlnaHQgaXMgaW5pdGlhbGx5IGNoYXJnZWQgYXMgaWYgbWF4aW11bSB2b3RlcywgYnV0IGlzIHJlZnVuZGVkIGxhdGVyLih1bmRlbGVnYXRlBAEUY2xhc3PtAwE0Q2xhc3NPZjxULCBJPgACOE0BVW5kZWxlZ2F0ZSB0aGUgdm90aW5nIHBvd2VyIG9mIHRoZSBzZW5kaW5nIGFjY291bnQgZm9yIGEgcGFydGljdWxhciBjbGFzcyBvZiBwb2xscy4AXQFUb2tlbnMgbWF5IGJlIHVubG9ja2VkIGZvbGxvd2luZyBvbmNlIGFuIGFtb3VudCBvZiB0aW1lIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9jayBwZXJpb2QJAW9mIHRoZSBjb252aWN0aW9uIHdpdGggd2hpY2ggdGhlIGRlbGVnYXRpb24gd2FzIGlzc3VlZCBoYXMgcGFzc2VkLgBFAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZVRjdXJyZW50bHkgZGVsZWdhdGluZy4A8C0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIHJlbW92ZSB0aGUgZGVsZWdhdGlvbiBmcm9tLgBQRW1pdHMgYFVuZGVsZWdhdGVkYC4AJQFXZWlnaHQ6IGBPKFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhlIHZvdGVyIGRlbGVnYXRpbmcgdG8gaGFzTQEgIHZvdGVkIG9uLiBXZWlnaHQgaXMgaW5pdGlhbGx5IGNoYXJnZWQgYXMgaWYgbWF4aW11bSB2b3RlcywgYnV0IGlzIHJlZnVuZGVkIGxhdGVyLhh1bmxvY2sIARRjbGFzc+0DATRDbGFzc09mPFQsIEk+AAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAyRdAVJlbW92ZSB0aGUgbG9jayBjYXVzZWQgYnkgcHJpb3Igdm90aW5nL2RlbGVnYXRpbmcgd2hpY2ggaGFzIGV4cGlyZWQgd2l0aGluIGEgcGFydGljdWxhchhjbGFzcy4AyFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAKAtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiBwb2xscyB0byB1bmxvY2suuC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSB0aGUgbG9jayBvbi4AvFdlaWdodDogYE8oUilgIHdpdGggUiBudW1iZXIgb2Ygdm90ZSBvZiB0YXJnZXQuLHJlbW92ZV92b3RlCAEUY2xhc3PxBAFUT3B0aW9uPENsYXNzT2Y8VCwgST4+AAEUaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgAEdGRSZW1vdmUgYSB2b3RlIGZvciBhIHBvbGwuAAxJZjpwLSB0aGUgcG9sbCB3YXMgY2FuY2VsbGVkLCBvcmQtIHRoZSBwb2xsIGlzIG9uZ29pbmcsIG9yeC0gdGhlIHBvbGwgaGFzIGVuZGVkIHN1Y2ggdGhhdPwgIC0gdGhlIHZvdGUgb2YgdGhlIGFjY291bnQgd2FzIGluIG9wcG9zaXRpb24gdG8gdGhlIHJlc3VsdDsgb3LUICAtIHRoZXJlIHdhcyBubyBjb252aWN0aW9uIHRvIHRoZSBhY2NvdW50J3Mgdm90ZTsgb3KEICAtIHRoZSBhY2NvdW50IG1hZGUgYSBzcGxpdCB2b3RlXQEuLi50aGVuIHRoZSB2b3RlIGlzIHJlbW92ZWQgY2xlYW5seSBhbmQgYSBmb2xsb3dpbmcgY2FsbCB0byBgdW5sb2NrYCBtYXkgcmVzdWx0IGluIG1vcmVYZnVuZHMgYmVpbmcgYXZhaWxhYmxlLgCQSWYsIGhvd2V2ZXIsIHRoZSBwb2xsIGhhcyBlbmRlZCBhbmQ67C0gaXQgZmluaXNoZWQgY29ycmVzcG9uZGluZyB0byB0aGUgdm90ZSBvZiB0aGUgYWNjb3VudCwgYW5k3C0gdGhlIGFjY291bnQgbWFkZSBhIHN0YW5kYXJkIHZvdGUgd2l0aCBjb252aWN0aW9uLCBhbmS8LSB0aGUgbG9jayBwZXJpb2Qgb2YgdGhlIGNvbnZpY3Rpb24gaXMgbm90IG92ZXJZAS4uLnRoZW4gdGhlIGxvY2sgd2lsbCBiZSBhZ2dyZWdhdGVkIGludG8gdGhlIG92ZXJhbGwgYWNjb3VudCdzIGxvY2ssIHdoaWNoIG1heSBpbnZvbHZlWQEqb3ZlcmxvY2tpbmcqICh3aGVyZSB0aGUgdHdvIGxvY2tzIGFyZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIGxvY2sgdGhhdCBpcyB0aGUgbWF4aW11beRvZiBib3RoIHRoZSBhbW91bnQgbG9ja2VkIGFuZCB0aGUgdGltZSBpcyBpdCBsb2NrZWQgZm9yKS4ASQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLCBhbmQgdGhlIHNpZ25lciBtdXN0IGhhdmUgYSB2b3RlcHJlZ2lzdGVyZWQgZm9yIHBvbGwgYGluZGV4YC4A3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHBvbGwgb2YgdGhlIHZvdGUgdG8gYmUgcmVtb3ZlZC5VAS0gYGNsYXNzYDogT3B0aW9uYWwgcGFyYW1ldGVyLCBpZiBnaXZlbiBpdCBpbmRpY2F0ZXMgdGhlIGNsYXNzIG9mIHRoZSBwb2xsLiBGb3IgcG9sbHPwICB3aGljaCBoYXZlIGZpbmlzaGVkIG9yIGFyZSBjYW5jZWxsZWQsIHRoaXMgbXVzdCBiZSBgU29tZWAuAEUBV2VpZ2h0OiBgTyhSICsgbG9nIFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhhdCBgdGFyZ2V0YCBoYXMgdm90ZWQgb24u2CAgV2VpZ2h0IGlzIGNhbGN1bGF0ZWQgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiB2b3RlLkRyZW1vdmVfb3RoZXJfdm90ZQwBGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUY2xhc3PtAwE0Q2xhc3NPZjxULCBJPgABFGluZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4ABUBkUmVtb3ZlIGEgdm90ZSBmb3IgYSBwb2xsLgBNAUlmIHRoZSBgdGFyZ2V0YCBpcyBlcXVhbCB0byB0aGUgc2lnbmVyLCB0aGVuIHRoaXMgZnVuY3Rpb24gaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvLQFgcmVtb3ZlX3ZvdGVgLiBJZiBub3QgZXF1YWwgdG8gdGhlIHNpZ25lciwgdGhlbiB0aGUgdm90ZSBtdXN0IGhhdmUgZXhwaXJlZCwlAWVpdGhlciBiZWNhdXNlIHRoZSBwb2xsIHdhcyBjYW5jZWxsZWQsIGJlY2F1c2UgdGhlIHZvdGVyIGxvc3QgdGhlIHBvbGwgb3KYYmVjYXVzZSB0aGUgY29udmljdGlvbiBwZXJpb2QgaXMgb3Zlci4AyFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAGEBLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgb2YgdGhlIHZvdGUgdG8gYmUgcmVtb3ZlZDsgdGhpcyBhY2NvdW50IG11c3QgaGF2ZSB2b3RlZCBmb3IgcG9sbCggIGBpbmRleGAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHBvbGwgb2YgdGhlIHZvdGUgdG8gYmUgcmVtb3ZlZC6ELSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgdGhlIHBvbGwuAEUBV2VpZ2h0OiBgTyhSICsgbG9nIFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhhdCBgdGFyZ2V0YCBoYXMgdm90ZWQgb24u2CAgV2VpZ2h0IGlzIGNhbGN1bGF0ZWQgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiB2b3RlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7lBAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUsQWNjb3VudFZvdGUEHEJhbGFuY2UBWQEBDCBTdGFuZGFyZAgBEHZvdGXpBAEQVm90ZQABHGJhbGFuY2VZAQEcQmFsYW5jZQAAABRTcGxpdAgBDGF5ZVkBARxCYWxhbmNlAAEMbmF5WQEBHEJhbGFuY2UAAQAwU3BsaXRBYnN0YWluDAEMYXllWQEBHEJhbGFuY2UAAQxuYXlZAQEcQmFsYW5jZQABHGFic3RhaW5ZAQEcQmFsYW5jZQACAADpBAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUQVm90ZQAABAAMAAAA7QQMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZyhjb252aWN0aW9uKENvbnZpY3Rpb24AARwQTm9uZQAAACBMb2NrZWQxeAABACBMb2NrZWQyeAACACBMb2NrZWQzeAADACBMb2NrZWQ0eAAEACBMb2NrZWQ1eAAFACBMb2NrZWQ2eAAGAADxBAQYT3B0aW9uBARUAe0DAQgQTm9uZQAAABBTb21lBADtAwAAAQAA9QQMQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0EENhbGwIBFQABEkAASQYc3VibWl0DAE8cHJvcG9zYWxfb3JpZ2lu8QMBXEJveDxQYWxsZXRzT3JpZ2luT2Y8VD4+AAEgcHJvcG9zYWz5BAFMQm91bmRlZENhbGxPZjxULCBJPgABQGVuYWN0bWVudF9tb21lbnQBBQGIRGlzcGF0Y2hUaW1lPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAAJLBQcm9wb3NlIGEgcmVmZXJlbmR1bSBvbiBhIHByaXZpbGVnZWQgYWN0aW9uLgBZAS0gYG9yaWdpbmA6IG11c3QgYmUgYFN1Ym1pdE9yaWdpbmAgYW5kIHRoZSBhY2NvdW50IG11c3QgaGF2ZSBgU3VibWlzc2lvbkRlcG9zaXRgIGZ1bmRzMCAgYXZhaWxhYmxlLi0BLSBgcHJvcG9zYWxfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBwcm9wb3NhbCBzaG91bGQgYmUgZXhlY3V0ZWQubC0gYHByb3Bvc2FsYDogVGhlIHByb3Bvc2FsLhUBLSBgZW5hY3RtZW50X21vbWVudGA6IFRoZSBtb21lbnQgdGhhdCB0aGUgcHJvcG9zYWwgc2hvdWxkIGJlIGVuYWN0ZWQuAEhFbWl0cyBgU3VibWl0dGVkYC5YcGxhY2VfZGVjaXNpb25fZGVwb3NpdAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAEgrFBvc3QgdGhlIERlY2lzaW9uIERlcG9zaXQgZm9yIGEgcmVmZXJlbmR1bS4AOQEtIGBvcmlnaW5gOiBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgYWNjb3VudCBtdXN0IGhhdmUgZnVuZHMgYXZhaWxhYmxlIGZvciB0aGWgICByZWZlcmVuZHVtJ3MgdHJhY2sncyBEZWNpc2lvbiBEZXBvc2l0LlEBLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHN1Ym1pdHRlZCByZWZlcmVuZHVtIHdob3NlIERlY2lzaW9uIERlcG9zaXQgaXMgeWV0IHRvIGJlJCAgcG9zdGVkLgB4RW1pdHMgYERlY2lzaW9uRGVwb3NpdFBsYWNlZGAuXHJlZnVuZF9kZWNpc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAAhwpAVJlZnVuZCB0aGUgRGVjaXNpb24gRGVwb3NpdCBmb3IgYSBjbG9zZWQgcmVmZXJlbmR1bSBiYWNrIHRvIHRoZSBkZXBvc2l0b3IuAJwtIGBvcmlnaW5gOiBtdXN0IGJlIGBTaWduZWRgIG9yIGBSb290YC5NAS0gYGluZGV4YDogVGhlIGluZGV4IG9mIGEgY2xvc2VkIHJlZmVyZW5kdW0gd2hvc2UgRGVjaXNpb24gRGVwb3NpdCBoYXMgbm90IHlldCBiZWVuLCAgcmVmdW5kZWQuAIBFbWl0cyBgRGVjaXNpb25EZXBvc2l0UmVmdW5kZWRgLhhjYW5jZWwEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAADGHRDYW5jZWwgYW4gb25nb2luZyByZWZlcmVuZHVtLgCcLSBgb3JpZ2luYDogbXVzdCBiZSB0aGUgYENhbmNlbE9yaWdpbmAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWZlcmVuZHVtIHRvIGJlIGNhbmNlbGxlZC4ASEVtaXRzIGBDYW5jZWxsZWRgLhBraWxsBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABBjQQ2FuY2VsIGFuIG9uZ29pbmcgcmVmZXJlbmR1bSBhbmQgc2xhc2ggdGhlIGRlcG9zaXRzLgCULSBgb3JpZ2luYDogbXVzdCBiZSB0aGUgYEtpbGxPcmlnaW5gLtwtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcmVmZXJlbmR1bSB0byBiZSBjYW5jZWxsZWQuAJBFbWl0cyBgS2lsbGVkYCBhbmQgYERlcG9zaXRTbGFzaGVkYC5AbnVkZ2VfcmVmZXJlbmR1bQQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAUQHQFBZHZhbmNlIGEgcmVmZXJlbmR1bSBvbnRvIGl0cyBuZXh0IGxvZ2ljYWwgc3RhdGUuIE9ubHkgdXNlZCBpbnRlcm5hbGx5LgBsLSBgb3JpZ2luYDogbXVzdCBiZSBgUm9vdGAupC0gYGluZGV4YDogdGhlIHJlZmVyZW5kdW0gdG8gYmUgYWR2YW5jZWQuSG9uZV9mZXdlcl9kZWNpZGluZwQBFHRyYWNr7QMBPFRyYWNrSWRPZjxULCBJPgAGJAkBQWR2YW5jZSBhIHRyYWNrIG9udG8gaXRzIG5leHQgbG9naWNhbCBzdGF0ZS4gT25seSB1c2VkIGludGVybmFsbHkuAGwtIGBvcmlnaW5gOiBtdXN0IGJlIGBSb290YC6QLSBgdHJhY2tgOiB0aGUgdHJhY2sgdG8gYmUgYWR2YW5jZWQuAFEBQWN0aW9uIGl0ZW0gZm9yIHdoZW4gdGhlcmUgaXMgbm93IG9uZSBmZXdlciByZWZlcmVuZHVtIGluIHRoZSBkZWNpZGluZyBwaGFzZSBhbmQgdGhlFQFgRGVjaWRpbmdDb3VudGAgaXMgbm90IHlldCB1cGRhdGVkLiBUaGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGVpdGhlcjolAS0gYmVnaW4gZGVjaWRpbmcgYW5vdGhlciByZWZlcmVuZHVtIChhbmQgbGVhdmUgYERlY2lkaW5nQ291bnRgIGFsb25lKTsgb3JwLSBkZWNyZW1lbnQgYERlY2lkaW5nQ291bnRgLmRyZWZ1bmRfc3VibWlzc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABxwxAVJlZnVuZCB0aGUgU3VibWlzc2lvbiBEZXBvc2l0IGZvciBhIGNsb3NlZCByZWZlcmVuZHVtIGJhY2sgdG8gdGhlIGRlcG9zaXRvci4AnC0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgb3IgYFJvb3RgLlUBLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgYSBjbG9zZWQgcmVmZXJlbmR1bSB3aG9zZSBTdWJtaXNzaW9uIERlcG9zaXQgaGFzIG5vdCB5ZXQgYmVlbiwgIHJlZnVuZGVkLgCIRW1pdHMgYFN1Ym1pc3Npb25EZXBvc2l0UmVmdW5kZWRgLjBzZXRfbWV0YWRhdGEIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAABKG1heWJlX2hhc2gFBQE8T3B0aW9uPFQ6Okhhc2g+AAgcmFNldCBvciBjbGVhciBtZXRhZGF0YSBvZiBhIHJlZmVyZW5kdW0uACxQYXJhbWV0ZXJzOkUBLSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYCBieSBhIGNyZWF0b3Igb2YgYSByZWZlcmVuZHVtIG9yIGJ5IGFueW9uZSB0byBjbGVhciBhkCAgbWV0YWRhdGEgb2YgYSBmaW5pc2hlZCByZWZlcmVuZHVtLg0BLSBgaW5kZXhgOiAgVGhlIGluZGV4IG9mIGEgcmVmZXJlbmR1bSB0byBzZXQgb3IgY2xlYXIgbWV0YWRhdGEgZm9yLlEBLSBgbWF5YmVfaGFzaGA6IFRoZSBoYXNoIG9mIGFuIG9uLWNoYWluIHN0b3JlZCBwcmVpbWFnZS4gYE5vbmVgIHRvIGNsZWFyIGEgbWV0YWRhdGEuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvkEEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyRwcmVpbWFnZXMcQm91bmRlZAgEVAEgBEgB/QQBDBhMZWdhY3kEARBoYXNoQAEkSDo6T3V0cHV0AAAAGElubGluZQQARQQBNEJvdW5kZWRJbmxpbmUAAQAYTG9va3VwCAEQaGFzaEABJEg6Ok91dHB1dAABDGxlbjgBDHUzMgACAAD9BAwoc3BfcnVudGltZRh0cmFpdHMsQmxha2VUd28yNTYAAAAAAQUQNGZyYW1lX3N1cHBvcnQYdHJhaXRzIHNjaGVkdWxlMERpc3BhdGNoVGltZQQsQmxvY2tOdW1iZXIBOAEICEF0BAA4ASxCbG9ja051bWJlcgAAABRBZnRlcgQAOAEsQmxvY2tOdW1iZXIAAQAABQUEGE9wdGlvbgQEVAFAAQgQTm9uZQAAABBTb21lBABAAAABAAAJBQxAcGFsbGV0X3doaXRlbGlzdBhwYWxsZXQQQ2FsbAQEVAABEDh3aGl0ZWxpc3RfY2FsbAQBJGNhbGxfaGFzaEABHFQ6Okhhc2gAAABccmVtb3ZlX3doaXRlbGlzdGVkX2NhbGwEASRjYWxsX2hhc2hAARxUOjpIYXNoAAEAZGRpc3BhdGNoX3doaXRlbGlzdGVkX2NhbGwMASRjYWxsX2hhc2hAARxUOjpIYXNoAAFAY2FsbF9lbmNvZGVkX2xlbjgBDHUzMgABTGNhbGxfd2VpZ2h0X3dpdG5lc3MVAQEYV2VpZ2h0AAIAnGRpc3BhdGNoX3doaXRlbGlzdGVkX2NhbGxfd2l0aF9wcmVpbWFnZQQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLg0FDDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0EENhbGwIBFQABEkAASw4cHJvcG9zZV9ib3VudHkIARR2YWx1ZVUBATxCYWxhbmNlT2Y8VCwgST4AASxkZXNjcmlwdGlvbhgBHFZlYzx1OD4AADBUUHJvcG9zZSBhIG5ldyBib3VudHkuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQFQYXltZW50OiBgVGlwUmVwb3J0RGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQsIGFzIHdlbGwgYXNRAWBEYXRhRGVwb3NpdFBlckJ5dGVgIGZvciBlYWNoIGJ5dGUgaW4gYHJlYXNvbmAuIEl0IHdpbGwgYmUgdW5yZXNlcnZlZCB1cG9uIGFwcHJvdmFsLGRvciBzbGFzaGVkIHdoZW4gcmVqZWN0ZWQuAPgtIGBjdXJhdG9yYDogVGhlIGN1cmF0b3IgYWNjb3VudCB3aG9tIHdpbGwgbWFuYWdlIHRoaXMgYm91bnR5LmQtIGBmZWVgOiBUaGUgY3VyYXRvciBmZWUuJQEtIGB2YWx1ZWA6IFRoZSB0b3RhbCBwYXltZW50IGFtb3VudCBvZiB0aGlzIGJvdW50eSwgY3VyYXRvciBmZWUgaW5jbHVkZWQuwC0gYGRlc2NyaXB0aW9uYDogVGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgYm91bnR5LjhhcHByb3ZlX2JvdW50eQQBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AAEcXQFBcHByb3ZlIGEgYm91bnR5IHByb3Bvc2FsLiBBdCBhIGxhdGVyIHRpbWUsIHRoZSBib3VudHkgd2lsbCBiZSBmdW5kZWQgYW5kIGJlY29tZSBhY3RpdmWoYW5kIHRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgYmUgcmV0dXJuZWQuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuPHByb3Bvc2VfY3VyYXRvcgwBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVlVQEBPEJhbGFuY2VPZjxULCBJPgACGJRQcm9wb3NlIGEgY3VyYXRvciB0byBhIGZ1bmRlZCBib3VudHkuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuQHVuYXNzaWduX2N1cmF0b3IEASRib3VudHlfaWRkASxCb3VudHlJbmRleAADRHxVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBib3VudHkuAB0BVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIGEgc2lnbmVkIG9yaWdpbi4APQFJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAsIHdlIGFzc3VtZSB0aGF0IHRoZSBjdXJhdG9yIGlzMQFtYWxpY2lvdXMgb3IgaW5hY3RpdmUuIEFzIGEgcmVzdWx0LCB3ZSB3aWxsIHNsYXNoIHRoZSBjdXJhdG9yIHdoZW4gcG9zc2libGUuAGEBSWYgdGhlIG9yaWdpbiBpcyB0aGUgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbiB0aGV5IGFyZSB1bmFibGUgdG8gZG8gdGhlaXIgam9iIGFuZF0BdGhleSB3aWxsaW5nbHkgZ2l2ZSB1cC4gV2UgY291bGQgc2xhc2ggdGhlbSwgYnV0IGZvciBub3cgd2UgYWxsb3cgdGhlbSB0byByZWNvdmVyIHRoZWlyNQFkZXBvc2l0IGFuZCBleGl0IHdpdGhvdXQgaXNzdWUuIChXZSBtYXkgd2FudCB0byBjaGFuZ2UgdGhpcyBpZiBpdCBpcyBhYnVzZWQuKQBdAUZpbmFsbHksIHRoZSBvcmlnaW4gY2FuIGJlIGFueW9uZSBpZiBhbmQgb25seSBpZiB0aGUgY3VyYXRvciBpcyAiaW5hY3RpdmUiLiBUaGlzIGFsbG93c2EBYW55b25lIGluIHRoZSBjb21tdW5pdHkgdG8gY2FsbCBvdXQgdGhhdCBhIGN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZDkBd2Ugc2hvdWxkIHBpY2sgYSBuZXcgY3VyYXRvci4gSW4gdGhpcyBjYXNlIHRoZSBjdXJhdG9yIHNob3VsZCBhbHNvIGJlIHNsYXNoZWQuADQjIyBDb21wbGV4aXR5HC0gTygxKS44YWNjZXB0X2N1cmF0b3IEASRib3VudHlfaWRkASxCb3VudHlJbmRleAAEHJRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgYSBib3VudHkuKQFBIGRlcG9zaXQgd2lsbCBiZSByZXNlcnZlZCBmcm9tIGN1cmF0b3IgYW5kIHJlZnVuZCB1cG9uIHN1Y2Nlc3NmdWwgcGF5b3V0LgCQTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIGN1cmF0b3IuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wYXdhcmRfYm91bnR5CAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAUoWQFBd2FyZCBib3VudHkgdG8gYSBiZW5lZmljaWFyeSBhY2NvdW50LiBUaGUgYmVuZWZpY2lhcnkgd2lsbCBiZSBhYmxlIHRvIGNsYWltIHRoZSBmdW5kczhhZnRlciBhIGRlbGF5LgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXMgYm91bnR5LgCILSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGF3YXJkLhkBLSBgYmVuZWZpY2lhcnlgOiBUaGUgYmVuZWZpY2lhcnkgYWNjb3VudCB3aG9tIHdpbGwgcmVjZWl2ZSB0aGUgcGF5b3V0LgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuMGNsYWltX2JvdW50eQQBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AAYg7ENsYWltIHRoZSBwYXlvdXQgZnJvbSBhbiBhd2FyZGVkIGJvdW50eSBhZnRlciBwYXlvdXQgZGVsYXkuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGJlbmVmaWNpYXJ5IG9mIHRoaXMgYm91bnR5LgCILSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGNsYWltLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuMGNsb3NlX2JvdW50eQQBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AAckOQFDYW5jZWwgYSBwcm9wb3NlZCBvciBhY3RpdmUgYm91bnR5LiBBbGwgdGhlIGZ1bmRzIHdpbGwgYmUgc2VudCB0byB0cmVhc3VyeSBhbmTMdGhlIGN1cmF0b3IgZGVwb3NpdCB3aWxsIGJlIHVucmVzZXJ2ZWQgaWYgcG9zc2libGUuAMhPbmx5IGBUOjpSZWplY3RPcmlnaW5gIGlzIGFibGUgdG8gY2FuY2VsIGEgYm91bnR5LgCMLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGNhbmNlbC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLlBleHRlbmRfYm91bnR5X2V4cGlyeQgBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AAEYcmVtYXJrGAEcVmVjPHU4PgAIJKxFeHRlbmQgdGhlIGV4cGlyeSB0aW1lIG9mIGFuIGFjdGl2ZSBib3VudHkuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpcyBib3VudHkuAIwtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gZXh0ZW5kLowtIGByZW1hcmtgOiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkubGFwcHJvdmVfYm91bnR5X3dpdGhfY3VyYXRvcgwBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVlVQEBPEJhbGFuY2VPZjxULCBJPgAJLNRBcHByb3ZlIGJvdW50cnkgYW5kIHByb3Bvc2UgYSBjdXJhdG9yIHNpbXVsdGFuZW91c2x5LlUBVGhpcyBjYWxsIGlzIGEgc2hvcnRjdXQgdG8gY2FsbGluZyBgYXBwcm92ZV9ib3VudHlgIGFuZCBgcHJvcG9zZV9jdXJhdG9yYCBzZXBhcmF0ZWx5LgCkTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gYFQ6OlNwZW5kT3JpZ2luYC4AkC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBhcHByb3ZlLvgtIGBjdXJhdG9yYDogVGhlIGN1cmF0b3IgYWNjb3VudCB3aG9tIHdpbGwgbWFuYWdlIHRoaXMgYm91bnR5LmQtIGBmZWVgOiBUaGUgY3VyYXRvciBmZWUuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wcG9rZV9kZXBvc2l0BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgACjzkUG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgY3JlYXRpbmcgYSBib3VudHkgcHJvcG9zYWwuAPRUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHVwZGF0ZSB0aGVpciByZXNlcnZlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM69C0gYGJvdW50eV9pZGA6IFRoZSBib3VudHkgaWQgZm9yIHdoaWNoIHRvIGFkanVzdCB0aGUgZGVwb3NpdC4AOQFJZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkLCB0aGUgZGlmZmVyZW5jZSB3aWxsIGJlIHJlc2VydmVkL3VucmVzZXJ2ZWQgZnJvbSB0aGVMcHJvcG9zZXIncyBhY2NvdW50LgApAVRoZSB0cmFuc2FjdGlvbiBpcyBtYWRlIGZyZWUgaWYgdGhlIGRlcG9zaXQgaXMgdXBkYXRlZCBhbmQgcGFpZCBvdGhlcndpc2UuALxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4RBQxUcGFsbGV0X2NoaWxkX2JvdW50aWVzGHBhbGxldBBDYWxsBARUAAEcQGFkZF9jaGlsZF9ib3VudHkMAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARR2YWx1ZVUBATBCYWxhbmNlT2Y8VD4AASxkZXNjcmlwdGlvbhgBHFZlYzx1OD4AAExcQWRkIGEgbmV3IGNoaWxkLWJvdW50eS4A/FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHBhcmVudNxib3VudHkgYW5kIHRoZSBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gImFjdGl2ZSIgc3RhdGUuAAUBQ2hpbGQtYm91bnR5IGdldHMgYWRkZWQgc3VjY2Vzc2Z1bGx5ICYgZnVuZCBnZXRzIHRyYW5zZmVycmVkIGZyb20JAXBhcmVudCBib3VudHkgdG8gY2hpbGQtYm91bnR5IGFjY291bnQsIGlmIHBhcmVudCBib3VudHkgaGFzIGVub3VnaGxmdW5kcywgZWxzZSB0aGUgY2FsbCBmYWlscy4ADQFVcHBlciBib3VuZCB0byBtYXhpbXVtIG51bWJlciBvZiBhY3RpdmUgIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlqGFkZGVkIGFyZSBtYW5hZ2VkIHZpYSBydW50aW1lIHRyYWl0IGNvbmZpZ5hbYENvbmZpZzo6TWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGBdLgABAUlmIHRoZSBjYWxsIGlzIHN1Y2Nlc3MsIHRoZSBzdGF0dXMgb2YgY2hpbGQtYm91bnR5IGlzIHVwZGF0ZWQgdG8gIkFkZGVkIi4ATQEtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eSBmb3Igd2hpY2ggY2hpbGQtYm91bnR5IGlzIGJlaW5nIGFkZGVkLrAtIGB2YWx1ZWA6IFZhbHVlIGZvciBleGVjdXRpbmcgdGhlIHByb3Bvc2FsLtwtIGBkZXNjcmlwdGlvbmA6IFRleHQgZGVzY3JpcHRpb24gZm9yIHRoZSBjaGlsZC1ib3VudHkuPHByb3Bvc2VfY3VyYXRvchABQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVlVQEBMEJhbGFuY2VPZjxUPgABPKBQcm9wb3NlIGN1cmF0b3IgZm9yIGZ1bmRlZCBjaGlsZC1ib3VudHkuAA0BVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgY3VyYXRvciBvZiBwYXJlbnQgYm91bnR5LgARAVBhcmVudCBib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciB0aGlzIGNoaWxkLWJvdW50eSBjYWxsIHRvFHdvcmsuAA0BQ2hpbGQtYm91bnR5IG11c3QgYmUgaW4gIkFkZGVkIiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlIGNhbGwuIEFuZAUBc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJDdXJhdG9yUHJvcG9zZWQiIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS60LSBgY3VyYXRvcmA6IEFkZHJlc3Mgb2YgY2hpbGQtYm91bnR5IGN1cmF0b3Iu7C0gYGZlZWA6IHBheW1lbnQgZmVlIHRvIGNoaWxkLWJvdW50eSBjdXJhdG9yIGZvciBleGVjdXRpb24uOGFjY2VwdF9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAAky0QWNjZXB0IHRoZSBjdXJhdG9yIHJvbGUgZm9yIHRoZSBjaGlsZC1ib3VudHkuAPRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzNGNoaWxkLWJvdW50eS4A7EEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gdGhlIGN1cmF0b3IgYW5kIHJlZnVuZCB1cG9uiHN1Y2Nlc3NmdWwgcGF5b3V0IG9yIGNhbmNlbGxhdGlvbi4A+EZlZSBmb3IgY3VyYXRvciBpcyBkZWR1Y3RlZCBmcm9tIGN1cmF0b3IgZmVlIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQ3VyYXRvclByb3Bvc2VkIiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlCQFjYWxsLiBBbmQgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJBY3RpdmUiIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS5AdW5hc3NpZ25fY3VyYXRvcggBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAOIlFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGNoaWxkLWJvdW50eS4ACQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgY2FuIGJlIGVpdGhlciBgUmVqZWN0T3JpZ2luYCwgb3LcdGhlIGN1cmF0b3Igb2YgdGhlIHBhcmVudCBib3VudHksIG9yIGFueSBzaWduZWQgb3JpZ2luLgD4Rm9yIHRoZSBvcmlnaW4gb3RoZXIgdGhhbiBUOjpSZWplY3RPcmlnaW4gYW5kIHRoZSBjaGlsZC1ib3VudHkBAWN1cmF0b3IsIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciB0aGlzIGNhbGwgdG8JAXdvcmsuIFdlIGFsbG93IGNoaWxkLWJvdW50eSBjdXJhdG9yIGFuZCBUOjpSZWplY3RPcmlnaW4gdG8gZXhlY3V0Zch0aGlzIGNhbGwgaXJyZXNwZWN0aXZlIG9mIHRoZSBwYXJlbnQgYm91bnR5IHN0YXRlLgDcSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZQUBcGFyZW50IGJvdW50eSBjdXJhdG9yLCB3ZSBhc3N1bWUgdGhhdCB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgaXMNAW1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsIGNoaWxkLWJvdW50eSBjdXJhdG9yIGRlcG9zaXQgaXMgc2xhc2hlZC4ABQFJZiB0aGUgb3JpZ2luIGlzIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbgkBdGhhdCB0aGV5IGFyZSB1bmFibGUgdG8gZG8gdGhlaXIgam9iLCBhbmQgYXJlIHdpbGxpbmdseSBnaXZpbmcgdXAuCQFXZSBjb3VsZCBzbGFzaCB0aGUgZGVwb3NpdCwgYnV0IGZvciBub3cgd2UgYWxsb3cgdGhlbSB0byB1bnJlc2VydmURAXRoZWlyIGRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmOGl0IGlzIGFidXNlZC4pAAUBRmluYWxseSwgdGhlIG9yaWdpbiBjYW4gYmUgYW55b25lIGlmZiB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgaXMJASJpbmFjdGl2ZSIuIEV4cGlyeSB1cGRhdGUgZHVlIG9mIHBhcmVudCBib3VudHkgaXMgdXNlZCB0byBlc3RpbWF0ZZxpbmFjdGl2ZSBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci4ADQFUaGlzIGFsbG93cyBhbnlvbmUgaW4gdGhlIGNvbW11bml0eSB0byBjYWxsIG91dCB0aGF0IGEgY2hpbGQtYm91bnR5CQFjdXJhdG9yIGlzIG5vdCBkb2luZyB0aGVpciBkdWUgZGlsaWdlbmNlLCBhbmQgd2Ugc2hvdWxkIHBpY2sgYSBuZXf4b25lLiBJbiB0aGlzIGNhc2UgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yIGRlcG9zaXQgaXMgc2xhc2hlZC4AAQFTdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gQWRkZWQgc3RhdGUgb24gc3VjY2Vzc2Z1bCBjYWxsLGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5Lkhhd2FyZF9jaGlsZF9ib3VudHkMAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABESQQXdhcmQgY2hpbGQtYm91bnR5IHRvIGEgYmVuZWZpY2lhcnkuAPhUaGUgYmVuZWZpY2lhcnkgd2lsbCBiZSBhYmxlIHRvIGNsYWltIHRoZSBmdW5kcyBhZnRlciBhIGRlbGF5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIHBhcmVudCBjdXJhdG9yIG9ydGN1cmF0b3Igb2YgdGhpcyBjaGlsZC1ib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ACQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciBwcm9jZXNzaW5nIHRoZSBjYWxsLiBBbmQRAXN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byAiUGVuZGluZ1BheW91dCIgb24gc3VjY2Vzc2Z1bCBjYWxsLGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LpQtIGBiZW5lZmljaWFyeWA6IEJlbmVmaWNpYXJ5IGFjY291bnQuSGNsYWltX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAVABQFDbGFpbSB0aGUgcGF5b3V0IGZyb20gYW4gYXdhcmRlZCBjaGlsZC1ib3VudHkgYWZ0ZXIgcGF5b3V0IGRlbGF5LgDsVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG1heSBiZSBhbnkgc2lnbmVkIG9yaWdpbi4ABQFDYWxsIHdvcmtzIGluZGVwZW5kZW50IG9mIHBhcmVudCBib3VudHkgc3RhdGUsIE5vIG5lZWQgZm9yIHBhcmVudHRib3VudHkgdG8gYmUgaW4gYWN0aXZlIHN0YXRlLgARAVRoZSBCZW5lZmljaWFyeSBpcyBwYWlkIG91dCB3aXRoIGFncmVlZCBib3VudHkgdmFsdWUuIEN1cmF0b3IgZmVlIGlzlHBhaWQgJiBjdXJhdG9yIGRlcG9zaXQgaXMgdW5yZXNlcnZlZC4ABQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiUGVuZGluZ1BheW91dCIgc3RhdGUsIGZvciBwcm9jZXNzaW5nIHRoZfxjYWxsLiBBbmQgaW5zdGFuY2Ugb2YgY2hpbGQtYm91bnR5IGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RhdGUgb25sc3VjY2Vzc2Z1bCBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkhjbG9zZV9jaGlsZF9ib3VudHkIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRkASxCb3VudHlJbmRleAAGWBEBQ2FuY2VsIGEgcHJvcG9zZWQgb3IgYWN0aXZlIGNoaWxkLWJvdW50eS4gQ2hpbGQtYm91bnR5IGFjY291bnQgZnVuZHMJAWFyZSB0cmFuc2ZlcnJlZCB0byBwYXJlbnQgYm91bnR5IGFjY291bnQuIFRoZSBjaGlsZC1ib3VudHkgY3VyYXRvcphkZXBvc2l0IG1heSBiZSB1bnJlc2VydmVkIGlmIHBvc3NpYmxlLgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGVpdGhlciBwYXJlbnQgY3VyYXRvciBvckhgVDo6UmVqZWN0T3JpZ2luYC4A8ElmIHRoZSBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgYEFjdGl2ZWAsIGN1cmF0b3IgZGVwb3NpdCBpcyx1bnJlc2VydmVkLgD0SWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgUGVuZGluZ1BheW91dGAsIGNhbGwgZmFpbHMgJnhyZXR1cm5zIGBQZW5kaW5nUGF5b3V0YCBlcnJvci4ADQFGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGlu8GFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8gd29yay4gRm9yIG9yaWdpbpBUOjpSZWplY3RPcmlnaW4gZXhlY3V0aW9uIGlzIGZvcmNlZC4AAQFJbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbiBzdWNjZXNzZnVsQGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhUFDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQQQ2FsbAQEVAABDBhjcmVhdGUIAShhc3NldF9raW5k2QQBREJveDxUOjpBc3NldEtpbmQ+AAEQcmF0ZRkFASRGaXhlZFUxMjgAABANAUluaXRpYWxpemUgYSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpGHVwZGF0ZQgBKGFzc2V0X2tpbmTZBAFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlGQUBJEZpeGVkVTEyOAABEAUBVXBkYXRlIHRoZSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpGHJlbW92ZQQBKGFzc2V0X2tpbmTZBAFEQm94PFQ6OkFzc2V0S2luZD4AAhAlAVJlbW92ZSBhbiBleGlzdGluZyBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhkFDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50JEZpeGVkVTEyOAAABABZAQEQdTEyOAAAHQUMbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhwYWxsZXQQQ2FsbAgEVAAESQABKCxmdW5kX2JvdW50eRABKGFzc2V0X2tpbmTZBAFEQm94PFQ6OkFzc2V0S2luZD4AARR2YWx1ZVUBAShUOjpCYWxhbmNlAAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgbWV0YWRhdGFAARxUOjpIYXNoAABoKQFGdW5kIGEgbmV3IGJvdW50eSB3aXRoIGEgcHJvcG9zZWQgY3VyYXRvciwgaW5pdGlhdGluZyB0aGUgcGF5bWVudCBmcm9tIHRoZbhmdW5kaW5nIHNvdXJjZSB0byB0aGUgYm91bnR5IGFjY291bnQvbG9jYXRpb24uAEgjIyBEaXNwYXRjaCBPcmlnaW4AHQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdEEBdGhlIGJvdW50eSB2YWx1ZSBjb252ZXJ0ZWQgdG8gbmF0aXZlIGJhbGFuY2UgdXNpbmcgW2BDb25maWc6OkJhbGFuY2VDb252ZXJ0ZXJgXS41AVRoZSBjb252ZXJ0ZWQgbmF0aXZlIGFtb3VudCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgbWF4aW11bSBzcGVuZGFibGUgYW1vdW50kHJldHVybmVkIGJ5IFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdLgAoIyMgRGV0YWlscwAhAS0gVGhlIGBTcGVuZE9yaWdpbmAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gZnVuZCB0aGUgYm91bnR5LlkBLSBUaGUgYm91bnR5IGB2YWx1ZWAgKGluIGFzc2V0IGJhbGFuY2UpIGlzIGNvbnZlcnRlZCB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdmFsaWRhdGlvbi4pAS0gSW4gY2FzZSBvZiBhIGZ1bmRpbmcgZmFpbHVyZSwgdGhlIGJvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGggdGhlAQEgIGBjaGVja19zdGF0dXNgIGNhbGwgYmVmb3JlIHJldHJ5aW5nIHdpdGggYHJldHJ5X3BheW1lbnRgIGNhbGwuADgjIyMgUGFyYW1ldGVycxkBLSBgYXNzZXRfa2luZGA6IEFuIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWMgYXNzZXQgY2xhc3MgdG8gYmUgZnVuZGVkLswtIGB2YWx1ZWA6IFRoZSB0b3RhbCBwYXltZW50IGFtb3VudCBvZiB0aGlzIGJvdW50eS6cLSBgY3VyYXRvcmA6IEFkZHJlc3Mgb2YgYm91bnR5IGN1cmF0b3IuLQEtIGBtZXRhZGF0YWA6IFRoZSBoYXNoIG9mIGFuIG9uLWNoYWluIHN0b3JlZCBwcmVpbWFnZSB3aXRoIGJvdW50eSBtZXRhZGF0YS4AJCMjIEV2ZW50cwAFAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUNyZWF0ZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuRGZ1bmRfY2hpbGRfYm91bnR5EAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAEUdmFsdWVVAQEoVDo6QmFsYW5jZQABIG1ldGFkYXRhQAEcVDo6SGFzaAABHGN1cmF0b3I9BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABYF0BRnVuZCBhIG5ldyBjaGlsZC1ib3VudHkgd2l0aCBhIHByb3Bvc2VkIGN1cmF0b3IsIGluaXRpYXRpbmcgdGhlIHBheW1lbnQgZnJvbSB0aGUgcGFyZW50sGJvdW50eSB0byB0aGUgY2hpbGQtYm91bnR5IGFjY291bnQvbG9jYXRpb24uAEgjIyBEaXNwYXRjaCBPcmlnaW4AlE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwYXJlbnQgY3VyYXRvci4AKCMjIERldGFpbHMARQEtIElmIGBjdXJhdG9yYCBpcyBub3QgcHJvdmlkZWQsIHRoZSBjaGlsZC1ib3VudHkgd2lsbCBkZWZhdWx0IHRvIHVzaW5nIHRoZSBwYXJlbnQ1ASAgY3VyYXRvciwgYWxsb3dpbmcgdGhlIHBhcmVudCBjdXJhdG9yIHRvIGltbWVkaWF0ZWx5IGNhbGwgYGNoZWNrX3N0YXR1c2AgYW5ksCAgYGF3YXJkX2JvdW50eWAgdG8gcGF5b3V0IHRoZSBjaGlsZC1ib3VudHkuRQEtIEluIGNhc2Ugb2YgYSBmdW5kaW5nIGZhaWx1cmUsIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUBASAgYGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJzTQEtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eSBmb3Igd2hpY2ggY2hpbGQtYm91bnR5IGlzIGJlaW5nIGFkZGVkLswtIGB2YWx1ZWA6IFRoZSBwYXltZW50IGFtb3VudCBvZiB0aGlzIGNoaWxkLWJvdW50eS5FAS0gYG1ldGFkYXRhYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlIHdpdGggY2hpbGQtYm91bnR5IG1ldGFkYXRhLrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci4AJCMjIEV2ZW50cwAZAUVtaXRzIFtgRXZlbnQ6OkNoaWxkQm91bnR5Q3JlYXRlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC48cHJvcG9zZV9jdXJhdG9yDAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk5AFMT3B0aW9uPEJvdW50eUluZGV4PgABHGN1cmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACVDEBUHJvcG9zZSBhIG5ldyBjdXJhdG9yIGZvciBhIGNoaWxkLS9ib3VudHkgYWZ0ZXIgdGhlIHByZXZpb3VzIHdhcyB1bmFzc2lnbmVkLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAEEBTXVzdCBiZSBzaWduZWQgYnkgYFQ6OlNwZW5kT3JpZ2luYCBmb3IgYSBib3VudHksIG9yIGJ5IHRoZSBwYXJlbnQgYm91bnR5IGN1cmF0b3JMZm9yIGEgY2hpbGQtYm91bnR5LgAoIyMgRGV0YWlscwD0LSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgQ3VyYXRvclVuYXNzaWduZWRgIHN0YXRlLkUBLSBGb3IgYSBib3VudHksIHRoZSBgU3BlbmRPcmlnaW5gIG11c3QgaGF2ZSBzdWZmaWNpZW50IHBlcm1pc3Npb25zIHRvIHByb3Bvc2UgdGhlKCAgY3VyYXRvci4AOCMjIyBQYXJhbWV0ZXJzmC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS7MLSBgY3VyYXRvcmA6IEFjY291bnQgdG8gYmUgcHJvcG9zZWQgYXMgdGhlIGN1cmF0b3IuACQjIyBFdmVudHMAvEVtaXRzIFtgRXZlbnQ6OkN1cmF0b3JQcm9wb3NlZGBdIGlmIHN1Y2Nlc3NmdWwuOGFjY2VwdF9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk5AFMT3B0aW9uPEJvdW50eUluZGV4PgADTLBBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgYSBjaGlsZC0vYm91bnR5LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAJxNdXN0IGJlIHNpZ25lZCBieSB0aGUgcHJvcG9zZWQgY3VyYXRvci4AKCMjIERldGFpbHMAyC0gVGhlIGNoaWxkLS9ib3VudHkgbXVzdCBiZSBpbiB0aGUgYEZ1bmRlZGAgc3RhdGUu8C0gVGhlIGN1cmF0b3IgbXVzdCBhY2NlcHQgdGhlIHJvbGUgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLkkBLSBBIGRlcG9zaXQgd2lsbCBiZSByZXNlcnZlZCBmcm9tIHRoZSBjdXJhdG9yIGFuZCByZWZ1bmRlZCB1cG9uIHN1Y2Nlc3NmdWwgcGF5b3V0LgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwDIRW1pdHMgW2BFdmVudDo6Qm91bnR5QmVjYW1lQWN0aXZlYF0gaWYgc3VjY2Vzc2Z1bC5AdW5hc3NpZ25fY3VyYXRvcggBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOQBTE9wdGlvbjxCb3VudHlJbmRleD4ABGSYVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtL2JvdW50eS4ASCMjIERpc3BhdGNoIE9yaWdpbgBRAVRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCBvciB0aGUgY2hpbGQtL2JvdW50eSBjdXJhdG9yLgAoIyMgRGV0YWlscwBhAS0gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gLCBvciBieSB0aGUgcGFyZW50IGN1cmF0b3IgaW4gdGhlIGNhc2VZASAgb2YgYSBjaGlsZCBib3VudHksIHdlIGFzc3VtZSB0aGF0IHRoZSBjdXJhdG9yIGlzIG1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsqCAgd2Ugd2lsbCBzbGFzaCB0aGUgY3VyYXRvciB3aGVuIHBvc3NpYmxlLl0BLSBJZiB0aGUgb3JpZ2luIGlzIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IsIHdlIHRha2UgdGhpcyBhcyBhIHNpZ24gdGhleSBhcmUgdW5hYmxlIHRvUQEgIGRvIHRoZWlyIGpvYiBhbmQgdGhleSB3aWxsaW5nbHkgZ2l2ZSB1cC4gV2UgY291bGQgc2xhc2ggdGhlbSwgYnV0IGZvciBub3cgd2UgYWxsb3dZASAgdGhlbSB0byByZWNvdmVyIHRoZWlyIGRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmQCAgaXQgaXMgYWJ1c2VkKS49AS0gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIHVwZGF0ZWQgdG8gYEN1cmF0b3JVbmFzc2lnbmVkYC4gVG9FASAgcmVhY3RpdmF0ZSB0aGUgYm91bnR5LCBhIG5ldyBjdXJhdG9yIG11c3QgYmUgcHJvcG9zZWQgYW5kIG11c3QgYWNjZXB0IHRoZSByb2xlLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwDERW1pdHMgW2BFdmVudDo6Q3VyYXRvclVuYXNzaWduZWRgXSBpZiBzdWNjZXNzZnVsLjBhd2FyZF9ib3VudHkMAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEsYmVuZWZpY2lhcnndBAFkQmVuZWZpY2lhcnlMb29rdXBPZjxULCBJPgAFYOxBd2FyZHMgdGhlIGNoaWxkLS9ib3VudHkgdG8gYSBiZW5lZmljaWFyeSBhY2NvdW50L2xvY2F0aW9uLB0BaW5pdGlhdGluZyB0aGUgcGF5b3V0IHBheW1lbnRzIHRvIGJvdGggdGhlIGJlbmVmaWNpYXJ5IGFuZCB0aGUgY3VyYXRvci4ASCMjIERpc3BhdGNoIE9yaWdpbgBRAVRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCBvciB0aGUgY2hpbGQtL2JvdW50eSBjdXJhdG9yLgAoIyMgRGV0YWlscwDILSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgQWN0aXZlYCBzdGF0ZS49AS0gaWYgYXdhcmRpbmcgYSBwYXJlbnQgYm91bnR5IGl0IG11c3Qgbm90IGhhdmUgYWN0aXZlIG9yIGZ1bmRlZCBjaGlsZCBib3VudGllcy5ZAS0gSW5pdGlhdGVzIHBheW91dCBwYXltZW50IGZyb20gdGhlIGNoaWxkLS9ib3VudHkgdG8gdGhlIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24uJQEtIElmIHN1Y2Nlc3NmdWwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIHVwZGF0ZWQgdG8gYFBheW91dEF0dGVtcHRlZGAuMQEtIEluIGNhc2Ugb2YgYSBwYXlvdXQgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRo+GBjaGVja19zdGF0dXNgIGNhbGwgYmVmb3JlIHJldHJ5aW5nIHdpdGggYHJldHJ5X3BheW1lbnRgIGNhbGwuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgkBLSBgYmVuZWZpY2lhcnlgOiBBY2NvdW50L2xvY2F0aW9uIHRvIGJlIGF3YXJkZWQgdGhlIGNoaWxkLS9ib3VudHkuACQjIyBFdmVudHMABQFFbWl0cyBbYEV2ZW50OjpCb3VudHlBd2FyZGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjbG9zZV9ib3VudHkIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTkAUxPcHRpb248Qm91bnR5SW5kZXg+AAZcYQFDYW5jZWwgYW4gYWN0aXZlIGNoaWxkLS9ib3VudHkuIEEgcGF5bWVudCB0byBzZW5kIGFsbCB0aGUgZnVuZHMgdG8gdGhlIGZ1bmRpbmcgc291cmNlIGlzMGluaXRpYWxpemVkLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBwYXJlbnQgYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAD0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBpcyBpbiB0aGUgYEZ1bmRlZGAgc3RhdGUsIGEgcmVmdW5kIHBheW1lbnQgaXMgaW5pdGlhdGVkLlkBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBpcyBpbiB0aGUgYEFjdGl2ZWAgc3RhdGUsIGEgcmVmdW5kIHBheW1lbnQgaXMgaW5pdGlhdGVkIGFuZCB0aGURASAgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB3aXRoIHRoZSBjdXJhdG9yIGFjY291bnQvbG9jYXRpb24uQQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBmdW5kaW5nIG9yIHBheW91dCBwaGFzZSwgaXQgY2Fubm90IGJlIGNhbmNlbGVkLkEBLSBJbiBjYXNlIG9mIGEgcmVmdW5kIGZhaWx1cmUsIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGX4YGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMACQFFbWl0cyBbYEV2ZW50OjpCb3VudHlDYW5jZWxlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC4wY2hlY2tfc3RhdHVzCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk5AFMT3B0aW9uPEJvdW50eUluZGV4PgAHZNxDaGVjayBhbmQgdXBkYXRlIHRoZSBwYXltZW50IHN0YXR1cyBvZiBhIGNoaWxkLS9ib3VudHkuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwBVAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBGdW5kaW5nQXR0ZW1wdGVkYCwgaXQgY2hlY2tzIGlmIHRoZSBmdW5kaW5nIHBheW1lbnQNASAgaGFzIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGJvdW50eSBzdGF0dXMgYmVjb21lcyBgRnVuZGVkYC5dAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBSZWZ1bmRBdHRlbXB0ZWRgLCBpdCBjaGVja3MgaWYgdGhlIHJlZnVuZCBwYXltZW50IGhhcxkBICBzdWNjZWVkZWQuIElmIHN1Y2Nlc3NmdWwsIHRoZSBjaGlsZC0vYm91bnR5IGlzIHJlbW92ZWQgZnJvbSBzdG9yYWdlLl0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFBheW91dEF0dGVtcHRlZGAsIGl0IGNoZWNrcyBpZiB0aGUgcGF5b3V0IHBheW1lbnQgaGFzGQEgIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAF0BRW1pdHMgW2BFdmVudDo6Qm91bnR5QmVjYW1lQWN0aXZlYF0gaWYgdGhlIGNoaWxkL2JvdW50eSBzdGF0dXMgdHJhbnNpdGlvbnMgdG8gYEFjdGl2ZWAuJQFFbWl0cyBbYEV2ZW50OjpCb3VudHlSZWZ1bmRQcm9jZXNzZWRgXSBpZiB0aGUgcmVmdW5kIHBheW1lbnQgaGFzIHN1Y2NlZWQuJQFFbWl0cyBbYEV2ZW50OjpCb3VudHlQYXlvdXRQcm9jZXNzZWRgXSBpZiB0aGUgcGF5b3V0IHBheW1lbnQgaGFzIHN1Y2NlZWQuVQFFbWl0cyBbYEV2ZW50OjpQYXltZW50RmFpbGVkYF0gaWYgdGhlIGZ1bmRpbmcsIHJlZnVuZCBvdXIgcGF5bWVudCBwYXltZW50IGhhcyBmYWlsZWQuNHJldHJ5X3BheW1lbnQIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTkAUxPcHRpb248Qm91bnR5SW5kZXg+AAhYtFJldHJ5IHRoZSBmdW5kaW5nLCByZWZ1bmQgb3IgcGF5b3V0IHBheW1lbnRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luADxNdXN0IGJlIHNpZ25lZC4AKCMjIERldGFpbHMAYQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgRnVuZGluZ0F0dGVtcHRlZGAsIGl0IHJldHJpZXMgdGhlIGZ1bmRpbmcgcGF5bWVudCBmcm9t0CAgZnVuZGluZyBzb3VyY2UgdGhlIGNoaWxkLS9ib3VudHkgYWNjb3VudC9sb2NhdGlvbi5ZAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBSZWZ1bmRBdHRlbXB0ZWRgLCBpdCByZXRyaWVzIHRoZSByZWZ1bmQgcGF5bWVudCBmcm9t7CAgdGhlIGNoaWxkLS9ib3VudHkgYWNjb3VudC9sb2NhdGlvbiB0byB0aGUgZnVuZGluZyBzb3VyY2UuWQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUGF5b3V0QXR0ZW1wdGVkYCwgaXQgcmV0cmllcyB0aGUgcGF5b3V0IHBheW1lbnQgZnJvbSUBICB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uIHRvIHRoZSBiZW5lZmljaWFyeSBhY2NvdW50L2xvY2F0aW9uLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwA1AUVtaXRzIFtgRXZlbnQ6OlBhaWRgXSBpZiB0aGUgZnVuZGluZywgcmVmdW5kIG9yIHBheW91dCBwYXltZW50IGhhcyBpbml0aWF0ZWQuOGluY3JlYXNlX3ZhbHVlCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACXjMSW5jcmVhc2UgdGhlIHZhbHVlIG9mIGFuIGFjdGl2ZSBib3VudHkgYnkgYGFtb3VudGAuAEgjIyBEaXNwYXRjaCBPcmlnaW4AlE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMArC0gVGhlIGJvdW50eSBtdXN0IGJlIGluIHRoZSBgQWN0aXZlYCBzdGF0ZS5NAS0gUmFpc2VzIHRoZSByZWNvcmRlZCBgdmFsdWVgIGJ5IGBhbW91bnRgLiBUaGlzIGlzIHVzZWQgdG8gcmVnaXN0ZXIgZnVuZHMgdGhhdCB3ZXJlXQEgIHRyYW5zZmVycmVkIGludG8gdGhlIGJvdW50eSBhY2NvdW50IG91dC1vZi1iYW5kIChlLmcuIHJlY3VycmluZyBleHRlcm5hbCB0b3AtdXBzKSwgc29VASAgdGhleSBiZWNvbWUgYXZhaWxhYmxlIHRvIGF3YXJkIG9yIHRvIGFsbG9jYXRlIHRvIGNoaWxkIGJvdW50aWVzLiBJdCBtdXN0IGJlIGdyZWF0ZXIkICB0aGFuIDAuVQEtIFRoZSBjdXJhdG9yIGRlcG9zaXQgaXMgcmUtZXZhbHVhdGVkIGZvciB0aGUgbmV3IHZhbHVlIGFuZCBhbnkgYWRkaXRpb25hbCBkZXBvc2l0IGlzdCAgY29sbGVjdGVkIGZyb20gdGhlIGN1cmF0b3IuUQEtIFRoZSB2YWx1ZSBjYW4gb25seSBiZSBpbmNyZWFzZWQsIG5ldmVyIGRlY3JlYXNlZCwgc28gdGhlIGludmFyaWFudCB0aGF0IHRoZSBzdW0gb2YJASAgY2hpbGQtYm91bnR5IHZhbHVlcyBuZXZlciBleGNlZWRzIHRoZSBwYXJlbnQgdmFsdWUgaXMgcHJlc2VydmVkLkUBLSBUaGlzIGNhbGwgZG9lcyAqKm5vdCoqIGNoZWNrIHRoYXQgdGhlIGJvdW50eSBhY2NvdW50IGhvbGRzIGBuZXdfdmFsdWVgOyBpdCBvbmx5TQEgIHVwZGF0ZXMgdGhlIHJlY29yZGVkIHZhbHVlLiBQYXlvdXRzIHN0YXkgYm91bmRlZCBieSB0aGUgYWNjb3VudCdzIHJlYWwgYmFsYW5jZSBhdFUBICBzZXR0bGVtZW50LCBzbyBpbmNyZWFzaW5nIHRoZSB2YWx1ZSBiZXlvbmQgdGhlIGF2YWlsYWJsZSBmdW5kcyBzaW1wbHkgbWFrZXMgYSBsYXRlcsggIHBheW91dCBmYWlsIOKAlCBubyBmdW5kcyBhcmUgbW92ZWQgYnkgdGhpcyBjYWxsLvgtIE9ubHkgYSBwYXJlbnQgYm91bnR5J3MgdmFsdWUgY2FuIGJlIGluY3JlYXNlZCB2aWEgdGhpcyBjYWxsLgA4IyMjIFBhcmFtZXRlcnMNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiB0aGUgYm91bnR5IHdob3NlIHZhbHVlIGlzIGluY3JlYXNlZC7ILSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBhZGQgdG8gdGhlIGJvdW50eSB2YWx1ZS4AJCMjIEV2ZW50cwDQRW1pdHMgW2BFdmVudDo6Qm91bnR5VmFsdWVJbmNyZWFzZWRgXSBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4hBQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBBDYWxsBARUAAEYWGNvbnRyb2xfYXV0b19taWdyYXRpb24EATBtYXliZV9jb25maWclBQFcT3B0aW9uPE1pZ3JhdGlvbkxpbWl0cz4AAAyAQ29udHJvbCB0aGUgYXV0b21hdGljIG1pZ3JhdGlvbi4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFtgQ29uZmlnOjpDb250cm9sT3JpZ2luYF0uQGNvbnRpbnVlX21pZ3JhdGUMARhsaW1pdHMpBQE8TWlncmF0aW9uTGltaXRzAAE8cmVhbF9zaXplX3VwcGVyOAEMdTMyAAEwd2l0bmVzc190YXNrLQUBQE1pZ3JhdGlvblRhc2s8VD4AAVS4Q29udGludWUgdGhlIG1pZ3JhdGlvbiBmb3IgdGhlIGdpdmVuIGBsaW1pdHNgLgDsVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgY2FuIGJlIGFueSBzaWduZWQgYWNjb3VudC4AXQFUaGlzIHRyYW5zYWN0aW9uIGhhcyBOTyBNT05FVEFSWSBJTkNFTlRJVkVTLiBjYWxsaW5nIGl0IHdpbGwgbm90IHJld2FyZCBhbnlvbmUuIEFsYmVpdCzsVXBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbiwgdGhlIHRyYW5zYWN0aW9uIGZlZSBpcyByZXR1cm5lZC4AQQFUaGUgKHBvdGVudGlhbGx5IG92ZXItZXN0aW1hdGVkKSBvZiB0aGUgYnl0ZSBsZW5ndGggb2YgYWxsIHRoZSBkYXRhIHJlYWQgbXVzdCBiZVkBcHJvdmlkZWQgZm9yIHVwLWZyb250IGZlZS1wYXltZW50IGFuZCB3ZWlnaGluZy4gSW4gZXNzZW5jZSwgdGhlIGNhbGxlciBpcyBndWFyYW50ZWVpbmdJAXRoYXQgZXhlY3V0aW5nIHRoZSBjdXJyZW50IGBNaWdyYXRpb25UYXNrYCB3aXRoIHRoZSBnaXZlbiBgbGltaXRzYCB3aWxsIG5vdCBleGNlZWSUYHJlYWxfc2l6ZV91cHBlcmAgYnl0ZXMgb2YgcmVhZCBkYXRhLgBFAVRoZSBgd2l0bmVzc190YXNrYCBpcyBtZXJlbHkgYSBoZWxwZXIgdG8gcHJldmVudCB0aGUgY2FsbGVyIGZyb20gYmVpbmcgc2xhc2hlZCBvcl0BZ2VuZXJhbGx5IHRyaWdnZXIgYSBtaWdyYXRpb24gdGhhdCB0aGV5IGRvIG5vdCBpbnRlbmQuIFRoaXMgcGFyYW1ldGVyIGlzIGp1c3QgYSBtZXNzYWdlPQFmcm9tIGNhbGxlciwgc2F5aW5nIHRoYXQgdGhleSBiZWxpZXZlZCBgd2l0bmVzc190YXNrYCB3YXMgdGhlIGxhc3Qgc3RhdGUgb2YgdGhlWQFtaWdyYXRpb24sIGFuZCB0aGV5IG9ubHkgd2lzaCBmb3IgdGhlaXIgdHJhbnNhY3Rpb24gdG8gZG8gYW55dGhpbmcsIGlmIHRoaXMgYXNzdW1wdGlvbhEBaG9sZHMuIEluIGNhc2UgYHdpdG5lc3NfdGFza2AgZG9lcyBub3QgbWF0Y2gsIHRoZSB0cmFuc2FjdGlvbiBmYWlscy4AOQFCYXNlZCBvbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBbYE1pZ3JhdGlvblRhc2s6Om1pZ3JhdGVfdW50aWxfZXhoYXVzdGlvbmBdLCB0aGVNAXJlY29tbWVuZGVkIHdheSBvZiBkb2luZyB0aGlzIGlzIHRvIHBhc3MgYSBgbGltaXRgIHRoYXQgb25seSBib3VuZHMgYGNvdW50YCwgYXMgdGhlnGBzaXplYCBsaW1pdCBjYW4gYWx3YXlzIGJlIG92ZXJ3cml0dGVuLkhtaWdyYXRlX2N1c3RvbV90b3AIARBrZXlzNAEwVmVjPFZlYzx1OD4+AAEwd2l0bmVzc19zaXplOAEMdTMyAAIQCQFNaWdyYXRlIHRoZSBsaXN0IG9mIHRvcCBrZXlzIGJ5IGl0ZXJhdGluZyBlYWNoIG9mIHRoZW0gb25lIGJ5IG9uZS4AVQFUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgZ2xvYmFsIG1pZ3JhdGlvbiBwcm9jZXNzIHRyYWNrZXIgKFtgTWlncmF0aW9uUHJvY2Vzc2BdKSwgYW5k/HNob3VsZCBvbmx5IGJlIHVzZWQgaW4gY2FzZSBhbnkga2V5cyBhcmUgbGVmdG92ZXIgZHVlIHRvIGEgYnVnLlBtaWdyYXRlX2N1c3RvbV9jaGlsZAwBEHJvb3QYARxWZWM8dTg+AAEoY2hpbGRfa2V5czQBMFZlYzxWZWM8dTg+PgABKHRvdGFsX3NpemU4AQx1MzIAAxgRAU1pZ3JhdGUgdGhlIGxpc3Qgb2YgY2hpbGQga2V5cyBieSBpdGVyYXRpbmcgZWFjaCBvZiB0aGVtIG9uZSBieSBvbmUuAA0BQWxsIG9mIHRoZSBnaXZlbiBjaGlsZCBrZXlzIG11c3QgYmUgcHJlc2VudCB1bmRlciBvbmUgYGNoaWxkX3Jvb3RgLgBVAVRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBnbG9iYWwgbWlncmF0aW9uIHByb2Nlc3MgdHJhY2tlciAoW2BNaWdyYXRpb25Qcm9jZXNzYF0pLCBhbmT8c2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBjYXNlIGFueSBrZXlzIGFyZSBsZWZ0b3ZlciBkdWUgdG8gYSBidWcuVHNldF9zaWduZWRfbWF4X2xpbWl0cwQBGGxpbWl0cykFATxNaWdyYXRpb25MaW1pdHMABAS4U2V0IHRoZSBtYXhpbXVtIGxpbWl0IG9mIHRoZSBzaWduZWQgbWlncmF0aW9uLkhmb3JjZV9zZXRfcHJvZ3Jlc3MIATBwcm9ncmVzc190b3AxBQE0UHJvZ3Jlc3NPZjxUPgABOHByb2dyZXNzX2NoaWxkMQUBNFByb2dyZXNzT2Y8VD4ABSTIRm9yY2VmdWxseSBzZXQgdGhlIHByb2dyZXNzIHRoZSBydW5uaW5nIG1pZ3JhdGlvbi4AXQFUaGlzIGlzIG9ubHkgdXNlZnVsIGluIG9uZSBjYXNlOiB0aGUgbmV4dCBrZXkgdG8gbWlncmF0ZSBpcyB0b28gYmlnIHRvIGJlIG1pZ3JhdGVkIHdpdGhVAWEgc2lnbmVkIGFjY291bnQsIGluIGEgcGFyYWNoYWluIGNvbnRleHQsIGFuZCB3ZSBzaW1wbHkgd2FudCB0byBza2lwIGl0LiBBIHJlYXNvbmFibGVhAWV4YW1wbGUgb2YgdGhpcyB3b3VsZCBiZSBgOmNvZGU6YCwgd2hpY2ggaXMgYm90aCB2ZXJ5IGV4cGVuc2l2ZSB0byBtaWdyYXRlLCBhbmQgY29tbW9ubHmkdXNlZCwgc28gcHJvYmFibHkgaXQgaXMgYWxyZWFkeSBtaWdyYXRlZC4AXQFJbiBjYXNlIHlvdSBtZXNzIHRoaW5ncyB1cCwgeW91IGNhbiBhbHNvLCBpbiBwcmluY2lwbGUsIHVzZSB0aGlzIHRvIHJlc2V0IHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuJQUEGE9wdGlvbgQEVAEpBQEIEE5vbmUAAAAQU29tZQQAKQUAAAEAACkFDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0PE1pZ3JhdGlvbkxpbWl0cwAACAEQc2l6ZTgBDHUzMgABEGl0ZW04AQx1MzIAAC0FDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0NE1pZ3JhdGlvblRhc2sEBFQAABQBMHByb2dyZXNzX3RvcDEFATRQcm9ncmVzc09mPFQ+AAE4cHJvZ3Jlc3NfY2hpbGQxBQE0UHJvZ3Jlc3NPZjxUPgABEHNpemU4AQx1MzIAASR0b3BfaXRlbXM4AQx1MzIAASxjaGlsZF9pdGVtczgBDHUzMgAAMQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQgUHJvZ3Jlc3MEJE1heEtleUxlbgABDBxUb1N0YXJ0AAAAHExhc3RLZXkEADUFAWRCb3VuZGVkVmVjPHU4LCBNYXhLZXlMZW4+AAEAIENvbXBsZXRlAAIAADUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAOQUMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBBDYWxsBARUAAFoEGpvaW4IARhhbW91bnRVAQEwQmFsYW5jZU9mPFQ+AAEccG9vbF9pZDgBGFBvb2xJZAAAQEUBU3Rha2UgZnVuZHMgd2l0aCBhIHBvb2wuIFRoZSBhbW91bnQgdG8gYm9uZCBpcyBkZWxlZ2F0ZWQgKG9yIHRyYW5zZmVycmVkIGJhc2VkIG9uTQFbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlYF0pIGZyb20gdGhlIG1lbWJlciB0byB0aGUgcG9vbCBhY2NvdW50IGFuZCBpbW1lZGlhdGVseWhpbmNyZWFzZXMgdGhlIHBvb2wncyBib25kLgApAVRoZSBtZXRob2Qgb2YgdHJhbnNmZXJyaW5nIHRoZSBhbW91bnQgdG8gdGhlIHBvb2wgYWNjb3VudCBpcyBkZXRlcm1pbmVkIGJ5AQFbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlYF0uIElmIHRoZSBwb29sIGlzIGNvbmZpZ3VyZWQgdG8gdXNlMQFbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLCB0aGUgZnVuZHMgcmVtYWluIGluIHRoZSBhY2NvdW50IG9mMQF0aGUgYG9yaWdpbmAsIHdoaWxlIHRoZSBwb29sIGdhaW5zIHRoZSByaWdodCB0byB1c2UgdGhlc2UgZnVuZHMgZm9yIHN0YWtpbmcuABgjIE5vdGUAzCogQW4gYWNjb3VudCBjYW4gb25seSBiZSBhIG1lbWJlciBvZiBhIHNpbmdsZSBwb29sLtgqIEFuIGFjY291bnQgY2Fubm90IGpvaW4gdGhlIHNhbWUgcG9vbCBtdWx0aXBsZSB0aW1lcy5BASogVGhpcyBjYWxsIHdpbGwgKm5vdCogZHVzdCB0aGUgbWVtYmVyIGFjY291bnQsIHNvIHRoZSBtZW1iZXIgbXVzdCBoYXZlIGF0IGxlYXN0yCAgYGV4aXN0ZW50aWFsIGRlcG9zaXQgKyBhbW91bnRgIGluIHRoZWlyIGFjY291bnQu0CogT25seSBhIHBvb2wgd2l0aCBbYFBvb2xTdGF0ZTo6T3BlbmBdIGNhbiBiZSBqb2luZWQoYm9uZF9leHRyYQQBFGV4dHJhPQUBXEJvbmRFeHRyYTxCYWxhbmNlT2Y8VD4+AAEcRQFCb25kIGBleHRyYWAgbW9yZSBmdW5kcyBmcm9tIGBvcmlnaW5gIGludG8gdGhlIHBvb2wgdG8gd2hpY2ggdGhleSBhbHJlYWR5IGJlbG9uZy4ASQFBZGRpdGlvbmFsIGZ1bmRzIGNhbiBjb21lIGZyb20gZWl0aGVyIHRoZSBmcmVlIGJhbGFuY2Ugb2YgdGhlIGFjY291bnQsIG9mIGZyb20gdGhlnGFjY3VtdWxhdGVkIHJld2FyZHMsIHNlZSBbYEJvbmRFeHRyYWBdLgA9AUJvbmRpbmcgZXh0cmEgZnVuZHMgaW1wbGllcyBhbiBhdXRvbWF0aWMgcGF5b3V0IG9mIGFsbCBwZW5kaW5nIHJld2FyZHMgYXMgd2VsbC4JAVNlZSBgYm9uZF9leHRyYV9vdGhlcmAgdG8gYm9uZCBwZW5kaW5nIHJld2FyZHMgb2YgYG90aGVyYCBtZW1iZXJzLjBjbGFpbV9wYXlvdXQAAiBVAUEgYm9uZGVkIG1lbWJlciBjYW4gdXNlIHRoaXMgdG8gY2xhaW0gdGhlaXIgcGF5b3V0IGJhc2VkIG9uIHRoZSByZXdhcmRzIHRoYXQgdGhlIHBvb2xhAWhhcyBhY2N1bXVsYXRlZCBzaW5jZSB0aGVpciBsYXN0IGNsYWltZWQgcGF5b3V0IChPUiBzaW5jZSBqb2luaW5nIGlmIHRoaXMgaXMgdGhlaXIgZmlyc3Q9AXRpbWUgY2xhaW1pbmcgcmV3YXJkcykuIFRoZSBwYXlvdXQgd2lsbCBiZSB0cmFuc2ZlcnJlZCB0byB0aGUgbWVtYmVyJ3MgYWNjb3VudC4ASQFUaGUgbWVtYmVyIHdpbGwgZWFybiByZXdhcmRzIHBybyByYXRhIGJhc2VkIG9uIHRoZSBtZW1iZXJzIHN0YWtlIHZzIHRoZSBzdW0gb2YgdGhl0G1lbWJlcnMgaW4gdGhlIHBvb2xzIHN0YWtlLiBSZXdhcmRzIGRvIG5vdCAiZXhwaXJlIi4AQQFTZWUgYGNsYWltX3BheW91dF9vdGhlcmAgdG8gY2xhaW0gcmV3YXJkcyBvbiBiZWhhbGYgb2Ygc29tZSBgb3RoZXJgIHBvb2wgbWVtYmVyLhh1bmJvbmQIAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAdW5ib25kaW5nX3BvaW50c1UBATBCYWxhbmNlT2Y8VD4AA3xFAVVuYm9uZCB1cCB0byBgdW5ib25kaW5nX3BvaW50c2Agb2YgdGhlIGBtZW1iZXJfYWNjb3VudGAncyBmdW5kcyBmcm9tIHRoZSBwb29sLiBJdEUBaW1wbGljaXRseSBjb2xsZWN0cyB0aGUgcmV3YXJkcyBvbmUgbGFzdCB0aW1lLCBzaW5jZSBub3QgZG9pbmcgc28gd291bGQgbWVhbiBzb21lbHJld2FyZHMgd291bGQgYmUgZm9yZmVpdGVkLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCsIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoLgBdASogVGhlIHBvb2wgaXMgYmxvY2tlZCBhbmQgdGhlIGNhbGxlciBpcyBlaXRoZXIgdGhlIHJvb3Qgb3IgYm91bmNlci4gVGhpcyBpcyByZWZlcmVlZCB0bzAgIGFzIGEga2ljay70KiBUaGUgcG9vbCBpcyBkZXN0cm95aW5nIGFuZCB0aGUgbWVtYmVyIGlzIG5vdCB0aGUgZGVwb3NpdG9yLlUBKiBUaGUgcG9vbCBpcyBkZXN0cm95aW5nLCB0aGUgbWVtYmVyIGlzIHRoZSBkZXBvc2l0b3IgYW5kIG5vIG90aGVyIG1lbWJlcnMgYXJlIGluIHRoZRwgIHBvb2wuABEBIyMgQ29uZGl0aW9ucyBmb3IgcGVybWlzc2lvbmVkIGRpc3BhdGNoIChpLmUuIHRoZSBjYWxsZXIgaXMgYWxzbyB0aGVIYG1lbWJlcl9hY2NvdW50YCk6AIgqIFRoZSBjYWxsZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuVQEqIFRoZSBjYWxsZXIgaXMgdGhlIGRlcG9zaXRvciwgdGhlIHBvb2wgaXMgZGVzdHJveWluZyBhbmQgbm8gb3RoZXIgbWVtYmVycyBhcmUgaW4gdGhlHCAgcG9vbC4AGCMgTm90ZQAdAUlmIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzIHRvIHVuYm9uZCB3aXRoIHRoZSBwb29sIGFjY291bnQsUQFbYENhbGw6OnBvb2xfd2l0aGRyYXdfdW5ib25kZWRgXSBjYW4gYmUgY2FsbGVkIHRvIHRyeSBhbmQgbWluaW1pemUgdW5sb2NraW5nIGNodW5rcy5ZAVRoZSBbYFN0YWtpbmdJbnRlcmZhY2U6OnVuYm9uZGBdIHdpbGwgaW1wbGljaXRseSBjYWxsIFtgQ2FsbDo6cG9vbF93aXRoZHJhd191bmJvbmRlZGBdVQF0byB0cnkgdG8gZnJlZSBjaHVua3MgaWYgbmVjZXNzYXJ5IChpZS4gaWYgdW5ib3VuZCB3YXMgY2FsbGVkIGFuZCBubyB1bmxvY2tpbmcgY2h1bmtzYQFhcmUgYXZhaWxhYmxlKS4gSG93ZXZlciwgaXQgbWF5IG5vdCBiZSBwb3NzaWJsZSB0byByZWxlYXNlIHRoZSBjdXJyZW50IHVubG9ja2luZyBjaHVua3MsXQFpbiB3aGljaCBjYXNlLCB0aGUgcmVzdWx0IG9mIHRoaXMgY2FsbCB3aWxsIGxpa2VseSBiZSB0aGUgYE5vTW9yZUNodW5rc2AgZXJyb3IgZnJvbSB0aGU8c3Rha2luZyBzeXN0ZW0uWHBvb2xfd2l0aGRyYXdfdW5ib25kZWQIARxwb29sX2lkOAEYUG9vbElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAAQYVQFDYWxsIGB3aXRoZHJhd191bmJvbmRlZGAgZm9yIHRoZSBwb29scyBhY2NvdW50LiBUaGlzIGNhbGwgY2FuIGJlIG1hZGUgYnkgYW55IGFjY291bnQuAEEBVGhpcyBpcyB1c2VmdWwgaWYgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MgdG8gY2FsbCBgdW5ib25kYCwgYW5kIHNvbWVhAWNhbiBiZSBjbGVhcmVkIGJ5IHdpdGhkcmF3aW5nLiBJbiB0aGUgY2FzZSB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcywgdGhlIHVzZXJRAXdvdWxkIHByb2JhYmx5IHNlZSBhbiBlcnJvciBsaWtlIGBOb01vcmVDaHVua3NgIGVtaXR0ZWQgZnJvbSB0aGUgc3Rha2luZyBzeXN0ZW0gd2hlblx0aGV5IGF0dGVtcHQgdG8gdW5ib25kLkR3aXRoZHJhd191bmJvbmRlZAgBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIABVhVAVdpdGhkcmF3IHVuYm9uZGVkIGZ1bmRzIGZyb20gYG1lbWJlcl9hY2NvdW50YC4gSWYgbm8gYm9uZGVkIGZ1bmRzIGNhbiBiZSB1bmJvbmRlZCwgYW5IZXJyb3IgaXMgcmV0dXJuZWQuAE0BVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0aGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkkYWNjb3VudCkuAKgjIENvbmRpdGlvbnMgZm9yIGEgcGVybWlzc2lvbmxlc3MgZGlzcGF0Y2gACQEqIFRoZSBwb29sIGlzIGluIGRlc3Ryb3kgbW9kZSBhbmQgdGhlIHRhcmdldCBpcyBub3QgdGhlIGRlcG9zaXRvci4xASogVGhlIHRhcmdldCBpcyB0aGUgZGVwb3NpdG9yIGFuZCB0aGV5IGFyZSB0aGUgb25seSBtZW1iZXIgaW4gdGhlIHN1YiBwb29scy4NASogVGhlIHBvb2wgaXMgYmxvY2tlZCBhbmQgdGhlIGNhbGxlciBpcyBlaXRoZXIgdGhlIHJvb3Qgb3IgYm91bmNlci4AmCMgQ29uZGl0aW9ucyBmb3IgcGVybWlzc2lvbmVkIGRpc3BhdGNoAOgqIFRoZSBjYWxsZXIgaXMgdGhlIHRhcmdldCBhbmQgdGhleSBhcmUgbm90IHRoZSBkZXBvc2l0b3IuABgjIE5vdGUA9C0gSWYgdGhlIHRhcmdldCBpcyB0aGUgZGVwb3NpdG9yLCB0aGUgcG9vbCB3aWxsIGJlIGRlc3Ryb3llZC5hAS0gSWYgdGhlIHBvb2wgaGFzIGFueSBwZW5kaW5nIHNsYXNoLCB3ZSBhbHNvIHRyeSB0byBzbGFzaCB0aGUgbWVtYmVyIGJlZm9yZSBsZXR0aW5nIHRoZW1dAXdpdGhkcmF3LiBUaGlzIGNhbGN1bGF0aW9uIGFkZHMgc29tZSB3ZWlnaHQgb3ZlcmhlYWQgYW5kIGlzIG9ubHkgZGVmZW5zaXZlLiBJbiByZWFsaXR5LFUBcG9vbCBzbGFzaGVzIG11c3QgaGF2ZSBiZWVuIGFscmVhZHkgYXBwbGllZCB2aWEgcGVybWlzc2lvbmxlc3MgW2BDYWxsOjphcHBseV9zbGFzaGBdLhhjcmVhdGUQARhhbW91bnRVAQEwQmFsYW5jZU9mPFQ+AAEQcm9vdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkbm9taW5hdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxib3VuY2VyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABkR0Q3JlYXRlIGEgbmV3IGRlbGVnYXRpb24gcG9vbC4ALCMgQXJndW1lbnRzAFUBKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgZnVuZHMgdG8gZGVsZWdhdGUgdG8gdGhlIHBvb2wuIFRoaXMgYWxzbyBhY3RzIG9mIGEgc29ydCBvZk0BICBkZXBvc2l0IHNpbmNlIHRoZSBwb29scyBjcmVhdG9yIGNhbm5vdCBmdWxseSB1bmJvbmQgZnVuZHMgdW50aWwgdGhlIHBvb2wgaXMgYmVpbmcwICBkZXN0cm95ZWQuUQEqIGBpbmRleGAgLSBBIGRpc2FtYmlndWF0aW9uIGluZGV4IGZvciBjcmVhdGluZyB0aGUgYWNjb3VudC4gTGlrZWx5IG9ubHkgdXNlZnVsIHdoZW7AICBjcmVhdGluZyBtdWx0aXBsZSBwb29scyBpbiB0aGUgc2FtZSBleHRyaW5zaWMu1CogYHJvb3RgIC0gVGhlIGFjY291bnQgdG8gc2V0IGFzIFtgUG9vbFJvbGVzOjpyb290YF0uDQEqIGBub21pbmF0b3JgIC0gVGhlIGFjY291bnQgdG8gc2V0IGFzIHRoZSBbYFBvb2xSb2xlczo6bm9taW5hdG9yYF0u/CogYGJvdW5jZXJgIC0gVGhlIGFjY291bnQgdG8gc2V0IGFzIHRoZSBbYFBvb2xSb2xlczo6Ym91bmNlcmBdLgAYIyBOb3RlAGEBSW4gYWRkaXRpb24gdG8gYGFtb3VudGAsIHRoZSBjYWxsZXIgd2lsbCB0cmFuc2ZlciB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdDsgc28gdGhlIGNhbGxlcg0BbmVlZHMgYXQgaGF2ZSBhdCBsZWFzdCBgYW1vdW50ICsgZXhpc3RlbnRpYWxfZGVwb3NpdGAgdHJhbnNmZXJhYmxlLkxjcmVhdGVfd2l0aF9wb29sX2lkFAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgABEHJvb3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJG5vbWluYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcYm91bmNlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEccG9vbF9pZDgBGFBvb2xJZAAHGOxDcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiBwb29sIHdpdGggYSBwcmV2aW91c2x5IHVzZWQgcG9vbCBpZAAsIyBBcmd1bWVudHMAmHNhbWUgYXMgYGNyZWF0ZWAgd2l0aCB0aGUgaW5jbHVzaW9uIG9meCogYHBvb2xfaWRgIC0gYEEgdmFsaWQgUG9vbElkLiBub21pbmF0ZQgBHHBvb2xfaWQ4ARhQb29sSWQAASh2YWxpZGF0b3JzYQEBRFZlYzxUOjpBY2NvdW50SWQ+AAgwfE5vbWluYXRlIG9uIGJlaGFsZiBvZiB0aGUgcG9vbC4ARQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIHNpZ25lZCBieSB0aGUgcG9vbCBub21pbmF0b3Igb3IgdGhlIHBvb2wocm9vdCByb2xlLgBFAVRoaXMgZGlyZWN0bHkgZm9yd2FyZHMgdGhlIGNhbGwgdG8gYW4gaW1wbGVtZW50YXRpb24gb2YgYFN0YWtpbmdJbnRlcmZhY2VgIChlLmcuLEUBYHBhbGxldC1zdGFraW5nYCkgdGhyb3VnaCBbYENvbmZpZzo6U3Rha2VBZGFwdGVyYF0sIG9uIGJlaGFsZiBvZiB0aGUgYm9uZGVkIHBvb2wuABgjIE5vdGUAWQFJbiBhZGRpdGlvbiB0byBhIGByb290YCBvciBgbm9taW5hdG9yYCByb2xlIG9mIGBvcmlnaW5gLCB0aGUgcG9vbCdzIGRlcG9zaXRvciBuZWVkcyB0bw0BaGF2ZSBhdCBsZWFzdCBgZGVwb3NpdG9yX21pbl9ib25kYCBpbiB0aGUgcG9vbCB0byBzdGFydCBub21pbmF0aW5nLiRzZXRfc3RhdGUIARxwb29sX2lkOAEYUG9vbElkAAEUc3RhdGVBBQEkUG9vbFN0YXRlAAkodFNldCBhIG5ldyBzdGF0ZSBmb3IgdGhlIHBvb2wuAFUBSWYgYSBwb29sIGlzIGFscmVhZHkgaW4gdGhlIGBEZXN0cm95aW5nYCBzdGF0ZSwgdGhlbiB1bmRlciBubyBjb25kaXRpb24gY2FuIGl0cyBzdGF0ZTRjaGFuZ2UgYWdhaW4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIGVpdGhlcjoA3DEuIHNpZ25lZCBieSB0aGUgYm91bmNlciwgb3IgdGhlIHJvb3Qgcm9sZSBvZiB0aGUgcG9vbCxdATIuIGlmIHRoZSBwb29sIGNvbmRpdGlvbnMgdG8gYmUgb3BlbiBhcmUgTk9UIG1ldCAoYXMgZGVzY3JpYmVkIGJ5IGBva190b19iZV9vcGVuYCksIGFuZDkBICAgdGhlbiB0aGUgc3RhdGUgb2YgdGhlIHBvb2wgY2FuIGJlIHBlcm1pc3Npb25sZXNzbHkgY2hhbmdlZCB0byBgRGVzdHJveWluZ2AuMHNldF9tZXRhZGF0YQgBHHBvb2xfaWQ4ARhQb29sSWQAASBtZXRhZGF0YRgBHFZlYzx1OD4AChCAU2V0IGEgbmV3IG1ldGFkYXRhIGZvciB0aGUgcG9vbC4AXQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYm91bmNlciwgb3IgdGhlIHJvb3Qgcm9sZSBvZiB0aGUUcG9vbC4sc2V0X2NvbmZpZ3MYATRtaW5fam9pbl9ib25kRQUBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AATxtaW5fY3JlYXRlX2JvbmRFBQFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABJG1heF9wb29sc0kFATRDb25maWdPcDx1MzI+AAEsbWF4X21lbWJlcnNJBQE0Q29uZmlnT3A8dTMyPgABUG1heF9tZW1iZXJzX3Blcl9wb29sSQUBNENvbmZpZ09wPHUzMj4AAVRnbG9iYWxfbWF4X2NvbW1pc3Npb25NBQFEQ29uZmlnT3A8UGVyYmlsbD4ACyxBAVVwZGF0ZSBjb25maWd1cmF0aW9ucyBmb3IgdGhlIG5vbWluYXRpb24gcG9vbHMuIFRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlYFtgQ29uZmlnOjpBZG1pbk9yaWdpbmBdLgAsIyBBcmd1bWVudHMAoCogYG1pbl9qb2luX2JvbmRgIC0gU2V0IFtgTWluSm9pbkJvbmRgXS6wKiBgbWluX2NyZWF0ZV9ib25kYCAtIFNldCBbYE1pbkNyZWF0ZUJvbmRgXS6EKiBgbWF4X3Bvb2xzYCAtIFNldCBbYE1heFBvb2xzYF0upCogYG1heF9tZW1iZXJzYCAtIFNldCBbYE1heFBvb2xNZW1iZXJzYF0u5CogYG1heF9tZW1iZXJzX3Blcl9wb29sYCAtIFNldCBbYE1heFBvb2xNZW1iZXJzUGVyUG9vbGBdLuAqIGBnbG9iYWxfbWF4X2NvbW1pc3Npb25gIC0gU2V0IFtgR2xvYmFsTWF4Q29tbWlzc2lvbmBdLjB1cGRhdGVfcm9sZXMQARxwb29sX2lkOAEYUG9vbElkAAEgbmV3X3Jvb3RRBQFYQ29uZmlnT3A8VDo6QWNjb3VudElkPgABNG5ld19ub21pbmF0b3JRBQFYQ29uZmlnT3A8VDo6QWNjb3VudElkPgABLG5ld19ib3VuY2VyUQUBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4ADBx0VXBkYXRlIHRoZSByb2xlcyBvZiB0aGUgcG9vbC4APQFUaGUgcm9vdCBpcyB0aGUgb25seSBlbnRpdHkgdGhhdCBjYW4gY2hhbmdlIGFueSBvZiB0aGUgcm9sZXMsIGluY2x1ZGluZyBpdHNlbGYsuGV4Y2x1ZGluZyB0aGUgZGVwb3NpdG9yLCB3aG8gY2FuIG5ldmVyIGNoYW5nZS4AUQFJdCBlbWl0cyBhbiBldmVudCwgbm90aWZ5aW5nIFVJcyBvZiB0aGUgcm9sZSBjaGFuZ2UuIFRoaXMgZXZlbnQgaXMgcXVpdGUgcmVsZXZhbnQgdG8dAW1vc3QgcG9vbCBtZW1iZXJzIGFuZCB0aGV5IHNob3VsZCBiZSBpbmZvcm1lZCBvZiBjaGFuZ2VzIHRvIHBvb2wgcm9sZXMuFGNoaWxsBAEccG9vbF9pZDgBGFBvb2xJZAANRHBDaGlsbCBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAEEBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgY2FuIGJlIHNpZ25lZCBieSB0aGUgcG9vbCBub21pbmF0b3Igb3IgdGhlIHBvb2ygcm9vdCByb2xlLCBzYW1lIGFzIFtgUGFsbGV0Ojpub21pbmF0ZWBdLgBFAVRoaXMgZGlyZWN0bHkgZm9yd2FyZHMgdGhlIGNhbGwgdG8gYW4gaW1wbGVtZW50YXRpb24gb2YgYFN0YWtpbmdJbnRlcmZhY2VgIChlLmcuLEUBYHBhbGxldC1zdGFraW5nYCkgdGhyb3VnaCBbYENvbmZpZzo6U3Rha2VBZGFwdGVyYF0sIG9uIGJlaGFsZiBvZiB0aGUgYm9uZGVkIHBvb2wuAE0BVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0aGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkkYWNjb3VudCkuAKwjIENvbmRpdGlvbnMgZm9yIGEgcGVybWlzc2lvbmxlc3MgZGlzcGF0Y2g6VQEqIFdoZW4gcG9vbCBkZXBvc2l0b3IgaGFzIGxlc3MgdGhhbiBgTWluTm9taW5hdG9yQm9uZGAgc3Rha2VkLCBvdGhlcndpc2UgcG9vbCBtZW1iZXJzXCAgYXJlIHVuYWJsZSB0byB1bmJvbmQuAJwjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaDq0KiBUaGUgY2FsbGVyIGlzIHRoZSBwb29sJ3Mgbm9taW5hdG9yIG9yIHJvb3QuQGJvbmRfZXh0cmFfb3RoZXIIARhtZW1iZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGV4dHJhPQUBXEJvbmRFeHRyYTxCYWxhbmNlT2Y8VD4+AA4kVQFgb3JpZ2luYCBib25kcyBmdW5kcyBmcm9tIGBleHRyYWAgZm9yIHNvbWUgcG9vbCBtZW1iZXIgYG1lbWJlcmAgaW50byB0aGVpciByZXNwZWN0aXZlGHBvb2xzLgBJAWBvcmlnaW5gIGNhbiBib25kIGV4dHJhIGZ1bmRzIGZyb20gZnJlZSBiYWxhbmNlIG9yIHBlbmRpbmcgcmV3YXJkcyB3aGVuIGBvcmlnaW4gPT0cb3RoZXJgLgBFAUluIHRoZSBjYXNlIG9mIGBvcmlnaW4gIT0gb3RoZXJgLCBgb3JpZ2luYCBjYW4gb25seSBib25kIGV4dHJhIHBlbmRpbmcgcmV3YXJkcyBvZhUBYG90aGVyYCBtZW1iZXJzIGFzc3VtaW5nIHNldF9jbGFpbV9wZXJtaXNzaW9uIGZvciB0aGUgZ2l2ZW4gbWVtYmVyIGlzwGBQZXJtaXNzaW9ubGVzc0NvbXBvdW5kYCBvciBgUGVybWlzc2lvbmxlc3NBbGxgLlBzZXRfY2xhaW1fcGVybWlzc2lvbgQBKHBlcm1pc3Npb25VBQE8Q2xhaW1QZXJtaXNzaW9uAA8cSQFBbGxvd3MgYSBwb29sIG1lbWJlciB0byBzZXQgYSBjbGFpbSBwZXJtaXNzaW9uIHRvIGFsbG93IG9yIGRpc2FsbG93IHBlcm1pc3Npb25sZXNzYGJvbmRpbmcgYW5kIHdpdGhkcmF3aW5nLgAsIyBBcmd1bWVudHMAeCogYG9yaWdpbmAgLSBNZW1iZXIgb2YgYSBwb29sLrgqIGBwZXJtaXNzaW9uYCAtIFRoZSBwZXJtaXNzaW9uIHRvIGJlIGFwcGxpZWQuSGNsYWltX3BheW91dF9vdGhlcgQBFG90aGVyBAEwVDo6QWNjb3VudElkABAQAQFgb3JpZ2luYCBjYW4gY2xhaW0gcGF5b3V0cyBvbiBzb21lIHBvb2wgbWVtYmVyIGBvdGhlcmAncyBiZWhhbGYuAFUBUG9vbCBtZW1iZXIgYG90aGVyYCBtdXN0IGhhdmUgYSBgUGVybWlzc2lvbmxlc3NXaXRoZHJhd2Agb3IgYFBlcm1pc3Npb25sZXNzQWxsYCBjbGFpbahwZXJtaXNzaW9uIGZvciB0aGlzIGNhbGwgdG8gYmUgc3VjY2Vzc2Z1bC44c2V0X2NvbW1pc3Npb24IARxwb29sX2lkOAEYUG9vbElkAAE4bmV3X2NvbW1pc3Npb25ZBQF8T3B0aW9uPChQZXJiaWxsLCBUOjpBY2NvdW50SWQpPgARFHRTZXQgdGhlIGNvbW1pc3Npb24gb2YgYSBwb29sLlUBQm90aCBhIGNvbW1pc3Npb24gcGVyY2VudGFnZSBhbmQgYSBjb21taXNzaW9uIHBheWVlIG11c3QgYmUgcHJvdmlkZWQgaW4gdGhlIGBjdXJyZW50YF0BdHVwbGUuIFdoZXJlIGEgYGN1cnJlbnRgIG9mIGBOb25lYCBpcyBwcm92aWRlZCwgYW55IGN1cnJlbnQgY29tbWlzc2lvbiB3aWxsIGJlIHJlbW92ZWQuAE0BLSBJZiBhIGBOb25lYCBpcyBzdXBwbGllZCB0byBgbmV3X2NvbW1pc3Npb25gLCBleGlzdGluZyBjb21taXNzaW9uIHdpbGwgYmUgcmVtb3ZlZC5Ic2V0X2NvbW1pc3Npb25fbWF4CAEccG9vbF9pZDgBGFBvb2xJZAABOG1heF9jb21taXNzaW9uoQEBHFBlcmJpbGwAEhSUU2V0IHRoZSBtYXhpbXVtIGNvbW1pc3Npb24gb2YgYSBwb29sLgA5AS0gSW5pdGlhbCBtYXggY2FuIGJlIHNldCB0byBhbnkgYFBlcmJpbGxgLCBhbmQgb25seSBzbWFsbGVyIHZhbHVlcyB0aGVyZWFmdGVyLjUBLSBDdXJyZW50IGNvbW1pc3Npb24gd2lsbCBiZSBsb3dlcmVkIGluIHRoZSBldmVudCBpdCBpcyBoaWdoZXIgdGhhbiBhIG5ldyBtYXg0ICBjb21taXNzaW9uLmhzZXRfY29tbWlzc2lvbl9jaGFuZ2VfcmF0ZQgBHHBvb2xfaWQ4ARhQb29sSWQAASxjaGFuZ2VfcmF0ZWEFAZxDb21taXNzaW9uQ2hhbmdlUmF0ZTxCbG9ja051bWJlckZvcjxUPj4AExCoU2V0IHRoZSBjb21taXNzaW9uIGNoYW5nZSByYXRlIGZvciBhIHBvb2wuAD0BSW5pdGlhbCBjaGFuZ2UgcmF0ZSBpcyBub3QgYm91bmRlZCwgd2hlcmVhcyBzdWJzZXF1ZW50IHVwZGF0ZXMgY2FuIG9ubHkgYmUgbW9yZXRyZXN0cmljdGl2ZSB0aGFuIHRoZSBjdXJyZW50LkBjbGFpbV9jb21taXNzaW9uBAEccG9vbF9pZDgBGFBvb2xJZAAUQGRDbGFpbSBwZW5kaW5nIGNvbW1pc3Npb24uAD0BVGhlIGByb290YCByb2xlIG9mIHRoZSBwb29sIGlzIF9hbHdheXNfIGFsbG93ZWQgdG8gY2xhaW0gdGhlIHBvb2wncyBjb21taXNzaW9uLgBVAUlmIHRoZSBwb29sIGhhcyBzZXQgYENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb246OlBlcm1pc3Npb25sZXNzYCwgdGhlbiBhbnkgYWNjb3VudCBjYW7YdHJpZ2dlciB0aGUgcHJvY2VzcyBvZiBjbGFpbWluZyB0aGUgcG9vbCdzIGNvbW1pc3Npb24uAEEBSWYgdGhlIHBvb2wgaGFzIHNldCBpdHMgYENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb25gIHRvIGBBY2NvdW50KGFjYylgLCB0aGVuIG9ubHkgYWNjb3VudHMwKiBgYWNjYCwgYW5kZCogdGhlIHBvb2wncyByb290IGFjY291bnQAuG1heSBjYWxsIHRoaXMgZXh0cmluc2ljIG9uIGJlaGFsZiBvZiB0aGUgcG9vbC4ALQFQZW5kaW5nIGNvbW1pc3Npb25zIGFyZSBwYWlkIG91dCBhbmQgYWRkZWQgdG8gdGhlIHRvdGFsIGNsYWltZWQgY29tbWlzc2lvbi64VGhlIHRvdGFsIHBlbmRpbmcgY29tbWlzc2lvbiBpcyByZXNldCB0byB6ZXJvLkxhZGp1c3RfcG9vbF9kZXBvc2l0BAEccG9vbF9pZDgBGFBvb2xJZAAVHOxUb3AgdXAgdGhlIGRlZmljaXQgb3Igd2l0aGRyYXcgdGhlIGV4Y2VzcyBFRCBmcm9tIHRoZSBwb29sLgBRAVdoZW4gYSBwb29sIGlzIGNyZWF0ZWQsIHRoZSBwb29sIGRlcG9zaXRvciB0cmFuc2ZlcnMgRUQgdG8gdGhlIHJld2FyZCBhY2NvdW50IG9mIHRoZVUBcG9vbC4gRUQgaXMgc3ViamVjdCB0byBjaGFuZ2UgYW5kIG92ZXIgdGltZSwgdGhlIGRlcG9zaXQgaW4gdGhlIHJld2FyZCBhY2NvdW50IG1heSBiZVEBaW5zdWZmaWNpZW50IHRvIGNvdmVyIHRoZSBFRCBkZWZpY2l0IG9mIHRoZSBwb29sIG9yIHZpY2UtdmVyc2Egd2hlcmUgdGhlcmUgaXMgZXhjZXNzMQFkZXBvc2l0IHRvIHRoZSBwb29sLiBUaGlzIGNhbGwgYWxsb3dzIGFueW9uZSB0byBhZGp1c3QgdGhlIEVEIGRlcG9zaXQgb2YgdGhl9HBvb2wgYnkgZWl0aGVyIHRvcHBpbmcgdXAgdGhlIGRlZmljaXQgb3IgY2xhaW1pbmcgdGhlIGV4Y2Vzcy58c2V0X2NvbW1pc3Npb25fY2xhaW1fcGVybWlzc2lvbggBHHBvb2xfaWQ4ARhQb29sSWQAAShwZXJtaXNzaW9uZQUBvE9wdGlvbjxDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uPFQ6OkFjY291bnRJZD4+ABYQzFNldCBvciByZW1vdmUgYSBwb29sJ3MgY29tbWlzc2lvbiBjbGFpbSBwZXJtaXNzaW9uLgBhAURldGVybWluZXMgd2hvIGNhbiBjbGFpbSB0aGUgcG9vbCdzIHBlbmRpbmcgY29tbWlzc2lvbi4gT25seSB0aGUgYFJvb3RgIHJvbGUgb2YgdGhlIHBvb2zIaXMgYWJsZSB0byBjb25maWd1cmUgY29tbWlzc2lvbiBjbGFpbSBwZXJtaXNzaW9ucy4sYXBwbHlfc2xhc2gEAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+ABckiEFwcGx5IGEgcGVuZGluZyBzbGFzaCBvbiBhIG1lbWJlci4AJQFGYWlscyB1bmxlc3MgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGlzIG9mIHN0cmF0ZWd5IHR5cGU6pFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uAF0BVGhlIHBlbmRpbmcgc2xhc2ggYW1vdW50IG9mIHRoZSBtZW1iZXIgbXVzdCBiZSBlcXVhbCBvciBtb3JlIHRoYW4gYEV4aXN0ZW50aWFsRGVwb3NpdGAuUQFUaGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkgYWNjb3VudCkuIElmIHRoZSBleGVjdXRpb25JAWlzIHN1Y2Nlc3NmdWwsIGZlZSBpcyByZWZ1bmRlZCBhbmQgY2FsbGVyIG1heSBiZSByZXdhcmRlZCB3aXRoIGEgcGFydCBvZiB0aGUgc2xhc2gNAWJhc2VkIG9uIHRoZSBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gY29uZmlndXJhdGlvbi5IbWlncmF0ZV9kZWxlZ2F0aW9uBAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYJB0BTWlncmF0ZXMgZGVsZWdhdGVkIGZ1bmRzIGZyb20gdGhlIHBvb2wgYWNjb3VudCB0byB0aGUgYG1lbWJlcl9hY2NvdW50YC4AJQFGYWlscyB1bmxlc3MgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGlzIG9mIHN0cmF0ZWd5IHR5cGU6pFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uACkBVGhpcyBpcyBhIHBlcm1pc3Npb24tbGVzcyBjYWxsIGFuZCByZWZ1bmRzIGFueSBmZWUgaWYgY2xhaW0gaXMgc3VjY2Vzc2Z1bC4AXQFJZiB0aGUgcG9vbCBoYXMgbWlncmF0ZWQgdG8gZGVsZWdhdGlvbiBiYXNlZCBzdGFraW5nLCB0aGUgc3Rha2VkIHRva2VucyBvZiBwb29sIG1lbWJlcnMpAWNhbiBiZSBtb3ZlZCBhbmQgaGVsZCBpbiB0aGVpciBvd24gYWNjb3VudC4gU2VlIFtgYWRhcHRlcjo6RGVsZWdhdGVTdGFrZWBdeG1pZ3JhdGVfcG9vbF90b19kZWxlZ2F0ZV9zdGFrZQQBHHBvb2xfaWQ4ARhQb29sSWQAGST0TWlncmF0ZSBwb29sIGZyb20gW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6VHJhbnNmZXJgXSB0b6RbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AQQFUaGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSwgYW5kIHJlZnVuZHMgYW55IGZlZSBpZiBzdWNjZXNzZnVsLgBJAUlmIHRoZSBwb29sIGhhcyBhbHJlYWR5IG1pZ3JhdGVkIHRvIGRlbGVnYXRpb24gYmFzZWQgc3Rha2luZywgdGhpcyBjYWxsIHdpbGwgZmFpbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuPQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzJEJvbmRFeHRyYQQcQmFsYW5jZQFZAQEILEZyZWVCYWxhbmNlBABZAQEcQmFsYW5jZQAAABxSZXdhcmRzAAEAAEEFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyRQb29sU3RhdGUAAQwQT3BlbgAAABxCbG9ja2VkAAEAKERlc3Ryb3lpbmcAAgAARQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAVkBAQwQTm9vcAAAAAxTZXQEAFkBAQRUAAEAGFJlbW92ZQACAABJBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBOAEMEE5vb3AAAAAMU2V0BAA4AQRUAAEAGFJlbW92ZQACAABNBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBoQEBDBBOb29wAAAADFNldAQAoQEBBFQAAQAYUmVtb3ZlAAIAAFEFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAEEAQwQTm9vcAAAAAxTZXQEAAQBBFQAAQAYUmVtb3ZlAAIAAFUFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29sczxDbGFpbVBlcm1pc3Npb24AARAwUGVybWlzc2lvbmVkAAAAWFBlcm1pc3Npb25sZXNzQ29tcG91bmQAAQBYUGVybWlzc2lvbmxlc3NXaXRoZHJhdwACAERQZXJtaXNzaW9ubGVzc0FsbAADAABZBQQYT3B0aW9uBARUAV0FAQgQTm9uZQAAABBTb21lBABdBQAAAQAAXQUAAAQIoQEEAGEFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29sc1BDb21taXNzaW9uQ2hhbmdlUmF0ZQQsQmxvY2tOdW1iZXIBOAAIATBtYXhfaW5jcmVhc2WhAQEcUGVyYmlsbAABJG1pbl9kZWxheTgBLEJsb2NrTnVtYmVyAABlBQQYT3B0aW9uBARUAWkFAQgQTm9uZQAAABBTb21lBABpBQAAAQAAaQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzZENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb24EJEFjY291bnRJZAEEAQg4UGVybWlzc2lvbmxlc3MAAAAcQWNjb3VudAQABAEkQWNjb3VudElkAAEAAG0FDEBwYWxsZXRfYmFnc19saXN0GHBhbGxldBBDYWxsCARUAARJAAEMFHJlYmFnBAEoZGlzbG9jYXRlZAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAAoWQFEZWNsYXJlIHRoYXQgc29tZSBgZGlzbG9jYXRlZGAgYWNjb3VudCBoYXMsIHRocm91Z2ggcmV3YXJkcyBvciBwZW5hbHRpZXMsIHN1ZmZpY2llbnRseVEBY2hhbmdlZCBpdHMgc2NvcmUgdGhhdCBpdCBzaG91bGQgcHJvcGVybHkgZmFsbCBpbnRvIGEgZGlmZmVyZW50IGJhZyB0aGFuIGl0cyBjdXJyZW50EG9uZS4AHQFBbnlvbmUgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiBhYm91dCBhbnkgcG90ZW50aWFsbHkgZGlzbG9jYXRlZCBhY2NvdW50LgBJAVdpbGwgYWx3YXlzIHVwZGF0ZSB0aGUgc3RvcmVkIHNjb3JlIG9mIGBkaXNsb2NhdGVkYCB0byB0aGUgY29ycmVjdCBzY29yZSwgYmFzZWQgb25AYFNjb3JlUHJvdmlkZXJgLgDUSWYgYGRpc2xvY2F0ZWRgIGRvZXMgbm90IGV4aXN0cywgaXQgcmV0dXJucyBhbiBlcnJvci48cHV0X2luX2Zyb250X29mBAEcbGlnaHRlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEo0E1vdmUgdGhlIGNhbGxlcidzIElkIGRpcmVjdGx5IGluIGZyb250IG9mIGBsaWdodGVyYC4AWQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBJZCBvZjUBdGhlIGFjY291bnQgZ29pbmcgaW4gZnJvbnQgb2YgYGxpZ2h0ZXJgLiBGZWUgaXMgcGF5ZWQgYnkgdGhlIG9yaWdpbiB1bmRlciBhbGw4Y2lyY3Vtc3RhbmNlcy4AOE9ubHkgd29ya3MgaWY6AJQtIGJvdGggbm9kZXMgYXJlIHdpdGhpbiB0aGUgc2FtZSBiYWcs0C0gYW5kIGBvcmlnaW5gIGhhcyBhIGdyZWF0ZXIgYFNjb3JlYCB0aGFuIGBsaWdodGVyYC5UcHV0X2luX2Zyb250X29mX290aGVyCAEcaGVhdmllcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcbGlnaHRlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAIMEQFTYW1lIGFzIFtgUGFsbGV0OjpwdXRfaW5fZnJvbnRfb2ZgXSwgYnV0IGl0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLgDIRmVlIGlzIHBhaWQgYnkgdGhlIG9yaWdpbiB1bmRlciBhbGwgY2lyY3Vtc3RhbmNlcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMucQUMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQQQ2FsbAQEVAABEFByZWxheV9zZXNzaW9uX3JlcG9ydAQBGHJlcG9ydHUFAWxTZXNzaW9uUmVwb3J0PFQ6OkFjY291bnRJZD4AAAQFAUNhbGxlZCB0byBpbmRpY2F0ZSB0aGUgc3RhcnQgb2YgYSBuZXcgc2Vzc2lvbiBvbiB0aGUgcmVsYXkgY2hhaW4uXHJlbGF5X25ld19vZmZlbmNlX3BhZ2VkBAEgb2ZmZW5jZXOJBQGoVmVjPChTZXNzaW9uSW5kZXgsIE9mZmVuY2U8VDo6QWNjb3VudElkPik+AAEAIHNldF9rZXlzDAEQa2V5cxgBHFZlYzx1OD4AARRwcm9vZhgBHFZlYzx1OD4AAZRtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlSQQBUE9wdGlvbjxCYWxhbmNlT2Y8VD4+AAp8VQFTZXQgc2Vzc2lvbiBrZXlzIGZvciBhIHZhbGlkYXRvci4gS2V5cyBhcmUgdmFsaWRhdGVkIG9uIEFzc2V0SHViIGFuZCBmb3J3YXJkZWQgdG8gUkMuAFUBT24gdGhlIGZpcnN0IGNhbGwsIGEgZGVwb3NpdCBvZiBgS2V5RGVwb3NpdGAgaXMgaGVsZCBmcm9tIHRoZSBzdGFzaC4gU3Vic2VxdWVudCBjYWxsc/RkbyBub3QgY2hhcmdlIGFnYWluLiBUaGUgZGVwb3NpdCBpcyByZWxlYXNlZCBvbiBgcHVyZ2Vfa2V5c2AuAGwqKlZhbGlkYXRpb24gb24gQXNzZXRIdWI6KipNAS0gS2V5cyBhcmUgZGVjb2RlZCBhcyBgVDo6UmVsYXlDaGFpblNlc3Npb25LZXlzYCB0byBlbnN1cmUgdGhleSBtYXRjaCBSQydzIGV4cGVjdGVkJCAgZm9ybWF0LjEBLSBPd25lcnNoaXAgcHJvb2YgaXMgdmFsaWRhdGVkIHVzaW5nIGBPcGFxdWVLZXlzOjpvd25lcnNoaXBfcHJvb2ZfaXNfdmFsaWRgLgBBAUlmIHZhbGlkYXRpb24gcGFzc2VzLCBvbmx5IHRoZSB2YWxpZGF0ZWQga2V5cyBhcmUgc2VudCB0byBSQyAod2l0aCBlbXB0eSBwcm9vZiksgHNpbmNlIFJDIHRydXN0cyBBSCdzIHZhbGlkYXRpb24uACQqKkZlZXM6KipVAVRoZSBhY3R1YWwgY29zdCBvZiB0aGlzIGNhbGwgaXMgaGlnaGVyIHRoYW4gd2hhdCB0aGUgd2VpZ2h0LWJhc2VkIGZlZSBlc3RpbWF0ZSBzaG93cy5RAUluIGFkZGl0aW9uIHRvIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLCB0aGUgc3Rhc2ggYWNjb3VudCBpcyBjaGFyZ2VkIGFuIFhDTUkBZmVlIChkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBjb3N0KSB2aWEgYFhjbUV4ZWN1dG9yOjpjaGFyZ2VfZmVlc2AuIFRoZSByZWxheSBjaGFpbj0BdXNlcyBgVW5wYWlkRXhlY3V0aW9uYCwgc28gdGhlIGZ1bGwgcmVtb3RlIGNvc3QgaXMgY2hhcmdlZCB1cGZyb250IG9uIEFzc2V0SHViLgAtAVdoZW4gY2FsbGVkIHZpYSBhIHN0YWtpbmcgcHJveHksIHRoZSBwcm94eSBwYXlzIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLNh3aGlsZSB0aGUgc3Rhc2ggKGRlbGVnYXRpbmcgYWNjb3VudCkgcGF5cyB0aGUgWENNIGZlZS4ASCoqTWF4IEZlZSBMaW1pdDoqKkUBVXNlcnMgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBgbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZWAgdG8gbGltaXQgdGhlXQFkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBmZWUuIFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZS4gSWZdAXRoZSBmZWUgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGUgb3BlcmF0aW9uIGZhaWxzIHdpdGggYEZlZXNFeGNlZWRlZE1heGAuIFBhc3MgYE5vbmVgIGZvckx1bmxpbWl0ZWQgKG5vIGNhcCkuAFkBTk9URTogdW5saWtlIHRoZSBjdXJyZW50IGZsb3cgZm9yIG5ldyB2YWxpZGF0b3JzIG9uIFJDIChib25kIC0+IHNldF9rZXlzIC0+IHZhbGlkYXRlKSxVAXVzZXJzIG9uIEFzc2V0IEh1YiBNVVNUIGNhbGwgYm9uZCBhbmQgdmFsaWRhdGUgQkVGT1JFIGNhbGxpbmcgc2V0X2tleXMuIEF0dGVtcHRpbmcgdG8lAXNldCBrZXlzIGJlZm9yZSBkZWNsYXJpbmcgaW50ZW50IHRvIHZhbGlkYXRlIHdpbGwgZmFpbCB3aXRoIE5vdFZhbGlkYXRvci4ocHVyZ2Vfa2V5cwQBlG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVJBAFQT3B0aW9uPEJhbGFuY2VPZjxUPj4AC2gBAVJlbW92ZSBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yIGFuZCByZWxlYXNlIHRoZSBrZXkgZGVwb3NpdC4AqFRoaXMgcHVyZ2VzIHRoZSBrZXlzIGZyb20gdGhlIFJlbGF5IENoYWluLgBFAVVubGlrZSBgc2V0X2tleXNgLCB0aGlzIGRvZXMgbm90IHJlcXVpcmUgdGhlIGNhbGxlciB0byBiZSBhIHJlZ2lzdGVyZWQgdmFsaWRhdG9yLkkBVGhpcyBpcyBpbnRlbnRpb25hbDogYSB2YWxpZGF0b3Igd2hvIGhhcyBjaGlsbGVkIChzdG9wcGVkIHZhbGlkYXRpbmcpIHNob3VsZCBzdGlsbDkBYmUgYWJsZSB0byBwdXJnZSB0aGVpciBzZXNzaW9uIGtleXMuIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIG9yaWdpbmFs8GBwYWxsZXQtc2Vzc2lvbjo6cHVyZ2Vfa2V5c2Agd2hpY2ggYWxsb3dzIGFueW9uZSB0byBjYWxsIGl0LgA5AVRoZSBSZWxheSBDaGFpbiB3aWxsIHJlamVjdCB0aGUgY2FsbCB3aXRoIGBOb0tleXNgIGVycm9yIGlmIHRoZSBhY2NvdW50IGhhcyBubyRrZXlzIHNldC4AJCoqRmVlczoqKlUBVGhlIGFjdHVhbCBjb3N0IG9mIHRoaXMgY2FsbCBpcyBoaWdoZXIgdGhhbiB3aGF0IHRoZSB3ZWlnaHQtYmFzZWQgZmVlIGVzdGltYXRlIHNob3dzLkUBSW4gYWRkaXRpb24gdG8gdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUsIHRoZSBjYWxsZXIgaXMgY2hhcmdlZCBhbiBYQ00gZmVlTQEoZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gY29zdCkgdmlhIGBYY21FeGVjdXRvcjo6Y2hhcmdlX2ZlZXNgLiBUaGUgcmVsYXkgY2hhaW4gdXNlcykBYFVucGFpZEV4ZWN1dGlvbmAsIHNvIHRoZSBmdWxsIHJlbW90ZSBjb3N0IGlzIGNoYXJnZWQgdXBmcm9udCBvbiBBc3NldEh1Yi4ALQFXaGVuIGNhbGxlZCB2aWEgYSBzdGFraW5nIHByb3h5LCB0aGUgcHJveHkgcGF5cyB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSy4d2hpbGUgdGhlIGRlbGVnYXRpbmcgYWNjb3VudCBwYXlzIHRoZSBYQ00gZmVlLgBIKipNYXggRmVlIExpbWl0OioqRQFVc2VycyBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGBtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlYCB0byBsaW1pdCB0aGVdAWRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGZlZS4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLiBJZl0BdGhlIGZlZSBleGNlZWRzIHRoaXMgbGltaXQsIHRoZSBvcGVyYXRpb24gZmFpbHMgd2l0aCBgRmVlc0V4Y2VlZGVkTWF4YC4gUGFzcyBgTm9uZWAgZm9yTHVubGltaXRlZCAobm8gY2FwKS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMudQUIeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDRTZXNzaW9uUmVwb3J0BCRBY2NvdW50SWQBBAAQASRlbmRfaW5kZXg4ATBTZXNzaW9uSW5kZXgAAUB2YWxpZGF0b3JfcG9pbnRzeQUBVFZlYzwoQWNjb3VudElkLCB1MzIpPgABUGFjdGl2YXRpb25fdGltZXN0YW1wgQUBSE9wdGlvbjwodTY0LCB1MzIpPgABIGxlZnRvdmVyXQEBEGJvb2wAAHkFAAACfQUAfQUAAAQIBDgAgQUEGE9wdGlvbgQEVAGFBQEIEE5vbmUAAAAQU29tZQQAhQUAAAEAAIUFAAAECCg4AIkFAAACjQUAjQUAAAQIOJEFAJEFCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQcT2ZmZW5jZQQkQWNjb3VudElkAQQADAEgb2ZmZW5kZXIEASRBY2NvdW50SWQAASRyZXBvcnRlcnNhAQE4VmVjPEFjY291bnRJZD4AAThzbGFzaF9mcmFjdGlvbqEBARxQZXJiaWxsAACVBQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBBDYWxsBARUAAEIGG1hbmFnZQQBCG9wmQUBTE1hbmFnZXJPcGVyYXRpb248VD4AABRMTWFuYWdlIHRoaXMgcGFsbGV0LgDoVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdLgAJAVNlZSBbYE1hbmFnZXJPcGVyYXRpb25gXSBmb3IgdmFyaW91cyBvcGVyYXRpb25zIHRoYXQgYXJlIHBvc3NpYmxlLhRhZG1pbgQBCG9woQUBREFkbWluT3BlcmF0aW9uPFQ+AAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpkFCJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2tATWFuYWdlck9wZXJhdGlvbgQEVAABDEBGb3JjZVJvdGF0ZVJvdW5kAAAANEZvcmNlU2V0UGhhc2UEAJ0FASBQaGFzZTxUPgABAERFbWVyZ2VuY3lGYWxsYmFjawACAACdBQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrFHR5cGVzFFBoYXNlBARUAAEgDE9mZgAAABhTaWduZWQEADgBREJsb2NrTnVtYmVyRm9yPFQ+AAEAQFNpZ25lZFZhbGlkYXRpb24EADgBREJsb2NrTnVtYmVyRm9yPFQ+AAIAIFVuc2lnbmVkBAA4AURCbG9ja051bWJlckZvcjxUPgADACBTbmFwc2hvdAQAOAEkUGFnZUluZGV4AAQAEERvbmUABQAYRXhwb3J0BAA4ASRQYWdlSW5kZXgABgAkRW1lcmdlbmN5AAcAAKEFCJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s4QWRtaW5PcGVyYXRpb24EBFQAAQhQRW1lcmdlbmN5U2V0U29sdXRpb24IAKUFAYRCb3g8Qm91bmRlZFN1cHBvcnRzT2Y8UGFsbGV0PFQ+Pj4AAMUFATRFbGVjdGlvblNjb3JlAAAAUFNldE1pblVudHJ1c3RlZFNjb3JlBADFBQE0RWxlY3Rpb25TY29yZQABAAClBQh8ZnJhbWVfZWxlY3Rpb25fcHJvdmlkZXJfc3VwcG9ydDxCb3VuZGVkU3VwcG9ydHMMJEFjY291bnRJZAEEGEJPdXRlcgAYQklubmVyAAAEAKkFAQkBQm91bmRlZFZlYzwoQWNjb3VudElkLCBCb3VuZGVkU3VwcG9ydDxBY2NvdW50SWQsIEJJbm5lcj4pLCBCT3V0ZXI+AACpBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAa0FBFMAAAQAwQUBGFZlYzxUPgAArQUAAAQIBLEFALEFCHxmcmFtZV9lbGVjdGlvbl9wcm92aWRlcl9zdXBwb3J0OEJvdW5kZWRTdXBwb3J0CCRBY2NvdW50SWQBBBRCb3VuZAAACAEUdG90YWxZAQE8RXh0ZW5kZWRCYWxhbmNlAAEYdm90ZXJztQUBvEJvdW5kZWRWZWM8KEFjY291bnRJZCwgRXh0ZW5kZWRCYWxhbmNlKSwgQm91bmQ+AAC1BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbkFBFMAAAQAvQUBGFZlYzxUPgAAuQUAAAQIBFkBAL0FAAACuQUAwQUAAAKtBQDFBQhEc3BfbnBvc19lbGVjdGlvbnM0RWxlY3Rpb25TY29yZQAADAE0bWluaW1hbF9zdGFrZVkBATxFeHRlbmRlZEJhbGFuY2UAASRzdW1fc3Rha2VZAQE8RXh0ZW5kZWRCYWxhbmNlAAFEc3VtX3N0YWtlX3NxdWFyZWRZAQE8RXh0ZW5kZWRCYWxhbmNlAADJBRSQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLs0FEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdW5zaWduZWQYcGFsbGV0EENhbGwEBFQAAQQ8c3VibWl0X3Vuc2lnbmVkBAE4cGFnZWRfc29sdXRpb27RBQGUQm94PFBhZ2VkUmF3U29sdXRpb248VDo6TWluZXJDb25maWc+PgAAPHBTdWJtaXQgYW4gdW5zaWduZWQgc29sdXRpb24uAFUBVGhpcyB3b3JrcyB2ZXJ5IG11Y2ggbGlrZSBhbiBpbmhlcmVudCwgYXMgb25seSB0aGUgdmFsaWRhdG9ycyBhcmUgcGVybWl0dGVkIHRvIHN1Ym1pdFkBYW55dGhpbmcuIEJ5IGRlZmF1bHQgdmFsaWRhdG9ycyB3aWxsIGNvbXB1dGUgdGhpcyBjYWxsIGluIHRoZWlyIGBvZmZjaGFpbl93b3JrZXJgIGhvb2tsYW5kIHRyeSBhbmQgc3VibWl0IGl0IGJhY2suAEUBVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBzaWduZWQgcGFnZSBzdWJtaXNzaW9uIG1haW5seSBpbiB0aGF0IHRoZSBzb2x1dGlvbiBwYWdlIGlzUHZlcmlmaWVkIG9uIHRoZSBmbHkuAD0BVGhlIGBwYWdlZF9zb2x1dGlvbmAgbWF5IGNvbnRhaW4gYXQgbW9zdCBbYENvbmZpZzo6TWluZXJQYWdlc2BdIHBhZ2VzLiBUaGV5IGFyZQ0BaW50ZXJwcmV0ZWQgYXMgbXNwIC0+IGxzcCwgYXMgcGVyIFtgY3JhdGU6OlBhbGxldDo6bXNwX3JhbmdlX2ZvcmBdLgBdAUZvciBleGFtcGxlLCBpZiBgUGFnZXMgPSA0YCwgYW5kIGBNaW5lclBhZ2VzID0gMmAsIG91ciBmdWxsIHNuYXBzaG90IHJhbmdlIHdvdWxkIGJlIFswLFUBMSwgMiwgM10sIHdpdGggMyBiZWluZyBtc3AuIEJ1dCwgaW4gdGhpcyBjYXNlLCB0aGVuIHRoZSBgcGFnZWRfcmF3X3NvbHV0aW9uLnBhZ2VzYCBpc9xleHBlY3RlZCB0byBjb3JyZXNwb25kIHRvIGBbc25hcHNob3QoMiksIHNuYXBzaG90KDMpXWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtEFDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sUdHlwZXNAUGFnZWRSYXdTb2x1dGlvbgQEVAAADAE4c29sdXRpb25fcGFnZXPVBQFIVmVjPFNvbHV0aW9uT2Y8VD4+AAEUc2NvcmXFBQE0RWxlY3Rpb25TY29yZQABFHJvdW5kOAEMdTMyAADVBQAAAtkFANkFDGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZRxzdGFraW5nVE5wb3NDb21wYWN0U29sdXRpb24xNgAAQAEYdm90ZXMx3QUAAAEYdm90ZXMy6QUAAAEYdm90ZXMz/QUAAAEYdm90ZXM0CQYAAAEYdm90ZXM1FQYAAAEYdm90ZXM2IQYAAAEYdm90ZXM3LQYAAAEYdm90ZXM4OQYAAAEYdm90ZXM5RQYAAAEcdm90ZXMxMFEGAAABHHZvdGVzMTFdBgAAARx2b3RlczEyaQYAAAEcdm90ZXMxM3UGAAABHHZvdGVzMTSBBgAAARx2b3RlczE1jQYAAAEcdm90ZXMxNpkGAAAA3QUAAALhBQDhBQAABAhk5QUA5QUAAAbtAwDpBQAAAu0FAO0FAAAEDGTxBeUFAPEFAAAECOUF9QUA9QUAAAb5BQD5BQw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzGFBlclUxNgAABADtAwEMdTE2AAD9BQAAAgEGAAEGAAAEDGQFBuUFAAUGAAADAgAAAPEFAAkGAAACDQYADQYAAAQMZBEG5QUAEQYAAAMDAAAA8QUAFQYAAAIZBgAZBgAABAxkHQblBQAdBgAAAwQAAADxBQAhBgAAAiUGACUGAAAEDGQpBuUFACkGAAADBQAAAPEFAC0GAAACMQYAMQYAAAQMZDUG5QUANQYAAAMGAAAA8QUAOQYAAAI9BgA9BgAABAxkQQblBQBBBgAAAwcAAADxBQBFBgAAAkkGAEkGAAAEDGRNBuUFAE0GAAADCAAAAPEFAFEGAAACVQYAVQYAAAQMZFkG5QUAWQYAAAMJAAAA8QUAXQYAAAJhBgBhBgAABAxkZQblBQBlBgAAAwoAAADxBQBpBgAAAm0GAG0GAAAEDGRxBuUFAHEGAAADCwAAAPEFAHUGAAACeQYAeQYAAAQMZH0G5QUAfQYAAAMMAAAA8QUAgQYAAAKFBgCFBgAABAxkiQblBQCJBgAAAw0AAADxBQCNBgAAApEGAJEGAAAEDGSVBuUFAJUGAAADDgAAAPEFAJkGAAACnQYAnQYAAAQMZKEG5QUAoQYAAAMPAAAA8QUApQYQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0EENhbGwEBFQAARQgcmVnaXN0ZXIEATRjbGFpbWVkX3Njb3JlxQUBNEVsZWN0aW9uU2NvcmUAAATEUmVnaXN0ZXIgb25lc2VsZiBmb3IgYW4gdXBjb21pbmcgc2lnbmVkIGVsZWN0aW9uLixzdWJtaXRfcGFnZQgBEHBhZ2U4ASRQYWdlSW5kZXgAAThtYXliZV9zb2x1dGlvbqkGAZxPcHRpb248Qm94PFNvbHV0aW9uT2Y8VDo6TWluZXJDb25maWc+Pj4AASCMU3VibWl0IGEgc2luZ2xlIHBhZ2Ugb2YgYSBzb2x1dGlvbi4AsE11c3QgYWx3YXlzIGNvbWUgYWZ0ZXIgW2BQYWxsZXQ6OnJlZ2lzdGVyYF0uAOBgbWF5YmVfc29sdXRpb25gIGNhbiBiZSBzZXQgdG8gYE5vbmVgIHRvIGVyYXNlIHRoZSBwYWdlLgA1AUNvbGxlY3RzIGRlcG9zaXRzIGZyb20gdGhlIHNpZ25lZCBvcmlnaW4gYmFzZWQgb24gW2BDb25maWc6OkRlcG9zaXRCYXNlYF0gYW5kbFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdLhBiYWlsAAIUVFJldHJhY3QgYSBzdWJtaXNzaW9uLgBNAUEgcG9ydGlvbiBvZiB0aGUgZGVwb3NpdCBtYXkgYmUgcmV0dXJuZWQsIGJhc2VkIG9uIHRoZSBbYENvbmZpZzo6RWplY3RHcmFjZVJhdGlvYF0uAMRUaGlzIHdpbGwgZnVsbHkgcmVtb3ZlIHRoZSBzb2x1dGlvbiBmcm9tIHN0b3JhZ2UuUGNsZWFyX29sZF9yb3VuZF9kYXRhCAEUcm91bmQ4AQx1MzIAATR3aXRuZXNzX3BhZ2VzOAEMdTMyAAMYwENsZWFyIHRoZSBkYXRhIG9mIGEgc3VibWl0dGVyIGZvcm0gYW4gb2xkIHJvdW5kLgAxAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkLCBhbmQgdGhlIG9yaWdpbmFsIHN1Ym1pdHRlci4AXQFUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBmb3Igc3VibWlzc2lvbnMgdGhhdCBlbmQgdXAgYmVpbmcgZGlzY2FyZGVkLCBhcyBpbiB0aGV5IGFyZSBub3TEcHJvY2Vzc2VkIGFuZCB0aGV5IGVuZCB1cCBsaW5nZXJpbmcgaW4gdGhlIHF1ZXVlLkRzZXRfaW52dWxuZXJhYmxlcwQBDGludmEBAURWZWM8VDo6QWNjb3VudElkPgAEDGhTZXQgdGhlIGludnVsbmVyYWJsZSBsaXN0LgARAURpc3BhdGNoIG9yaWdpbiBtdXN0IHRoZSB0aGUgc2FtZSBhcyBbYGNyYXRlOjpDb25maWc6OkFkbWluT3JpZ2luYF0uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLqkGBBhPcHRpb24EBFQB2QUBCBBOb25lAAAAEFNvbWUEANkFAAABAACtBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldBBDYWxsBARUAAGIEGJvbmQIARR2YWx1ZVUBATBCYWxhbmNlT2Y8VD4AARRwYXllZbEGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAAwYQFUYWtlIHRoZSBvcmlnaW4gYWNjb3VudCBhcyBhIHN0YXNoIGFuZCBsb2NrIHVwIGB2YWx1ZWAgb2YgaXRzIGJhbGFuY2UuIGBjb250cm9sbGVyYCB3aWxsgGJlIHRoZSBhY2NvdW50IHRoYXQgY29udHJvbHMgaXQuAC0BYHZhbHVlYCBtdXN0IGJlIG1vcmUgdGhhbiB0aGUgYG1pbmltdW1fYmFsYW5jZWAgc3BlY2lmaWVkIGJ5IGBUOjpDdXJyZW5jeWAuACEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoIGFjY291bnQuADxFbWl0cyBgQm9uZGVkYC4ATQFOT1RFOiBUd28gb2YgdGhlIHN0b3JhZ2Ugd3JpdGVzIChgU2VsZjo6Ym9uZGVkYCwgYFNlbGY6OnBheWVlYCkgYXJlIF9uZXZlcl8gY2xlYW5lZFkBdW5sZXNzIHRoZSBgb3JpZ2luYCBmYWxscyBiZWxvdyBfZXhpc3RlbnRpYWwgZGVwb3NpdF8gKG9yIGVxdWFsIHRvIDApIGFuZCBnZXRzIHJlbW92ZWQgYXMgZHVzdC4oYm9uZF9leHRyYQQBOG1heF9hZGRpdGlvbmFsVQEBMEJhbGFuY2VPZjxUPgABKGEBQWRkIHNvbWUgZXh0cmEgYW1vdW50IHRoYXQgaGF2ZSBhcHBlYXJlZCBpbiB0aGUgc3Rhc2ggYGZyZWVfYmFsYW5jZWAgaW50byB0aGUgYmFsYW5jZSB1cDBmb3Igc3Rha2luZy4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci4ATQFVc2UgdGhpcyBpZiB0aGVyZSBhcmUgYWRkaXRpb25hbCBmdW5kcyBpbiB5b3VyIHN0YXNoIGFjY291bnQgdGhhdCB5b3Ugd2lzaCB0byBib25kLlUBVW5saWtlIFtgYm9uZGBdKFNlbGY6OmJvbmQpIG9yIFtgdW5ib25kYF0oU2VsZjo6dW5ib25kKSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGltcG9zZbxhbnkgbGltaXRhdGlvbiBvbiB0aGUgYW1vdW50IHRoYXQgY2FuIGJlIGFkZGVkLgA8RW1pdHMgYEJvbmRlZGAuGHVuYm9uZAQBFHZhbHVlVQEBMEJhbGFuY2VPZjxUPgACTFEBU2NoZWR1bGUgYSBwb3J0aW9uIG9mIHRoZSBzdGFzaCB0byBiZSB1bmxvY2tlZCByZWFkeSBmb3IgdHJhbnNmZXIgb3V0IGFmdGVyIHRoZSBib25k/HBlcmlvZCBlbmRzLiBJZiB0aGlzIGxlYXZlcyBhbiBhbW91bnQgYWN0aXZlbHkgYm9uZGVkIGxlc3MgdGhhbiEBW2Bhc3NldDo6ZXhpc3RlbnRpYWxfZGVwb3NpdGBdLCB0aGVuIGl0IGlzIGluY3JlYXNlZCB0byB0aGUgZnVsbCBhbW91bnQuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAEUBT25jZSB0aGUgdW5sb2NrIHBlcmlvZCBpcyBkb25lLCB5b3UgY2FuIGNhbGwgYHdpdGhkcmF3X3VuYm9uZGVkYCB0byBhY3R1YWxseSBtb3ZlvHRoZSBmdW5kcyBvdXQgb2YgbWFuYWdlbWVudCByZWFkeSBmb3IgdHJhbnNmZXIuADEBTm8gbW9yZSB0aGFuIGEgbGltaXRlZCBudW1iZXIgb2YgdW5sb2NraW5nIGNodW5rcyAoc2VlIGBNYXhVbmxvY2tpbmdDaHVua3NgKUEBY2FuIGNvLWV4aXN0cyBhdCB0aGUgc2FtZSB0aW1lLiBJZiB0aGVyZSBhcmUgbm8gdW5sb2NraW5nIGNodW5rcyBzbG90cyBhdmFpbGFibGVFAVtgQ2FsbDo6d2l0aGRyYXdfdW5ib25kZWRgXSBpcyBjYWxsZWQgdG8gcmVtb3ZlIHNvbWUgb2YgdGhlIGNodW5rcyAoaWYgcG9zc2libGUpLgA5AUlmIGEgdXNlciBlbmNvdW50ZXJzIHRoZSBgSW5zdWZmaWNpZW50Qm9uZGAgZXJyb3Igd2hlbiBjYWxsaW5nIHRoaXMgZXh0cmluc2ljLBkBdGhleSBzaG91bGQgY2FsbCBgY2hpbGxgIGZpcnN0IGluIG9yZGVyIHRvIGZyZWUgdXAgdGhlaXIgYm9uZGVkIGZ1bmRzLgBERW1pdHMgYFVuYm9uZGVkYC4AlFNlZSBhbHNvIFtgQ2FsbDo6d2l0aGRyYXdfdW5ib25kZWRgXS5Ed2l0aGRyYXdfdW5ib25kZWQEAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIAA0wpAVJlbW92ZSBhbnkgc3Rha2UgdGhhdCBoYXMgYmVlbiBmdWxseSB1bmJvbmRlZCBhbmQgaXMgcmVhZHkgZm9yIHdpdGhkcmF3YWwuAFUBU3Rha2UgaXMgY29uc2lkZXJlZCBmdWxseSB1bmJvbmRlZCBvbmNlIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBoYXMgZWxhcHNlZCBzaW5jZV0BdGhlIHVuYm9uZGluZyB3YXMgaW5pdGlhdGVkLiBJbiByYXJlIGNhc2Vz4oCUc3VjaCBhcyB3aGVuIG9mZmVuY2VzIGZvciB0aGUgdW5ib25kZWQgZXJhVQFoYXZlIGJlZW4gcmVwb3J0ZWQgYnV0IG5vdCB5ZXQgcHJvY2Vzc2Vk4oCUd2l0aGRyYXdhbCBpcyByZXN0cmljdGVkIHRvIGVyYXMgZm9yIHdoaWNohGFsbCBvZmZlbmNlcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLgAlAVRoZSB1bmxvY2tlZCBzdGFrZSB3aWxsIGJlIHJldHVybmVkIGFzIGZyZWUgYmFsYW5jZSBpbiB0aGUgc3Rhc2ggYWNjb3VudC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlci4ASEVtaXRzIGBXaXRoZHJhd25gLgBoU2VlIGFsc28gW2BDYWxsOjp1bmJvbmRgXS4ANCMjIFBhcmFtZXRlcnMAWQEtIGBudW1fc2xhc2hpbmdfc3BhbnNgOiAqKkRlcHJlY2F0ZWQqKi4gUmV0YWluZWQgb25seSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eTsgdGhpc2ggIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0LiB2YWxpZGF0ZQQBFHByZWZztQYBOFZhbGlkYXRvclByZWZzAAQU5ERlY2xhcmUgdGhlIGRlc2lyZSB0byB2YWxpZGF0ZSBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guIG5vbWluYXRlBAEcdGFyZ2V0c70GAWRWZWM8QWNjb3VudElkTG9va3VwT2Y8VD4+AAUUDQFEZWNsYXJlIHRoZSBkZXNpcmUgdG8gbm9taW5hdGUgYHRhcmdldHNgIGZvciB0aGUgb3JpZ2luIGNvbnRyb2xsZXIuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4UY2hpbGwABijERGVjbGFyZSBubyBkZXNpcmUgdG8gZWl0aGVyIHZhbGlkYXRlIG9yIG5vbWluYXRlLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guADQjIyBDb21wbGV4aXR55C0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LlAtIENvbnRhaW5zIG9uZSByZWFkLsQtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuJHNldF9wYXllZQQBFHBheWVlsQYBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4ABxS0KFJlLSlzZXQgdGhlIHBheW1lbnQgdGFyZ2V0IGZvciBhIGNvbnRyb2xsZXIuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guOHNldF9jb250cm9sbGVyAAggRQEoUmUtKXNldHMgdGhlIGNvbnRyb2xsZXIgb2YgYSBzdGFzaCB0byB0aGUgc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uIHByZXZpb3VzbHlNAWFjY2VwdGVkIGEgYGNvbnRyb2xsZXJgIGFyZ3VtZW50IHRvIHNldCB0aGUgY29udHJvbGxlciB0byBhbiBhY2NvdW50IG90aGVyIHRoYW4gdGhlWQFzdGFzaCBpdHNlbGYuIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgbm93IGJlZW4gcmVtb3ZlZCwgbm93IG9ubHkgc2V0dGluZyB0aGUgY29udHJvbGxlcox0byB0aGUgc3Rhc2gsIGlmIGl0IGlzIG5vdCBhbHJlYWR5LgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCwgbm90IHRoZSBjb250cm9sbGVyLkxzZXRfdmFsaWRhdG9yX2NvdW50BAEMbmV3ZAEMdTMyAAkMkFNldHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuYGluY3JlYXNlX3ZhbGlkYXRvcl9jb3VudAQBKGFkZGl0aW9uYWxkAQx1MzIAChDoSW5jcmVtZW50cyB0aGUgaWRlYWwgbnVtYmVyIG9mIHZhbGlkYXRvcnMgdXAgdG8gbWF4aW11bSBvZlRgVDo6TWF4VmFsaWRhdG9yU2V0YC4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LlRzY2FsZV92YWxpZGF0b3JfY291bnQEARhmYWN0b3LBBgEcUGVyY2VudAALEBEBU2NhbGUgdXAgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIGJ5IGEgZmFjdG9yIHVwIHRvIG1heGltdW0gb2ZUYFQ6Ok1heFZhbGlkYXRvclNldGAuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC40Zm9yY2Vfbm9fZXJhcwAMJKxGb3JjZSB0aGVyZSB0byBiZSBubyBuZXcgZXJhcyBpbmRlZmluaXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS45AVRodXMgdGhlIGVsZWN0aW9uIHByb2Nlc3MgbWF5IGJlIG9uZ29pbmcgd2hlbiB0aGlzIGlzIGNhbGxlZC4gSW4gdGhpcyBjYXNlIHRoZdxlbGVjdGlvbiB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBuZXh0IGVyYSBpcyB0cmlnZ2VyZWQuNGZvcmNlX25ld19lcmEADShJAUZvcmNlIHRoZXJlIHRvIGJlIGEgbmV3IGVyYSBhdCB0aGUgZW5kIG9mIHRoZSBuZXh0IHNlc3Npb24uIEFmdGVyIHRoaXMsIGl0IHdpbGwgYmWccmVzZXQgdG8gbm9ybWFsIChub24tZm9yY2VkKSBiZWhhdmlvdXIuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS5JAUlmIHRoaXMgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIGEgbmV3IGVyYSBpcyB0cmlnZ2VyZWQsIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBub3SMaGF2ZSBlbm91Z2ggYmxvY2tzIHRvIGdldCBhIHJlc3VsdC40Zm9yY2VfdW5zdGFrZQgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAA8gCQFGb3JjZSBhIGN1cnJlbnQgc3Rha2VyIHRvIGJlY29tZSBjb21wbGV0ZWx5IHVuc3Rha2VkLCBpbW1lZGlhdGVseS4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LjQjIyBQYXJhbWV0ZXJzALAtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IHRvIGJlIHVuc3Rha2VkLj0BLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFRoaXMgcGFyYW1ldGVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZKxjb21wYXRpYmlsaXR5LiBJdCBubyBsb25nZXIgaGFzIGFueSBlZmZlY3QuUGZvcmNlX25ld19lcmFfYWx3YXlzABAkAQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiBzZXNzaW9ucyBpbmRlZmluaXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS5JAUlmIHRoaXMgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIGEgbmV3IGVyYSBpcyB0cmlnZ2VyZWQsIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBub3SMaGF2ZSBlbm91Z2ggYmxvY2tzIHRvIGdldCBhIHJlc3VsdC5UY2FuY2VsX2RlZmVycmVkX3NsYXNoCAEMZXJhOAEgRXJhSW5kZXgAAUR2YWxpZGF0b3Jfc2xhc2hlc8UGAXBWZWM8KFQ6OkFjY291bnRJZCwgUGVyYmlsbCk+ABEsCQFDYW5jZWxzIHNjaGVkdWxlZCBzbGFzaGVzIGZvciBhIGdpdmVuIGVyYSBiZWZvcmUgdGhleSBhcmUgYXBwbGllZC4AYQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBgVDo6QWRtaW5PcmlnaW5gIHRvIGNhbmNlbCBwZW5kaW5nIHNsYXNoZXMgZm9yIHNwZWNpZmllZCB2YWxpZGF0b3JzSQFpbiBhIGdpdmVuIGVyYS4gVGhlIGNhbmNlbGxlZCBzbGFzaGVzIGFyZSBzdG9yZWQgYW5kIHdpbGwgYmUgY2hlY2tlZCB3aGVuIGFwcGx5aW5nIHNsYXNoZXMuADQjIyBQYXJhbWV0ZXJzVQEtIGBlcmFgOiBUaGUgc3Rha2luZyBlcmEgZm9yIHdoaWNoIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZC4gVGhpcyBpcyB0aGUgZXJhIHdoZXJlNQEgIHRoZSBzbGFzaCB3b3VsZCBiZSBhcHBsaWVkLCBub3QgdGhlIGVyYSBpbiB3aGljaCB0aGUgb2ZmZW5jZSB3YXMgY29tbWl0dGVkLlkBLSBgdmFsaWRhdG9yX3NsYXNoZXNgOiBBIGxpc3Qgb2YgdmFsaWRhdG9yIHN0YXNoIGFjY291bnRzIGFuZCB0aGVpciBzbGFzaCBmcmFjdGlvbnMgdG88ICBiZSBjYW5jZWxsZWQuOHBheW91dF9zdGFrZXJzCAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEMZXJhOAEgRXJhSW5kZXgAEjQZAVBheSBvdXQgbmV4dCBwYWdlIG9mIHRoZSBzdGFrZXJzIGJlaGluZCBhIHZhbGlkYXRvciBmb3IgdGhlIGdpdmVuIGVyYS4A6C0gYHZhbGlkYXRvcl9zdGFzaGAgaXMgdGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvci4xAS0gYGVyYWAgbWF5IGJlIGFueSBlcmEgYmV0d2VlbiBgW2N1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aDsgY3VycmVudF9lcmFdYC4AVQFUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBBbnkgYWNjb3VudCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBldmVuIGlmdGl0IGlzIG5vdCBvbmUgb2YgdGhlIHN0YWtlcnMuAEkBVGhlIHJld2FyZCBwYXlvdXQgY291bGQgYmUgcGFnZWQgaW4gY2FzZSB0aGVyZSBhcmUgdG9vIG1hbnkgbm9taW5hdG9ycyBiYWNraW5nIHRoZV0BYHZhbGlkYXRvcl9zdGFzaGAuIFRoaXMgY2FsbCB3aWxsIHBheW91dCB1bnBhaWQgcGFnZXMgaW4gYW4gYXNjZW5kaW5nIG9yZGVyLiBUbyBjbGFpbSBhtHNwZWNpZmljIHBhZ2UsIHVzZSBgcGF5b3V0X3N0YWtlcnNfYnlfcGFnZWAuYADwSWYgYWxsIHBhZ2VzIGFyZSBjbGFpbWVkLCBpdCByZXR1cm5zIGFuIGVycm9yIGBJbnZhbGlkUGFnZWAuGHJlYm9uZAQBFHZhbHVlVQEBMEJhbGFuY2VPZjxUPgATDNxSZWJvbmQgYSBwb3J0aW9uIG9mIHRoZSBzdGFzaCBzY2hlZHVsZWQgdG8gYmUgdW5sb2NrZWQuANRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBjb250cm9sbGVyLihyZWFwX3N0YXNoCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIAFGBdAVJlbW92ZSBhbGwgZGF0YSBzdHJ1Y3R1cmVzIGNvbmNlcm5pbmcgYSBzdGFrZXIvc3Rhc2ggb25jZSBpdCBpcyBhdCBhIHN0YXRlIHdoZXJlIGl0IGNhbgUBYmUgY29uc2lkZXJlZCBgZHVzdGAgaW4gdGhlIHN0YWtpbmcgc3lzdGVtLiBUaGUgcmVxdWlyZW1lbnRzIGFyZToAFQExLiB0aGUgYHRvdGFsX2JhbGFuY2VgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC4hATIuIG9yLCB0aGUgYGxlZGdlci50b3RhbGAgb2YgdGhlIHN0YXNoIGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LgBVAVRoZSBmb3JtZXIgY2FuIGhhcHBlbiBpbiBjYXNlcyBsaWtlIGEgc2xhc2g7IHRoZSBsYXR0ZXIgd2hlbiBhIGZ1bGx5IHVuYm9uZGVkIGFjY291bnQJAWlzIHN0aWxsIHJlY2VpdmluZyBzdGFraW5nIHJld2FyZHMgaW4gYFJld2FyZERlc3RpbmF0aW9uOjpTdGFrZWRgLgBFAVRoZSBnYXRlIGlzIGludGVudGlvbmFsbHkgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYW5kICpub3QqIGBtaW5fY2hpbGxlZF9ib25kYDogYVUBZ292ZXJuYW5jZSBjaGFuZ2UgdG8gYE1pblZhbGlkYXRvckJvbmRgIC8gYE1pbk5vbWluYXRvckJvbmRgIG11c3Qgbm90IHR1cm4gcHJldmlvdXNseUkBc2FmZSBzdGFzaGVzIGludG8gcGVybWlzc2lvbmxlc3NseSByZWFwYWJsZSBvbmVzLiBBY2NvdW50cyB0aGF0IGZhbGwgYmVsb3cgdGhlIG5ld1UBbWluaW11bXMgYWZ0ZXIgc3VjaCBhIGNoYW5nZSBzaG91bGQgYmUgYGNoaWxsX290aGVyYC1lZCAod2hpY2ggaGFzIGEgZGVuc2l0eSBnYXRlIGFuZKRkb2VzIG5vdCBkZXN0cm95IHRoZSBsZWRnZXIpLCBub3QgcmVhcGVkLgAxAUl0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLCBhcyBsb25nIGFzIGBzdGFzaGAgbWVldHMgdGhlIGFib3ZlIHJlcXVpcmVtZW50cy4A3FJlZnVuZHMgdGhlIHRyYW5zYWN0aW9uIGZlZXMgdXBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbi4ANCMjIFBhcmFtZXRlcnMAqC0gYHN0YXNoYDogVGhlIHN0YXNoIGFjY291bnQgdG8gYmUgcmVhcGVkLj0BLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFRoaXMgcGFyYW1ldGVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZKxjb21wYXRpYmlsaXR5LiBJdCBubyBsb25nZXIgaGFzIGFueSBlZmZlY3QuEGtpY2sEAQx3aG+9BgFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAVLOBSZW1vdmUgdGhlIGdpdmVuIG5vbWluYXRpb25zIGZyb20gdGhlIGNhbGxpbmcgdmFsaWRhdG9yLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAE0BLSBgd2hvYDogQSBsaXN0IG9mIG5vbWluYXRvciBzdGFzaCBhY2NvdW50cyB3aG8gYXJlIG5vbWluYXRpbmcgdGhpcyB2YWxpZGF0b3Igd2hpY2jAICBzaG91bGQgbm8gbG9uZ2VyIGJlIG5vbWluYXRpbmcgdGhpcyB2YWxpZGF0b3IuAFUBTm90ZTogTWFraW5nIHRoaXMgY2FsbCBvbmx5IG1ha2VzIHNlbnNlIGlmIHlvdSBmaXJzdCBzZXQgdGhlIHZhbGlkYXRvciBwcmVmZXJlbmNlcyB0b3hibG9jayBhbnkgZnVydGhlciBub21pbmF0aW9ucy5Mc2V0X3N0YWtpbmdfY29uZmlncyABSG1pbl9ub21pbmF0b3JfYm9uZM0GAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFIbWluX3ZhbGlkYXRvcl9ib25kzQYBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAUxtYXhfbm9taW5hdG9yX2NvdW500QYBNENvbmZpZ09wPHUzMj4AAUxtYXhfdmFsaWRhdG9yX2NvdW500QYBNENvbmZpZ09wPHUzMj4AATxjaGlsbF90aHJlc2hvbGTVBgFEQ29uZmlnT3A8UGVyY2VudD4AAThtaW5fY29tbWlzc2lvbtkGAURDb25maWdPcDxQZXJiaWxsPgABSG1heF9zdGFrZWRfcmV3YXJkc9UGAURDb25maWdPcDxQZXJjZW50PgABYGFyZV9ub21pbmF0b3JzX3NsYXNoYWJsZd0GAThDb25maWdPcDxib29sPgAWRKxVcGRhdGUgdGhlIHZhcmlvdXMgc3Rha2luZyBjb25maWd1cmF0aW9ucyAuACUBKiBgbWluX25vbWluYXRvcl9ib25kYDogVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgbmVlZGVkIHRvIGJlIGEgbm9taW5hdG9yLiUBKiBgbWluX3ZhbGlkYXRvcl9ib25kYDogVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgbmVlZGVkIHRvIGJlIGEgdmFsaWRhdG9yLlUBKiBgbWF4X25vbWluYXRvcl9jb3VudGA6IFRoZSBtYXggbnVtYmVyIG9mIHVzZXJzIHdobyBjYW4gYmUgYSBub21pbmF0b3IgYXQgb25jZS4gV2hlbpggIHNldCB0byBgTm9uZWAsIG5vIGxpbWl0IGlzIGVuZm9yY2VkLlUBKiBgbWF4X3ZhbGlkYXRvcl9jb3VudGA6IFRoZSBtYXggbnVtYmVyIG9mIHVzZXJzIHdobyBjYW4gYmUgYSB2YWxpZGF0b3IgYXQgb25jZS4gV2hlbpggIHNldCB0byBgTm9uZWAsIG5vIGxpbWl0IGlzIGVuZm9yY2VkLlkBKiBgY2hpbGxfdGhyZXNob2xkYDogVGhlIHJhdGlvIG9mIGBtYXhfbm9taW5hdG9yX2NvdW50YCBvciBgbWF4X3ZhbGlkYXRvcl9jb3VudGAgd2hpY2gZASAgc2hvdWxkIGJlIGZpbGxlZCBpbiBvcmRlciBmb3IgdGhlIGBjaGlsbF9vdGhlcmAgdHJhbnNhY3Rpb24gdG8gd29yay5hASogYG1pbl9jb21taXNzaW9uYDogVGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCBlYWNoIHZhbGlkYXRvcnMgbXVzdCBtYWludGFpbi5VASAgVGhpcyBpcyBjaGVja2VkIG9ubHkgdXBvbiBjYWxsaW5nIGB2YWxpZGF0ZWAuIEV4aXN0aW5nIHZhbGlkYXRvcnMgYXJlIG5vdCBhZmZlY3RlZC4AxFJ1bnRpbWVPcmlnaW4gbXVzdCBiZSBSb290IHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4ANQFOT1RFOiBFeGlzdGluZyBub21pbmF0b3JzIGFuZCB2YWxpZGF0b3JzIHdpbGwgbm90IGJlIGFmZmVjdGVkIGJ5IHRoaXMgdXBkYXRlLhEBdG8ga2ljayBwZW9wbGUgdW5kZXIgdGhlIG5ldyBsaW1pdHMsIGBjaGlsbF9vdGhlcmAgc2hvdWxkIGJlIGNhbGxlZC4sY2hpbGxfb3RoZXIEARRzdGFzaAQBMFQ6OkFjY291bnRJZAAXaEEBRGVjbGFyZSBhIGBjb250cm9sbGVyYCB0byBzdG9wIHBhcnRpY2lwYXRpbmcgYXMgZWl0aGVyIGEgdmFsaWRhdG9yIG9yIG5vbWluYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBBAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLCBidXQgY2FuIGJlIGNhbGxlZCBieSBhbnlvbmUuAFkBSWYgdGhlIGNhbGxlciBpcyB0aGUgc2FtZSBhcyB0aGUgY29udHJvbGxlciBiZWluZyB0YXJnZXRlZCwgdGhlbiBubyBmdXJ0aGVyIGNoZWNrcyBhcmXYZW5mb3JjZWQsIGFuZCB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMganVzdCBsaWtlIGBjaGlsbGAuAF0BSWYgdGhlIGNhbGxlciBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgY29udHJvbGxlciBiZWluZyB0YXJnZXRlZCwgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zMG11c3QgYmUgbWV0OgAdASogYGNvbnRyb2xsZXJgIG11c3QgYmVsb25nIHRvIGEgbm9taW5hdG9yIHdobyBoYXMgYmVjb21lIG5vbi1kZWNvZGFibGUsAAxPcjoAPQEqIEEgYENoaWxsVGhyZXNob2xkYCBtdXN0IGJlIHNldCBhbmQgY2hlY2tlZCB3aGljaCBkZWZpbmVzIGhvdyBjbG9zZSB0byB0aGUgbWF4VQEgIG5vbWluYXRvcnMgb3IgdmFsaWRhdG9ycyB3ZSBtdXN0IHJlYWNoIGJlZm9yZSB1c2VycyBjYW4gc3RhcnQgY2hpbGxpbmcgb25lLWFub3RoZXIuWQEqIEEgYE1heE5vbWluYXRvckNvdW50YCBhbmQgYE1heFZhbGlkYXRvckNvdW50YCBtdXN0IGJlIHNldCB3aGljaCBpcyB1c2VkIHRvIGRldGVybWluZZAgIGhvdyBjbG9zZSB3ZSBhcmUgdG8gdGhlIHRocmVzaG9sZC5dASogQSBgTWluTm9taW5hdG9yQm9uZGAgYW5kIGBNaW5WYWxpZGF0b3JCb25kYCBtdXN0IGJlIHNldCBhbmQgY2hlY2tlZCwgd2hpY2ggZGV0ZXJtaW5lc1EBICBpZiB0aGlzIGlzIGEgcGVyc29uIHRoYXQgc2hvdWxkIGJlIGNoaWxsZWQgYmVjYXVzZSB0aGV5IGhhdmUgbm90IG1ldCB0aGUgdGhyZXNob2xkQCAgYm9uZCByZXF1aXJlZC4AVQFUaGlzIGNhbiBiZSBoZWxwZnVsIGlmIGJvbmQgcmVxdWlyZW1lbnRzIGFyZSB1cGRhdGVkLCBhbmQgd2UgbmVlZCB0byByZW1vdmUgb2xkIHVzZXJzmHdobyBkbyBub3Qgc2F0aXNmeSB0aGVzZSByZXF1aXJlbWVudHMuaGZvcmNlX2FwcGx5X21pbl9jb21taXNzaW9uBAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkABgQOQFDbGFtcHMgYSB2YWxpZGF0b3IncyBjb21taXNzaW9uIHRvIHRoZSBgW01pbkNvbW1pc3Npb24sIE1heENvbW1pc3Npb25dYCByYW5nZS4AOQFOYW1lZCBgZm9yY2VfYXBwbHlfbWluX2NvbW1pc3Npb25gIGZvciBsZWdhY3kgcmVhc29ucyDigJQgaXQgYWxzbyBlbmZvcmNlcyB0aGWMbWF4aW11bS4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcy5Ic2V0X21pbl9jb21taXNzaW9uBAEMbmV3oQEBHFBlcmJpbGwAGRAlAVNldHMgdGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCBlYWNoIHZhbGlkYXRvcnMgbXVzdCBtYWludGFpbi4AWQFUaGlzIGNhbGwgaGFzIGxvd2VyIHByaXZpbGVnZSByZXF1aXJlbWVudHMgdGhhbiBgc2V0X3N0YWtpbmdfY29uZmlnYCBhbmQgY2FuIGJlIGNhbGxlZMxieSB0aGUgYFQ6OkFkbWluT3JpZ2luYC4gUm9vdCBjYW4gYWx3YXlzIGNhbGwgdGhpcy5YcGF5b3V0X3N0YWtlcnNfYnlfcGFnZQwBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4AAEQcGFnZTgBEFBhZ2UAGlQxAVBheSBvdXQgYSBwYWdlIG9mIHRoZSBzdGFrZXJzIGJlaGluZCBhIHZhbGlkYXRvciBmb3IgdGhlIGdpdmVuIGVyYSBhbmQgcGFnZS4A6C0gYHZhbGlkYXRvcl9zdGFzaGAgaXMgdGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvci4xAS0gYGVyYWAgbWF5IGJlIGFueSBlcmEgYmV0d2VlbiBgW2N1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aDsgY3VycmVudF9lcmFdYC4xAS0gYHBhZ2VgIGlzIHRoZSBwYWdlIGluZGV4IG9mIG5vbWluYXRvcnMgdG8gcGF5IG91dCB3aXRoIHZhbHVlIGJldHdlZW4gMCBhbmSwICBgbnVtX25vbWluYXRvcnMgLyBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplYC4AVQFUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBBbnkgYWNjb3VudCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBldmVuIGlmdGl0IGlzIG5vdCBvbmUgb2YgdGhlIHN0YWtlcnMuAD0BSWYgYSB2YWxpZGF0b3IgaGFzIG1vcmUgdGhhbiBbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWBdIG5vbWluYXRvcnMgYmFja2luZykBdGhlbSwgdGhlbiB0aGUgbGlzdCBvZiBub21pbmF0b3JzIGlzIHBhZ2VkLCB3aXRoIGVhY2ggcGFnZSBiZWluZyBjYXBwZWQgYXRVAVtgQ29uZmlnOjpNYXhFeHBvc3VyZVBhZ2VTaXplYF0uIElmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gb25lIHBhZ2Ugb2Ygbm9taW5hdG9ycyxJAXRoZSBjYWxsIG5lZWRzIHRvIGJlIG1hZGUgZm9yIGVhY2ggcGFnZSBzZXBhcmF0ZWx5IGluIG9yZGVyIGZvciBhbGwgdGhlIG5vbWluYXRvcnNVAWJhY2tpbmcgYSB2YWxpZGF0b3IgdG8gcmVjZWl2ZSB0aGUgcmV3YXJkLiBUaGUgbm9taW5hdG9ycyBhcmUgbm90IHNvcnRlZCBhY3Jvc3MgcGFnZXNhAWFuZCBzbyBpdCBzaG91bGQgbm90IGJlIGFzc3VtZWQgdGhlIGhpZ2hlc3Qgc3Rha2VyIHdvdWxkIGJlIG9uIHRoZSB0b3Btb3N0IHBhZ2UgYW5kIHZpY2VJAXZlcnNhLiBJZiByZXdhcmRzIGFyZSBub3QgY2xhaW1lZCBpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcywgdGhleSBhcmUgbG9zdC4ASQFUaGUgdmFsaWRhdG9yJ3Mgb3duIHJld2FyZCAoY29tbWlzc2lvbiArIG93bi1zdGFrZSBzaGFyZSkgaXMgcHJvcmF0ZWQgYWNyb3NzIHBhZ2VzSQFwcm9wb3J0aW9uYWwgdG8gZWFjaCBwYWdlJ3Mgc3Rha2UuIFRoZSBmdWxsIHZhbGlkYXRvciByZXdhcmQgaXMgdGhlIHN1bSBhY3Jvc3MgYWxsGHBhZ2VzLjB1cGRhdGVfcGF5ZWUEAShjb250cm9sbGVyBAEwVDo6QWNjb3VudElkABsY4E1pZ3JhdGVzIGFuIGFjY291bnQncyBgUmV3YXJkRGVzdGluYXRpb246OkNvbnRyb2xsZXJgIHRvpGBSZXdhcmREZXN0aW5hdGlvbjo6QWNjb3VudChjb250cm9sbGVyKWAuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuADEBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgdGhlIGBwYXllZWAgaXMgc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkLmhkZXByZWNhdGVfY29udHJvbGxlcl9iYXRjaAQBLGNvbnRyb2xsZXJz4QYB9EJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhDb250cm9sbGVyc0luRGVwcmVjYXRpb25CYXRjaD4AHBxdAVVwZGF0ZXMgYSBiYXRjaCBvZiBjb250cm9sbGVyIGFjY291bnRzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3Rhc2ggYWNjb3VudCBpZiB0aGV5IGFyZWEBbm90IHRoZSBzYW1lLiBJZ25vcmVzIGFueSBjb250cm9sbGVyIGFjY291bnRzIHRoYXQgZG8gbm90IGV4aXN0LCBhbmQgZG9lcyBub3Qgb3BlcmF0ZSBpZrh0aGUgc3Rhc2ggYW5kIGNvbnRyb2xsZXIgYXJlIGFscmVhZHkgdGhlIHNhbWUuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuALRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgYFQ6OkFkbWluT3JpZ2luYC44cmVzdG9yZV9sZWRnZXIQARRzdGFzaAQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbnRyb2xsZXKRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASxtYXliZV90b3RhbEkEAVBPcHRpb248QmFsYW5jZU9mPFQ+PgABPG1heWJlX3VubG9ja2luZ+UGARUBT3B0aW9uPEJvdW5kZWRWZWM8VW5sb2NrQ2h1bms8QmFsYW5jZU9mPFQ+PiwgVDo6Ck1heFVubG9ja2luZ0NodW5rcz4+AB0sBQFSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYSBsZWRnZXIgd2hpY2ggaXMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLgDcVGhlIHJlcXVpcmVtZW50cyB0byByZXN0b3JlIGEgbGVkZ2VyIGFyZSB0aGUgZm9sbG93aW5nOmQqIFRoZSBzdGFzaCBpcyBib25kZWQ7IG9yDQEqIFRoZSBzdGFzaCBpcyBub3QgYm9uZGVkIGJ1dCBpdCBoYXMgYSBzdGFraW5nIGxvY2sgbGVmdCBiZWhpbmQ7IG9yJQEqIElmIHRoZSBzdGFzaCBoYXMgYW4gYXNzb2NpYXRlZCBsZWRnZXIgYW5kIGl0cyBzdGF0ZSBpcyBpbmNvbnNpc3RlbnQ7IG9yHQEqIElmIHRoZSBsZWRnZXIgaXMgbm90IGNvcnJ1cHRlZCAqYnV0KiBpdHMgc3Rha2luZyBsb2NrIGlzIG91dCBvZiBzeW5jLgBhAVRoZSBgbWF5YmVfKmAgaW5wdXQgcGFyYW1ldGVycyB3aWxsIG92ZXJ3cml0ZSB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGFuZCBtZXRhZGF0YSBvZiB0aGVZAWxlZGdlciBhc3NvY2lhdGVkIHdpdGggdGhlIHN0YXNoLiBJZiB0aGUgaW5wdXQgcGFyYW1ldGVycyBhcmUgbm90IHNldCwgdGhlIGxlZGdlciB3aWxskGJlIHJlc2V0IHZhbHVlcyBmcm9tIG9uLWNoYWluIHN0YXRlLkBtaWdyYXRlX2N1cnJlbmN5BAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAHhzYTWlncmF0ZXMgcGVybWlzc2lvbmxlc3NseSBhIHN0YXNoIGZyb20gbG9ja3MgdG8gaG9sZHMuAEkBVGhpcyByZW1vdmVzIHRoZSBvbGQgbG9jayBvbiB0aGUgc3Rha2UgYW5kIGNyZWF0ZXMgYSBob2xkIG9uIGl0IGF0b21pY2FsbHkuIElmIGFsbGEBc3Rha2UgY2Fubm90IGJlIGhlbGQsIHRoZSBiZXN0IGVmZm9ydCBpcyBtYWRlIHRvIGhvbGQgYXMgbXVjaCBhcyBwb3NzaWJsZS4gVGhlIHJlbWFpbmluZ4RzdGFrZSBpcyByZW1vdmVkIGZyb20gdGhlIGxlZGdlci4AxFRoZSBmZWUgaXMgd2FpdmVkIGlmIHRoZSBtaWdyYXRpb24gaXMgc3VjY2Vzc2Z1bC4sYXBwbHlfc2xhc2gIASRzbGFzaF9lcmE4ASBFcmFJbmRleAABJHNsYXNoX2tlefUGAXAoVDo6QWNjb3VudElkLCBQZXJiaWxsLCB1MzIpAB+IHQFNYW51YWxseSBhbmQgcGVybWlzc2lvbmxlc3NseSBhcHBsaWVzIGEgZGVmZXJyZWQgc2xhc2ggZm9yIGEgZ2l2ZW4gZXJhLgBdAU5vcm1hbGx5LCBzbGFzaGVzIGFyZSBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgc2hvcnRseSBhZnRlciB0aGUgc3RhcnQgb2YgdGhlIGBzbGFzaF9lcmFgLlkBVGhlIGF1dG9tYXRpYyBhcHBsaWNhdGlvbiBvZiBzbGFzaGVzIGlzIGhhbmRsZWQgYnkgdGhlIHBhbGxldCdzIGludGVybmFsIGxvZ2ljLCBhbmQgaXTMdHJpZXMgdG8gYXBwbHkgb25lIHNsYXNoIHBhZ2UgcGVyIGJsb2NrIG9mIHRoZSBlcmEuVQFJZiBmb3Igc29tZSByZWFzb24sIG9uZSBlcmEgaXMgbm90IGVub3VnaCBmb3IgYXBwbHlpbmcgYWxsIHNsYXNoIHBhZ2VzLCB0aGUgcmVtYWluaW5n3HNsYXNoZXMgbmVlZCB0byBiZSBtYW51YWxseSAocGVybWlzc2lvbmxlc3NseSkgYXBwbGllZC4ASQFGb3IgYSBnaXZlbiBlcmEgeCwgaWYgYXQgZXJhIHgrMSwgc2xhc2hlcyBhcmUgc3RpbGwgdW5hcHBsaWVkLCBhbGwgd2l0aGRyYXdhbHMgZ2V0IQFibG9ja2VkLCBhbmQgdGhlc2UgbmVlZCB0byBiZSBtYW51YWxseSBhcHBsaWVkIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5NAVRoaXMgZnVuY3Rpb24gZXhpc3RzIGFzIGEgKipmYWxsYmFjayBtZWNoYW5pc20qKiBmb3IgdGhpcyBleHRyZW1lIHNpdHVhdGlvbiwgYnV0IHdlzG5ldmVyIGV4cGVjdCB0byBlbmNvdW50ZXIgdGhpcyBpbiBub3JtYWwgc2NlbmFyaW9zLgBhAVRoZSBwYXJhbWV0ZXJzIGZvciB0aGlzIGNhbGwgY2FuIGJlIHF1ZXJpZWQgYnkgbG9va2luZyBhdCB0aGUgYFVuYXBwbGllZFNsYXNoZXNgIHN0b3JhZ2WMZm9yIGVyYXMgb2xkZXIgdGhhbiB0aGUgYWN0aXZlIGVyYS4ANCMjIFBhcmFtZXRlcnNVAS0gYHNsYXNoX2VyYWA6IFRoZSBhcHBsaWNhdGlvbiBlcmEgKGBvZmZlbmNlX2VyYSArIFNsYXNoRGVmZXJEdXJhdGlvbmApLCBpLmUuIHRoZSBrZXlwICBpbnRvIFtgVW5hcHBsaWVkU2xhc2hlc2BdLiUBLSBgc2xhc2hfa2V5YDogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHNsYXNoLCByZXByZXNlbnRlZCBhcyBhIHR1cGxlOvggIC0gYHN0YXNoYDogVGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvciBiZWluZyBzbGFzaGVkLgUBICAtIGBzbGFzaF9mcmFjdGlvbmA6IFRoZSBmcmFjdGlvbiBvZiB0aGUgc3Rha2UgdGhhdCB3YXMgc2xhc2hlZC4FASAgLSBgcGFnZV9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgZXhwb3N1cmUgcGFnZSBiZWluZyBwcm9jZXNzZWQuACwjIyBCZWhhdmlvcugtIFRoZSBmdW5jdGlvbiBpcyAqKnBlcm1pc3Npb25sZXNzKirigJRhbnlvbmUgY2FuIGNhbGwgaXQu8C0gVGhlIGBzbGFzaF9lcmFgICoqbXVzdCBiZSB0aGUgY3VycmVudCBlcmEgb3IgYSBwYXN0IGVyYSoqLmxJZiBpdCBpcyBpbiB0aGUgZnV0dXJlLCB0aGWIICBjYWxsIGZhaWxzIHdpdGggYEVyYU5vdFN0YXJ0ZWRgLuQtIFRoZSBmZWUgaXMgd2FpdmVkIGlmIHRoZSBzbGFzaCBpcyBzdWNjZXNzZnVsbHkgYXBwbGllZC4AVCMjIEZ1dHVyZSBJbXByb3ZlbWVudGEBLSBJbXBsZW1lbnQgYW4gKipvZmYtY2hhaW4gd29ya2VyIChPQ1cpIHRhc2sqKiB0byBhdXRvbWF0aWNhbGx5IGFwcGx5IHNsYXNoZXMgd2hlbiB0aGVyZbggIGlzIHVudXNlZCBibG9jayBzcGFjZSwgaW1wcm92aW5nIGVmZmljaWVuY3kuOHBydW5lX2VyYV9zdGVwBAEMZXJhOAEgRXJhSW5kZXgAICxhAVBlcmZvcm0gb25lIHN0ZXAgb2YgZXJhIHBydW5pbmcgdG8gcHJldmVudCBQb1Ygc2l6ZSBleGhhdXN0aW9uIGZyb20gdW5ib3VuZGVkIGRlbGV0aW9ucy4AMQFUaGlzIGV4dHJpbnNpYyBlbmFibGVzIHBlcm1pc3Npb25sZXNzIGxhenkgcHJ1bmluZyBvZiBlcmEgZGF0YSBieSBwZXJmb3JtaW5nLQFpbmNyZW1lbnRhbCBkZWxldGlvbiBvZiBzdG9yYWdlIGl0ZW1zLiBFYWNoIGNhbGwgcHJvY2Vzc2VzIGEgbGltaXRlZCBudW1iZXIlAW9mIGl0ZW1zIGJhc2VkIG9uIGF2YWlsYWJsZSBibG9jayB3ZWlnaHQgdG8gYXZvaWQgZXhjZWVkaW5nIGJsb2NrIGxpbWl0cy4ANQFSZXR1cm5zIGBQYXlzOjpOb2Agd2hlbiB3b3JrIGlzIHBlcmZvcm1lZCB0byBpbmNlbnRpdml6ZSByZWd1bGFyIG1haW50ZW5hbmNlLgUBQW55b25lIGNhbiBjYWxsIHRoaXMgdG8gaGVscCBtYWludGFpbiB0aGUgY2hhaW4ncyBzdG9yYWdlIGhlYWx0aC4ADQFUaGUgZXJhIG11c3QgYmUgZWxpZ2libGUgZm9yIHBydW5pbmcgKG9sZGVyIHRoYW4gSGlzdG9yeURlcHRoICsgMSkuOQFDaGVjayBgRXJhUHJ1bmluZ1N0YXRlYCBzdG9yYWdlIHRvIHNlZSBpZiBhbiBlcmEgbmVlZHMgcHJ1bmluZyBiZWZvcmUgY2FsbGluZy5Ic2V0X21heF9jb21taXNzaW9uBAEMbmV3oQEBHFBlcmJpbGwAIQzQU2V0cyB0aGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAupHNldF92YWxpZGF0b3Jfc2VsZl9zdGFrZV9pbmNlbnRpdmVfY29uZmlnDAFIb3B0aW11bV9zZWxmX3N0YWtlzQYBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAUxoYXJkX2NhcF9zZWxmX3N0YWtlzQYBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAVxzZWxmX3N0YWtlX3Nsb3BlX2ZhY3RvctkGAURDb25maWdPcDxQZXJiaWxsPgAiFOBDb25maWd1cmUgdGhlIHZhbGlkYXRvciBzZWxmLXN0YWtlIGluY2VudGl2ZSBwYXJhbWV0ZXJzLgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAuAAEBQ2hhbmdlcyB0YWtlIGVmZmVjdCBpbiB0aGUgbmV4dCBlcmEgd2hlbiByZXdhcmRzIGFyZSBjYWxjdWxhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6xBghQcGFsbGV0X3N0YWtpbmdfYXN5bmNEUmV3YXJkRGVzdGluYXRpb24EJEFjY291bnRJZAEEARQYU3Rha2VkAAAAFFN0YXNoAAEAKENvbnRyb2xsZXIAAgAcQWNjb3VudAQABAEkQWNjb3VudElkAAMAEE5vbmUABAAAtQYIUHBhbGxldF9zdGFraW5nX2FzeW5jOFZhbGlkYXRvclByZWZzAAAIAShjb21taXNzaW9uuQYBHFBlcmJpbGwAARxibG9ja2VkXQEBEGJvb2wAALkGAAAGoQEAvQYAAAIAAMEGDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyY2VudAAABAAMAQh1OAAAxQYAAALJBgDJBgAABAgEoQEAzQYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBWQEBDBBOb29wAAAADFNldAQAWQEBBFQAAQAYUmVtb3ZlAAIAANEGEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAA1QYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBwQYBDBBOb29wAAAADFNldAQAwQYBBFQAAQAYUmVtb3ZlAAIAANkGEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAaEBAQwQTm9vcAAAAAxTZXQEAKEBAQRUAAEAGFJlbW92ZQACAADdBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAFdAQEMEE5vb3AAAAAMU2V0BABdAQEEVAABABhSZW1vdmUAAgAA4QYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAYQEBGFZlYzxUPgAA5QYEGE9wdGlvbgQEVAHpBgEIEE5vbmUAAAAQU29tZQQA6QYAAAEAAOkGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB7QYEUwAABADxBgEYVmVjPFQ+AADtBgxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYbGVkZ2VyLFVubG9ja0NodW5rBBxCYWxhbmNlAVkBAAgBFHZhbHVlVQEBHEJhbGFuY2UAAQxlcmFkASBFcmFJbmRleAAA8QYAAALtBgD1BgAABAwEoQE4APkGDDRwYWxsZXRfcmV2aXZlGHBhbGxldBBDYWxsBARUAAE4MGV0aF90cmFuc2FjdAQBHHBheWxvYWQYARxWZWM8dTg+AAAwLQFBIHJhdyBFVk0gdHJhbnNhY3Rpb24sIHR5cGljYWxseSBkaXNwYXRjaGVkIGJ5IGFuIEV0aGVyZXVtIEpTT04tUlBDIHNlcnZlci4AMCMgUGFyYW1ldGVycwDsKiBgcGF5bG9hZGA6IFRoZSBlbmNvZGVkIFtgY3JhdGU6OmV2bTo6VHJhbnNhY3Rpb25TaWduZWRgXS4AGCMgTm90ZQBRAVRoaXMgY2FsbCBjYW5ub3QgYmUgZGlzcGF0Y2hlZCBkaXJlY3RseTsgYXR0ZW1wdGluZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBhIGZhaWxlZFEBdHJhbnNhY3Rpb24uIEl0IHNlcnZlcyBhcyBhIHdyYXBwZXIgZm9yIGFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uLiBXaGVuIHN1Ym1pdHRlZCwgdGhlWQFydW50aW1lIGNvbnZlcnRzIGl0IGludG8gYSBbYHNwX3J1bnRpbWU6OmdlbmVyaWM6OkNoZWNrZWRFeHRyaW5zaWNgXSBieSByZWNvdmVyaW5nIHRoZZhzaWduZXIgYW5kIHZhbGlkYXRpbmcgdGhlIHRyYW5zYWN0aW9uLhBjYWxsFAEQZGVzdP0GARBIMTYwAAEUdmFsdWVVAQEwQmFsYW5jZU9mPFQ+AAEwd2VpZ2h0X2xpbWl0FQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdFUBATBCYWxhbmNlT2Y8VD4AARBkYXRhGAEcVmVjPHU4PgABQAUBTWFrZXMgYSBjYWxsIHRvIGFuIGFjY291bnQsIG9wdGlvbmFsbHkgdHJhbnNmZXJyaW5nIHNvbWUgYmFsYW5jZS4AMCMgUGFyYW1ldGVycwCoKiBgZGVzdGA6IEFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IHRvIGNhbGwu/CogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gYGRlc3RgLi0BKiBgd2VpZ2h0X2xpbWl0YDogVGhlIHdlaWdodCBsaW1pdCBlbmZvcmNlZCB3aGVuIGV4ZWN1dGluZyB0aGUgY29uc3RydWN0b3IuVQEqIGBzdG9yYWdlX2RlcG9zaXRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgYmFsYW5jZSB0aGF0IGNhbiBiZSBjaGFyZ2VkIGZyb20gdGhlpCAgY2FsbGVyIHRvIHBheSBmb3IgdGhlIHN0b3JhZ2UgY29uc3VtZWQuxCogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdC4AJQEqIElmIHRoZSBhY2NvdW50IGlzIGEgc21hcnQtY29udHJhY3QgYWNjb3VudCwgdGhlIGFzc29jaWF0ZWQgY29kZSB3aWxsIGJlrGV4ZWN1dGVkIGFuZCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC4VASogSWYgdGhlIGFjY291bnQgaXMgYSByZWd1bGFyIGFjY291bnQsIGFueSB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkLkUBKiBJZiBubyBhY2NvdW50IGV4aXN0cyBhbmQgdGhlIGNhbGwgdmFsdWUgaXMgbm90IGxlc3MgdGhhbiBgZXhpc3RlbnRpYWxfZGVwb3NpdGAsEQFhIHJlZ3VsYXIgYWNjb3VudCB3aWxsIGJlIGNyZWF0ZWQgYW5kIGFueSB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkLixpbnN0YW50aWF0ZRgBFHZhbHVlVQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBUBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRVAQEwQmFsYW5jZU9mPFQ+AAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgABEGRhdGEYARxWZWM8dTg+AAEQc2FsdAEHAUBPcHRpb248W3U4OyAzMl0+AAIU9Eluc3RhbnRpYXRlcyBhIGNvbnRyYWN0IGZyb20gYSBwcmV2aW91c2x5IGRlcGxveWVkIHZtIGJpbmFyeS4ANQFUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdIGJ1dCB3aXRob3V0IHRoZUEBY29kZSBkZXBsb3ltZW50IHN0ZXAuIEluc3RlYWQsIHRoZSBgY29kZV9oYXNoYCBvZiBhbiBvbi1jaGFpbiBkZXBsb3llZCB2bSBiaW5hcnlEbXVzdCBiZSBzdXBwbGllZC5UaW5zdGFudGlhdGVfd2l0aF9jb2RlGAEUdmFsdWVVAQEwQmFsYW5jZU9mPFQ+AAEwd2VpZ2h0X2xpbWl0FQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdFUBATBCYWxhbmNlT2Y8VD4AARBjb2RlGAEcVmVjPHU4PgABEGRhdGEYARxWZWM8dTg+AAEQc2FsdAEHAUBPcHRpb248W3U4OyAzMl0+AANsMQFJbnN0YW50aWF0ZXMgYSBuZXcgY29udHJhY3QgZnJvbSB0aGUgc3VwcGxpZWQgYGNvZGVgIG9wdGlvbmFsbHkgdHJhbnNmZXJyaW5nNHNvbWUgYmFsYW5jZS4AIQFUaGlzIGRpc3BhdGNoYWJsZSBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIGNhbGxpbmcgW2BTZWxmOjp1cGxvYWRfY29kZWBdICs9AVtgU2VsZjo6aW5zdGFudGlhdGVgXS4gQnVuZGxpbmcgdGhlbSB0b2dldGhlciBwcm92aWRlcyBlZmZpY2llbmN5IGdhaW5zLiBQbGVhc2XYYWxzbyBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBvZiBbYFNlbGY6OnVwbG9hZF9jb2RlYF0uADAjIFBhcmFtZXRlcnMATQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0Li0BKiBgd2VpZ2h0X2xpbWl0YDogVGhlIHdlaWdodCBsaW1pdCBlbmZvcmNlZCB3aGVuIGV4ZWN1dGluZyB0aGUgY29uc3RydWN0b3IuVQEqIGBzdG9yYWdlX2RlcG9zaXRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgYmFsYW5jZSB0aGF0IGNhbiBiZSBjaGFyZ2VkL3Jlc2VydmVkyCAgZnJvbSB0aGUgY2FsbGVyIHRvIHBheSBmb3IgdGhlIHN0b3JhZ2UgY29uc3VtZWQuzCogYGNvZGVgOiBUaGUgY29udHJhY3QgY29kZSB0byBkZXBsb3kgaW4gcmF3IGJ5dGVzLvQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QgY29uc3RydWN0b3IuPQEqIGBzYWx0YDogVXNlZCBmb3IgdGhlIGFkZHJlc3MgZGVyaXZhdGlvbi4gSWYgYFNvbWVgIGlzIHN1cHBsaWVkIHRoZW4gYENSRUFURTJg1AlzZW1hbnRpY3MgYXJlIHVzZWQuIElmIGBOb25lYCB0aGVuIGBDUkFURTFgIGlzIHVzZWQuAACUSW5zdGFudGlhdGlvbiBpcyBleGVjdXRlZCBhcyBmb2xsb3dzOgA5AS0gVGhlIHN1cHBsaWVkIGBjb2RlYCBpcyBkZXBsb3llZCwgYW5kIGEgYGNvZGVfaGFzaGAgaXMgY3JlYXRlZCBmb3IgdGhhdCBjb2RlLlkBLSBJZiB0aGUgYGNvZGVfaGFzaGAgYWxyZWFkeSBleGlzdHMgb24gdGhlIGNoYWluIHRoZSB1bmRlcmx5aW5nIGBjb2RlYCB3aWxsIGJlIHNoYXJlZC5JAS0gVGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMgY29tcHV0ZWQgYmFzZWQgb24gdGhlIHNlbmRlciwgY29kZV9oYXNoIGFuZCB0aGUgc2FsdC4BAS0gVGhlIHNtYXJ0LWNvbnRyYWN0IGFjY291bnQgaXMgY3JlYXRlZCBhdCB0aGUgY29tcHV0ZWQgYWRkcmVzcy7ALSBUaGUgYHZhbHVlYCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuQQEtIFRoZSBgZGVwbG95YCBmdW5jdGlvbiBpcyBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgbmV3bHktY3JlYXRlZCBhY2NvdW50LmRldGhfaW5zdGFudGlhdGVfd2l0aF9jb2RlIAEUdmFsdWUFBwEQVTI1NgABMHdlaWdodF9saW1pdBUBARhXZWlnaHQAATRldGhfZ2FzX2xpbWl0BQcBEFUyNTYAARBjb2RlGAEcVmVjPHU4PgABEGRhdGEYARxWZWM8dTg+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4AAUxlZmZlY3RpdmVfZ2FzX3ByaWNlBQcBEFUyNTYAASxlbmNvZGVkX2xlbjgBDHUzMgAKVD0BU2FtZSBhcyBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdLCBidXQgaW50ZW5kZWQgdG8gYmUgZGlzcGF0Y2hlZCAqKm9ubHkqKuhieSBhbiBFVk0gdHJhbnNhY3Rpb24gdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkgbGF5ZXIuADAjIFBhcmFtZXRlcnMATQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0LlUBKiBgd2VpZ2h0X2xpbWl0YDogVGhlIGdhcyBsaW1pdCB1c2VkIHRvIGRlcml2ZSB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZvciB0cmFuc2FjdGlvbiQgIHBheW1lbnRdASogYGV0aF9nYXNfbGltaXRgOiBUaGUgRXRoZXJldW0gZ2FzIGxpbWl0IGdvdmVybmluZyB0aGUgcmVzb3VyY2UgdXNhZ2Ugb2YgdGhlIGV4ZWN1dGlvbswqIGBjb2RlYDogVGhlIGNvbnRyYWN0IGNvZGUgdG8gZGVwbG95IGluIHJhdyBieXRlcy70KiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0IGNvbnN0cnVjdG9yLjUBKiBgdHJhbnNhY3Rpb25fZW5jb2RlZGA6IFRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIHNpZ25lZCBFdGhlcmV1bSB0cmFuc2FjdGlvbixdASAgcmVwcmVzZW50ZWQgYXMgW2NyYXRlOjpldm06OlRyYW5zYWN0aW9uU2lnbmVkXSwgcHJvdmlkZWQgYnkgdGhlIEV0aGVyZXVtIHdhbGxldC4gVGhpc9QgIGlzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiByb290LsQqIGVmZmVjdGl2ZV9nYXNfcHJpY2U6IHRoZSBwcmljZSBvZiBhIHVuaXQgb2YgZ2FzBQEqIGVuY29kZWQgbGVuOiB0aGUgYnl0ZSBjb2RlIHNpemUgb2YgdGhlIGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpYwA5AUNhbGxpbmcgdGhpcyBkaXNwYXRjaGFibGUgZW5zdXJlcyB0aGF0IHRoZSBvcmlnaW4ncyBub25jZSBpcyBidW1wZWQgb25seSBvbmNlLGEBdmlhIHRoZSBgQ2hlY2tOb25jZWAgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLiBJbiBjb250cmFzdCwgW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXU0BYWxzbyBidW1wcyB0aGUgbm9uY2UgYWZ0ZXIgY29udHJhY3QgaW5zdGFudGlhdGlvbiwgc2luY2UgaXQgbWF5IGJlIGludm9rZWQgbXVsdGlwbGWYdGltZXMgd2l0aGluIGEgYmF0Y2ggY2FsbCB0cmFuc2FjdGlvbi4gZXRoX2NhbGwgARBkZXN0/QYBEEgxNjAAARR2YWx1ZQUHARBVMjU2AAEwd2VpZ2h0X2xpbWl0FQEBGFdlaWdodAABNGV0aF9nYXNfbGltaXQFBwEQVTI1NgABEGRhdGEYARxWZWM8dTg+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4AAUxlZmZlY3RpdmVfZ2FzX3ByaWNlBQcBEFUyNTYAASxlbmNvZGVkX2xlbjgBDHUzMgALQPhTYW1lIGFzIFtgU2VsZjo6Y2FsbGBdLCBidXQgaW50ZW5kZWQgdG8gYmUgZGlzcGF0Y2hlZCAqKm9ubHkqKuhieSBhbiBFVk0gdHJhbnNhY3Rpb24gdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkgbGF5ZXIuADAjIFBhcmFtZXRlcnMA6CogYGRlc3RgOiBUaGUgRXRoZXJldW0gYWRkcmVzcyBvZiB0aGUgYWNjb3VudCB0byBiZSBjYWxsZWRNASogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY29udHJhY3QuVQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgZ2FzIGxpbWl0IHVzZWQgdG8gZGVyaXZlIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZm9yIHRyYW5zYWN0aW9uJCAgcGF5bWVudF0BKiBgZXRoX2dhc19saW1pdGA6IFRoZSBFdGhlcmV1bSBnYXMgbGltaXQgZ292ZXJuaW5nIHRoZSByZXNvdXJjZSB1c2FnZSBvZiB0aGUgZXhlY3V0aW9u9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci41ASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24sXQEgIHJlcHJlc2VudGVkIGFzIFtjcmF0ZTo6ZXZtOjpUcmFuc2FjdGlvblNpZ25lZF0sIHByb3ZpZGVkIGJ5IHRoZSBFdGhlcmV1bSB3YWxsZXQuIFRoaXPUICBpcyB1c2VkIGZvciBidWlsZGluZyB0aGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gcm9vdC7EKiBlZmZlY3RpdmVfZ2FzX3ByaWNlOiB0aGUgcHJpY2Ugb2YgYSB1bml0IG9mIGdhcwUBKiBlbmNvZGVkIGxlbjogdGhlIGJ5dGUgY29kZSBzaXplIG9mIHRoZSBgZXRoX3RyYW5zYWN0YCBleHRyaW5zaWNIZXRoX3N1YnN0cmF0ZV9jYWxsCAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAUx0cmFuc2FjdGlvbl9lbmNvZGVkGAEcVmVjPHU4PgAMKPxFeGVjdXRlcyBhIFN1YnN0cmF0ZSBydW50aW1lIGNhbGwgZnJvbSBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbi4ARQFUaGlzIGRpc3BhdGNoYWJsZSBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgKipvbmx5KiogdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkZAWxheWVyLiBUaGUgcHJvdmlkZWQgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgdXNpbmcgYFJhd09yaWdpbjo6U2lnbmVkYC4AMCMgUGFyYW1ldGVycwDkKiBgb3JpZ2luYDogTXVzdCBiZSBhbiBbYE9yaWdpbjo6RXRoVHJhbnNhY3Rpb25gXSBvcmlnaW4uwCogYGNhbGxgOiBUaGUgU3Vic3RyYXRlIHJ1bnRpbWUgY2FsbCB0byBleGVjdXRlLhkBKiBgdHJhbnNhY3Rpb25fZW5jb2RlZGA6IFRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uLCx1cGxvYWRfY29kZQgBEGNvZGUYARxWZWM8dTg+AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0VQEBMEJhbGFuY2VPZjxUPgAEOOxVcGxvYWQgbmV3IGBjb2RlYCB3aXRob3V0IGluc3RhbnRpYXRpbmcgYSBjb250cmFjdCBmcm9tIGl0LgAhAUlmIHRoZSBjb2RlIGRvZXMgbm90IGFscmVhZHkgZXhpc3QgYSBkZXBvc2l0IGlzIHJlc2VydmVkIGZyb20gdGhlIGNhbGxlcg0BVGhlIHNpemUgb2YgdGhlIHJlc2VydmUgZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiB0aGUgc3VwcGxpZWQgYGNvZGVgLgAYIyBOb3RlAFkBQW55b25lIGNhbiBpbnN0YW50aWF0ZSBhIGNvbnRyYWN0IGZyb20gYW55IHVwbG9hZGVkIGNvZGUgYW5kIHRodXMgcHJldmVudCBpdHMgcmVtb3ZhbC5BAVRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uIGEgY29uc3RydWN0b3IgY291bGQgZW1wbG95IGFjY2VzcyBjb250cm9sIHNvIHRoYXQgaXQgY2FuOQFvbmx5IGJlIGluc3RhbnRpYXRlZCBieSBwZXJtaXNzaW9uZWQgZW50aXRpZXMuIFRoZSBzYW1lIGlzIHRydWUgd2hlbiB1cGxvYWRpbmegdGhyb3VnaCBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdLgBFAUlmIHRoZSByZWZjb3VudCBvZiB0aGUgY29kZSByZWFjaGVzIHplcm8gYWZ0ZXIgdGVybWluYXRpbmcgdGhlIGxhc3QgY29udHJhY3QgdGhhdPRyZWZlcmVuY2VzIHRoaXMgY29kZSwgdGhlIGNvZGUgd2lsbCBiZSByZW1vdmVkIGF1dG9tYXRpY2FsbHkuLHJlbW92ZV9jb2RlBAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgAFEDUBUmVtb3ZlIHRoZSBjb2RlIHN0b3JlZCB1bmRlciBgY29kZV9oYXNoYCBhbmQgcmVmdW5kIHRoZSBkZXBvc2l0IHRvIGl0cyBvd25lci4ARQFBIGNvZGUgY2FuIG9ubHkgYmUgcmVtb3ZlZCBieSBpdHMgb3JpZ2luYWwgdXBsb2FkZXIgKGl0cyBvd25lcikgYW5kIG9ubHkgaWYgaXQgaXNkbm90IHVzZWQgYnkgYW55IGNvbnRyYWN0LiBzZXRfY29kZQgBEGRlc3T9BgEQSDE2MAABJGNvZGVfaGFzaEABNHNwX2NvcmU6OkgyNTYABigJAVByaXZpbGVnZWQgZnVuY3Rpb24gdGhhdCBjaGFuZ2VzIHRoZSBjb2RlIG9mIGFuIGV4aXN0aW5nIGNvbnRyYWN0LgBFAVRoaXMgdGFrZXMgY2FyZSBvZiB1cGRhdGluZyByZWZjb3VudHMgYW5kIGFsbCBvdGhlciBuZWNlc3Nhcnkgb3BlcmF0aW9ucy4gUmV0dXJuc+hhbiBlcnJvciBpZiBlaXRoZXIgdGhlIGBjb2RlX2hhc2hgIG9yIGBkZXN0YCBkbyBub3QgZXhpc3QuABgjIE5vdGUAMQFUaGlzIGRvZXMgKipub3QqKiBjaGFuZ2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IGluIHF1ZXN0aW9uLiBUaGlzIG1lYW5zPQF0aGF0IHRoZSBjb250cmFjdCBhZGRyZXNzIGlzIG5vIGxvbmdlciBkZXJpdmVkIGZyb20gaXRzIGNvZGUgaGFzaCBhZnRlciBjYWxsaW5nSHRoaXMgZGlzcGF0Y2hhYmxlLixtYXBfYWNjb3VudAAHHEEBUmVnaXN0ZXIgdGhlIGNhbGxlcnMgYWNjb3VudCBpZCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIGNvbnRyYWN0IGludGVyYWN0aW9ucy4AXQFUaGlzIHdpbGwgZXJyb3IgaWYgdGhlIG9yaWdpbiBpcyBhbHJlYWR5IG1hcHBlZCBvciBpcyBhIGV0aCBuYXRpdmUgYEFkZHJlc3MyMGAuIEl0IHdpbGwdAXRha2UgYSBkZXBvc2l0IHRoYXQgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgW2BTZWxmOjp1bm1hcF9hY2NvdW50YF0uADkBTm9vcCB3aGVuIFtgQ29uZmlnOjpBdXRvTWFwYF0gaXMgZW5hYmxlZCwgYXMgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgbWFwcGVkfG9uIGNyZWF0aW9uIHZpYSBbYEF1dG9NYXBwZXJgXS5IYmF0Y2hfbWFwX2FjY291bnRzBAEgYWNjb3VudHNhAQFEVmVjPFQ6OkFjY291bnRJZD4ADQRZAU1hcCBtYW55IGFjY291bnRzIGFuZCBtYWtlIHRoZSBUWCBmcmVlIGlmIGF0IGxlYXN0IDkwJSB3ZXJlIHVubWFwcGVkIG9yIGhlbGQgZGVwb3NpdHMuNHVubWFwX2FjY291bnQACBz8VW5yZWdpc3RlciB0aGUgY2FsbGVycyBhY2NvdW50IGlkIGluIG9yZGVyIHRvIGZyZWUgdGhlIGRlcG9zaXQuAEEBVGhlcmUgaXMgbm8gcmVhc29uIHRvIGV2ZXIgY2FsbCB0aGlzIGZ1bmN0aW9uIG90aGVyIHRoYW4gZnJlZWluZyB1cCB0aGUgZGVwb3NpdC74VGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHRoZSBhY2NvdW50IHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4AUQFEaXNhYmxlZCB3aGVuIFtgQ29uZmlnOjpBdXRvTWFwYF0gaXMgZW5hYmxlZCwgYXMgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgdW5tYXBwZWRsb24ga2lsbCB2aWEgW2BBdXRvTWFwcGVyYF0ucGRpc3BhdGNoX2FzX2ZhbGxiYWNrX2FjY291bnQEARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJFB0BRGlzcGF0Y2ggYW4gYGNhbGxgIHdpdGggdGhlIG9yaWdpbiBzZXQgdG8gdGhlIGNhbGxlcnMgZmFsbGJhY2sgYWRkcmVzcy4AYQFFdmVyeSBgQWNjb3VudElkMzJgIGNhbiBjb250cm9sIGl0cyBjb3JyZXNwb25kaW5nIGZhbGxiYWNrIGFjY291bnQuIFRoZSBmYWxsYmFjayBhY2NvdW50QQFpcyB0aGUgYEFjY291bnRJZDIwYCB3aXRoIHRoZSBsYXN0IDEyIGJ5dGVzIHNldCB0byBgMHhFRWAuIFRoaXMgaXMgZXNzZW50aWFsbHkgYVUBcmVjb3ZlcnkgZnVuY3Rpb24gaW4gY2FzZSBhbiBgQWNjb3VudElkMjBgIHdhcyB1c2VkIHdpdGhvdXQgY3JlYXRpbmcgYSBtYXBwaW5nIGZpcnN0LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy79Bgg8cHJpbWl0aXZlX3R5cGVzEEgxNjAAAAQAHAEgW3U4OyAyMF0AAAEHBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAABQcIPHByaW1pdGl2ZV90eXBlcxBVMjU2AAAEAAkHASBbdTY0OyA0XQAACQcAAAMEAAAAKAANBww0cGFsbGV0X2FoX29wcxhwYWxsZXQQQ2FsbAQEVAABFFx1bnJlc2VydmVfbGVhc2VfZGVwb3NpdAwBFGJsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4AASRkZXBvc2l0b3KRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxwYXJhX2lkoAEYUGFyYUlkAAAg+FVucmVzZXJ2ZSB0aGUgZGVwb3NpdCB0aGF0IHdhcyB0YWtlbiBmb3IgY3JlYXRpbmcgYSBjcm93ZGxvYW4uAF0BVGhpcyBjYW4gYmUgY2FsbGVkIGJ5IGFueSBzaWduZWQgb3JpZ2luLiBJdCB1bnJlc2VydmVzIHRoZSBsZWFzZSBkZXBvc2l0IG9uIHRoZSBhY2NvdW50WQF0aGF0IHdvbiB0aGUgbGVhc2UgYXVjdGlvbi4gSXQgY2FuIGJlIHVucmVzZXJ2ZWQgb25jZSBhbGwgbGVhc2VzIGV4cGlyZWQuIE5vdGUgdGhhdCBpdFEBd2lsbCBiZSBjYWxsZWQgYXV0b21hdGljYWxseSBmcm9tIGB3aXRoZHJhd19jcm93ZGxvYW5fY29udHJpYnV0aW9uYCBmb3IgdGhlIG1hdGNoaW5nSGNyb3dkbG9hbiBhY2NvdW50LgBRAVNvbG8gYmlkZGVyIGFjY291bnRzIHRoYXQgd29uIGxlYXNlIGF1Y3Rpb25zIGNhbiB1c2UgdGhpcyB0byB1bnJlc2VydmUgdGhlaXIgYW1vdW50Lnx3aXRoZHJhd19jcm93ZGxvYW5fY29udHJpYnV0aW9uDAEUYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgABJGRlcG9zaXRvcpEBAVBPcHRpb248VDo6QWNjb3VudElkPgABHHBhcmFfaWSgARhQYXJhSWQAARzIV2l0aGRyYXcgdGhlIGNvbnRyaWJ1dGlvbiBvZiBhIGZpbmlzaGVkIGNyb3dkbG9hbi4A0EEgY3Jvd2Rsb2FuIGNvbnRyaWJ1dGlvbiBjYW4gYmUgd2l0aGRyYXduIGlmIGVpdGhlcjrULSBUaGUgY3Jvd2Rsb2FuIGZhaWxlZCB0byBpbiBhbiBhdWN0aW9uIGFuZCB0aW1lZCBvdXScLSBXb24gYW4gYXVjdGlvbiBhbmQgYWxsIGxlYXNlcyBleHBpcmVkAIxDYW4gYmUgY2FsbGVkIGJ5IGFueSBzaWduZWQgb3JpZ2luLmx1bnJlc2VydmVfY3Jvd2Rsb2FuX3Jlc2VydmUMARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkZGVwb3NpdG9ykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEccGFyYV9pZKABGFBhcmFJZAACIPhVbnJlc2VydmUgdGhlIGRlcG9zaXQgdGhhdCB3YXMgdGFrZW4gZm9yIGNyZWF0aW5nIGEgY3Jvd2Rsb2FuLgB8VGhpcyBjYW4gYmUgY2FsbGVkIG9uY2UgZWl0aGVyOtgtIFRoZSBjcm93ZGxvYW4gZmFpbGVkIHRvIHdpbiBhbiBhdWN0aW9uIGFuZCB0aW1lZCBvdXQhAS0gV29uIGFuIGF1Y3Rpb24sIGFsbCBsZWFzZXMgZXhwaXJlZCBhbmQgYWxsIGNvbnRyaWJ1dGlvbnMgYXJlIHdpdGhkcmF3bgBZAUNhbiBiZSBjYWxsZWQgYnkgYW55IHNpZ25lZCBvcmlnaW4uIFRoZSBjb25kaXRpb24gdGhhdCBhbGwgY29udHJpYnV0aW9ucyBhcmUgd2l0aGRyYXdu4GlzIGluIHBsYWNlIHNpbmNlIHRoZSByZXNlcnZlIGFjdHMgYXMgYSBzdG9yYWdlIGRlcG9zaXQujHRyYW5zZmVyX3RvX3Bvc3RfbWlncmF0aW9uX3RyZWFzdXJ5BAEgYXNzZXRfaWQdAgH4Qm94PDxUOjpGdW5naWJsZXMgYXMgRnVuZ2libGVzSW5zcGVjdDxUOjpBY2NvdW50SWQ+Pjo6QXNzZXRJZD4AAxBJAVRyYW5zZmVyIHRoZSBiYWxhbmNlIGZyb20gdGhlIHByZS1taWdyYXRpb24gdHJlYXN1cnkgYWNjb3VudCB0byB0aGUgcG9zdC1taWdyYXRpb25EdHJlYXN1cnkgYWNjb3VudC4A+FRoaXMgY2FsbCBjYW4gb25seSBiZSBjYWxsZWQgYWZ0ZXIgdGhlIG1pZ3JhdGlvbiBpcyBjb21wbGV0ZWQuxHRyYW5zbGF0ZV9wYXJhX3NvdmVyZWlnbl9jaGlsZF90b19zaWJsaW5nX2Rlcml2ZWQQARxwYXJhX2lk7QMBDHUxNgABPGRlcml2YXRpb25fcGF0aBEHASBWZWM8dTE2PgABLG9sZF9hY2NvdW50BAEwVDo6QWNjb3VudElkAAEsbmV3X2FjY291bnQEATBUOjpBY2NvdW50SWQABCw9AVRyYW5zbGF0ZSByZWN1cnNpdmVseSBkZXJpdmVkIHBhcmFjaGFpbiBzb3ZlcmVpZ24gY2hpbGQgYWNjb3VudCB0byBpdHMgc2libGluZy4AYQFVc2VzIHRoZSBzYW1lIGRlcml2YXRpb24gcGF0aCBvbiB0aGUgc2libGluZy4gVGhlIG9sZCBhbmQgbmV3IGFjY291bnQgYXJndW1lbnRzIGFyZSBvbmx5QQF3aXRuZXNzIGRhdGEgdG8gZW5zdXJlIGNvcnJlY3QgdXNhZ2UuIENhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYE1pZ3JhdGVPcmlnaW5gLgA4VGhpcyBtaWdyYXRlczpQLSBOYXRpdmUgRE9UIGJhbGFuY2WoLSBBbGwgYXNzZXRzIGxpc3RlZCBpbiBgVDo6UmVsZXZhbnRBc3NldHNgRC0gU3Rha2VkIGJhbGFuY2VzAEkBVGhpbmdzIGxpa2Ugbm9uLXJlbGV2YW50IGFzc2V0cyBvciB2ZXN0ZWQgdHJhbnNmZXJzIG1heSByZW1haW4gb24gdGhlIG9sZCBhY2NvdW50LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4RBwAAAu0DABUHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczhhdXRob3JpemVfY2FsbDRBdXRob3JpemVDYWxsBARUAAAAABkHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAAB0HEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAAAhBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAAAlBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAAKQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABAAtBwEMRXJhAAAtBxAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AADEHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGQBIFQ6Ok5vbmNlAAA1BxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAADkHCIhwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50UENoYXJnZUFzc2V0VHhQYXltZW50BARUAAAIAQx0aXBVAQEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWRZAwFIT3B0aW9uPFQ6OkFzc2V0SWQ+AAA9BwxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zSFByZXZhbGlkYXRlQXR0ZXN0cwQEVAAAAABBBwh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb25EQ2hlY2tNZXRhZGF0YUhhc2gEBFQAAAQBEG1vZGVFBwEQTW9kZQAARQcIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uEE1vZGUAAQggRGlzYWJsZWQAAAAcRW5hYmxlZAABAABJBxA0cGFsbGV0X3Jldml2ZQxldm0wdHhfZXh0ZW5zaW9uJFNldE9yaWdpbgQEVAAAAABNBwgwZnJhbWVfc3lzdGVtLEFjY291bnRJbmZvCBROb25jZQE4LEFjY291bnREYXRhAVEHABQBFG5vbmNlOAEUTm9uY2UAASRjb25zdW1lcnM4ASBSZWZDb3VudAABJHByb3ZpZGVyczgBIFJlZkNvdW50AAEsc3VmZmljaWVudHM4ASBSZWZDb3VudAABEGRhdGFRBwEsQWNjb3VudERhdGEAAFEHDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQWNjb3VudERhdGEEHEJhbGFuY2UBWQEAEAEQZnJlZVkBARxCYWxhbmNlAAEgcmVzZXJ2ZWRZAQEcQmFsYW5jZQABGGZyb3plblkBARxCYWxhbmNlAAEUZmxhZ3NVBwEoRXh0cmFGbGFncwAAVQcMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyhFeHRyYUZsYWdzAAAEAFkBARB1MTI4AABZBww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUARUBAAwBGG5vcm1hbBUBAQRUAAEsb3BlcmF0aW9uYWwVAQEEVAABJG1hbmRhdG9yeRUBAQRUAABdBwAAAmEHAGEHCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUBZQcEVAFAAAwBFHBoYXNlFQkBFFBoYXNlAAEUZXZlbnRlBwEERQABGHRvcGljc8QBGFZlYzxUPgAAZQcIaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lMFJ1bnRpbWVFdmVudAAByBhTeXN0ZW0EAGkHAXBmcmFtZV9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAkQcBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAEAIFByZWltYWdlBACVBwF8cGFsbGV0X3ByZWltYWdlOjpFdmVudDxSdW50aW1lPgAFACRTY2hlZHVsZXIEAJkHAYBwYWxsZXRfc2NoZWR1bGVyOjpFdmVudDxSdW50aW1lPgAGAChQYXJhbWV0ZXJzBAChBwGEcGFsbGV0X3BhcmFtZXRlcnM6OkV2ZW50PFJ1bnRpbWU+AAcAUE11bHRpQmxvY2tNaWdyYXRpb25zBADJBwGEcGFsbGV0X21pZ3JhdGlvbnM6OkV2ZW50PFJ1bnRpbWU+AAkAIEJhbGFuY2VzBADNBwF8cGFsbGV0X2JhbGFuY2VzOjpFdmVudDxSdW50aW1lPgAKAEhUcmFuc2FjdGlvblBheW1lbnQEAAkIAahwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ACwA4QXNzZXRUeFBheW1lbnQEAA0IAchwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50OjpFdmVudDxSdW50aW1lPgANABxWZXN0aW5nBAARCAF4cGFsbGV0X3Zlc3Rpbmc6OkV2ZW50PFJ1bnRpbWU+AA4AGENsYWltcwQAFQgBdHBhbGxldF9jbGFpbXM6OkV2ZW50PFJ1bnRpbWU+AA8ADERhcAQAGQgBaHBhbGxldF9kYXA6OkV2ZW50PFJ1bnRpbWU+ABAARENvbGxhdG9yU2VsZWN0aW9uBAAhCAGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXZlbnQ8UnVudGltZT4AFQAcU2Vzc2lvbgQAJQgBeHBhbGxldF9zZXNzaW9uOjpFdmVudDxSdW50aW1lPgAWACRYY21wUXVldWUEACkIAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQALQgBaHBhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAD0IAYhjdW11bHVzX3BhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+ACAARFRvS3VzYW1hWGNtUm91dGVyBABBCAFZAXBhbGxldF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXI6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIKOjpJbnN0YW5jZTE+ACIAME1lc3NhZ2VRdWV1ZQQARQgBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAjAGBTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQEAE0IAcRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQ6OkV2ZW50PFJ1bnRpbWU+ACQAHFV0aWxpdHkEAFEIAVRwYWxsZXRfdXRpbGl0eTo6RXZlbnQAKAAgTXVsdGlzaWcEAFUIAXxwYWxsZXRfbXVsdGlzaWc6OkV2ZW50PFJ1bnRpbWU+ACkAFFByb3h5BABZCAFwcGFsbGV0X3Byb3h5OjpFdmVudDxSdW50aW1lPgAqABxJbmRpY2VzBABhCAF4cGFsbGV0X2luZGljZXM6OkV2ZW50PFJ1bnRpbWU+ACsAGEFzc2V0cwQAZQgB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMT4AMgAcVW5pcXVlcwQAaQgBeHBhbGxldF91bmlxdWVzOjpFdmVudDxSdW50aW1lPgAzABBOZnRzBABtCAFscGFsbGV0X25mdHM6OkV2ZW50PFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAHUIAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTI+ADUAKFBvb2xBc3NldHMEAHkIAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTM+ADYAPEFzc2V0Q29udmVyc2lvbgQAfQgBnHBhbGxldF9hc3NldF9jb252ZXJzaW9uOjpFdmVudDxSdW50aW1lPgA3AAxQc20EAI0IAWhwYWxsZXRfcHNtOjpFdmVudDxSdW50aW1lPgA4ACBUcmVhc3VyeQQAkQgBfHBhbGxldF90cmVhc3VyeTo6RXZlbnQ8UnVudGltZT4APABAQ29udmljdGlvblZvdGluZwQAlQgBoHBhbGxldF9jb252aWN0aW9uX3ZvdGluZzo6RXZlbnQ8UnVudGltZT4APQAkUmVmZXJlbmRhBACZCAGAcGFsbGV0X3JlZmVyZW5kYTo6RXZlbnQ8UnVudGltZT4APgAkV2hpdGVsaXN0BAChCAGAcGFsbGV0X3doaXRlbGlzdDo6RXZlbnQ8UnVudGltZT4AQAAgQm91bnRpZXMEALEIAXxwYWxsZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEEANENoaWxkQm91bnRpZXMEALUIAZRwYWxsZXRfY2hpbGRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEIAJEFzc2V0UmF0ZQQAuQgBhHBhbGxldF9hc3NldF9yYXRlOjpFdmVudDxSdW50aW1lPgBDAEhNdWx0aUFzc2V0Qm91bnRpZXMEAL0IAaxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEQASFN0YXRlVHJpZU1pZ3JhdGlvbgQAwQgBrHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbjo6RXZlbnQ8UnVudGltZT4ARgA8Tm9taW5hdGlvblBvb2xzBADNCAGccGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkV2ZW50PFJ1bnRpbWU+AFAAJFZvdGVyTGlzdAQA1QgB9HBhbGxldF9iYWdzX2xpc3Q6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9iYWdzX2xpc3Q6Okluc3RhbmNlMT4AUgBARGVsZWdhdGVkU3Rha2luZwQA2QgBoHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6RXZlbnQ8UnVudGltZT4AUwA8U3Rha2luZ1JjQ2xpZW50BADdCAG4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50OjpFdmVudDxSdW50aW1lPgBUAEhNdWx0aUJsb2NrRWxlY3Rpb24EAOUIAdBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OkV2ZW50PFJ1bnRpbWU+AFUAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyBADpCAH4cGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjp2ZXJpZmllcjo6RXZlbnQ8UnVudGltZT4AVgBgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAD5CAHwcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkV2ZW50PFJ1bnRpbWU+AFgAHFN0YWtpbmcEAP0IAZBwYWxsZXRfc3Rha2luZ19hc3luYzo6RXZlbnQ8UnVudGltZT4AWQAYUmV2aXZlBAANCQF0cGFsbGV0X3Jldml2ZTo6RXZlbnQ8UnVudGltZT4AWgAUQWhPcHMEABEJAXRwYWxsZXRfYWhfb3BzOjpFdmVudDxSdW50aW1lPgD+AABpBwwwZnJhbWVfc3lzdGVtGHBhbGxldBRFdmVudAQEVAABLEBFeHRyaW5zaWNTdWNjZXNzBAE0ZGlzcGF0Y2hfaW5mb20HAUREaXNwYXRjaEV2ZW50SW5mbwAABJBBbiBleHRyaW5zaWMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS48RXh0cmluc2ljRmFpbGVkCAE4ZGlzcGF0Y2hfZXJyb3J5BwE0RGlzcGF0Y2hFcnJvcgABNGRpc3BhdGNoX2luZm9tBwFERGlzcGF0Y2hFdmVudEluZm8AAQRQQW4gZXh0cmluc2ljIGZhaWxlZC4sQ29kZVVwZGF0ZWQEARBoYXNoQAEcVDo6SGFzaAACBNBgOmNvZGVgIHdhcyB1cGRhdGVkIHRvIHRoZSBjb2RlIHdpdGggdGhlIGdpdmVuIGhhc2guKE5ld0FjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEaEEgbmV3IGFjY291bnQgd2FzIGNyZWF0ZWQuNEtpbGxlZEFjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEWEFuIGFjY291bnQgd2FzIHJlYXBlZC4gUmVtYXJrZWQIARhzZW5kZXIEATBUOjpBY2NvdW50SWQAARBoYXNoQAEcVDo6SGFzaAAFBHBPbiBvbi1jaGFpbiByZW1hcmsgaGFwcGVuZWQuLFRhc2tTdGFydGVkBAEQdGFzazwBOFQ6OlJ1bnRpbWVUYXNrAAYEgEEgW2BUYXNrYF0gaGFzIHN0YXJ0ZWQgZXhlY3V0aW5nNFRhc2tDb21wbGV0ZWQEARB0YXNrPAE4VDo6UnVudGltZVRhc2sABwSIQSBbYFRhc2tgXSBoYXMgZmluaXNoZWQgZXhlY3V0aW5nLihUYXNrRmFpbGVkCAEQdGFzazwBOFQ6OlJ1bnRpbWVUYXNrAAEMZXJyeQcBNERpc3BhdGNoRXJyb3IACASMQSBbYFRhc2tgXSBmYWlsZWQgZHVyaW5nIGV4ZWN1dGlvbi5EVXBncmFkZUF1dGhvcml6ZWQIASRjb2RlX2hhc2hAARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbl0BARBib29sAAkEaEFuIHVwZ3JhZGUgd2FzIGF1dGhvcml6ZWQugFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlCAEkY29kZV9oYXNoQAEcVDo6SGFzaAABFGVycm9yeQcBNERpc3BhdGNoRXJyb3IACgQRAUFuIGludmFsaWQgYXV0aG9yaXplZCB1cGdyYWRlIHdhcyByZWplY3RlZCB3aGlsZSB0cnlpbmcgdG8gYXBwbHkgaXQuBHBFdmVudCBmb3IgdGhlIFN5c3RlbSBwYWxsZXQubQcIMGZyYW1lX3N5c3RlbUREaXNwYXRjaEV2ZW50SW5mbwAADAEYd2VpZ2h0FQEBGFdlaWdodAABFGNsYXNzcQcBNERpc3BhdGNoQ2xhc3MAASBwYXlzX2ZlZXUHARBQYXlzAABxBww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaDREaXNwYXRjaENsYXNzAAEMGE5vcm1hbAAAACxPcGVyYXRpb25hbAABACRNYW5kYXRvcnkAAgAAdQcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gQUGF5cwABCAxZZXMAAAAITm8AAQAAeQcIKHNwX3J1bnRpbWU0RGlzcGF0Y2hFcnJvcgABPBRPdGhlcgAAADBDYW5ub3RMb29rdXAAAQAkQmFkT3JpZ2luAAIAGE1vZHVsZQQAfQcBLE1vZHVsZUVycm9yAAMARENvbnN1bWVyUmVtYWluaW5nAAQALE5vUHJvdmlkZXJzAAUAQFRvb01hbnlDb25zdW1lcnMABgAUVG9rZW4EAIEHAShUb2tlbkVycm9yAAcAKEFyaXRobWV0aWMEAIUHATxBcml0aG1ldGljRXJyb3IACAA0VHJhbnNhY3Rpb25hbAQAiQcBSFRyYW5zYWN0aW9uYWxFcnJvcgAJACRFeGhhdXN0ZWQACgAoQ29ycnVwdGlvbgALACxVbmF2YWlsYWJsZQAMADhSb290Tm90QWxsb3dlZAANABBUcmllBACNBwEkVHJpZUVycm9yAA4AAH0HCChzcF9ydW50aW1lLE1vZHVsZUVycm9yAAAIARRpbmRleAwBCHU4AAEUZXJyb3J0AYxbdTg7IE1BWF9NT0RVTEVfRVJST1JfRU5DT0RFRF9TSVpFXQAAgQcIKHNwX3J1bnRpbWUoVG9rZW5FcnJvcgABKEBGdW5kc1VuYXZhaWxhYmxlAAAAME9ubHlQcm92aWRlcgABADBCZWxvd01pbmltdW0AAgAwQ2Fubm90Q3JlYXRlAAMAMFVua25vd25Bc3NldAAEABhGcm96ZW4ABQAsVW5zdXBwb3J0ZWQABgBAQ2Fubm90Q3JlYXRlSG9sZAAHADROb3RFeHBlbmRhYmxlAAgAHEJsb2NrZWQACQAAhQcINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAACJBwgoc3BfcnVudGltZUhUcmFuc2FjdGlvbmFsRXJyb3IAAQgwTGltaXRSZWFjaGVkAAAAHE5vTGF5ZXIAAQAAjQcMKHNwX3J1bnRpbWUwcHJvdmluZ190cmllJFRyaWVFcnJvcgABOEBJbnZhbGlkU3RhdGVSb290AAAASEluY29tcGxldGVEYXRhYmFzZQABAFBWYWx1ZUF0SW5jb21wbGV0ZUtleQACADBEZWNvZGVyRXJyb3IAAwAsSW52YWxpZEhhc2gABAAwRHVwbGljYXRlS2V5AAUAOEV4dHJhbmVvdXNOb2RlAAYAPEV4dHJhbmVvdXNWYWx1ZQAHAFxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQAIAFRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UACQA0VmFsdWVNaXNtYXRjaAAKADxJbmNvbXBsZXRlUHJvb2YACwAwUm9vdE1pc21hdGNoAAwALERlY29kZUVycm9yAA0AAJEHDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFdmVudAQEVAABGGBWYWxpZGF0aW9uRnVuY3Rpb25TdG9yZWQAAATQVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGJlZW4gc2NoZWR1bGVkIHRvIGFwcGx5LmRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkBAFUcmVsYXlfY2hhaW5fYmxvY2tfbnVtOAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEERQFUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgYXBwbGllZCBhcyBvZiB0aGUgY29udGFpbmVkIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlci5sVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAIEsFRoZSByZWxheS1jaGFpbiBhYm9ydGVkIHRoZSB1cGdyYWRlIHByb2Nlc3MuYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAQBFGNvdW50OAEMdTMyAAMEAQFTb21lIGRvd253YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuZERvd253YXJkTWVzc2FnZXNQcm9jZXNzZWQIASx3ZWlnaHRfdXNlZBUBARhXZWlnaHQAASBkbXFfaGVhZEABRHJlbGF5X2NoYWluOjpIYXNoAAQE4ERvd253YXJkIG1lc3NhZ2VzIHdlcmUgcHJvY2Vzc2VkIHVzaW5nIHRoZSBnaXZlbiB3ZWlnaHQuRFVwd2FyZE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoAQcBPE9wdGlvbjxYY21IYXNoPgAFBLhBbiB1cHdhcmQgbWVzc2FnZSB3YXMgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0lQcMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQURXZlbnQEBFQAAQwUTm90ZWQEARBoYXNoQAEcVDo6SGFzaAAABGhBIHByZWltYWdlIGhhcyBiZWVuIG5vdGVkLiRSZXF1ZXN0ZWQEARBoYXNoQAEcVDo6SGFzaAABBHhBIHByZWltYWdlIGhhcyBiZWVuIHJlcXVlc3RlZC4cQ2xlYXJlZAQBEGhhc2hAARxUOjpIYXNoAAIEbEEgcHJlaW1hZ2UgaGFzIGJlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJkHDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFdmVudAQEVAABKCRTY2hlZHVsZWQIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgAABFBTY2hlZHVsZWQgc29tZSB0YXNrLiBDYW5jZWxlZAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAEETENhbmNlbGVkIHNvbWUgdGFzay4oRGlzcGF0Y2hlZAwBEHRhc2vQAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZAEHAUBPcHRpb248VGFza05hbWU+AAEYcmVzdWx0nQcBOERpc3BhdGNoUmVzdWx0AAIEVERpc3BhdGNoZWQgc29tZSB0YXNrLiBSZXRyeVNldBABEHRhc2vQAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZAEHAUBPcHRpb248VGFza05hbWU+AAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4AARxyZXRyaWVzDAEIdTgAAwSgU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3Igc29tZSB0YXNrLjhSZXRyeUNhbmNlbGxlZAgBEHRhc2vQAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZAEHAUBPcHRpb248VGFza05hbWU+AAQErENhbmNlbCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIHNvbWUgdGFzay48Q2FsbFVuYXZhaWxhYmxlCAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkAQcBQE9wdGlvbjxUYXNrTmFtZT4ABQQpAVRoZSBjYWxsIGZvciB0aGUgcHJvdmlkZWQgaGFzaCB3YXMgbm90IGZvdW5kIHNvIHRoZSB0YXNrIGhhcyBiZWVuIGFib3J0ZWQuOFBlcmlvZGljRmFpbGVkCAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkAQcBQE9wdGlvbjxUYXNrTmFtZT4ABgQ9AVRoZSBnaXZlbiB0YXNrIHdhcyB1bmFibGUgdG8gYmUgcmVuZXdlZCBzaW5jZSB0aGUgYWdlbmRhIGlzIGZ1bGwgYXQgdGhhdCBibG9jay4sUmV0cnlGYWlsZWQIARB0YXNr0AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQBBwFAT3B0aW9uPFRhc2tOYW1lPgAHCF0BVGhlIGdpdmVuIHRhc2sgd2FzIHVuYWJsZSB0byBiZSByZXRyaWVkIHNpbmNlIHRoZSBhZ2VuZGEgaXMgZnVsbCBhdCB0aGF0IGJsb2NrIG9yIHRoZXJlnHdhcyBub3QgZW5vdWdoIHdlaWdodCB0byByZXNjaGVkdWxlIGl0LlRQZXJtYW5lbnRseU92ZXJ3ZWlnaHQIARB0YXNr0AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQBBwFAT3B0aW9uPFRhc2tOYW1lPgAIBPBUaGUgZ2l2ZW4gdGFzayBjYW4gbmV2ZXIgYmUgZXhlY3V0ZWQgc2luY2UgaXQgaXMgb3ZlcndlaWdodC5AQWdlbmRhSW5jb21wbGV0ZQQBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgAJBIRBZ2VuZGEgaXMgaW5jb21wbGV0ZSBmcm9tIGB3aGVuYC4EMEV2ZW50cyB0eXBlLp0HBBhSZXN1bHQIBFQBEARFAXkHAQgIT2sEABAAAAAADEVycgQAeQcAAAEAAKEHDERwYWxsZXRfcGFyYW1ldGVycxhwYWxsZXQURXZlbnQEBFQAAQQcVXBkYXRlZAwBDGtleaUHAcQ8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6S2V5BGRUaGUga2V5IHRoYXQgd2FzIHVwZGF0ZWQuASRvbGRfdmFsdWW1BwHsT3B0aW9uPDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZT4EfFRoZSBvbGQgdmFsdWUgYmVmb3JlIHRoaXMgY2FsbC4BJG5ld192YWx1ZbUHAexPcHRpb248PFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlPgR4VGhlIG5ldyB2YWx1ZSBhZnRlciB0aGlzIGNhbGwuAAxQQSBQYXJhbWV0ZXIgd2FzIHNldC4AvElzIGFsc28gZW1pdHRlZCB3aGVuIHRoZSB2YWx1ZSB3YXMgbm90IGNoYW5nZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0pQcIaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lUFJ1bnRpbWVQYXJhbWV0ZXJzS2V5AAEMPFN0YWtpbmdFbGVjdGlvbgQAqQcBxQE8ZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQAAACRTY2hlZHVsZXIEAK0HAakBPGR5bmFtaWNfcGFyYW1zOjpzY2hlZHVsZXI6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQABADBNZXNzYWdlUXVldWUEALEHAbkBPGR5bmFtaWNfcGFyYW1zOjptZXNzYWdlX3F1ZXVlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAgAAqQcQaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb240UGFyYW1ldGVyc0tleQABHCxTaWduZWRQaGFzZQQA4AEsU2lnbmVkUGhhc2UAAABQTWF4U2lnbmVkU3VibWlzc2lvbnMEAOgBUE1heFNpZ25lZFN1Ym1pc3Npb25zAAEANFVuc2lnbmVkUGhhc2UEAOwBNFVuc2lnbmVkUGhhc2UAAgAoTWluZXJQYWdlcwQA8AEoTWluZXJQYWdlcwADAERNYXhFbGVjdGluZ1ZvdGVycwQA9AFETWF4RWxlY3RpbmdWb3RlcnMABABYVGFyZ2V0U25hcHNob3RQZXJCbG9jawQA+AFYVGFyZ2V0U25hcHNob3RQZXJCbG9jawAFADhNYXhFcmFEdXJhdGlvbgQA/AE4TWF4RXJhRHVyYXRpb24ABgAArQcQaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjRQYXJhbWV0ZXJzS2V5AAEIUE1heFNjaGVkdWxlZFBlckJsb2NrBAAJAQFQTWF4U2NoZWR1bGVkUGVyQmxvY2sAAAA0TWF4aW11bVdlaWdodAQADQEBNE1heGltdW1XZWlnaHQAAQAAsQcQaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU0UGFyYW1ldGVyc0tleQABCDxNYXhPbkluaXRXZWlnaHQEAB0BATxNYXhPbkluaXRXZWlnaHQAAAA8TWF4T25JZGxlV2VpZ2h0BAAlAQE8TWF4T25JZGxlV2VpZ2h0AAEAALUHBBhPcHRpb24EBFQBuQcBCBBOb25lAAAAEFNvbWUEALkHAAABAAC5BwhoYXNzZXRfaHViX3BvbGthZG90X3J1bnRpbWVYUnVudGltZVBhcmFtZXRlcnNWYWx1ZQABDDxTdGFraW5nRWxlY3Rpb24EAL0HAc0BPGR5bmFtaWNfcGFyYW1zOjpzdGFraW5nX2VsZWN0aW9uOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQAAACRTY2hlZHVsZXIEAMEHAbEBPGR5bmFtaWNfcGFyYW1zOjpzY2hlZHVsZXI6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAEAME1lc3NhZ2VRdWV1ZQQAxQcBwQE8ZHluYW1pY19wYXJhbXM6Om1lc3NhZ2VfcXVldWU6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAIAAL0HEGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uPFBhcmFtZXRlcnNWYWx1ZQABHCxTaWduZWRQaGFzZQQAOAEsQmxvY2tOdW1iZXIAAABQTWF4U2lnbmVkU3VibWlzc2lvbnMEADgBDHUzMgABADRVbnNpZ25lZFBoYXNlBAA4ASxCbG9ja051bWJlcgACAChNaW5lclBhZ2VzBAA4AQx1MzIAAwBETWF4RWxlY3RpbmdWb3RlcnMEADgBDHUzMgAEAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrBAA4AQx1MzIABQA4TWF4RXJhRHVyYXRpb24EACgBDHU2NAAGAADBBxBoYXNzZXRfaHViX3BvbGthZG90X3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyPFBhcmFtZXRlcnNWYWx1ZQABCFBNYXhTY2hlZHVsZWRQZXJCbG9jawQAOAEMdTMyAAAANE1heGltdW1XZWlnaHQEABUBARhXZWlnaHQAAQAAxQcQaGFzc2V0X2h1Yl9wb2xrYWRvdF9ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8UGFyYW1ldGVyc1ZhbHVlAAEIPE1heE9uSW5pdFdlaWdodAQAEQEBOE9wdGlvbjxXZWlnaHQ+AAAAPE1heE9uSWRsZVdlaWdodAQAEQEBOE9wdGlvbjxXZWlnaHQ+AAEAAMkHDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQURXZlbnQEBFQAASA4VXBncmFkZVN0YXJ0ZWQEAShtaWdyYXRpb25zOAEMdTMyENBUaGUgbnVtYmVyIG9mIG1pZ3JhdGlvbnMgdGhhdCB0aGlzIHVwZ3JhZGUgY29udGFpbnMuAEEBVGhpcyBjYW4gYmUgdXNlZCB0byBkZXNpZ24gYSBwcm9ncmVzcyBpbmRpY2F0b3IgaW4gY29tYmluYXRpb24gd2l0aCBjb3VudGluZyB0aGXMYE1pZ3JhdGlvbkNvbXBsZXRlZGAgYW5kIGBNaWdyYXRpb25Ta2lwcGVkYCBldmVudHMuAAxoQSBSdW50aW1lIHVwZ3JhZGUgc3RhcnRlZC4A+El0cyBlbmQgaXMgaW5kaWNhdGVkIGJ5IGBVcGdyYWRlQ29tcGxldGVkYCBvciBgVXBncmFkZUZhaWxlZGAuQFVwZ3JhZGVDb21wbGV0ZWQAAQyYVGhlIGN1cnJlbnQgcnVudGltZSB1cGdyYWRlIGNvbXBsZXRlZC4AHQFUaGlzIGltcGxpZXMgdGhhdCBhbGwgb2YgaXRzIG1pZ3JhdGlvbnMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhcyB3ZWxsLjRVcGdyYWRlRmFpbGVkAAIMXFJ1bnRpbWUgdXBncmFkZSBmYWlsZWQuAOhUaGlzIGlzIHZlcnkgYmFkIGFuZCB3aWxsIHJlcXVpcmUgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24uQE1pZ3JhdGlvblNraXBwZWQEARRpbmRleDgBDHUzMgQpAVRoZSBpbmRleCBvZiB0aGUgc2tpcHBlZCBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuAwQJAUEgbWlncmF0aW9uIHdhcyBza2lwcGVkIHNpbmNlIGl0IHdhcyBhbHJlYWR5IGV4ZWN1dGVkIGluIHRoZSBwYXN0LkRNaWdyYXRpb25BZHZhbmNlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBARcQSBtaWdyYXRpb24gcHJvZ3Jlc3NlZC5ITWlncmF0aW9uQ29tcGxldGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4FBFhBIE1pZ3JhdGlvbiBjb21wbGV0ZWQuPE1pZ3JhdGlvbkZhaWxlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBgxMQSBNaWdyYXRpb24gZmFpbGVkLgBNAVRoaXMgaW1wbGllcyB0aGF0IHRoZSB3aG9sZSB1cGdyYWRlIGZhaWxlZCBhbmQgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcmVxdWlyZWQuPEhpc3RvcmljQ2xlYXJlZAQBLG5leHRfY3Vyc29yTQEBPE9wdGlvbjxWZWM8dTg+PgToU2hvdWxkIGJlIHBhc3NlZCB0byBgY2xlYXJfaGlzdG9yaWNgIGluIGEgc3VjY2Vzc2l2ZSBjYWxsLgcEyFRoZSBzZXQgb2YgaGlzdG9yaWNhbCBtaWdyYXRpb25zIGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0zQcMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXZlbnQIBFQABEkAAXgcRW5kb3dlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATBmcmVlX2JhbGFuY2VZAQEoVDo6QmFsYW5jZQAABLhBbiBhY2NvdW50IHdhcyBjcmVhdGVkIHdpdGggc29tZSBmcmVlIGJhbGFuY2UuIER1c3RMb3N0CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAEIPQFBbiBhY2NvdW50IHdhcyByZW1vdmVkIHdob3NlIGJhbGFuY2Ugd2FzIG5vbi16ZXJvIGJ1dCBiZWxvdyBFeGlzdGVudGlhbERlcG9zaXQseHJlc3VsdGluZyBpbiBhbiBvdXRyaWdodCBsb3NzLiBUcmFuc2ZlcgwBEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAIETFRyYW5zZmVyIHN1Y2NlZWRlZC4oQmFsYW5jZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyZWVZAQEoVDo6QmFsYW5jZQADBGhBIGJhbGFuY2Ugd2FzIHNldCBieSByb290LiBSZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAQE4FNvbWUgYmFsYW5jZSB3YXMgcmVzZXJ2ZWQgKG1vdmVkIGZyb20gZnJlZSB0byByZXNlcnZlZCkuKFVucmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAFBOhTb21lIGJhbGFuY2Ugd2FzIHVucmVzZXJ2ZWQgKG1vdmVkIGZyb20gcmVzZXJ2ZWQgdG8gZnJlZSkuSFJlc2VydmVSZXBhdHJpYXRlZBABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAFIZGVzdGluYXRpb25fc3RhdHVz0QcBGFN0YXR1cwAGCE0BU29tZSBiYWxhbmNlIHdhcyBtb3ZlZCBmcm9tIHRoZSByZXNlcnZlIG9mIHRoZSBmaXJzdCBhY2NvdW50IHRvIHRoZSBzZWNvbmQgYWNjb3VudC7YRmluYWwgYXJndW1lbnQgaW5kaWNhdGVzIHRoZSBkZXN0aW5hdGlvbiBiYWxhbmNlIHR5cGUuHERlcG9zaXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAHBNhTb21lIGFtb3VudCB3YXMgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4gV2l0aGRyYXcIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAkEAQFTb21lIGFtb3VudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciBtaXNiZWhhdmlvcikuGE1pbnRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAoEnFNvbWUgYW1vdW50IHdhcyBtaW50ZWQgaW50byBhbiBhY2NvdW50LjBNaW50ZWRDcmVkaXQEARhhbW91bnRZAQEoVDo6QmFsYW5jZQALBOBTb21lIGNyZWRpdCB3YXMgYmFsYW5jZWQgYW5kIGFkZGVkIHRvIHRoZSBUb3RhbElzc3VhbmNlLhhCdXJuZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAMBJxTb21lIGFtb3VudCB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC4oQnVybmVkRGVidAQBGGFtb3VudFkBAShUOjpCYWxhbmNlAA0EzFNvbWUgZGVidCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIFRvdGFsIElzc3VhbmNlLiRTdXNwZW5kZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAOBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UADwSkU29tZSBhbW91bnQgd2FzIHJlc3RvcmVkIGludG8gYW4gYWNjb3VudC4gVXBncmFkZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAEARgQW4gYWNjb3VudCB3YXMgdXBncmFkZWQuGElzc3VlZAQBGGFtb3VudFkBAShUOjpCYWxhbmNlABEELQFUb3RhbCBpc3N1YW5jZSB3YXMgaW5jcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGNyZWRpdCB0byBiZSBiYWxhbmNlZC4kUmVzY2luZGVkBAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEgQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEwRgU29tZSBiYWxhbmNlIHdhcyBsb2NrZWQuIFVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAFARoU29tZSBiYWxhbmNlIHdhcyB1bmxvY2tlZC4YRnJvemVuCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAFQRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABYEYFNvbWUgYmFsYW5jZSB3YXMgdGhhd2VkLkxUb3RhbElzc3VhbmNlRm9yY2VkCAEMb2xkWQEBKFQ6OkJhbGFuY2UAAQxuZXdZAQEoVDo6QmFsYW5jZQAXBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuEEhlbGQMARhyZWFzb27VBwFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAYBIBTb21lIGJhbGFuY2Ugd2FzIHBsYWNlZCBvbiBob2xkLihCdXJuZWRIZWxkDAEYcmVhc29u1QcBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAGQSgSGVsZCBiYWxhbmNlIHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LjhUcmFuc2Zlck9uSG9sZBABGHJlYXNvbtUHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAaBBUBQSB0cmFuc2ZlciBvZiBgYW1vdW50YCBvbiBob2xkIGZyb20gYHNvdXJjZWAgdG8gYGRlc3RgIHdhcyBpbml0aWF0ZWQuPFRyYW5zZmVyQW5kSG9sZBABGHJlYXNvbtUHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAASx0cmFuc2ZlcnJlZFkBAShUOjpCYWxhbmNlABsECQFUaGUgYHRyYW5zZmVycmVkYCBiYWxhbmNlIGlzIHBsYWNlZCBvbiBob2xkIGF0IHRoZSBgZGVzdGAgYWNjb3VudC4gUmVsZWFzZWQMARhyZWFzb27VBwFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAcBJBTb21lIGJhbGFuY2Ugd2FzIHJlbGVhc2VkIGZyb20gaG9sZC4oVW5leHBlY3RlZAQABQgBOFVuZXhwZWN0ZWRLaW5kAB0EsEFuIHVuZXhwZWN0ZWQvZGVmZW5zaXZlIGV2ZW50IHdhcyB0cmlnZ2VyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV00QcUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjNEJhbGFuY2VTdGF0dXMAAQgQRnJlZQAAACBSZXNlcnZlZAABAADVBwhoYXNzZXRfaHViX3BvbGthZG90X3J1bnRpbWVEUnVudGltZUhvbGRSZWFzb24AASwgUHJlaW1hZ2UEANkHAWxwYWxsZXRfcHJlaW1hZ2U6OkhvbGRSZWFzb24ABQAcU2Vzc2lvbgQA3QcBaHBhbGxldF9zZXNzaW9uOjpIb2xkUmVhc29uABYALFBvbGthZG90WGNtBADhBwFYcGFsbGV0X3hjbTo6SG9sZFJlYXNvbgAfAAxQc20EAOUHAVhwYWxsZXRfcHNtOjpIb2xkUmVhc29uADgASE11bHRpQXNzZXRCb3VudGllcwQA6QcBnHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6SG9sZFJlYXNvbgBEAEhTdGF0ZVRyaWVNaWdyYXRpb24EAO0HAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24ARgBARGVsZWdhdGVkU3Rha2luZwQA8QcBkHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6SG9sZFJlYXNvbgBTADxTdGFraW5nUmNDbGllbnQEAPUHAahwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkhvbGRSZWFzb24AVABgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAD5BwHgcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkhvbGRSZWFzb24AWAAcU3Rha2luZwQA/QcBgHBhbGxldF9zdGFraW5nX2FzeW5jOjpIb2xkUmVhc29uAFkAGFJldml2ZQQAAQgBZHBhbGxldF9yZXZpdmU6OkhvbGRSZWFzb24AWgAA2QcMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQoSG9sZFJlYXNvbgABBCBQcmVpbWFnZQAAAADdBww4cGFsbGV0X3Nlc3Npb24YcGFsbGV0KEhvbGRSZWFzb24AAQQQS2V5cwAAAADhBwwocGFsbGV0X3hjbRhwYWxsZXQoSG9sZFJlYXNvbgABBDhBdXRob3JpemVBbGlhcwAAAADlBwwocGFsbGV0X3BzbRhwYWxsZXQoSG9sZFJlYXNvbgABBDxDcmVhdGlvbkRlcG9zaXQAAAAA6QcMbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhwYWxsZXQoSG9sZFJlYXNvbgQESQABBDhDdXJhdG9yRGVwb3NpdAAAAADtBwxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldChIb2xkUmVhc29uAAEEPFNsYXNoRm9yTWlncmF0ZQAAAADxBwxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldChIb2xkUmVhc29uAAEERFN0YWtpbmdEZWxlZ2F0aW9uAAAAAPUHDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0KEhvbGRSZWFzb24AAQQQS2V5cwAAAAD5BxCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZBhwYWxsZXQoSG9sZFJlYXNvbgABBEBTaWduZWRTdWJtaXNzaW9uAAAAAP0HEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0KEhvbGRSZWFzb24AAQQcU3Rha2luZwAAAAABCAw0cGFsbGV0X3Jldml2ZRhwYWxsZXQoSG9sZFJlYXNvbgABDGBDb2RlVXBsb2FkRGVwb3NpdFJlc2VydmUAAABUU3RvcmFnZURlcG9zaXRSZXNlcnZlAAEAOEFkZHJlc3NNYXBwaW5nAAIAAAUIDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEIOEJhbGFuY2VVcGRhdGVkAAAAVEZhaWxlZFRvTXV0YXRlQWNjb3VudAABAAAJCAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEESFRyYW5zYWN0aW9uRmVlUGFpZAwBDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWVZAQEwQmFsYW5jZU9mPFQ+AAEMdGlwWQEBMEJhbGFuY2VPZjxUPgAACFkBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgLCBvZiB3aGljaCBgdGlwYCB3YXMgYWRkZWQgdG8gdGhlIG1pbmltdW0gaW5jbHVzaW9uIGZlZSxcaGFzIGJlZW4gcGFpZCBieSBgd2hvYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQNCAyIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQg4QXNzZXRUeEZlZVBhaWQQAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlWQEBMEJhbGFuY2VPZjxUPgABDHRpcFkBATBCYWxhbmNlT2Y8VD4AASBhc3NldF9pZB0CAShUOjpBc3NldElkAAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLLhoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gIGluIGFuIGFzc2V0IGBhc3NldF9pZGAuREFzc2V0UmVmdW5kRmFpbGVkBAFIbmF0aXZlX2Ftb3VudF9rZXB0WQEBMEJhbGFuY2VPZjxUPgABBPRBIHN3YXAgb2YgdGhlIHJlZnVuZCBpbiBuYXRpdmUgY3VycmVuY3kgYmFjayB0byBhc3NldCBmYWlsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0EQgMOHBhbGxldF92ZXN0aW5nGHBhbGxldBRFdmVudAQEVAABDDhWZXN0aW5nQ3JlYXRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAThzY2hlZHVsZV9pbmRleDgBDHUzMgAABJBBIHZlc3Rpbmcgc2NoZWR1bGUgaGFzIGJlZW4gY3JlYXRlZC44VmVzdGluZ1VwZGF0ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEgdW52ZXN0ZWRZAQEwQmFsYW5jZU9mPFQ+AAEIUQFUaGUgYW1vdW50IHZlc3RlZCBoYXMgYmVlbiB1cGRhdGVkLiBUaGlzIGNvdWxkIGluZGljYXRlIGEgY2hhbmdlIGluIGZ1bmRzIGF2YWlsYWJsZS4lAVRoZSBiYWxhbmNlIGdpdmVuIGlzIHRoZSBhbW91bnQgd2hpY2ggaXMgbGVmdCB1bnZlc3RlZCAoYW5kIHRodXMgbG9ja2VkKS5AVmVzdGluZ0NvbXBsZXRlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAgScQW4gXFthY2NvdW50XF0gaGFzIGJlY29tZSBmdWxseSB2ZXN0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0FQgQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltcxhwYWxsZXQURXZlbnQEBFQAAQQcQ2xhaW1lZAwBDHdobwQBMFQ6OkFjY291bnRJZAABQGV0aGVyZXVtX2FkZHJlc3N9AQE8RXRoZXJldW1BZGRyZXNzAAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgAABGhTb21lb25lIGNsYWltZWQgc29tZSBET1RzLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBkIDChwYWxsZXRfZGFwGHBhbGxldBRFdmVudAQEVAABEDhJc3N1YW5jZU1pbnRlZAgBMHRvdGFsX21pbnRlZFkBATBCYWxhbmNlT2Y8VD4EhFRvdGFsIGFtb3VudCBtaW50ZWQgaW4gdGhpcyBkcmlwLgE4ZWxhcHNlZF9taWxsaXMoAQx1NjQEiEVsYXBzZWQgdGltZSAobXMpIHNpbmNlIGxhc3QgZHJpcC4ABNxJbmZsYXRpb24gZHJpcHBlZCBhbmQgZGlzdHJpYnV0ZWQgdG8gYnVkZ2V0IHJlY2lwaWVudHMuXEJ1ZGdldEFsbG9jYXRpb25VcGRhdGVkBAEsYWxsb2NhdGlvbnOZAQFMQnVkZ2V0QWxsb2NhdGlvbk1hcAR4VGhlIG5ldyBidWRnZXQgYWxsb2NhdGlvbiBtYXAuAQS0QnVkZ2V0IGFsbG9jYXRpb24gd2FzIHVwZGF0ZWQgdmlhIGdvdmVybmFuY2UuOFN0YWdpbmdEcmFpbmVkBAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgQ8QW1vdW50IGRyYWluZWQuAgQBAUZ1bmRzIHdlcmUgZHJhaW5lZCBmcm9tIHRoZSBzdGFnaW5nIGFjY291bnQgaW50byB0aGUgREFQIGJ1ZmZlci4oVW5leHBlY3RlZAQAHQgBOFVuZXhwZWN0ZWRLaW5kAAMEsEFuIHVuZXhwZWN0ZWQvZGVmZW5zaXZlIGV2ZW50IHdhcyB0cmlnZ2VyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0HQgMKHBhbGxldF9kYXAYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEIKE1pbnRGYWlsZWQAAAA4RWxhcHNlZENsYW1wZWQIAThhY3R1YWxfZWxhcHNlZCgBDHU2NAABHGNlaWxpbmcoAQx1NjQAAQAAIQgMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEoQE5ld0ludnVsbmVyYWJsZXMEATRpbnZ1bG5lcmFibGVzYQEBRFZlYzxUOjpBY2NvdW50SWQ+AAAEbE5ldyBJbnZ1bG5lcmFibGVzIHdlcmUgc2V0LkRJbnZ1bG5lcmFibGVBZGRlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAQR0QSBuZXcgSW52dWxuZXJhYmxlIHdhcyBhZGRlZC5MSW52dWxuZXJhYmxlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAgRwQW4gSW52dWxuZXJhYmxlIHdhcyByZW1vdmVkLlBOZXdEZXNpcmVkQ2FuZGlkYXRlcwQBSGRlc2lyZWRfY2FuZGlkYXRlczgBDHUzMgADBKRUaGUgbnVtYmVyIG9mIGRlc2lyZWQgY2FuZGlkYXRlcyB3YXMgc2V0LkBOZXdDYW5kaWRhY3lCb25kBAEsYm9uZF9hbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAQEbFRoZSBjYW5kaWRhY3kgYm9uZCB3YXMgc2V0LjhDYW5kaWRhdGVBZGRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgAFBFxBIG5ldyBjYW5kaWRhdGUgam9pbmVkLlBDYW5kaWRhdGVCb25kVXBkYXRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgAGBHBCb25kIG9mIGEgY2FuZGlkYXRlIHVwZGF0ZWQuQENhbmRpZGF0ZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAcEYEEgY2FuZGlkYXRlIHdhcyByZW1vdmVkLkRDYW5kaWRhdGVSZXBsYWNlZAwBDG9sZAQBMFQ6OkFjY291bnRJZAABDG5ldwQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAgE9EFuIGFjY291bnQgd2FzIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBieSBhbm90aGVyIG9uZS5oSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAkIVQFBbiBhY2NvdW50IHdhcyB1bmFibGUgdG8gYmUgYWRkZWQgdG8gdGhlIEludnVsbmVyYWJsZXMgYmVjYXVzZSB0aGV5IGRpZCBub3QgaGF2ZSBrZXlzyHJlZ2lzdGVyZWQuIE90aGVyIEludnVsbmVyYWJsZXMgbWF5IGhhdmUgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0JQgMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFdmVudAQEVAABEChOZXdTZXNzaW9uBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAACDkBTmV3IHNlc3Npb24gaGFzIGhhcHBlbmVkLiBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBzZXNzaW9uIGluZGV4LCBub3QgdGhlnGJsb2NrIG51bWJlciBhcyB0aGUgdHlwZSBtaWdodCBzdWdnZXN0LiROZXdRdWV1ZWQAAQhJAVRoZSBgTmV3U2Vzc2lvbmAgZXZlbnQgaW4gdGhlIGN1cnJlbnQgYmxvY2sgYWxzbyBpbXBsaWVzIGEgbmV3IHZhbGlkYXRvciBzZXQgdG8gYmUccXVldWVkLkRWYWxpZGF0b3JEaXNhYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAIEcFZhbGlkYXRvciBoYXMgYmVlbiBkaXNhYmxlZC5IVmFsaWRhdG9yUmVlbmFibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAwR4VmFsaWRhdG9yIGhhcyBiZWVuIHJlLWVuYWJsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0KQgMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEEPFhjbXBNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAgBHFhjbUhhc2gAAATAQW4gSFJNUCBtZXNzYWdlIHdhcyBzZW50IHRvIGEgc2libGluZyBwYXJhY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0LQgMKHBhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAF0JEF0dGVtcHRlZAQBHG91dGNvbWUxCAFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW4dAgEgTG9jYXRpb24AASxkZXN0aW5hdGlvbh0CASBMb2NhdGlvbgABHG1lc3NhZ2UVAwEcWGNtPCgpPgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAEEYEFuIFhDTSBtZXNzYWdlIHdhcyBzZW50LihTZW5kRmFpbGVkEAEYb3JpZ2luHQIBIExvY2F0aW9uAAEsZGVzdGluYXRpb24dAgEgTG9jYXRpb24AARRlcnJvcjkIASRTZW5kRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAACBHhBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gc2VuZC48UHJvY2Vzc1hjbUVycm9yDAEYb3JpZ2luHQIBIExvY2F0aW9uAAEUZXJyb3JFAwEgWGNtRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAADBIRBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gcHJvY2Vzcy5IVW5leHBlY3RlZFJlc3BvbnNlCAEYb3JpZ2luHQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAQMWQFRdWVyeSByZXNwb25zZSByZWNlaXZlZCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhIHJlZ2lzdGVyZWQgcXVlcnkuIFRoaXMgbWF5IGJlIGJlY2F1c2UgYVUBbWF0Y2hpbmcgcXVlcnkgd2FzIG5ldmVyIHJlZ2lzdGVyZWQsIGl0IG1heSBiZSBiZWNhdXNlIGl0IGlzIGEgZHVwbGljYXRlIHJlc3BvbnNlLCBvcnBiZWNhdXNlIHRoZSBxdWVyeSB0aW1lZCBvdXQuNFJlc3BvbnNlUmVhZHkIASBxdWVyeV9pZCgBHFF1ZXJ5SWQAASByZXNwb25zZTkDASBSZXNwb25zZQAFCF0BUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIGlzIHJlYWR5IGZvciB0YWtpbmcgd2l0aCBgdGFrZV9yZXNwb25zZWAuIFRoZXJlIGlzgG5vIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGNhbGwuIE5vdGlmaWVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgABghZAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gaGFzqGJlZW4gZGlzcGF0Y2hlZCBhbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LkBOb3RpZnlPdmVyd2VpZ2h0FAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgAATRhY3R1YWxfd2VpZ2h0FQEBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHQVAQEYV2VpZ2h0AAcMSQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uWQFjb3VsZCBub3QgYmUgZGlzcGF0Y2hlZCBiZWNhdXNlIHRoZSBkaXNwYXRjaCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHdlaWdodORvcmlnaW5hbGx5IGJ1ZGdldGVkIGJ5IHRoaXMgcnVudGltZSBmb3IgdGhlIHF1ZXJ5IHJlc3VsdC5MTm90aWZ5RGlzcGF0Y2hFcnJvcgwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAgIVQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlcmUgd2FzIGEgZ2VuZXJhbCBlcnJvciB3aXRoiGRpc3BhdGNoaW5nIHRoZSBub3RpZmljYXRpb24gY2FsbC5ITm90aWZ5RGVjb2RlRmFpbGVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACQxRAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgZGlzcGF0Y2ggd2FzIHVuYWJsZSB0byBiZVkBZGVjb2RlZCBpbnRvIGEgYENhbGxgOyB0aGlzIG1pZ2h0IGJlIGR1ZSB0byBkaXNwYXRjaCBmdW5jdGlvbiBoYXZpbmcgYSBzaWduYXR1cmUgd2hpY2iUaXMgbm90IGAob3JpZ2luLCBRdWVyeUlkLCBSZXNwb25zZSlgLkBJbnZhbGlkUmVzcG9uZGVyDAEYb3JpZ2luHQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFEZXhwZWN0ZWRfbG9jYXRpb25ZAwFAT3B0aW9uPExvY2F0aW9uPgAKDFkBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBvcmlnaW4gbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNVAW5vdCBtYXRjaCB0aGF0IGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uXEludmFsaWRSZXNwb25kZXJWZXJzaW9uCAEYb3JpZ2luHQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAscUQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIG9yaWdpbiBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuNFJlc3BvbnNlVGFrZW4EASBxdWVyeV9pZCgBHFF1ZXJ5SWQADATIUmVjZWl2ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVhZCBhbmQgcmVtb3ZlZC40QXNzZXRzVHJhcHBlZAwBEGhhc2hAARBIMjU2AAEYb3JpZ2luHQIBIExvY2F0aW9uAAEYYXNzZXRzjQMBPFZlcnNpb25lZEFzc2V0cwANBLhTb21lIGFzc2V0cyBoYXZlIGJlZW4gcGxhY2VkIGluIGFuIGFzc2V0IHRyYXAuVFZlcnNpb25DaGFuZ2VOb3RpZmllZBABLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEYcmVzdWx0OAEoWGNtVmVyc2lvbgABEGNvc3QhAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gADgwlAUFuIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gbWVzc2FnZSBoYXMgYmVlbiBhdHRlbXB0ZWQgdG8gYmUgc2VudC4A4FRoZSBjb3N0IG9mIHNlbmRpbmcgaXQgKGJvcm5lIGJ5IHRoZSBjaGFpbikgaXMgaW5jbHVkZWQuXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkCAEgbG9jYXRpb24dAgEgTG9jYXRpb24AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAPCDkBVGhlIHN1cHBvcnRlZCB2ZXJzaW9uIG9mIGEgbG9jYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gVGhpcyBtaWdodCBiZSB0aHJvdWdoIGFuwGF1dG9tYXRpYyBub3RpZmljYXRpb24gb3IgYSBtYW51YWwgaW50ZXJ2ZW50aW9uLlBOb3RpZnlUYXJnZXRTZW5kRmFpbAwBIGxvY2F0aW9uHQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAEUZXJyb3JFAwEgWGNtRXJyb3IAEAhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9yfHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiB0byBpdC5kTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAgBIGxvY2F0aW9uyQEBRFZlcnNpb25lZExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABEIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcrRtaWdyYXRpbmcgdGhlIGxvY2F0aW9uIHRvIG91ciBuZXcgWENNIGZvcm1hdC5USW52YWxpZFF1ZXJpZXJWZXJzaW9uCAEYb3JpZ2luHQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABIcVQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIHF1ZXJpZXIgbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjhJbnZhbGlkUXVlcmllchABGG9yaWdpbh0CASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABQGV4cGVjdGVkX3F1ZXJpZXIdAgEgTG9jYXRpb24AAVBtYXliZV9hY3R1YWxfcXVlcmllclkDAUBPcHRpb248TG9jYXRpb24+ABMMXQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIHF1ZXJpZXIgbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNRAW5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5QVmVyc2lvbk5vdGlmeVN0YXJ0ZWQMASxkZXN0aW5hdGlvbh0CASBMb2NhdGlvbgABEGNvc3QhAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFAhZAUEgcmVtb3RlIGhhcyByZXF1ZXN0ZWQgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBmcm9tIHVzIGFuZCB3ZSBoYXZlIGhvbm9yZWQgaXQuHQFBIHZlcnNpb24gaW5mb3JtYXRpb24gbWVzc2FnZSBpcyBzZW50IHRvIHRoZW0gYW5kIGl0cyBjb3N0IGlzIGluY2x1ZGVkLlhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkDAEsZGVzdGluYXRpb24dAgEgTG9jYXRpb24AARBjb3N0IQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABUEPQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHNlbmQgdXMgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuYFZlcnNpb25Ob3RpZnlVbnJlcXVlc3RlZAwBLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEQY29zdCEDARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAWCCUBV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzdG9wcyBzZW5kaW5nIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZThub3RpZmljYXRpb25zLiBGZWVzUGFpZAgBGHBheWluZx0CASBMb2NhdGlvbgABEGZlZXMhAwEYQXNzZXRzABcEMQFGZWVzIHdlcmUgcGFpZCBmcm9tIGEgbG9jYXRpb24gZm9yIGFuIG9wZXJhdGlvbiAob2Z0ZW4gZm9yIHVzaW5nIGBTZW5kWGNtYCkuNEFzc2V0c0NsYWltZWQMARBoYXNoQAEQSDI1NgABGG9yaWdpbh0CASBMb2NhdGlvbgABGGFzc2V0c40DATxWZXJzaW9uZWRBc3NldHMAGATAU29tZSBhc3NldHMgaGF2ZSBiZWVuIGNsYWltZWQgZnJvbSBhbiBhc3NldCB0cmFwYFZlcnNpb25NaWdyYXRpb25GaW5pc2hlZAQBHHZlcnNpb244AShYY21WZXJzaW9uABkEhEEgWENNIHZlcnNpb24gbWlncmF0aW9uIGZpbmlzaGVkLjxBbGlhc0F1dGhvcml6ZWQMARxhbGlhc2VyHQIBIExvY2F0aW9uAAEYdGFyZ2V0HQIBIExvY2F0aW9uAAEYZXhwaXJ5AQEBLE9wdGlvbjx1NjQ+ABoIXQFBbiBgYWxpYXNlcmAgbG9jYXRpb24gd2FzIGF1dGhvcml6ZWQgYnkgYHRhcmdldGAgdG8gYWxpYXMgaXQsIGF1dGhvcml6YXRpb24gdmFsaWQgdW50aWxYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLmRBbGlhc0F1dGhvcml6YXRpb25SZW1vdmVkCAEcYWxpYXNlch0CASBMb2NhdGlvbgABGHRhcmdldB0CASBMb2NhdGlvbgAbBMxgdGFyZ2V0YCByZW1vdmVkIGFsaWFzIGF1dGhvcml6YXRpb24gZm9yIGBhbGlhc2VyYC5wQWxpYXNlc0F1dGhvcml6YXRpb25zUmVtb3ZlZAQBGHRhcmdldB0CASBMb2NhdGlvbgAcBKhgdGFyZ2V0YCByZW1vdmVkIGFsbCBhbGlhcyBhdXRob3JpemF0aW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQxCBAsc3RhZ2luZ194Y20IdjUYdHJhaXRzHE91dGNvbWUAAQwgQ29tcGxldGUEARB1c2VkFQEBGFdlaWdodAAAAChJbmNvbXBsZXRlCAEQdXNlZBUBARhXZWlnaHQAARRlcnJvcjUIAUBJbnN0cnVjdGlvbkVycm9yAAEAFEVycm9yBAA1CAFASW5zdHJ1Y3Rpb25FcnJvcgACAAA1CBAsc3RhZ2luZ194Y20IdjUYdHJhaXRzQEluc3RydWN0aW9uRXJyb3IAAAgBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9yRQMBFEVycm9yAAA5CBAMeGNtCHYzGHRyYWl0cyRTZW5kRXJyb3IAARw0Tm90QXBwbGljYWJsZQAAACRUcmFuc3BvcnQAAQAoVW5yb3V0YWJsZQACAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAMAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAEADxNaXNzaW5nQXJndW1lbnQABQAQRmVlcwAGAAA9CAxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABDDRJbnZhbGlkRm9ybWF0BAAIASBbdTg7IDMyXQAACIBEb3dud2FyZCBtZXNzYWdlIGlzIGludmFsaWQgWENNLiBcWyBpZCBcXUhVbnN1cHBvcnRlZFZlcnNpb24EAAgBIFt1ODsgMzJdAAEIvERvd253YXJkIG1lc3NhZ2UgaXMgdW5zdXBwb3J0ZWQgdmVyc2lvbiBvZiBYQ00uIFxbIGlkIFxdQEV4ZWN1dGVkRG93bndhcmQIAAgBIFt1ODsgMzJdAAAxCAEcT3V0Y29tZQACCMREb3dud2FyZCBtZXNzYWdlIGV4ZWN1dGVkIHdpdGggdGhlIGdpdmVuIG91dGNvbWUuRFxbIGlkLCBvdXRjb21lIFxdBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0QQgMcHBhbGxldF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIYcGFsbGV0FEV2ZW50CARUAARJAAEIaERlbGl2ZXJ5RmVlRmFjdG9yRGVjcmVhc2VkBAEkbmV3X3ZhbHVlGQUBJEZpeGVkVTEyOASUTmV3IHZhbHVlIG9mIHRoZSBgRGVsaXZlcnlGZWVGYWN0b3JgLgAEnERlbGl2ZXJ5IGZlZSBmYWN0b3IgaGFzIGJlZW4gZGVjcmVhc2VkLmhEZWxpdmVyeUZlZUZhY3RvckluY3JlYXNlZAQBJG5ld192YWx1ZRkFASRGaXhlZFUxMjgElE5ldyB2YWx1ZSBvZiB0aGUgYERlbGl2ZXJ5RmVlRmFjdG9yYC4BBJxEZWxpdmVyeSBmZWUgZmFjdG9yIGhhcyBiZWVuIGluY3JlYXNlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRFCAxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEQQFByb2Nlc3NpbmdGYWlsZWQMAQhpZEABEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbtEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BFGVycm9ySQgBTFByb2Nlc3NNZXNzYWdlRXJyb3IQYFRoZSBlcnJvciB0aGF0IG9jY3VycmVkLgBJAVRoaXMgZXJyb3IgaXMgcHJldHR5IG9wYXF1ZS4gTW9yZSBmaW5lLWdyYWluZWQgZXJyb3JzIG5lZWQgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4ABFUBTWVzc2FnZSBkaXNjYXJkZWQgZHVlIHRvIGFuIGVycm9yIGluIHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAgKHVzdWFsbHkgYSBmb3JtYXQgZXJyb3IpLiRQcm9jZXNzZWQQAQhpZEABEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbtEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BLHdlaWdodF91c2VkFQEBGFdlaWdodATASG93IG11Y2ggd2VpZ2h0IHdhcyB1c2VkIHRvIHByb2Nlc3MgdGhlIG1lc3NhZ2UuARxzdWNjZXNzXQEBEGJvb2wYiFdoZXRoZXIgdGhlIG1lc3NhZ2Ugd2FzIHByb2Nlc3NlZC4ASQFOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQgdGhlIHVuZGVybHlpbmcgYE1lc3NhZ2VQcm9jZXNzb3JgIHdhcyBpbnRlcm5hbGx5NQFzdWNjZXNzZnVsLiBJdCAqc29sZWx5KiBtZWFucyB0aGF0IHRoZSBNUSBwYWxsZXQgd2lsbCB0cmVhdCB0aGlzIGFzIGEgc3VjY2Vzc00BY29uZGl0aW9uIGFuZCBkaXNjYXJkIHRoZSBtZXNzYWdlLiBBbnkgaW50ZXJuYWwgZXJyb3IgbmVlZHMgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4BBFRNZXNzYWdlIGlzIHByb2Nlc3NlZC5IT3ZlcndlaWdodEVucXVldWVkEAEIaWQIASBbdTg7IDMyXQSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lu0QMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEocGFnZV9pbmRleDgBJFBhZ2VJbmRleARgVGhlIHBhZ2Ugb2YgdGhlIG1lc3NhZ2UuATRtZXNzYWdlX2luZGV4OAEcVDo6U2l6ZQSkVGhlIGluZGV4IG9mIHRoZSBtZXNzYWdlIHdpdGhpbiB0aGUgcGFnZS4CBIxNZXNzYWdlIHBsYWNlZCBpbiBvdmVyd2VpZ2h0IHF1ZXVlLihQYWdlUmVhcGVkCAEYb3JpZ2lu0QMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRYVGhlIHF1ZXVlIG9mIHRoZSBwYWdlLgEUaW5kZXg4ASRQYWdlSW5kZXgEWFRoZSBpbmRleCBvZiB0aGUgcGFnZS4DBFRUaGlzIHBhZ2Ugd2FzIHJlYXBlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRJCBA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgbWVzc2FnZXNMUHJvY2Vzc01lc3NhZ2VFcnJvcgABGCRCYWRGb3JtYXQAAAAcQ29ycnVwdAABACxVbnN1cHBvcnRlZAACAChPdmVyd2VpZ2h0BAAVAQEYV2VpZ2h0AAMAFFlpZWxkAAQARFN0YWNrTGltaXRSZWFjaGVkAAUAAE0IDIRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQYcGFsbGV0FEV2ZW50BARUAAEILE1lc3NhZ2VTZW50EAEYb3JpZ2luHQIBIExvY2F0aW9uAAEsZGVzdGluYXRpb24dAgEgTG9jYXRpb24AARxtZXNzYWdlFQMBHFhjbTwoKT4AAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAABDxBbiBYQ00gd2FzIHNlbnRoRXhwb3J0T3BlcmF0aW5nTW9kZUNoYW5nZWQEARBtb2Rl2QMBNE9wZXJhdGluZ01vZGUAAQREU2V0IE9wZXJhdGluZ01vZGUEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRRCAw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0FEV2ZW50AAEgQEJhdGNoSW50ZXJydXB0ZWQIARRpbmRleDgBDHUzMgABFGVycm9yeQcBNERpc3BhdGNoRXJyb3IAAAhVAUJhdGNoIG9mIGRpc3BhdGNoZXMgZGlkIG5vdCBjb21wbGV0ZSBmdWxseS4gSW5kZXggb2YgZmlyc3QgZmFpbGluZyBkaXNwYXRjaCBnaXZlbiwgYXNId2VsbCBhcyB0aGUgZXJyb3IuOEJhdGNoQ29tcGxldGVkAAEEyEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGZ1bGx5IHdpdGggbm8gZXJyb3IuYEJhdGNoQ29tcGxldGVkV2l0aEVycm9ycwACBLRCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBidXQgaGFzIGVycm9ycy40SXRlbUNvbXBsZXRlZAADBB0BQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBubyBlcnJvci4oSXRlbUZhaWxlZAQBFGVycm9yeQcBNERpc3BhdGNoRXJyb3IABAQRAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggZXJyb3IuMERpc3BhdGNoZWRBcwQBGHJlc3VsdJ0HAThEaXNwYXRjaFJlc3VsdAAFBFhBIGNhbGwgd2FzIGRpc3BhdGNoZWQuRElmRWxzZU1haW5TdWNjZXNzAAYEZE1haW4gY2FsbCB3YXMgZGlzcGF0Y2hlZC5QSWZFbHNlRmFsbGJhY2tDYWxsZWQEAShtYWluX2Vycm9yeQcBNERpc3BhdGNoRXJyb3IABwSEVGhlIGZhbGxiYWNrIGNhbGwgd2FzIGRpc3BhdGNoZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0VQgMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXZlbnQEBFQAARQsTmV3TXVsdGlzaWcMASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAAEjEEgbmV3IG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVndW4uQE11bHRpc2lnQXBwcm92YWwQASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQVBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAQTIQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gYXBwcm92ZWQgYnkgc29tZW9uZS5ATXVsdGlzaWdFeGVjdXRlZBQBJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludBUEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABGHJlc3VsdJ0HAThEaXNwYXRjaFJlc3VsdAACBJxBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBleGVjdXRlZC5ETXVsdGlzaWdDYW5jZWxsZWQQAShjYW5jZWxsaW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50FQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAMEoEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGNhbmNlbGxlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAASxvbGRfZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4AASxuZXdfZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4ABATwVGhlIGRlcG9zaXQgZm9yIGEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQvcG9rZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0WQgMMHBhbGxldF9wcm94eRhwYWxsZXQURXZlbnQEBFQAARw0UHJveHlFeGVjdXRlZAQBGHJlc3VsdJ0HAThEaXNwYXRjaFJlc3VsdAAABLxBIHByb3h5IHdhcyBleGVjdXRlZCBjb3JyZWN0bHksIHdpdGggdGhlIGdpdmVuLixQdXJlQ3JlYXRlZBgBEHB1cmUEATBUOjpBY2NvdW50SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlIQQBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV47QMBDHUxNgABCGF0OAFEQmxvY2tOdW1iZXJGb3I8VD4AATxleHRyaW5zaWNfaW5kZXg4AQx1MzIAAQjcQSBwdXJlIGFjY291bnQgaGFzIGJlZW4gY3JlYXRlZCBieSBuZXcgcHJveHkgd2l0aCBnaXZlbpBkaXNhbWJpZ3VhdGlvbiBpbmRleCBhbmQgcHJveHkgdHlwZS4oUHVyZUtpbGxlZBABEHB1cmUEATBUOjpBY2NvdW50SWQAARxzcGF3bmVyBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZSEEATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRleO0DAQx1MTYAAgScQSBwdXJlIHByb3h5IHdhcyBraWxsZWQgYnkgaXRzIHNwYXduZXIuJEFubm91bmNlZAwBEHJlYWwEATBUOjpBY2NvdW50SWQAARRwcm94eQQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaEABNENhbGxIYXNoT2Y8VD4AAwTgQW4gYW5ub3VuY2VtZW50IHdhcyBwbGFjZWQgdG8gbWFrZSBhIGNhbGwgaW4gdGhlIGZ1dHVyZS4oUHJveHlBZGRlZBABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRlZQQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGUhBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgAEBEhBIHByb3h5IHdhcyBhZGRlZC4wUHJveHlSZW1vdmVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZSEEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAUEUEEgcHJveHkgd2FzIHJlbW92ZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABEGtpbmRdCAEsRGVwb3NpdEtpbmQAASxvbGRfZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4AASxuZXdfZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4ABgQJAUEgZGVwb3NpdCBzdG9yZWQgZm9yIHByb3hpZXMgb3IgYW5ub3VuY2VtZW50cyB3YXMgcG9rZWQgLyB1cGRhdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldF0ICDBwYWxsZXRfcHJveHksRGVwb3NpdEtpbmQAAQgcUHJveGllcwAAADRBbm5vdW5jZW1lbnRzAAEAAGEIDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQURXZlbnQEBFQAARA0SW5kZXhBc3NpZ25lZAgBDHdobwQBMFQ6OkFjY291bnRJZAABFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAAEdEEgYWNjb3VudCBpbmRleCB3YXMgYXNzaWduZWQuKEluZGV4RnJlZWQEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABBLxBIGFjY291bnQgaW5kZXggaGFzIGJlZW4gZnJlZWQgdXAgKHVuYXNzaWduZWQpLixJbmRleEZyb3plbggBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEMd2hvBAEwVDo6QWNjb3VudElkAAIE6EEgYWNjb3VudCBpbmRleCBoYXMgYmVlbiBmcm96ZW4gdG8gaXRzIGN1cnJlbnQgYWNjb3VudCBJRC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAASxvbGRfZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4AASxuZXdfZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4AAwToQSBkZXBvc2l0IHRvIHJlc2VydmUgYW4gaW5kZXggaGFzIGJlZW4gcG9rZWQvcmVjb25zaWRlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldGUIDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlWQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAQEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC4wT3duZXJDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAcEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgdGhhd2VkLixBc3NldEZyb3plbgQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFIYWNjb3VudHNfZGVzdHJveWVkOAEMdTMyAAFIYWNjb3VudHNfcmVtYWluaW5nOAEMdTMyAAoEoEFjY291bnRzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IQXBwcm92YWxzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAA0EdEFuIGFzc2V0IGNsYXNzIHdhcyBkZXN0cm95ZWQuMEZvcmNlQ3JlYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbl0BARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABMIMQFBbiBgYW1vdW50YCB3YXMgdHJhbnNmZXJyZWQgaW4gaXRzIGVudGlyZXR5IGZyb20gYG93bmVyYCB0byBgZGVzdGluYXRpb25gIGJ5YHRoZSBhcHByb3ZlZCBgZGVsZWdhdGVgLkhBc3NldFN0YXR1c0NoYW5nZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABkEIQFTb21lIGFzc2V0cyB3ZXJlIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS48UmVzZXJ2ZXNVcGRhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEgcmVzZXJ2ZXMxBAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABwExFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkIGFzIENyZWRpdCAobm8gb3duZXIgeWV0KS4wQnVybmVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHwTMU29tZSBhc3NldHMgRGVidCB3YXMgZGVzdHJveWVkIChhbmQgYXNzZXRzIGlzc3VlZCkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0aQgMOHBhbGxldF91bmlxdWVzGHBhbGxldBRFdmVudAgEVAAESQABbBxDcmVhdGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABGxBIGBjb2xsZWN0aW9uYCB3YXMgY3JlYXRlZC4wRm9yY2VDcmVhdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEEhEEgYGNvbGxlY3Rpb25gIHdhcyBmb3JjZS1jcmVhdGVkLiREZXN0cm95ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAIEdEEgYGNvbGxlY3Rpb25gIHdhcyBkZXN0cm95ZWQuGElzc3VlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAwRUQW4gYGl0ZW1gIHdhcyBpc3N1ZWQuLFRyYW5zZmVycmVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQABARoQW4gYGl0ZW1gIHdhcyB0cmFuc2ZlcnJlZC4YQnVybmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBGBBbiBgaXRlbWAgd2FzIGRlc3Ryb3llZC4YRnJvemVuCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABgRcU29tZSBgaXRlbWAgd2FzIGZyb3plbi4YVGhhd2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABwRcU29tZSBgaXRlbWAgd2FzIHRoYXdlZC5AQ29sbGVjdGlvbkZyb3plbgQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQACAR0U29tZSBgY29sbGVjdGlvbmAgd2FzIGZyb3plbi5AQ29sbGVjdGlvblRoYXdlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQACQR0U29tZSBgY29sbGVjdGlvbmAgd2FzIHRoYXdlZC4wT3duZXJDaGFuZ2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcgQBMFQ6OkFjY291bnRJZAAKBEhUaGUgb3duZXIgY2hhbmdlZC4sVGVhbUNoYW5nZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAsEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC5AQXBwcm92ZWRUcmFuc2ZlchABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAAMCDEBQW4gYGl0ZW1gIG9mIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHRoZSBgb3duZXJgIGZvciB0cmFuc2ZlciBieTRhIGBkZWxlZ2F0ZWAuREFwcHJvdmFsQ2FuY2VsbGVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAA0IGQFBbiBhcHByb3ZhbCBmb3IgYSBgZGVsZWdhdGVgIGFjY291bnQgdG8gdHJhbnNmZXIgdGhlIGBpdGVtYCBvZiBhbiBpdGVtqGBjb2xsZWN0aW9uYCB3YXMgY2FuY2VsbGVkIGJ5IGl0cyBgb3duZXJgLkRJdGVtU3RhdHVzQ2hhbmdlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQADgQRAUEgYGNvbGxlY3Rpb25gIGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uVENvbGxlY3Rpb25NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhRQQBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbl0BARBib29sAA8EtE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gLmRDb2xsZWN0aW9uTWV0YWRhdGFDbGVhcmVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAQBLRNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYC4sTWV0YWRhdGFTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRhdGFFBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuXQEBEGJvb2wAEQSYTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gaXRlbS48TWV0YWRhdGFDbGVhcmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEgSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4sUmVkZXBvc2l0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAFAc3VjY2Vzc2Z1bF9pdGVtc0EEAThWZWM8VDo6SXRlbUlkPgATBJhNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBpdGVtLjBBdHRyaWJ1dGVTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5nQEBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlfAF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AFAQFAU5ldyBhdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuQEF0dHJpYnV0ZUNsZWFyZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5nQEBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgAVBAUBQXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5oT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb2xsZWN0aW9u5AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AFgTAT3duZXJzaGlwIGFjY2VwdGFuY2UgaGFzIGNoYW5nZWQgZm9yIGFuIGFjY291bnQuWENvbGxlY3Rpb25NYXhTdXBwbHlTZXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAXBKRNYXggc3VwcGx5IGhhcyBiZWVuIHNldCBmb3IgYSBjb2xsZWN0aW9uLjBJdGVtUHJpY2VTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlWQEBPEl0ZW1QcmljZTxULCBJPgABRHdoaXRlbGlzdGVkX2J1eWVykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+ABgEjFRoZSBwcmljZSB3YXMgc2V0IGZvciB0aGUgaW5zdGFuY2UuQEl0ZW1QcmljZVJlbW92ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAZBJxUaGUgcHJpY2UgZm9yIHRoZSBpbnN0YW5jZSB3YXMgcmVtb3ZlZC4oSXRlbUJvdWdodBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2VZAQE8SXRlbVByaWNlPFQsIEk+AAEYc2VsbGVyBAEwVDo6QWNjb3VudElkAAEUYnV5ZXIEATBUOjpBY2NvdW50SWQAGgRMQW4gaXRlbSB3YXMgYm91Z2h0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldG0IDCxwYWxsZXRfbmZ0cxhwYWxsZXQURXZlbnQIBFQABEkAAZgcQ3JlYXRlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAARsQSBgY29sbGVjdGlvbmAgd2FzIGNyZWF0ZWQuMEZvcmNlQ3JlYXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABBIRBIGBjb2xsZWN0aW9uYCB3YXMgZm9yY2UtY3JlYXRlZC4kRGVzdHJveWVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAACBHRBIGBjb2xsZWN0aW9uYCB3YXMgZGVzdHJveWVkLhhJc3N1ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAMEVEFuIGBpdGVtYCB3YXMgaXNzdWVkLixUcmFuc2ZlcnJlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAQEaEFuIGBpdGVtYCB3YXMgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRgQW4gYGl0ZW1gIHdhcyBkZXN0cm95ZWQuSEl0ZW1UcmFuc2ZlckxvY2tlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAYEiEFuIGBpdGVtYCBiZWNhbWUgbm9uLXRyYW5zZmVyYWJsZS5QSXRlbVRyYW5zZmVyVW5sb2NrZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAHBHhBbiBgaXRlbWAgYmVjYW1lIHRyYW5zZmVyYWJsZS5QSXRlbVByb3BlcnRpZXNMb2NrZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABNGxvY2tfbWV0YWRhdGFdAQEQYm9vbAABPGxvY2tfYXR0cmlidXRlc10BARBib29sAAgEqGBpdGVtYCBtZXRhZGF0YSBvciBhdHRyaWJ1dGVzIHdlcmUgbG9ja2VkLkBDb2xsZWN0aW9uTG9ja2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAJBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgbG9ja2VkLjBPd25lckNoYW5nZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyBAEwVDo6QWNjb3VudElkAAoESFRoZSBvd25lciBjaGFuZ2VkLixUZWFtQ2hhbmdlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXKRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARRhZG1pbpEBAVBPcHRpb248VDo6QWNjb3VudElkPgABHGZyZWV6ZXKRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4ACwRwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLkBUcmFuc2ZlckFwcHJvdmVkFAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEgZGVhZGxpbmXkAXBPcHRpb248QmxvY2tOdW1iZXJGb3I8VCwgST4+AAwIMQFBbiBgaXRlbWAgb2YgYSBgY29sbGVjdGlvbmAgaGFzIGJlZW4gYXBwcm92ZWQgYnkgdGhlIGBvd25lcmAgZm9yIHRyYW5zZmVyIGJ5NGEgYGRlbGVnYXRlYC5EQXBwcm92YWxDYW5jZWxsZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQADQgZAUFuIGFwcHJvdmFsIGZvciBhIGBkZWxlZ2F0ZWAgYWNjb3VudCB0byB0cmFuc2ZlciB0aGUgYGl0ZW1gIG9mIGFuIGl0ZW2oYGNvbGxlY3Rpb25gIHdhcyBjYW5jZWxsZWQgYnkgaXRzIGBvd25lcmAuVEFsbEFwcHJvdmFsc0NhbmNlbGxlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgScQWxsIGFwcHJvdmFscyBvZiBhbiBpdGVtIGdvdCBjYW5jZWxsZWQuXENvbGxlY3Rpb25Db25maWdDaGFuZ2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAPBAEBQSBgY29sbGVjdGlvbmAgaGFzIGhhZCBpdHMgY29uZmlnIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlRDb2xsZWN0aW9uTWV0YWRhdGFTZXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQZGF0YUUBAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AEAS0TmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAuZENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkABEEtE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gLjxJdGVtTWV0YWRhdGFTZXQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRhdGFFAQF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABIEmE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGl0ZW0uTEl0ZW1NZXRhZGF0YUNsZWFyZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAATBJhNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBpdGVtLixSZWRlcG9zaXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUBzdWNjZXNzZnVsX2l0ZW1zQQQBOFZlYzxUOjpJdGVtSWQ+ABQEIQFUaGUgZGVwb3NpdCBmb3IgYSBzZXQgb2YgYGl0ZW1gcyB3aXRoaW4gYSBgY29sbGVjdGlvbmAgaGFzIGJlZW4gdXBkYXRlZC4wQXR0cmlidXRlU2V0FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3kAURPcHRpb248VDo6SXRlbUlkPgABDGtleXwBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlRQEBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+AAEkbmFtZXNwYWNlfQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ABUEBQFOZXcgYXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLkBBdHRyaWJ1dGVDbGVhcmVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3kAURPcHRpb248VDo6SXRlbUlkPgABDGtleXwBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABJG5hbWVzcGFjZX0EAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgAWBAUBQXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5sSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAAXBMxBIG5ldyBhcHByb3ZhbCB0byBtb2RpZnkgaXRlbSBhdHRyaWJ1dGVzIHdhcyBhZGRlZC50SXRlbUF0dHJpYnV0ZXNBcHByb3ZhbFJlbW92ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABgE1EEgbmV3IGFwcHJvdmFsIHRvIG1vZGlmeSBpdGVtIGF0dHJpYnV0ZXMgd2FzIHJlbW92ZWQuaE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAFAbWF5YmVfY29sbGVjdGlvbuQBXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABkEwE93bmVyc2hpcCBhY2NlcHRhbmNlIGhhcyBjaGFuZ2VkIGZvciBhbiBhY2NvdW50LlhDb2xsZWN0aW9uTWF4U3VwcGx5U2V0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAGgSkTWF4IHN1cHBseSBoYXMgYmVlbiBzZXQgZm9yIGEgY29sbGVjdGlvbi50Q29sbGVjdGlvbk1pbnRTZXR0aW5nc1VwZGF0ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkABsErE1pbnQgc2V0dGluZ3MgZm9yIGEgY29sbGVjdGlvbiBoYWQgY2hhbmdlZC5sTmV4dENvbGxlY3Rpb25JZEluY3JlbWVudGVkBAEcbmV4dF9pZOQBXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABwEAQFFdmVudCBnZXRzIGVtaXR0ZWQgd2hlbiB0aGUgYE5leHRDb2xsZWN0aW9uSWRgIGdldHMgaW5jcmVtZW50ZWQuMEl0ZW1QcmljZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2VZAQE8SXRlbVByaWNlPFQsIEk+AAFEd2hpdGVsaXN0ZWRfYnV5ZXKRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AHQR8VGhlIHByaWNlIHdhcyBzZXQgZm9yIHRoZSBpdGVtLkBJdGVtUHJpY2VSZW1vdmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAHgSMVGhlIHByaWNlIGZvciB0aGUgaXRlbSB3YXMgcmVtb3ZlZC4oSXRlbUJvdWdodBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2VZAQE8SXRlbVByaWNlPFQsIEk+AAEYc2VsbGVyBAEwVDo6QWNjb3VudElkAAEUYnV5ZXIEATBUOjpBY2NvdW50SWQAHwRMQW4gaXRlbSB3YXMgYm91Z2h0LhxUaXBTZW50FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARhzZW5kZXIEATBUOjpBY2NvdW50SWQAASByZWNlaXZlcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAVhEZXBvc2l0QmFsYW5jZU9mPFQsIEk+ACAEPEEgdGlwIHdhcyBzZW50LixTd2FwQ3JlYXRlZBgBSG9mZmVyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbTgBJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEUcHJpY2WRBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIQSIQW4gYGl0ZW1gIHN3YXAgaW50ZW50IHdhcyBjcmVhdGVkLjRTd2FwQ2FuY2VsbGVkGAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkAAFIZGVzaXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwZGVzaXJlZF9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AARRwcmljZZEEAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmU4AVBCbG9ja051bWJlckZvcjxULCBJPgAiBFxUaGUgc3dhcCB3YXMgY2FuY2VsbGVkLixTd2FwQ2xhaW1lZCABPHNlbnRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJHNlbnRfaXRlbTgBJFQ6Okl0ZW1JZAABPHNlbnRfaXRlbV9vd25lcgQBMFQ6OkFjY291bnRJZAABTHJlY2VpdmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATRyZWNlaXZlZF9pdGVtOAEkVDo6SXRlbUlkAAFMcmVjZWl2ZWRfaXRlbV9vd25lcgQBMFQ6OkFjY291bnRJZAABFHByaWNlkQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACMEaFRoZSBzd2FwIGhhcyBiZWVuIGNsYWltZWQuWFByZVNpZ25lZEF0dHJpYnV0ZXNTZXQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABJG5hbWVzcGFjZX0EAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgAkBPxOZXcgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0IGZvciBhbiBgaXRlbWAgb2YgdGhlIGBjb2xsZWN0aW9uYC5IUGFsbGV0QXR0cmlidXRlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW3kAURPcHRpb248VDo6SXRlbUlkPgABJGF0dHJpYnV0ZXEIAYRQYWxsZXRBdHRyaWJ1dGVzPFQ6OkNvbGxlY3Rpb25JZD4AARR2YWx1ZUUBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAlCE0BQSBuZXcgYXR0cmlidXRlIGluIHRoZSBgUGFsbGV0YCBuYW1lc3BhY2Ugd2FzIHNldCBmb3IgdGhlIGBjb2xsZWN0aW9uYCBvciBhbiBgaXRlbWBkd2l0aGluIHRoYXQgYGNvbGxlY3Rpb25gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHEIDCxwYWxsZXRfbmZ0cxR0eXBlc0BQYWxsZXRBdHRyaWJ1dGVzBDBDb2xsZWN0aW9uSWQBOAEILFVzZWRUb0NsYWltBAA4ATBDb2xsZWN0aW9uSWQAAABAVHJhbnNmZXJEaXNhYmxlZAABAAB1CAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2VZAQEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAQEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC4wT3duZXJDaGFuZ2VkCAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAcEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgdGhhd2VkLixBc3NldEZyb3plbgQBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZB0CAShUOjpBc3NldElkAAFIYWNjb3VudHNfZGVzdHJveWVkOAEMdTMyAAFIYWNjb3VudHNfcmVtYWluaW5nOAEMdTMyAAoEoEFjY291bnRzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IQXBwcm92YWxzRGVzdHJveWVkDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZB0CAShUOjpBc3NldElkAA0EdEFuIGFzc2V0IGNsYXNzIHdhcyBkZXN0cm95ZWQuMEZvcmNlQ3JlYXRlZAgBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuXQEBEGJvb2wADwScTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gYXNzZXQuPE1ldGFkYXRhQ2xlYXJlZAQBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABMIMQFBbiBgYW1vdW50YCB3YXMgdHJhbnNmZXJyZWQgaW4gaXRzIGVudGlyZXR5IGZyb20gYG93bmVyYCB0byBgZGVzdGluYXRpb25gIGJ5YHRoZSBhcHByb3ZlZCBgZGVsZWdhdGVgLkhBc3NldFN0YXR1c0NoYW5nZWQEASBhc3NldF9pZB0CAShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNlWQEBKFQ6OkJhbGFuY2UAFQQBAVRoZSBtaW5fYmFsYW5jZSBvZiBhbiBhc3NldCBoYXMgYmVlbiB1cGRhdGVkIGJ5IHRoZSBhc3NldCBvd25lci4cVG91Y2hlZAwBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABkEIQFTb21lIGFzc2V0cyB3ZXJlIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS48UmVzZXJ2ZXNVcGRhdGVkCAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABIHJlc2VydmVzuQQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAGwS8UmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgcmVtb3ZlZCBmb3IgYGFzc2V0X2lkYC4wSXNzdWVkQ3JlZGl0CAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABwExFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkIGFzIENyZWRpdCAobm8gb3duZXIgeWV0KS4wQnVybmVkQ3JlZGl0CAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAB4EvFNvbWUgYXNzZXRzIHdlcmUgYnVybmVkIGFuZCBhIERlYnQgd2FzIGNyZWF0ZWQuKEJ1cm5lZERlYnQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHwTMU29tZSBhc3NldHMgRGVidCB3YXMgZGVzdHJveWVkIChhbmQgYXNzZXRzIGlzc3VlZCkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0eQgMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2VZAQEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuXQEBEGJvb2wADwScTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gYXNzZXQuPE1ldGFkYXRhQ2xlYXJlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNlWQEBKFQ6OkJhbGFuY2UAFQQBAVRoZSBtaW5fYmFsYW5jZSBvZiBhbiBhc3NldCBoYXMgYmVlbiB1cGRhdGVkIGJ5IHRoZSBhc3NldCBvd25lci4cVG91Y2hlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAASByZXNlcnZlczEEAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAGwS8UmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgcmVtb3ZlZCBmb3IgYGFzc2V0X2lkYC4wSXNzdWVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHATEU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQgYXMgQ3JlZGl0IChubyBvd25lciB5ZXQpLjBCdXJuZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAB4EvFNvbWUgYXNzZXRzIHdlcmUgYnVybmVkIGFuZCBhIERlYnQgd2FzIGNyZWF0ZWQuKEJ1cm5lZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAfBMxTb21lIGFzc2V0cyBEZWJ0IHdhcyBkZXN0cm95ZWQgKGFuZCBhc3NldHMgaXNzdWVkKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR9CAxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0FEV2ZW50BARUAAEYLFBvb2xDcmVhdGVkEAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZASIVGhlIGFjY291bnQgdGhhdCBjcmVhdGVkIHRoZSBwb29sLgEccG9vbF9pZIEIASRUOjpQb29sSWQISQFUaGUgcG9vbCBpZCBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2wuIE5vdGUgdGhhdCB0aGUgb3JkZXIgb2YgdGhlIGFzc2V0cyBtYXkgbm90IGJl9HRoZSBzYW1lIGFzIHRoZSBvcmRlciBzcGVjaWZpZWQgaW4gdGhlIGNyZWF0ZSBwb29sIGV4dHJpbnNpYy4BMHBvb2xfYWNjb3VudAQBMFQ6OkFjY291bnRJZARsVGhlIGFjY291bnQgSUQgb2YgdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkCEEBVGhlIGlkIG9mIHRoZSBsaXF1aWRpdHkgdG9rZW5zIHRoYXQgd2lsbCBiZSBtaW50ZWQgd2hlbiBhc3NldHMgYXJlIGFkZGVkIHRvIHRoaXMUcG9vbC4ABB0BQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBDcmVhdGVQb29sYCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC44TGlxdWlkaXR5QWRkZWQcAQx3aG8EATBUOjpBY2NvdW50SWQEuFRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgdGFrZW4gZnJvbS4BHG1pbnRfdG8EATBUOjpBY2NvdW50SWQE1FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBtaW50ZWQgdG8uARxwb29sX2lkgQgBJFQ6OlBvb2xJZATgVGhlIHBvb2wgaWQgb2YgdGhlIHBvb2wgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyBhZGRlZCB0by4BQGFtb3VudDFfcHJvdmlkZWRZAQEoVDo6QmFsYW5jZQTkVGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHBvb2wuAUBhbW91bnQyX3Byb3ZpZGVkWQEBKFQ6OkJhbGFuY2UE6FRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQEnFRoZSBpZCBvZiB0aGUgbHAgdG9rZW4gdGhhdCB3YXMgbWludGVkLgE8bHBfdG9rZW5fbWludGVkWQEBKFQ6OkJhbGFuY2UE0FRoZSBhbW91bnQgb2YgbHAgdG9rZW5zIHRoYXQgd2VyZSBtaW50ZWQgb2YgdGhhdCBpZC4BBCUBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBBZGRMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LkBMaXF1aWRpdHlSZW1vdmVkIAEMd2hvBAEwVDo6QWNjb3VudElkBNxUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHdlcmUgYnVybmVkIGZyb20uASx3aXRoZHJhd190bwQBMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uARxwb29sX2lkgQgBJFQ6OlBvb2xJZATAVGhlIHBvb2wgaWQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyByZW1vdmVkIGZyb20uARxhbW91bnQxWQEBKFQ6OkJhbGFuY2UE9FRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgcG9vbC4BHGFtb3VudDJZAQEoVDo6QmFsYW5jZQT4VGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQEnFRoZSBpZCBvZiB0aGUgbHAgdG9rZW4gdGhhdCB3YXMgYnVybmVkLgE8bHBfdG9rZW5fYnVybmVkWQEBKFQ6OkJhbGFuY2UE0FRoZSBhbW91bnQgb2YgbHAgdG9rZW5zIHRoYXQgd2VyZSBidXJuZWQgb2YgdGhhdCBpZC4BOHdpdGhkcmF3YWxfZmVlzQQBHFBlcm1pbGwEdExpcXVpZGl0eSB3aXRoZHJhd2FsIGZlZSAoJSkuAgQxAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgUmVtb3ZlTGlxdWlkaXR5YCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC4wU3dhcEV4ZWN1dGVkFAEMd2hvBAEwVDo6QWNjb3VudElkBLRXaGljaCBhY2NvdW50IHdhcyB0aGUgaW5zdGlnYXRvciBvZiB0aGUgc3dhcC4BHHNlbmRfdG8EATBUOjpBY2NvdW50SWQEwFRoZSBhY2NvdW50IHRoYXQgdGhlIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkIHRvLgEkYW1vdW50X2luWQEBKFQ6OkJhbGFuY2UEvFRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHN3YXBwZWQuAShhbW91bnRfb3V0WQEBKFQ6OkJhbGFuY2UExFRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZWNlaXZlZC4BEHBhdGiFCAE4QmFsYW5jZVBhdGg8VD4I/FRoZSByb3V0ZSBvZiBhc3NldCBJRHMgd2l0aCBhbW91bnRzIHRoYXQgdGhlIHN3YXAgd2VudCB0aHJvdWdoLuxFLmcuIChBLCBhbW91bnRfaW4pIC0+IChEb3QsIGFtb3VudF9vdXQpIC0+IChCLCBhbW91bnRfb3V0KQMINQFBc3NldHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCBmcm9tIG9uZSB0byBhbm90aGVyLiBCb3RoIGBTd2FwRXhhY3RUb2tlbkZvclRva2VuYNhhbmQgYFN3YXBUb2tlbkZvckV4YWN0VG9rZW5gIHdpbGwgZ2VuZXJhdGUgdGhpcyBldmVudC5IU3dhcENyZWRpdEV4ZWN1dGVkDAEkYW1vdW50X2luWQEBKFQ6OkJhbGFuY2UEvFRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHN3YXBwZWQuAShhbW91bnRfb3V0WQEBKFQ6OkJhbGFuY2UExFRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZWNlaXZlZC4BEHBhdGiFCAE4QmFsYW5jZVBhdGg8VD4I/FRoZSByb3V0ZSBvZiBhc3NldCBJRHMgd2l0aCBhbW91bnRzIHRoYXQgdGhlIHN3YXAgd2VudCB0aHJvdWdoLuxFLmcuIChBLCBhbW91bnRfaW4pIC0+IChEb3QsIGFtb3VudF9vdXQpIC0+IChCLCBhbW91bnRfb3V0KQQEvEFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuHFRvdWNoZWQIARxwb29sX2lkgQgBJFQ6OlBvb2xJZARMVGhlIElEIG9mIHRoZSBwb29sLgEMd2hvBAEwVDo6QWNjb3VudElkBIRUaGUgYWNjb3VudCBpbml0aWF0aW5nIHRoZSB0b3VjaC4FBA0BUG9vbCBoYXMgYmVlbiB0b3VjaGVkIGluIG9yZGVyIHRvIGZ1bGZpbGwgb3BlcmF0aW9uYWwgcmVxdWlyZW1lbnRzLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIEIAAAECB0CHQIAhQgAAAKJCACJCAAABAgdAlkBAI0IDChwYWxsZXRfcHNtGHBhbGxldBRFdmVudAQEVAABNBhNaW50ZWQYAQx3aG8EATBUOjpBY2NvdW50SWQAAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABRGV4dGVybmFsX2NvbnN1bWVkWQEBMEJhbGFuY2VPZjxUPgABRGludGVybmFsX3JlY2VpdmVkWQEBMEJhbGFuY2VPZjxUPgABMGludGVybmFsX2ZlZVkBATBCYWxhbmNlT2Y8VD4AAASkVXNlciBzd2FwcGVkIGV4dGVybmFsIGFzc2V0IGZvciBpbnRlcm5hbC4gUmVkZWVtZWQYAQx3aG8EATBUOjpBY2NvdW50SWQAAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABRGludGVybmFsX2NvbnN1bWVkWQEBMEJhbGFuY2VPZjxUPgABRGV4dGVybmFsX3JlY2VpdmVkWQEBMEJhbGFuY2VPZjxUPgABMGludGVybmFsX2ZlZVkBATBCYWxhbmNlT2Y8VD4AAQSkVXNlciBzd2FwcGVkIGludGVybmFsIGZvciBleHRlcm5hbCBhc3NldC5ETWludGluZ0ZlZVVwZGF0ZWQQAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABJG9sZF92YWx1Zc0EARxQZXJtaWxsAAEkbmV3X3ZhbHVlzQQBHFBlcm1pbGwAAgS8TWludGluZyBmZWUgdXBkYXRlZCBmb3IgYW4gYXNzZXQgYnkgZ292ZXJuYW5jZS5QUmVkZW1wdGlvbkZlZVVwZGF0ZWQQAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABJG9sZF92YWx1Zc0EARxQZXJtaWxsAAEkbmV3X3ZhbHVlzQQBHFBlcm1pbGwAAwTIUmVkZW1wdGlvbiBmZWUgdXBkYXRlZCBmb3IgYW4gYXNzZXQgYnkgZ292ZXJuYW5jZS44TWF4RGVidFVwZGF0ZWQMAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAEkb2xkX3ZhbHVlWQEBMEJhbGFuY2VPZjxUPgABJG5ld192YWx1ZVkBATBCYWxhbmNlT2Y8VD4ABAScUFNNIGRlYnQgY2VpbGluZyB1cGRhdGVkIGJ5IGdvdmVybmFuY2UuZEFzc2V0Q2VpbGluZ1dlaWdodFVwZGF0ZWQQAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABJG9sZF92YWx1Zc0EARxQZXJtaWxsAAEkbmV3X3ZhbHVlzQQBHFBlcm1pbGwABQTQUGVyLWFzc2V0IGRlYnQgY2VpbGluZyB3ZWlnaHQgdXBkYXRlZCBieSBnb3Zlcm5hbmNlLkhBc3NldFN0YXR1c1VwZGF0ZWQMAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABGHN0YXR1c9EEAUxDaXJjdWl0QnJlYWtlckxldmVsAAYEpFBlci1hc3NldCBjaXJjdWl0IGJyZWFrZXIgc3RhdHVzIHVwZGF0ZWQuSEV4dGVybmFsQXNzZXRBZGRlZAgBOGludGVybmFsX2Fzc2V0HQIBKFQ6OkFzc2V0SWQAAThleHRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAcExEFuIGV4dGVybmFsIGFzc2V0IHdhcyBhZGRlZCB0byB0aGUgYXBwcm92ZWQgbGlzdC5QRXh0ZXJuYWxBc3NldFJlbW92ZWQIAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAAIBNRBbiBleHRlcm5hbCBhc3NldCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhcHByb3ZlZCBsaXN0LihQc21DcmVhdGVkFAE4aW50ZXJuYWxfYXNzZXQdAgEoVDo6QXNzZXRJZAABKGZ1bGxfYWRtaW7xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAE8ZW1lcmdlbmN5X2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABPGZlZV9kZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABIG1heF9kZWJ0WQEBMEJhbGFuY2VPZjxUPgAJBGxBIFBTTSBpbnN0YW5jZSB3YXMgY3JlYXRlZC4oUHNtUmVtb3ZlZAQBOGludGVybmFsX2Fzc2V0HQIBKFQ6OkFzc2V0SWQACgRsQSBQU00gaW5zdGFuY2Ugd2FzIHJlbW92ZWQuQEZ1bGxBZG1pbkNoYW5nZWQMAThpbnRlcm5hbF9hc3NldB0CAShUOjpBc3NldElkAAEkb2xkX2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABJG5ld19hZG1pbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4ACwSQQSBQU00ncyBgZnVsbF9hZG1pbmAgd2FzIHJlYXNzaWduZWQuVEVtZXJnZW5jeUFkbWluQ2hhbmdlZAwBOGludGVybmFsX2Fzc2V0HQIBKFQ6OkFzc2V0SWQAASRvbGRfYWRtaW7xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEkbmV3X2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgAMBKRBIFBTTSdzIGBlbWVyZ2VuY3lfYWRtaW5gIHdhcyByZWFzc2lnbmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJEIDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0FEV2ZW50CARUAARJAAEwIFNwZW5kaW5nBAFAYnVkZ2V0X3JlbWFpbmluZ1kBATxCYWxhbmNlT2Y8VCwgST4AAATkV2UgaGF2ZSBlbmRlZCBhIHNwZW5kIHBlcmlvZCBhbmQgd2lsbCBub3cgYWxsb2NhdGUgZnVuZHMuHEF3YXJkZWQMAThwcm9wb3NhbF9pbmRleDgBNFByb3Bvc2FsSW5kZXgAARRhd2FyZFkBATxCYWxhbmNlT2Y8VCwgST4AARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEEfFNvbWUgZnVuZHMgaGF2ZSBiZWVuIGFsbG9jYXRlZC4UQnVybnQEASxidXJudF9mdW5kc1kBATxCYWxhbmNlT2Y8VCwgST4AAgSIU29tZSBvZiBvdXIgZnVuZHMgaGF2ZSBiZWVuIGJ1cm50LiBSb2xsb3ZlcgQBQHJvbGxvdmVyX2JhbGFuY2VZAQE8QmFsYW5jZU9mPFQsIEk+AAMELQFTcGVuZGluZyBoYXMgZmluaXNoZWQ7IHRoaXMgaXMgdGhlIGFtb3VudCB0aGF0IHJvbGxzIG92ZXIgdW50aWwgbmV4dCBzcGVuZC4cRGVwb3NpdAQBFHZhbHVlWQEBPEJhbGFuY2VPZjxULCBJPgAEBHxTb21lIGZ1bmRzIGhhdmUgYmVlbiBkZXBvc2l0ZWQuNFNwZW5kQXBwcm92ZWQMAThwcm9wb3NhbF9pbmRleDgBNFByb3Bvc2FsSW5kZXgAARhhbW91bnRZAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQABQScQSBuZXcgc3BlbmQgcHJvcG9zYWwgaGFzIGJlZW4gYXBwcm92ZWQuPFVwZGF0ZWRJbmFjdGl2ZQgBLHJlYWN0aXZhdGVkWQEBPEJhbGFuY2VPZjxULCBJPgABLGRlYWN0aXZhdGVkWQEBPEJhbGFuY2VPZjxULCBJPgAGBMxUaGUgaW5hY3RpdmUgZnVuZHMgb2YgdGhlIHBhbGxldCBoYXZlIGJlZW4gdXBkYXRlZC5IQXNzZXRTcGVuZEFwcHJvdmVkGAEUaW5kZXg4AShTcGVuZEluZGV4AAEoYXNzZXRfa2luZNkEATBUOjpBc3NldEtpbmQAARhhbW91bnRZAQFQQXNzZXRCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyed0EAThUOjpCZW5lZmljaWFyeQABKHZhbGlkX2Zyb204AVBCbG9ja051bWJlckZvcjxULCBJPgABJGV4cGlyZV9hdDgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+AAcEtEEgbmV3IGFzc2V0IHNwZW5kIHByb3Bvc2FsIGhhcyBiZWVuIGFwcHJvdmVkLkBBc3NldFNwZW5kVm9pZGVkBAEUaW5kZXg4AShTcGVuZEluZGV4AAgEdEFuIGFwcHJvdmVkIHNwZW5kIHdhcyB2b2lkZWQuEFBhaWQIARRpbmRleDgBKFNwZW5kSW5kZXgAAShwYXltZW50X2lkKAFkPFQ6OlBheW1hc3RlciBhcyBQYXk+OjpJZAAJBExBIHBheW1lbnQgaGFwcGVuZWQuNFBheW1lbnRGYWlsZWQIARRpbmRleDgBKFNwZW5kSW5kZXgAAShwYXltZW50X2lkKAFkPFQ6OlBheW1hc3RlciBhcyBQYXk+OjpJZAAKBJBBIHBheW1lbnQgZmFpbGVkIGFuZCBjYW4gYmUgcmV0cmllZC44U3BlbmRQcm9jZXNzZWQEARRpbmRleDgBKFNwZW5kSW5kZXgACwhNAUEgc3BlbmQgd2FzIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yYWdlLiBJdCBtaWdodCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5cHBhaWQgb3IgaXQgbWF5IGhhdmUgZXhwaXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSVCAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBRFdmVudAgEVAAESQABFCREZWxlZ2F0ZWQMAAQBMFQ6OkFjY291bnRJZAAABAEwVDo6QWNjb3VudElkAADtAwE0Q2xhc3NPZjxULCBJPgAABB0BQW4gYWNjb3VudCBoYXMgZGVsZWdhdGVkIHRoZWlyIHZvdGUgdG8gYW5vdGhlciBhY2NvdW50LiBcW3dobywgdGFyZ2V0XF0sVW5kZWxlZ2F0ZWQIAAQBMFQ6OkFjY291bnRJZAAA7QMBNENsYXNzT2Y8VCwgST4AAQT0QW4gXFthY2NvdW50XF0gaGFzIGNhbmNlbGxlZCBhIHByZXZpb3VzIGRlbGVnYXRpb24gb3BlcmF0aW9uLhRWb3RlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEHZvdGXlBAFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgABKHBvbGxfaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgACBFBBbiBhY2NvdW50IGhhcyB2b3RlZCxWb3RlUmVtb3ZlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEHZvdGXlBAFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgABKHBvbGxfaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgADBFxBIHZvdGUgaGFzIGJlZW4gcmVtb3ZlZDBWb3RlVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARRjbGFzc+0DATRDbGFzc09mPFQsIEk+AAQERQFUaGUgbG9ja3VwIHBlcmlvZCBvZiBhIGNvbnZpY3Rpb24gdm90ZSBleHBpcmVkLCBhbmQgdGhlIGZ1bmRzIGhhdmUgYmVlbiB1bmxvY2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSZCAxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQURXZlbnQIBFQABEkAAUAkU3VibWl0dGVkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdHJhY2vtAwE8VHJhY2tJZE9mPFQsIEk+BCUBVGhlIHRyYWNrIChhbmQgYnkgZXh0ZW5zaW9uIHByb3Bvc2FsIGRpc3BhdGNoIG9yaWdpbikgb2YgdGhpcyByZWZlcmVuZHVtLgEgcHJvcG9zYWz5BAFMQm91bmRlZENhbGxPZjxULCBJPgSAVGhlIHByb3Bvc2FsIGZvciB0aGUgcmVmZXJlbmR1bS4ABIBBIHJlZmVyZW5kdW0gaGFzIGJlZW4gc3VibWl0dGVkLlREZWNpc2lvbkRlcG9zaXRQbGFjZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnRZAQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4BBJRUaGUgZGVjaXNpb24gZGVwb3NpdCBoYXMgYmVlbiBwbGFjZWQuXERlY2lzaW9uRGVwb3NpdFJlZnVuZGVkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50WQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuAgScVGhlIGRlY2lzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcmVmdW5kZWQuOERlcG9zaXRTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50WQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuAwRsQSBkZXBvc2l0IGhhcyBiZWVuIHNsYXNoZWQuPERlY2lzaW9uU3RhcnRlZBABFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRyYWNr7QMBPFRyYWNrSWRPZjxULCBJPgQlAVRoZSB0cmFjayAoYW5kIGJ5IGV4dGVuc2lvbiBwcm9wb3NhbCBkaXNwYXRjaCBvcmlnaW4pIG9mIHRoaXMgcmVmZXJlbmR1bS4BIHByb3Bvc2Fs+QQBTEJvdW5kZWRDYWxsT2Y8VCwgST4EgFRoZSBwcm9wb3NhbCBmb3IgdGhlIHJlZmVyZW5kdW0uARR0YWxseZ0IASBUOjpUYWxseQS4VGhlIGN1cnJlbnQgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgQEvEEgcmVmZXJlbmR1bSBoYXMgbW92ZWQgaW50byB0aGUgZGVjaWRpbmcgcGhhc2UuOENvbmZpcm1TdGFydGVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgUAOENvbmZpcm1BYm9ydGVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgYAJENvbmZpcm1lZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5nQgBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgcEIQFBIHJlZmVyZW5kdW0gaGFzIGVuZGVkIGl0cyBjb25maXJtYXRpb24gcGhhc2UgYW5kIGlzIHJlYWR5IGZvciBhcHByb3ZhbC4gQXBwcm92ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uCAQNAUEgcmVmZXJlbmR1bSBoYXMgYmVlbiBhcHByb3ZlZCBhbmQgaXRzIHByb3Bvc2FsIGhhcyBiZWVuIHNjaGVkdWxlZC4gUmVqZWN0ZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseZ0IASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4JBKxBIHByb3Bvc2FsIGhhcyBiZWVuIHJlamVjdGVkIGJ5IHJlZmVyZW5kdW0uIFRpbWVkT3V0CAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHmdCAEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCgTYQSByZWZlcmVuZHVtIGhhcyBiZWVuIHRpbWVkIG91dCB3aXRob3V0IGJlaW5nIGRlY2lkZWQuJENhbmNlbGxlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5nQgBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgsEgEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBjYW5jZWxsZWQuGEtpbGxlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5nQgBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgwEdEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBraWxsZWQuZFN1Ym1pc3Npb25EZXBvc2l0UmVmdW5kZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnRZAQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4NBKRUaGUgc3VibWlzc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHJlZnVuZGVkLixNZXRhZGF0YVNldAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BEGhhc2hAARxUOjpIYXNoBDhQcmVpbWFnZSBoYXNoLg4EnE1ldGFkYXRhIGZvciBhIHJlZmVyZW5kdW0gaGFzIGJlZW4gc2V0LjxNZXRhZGF0YUNsZWFyZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARBoYXNoQAEcVDo6SGFzaAQ4UHJlaW1hZ2UgaGFzaC4PBKxNZXRhZGF0YSBmb3IgYSByZWZlcmVuZHVtIGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0nQgMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxR0eXBlcxRUYWxseQgUVm90ZXMBWQEUVG90YWwAAAwBEGF5ZXNZAQEUVm90ZXMAARBuYXlzWQEBFFZvdGVzAAEcc3VwcG9ydFkBARRWb3RlcwAAoQgMQHBhbGxldF93aGl0ZWxpc3QYcGFsbGV0FEV2ZW50BARUAAEMPENhbGxXaGl0ZWxpc3RlZAQBJGNhbGxfaGFzaEABHFQ6Okhhc2gAAABYV2hpdGVsaXN0ZWRDYWxsUmVtb3ZlZAQBJGNhbGxfaGFzaEABHFQ6Okhhc2gAAQBkV2hpdGVsaXN0ZWRDYWxsRGlzcGF0Y2hlZAgBJGNhbGxfaGFzaEABHFQ6Okhhc2gAARhyZXN1bHSlCAFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAgAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSlCAQYUmVzdWx0CARUAakIBEUBrQgBCAhPawQAqQgAAAAADEVycgQArQgAAAEAAKkIDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBvc3REaXNwYXRjaEluZm8AAAgBNGFjdHVhbF93ZWlnaHQRAQE4T3B0aW9uPFdlaWdodD4AASBwYXlzX2ZlZXUHARBQYXlzAACtCAgoc3BfcnVudGltZWREaXNwYXRjaEVycm9yV2l0aFBvc3RJbmZvBBBJbmZvAakIAAgBJHBvc3RfaW5mb6kIARBJbmZvAAEUZXJyb3J5BwE0RGlzcGF0Y2hFcnJvcgAAsQgMPHBhbGxldF9ib3VudGllcxhwYWxsZXQURXZlbnQIBFQABEkAATA4Qm91bnR5UHJvcG9zZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAAEUE5ldyBib3VudHkgcHJvcG9zYWwuOEJvdW50eVJlamVjdGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABEGJvbmRZAQE8QmFsYW5jZU9mPFQsIEk+AAEEzEEgYm91bnR5IHByb3Bvc2FsIHdhcyByZWplY3RlZDsgZnVuZHMgd2VyZSBzbGFzaGVkLkhCb3VudHlCZWNhbWVBY3RpdmUEARRpbmRleDgBLEJvdW50eUluZGV4AAIEuEEgYm91bnR5IHByb3Bvc2FsIGlzIGZ1bmRlZCBhbmQgYmVjYW1lIGFjdGl2ZS40Qm91bnR5QXdhcmRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAADBJRBIGJvdW50eSBpcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuNEJvdW50eUNsYWltZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEYcGF5b3V0WQEBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAQEjEEgYm91bnR5IGlzIGNsYWltZWQgYnkgYmVuZWZpY2lhcnkuOEJvdW50eUNhbmNlbGVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAFBFhBIGJvdW50eSBpcyBjYW5jZWxsZWQuOEJvdW50eUV4dGVuZGVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAGBHBBIGJvdW50eSBleHBpcnkgaXMgZXh0ZW5kZWQuOEJvdW50eUFwcHJvdmVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAHBFRBIGJvdW50eSBpcyBhcHByb3ZlZC48Q3VyYXRvclByb3Bvc2VkCAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgAARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAgEdEEgYm91bnR5IGN1cmF0b3IgaXMgcHJvcG9zZWQuREN1cmF0b3JVbmFzc2lnbmVkBAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgACQR8QSBib3VudHkgY3VyYXRvciBpcyB1bmFzc2lnbmVkLjxDdXJhdG9yQWNjZXB0ZWQIASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACgR0QSBib3VudHkgY3VyYXRvciBpcyBhY2NlcHRlZC4wRGVwb3NpdFBva2VkEAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgAASBwcm9wb3NlcgQBMFQ6OkFjY291bnRJZAABLG9sZF9kZXBvc2l0WQEBPEJhbGFuY2VPZjxULCBJPgABLG5ld19kZXBvc2l0WQEBPEJhbGFuY2VPZjxULCBJPgALBIBBIGJvdW50eSBkZXBvc2l0IGhhcyBiZWVuIHBva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLUIDFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0FEV2ZW50BARUAAEQFEFkZGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAAARgQSBjaGlsZC1ib3VudHkgaXMgYWRkZWQuHEF3YXJkZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAEErEEgY2hpbGQtYm91bnR5IGlzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS4cQ2xhaW1lZBABFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEYcGF5b3V0WQEBMEJhbGFuY2VPZjxUPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAIEpEEgY2hpbGQtYm91bnR5IGlzIGNsYWltZWQgYnkgYmVuZWZpY2lhcnkuIENhbmNlbGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAAwRwQSBjaGlsZC1ib3VudHkgaXMgY2FuY2VsbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLkIDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXZlbnQEBFQAAQxAQXNzZXRSYXRlQ3JlYXRlZAgBKGFzc2V0X2tpbmTZBAEwVDo6QXNzZXRLaW5kAAEQcmF0ZRkFASRGaXhlZFUxMjgAAABAQXNzZXRSYXRlUmVtb3ZlZAQBKGFzc2V0X2tpbmTZBAEwVDo6QXNzZXRLaW5kAAEAQEFzc2V0UmF0ZVVwZGF0ZWQMAShhc3NldF9raW5k2QQBMFQ6OkFzc2V0S2luZAABDG9sZBkFASRGaXhlZFUxMjgAAQxuZXcZBQEkRml4ZWRVMTI4AAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0vQgMbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhwYWxsZXQURXZlbnQIBFQABEkAATQ0Qm91bnR5Q3JlYXRlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgAAATgQSBuZXcgYm91bnR5IHdhcyBjcmVhdGVkIGFuZCBmdW5kaW5nIGhhcyBiZWVuIGluaXRpYXRlZC5IQ2hpbGRCb3VudHlDcmVhdGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAAQT4QSBuZXcgY2hpbGQtYm91bnR5IHdhcyBjcmVhdGVkIGFuZCBmdW5kaW5nIGhhcyBiZWVuIGluaXRpYXRlZC5IQm91bnR5QmVjYW1lQWN0aXZlDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV45AFMT3B0aW9uPEJvdW50eUluZGV4PgABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQAAgToVGhlIGN1cmF0b3IgYWNjZXB0ZWQgcm9sZSBhbmQgY2hpbGQtL2JvdW50eSBiZWNhbWUgYWN0aXZlLjRCb3VudHlBd2FyZGVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV45AFMT3B0aW9uPEJvdW50eUluZGV4PgABLGJlbmVmaWNpYXJ53QQBOFQ6OkJlbmVmaWNpYXJ5AAMEtEEgY2hpbGQtL2JvdW50eSB3YXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LlRCb3VudHlQYXlvdXRQcm9jZXNzZWQUARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEoYXNzZXRfa2luZNkEATBUOjpBc3NldEtpbmQAARR2YWx1ZVkBAShUOjpCYWxhbmNlAAEsYmVuZWZpY2lhcnndBAE4VDo6QmVuZWZpY2lhcnkABAT0UGF5b3V0IHBheW1lbnQgdG8gdGhlIGJlbmVmaWNpYXJ5IGhhcyBjb25jbHVkZWQgc3VjY2Vzc2Z1bGx5LlhCb3VudHlGdW5kaW5nUHJvY2Vzc2VkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV45AFMT3B0aW9uPEJvdW50eUluZGV4PgAFBKxGdW5kaW5nIHBheW1lbnQgaGFzIGNvbmNsdWRlZCBzdWNjZXNzZnVsbHkuVEJvdW50eVJlZnVuZFByb2Nlc3NlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOQBTE9wdGlvbjxCb3VudHlJbmRleD4ABgSoUmVmdW5kIHBheW1lbnQgaGFzIGNvbmNsdWRlZCBzdWNjZXNzZnVsbHkuOEJvdW50eUNhbmNlbGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV45AFMT3B0aW9uPEJvdW50eUluZGV4PgAHBHhBIGNoaWxkLS9ib3VudHkgd2FzIGNhbmNlbGxlZC5EQ3VyYXRvclVuYXNzaWduZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAgEnEEgY2hpbGQtL2JvdW50eSBjdXJhdG9yIHdhcyB1bmFzc2lnbmVkLjxDdXJhdG9yUHJvcG9zZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAJBJRBIGNoaWxkLS9ib3VudHkgY3VyYXRvciB3YXMgcHJvcG9zZWQuNFBheW1lbnRGYWlsZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEocGF5bWVudF9pZCgBRFBheW1lbnRJZE9mPFQsIEk+AAoEkEEgcGF5bWVudCBmYWlsZWQgYW5kIGNhbiBiZSByZXRyaWVkLhBQYWlkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV45AFMT3B0aW9uPEJvdW50eUluZGV4PgABKHBheW1lbnRfaWQoAURQYXltZW50SWRPZjxULCBJPgALBJhBIHBheW1lbnQgaGFwcGVuZWQgYW5kIGNhbiBiZSBjaGVja2VkLlBCb3VudHlWYWx1ZUluY3JlYXNlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASRvbGRfdmFsdWVZAQEoVDo6QmFsYW5jZQABJG5ld192YWx1ZVkBAShUOjpCYWxhbmNlAAwEuEEgYm91bnR5J3MgdmFsdWUgd2FzIGluY3JlYXNlZCBieSBpdHMgY3VyYXRvci4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTBCAxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBRFdmVudAQEVAABECBNaWdyYXRlZAwBDHRvcDgBDHUzMgABFGNoaWxkOAEMdTMyAAEcY29tcHV0ZcUIAUBNaWdyYXRpb25Db21wdXRlAAAIOQFHaXZlbiBudW1iZXIgb2YgYCh0b3AsIGNoaWxkKWAga2V5cyB3ZXJlIG1pZ3JhdGVkIHJlc3BlY3RpdmVseSwgd2l0aCB0aGUgZ2l2ZW4oYGNvbXB1dGVgLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgABBLRTb21lIGFjY291bnQgZ290IHNsYXNoZWQgYnkgdGhlIGdpdmVuIGFtb3VudC5UQXV0b01pZ3JhdGlvbkZpbmlzaGVkAAIEhFRoZSBhdXRvIG1pZ3JhdGlvbiB0YXNrIGZpbmlzaGVkLhhIYWx0ZWQEARRlcnJvcskIASBFcnJvcjxUPgADBOxNaWdyYXRpb24gZ290IGhhbHRlZCBkdWUgdG8gYW4gZXJyb3Igb3IgbWlzcy1jb25maWd1cmF0aW9uLgRwSW5uZXIgZXZlbnRzIG9mIHRoaXMgcGFsbGV0LsUIDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0QE1pZ3JhdGlvbkNvbXB1dGUAAQgYU2lnbmVkAAAAEEF1dG8AAQAAyQgMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQURXJyb3IEBFQAARg8TWF4U2lnbmVkTGltaXRzAAAEgE1heCBzaWduZWQgbGltaXRzIG5vdCByZXNwZWN0ZWQuKEtleVRvb0xvbmcAARy0QSBrZXkgd2FzIGxvbmdlciB0aGFuIHRoZSBjb25maWd1cmVkIG1heGltdW0uABEBVGhpcyBtZWFucyB0aGF0IHRoZSBtaWdyYXRpb24gaGFsdGVkIGF0IHRoZSBjdXJyZW50IFtgUHJvZ3Jlc3NgXSBhbmQBAWNhbiBiZSByZXN1bWVkIHdpdGggYSBsYXJnZXIgW2BjcmF0ZTo6Q29uZmlnOjpNYXhLZXlMZW5gXSB2YWx1ZS4hAVJldHJ5aW5nIHdpdGggdGhlIHNhbWUgW2BjcmF0ZTo6Q29uZmlnOjpNYXhLZXlMZW5gXSB2YWx1ZSB3aWxsIG5vdCB3b3JrLkUBVGhlIHZhbHVlIHNob3VsZCBvbmx5IGJlIGluY3JlYXNlZCB0byBhdm9pZCBhIHN0b3JhZ2UgbWlncmF0aW9uIGZvciB0aGUgY3VycmVudGx5kHN0b3JlZCBbYGNyYXRlOjpQcm9ncmVzczo6TGFzdEtleWBdLjhOb3RFbm91Z2hGdW5kcwACBJRzdWJtaXR0ZXIgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMuKEJhZFdpdG5lc3MAAwRoQmFkIHdpdG5lc3MgZGF0YSBwcm92aWRlZC5kU2lnbmVkTWlncmF0aW9uTm90QWxsb3dlZAAEBCUBU2lnbmVkIG1pZ3JhdGlvbiBpcyBub3QgYWxsb3dlZCBiZWNhdXNlIHRoZSBtYXhpbXVtIGxpbWl0IGlzIG5vdCBzZXQgeWV0LjBCYWRDaGlsZFJvb3QABQRgQmFkIGNoaWxkIHJvb3QgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ls0IDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQURXZlbnQEBFQAAVwcQ3JlYXRlZAgBJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAAARgQSBwb29sIGhhcyBiZWVuIGNyZWF0ZWQuGEJvbmRlZBABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARhib25kZWRZAQEwQmFsYW5jZU9mPFQ+AAEYam9pbmVkXQEBEGJvb2wAAQSUQSBtZW1iZXIgaGFzIGJlY2FtZSBib25kZWQgaW4gYSBwb29sLhxQYWlkT3V0DAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABGHBheW91dFkBATBCYWxhbmNlT2Y8VD4AAgSMQSBwYXlvdXQgaGFzIGJlZW4gbWFkZSB0byBhIG1lbWJlci4gVW5ib25kZWQUARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZVkBATBCYWxhbmNlT2Y8VD4AARhwb2ludHNZAQEwQmFsYW5jZU9mPFQ+AAEMZXJhOAEgRXJhSW5kZXgAAyyYQSBtZW1iZXIgaGFzIHVuYm9uZGVkIGZyb20gdGhlaXIgcG9vbC4AOQEtIGBiYWxhbmNlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBiYWxhbmNlIG9mIHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgaGFzIGJlZW5VASAgcmVxdWVzdGVkIHRvIGJlIHVuYm9uZGVkICh0aGUgYXJndW1lbnQgb2YgdGhlIGB1bmJvbmRgIHRyYW5zYWN0aW9uKSBmcm9tIHRoZSBib25kZWQcICBwb29sLkUBLSBgcG9pbnRzYCBpcyB0aGUgbnVtYmVyIG9mIHBvaW50cyB0aGF0IGFyZSBpc3N1ZWQgYXMgYSByZXN1bHQgb2YgYGJhbGFuY2VgIGJlaW5nwGRpc3NvbHZlZCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHVuYm9uZGluZyBwb29sLuQtIGBlcmFgIGlzIHRoZSBlcmEgaW4gd2hpY2ggdGhlIGJhbGFuY2Ugd2lsbCBiZSB1bmJvbmRlZC5VAUluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGVzZSB2YWx1ZXMgd2lsbCBtYXRjaC4gSW4gdGhlIHByZXNlbmNlIG9mIHNsYXNoaW5nLCB0aGVNAW51bWJlciBvZiBwb2ludHMgdGhhdCBhcmUgaXNzdWVkIGluIHRoZSB1bmJvbmRpbmcgcG9vbCB3aWxsIGJlIGxlc3MgdGhhbiB0aGUgYW1vdW50ZHJlcXVlc3RlZCB0byBiZSB1bmJvbmRlZC4kV2l0aGRyYXduEAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABHGJhbGFuY2VZAQEwQmFsYW5jZU9mPFQ+AAEYcG9pbnRzWQEBMEJhbGFuY2VPZjxUPgAEGJxBIG1lbWJlciBoYXMgd2l0aGRyYXduIGZyb20gdGhlaXIgcG9vbC4AIQFUaGUgZ2l2ZW4gbnVtYmVyIG9mIGBwb2ludHNgIGhhdmUgYmVlbiBkaXNzb2x2ZWQgaW4gcmV0dXJuIG9mIGBiYWxhbmNlYC4AWQFTaW1pbGFyIHRvIGBVbmJvbmRlZGAgZXZlbnQsIGluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGUgcmF0aW8gb2YgcG9pbnQgdG8gYmFsYW5jZSh3aWxsIGJlIDEuJERlc3Ryb3llZAQBHHBvb2xfaWQ4ARhQb29sSWQABQRoQSBwb29sIGhhcyBiZWVuIGRlc3Ryb3llZC4wU3RhdGVDaGFuZ2VkCAEccG9vbF9pZDgBGFBvb2xJZAABJG5ld19zdGF0ZUEFASRQb29sU3RhdGUABgR8VGhlIHN0YXRlIG9mIGEgcG9vbCBoYXMgY2hhbmdlZDRNZW1iZXJSZW1vdmVkDAEccG9vbF9pZDgBGFBvb2xJZAABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABQHJlbGVhc2VkX2JhbGFuY2VZAQEwQmFsYW5jZU9mPFQ+AAcUmEEgbWVtYmVyIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBhIHBvb2wuAFEBVGhlIHJlbW92YWwgY2FuIGJlIHZvbHVudGFyeSAod2l0aGRyYXduIGFsbCB1bmJvbmRlZCBmdW5kcykgb3IgaW52b2x1bnRhcnkgKGtpY2tlZCkuSQFBbnkgZnVuZHMgdGhhdCBhcmUgc3RpbGwgZGVsZWdhdGVkIChpLmUuIGRhbmdsaW5nIGRlbGVnYXRpb24pIGFyZSByZWxlYXNlZCBhbmQgYXJliHJlcHJlc2VudGVkIGJ5IGByZWxlYXNlZF9iYWxhbmNlYC4wUm9sZXNVcGRhdGVkDAEQcm9vdJEBAVBPcHRpb248VDo6QWNjb3VudElkPgABHGJvdW5jZXKRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASRub21pbmF0b3KRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4ACAhVAVRoZSByb2xlcyBvZiBhIHBvb2wgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdGhlIGdpdmVuIG5ldyByb2xlcy4gTm90ZSB0aGF0IHRoZSBkZXBvc2l0b3JEY2FuIG5ldmVyIGNoYW5nZS4sUG9vbFNsYXNoZWQIARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZVkBATBCYWxhbmNlT2Y8VD4ACQQNAVRoZSBhY3RpdmUgYmFsYW5jZSBvZiBwb29sIGBwb29sX2lkYCBoYXMgYmVlbiBzbGFzaGVkIHRvIGBiYWxhbmNlYC5QVW5ib25kaW5nUG9vbFNsYXNoZWQMARxwb29sX2lkOAEYUG9vbElkAAEMZXJhOAEgRXJhSW5kZXgAARxiYWxhbmNlWQEBMEJhbGFuY2VPZjxUPgAKBCUBVGhlIHVuYm9uZCBwb29sIGF0IGBlcmFgIG9mIHBvb2wgYHBvb2xfaWRgIGhhcyBiZWVuIHNsYXNoZWQgdG8gYGJhbGFuY2VgLlRQb29sQ29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEcY3VycmVudFkFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+AAsEtEEgcG9vbCdzIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLmBQb29sTWF4Q29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAE4bWF4X2NvbW1pc3Npb26hAQEcUGVyYmlsbAAMBNRBIHBvb2wncyBtYXhpbXVtIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLnxQb29sQ29tbWlzc2lvbkNoYW5nZVJhdGVVcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlYQUBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgANBMxBIHBvb2wncyBjb21taXNzaW9uIGBjaGFuZ2VfcmF0ZWAgaGFzIGJlZW4gY2hhbmdlZC6QUG9vbENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb25lBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4ADgTIUG9vbCBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24gaGFzIGJlZW4gdXBkYXRlZC5UUG9vbENvbW1pc3Npb25DbGFpbWVkCAEccG9vbF9pZDgBGFBvb2xJZAABKGNvbW1pc3Npb25ZAQEwQmFsYW5jZU9mPFQ+AA8EhFBvb2wgY29tbWlzc2lvbiBoYXMgYmVlbiBjbGFpbWVkLmRNaW5CYWxhbmNlRGVmaWNpdEFkanVzdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AEATIVG9wcGVkIHVwIGRlZmljaXQgaW4gZnJvemVuIEVEIG9mIHRoZSByZXdhcmQgcG9vbC5gTWluQmFsYW5jZUV4Y2Vzc0FkanVzdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AEQS8Q2xhaW1lZCBleGNlc3MgZnJvemVuIEVEIG9mIGFmIHRoZSByZXdhcmQgcG9vbC5wTWVtYmVyQ2xhaW1QZXJtaXNzaW9uVXBkYXRlZAgBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABKHBlcm1pc3Npb25VBQE8Q2xhaW1QZXJtaXNzaW9uABIEyEEgcG9vbCBtZW1iZXIncyBjbGFpbSBwZXJtaXNzaW9uIGhhcyBiZWVuIHVwZGF0ZWQuPE1ldGFkYXRhVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAEwR4QSBwb29sJ3MgbWV0YWRhdGEgd2FzIHVwZGF0ZWQuSFBvb2xOb21pbmF0aW9uTWFkZQgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAFAhZAUEgcG9vbCdzIG5vbWluYXRpbmcgYWNjb3VudCAob3IgdGhlIHBvb2wncyByb290IGFjY291bnQpIGhhcyBub21pbmF0ZWQgYSB2YWxpZGF0b3Igc2V0WG9uIGJlaGFsZiBvZiB0aGUgcG9vbC5QUG9vbE5vbWluYXRvckNoaWxsZWQIARxwb29sX2lkOAEYUG9vbElkAAEYY2FsbGVyBAEwVDo6QWNjb3VudElkABUEuFRoZSBwb29sIGlzIGNoaWxsZWQgaS5lLiBubyBsb25nZXIgbm9taW5hdGluZy5MR2xvYmFsUGFyYW1zVXBkYXRlZBgBNG1pbl9qb2luX2JvbmRZAQEwQmFsYW5jZU9mPFQ+AAE8bWluX2NyZWF0ZV9ib25kWQEBMEJhbGFuY2VPZjxUPgABJG1heF9wb29sc+QBLE9wdGlvbjx1MzI+AAEsbWF4X21lbWJlcnPkASxPcHRpb248dTMyPgABUG1heF9tZW1iZXJzX3Blcl9wb29s5AEsT3B0aW9uPHUzMj4AAVRnbG9iYWxfbWF4X2NvbW1pc3Npb27RCAE8T3B0aW9uPFBlcmJpbGw+ABYEAQFHbG9iYWwgcGFyYW1ldGVycyByZWd1bGF0aW5nIG5vbWluYXRpb24gcG9vbHMgaGF2ZSBiZWVuIHVwZGF0ZWQuBFhFdmVudHMgb2YgdGhpcyBwYWxsZXQu0QgEGE9wdGlvbgQEVAGhAQEIEE5vbmUAAAAQU29tZQQAoQEAAAEAANUIDEBwYWxsZXRfYmFnc19saXN0GHBhbGxldBRFdmVudAgEVAAESQABCCBSZWJhZ2dlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyb20oASBUOjpTY29yZQABCHRvKAEgVDo6U2NvcmUAAASkTW92ZWQgYW4gYWNjb3VudCBmcm9tIG9uZSBiYWcgdG8gYW5vdGhlci4wU2NvcmVVcGRhdGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEkbmV3X3Njb3JlKAEgVDo6U2NvcmUAAQTYVXBkYXRlZCB0aGUgc2NvcmUgb2Ygc29tZSBhY2NvdW50IHRvIHRoZSBnaXZlbiBhbW91bnQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV02QgMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQURXZlbnQEBFQAARAkRGVsZWdhdGVkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAAEfEZ1bmRzIGRlbGVnYXRlZCBieSBhIGRlbGVnYXRvci4gUmVsZWFzZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AAQR4RnVuZHMgcmVsZWFzZWQgdG8gYSBkZWxlZ2F0b3IuHFNsYXNoZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AAgR8RnVuZHMgc2xhc2hlZCBmcm9tIGEgZGVsZWdhdG9yLkhNaWdyYXRlZERlbGVnYXRpb24MARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AAwTEVW5jbGFpbWVkIGRlbGVnYXRpb24gZnVuZHMgbWlncmF0ZWQgdG8gZGVsZWdhdG9yLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldN0IDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0FEV2ZW50BARUAAEQVFNlc3Npb25SZXBvcnRSZWNlaXZlZBABJGVuZF9pbmRleDgBMFNlc3Npb25JbmRleAABUGFjdGl2YXRpb25fdGltZXN0YW1wgQUBSE9wdGlvbjwodTY0LCB1MzIpPgABXHZhbGlkYXRvcl9wb2ludHNfY291bnRzOAEMdTMyAAEgbGVmdG92ZXJdAQEQYm9vbAAABIxBIHNhaWQgc2Vzc2lvbiByZXBvcnQgd2FzIHJlY2VpdmVkLjxPZmZlbmNlUmVjZWl2ZWQIATRzbGFzaF9zZXNzaW9uOAEwU2Vzc2lvbkluZGV4AAE4b2ZmZW5jZXNfY291bnQ4AQx1MzIAAQRsQSBuZXcgb2ZmZW5jZSB3YXMgcmVwb3J0ZWQuIEZlZXNQYWlkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZmVlc1kBATBCYWxhbmNlT2Y8VD4AAgwBAUZlZXMgd2VyZSBjaGFyZ2VkIGZvciBhIHVzZXIgb3BlcmF0aW9uIChzZXRfa2V5cyBvciBwdXJnZV9rZXlzKS4AGQFUaGUgZmVlIGluY2x1ZGVzIGJvdGggWENNIGRlbGl2ZXJ5IGZlZSBhbmQgcmVsYXkgY2hhaW4gZXhlY3V0aW9uIGNvc3QuKFVuZXhwZWN0ZWQEAOEIAThVbmV4cGVjdGVkS2luZAADCA0BU29tZXRoaW5nIG9jY3VycmVkIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLrxMb2dnZWQgYXMgYW4gZXZlbnQgZm9yIGZhaWwtc2FmZSBvYnNlcnZhYmlsaXR5LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOEIDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEYcFNlc3Npb25SZXBvcnRJbnRlZ3JpdHlGYWlsZWQAAABsVmFsaWRhdG9yU2V0SW50ZWdyaXR5RmFpbGVkAAEAOFNlc3Npb25Ta2lwcGVkAAIAXFNlc3Npb25BbHJlYWR5UHJvY2Vzc2VkAAMAWFZhbGlkYXRvclNldFNlbmRGYWlsZWQABABMVmFsaWRhdG9yU2V0RHJvcHBlZAAFAADlCAyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBRFdmVudAQEVAABFERQaGFzZVRyYW5zaXRpb25lZAgBEGZyb22dBQEgUGhhc2U8VD4EQHRoZSBzb3VyY2UgcGhhc2UBCHRvnQUBIFBoYXNlPFQ+BEBUaGUgdGFyZ2V0IHBoYXNlAAhdAUEgcGhhc2UgdHJhbnNpdGlvbiBoYXBwZW5lZC4gT25seSBjaGVja3MgbWFqb3IgY2hhbmdlcyBpbiB0aGUgdmFyaWFudHMsIG5vdCBtaW5vciBpbm5lchx2YWx1ZXMueFVuZXhwZWN0ZWRUYXJnZXRTbmFwc2hvdEZhaWxlZAABBIBUYXJnZXQgc25hcHNob3QgY3JlYXRpb24gZmFpbGVkLnRVbmV4cGVjdGVkVm90ZXJTbmFwc2hvdEZhaWxlZAACBHxWb3RlciBzbmFwc2hvdCBjcmVhdGlvbiBmYWlsZWQukFVuZXhwZWN0ZWRQaGFzZVRyYW5zaXRpb25PdXRPZldlaWdodBABEGZyb22dBQEgUGhhc2U8VD4AAQh0b50FASBQaGFzZTxUPgABIHJlcXVpcmVkFQEBGFdlaWdodAABDGhhZBUBARhXZWlnaHQAAwT4UGhhc2UgdHJhbnNpdGlvbiBjb3VsZCBub3QgcHJvY2VlZCBkdWUgdG8gYmVpbmcgb3V0IG9mIHdlaWdodC50VW5leHBlY3RlZFBoYXNlVHJhbnNpdGlvbkhhbHQIASByZXF1aXJlZBUBARhXZWlnaHQAAQxoYWQVAQEYV2VpZ2h0AAQEFQFQaGFzZSB0cmFuc2l0aW9uIGNvdWxkIG5vdCBldmVuIGJlZ2luIGJlY2FzZXUgb2YgYmVpbmcgb3V0IG9mIHdlaWdodC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTpCBSQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGHBhbGxldBRFdmVudAQEVAABDEhWZXJpZmljYXRpb25GYWlsZWQIADgBJFBhZ2VJbmRleAAA7QgBQEZlYXNpYmlsaXR5RXJyb3IAABCgQSB2ZXJpZmljYXRpb24gZmFpbGVkIGF0IHRoZSBnaXZlbiBwYWdlLgBVAU5PVEU6IGlmIHRoZSBpbmRleCBpcyAwLCB0aGVuIHRoaXMgY291bGQgbWVhbiBlaXRoZXIgdGhlIGZlYXNpYmlsaXR5IG9mIHRoZSBsYXN0IHBhZ2UFAXdhcyB3cm9uZywgb3IgdGhlIGZpbmFsIGNoZWNrcyBvZiBgZmluYWxpemVfdmVyaWZpY2F0aW9uYCBmYWlsZWQuIFZlcmlmaWVkCAA4ASRQYWdlSW5kZXgAADgBDHUzMgABCFkBVGhlIGdpdmVuIHBhZ2Ugb2YgYSBzb2x1dGlvbiBoYXMgYmVlbiB2ZXJpZmllZCwgd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHdpbm5lcnMgYmVpbmcwZm91bmQgaW4gaXQuGFF1ZXVlZAgAxQUBNEVsZWN0aW9uU2NvcmUAAPUIAVRPcHRpb248RWxlY3Rpb25TY29yZT4AAgQdAUEgc29sdXRpb24gd2l0aCB0aGUgZ2l2ZW4gc2NvcmUgaGFzIHJlcGxhY2VkIG91ciBjdXJyZW50IGJlc3Qgc29sdXRpb24uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV07QgMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllckBGZWFzaWJpbGl0eUVycm9yAAEsQFdyb25nV2lubmVyQ291bnQAAABMU25hcHNob3RVbmF2YWlsYWJsZQABACxJbnZhbGlkVm90ZQACADBJbnZhbGlkVm90ZXIAAwA0SW52YWxpZFdpbm5lcgAEADBJbnZhbGlkU2NvcmUABQAwSW52YWxpZFJvdW5kAAYALFNjb3JlVG9vTG93AAcAUEZhaWxlZFRvQm91bmRTdXBwb3J0AAgAME5wb3NFbGVjdGlvbgQA8QgBYHNwX25wb3NfZWxlY3Rpb25zOjpFcnJvcgAJAChJbmNvbXBsZXRlAAoAAPEICERzcF9ucG9zX2VsZWN0aW9ucxRFcnJvcgABKFhTb2x1dGlvbldlaWdodE92ZXJmbG93AAAAWFNvbHV0aW9uVGFyZ2V0T3ZlcmZsb3cAAQBQU29sdXRpb25JbnZhbGlkSW5kZXgAAgBgU29sdXRpb25JbnZhbGlkUGFnZUluZGV4AAMAPEFyaXRobWV0aWNFcnJvcgAEAEhJbnZhbGlkU3VwcG9ydEVkZ2UABQA0VG9vTWFueVZvdGVycwAGADhCb3VuZHNFeGNlZWRlZAAHADhEdXBsaWNhdGVWb3RlcgAIADxEdXBsaWNhdGVUYXJnZXQACQAA9QgEGE9wdGlvbgQEVAHFBQEIEE5vbmUAAAAQU29tZQQAxQUAAAEAAPkIEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBRFdmVudAQEVAABHChSZWdpc3RlcmVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAAxQUBNEVsZWN0aW9uU2NvcmUAAARRAVVwY29taW5nIHN1Ym1pc3Npb24gaGFzIGJlZW4gcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIGFjY291bnQsIHdpdGggdGhlIGdpdmVuIHNjb3JlLhhTdG9yZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAA4ASRQYWdlSW5kZXgAAQRdAUEgcGFnZSBvZiBzb2x1dGlvbiBzb2x1dGlvbiB3aXRoIHRoZSBnaXZlbiBpbmRleCBoYXMgYmVlbiBzdG9yZWQgZm9yIHRoZSBnaXZlbiBhY2NvdW50LiBSZXdhcmRlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAAFkBATBCYWxhbmNlT2Y8VD4AAgToVGhlIGdpdmVuIGFjY291bnQgaGFzIGJlZW4gcmV3YXJkZWQgd2l0aCB0aGUgZ2l2ZW4gYW1vdW50LhxTbGFzaGVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAAWQEBMEJhbGFuY2VPZjxUPgADBORUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBzbGFzaGVkIHdpdGggdGhlIGdpdmVuIGFtb3VudC4cRWplY3RlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABATUVGhlIGdpdmVuIHNvbHV0aW9uLCBmb3IgdGhlIGdpdmVuIHJvdW5kLCB3YXMgZWplY3RlZC4kRGlzY2FyZGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAFBJRUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBkaXNjYXJkZWQuGEJhaWxlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABgR0VGhlIGdpdmVuIGFjY291bnQgaGFzIGJhaWxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT9CBBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldBRFdmVudAQEVAABbBxFcmFQYWlkDAEkZXJhX2luZGV4OAEgRXJhSW5kZXgAAUB2YWxpZGF0b3JfcGF5b3V0WQEBMEJhbGFuY2VPZjxUPgABJHJlbWFpbmRlclkBATBCYWxhbmNlT2Y8VD4AABRwVGhlIGVyYSBwYXlvdXQgaGFzIGJlZW4gc2V0LgANAUluIG5vbi1taW50aW5nIG1vZGUsIGB2YWxpZGF0b3JfcGF5b3V0YCBpcyB0aGUgc3Rha2VyIHJld2FyZCBidWRnZXQFAXNuYXBzaG90dGVkIGZyb20gdGhlIGdlbmVyYWwgcG90LCBhbmQgYHJlbWFpbmRlcmAgaXMgYWx3YXlzIHplcm8uIQFJbiBsZWdhY3kgbWludGluZyBtb2RlLCBib3RoIGZpZWxkcyByZWZsZWN0IHRoZSBgRXJhUGF5b3V0YCBjb21wdXRhdGlvbi4gUmV3YXJkZWQMARRzdGFzaAQBMFQ6OkFjY291bnRJZAABEGRlc3SxBgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AAQQNAVRoZSBub21pbmF0b3IgaGFzIGJlZW4gcmV3YXJkZWQgYnkgdGhpcyBhbW91bnQgdG8gdGhpcyBkZXN0aW5hdGlvbi4cU2xhc2hlZAgBGHN0YWtlcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AAgQdAUEgc3Rha2VyICh2YWxpZGF0b3Igb3Igbm9taW5hdG9yKSBoYXMgYmVlbiBzbGFzaGVkIGJ5IHRoZSBnaXZlbiBhbW91bnQuaE9sZFNsYXNoaW5nUmVwb3J0RGlzY2FyZGVkBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAADCBkBQW4gb2xkIHNsYXNoaW5nIHJlcG9ydCBmcm9tIGEgcHJpb3IgZXJhIHdhcyBkaXNjYXJkZWQgYmVjYXVzZSBpdCBjb3VsZERub3QgYmUgcHJvY2Vzc2VkLhhCb25kZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4ABBDQQW4gYWNjb3VudCBoYXMgYm9uZGVkIHRoaXMgYW1vdW50LiBcW3N0YXNoLCBhbW91bnRcXQBNAU5PVEU6IFRoaXMgZXZlbnQgaXMgb25seSBlbWl0dGVkIHdoZW4gZnVuZHMgYXJlIGJvbmRlZCB2aWEgYSBkaXNwYXRjaGFibGUuIE5vdGFibHksIQFpdCB3aWxsIG5vdCBiZSBlbWl0dGVkIGZvciBzdGFraW5nIHJld2FyZHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBzdGFrZS4gVW5ib25kZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4ABQSQQW4gYWNjb3VudCBoYXMgdW5ib25kZWQgdGhpcyBhbW91bnQuJFdpdGhkcmF3bggBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgAGCFkBQW4gYWNjb3VudCBoYXMgY2FsbGVkIGB3aXRoZHJhd191bmJvbmRlZGAgYW5kIHJlbW92ZWQgdW5ib25kaW5nIGNodW5rcyB3b3J0aCBgQmFsYW5jZWBkZnJvbSB0aGUgdW5sb2NraW5nIHF1ZXVlLjRTdGFrZXJSZW1vdmVkBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQABwhVAUEgc3Vic2VxdWVudCBldmVudCBvZiBgV2l0aGRyYXduYCwgaW5kaWNhdGluZyB0aGF0IGBzdGFzaGAgd2FzIGZ1bGx5IHJlbW92ZWQgZnJvbSB0aGUcc3lzdGVtLhhLaWNrZWQIASRub21pbmF0b3IEATBUOjpBY2NvdW50SWQAARRzdGFzaAQBMFQ6OkFjY291bnRJZAAIBLRBIG5vbWluYXRvciBoYXMgYmVlbiBraWNrZWQgZnJvbSBhIHZhbGlkYXRvci4cQ2hpbGxlZAQBFHN0YXNoBAEwVDo6QWNjb3VudElkAAkEIQFBbiBhY2NvdW50IGhhcyBzdG9wcGVkIHBhcnRpY2lwYXRpbmcgYXMgZWl0aGVyIGEgdmFsaWRhdG9yIG9yIG5vbWluYXRvci40UGF5b3V0U3RhcnRlZBABJGVyYV9pbmRleDgBIEVyYUluZGV4AAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEQcGFnZTgBEFBhZ2UAARBuZXh05AEwT3B0aW9uPFBhZ2U+AAoEWQFBIFBhZ2Ugb2Ygc3Rha2VycyByZXdhcmRzIGFyZSBnZXR0aW5nIHBhaWQuIGBuZXh0YCBpcyBgTm9uZWAgaWYgYWxsIHBhZ2VzIGFyZSBjbGFpbWVkLkRWYWxpZGF0b3JQcmVmc1NldAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEUcHJlZnO1BgE4VmFsaWRhdG9yUHJlZnMACwSYQSB2YWxpZGF0b3IgaGFzIHNldCB0aGVpciBwcmVmZXJlbmNlcy5oU25hcHNob3RWb3RlcnNTaXplRXhjZWVkZWQEARBzaXplOAEMdTMyAAwEaFZvdGVycyBzaXplIGxpbWl0IHJlYWNoZWQubFNuYXBzaG90VGFyZ2V0c1NpemVFeGNlZWRlZAQBEHNpemU4AQx1MzIADQRsVGFyZ2V0cyBzaXplIGxpbWl0IHJlYWNoZWQuIEZvcmNlRXJhBAEQbW9kZQEJARxGb3JjaW5nAA4AZENvbnRyb2xsZXJCYXRjaERlcHJlY2F0ZWQEASBmYWlsdXJlczgBDHUzMgAPBKRSZXBvcnQgb2YgYSBjb250cm9sbGVyIGJhdGNoIGRlcHJlY2F0aW9uLkBDdXJyZW5jeU1pZ3JhdGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAThmb3JjZV93aXRoZHJhd1kBATBCYWxhbmNlT2Y8VD4AEAhVAVN0YWtpbmcgYmFsYW5jZSBtaWdyYXRlZCBmcm9tIGxvY2tzIHRvIGhvbGRzLCB3aXRoIGFueSBiYWxhbmNlIHRoYXQgY291bGQgbm90IGJlIGhlbGRMaXMgZm9yY2Ugd2l0aGRyYXduLlhQYWdlZEVsZWN0aW9uUHJvY2VlZGVkCAEQcGFnZTgBJFBhZ2VJbmRleAABGHJlc3VsdAUJAUBSZXN1bHQ8dTMyLCB1MzI+ABEkQQFBIHBhZ2UgZnJvbSBhIG11bHRpLXBhZ2UgZWxlY3Rpb24gd2FzIGZldGNoZWQuIEEgbnVtYmVyIG9mIHRoZXNlIGFyZSBmb2xsb3dlZCBieURgU3Rha2Vyc0VsZWN0ZWRgLgDwYE9rKGNvdW50KWAgaW5kaWNhdGVzIHRoZSBnaXZlIG51bWJlciBvZiBzdGFzaGVzIHdlcmUgYWRkZWQuBQFgRXJyKGluZGV4KWAgaW5kaWNhdGVzIHRoYXQgdGhlIHN0YXNoZXMgYWZ0ZXIgaW5kZXggd2VyZSBkcm9wcGVkLkEBYEVycigwKWAgaW5kaWNhdGVzIHRoYXQgYW4gZXJyb3IgaGFwcGVuZWQgYnV0IG5vIHN0YXNoZXMgd2VyZSBkcm9wcGVkIG5vciBhZGRlZC4AUQFUaGUgZXJyb3IgaW5kaWNhdGVzIHRoYXQgYSBudW1iZXIgb2YgdmFsaWRhdG9ycyB3ZXJlIGRyb3BwZWQgZHVlIHRvIGV4Y2VzcyBzaXplLCBidXSMdGhlIG92ZXJhbGwgZWxlY3Rpb24gd2lsbCBjb250aW51ZS48T2ZmZW5jZVJlcG9ydGVkDAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAABIGZyYWN0aW9uoQEBHFBlcmJpbGwAEghNAUFuIG9mZmVuY2UgZm9yIHRoZSBnaXZlbiB2YWxpZGF0b3IsIGZvciB0aGUgZ2l2ZW4gcGVyY2VudGFnZSBvZiB0aGVpciBzdGFrZSwgYXQgdGhlbGdpdmVuIGVyYSBhcyBiZWVuIHJlcG9ydGVkLjRTbGFzaENvbXB1dGVkEAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHNsYXNoX2VyYTgBIEVyYUluZGV4AAEgb2ZmZW5kZXIEATBUOjpBY2NvdW50SWQAARBwYWdlOAEMdTMyABMEMQFBbiBvZmZlbmNlIGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2xhc2ggaGFzIGJlZW4gY29tcHV0ZWQuOFNsYXNoQ2FuY2VsbGVkCAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAFASYQW4gdW5hcHBsaWVkIHNsYXNoIGhhcyBiZWVuIGNhbmNlbGxlZC44U2Vzc2lvblJvdGF0ZWQMAUBzdGFydGluZ19zZXNzaW9uOAEwU2Vzc2lvbkluZGV4AAEoYWN0aXZlX2VyYTgBIEVyYUluZGV4AAEscGxhbm5lZF9lcmE4ASBFcmFJbmRleAAVEIhTZXNzaW9uIGNoYW5nZSBoYXMgYmVlbiB0cmlnZ2VyZWQuAFkBSWYgcGxhbm5lZF9lcmEgaXMgb25lIGVyYSBhaGVhZCBvZiBhY3RpdmVfZXJhLCBpdCBpbXBsaWVzIG5ldyBlcmEgaXMgYmVpbmcgcGxhbm5lZCBhbmRQZWxlY3Rpb24gaXMgb25nb2luZy4oVW5leHBlY3RlZAQACQkBRFVuZXhwZWN0ZWRLaW5kPFQ+ABYIDQFTb21ldGhpbmcgb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuIHVuZGVyIG5vcm1hbCBvcGVyYXRpb24uvExvZ2dlZCBhcyBhbiBldmVudCBmb3IgZmFpbC1zYWZlIG9ic2VydmFiaWxpdHkuNE9mZmVuY2VUb29PbGQMASxvZmZlbmNlX2VyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkAAEgZnJhY3Rpb26hAQEcUGVyYmlsbAAXBD0BQW4gb2ZmZW5jZSB3YXMgcmVwb3J0ZWQgdGhhdCB3YXMgdG9vIG9sZCB0byBiZSBwcm9jZXNzZWQsIGFuZCB0aHVzIHdhcyBkcm9wcGVkLiRFcmFQcnVuZWQEARRpbmRleDgBIEVyYUluZGV4ABgErEFuIG9sZCBlcmEgd2l0aCB0aGUgZ2l2ZW4gaW5kZXggd2FzIHBydW5lZC5YVmFsaWRhdG9ySW5jZW50aXZlUGFpZBABDGVyYTgBIEVyYUluZGV4AAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEQZGVzdLEGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgAZBPRUaGUgdmFsaWRhdG9yIGhhcyBiZWVuIHBhaWQgdGhlaXIgc2VsZi1zdGFrZSBpbmNlbnRpdmUgYm9udXMubFZhbGlkYXRvckluY2VudGl2ZUNvbmZpZ1NldAwBSG9wdGltdW1fc2VsZl9zdGFrZVkBATBCYWxhbmNlT2Y8VD4AAUxoYXJkX2NhcF9zZWxmX3N0YWtlWQEBMEJhbGFuY2VPZjxUPgABMHNsb3BlX2ZhY3RvcqEBARxQZXJiaWxsABoE+FZhbGlkYXRvciBzZWxmLXN0YWtlIGluY2VudGl2ZSBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0AQkIUHBhbGxldF9zdGFraW5nX2FzeW5jHEZvcmNpbmcAARAoTm90Rm9yY2luZwAAACBGb3JjZU5ldwABACRGb3JjZU5vbmUAAgAsRm9yY2VBbHdheXMAAwAABQkEGFJlc3VsdAgEVAE4BEUBOAEICE9rBAA4AAAAAAxFcnIEADgAAAEAAAkJEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kBARUAAEYYEVyYUR1cmF0aW9uQm91bmRFeGNlZWRlZAAAAGhVbmtub3duVmFsaWRhdG9yQWN0aXZhdGlvbgABAGBQYWdlZEVsZWN0aW9uT3V0T2ZXZWlnaHQMARBwYWdlOAEkUGFnZUluZGV4AAEgcmVxdWlyZWQVAQEYV2VpZ2h0AAEMaGFkFQEBGFdlaWdodAACADBNaXNzaW5nUGF5ZWUIAQxlcmE4ASBFcmFJbmRleAABFHN0YXNoBAEwVDo6QWNjb3VudElkAAMAgFZhbGlkYXRvckluY2VudGl2ZVdlaWdodE1pc21hdGNoBAEMZXJhOAEgRXJhSW5kZXgABACAVmFsaWRhdG9ySW5jZW50aXZlVHJhbnNmZXJGYWlsZWQEAQxlcmE4ASBFcmFJbmRleAAFAAANCQw0cGFsbGV0X3Jldml2ZRhwYWxsZXQURXZlbnQEBFQAAQw8Q29udHJhY3RFbWl0dGVkDAEgY29udHJhY3T9BgEQSDE2MASQVGhlIGNvbnRyYWN0IHRoYXQgZW1pdHRlZCB0aGUgZXZlbnQuARBkYXRhGAEcVmVjPHU4Pgg1AURhdGEgc3VwcGxpZWQgYnkgdGhlIGNvbnRyYWN0LiBNZXRhZGF0YSBnZW5lcmF0ZWQgZHVyaW5nIGNvbnRyYWN0IGNvbXBpbGF0aW9uXGlzIG5lZWRlZCB0byBkZWNvZGUgaXQuARh0b3BpY3PEASRWZWM8SDI1Nj4IpEEgbGlzdCBvZiB0b3BpY3MgdXNlZCB0byBpbmRleCB0aGUgZXZlbnQu7E51bWJlciBvZiB0b3BpY3MgaXMgY2FwcGVkIGJ5IFtgbGltaXRzOjpOVU1fRVZFTlRfVE9QSUNTYF0uAAScQSBjdXN0b20gZXZlbnQgZW1pdHRlZCBieSB0aGUgY29udHJhY3QuMEluc3RhbnRpYXRlZAgBIGRlcGxveWVy/QYBEEgxNjAAASBjb250cmFjdP0GARBIMTYwAAEE3ENvbnRyYWN0IGRlcGxveWVkIGJ5IGRlcGxveWVyIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcy5IRXRoRXh0cmluc2ljUmV2ZXJ0BAE4ZGlzcGF0Y2hfZXJyb3J5BwE0RGlzcGF0Y2hFcnJvcgACGLRFbWl0dGVkIHdoZW4gYW4gRXRoZXJldW0gdHJhbnNhY3Rpb24gcmV2ZXJ0cy4AKQFFdGhlcmV1bSB0cmFuc2FjdGlvbnMgYWx3YXlzIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSBhdCB0aGUgZXh0cmluc2ljIGxldmVsLNhhcyBldmVuIHJldmVydGVkIGNhbGxzIG11c3Qgc3RvcmUgdGhlaXIgYFJlY2VpcHRJbmZvYC4lAVRvIGRpc3Rpbmd1aXNoIHJldmVydGVkIGNhbGxzIGZyb20gc3VjY2Vzc2Z1bCBvbmVzLCB0aGlzIGV2ZW50IGlzIGVtaXR0ZWSEZm9yIGZhaWxlZCBFdGhlcmV1bSB0cmFuc2FjdGlvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0EQkMNHBhbGxldF9haF9vcHMYcGFsbGV0FEV2ZW50BARUAAEQXExlYXNlVW5yZXNlcnZlUmVtYWluaW5nDAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkAAEccGFyYV9pZKABGFBhcmFJZAABJHJlbWFpbmluZ1kBATBCYWxhbmNlT2Y8VD4AAAQRAVNvbWUgbGVhc2UgcmVzZXJ2ZSBjb3VsZCBub3QgYmUgdW5yZXNlcnZlZCBhbmQgbmVlZHMgbWFudWFsIGNsZWFudXAubENyb3dkbG9hblVucmVzZXJ2ZVJlbWFpbmluZwwBJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAABHHBhcmFfaWSgARhQYXJhSWQAASRyZW1haW5pbmdZAQEwQmFsYW5jZU9mPFQ+AAEEVQFTb21lIGFtb3VudCBmb3IgYSBjcm93ZGxvYW4gcmVzZXJ2ZSBjb3VsZCBub3QgYmUgdW5yZXNlcnZlZCBhbmQgbmVlZHMgbWFudWFsIGNsZWFudXAuRFNvdmVyZWlnbk1pZ3JhdGVkEAEccGFyYV9pZO0DAQx1MTYEvFRoZSBwYXJhY2hhaW4gSUQgdGhhdCBoYWQgaXRzIGFjY291bnQgbWlncmF0ZWQuARBmcm9tBAEwVDo6QWNjb3VudElkBKRUaGUgb2xkIGFjY291bnQgdGhhdCB3YXMgbWlncmF0ZWQgb3V0IG9mLgEIdG8EATBUOjpBY2NvdW50SWQEnFRoZSBuZXcgYWNjb3VudCB0aGF0IHdhcyBtaWdyYXRlZCBpbnRvLgE8ZGVyaXZhdGlvbl9wYXRoEQcBIFZlYzx1MTY+BOxUaGUgZGVyaXZhdGlvbiBwYXRoIHRoYXQgd2FzIHVzZWQgdG8gdHJhbnNsYXRlIHRoZSBhY2NvdW50LgIIJQFBIHNvdmVyZWlnbiBwYXJhY2hhaW4gYWNjb3VudCBoYXMgYmVlbiBtaWdyYXRlZCBmcm9tIGl0cyBjaGlsZCB0byBzaWJsaW5nPHJlcHJlc2VudGF0aW9uLjBGYWlsZWRUb0JvbmQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgADBJhGYWlsZWQgdG8gcmUtYm9uZCBzb21lIG1pZ3JhdGVkIGZ1bmRzLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBUJCDBmcmFtZV9zeXN0ZW0UUGhhc2UAAQw4QXBwbHlFeHRyaW5zaWMEADgBDHUzMgAAADBGaW5hbGl6YXRpb24AAQA4SW5pdGlhbGl6YXRpb24AAgAAGQkAAALQAB0JCDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9uZAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZSEJAURDb3c8J3N0YXRpYywgc3RyPgAAIQkEDENvdwQEVAElCQAEACUJAAAAJQkAAAUCACkJCDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2hAARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbl0BARBib29sAAAtCQwwZnJhbWVfc3lzdGVtGGxpbWl0czBCbG9ja1dlaWdodHMAAAwBKGJhc2VfYmxvY2sVAQEYV2VpZ2h0AAEkbWF4X2Jsb2NrFQEBGFdlaWdodAABJHBlcl9jbGFzczEJAYRQZXJEaXNwYXRjaENsYXNzPFdlaWdodHNQZXJDbGFzcz4AADEJDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBNQkADAEYbm9ybWFsNQkBBFQAASxvcGVyYXRpb25hbDUJAQRUAAEkbWFuZGF0b3J5NQkBBFQAADUJDDBmcmFtZV9zeXN0ZW0YbGltaXRzPFdlaWdodHNQZXJDbGFzcwAAEAE4YmFzZV9leHRyaW5zaWMVAQEYV2VpZ2h0AAE0bWF4X2V4dHJpbnNpYxEBAThPcHRpb248V2VpZ2h0PgABJG1heF90b3RhbBEBAThPcHRpb248V2VpZ2h0PgABIHJlc2VydmVkEQEBOE9wdGlvbjxXZWlnaHQ+AAA5CQwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAACAEMbWF4PQkBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgABPG1heF9oZWFkZXJfc2l6ZeQBLE9wdGlvbjx1MzI+AAA9CQw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATgADAEYbm9ybWFsOAEEVAABLG9wZXJhdGlvbmFsOAEEVAABJG1hbmRhdG9yeTgBBFQAAEEJCChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZCgBDHU2NAABFHdyaXRlKAEMdTY0AABFCQgoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1lIQkBRENvdzwnc3RhdGljLCBzdHI+AAEkaW1wbF9uYW1lIQkBRENvdzwnc3RhdGljLCBzdHI+AAFEYXV0aG9yaW5nX3ZlcnNpb244AQx1MzIAATBzcGVjX3ZlcnNpb244AQx1MzIAATBpbXBsX3ZlcnNpb244AQx1MzIAARBhcGlzSQkBHEFwaXNWZWMAAUx0cmFuc2FjdGlvbl92ZXJzaW9uOAEMdTMyAAE4c3lzdGVtX3ZlcnNpb24MAQh1OAAASQkEDENvdwQEVAFNCQAEAE0JAAAATQkAAAJRCQBRCQAABAh5AjgAVQkMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASw8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC4sSW52YWxpZFRhc2sABwSQVGhlIHNwZWNpZmllZCBbYFRhc2tgXSBpcyBub3QgdmFsaWQuKEZhaWxlZFRhc2sACAS8VGhlIHNwZWNpZmllZCBbYFRhc2tgXSBmYWlsZWQgZHVyaW5nIGV4ZWN1dGlvbi5ETm90aGluZ0F1dGhvcml6ZWQACQRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACgSUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0WQkQKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jaxRCbG9jawgYSGVhZGVyAWAkRXh0cmluc2ljAV0JAAgBGGhlYWRlcmABGEhlYWRlcgABKGV4dHJpbnNpY3NpCQE4VmVjPEV4dHJpbnNpYz4AAF0JEChzcF9ydW50aW1lHGdlbmVyaWNMdW5jaGVja2VkX2V4dHJpbnNpY0hVbmNoZWNrZWRFeHRyaW5zaWMQHEFkZHJlc3MBABBDYWxsASAkU2lnbmF0dXJlAaEEFEV4dHJhAWEJAAQAGAAAAGEJCHRjdW11bHVzX3BhbGxldF93ZWlnaHRfcmVjbGFpbVBTdG9yYWdlV2VpZ2h0UmVjbGFpbQgEVAAEUwFlCQAEAGUJAQRTAABlCQAABDAVBxkHHQchByUHKQcxBzUHOQc9B0EHSQcAaQkAAAJdCQBtCQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTBibG9ja193ZWlnaHQ8QmxvY2tXZWlnaHRNb2RlBARUAAEMIEZ1bGxDb3JlBAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAAARFBvdGVudGlhbEZ1bGxDb3JlDAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjkASxPcHRpb248dTMyPgABNHRhcmdldF93ZWlnaHQVAQEYV2VpZ2h0AAEAOEZyYWN0aW9uT2ZDb3JlCAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjkASxPcHRpb248dTMyPgACAABxCQAAAnUJAHUJDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudCBBbmNlc3RvcgQESAFAAAwBOHVzZWRfYmFuZHdpZHRoeQkBNFVzZWRCYW5kd2lkdGgAAThwYXJhX2hlYWRfaGFzaAUFASRPcHRpb248SD4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWyNCQGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAHkJDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDRVc2VkQmFuZHdpZHRoAAAMATR1bXBfbXNnX2NvdW50OAEMdTMyAAE8dW1wX3RvdGFsX2J5dGVzOAEMdTMyAAE0aHJtcF9vdXRnb2luZ30JAYxCVHJlZU1hcDxQYXJhSWQsIEhybXBDaGFubmVsVXBkYXRlPgAAfQkEIEJUcmVlTWFwCARLAaAEVgGBCQAEAIUJAAAAgQkMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50REhybXBDaGFubmVsVXBkYXRlAAAIASRtc2dfY291bnQ4AQx1MzIAASx0b3RhbF9ieXRlczgBDHUzMgAAhQkAAAKJCQCJCQAABAiggQkAjQkEGE9wdGlvbgQEVAGRCQEIEE5vbmUAAAAQU29tZQQAkQkAAAEAAJEJDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAAlQkMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIAUAADAE4dXNlZF9iYW5kd2lkdGh5CQE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJr5AGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWyNCQGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAJkJBBhPcHRpb24EBFQBnQkBCBBOb25lAAAAEFNvbWUEAJ0JAAABAACdCQxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAAChCQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWRAAURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0eaUJAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHOpCQGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc6kJAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AAClCQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAAKkJAAACrQkArQkAAAQIoLEJALEJDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZAUFATBPcHRpb248SGFzaD4AALUJDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1zuQkBSEFzeW5jQmFja2luZ1BhcmFtcwAAuQkQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAAvQkIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAQAEkUmVsYXlIYXNoAADBCQQgQlRyZWVNYXAIBEsBoARWAb0JAAQAxQkAAADFCQAAAskJAMkJAAAECKC9CQDNCQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAANEJAAAC1QkA1QkIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGgAAgBJHJlY2lwaWVudKABCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AANkJCHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtLFBvVk1lc3NhZ2VzAAAYAWhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaEABRHJlbGF5X2NoYWluOjpIYXNoAAE0Y29yZV9zZWxlY3RvcgwBCHU4AAEwYnVuZGxlX2luZGV4DAEIdTgAATR1bXBfbXNnX2NvdW50OAEMdTMyAAFMaHJtcF9vdXRib3VuZF9jb3VudDgBDHUzMgABYGhybXBfb3V0Ym91bmRfcmVjaXBpZW50c90JASxWZWM8UGFyYUlkPgAA3QkAAAKgAOEJDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABGExPdmVybGFwcGluZ1VwZ3JhZGVzAAAEGQFBdHRlbXB0IHRvIHVwZ3JhZGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3aGlsZSBleGlzdGluZyB1cGdyYWRlIHBlbmRpbmcuUFByb2hpYml0ZWRCeVBvbGthZG90AAEETQFQb2xrYWRvdCBjdXJyZW50bHkgcHJvaGliaXRzIHRoaXMgcGFyYWNoYWluIGZyb20gdXBncmFkaW5nIGl0cyB2YWxpZGF0aW9uIGZ1bmN0aW9uLhhUb29CaWcAAghFAVRoZSBzdXBwbGllZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBjb21waWxlZCBpbnRvIGEgYmxvYiBsYXJnZXIgdGhhbiBQb2xrYWRvdCBpczx3aWxsaW5nIHRvIHJ1bi5oVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAwQdAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgdmFsaWRhdGlvbiBkYXRhIGRpZCBub3QgcnVuIHRoaXMgYmxvY2sudEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAQEKQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIGhvc3QgY29uZmlndXJhdGlvbiBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLjBOb3RTY2hlZHVsZWQABQTYTm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB1cGdyYWRlIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LuUJCDxwYWxsZXRfcHJlaW1hZ2VAT2xkUmVxdWVzdFN0YXR1cwgkQWNjb3VudElkAQQcQmFsYW5jZQFZAQEILFVucmVxdWVzdGVkCAEcZGVwb3NpdLkFAVAoQWNjb3VudElkLCBCYWxhbmNlKQABDGxlbjgBDHUzMgAAACRSZXF1ZXN0ZWQMARxkZXBvc2l06QkBcE9wdGlvbjwoQWNjb3VudElkLCBCYWxhbmNlKT4AARRjb3VudDgBDHUzMgABDGxlbuQBLE9wdGlvbjx1MzI+AAEAAOkJBBhPcHRpb24EBFQBuQUBCBBOb25lAAAAEFNvbWUEALkFAAABAADtCQg8cGFsbGV0X3ByZWltYWdlNFJlcXVlc3RTdGF0dXMIJEFjY291bnRJZAEEGFRpY2tldAHxCQEILFVucmVxdWVzdGVkCAEYdGlja2V09QkBTChBY2NvdW50SWQsIFRpY2tldCkAAQxsZW44AQx1MzIAAAAkUmVxdWVzdGVkDAEwbWF5YmVfdGlja2V0+QkBbE9wdGlvbjwoQWNjb3VudElkLCBUaWNrZXQpPgABFGNvdW50OAEMdTMyAAEkbWF5YmVfbGVu5AEsT3B0aW9uPHUzMj4AAQAA8QkUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAWQEBKEY6OkJhbGFuY2UAAPUJAAAECATxCQD5CQQYT3B0aW9uBARUAfUJAQgQTm9uZQAAABBTb21lBAD1CQAAAQAA/QkAAAQIQDgAAQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAFCgw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFcnJvcgQEVAABIBhUb29CaWcAAASgUHJlaW1hZ2UgaXMgdG9vIGxhcmdlIHRvIHN0b3JlIG9uLWNoYWluLjBBbHJlYWR5Tm90ZWQAAQSkUHJlaW1hZ2UgaGFzIGFscmVhZHkgYmVlbiBub3RlZCBvbi1jaGFpbi40Tm90QXV0aG9yaXplZAACBMhUaGUgdXNlciBpcyBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLiBOb3ROb3RlZAADBPxUaGUgcHJlaW1hZ2UgY2Fubm90IGJlIHJlbW92ZWQgc2luY2UgaXQgaGFzIG5vdCB5ZXQgYmVlbiBub3RlZC4kUmVxdWVzdGVkAAQECQFBIHByZWltYWdlIG1heSBub3QgYmUgcmVtb3ZlZCB3aGVuIHRoZXJlIGFyZSBvdXRzdGFuZGluZyByZXF1ZXN0cy4wTm90UmVxdWVzdGVkAAUELQFUaGUgcHJlaW1hZ2UgcmVxdWVzdCBjYW5ub3QgYmUgcmVtb3ZlZCBzaW5jZSBubyBvdXRzdGFuZGluZyByZXF1ZXN0cyBleGlzdC4cVG9vTWFueQAGBFUBTW9yZSB0aGFuIGBNQVhfSEFTSF9VUEdSQURFX0JVTEtfQ09VTlRgIGhhc2hlcyB3ZXJlIHJlcXVlc3RlZCB0byBiZSB1cGdyYWRlZCBhdCBvbmNlLhhUb29GZXcABwTkVG9vIGZldyBoYXNoZXMgd2VyZSByZXF1ZXN0ZWQgdG8gYmUgdXBncmFkZWQgKGkuZS4gemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LgkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDQoEUwAABAAVCgEYVmVjPFQ+AAANCgQYT3B0aW9uBARUAREKAQgQTm9uZQAAABBTb21lBAARCgAAAQAAEQoIQHBhbGxldF9zY2hlZHVsZXIkU2NoZWR1bGVkFBBOYW1lAQgQQ2FsbAH5BCxCbG9ja051bWJlcgE4NFBhbGxldHNPcmlnaW4B8QMkQWNjb3VudElkAQQAFAEgbWF5YmVfaWQBBwEwT3B0aW9uPE5hbWU+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxs+QQBEENhbGwAAThtYXliZV9wZXJpb2RpY8wBlE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyPj4AARhvcmlnaW7xAwE0UGFsbGV0c09yaWdpbgAAFQoAAAINCgAZCghAcGFsbGV0X3NjaGVkdWxlcixSZXRyeUNvbmZpZwQYUGVyaW9kATgADAE0dG90YWxfcmV0cmllcwwBCHU4AAEkcmVtYWluaW5nDAEIdTgAARhwZXJpb2Q4ARhQZXJpb2QAAB0KDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFcnJvcgQEVAABFEBGYWlsZWRUb1NjaGVkdWxlAAAEZEZhaWxlZCB0byBzY2hlZHVsZSBhIGNhbGwgTm90Rm91bmQAAQR8Q2Fubm90IGZpbmQgdGhlIHNjaGVkdWxlZCBjYWxsLlxUYXJnZXRCbG9ja051bWJlckluUGFzdAACBKRHaXZlbiB0YXJnZXQgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LkhSZXNjaGVkdWxlTm9DaGFuZ2UAAwTwUmVzY2hlZHVsZSBmYWlsZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBjaGFuZ2Ugc2NoZWR1bGVkIHRpbWUuFE5hbWVkAAQE0EF0dGVtcHQgdG8gdXNlIGEgbm9uLW5hbWVkIGZ1bmN0aW9uIG9uIGEgbmFtZWQgdGFzay4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuIQoMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuJQoIRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAKQoEGE9wdGlvbgQEVAEtCgEIEE5vbmUAAAAQU29tZQQALQoAAAEAAC0KCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPkASxPcHRpb248dTMyPgAAMQoIRHBhbGxldF9taWdyYXRpb25zJE1ibVN0YXR1cwAADAEcb25nb2luZyUKATBNYm1Jc09uZ29pbmcAASBwcm9ncmVzcykKAUxPcHRpb248TWJtUHJvZ3Jlc3M+AAEgcHJlZml4ZXM0ATBWZWM8VmVjPHU4Pj4AADUKDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBOQoEUwAABABBCgEYVmVjPFQ+AAA5Cgw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEJhbGFuY2VMb2NrBBxCYWxhbmNlAVkBAAwBCGlkeQIBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50WQEBHEJhbGFuY2UAARxyZWFzb25zPQoBHFJlYXNvbnMAAD0KDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMcUmVhc29ucwABDAxGZWUAAAAQTWlzYwABAAxBbGwAAgAAQQoAAAI5CgBFCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAUkKBFMAAAQATQoBGFZlYzxUPgAASQoMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxSZXNlcnZlRGF0YQhEUmVzZXJ2ZUlkZW50aWZpZXIBeQIcQmFsYW5jZQFZAQAIAQhpZHkCAURSZXNlcnZlSWRlbnRpZmllcgABGGFtb3VudFkBARxCYWxhbmNlAABNCgAAAkkKAFEKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBVQoEUwAABABZCgEYVmVjPFQ+AABVChQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAdUHHEJhbGFuY2UBWQEACAEIaWTVBwEISWQAARhhbW91bnRZAQEcQmFsYW5jZQAAWQoAAAJVCgBdCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWEKBFMAAAQAcQoBGFZlYzxUPgAAYQoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAFlChxCYWxhbmNlAVkBAAgBCGlkZQoBCElkAAEYYW1vdW50WQEBHEJhbGFuY2UAAGUKCGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZUxSdW50aW1lRnJlZXplUmVhc29uAAEIPE5vbWluYXRpb25Qb29scwQAaQoBlHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpGcmVlemVSZWFzb24AUAAYUmV2aXZlBABtCgFscGFsbGV0X3Jldml2ZTo6RnJlZXplUmVhc29uAFoAAGkKDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQwRnJlZXplUmVhc29uAAEEOFBvb2xNaW5CYWxhbmNlAAAAAG0KDDRwYWxsZXRfcmV2aXZlGHBhbGxldDBGcmVlemVSZWFzb24AAQQ4UEdhc01pbkJhbGFuY2UAAAAAcQoAAAJhCgB1Cgw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFcnJvcggEVAAESQABMDhWZXN0aW5nQmFsYW5jZQAABJxWZXN0aW5nIGJhbGFuY2UgdG9vIGhpZ2ggdG8gc2VuZCB2YWx1ZS5UTGlxdWlkaXR5UmVzdHJpY3Rpb25zAAEEyEFjY291bnQgbGlxdWlkaXR5IHJlc3RyaWN0aW9ucyBwcmV2ZW50IHdpdGhkcmF3YWwuTEluc3VmZmljaWVudEJhbGFuY2UAAgR4QmFsYW5jZSB0b28gbG93IHRvIHNlbmQgdmFsdWUuSEV4aXN0ZW50aWFsRGVwb3NpdAADBOxWYWx1ZSB0b28gbG93IHRvIGNyZWF0ZSBhY2NvdW50IGR1ZSB0byBleGlzdGVudGlhbCBkZXBvc2l0LjRFeHBlbmRhYmlsaXR5AAQEkFRyYW5zZmVyL3BheW1lbnQgd291bGQga2lsbCBhY2NvdW50LlxFeGlzdGluZ1Zlc3RpbmdTY2hlZHVsZQAFBMxBIHZlc3Rpbmcgc2NoZWR1bGUgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgYWNjb3VudC4sRGVhZEFjY291bnQABgSMQmVuZWZpY2lhcnkgYWNjb3VudCBtdXN0IHByZS1leGlzdC48VG9vTWFueVJlc2VydmVzAAcEuE51bWJlciBvZiBuYW1lZCByZXNlcnZlcyBleGNlZWQgYE1heFJlc2VydmVzYC4wVG9vTWFueUhvbGRzAAgE+E51bWJlciBvZiBob2xkcyBleGNlZWQgYFZhcmlhbnRDb3VudE9mPFQ6OlJ1bnRpbWVIb2xkUmVhc29uPmAuOFRvb01hbnlGcmVlemVzAAkEmE51bWJlciBvZiBmcmVlemVzIGV4Y2VlZCBgTWF4RnJlZXplc2AuTElzc3VhbmNlRGVhY3RpdmF0ZWQACgQBAVRoZSBpc3N1YW5jZSBjYW5ub3QgYmUgbW9kaWZpZWQgc2luY2UgaXQgaXMgYWxyZWFkeSBkZWFjdGl2YXRlZC4kRGVsdGFaZXJvAAsEZFRoZSBkZWx0YSBjYW5ub3QgYmUgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQueQoIaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50IFJlbGVhc2VzAAEIJFYxQW5jaWVudAAAAAhWMgABAAB9ChA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMcc3RvcmFnZRhOb0Ryb3AEBFQBgQoABACBCgEEVAAAgQoYNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZSRpbWJhbGFuY2UkSW1iYWxhbmNlDARCAVkBGE9uRHJvcAA4T3Bwb3NpdGVPbkRyb3AAAAQBGGFtb3VudFkBAQRCAACFCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAW0BBFMAAAQAiQoBGFZlYzxUPgAAiQoAAAJtAQCNCgg4cGFsbGV0X3Zlc3RpbmcgUmVsZWFzZXMAAQgIVjAAAAAIVjEAAQAAkQoMOHBhbGxldF92ZXN0aW5nGHBhbGxldBRFcnJvcgQEVAABFChOb3RWZXN0aW5nAAAEhFRoZSBhY2NvdW50IGdpdmVuIGlzIG5vdCB2ZXN0aW5nLlRBdE1heFZlc3RpbmdTY2hlZHVsZXMAAQglAVRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGBNYXhWZXN0aW5nU2NoZWR1bGVzYCBjb3VudCBvZiBzY2hlZHVsZXMgYW5kIHRodXNRAWNhbm5vdCBhZGQgYW5vdGhlciBvbmUuIENvbnNpZGVyIG1lcmdpbmcgZXhpc3Rpbmcgc2NoZWR1bGVzIGluIG9yZGVyIHRvIGFkZCBhbm90aGVyLiRBbW91bnRMb3cAAgQFAUFtb3VudCBiZWluZyB0cmFuc2ZlcnJlZCBpcyB0b28gbG93IHRvIGNyZWF0ZSBhIHZlc3Rpbmcgc2NoZWR1bGUuYFNjaGVkdWxlSW5kZXhPdXRPZkJvdW5kcwADBNBBbiBpbmRleCB3YXMgb3V0IG9mIGJvdW5kcyBvZiB0aGUgdmVzdGluZyBzY2hlZHVsZXMuVEludmFsaWRTY2hlZHVsZVBhcmFtcwAEBA0BRmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBzY2hlZHVsZSBiZWNhdXNlIHNvbWUgcGFyYW1ldGVyIHdhcyBpbnZhbGlkLgR0RXJyb3IgZm9yIHRoZSB2ZXN0aW5nIHBhbGxldC6VChBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBRFcnJvcgQEVAABGGBJbnZhbGlkRXRoZXJldW1TaWduYXR1cmUAAARsSW52YWxpZCBFdGhlcmV1bSBzaWduYXR1cmUuQFNpZ25lckhhc05vQ2xhaW0AAQR4RXRoZXJldW0gYWRkcmVzcyBoYXMgbm8gY2xhaW0uQFNlbmRlckhhc05vQ2xhaW0AAgSwQWNjb3VudCBJRCBzZW5kaW5nIHRyYW5zYWN0aW9uIGhhcyBubyBjbGFpbS4wUG90VW5kZXJmbG93AAMISQFUaGVyZSdzIG5vdCBlbm91Z2ggaW4gdGhlIHBvdCB0byBwYXkgb3V0IHNvbWUgdW52ZXN0ZWQgYW1vdW50LiBHZW5lcmFsbHkgaW1wbGllcyBhMGxvZ2ljIGVycm9yLkBJbnZhbGlkU3RhdGVtZW50AAQEkEEgbmVlZGVkIHN0YXRlbWVudCB3YXMgbm90IGluY2x1ZGVkLkxWZXN0ZWRCYWxhbmNlRXhpc3RzAAUEpFRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGEgdmVzdGVkIGJhbGFuY2UuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpkKCDRmcmFtZV9zdXBwb3J0IFBhbGxldElkAAAEAHkCARxbdTg7IDhdAACdCgwocGFsbGV0X2RhcBhwYWxsZXQURXJyb3IEBFQAAQhAVW5rbm93bkJ1ZGdldEtleQAABB0BQSBrZXkgaW4gdGhlIGJ1ZGdldCBhbGxvY2F0aW9uIGRvZXMgbm90IG1hdGNoIGFueSByZWdpc3RlcmVkIHJlY2lwaWVudC44QnVkZ2V0Tm90RXhhY3QAAQTkQnVkZ2V0IGFsbG9jYXRpb24gcGVyY2VudGFnZXMgZG8gbm90IHN1bSB0byBleGFjdGx5IDEwMCUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqEKAAACpQoApQoAAAQMnQEEoQEAqQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAYQEBGFZlYzxUPgAArQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGxCgRTAAAEALUKARhWZWM8VD4AALEKDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldDRDYW5kaWRhdGVJbmZvCCRBY2NvdW50SWQBBBxCYWxhbmNlAVkBAAgBDHdobwQBJEFjY291bnRJZAABHGRlcG9zaXRZAQEcQmFsYW5jZQAAtQoAAAKxCgC5CgxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXJyb3IEBFQAAUREVG9vTWFueUNhbmRpZGF0ZXMAAASMVGhlIHBhbGxldCBoYXMgdG9vIG1hbnkgY2FuZGlkYXRlcy5cVG9vRmV3RWxpZ2libGVDb2xsYXRvcnMAAQSsTGVhdmluZyB3b3VsZCByZXN1bHQgaW4gdG9vIGZldyBjYW5kaWRhdGVzLkBBbHJlYWR5Q2FuZGlkYXRlAAIEfEFjY291bnQgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZS4wTm90Q2FuZGlkYXRlAAMEbEFjY291bnQgaXMgbm90IGEgY2FuZGlkYXRlLlBUb29NYW55SW52dWxuZXJhYmxlcwAEBIRUaGVyZSBhcmUgdG9vIG1hbnkgSW52dWxuZXJhYmxlcy5MQWxyZWFkeUludnVsbmVyYWJsZQAFBIxBY2NvdW50IGlzIGFscmVhZHkgYW4gSW52dWxuZXJhYmxlLjxOb3RJbnZ1bG5lcmFibGUABgR8QWNjb3VudCBpcyBub3QgYW4gSW52dWxuZXJhYmxlLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAAHBJxBY2NvdW50IGhhcyBubyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRC5YVmFsaWRhdG9yTm90UmVnaXN0ZXJlZAAIBIxWYWxpZGF0b3IgSUQgaXMgbm90IHlldCByZWdpc3RlcmVkLmxJbnNlcnRUb0NhbmRpZGF0ZUxpc3RGYWlsZWQACQScQ291bGQgbm90IGluc2VydCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QudFJlbW92ZUZyb21DYW5kaWRhdGVMaXN0RmFpbGVkAAoEpENvdWxkIG5vdCByZW1vdmUgZnJvbSB0aGUgY2FuZGlkYXRlIGxpc3QuNERlcG9zaXRUb29Mb3cACwT0TmV3IGRlcG9zaXQgYW1vdW50IHdvdWxkIGJlIGJlbG93IHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLmRVcGRhdGVDYW5kaWRhdGVMaXN0RmFpbGVkAAwEkENvdWxkIG5vdCB1cGRhdGUgdGhlIGNhbmRpZGF0ZSBsaXN0LkBJbnN1ZmZpY2llbnRCb25kAA0EKQFEZXBvc2l0IGFtb3VudCBpcyB0b28gbG93IHRvIHRha2UgdGhlIHRhcmdldCdzIHNsb3QgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LlBUYXJnZXRJc05vdENhbmRpZGF0ZQAOBC0BVGhlIHRhcmdldCBhY2NvdW50IHRvIGJlIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBpcyBub3QgYSBjYW5kaWRhdGUuQElkZW50aWNhbERlcG9zaXQADwQNAVRoZSB1cGRhdGVkIGRlcG9zaXQgYW1vdW50IGlzIGVxdWFsIHRvIHRoZSBhbW91bnQgYWxyZWFkeSByZXNlcnZlZC5ASW52YWxpZFVucmVzZXJ2ZQAQBD0BQ2Fubm90IGxvd2VyIGNhbmRpZGFjeSBib25kIHdoaWxlIG9jY3VweWluZyBhIGZ1dHVyZSBjb2xsYXRvciBzbG90IGluIHRoZSBsaXN0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC69CgAAAsEKAMEKAAAECAS5AQDFCgAAAskKAMkKAAAECDjNCgDNCgwoc3Bfc3Rha2luZxxvZmZlbmNlPE9mZmVuY2VTZXZlcml0eQAABAChAQEcUGVyYmlsbAAA0QoAAAQI1QoYANUKDBxzcF9jb3JlGGNyeXB0byRLZXlUeXBlSWQAAAQAdAEcW3U4OyA0XQAA2QoMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFcnJvcgQEVAABFDBJbnZhbGlkUHJvb2YAAARgSW52YWxpZCBvd25lcnNoaXAgcHJvb2YuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEEnE5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElEIGZvciBhY2NvdW50LjREdXBsaWNhdGVkS2V5AAIEZFJlZ2lzdGVyZWQgZHVwbGljYXRlIGtleS4YTm9LZXlzAAMEpE5vIGtleXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY291bnQuJE5vQWNjb3VudAAEBBkBS2V5IHNldHRpbmcgYWNjb3VudCBpcyBub3QgbGl2ZSwgc28gaXQncyBpbXBvc3NpYmxlIHRvIGFzc29jaWF0ZSBrZXlzLgR0RXJyb3IgZm9yIHRoZSBzZXNzaW9uIHBhbGxldC7dCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAb0BBFMAAAQA4QoBGFZlYzxUPgAA4QoAAAK9AQDlCghIc3BfY29uc2Vuc3VzX3Nsb3RzEFNsb3QAAAQAKAEMdTY0AADpCgAABAjlCjgA7QoMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAaAEUwAABADxCgEsQlRyZWVTZXQ8VD4AAPEKBCBCVHJlZVNldAQEVAGgAAQA3QkAAAD1CgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfkKBFMAAAQABQsBGFZlYzxUPgAA+QoIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVYT3V0Ym91bmRDaGFubmVsRGV0YWlscwAAHAEkcmVjaXBpZW50oAEYUGFyYUlkAAEUc3RhdGX9CgE0T3V0Ym91bmRTdGF0ZQABNHNpZ25hbHNfZXhpc3RdAQEQYm9vbAABLGZpcnN0X2luZGV47QMBDHUxNgABKGxhc3RfaW5kZXjtAwEMdTE2AAEUZmxhZ3MBCwFQT3V0Ym91bmRDaGFubmVsRmxhZ3MAATBxdWV1ZWRfYnl0ZXM4AQx1MzIAAP0KCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlNE91dGJvdW5kU3RhdGUAAQgIT2sAAAAkU3VzcGVuZGVkAAEAAAELCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlUE91dGJvdW5kQ2hhbm5lbEZsYWdzAAAEARBiaXRzOAEMdTMyAAAFCwAAAvkKAAkLAAAECKDtAwANCwxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AABELCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlPFF1ZXVlQ29uZmlnRGF0YQAADAFEc3VzcGVuZF90aHJlc2hvbGQ4AQx1MzIAAThkcm9wX3RocmVzaG9sZDgBDHUzMgABQHJlc3VtZV90aHJlc2hvbGQ4AQx1MzIAABULDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABFDhCYWRRdWV1ZUNvbmZpZwAABBEBU2V0dGluZyB0aGUgcXVldWUgY29uZmlnIGZhaWxlZCBzaW5jZSBvbmUgb2YgaXRzIHZhbHVlcyB3YXMgaW52YWxpZC5AQWxyZWFkeVN1c3BlbmRlZAABBIxUaGUgZXhlY3V0aW9uIGlzIGFscmVhZHkgc3VzcGVuZGVkLjhBbHJlYWR5UmVzdW1lZAACBIRUaGUgZXhlY3V0aW9uIGlzIGFscmVhZHkgcmVzdW1lZC50VG9vTWFueUFjdGl2ZU91dGJvdW5kQ2hhbm5lbHMAAwSwVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBvdXRib3VuZCBjaGFubmVscy4YVG9vQmlnAAQEXFRoZSBtZXNzYWdlIGlzIHRvbyBiaWcuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhkLDChwYWxsZXRfeGNtGHBhbGxldCxRdWVyeVN0YXR1cwQsQmxvY2tOdW1iZXIBOAEMHFBlbmRpbmcQASRyZXNwb25kZXLJAQFEVmVyc2lvbmVkTG9jYXRpb24AAUxtYXliZV9tYXRjaF9xdWVyaWVyHQsBZE9wdGlvbjxWZXJzaW9uZWRMb2NhdGlvbj4AATBtYXliZV9ub3RpZnkhCwFAT3B0aW9uPCh1OCwgdTgpPgABHHRpbWVvdXQ4ASxCbG9ja051bWJlcgAAADxWZXJzaW9uTm90aWZpZXIIARhvcmlnaW7JAQFEVmVyc2lvbmVkTG9jYXRpb24AASRpc19hY3RpdmVdAQEQYm9vbAABABRSZWFkeQgBIHJlc3BvbnNlKQsBRFZlcnNpb25lZFJlc3BvbnNlAAEIYXQ4ASxCbG9ja051bWJlcgACAAAdCwQYT3B0aW9uBARUAckBAQgQTm9uZQAAABBTb21lBADJAQAAAQAAIQsEGE9wdGlvbgQEVAElCwEIEE5vbmUAAAAQU29tZQQAJQsAAAEAACULAAAECAwMACkLCAx4Y21EVmVyc2lvbmVkUmVzcG9uc2UAAQwIVjMEAIECATB2Mzo6UmVzcG9uc2UAAwAIVjQEAO0CATB2NDo6UmVzcG9uc2UABAAIVjUEADkDATB2NTo6UmVzcG9uc2UABQAALQsAAAQIOMkBADELAAAEDCgVATgANQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE5CwRTAAAEAD0LARhWZWM8VD4AADkLAAAECMkBOAA9CwAAAjkLAEELDChwYWxsZXRfeGNtGHBhbGxldFRWZXJzaW9uTWlncmF0aW9uU3RhZ2UAARBcTWlncmF0ZVN1cHBvcnRlZFZlcnNpb24AAABcTWlncmF0ZVZlcnNpb25Ob3RpZmllcnMAAQBQTm90aWZ5Q3VycmVudFRhcmdldHMEAE0BATxPcHRpb248VmVjPHU4Pj4AAgBoTWlncmF0ZUFuZE5vdGlmeU9sZFRhcmdldHMAAwAARQsAAAQMOATBAwBJCwwocGFsbGV0X3hjbRhwYWxsZXRoUmVtb3RlTG9ja2VkRnVuZ2libGVSZWNvcmQISENvbnN1bWVySWRlbnRpZmllcgEQME1heENvbnN1bWVycwAAEAEYYW1vdW50WQEBEHUxMjgAARRvd25lcskBAURWZXJzaW9uZWRMb2NhdGlvbgABGGxvY2tlcskBAURWZXJzaW9uZWRMb2NhdGlvbgABJGNvbnN1bWVyc00LAdBCb3VuZGVkVmVjPChDb25zdW1lcklkZW50aWZpZXIsIHUxMjgpLCBNYXhDb25zdW1lcnM+AABNCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAVELBFMAAAQAVQsBGFZlYzxUPgAAUQsAAAQIEFkBAFULAAACUQsAWQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFdCwRTAAAEAGELARhWZWM8VD4AAF0LAAAECFkByQEAYQsAAAJdCwBlCwgocGFsbGV0X3hjbVhBdXRob3JpemVkQWxpYXNlc0VudHJ5CBhUaWNrZXQBaQsMTUFYAW0LAAgBIGFsaWFzZXJzcQsBeEJvdW5kZWRWZWM8T3JpZ2luQWxpYXNlciwgTUFYPgABGHRpY2tldGkLARhUaWNrZXQAAGkLFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAFkBAShGOjpCYWxhbmNlAABtCwwocGFsbGV0X3hjbRhwYWxsZXRQTWF4QXV0aG9yaXplZEFsaWFzZXMAAAAAcQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF1CwRTAAAEAHkLARhWZWM8VD4AAHULDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlczRPcmlnaW5BbGlhc2VyAAAIASBsb2NhdGlvbskBAURWZXJzaW9uZWRMb2NhdGlvbgABGGV4cGlyeQEBASxPcHRpb248dTY0PgAAeQsAAAJ1CwB9CwwocGFsbGV0X3hjbRhwYWxsZXQURXJyb3IEBFQAAXAsVW5yZWFjaGFibGUAAAhdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC4sU2VuZEZhaWx1cmUAAQhBAVRoZXJlIHdhcyBzb21lIG90aGVyIGlzc3VlIChpLmUuIG5vdCB0byBkbyB3aXRoIHJvdXRpbmcpIGluIHNlbmRpbmcgdGhlIG1lc3NhZ2UuyFBlcmhhcHMgYSBsYWNrIG9mIHNwYWNlIGZvciBidWZmZXJpbmcgdGhlIG1lc3NhZ2UuIEZpbHRlcmVkAAIEnFRoZSBtZXNzYWdlIGV4ZWN1dGlvbiBmYWlscyB0aGUgZmlsdGVyLkhVbndlaWdoYWJsZU1lc3NhZ2UAAwS0VGhlIG1lc3NhZ2UncyB3ZWlnaHQgY291bGQgbm90IGJlIGRldGVybWluZWQuYERlc3RpbmF0aW9uTm90SW52ZXJ0aWJsZQAEBNxUaGUgZGVzdGluYXRpb24gYExvY2F0aW9uYCBwcm92aWRlZCBjYW5ub3QgYmUgaW52ZXJ0ZWQuFEVtcHR5AAUEgFRoZSBhc3NldHMgdG8gYmUgc2VudCBhcmUgZW1wdHkuOENhbm5vdFJlYW5jaG9yAAYENQFDb3VsZCBub3QgcmUtYW5jaG9yIHRoZSBhc3NldHMgdG8gZGVjbGFyZSB0aGUgZmVlcyBmb3IgdGhlIGRlc3RpbmF0aW9uIGNoYWluLjRUb29NYW55QXNzZXRzAAcExFRvbyBtYW55IGFzc2V0cyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci40SW52YWxpZE9yaWdpbgAIBHhPcmlnaW4gaXMgaW52YWxpZCBmb3Igc2VuZGluZy4oQmFkVmVyc2lvbgAJBCEBVGhlIHZlcnNpb24gb2YgdGhlIGBWZXJzaW9uZWRgIHZhbHVlIHVzZWQgaXMgbm90IGFibGUgdG8gYmUgaW50ZXJwcmV0ZWQuLEJhZExvY2F0aW9uAAoIQQFUaGUgZ2l2ZW4gbG9jYXRpb24gY291bGQgbm90IGJlIHVzZWQgKGUuZy4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgZXhwcmVzc2VkIGluIHRoZWBkZXNpcmVkIHZlcnNpb24gb2YgWENNKS44Tm9TdWJzY3JpcHRpb24ACwS8VGhlIHJlZmVyZW5jZWQgc3Vic2NyaXB0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQADAQRAVRoZSBsb2NhdGlvbiBpcyBpbnZhbGlkIHNpbmNlIGl0IGFscmVhZHkgaGFzIGEgc3Vic2NyaXB0aW9uIGZyb20gdXMuWENhbm5vdENoZWNrT3V0VGVsZXBvcnQADQQpAUNvdWxkIG5vdCBjaGVjay1vdXQgdGhlIGFzc2V0cyBmb3IgdGVsZXBvcnRhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4uKExvd0JhbGFuY2UADgRBAVRoZSBvd25lciBkb2VzIG5vdCBvd24gKGFsbCkgb2YgdGhlIGFzc2V0IHRoYXQgdGhleSB3aXNoIHRvIGRvIHRoZSBvcGVyYXRpb24gb24uMFRvb01hbnlMb2NrcwAPBMBUaGUgYXNzZXQgb3duZXIgaGFzIHRvbyBtYW55IGxvY2tzIG9uIHRoZSBhc3NldC5MQWNjb3VudE5vdFNvdmVyZWlnbgAQBDEBVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IGFuIGlkZW50aWZpYWJsZSBzb3ZlcmVpZ24gYWNjb3VudCBmb3IgYW55IGxvY2F0aW9uLihGZWVzTm90TWV0ABEEKQFUaGUgb3BlcmF0aW9uIHJlcXVpcmVkIGZlZXMgdG8gYmUgcGFpZCB3aGljaCB0aGUgaW5pdGlhdG9yIGNvdWxkIG5vdCBtZWV0LjBMb2NrTm90Rm91bmQAEgT0QSByZW1vdGUgbG9jayB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgY291bGQgbm90IGJlIGZvdW5kLhRJblVzZQATBEkBVGhlIHVubG9jayBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgYmVjYXVzZSB0aGVyZSBhcmUgc3RpbGwgY29uc3VtZXJzIG9mIHRoZSBsb2NrLmhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQAVBPBJbnZhbGlkIGFzc2V0LCByZXNlcnZlIGNoYWluIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGZvciBpdC54SW52YWxpZEFzc2V0VW5zdXBwb3J0ZWRSZXNlcnZlABYERQFJbnZhbGlkIGFzc2V0LCBkbyBub3Qgc3VwcG9ydCByZW1vdGUgYXNzZXQgcmVzZXJ2ZXMgd2l0aCBkaWZmZXJlbnQgZmVlcyByZXNlcnZlcy48VG9vTWFueVJlc2VydmVzABcESQFUb28gbWFueSBhc3NldHMgd2l0aCBkaWZmZXJlbnQgcmVzZXJ2ZSBsb2NhdGlvbnMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQAYBHxMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUuYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwAZBLhUb28gbWFueSBsb2NhdGlvbnMgYXV0aG9yaXplZCB0byBhbGlhcyBvcmlnaW4uNEV4cGlyZXNJblBhc3QAGgSMRXhwaXJ5IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC40QWxpYXNOb3RGb3VuZAAbBNBUaGUgYWxpYXMgdG8gcmVtb3ZlIGF1dGhvcml6YXRpb24gZm9yIHdhcyBub3QgZm91bmQuhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcggBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9ygQsBOEV4ZWN1dGlvbkVycm9yABwINQFMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUgd2l0aCB0aGUgYWN0dWFsIFhDTSBlcnJvciBhbmQgdGhlIGluZGV4IG9mIHRoZYhpbnN0cnVjdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoELDChwYWxsZXRfeGNtGGVycm9yczhFeGVjdXRpb25FcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAIULCGBicF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIsQnJpZGdlU3RhdGUAAAgBTGRlbGl2ZXJ5X2ZlZV9mYWN0b3IZBQEkRml4ZWRVMTI4AAEwaXNfY29uZ2VzdGVkXQEBEGJvb2wAAIkLCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZSRCb29rU3RhdGUENE1lc3NhZ2VPcmlnaW4B0QMAGAEUYmVnaW44ASRQYWdlSW5kZXgAAQxlbmQ4ASRQYWdlSW5kZXgAARRjb3VudDgBJFBhZ2VJbmRleAABQHJlYWR5X25laWdoYm91cnONCwGET3B0aW9uPE5laWdoYm91cnM8TWVzc2FnZU9yaWdpbj4+AAE0bWVzc2FnZV9jb3VudCgBDHU2NAABEHNpemUoAQx1NjQAAI0LBBhPcHRpb24EBFQBkQsBCBBOb25lAAAAEFNvbWUEAJELAAABAACRCwhQcGFsbGV0X21lc3NhZ2VfcXVldWUoTmVpZ2hib3VycwQ0TWVzc2FnZU9yaWdpbgHRAwAIARBwcmV20QMBNE1lc3NhZ2VPcmlnaW4AARBuZXh00QMBNE1lc3NhZ2VPcmlnaW4AAJULAAAECNEDOACZCwhQcGFsbGV0X21lc3NhZ2VfcXVldWUQUGFnZQgQU2l6ZQE4IEhlYXBTaXplAAAYASRyZW1haW5pbmc4ARBTaXplAAE4cmVtYWluaW5nX3NpemU4ARBTaXplAAEsZmlyc3RfaW5kZXg4ARBTaXplAAEUZmlyc3Q4ARBTaXplAAEQbGFzdDgBEFNpemUAARBoZWFwnQsBnEJvdW5kZWRWZWM8dTgsIEludG9VMzI8SGVhcFNpemUsIFNpemU+PgAAnQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAChCwxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEVycm9yBARUAAEkLE5vdFJlYXBhYmxlAAAISQFQYWdlIGlzIG5vdCByZWFwYWJsZSBiZWNhdXNlIGl0IGhhcyBpdGVtcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIGFuZCBpcyBub3Qgb2xkHGVub3VnaC4YTm9QYWdlAAEEhFBhZ2UgdG8gYmUgcmVhcGVkIGRvZXMgbm90IGV4aXN0LiROb01lc3NhZ2UAAgSoVGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBjb3VsZCBub3QgYmUgZm91bmQuQEFscmVhZHlQcm9jZXNzZWQAAwQBAVRoZSBtZXNzYWdlIHdhcyBhbHJlYWR5IHByb2Nlc3NlZCBhbmQgY2Fubm90IGJlIHByb2Nlc3NlZCBhZ2Fpbi4YUXVldWVkAAQErFRoZSBtZXNzYWdlIGlzIHF1ZXVlZCBmb3IgZnV0dXJlIGV4ZWN1dGlvbi5ISW5zdWZmaWNpZW50V2VpZ2h0AAUEGQFUaGVyZSBpcyB0ZW1wb3JhcmlseSBub3QgZW5vdWdoIHdlaWdodCB0byBjb250aW51ZSBzZXJ2aWNpbmcgbWVzc2FnZXMuYFRlbXBvcmFyaWx5VW5wcm9jZXNzYWJsZQAGEKhUaGlzIG1lc3NhZ2UgaXMgdGVtcG9yYXJpbHkgdW5wcm9jZXNzYWJsZS4AWQFTdWNoIGVycm9ycyBhcmUgZXhwZWN0ZWQsIGJ1dCBub3QgZ3VhcmFudGVlZCwgdG8gcmVzb2x2ZSB0aGVtc2VsdmVzIGV2ZW50dWFsbHkgdGhyb3VnaCRyZXRyeWluZy4sUXVldWVQYXVzZWQABwzsVGhlIHF1ZXVlIGlzIHBhdXNlZCBhbmQgbm8gbWVzc2FnZSBjYW4gYmUgZXhlY3V0ZWQgZnJvbSBpdC4AHQFUaGlzIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUgYW5kIG1heSByZXNvbHZlIGluIHRoZSBmdXR1cmUgYnkgcmUtdHJ5aW5nLkxSZWN1cnNpdmVEaXNhbGxvd2VkAAgEMQFBbm90aGVyIGNhbGwgaXMgaW4gcHJvZ3Jlc3MgYW5kIG5lZWRzIHRvIGZpbmlzaCBiZWZvcmUgdGhpcyBjYWxsIGNhbiBoYXBwZW4uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqULDIRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQYcGFsbGV0FEVycm9yBARUAAE0aFVuc3VwcG9ydGVkTG9jYXRpb25WZXJzaW9uAAAEiENvbnZlcnQgdmVyc2lvbmVkIGxvY2F0aW9uIGZhaWx1cmVESW52YWxpZEFzc2V0T3duZXIAAQQZAUNoZWNrIGxvY2F0aW9uIGZhaWx1cmUsIHNob3VsZCBzdGFydCBmcm9tIHRoZSBkaXNwYXRjaCBvcmlnaW4gYXMgb3duZXIsU2VuZEZhaWx1cmUAAgRgU2VuZCB4Y20gbWVzc2FnZSBmYWlsdXJlKEZlZXNOb3RNZXQAAwRoV2l0aGRyYXcgZmVlIGFzc2V0IGZhaWx1cmVgTG9jYXRpb25Db252ZXJzaW9uRmFpbGVkAAQEmENvbnZlcnQgdG8gcmVhbmNob3JlZCBsb2NhdGlvbiBmYWlsdXJlGEhhbHRlZAAFBGBNZXNzYWdlIGV4cG9ydCBpcyBoYWx0ZWQsVW5yZWFjaGFibGUABghdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC5AVW5zdXBwb3J0ZWRBc3NldAAHBLhUaGUgYXNzZXQgcHJvdmlkZWQgZm9yIHRoZSB0aXAgaXMgdW5zdXBwb3J0ZWQuNFdpdGhkcmF3RXJyb3IACARkVW5hYmxlIHRvIHdpdGhkcmF3IGFzc2V0LjhJbnZhbGlkQWNjb3VudAAJBLRBY2NvdW50IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBsb2NhdGlvbi4kU3dhcEVycm9yAAoEyFByb3ZpZGVkIHRpcCBhc3NldCBjb3VsZCBub3QgYmUgc3dhcHBlZCBmb3IgZXRoZXIuJEJ1cm5FcnJvcgALBGhFdGhlciBjb3VsZCBub3QgYmUgYnVybmVkLjRUaXBBbW91bnRaZXJvAAwEZFRoZSB0aXAgcHJvdmlkZWQgaXMgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuqQsMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurQsAAAQIBAgAsQsIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAVkBJEFjY291bnRJZAEEME1heEFwcHJvdmFscwAAEAEQd2hlbhUEAVhUaW1lcG9pbnQ8QmxvY2tOdW1iZXI+AAEcZGVwb3NpdFkBARxCYWxhbmNlAAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEkYXBwcm92YWxztQsBjEJvdW5kZWRWZWM8QWNjb3VudElkLCBNYXhBcHByb3ZhbHM+AAC1CwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABhAQEYVmVjPFQ+AAC5Cww8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFcnJvcgQEVAABOEBNaW5pbXVtVGhyZXNob2xkAAAEfFRocmVzaG9sZCBtdXN0IGJlIDIgb3IgZ3JlYXRlci48QWxyZWFkeUFwcHJvdmVkAAEErENhbGwgaXMgYWxyZWFkeSBhcHByb3ZlZCBieSB0aGlzIHNpZ25hdG9yeS5ETm9BcHByb3ZhbHNOZWVkZWQAAgScQ2FsbCBkb2Vzbid0IG5lZWQgYW55IChtb3JlKSBhcHByb3ZhbHMuRFRvb0Zld1NpZ25hdG9yaWVzAAMEqFRoZXJlIGFyZSB0b28gZmV3IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LkhUb29NYW55U2lnbmF0b3JpZXMABASsVGhlcmUgYXJlIHRvbyBtYW55IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LlRTaWduYXRvcmllc091dE9mT3JkZXIABQQNAVRoZSBzaWduYXRvcmllcyB3ZXJlIHByb3ZpZGVkIG91dCBvZiBvcmRlcjsgdGhleSBzaG91bGQgYmUgb3JkZXJlZC5MU2VuZGVySW5TaWduYXRvcmllcwAGBA0BVGhlIHNlbmRlciB3YXMgY29udGFpbmVkIGluIHRoZSBvdGhlciBzaWduYXRvcmllczsgaXQgc2hvdWxkbid0IGJlLiBOb3RGb3VuZAAHBKBNdWx0aXNpZyBvcGVyYXRpb24gbm90IGZvdW5kIGluIHN0b3JhZ2UuIE5vdE93bmVyAAgIUQFPbmx5IHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBtdWx0aXNpZyBpcyBhYmxlIHRvIGNhbmNlbCBpdCBvciB1cGRhdGU0aXRzIGRlcG9zaXRzLixOb1RpbWVwb2ludAAJBB0BTm8gdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gaXMgYWxyZWFkeSB1bmRlcndheS44V3JvbmdUaW1lcG9pbnQACgQtAUEgZGlmZmVyZW50IHRpbWVwb2ludCB3YXMgZ2l2ZW4gdG8gdGhlIG11bHRpc2lnIG9wZXJhdGlvbiB0aGF0IGlzIHVuZGVyd2F5LkxVbmV4cGVjdGVkVGltZXBvaW50AAsE9EEgdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IG5vIG11bHRpc2lnIG9wZXJhdGlvbiBpcyB1bmRlcndheS48TWF4V2VpZ2h0VG9vTG93AAwE0FRoZSBtYXhpbXVtIHdlaWdodCBpbmZvcm1hdGlvbiBwcm92aWRlZCB3YXMgdG9vIGxvdy40QWxyZWFkeVN0b3JlZAANBKBUaGUgZGF0YSB0byBiZSBzdG9yZWQgaXMgYWxyZWFkeSBzdG9yZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lr0LAAAECMELWQEAwQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHFCwRTAAAEAMkLARhWZWM8VD4AAMULCDBwYWxsZXRfcHJveHk8UHJveHlEZWZpbml0aW9uDCRBY2NvdW50SWQBBCRQcm94eVR5cGUBIQQsQmxvY2tOdW1iZXIBOAAMASBkZWxlZ2F0ZQQBJEFjY291bnRJZAABKHByb3h5X3R5cGUhBAEkUHJveHlUeXBlAAEUZGVsYXk4ASxCbG9ja051bWJlcgAAyQsAAALFCwDNCwAABAjRC1kBANELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB1QsEUwAABADZCwEYVmVjPFQ+AADVCwgwcGFsbGV0X3Byb3h5MEFubm91bmNlbWVudAwkQWNjb3VudElkAQQQSGFzaAFALEJsb2NrTnVtYmVyATgADAEQcmVhbAQBJEFjY291bnRJZAABJGNhbGxfaGFzaEABEEhhc2gAARhoZWlnaHQ4ASxCbG9ja051bWJlcgAA2QsAAALVCwDdCwwwcGFsbGV0X3Byb3h5GHBhbGxldBRFcnJvcgQEVAABIBxUb29NYW55AAAEIQFUaGVyZSBhcmUgdG9vIG1hbnkgcHJveGllcyByZWdpc3RlcmVkIG9yIHRvbyBtYW55IGFubm91bmNlbWVudHMgcGVuZGluZy4gTm90Rm91bmQAAQR0UHJveHkgcmVnaXN0cmF0aW9uIG5vdCBmb3VuZC4gTm90UHJveHkAAgTMU2VuZGVyIGlzIG5vdCBhIHByb3h5IG9mIHRoZSBhY2NvdW50IHRvIGJlIHByb3hpZWQuLFVucHJveHlhYmxlAAMEIQFBIGNhbGwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIHByb3h5IHR5cGUncyBmaWx0ZXIgd2FzIGF0dGVtcHRlZC4kRHVwbGljYXRlAAQEbEFjY291bnQgaXMgYWxyZWFkeSBhIHByb3h5LjBOb1Blcm1pc3Npb24ABQQVAUNhbGwgbWF5IG5vdCBiZSBtYWRlIGJ5IHByb3h5IGJlY2F1c2UgaXQgbWF5IGVzY2FsYXRlIGl0cyBwcml2aWxlZ2VzLixVbmFubm91bmNlZAAGBNBBbm5vdW5jZW1lbnQsIGlmIG1hZGUgYXQgYWxsLCB3YXMgbWFkZSB0b28gcmVjZW50bHkuLE5vU2VsZlByb3h5AAcEZENhbm5vdCBhZGQgc2VsZiBhcyBwcm94eS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu4QsAAAQMBFkBXQEA5QsMOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFcnJvcgQEVAABFCxOb3RBc3NpZ25lZAAABIxUaGUgaW5kZXggd2FzIG5vdCBhbHJlYWR5IGFzc2lnbmVkLiBOb3RPd25lcgABBKRUaGUgaW5kZXggaXMgYXNzaWduZWQgdG8gYW5vdGhlciBhY2NvdW50LhRJblVzZQACBHBUaGUgaW5kZXggd2FzIG5vdCBhdmFpbGFibGUuLE5vdFRyYW5zZmVyAAMEyFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFjY291bnRzIGFyZSBpZGVudGljYWwuJFBlcm1hbmVudAAEBNBUaGUgaW5kZXggaXMgcGVybWFuZW50IGFuZCBtYXkgbm90IGJlIGZyZWVkL2NoYW5nZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LukLDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0RGV0YWlscwwcQmFsYW5jZQFZASRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFZAQAwARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABGHN1cHBseVkBARxCYWxhbmNlAAEcZGVwb3NpdFkBAThEZXBvc2l0QmFsYW5jZQABLG1pbl9iYWxhbmNlWQEBHEJhbGFuY2UAATRpc19zdWZmaWNpZW50XQEBEGJvb2wAASBhY2NvdW50czgBDHUzMgABLHN1ZmZpY2llbnRzOAEMdTMyAAEkYXBwcm92YWxzOAEMdTMyAAEYc3RhdHVz7QsBLEFzc2V0U3RhdHVzAADtCww0cGFsbGV0X2Fzc2V0cxR0eXBlcyxBc3NldFN0YXR1cwABDBBMaXZlAAAAGEZyb3plbgABAChEZXN0cm95aW5nAAIAAPELAAAECDgEAPULDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0QWNjb3VudBAcQmFsYW5jZQFZAThEZXBvc2l0QmFsYW5jZQFZARRFeHRyYQEQJEFjY291bnRJZAEEABABHGJhbGFuY2VZAQEcQmFsYW5jZQABGHN0YXR1c/kLATRBY2NvdW50U3RhdHVzAAEYcmVhc29u/QsBqEV4aXN0ZW5jZVJlYXNvbjxEZXBvc2l0QmFsYW5jZSwgQWNjb3VudElkPgABFGV4dHJhEAEURXh0cmEAAPkLDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFjY291bnRTdGF0dXMAAQwYTGlxdWlkAAAAGEZyb3plbgABABxCbG9ja2VkAAIAAP0LDDRwYWxsZXRfYXNzZXRzFHR5cGVzPEV4aXN0ZW5jZVJlYXNvbggcQmFsYW5jZQFZASRBY2NvdW50SWQBBAEUIENvbnN1bWVyAAAAKFN1ZmZpY2llbnQAAQAsRGVwb3NpdEhlbGQEAFkBARxCYWxhbmNlAAIAPERlcG9zaXRSZWZ1bmRlZAADACxEZXBvc2l0RnJvbQgABAEkQWNjb3VudElkAABZAQEcQmFsYW5jZQAEAAABDAAABAw4BAQABQwMNHBhbGxldF9hc3NldHMUdHlwZXMgQXBwcm92YWwIHEJhbGFuY2UBWQE4RGVwb3NpdEJhbGFuY2UBWQEACAEYYW1vdW50WQEBHEJhbGFuY2UAARxkZXBvc2l0WQEBOERlcG9zaXRCYWxhbmNlAAAJDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFZATRCb3VuZGVkU3RyaW5nAQ0MABQBHGRlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAARBuYW1lDQwBNEJvdW5kZWRTdHJpbmcAARhzeW1ib2wNDAE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5dAQEQYm9vbAAADQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAARDAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuFQwEGE9wdGlvbgQEVAHpCwEIEE5vbmUAAAAQU29tZQQA6QsAAAEAABkMBBhPcHRpb24EBFQBCQwBCBBOb25lAAAAEFNvbWUEAAkMAAABAAAdDAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXNEQ29sbGVjdGlvbkRldGFpbHMIJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlAVkBACgBFG93bmVyBAEkQWNjb3VudElkAAEYaXNzdWVyBAEkQWNjb3VudElkAAEUYWRtaW4EASRBY2NvdW50SWQAARxmcmVlemVyBAEkQWNjb3VudElkAAE0dG90YWxfZGVwb3NpdFkBAThEZXBvc2l0QmFsYW5jZQABMGZyZWVfaG9sZGluZ10BARBib29sAAEUaXRlbXM4AQx1MzIAAThpdGVtX21ldGFkYXRhczgBDHUzMgABKGF0dHJpYnV0ZXM4AQx1MzIAASRpc19mcm96ZW5dAQEQYm9vbAAAIQwAAAQMBDg4ACUMDDhwYWxsZXRfdW5pcXVlcxR0eXBlcyxJdGVtRGV0YWlscwgkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBWQEAEAEUb3duZXIEASRBY2NvdW50SWQAASBhcHByb3ZlZJEBAURPcHRpb248QWNjb3VudElkPgABJGlzX2Zyb3plbl0BARBib29sAAEcZGVwb3NpdFkBAThEZXBvc2l0QmFsYW5jZQAAKQwMOHBhbGxldF91bmlxdWVzFHR5cGVzSENvbGxlY3Rpb25NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBWQEsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAARBkYXRhRQQBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbl0BARBib29sAAAtDAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMwSXRlbU1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFZASxTdHJpbmdMaW1pdAAADAEcZGVwb3NpdFkBAThEZXBvc2l0QmFsYW5jZQABEGRhdGFFBAFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuXQEBEGJvb2wAADEMAAAEDDjknQEANQwAAAQIfFkBADkMAAAECFkBkQEAPQwMOHBhbGxldF91bmlxdWVzGHBhbGxldBRFcnJvcggEVAAESQABWDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS4oV3JvbmdPd25lcgADBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABARsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uFEluVXNlAAUEdFRoZSBpdGVtIElEIGlzIGFscmVhZHkgdGFrZW4uGEZyb3plbgAGBIRUaGUgaXRlbSBvciBjb2xsZWN0aW9uIGlzIGZyb3plbi40V3JvbmdEZWxlZ2F0ZQAHBPRUaGUgZGVsZWdhdGUgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKE5vRGVsZWdhdGUACAR4VGhlcmUgaXMgbm8gZGVsZWdhdGUgYXBwcm92ZWQuKFVuYXBwcm92ZWQACQTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLihVbmFjY2VwdGVkAAoEJQFUaGUgbmFtZWQgb3duZXIgaGFzIG5vdCBzaWduZWQgb3duZXJzaGlwIG9mIHRoZSBjb2xsZWN0aW9uIGlzIGFjY2VwdGFibGUuGExvY2tlZAALBExUaGUgaXRlbSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQADARsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuTE1heFN1cHBseUFscmVhZHlTZXQADQSQVGhlIG1heCBzdXBwbHkgaGFzIGFscmVhZHkgYmVlbiBzZXQuRE1heFN1cHBseVRvb1NtYWxsAA4EQQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRvIHRoZSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGFscmVhZHkgaGFzLixVbmtub3duSXRlbQAPBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLihOb3RGb3JTYWxlABAEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAEQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LihOb01ldGFkYXRhABIEVE5vIG1ldGFkYXRhIGlzIGZvdW5kLjRXcm9uZ01ldGFkYXRhABMEoFdyb25nIG1ldGFkYXRhIGtleS92YWx1ZSBieXRlcyBzdXBwbGllZC5EQXR0cmlidXRlTm90Rm91bmQAFARoQW4gYXR0cmlidXRlIGlzIG5vdCBmb3VuZC44V3JvbmdBdHRyaWJ1dGUAFQSkV3JvbmcgYXR0cmlidXRlIGtleS92YWx1ZSBieXRlcyBzdXBwbGllZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuQQwMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFZAQAYARRvd25lcgQBJEFjY291bnRJZAABNG93bmVyX2RlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAARRpdGVtczgBDHUzMgABOGl0ZW1fbWV0YWRhdGFzOAEMdTMyAAEwaXRlbV9jb25maWdzOAEMdTMyAAEoYXR0cmlidXRlczgBDHUzMgAARQwMLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAUkMAAQADAE4Q29sbGVjdGlvblJvbGUAAEkMDCxwYWxsZXRfbmZ0cxR0eXBlczhDb2xsZWN0aW9uUm9sZQABDBhJc3N1ZXIAAQAcRnJlZXplcgACABRBZG1pbgAEAABNDAwscGFsbGV0X25mdHMUdHlwZXMsSXRlbURldGFpbHMMJEFjY291bnRJZAEEHERlcG9zaXQBUQwkQXBwcm92YWxzAVUMAAwBFG93bmVyBAEkQWNjb3VudElkAAEkYXBwcm92YWxzVQwBJEFwcHJvdmFscwABHGRlcG9zaXRRDAEcRGVwb3NpdAAAUQwMLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFZASRBY2NvdW50SWQBBAAIARxhY2NvdW50BAEkQWNjb3VudElkAAEYYW1vdW50WQEBOERlcG9zaXRCYWxhbmNlAABVDAxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX21hcDxCb3VuZGVkQlRyZWVNYXAMBEsBBARWAeQEUwAABABZDAE4QlRyZWVNYXA8SywgVj4AAFkMBCBCVHJlZU1hcAgESwEEBFYB5AAEAF0MAAAAXQwAAAJhDABhDAAABAgE5ABlDAwscGFsbGV0X25mdHMUdHlwZXNIQ29sbGVjdGlvbk1ldGFkYXRhCBxEZXBvc2l0AVkBLFN0cmluZ0xpbWl0AAAIARxkZXBvc2l0WQEBHERlcG9zaXQAARBkYXRhRQEBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgAAaQwMLHBhbGxldF9uZnRzFHR5cGVzMEl0ZW1NZXRhZGF0YQgcRGVwb3NpdAFtDCxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdG0MARxEZXBvc2l0AAEQZGF0YUUBAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AAG0MDCxwYWxsZXRfbmZ0cxR0eXBlc0xJdGVtTWV0YWRhdGFEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFZASRBY2NvdW50SWQBBAAIARxhY2NvdW50kQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEYYW1vdW50WQEBOERlcG9zaXRCYWxhbmNlAABxDAAABBA45H0EfAB1DAAABAhFAXkMAHkMDCxwYWxsZXRfbmZ0cxR0eXBlc0BBdHRyaWJ1dGVEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFZASRBY2NvdW50SWQBBAAIARxhY2NvdW50kQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEYYW1vdW50WQEBOERlcG9zaXRCYWxhbmNlAAB9DAxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEAIEMASxCVHJlZVNldDxUPgAAgQwEIEJUcmVlU2V0BARUAQQABABhAQAAAIUMDCxwYWxsZXRfbmZ0cxR0eXBlcyxQZW5kaW5nU3dhcBAwQ29sbGVjdGlvbklkATgYSXRlbUlkAThYSXRlbVByaWNlV2l0aERpcmVjdGlvbgGVBCBEZWFkbGluZQE4ABABSGRlc2lyZWRfY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbeQBOE9wdGlvbjxJdGVtSWQ+AAEUcHJpY2WRBAF4T3B0aW9uPEl0ZW1QcmljZVdpdGhEaXJlY3Rpb24+AAEgZGVhZGxpbmU4ASBEZWFkbGluZQAAiQwMLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAY0MAAQAKAE0UGFsbGV0RmVhdHVyZQAAjQwMLHBhbGxldF9uZnRzFHR5cGVzNFBhbGxldEZlYXR1cmUAARAcVHJhZGluZwABAChBdHRyaWJ1dGVzAAIAJEFwcHJvdmFscwAEABRTd2FwcwAIAACRDAwscGFsbGV0X25mdHMYcGFsbGV0FEVycm9yCARUAARJAAG0ME5vUGVybWlzc2lvbgAABOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uRFVua25vd25Db2xsZWN0aW9uAAEEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAgS4VGhlIGl0ZW0gSUQgaGFzIGFscmVhZHkgYmVlbiB1c2VkIGZvciBhbiBpdGVtLjxBcHByb3ZhbEV4cGlyZWQAAwQ5AVRoZSBhcHByb3ZhbCBoYWQgYSBkZWFkbGluZSB0aGF0IGV4cGlyZWQsIHNvIHRoZSBhcHByb3ZhbCBpc24ndCB2YWxpZCBhbnltb3JlLihXcm9uZ093bmVyAAQE6FRoZSBvd25lciB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oQmFkV2l0bmVzcwAFBBUBVGhlIHdpdG5lc3MgZGF0YSBnaXZlbiBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY2hhaW4uRENvbGxlY3Rpb25JZEluVXNlAAYEfENvbGxlY3Rpb24gSUQgaXMgYWxyZWFkeSB0YWtlbi5QSXRlbXNOb25UcmFuc2ZlcmFibGUABwTISXRlbXMgd2l0aGluIHRoYXQgY29sbGVjdGlvbiBhcmUgbm9uLXRyYW5zZmVyYWJsZS4sTm90RGVsZWdhdGUACAScVGhlIHByb3ZpZGVkIGFjY291bnQgaXMgbm90IGEgZGVsZWdhdGUuNFdyb25nRGVsZWdhdGUACQT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAALBBkBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBhY2NlcHRhbmNlIG9mIHRoZSBjb2xsZWN0aW9uLihJdGVtTG9ja2VkAAwEmFRoZSBpdGVtIGlzIGxvY2tlZCAobm9uLXRyYW5zZmVyYWJsZSkuUExvY2tlZEl0ZW1BdHRyaWJ1dGVzAA0EdEl0ZW0ncyBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQuaExvY2tlZENvbGxlY3Rpb25BdHRyaWJ1dGVzAA4EjENvbGxlY3Rpb24ncyBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQuSExvY2tlZEl0ZW1NZXRhZGF0YQAPBGhJdGVtJ3MgbWV0YWRhdGEgaXMgbG9ja2VkLmBMb2NrZWRDb2xsZWN0aW9uTWV0YWRhdGEAEASAQ29sbGVjdGlvbidzIG1ldGFkYXRhIGlzIGxvY2tlZC5ATWF4U3VwcGx5UmVhY2hlZAARBGxBbGwgaXRlbXMgaGF2ZSBiZWVuIG1pbnRlZC48TWF4U3VwcGx5TG9ja2VkABIEuFRoZSBtYXggc3VwcGx5IGlzIGxvY2tlZCBhbmQgY2FuJ3QgYmUgY2hhbmdlZC5ETWF4U3VwcGx5VG9vU21hbGwAEwRJAVRoZSBwcm92aWRlZCBtYXggc3VwcGx5IGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0AFAR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4sVW5rbm93blN3YXAAFQRMU3dhcCBkb2Vzbid0IGV4aXN0LkBNZXRhZGF0YU5vdEZvdW5kABYEjFRoZSBnaXZlbiBpdGVtIGhhcyBubyBtZXRhZGF0YSBzZXQuREF0dHJpYnV0ZU5vdEZvdW5kABcEmFRoZSBwcm92aWRlZCBhdHRyaWJ1dGUgY2FuJ3QgYmUgZm91bmQuKE5vdEZvclNhbGUAGARUSXRlbSBpcyBub3QgZm9yIHNhbGUuJEJpZFRvb0xvdwAZBHBUaGUgcHJvdmlkZWQgYmlkIGlzIHRvbyBsb3cuUFJlYWNoZWRBcHByb3ZhbExpbWl0ABoEoFRoZSBpdGVtIGhhcyByZWFjaGVkIGl0cyBhcHByb3ZhbCBsaW1pdC48RGVhZGxpbmVFeHBpcmVkABsEhFRoZSBkZWFkbGluZSBoYXMgYWxyZWFkeSBleHBpcmVkLjRXcm9uZ0R1cmF0aW9uABwEMQFUaGUgZHVyYXRpb24gcHJvdmlkZWQgc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTWF4RGVhZGxpbmVEdXJhdGlvbmAuOE1ldGhvZERpc2FibGVkAB0EqFRoZSBtZXRob2QgaXMgZGlzYWJsZWQgYnkgc3lzdGVtIHNldHRpbmdzLjBXcm9uZ1NldHRpbmcAHgSIVGhlIHByb3ZpZGVkIHNldHRpbmcgY2FuJ3QgYmUgc2V0LlhJbmNvbnNpc3RlbnRJdGVtQ29uZmlnAB8EFQFJdGVtJ3MgY29uZmlnIGFscmVhZHkgZXhpc3RzIGFuZCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIG9uZS4gTm9Db25maWcAIATIQ29uZmlnIGZvciBhIGNvbGxlY3Rpb24gb3IgYW4gaXRlbSBjYW4ndCBiZSBmb3VuZC48Um9sZXNOb3RDbGVhcmVkACEEcFNvbWUgcm9sZXMgd2VyZSBub3QgY2xlYXJlZC44TWludE5vdFN0YXJ0ZWQAIgRkTWludCBoYXMgbm90IHN0YXJ0ZWQgeWV0LiRNaW50RW5kZWQAIwRcTWludCBoYXMgYWxyZWFkeSBlbmRlZC44QWxyZWFkeUNsYWltZWQAJATAVGhlIHByb3ZpZGVkIEl0ZW0gd2FzIGFscmVhZHkgdXNlZCBmb3IgY2xhaW1pbmcuNEluY29ycmVjdERhdGEAJQR8VGhlIHByb3ZpZGVkIGRhdGEgaXMgaW5jb3JyZWN0LixXcm9uZ09yaWdpbgAmBKxUaGUgZXh0cmluc2ljIHdhcyBzZW50IGJ5IHRoZSB3cm9uZyBvcmlnaW4uOFdyb25nU2lnbmF0dXJlACcEkFRoZSBwcm92aWRlZCBzaWduYXR1cmUgaXMgaW5jb3JyZWN0LkRJbmNvcnJlY3RNZXRhZGF0YQAoBKBUaGUgcHJvdmlkZWQgbWV0YWRhdGEgbWlnaHQgYmUgdG9vIGxvbmcuZE1heEF0dHJpYnV0ZXNMaW1pdFJlYWNoZWQAKQScQ2FuJ3Qgc2V0IG1vcmUgYXR0cmlidXRlcyBwZXIgb25lIGNhbGwuOFdyb25nTmFtZXNwYWNlACoE0FRoZSBwcm92aWRlZCBuYW1lc3BhY2UgaXNuJ3Qgc3VwcG9ydGVkIGluIHRoaXMgY2FsbC5IQ29sbGVjdGlvbk5vdEVtcHR5ACsEjENhbid0IGRlbGV0ZSBub24tZW1wdHkgY29sbGVjdGlvbnMuPFdpdG5lc3NSZXF1aXJlZAAsBJBUaGUgd2l0bmVzcyBkYXRhIHNob3VsZCBiZSBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQulQwAAAQIHQIEAJkMAAAEDB0CBAQAnQwMNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBWQE0Qm91bmRlZFN0cmluZwGhDAAUARxkZXBvc2l0WQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZaEMATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9soQwBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuXQEBEGJvb2wAAKEMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAApQwMNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqkMBBhPcHRpb24EBFQBnQwBCBBOb25lAAAAEFNvbWUEAJ0MAAABAACtDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFZATRCb3VuZGVkU3RyaW5nAbEMABQBHGRlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAARBuYW1lsQwBNEJvdW5kZWRTdHJpbmcAARhzeW1ib2yxDAE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5dAQEQYm9vbAAAsQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAC1DAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuuQwEGE9wdGlvbgQEVAGtDAEIEE5vbmUAAAAQU29tZQQArQwAAAEAAL0MDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhR0eXBlcyBQb29sSW5mbwQsUG9vbEFzc2V0SWQBOAAEASBscF90b2tlbjgBLFBvb2xBc3NldElkAADBDAxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0FEVycm9yBARUAAFgQEludmFsaWRBc3NldFBhaXIAAAS4UHJvdmlkZWQgYXNzZXQgcGFpciBpcyBub3Qgc3VwcG9ydGVkIGZvciBwb29sLihQb29sRXhpc3RzAAEEUFBvb2wgYWxyZWFkeSBleGlzdHMuSFdyb25nRGVzaXJlZEFtb3VudAACBHREZXNpcmVkIGFtb3VudCBjYW4ndCBiZSB6ZXJvLmBBbW91bnRPbmVMZXNzVGhhbk1pbmltYWwAAwhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuYEFtb3VudFR3b0xlc3NUaGFuTWluaW1hbAAECEkBUHJvdmlkZWQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5oUmVzZXJ2ZUxlZnRMZXNzVGhhbk1pbmltYWwABQhNAVJlc2VydmUgbmVlZHMgdG8gYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LkBBbW91bnRPdXRUb29IaWdoAAYEyERlc2lyZWQgYW1vdW50IGNhbid0IGJlIGVxdWFsIHRvIHRoZSBwb29sIHJlc2VydmUuMFBvb2xOb3RGb3VuZAAHBFxUaGUgcG9vbCBkb2Vzbid0IGV4aXN0LiBPdmVyZmxvdwAIBFRBbiBvdmVyZmxvdyBoYXBwZW5lZC6AQXNzZXRPbmVEZXBvc2l0RGlkTm90TWVldE1pbmltdW0ACQQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQugEFzc2V0VHdvRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAoELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6MQXNzZXRPbmVXaXRoZHJhd2FsRGlkTm90TWVldE1pbmltdW0ACwQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0VHdvV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAwELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC5wT3B0aW1hbEFtb3VudExlc3NUaGFuRGVzaXJlZAANBLxPcHRpbWFsIGNhbGN1bGF0ZWQgYW1vdW50IGlzIGxlc3MgdGhhbiBkZXNpcmVkLmxJbnN1ZmZpY2llbnRMaXF1aWRpdHlNaW50ZWQADgR4SW5zdWZmaWNpZW50IGxpcXVpZGl0eSBtaW50ZWQuNFplcm9MaXF1aWRpdHkADwSIUmVxdWVzdGVkIGxpcXVpZGl0eSBjYW4ndCBiZSB6ZXJvLihaZXJvQW1vdW50ABAEVEFtb3VudCBjYW4ndCBiZSB6ZXJvLoxQcm92aWRlZE1pbmltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAARBOxDYWxjdWxhdGVkIGFtb3VudCBvdXQgaXMgbGVzcyB0aGFuIHByb3ZpZGVkIG1pbmltdW0gYW1vdW50LoxQcm92aWRlZE1heGltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAASBMxQcm92aWRlZCBtYXhpbXVtIGFtb3VudCBpcyBub3Qgc3VmZmljaWVudCBmb3Igc3dhcC4sSW52YWxpZFBhdGgAEwTUVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiAyIGFzc2V0cyBhdCBsZWFzdC40Tm9uVW5pcXVlUGF0aAAUBMRUaGUgcHJvdmlkZWQgcGF0aCBtdXN0IGNvbnNpc3RzIG9mIHVuaXF1ZSBhc3NldHMuUEluY29ycmVjdFBvb2xBc3NldElkABUE7El0IHdhcyBub3QgcG9zc2libGUgdG8gZ2V0IG9yIGluY3JlbWVudCB0aGUgSWQgb2YgdGhlIHBvb2wuMEJlbG93TWluaW11bQAWBPBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBjYW5ub3QgZXhpc3Qgd2l0aCB0aGUgc3dhcHBlZCBmdW5kcy4kUG9vbEVtcHR5ABcEMQFUaGUgcG9vbCBleGlzdHMgYnV0IGhhcyBubyBsaXF1aWRpdHkgKGF0IGxlYXN0IG9uZSBvZiB0aGUgcmVzZXJ2ZXMgaXMgemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LsUMBBhSZXN1bHQIBFQByQwERQHBDAEICE9rBADJDAAAAAAMRXJyBADBDAAAAQAAyQwAAAQIWQFZAQDNDAwocGFsbGV0X3BzbRhwYWxsZXQcUHNtSW5mbwQEVAAAFAE8ZmVlX2Rlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEgbWF4X2RlYnRZAQEwQmFsYW5jZU9mPFQ+AAE8bWluX3N3YXBfYW1vdW50WQEBMEJhbGFuY2VPZjxUPgABRGludGVybmFsX2RlY2ltYWxzDAEIdTgAAThleHRlcm5hbF9jb3VudDgBDHUzMgAA0QwMKHBhbGxldF9wc20YcGFsbGV0MFBzbUFkbWluSW5mbwQEVAAADAEoZnVsbF9hZG1pbvEDAUBUOjpQYWxsZXRzT3JpZ2luAAE8ZW1lcmdlbmN5X2FkbWlu8QMBQFQ6OlBhbGxldHNPcmlnaW4AARxkZXBvc2l01QwBoE9wdGlvbjwoVDo6QWNjb3VudElkLCBUOjpDb25zaWRlcmF0aW9uKT4AANUMBBhPcHRpb24EBFQB2QwBCBBOb25lAAAAEFNvbWUEANkMAAABAADZDAAABAgE3QwA3QwUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAWQEBKEY6OkJhbGFuY2UAAOEMDChwYWxsZXRfcHNtGHBhbGxldERFeHRlcm5hbEFzc2V0SW5mbwAACAEYc3RhdHVz0QQBTENpcmN1aXRCcmVha2VyTGV2ZWwAASBkZWNpbWFscwwBCHU4AADlDAwocGFsbGV0X3BzbRhwYWxsZXQURXJyb3IEBFQAAVxMSW5zdWZmaWNpZW50UmVzZXJ2ZQAABNhQU00gZG9lc24ndCBoYXZlIGVub3VnaCBleHRlcm5hbCBhc3NldCBmb3IgcmVkZW1wdGlvbi5ERXhjZWVkc01heFBzbURlYnQAAQSMU3dhcCB3b3VsZCBleGNlZWQgUFNNIGRlYnQgY2VpbGluZy5AQmVsb3dNaW5pbXVtU3dhcAACBMxTd2FwIGFtb3VudCBiZWxvdyB0aGUgaW5zdGFuY2UncyBtaW5pbXVtIHRocmVzaG9sZC4oRmVlVG9vSGlnaAADBMBDdXJyZW50IGZlZSBleGNlZWRzIHRoZSBjYWxsZXItcHJvdmlkZWQgbWF4aW11bS5EWmVyb01pblN3YXBBbW91bnQABATYYGNyZWF0ZV9wc21gIHdhcyBjYWxsZWQgd2l0aCBhIHplcm8gYG1pbl9zd2FwX2Ftb3VudGAuOE1pbnRpbmdTdG9wcGVkAAUE9E1pbnRpbmcgb3BlcmF0aW9ucyBhcmUgZGlzYWJsZWQgKGNpcmN1aXQgYnJlYWtlciBsZXZlbCA+PSAxKS48QWxsU3dhcHNTdG9wcGVkAAYE9EFsbCBzd2FwIG9wZXJhdGlvbnMgYXJlIGRpc2FibGVkIChjaXJjdWl0IGJyZWFrZXIgbGV2ZWwgPSAyKS5AVW5zdXBwb3J0ZWRBc3NldAAHBKBBc3NldCBpcyBub3QgYW4gYXBwcm92ZWQgZXh0ZXJuYWwgYXNzZXQuLFBzbU5vdEZvdW5kAAgE7E5vIFBTTSBpbnN0YW5jZSBpcyByZWdpc3RlcmVkIGZvciB0aGUgZ2l2ZW4gaW50ZXJuYWwgYXNzZXQuUEFzc2V0QWxyZWFkeUFwcHJvdmVkAAkEmEFzc2V0IGlzIGFscmVhZHkgaW4gdGhlIGFwcHJvdmVkIGxpc3QuREFzc2V0RG9lc05vdEV4aXN0AAoEVEFzc2V0IGRvZXMgbm90IGV4aXN0LkBBc3NldE5vdEFwcHJvdmVkAAsEqENhbm5vdCByZW1vdmUgYXNzZXQ6IG5vdCBpbiBhcHByb3ZlZCBsaXN0LjBBc3NldEhhc0RlYnQADASsQ2Fubm90IHJlbW92ZSBhc3NldDogaGFzIG5vbi16ZXJvIFBTTSBkZWJ0LlRJbnN1ZmZpY2llbnRQcml2aWxlZ2UADQgxAU9wZXJhdGlvbiByZXF1aXJlcyB0aGUgaW5zdGFuY2UncyBgZnVsbF9hZG1pbmAgKEZ1bGwgbGV2ZWwpOyB0aGUgY2FsbGVyIG9ubHnAbWF0Y2hlZCB0aGUgYGVtZXJnZW5jeV9hZG1pbmAgKEVtZXJnZW5jeSBsZXZlbCkuNFRvb01hbnlBc3NldHMADgTMTWF4aW11bSBudW1iZXIgb2YgYXBwcm92ZWQgZXh0ZXJuYWwgYXNzZXRzIHJlYWNoZWQuQERlY2ltYWxzTWlzbWF0Y2gADwQpAUxpdmUgZGVjaW1hbHMgZGl2ZXJnZWQgZnJvbSB0aGUgc25hcHNob3QgdGFrZW4gYXQgcmVnaXN0cmF0aW9uIG9yIGdlbmVzaXMuVERlY2ltYWxzUmFuZ2VFeGNlZWRlZAAQBPRUaGUgYXNzZXQncyBkZWNpbWFsIHByZWNpc2lvbiBpcyBvdXRzaWRlIHRoZSBzdXBwb3J0ZWQgcmFuZ2UuSENvbnZlcnNpb25PdmVyZmxvdwARBMBEZWNpbWFsIHNjYWxpbmcgcHJvZHVjZWQgYW4gYXJpdGhtZXRpYyBvdmVyZmxvdy50QW1vdW50VG9vU21hbGxBZnRlckNvbnZlcnNpb24AEgQxAUNvbnZlcnNpb24gdG8gdGhlIGNvdW50ZXItYXNzZXQgcm91bmRzIHRvIHplcm87IHN3YXAgd291bGQgdHJhbnNmZXIgbm90aGluZy5AUHNtQWxyZWFkeUV4aXN0cwATBNBBIFBTTSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgZm9yIHRoaXMgaW50ZXJuYWwgYXNzZXQuKFBzbUhhc0RlYnQAFAQhAVRoZSBQU00gaGFzIG5vbi16ZXJvIG91dHN0YW5kaW5nIGRlYnQgb24gYXQgbGVhc3Qgb25lIGFwcHJvdmVkIGV4dGVybmFsLlxQc21IYXNBcHByb3ZlZEV4dGVybmFscwAVBCkBVGhlIFBTTSBzdGlsbCBoYXMgYXBwcm92ZWQgZXh0ZXJuYWxzOyByZW1vdmUgdGhlbSBiZWZvcmUgcmVtb3ZpbmcgdGhlIFBTTS4oVW5leHBlY3RlZAAWBBEBQW4gdW5leHBlY3RlZCBpbnZhcmlhbnQgdmlvbGF0aW9uIG9jY3VycmVkLiBUaGlzIHNob3VsZCBiZSByZXBvcnRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu6QwIPHBhbGxldF90cmVhc3VyeSBQcm9wb3NhbAgkQWNjb3VudElkAQQcQmFsYW5jZQFZAQAQASBwcm9wb3NlcgQBJEFjY291bnRJZAABFHZhbHVlWQEBHEJhbGFuY2UAASxiZW5lZmljaWFyeQQBJEFjY291bnRJZAABEGJvbmRZAQEcQmFsYW5jZQAA7QwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAQQQBGFZlYzxUPgAA8QwIPHBhbGxldF90cmVhc3VyeSxTcGVuZFN0YXR1cxQkQXNzZXRLaW5kAdkEMEFzc2V0QmFsYW5jZQFZASxCZW5lZmljaWFyeQHdBCxCbG9ja051bWJlcgE4JFBheW1lbnRJZAEoABgBKGFzc2V0X2tpbmTZBAEkQXNzZXRLaW5kAAEYYW1vdW50WQEBMEFzc2V0QmFsYW5jZQABLGJlbmVmaWNpYXJ53QQBLEJlbmVmaWNpYXJ5AAEodmFsaWRfZnJvbTgBLEJsb2NrTnVtYmVyAAEkZXhwaXJlX2F0OAEsQmxvY2tOdW1iZXIAARhzdGF0dXP1DAFcUGF5bWVudFN0YXRlPFBheW1lbnRJZD4AAPUMCDxwYWxsZXRfdHJlYXN1cnkwUGF5bWVudFN0YXRlBAhJZAEoAQwcUGVuZGluZwAAACRBdHRlbXB0ZWQEAQhpZCgBCElkAAEAGEZhaWxlZAACAAD5DAw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBRFcnJvcggEVAAESQABLDBJbnZhbGlkSW5kZXgAAASsTm8gcHJvcG9zYWwsIGJvdW50eSBvciBzcGVuZCBhdCB0aGF0IGluZGV4LkBUb29NYW55QXBwcm92YWxzAAEEgFRvbyBtYW55IGFwcHJvdmFscyBpbiB0aGUgcXVldWUuWEluc3VmZmljaWVudFBlcm1pc3Npb24AAghFAVRoZSBzcGVuZCBvcmlnaW4gaXMgdmFsaWQgYnV0IHRoZSBhbW91bnQgaXQgaXMgYWxsb3dlZCB0byBzcGVuZCBpcyBsb3dlciB0aGFuIHRoZUxhbW91bnQgdG8gYmUgc3BlbnQuTFByb3Bvc2FsTm90QXBwcm92ZWQAAwR8UHJvcG9zYWwgaGFzIG5vdCBiZWVuIGFwcHJvdmVkLlhGYWlsZWRUb0NvbnZlcnRCYWxhbmNlAAQEUQFUaGUgYmFsYW5jZSBvZiB0aGUgYXNzZXQga2luZCBpcyBub3QgY29udmVydGlibGUgdG8gdGhlIGJhbGFuY2Ugb2YgdGhlIG5hdGl2ZSBhc3NldC4wU3BlbmRFeHBpcmVkAAUEsFRoZSBzcGVuZCBoYXMgZXhwaXJlZCBhbmQgY2Fubm90IGJlIGNsYWltZWQuLEVhcmx5UGF5b3V0AAYEpFRoZSBzcGVuZCBpcyBub3QgeWV0IGVsaWdpYmxlIGZvciBwYXlvdXQuQEFscmVhZHlBdHRlbXB0ZWQABwScVGhlIHBheW1lbnQgaGFzIGFscmVhZHkgYmVlbiBhdHRlbXB0ZWQuLFBheW91dEVycm9yAAgEzFRoZXJlIHdhcyBzb21lIGlzc3VlIHdpdGggdGhlIG1lY2hhbmlzbSBvZiBwYXltZW50LjBOb3RBdHRlbXB0ZWQACQSkVGhlIHBheW91dCB3YXMgbm90IHlldCBhdHRlbXB0ZWQvY2xhaW1lZC4wSW5jb25jbHVzaXZlAAoExFRoZSBwYXltZW50IGhhcyBuZWl0aGVyIGZhaWxlZCBub3Igc3VjY2VlZGVkIHlldC4EeEVycm9yIGZvciB0aGUgdHJlYXN1cnkgcGFsbGV0Lv0MAAAECATtAwABDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUYVm90aW5nFBxCYWxhbmNlAVkBJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgkUG9sbEluZGV4ATggTWF4Vm90ZXMAAQgcQ2FzdGluZwQABQ0ByENhc3Rpbmc8QmFsYW5jZSwgQmxvY2tOdW1iZXIsIFBvbGxJbmRleCwgTWF4Vm90ZXM+AAAAKERlbGVnYXRpbmcEAB0NAaxEZWxlZ2F0aW5nPEJhbGFuY2UsIEFjY291bnRJZCwgQmxvY2tOdW1iZXI+AAEAAAUNDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRxDYXN0aW5nEBxCYWxhbmNlAVkBLEJsb2NrTnVtYmVyATgkUG9sbEluZGV4ATggTWF4Vm90ZXMAAAwBFHZvdGVzCQ0B3EJvdW5kZWRWZWM8KFBvbGxJbmRleCwgQWNjb3VudFZvdGU8QmFsYW5jZT4pLCBNYXhWb3Rlcz4AASxkZWxlZ2F0aW9ucxUNAVBEZWxlZ2F0aW9uczxCYWxhbmNlPgABFHByaW9yGQ0BfFByaW9yTG9jazxCbG9ja051bWJlciwgQmFsYW5jZT4AAAkNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDQ0EUwAABAARDQEYVmVjPFQ+AAANDQAABAg45QQAEQ0AAAINDQAVDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nFHR5cGVzLERlbGVnYXRpb25zBBxCYWxhbmNlAVkBAAgBFHZvdGVzWQEBHEJhbGFuY2UAARxjYXBpdGFsWQEBHEJhbGFuY2UAABkNDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZSRQcmlvckxvY2sILEJsb2NrTnVtYmVyATgcQmFsYW5jZQFZAQAIADgBLEJsb2NrTnVtYmVyAABZAQEcQmFsYW5jZQAAHQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlKERlbGVnYXRpbmcMHEJhbGFuY2UBWQEkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAAUARxiYWxhbmNlWQEBHEJhbGFuY2UAARh0YXJnZXQEASRBY2NvdW50SWQAAShjb252aWN0aW9u7QQBKENvbnZpY3Rpb24AASxkZWxlZ2F0aW9ucxUNAVBEZWxlZ2F0aW9uczxCYWxhbmNlPgABFHByaW9yGQ0BfFByaW9yTG9jazxCbG9ja051bWJlciwgQmFsYW5jZT4AACENDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBJQ0EUwAABAApDQEYVmVjPFQ+AAAlDQAABAjtA1kBACkNAAACJQ0ALQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxhwYWxsZXQURXJyb3IIBFQABEkAATAoTm90T25nb2luZwAABFBQb2xsIGlzIG5vdCBvbmdvaW5nLiBOb3RWb3RlcgABBKxUaGUgZ2l2ZW4gYWNjb3VudCBkaWQgbm90IHZvdGUgb24gdGhlIHBvbGwuME5vUGVybWlzc2lvbgACBMhUaGUgYWN0b3IgaGFzIG5vIHBlcm1pc3Npb24gdG8gY29uZHVjdCB0aGUgYWN0aW9uLjxOb1Blcm1pc3Npb25ZZXQAAwRZAVRoZSBhY3RvciBoYXMgbm8gcGVybWlzc2lvbiB0byBjb25kdWN0IHRoZSBhY3Rpb24gcmlnaHQgbm93IGJ1dCB3aWxsIGRvIGluIHRoZSBmdXR1cmUuREFscmVhZHlEZWxlZ2F0aW5nAAQEiFRoZSBhY2NvdW50IGlzIGFscmVhZHkgZGVsZWdhdGluZy40QWxyZWFkeVZvdGluZwAFCFUBVGhlIGFjY291bnQgY3VycmVudGx5IGhhcyB2b3RlcyBhdHRhY2hlZCB0byBpdCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3Qgc3VjY2VlZCB1bnRpbKB0aGVzZSBhcmUgcmVtb3ZlZCB0aHJvdWdoIGByZW1vdmVfdm90ZWAuREluc3VmZmljaWVudEZ1bmRzAAYE/FRvbyBoaWdoIGEgYmFsYW5jZSB3YXMgcHJvdmlkZWQgdGhhdCB0aGUgYWNjb3VudCBjYW5ub3QgYWZmb3JkLjROb3REZWxlZ2F0aW5nAAcEoFRoZSBhY2NvdW50IGlzIG5vdCBjdXJyZW50bHkgZGVsZWdhdGluZy4gTm9uc2Vuc2UACASURGVsZWdhdGlvbiB0byBvbmVzZWxmIG1ha2VzIG5vIHNlbnNlLjxNYXhWb3Rlc1JlYWNoZWQACQSATWF4aW11bSBudW1iZXIgb2Ygdm90ZXMgcmVhY2hlZC4sQ2xhc3NOZWVkZWQACgQ5AVRoZSBjbGFzcyBtdXN0IGJlIHN1cHBsaWVkIHNpbmNlIGl0IGlzIG5vdCBlYXNpbHkgZGV0ZXJtaW5hYmxlIGZyb20gdGhlIHN0YXRlLiBCYWRDbGFzcwALBIRUaGUgY2xhc3MgSUQgc3VwcGxpZWQgaXMgaW52YWxpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuMQ0MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXM4UmVmZXJlbmR1bUluZm8gHFRyYWNrSWQB7QM0UnVudGltZU9yaWdpbgHxAxhNb21lbnQBOBBDYWxsAfkEHEJhbGFuY2UBWQEUVGFsbHkBnQgkQWNjb3VudElkAQQ8U2NoZWR1bGVBZGRyZXNzAdABGBxPbmdvaW5nBAA1DQGNAVJlZmVyZW5kdW1TdGF0dXM8VHJhY2tJZCwgUnVudGltZU9yaWdpbiwgTW9tZW50LCBDYWxsLCBCYWxhbmNlLCBUYWxseSwKQWNjb3VudElkLCBTY2hlZHVsZUFkZHJlc3MsPgAAACBBcHByb3ZlZAwAOAEYTW9tZW50AAA9DQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAD0NAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgABACBSZWplY3RlZAwAOAEYTW9tZW50AAA9DQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAD0NAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgACACRDYW5jZWxsZWQMADgBGE1vbWVudAAAPQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAA9DQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAwAgVGltZWRPdXQMADgBGE1vbWVudAAAPQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAA9DQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4ABAAYS2lsbGVkBAA4ARhNb21lbnQABQAANQ0MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXNAUmVmZXJlbmR1bVN0YXR1cyAcVHJhY2tJZAHtAzRSdW50aW1lT3JpZ2luAfEDGE1vbWVudAE4EENhbGwB+QQcQmFsYW5jZQFZARRUYWxseQGdCCRBY2NvdW50SWQBBDxTY2hlZHVsZUFkZHJlc3MB0AAsARR0cmFja+0DARxUcmFja0lkAAEYb3JpZ2lu8QMBNFJ1bnRpbWVPcmlnaW4AASBwcm9wb3NhbPkEARBDYWxsAAEkZW5hY3RtZW50AQUBUERpc3BhdGNoVGltZTxNb21lbnQ+AAEkc3VibWl0dGVkOAEYTW9tZW50AAFIc3VibWlzc2lvbl9kZXBvc2l0OQ0BbERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPgABQGRlY2lzaW9uX2RlcG9zaXQ9DQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AASBkZWNpZGluZ0ENAXhPcHRpb248RGVjaWRpbmdTdGF0dXM8TW9tZW50Pj4AARR0YWxseZ0IARRUYWxseQABIGluX3F1ZXVlXQEBEGJvb2wAARRhbGFybUkNAYRPcHRpb248KE1vbWVudCwgU2NoZWR1bGVBZGRyZXNzKT4AADkNDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzHERlcG9zaXQIJEFjY291bnRJZAEEHEJhbGFuY2UBWQEACAEMd2hvBAEkQWNjb3VudElkAAEYYW1vdW50WQEBHEJhbGFuY2UAAD0NBBhPcHRpb24EBFQBOQ0BCBBOb25lAAAAEFNvbWUEADkNAAABAABBDQQYT3B0aW9uBARUAUUNAQgQTm9uZQAAABBTb21lBABFDQAAAQAARQ0MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXM4RGVjaWRpbmdTdGF0dXMELEJsb2NrTnVtYmVyATgACAEUc2luY2U4ASxCbG9ja051bWJlcgABKGNvbmZpcm1pbmfkAUxPcHRpb248QmxvY2tOdW1iZXI+AABJDQQYT3B0aW9uBARUAU0NAQgQTm9uZQAAABBTb21lBABNDQAAAQAATQ0AAAQIONAAUQ0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFVDQRTAAAEAFkNARhWZWM8VD4AAFUNAAAECDhZAQBZDQAAAlUNAF0NAAACYQ0AYQ0AAAQI7QNlDQBlDQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczBUcmFja0RldGFpbHMMHEJhbGFuY2UBWQEYTW9tZW50ATgQTmFtZQElCQAkARBuYW1lJQkBEE5hbWUAATBtYXhfZGVjaWRpbmc4AQx1MzIAAUBkZWNpc2lvbl9kZXBvc2l0WQEBHEJhbGFuY2UAAThwcmVwYXJlX3BlcmlvZDgBGE1vbWVudAABPGRlY2lzaW9uX3BlcmlvZDgBGE1vbWVudAABOGNvbmZpcm1fcGVyaW9kOAEYTW9tZW50AAFQbWluX2VuYWN0bWVudF9wZXJpb2Q4ARhNb21lbnQAATBtaW5fYXBwcm92YWxpDQEUQ3VydmUAASxtaW5fc3VwcG9ydGkNARRDdXJ2ZQAAaQ0MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMUQ3VydmUAAQxATGluZWFyRGVjcmVhc2luZwwBGGxlbmd0aKEBARxQZXJiaWxsAAEUZmxvb3KhAQEcUGVyYmlsbAABEGNlaWyhAQEcUGVyYmlsbAAAAERTdGVwcGVkRGVjcmVhc2luZxABFGJlZ2luoQEBHFBlcmJpbGwAAQxlbmShAQEcUGVyYmlsbAABEHN0ZXChAQEcUGVyYmlsbAABGHBlcmlvZKEBARxQZXJiaWxsAAEAKFJlY2lwcm9jYWwMARhmYWN0b3JtDQEgRml4ZWRJNjQAASB4X29mZnNldG0NASBGaXhlZEk2NAABIHlfb2Zmc2V0bQ0BIEZpeGVkSTY0AAIAAG0NDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50IEZpeGVkSTY0AAAEAHENAQxpNjQAAHENAAAFDAB1DQxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQURXJyb3IIBFQABEkAATgoTm90T25nb2luZwAABGhSZWZlcmVuZHVtIGlzIG5vdCBvbmdvaW5nLihIYXNEZXBvc2l0AAEEuFJlZmVyZW5kdW0ncyBkZWNpc2lvbiBkZXBvc2l0IGlzIGFscmVhZHkgcGFpZC4gQmFkVHJhY2sAAgScVGhlIHRyYWNrIGlkZW50aWZpZXIgZ2l2ZW4gd2FzIGludmFsaWQuEEZ1bGwAAwQxAVRoZXJlIGFyZSBhbHJlYWR5IGEgZnVsbCBjb21wbGVtZW50IG9mIHJlZmVyZW5kYSBpbiBwcm9ncmVzcyBmb3IgdGhpcyB0cmFjay4oUXVldWVFbXB0eQAEBIBUaGUgcXVldWUgb2YgdGhlIHRyYWNrIGlzIGVtcHR5LjRCYWRSZWZlcmVuZHVtAAUE5FRoZSByZWZlcmVuZHVtIGluZGV4IHByb3ZpZGVkIGlzIGludmFsaWQgaW4gdGhpcyBjb250ZXh0LixOb3RoaW5nVG9EbwAGBKxUaGVyZSB3YXMgbm90aGluZyB0byBkbyBpbiB0aGUgYWR2YW5jZW1lbnQuHE5vVHJhY2sABwSgTm8gdHJhY2sgZXhpc3RzIGZvciB0aGUgcHJvcG9zYWwgb3JpZ2luLihVbmZpbmlzaGVkAAgEAQFBbnkgZGVwb3NpdCBjYW5ub3QgYmUgcmVmdW5kZWQgdW50aWwgYWZ0ZXIgdGhlIGRlY2lzaW9uIGlzIG92ZXIuME5vUGVybWlzc2lvbgAJBKhUaGUgZGVwb3NpdCByZWZ1bmRlciBpcyBub3QgdGhlIGRlcG9zaXRvci4kTm9EZXBvc2l0AAoEzFRoZSBkZXBvc2l0IGNhbm5vdCBiZSByZWZ1bmRlZCBzaW5jZSBub25lIHdhcyBtYWRlLiRCYWRTdGF0dXMACwTQVGhlIHJlZmVyZW5kdW0gc3RhdHVzIGlzIGludmFsaWQgZm9yIHRoaXMgb3BlcmF0aW9uLkBQcmVpbWFnZU5vdEV4aXN0AAwEcFRoZSBwcmVpbWFnZSBkb2VzIG5vdCBleGlzdC6EUHJlaW1hZ2VTdG9yZWRXaXRoRGlmZmVyZW50TGVuZ3RoAA0EFQFUaGUgcHJlaW1hZ2UgaXMgc3RvcmVkIHdpdGggYSBkaWZmZXJlbnQgbGVuZ3RoIHRoYW4gdGhlIG9uZSBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQueQ0MQHBhbGxldF93aGl0ZWxpc3QYcGFsbGV0FEVycm9yBARUAAEUTFVuYXZhaWxhYmxlUHJlSW1hZ2UAAATIVGhlIHByZWltYWdlIG9mIHRoZSBjYWxsIGhhc2ggY291bGQgbm90IGJlIGxvYWRlZC48VW5kZWNvZGFibGVDYWxsAAEEeFRoZSBjYWxsIGNvdWxkIG5vdCBiZSBkZWNvZGVkLmBJbnZhbGlkQ2FsbFdlaWdodFdpdG5lc3MAAgTsVGhlIHdlaWdodCBvZiB0aGUgZGVjb2RlZCBjYWxsIHdhcyBoaWdoZXIgdGhhbiB0aGUgd2l0bmVzcy5QQ2FsbElzTm90V2hpdGVsaXN0ZWQAAwR0VGhlIGNhbGwgd2FzIG5vdCB3aGl0ZWxpc3RlZC5YQ2FsbEFscmVhZHlXaGl0ZWxpc3RlZAAEBKBUaGUgY2FsbCB3YXMgYWxyZWFkeSB3aGl0ZWxpc3RlZDsgTm8tT3AuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ln0NCDxwYWxsZXRfYm91bnRpZXMYQm91bnR5DCRBY2NvdW50SWQBBBxCYWxhbmNlAVkBLEJsb2NrTnVtYmVyATgAGAEgcHJvcG9zZXIEASRBY2NvdW50SWQAARR2YWx1ZVkBARxCYWxhbmNlAAEMZmVlWQEBHEJhbGFuY2UAATxjdXJhdG9yX2RlcG9zaXRZAQEcQmFsYW5jZQABEGJvbmRZAQEcQmFsYW5jZQABGHN0YXR1c4ENAZBCb3VudHlTdGF0dXM8QWNjb3VudElkLCBCbG9ja051bWJlcj4AAIENCDxwYWxsZXRfYm91bnRpZXMwQm91bnR5U3RhdHVzCCRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4ARwgUHJvcG9zZWQAAAAgQXBwcm92ZWQAAQAYRnVuZGVkAAIAPEN1cmF0b3JQcm9wb3NlZAQBHGN1cmF0b3IEASRBY2NvdW50SWQAAwAYQWN0aXZlCAEcY3VyYXRvcgQBJEFjY291bnRJZAABKHVwZGF0ZV9kdWU4ASxCbG9ja051bWJlcgAEADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgQBJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEkdW5sb2NrX2F0OAEsQmxvY2tOdW1iZXIABQBMQXBwcm92ZWRXaXRoQ3VyYXRvcgQBHGN1cmF0b3IEASRBY2NvdW50SWQABgAAhQ0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACJDQw8cGFsbGV0X2JvdW50aWVzGHBhbGxldBRFcnJvcggEVAAESQABMHBJbnN1ZmZpY2llbnRQcm9wb3NlcnNCYWxhbmNlAAAEeFByb3Bvc2VyJ3MgYmFsYW5jZSBpcyB0b28gbG93LjBJbnZhbGlkSW5kZXgAAQSQTm8gcHJvcG9zYWwgb3IgYm91bnR5IGF0IHRoYXQgaW5kZXguMFJlYXNvblRvb0JpZwACBIRUaGUgcmVhc29uIGdpdmVuIGlzIGp1c3QgdG9vIGJpZy5AVW5leHBlY3RlZFN0YXR1cwADBIBUaGUgYm91bnR5IHN0YXR1cyBpcyB1bmV4cGVjdGVkLjhSZXF1aXJlQ3VyYXRvcgAEBFxSZXF1aXJlIGJvdW50eSBjdXJhdG9yLjBJbnZhbGlkVmFsdWUABQRUSW52YWxpZCBib3VudHkgdmFsdWUuKEludmFsaWRGZWUABgRMSW52YWxpZCBib3VudHkgZmVlLjRQZW5kaW5nUGF5b3V0AAcIbEEgYm91bnR5IHBheW91dCBpcyBwZW5kaW5nLvhUbyBjYW5jZWwgdGhlIGJvdW50eSwgeW91IG11c3QgdW5hc3NpZ24gYW5kIHNsYXNoIHRoZSBjdXJhdG9yLiRQcmVtYXR1cmUACARFAVRoZSBib3VudGllcyBjYW5ub3QgYmUgY2xhaW1lZC9jbG9zZWQgYmVjYXVzZSBpdCdzIHN0aWxsIGluIHRoZSBjb3VudGRvd24gcGVyaW9kLlBIYXNBY3RpdmVDaGlsZEJvdW50eQAJBAUBVGhlIGJvdW50eSBjYW5ub3QgYmUgY2xvc2VkIGJlY2F1c2UgaXQgaGFzIGFjdGl2ZSBjaGlsZCBib3VudGllcy40VG9vTWFueVF1ZXVlZAAKBJhUb28gbWFueSBhcHByb3ZhbHMgYXJlIGFscmVhZHkgcXVldWVkLixOb3RQcm9wb3NlcgALBJxVc2VyIGlzIG5vdCB0aGUgcHJvcG9zZXIgb2YgdGhlIGJvdW50eS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQujQ0IVHBhbGxldF9jaGlsZF9ib3VudGllcyxDaGlsZEJvdW50eQwkQWNjb3VudElkAQQcQmFsYW5jZQFZASxCbG9ja051bWJlcgE4ABQBNHBhcmVudF9ib3VudHk4ASxCb3VudHlJbmRleAABFHZhbHVlWQEBHEJhbGFuY2UAAQxmZWVZAQEcQmFsYW5jZQABPGN1cmF0b3JfZGVwb3NpdFkBARxCYWxhbmNlAAEYc3RhdHVzkQ0BpENoaWxkQm91bnR5U3RhdHVzPEFjY291bnRJZCwgQmxvY2tOdW1iZXI+AACRDQhUcGFsbGV0X2NoaWxkX2JvdW50aWVzRENoaWxkQm91bnR5U3RhdHVzCCRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4ARAUQWRkZWQAAAA8Q3VyYXRvclByb3Bvc2VkBAEcY3VyYXRvcgQBJEFjY291bnRJZAABABhBY3RpdmUEARxjdXJhdG9yBAEkQWNjb3VudElkAAIANFBlbmRpbmdQYXlvdXQMARxjdXJhdG9yBAEkQWNjb3VudElkAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAASR1bmxvY2tfYXQ4ASxCbG9ja051bWJlcgADAACVDQxUcGFsbGV0X2NoaWxkX2JvdW50aWVzGHBhbGxldBRFcnJvcgQEVAABDFRQYXJlbnRCb3VudHlOb3RBY3RpdmUAAASkVGhlIHBhcmVudCBib3VudHkgaXMgbm90IGluIGFjdGl2ZSBzdGF0ZS5kSW5zdWZmaWNpZW50Qm91bnR5QmFsYW5jZQABBORUaGUgYm91bnR5IGJhbGFuY2UgaXMgbm90IGVub3VnaCB0byBhZGQgbmV3IGNoaWxkLWJvdW50eS5QVG9vTWFueUNoaWxkQm91bnRpZXMAAgQNAU51bWJlciBvZiBjaGlsZCBib3VudGllcyBleGNlZWRzIGxpbWl0IGBNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQumQ0MRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBRFcnJvcgQEVAABDEBVbmtub3duQXNzZXRLaW5kAAAEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAEEUQFUaGUgZ2l2ZW4gYXNzZXQgSUQgYWxyZWFkeSBoYXMgYW4gYXNzaWduZWQgY29udmVyc2lvbiByYXRlIGFuZCBjYW5ub3QgYmUgcmUtY3JlYXRlZC4gT3ZlcmZsb3cAAgTMT3ZlcmZsb3cgb2N1cnJlZCB3aGVuIGNhbGN1bGF0aW5nIHRoZSBpbnZlcnNlIHJhdGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lp0NCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYQm91bnR5GCRBY2NvdW50SWQBBBxCYWxhbmNlAVkBJEFzc2V0S2luZAHZBBBIYXNoAUAkUGF5bWVudElkASgsQmVuZWZpY2lhcnkB3QQAEAEoYXNzZXRfa2luZNkEASRBc3NldEtpbmQAARR2YWx1ZVkBARxCYWxhbmNlAAEgbWV0YWRhdGFAARBIYXNoAAEYc3RhdHVzoQ0BvEJvdW50eVN0YXR1czxBY2NvdW50SWQsIFBheW1lbnRJZCwgQmVuZWZpY2lhcnk+AAChDQhscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzMEJvdW50eVN0YXR1cwwkQWNjb3VudElkAQQkUGF5bWVudElkASgsQmVuZWZpY2lhcnkB3QQBGEBGdW5kaW5nQXR0ZW1wdGVkCAEcY3VyYXRvcgQBJEFjY291bnRJZAABOHBheW1lbnRfc3RhdHVzpQ0BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAAAGEZ1bmRlZAQBHGN1cmF0b3IEASRBY2NvdW50SWQAAQBEQ3VyYXRvclVuYXNzaWduZWQAAgAYQWN0aXZlBAEcY3VyYXRvcgQBJEFjY291bnRJZAADADxSZWZ1bmRBdHRlbXB0ZWQIARxjdXJhdG9ykQEBRE9wdGlvbjxBY2NvdW50SWQ+AAE4cGF5bWVudF9zdGF0dXOlDQFcUGF5bWVudFN0YXRlPFBheW1lbnRJZD4ABAA8UGF5b3V0QXR0ZW1wdGVkDAEcY3VyYXRvcgQBJEFjY291bnRJZAABLGJlbmVmaWNpYXJ53QQBLEJlbmVmaWNpYXJ5AAE4cGF5bWVudF9zdGF0dXOlDQFcUGF5bWVudFN0YXRlPFBheW1lbnRJZD4ABQAApQ0IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczBQYXltZW50U3RhdGUECElkASgBEBxQZW5kaW5nAAAAJEF0dGVtcHRlZAQBCGlkKAEISWQAAQAYRmFpbGVkAAIAJFN1Y2NlZWRlZAADAACpDQhscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzLENoaWxkQm91bnR5FCRBY2NvdW50SWQBBBxCYWxhbmNlAVkBEEhhc2gBQCRQYXltZW50SWQBKCxCZW5lZmljaWFyeQHdBAAQATRwYXJlbnRfYm91bnR5OAEsQm91bnR5SW5kZXgAARR2YWx1ZVkBARxCYWxhbmNlAAEgbWV0YWRhdGFAARBIYXNoAAEYc3RhdHVzoQ0BvEJvdW50eVN0YXR1czxBY2NvdW50SWQsIFBheW1lbnRJZCwgQmVuZWZpY2lhcnk+AACtDQAABAg45ACxDRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABABZAQEoRjo6QmFsYW5jZQAAtQ0MbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhwYWxsZXQURXJyb3IIBFQABEkAAUgwSW52YWxpZEluZGV4AAAEfE5vIGNoaWxkLS9ib3VudHkgYXQgdGhhdCBpbmRleC4wUmVhc29uVG9vQmlnAAEEhFRoZSByZWFzb24gZ2l2ZW4gaXMganVzdCB0b28gYmlnLjBJbnZhbGlkVmFsdWUAAgRwSW52YWxpZCBjaGlsZC0vYm91bnR5IHZhbHVlLlhGYWlsZWRUb0NvbnZlcnRCYWxhbmNlAAMIXQFUaGUgYmFsYW5jZSBvZiB0aGUgYXNzZXQga2luZCBpcyBub3QgY29udmVydGlibGUgdG8gdGhlIGJhbGFuY2Ugb2YgdGhlIG5hdGl2ZSBhc3NldCBmb3KEYXNzZXJ0aW5nIHRoZSBvcmlnaW4gcGVybWlzc2lvbnMuQFVuZXhwZWN0ZWRTdGF0dXMABAScVGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIHVuZXhwZWN0ZWQuOFJlcXVpcmVDdXJhdG9yAAUEeFJlcXVpcmUgY2hpbGQtL2JvdW50eSBjdXJhdG9yLlhJbnN1ZmZpY2llbnRQZXJtaXNzaW9uAAYIRQFUaGUgc3BlbmQgb3JpZ2luIGlzIHZhbGlkIGJ1dCB0aGUgYW1vdW50IGl0IGlzIGFsbG93ZWQgdG8gc3BlbmQgaXMgbG93ZXIgdGhhbiB0aGVEcmVxdWVzdGVkIGFtb3VudC4wRnVuZGluZ0Vycm9yAAcEvFRoZXJlIHdhcyBpc3N1ZSB3aXRoIGZ1bmRpbmcgdGhlIGNoaWxkLS9ib3VudHkuLFJlZnVuZEVycm9yAAgExFRoZXJlIHdhcyBpc3N1ZSB3aXRoIHJlZnVuZGluZyB0aGUgY2hpbGQtL2JvdW50eS4sUGF5b3V0RXJyb3IACQBMRnVuZGluZ0luY29uY2x1c2l2ZQAKBLBDaGlsZC0vYm91bnR5IGZ1bmRpbmcgaGFzIG5vdCBjb25jbHVkZWQgeWV0LkhSZWZ1bmRJbmNvbmNsdXNpdmUACwSsQ2hpbGQtL2JvdW50eSByZWZ1bmQgaGFzIG5vdCBjb25jbHVkZWQgeWV0LkhQYXlvdXRJbmNvbmNsdXNpdmUADASsQ2hpbGQtL2JvdW50eSBwYXlvdXQgaGFzIG5vdCBjb25jbHVkZWQgeWV0LlRGYWlsZWRUb0NvbnZlcnRTb3VyY2UADQhVAVRoZSBjaGlsZC0vYm91bnR5IG9yIGZ1bmRpbmcgc291cmNlIGFjY291bnQgY291bGQgbm90IGJlIGRlcml2ZWQgZnJvbSB0aGUgaW5kZXhlcyBhbmQsYXNzZXQga2luZC5QSGFzQWN0aXZlQ2hpbGRCb3VudHkADgQhAVRoZSBwYXJlbnQgYm91bnR5IGNhbm5vdCBiZSBjbG9zZWQgYmVjYXVzZSBpdCBoYXMgYWN0aXZlIGNoaWxkIGJvdW50aWVzLlBUb29NYW55Q2hpbGRCb3VudGllcwAPBA0BTnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIGV4Y2VlZHMgbGltaXQgYE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnRgLlxJbnN1ZmZpY2llbnRCb3VudHlWYWx1ZQAQBPhUaGUgcGFyZW50IGJvdW50eSB2YWx1ZSBpcyBub3QgZW5vdWdoIHRvIGFkZCBuZXcgY2hpbGQtYm91bnR5LkBQcmVpbWFnZU5vdEV4aXN0ABEEcFRoZSBwcmVpbWFnZSBkb2VzIG5vdCBleGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuuQ0IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFBvb2xNZW1iZXIEBFQAABABHHBvb2xfaWQ4ARhQb29sSWQAARhwb2ludHNZAQEwQmFsYW5jZU9mPFQ+AAFwbGFzdF9yZWNvcmRlZF9yZXdhcmRfY291bnRlchkFAUBUOjpSZXdhcmRDb3VudGVyAAE4dW5ib25kaW5nX2VyYXO9DQHgQm91bmRlZEJUcmVlTWFwPEVyYUluZGV4LCBCYWxhbmNlT2Y8VD4sIFQ6Ok1heFVuYm9uZGluZz4AAL0NDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwE4BFYBWQEEUwAABADBDQE4QlRyZWVNYXA8SywgVj4AAMENBCBCVHJlZU1hcAgESwE4BFYBWQEABABZDQAAAMUNCFxwYWxsZXRfbm9taW5hdGlvbl9wb29sczxCb25kZWRQb29sSW5uZXIEBFQAABQBKGNvbW1pc3Npb27JDQE0Q29tbWlzc2lvbjxUPgABOG1lbWJlcl9jb3VudGVyOAEMdTMyAAEYcG9pbnRzWQEBMEJhbGFuY2VPZjxUPgABFHJvbGVz0Q0BXFBvb2xSb2xlczxUOjpBY2NvdW50SWQ+AAEUc3RhdGVBBQEkUG9vbFN0YXRlAADJDQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMoQ29tbWlzc2lvbgQEVAAAFAEcY3VycmVudFkFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+AAEMbWF40QgBPE9wdGlvbjxQZXJiaWxsPgABLGNoYW5nZV9yYXRlzQ0BvE9wdGlvbjxDb21taXNzaW9uQ2hhbmdlUmF0ZTxCbG9ja051bWJlckZvcjxUPj4+AAE0dGhyb3R0bGVfZnJvbeQBZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4AAUBjbGFpbV9wZXJtaXNzaW9uZQUBvE9wdGlvbjxDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uPFQ6OkFjY291bnRJZD4+AADNDQQYT3B0aW9uBARUAWEFAQgQTm9uZQAAABBTb21lBABhBQAAAQAA0Q0IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzJFBvb2xSb2xlcwQkQWNjb3VudElkAQQAEAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEQcm9vdJEBAURPcHRpb248QWNjb3VudElkPgABJG5vbWluYXRvcpEBAURPcHRpb248QWNjb3VudElkPgABHGJvdW5jZXKRAQFET3B0aW9uPEFjY291bnRJZD4AANUNCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhSZXdhcmRQb29sBARUAAAUAXBsYXN0X3JlY29yZGVkX3Jld2FyZF9jb3VudGVyGQUBQFQ6OlJld2FyZENvdW50ZXIAAWxsYXN0X3JlY29yZGVkX3RvdGFsX3BheW91dHNZAQEwQmFsYW5jZU9mPFQ+AAFUdG90YWxfcmV3YXJkc19jbGFpbWVkWQEBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fcGVuZGluZ1kBATBCYWxhbmNlT2Y8VD4AAWB0b3RhbF9jb21taXNzaW9uX2NsYWltZWRZAQEwQmFsYW5jZU9mPFQ+AADZDQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgU3ViUG9vbHMEBFQAAAgBGG5vX2VyYd0NATRVbmJvbmRQb29sPFQ+AAEgd2l0aF9lcmHhDQEBAUJvdW5kZWRCVHJlZU1hcDxFcmFJbmRleCwgVW5ib25kUG9vbDxUPiwgVG90YWxVbmJvbmRpbmdQb29sczxUPj4AAN0NCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhVbmJvbmRQb29sBARUAAAIARhwb2ludHNZAQEwQmFsYW5jZU9mPFQ+AAEcYmFsYW5jZVkBATBCYWxhbmNlT2Y8VD4AAOENDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwE4BFYB3Q0EUwAABADlDQE4QlRyZWVNYXA8SywgVj4AAOUNBCBCVHJlZU1hcAgESwE4BFYB3Q0ABADpDQAAAOkNAAAC7Q0A7Q0AAAQION0NAPENDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQURXJyb3IEBFQAAZgwUG9vbE5vdEZvdW5kAAAEiEEgKGJvbmRlZCkgcG9vbCBpZCBkb2VzIG5vdCBleGlzdC5IUG9vbE1lbWJlck5vdEZvdW5kAAEEbEFuIGFjY291bnQgaXMgbm90IGEgbWVtYmVyLkhSZXdhcmRQb29sTm90Rm91bmQAAgQhAUEgcmV3YXJkIHBvb2wgZG9lcyBub3QgZXhpc3QuIEluIGFsbCBjYXNlcyB0aGlzIGlzIGEgc3lzdGVtIGxvZ2ljIGVycm9yLkBTdWJQb29sc05vdEZvdW5kAAMEaEEgc3ViIHBvb2wgZG9lcyBub3QgZXhpc3QuZEFjY291bnRCZWxvbmdzVG9PdGhlclBvb2wABAhNAUFuIGFjY291bnQgaXMgYWxyZWFkeSBkZWxlZ2F0aW5nIGluIGFub3RoZXIgcG9vbC4gQW4gYWNjb3VudCBtYXkgb25seSBiZWxvbmcgdG8gb25lPHBvb2wgYXQgYSB0aW1lLjhGdWxseVVuYm9uZGluZwAFCD0BVGhlIG1lbWJlciBpcyBmdWxseSB1bmJvbmRlZCAoYW5kIHRodXMgY2Fubm90IGFjY2VzcyB0aGUgYm9uZGVkIGFuZCByZXdhcmQgcG9vbKhhbnltb3JlIHRvLCBmb3IgZXhhbXBsZSwgY29sbGVjdCByZXdhcmRzKS5ETWF4VW5ib25kaW5nTGltaXQABgQJAVRoZSBtZW1iZXIgY2Fubm90IHVuYm9uZCBmdXJ0aGVyIGNodW5rcyBkdWUgdG8gcmVhY2hpbmcgdGhlIGxpbWl0LkRDYW5ub3RXaXRoZHJhd0FueQAHBE0BTm9uZSBvZiB0aGUgZnVuZHMgY2FuIGJlIHdpdGhkcmF3biB5ZXQgYmVjYXVzZSB0aGUgYm9uZGluZyBkdXJhdGlvbiBoYXMgbm90IHBhc3NlZC5ETWluaW11bUJvbmROb3RNZXQACBQpAVRoZSBhbW91bnQgZG9lcyBub3QgbWVldCB0aGUgbWluaW11bSBib25kIHRvIGVpdGhlciBqb2luIG9yIGNyZWF0ZSBhIHBvb2wuAFUBVGhlIGRlcG9zaXRvciBjYW4gbmV2ZXIgdW5ib25kIHRvIGEgdmFsdWUgbGVzcyB0aGFuIGBQYWxsZXQ6OmRlcG9zaXRvcl9taW5fYm9uZGAuIFRoZV0BY2FsbGVyIGRvZXMgbm90IGhhdmUgbm9taW5hdGluZyBwZXJtaXNzaW9ucyBmb3IgdGhlIHBvb2wuIE1lbWJlcnMgY2FuIG5ldmVyIHVuYm9uZCB0byBhaHZhbHVlIGJlbG93IGBNaW5Kb2luQm9uZGAuME92ZXJmbG93UmlzawAJBCEBVGhlIHRyYW5zYWN0aW9uIGNvdWxkIG5vdCBiZSBleGVjdXRlZCBkdWUgdG8gb3ZlcmZsb3cgcmlzayBmb3IgdGhlIHBvb2wuNE5vdERlc3Ryb3lpbmcACghdAUEgcG9vbCBtdXN0IGJlIGluIFtgUG9vbFN0YXRlOjpEZXN0cm95aW5nYF0gaW4gb3JkZXIgZm9yIHRoZSBkZXBvc2l0b3IgdG8gdW5ib25kIG9yIGZvcrhvdGhlciBtZW1iZXJzIHRvIGJlIHBlcm1pc3Npb25sZXNzbHkgdW5ib25kZWQuME5vdE5vbWluYXRvcgALBPRUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgbm9taW5hdGluZyBwZXJtaXNzaW9ucyBmb3IgdGhlIHBvb2wuVE5vdEtpY2tlck9yRGVzdHJveWluZwAMBD0BRWl0aGVyIGEpIHRoZSBjYWxsZXIgY2Fubm90IG1ha2UgYSB2YWxpZCBraWNrIG9yIGIpIHRoZSBwb29sIGlzIG5vdCBkZXN0cm95aW5nLhxOb3RPcGVuAA0EcFRoZSBwb29sIGlzIG5vdCBvcGVuIHRvIGpvaW4gTWF4UG9vbHMADgSEVGhlIHN5c3RlbSBpcyBtYXhlZCBvdXQgb24gcG9vbHMuOE1heFBvb2xNZW1iZXJzAA8EnFRvbyBtYW55IG1lbWJlcnMgaW4gdGhlIHBvb2wgb3Igc3lzdGVtLkRDYW5Ob3RDaGFuZ2VTdGF0ZQAQBIhUaGUgcG9vbHMgc3RhdGUgY2Fubm90IGJlIGNoYW5nZWQuVERvZXNOb3RIYXZlUGVybWlzc2lvbgARBLhUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgYWRlcXVhdGUgcGVybWlzc2lvbnMuVE1ldGFkYXRhRXhjZWVkc01heExlbgASBKxNZXRhZGF0YSBleGNlZWRzIFtgQ29uZmlnOjpNYXhNZXRhZGF0YUxlbmBdJERlZmVuc2l2ZQQA9Q0BOERlZmVuc2l2ZUVycm9yABMIMQFTb21lIGVycm9yIG9jY3VycmVkIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbi4gVGhpcyBzaG91bGQgYmUgcmVwb3J0ZWQgdG8gdGhlMG1haW50YWluZXJzLpxQYXJ0aWFsVW5ib25kTm90QWxsb3dlZFBlcm1pc3Npb25sZXNzbHkAFAS8UGFydGlhbCB1bmJvbmRpbmcgbm93IGFsbG93ZWQgcGVybWlzc2lvbmxlc3NseS5cTWF4Q29tbWlzc2lvblJlc3RyaWN0ZWQAFQQdAVRoZSBwb29sJ3MgbWF4IGNvbW1pc3Npb24gY2Fubm90IGJlIHNldCBoaWdoZXIgdGhhbiB0aGUgZXhpc3RpbmcgdmFsdWUuYENvbW1pc3Npb25FeGNlZWRzTWF4aW11bQAWBOxUaGUgc3VwcGxpZWQgY29tbWlzc2lvbiBleGNlZWRzIHRoZSBtYXggYWxsb3dlZCBjb21taXNzaW9uLnhDb21taXNzaW9uRXhjZWVkc0dsb2JhbE1heGltdW0AFwToVGhlIHN1cHBsaWVkIGNvbW1pc3Npb24gZXhjZWVkcyBnbG9iYWwgbWF4aW11bSBjb21taXNzaW9uLmRDb21taXNzaW9uQ2hhbmdlVGhyb3R0bGVkABgECQFOb3QgZW5vdWdoIGJsb2NrcyBoYXZlIHN1cnBhc3NlZCBzaW5jZSB0aGUgbGFzdCBjb21taXNzaW9uIHVwZGF0ZS54Q29tbWlzc2lvbkNoYW5nZVJhdGVOb3RBbGxvd2VkABkEAQFUaGUgc3VibWl0dGVkIGNoYW5nZXMgdG8gY29tbWlzc2lvbiBjaGFuZ2UgcmF0ZSBhcmUgbm90IGFsbG93ZWQuTE5vUGVuZGluZ0NvbW1pc3Npb24AGgSgVGhlcmUgaXMgbm8gcGVuZGluZyBjb21taXNzaW9uIHRvIGNsYWltLlhOb0NvbW1pc3Npb25DdXJyZW50U2V0ABsEjE5vIGNvbW1pc3Npb24gY3VycmVudCBoYXMgYmVlbiBzZXQuLFBvb2xJZEluVXNlABwEZFBvb2wgaWQgY3VycmVudGx5IGluIHVzZS40SW52YWxpZFBvb2xJZAAdBJxQb29sIGlkIHByb3ZpZGVkIGlzIG5vdCBjb3JyZWN0L3VzYWJsZS5MQm9uZEV4dHJhUmVzdHJpY3RlZAAeBPxCb25kaW5nIGV4dHJhIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIGV4YWN0IHBlbmRpbmcgcmV3YXJkIGFtb3VudC48Tm90aGluZ1RvQWRqdXN0AB8EsE5vIGltYmFsYW5jZSBpbiB0aGUgRUQgZGVwb3NpdCBmb3IgdGhlIHBvb2wuOE5vdGhpbmdUb1NsYXNoACAEzE5vIHNsYXNoIHBlbmRpbmcgdGhhdCBjYW4gYmUgYXBwbGllZCB0byB0aGUgbWVtYmVyLixTbGFzaFRvb0xvdwAhBKhUaGUgc2xhc2ggYW1vdW50IGlzIHRvbyBsb3cgdG8gYmUgYXBwbGllZC48QWxyZWFkeU1pZ3JhdGVkACIEFQFUaGUgcG9vbCBvciBtZW1iZXIgZGVsZWdhdGlvbiBoYXMgYWxyZWFkeSBtaWdyYXRlZCB0byBkZWxlZ2F0ZSBzdGFrZS4sTm90TWlncmF0ZWQAIwQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBub3QgbWlncmF0ZWQgeWV0IHRvIGRlbGVnYXRlIHN0YWtlLjBOb3RTdXBwb3J0ZWQAJATwVGhpcyBjYWxsIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBwYWxsZXQuKFJlc3RyaWN0ZWQAJQhRAUFjY291bnQgaXMgcmVzdHJpY3RlZCBmcm9tIHBhcnRpY2lwYXRpb24gaW4gcG9vbHMuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgYWNjb3VudCBpc3xzdGFraW5nIGluIGFub3RoZXIgd2F5IGFscmVhZHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvUNDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQ4RGVmZW5zaXZlRXJyb3IAARxoTm90RW5vdWdoU3BhY2VJblVuYm9uZFBvb2wAAAAwUG9vbE5vdEZvdW5kAAEASFJld2FyZFBvb2xOb3RGb3VuZAACAEBTdWJQb29sc05vdEZvdW5kAAMAcEJvbmRlZFN0YXNoS2lsbGVkUHJlbWF0dXJlbHkABABURGVsZWdhdGlvblVuc3VwcG9ydGVkAAUAPFNsYXNoTm90QXBwbGllZAAGAAD5DQxAcGFsbGV0X2JhZ3NfbGlzdBBsaXN0EE5vZGUIBFQABEkAABQBCGlkBAEwVDo6QWNjb3VudElkAAEQcHJldpEBAVBPcHRpb248VDo6QWNjb3VudElkPgABEG5leHSRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASRiYWdfdXBwZXIoASBUOjpTY29yZQABFHNjb3JlKAEgVDo6U2NvcmUAAP0NDEBwYWxsZXRfYmFnc19saXN0EGxpc3QMQmFnCARUAARJAAAIARBoZWFkkQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEQdGFpbJEBAVBPcHRpb248VDo6QWNjb3VudElkPgAAAQ4AAAIoAAUODEBwYWxsZXRfYmFnc19saXN0GHBhbGxldBRFcnJvcggEVAAESQABCBBMaXN0BAAJDgEkTGlzdEVycm9yAAAEtEEgZXJyb3IgaW4gdGhlIGxpc3QgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLhhMb2NrZWQAAQTYQ291bGQgbm90IHVwZGF0ZSBhIG5vZGUsIGJlY2F1c2UgdGhlIHBhbGxldCBpcyBsb2NrZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LgkODEBwYWxsZXRfYmFnc19saXN0EGxpc3QkTGlzdEVycm9yAAEUJER1cGxpY2F0ZQAAAChOb3RIZWF2aWVyAAEAME5vdEluU2FtZUJhZwACADBOb2RlTm90Rm91bmQAAwAYTG9ja2VkAAQAAA0OAAAECAEBAQEAEQ4MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyhEZWxlZ2F0aW9uBARUAAAIARRhZ2VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AABUODGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcUdHlwZXMsQWdlbnRMZWRnZXIEBFQAABABFHBheWVlBAEwVDo6QWNjb3VudElkAAE8dG90YWxfZGVsZWdhdGVkVQEBMEJhbGFuY2VPZjxUPgABVHVuY2xhaW1lZF93aXRoZHJhd2Fsc1UBATBCYWxhbmNlT2Y8VD4AATRwZW5kaW5nX3NsYXNoVQEBMEJhbGFuY2VPZjxUPgAAGQ4MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQURXJyb3IEBFQAATAoTm90QWxsb3dlZAAABKhUaGUgYWNjb3VudCBjYW5ub3QgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi44QWxyZWFkeVN0YWtpbmcAAQS4QW4gZXhpc3Rpbmcgc3Rha2VyIGNhbm5vdCBwZXJmb3JtIHRoaXMgYWN0aW9uLmBJbnZhbGlkUmV3YXJkRGVzdGluYXRpb24AAgTUUmV3YXJkIERlc3RpbmF0aW9uIGNhbm5vdCBiZSBzYW1lIGFzIGBBZ2VudGAgYWNjb3VudC5ESW52YWxpZERlbGVnYXRpb24AAxSIRGVsZWdhdGlvbiBjb25kaXRpb25zIGFyZSBub3QgbWV0LgBMUG9zc2libGUgaXNzdWVzIGFyZWwxKSBDYW5ub3QgZGVsZWdhdGUgdG8gc2VsZiykMikgQ2Fubm90IGRlbGVnYXRlIHRvIG11bHRpcGxlIGRlbGVnYXRlcy44Tm90RW5vdWdoRnVuZHMABAQBAVRoZSBhY2NvdW50IGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4gTm90QWdlbnQABQSATm90IGFuIGV4aXN0aW5nIGBBZ2VudGAgYWNjb3VudC4wTm90RGVsZWdhdG9yAAYEYE5vdCBhIERlbGVnYXRvciBhY2NvdW50LiBCYWRTdGF0ZQAHBIhTb21lIGNvcnJ1cHRpb24gaW4gaW50ZXJuYWwgc3RhdGUuOFVuYXBwbGllZFNsYXNoAAgE3FVuYXBwbGllZCBwZW5kaW5nIHNsYXNoIHJlc3RyaWN0cyBvcGVyYXRpb24gb24gYEFnZW50YC44Tm90aGluZ1RvU2xhc2gACQSsYEFnZW50YCBoYXMgbm8gcGVuZGluZyBzbGFzaCB0byBiZSBhcHBsaWVkLjhXaXRoZHJhd0ZhaWxlZAAKBLBGYWlsZWQgdG8gd2l0aGRyYXcgYW1vdW50IGZyb20gQ29yZSBTdGFraW5nLjBOb3RTdXBwb3J0ZWQACwScT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBwYWxsZXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lh0OAAAECCEOOAAhDgh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50SFZhbGlkYXRvclNldFJlcG9ydAQkQWNjb3VudElkAQQAEAFEbmV3X3ZhbGlkYXRvcl9zZXRhAQE4VmVjPEFjY291bnRJZD4AAQhpZDgBDHUzMgABLHBydW5lX3VwX3Rv5AFQT3B0aW9uPFNlc3Npb25JbmRleD4AASBsZWZ0b3Zlcl0BARBib29sAAAlDgx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBRFcnJvcgQEVAABFDRYY21TZW5kRmFpbGVkAAAEuEZhaWxlZCB0byBzZW5kIFhDTSBtZXNzYWdlIHRvIHRoZSBSZWxheSBDaGFpbi4wTm90VmFsaWRhdG9yAAEUxFRoZSBvcmlnaW4gYWNjb3VudCBpcyBub3QgYSByZWdpc3RlcmVkIHZhbGlkYXRvci4AWQFPbmx5IGFjY291bnRzIHRoYXQgaGF2ZSBjYWxsZWQgYHZhbGlkYXRlKClgIGNhbiBzZXQgb3IgcHVyZ2Ugc2Vzc2lvbiBrZXlzLiBXaGVuIGNhbGxlZEkBdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIG9yaWdpbiBpcyB0aGUgZGVsZWdhdGluZyBhY2NvdW50IChzdGFzaCksIHdoaWNoIG11c3QgYmUgYVRyZWdpc3RlcmVkIHZhbGlkYXRvci4sSW52YWxpZEtleXMAAgRFAVRoZSBzZXNzaW9uIGtleXMgY291bGQgbm90IGJlIGRlY29kZWQgYXMgdGhlIGV4cGVjdGVkIFJlbGF5Q2hhaW5TZXNzaW9uS2V5cyB0eXBlLjBJbnZhbGlkUHJvb2YAAwS0SW52YWxpZCBvd25lcnNoaXAgcHJvb2YgZm9yIHRoZSBzZXNzaW9uIGtleXMuPEZlZXNFeGNlZWRlZE1heAAEBLREZWxpdmVyeSBmZWVzIGV4Y2VlZGVkIHRoZSBzcGVjaWZpZWQgbWF4aW11bS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuKQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEtDgRTAAAEADUOARhWZWM8VD4AAC0OAAAEDAQoMQ4AMQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAYQEBGFZlYzxUPgAANQ4AAAItDgA5DgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABhAQEYVmVjPFQ+AAA9DgyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBRFcnJvcgQEVAABDCBGYWxsYmFjawAABIRUcmlnZ2VyaW5nIHRoZSBgRmFsbGJhY2tgIGZhaWxlZC48VW5leHBlY3RlZFBoYXNlAAEEQFVuZXhwZWN0ZWQgcGhhc2UgU25hcHNob3QAAgRkU25hcHNob3Qgd2FzIHVuYXZhaWxhYmxlLgQNAUVycm9yIG9mIHRoZSBwYWxsZXQgdGhhdCBjYW4gYmUgcmV0dXJuZWQgaW4gcmVzcG9uc2UgdG8gZGlzcGF0Y2hlcy5BDhCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzNFZhbGlkU29sdXRpb24AAQgEWAAAAARZAAEAAEUODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBSQ4EUwAABABRDgEYVmVjPFQ+AABJDgAABAgETQ4ATQ4QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBsczxQYXJ0aWFsQmFja2luZ3MAAAgBFHRvdGFsWQEBPEV4dGVuZGVkQmFsYW5jZQABHGJhY2tlcnM4AQx1MzIAAFEOAAACSQ4AVQ4QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhTdGF0dXMAAQgcT25nb2luZwQAOAEkUGFnZUluZGV4AAAAHE5vdGhpbmcAAQAAWQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFdDgRTAAAEAGEOARhWZWM8VD4AAF0OAAAECATFBQBhDgAAAl0OAGUOAAAEDDgEOABpDgyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZEhTdWJtaXNzaW9uTWV0YWRhdGEEBFQAABQBHGRlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAEMZmVlWQEBMEJhbGFuY2VPZjxUPgABGHJld2FyZFkBATBCYWxhbmNlT2Y8VD4AATRjbGFpbWVkX3Njb3JlxQUBNEVsZWN0aW9uU2NvcmUAARRwYWdlc20OAWhCb3VuZGVkVmVjPGJvb2wsIFQ6OlBhZ2VzPgAAbQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFdAQRTAAAEAHEOARhWZWM8VD4AAHEOAAACXQEAdQ4QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0FEVycm9yBARUAAEkOFBoYXNlTm90U2lnbmVkAAAEYFRoZSBwaGFzZSBpcyBub3Qgc2lnbmVkLiREdXBsaWNhdGUAAQR4VGhlIHN1Ym1pc3Npb24gaXMgYSBkdXBsaWNhdGUuJFF1ZXVlRnVsbAACBEhUaGUgcXVldWUgaXMgZnVsbC4wQmFkUGFnZUluZGV4AAMEgFRoZSBwYWdlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuNE5vdFJlZ2lzdGVyZWQABAR4VGhlIGFjY291bnQgaXMgbm90IHJlZ2lzdGVyZWQuME5vU3VibWlzc2lvbgAFBFBObyBzdWJtaXNzaW9uIGZvdW5kLjBSb3VuZE5vdE92ZXIABgRYUm91bmQgaXMgbm90IHlldCBvdmVyLjhCYWRXaXRuZXNzRGF0YQAHBGhCYWQgd2l0bmVzcyBkYXRhIHByb3ZpZGVkLlBUb29NYW55SW52dWxuZXJhYmxlcwAIBLBUb28gbWFueSBpbnZ1bG5lcmFibGUgYWNjb3VudHMgYXJlIHByb3ZpZGVkLASAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC55DgxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYbGVkZ2VyNFN0YWtpbmdMZWRnZXIEBFQAABABFHN0YXNoBAEwVDo6QWNjb3VudElkAAEUdG90YWxVAQEwQmFsYW5jZU9mPFQ+AAEYYWN0aXZlVQEBMEJhbGFuY2VPZjxUPgABJHVubG9ja2luZ+kGAfBCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6Ok1heFVubG9ja2luZ0NodW5rcz4AAH0OCFBwYWxsZXRfc3Rha2luZ19hc3luYyxOb21pbmF0aW9ucwQEVAAADAEcdGFyZ2V0czEOAbRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgTWF4Tm9taW5hdGlvbnNPZjxUPj4AATBzdWJtaXR0ZWRfaW44ASBFcmFJbmRleAABKHN1cHByZXNzZWRdAQEQYm9vbAAAgQ4IUHBhbGxldF9zdGFraW5nX2FzeW5jNEFjdGl2ZUVyYUluZm8AAAgBFGluZGV4OAEgRXJhSW5kZXgAARRzdGFydAEBASxPcHRpb248dTY0PgAAhQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHQBFMAAAQAGQkBGFZlYzxUPgAAiQ4IKHNwX3N0YWtpbmdUUGFnZWRFeHBvc3VyZU1ldGFkYXRhBBxCYWxhbmNlAVkBABABFHRvdGFsVQEBHEJhbGFuY2UAAQxvd25VAQEcQmFsYW5jZQABPG5vbWluYXRvcl9jb3VudDgBDHUzMgABKHBhZ2VfY291bnQ4ARBQYWdlAACNDhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldExCb3VuZGVkRXhwb3N1cmVQYWdlBARUAAAEAJEOAaBFeHBvc3VyZVBhZ2U8VDo6QWNjb3VudElkLCBCYWxhbmNlT2Y8VD4+AACRDggoc3Bfc3Rha2luZzBFeHBvc3VyZVBhZ2UIJEFjY291bnRJZAEEHEJhbGFuY2UBWQEACAEocGFnZV90b3RhbFUBARxCYWxhbmNlAAEYb3RoZXJzlQ4BrFZlYzxJbmRpdmlkdWFsRXhwb3N1cmU8QWNjb3VudElkLCBCYWxhbmNlPj4AAJUOAAACmQ4AmQ4IKHNwX3N0YWtpbmdISW5kaXZpZHVhbEV4cG9zdXJlCCRBY2NvdW50SWQBBBxCYWxhbmNlAVkBAAgBDHdobwQBJEFjY291bnRJZAABFHZhbHVlVQEBHEJhbGFuY2UAAJ0ODExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBOARTAAAEAEEEARhWZWM8VD4AAKEOCFBwYWxsZXRfc3Rha2luZ19hc3luYzxFcmFSZXdhcmRQb2ludHMEBFQAAAgBFHRvdGFsOAEsUmV3YXJkUG9pbnQAAShpbmRpdmlkdWFspQ4B+EJvdW5kZWRCVHJlZU1hcDxUOjpBY2NvdW50SWQsIFJld2FyZFBvaW50LCBUOjpNYXhWYWxpZGF0b3JTZXQ+AAClDgxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX21hcDxCb3VuZGVkQlRyZWVNYXAMBEsBBARWATgEUwAABACpDgE4QlRyZWVNYXA8SywgVj4AAKkOBCBCVHJlZU1hcAgESwEEBFYBOAAEAHkFAAAArQ4MUHBhbGxldF9zdGFraW5nX2FzeW5jIHNsYXNoaW5nNE9mZmVuY2VSZWNvcmQEJEFjY291bnRJZAEEABQBIHJlcG9ydGVykQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEwcmVwb3J0ZWRfZXJhOAEgRXJhSW5kZXgAATRleHBvc3VyZV9wYWdlOAEMdTMyAAE4c2xhc2hfZnJhY3Rpb26hAQEcUGVyYmlsbAABUHByaW9yX3NsYXNoX2ZyYWN0aW9uoQEBHFBlcmJpbGwAALEODExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBOARTAAAEAEEEARhWZWM8VD4AALUOAAAEDDgErQ4AuQ4AAAQIOPUGAL0OCFBwYWxsZXRfc3Rha2luZ19hc3luYzhVbmFwcGxpZWRTbGFzaAQEVAAAFAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkAAEMb3duWQEBMEJhbGFuY2VPZjxUPgABGG90aGVyc8EOAREBV2Vha0JvdW5kZWRWZWM8KFQ6OkFjY291bnRJZCwgQmFsYW5jZU9mPFQ+KSwgVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZT4AASByZXBvcnRlcpEBAVBPcHRpb248VDo6QWNjb3VudElkPgABGHBheW91dFkBATBCYWxhbmNlT2Y8VD4AAMEODExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBuQUEUwAABAC9BQEYVmVjPFQ+AADFDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAckGBFMAAAQAxQYBGFZlYzxUPgAAyQ4AAAQIoQFZAQDNDghQcGFsbGV0X3N0YWtpbmdfYXN5bmM4U25hcHNob3RTdGF0dXMEJEFjY291bnRJZAEEAQwcT25nb2luZwQABAEkQWNjb3VudElkAAAAIENvbnN1bWVkAAEAHFdhaXRpbmcAAgAA0Q4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAQQEUwAABACBDAEsQlRyZWVTZXQ8VD4AANUOEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0LFBydW5pbmdTdGVwAAEkQEVyYXNTdGFrZXJzUGFnZWQAAABMRXJhc1N0YWtlcnNPdmVydmlldwABAEhFcmFzVmFsaWRhdG9yUHJlZnMAAgA4Q2xhaW1lZFJld2FyZHMAAwBMRXJhc1ZhbGlkYXRvclJld2FyZAAEAEBFcmFzUmV3YXJkUG9pbnRzAAUATFNpbmdsZUVudHJ5Q2xlYW51cHMABgBMVmFsaWRhdG9yU2xhc2hJbkVyYQAHAHBFcmFzVmFsaWRhdG9ySW5jZW50aXZlV2VpZ2h0AAgAANkOEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0FEVycm9yBARUAAGYNE5vdENvbnRyb2xsZXIAAARkTm90IGEgY29udHJvbGxlciBhY2NvdW50LiBOb3RTdGFzaAABBFBOb3QgYSBzdGFzaCBhY2NvdW50LjRBbHJlYWR5Qm9uZGVkAAIEYFN0YXNoIGlzIGFscmVhZHkgYm9uZGVkLjRBbHJlYWR5UGFpcmVkAAMEdENvbnRyb2xsZXIgaXMgYWxyZWFkeSBwYWlyZWQuMEVtcHR5VGFyZ2V0cwAEBGBUYXJnZXRzIGNhbm5vdCBiZSBlbXB0eS44RHVwbGljYXRlSW5kZXgABQRARHVwbGljYXRlIGluZGV4LkhJbnZhbGlkU2xhc2hSZWNvcmQABgRcU2xhc2ggcmVjb3JkIG5vdCBmb3VuZC5ASW5zdWZmaWNpZW50Qm9uZAAHDDUBQ2Fubm90IGJvbmQsIG5vbWluYXRlIG9yIHZhbGlkYXRlIHdpdGggdmFsdWUgbGVzcyB0aGFuIHRoZSBtaW5pbXVtIGRlZmluZWQgYnk9AWdvdmVybmFuY2UgKHNlZSBgTWluVmFsaWRhdG9yQm9uZGAgYW5kIGBNaW5Ob21pbmF0b3JCb25kYCkuIElmIHVuYm9uZGluZyBpcyB0aGUVAWludGVudGlvbiwgYGNoaWxsYCBmaXJzdCB0byByZW1vdmUgb25lJ3Mgcm9sZSBhcyB2YWxpZGF0b3Ivbm9taW5hdG9yLjBOb01vcmVDaHVua3MACASQQ2FuIG5vdCBzY2hlZHVsZSBtb3JlIHVubG9jayBjaHVua3MuNE5vVW5sb2NrQ2h1bmsACQSgQ2FuIG5vdCByZWJvbmQgd2l0aG91dCB1bmxvY2tpbmcgY2h1bmtzLjBGdW5kZWRUYXJnZXQACgTIQXR0ZW1wdGluZyB0byB0YXJnZXQgYSBzdGFzaCB0aGF0IHN0aWxsIGhhcyBmdW5kcy5ISW52YWxpZEVyYVRvUmV3YXJkAAsEWEludmFsaWQgZXJhIHRvIHJld2FyZC5oSW52YWxpZE51bWJlck9mTm9taW5hdGlvbnMADAR4SW52YWxpZCBudW1iZXIgb2Ygbm9taW5hdGlvbnMuOEFscmVhZHlDbGFpbWVkAA0ECQFSZXdhcmRzIGZvciB0aGlzIGVyYSBoYXZlIGFscmVhZHkgYmVlbiBjbGFpbWVkIGZvciB0aGlzIHZhbGlkYXRvci4sSW52YWxpZFBhZ2UADgSETm8gbm9taW5hdG9ycyBleGlzdCBvbiB0aGlzIHBhZ2UuVEluY29ycmVjdEhpc3RvcnlEZXB0aAAPBMBJbmNvcnJlY3QgcHJldmlvdXMgaGlzdG9yeSBkZXB0aCBpbnB1dCBwcm92aWRlZC4gQmFkU3RhdGUAEAQ5AUludGVybmFsIHN0YXRlIGhhcyBiZWNvbWUgc29tZWhvdyBjb3JydXB0ZWQgYW5kIHRoZSBvcGVyYXRpb24gY2Fubm90IGNvbnRpbnVlLjhUb29NYW55VGFyZ2V0cwARBJRUb28gbWFueSBub21pbmF0aW9uIHRhcmdldHMgc3VwcGxpZWQuJEJhZFRhcmdldAASBD0BQSBub21pbmF0aW9uIHRhcmdldCB3YXMgc3VwcGxpZWQgdGhhdCB3YXMgYmxvY2tlZCBvciBvdGhlcndpc2Ugbm90IGEgdmFsaWRhdG9yLkBDYW5ub3RDaGlsbE90aGVyABMEVQFUaGUgdXNlciBoYXMgZW5vdWdoIGJvbmQgYW5kIHRodXMgY2Fubm90IGJlIGNoaWxsZWQgZm9yY2VmdWxseSBieSBhbiBleHRlcm5hbCBwZXJzb24uRFRvb01hbnlOb21pbmF0b3JzABQITQFUaGVyZSBhcmUgdG9vIG1hbnkgbm9taW5hdG9ycyBpbiB0aGUgc3lzdGVtLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIGFkanVzdCB0aGUgc3Rha2luZ7RzZXR0aW5ncyB0byBrZWVwIHRoaW5ncyBzYWZlIGZvciB0aGUgcnVudGltZS5EVG9vTWFueVZhbGlkYXRvcnMAFQhVAVRoZXJlIGFyZSB0b28gbWFueSB2YWxpZGF0b3IgY2FuZGlkYXRlcyBpbiB0aGUgc3lzdGVtLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIGFkanVzdCB0aGXUc3Rha2luZyBzZXR0aW5ncyB0byBrZWVwIHRoaW5ncyBzYWZlIGZvciB0aGUgcnVudGltZS5AQ29tbWlzc2lvblRvb0xvdwAWBOBDb21taXNzaW9uIGlzIHRvbyBsb3cuIE11c3QgYmUgYXQgbGVhc3QgYE1pbkNvbW1pc3Npb25gLixCb3VuZE5vdE1ldAAXBFhTb21lIGJvdW5kIGlzIG5vdCBtZXQuUENvbnRyb2xsZXJEZXByZWNhdGVkABgEAQFVc2VkIHdoZW4gYXR0ZW1wdGluZyB0byB1c2UgZGVwcmVjYXRlZCBjb250cm9sbGVyIGFjY291bnQgbG9naWMuTENhbm5vdFJlc3RvcmVMZWRnZXIAGQRYQ2Fubm90IHJlc2V0IGEgbGVkZ2VyLmxSZXdhcmREZXN0aW5hdGlvblJlc3RyaWN0ZWQAGgSsUHJvdmlkZWQgcmV3YXJkIGRlc3RpbmF0aW9uIGlzIG5vdCBhbGxvd2VkLjhOb3RFbm91Z2hGdW5kcwAbBJxOb3QgZW5vdWdoIGZ1bmRzIGF2YWlsYWJsZSB0byB3aXRoZHJhdy5cVmlydHVhbFN0YWtlck5vdEFsbG93ZWQAHASoT3BlcmF0aW9uIG5vdCBhbGxvd2VkIGZvciB2aXJ0dWFsIHN0YWtlcnMuPENhbm5vdFJlYXBTdGFzaAAdBPRTdGFzaCBjb3VsZCBub3QgYmUgcmVhcGVkIGFzIG90aGVyIHBhbGxldCBtaWdodCBkZXBlbmQgb24gaXQuPEFscmVhZHlNaWdyYXRlZAAeBAkBVGhlIHN0YWtlIG9mIHRoaXMgYWNjb3VudCBpcyBhbHJlYWR5IG1pZ3JhdGVkIHRvIGBGdW5naWJsZWAgaG9sZHMuNEVyYU5vdFN0YXJ0ZWQAHwRQRXJhIG5vdCB5ZXQgc3RhcnRlZC4oUmVzdHJpY3RlZAAgCFkBQWNjb3VudCBpcyByZXN0cmljdGVkIGZyb20gcGFydGljaXBhdGlvbiBpbiBzdGFraW5nLiBUaGlzIG1heSBoYXBwZW4gaWYgdGhlIGFjY291bnQgaXPEc3Rha2luZyBpbiBhbm90aGVyIHdheSBhbHJlYWR5LCBzdWNoIGFzIHZpYSBwb29sLnRVbmFwcGxpZWRTbGFzaGVzSW5QcmV2aW91c0VyYQAhCC0BVW5hcHBsaWVkIHNsYXNoZXMgaW4gdGhlIHJlY2VudGx5IGNvbmNsdWRlZCBlcmEgaXMgYmxvY2tpbmcgdGhpcyBvcGVyYXRpb24umFNlZSBgQ2FsbDo6YXBwbHlfc2xhc2hgIHRvIGFwcGx5IHRoZW0uOEVyYU5vdFBydW5hYmxlACIEkFRoZSBlcmEgaXMgbm90IGVsaWdpYmxlIGZvciBwcnVuaW5nLjhDYW5jZWxsZWRTbGFzaAAjBMxUaGUgc2xhc2ggaGFzIGJlZW4gY2FuY2VsbGVkIGFuZCBjYW5ub3QgYmUgYXBwbGllZC5EQ29tbWlzc2lvblRvb0hpZ2gAJAT4Q29tbWlzc2lvbiBpcyBoaWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIGBNYXhDb21taXNzaW9uYC5UT3B0aW11bUdyZWF0ZXJUaGFuQ2FwACUEzE9wdGltdW0gc2VsZi1zdGFrZSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIGhhcmQgY2FwLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7dDghQcGFsbGV0X3N0YWtpbmdfYXN5bmMkUmV3YXJkUG90AAEIHEdlbmVyYWwEAOEOAShSZXdhcmRLaW5kAAAADEVyYQgAOAEgRXJhSW5kZXgAAOEOAShSZXdhcmRLaW5kAAEAAOEOCFBwYWxsZXRfc3Rha2luZ19hc3luYyhSZXdhcmRLaW5kAAEINFN0YWtlclJld2FyZHMAAABIVmFsaWRhdG9yU2VsZlN0YWtlAAEAAOUODFBwYWxsZXRfc3Rha2luZ19hc3luYxhyZXdhcmRMRXJhUmV3YXJkQWxsb2NhdGlvbgQcQmFsYW5jZQFZAQAIAThzdGFrZXJfcmV3YXJkc1kBARxCYWxhbmNlAAFMdmFsaWRhdG9yX2luY2VudGl2ZVkBARxCYWxhbmNlAADpDgw0cGFsbGV0X3Jldml2ZQh2bSBDb2RlSW5mbwQEVAAAGAEUb3duZXIEAThBY2NvdW50SWRPZjxUPgABHGRlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAEgcmVmY291bnS4AQx1NjQAASBjb2RlX2xlbjgBDHUzMgABJGNvZGVfdHlwZe0OATBCeXRlY29kZVR5cGUAAURiZWhhdmlvdXJfdmVyc2lvbjgBDHUzMgAA7Q4MNHBhbGxldF9yZXZpdmUIdm0wQnl0ZWNvZGVUeXBlAAEIDFB2bQAAAAxFdm0AAQAA8Q4MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50SW5mbwQEVAAACAEwYWNjb3VudF90eXBl9Q4BOEFjY291bnRUeXBlPFQ+AAEQZHVzdDgBDHUzMgAA9Q4MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50VHlwZQQEVAABCCBDb250cmFjdAQA+Q4BPENvbnRyYWN0SW5mbzxUPgAAAAxFT0EAAQAA+Q4MNHBhbGxldF9yZXZpdmUcc3RvcmFnZTBDb250cmFjdEluZm8EBFQAACABHHRyaWVfaWRFBAEYVHJpZUlkAAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgABNHN0b3JhZ2VfYnl0ZXM4AQx1MzIAATRzdG9yYWdlX2l0ZW1zOAEMdTMyAAFQc3RvcmFnZV9ieXRlX2RlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9pdGVtX2RlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9iYXNlX2RlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAFIaW1tdXRhYmxlX2RhdGFfbGVuOAEMdTMyAAD9DgAABAgEBAABDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAAUPDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2VERGVsZXRpb25RdWV1ZUl0ZW0EBFQAAAgBHHRyaWVfaWRFBAEYVHJpZUlkAAEoYWNjb3VudF9pZAQBOEFjY291bnRJZE9mPFQ+AAAJDww0cGFsbGV0X3Jldml2ZRxzdG9yYWdlUERlbGV0aW9uUXVldWVNYW5hZ2VyBARUAAAIAThpbnNlcnRfY291bnRlcjgBDHUzMgABOGRlbGV0ZV9jb3VudGVyOAEMdTMyAAANDxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4UQmxvY2sAAGwBQGJhc2VfZmVlX3Blcl9nYXMFBwEQVTI1NgABNGJsb2JfZ2FzX3VzZWQFBwEQVTI1NgABKGRpZmZpY3VsdHkFBwEQVTI1NgABPGV4Y2Vzc19ibG9iX2dhcwUHARBVMjU2AAEoZXh0cmFfZGF0YREPARRCeXRlcwABJGdhc19saW1pdAUHARBVMjU2AAEgZ2FzX3VzZWQFBwEQVTI1NgABEGhhc2hAARBIMjU2AAEobG9nc19ibG9vbRUPASBCeXRlczI1NgABFG1pbmVy/QYBHEFkZHJlc3MAASBtaXhfaGFzaEABEEgyNTYAARRub25jZR0PARhCeXRlczgAARhudW1iZXIFBwEQVTI1NgABYHBhcmVudF9iZWFjb25fYmxvY2tfcm9vdAUFATBPcHRpb248SDI1Nj4AASxwYXJlbnRfaGFzaEABEEgyNTYAATRyZWNlaXB0c19yb290QAEQSDI1NgABNHJlcXVlc3RzX2hhc2gFBQEwT3B0aW9uPEgyNTY+AAEwc2hhXzNfdW5jbGVzQAEQSDI1NgABEHNpemUFBwEQVTI1NgABKHN0YXRlX3Jvb3RAARBIMjU2AAEkdGltZXN0YW1wBQcBEFUyNTYAAUB0b3RhbF9kaWZmaWN1bHR5IQ8BME9wdGlvbjxVMjU2PgABMHRyYW5zYWN0aW9ucyUPAWBIYXNoZXNPclRyYW5zYWN0aW9uSW5mb3MAAUR0cmFuc2FjdGlvbnNfcm9vdEABEEgyNTYAARh1bmNsZXPEASRWZWM8SDI1Nj4AASx3aXRoZHJhd2Fsc3EPATxWZWM8V2l0aGRyYXdhbD4AAUB3aXRoZHJhd2Fsc19yb290QAEQSDI1NgAAEQ8UNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlFEJ5dGVzAAAEABgBHFZlYzx1OD4AABUPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZSBCeXRlczI1NgAABAAZDwEkW3U4OyAyNTZdAAAZDwAAAwABAAAMAB0PFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRhCeXRlczgAAAQAeQIBHFt1ODsgOF0AACEPBBhPcHRpb24EBFQBBQcBCBBOb25lAAAAEFNvbWUEAAUHAAABAAAlDxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5gSGFzaGVzT3JUcmFuc2FjdGlvbkluZm9zAAEIGEhhc2hlcwQAxAEkVmVjPEgyNTY+AAAAQFRyYW5zYWN0aW9uSW5mb3MEACkPAVBWZWM8VHJhbnNhY3Rpb25JbmZvPgABAAApDwAAAi0PAC0PFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxUcmFuc2FjdGlvbkluZm8AABgBKGJsb2NrX2hhc2hAARBIMjU2AAEwYmxvY2tfbnVtYmVyBQcBEFUyNTYAARBmcm9t/QYBHEFkZHJlc3MAARBoYXNoQAEQSDI1NgABRHRyYW5zYWN0aW9uX2luZGV4BQcBEFUyNTYAAUh0cmFuc2FjdGlvbl9zaWduZWQxDwFEVHJhbnNhY3Rpb25TaWduZWQAADEPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkRUcmFuc2FjdGlvblNpZ25lZAABFFRUcmFuc2FjdGlvbjc3MDJTaWduZWQEADUPAVRUcmFuc2FjdGlvbjc3MDJTaWduZWQAAABUVHJhbnNhY3Rpb240ODQ0U2lnbmVkBABNDwFUVHJhbnNhY3Rpb240ODQ0U2lnbmVkAAEAVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAQAVQ8BVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAACAFRUcmFuc2FjdGlvbjI5MzBTaWduZWQEAGEPAVRUcmFuc2FjdGlvbjI5MzBTaWduZWQAAwBcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQEAGkPAVxUcmFuc2FjdGlvbkxlZ2FjeVNpZ25lZAAEAAA1DxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb243NzAyU2lnbmVkAAAUAWR0cmFuc2FjdGlvbl83NzAyX3Vuc2lnbmVkOQ8BXFRyYW5zYWN0aW9uNzcwMlVuc2lnbmVkAAEEcgUHARBVMjU2AAEEcwUHARBVMjU2AAEEdiEPATBPcHRpb248VTI1Nj4AASB5X3Bhcml0eQUHARBVMjU2AAA5DxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb243NzAyVW5zaWduZWQAACwBLGFjY2Vzc19saXN0PQ8BKEFjY2Vzc0xpc3QAAUhhdXRob3JpemF0aW9uX2xpc3RFDwFsVmVjPEF1dGhvcml6YXRpb25MaXN0RW50cnk+AAEgY2hhaW5faWQFBwEQVTI1NgABDGdhcwUHARBVMjU2AAEUaW5wdXQRDwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXMFBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhcwUHARBVMjU2AAEUbm9uY2UFBwEQVTI1NgABCHRv/QYBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNzcwMgABFHZhbHVlBQcBEFUyNTYAAD0PAAACQQ8AQQ8UNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuPEFjY2Vzc0xpc3RFbnRyeQAACAEcYWRkcmVzc/0GARxBZGRyZXNzAAEwc3RvcmFnZV9rZXlzxAEkVmVjPEgyNTY+AABFDwAAAkkPAEkPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblhBdXRob3JpemF0aW9uTGlzdEVudHJ5AAAYASBjaGFpbl9pZAUHARBVMjU2AAEcYWRkcmVzc/0GARxBZGRyZXNzAAEUbm9uY2UFBwEQVTI1NgABIHlfcGFyaXR5BQcBEFUyNTYAAQRyBQcBEFUyNTYAAQRzBQcBEFUyNTYAAE0PFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjQ4NDRTaWduZWQAABABZHRyYW5zYWN0aW9uXzQ4NDRfdW5zaWduZWRRDwFcVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAAQRyBQcBEFUyNTYAAQRzBQcBEFUyNTYAASB5X3Bhcml0eQUHARBVMjU2AABRDxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAADABLGFjY2Vzc19saXN0PQ8BKEFjY2Vzc0xpc3QAAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPEASRWZWM8SDI1Nj4AASBjaGFpbl9pZAUHARBVMjU2AAEMZ2FzBQcBEFUyNTYAARRpbnB1dBEPARRCeXRlcwABUG1heF9mZWVfcGVyX2Jsb2JfZ2FzBQcBEFUyNTYAATxtYXhfZmVlX3Blcl9nYXMFBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhcwUHARBVMjU2AAEUbm9uY2UFBwEQVTI1NgABCHRv/QYBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNDg0NAABFHZhbHVlBQcBEFUyNTYAAFUPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjE1NTlTaWduZWQAABQBZHRyYW5zYWN0aW9uXzE1NTlfdW5zaWduZWRZDwFcVHJhbnNhY3Rpb24xNTU5VW5zaWduZWQAAQRyBQcBEFUyNTYAAQRzBQcBEFUyNTYAAQR2IQ8BME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5BQcBEFUyNTYAAFkPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjE1NTlVbnNpZ25lZAAALAEsYWNjZXNzX2xpc3Q9DwEoQWNjZXNzTGlzdAABIGNoYWluX2lkBQcBEFUyNTYAAQxnYXMFBwEQVTI1NgABJGdhc19wcmljZQUHARBVMjU2AAEUaW5wdXQRDwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXMFBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhcwUHARBVMjU2AAEUbm9uY2UFBwEQVTI1NgABCHRvXQ8BPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBLFR5cGVFaXAxNTU5AAEUdmFsdWUFBwEQVTI1NgAAXQ8EGE9wdGlvbgQEVAH9BgEIEE5vbmUAAAAQU29tZQQA/QYAAAEAAGEPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjI5MzBTaWduZWQAABQBZHRyYW5zYWN0aW9uXzI5MzBfdW5zaWduZWRlDwFcVHJhbnNhY3Rpb24yOTMwVW5zaWduZWQAAQRyBQcBEFUyNTYAAQRzBQcBEFUyNTYAAQR2IQ8BME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5BQcBEFUyNTYAAGUPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjI5MzBVbnNpZ25lZAAAJAEsYWNjZXNzX2xpc3Q9DwEoQWNjZXNzTGlzdAABIGNoYWluX2lkBQcBEFUyNTYAAQxnYXMFBwEQVTI1NgABJGdhc19wcmljZQUHARBVMjU2AAEUaW5wdXQRDwEUQnl0ZXMAARRub25jZQUHARBVMjU2AAEIdG9dDwE8T3B0aW9uPEFkZHJlc3M+AAEYciN0eXBlDAEsVHlwZUVpcDI5MzAAARR2YWx1ZQUHARBVMjU2AABpDxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQAABABbHRyYW5zYWN0aW9uX2xlZ2FjeV91bnNpZ25lZG0PAWRUcmFuc2FjdGlvbkxlZ2FjeVVuc2lnbmVkAAEEcgUHARBVMjU2AAEEcwUHARBVMjU2AAEEdgUHARBVMjU2AABtDxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5kVHJhbnNhY3Rpb25MZWdhY3lVbnNpZ25lZAAAIAEgY2hhaW5faWQhDwEwT3B0aW9uPFUyNTY+AAEMZ2FzBQcBEFUyNTYAASRnYXNfcHJpY2UFBwEQVTI1NgABFGlucHV0EQ8BFEJ5dGVzAAEUbm9uY2UFBwEQVTI1NgABCHRvXQ8BPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBKFR5cGVMZWdhY3kAARR2YWx1ZQUHARBVMjU2AABxDwAAAnUPAHUPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbihXaXRoZHJhd2FsAAAQARxhZGRyZXNz/QYBHEFkZHJlc3MAARhhbW91bnQFBwEQVTI1NgABFGluZGV4BQcBEFUyNTYAATx2YWxpZGF0b3JfaW5kZXgFBwEQVTI1NgAAeQ8AAAJ9DwB9DxA0cGFsbGV0X3Jldml2ZQxldm0oYmxvY2tfaGFzaDhSZWNlaXB0R2FzSW5mbwAACAEgZ2FzX3VzZWQFBwEQVTI1NgABTGVmZmVjdGl2ZV9nYXNfcHJpY2UFBwEQVTI1NgAAgQ8UNHBhbGxldF9yZXZpdmUMZXZtKGJsb2NrX2hhc2g0YmxvY2tfYnVpbGRlclhFdGhlcmV1bUJsb2NrQnVpbGRlcklSBARUAAAgAWB0cmFuc2FjdGlvbl9yb290X2J1aWxkZXKFDwFgSW5jcmVtZW50YWxIYXNoQnVpbGRlcklSAAFUcmVjZWlwdHNfcm9vdF9idWlsZGVyhQ8BYEluY3JlbWVudGFsSGFzaEJ1aWxkZXJJUgABQGJhc2VfZmVlX3Blcl9nYXMFBwEQVTI1NgABPGJsb2NrX2dhc19saW1pdAUHARBVMjU2AAEgZ2FzX3VzZWQFBwEQVTI1NgABKGxvZ3NfYmxvb20ZDwFYW3U4OyBCTE9PTV9TSVpFX0JZVEVTXQABJHR4X2hhc2hlc8QBJFZlYzxIMjU2PgABIGdhc19pbmZveQ8BTFZlYzxSZWNlaXB0R2FzSW5mbz4AAIUPFDRwYWxsZXRfcmV2aXZlDGV2bShibG9ja19oYXNoMGhhc2hfYnVpbGRlcmBJbmNyZW1lbnRhbEhhc2hCdWlsZGVySVIAACgBDGtleRgBHFZlYzx1OD4AASh2YWx1ZV90eXBlDAEIdTgAATRidWlsZGVyX3ZhbHVlGAEcVmVjPHU4PgABFHN0YWNrNAEwVmVjPFZlYzx1OD4+AAEsc3RhdGVfbWFza3MRBwEgVmVjPHUxNj4AASh0cmVlX21hc2tzEQcBIFZlYzx1MTY+AAEoaGFzaF9tYXNrcxEHASBWZWM8dTE2PgABSHN0b3JlZF9pbl9kYXRhYmFzZV0BARBib29sAAEccmxwX2J1ZhgBHFZlYzx1OD4AARRpbmRleCgBDHU2NAAAiQ8EGE9wdGlvbgQEVAEwAQgQTm9uZQAAABBTb21lBAAwAAABAACNDww0cGFsbGV0X3Jldml2ZRRkZWJ1ZzREZWJ1Z1NldHRpbmdzAAAQAXRhbGxvd191bmxpbWl0ZWRfY29udHJhY3Rfc2l6ZV0BARBib29sAAE8YnlwYXNzX2VpcF8zNjA3XQEBEGJvb2wAASBwdm1fbG9nc10BARBib29sAAFkZGlzYWJsZV9leGVjdXRpb25fdHJhY2luZ10BARBib29sAACRDww0cGFsbGV0X3Jldml2ZRhwYWxsZXQURXJyb3IEBFQAAeg8SW52YWxpZFNjaGVkdWxlAAEEGQFJbnZhbGlkIHNjaGVkdWxlIHN1cHBsaWVkLCBlLmcuIHdpdGggemVybyB3ZWlnaHQgb2YgYSBiYXNpYyBvcGVyYXRpb24uQEludmFsaWRDYWxsRmxhZ3MAAgQ1AUludmFsaWQgY29tYmluYXRpb24gb2YgZmxhZ3Mgc3VwcGxpZWQgdG8gYHNlYWxfY2FsbGAgb3IgYHNlYWxfZGVsZWdhdGVfY2FsbGAuIE91dE9mR2FzAAMEuFRoZSBleGVjdXRlZCBjb250cmFjdCBleGhhdXN0ZWQgaXRzIGdhcyBsaW1pdC44VHJhbnNmZXJGYWlsZWQABAg1AVBlcmZvcm1pbmcgdGhlIHJlcXVlc3RlZCB0cmFuc2ZlciBmYWlsZWQuIFByb2JhYmx5IGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdolGZyZWUgYmFsYW5jZSBpbiB0aGUgc2VuZGVyJ3MgYWNjb3VudC5MTWF4Q2FsbERlcHRoUmVhY2hlZAAFCCEBUGVyZm9ybWluZyBhIGNhbGwgd2FzIGRlbmllZCBiZWNhdXNlIHRoZSBjYWxsaW5nIGRlcHRoIHJlYWNoZWQgdGhlIGxpbWl0lG9mIHdoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBzY2hlZHVsZS5AQ29udHJhY3ROb3RGb3VuZAAGBLxObyBjb250cmFjdCB3YXMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLjBDb2RlTm90Rm91bmQABwTETm8gY29kZSBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLkBDb2RlSW5mb05vdEZvdW5kAAgE2E5vIGNvZGUgaW5mbyBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLixPdXRPZkJvdW5kcwAJBCUBQSBidWZmZXIgb3V0c2lkZSBvZiBzYW5kYm94IG1lbW9yeSB3YXMgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uLjhEZWNvZGluZ0ZhaWxlZAAKBCkBSW5wdXQgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uIGZhaWxlZCB0byBkZWNvZGUgYXMgZXhwZWN0ZWQgdHlwZS48Q29udHJhY3RUcmFwcGVkAAsEiENvbnRyYWN0IHRyYXBwZWQgZHVyaW5nIGV4ZWN1dGlvbi40VmFsdWVUb29MYXJnZQAMBPRFdmVudCBib2R5IG9yIHN0b3JhZ2UgaXRlbSBleGNlZWRzIFtgbGltaXRzOjpTVE9SQUdFX0JZVEVTYF0uYFRlcm1pbmF0ZWRXaGlsZVJlZW50cmFudAANCBkBVGVybWluYXRpb24gb2YgYSBjb250cmFjdCBpcyBub3QgYWxsb3dlZCB3aGlsZSB0aGUgY29udHJhY3QgaXMgYWxyZWFkeeBvbiB0aGUgY2FsbCBzdGFjay4gQ2FuIGJlIHRyaWdnZXJlZCBieSBgc2VhbF90ZXJtaW5hdGVgLjhJbnB1dEZvcndhcmRlZAAOBEEBYHNlYWxfY2FsbGAgZm9yd2FyZGVkIHRoaXMgY29udHJhY3RzIGlucHV0LiBJdCB0aGVyZWZvcmUgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS40VG9vTWFueVRvcGljcwAPBB0BVGhlIGFtb3VudCBvZiB0b3BpY3MgcGFzc2VkIHRvIGBzZWFsX2RlcG9zaXRfZXZlbnRzYCBleGNlZWRzIHRoZSBsaW1pdC5ERHVwbGljYXRlQ29udHJhY3QAEgTIQSBjb250cmFjdCB3aXRoIHRoZSBzYW1lIEFjY291bnRJZCBhbHJlYWR5IGV4aXN0cy5cVGVybWluYXRlZEluQ29uc3RydWN0b3IAEwy4QSBjb250cmFjdCBzZWxmIGRlc3RydWN0ZWQgaW4gaXRzIGNvbnN0cnVjdG9yLgDQVGhpcyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgY2FsbCB0byBgc2VhbF90ZXJtaW5hdGVgLkBSZWVudHJhbmNlRGVuaWVkABQEDQFBIGNhbGwgdHJpZWQgdG8gaW52b2tlIGEgY29udHJhY3QgdGhhdCBpcyBmbGFnZ2VkIGFzIG5vbi1yZWVudHJhbnQuPFJlZW50ZXJlZFBhbGxldAAVBC0BQSBjb250cmFjdCBjYWxsZWQgaW50byB0aGUgcnVudGltZSB3aGljaCB0aGVuIGNhbGxlZCBiYWNrIGludG8gdGhpcyBwYWxsZXQuRFN0YXRlQ2hhbmdlRGVuaWVkABYETQFBIGNvbnRyYWN0IGF0dGVtcHRlZCB0byBpbnZva2UgYSBzdGF0ZSBtb2RpZnlpbmcgQVBJIHdoaWxlIGJlaW5nIGluIHJlYWQtb25seSBtb2RlLnBTdG9yYWdlRGVwb3NpdE5vdEVub3VnaEZ1bmRzABcEIQFPcmlnaW4gZG9lc24ndCBoYXZlIGVub3VnaCBiYWxhbmNlIHRvIHBheSB0aGUgcmVxdWlyZWQgc3RvcmFnZSBkZXBvc2l0cy5wU3RvcmFnZURlcG9zaXRMaW1pdEV4aGF1c3RlZAAYBA0BTW9yZSBzdG9yYWdlIHdhcyBjcmVhdGVkIHRoYW4gYWxsb3dlZCBieSB0aGUgc3RvcmFnZSBkZXBvc2l0IGxpbWl0LiRDb2RlSW5Vc2UAGQRJAUNvZGUgcmVtb3ZhbCB3YXMgZGVuaWVkIGJlY2F1c2UgdGhlIGNvZGUgaXMgc3RpbGwgaW4gdXNlIGJ5IGF0IGxlYXN0IG9uZSBjb250cmFjdC5AQ29udHJhY3RSZXZlcnRlZAAaECUBVGhlIGNvbnRyYWN0IHJhbiB0byBjb21wbGV0aW9uIGJ1dCBkZWNpZGVkIHRvIHJldmVydCBpdHMgc3RvcmFnZSBjaGFuZ2VzLkkBUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGVycm9yIGlzIG9ubHkgcmV0dXJuZWQgZnJvbSBleHRyaW5zaWNzLiBXaGVuIGNhbGxlZCBkaXJlY3RseV0Bb3IgdmlhIFJQQyBhbiBgT2tgIHdpbGwgYmUgcmV0dXJuZWQuIEluIHRoaXMgY2FzZSB0aGUgY2FsbGVyIG5lZWRzIHRvIGluc3BlY3QgdGhlIGZsYWdzxHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmV2ZXJzaW9uIGhhcyB0YWtlbiBwbGFjZS4wQ29kZVJlamVjdGVkABsQGQFUaGUgY29udHJhY3QgZmFpbGVkIHRvIGNvbXBpbGUgb3IgaXMgbWlzc2luZyB0aGUgY29ycmVjdCBlbnRyeSBwb2ludHMuAFEBQSBtb3JlIGRldGFpbGVkIGVycm9yIGNhbiBiZSBmb3VuZCBvbiB0aGUgbm9kZSBjb25zb2xlIGlmIGRlYnVnIG1lc3NhZ2VzIGFyZSBlbmFibGVknGJ5IHN1cHBseWluZyBgLWxydW50aW1lOjpyZXZpdmU9ZGVidWdgLjBCbG9iVG9vTGFyZ2UAHAQNAVRoZSBjb2RlIGJsb2Igc3VwcGxpZWQgaXMgbGFyZ2VyIHRoYW4gW2BsaW1pdHM6OmNvZGU6OkJMT0JfQllURVNgXS5QU3RhdGljTWVtb3J5VG9vTGFyZ2UAHQTgVGhlIGNvbnRyYWN0IGRlY2xhcmVzIHRvbyBtdWNoIG1lbW9yeSAocm8gKyBydyArIHN0YWNrKS5IQmFzaWNCbG9ja1Rvb0xhcmdlAB4E/FRoZSBwcm9ncmFtIGNvbnRhaW5zIGEgYmFzaWMgYmxvY2sgdGhhdCBpcyBsYXJnZXIgdGhhbiBhbGxvd2VkLkhJbnZhbGlkSW5zdHJ1Y3Rpb24AHwSwVGhlIHByb2dyYW0gY29udGFpbnMgYW4gaW52YWxpZCBpbnN0cnVjdGlvbi54TWF4RGVsZWdhdGVEZXBlbmRlbmNpZXNSZWFjaGVkACAEFQFUaGUgY29udHJhY3QgaGFzIHJlYWNoZWQgaXRzIG1heGltdW0gbnVtYmVyIG9mIGRlbGVnYXRlIGRlcGVuZGVuY2llcy5oRGVsZWdhdGVEZXBlbmRlbmN5Tm90Rm91bmQAIQQVAVRoZSBkZXBlbmRlbmN5IHdhcyBub3QgZm91bmQgaW4gdGhlIGNvbnRyYWN0J3MgZGVsZWdhdGUgZGVwZW5kZW5jaWVzLnxEZWxlZ2F0ZURlcGVuZGVuY3lBbHJlYWR5RXhpc3RzACIE+FRoZSBjb250cmFjdCBhbHJlYWR5IGRlcGVuZHMgb24gdGhlIGdpdmVuIGRlbGVnYXRlIGRlcGVuZGVuY3kuhENhbm5vdEFkZFNlbGZBc0RlbGVnYXRlRGVwZW5kZW5jeQAjBCkBQ2FuIG5vdCBhZGQgYSBkZWxlZ2F0ZSBkZXBlbmRlbmN5IHRvIHRoZSBjb2RlIGhhc2ggb2YgdGhlIGNvbnRyYWN0IGl0c2VsZi5UT3V0T2ZUcmFuc2llbnRTdG9yYWdlACQErENhbiBub3QgYWRkIG1vcmUgZGF0YSB0byB0cmFuc2llbnQgc3RvcmFnZS44SW52YWxpZFN5c2NhbGwAJQRVAVRoZSBjb250cmFjdCB0cmllZCB0byBjYWxsIGEgc3lzY2FsbCB3aGljaCBkb2VzIG5vdCBleGlzdCAoYXQgaXRzIGN1cnJlbnQgYXBpIGxldmVsKS5MSW52YWxpZFN0b3JhZ2VGbGFncwAmBAUBSW52YWxpZCBzdG9yYWdlIGZsYWdzIHdlcmUgcGFzc2VkIHRvIG9uZSBvZiB0aGUgc3RvcmFnZSBzeXNjYWxscy48RXhlY3V0aW9uRmFpbGVkACcEKQFQb2xrYVZNIGZhaWxlZCBkdXJpbmcgY29kZSBleGVjdXRpb24uIFByb2JhYmx5IGR1ZSB0byBhIG1hbGZvcm1lZCBwcm9ncmFtLlxCYWxhbmNlQ29udmVyc2lvbkZhaWxlZAAoBJhGYWlsZWQgdG8gY29udmVydCBhIFUyNTYgdG8gYSBCYWxhbmNlLlhJbnZhbGlkSW1tdXRhYmxlQWNjZXNzACoIMQFJbW11dGFibGUgZGF0YSBjYW4gb25seSBiZSBzZXQgZHVyaW5nIGRlcGxveXMgYW5kIG9ubHkgYmUgcmVhZCBkdXJpbmcgY2FsbHMuNQFBZGRpdGlvbmFsbHksIGl0IGlzIG9ubHkgdmFsaWQgdG8gc2V0IHRoZSBkYXRhIG9uY2UgYW5kIGl0IG11c3Qgbm90IGJlIGVtcHR5LjxBY2NvdW50VW5tYXBwZWQAKwxRAUFuIGBBY2NvdW50SUQzMmAgYWNjb3VudCB0cmllZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBwYWxsZXQgd2l0aG91dCBoYXZpbmcgYSBtYXBwaW5nLgApAUNhbGwgW2BQYWxsZXQ6Om1hcF9hY2NvdW50YF0gaW4gb3JkZXIgdG8gY3JlYXRlIGEgbWFwcGluZyBmb3IgdGhlIGFjY291bnQuUEFjY291bnRBbHJlYWR5TWFwcGVkACwEvFRyaWVkIHRvIG1hcCBhbiBhY2NvdW50IHRoYXQgaXMgYWxyZWFkeSBtYXBwZWQuZEludmFsaWRHZW5lcmljVHJhbnNhY3Rpb24ALQTYVGhlIHRyYW5zYWN0aW9uIHVzZWQgdG8gZHJ5LXJ1biBhIGNvbnRyYWN0IGlzIGludmFsaWQuXFJlZmNvdW50T3Zlck9yVW5kZXJmbG93AC4EyFRoZSByZWZjb3VudCBvZiBhIGNvZGUgZWl0aGVyIG92ZXIgb3IgdW5kZXJmbG93ZWQucFVuc3VwcG9ydGVkUHJlY29tcGlsZUFkZHJlc3MALwR8VW5zdXBwb3J0ZWQgcHJlY29tcGlsZSBhZGRyZXNzLkBDYWxsRGF0YVRvb0xhcmdlADAEwFRoZSBjYWxsZGF0YSBleGNlZWRzIFtgbGltaXRzOjpDQUxMREFUQV9CWVRFU2BdLkhSZXR1cm5EYXRhVG9vTGFyZ2UAMQTMVGhlIHJldHVybiBkYXRhIGV4Y2VlZHMgW2BsaW1pdHM6OkNBTExEQVRBX0JZVEVTYF0uLEludmFsaWRKdW1wADIEOQFJbnZhbGlkIGp1bXAgZGVzdGluYXRpb24uIER5bmFtaWMganVtcHMgcG9pbnRzIHRvIGludmFsaWQgbm90IGp1bXBkZXN0IG9wY29kZS44U3RhY2tVbmRlcmZsb3cAMwS4QXR0ZW1wdGluZyB0byBwb3AgYSB2YWx1ZSBmcm9tIGFuIGVtcHR5IHN0YWNrLjRTdGFja092ZXJmbG93ADQEtEF0dGVtcHRpbmcgdG8gcHVzaCBhIHZhbHVlIG9udG8gYSBmdWxsIHN0YWNrLjRUeEZlZU92ZXJkcmF3ADUMEQFUb28gbXVjaCBkZXBvc2l0IHdhcyBkcmF3biBmcm9tIHRoZSBzaGFyZWQgdHhmZWUgYW5kIGRlcG9zaXQgY3JlZGl0LgAxAVRoaXMgaGFwcGVucyBpZiB0aGUgcGFzc2VkIGBnYXNgIGluc2lkZSB0aGUgZXRoZXJldW0gdHJhbnNhY3Rpb24gaXMgdG9vIGxvdy5oRXZtQ29uc3RydWN0b3JOb25FbXB0eURhdGEANgzcV2hlbiBjYWxsaW5nIGFuIEVWTSBjb25zdHJ1Y3RvciBgZGF0YWAgaGFzIHRvIGJlIGVtcHR5LgBZAUVWTSBjb25zdHJ1Y3RvcnMgZG8gbm90IGFjY2VwdCBkYXRhLiBUaGVpciBpbnB1dCBkYXRhIGlzIHBhcnQgb2YgdGhlIGNvZGUgYmxvYiBpdHNlbGYuWEV2bUNvbnN0cnVjdGVkRnJvbUhhc2gANxDEVHJpZWQgdG8gY29uc3RydWN0IGFuIEVWTSBjb250cmFjdCB2aWEgY29kZSBoYXNoLgAhAUVWTSBjb250cmFjdHMgY2FuIG9ubHkgYmUgaW5zdGFudGlhdGVkIHZpYSBjb2RlIHVwbG9hZCBhcyBubyBpbml0Y29kZSBpc0BzdG9yZWQgb24tY2hhaW4ubFN0b3JhZ2VSZWZ1bmROb3RFbm91Z2hGdW5kcwA4DCEBVGhlIGNvbnRyYWN0IGRvZXMgbm90IGhhdmUgZW5vdWdoIGJhbGFuY2UgdG8gcmVmdW5kIHRoZSBzdG9yYWdlIGRlcG9zaXQuAD0BVGhpcyBpcyBhIGJ1ZyBhbmQgc2hvdWxkIG5ldmVyIGhhcHBlbi4gSXQgbWVhbnMgdGhlIGFjY291bnRpbmcgZ290IG91dCBvZiBzeW5jLkxTdG9yYWdlUmVmdW5kTG9ja2VkADkQXQFUaGlzIG1lYW5zIHRoZXJlIGFyZSBsb2NrcyBvbiB0aGUgY29udHJhY3RzIHN0b3JhZ2UgZGVwb3NpdCB0aGF0IHByZXZlbnRzIHJlZnVuZGluZyBpdC4APQFUaGlzIHdvdWxkIGJlIHRoZSBjYXNlIGlmIHRoZSBjb250cmFjdCB1c2VkIGl0cyBzdG9yYWdlIGRlcG9zaXRzIGZvciBnb3Zlcm5hbmNl9G9yIG90aGVyIHBhbGxldHMgdGhhdCBhbGxvdyBjcmVhdGluZyBsb2NrcyBvdmVyIGhlbGQgYmFsYW5jZS5gUHJlY29tcGlsZURlbGVnYXRlRGVuaWVkAEAQ/ENhbGxlZCBhIHByZS1jb21waWxlIHRoYXQgaXMgbm90IGFsbG93ZWQgdG8gYmUgZGVsZWdhdGUgY2FsbGVkLgAlAVNvbWUgcHJlLWNvbXBpbGUgZnVuY3Rpb25zIHdpbGwgdHJhcCB0aGUgY2FsbGVyIGNvbnRleHQgaWYgYmVpbmcgZGVsZWdhdGXQY2FsbGVkIG9yIGlmIHRoZWlyIGNhbGxlciB3YXMgYmVpbmcgZGVsZWdhdGUgY2FsbGVkLkxFY2RzYVJlY292ZXJ5RmFpbGVkAEEEPQFFQ0RTQSBwdWJsaWMga2V5IHJlY292ZXJ5IGZhaWxlZC4gTW9zdCBwcm9iYWJseSB3cm9uZyByZWNvdmVyeSBpZCBvciBzaWduYXR1cmUuSEF1dG9NYXBwaW5nRW5hYmxlZABCBOBNYW51YWwgbWFwcGluZyBpcyBkaXNhYmxlZCB3aGVuIGF1dG8tbWFwcGluZyBpcyBlbmFibGVkLlRQZW5kaW5nRGVwb3NpdENsZWFudXAAQwwRAUEgY29udHJhY3QgY2Fubm90IGJlIGNyZWF0ZWQgYXQgdGhpcyBhZGRyZXNzOiBpdCBzdGlsbCBoYXMgdW5jbGVhcmVkTQFbYE5hdGl2ZURlcG9zaXRPZmBdIGVudHJpZXMgZnJvbSBhIHByZXZpb3VzbHkgdGVybWluYXRlZCBjb250cmFjdCB0aGF0IHRoZSBkZWxldGlvbmhxdWV1ZSBoYXMgbm90IHlldCBkcmFpbmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6VDwAABAj9Bv0GAJkPEGRwYWxsZXRfYXNzZXRzX3ByZWNvbXBpbGVzGHBlcm1pdBhwYWxsZXQURXJyb3IEBFQAASBASW52YWxpZFNpZ25hdHVyZQAABIBUaGUgcGVybWl0IHNpZ25hdHVyZSBpcyBpbnZhbGlkLjhTaWduZXJNaXNtYXRjaAABBJBUaGUgc2lnbmVyIGRvZXMgbm90IG1hdGNoIHRoZSBvd25lci40UGVybWl0RXhwaXJlZAACBKRUaGUgcGVybWl0IGhhcyBleHBpcmVkIChkZWFkbGluZSBwYXNzZWQpLlhTaWduYXR1cmVTVmFsdWVUb29IaWdoAAMEAQFUaGUgc2lnbmF0dXJlJ3MgYHNgIHZhbHVlIGlzIHRvbyBoaWdoIChtYWxsZWFiaWxpdHkgcHJvdGVjdGlvbikuNEludmFsaWRWVmFsdWUABASUVGhlIHNpZ25hdHVyZSdzIGB2YCB2YWx1ZSBpcyBpbnZhbGlkLjROb25jZU92ZXJmbG93AAUEzE5vbmNlIG92ZXJmbG93IC0gYWNjb3VudCBoYXMgdXNlZCB0b28gbWFueSBwZXJtaXRzLjBJbnZhbGlkT3duZXIABgTIVGhlIG93bmVyIGFkZHJlc3MgaXMgaW52YWxpZCAoZS5nLiwgemVybyBhZGRyZXNzKS44SW52YWxpZFNwZW5kZXIABwTQVGhlIHNwZW5kZXIgYWRkcmVzcyBpcyBpbnZhbGlkIChlLmcuLCB6ZXJvIGFkZHJlc3MpLgSIRXJyb3IgdHlwZXMgZm9yIHRoZSBwZXJtaXQgcGFsbGV0Lp0PAAAEDDigBAChDww0cGFsbGV0X2FoX29wcxhwYWxsZXQURXJyb3IEBFQAATw4Tm9MZWFzZVJlc2VydmUAAAS4RWl0aGVyIG5vIGxlYXNlIGRlcG9zaXQgb3IgYWxyZWFkeSB1bnJlc2VydmVkLlxOb0Nyb3dkbG9hbkNvbnRyaWJ1dGlvbgABBNhFaXRoZXIgbm8gY3Jvd2Rsb2FuIGNvbnRyaWJ1dGlvbiBvciBhbHJlYWR5IHdpdGhkcmF3bi5ITm9Dcm93ZGxvYW5SZXNlcnZlAAIEyEVpdGhlciBubyBjcm93ZGxvYW4gcmVzZXJ2ZSBvciBhbHJlYWR5IHVucmVzZXJ2ZWQulEZhaWxlZFRvV2l0aGRyYXdDcm93ZGxvYW5Db250cmlidXRpb24AAwSoRmFpbGVkIHRvIHdpdGhkcmF3IGNyb3dkbG9hbiBjb250cmlidXRpb24uGE5vdFlldAAEBIBCbG9jayBudW1iZXIgaXMgbm90IHlldCByZWFjaGVkLlhDb250cmlidXRpb25zUmVtYWluaW5nAAUEkE5vdCBhbGwgY29udHJpYnV0aW9ucyBhcmUgd2l0aGRyYXduLlxXcm9uZ0Rlcml2ZWRUcmFuc2xhdGlvbgAGBJRUaGUgYWNjb3VudCBpcyBub3QgYSBkZXJpdmVkIGFjY291bnQuME5vdFNvdmVyZWlnbgAHBCUBQWNjb3VudCBjYW5ub3QgYmUgbWlncmF0ZWQgc2luY2UgaXQgaXMgbm90IGEgc292ZXJlaWduIHBhcmFjaGFpbiBhY2NvdW50LjRJbnRlcm5hbEVycm9yAAgEiEludGVybmFsIGVycm9yLCBwbGVhc2UgYnVnIHJlcG9ydC5UTWlncmF0aW9uTm90Q29tcGxldGVkAAkEpFRoZSBBc3NldCBIdWIgbWlncmF0aW9uIGlzIG5vdCBjb21wbGV0ZWQuLFplcm9CYWxhbmNlAAoEUFRoZSBiYWxhbmNlIGlzIHplcm8uQEZhaWxlZFRvVHJhbnNmZXIACwRsRmFpbGVkIHRvIHRyYW5zZmVyIGJhbGFuY2UuREFscmVhZHlUcmFuc2xhdGVkAAwEoFRoZSBhY2NvdW50IGhhcyBhbHJlYWR5IGJlZW4gdHJhbnNsYXRlZC5UVG9vTG9uZ0Rlcml2YXRpb25QYXRoAA0EgFRoZSBkZXJpdmF0aW9uIHBhdGggaXMgdG9vIGxvbmcuUEZhaWxlZFRvRm9yY2VVbnN0YWtlAA4EYEZhaWxlZCB0byBmb3JjZSB1bnN0YWtlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6lDwhIc3BfY29uc2Vuc3VzX3Nsb3RzMFNsb3REdXJhdGlvbgAABAAoAQx1NjQAAKkPEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2skTGF6eUJsb2NrCBhIZWFkZXIBYCRFeHRyaW5zaWMBXQkACAEYaGVhZGVyYAEYSGVhZGVyAAEoZXh0cmluc2ljc60PAVBWZWM8T3BhcXVlRXh0cmluc2ljPgAArQ8AAAKxDwCxDwgoc3BfcnVudGltZTxPcGFxdWVFeHRyaW5zaWMAAAQAGAEcVmVjPHU4PgAAtQ8IKHNwX3J1bnRpbWVYRXh0cmluc2ljSW5jbHVzaW9uTW9kZQABCDRBbGxFeHRyaW5zaWNzAAAANE9ubHlJbmhlcmVudHMAAQAAuQ8IHHNwX2NvcmU4T3BhcXVlTWV0YWRhdGEAAAQAGAEcVmVjPHU4PgAAvQ8EGE9wdGlvbgQEVAG5DwEIEE5vbmUAAAAQU29tZQQAuQ8AAAEAAMEPBBhSZXN1bHQIBFQBnQcERQHFDwEICE9rBACdBwAAAAAMRXJyBADFDwAAAQAAxQ8MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAMkPAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQAzQ8BSFVua25vd25UcmFuc2FjdGlvbgABAADJDwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AATQQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAwBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAFRJbmRldGVybWluYXRlSW1wbGljaXQACwA0VW5rbm93bk9yaWdpbgAMAADNDwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAMAQh1OAACAADRDwgwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0YdUPAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AADVDwQgQlRyZWVNYXAIBEsBeQIEVgEYAAQA2Q8AAADZDwAAAt0PAN0PAAAECHkCGADhDwgwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5XQEBEGJvb2wAASxmYXRhbF9lcnJvcl0BARBib29sAAEYZXJyb3Jz0Q8BMEluaGVyZW50RGF0YQAA5Q8MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlEVHJhbnNhY3Rpb25Tb3VyY2UAAQwcSW5CbG9jawAAABRMb2NhbAABACBFeHRlcm5hbAACAADpDwQYUmVzdWx0CARUAe0PBEUBxQ8BCAhPawQA7Q8AAAAADEVycgQAxQ8AAAEAAO0PDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5QFZhbGlkVHJhbnNhY3Rpb24AABQBIHByaW9yaXR5KAFMVHJhbnNhY3Rpb25Qcmlvcml0eQABIHJlcXVpcmVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABIHByb3ZpZGVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eSgBUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlXQEBEGJvb2wAAPEPDChzcF9zZXNzaW9uLHJ1bnRpbWVfYXBpaE9wYXF1ZUdlbmVyYXRlZFNlc3Npb25LZXlzAAAIARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgAA9Q8EGE9wdGlvbgQEVAH5DwEIEE5vbmUAAAAQU29tZQQA+Q8AAAEAAPkPAAAC/Q8A/Q8AAAQIGNUKAAEQDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zOFZpZXdGdW5jdGlvbklkAAAIARhwcmVmaXh9AgEgW3U4OyAxNl0AARhzdWZmaXh9AgEgW3U4OyAxNl0AAAUQBBhSZXN1bHQIBFQBGARFAQkQAQgIT2sEABgAAAAADEVycgQACRAAAAEAAAkQDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zZFZpZXdGdW5jdGlvbkRpc3BhdGNoRXJyb3IAAQw4Tm90SW1wbGVtZW50ZWQAAAAgTm90Rm91bmQEAAEQAThWaWV3RnVuY3Rpb25JZAABABRDb2RlYwACAAANEAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXNMUnVudGltZURpc3BhdGNoSW5mbwgcQmFsYW5jZQFZARhXZWlnaHQBFQEADAEYd2VpZ2h0FQEBGFdlaWdodAABFGNsYXNzcQcBNERpc3BhdGNoQ2xhc3MAASxwYXJ0aWFsX2ZlZVkBARxCYWxhbmNlAAAREAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMoRmVlRGV0YWlscwQcQmFsYW5jZQFZAQAIATRpbmNsdXNpb25fZmVlFRABdE9wdGlvbjxJbmNsdXNpb25GZWU8QmFsYW5jZT4+AAEMdGlwWQEBHEJhbGFuY2UAABUQBBhPcHRpb24EBFQBGRABCBBOb25lAAAAEFNvbWUEABkQAAABAAAZEAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMwSW5jbHVzaW9uRmVlBBxCYWxhbmNlAVkBAAwBIGJhc2VfZmVlWQEBHEJhbGFuY2UAARxsZW5fZmVlWQEBHEJhbGFuY2UAAUxhZGp1c3RlZF93ZWlnaHRfZmVlWQEBHEJhbGFuY2UAAB0QBBhSZXN1bHQIBFQBIRAERQElEAEICE9rBAAhEAAAAAAMRXJyBAAlEAAAAQAAIRAAAALBAwAlEAxAeGNtX3J1bnRpbWVfYXBpcxBmZWVzFEVycm9yAAEYNFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAExXZWlnaHROb3RDb21wdXRhYmxlAAIATFVuaGFuZGxlZFhjbVZlcnNpb24AAwA0QXNzZXROb3RGb3VuZAAEAChVbnJvdXRhYmxlAAUAACkQBBhSZXN1bHQIBFQBFQEERQElEAEICE9rBAAVAQAAAAAMRXJyBAAlEAAAAQAALRAEGFJlc3VsdAgEVAFZAQRFASUQAQgIT2sEAFkBAAAAAAxFcnIEACUQAAABAAAxEAQYUmVzdWx0CARUAY0DBEUBJRABCAhPawQAjQMAAAAADEVycgQAJRAAAAEAADUQBBhSZXN1bHQIBFQBORAERQFREAEICE9rBAA5EAAAAAAMRXJyBABREAAAAQAAORAMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkRDYWxsRHJ5UnVuRWZmZWN0cwQURXZlbnQBZQcAEAFAZXhlY3V0aW9uX3Jlc3VsdKUIAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwABOGVtaXR0ZWRfZXZlbnRzPRABKFZlYzxFdmVudD4AASRsb2NhbF94Y21BEAFgT3B0aW9uPFZlcnNpb25lZFhjbTwoKT4+AAE4Zm9yd2FyZGVkX3hjbXNFEAG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAD0QAAACZQcAQRAEGE9wdGlvbgQEVAFRAgEIEE5vbmUAAAAQU29tZQQAUQIAAAEAAEUQAAACSRAASRAAAAQIyQFNEABNEAAAAlECAFEQDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAFUQBBhSZXN1bHQIBFQBWRAERQFREAEICE9rBABZEAAAAAAMRXJyBABREAAAAQAAWRAMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAFlBwAMAUBleGVjdXRpb25fcmVzdWx0MQgBHE91dGNvbWUAAThlbWl0dGVkX2V2ZW50cz0QAShWZWM8RXZlbnQ+AAE4Zm9yd2FyZGVkX3hjbXNFEAG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAF0QBBhSZXN1bHQIBFQBBARFAWEQAQgIT2sEAAQAAAAADEVycgQAYRAAAAEAAGEQDEB4Y21fcnVudGltZV9hcGlzLGNvbnZlcnNpb25zFEVycm9yAAEILFVuc3VwcG9ydGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAAZRAIDHhjbThWZXJzaW9uZWRBc3NldAABDAhWMwQAaQIBOHYzOjpNdWx0aUFzc2V0AAMACFY0BADdAgEkdjQ6OkFzc2V0AAQACFY1BAApAwEkdjU6OkFzc2V0AAUAAGkQBBhSZXN1bHQIBFQBXQEERQFtEAEICE9rBABdAQAAAAAMRXJyBABtEAAAAQAAbRAMQHhjbV9ydW50aW1lX2FwaXM0dHJ1c3RlZF9xdWVyeRRFcnJvcgABCHhWZXJzaW9uZWRBc3NldENvbnZlcnNpb25GYWlsZWQAAACEVmVyc2lvbmVkTG9jYXRpb25Db252ZXJzaW9uRmFpbGVkAAEAAHEQBBhSZXN1bHQIBFQBeQsERQF1EAEICE9rBAB5CwAAAAAMRXJyBAB1EAAAAQAAdRAMQHhjbV9ydW50aW1lX2FwaXNIYXV0aG9yaXplZF9hbGlhc2VzFEVycm9yAAEEfExvY2F0aW9uVmVyc2lvbkNvbnZlcnNpb25GYWlsZWQAAAAAeRAEGFJlc3VsdAgEVAFdAQRFAXUQAQgIT2sEAF0BAAAAAAxFcnIEAHUQAAABAAB9EAQYUmVzdWx0CARUAY0DBEUBgRABCAhPawQAjQMAAAAADEVycgQAgRAAAAEAAIEQDDRhc3NldHNfY29tbW9uLHJ1bnRpbWVfYXBpUEZ1bmdpYmxlc0FjY2Vzc0Vycm9yAAEIXEFzc2V0SWRDb252ZXJzaW9uRmFpbGVkAAAAfEFtb3VudFRvQmFsYW5jZUNvbnZlcnNpb25GYWlsZWQAAQAAhRAIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlNENvbGxhdGlvbkluZm8AABgBPHVwd2FyZF9tZXNzYWdlczQBSFZlYzxVcHdhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXPRCQFgVmVjPE91dGJvdW5kSHJtcE1lc3NhZ2U+AAFMbmV3X3ZhbGlkYXRpb25fY29kZYkQAYxPcHRpb248cmVsYXlfY2hhaW46OlZhbGlkYXRpb25Db2RlPgABbHByb2Nlc3NlZF9kb3dud2FyZF9tZXNzYWdlczgBDHUzMgABOGhybXBfd2F0ZXJtYXJrOAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAEkaGVhZF9kYXRhUAEgSGVhZERhdGEAAIkQBBhPcHRpb24EBFQBjRABCBBOb25lAAAAEFNvbWUEAI0QAAABAACNEAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczhWYWxpZGF0aW9uQ29kZQAABAAYARxWZWM8dTg+AACREAQYUmVzdWx0CARUARAERQElCQEICE9rBAAQAAAAAAxFcnIEACUJAAABAACVEAQYT3B0aW9uBARUASUJAQgQTm9uZQAAABBTb21lBAAlCQAAAQAAmRAAAAIlCQCdEAQYT3B0aW9uBARUAckMAQgQTm9uZQAAABBTb21lBADJDAAAAQAAoRAMYHN5c3RlbV9wYXJhY2hhaW5zX2NvbW1vbhBhcGlzNEluZmxhdGlvbkluZm8AAAgBIGlzc3VhbmNlpRABXHNwX3J1bnRpbWU6OlBlcnF1aW50aWxsAAEkbmV4dF9taW50yQwB8Chwb2xrYWRvdF9wcmltaXRpdmVzOjpCYWxhbmNlLCBwb2xrYWRvdF9wcmltaXRpdmVzOjpCYWxhbmNlKQAApRAMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncyxQZXJxdWludGlsbAAABAAoAQx1NjQAAKkQDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXM4Q29udHJhY3RSZXN1bHQIBFIBrRAcQmFsYW5jZQFZAQAYATx3ZWlnaHRfY29uc3VtZWQVAQEYV2VpZ2h0AAE8d2VpZ2h0X3JlcXVpcmVkFQEBGFdlaWdodAABPHN0b3JhZ2VfZGVwb3NpdLUQAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABTG1heF9zdG9yYWdlX2RlcG9zaXS1EAFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AATBnYXNfY29uc3VtZWRZAQEcQmFsYW5jZQABGHJlc3VsdLkQAWBSZXN1bHQ8UiwgRGlzcGF0Y2hFcnJvcj4AAK0QDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXM8RXhlY1JldHVyblZhbHVlAAAIARRmbGFnc7EQASxSZXR1cm5GbGFncwABEGRhdGEYARxWZWM8dTg+AACxEAxIcGFsbGV0X3Jldml2ZV91YXBpFGZsYWdzLFJldHVybkZsYWdzAAAEARBiaXRzOAEMdTMyAAC1EAw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOFN0b3JhZ2VEZXBvc2l0BBxCYWxhbmNlAVkBAQgYUmVmdW5kBABZAQEcQmFsYW5jZQAAABhDaGFyZ2UEAFkBARxCYWxhbmNlAAEAALkQBBhSZXN1bHQIBFQBrRAERQF5BwEICE9rBACtEAAAAAAMRXJyBAB5BwAAAQAAvRAMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlcxBDb2RlAAEIGFVwbG9hZAQAGAEcVmVjPHU4PgAAACBFeGlzdGluZwQAQAE0c3BfY29yZTo6SDI1NgABAADBEAw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOENvbnRyYWN0UmVzdWx0CARSAcUQHEJhbGFuY2UBWQEAGAE8d2VpZ2h0X2NvbnN1bWVkFQEBGFdlaWdodAABPHdlaWdodF9yZXF1aXJlZBUBARhXZWlnaHQAATxzdG9yYWdlX2RlcG9zaXS1EAFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AAUxtYXhfc3RvcmFnZV9kZXBvc2l0tRABXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAEwZ2FzX2NvbnN1bWVkWQEBHEJhbGFuY2UAARhyZXN1bHTJEAFgUmVzdWx0PFIsIERpc3BhdGNoRXJyb3I+AADFEAw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzWEluc3RhbnRpYXRlUmV0dXJuVmFsdWUAAAgBGHJlc3VsdK0QATxFeGVjUmV0dXJuVmFsdWUAARBhZGRy/QYBEEgxNjAAAMkQBBhSZXN1bHQIBFQBxRAERQF5BwEICE9rBADFEAAAAAAMRXJyBAB5BwAAAQAAzRAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuSEdlbmVyaWNUcmFuc2FjdGlvbgAAQAEsYWNjZXNzX2xpc3TREAFIT3B0aW9uPEFjY2Vzc0xpc3Q+AAFIYXV0aG9yaXphdGlvbl9saXN0RQ8BbFZlYzxBdXRob3JpemF0aW9uTGlzdEVudHJ5PgABVGJsb2JfdmVyc2lvbmVkX2hhc2hlc8QBJFZlYzxIMjU2PgABFGJsb2Jz1RABKFZlYzxCeXRlcz4AASBjaGFpbl9pZCEPATBPcHRpb248VTI1Nj4AARBmcm9tXQ8BPE9wdGlvbjxBZGRyZXNzPgABDGdhcyEPATBPcHRpb248VTI1Nj4AASRnYXNfcHJpY2UhDwEwT3B0aW9uPFUyNTY+AAEUaW5wdXTZEAEsSW5wdXRPckRhdGEAAVBtYXhfZmVlX3Blcl9ibG9iX2dhcyEPATBPcHRpb248VTI1Nj4AATxtYXhfZmVlX3Blcl9nYXMhDwEwT3B0aW9uPFUyNTY+AAFgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzIQ8BME9wdGlvbjxVMjU2PgABFG5vbmNlIQ8BME9wdGlvbjxVMjU2PgABCHRvXQ8BPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZeEQATBPcHRpb248Qnl0ZT4AARR2YWx1ZSEPATBPcHRpb248VTI1Nj4AANEQBBhPcHRpb24EBFQBPQ8BCBBOb25lAAAAEFNvbWUEAD0PAAABAADVEAAAAhEPANkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbixJbnB1dE9yRGF0YQAACAEUaW5wdXTdEAE0T3B0aW9uPEJ5dGVzPgABEGRhdGHdEAE0T3B0aW9uPEJ5dGVzPgAA3RAEGE9wdGlvbgQEVAERDwEIEE5vbmUAAAAQU29tZQQAEQ8AAAEAAOEQBBhPcHRpb24EBFQB5RABCBBOb25lAAAAEFNvbWUEAOUQAAABAADlEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpEGJ5dGUQQnl0ZQAABAAMAQh1OAAA6RAEGFJlc3VsdAgEVAHtEARFAfEQAQgIT2sEAO0QAAAAAAxFcnIEAPEQAAABAADtEAw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzPEV0aFRyYW5zYWN0SW5mbwQcQmFsYW5jZQFZAQAUATx3ZWlnaHRfcmVxdWlyZWQVAQEYV2VpZ2h0AAE8c3RvcmFnZV9kZXBvc2l0WQEBHEJhbGFuY2UAAUxtYXhfc3RvcmFnZV9kZXBvc2l0WQEBHEJhbGFuY2UAARxldGhfZ2FzBQcBEFUyNTYAARBkYXRhGAEcVmVjPHU4PgAA8RAMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc0BFdGhUcmFuc2FjdEVycm9yAAEIEERhdGEEABgBHFZlYzx1OD4AAAAcTWVzc2FnZQQAJQkBGFN0cmluZwABAAD1EBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpJHJwY190eXBlczBEcnlSdW5Db25maWcEGE1vbWVudAEoAAwBSHRpbWVzdGFtcF9vdmVycmlkZQEBAThPcHRpb248TW9tZW50PgABWHBlcmZvcm1fYmFsYW5jZV9jaGVja3P5EAEwT3B0aW9uPGJvb2w+AAE8c3RhdGVfb3ZlcnJpZGVz/RABYE9wdGlvbjxTdGF0ZU92ZXJyaWRlU2V0PgAA+RAEGE9wdGlvbgQEVAFdAQEIEE5vbmUAAAAQU29tZQQAXQEAAAEAAP0QBBhPcHRpb24EBFQBAREBCBBOb25lAAAAEFNvbWUEAAERAAABAAABERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5AU3RhdGVPdmVycmlkZVNldAAABAAFEQGAQlRyZWVNYXA8QWRkcmVzcywgU3RhdGVPdmVycmlkZT4AAAURBCBCVHJlZU1hcAgESwH9BgRWAQkRAAQAIREAAAAJERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW40U3RhdGVPdmVycmlkZQAAFAEcYmFsYW5jZSEPATBPcHRpb248VTI1Nj4AARRub25jZSEPATBPcHRpb248VTI1Nj4AARBjb2Rl3RABNE9wdGlvbjxCeXRlcz4AARxzdG9yYWdlDREBXE9wdGlvbjxTdG9yYWdlT3ZlcnJpZGU+AAFobW92ZV9wcmVjb21waWxlX3RvX2FkZHJlc3NdDwE8T3B0aW9uPEFkZHJlc3M+AAANEQQYT3B0aW9uBARUARERAQgQTm9uZQAAABBTb21lBAAREQAAAQAAEREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuPFN0b3JhZ2VPdmVycmlkZQABCBRTdGF0ZQQAFREBUEJUcmVlTWFwPEgyNTYsIEgyNTY+AAAAJFN0YXRlRGlmZgQAFREBUEJUcmVlTWFwPEgyNTYsIEgyNTY+AAEAABURBCBCVHJlZU1hcAgESwFABFYBQAAEABkRAAAAGREAAAIdEQAdEQAABAhAQAAhEQAAAiURACURAAAECP0GCREAKREEGFJlc3VsdAgEVAEFBwRFAfEQAQgIT2sEAAUHAAAAAAxFcnIEAPEQAAABAAAtEQQYUmVzdWx0CARUARUBBEUB8RABCAhPawQAFQEAAAAADEVycgQA8RAAAAEAADERBBhSZXN1bHQIBFQBNREERQF5BwEICE9rBAA1EQAAAAAMRXJyBAB5BwAAAQAANREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1RDb2RlVXBsb2FkUmV0dXJuVmFsdWUEHEJhbGFuY2UBWQEACAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgABHGRlcG9zaXRZAQEcQmFsYW5jZQAAOREEGFJlc3VsdAgEVAFNAQRFAT0RAQgIT2sEAE0BAAAAAAxFcnIEAD0RAAABAAA9EQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzTENvbnRyYWN0QWNjZXNzRXJyb3IAAQwsRG9lc250RXhpc3QAAABES2V5RGVjb2RpbmdGYWlsZWQAAQBIU3RvcmFnZVdyaXRlRmFpbGVkBAB5BwE0RGlzcGF0Y2hFcnJvcgACAABBERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyhUcmFjZXJUeXBlAAEMKENhbGxUcmFjZXIEAEURAWBPcHRpb248Q2FsbFRyYWNlckNvbmZpZz4AAAA4UHJlc3RhdGVUcmFjZXIEAE0RAXBPcHRpb248UHJlc3RhdGVUcmFjZXJDb25maWc+AAEAPEV4ZWN1dGlvblRyYWNlcgQAVREBdE9wdGlvbjxFeGVjdXRpb25UcmFjZXJDb25maWc+AAIAAEURBBhPcHRpb24EBFQBSREBCBBOb25lAAAAEFNvbWUEAEkRAAABAABJERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc0BDYWxsVHJhY2VyQ29uZmlnAAAIASR3aXRoX2xvZ3NdAQEQYm9vbAABNG9ubHlfdG9wX2NhbGxdAQEQYm9vbAAATREEGE9wdGlvbgQEVAFREQEIEE5vbmUAAAAQU29tZQQAUREAAAEAAFERFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzUFByZXN0YXRlVHJhY2VyQ29uZmlnAAAMASRkaWZmX21vZGVdAQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZV0BARBib29sAAEwZGlzYWJsZV9jb2RlXQEBEGJvb2wAAFURBBhPcHRpb24EBFQBWREBCBBOb25lAAAAEFNvbWUEAFkRAAABAABZERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc1RFeGVjdXRpb25UcmFjZXJDb25maWcAABwBNGVuYWJsZV9tZW1vcnldAQEQYm9vbAABNGRpc2FibGVfc3RhY2tdAQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZV0BARBib29sAAFIZW5hYmxlX3JldHVybl9kYXRhXQEBEGJvb2wAAVxkaXNhYmxlX3N5c2NhbGxfZGV0YWlsc10BARBib29sAAEUbGltaXQBAQEsT3B0aW9uPHU2ND4AAURtZW1vcnlfd29yZF9saW1pdDgBDHUzMgAAXREAAAJhEQBhEQAABAg4ZREAZREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMUVHJhY2UAAQwQQ2FsbAQAaREBJENhbGxUcmFjZQAAACBQcmVzdGF0ZQQAfREBNFByZXN0YXRlVHJhY2UAAQAkRXhlY3V0aW9uBACdEQE4RXhlY3V0aW9uVHJhY2UAAgAAaREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMkQ2FsbFRyYWNlAAA0ARBmcm9t/QYBEEgxNjAAAQxnYXMoAQx1NjQAASBnYXNfdXNlZCgBDHU2NAABCHRv/QYBEEgxNjAAARRpbnB1dBEPARRCeXRlcwABGG91dHB1dBEPARRCeXRlcwABFGVycm9ylRABOE9wdGlvbjxTdHJpbmc+AAE0cmV2ZXJ0X3JlYXNvbpUQAThPcHRpb248U3RyaW5nPgABFGNhbGxzbREBOFZlYzxDYWxsVHJhY2U+AAEQbG9nc3ERATBWZWM8Q2FsbExvZz4AARR2YWx1ZSEPATBPcHRpb248VTI1Nj4AASRjYWxsX3R5cGV5EQEgQ2FsbFR5cGUAAUBjaGlsZF9jYWxsX2NvdW50OAEMdTMyAABtEQAAAmkRAHERAAACdREAdREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMcQ2FsbExvZwAAEAEcYWRkcmVzc/0GARBIMTYwAAEYdG9waWNzxAEkVmVjPEgyNTY+AAEQZGF0YREPARRCeXRlcwABIHBvc2l0aW9uOAEMdTMyAAB5ERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyBDYWxsVHlwZQABGBBDYWxsAAAAKFN0YXRpY0NhbGwAAQAwRGVsZWdhdGVDYWxsAAIAGENyZWF0ZQADABxDcmVhdGUyAAQAMFNlbGZkZXN0cnVjdAAFAAB9ERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlczRQcmVzdGF0ZVRyYWNlAAEIIFByZXN0YXRlBACBEQGEQlRyZWVNYXA8SDE2MCwgUHJlc3RhdGVUcmFjZUluZm8+AAAAIERpZmZNb2RlCAEMcHJlgREBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgABEHBvc3SBEQGEQlRyZWVNYXA8SDE2MCwgUHJlc3RhdGVUcmFjZUluZm8+AAEAAIERBCBCVHJlZU1hcAgESwH9BgRWAYURAAQAlREAAACFERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc0RQcmVzdGF0ZVRyYWNlSW5mbwAAEAEcYmFsYW5jZSEPATBPcHRpb248VTI1Nj4AARRub25jZeQBLE9wdGlvbjx1MzI+AAEQY29kZd0QATRPcHRpb248Qnl0ZXM+AAEcc3RvcmFnZYkRAXhCVHJlZU1hcDxCeXRlcywgT3B0aW9uPEJ5dGVzPj4AAIkRBCBCVHJlZU1hcAgESwERDwRWAd0QAAQAjREAAACNEQAAApERAJERAAAECBEP3RAAlREAAAKZEQCZEQAABAj9BoURAJ0RFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzOEV4ZWN1dGlvblRyYWNlAAAYAQxnYXMoAQx1NjQAATx3ZWlnaHRfY29uc3VtZWQVAQEYV2VpZ2h0AAFAYmFzZV9jYWxsX3dlaWdodBUBARhXZWlnaHQAARhmYWlsZWRdAQEQYm9vbAABMHJldHVybl92YWx1ZREPARRCeXRlcwABLHN0cnVjdF9sb2dzoREBSFZlYzxFeGVjdXRpb25TdGVwPgAAoREAAAKlEQClERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlczRFeGVjdXRpb25TdGVwAAAcAQxnYXO4AQx1NjQAASBnYXNfY29zdLgBDHU2NAABLHdlaWdodF9jb3N0FQEBGFdlaWdodAABFGRlcHRo7QMBDHUxNgABLHJldHVybl9kYXRhEQ8BFEJ5dGVzAAEUZXJyb3KVEAE4T3B0aW9uPFN0cmluZz4AARBraW5kqREBREV4ZWN1dGlvblN0ZXBLaW5kAACpERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc0RFeGVjdXRpb25TdGVwS2luZAABCCRFVk1PcGNvZGUUAQhwY2QBDHUzMgABCG9wDAEIdTgAARRzdGFja9UQAShWZWM8Qnl0ZXM+AAEYbWVtb3J51RABKFZlYzxCeXRlcz4AARxzdG9yYWdlrREByE9wdGlvbjxhbGxvYzo6Y29sbGVjdGlvbnM6OkJUcmVlTWFwPEJ5dGVzLCBCeXRlcz4+AAAAKFBWTVN5c2NhbGwMAQhvcAwBCHU4AAEQYXJncwEOASBWZWM8dTY0PgABIHJldHVybmVkAQEBLE9wdGlvbjx1NjQ+AAEAAK0RBBhPcHRpb24EBFQBsREBCBBOb25lAAAAEFNvbWUEALERAAABAACxEQQgQlRyZWVNYXAIBEsBEQ8EVgERDwAEALURAAAAtREAAAK5EQC5EQAABAgRDxEPAL0RBBhPcHRpb24EBFQBZREBCBBOb25lAAAAEFNvbWUEAGURAAABAADBEQQYUmVzdWx0CARUAWURBEUB8RABCAhPawQAZREAAAAADEVycgQA8RAAAAEAAMURFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkkcnBjX3R5cGVzNFRyYWNpbmdDb25maWcAAAQBPHN0YXRlX292ZXJyaWRlc/0QAWBPcHRpb248U3RhdGVPdmVycmlkZVNldD4AAMkRBBhSZXN1bHQIBFQBzREERQHREQEICE9rBADNEQAAAAAMRXJyBADREQAAAQAAzREAAAQIWQE4ANERDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNYQmFsYW5jZUNvbnZlcnNpb25FcnJvcgABCBRWYWx1ZQAAABBEdXN0AAEAANURCGhhc3NldF9odWJfcG9sa2Fkb3RfcnVudGltZTBSdW50aW1lRXJyb3IAAbQYU3lzdGVtBABVCQFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAOEJAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABACBQcmVpbWFnZQQABQoBfHBhbGxldF9wcmVpbWFnZTo6RXJyb3I8UnVudGltZT4ABQAkU2NoZWR1bGVyBAAdCgGAcGFsbGV0X3NjaGVkdWxlcjo6RXJyb3I8UnVudGltZT4ABgBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEACEKAYRwYWxsZXRfbWlncmF0aW9uczo6RXJyb3I8UnVudGltZT4ACQAgQmFsYW5jZXMEAHUKAXxwYWxsZXRfYmFsYW5jZXM6OkVycm9yPFJ1bnRpbWU+AAoAHFZlc3RpbmcEAJEKAXhwYWxsZXRfdmVzdGluZzo6RXJyb3I8UnVudGltZT4ADgAYQ2xhaW1zBACVCgF0cGFsbGV0X2NsYWltczo6RXJyb3I8UnVudGltZT4ADwAMRGFwBACdCgFocGFsbGV0X2RhcDo6RXJyb3I8UnVudGltZT4AEABEQ29sbGF0b3JTZWxlY3Rpb24EALkKAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFcnJvcjxSdW50aW1lPgAVABxTZXNzaW9uBADZCgF4cGFsbGV0X3Nlc3Npb246OkVycm9yPFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAFQsBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkVycm9yPFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBAB9CwFocGFsbGV0X3hjbTo6RXJyb3I8UnVudGltZT4AHwAwTWVzc2FnZVF1ZXVlBAChCwGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkVycm9yPFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQApQsBxHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZDo6RXJyb3I8UnVudGltZT4AJAAcVXRpbGl0eQQAqQsBeHBhbGxldF91dGlsaXR5OjpFcnJvcjxSdW50aW1lPgAoACBNdWx0aXNpZwQAuQsBfHBhbGxldF9tdWx0aXNpZzo6RXJyb3I8UnVudGltZT4AKQAUUHJveHkEAN0LAXBwYWxsZXRfcHJveHk6OkVycm9yPFJ1bnRpbWU+ACoAHEluZGljZXMEAOULAXhwYWxsZXRfaW5kaWNlczo6RXJyb3I8UnVudGltZT4AKwAYQXNzZXRzBAARDAHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgAyABxVbmlxdWVzBAA9DAF4cGFsbGV0X3VuaXF1ZXM6OkVycm9yPFJ1bnRpbWU+ADMAEE5mdHMEAJEMAWxwYWxsZXRfbmZ0czo6RXJyb3I8UnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQApQwB3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMj4ANQAoUG9vbEFzc2V0cwQAtQwB3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMz4ANgA8QXNzZXRDb252ZXJzaW9uBADBDAGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkVycm9yPFJ1bnRpbWU+ADcADFBzbQQA5QwBaHBhbGxldF9wc206OkVycm9yPFJ1bnRpbWU+ADgAIFRyZWFzdXJ5BAD5DAF8cGFsbGV0X3RyZWFzdXJ5OjpFcnJvcjxSdW50aW1lPgA8AEBDb252aWN0aW9uVm90aW5nBAAtDQGgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nOjpFcnJvcjxSdW50aW1lPgA9ACRSZWZlcmVuZGEEAHUNAYBwYWxsZXRfcmVmZXJlbmRhOjpFcnJvcjxSdW50aW1lPgA+ACRXaGl0ZWxpc3QEAHkNAYBwYWxsZXRfd2hpdGVsaXN0OjpFcnJvcjxSdW50aW1lPgBAACBCb3VudGllcwQAiQ0BfHBhbGxldF9ib3VudGllczo6RXJyb3I8UnVudGltZT4AQQA0Q2hpbGRCb3VudGllcwQAlQ0BlHBhbGxldF9jaGlsZF9ib3VudGllczo6RXJyb3I8UnVudGltZT4AQgAkQXNzZXRSYXRlBACZDQGEcGFsbGV0X2Fzc2V0X3JhdGU6OkVycm9yPFJ1bnRpbWU+AEMASE11bHRpQXNzZXRCb3VudGllcwQAtQ0BrHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6RXJyb3I8UnVudGltZT4ARABIU3RhdGVUcmllTWlncmF0aW9uBADJCAGscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uOjpFcnJvcjxSdW50aW1lPgBGADxOb21pbmF0aW9uUG9vbHMEAPENAZxwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RXJyb3I8UnVudGltZT4AUAAkVm90ZXJMaXN0BAAFDgH0cGFsbGV0X2JhZ3NfbGlzdDo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2JhZ3NfbGlzdDo6SW5zdGFuY2UxPgBSAEBEZWxlZ2F0ZWRTdGFraW5nBAAZDgGgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nOjpFcnJvcjxSdW50aW1lPgBTADxTdGFraW5nUmNDbGllbnQEACUOAbhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkVycm9yPFJ1bnRpbWU+AFQASE11bHRpQmxvY2tFbGVjdGlvbgQAPQ4B0HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6RXJyb3I8UnVudGltZT4AVQBgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAB1DgHwcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkVycm9yPFJ1bnRpbWU+AFgAHFN0YWtpbmcEANkOAZBwYWxsZXRfc3Rha2luZ19hc3luYzo6RXJyb3I8UnVudGltZT4AWQAYUmV2aXZlBACRDwF0cGFsbGV0X3Jldml2ZTo6RXJyb3I8UnVudGltZT4AWgBcQXNzZXRzUHJlY29tcGlsZXNQZXJtaXQEAJkPAeRwYWxsZXRfYXNzZXRzX3ByZWNvbXBpbGVzOjpwZXJtaXQ6OnBhbGxldDo6RXJyb3I8UnVudGltZT4AXAAUQWhPcHMEAKEPAXRwYWxsZXRfYWhfb3BzOjpFcnJvcjxSdW50aW1lPgD+AAD0GFN5c3RlbQEYU3lzdGVtUBxBY2NvdW50AQEEAgRNB0EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAE6CBUaGUgZnVsbCBhY2NvdW50IGluZm9ybWF0aW9uIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudCBJRC4AOEV4dHJpbnNpY0NvdW50AAA4BAAEuCBUb3RhbCBleHRyaW5zaWNzIGNvdW50IGZvciB0aGUgY3VycmVudCBibG9jay4AQEluaGVyZW50c0FwcGxpZWQBAF0BBAAEpCBXaGV0aGVyIGFsbCBpbmhlcmVudHMgaGF2ZSBiZWVuIGFwcGxpZWQuACxCbG9ja1dlaWdodAEAWQcYAAAAAAAABIggVGhlIGN1cnJlbnQgd2VpZ2h0IGZvciB0aGUgYmxvY2suACRCbG9ja1NpemUAADgEAAywIFRvdGFsIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgY3VycmVudCBibG9jay4AyCBUcmFja3MgdGhlIHNpemUgb2YgdGhlIGhlYWRlciBhbmQgYWxsIGV4dHJpbnNpY3MuACRCbG9ja0hhc2gBAQQFOECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmCBNYXAgb2YgYmxvY2sgbnVtYmVycyB0byBibG9jayBoYXNoZXMuADRFeHRyaW5zaWNEYXRhAQEEBTgYBAAEPQEgRXh0cmluc2ljcyBkYXRhIGZvciB0aGUgY3VycmVudCBibG9jayAobWFwcyBhbiBleHRyaW5zaWMncyBpbmRleCB0byBpdHMgZGF0YSkuABhOdW1iZXIBADgQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLgAoUGFyZW50SGFzaAEAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLgAYRGlnZXN0AQBoBAAE8CBEaWdlc3Qgb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGFsc28gcGFydCBvZiB0aGUgYmxvY2sgaGVhZGVyLgAYRXZlbnRzAQBdBwQAHKAgRXZlbnRzIGRlcG9zaXRlZCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgAtASBFdmVudHMgaGF2ZSBhIGxhcmdlIGluLW1lbW9yeSBzaXplLiBCb3ggdGhlIGV2ZW50cyB0byBub3QgZ28gb3V0LW9mLW1lbW9yefwganVzdCBpbiBjYXNlIHNvbWVvbmUgc3RpbGwgcmVhZHMgdGhlbSBmcm9tIHdpdGhpbiB0aGUgcnVudGltZS4AKEV2ZW50Q291bnQBADgQAAAAAAS4IFRoZSBudW1iZXIgb2YgZXZlbnRzIGluIHRoZSBgRXZlbnRzPFQ+YCBsaXN0LgAsRXZlbnRUb3BpY3MBAQQCQBkJBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC4ASExhc3RSdW50aW1lVXBncmFkZQAAHQkEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC4AREJsb2Nrc1RpbGxVcGdyYWRlAAAMBAAE7CBOdW1iZXIgb2YgYmxvY2tzIHRpbGwgdGhlIHBlbmRpbmcgY29kZSB1cGdyYWRlIGlzIGFwcGxpZWQuAFRVcGdyYWRlZFRvVTMyUmVmQ291bnQBAF0BBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQBdAQQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LgA4RXhlY3V0aW9uUGhhc2UAABUJBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4AREF1dGhvcml6ZWRVcGdyYWRlAAApCQQABLggYFNvbWVgIGlmIGEgY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuAGBFeHRyaW5zaWNXZWlnaHRSZWNsYWltZWQBABUBCAAAHKAgVGhlIHdlaWdodCByZWNsYWltZWQgZm9yIHRoZSBleHRyaW5zaWMuACEBIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uIQEgTW9yZSBwcmVjaXNlbHkgdGhpcyBpbmZvcm1hdGlvbiBpcyByZW1vdmVkIGluIGBub3RlX2FwcGxpZWRfZXh0cmluc2ljYC4AcQEgTG9naWMgZG9pbmcgc29tZSBwb3N0IGRpc3BhdGNoIHdlaWdodCByZWR1Y3Rpb24gbXVzdCB1cGRhdGUgdGhpcyBzdG9yYWdlIHRvIGF2b2lkIGR1cGxpY2F0ZSwgcmVkdWN0aW9uLgABJAABaQcAGDBCbG9ja1dlaWdodHMtCYkBBwDyBSoBAAsAIEqp0QECAIACAmXNHQABC8Am+390AQIAAAIBCwBo5c+LAQIAIAIBAAACZc0dAAELwN5fWboBAgBgAgELACBKqdEBAgCAAgEHALhk2UUCAGAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3RoOQlEAABEAAAAUAAAAFAAAQCQAQAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBibG9jayAoaW4gYnl0ZXMpLgA4QmxvY2tIYXNoQ291bnQ4EAAQAAAEVQEgTWF4aW11bSBudW1iZXIgb2YgYmxvY2sgbnVtYmVyIHRvIGJsb2NrIGhhc2ggbWFwcGluZ3MgdG8ga2VlcCAob2xkZXN0IHBydW5lZCBmaXJzdCkuACBEYldlaWdodEEJQIgP0QAAAAAAoHT4AQAAAAAECQEgVGhlIHdlaWdodCBvZiBydW50aW1lIGRhdGFiYXNlIG9wZXJhdGlvbnMgdGhlIHJ1bnRpbWUgY2FuIGludm9rZS4AHFZlcnNpb25FCdkFJHN0YXRlbWludCRzdGF0ZW1pbnQBAAAAIJQeAAAAAABw3XGNXMUyYtQBAAAABOcFIaDT0vgCAAAA173YonLKDWUCAAAA32rLaJkHYJsFAAAAN+OX/HyR9eQCAAAAQP461AH4lZoGAAAA0ryYl+7QjxUDAAAA94sni+U/RUwCAAAAqzwFcikf64sCAAAAzNneY5bImcoBAAAAvJ2JkE9bkj8BAAAAN8i7E1CpoqgEAAAA8/8U1atScFkDAAAAb/Uu6Fjmxb0CAAAAkbHIsWMo65ICAAAAn/tQWqc41pwBAAAAJgm+g6xEaNwBAAAAEsjj1NfgbeABAAAA3pK4oEJrm/YCAAAA6pPj8W89aWIDAAAA+8V3uddH79YBAAAAwbjwwDf5fegBAAAAioBHpTqCd+wBAAAAot22pYR3v2MBAAAAF6a8DQBirrMBAAAAGO9Yo7Z7p3ABAAAAxR/x+j9dDMoBAAAAjEA+XEqf1EIBAAAADwAAAAEEhCBHZXQgdGhlIGNoYWluJ3MgaW4tY29kZSB2ZXJzaW9uLgAoU1M1OFByZWZpeO0DCAAAFKggVGhlIGRlc2lnbmF0ZWQgU1M1OCBwcmVmaXggb2YgdGhpcyBjaGFpbi4AOQEgVGhpcyByZXBsYWNlcyB0aGUgInNzNThGb3JtYXQiIHByb3BlcnR5IGRlY2xhcmVkIGluIHRoZSBjaGFpbiBzcGVjLiBSZWFzb24gaXMxASB0aGF0IHRoZSBydW50aW1lIHNob3VsZCBrbm93IGFib3V0IHRoZSBwcmVmaXggaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2YgaXQgYXNwIGFuIGlkZW50aWZpZXIgb2YgdGhlIGNoYWluLgABVQkAHCxSdW50aW1lQ2FsbCAEjCBUaGUgYWdncmVnYXRlZCBgUnVudGltZUNhbGxgIHR5cGUuFE5vbmNlOARJASBUaGlzIHN0b3JlcyB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHRyYW5zYWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSBzZW5kZXIgYWNjb3VudC4QSGFzaEAEmCBUaGUgb3V0cHV0IG9mIHRoZSBgSGFzaGluZ2AgZnVuY3Rpb24uHEhhc2hpbmf9BAQhASBUaGUgaGFzaGluZyBzeXN0ZW0gKGFsZ29yaXRobSkgYmVpbmcgdXNlZCBpbiB0aGUgcnVudGltZSAoZS5nLiBCbGFrZTIpLiRBY2NvdW50SWQEBMggVGhlIHVzZXIgYWNjb3VudCBpZGVudGlmaWVyIHR5cGUgZm9yIHRoZSBydW50aW1lLhRCbG9ja1kJCGEBIFRoZSBCbG9jayB0eXBlIHVzZWQgYnkgdGhlIHJ1bnRpbWUuIFRoaXMgaXMgdXNlZCBieSBgY29uc3RydWN0X3J1bnRpbWVgIHRvIHJldHJpZXZlIHRoZcwgZXh0cmluc2ljcyBvciBvdGhlciBibG9jayBzcGVjaWZpYyBkYXRhIGFzIG5lZWRlZC4sQWNjb3VudERhdGFRBwhhASBEYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBhY2NvdW50IChvdGhlciB0aGFuIG5vbmNlL3RyYW5zYWN0aW9uIGNvdW50ZXIsIHdoaWNoIHRoaXNkIHBhbGxldCBkb2VzIHJlZ2FyZGxlc3MpLgAAAAA8UGFyYWNoYWluU3lzdGVtATxQYXJhY2hhaW5TeXN0ZW18PEJsb2NrV2VpZ2h0TW9kZQAAbQkEABh8IFRoZSBjdXJyZW50IGJsb2NrIHdlaWdodCBtb2RlLgB1ASBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgdGhlIG1heGltdW0gYWxsb3dlZCBibG9jayB3ZWlnaHQsIGZvciBtb3JlIGluZm9ybWF0aW9uIHNlZUggW2BibG9ja193ZWlnaHRgXS4AJQEgS2lsbGVkIGluIFtgU2VsZjo6b25faW5pdGlhbGl6ZWBdIGFuZCBzZXQgYnkgdGhlIFtgYmxvY2tfd2VpZ2h0YF0gbG9naWMuAERQcmV2aW91c0NvcmVDb3VudAAA5QUEAAwFASBUaGUgY29yZSBjb3VudCBhdmFpbGFibGUgdG8gdGhlIHBhcmFjaGFpbiBpbiB0aGUgcHJldmlvdXMgYmxvY2suAHUBIFRoaXMgaXMgbWFpbmx5IHVzZWQgZm9yIG9mZmNoYWluIGZ1bmN0aW9uYWxpdHkgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHRhcmdldCBibG9jayB3ZWlnaHQuAERVbmluY2x1ZGVkU2VnbWVudAEAcQkEABhJASBMYXRlc3QgaW5jbHVkZWQgYmxvY2sgZGVzY2VuZGFudHMgdGhlIHJ1bnRpbWUgYWNjZXB0ZWQuIEluIG90aGVyIHdvcmRzLCB0aGVzZSBhcmVhASBhbmNlc3RvcnMgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgYmxvY2sgd2hpY2ggaGF2ZSBub3QgYmVlbiBpbmNsdWRlZCBpbiB0aGUgb2JzZXJ2ZWRMIHJlbGF5LWNoYWluIHN0YXRlLgB1ASBUaGUgc2VnbWVudCBsZW5ndGggaXMgbGltaXRlZCBieSB0aGUgY2FwYWNpdHkgcmV0dXJuZWQgZnJvbSB0aGUgW2BDb25zZW5zdXNIb29rYF0gY29uZmlndXJlZDwgaW4gdGhlIHBhbGxldC4AbEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudAAAlQkEAAxpASBTdG9yYWdlIGZpZWxkIHRoYXQga2VlcHMgdHJhY2sgb2YgYmFuZHdpZHRoIHVzZWQgYnkgdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBhbG9uZyB3aXRoIHRoZS0BIGxhdGVzdCBIUk1QIHdhdGVybWFyay4gVXNlZCBmb3IgbGltaXRpbmcgdGhlIGFjY2VwdGFuY2Ugb2YgbmV3IGJsb2NrcyB3aXRokCByZXNwZWN0IHRvIHJlbGF5IGNoYWluIGNvbnN0cmFpbnRzLgBUUGVuZGluZ1ZhbGlkYXRpb25Db2RlAQAYBAAYWQEgSW4gY2FzZSBvZiBhIHNjaGVkdWxlZCB1cGdyYWRlLCB0aGlzIHN0b3JhZ2UgZmllbGQgY29udGFpbnMgdGhlIHZhbGlkYXRpb24gY29kZSB0byBiZSQgYXBwbGllZC4APQEgQXMgc29vbiBhcyB0aGUgcmVsYXkgY2hhaW4gZ2l2ZXMgdXMgdGhlIGdvLWFoZWFkIHNpZ25hbCwgd2Ugd2lsbCBvdmVyd3JpdGUgdGhlZQEgW2A6cGVuZGluZ19jb2RlYF1bc3BfY29yZTo6c3RvcmFnZTo6d2VsbF9rbm93bl9rZXlzOjpQRU5ESU5HX0NPREVdIHdoaWNoIHdpbGwgcmVzdWx0IHRoZXUBIG5leHQgYmxvY2sgdG8gYmUgcHJvY2Vzc2VkIHdpdGggdGhlIG5ldyB2YWxpZGF0aW9uIGNvZGUuIFRoaXMgY29uY2x1ZGVzIHRoZSB1cGdyYWRlIHByb2Nlc3MuAEROZXdWYWxpZGF0aW9uQ29kZQAAGAQAFF0BIFZhbGlkYXRpb24gY29kZSB0aGF0IGlzIHNldCBieSB0aGUgcGFyYWNoYWluIGFuZCBpcyB0byBiZSBjb21tdW5pY2F0ZWQgdG8gY29sbGF0b3IgYW5keCBjb25zZXF1ZW50bHkgdGhlIHJlbGF5LWNoYWluLgBlASBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2sgaWYgbm8gb3RoZXIgcGFsbGV0IGFscmVhZHkgc2V0LCB0aGUgdmFsdWUuADhWYWxpZGF0aW9uRGF0YQAATAQADNAgVGhlIFtgUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGFgXSBzZXQgZm9yIHRoaXMgYmxvY2suAHEBIFRoaXMgdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgc2V0IG9ubHkgb25jZSBieSB0aGUgW2BQYWxsZXQ6OnNldF92YWxpZGF0aW9uX2RhdGFgXSBpbmhlcmVudC4AUERpZFNldFZhbGlkYXRpb25Db2RlAQBdAQQABOAgV2VyZSB0aGUgdmFsaWRhdGlvbiBkYXRhIHNldCB0byBub3RpZnkgdGhlIHJlbGF5IGNoYWluPwBkTGFzdFJlbGF5Q2hhaW5CbG9ja051bWJlcgEAOBAAAAAADB0BIFRoZSByZWxheSBjaGFpbiBibG9jayBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBsYXN0IHBhcmFjaGFpbiBibG9jay4AiCBUaGlzIGlzIHVwZGF0ZWQgaW4gYG9uX2ZpbmFsaXplYC4AYFVwZ3JhZGVSZXN0cmljdGlvblNpZ25hbAEAmQkEABx1ASBBbiBvcHRpb24gd2hpY2ggaW5kaWNhdGVzIGlmIHRoZSByZWxheS1jaGFpbiByZXN0cmljdHMgc2lnbmFsbGluZyBhIHZhbGlkYXRpb24gY29kZSB1cGdyYWRlLmEBIEluIG90aGVyIHdvcmRzLCBpZiB0aGlzIGlzIGBTb21lYCBhbmQgW2BOZXdWYWxpZGF0aW9uQ29kZWBdIGlzIGBTb21lYCB0aGVuIHRoZSBwcm9kdWNlZGwgY2FuZGlkYXRlIHdpbGwgYmUgaW52YWxpZC4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4AOFVwZ3JhZGVHb0FoZWFkAQCNCQQAFNwgT3B0aW9uYWwgdXBncmFkZSBnby1haGVhZCBzaWduYWwgZnJvbSB0aGUgcmVsYXktY2hhaW4uAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuADxSZWxheVN0YXRlUHJvb2YAAFQEABjEIFRoZSBzdGF0ZSBwcm9vZiBmb3IgdGhlIGxhc3QgcmVsYXkgcGFyZW50IGJsb2NrLgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuAFhSZWxldmFudE1lc3NhZ2luZ1N0YXRlAAChCQQAHGUBIFRoZSBzbmFwc2hvdCBvZiBzb21lIHN0YXRlIHJlbGF0ZWQgdG8gbWVzc2FnaW5nIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBhcyBwZXJIIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AREhvc3RDb25maWd1cmF0aW9uAAC1CQQAGCkBIFRoZSBwYXJhY2hhaW4gaG9zdCBjb25maWd1cmF0aW9uIHRoYXQgd2FzIG9idGFpbmVkIGZyb20gdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgA4TGFzdERtcU1xY0hlYWQBAL0JgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEPQgVGhlIGxhc3QgZG93bndhcmQgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkIHdlIGhhdmUgb2JzZXJ2ZWQuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAEBMYXN0SHJtcE1xY0hlYWRzAQDBCQQAEEkBIFRoZSBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWRzIHdlIGhhdmUgb2JzZXJ2ZWQgcGVyIGVhY2ggY2hhbm5lbCBpbmNvbWluZyBjaGFubmVsLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LgBkUHJvY2Vzc2VkRG93bndhcmRNZXNzYWdlcwEAOBAAAAAADMggTnVtYmVyIG9mIGRvd253YXJkIG1lc3NhZ2VzIHByb2Nlc3NlZCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay4AcExhc3RQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2UAAM0JBAAMlCBUaGUgbGFzdCBwcm9jZXNzZWQgZG93bndhcmQgbWVzc2FnZS4AXQEgV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgdG8gZmlsdGVyIHRoZSBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZC4ANEhybXBXYXRlcm1hcmsBADgQAAAAAASgIEhSTVAgd2F0ZXJtYXJrIHRoYXQgd2FzIHNldCBpbiBhIGJsb2NrLgBgTGFzdFByb2Nlc3NlZEhybXBNZXNzYWdlAADNCQQADIQgVGhlIGxhc3QgcHJvY2Vzc2VkIEhSTVAgbWVzc2FnZS4AXQEgV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgdG8gZmlsdGVyIHRoZSBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZC4AUEhybXBPdXRib3VuZE1lc3NhZ2VzAQDRCQQADKQgSFJNUCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay4AOFVwd2FyZE1lc3NhZ2VzAQA0BAAMrCBVcHdhcmQgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A8CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgZm9yIGVhY2ggbmV3IGJsb2NrLgBUUGVuZGluZ1Vwd2FyZE1lc3NhZ2VzAQA0BAAEMQEgVXB3YXJkIG1lc3NhZ2VzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgYW5kIG5vdCB5ZXQgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uAFBQZW5kaW5nVXB3YXJkU2lnbmFscwEANAQADC0BIFVwd2FyZCBzaWduYWxzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgYW5kIG5vdCB5ZXQgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uANggVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2ZpbmFsaXplYCBmb3IgZWFjaCBibG9jay4ATFBlbmRpbmdBcHByb3ZlZFBlZXIAAHwEAAQ5ASBUaGUgYXBwcm92ZWQgcGVlciBpZCB0byBiZSBzZW50IGFzIGEgVU1QIHNpZ25hbCBvbiB0aGUgbGFzdCBibG9jayBvZiB0aGUgUG9WLgBcVXB3YXJkRGVsaXZlcnlGZWVGYWN0b3IBABkFQAAAZKeztuANAAAAAAAAAAAE5CBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieSBmb3IgVU1QLgCEQW5ub3VuY2VkSHJtcE1lc3NhZ2VzUGVyQ2FuZGlkYXRlAQA4EAAAAAAIZQEgVGhlIG51bWJlciBvZiBIUk1QIG1lc3NhZ2VzIHdlIG9ic2VydmVkIGluIGBvbl9pbml0aWFsaXplYCBhbmQgdGh1cyB1c2VkIHRoYXQgbnVtYmVyIGZvcvAgYW5ub3VuY2luZyB0aGUgd2VpZ2h0IG9mIGBvbl9pbml0aWFsaXplYCBhbmQgYG9uX2ZpbmFsaXplYC4AaFJlc2VydmVkWGNtcFdlaWdodE92ZXJyaWRlAAAVAQQACF0BIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBYQ01QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AZFJlc2VydmVkRG1wV2VpZ2h0T3ZlcnJpZGUAABUBBAAIWQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIERNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGBDdXN0b21WYWxpZGF0aW9uSGVhZERhdGEAABgEAAwpASBBIGN1c3RvbSBoZWFkIGRhdGEgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYXMgcmVzdWx0IG9mIGB2YWxpZGF0ZV9ibG9ja2AuABEBIFNlZSBgUGFsbGV0OjpzZXRfY3VzdG9tX3ZhbGlkYXRpb25faGVhZF9kYXRhYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4ASFBvVk1lc3NhZ2VzVHJhY2tlcgAA2QkEAAxVASBUcmFja3MgY3VtdWxhdGl2ZSBgVU1QYCBhbmQgYEhSTVBgIG1lc3NhZ2VzIHNlbnQgYWNyb3NzIGJsb2NrcyBpbiB0aGUgY3VycmVudCBgUG9WYC4AdQEgQWNyb3NzIGRpZmZlcmVudCBjYW5kaWRhdGVzL1BvVnMgdGhlIGJ1ZGdldHMgYXJlIHRyYWNrZWQgYnkgW2BBZ2dyZWdhdGVkVW5pbmNsdWRlZFNlZ21lbnRgXS4AAUQAAZEHAAQoU2VsZlBhcmFJZKAQ6AMAAAS4IFJldHVybnMgdGhlIHBhcmFjaGFpbiBJRCB3ZSBhcmUgcnVubmluZyB3aXRoLgAB4QkAAAABAAAkVGltZXN0YW1wASRUaW1lc3RhbXAIDE5vdwEAKCAAAAAAAAAAAASgIFRoZSBjdXJyZW50IHRpbWUgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAkRGlkVXBkYXRlAQBdAQQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbQAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgADAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAKAQZAAAAAAAAbwAAAAAAAAEAAAgUHJlaW1hZ2UBIFByZWltYWdlDCRTdGF0dXNGb3IAAQQGQOUJBAAEkCBUaGUgcmVxdWVzdCBzdGF0dXMgb2YgYSBnaXZlbiBoYXNoLgJAUmVxdWVzdFN0YXR1c0ZvcgBAUmVxdWVzdFN0YXR1c0ZvcgABBAZA7QkEAASQIFRoZSByZXF1ZXN0IHN0YXR1cyBvZiBhIGdpdmVuIGhhc2guACxQcmVpbWFnZUZvcgABBAb9CQEKBAAAAAHAAAGVBwAAAQUKAAAABQAAJFNjaGVkdWxlcgEkU2NoZWR1bGVyEDxJbmNvbXBsZXRlU2luY2UAADgEAAT0IEJsb2NrIG51bWJlciBhdCB3aGljaCB0aGUgYWdlbmRhIGJlZ2FuIGluY29tcGxldGUgZXhlY3V0aW9uLgAYQWdlbmRhAQEEBTgJCgQABE0BIEl0ZW1zIHRvIGJlIGV4ZWN1dGVkLCBpbmRleGVkIGJ5IHRoZSBibG9jayBudW1iZXIgdGhhdCB0aGV5IHNob3VsZCBiZSBleGVjdXRlZCBvbi4AHFJldHJpZXMAAQQC0BkKBAAEIQEgUmV0cnkgY29uZmlndXJhdGlvbnMgZm9yIGl0ZW1zIHRvIGJlIGV4ZWN1dGVkLCBpbmRleGVkIGJ5IHRhc2sgYWRkcmVzcy4AGExvb2t1cAABBAUI0AQAEPggTG9va3VwIGZyb20gYSBuYW1lIHRvIHRoZSBibG9jayBudW1iZXIgYW5kIGluZGV4IG9mIHRoZSB0YXNrLgBZASBGb3IgdjMgLT4gdjQgdGhlIHByZXZpb3VzbHkgdW5ib3VuZGVkIGlkZW50aXRpZXMgYXJlIEJsYWtlMi0yNTYgaGFzaGVkIHRvIGZvcm0gdGhlIHY0MCBpZGVudGl0aWVzLgAByAABmQcACDRNYXhpbXVtV2VpZ2h0FQEsCwCAbod0AQIAAAIEKQEgVGhlIG1heGltdW0gd2VpZ2h0IHRoYXQgbWF5IGJlIHNjaGVkdWxlZCBwZXIgYmxvY2sgZm9yIGFueSBkaXNwYXRjaGFibGVzLgBQTWF4U2NoZWR1bGVkUGVyQmxvY2s4EDIAAAAUHQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNjaGVkdWxlZCBjYWxscyBpbiB0aGUgcXVldWUgZm9yIGEgc2luZ2xlIGJsb2NrLgAYIE5PVEU6UQEgKyBEZXBlbmRlbnQgcGFsbGV0cycgYmVuY2htYXJrcyBtaWdodCByZXF1aXJlIGEgaGlnaGVyIGxpbWl0IGZvciB0aGUgc2V0dGluZy4gU2V0IGHEIGhpZ2hlciBsaW1pdCB1bmRlciBgcnVudGltZS1iZW5jaG1hcmtzYCBmZWF0dXJlLgABHQoABCxSdW50aW1lQ2FsbCAEaCBUaGUgYWdncmVnYXRlZCBjYWxsIHR5cGUuAAYAAChQYXJhbWV0ZXJzAShQYXJhbWV0ZXJzBChQYXJhbWV0ZXJzAAEEAqUHuQcEAARMIFN0b3JlZCBwYXJhbWV0ZXJzLgAB1AABoQcAAAAAAAcAADRXZWlnaHRSZWNsYWltAAAAAAAAAAgIgQEgUGFsbGV0IHRvIHVzZSBhbG9uZ3NpZGUgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbYFN0b3JhZ2VXZWlnaHRSZWNsYWltYF0sIHRoZSBwYWxsZXQgcHJvdmlkZXOMIHdlaWdodCBpbmZvcm1hdGlvbiBhbmQgYmVuY2htYXJrcy4AUE11bHRpQmxvY2tNaWdyYXRpb25zAVBNdWx0aUJsb2NrTWlncmF0aW9ucwgYQ3Vyc29yAAAxAQQADNggVGhlIGN1cnJlbnRseSBhY3RpdmUgbWlncmF0aW9uIHRvIHJ1biBhbmQgaXRzIGN1cnNvci4AvCBgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbWlncmF0aW9uIGlzIHJ1bm5pbmcuACBIaXN0b3JpYwABBAVFARAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AASkBAAHJBwAIMEN1cnNvck1heExlbjgQAAABABCkIFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGN1cnNvci4AZQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhIGN1cnNvciB3aXRoIE1FTAkBIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAEBJZGVudGlmaWVyTWF4TGVuOBAAAQAAELQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgaWRlbnRpZmllci4AVQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhbiBpZGVudGlmaWVyLQEgd2l0aCBNRUwgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AASEKAAAQCyAZms41ZNCWTixNSpukaZRNvP9qbOGk0LJ8b8wC0kw4b25nb2luZ19zdGF0dXMAJQoEqCBSZXR1cm5zIHRoZSBvbmdvaW5nIHN0YXR1cyBvZiBtaWdyYXRpb25zLgALIBmazjVk0JZOLE1Km6RpXr13bLFdm5EuJ41NLWLFoSBwcm9ncmVzcwApChAJASBSZXR1cm5zIHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbiwgaWYgYW55LgBRASBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHByb2dyZXNzLB0BIGluY2x1ZGluZyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGNvbXBsZXRlZCBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBzdGVwcy4ACyAZms41ZNCWTixNSpukaUavS87G81p7u+6dn8EJW+FEYWZmZWN0ZWRfcHJlZml4ZXMANAwBASBSZXR1cm5zIHRoZSBzdG9yYWdlIHByZWZpeGVzIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4AGQEgQ2FuIGJlIGVtcHR5IGlmIHRoZSBtaWdyYXRpb24gZG9lcyBub3Qga25vdyBvciB0aGVyZSBhcmUgbm8gcHJlZml4ZXMuAAsgGZrONWTQlk4sTUqbpGmqTCigbxmIRb0bsp7GIF3dGHN0YXR1cwAxCgTwIFJldHVybnMgdGhlIGNvbXByZWhlbnNpdmUgc3RhdHVzIG9mIG11bHRpLWJsb2NrIG1pZ3JhdGlvbnMuAAkAACBCYWxhbmNlcwEgQmFsYW5jZXMcNFRvdGFsSXNzdWFuY2UBAFkBQAAAAAAAAAAAAAAAAAAAAAAEmCBUaGUgdG90YWwgdW5pdHMgaXNzdWVkIGluIHRoZSBzeXN0ZW0uAEBJbmFjdGl2ZUlzc3VhbmNlAQBZAUAAAAAAAAAAAAAAAAAAAAAABAkBIFRoZSB0b3RhbCB1bml0cyBvZiBvdXRzdGFuZGluZyBkZWFjdGl2YXRlZCBiYWxhbmNlIGluIHRoZSBzeXN0ZW0uABxBY2NvdW50AQEEAgRRBwEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGAJASBUaGUgQmFsYW5jZXMgcGFsbGV0IGV4YW1wbGUgb2Ygc3RvcmluZyB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUgexkCICAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3RvcmFnZU1hcFNoaW08U2VsZjo6QWNjb3VudDxSdW50aW1lPiwgZnJhbWVfc3lzdGVtOjpQcm92aWRlcjxSdW50aW1lPiwgQWNjb3VudElkLCBTZWxmOjpBY2NvdW50RGF0YTxCYWxhbmNlPj4MICB9ECBgYGAAFQEgWW91IGNhbiBhbHNvIHN0b3JlIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQgaW4gdGhlIGBTeXN0ZW1gIHBhbGxldC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHt0ICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTeXN0ZW0MICB9ECBgYGAAUQEgQnV0IHRoaXMgY29tZXMgd2l0aCB0cmFkZW9mZnMsIHN0b3JpbmcgYWNjb3VudCBiYWxhbmNlcyBpbiB0aGUgc3lzdGVtIHBhbGxldCBzdG9yZXNtASBgZnJhbWVfc3lzdGVtYCBkYXRhIGFsb25nc2lkZSB0aGUgYWNjb3VudCBkYXRhIGNvbnRyYXJ5IHRvIHN0b3JpbmcgYWNjb3VudCBiYWxhbmNlcyBpbiB0aGUpASBgQmFsYW5jZXNgIHBhbGxldCwgd2hpY2ggdXNlcyBhIGBTdG9yYWdlTWFwYCB0byBzdG9yZSBiYWxhbmNlcyBkYXRhIG9ubHkuQQEgTk9URTogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGhlIGNhc2UgdGhhdCB0aGlzIHBhbGxldCBpcyB1c2VkIHRvIHN0b3JlIGJhbGFuY2VzLgAUTG9ja3MBAQQCBDUKBAAQuCBBbnkgbGlxdWlkaXR5IGxvY2tzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4lASBOT1RFOiBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB3aGVuIHNldHRpbmcsIGNoYW5naW5nIGFuZCBmcmVlaW5nIGEgbG9jay4ArQEgVXNlIG9mIGxvY2tzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGZyZWV6ZXMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAgUmVzZXJ2ZXMBAQQCBEUKBAAMpCBOYW1lZCByZXNlcnZlcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gABRIb2xkcwEBBAIEUQoEAARsIEhvbGRzIG9uIGFjY291bnQgYmFsYW5jZXMuABxGcmVlemVzAQEEAgRdCgQABIggRnJlZXplIGxvY2tzIG9uIGFjY291bnQgYmFsYW5jZXMuAAFRAQABzQcAEEhFeGlzdGVudGlhbERlcG9zaXRZAUAA4fUFAAAAAAAAAAAAAAAAIEEBIFRoZSBtaW5pbXVtIGFtb3VudCByZXF1aXJlZCB0byBrZWVwIGFuIGFjY291bnQgb3Blbi4gTVVTVCBCRSBHUkVBVEVSIFRIQU4gWkVSTyEAWQEgSWYgeW91ICpyZWFsbHkqIG5lZWQgaXQgdG8gYmUgemVybywgeW91IGNhbiBlbmFibGUgdGhlIGZlYXR1cmUgYGluc2VjdXJlX3plcm9fZWRgIGZvcmEBIHRoaXMgcGFsbGV0LiBIb3dldmVyLCB5b3UgZG8gc28gYXQgeW91ciBvd24gcmlzazogdGhpcyB3aWxsIG9wZW4gdXAgYSBtYWpvciBEb1MgdmVjdG9yLlkBIEluIGNhc2UgeW91IGhhdmUgbXVsdGlwbGUgc291cmNlcyBvZiBwcm92aWRlciByZWZlcmVuY2VzLCB5b3UgbWF5IGFsc28gZ2V0IHVuZXhwZWN0ZWSMIGJlaGF2aW91ciBpZiB5b3Ugc2V0IHRoaXMgdG8gemVyby4A8CBCb3R0b20gbGluZTogRG8geW91cnNlbGYgYSBmYXZvdXIgYW5kIG1ha2UgaXQgYXQgbGVhc3Qgb25lIQAgTWF4TG9ja3M4EDIAAAAQ9CBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9ja3MgdGhhdCBzaG91bGQgZXhpc3Qgb24gYW4gYWNjb3VudC7cIE5vdCBzdHJpY3RseSBlbmZvcmNlZCwgYnV0IHVzZWQgZm9yIHdlaWdodCBlc3RpbWF0aW9uLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACxNYXhSZXNlcnZlczgQMgAAAAwNASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudC4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAKE1heEZyZWV6ZXM4EAIAAAAEYQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluZGl2aWR1YWwgZnJlZXplIGxvY2tzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQgYXQgYW55IHRpbWUuAAF1CgAQRFJ1bnRpbWVIb2xkUmVhc29u1QcEdCBUaGUgb3ZlcmFyY2hpbmcgaG9sZCByZWFzb24uHEJhbGFuY2VZAQRsIFRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuRFJlc2VydmVJZGVudGlmaWVyeQIMaCBUaGUgSUQgdHlwZSBmb3IgcmVzZXJ2ZXMuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gQEZyZWV6ZUlkZW50aWZpZXJlCgRkIFRoZSBJRCB0eXBlIGZvciBmcmVlemVzLgAKAABIVHJhbnNhY3Rpb25QYXltZW50AUhUcmFuc2FjdGlvblBheW1lbnQMRE5leHRGZWVNdWx0aXBsaWVyAQAZBUAAAGSns7bgDQAAAAAAAAAAAAA4U3RvcmFnZVZlcnNpb24BAHkKBAAAADxUeFBheW1lbnRDcmVkaXQAAH0KBAAM8CBUaGUgYE9uQ2hhcmdlVHJhbnNhY3Rpb25gIHN0b3JlcyB0aGUgd2l0aGRyYXduIHR4IGZlZSBoZXJlLgA1ASBVc2UgYHdpdGhkcmF3X3R4ZmVlYCBhbmQgYHJlbWFpbmluZ190eGZlZWAgdG8gYWNjZXNzIGZyb20gb3V0c2lkZSB0aGUgY3JhdGUuAAABCQgABGBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXIMBAVUWQEgQSBmZWUgbXVsdGlwbGllciBmb3IgYE9wZXJhdGlvbmFsYCBleHRyaW5zaWNzIHRvIGNvbXB1dGUgInZpcnR1YWwgdGlwIiB0byBib29zdCB0aGVpciwgYHByaW9yaXR5YABRASBUaGlzIHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgdGhlIGBmaW5hbF9mZWVgIHRvIG9idGFpbiBhICJ2aXJ0dWFsIHRpcCIgdGhhdCBpcyBsYXRlcvQgYWRkZWQgdG8gYSB0aXAgY29tcG9uZW50IGluIHJlZ3VsYXIgYHByaW9yaXR5YCBjYWxjdWxhdGlvbnMuTQEgSXQgbWVhbnMgdGhhdCBhIGBOb3JtYWxgIHRyYW5zYWN0aW9uIGNhbiBmcm9udC1ydW4gYSBzaW1pbGFybHktc2l6ZWQgYE9wZXJhdGlvbmFsYEEBIGV4dHJpbnNpYyAod2l0aCBubyB0aXApLCBieSBpbmNsdWRpbmcgYSB0aXAgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSB2aXJ0dWFsIHRpcC4APCBgYGBydXN0LGlnbm9yZUAgLy8gRm9yIGBOb3JtYWxgjCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCk7AFQgLy8gRm9yIGBPcGVyYXRpb25hbGARASBsZXQgdmlydHVhbF90aXAgPSAoaW5jbHVzaW9uX2ZlZSArIHRpcCkgKiBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXI7xCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCArIHZpcnR1YWxfdGlwKTsQIGBgYABRASBOb3RlIHRoYXQgc2luY2Ugd2UgdXNlIGBmaW5hbF9mZWVgIHRoZSBtdWx0aXBsaWVyIGFwcGxpZXMgYWxzbyB0byB0aGUgcmVndWxhciBgdGlwYF0BIHNlbnQgd2l0aCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBub3Qgb25seSBkb2VzIHRoZSB0cmFuc2FjdGlvbiBnZXQgYSBwcmlvcml0eSBidW1wIGJhc2VkYQEgb24gdGhlIGBpbmNsdXNpb25fZmVlYCwgYnV0IHdlIGFsc28gYW1wbGlmeSB0aGUgaW1wYWN0IG9mIHRpcHMgYXBwbGllZCB0byBgT3BlcmF0aW9uYWxgOCB0cmFuc2FjdGlvbnMuAAAAAAsAADhBc3NldFR4UGF5bWVudAAAAQ0IAAAAAAANAAAcVmVzdGluZwEcVmVzdGluZwgcVmVzdGluZwABBAIEhQoEAATYIEluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgdmVzdGluZyBvZiBhIGdpdmVuIGFjY291bnQuADhTdG9yYWdlVmVyc2lvbgEAjQoEAAx8IFN0b3JhZ2UgdmVyc2lvbiBvZiB0aGUgcGFsbGV0LgAxASBOZXcgbmV0d29ya3Mgc3RhcnQgd2l0aCBsYXRlc3QgdmVyc2lvbiwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgZ2VuZXNpcyBidWlsZC4AAWkBAAERCAAIRE1pblZlc3RlZFRyYW5zZmVyWQFAAOH1BQAAAAAAAAAAAAAAAAToIFRoZSBtaW5pbXVtIGFtb3VudCB0cmFuc2ZlcnJlZCB0byBjYWxsIGB2ZXN0ZWRfdHJhbnNmZXJgLgBMTWF4VmVzdGluZ1NjaGVkdWxlczgQHAAAAAAAAZEKAAAADgAAGENsYWltcwEYQ2xhaW1zFBhDbGFpbXMAAQQGfQFZAQQAAAAUVG90YWwBAFkBQAAAAAAAAAAAAAAAAAAAAAAAABxWZXN0aW5nAAEEBn0BhQEEABB4IFZlc3Rpbmcgc2NoZWR1bGUgZm9yIGEgY2xhaW0uDQEgRmlyc3QgYmFsYW5jZSBpcyB0aGUgdG90YWwgYW1vdW50IHRoYXQgc2hvdWxkIGJlIGhlbGQgZm9yIHZlc3Rpbmcu5CBTZWNvbmQgYmFsYW5jZSBpcyBob3cgbXVjaCBzaG91bGQgYmUgdW5sb2NrZWQgcGVyIGJsb2NrLswgVGhlIGJsb2NrIG51bWJlciBpcyB3aGVuIHRoZSB2ZXN0aW5nIHNob3VsZCBzdGFydC4AHFNpZ25pbmcAAQQGfQGNAQQABMAgVGhlIHN0YXRlbWVudCBraW5kIHRoYXQgbXVzdCBiZSBzaWduZWQsIGlmIGFueS4AJFByZWNsYWltcwABBAYEfQEEAAQtASBQcmUtY2xhaW1lZCBFdGhlcmV1bSBhY2NvdW50cywgYnkgdGhlIEFjY291bnQgSUQgdGhhdCB0aGV5IGFyZSBjbGFpbWVkIHRvLgABcQEAARUIAAQYUHJlZml4GIiEUGF5IERPVHMgdG8gdGhlIFBvbGthZG90IGFjY291bnQ6AAABlQoAAAAPAAAMRGFwAQxEYXAIQEJ1ZGdldEFsbG9jYXRpb24BAJkBBAAQvCBCdWRnZXQgYWxsb2NhdGlvbiBtYXA6IGBCdWRnZXRLZXkgLT4gUGVyYmlsbGAuADUBIEtleXMgbXVzdCBjb3JyZXNwb25kIHRvIHJlZ2lzdGVyZWQgYEJ1ZGdldFJlY2lwaWVudHNgLiBTdW0gb2YgdmFsdWVzIG11c3QgYmUpASBleGFjdGx5IGBQZXJiaWxsOjpvbmUoKWAgKDEwMCUpLiBSZWNpcGllbnRzIG5vdCBpbmNsdWRlZCByZWNlaXZlIG5vdGhpbmcuAFRMYXN0SXNzdWFuY2VUaW1lc3RhbXABACggAAAAAAAAAAAQqCBUaW1lc3RhbXAgKG1zKSBvZiB0aGUgbGFzdCBpc3N1YW5jZSBkcmlwLgCwIE9uIGV4aXN0aW5nIGNoYWlucywgdGhpcyBtdXN0IGJlIHNlZWRlZCB2aWE5ASBbYG1pZ3JhdGlvbnM6Ok1pZ3JhdGVWMVRvVjJgXSB0byBwcmV2ZW50IGluY29ycmVjdCBtaW50aW5nIG9uIHRoZSBmaXJzdCBkcmlwLgABlQEAARkIAAwgUGFsbGV0SWSZCiBkYXAvYnVmZgTEIFRoZSBwYWxsZXQgSUQgdXNlZCB0byBkZXJpdmUgdGhlIGJ1ZmZlciBhY2NvdW50LgA8SXNzdWFuY2VDYWRlbmNlKCBg6gAAAAAAABjIIE1pbmltdW0gZWxhcHNlZCB0aW1lIChtcykgYmV0d2VlbiBpc3N1YW5jZSBkcmlwcy4AZCAtIGAwYCA9IGRyaXAgZXZlcnkgYmxvY2u0IC0gYDYwXzAwMGAgPSBkcmlwIGV2ZXJ5IG1pbnV0ZSAoUmVjb21tZW5kZWQpAKAgU2hvdWxkIGJlIHNtYWxsIHJlbGF0aXZlIHRvIGVyYSBsZW5ndGguAERNYXhFbGFwc2VkUGVyRHJpcCggwCcJAAAAAAAUHQEgU2FmZXR5IGNlaWxpbmc6IG1heGltdW0gZWxhcHNlZCB0aW1lIChtcykgY29uc2lkZXJlZCBpbiBhIHNpbmdsZSBkcmlwLgAVASBJZiBtb3JlIHRpbWUgaGFzIHBhc3NlZCB0aGFuIHRoaXMsIGVsYXBzZWQgaXMgY2xhbXBlZCB0byB0aGlzIHZhbHVlLhkBIFByZXZlbnRzIGFjY2lkZW50YWwgb3Zlci1taW50aW5nIGZyb20gYnVncywgbWlzY29uZmlndXJhdGlvbiwgb3IgbG9uZ2AgcGVyaW9kcyB3aXRob3V0IGJsb2Nrcy4AAZ0KAAAIzRQxD4Um9QTbjZhUjYvuNoZa+0jezXZHAyw08FE0eUVEYnVkZ2V0X3JlY2lwaWVudHMAoQoQHQEgQWxsIHJlZ2lzdGVyZWQgYnVkZ2V0IHJlY2lwaWVudHMgd2l0aCB0aGVpciBjdXJyZW50IGFsbG9jYXRpb24gc2hhcmVzLgAdASBUaGUgYFBlcmJpbGxgIGlzIHRha2VuIGZyb20gYEJ1ZGdldEFsbG9jYXRpb25gOyByZWNpcGllbnRzIGFic2VudCBmcm9tnCB0aGUgbWFwIGFwcGVhciB3aXRoIGBQZXJiaWxsOjp6ZXJvKClgLgDNFDEPhSb1BNuNmFSNi+42qWdrBv34EsS/cUkOzO2dPRxzdGFnaW5nAAQMFQEgQWNjb3VudCB0aGF0IGhvbGRzIGJ1cm5lZC9zbGFzaGVkIGZ1bmRzIGJlZm9yZSB0aGV5IGFyZSBkcmFpbmVkIGludG8ZASB0aGUgREFQIGJ1ZmZlciBieSBgb25faWRsZWAuIEV4cG9zZWQgdG8gY2xpZW50cyBzbyB0aGV5IGRvbid0IGhhdmUgdG+YIHJlLWRlcml2ZSB0aGUgc3ViLWFjY291bnQgdGhlbXNlbHZlcy4AEAAAKEF1dGhvcnNoaXABKEF1dGhvcnNoaXAEGEF1dGhvcgAABAQABGQgQXV0aG9yIG9mIGN1cnJlbnQgYmxvY2suAAAAAAAAABQAAERDb2xsYXRvclNlbGVjdGlvbgFEQ29sbGF0b3JTZWxlY3Rpb24UNEludnVsbmVyYWJsZXMBAKkKBAAEEQEgVGhlIGludnVsbmVyYWJsZSwgcGVybWlzc2lvbmVkIGNvbGxhdG9ycy4gVGhpcyBsaXN0IG11c3QgYmUgc29ydGVkLgA0Q2FuZGlkYXRlTGlzdAEArQoEABRpASBUaGUgKGNvbW11bml0eSwgbGltaXRlZCkgY29sbGF0aW9uIGNhbmRpZGF0ZXMuIGBDYW5kaWRhdGVzYCBhbmQgYEludnVsbmVyYWJsZXNgIHNob3VsZCBiZVAgbXV0dWFsbHkgZXhjbHVzaXZlLgB1ASBUaGlzIGxpc3QgaXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSBkZXBvc2l0IGFuZCB3aGVuIHRoZSBkZXBvc2l0cyBhcmUgZXF1YWwsIHRoZSBsZWFzdKAgcmVjZW50bHkgdXBkYXRlZCBpcyBjb25zaWRlcmVkIGdyZWF0ZXIuAERMYXN0QXV0aG9yZWRCbG9jawEBBAUEOBAAAAAABIQgTGFzdCBibG9jayBhdXRob3JlZCBieSBjb2xsYXRvci4ARERlc2lyZWRDYW5kaWRhdGVzAQA4EAAAAAAMeCBEZXNpcmVkIG51bWJlciBvZiBjYW5kaWRhdGVzLgB1ASBUaGlzIHNob3VsZCBpZGVhbGx5IGFsd2F5cyBiZSBsZXNzIHRoYW4gW2BDb25maWc6Ok1heENhbmRpZGF0ZXNgXSBmb3Igd2VpZ2h0cyB0byBiZSBjb3JyZWN0LgA0Q2FuZGlkYWN5Qm9uZAEAWQFAAAAAAAAAAAAAAAAAAAAAAAy4IEZpeGVkIGFtb3VudCB0byBkZXBvc2l0IHRvIGJlY29tZSBhIGNvbGxhdG9yLgBBASBXaGVuIGEgY29sbGF0b3IgY2FsbHMgYGxlYXZlX2ludGVudGAgdGhleSBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBkZXBvc2l0IGJhY2suAAGxAQABIQgAGBRQb3RJZJkKIFBvdFN0YWtlBPQgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIGludGVybmFsIFBvdCBpcyBnZW5lcmF0ZWQuADRNYXhDYW5kaWRhdGVzOBBkAAAADMggTWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlLgDMIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGludnVsbmVyYWJsZXMuAFBNaW5FbGlnaWJsZUNvbGxhdG9yczgQBAAAAAxVASBNaW5pbXVtIG51bWJlciBlbGlnaWJsZSBjb2xsYXRvcnMuIFNob3VsZCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIHplcm8uIFRoaXMgaW5jbHVkZXNRASBJbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBvbmUgY29sbGF0b3Igd2hvIGNhbkQgcHJvZHVjZSBhIGJsb2NrLgBATWF4SW52dWxuZXJhYmxlczgQFAAAAASEIE1heGltdW0gbnVtYmVyIG9mIGludnVsbmVyYWJsZXMuADRLaWNrVGhyZXNob2xkOBAQDgAAAAAscG90X2FjY291bnQEgG1vZGxQb3RTdGFrZQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAG5CgAELFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4AFQAAHFNlc3Npb24BHFNlc3Npb24gKFZhbGlkYXRvcnMBAGEBBAAEfCBUaGUgY3VycmVudCBzZXQgb2YgdmFsaWRhdG9ycy4AMEN1cnJlbnRJbmRleAEAOBAAAAAABHggQ3VycmVudCBpbmRleCBvZiB0aGUgc2Vzc2lvbi4ANFF1ZXVlZENoYW5nZWQBAF0BBAAIOQEgVHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBlY29ub21pYyBpZGVudGl0aWVzIG9yIHdlaWdodGluZyBiZWhpbmQgdGhlIHZhbGlkYXRvcnOkIGhhcyBjaGFuZ2VkIGluIHRoZSBxdWV1ZWQgdmFsaWRhdG9yIHNldC4AKFF1ZXVlZEtleXMBAL0KBAAIPQEgVGhlIHF1ZXVlZCBrZXlzIGZvciB0aGUgbmV4dCBzZXNzaW9uLiBXaGVuIHRoZSBuZXh0IHNlc3Npb24gYmVnaW5zLCB0aGVzZSBrZXlz4CB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZGF0b3IncyBzZXNzaW9uIGtleXMuAEhEaXNhYmxlZFZhbGlkYXRvcnMBAMUKBAAUgCBJbmRpY2VzIG9mIGRpc2FibGVkIHZhbGlkYXRvcnMuAD0BIFRoZSB2ZWMgaXMgYWx3YXlzIGtlcHQgc29ydGVkIHNvIHRoYXQgd2UgY2FuIGZpbmQgd2hldGhlciBhIGdpdmVuIHZhbGlkYXRvciBpcz0BIGRpc2FibGVkIHVzaW5nIGJpbmFyeSBzZWFyY2guIEl0IGdldHMgY2xlYXJlZCB3aGVuIGBvbl9zZXNzaW9uX2VuZGluZ2AgcmV0dXJuc2QgYSBuZXcgc2V0IG9mIGlkZW50aXRpZXMuACBOZXh0S2V5cwABBAUEuQEEAAScIFRoZSBuZXh0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuACBLZXlPd25lcgABBAXRCgQEAAQJASBUaGUgb3duZXIgb2YgYSBrZXkuIFRoZSBrZXkgaXMgdGhlIGBLZXlUeXBlSWRgICsgdGhlIGVuY29kZWQga2V5LgBERXh0ZXJuYWxseVNldEtleXMAAQQFBBAEABAxASBBY2NvdW50cyB3aG9zZSBrZXlzIHdlcmUgc2V0IHZpYSBgU2Vzc2lvbkludGVyZmFjZWAgKGV4dGVybmFsIHBhdGgpIHdpdGhvdXQ5ASBpbmNyZW1lbnRpbmcgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBvciBwbGFjaW5nIGEga2V5IGRlcG9zaXQuIGBkb19wdXJnZV9rZXlzYDkBIG9ubHkgZGVjcmVtZW50cyBjb25zdW1lcnMgZm9yIGFjY291bnRzIHRoYXQgd2VyZSByZWdpc3RlcmVkIHRocm91Z2ggdGhlIGxvY2FsQCBzZXNzaW9uIHBhbGxldC4AAbUBAAElCAAEKEtleURlcG9zaXRZAUAAAAAAAAAAAAAAAAAAAAAABKQgVGhlIGFtb3VudCB0byBiZSBoZWxkIHdoZW4gc2V0dGluZyBrZXlzLgAB2QoACCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuEEtleXO5AQQoIFRoZSBrZXlzLgAWAAAQQXVyYQEQQXVyYQgsQXV0aG9yaXRpZXMBAN0KBAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LgAsQ3VycmVudFNsb3QBAOUKIAAAAAAAAAAADIAgVGhlIGN1cnJlbnQgc2xvdCBvZiB0aGlzIGJsb2NrLgCUIFRoaXMgd2lsbCBiZSBzZXQgaW4gYG9uX2luaXRpYWxpemVgLgAAAAQwU2xvdER1cmF0aW9uKCDAXQAAAAAAABQNASBUaGUgc2xvdCBkdXJhdGlvbiBBdXJhIHNob3VsZCBydW4gd2l0aCwgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcy4AIQEgVGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiB0aGlzIHR5cGUgY2FuIGJlIGNoYW5nZWQgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZS4ANQEgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGVpdGhlciB1c2UgW2BNaW5pbXVtUGVyaW9kVGltZXNUd29gXSBvciBhIGNvbnN0LgAABCxBdXRob3JpdHlJZL0BBJggVGhlIGlkZW50aWZpZXIgdHlwZSBmb3IgYW4gYXV0aG9yaXR5LgAXAAAcQXVyYUV4dAEcQXVyYUV4dAgsQXV0aG9yaXRpZXMBAN0KBAAUlCBTZXJ2ZXMgYXMgY2FjaGUgZm9yIHRoZSBhdXRob3JpdGllcy4AcQEgVGhlIGF1dGhvcml0aWVzIGluIEF1UmEgYXJlIG92ZXJ3cml0dGVuIGluIGBvbl9pbml0aWFsaXplYCB3aGVuIHdlIHN3aXRjaCB0byBhIG5ldyBzZXNzaW9uLF0BIGJ1dCB3ZSByZXF1aXJlIHRoZSBvbGQgYXV0aG9yaXRpZXMgdG8gdmVyaWZ5IHRoZSBzZWFsIHdoZW4gdmFsaWRhdGluZyBhIFBvVi4gVGhpcyB3aWxsDQEgYWx3YXlzIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBBdVJhIGF1dGhvcml0aWVzIGluIGBvbl9maW5hbGl6ZWAuADRSZWxheVNsb3RJbmZvAADpCgQAEAkBIEN1cnJlbnQgcmVsYXkgY2hhaW4gc2xvdCBwYWlyZWQgd2l0aCBhIG51bWJlciBvZiBhdXRob3JlZCBibG9ja3MuAGUBIFRoaXMgaXMgdXBkYXRlZCBpbiBbYEZpeGVkVmVsb2NpdHlDb25zZW5zdXNIb29rOjpvbl9zdGF0ZV9wcm9vZmBdIHdpdGggdGhlIGN1cnJlbnQgcmVsYXncIGNoYWluIHNsb3QgYXMgcHJvdmlkZWQgYnkgdGhlIHJlbGF5IGNoYWluIHN0YXRlIHByb29mLgAAAAAAAAAYAAAkWGNtcFF1ZXVlASRYY21wUXVldWUcUEluYm91bmRYY21wU3VzcGVuZGVkAQDtCgQAIA0BIFRoZSBzdXNwZW5kZWQgaW5ib3VuZCBYQ01QIGNoYW5uZWxzLiBBbGwgb3RoZXJzIGFyZSBub3Qgc3VzcGVuZGVkLgBxASBUaGlzIGlzIGEgYFN0b3JhZ2VWYWx1ZWAgaW5zdGVhZCBvZiBhIGBTdG9yYWdlTWFwYCBzaW5jZSB3ZSBleHBlY3QgbXVsdGlwbGUgcmVhZHMgcGVyIGJsb2NraQEgdG8gZGlmZmVyZW50IGtleXMgd2l0aCBhIG9uZSBieXRlIHBheWxvYWQuIFRoZSBhY2Nlc3MgdG8gYEJvdW5kZWRCVHJlZVNldGAgd2lsbCBiZSBjYWNoZWQVASB3aXRoaW4gdGhlIGJsb2NrIGFuZCB0aGVyZWZvcmUgb25seSBpbmNsdWRlZCBvbmNlIGluIHRoZSBwcm9vZiBzaXplLgBlASBOT1RFOiBUaGUgUG9WIGJlbmNobWFya2luZyBjYW5ub3Qga25vdyB0aGlzIGFuZCB3aWxsIG92ZXItZXN0aW1hdGUsIGJ1dCB0aGUgYWN0dWFsIHByb29mRCB3aWxsIGJlIHNtYWxsZXIuAEhPdXRib3VuZFhjbXBTdGF0dXMBAPUKBAAYXQEgVGhlIG5vbi1lbXB0eSBYQ01QIGNoYW5uZWxzIGluIG9yZGVyIG9mIGJlY29taW5nIG5vbi1lbXB0eSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RRASBhbmQgbGFzdCBvdXRib3VuZCBtZXNzYWdlLiBJZiB0aGUgdHdvIGluZGljZXMgYXJlIGVxdWFsLCB0aGVuIGl0IGluZGljYXRlcyBhbiBlbXB0eVkBIHF1ZXVlIGFuZCB0aGVyZSBtdXN0IGJlIGEgbm9uLWBPa2AgYE91dGJvdW5kU3RhdHVzYC4gV2UgYXNzdW1lIHF1ZXVlcyBncm93IG5vIGdyZWF0ZXJZASB0aGFuIDY1NTM1IGl0ZW1zLiBRdWV1ZSBpbmRpY2VzIGZvciBub3JtYWwgbWVzc2FnZXMgYmVnaW4gYXQgb25lOyB6ZXJvIGlzIHJlc2VydmVkIGluEQEgY2FzZSBvZiB0aGUgbmVlZCB0byBzZW5kIGEgaGlnaC1wcmlvcml0eSBzaWduYWwgbWVzc2FnZSB0aGlzIGJsb2NrLgkBIFRoZSBib29sIGlzIHRydWUgaWYgdGhlcmUgaXMgYSBzaWduYWwgbWVzc2FnZSB3YWl0aW5nIHRvIGJlIHNlbnQuAFBPdXRib3VuZFhjbXBNZXNzYWdlcwEBCAIFCQsNCwQABLwgVGhlIG1lc3NhZ2VzIG91dGJvdW5kIGluIGEgZ2l2ZW4gWENNUCBjaGFubmVsLgA4U2lnbmFsTWVzc2FnZXMBAQQCoA0LBAAEoCBBbnkgc2lnbmFsIG1lc3NhZ2VzIHdhaXRpbmcgdG8gYmUgc2VudC4ALFF1ZXVlQ29uZmlnAQARCzAgAAAAMAAAAAgAAAAEFQEgVGhlIGNvbmZpZ3VyYXRpb24gd2hpY2ggY29udHJvbHMgdGhlIGR5bmFtaWNzIG9mIHRoZSBvdXRib3VuZCBxdWV1ZS4AOFF1ZXVlU3VzcGVuZGVkAQBdAQQABEEBIFdoZXRoZXIgb3Igbm90IHRoZSBYQ01QIHF1ZXVlIGlzIHN1c3BlbmRlZCBmcm9tIGV4ZWN1dGluZyBpbmNvbWluZyBYQ01zIG9yIG5vdC4ARERlbGl2ZXJ5RmVlRmFjdG9yAQEEBaAZBUAAAGSns7bgDQAAAAAAAAAABMQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkuAAHBAQABKQgADExNYXhJbmJvdW5kU3VzcGVuZGVkOBDoAwAAFEkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gYmUgc3VzcGVuZGVkIHNpbXVsdGFuZW91c2x5LgBdASBBbnkgZnVydGhlciBjaGFubmVsIHN1c3BlbnNpb25zIHdpbGwgZmFpbCBhbmQgbWVzc2FnZXMgbWF5IGdldCBkcm9wcGVkIHdpdGhvdXQgZnVydGhlckUBIG5vdGljZS4gQ2hvb3NpbmcgYSBoaWdoIHZhbHVlICgxMDAwKSBpcyBva2F5OyB0aGUgdHJhZGUtb2ZmIHRoYXQgaXMgZGVzY3JpYmVkIGlu2CBbYEluYm91bmRYY21wU3VzcGVuZGVkYF0gc3RpbGwgYXBwbGllcyBhdCB0aGF0IHNjYWxlLgBkTWF4QWN0aXZlT3V0Ym91bmRDaGFubmVsczgQgAAAACBlASBNYXhpbWFsIG51bWJlciBvZiBvdXRib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGhhdmUgbWVzc2FnZXMgcXVldWVkIGF0IHRoZSBzYW1lIHRpbWUuAFUBIElmIHRoaXMgaXMgcmVhY2hlZCwgdGhlbiBubyBmdXJ0aGVyIG1lc3NhZ2VzIGNhbiBiZSBzZW50IHRvIGNoYW5uZWxzIHRoYXQgZG8gbm90IHlldF0BIGhhdmUgYSBtZXNzYWdlIHF1ZXVlZC4gVGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBleHBlY3RlZCBtYXhpbXVtIG9mIG91dGJvdW5kIGNoYW5uZWxzYQEgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSBbYFNlbGY6OkNoYW5uZWxJbmZvYF0uIEl0IGlzIGltcG9ydGFudCB0byBzZXQgdGhpcyBsYXJnZSBlbm91Z2gsXQEgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgcHJvdG9jb2wgd2lsbCBub3Qgd29yayBhcyBpbnRlbmRlZCBhbmQgbWVzc2FnZXNRASBtYXkgYmUgZHJvcHBlZC4gVGhpcyB2YWx1ZSBpbmNyZWFzZXMgdGhlIFBvViBhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgYmUgcGlja2VkIHRvb00BIGhpZ2guIEdvdmVybmFuY2UgbmVlZHMgdG8gcGF5IGF0dGVudGlvbiB0byBub3Qgb3BlbiBtb3JlIGNoYW5uZWxzIHRoYW4gdGhpcyB2YWx1ZS4ALE1heFBhZ2VTaXplOBAAnAEAFLggVGhlIG1heGltYWwgcGFnZSBzaXplIGZvciBIUk1QIG1lc3NhZ2UgcGFnZXMuAGEBIEEgbG93ZXIgbGltaXQgY2FuIGJlIHNldCBkeW5hbWljYWxseSwgYnV0IHRoaXMgaXMgdGhlIGhhcmQtbGltaXQgZm9yIHRoZSBQb1Ygd29yc3QgY2FzZVUBIGJlbmNobWFya2luZy4gVGhlIGxpbWl0IGZvciB0aGUgc2l6ZSBvZiBhIG1lc3NhZ2UgaXMgc2xpZ2h0bHkgYmVsb3cgdGhpcywgc2luY2Ugc29tZbggb3ZlcmhlYWQgaXMgaW5jdXJyZWQgZm9yIGVuY29kaW5nIHRoZSBmb3JtYXQuAAEVCwAAAB4AACxQb2xrYWRvdFhjbQEsUG9sa2Fkb3RYY208MFF1ZXJ5Q291bnRlcgEAKCAAAAAAAAAAAASIIFRoZSBsYXRlc3QgYXZhaWxhYmxlIHF1ZXJ5IGluZGV4LgAcUXVlcmllcwABBAIoGQsEAARUIFRoZSBvbmdvaW5nIHF1ZXJpZXMuAChBc3NldFRyYXBzAQEEBkA4EAAAAAAQaCBUaGUgZXhpc3RpbmcgYXNzZXQgdHJhcHMuAGEBIEtleSBpcyB0aGUgYmxha2UyIDI1NiBoYXNoIG9mIChvcmlnaW4sIHZlcnNpb25lZCBgQXNzZXRzYCkgcGFpci4gVmFsdWUgaXMgdGhlIG51bWJlciBvZh0BIHRpbWVzIHRoaXMgcGFpciBoYXMgYmVlbiB0cmFwcGVkICh1c3VhbGx5IGp1c3QgMSBpZiBpdCBleGlzdHMgYXQgYWxsKS4AOFNhZmVYY21WZXJzaW9uAAA4BAAIYQEgRGVmYXVsdCB2ZXJzaW9uIHRvIGVuY29kZSBYQ00gd2hlbiBsYXRlc3QgdmVyc2lvbiBvZiBkZXN0aW5hdGlvbiBpcyB1bmtub3duLiBJZiBgTm9uZWAsPQEgdGhlbiB0aGUgZGVzdGluYXRpb25zIHdob3NlIFhDTSB2ZXJzaW9uIGlzIHVua25vd24gYXJlIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUuAEBTdXBwb3J0ZWRWZXJzaW9uAAEIBQItCzgEAATwIFRoZSBMYXRlc3QgdmVyc2lvbnMgdGhhdCB3ZSBrbm93IHZhcmlvdXMgbG9jYXRpb25zIHN1cHBvcnQuAEBWZXJzaW9uTm90aWZpZXJzAAEIBQItCygEAAQFASBBbGwgbG9jYXRpb25zIHRoYXQgd2UgaGF2ZSByZXF1ZXN0ZWQgdmVyc2lvbiBub3RpZmljYXRpb25zIGZyb20uAFBWZXJzaW9uTm90aWZ5VGFyZ2V0cwABCAUCLQsxCwQACHEBIFRoZSB0YXJnZXQgbG9jYXRpb25zIHRoYXQgYXJlIHN1YnNjcmliZWQgdG8gb3VyIHZlcnNpb24gY2hhbmdlcywgYXMgd2VsbCBhcyB0aGUgbW9zdCByZWNlbnSUIG9mIG91ciB2ZXJzaW9ucyB3ZSBpbmZvcm1lZCB0aGVtIG9mLgBUVmVyc2lvbkRpc2NvdmVyeVF1ZXVlAQA1CwQADGUBIERlc3RpbmF0aW9ucyB3aG9zZSBsYXRlc3QgWENNIHZlcnNpb24gd2Ugd291bGQgbGlrZSB0byBrbm93LiBEdXBsaWNhdGVzIG5vdCBhbGxvd2VkLCBhbmRxASB0aGUgYHUzMmAgY291bnRlciBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBzZW5kIHRvIHRoZSBkZXN0aW5hdGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsjCB3aGljaCBpcyB1c2VkIGFzIGEgcHJpb3JpdGl6YXRpb24uAEBDdXJyZW50TWlncmF0aW9uAABBCwQABJwgVGhlIGN1cnJlbnQgbWlncmF0aW9uJ3Mgc3RhZ2UsIGlmIGFueS4AVFJlbW90ZUxvY2tlZEZ1bmdpYmxlcwABDAUCAkULSQsEAATwIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gYSByZW1vdGUgY2hhaW4uADxMb2NrZWRGdW5naWJsZXMAAQQCBFkLBAAE4CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIHRoaXMgY2hhaW4uAFRYY21FeGVjdXRpb25TdXNwZW5kZWQBAF0BBAAEtCBHbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgA8U2hvdWxkUmVjb3JkWGNtAQBdAQQAHFkBIFdoZXRoZXIgb3Igbm90IGluY29taW5nIFhDTXMgKGJvdGggZXhlY3V0ZWQgbG9jYWxseSBhbmQgcmVjZWl2ZWQpIHNob3VsZCBiZSByZWNvcmRlZC7EIE9ubHkgb25lIFhDTSBwcm9ncmFtIHdpbGwgYmUgcmVjb3JkZWQgYXQgYSB0aW1lLikBIFRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBydW50aW1lIEFQSXMsIGFuZCBpdCdzIGFkdmlzZWQgaXQgc3RheXMgZmFsc2UNASBmb3IgYWxsIG90aGVyIHVzZSBjYXNlcywgc28gYXMgdG8gbm90IGRlZ3JhZGUgcmVndWxhciBwZXJmb3JtYW5jZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgAsUmVjb3JkZWRYY20AABUDBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgBEQXV0aG9yaXplZEFsaWFzZXMAAQQCyQFlCwQADGUBIE1hcCBvZiBhdXRob3JpemVkIGFsaWFzZXJzIG9mIGxvY2FsIG9yaWdpbnMuIEVhY2ggbG9jYWwgbG9jYXRpb24gY2FuIGF1dGhvcml6ZSBhIGxpc3Qgb2ZZASBvdGhlciBsb2NhdGlvbnMgdG8gYWxpYXMgaW50byBpdC4gRWFjaCBhbGlhc2VyIGlzIG9ubHkgdmFsaWQgdW50aWwgaXRzIGlubmVyIGBleHBpcnlgOCBibG9jayBudW1iZXIuAAHFAQgBArkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAgLZAVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAS0IABBEVW5pdmVyc2FsTG9jYXRpb24hAhgCCQIAoQ8EhCBUaGlzIGNoYWluJ3MgVW5pdmVyc2FsIExvY2F0aW9uLgBQQWR2ZXJ0aXNlZFhjbVZlcnNpb244EAUAAAAIJQEgVGhlIGxhdGVzdCBzdXBwb3J0ZWQgdmVyc2lvbiB0aGF0IHdlIGFkdmVydGlzZS4gR2VuZXJhbGx5IGp1c3Qgc2V0IGl0IHRvhCBgcGFsbGV0X3hjbTo6Q3VycmVudFhjbVZlcnNpb25gLgAoTWF4TG9ja2VyczgQCAAAAAQZASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9jYWwgWENNIGxvY2tzIHRoYXQgYSBzaW5nbGUgYWNjb3VudCBtYXkgaGF2ZS4AWE1heFJlbW90ZUxvY2tDb25zdW1lcnM4EAAAAAAE/CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGEgc2luZ2xlIHJlbW90ZSBsb2NrIG1heSBoYXZlLgABfQsEGAK8VXNlIGBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3JgIGluc3RlYWQBGDIwLjAuMAgsUnVudGltZUNhbGwgBGQgVGhlIHJ1bnRpbWUgYENhbGxgIHR5cGUucFJlbW90ZUxvY2tDb25zdW1lcklkZW50aWZpZXIQBMQgVGhlIElEIHR5cGUgZm9yIGxvY2FsIGNvbnN1bWVycyBvZiByZW1vdGUgbG9ja3MuAB8AAChDdW11bHVzWGNtAAHFAwABPQgAAAAAACAAAERUb0t1c2FtYVhjbVJvdXRlcgFEVG9LdXNhbWFYY21Sb3V0ZXIEGEJyaWRnZQEAhQtEAABkp7O24A0AAAAAAAAAAAAcaCBCcmlkZ2UgdGhhdCB3ZSBhcmUgdXNpbmcuAHEBICoqYnJpZGdlcy12MSoqIGFzc3VtcHRpb25zOiBhbGwgb3V0Ym91bmQgbWVzc2FnZXMgdGhyb3VnaCB0aGlzIHJvdXRlciBhcmUgdXNpbmcgc2luZ2xlIGxhbmVtASBhbmQgdG8gc2luZ2xlIHJlbW90ZSBjb25zZW5zdXMuIElmIHRoZXJlIGlzIHNvbWUgb3RoZXIgcmVtb3RlIGNvbnNlbnN1cyB0aGF0IHVzZXMgdGhlIHNhbWVhASBicmlkZ2UgaHViLCB0aGUgc2VwYXJhdGUgcGFsbGV0IGluc3RhbmNlIHNoYWxsIGJlIHVzZWQsIEluIGB2MmAgd2UnbGwgaGF2ZSBhbGwgcmVxdWlyZWRxASBwcmltaXRpdmVzIChsYW5lLWlkIGFrYSBicmlkZ2UtaWQsIGRlcml2ZWQgZnJvbSBYQ00gbG9jYXRpb25zKSB0byBzdXBwb3J0IG11bHRpcGxlICBicmlkZ2VzdCBieSB0aGUgc2FtZSBwYWxsZXQgaW5zdGFuY2UuAAHJAwABQQgAAAAAACIAADBNZXNzYWdlUXVldWUBME1lc3NhZ2VRdWV1ZQwwQm9va1N0YXRlRm9yAQEEBdEDiQt0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzCBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGFuZCBsYXN0IChub24tZW1wdHkpIHBhZ2VzLgAsU2VydmljZUhlYWQAANEDBAAEvCBUaGUgb3JpZ2luIGF0IHdoaWNoIHdlIHNob3VsZCBiZWdpbiBzZXJ2aWNpbmcuABRQYWdlcwABCAUFlQuZCwQABIggVGhlIG1hcCBvZiBwYWdlIGluZGljZXMgdG8gcGFnZXMuAAHNAwABRQgAECBIZWFwU2l6ZTgQAAABABQ9ASBUaGUgc2l6ZSBvZiB0aGUgcGFnZTsgdGhpcyBpbXBsaWVzIHRoZSBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZSB3aGljaCBjYW4gYmUgc2VudC4AWQEgQSBnb29kIHZhbHVlIGRlcGVuZHMgb24gdGhlIGV4cGVjdGVkIG1lc3NhZ2Ugc2l6ZXMsIHRoZWlyIHdlaWdodHMsIHRoZSB3ZWlnaHQgdGhhdCBpc10BIGF2YWlsYWJsZSBmb3IgcHJvY2Vzc2luZyB0aGVtIGFuZCB0aGUgbWF4aW1hbCBuZWVkZWQgbWVzc2FnZSBzaXplLiBUaGUgbWF4aW1hbCBtZXNzYWdlEQEgc2l6ZSBpcyBzbGlnaHRseSBsb3dlciB0aGFuIHRoaXMgYXMgZGVmaW5lZCBieSBbYE1heE1lc3NhZ2VMZW5PZmBdLgAgTWF4U3RhbGU4EAgAAAAMXQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWxlIHBhZ2VzIChpLmUuIG9mIG92ZXJ3ZWlnaHQgbWVzc2FnZXMpIGFsbG93ZWQgYmVmb3JlIGN1bGxpbmdRASBjYW4gaGFwcGVuLiBPbmNlIHRoZXJlIGFyZSBtb3JlIHN0YWxlIHBhZ2VzIHRoYW4gdGhpcywgdGhlbiBoaXN0b3JpY2FsIHBhZ2VzIG1heSBiZfwgZHJvcHBlZCwgZXZlbiBpZiB0aGV5IGNvbnRhaW4gdW5wcm9jZXNzZWQgb3ZlcndlaWdodCBtZXNzYWdlcy4ANFNlcnZpY2VXZWlnaHQRASwBBwAQpdToAgBAARhBASBUaGUgYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB3aGljaCBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yqCBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2luaXRpYWxpemVgLgD8IFRoaXMgbWF5IGJlIGxlZ2l0aW1hdGVseSBgTm9uZWAgaW4gdGhlIGNhc2UgdGhhdCB5b3Ugd2lsbCBjYWxsXQEgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBtYW51YWxseSBvciBzZXQgW2BTZWxmOjpJZGxlTWF4U2VydmljZVdlaWdodGBdIHRvIGhhdmVUIGl0IHJ1biBpbiBgb25faWRsZWAuAFBJZGxlTWF4U2VydmljZVdlaWdodBEBLAEHABCl1OgCAEABFF0BIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgdG8gYmUgdXNlZCBmcm9tIHJlbWFpbmluZyB3ZWlnaHQgYG9uX2lkbGVgIHdoaWNoQQEgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvciBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2lkbGVgLj0BIFVzZWZ1bCBmb3IgcGFyYWNoYWlucyB0byBwcm9jZXNzIG1lc3NhZ2VzIGF0IHRoZSBzYW1lIGJsb2NrIHRoZXkgYXJlIHJlY2VpdmVkLgApASBJZiBgTm9uZWAsIGl0IHdpbGwgbm90IGNhbGwgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBpbiBgb25faWRsZWAuAAGhCwAEEFNpemU4BFQgUGFnZS9oZWFwIHNpemUgdHlwZS4AIwAAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAFgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kBExFeHBvcnRPcGVyYXRpbmdNb2RlAQDZAwQABNggVGhlIGN1cnJlbnQgb3BlcmF0aW5nIG1vZGUgZm9yIGV4cG9ydGluZyB0byBFdGhlcmV1bS4AAdUDAAFNCAAAAaULAAAAJAAAHFV0aWxpdHkAAeUDAAFRCAAETGJhdGNoZWRfY2FsbHNfbGltaXQ4EKoqAAAEqCBUaGUgbGltaXQgb24gdGhlIG51bWJlciBvZiBiYXRjaGVkIGNhbGxzLgABqQsACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLjRQYWxsZXRzT3JpZ2lu8QME8CBUaGUgY2FsbGVyIG9yaWdpbiwgb3ZlcmFyY2hpbmcgdHlwZSBvZiBhbGwgcGFsbGV0cyBvcmlnaW5zLgAoAAAgTXVsdGlzaWcBIE11bHRpc2lnBCRNdWx0aXNpZ3MAAQgFAq0LsQsEAASUIFRoZSBzZXQgb2Ygb3BlbiBtdWx0aXNpZyBvcGVyYXRpb25zLgABDQQAAVUIAAwsRGVwb3NpdEJhc2VZAUAA27t3AAAAAAAAAAAAAAAAGFkBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24gb3IgdG+EIHN0b3JlIGEgZGlzcGF0Y2ggY2FsbCBmb3IgbGF0ZXIuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpczEBIGA0ICsgc2l6ZW9mKChCbG9ja051bWJlciwgQmFsYW5jZSwgQWNjb3VudElkKSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpc4AgYDMyICsgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLgA0RGVwb3NpdEZhY3RvclkBQADUMAAAAAAAAAAAAAAAAAAMVQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHVuaXQgdGhyZXNob2xkIHdoZW4gY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24uACUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIG1vcmUgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgA4TWF4U2lnbmF0b3JpZXM4EGQAAAAE7CBUaGUgbWF4aW11bSBhbW91bnQgb2Ygc2lnbmF0b3JpZXMgYWxsb3dlZCBpbiB0aGUgbXVsdGlzaWcuAAG5CwAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuACkAABRQcm94eQEUUHJveHkIHFByb3hpZXMBAQQFBL0LRAAAAAAAAAAAAAAAAAAAAAAACEUBIFRoZSBzZXQgb2YgYWNjb3VudCBwcm94aWVzLiBNYXBzIHRoZSBhY2NvdW50IHdoaWNoIGhhcyBkZWxlZ2F0ZWQgdG8gdGhlIGFjY291bnRzIQEgd2hpY2ggYXJlIGJlaW5nIGRlbGVnYXRlZCB0bywgdG9nZXRoZXIgd2l0aCB0aGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdC4ANEFubm91bmNlbWVudHMBAQQFBM0LRAAAAAAAAAAAAAAAAAAAAAAABKwgVGhlIGFubm91bmNlbWVudHMgbWFkZSBieSB0aGUgcHJveHkgKGtleSkuAAEZBAABWQgAGEBQcm94eURlcG9zaXRCYXNlWQFAAJ1ydwAAAAAAAAAAAAAAABARASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgcHJveHkuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpcyUBIGBzaXplb2YoQmFsYW5jZSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpcyBgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLgBIUHJveHlEZXBvc2l0RmFjdG9yWQFAoFoyAAAAAAAAAAAAAAAAABS8IFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBwcm94eSBhZGRlZC4ANQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgcGx1cyBhbiBpbnN0YW5jZSBvZiBgUHJveHlUeXBlYCBtb3JlIGludG8gYWEBIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLiBUaHVzLCB3aGVuIGNvbmZpZ3VyaW5nIGBQcm94eURlcG9zaXRGYWN0b3JgIG9uZSBzaG91bGQgdGFrZfQgaW50byBhY2NvdW50IGAzMiArIHByb3h5X3R5cGUuZW5jb2RlKCkubGVuKClgIGJ5dGVzIG9mIGRhdGEuAChNYXhQcm94aWVzOBAgAAAABPAgVGhlIG1heGltdW0gYW1vdW50IG9mIHByb3hpZXMgYWxsb3dlZCBmb3IgYSBzaW5nbGUgYWNjb3VudC4AKE1heFBlbmRpbmc4ECAAAAAERQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUtZGVsYXllZCBhbm5vdW5jZW1lbnRzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGVuZGluZy4AXEFubm91bmNlbWVudERlcG9zaXRCYXNlWQFAANJ+dwAAAAAAAAAAAAAAABAxASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGFuIGFubm91bmNlbWVudC4ASQEgVGhpcyBpcyBoZWxkIHdoZW4gYSBuZXcgc3RvcmFnZSBpdGVtIGhvbGRpbmcgYSBgQmFsYW5jZWAgaXMgY3JlYXRlZCAodHlwaWNhbGx5IDE2ICBieXRlcykuAGRBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yWQFAQLVkAAAAAAAAAAAAAAAAABDUIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBhbm5vdW5jZW1lbnQgbWFkZS4AWQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgYW4gYEFjY291bnRJZGAsIGBIYXNoYCBhbmQgYEJsb2NrTnVtYmVyYCAodHlwaWNhbGx5IDY4IGJ5dGVzKYwgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgAB3QsACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLiRQcm94eVR5cGUhBBBVASBBIGtpbmQgb2YgcHJveHk7IHNwZWNpZmllZCB3aXRoIHRoZSBwcm94eSBhbmQgcGFzc2VkIGluIHRvIHRoZSBgSXNQcm94eWFibGVgIGZpbHRlci5RASBUaGUgaW5zdGFuY2UgZmlsdGVyIGRldGVybWluZXMgd2hldGhlciBhIGdpdmVuIGNhbGwgbWF5IGJlIHByb3hpZWQgdW5kZXIgdGhpcyB0eXBlLgBNASBJTVBPUlRBTlQ6IGBEZWZhdWx0YCBtdXN0IGJlIHByb3ZpZGVkIGFuZCBNVVNUIEJFIHRoZSB0aGUgKm1vc3QgcGVybWlzc2l2ZSogdmFsdWUuCBgJ14NGcnoO9YwPoDuvoyPLxRSI2SoapxN7A7+1DvwXRGNoZWNrX3Blcm1pc3Npb25zCBBjYWxsIChwcm94eV90eXBlIQRdAQT0IENoZWNrIGlmIGEgYFJ1bnRpbWVDYWxsYCBpcyBhbGxvd2VkIGZvciBhIGdpdmVuIGBQcm94eVR5cGVgLgAYCdeDRnJ6DvWMD6A7r6MjFxSwYH1irwo7OwrSxdVcWCxpc19zdXBlcnNldAggdG9fY2hlY2shBBxhZ2FpbnN0IQRdAQT0IENoZWNrIGlmIG9uZSBgUHJveHlUeXBlYCBpcyBhIHN1YnNldCBvZiBhbm90aGVyIGBQcm94eVR5cGVgLgAqAAAcSW5kaWNlcwEcSW5kaWNlcwQgQWNjb3VudHMAAQQCOOELBAAEiCBUaGUgbG9va3VwIGZyb20gaW5kZXggdG8gYWNjb3VudC4AASUEAAFhCAAEHERlcG9zaXRZAUAA0n53AAAAAAAAAAAAAAAABKwgVGhlIGRlcG9zaXQgbmVlZGVkIGZvciByZXNlcnZpbmcgYW4gaW5kZXguAAHlCwAEMEFjY291bnRJbmRleDgIVQEgVHlwZSB1c2VkIGZvciBzdG9yaW5nIGFuIGFjY291bnQncyBpbmRleDsgaW1wbGllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWNjb3VudHMgdGhlRCBzeXN0ZW0gY2FuIGhvbGQuACsAABhBc3NldHMBGEFzc2V0cxgUQXNzZXQAAQQCOOkLBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAIC8Qv1CwQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICAgEMBQwEAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAjgJDFAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCOC0EBAAE/CBNYXBzIGFuIGFzc2V0IHRvIGEgbGlzdCBvZiBpdHMgY29uZmlndXJlZCByZXNlcnZlIGluZm9ybWF0aW9uLgAsTmV4dEFzc2V0SWQAADgEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgABKQQAAWUIABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0WQFAwH5XeAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXRZAUAA/k13AAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZVkBQIBWnXcAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGVZAUCghgEAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXRZAUAA4fUFAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AAREMABQcQmFsYW5jZVkBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZDgEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXJkHFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGEQBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QaCpZ1Rq55IqMjMQY/5cI0qcCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWQ4FQwEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkOEkEBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0i6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZDgZDATAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNJk9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZDgxBATUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4AMgAAHFVuaXF1ZXMBHFVuaXF1ZXMoFENsYXNzAAEEAjgdDAQABGQgRGV0YWlscyBvZiBhIGNvbGxlY3Rpb24uAExPd25lcnNoaXBBY2NlcHRhbmNlAAEEAgQ4BAAEKQEgVGhlIGNvbGxlY3Rpb24sIGlmIGFueSwgb2Ygd2hpY2ggYW4gYWNjb3VudCBpcyB3aWxsaW5nIHRvIHRha2Ugb3duZXJzaGlwLgAcQWNjb3VudAABDAICAiEMEAQACFkBIFRoZSBpdGVtcyBoZWxkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgaXRlbXMgb3duZWQgYnkgYSBzaW5nbGVsIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuADBDbGFzc0FjY291bnQAAQgCAn0FEAQACGkBIFRoZSBjb2xsZWN0aW9ucyBvd25lZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGNvbGxlY3Rpb25zIG93bmVkIGJ5kCBhIHNpbmdsZSBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgAUQXNzZXQAAQgCAtAlDAQABNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuADxDbGFzc01ldGFkYXRhT2YAAQQCOCkMBAAEaCBNZXRhZGF0YSBvZiBhIGNvbGxlY3Rpb24uAEhJbnN0YW5jZU1ldGFkYXRhT2YAAQgCAtAtDAQABFQgTWV0YWRhdGEgb2YgYW4gaXRlbS4AJEF0dHJpYnV0ZQABDAICAjEMNQwEAARwIEF0dHJpYnV0ZXMgb2YgYSBjb2xsZWN0aW9uLgAsSXRlbVByaWNlT2YAAQgCAtA5DAQABHAgUHJpY2Ugb2YgYW4gYXNzZXQgaW5zdGFuY2UuAExDb2xsZWN0aW9uTWF4U3VwcGx5AAEEAjg4BAAE8CBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBtaWdodCBoYXZlLgABNQQAAWkIACBEQ29sbGVjdGlvbkRlcG9zaXRZAUAA6HZIFwAAAAAAAAAAAAAABAEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBjb2xsZWN0aW9uLgAsSXRlbURlcG9zaXRZAUAA4fUFAAAAAAAAAAAAAAAABPQgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGl0ZW0uAExNZXRhZGF0YURlcG9zaXRCYXNlWQFAoGr6dwAAAAAAAAAAAAAAAARNASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGl0ZW0uAFBBdHRyaWJ1dGVEZXBvc2l0QmFzZVkBQACUNXcAAAAAAAAAAAAAAAAEVQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgYW4gYXR0cmlidXRlIHRvIGFuIGl0ZW0uADhEZXBvc2l0UGVyQnl0ZVkBQKCGAQAAAAAAAAAAAAAAAAAIWQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHN0b3JlIGluIG1ldGFkYXRhLMAgZWl0aGVyICJub3JtYWwiIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZSBtZXRhZGF0YS4ALFN0cmluZ0xpbWl0OBCAAAAABLAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGRhdGEgc3RvcmVkIG9uLWNoYWluLgAgS2V5TGltaXQ4ECAAAAAEoCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIGtleS4AKFZhbHVlTGltaXQ4EEAAAAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIHZhbHVlLgABPQwACDBDb2xsZWN0aW9uSWQ4BJwgSWRlbnRpZmllciBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgaXRlbS4YSXRlbUlkOAT0IFRoZSB0eXBlIHVzZWQgdG8gaWRlbnRpZnkgYSB1bmlxdWUgaXRlbSB3aXRoaW4gYSBjb2xsZWN0aW9uLgAzAAAQTmZ0cwEQTmZ0czwoQ29sbGVjdGlvbgABBAI4QQwEAARkIERldGFpbHMgb2YgYSBjb2xsZWN0aW9uLgBMT3duZXJzaGlwQWNjZXB0YW5jZQABBAIEOAQABCkBIFRoZSBjb2xsZWN0aW9uLCBpZiBhbnksIG9mIHdoaWNoIGFuIGFjY291bnQgaXMgd2lsbGluZyB0byB0YWtlIG93bmVyc2hpcC4AHEFjY291bnQAAQwCAgIhDBAEAAhZASBUaGUgaXRlbXMgaGVsZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGl0ZW1zIG93bmVkIGJ5IGEgc2luZ2xlbCBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgBEQ29sbGVjdGlvbkFjY291bnQAAQgCAn0FEAQACGkBIFRoZSBjb2xsZWN0aW9ucyBvd25lZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGNvbGxlY3Rpb25zIG93bmVkIGJ5kCBhIHNpbmdsZSBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgBAQ29sbGVjdGlvblJvbGVPZgABCAIC8QtFDAQACNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuoCBTdG9yZXMgY29sbGVjdGlvbiByb2xlcyBhcyBwZXIgYWNjb3VudC4AEEl0ZW0AAQgCAtBNDAQABNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuAFBDb2xsZWN0aW9uTWV0YWRhdGFPZgABBAI4ZQwEAARoIE1ldGFkYXRhIG9mIGEgY29sbGVjdGlvbi4AOEl0ZW1NZXRhZGF0YU9mAAEIAgLQaQwEAARUIE1ldGFkYXRhIG9mIGFuIGl0ZW0uACRBdHRyaWJ1dGUAARACAgICcQx1DAQABHAgQXR0cmlidXRlcyBvZiBhIGNvbGxlY3Rpb24uACxJdGVtUHJpY2VPZgABCAIC0DkMBAAEUCBBIHByaWNlIG9mIGFuIGl0ZW0uAGRJdGVtQXR0cmlidXRlc0FwcHJvdmFsc09mAQEIAgLQfQwEAARoIEl0ZW0gYXR0cmlidXRlIGFwcHJvdmFscy4AQE5leHRDb2xsZWN0aW9uSWQAADgEAAgxASBTdG9yZXMgdGhlIGBDb2xsZWN0aW9uSWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgY29sbGVjdGlvbi7wIFRoaXMgZ2V0cyBpbmNyZW1lbnRlZCB3aGVuZXZlciBhIG5ldyBjb2xsZWN0aW9uIGlzIGNyZWF0ZWQuADRQZW5kaW5nU3dhcE9mAAEIAgLQhQwEAAR8IEhhbmRsZXMgYWxsIHRoZSBwZW5kaW5nIHN3YXBzLgBIQ29sbGVjdGlvbkNvbmZpZ09mAAEEAjhRBAQABGAgQ29uZmlnIG9mIGEgY29sbGVjdGlvbi4AMEl0ZW1Db25maWdPZgABCAIC0HkEBAAETCBDb25maWcgb2YgYW4gaXRlbS4AAU0EAAFtCAA4RENvbGxlY3Rpb25EZXBvc2l0WQFAQPH7dwAAAAAAAAAAAAAAAAQBASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgY29sbGVjdGlvbi4ALEl0ZW1EZXBvc2l0WQFAEDIBAwAAAAAAAAAAAAAAAAT0IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBpdGVtLgBMTWV0YWRhdGFEZXBvc2l0QmFzZVkBQBBx/wsAAAAAAAAAAAAAAAAETQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBpdGVtLgBQQXR0cmlidXRlRGVwb3NpdEJhc2VZAUAAwusLAAAAAAAAAAAAAAAABFUBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIGFuIGF0dHJpYnV0ZSB0byBhbiBpdGVtLgA4RGVwb3NpdFBlckJ5dGVZAUCghgEAAAAAAAAAAAAAAAAACFkBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZSBpbiBtZXRhZGF0YSzAIGVpdGhlciAibm9ybWFsIiBtZXRhZGF0YSBvciBhdHRyaWJ1dGUgbWV0YWRhdGEuACxTdHJpbmdMaW1pdDgQAAEAAASwIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkYXRhIHN0b3JlZCBvbi1jaGFpbi4AIEtleUxpbWl0OBBAAAAABKAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSBrZXkuAChWYWx1ZUxpbWl0OBAAAQAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSB2YWx1ZS4AOEFwcHJvdmFsc0xpbWl0OBAUAAAABKggVGhlIG1heGltdW0gYXBwcm92YWxzIGFuIGl0ZW0gY291bGQgaGF2ZS4AcEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxzTGltaXQ4EB4AAAAE1CBUaGUgbWF4aW11bSBhdHRyaWJ1dGVzIGFwcHJvdmFscyBhbiBpdGVtIGNvdWxkIGhhdmUuABxNYXhUaXBzOBAKAAAABKggVGhlIG1heCBudW1iZXIgb2YgdGlwcyBhIHVzZXIgY291bGQgc2VuZC4ATE1heERlYWRsaW5lRHVyYXRpb244EAAaTwAEqCBUaGUgbWF4IGR1cmF0aW9uIGluIGJsb2NrcyBmb3IgZGVhZGxpbmVzLgBQTWF4QXR0cmlidXRlc1BlckNhbGw4EAoAAAAE4CBUaGUgbWF4IG51bWJlciBvZiBhdHRyaWJ1dGVzIGEgdXNlciBjb3VsZCBzZXQgcGVyIGNhbGwuACBGZWF0dXJlc4kMIAAAAAAAAAAABJAgRGlzYWJsZXMgc29tZSBvZiBwYWxsZXQncyBmZWF0dXJlcy4AAZEMAAwwQ29sbGVjdGlvbklkOCScIElkZW50aWZpZXIgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIGl0ZW0uAEkBIFNBRkVUWTogVGhlIGZ1bmN0aW9ucyBpbiB0aGUgYEluY3JlbWVudGFibGVgIHRyYWl0IGFyZSBmYWxsaWJsZS4gSWYgdGhlIGZ1bmN0aW9uc0EBIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBib3RoIHJldHVybiBgTm9uZWAsIHRoZSBhdXRvbWF0aWMgQ29sbGVjdGlvbklkIGdlbmVyYXRpb24pASBzaG91bGQgbm90IGJlIHVzZWQuIFNvIHRoZSBgY3JlYXRlYCBhbmQgYGZvcmNlX2NyZWF0ZWAgZXh0cmluc2ljcyBhbmQgdGhlTQEgYGNyZWF0ZV9jb2xsZWN0aW9uYCBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBgVW5rbm93bkNvbGxlY3Rpb25gIEVycm9yLiBJbnN0ZWFkIHVzZUEBIHRoZSBgY3JlYXRlX2NvbGxlY3Rpb25fd2l0aF9pZGAgZnVuY3Rpb24uIEhvd2V2ZXIsIGlmIHRoZSBgSW5jcmVtZW50YWJsZWAgdHJhaXRJASBpbXBsZW1lbnRhdGlvbiBoYXMgYW4gaW5jcmVtZW50YWwgb3JkZXIsIHRoZSBgY3JlYXRlX2NvbGxlY3Rpb25fd2l0aF9pZGAgZnVuY3Rpb278IHNob3VsZCBub3QgYmUgdXNlZCBhcyBpdCBjYW4gY2xhaW0gYSB2YWx1ZSBpbiB0aGUgSUQgc2VxdWVuY2UuGEl0ZW1JZDgE9CBUaGUgdHlwZSB1c2VkIHRvIGlkZW50aWZ5IGEgdW5pcXVlIGl0ZW0gd2l0aGluIGEgY29sbGVjdGlvbi5ET2ZmY2hhaW5TaWduYXR1cmWhBAxoIE9mZi1DaGFpbiBzaWduYXR1cmUgdHlwZS4ACQEgQ2FuIHZlcmlmeSB3aGV0aGVyIGFuIGBTZWxmOjpPZmZjaGFpblB1YmxpY2AgY3JlYXRlZCBhIHNpZ25hdHVyZS4ANAAANEZvcmVpZ25Bc3NldHMBNEZvcmVpZ25Bc3NldHMYFEFzc2V0AAEEAh0C6QsEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgKVDPULBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICmQwFDAQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCHQKdDFAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCHQKxBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAAdAgQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAGtBAABdQgAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXRZAUDAfld4AAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdFkBQAD+TXcAAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlWQFAgFaddwAAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZVkBQKCGAQAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdFkBQADh9QUAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABpQwAFBxCYWxhbmNlWQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkHQIEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXIdAhxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhtQQE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhAw5kpWAm9LXjwtGWKDqaF9pwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZB0CFQwEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgAw5kpWAm9LXjwtGWKDqaF9UxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkHQJJBAS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuADDmSlYCb0tePC0ZYoOpoX0uh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWQdAqkMBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AMOZKVgJvS148LRlig6mhfWT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkHQK5BATUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4ANQAAKFBvb2xBc3NldHMBKFBvb2xBc3NldHMYFEFzc2V0AAEEAjjpCwQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAvEL9QsEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgIBDAUMBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4rQxQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjgtBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAb0EAAF5CAAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdFkBQAAAAAAAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0WQFAAP5NdwAAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2VZAUAAAAAAAAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlWQFAAAAAAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0WQFAAOH1BQAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAG1DAAUHEJhbGFuY2VZAQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQ4BIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVyOBxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhEAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEE2wa6HKbxix7bBv8ILSRAmnApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkOBUMBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECVMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZDhJBAS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAkuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWQ4uQwEwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQ4MQQE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuADYAADxBc3NldENvbnZlcnNpb24BPEFzc2V0Q29udmVyc2lvbggUUG9vbHMAAQQCgQi9DAQACGkBIE1hcCBmcm9tIGBQb29sQXNzZXRJZGAgdG8gYFBvb2xJbmZvYC4gVGhpcyBlc3RhYmxpc2hlcyB3aGV0aGVyIGEgcG9vbCBoYXMgYmVlbiBvZmZpY2lhbGx5PQEgY3JlYXRlZCByYXRoZXIgdGhhbiBwZW9wbGUgc2VuZGluZyB0b2tlbnMgZGlyZWN0bHkgdG8gYSBwb29sJ3MgcHVibGljIGFjY291bnQuADxOZXh0UG9vbEFzc2V0SWQAADgEAAglASBTdG9yZXMgdGhlIGBQb29sQXNzZXRJZGAgdGhhdCBpcyBnb2luZyB0byBiZSB1c2VkIGZvciB0aGUgbmV4dCBscCB0b2tlbi7kIFRoaXMgZ2V0cyBpbmNyZW1lbnRlZCB3aGVuZXZlciBhIG5ldyBscCBwb29sIGlzIGNyZWF0ZWQuAAHBBAABfQgAHBRMUEZlZc0EELgLAAAEHQEgVGhlIGZyYWN0aW9uIG9mIGV2ZXJ5IHN3YXAgdGhhdCB0aGUgbGlxdWlkaXR5IHByb3ZpZGVycyB0YWtlIGFzIGEgZmVlLgAwUG9vbFNldHVwRmVlWQFAQC2T7wAAAAAAAAAAAAAAAASIIEEgb25lLXRpbWUgZmVlIHRvIHNldHVwIHRoZSBwb29sLgBEUG9vbFNldHVwRmVlQXNzZXQdAggBAAQ5ASBBc3NldCBjbGFzcyBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSB1c2VkIHRvIHBheSB0aGUgW2BDb25maWc6OlBvb2xTZXR1cEZlZWBdLgBYTGlxdWlkaXR5V2l0aGRyYXdhbEZlZc0EEAAAAAAEhCBBIGZlZSB0byB3aXRoZHJhdyB0aGUgbGlxdWlkaXR5LgBATWludE1pbkxpcXVpZGl0eVkBQGQAAAAAAAAAAAAAAAAAAAAEPQEgVGhlIG1pbmltdW0gTFAgdG9rZW4gYW1vdW50IHRoYXQgY291bGQgYmUgbWludGVkLiBBbWVsaW9yYXRlcyByb3VuZGluZyBlcnJvcnMuAERNYXhTd2FwUGF0aExlbmd0aDgQAwAAAASIIFRoZSBtYXggbnVtYmVyIG9mIGhvcHMgaW4gYSBzd2FwLgAgUGFsbGV0SWSZCiBweS9hc2NvbgT0IFRoZSBwYWxsZXQncyBpZCwgdXNlZCBmb3IgZGVyaXZpbmcgaXRzIHNvdmVyZWlnbiBhY2NvdW50IElELgABwQwACCRBc3NldEtpbmQdAghdASBUeXBlIG9mIGFzc2V0IGNsYXNzLCBzb3VyY2VkIGZyb20gW2BDb25maWc6OkFzc2V0c2BdLCB1dGlsaXplZCB0byBvZmZlciBsaXF1aWRpdHkgdG8gYRggcG9vbC4YUG9vbElkgQgEbCBMaXF1aWRpdHkgcG9vbCBpZGVudGlmaWVyLgy1JgbagNAqs3RCg2ml8kbxS1pnVmbe//3TGtEv26r/4zBnZXRfcmVzZXJ2ZXMIGGFzc2V0MR0CGGFzc2V0Mh0CxQwIvCBSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGVhY2ggYXNzZXQgaW4gdGhlIHBvb2wuVQEgVGhlIHR1cGxlIHJlc3VsdCBpcyBpbiB0aGUgb3JkZXIgcmVxdWVzdGVkIChub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgcG9vbCBvcmRlcikuALUmBtqA0CqzdEKDaaXyRvF454NwvdVcmGRJvGzVUBALjHF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zEBhhc3NldDEdAhhhc3NldDIdAhhhbW91bnRZASxpbmNsdWRlX2ZlZV0BSQQcEQEgR2V0cyBhIHF1b3RlIGZvciBzd2FwcGluZyBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MWAgZm9yIGBhc3NldDJgLgA1ASBJZiBgaW5jbHVkZV9mZWVgIGlzIHRydWUsIHRoZSBxdW90ZSB3aWxsIGluY2x1ZGUgdGhlIGxpcXVpZGl0eSBwcm92aWRlciBmZWUuEQEgSWYgdGhlIHBvb2wgZG9lcyBub3QgZXhpc3Qgb3IgaGFzIG5vIGxpcXVpZGl0eSwgYE5vbmVgIGlzIHJldHVybmVkLjkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQusCAoVXNlIGBhbW91bnRfb3V0X21pbmAgdG8gY29udHJvbCBzbGlwcGFnZS4pqCBSZXR1cm5zIGBTb21lKHF1b3RlZF9hbW91bnQpYCBvbiBzdWNjZXNzLgC1JgbagNAqs3RCg2ml8kbxKHkP75st419EjT7Dc5NpjYxxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxAYYXNzZXQxHQIYYXNzZXQyHQIYYW1vdW50WQEsaW5jbHVkZV9mZWVdAUkEHEEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYGFtb3VudGAgb2YgYGFzc2V0MWAgZm9yIGFuIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLqwgKFVzZSBgYW1vdW50X2luX21heGAgdG8gY29udHJvbCBzbGlwcGFnZS4pqCBSZXR1cm5zIGBTb21lKHF1b3RlZF9hbW91bnQpYCBvbiBzdWNjZXNzLgA3AAAMUHNtAQxQc20cDFBzbQABBAIdAs0MBAAE6CBSZWdpc3RlcmVkIFBTTSBpbnN0YW5jZXMsIGtleWVkIGJ5IHRoZSBpbnRlcm5hbCBhc3NldCBpZC4AIFBzbUFkbWluAAEEAh0C0QwEAAw5ASBBZG1pbiBvcmlnaW5zIGFuZCBjcmVhdGlvbi1kZXBvc2l0IGJvb2trZWVwaW5nIHBlciBQU00sIGtleWVkIGJ5IHRoZSBpbnRlcm5hbEEBIGFzc2V0IGlkLiBIZWxkIHNlcGFyYXRlbHkgZnJvbSBbYFBzbWBdIHNvIHN3YXBzIG5ldmVyIGRlY29kZSB0aGUgYWRtaW4gb3JpZ2lucy4pASBBbHdheXMgd3JpdHRlbiBhbmQgcmVtb3ZlZCB0b2dldGhlciB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIFtgUHNtYF0gZW50cnkuABxQc21EZWJ0AQEIAgKBCFkBQAAAAAAAAAAAAAAAAAAAAAAEJQEgSW50ZXJuYWwtYXNzZXQgZGVidCBtaW50ZWQgdGhyb3VnaCBQU00sIHBlciBgKGludGVybmFsLCBleHRlcm5hbClgIHBhaXIuAChNaW50aW5nRmVlAQEIAgKBCM0EEIgTAAAIQQEgRmVlIGZvciBleHRlcm5hbCDihpIgaW50ZXJuYWwgc3dhcHMgKG1pbnRpbmcpLCBwZXIgYChpbnRlcm5hbCwgZXh0ZXJuYWwpYCBwYWlyLkggRGVmYXVsdHMgdG8gMC41JS4ANFJlZGVtcHRpb25GZWUBAQgCAoEIzQQQiBMAAAhNASBGZWUgZm9yIGludGVybmFsIOKGkiBleHRlcm5hbCBzd2FwcyAocmVkZW1wdGlvbiksIHBlciBgKGludGVybmFsLCBleHRlcm5hbClgIHBhaXIuSCBEZWZhdWx0cyB0byAwLjUlLgBIQXNzZXRDZWlsaW5nV2VpZ2h0AQEIAgKBCM0EEAAAAAAIQQEgUGVyLWV4dGVybmFsIGNlaWxpbmcgd2VpZ2h0IHdpdGhpbiBhIFBTTSwgbm9ybWFsaXNlZCBhZ2FpbnN0IHRoZSBzdW0gb2Ygd2VpZ2h0cwEBIGZvciB0aGUgc2FtZSBpbnN0YW5jZS4gWmVybyBkaXNhYmxlcyBtaW50aW5nIGZvciB0aGF0IGV4dGVybmFsLgA4RXh0ZXJuYWxBc3NldHMAAQgCAoEI4QwEAASIIEFwcHJvdmVkIGV4dGVybmFsIGFzc2V0cyBwZXIgUFNNLgAByQQAAY0IAAggUGFsbGV0SWSZCiBweS9wZWdzbQT8IFBhbGxldElkIGZvciBkZXJpdmluZyBlYWNoIFBTTSBpbnN0YW5jZSdzIHJlc2VydmUgc3ViLWFjY291bnQuADBNYXhFeHRlcm5hbHM4EAUAAAAE9CBNYXhpbXVtIG51bWJlciBvZiBhcHByb3ZlZCBleHRlcm5hbCBhc3NldHMgcGVyIFBTTSBpbnN0YW5jZS4AAeUMAAg0UGFsbGV0c09yaWdpbvEDCD0BIFRoZSBjYWxsZXIgb3JpZ2luLCBvdmVyYXJjaGluZyB0eXBlIG9mIGFsbCBwYWxsZXRzJyBvcmlnaW5zLiBTdG9yZWQgYXMgYSBQU00ncx0BIGBmdWxsX2FkbWluYCAvIGBlbWVyZ2VuY3lfYWRtaW5gIGFuZCBtYXRjaGVkIGFnYWluc3QgaW5jb21pbmcgb3JpZ2lucy4cQXNzZXRJZB0CBFwgQXNzZXQgaWRlbnRpZmllciB0eXBlLgA4AAAgVHJlYXN1cnkBIFRyZWFzdXJ5HDRQcm9wb3NhbENvdW50AQA4EAAAAAAQQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuAKQgTnVtYmVyIG9mIHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAkUHJvcG9zYWxzAAEEBTjpDAQAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgB8IFByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAsRGVhY3RpdmF0ZWQBAFkBQAAAAAAAAAAAAAAAAAAAAAAE8CBUaGUgYW1vdW50IHdoaWNoIGhhcyBiZWVuIHJlcG9ydGVkIGFzIGluYWN0aXZlIHRvIEN1cnJlbmN5LgAkQXBwcm92YWxzAQDtDAQAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgD4IFByb3Bvc2FsIGluZGljZXMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYnV0IG5vdCB5ZXQgYXdhcmRlZC4AKFNwZW5kQ291bnQBADgQAAAAAASkIFRoZSBjb3VudCBvZiBzcGVuZHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AGFNwZW5kcwABBAU48QwEAATQIFNwZW5kcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBhbmQgYmVpbmcgcHJvY2Vzc2VkLgA8TGFzdFNwZW5kUGVyaW9kAAA4BAAE1CBUaGUgYmxvY2tudW1iZXIgZm9yIHRoZSBsYXN0IHRyaWdnZXJlZCBzcGVuZCBwZXJpb2QuAAHVBAgDApUBVGhlIGBzcGVuZF9sb2NhbGAgY2FsbCB3aWxsIGJlIHJlbW92ZWQgYnkgTWF5IDIwMjUuIE1pZ3JhdGUgdG8gdGhlIG5ldyBmbG93IGFuZCB1c2UgdGhlIGBzcGVuZGAgY2FsbC4ABAK1AVRoZSBgcmVtb3ZlX2FwcHJvdmFsYCBjYWxsIHdpbGwgYmUgcmVtb3ZlZCBieSBNYXkgMjAyNS4gSXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXByZWNhdGVkIGBzcGVuZF9sb2NhbGAgY2FsbC4AAZEIABgsU3BlbmRQZXJpb2Q4EABGBQAEiCBQZXJpb2QgYmV0d2VlbiBzdWNjZXNzaXZlIHNwZW5kcy4AEEJ1cm7NBBAAAAAABBEBIFBlcmNlbnRhZ2Ugb2Ygc3BhcmUgZnVuZHMgKGlmIGFueSkgdGhhdCBhcmUgYnVybnQgcGVyIHNwZW5kIHBlcmlvZC4AIFBhbGxldElkmQogcHkvdHJzcnkEGQEgVGhlIHRyZWFzdXJ5J3MgcGFsbGV0IGlkLCB1c2VkIGZvciBkZXJpdmluZyBpdHMgc292ZXJlaWduIGFjY291bnQgSUQuADBNYXhBcHByb3ZhbHM4EGQAAAAYQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuABUBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcHByb3ZhbHMgdGhhdCBjYW4gd2FpdCBpbiB0aGUgc3BlbmRpbmcgcXVldWUuAE0BIE5PVEU6IFRoaXMgcGFyYW1ldGVyIGlzIGFsc28gdXNlZCB3aXRoaW4gdGhlIEJvdW50aWVzIFBhbGxldCBleHRlbnNpb24gaWYgZW5hYmxlZC4AMFBheW91dFBlcmlvZDgQgMYTAAQZASBUaGUgcGVyaW9kIGR1cmluZyB3aGljaCBhbiBhcHByb3ZlZCB0cmVhc3VyeSBzcGVuZCBoYXMgdG8gYmUgY2xhaW1lZC4ALHBvdF9hY2NvdW50BIBtb2RscHkvdHJzcnkAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgAB+QwACCRBc3NldEtpbmTZBAQtASBUeXBlIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGFzc2V0IGtpbmRzIHRvIGJlIHNwZW50IGZyb20gdGhlIHRyZWFzdXJ5LixCZW5lZmljaWFyed0EBF0BIFR5cGUgcGFyYW1ldGVyIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGJlbmVmaWNpYXJpZXMgZWxpZ2libGUgdG8gcmVjZWl2ZSB0cmVhc3VyeSBzcGVuZHMuADwAAEBDb252aWN0aW9uVm90aW5nAUBDb252aWN0aW9uVm90aW5nCCRWb3RpbmdGb3IBAQgFBf0MAQ3YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHUBIEFsbCB2b3RpbmcgZm9yIGEgcGFydGljdWxhciB2b3RlciBpbiBhIHBhcnRpY3VsYXIgdm90aW5nIGNsYXNzLiBXZSBzdG9yZSB0aGUgYmFsYW5jZSBmb3IgdGhlnCBudW1iZXIgb2Ygdm90ZXMgdGhhdCB3ZSBoYXZlIHJlY29yZGVkLgA0Q2xhc3NMb2Nrc0ZvcgEBBAUEIQ0EAAxpASBUaGUgdm90aW5nIGNsYXNzZXMgd2hpY2ggaGF2ZSBhIG5vbi16ZXJvIGxvY2sgcmVxdWlyZW1lbnQgYW5kIHRoZSBsb2NrIGFtb3VudHMgd2hpY2ggdGhleW0BIHJlcXVpcmUuIFRoZSBhY3R1YWwgYW1vdW50IGxvY2tlZCBvbiBiZWhhbGYgb2YgdGhpcyBwYWxsZXQgc2hvdWxkIGFsd2F5cyBiZSB0aGUgbWF4aW11bSBvZiwgdGhpcyBsaXN0LgAB4QQAAZUIAAggTWF4Vm90ZXM4EAACAAAQ8CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uY3VycmVudCB2b3RlcyBhbiBhY2NvdW50IG1heSBoYXZlLgBVASBBbHNvIHVzZWQgdG8gY29tcHV0ZSB3ZWlnaHQsIGFuIG92ZXJseSBsYXJnZSB2YWx1ZSBjYW4gbGVhZCB0byBleHRyaW5zaWNzIHdpdGggbGFyZ2XAIHdlaWdodCBlc3RpbWF0aW9uOiBzZWUgYGRlbGVnYXRlYCBmb3IgaW5zdGFuY2UuAERWb3RlTG9ja2luZ1BlcmlvZDgQwIkBABCQIFRoZSBtaW5pbXVtIHBlcmlvZCBvZiB2b3RlIGxvY2tpbmcuAGUBIEl0IHNob3VsZCBiZSBubyBzaG9ydGVyIHRoYW4gZW5hY3RtZW50IHBlcmlvZCB0byBlbnN1cmUgdGhhdCBpbiB0aGUgY2FzZSBvZiBhbiBhcHByb3ZhbCxJASB0aG9zZSBzdWNjZXNzZnVsIHZvdGVycyBhcmUgbG9ja2VkIGludG8gdGhlIGNvbnNlcXVlbmNlcyB0aGF0IHRoZWlyIHZvdGVzIGVudGFpbC4AAS0NAAAAPQAAJFJlZmVyZW5kYQEkUmVmZXJlbmRhFDxSZWZlcmVuZHVtQ291bnQBADgQAAAAAAQxASBUaGUgbmV4dCBmcmVlIHJlZmVyZW5kdW0gaW5kZXgsIGFrYSB0aGUgbnVtYmVyIG9mIHJlZmVyZW5kYSBzdGFydGVkIHNvIGZhci4ARFJlZmVyZW5kdW1JbmZvRm9yAAEEAjgxDQQABLQgSW5mb3JtYXRpb24gY29uY2VybmluZyBhbnkgZ2l2ZW4gcmVmZXJlbmR1bS4AKFRyYWNrUXVldWUBAQQF7QNRDQQAEF0BIFRoZSBzb3J0ZWQgbGlzdCBvZiByZWZlcmVuZGEgcmVhZHkgdG8gYmUgZGVjaWRlZCBidXQgbm90IHlldCBiZWluZyBkZWNpZGVkLCBvcmRlcmVkIGJ5fCBjb252aWN0aW9uLXdlaWdodGVkIGFwcHJvdmFscy4AQQEgVGhpcyBzaG91bGQgYmUgZW1wdHkgaWYgYERlY2lkaW5nQ291bnRgIGlzIGxlc3MgdGhhbiBgVHJhY2tJbmZvOjptYXhfZGVjaWRpbmdgLgA0RGVjaWRpbmdDb3VudAEBBAXtAzgQAAAAAATEIFRoZSBudW1iZXIgb2YgcmVmZXJlbmRhIGJlaW5nIGRlY2lkZWQgY3VycmVudGx5LgAoTWV0YWRhdGFPZgABBAI4QAQAGAUBIFRoZSBtZXRhZGF0YSBpcyBhIGdlbmVyYWwgaW5mb3JtYXRpb24gY29uY2VybmluZyB0aGUgcmVmZXJlbmR1bS5JASBUaGUgYEhhc2hgIHJlZmVycyB0byB0aGUgcHJlaW1hZ2Ugb2YgdGhlIGBQcmVpbWFnZXNgIHByb3ZpZGVyIHdoaWNoIGNhbiBiZSBhIEpTT06IIGR1bXAgb3IgSVBGUyBoYXNoIG9mIGEgSlNPTiBmaWxlLgB1ASBDb25zaWRlciBhIGdhcmJhZ2UgY29sbGVjdGlvbiBmb3IgYSBtZXRhZGF0YSBvZiBmaW5pc2hlZCByZWZlcmVuZHVtcyB0byBgdW5yZXF1ZXN0YCAocmVtb3ZlKUQgbGFyZ2UgcHJlaW1hZ2VzLgAB9QQAAZkIABREU3VibWlzc2lvbkRlcG9zaXRZAUAA6HZIFwAAAAAAAAAAAAAABDUBIFRoZSBtaW5pbXVtIGFtb3VudCB0byBiZSB1c2VkIGFzIGEgZGVwb3NpdCBmb3IgYSBwdWJsaWMgcmVmZXJlbmR1bSBwcm9wb3NhbC4AJE1heFF1ZXVlZDgQZAAAAATkIE1heGltdW0gc2l6ZSBvZiB0aGUgcmVmZXJlbmR1bSBxdWV1ZSBmb3IgYSBzaW5nbGUgdHJhY2suAERVbmRlY2lkaW5nVGltZW91dDgQwKgAAAhVASBUaGUgbnVtYmVyIG9mIGJsb2NrcyBhZnRlciBzdWJtaXNzaW9uIHRoYXQgYSByZWZlcmVuZHVtIG11c3QgYmVnaW4gYmVpbmcgZGVjaWRlZCBieS7kIE9uY2UgdGhpcyBwYXNzZXMsIHRoZW4gYW55b25lIG1heSBjYW5jZWwgdGhlIHJlZmVyZW5kdW0uADRBbGFybUludGVydmFsOBABAAAADF0BIFF1YW50aXphdGlvbiBsZXZlbCBmb3IgdGhlIHJlZmVyZW5kdW0gd2FrZXVwIHNjaGVkdWxlci4gQSBoaWdoZXIgbnVtYmVyIHdpbGwgcmVzdWx0IGluXQEgZmV3ZXIgc3RvcmFnZSByZWFkcy93cml0ZXMgbmVlZGVkIGZvciBzbWFsbGVyIHZvdGVycywgYnV0IGFsc28gcmVzdWx0IGluIGRlbGF5cyB0byB0aGVVASBhdXRvbWF0aWMgcmVmZXJlbmR1bSBzdGF0dXMgY2hhbmdlcy4gRXhwbGljaXQgc2VydmljaW5nIGluc3RydWN0aW9ucyBhcmUgdW5hZmZlY3RlZC4AGFRyYWNrc10NFRpAAABkcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgMakfo0DAAAAAAAAAAAAsAQAAAAnBgBAOAAAQDgAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAAAAMqaOwAAAAAAZc0dAQBkd2hpdGVsaXN0ZWRfY2FsbGVyAAAAAAAAAGQAAAAAQHoQ81oAAAAAAAAAAAAALAEAAAAnBgBkAAAAZAAAAALslyUQAAAAAHtXPBcAAAAAQjkvEgAAAAACDgCEAAAAAADW5h8BAAAAADlieQIAAAAAAgBkd2lzaF9mb3JfY2hhbmdlAAAAAAAAAAAAAAoAAAAAgPQg5rUAAAAAAAAAAAAAsAQAAAAnBgBAOAAAZAAAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAAAAMqaOwAAAAAAZc0dCgBkc3Rha2luZ19hZG1pbgAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////CwBkdHJlYXN1cmVyAAAAAAAAAAAAAAAAAAAAAAIAAAAAoDGpX+MAAAAAAAAAAAAAsAQAAAAnBgDAiQEAQDgAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAAAAMqaO4CWmAAAZc0dDABkbGVhc2VfYWRtaW4AAAAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////DQBkZmVsbG93c2hpcF9hZG1pbgAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////DgBkZ2VuZXJhbF9hZG1pbgAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAACWaL0AgAAAACjKWsFAAAAAC5rSv3/////DwBkYXVjdGlvbl9hZG1pbgAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAACWaL0AgAAAACjKWsFAAAAAC5rSv3/////FABkcmVmZXJlbmR1bV9jYW5jZWxsZXIAAAAAAPQBAAAAID2IeS0AAAAAAAAAAAAAsAQAAMCJAQAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////FQBkcmVmZXJlbmR1bV9raWxsZXIAAAAAAAAAAOgDAAAAQGNSv8YBAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////HgBkc21hbGxfdGlwcGVyAAAAAAAAAAAAAAAAAMgAAAAA5AtUAgAAAAAAAAAAAAAACgAAAMCJAQBkAAAACgAAAABJkUkVAGXNHQDKmjsC+boYAAAAAAAqTTEAAAAAAGtZ5///////HwBkYmlnX3RpcHBlcgAAAAAAAAAAAAAAAAAAAGQAAAAA6HZIFwAAAAAAAAAAAAAAZAAAAMCJAQBYAgAAZAAAAABJkUkVAGXNHQDKmjsCaU8/AAAAAAA1ln0AAAAAAOU0wf//////IABkc21hbGxfc3BlbmRlcgAAAAAAAAAAAAAAAAUAAAAAUDknjAQAAAAAAAAAAAAAYAkAAAAnBgCAcAAAQDgAAADJQzAkAGXNHQDKmjsCCrM6AAAAAABTrXUAAAAAADcLEgAAAAAAIQBkbWVkaXVtX3NwZW5kZXIAAAAAAAAAAAAAAAUAAAAAoHJOGAkAAAAAAAAAAAAAYAkAAAAnBgAA4QAAQDgAAABbAfYwAGXNHQDKmjsCIJ5pAAAAAABPd9IAAAAAAP4c5P//////IgBkYmlnX3NwZW5kZXIAAAAAAAAAAAAAAAAAAAMAAAAAID2IeS0AAAAAAAAAAAAAYAkAAAAnBgDAiQEAQDgAAAAAypo7AGXNHQDKmjsCzVhiAAAAAABbJMUAAAAAADVZEQAAAAAADEggQSBsaXN0IG9mIHRyYWNrcy4AXQEgTm90ZTogaWYgdGhlIHRyYWNrcyBhcmUgZHluYW1pYywgdGhlIHZhbHVlIGluIHRoZSBzdGF0aWMgbWV0YWRhdGEgbWlnaHQgYmUgaW5hY2N1cmF0ZS4AAXUNAAwsUnVudGltZUNhbGwgABRWb3Rlc1kBBMwgVGhlIGNvdW50aW5nIHR5cGUgZm9yIHZvdGVzLiBVc3VhbGx5IGp1c3QgYmFsYW5jZS4UVGFsbHmdCARMIFRoZSB0YWxseWluZyB0eXBlLgA+AAAcT3JpZ2lucwAAAAAAAAA/AAAkV2hpdGVsaXN0ASRXaGl0ZWxpc3QEPFdoaXRlbGlzdGVkQ2FsbAABBAVAEAQAAAABCQUAAaEIAAABeQ0ABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgBAAAAgQm91bnRpZXMBIEJvdW50aWVzECxCb3VudHlDb3VudAEAOBAAAAAABMAgTnVtYmVyIG9mIGJvdW50eSBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AIEJvdW50aWVzAAEEBTh9DQQABHggQm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ASEJvdW50eURlc2NyaXB0aW9ucwABBAU4hQ0EAASAIFRoZSBkZXNjcmlwdGlvbiBvZiBlYWNoIGJvdW50eS4APEJvdW50eUFwcHJvdmFscwEA7QwEAATsIEJvdW50eSBpbmRpY2VzIHRoYXQgaGF2ZSBiZWVuIGFwcHJvdmVkIGJ1dCBub3QgeWV0IGZ1bmRlZC4AAQ0FAAGxCAAkREJvdW50eURlcG9zaXRCYXNlWQFAAOh2SBcAAAAAAAAAAAAAAAToIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBwbGFjaW5nIGEgYm91bnR5IHByb3Bvc2FsLgBgQm91bnR5RGVwb3NpdFBheW91dERlbGF5OBAAAAAABFkBIFRoZSBkZWxheSBwZXJpb2QgZm9yIHdoaWNoIGEgYm91bnR5IGJlbmVmaWNpYXJ5IG5lZWQgdG8gd2FpdCBiZWZvcmUgY2xhaW0gdGhlIHBheW91dC4ASEJvdW50eVVwZGF0ZVBlcmlvZDgQAAQXAxj0IFRoZSB0aW1lIGxpbWl0IGZvciBhIGN1cmF0b3IgdG8gYWN0IGJlZm9yZSBhIGJvdW50eSBleHBpcmVzLgBVASBUaGUgcGVyaW9kIHRoYXQgc3RhcnRzIHdoZW4gYSBjdXJhdG9yIGlzIGFwcHJvdmVkLCBkdXJpbmcgd2hpY2ggdGhleSBtdXN0IGV4ZWN1dGUgb3JVASB1cGRhdGUgdGhlIGJvdW50eSB2aWEgYGV4dGVuZF9ib3VudHlfZXhwaXJ5YC4gSWYgbWlzc2VkLCB0aGUgYm91bnR5IGV4cGlyZXMsIGFuZCB0aGVVASBjdXJhdG9yIG1heSBiZSBzbGFzaGVkLiBJZiBgQmxvY2tOdW1iZXJGb3I6Ok1BWGAsIGJvdW50aWVzIHN0YXkgYWN0aXZlIGluZGVmaW5pdGVseSy4IHJlbW92aW5nIHRoZSBuZWVkIGZvciBgZXh0ZW5kX2JvdW50eV9leHBpcnlgLgBgQ3VyYXRvckRlcG9zaXRNdWx0aXBsaWVyzQQQIKEHABAZASBUaGUgY3VyYXRvciBkZXBvc2l0IGlzIGNhbGN1bGF0ZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBjdXJhdG9yIGZlZS4AOQEgVGhpcyBkZXBvc2l0IGhhcyBvcHRpb25hbCB1cHBlciBhbmQgbG93ZXIgYm91bmRzIHdpdGggYEN1cmF0b3JEZXBvc2l0TWF4YCBhbmRUIGBDdXJhdG9yRGVwb3NpdE1pbmAuAERDdXJhdG9yRGVwb3NpdE1heEkERAEAIEqp0QEAAAAAAAAAAAAABEkBIE1heGltdW0gYW1vdW50IG9mIGZ1bmRzIHRoYXQgc2hvdWxkIGJlIHBsYWNlZCBpbiBhIGRlcG9zaXQgZm9yIG1ha2luZyBhIHByb3Bvc2FsLgBEQ3VyYXRvckRlcG9zaXRNaW5JBEQBAOh2SBcAAAAAAAAAAAAAAARJASBNaW5pbXVtIGFtb3VudCBvZiBmdW5kcyB0aGF0IHNob3VsZCBiZSBwbGFjZWQgaW4gYSBkZXBvc2l0IGZvciBtYWtpbmcgYSBwcm9wb3NhbC4ASEJvdW50eVZhbHVlTWluaW11bVkBQADodkgXAAAAAAAAAAAAAAAEcCBNaW5pbXVtIHZhbHVlIGZvciBhIGJvdW50eS4ASERhdGFEZXBvc2l0UGVyQnl0ZVkBQKCGAQAAAAAAAAAAAAAAAAAEYQEgVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgcGVyIGJ5dGUgd2l0aGluIHRoZSB0aXAgcmVwb3J0IHJlYXNvbiBvciBib3VudHkgZGVzY3JpcHRpb24uAExNYXhpbXVtUmVhc29uTGVuZ3RoOBAAQAAADIggTWF4aW11bSBhY2NlcHRhYmxlIHJlYXNvbiBsZW5ndGguAGUBIEJlbmNobWFya3MgZGVwZW5kIG9uIHRoaXMgdmFsdWUsIGJlIHN1cmUgdG8gdXBkYXRlIHdlaWdodHMgZmlsZSB3aGVuIGNoYW5naW5nIHRoaXMgdmFsdWUAAYkNAAAAQQAANENoaWxkQm91bnRpZXMBNENoaWxkQm91bnRpZXMcQENoaWxkQm91bnR5Q291bnQBADgQAAAAAAhtASBERVBSRUNBVEVEOiBSZXBsYWNlZCB3aXRoIGBQYXJlbnRUb3RhbENoaWxkQm91bnRpZXNgIHN0b3JhZ2UgaXRlbSBrZWVwaW5nIGRlZGljYXRlZCBjb3VudHNVASBmb3IgZWFjaCBwYXJlbnQgYm91bnR5LiBOdW1iZXIgb2YgdG90YWwgY2hpbGQgYm91bnRpZXMuIFdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS4ATFBhcmVudENoaWxkQm91bnRpZXMBAQQFODgQAAAAAAjMIE51bWJlciBvZiBhY3RpdmUgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHku4CBNYXAgb2YgcGFyZW50IGJvdW50eSBpbmRleCB0byBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMuAGBQYXJlbnRUb3RhbENoaWxkQm91bnRpZXMBAQQFODgQAAAAAARBASBOdW1iZXIgb2YgdG90YWwgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHksIGluY2x1ZGluZyBjb21wbGV0ZWQgYm91bnRpZXMuADRDaGlsZEJvdW50aWVzAAEIBQXQjQ0EAASUIENoaWxkIGJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkLgBkQ2hpbGRCb3VudHlEZXNjcmlwdGlvbnNWMQABCAUF0IUNBAAMKQEgVGhlIGRlc2NyaXB0aW9uIG9mIGVhY2ggY2hpbGQtYm91bnR5LiBJbmRleGVkIGJ5IGAocGFyZW50X2lkLCBjaGlsZF9pZClgLgBtASBUaGlzIGl0ZW0gcmVwbGFjZXMgdGhlIGBDaGlsZEJvdW50eURlc2NyaXB0aW9uc2Agc3RvcmFnZSBpdGVtIGZyb20gdGhlIFYwIHN0b3JhZ2UgdmVyc2lvbi4AUFYwVG9WMUNoaWxkQm91bnR5SWRzAAEEBTjQBAAUXQEgVGhlIG1hcHBpbmcgb2YgdGhlIGNoaWxkIGJvdW50eSBpZHMgZnJvbSBzdG9yYWdlIHZlcnNpb24gYFYwYCB0byB0aGUgbmV3IGBWMWAgdmVyc2lvbi4AbQEgVGhlIGBWMGAgaWRzIGJhc2VkIG9uIHRvdGFsIGNoaWxkIGJvdW50eSBjb3VudCBbYENoaWxkQm91bnR5Q291bnRgXWAuIFRoZSBgVjFgIHZlcnNpb24gaWRzQQEgYmFzZWQgb24gdGhlIGNoaWxkIGJvdW50eSBjb3VudCBwZXIgcGFyZW50IGJvdW50eSBbYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllc2BdLmUBIFRoZSBpdGVtIGludGVuZGVkIHNvbGVseSBmb3IgY2xpZW50IGNvbnZlbmllbmNlIGFuZCBub3QgdXNlZCBpbiB0aGUgcGFsbGV0J3MgY29yZSBsb2dpYy4ATENoaWxkcmVuQ3VyYXRvckZlZXMBAQQFOFkBQAAAAAAAAAAAAAAAAAAAAAAEAQEgVGhlIGN1bXVsYXRpdmUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZmVlIGZvciBlYWNoIHBhcmVudCBib3VudHkuAAERBQABtQgACGRNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50OBBkAAAABB0BIE1heGltdW0gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGEgcGFyZW50IGJvdW50eS4AXENoaWxkQm91bnR5VmFsdWVNaW5pbXVtWQFAAOQLVAIAAAAAAAAAAAAAAASIIE1pbmltdW0gdmFsdWUgZm9yIGEgY2hpbGQtYm91bnR5LgABlQ0AAABCAAAkQXNzZXRSYXRlASRBc3NldFJhdGUEWENvbnZlcnNpb25SYXRlVG9OYXRpdmUAAQQC2QQZBQQADB0BIE1hcHMgYW4gYXNzZXQgdG8gaXRzIGZpeGVkIHBvaW50IHJlcHJlc2VudGF0aW9uIGluIHRoZSBuYXRpdmUgYmFsYW5jZS4ATQEgRS5nLiBgbmF0aXZlX2Ftb3VudCA9IGFzc2V0X2Ftb3VudCAqIENvbnZlcnNpb25SYXRlVG9OYXRpdmU6OjxUPjo6Z2V0KGFzc2V0X2tpbmQpYAABFQUAAbkIAAABmQ0ABCRBc3NldEtpbmTZBARFASBUaGUgdHlwZSBmb3IgYXNzZXQga2luZHMgZm9yIHdoaWNoIHRoZSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgaXMgc2V0LgBDAABITXVsdGlBc3NldEJvdW50aWVzAUhNdWx0aUFzc2V0Qm91bnRpZXMcLEJvdW50eUNvdW50AQA4EAAAAAAEwCBOdW1iZXIgb2YgYm91bnR5IHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAgQm91bnRpZXMAAQQFOJ0NBAAEeCBCb3VudGllcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgA0Q2hpbGRCb3VudGllcwABCAUF0KkNBAAMlCBDaGlsZCBib3VudGllcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC4AyCBJbmRleGVkIGJ5IGAocGFyZW50X2JvdW50eV9pZCwgY2hpbGRfYm91bnR5X2lkKWAuAFhDaGlsZEJvdW50aWVzUGVyUGFyZW50AQEEBTg4EAAAAAAMzCBOdW1iZXIgb2YgYWN0aXZlIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LgB8IEluZGV4ZWQgYnkgYHBhcmVudF9ib3VudHlfaWRgLgBsVG90YWxDaGlsZEJvdW50aWVzUGVyUGFyZW50AQEEBTg4EAAAAAAMQQEgTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LCBpbmNsdWRpbmcgY29tcGxldGVkIGJvdW50aWVzLgB8IEluZGV4ZWQgYnkgYHBhcmVudF9ib3VudHlfaWRgLgBsQ2hpbGRCb3VudGllc1ZhbHVlUGVyUGFyZW50AQEEBThZAUAAAAAAAAAAAAAAAAAAAAAAEG0BIFRoZSBjdW11bGF0aXZlIGNoaWxkLWJvdW50eSB2YWx1ZSBmb3IgZWFjaCBwYXJlbnQgYm91bnR5LiBUbyBiZSBzdWJ0cmFjdGVkIGZyb20gdGhlIHBhcmVudJAgYm91bnR5IHBheW91dCB3aGVuIGF3YXJkaW5nIGJvdW50eS4AfCBJbmRleGVkIGJ5IGBwYXJlbnRfYm91bnR5X2lkYC4AOEN1cmF0b3JEZXBvc2l0AAEIBQWtDbENBAAsZQEgVGhlIGNvbnNpZGVyYXRpb24gY29zdCBpbmN1cnJlZCBieSB0aGUgY2hpbGQtL2JvdW50eSBjdXJhdG9yIGZvciBjb21taXR0aW5nIHRvIHRoZSByb2xlLgBxASBEZXRlcm1pbmVkIGJ5IFtgcGFsbGV0OjpDb25maWc6OkNvbnNpZGVyYXRpb25gXS4gSXQgaXMgY3JlYXRlZCB3aGVuIHRoZSBjdXJhdG9yIGFjY2VwdHMgdGhlRQEgcm9sZSwgYW5kIGlzIGVpdGhlciBidXJuZWQgaWYgdGhlIGN1cmF0b3IgbWlzYmVoYXZlcyBvciBjb25zdW1lZCB1cG9uIHN1Y2Nlc3NmdWyEIGNvbXBsZXRpb24gb2YgdGhlIGNoaWxkLS9ib3VudHkuABEBIE5vdGU6IElmIHRoZSBwYXJlbnQgY3VyYXRvciBpcyBhbHNvIGFzc2lnbmVkIHRvIHRoZSBjaGlsZC1ib3VudHksICANASB0aGUgY29uc2lkZXJhdGlvbiBjb3N0IGlzIGNoYXJnZWQgb25seSBvbmNlIOKAlCB3aGVuIHRoZSBjdXJhdG9yICCgIGFjY2VwdHMgdGhlIHJvbGUgZm9yIHRoZSBwYXJlbnQgYm91bnR5LgDIIEluZGV4ZWQgYnkgYChwYXJlbnRfYm91bnR5X2lkLCBjaGlsZF9ib3VudHlfaWQpYC4AAR0FAAG9CAAMSEJvdW50eVZhbHVlTWluaW11bVkBQADodkgXAAAAAAAAAAAAAAAEcCBNaW5pbXVtIHZhbHVlIGZvciBhIGJvdW50eS4AXENoaWxkQm91bnR5VmFsdWVNaW5pbXVtWQFAAOQLVAIAAAAAAAAAAAAAAASIIE1pbmltdW0gdmFsdWUgZm9yIGEgY2hpbGQtYm91bnR5LgBkTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudDgQZAAAAAQdASBNYXhpbXVtIG51bWJlciBvZiBjaGlsZCBib3VudGllcyB0aGF0IGNhbiBiZSBhZGRlZCB0byBhIHBhcmVudCBib3VudHkuAAG1DQAIJEFzc2V0S2luZNkECEEBIFR5cGUgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUgYXNzZXQga2luZHMgdXNlZCB0byBmdW5kLCByZWZ1bmQgYW5kIHNwZW5kIGZyb20oIGJvdW50aWVzLixCZW5lZmljaWFyed0EBEEBIFR5cGUgcGFyYW1ldGVyIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGJlbmVmaWNpYXJpZXMgZWxpZ2libGUgdG8gcmVjZWl2ZSBwYXltZW50cy4ARAAASFN0YXRlVHJpZU1pZ3JhdGlvbgFIU3RhdGVUcmllTWlncmF0aW9uDEBNaWdyYXRpb25Qcm9jZXNzAQAtBTgAAAAAAAAAAAAAAAAAABBQIE1pZ3JhdGlvbiBwcm9ncmVzcy4AXQEgVGhpcyBzdG9yZXMgdGhlIHNuYXBzaG90IG9mIHRoZSBsYXN0IG1pZ3JhdGVkIGtleXMuIEl0IGNhbiBiZSBzZXQgaW50byBtb3Rpb24gYW5kIG1vdmXUIGZvcndhcmQgYnkgYW55IG9mIHRoZSBtZWFucyBwcm92aWRlZCBieSB0aGlzIHBhbGxldC4AKEF1dG9MaW1pdHMBACUFBAAM1CBUaGUgbGltaXRzIHRoYXQgYXJlIGltcG9zZWQgb24gYXV0b21hdGljIG1pZ3JhdGlvbnMuANQgSWYgc2V0IHRvIE5vbmUsIHRoZW4gbm8gYXV0b21hdGljIG1pZ3JhdGlvbiBoYXBwZW5zLgBgU2lnbmVkTWlncmF0aW9uTWF4TGltaXRzAAApBQQADOAgVGhlIG1heGltdW0gbGltaXRzIHRoYXQgdGhlIHNpZ25lZCBtaWdyYXRpb24gY291bGQgdXNlLgC0IElmIG5vdCBzZXQsIG5vIHNpZ25lZCBzdWJtaXNzaW9uIGlzIGFsbG93ZWQuAAEhBQABwQgABCRNYXhLZXlMZW44EAACAABUtCBNYXhpbWFsIG51bWJlciBvZiBieXRlcyB0aGF0IGEga2V5IGNhbiBoYXZlLgCwIEZSQU1FIGl0c2VsZiBkb2VzIG5vdCBsaW1pdCB0aGUga2V5IGxlbmd0aC4BASBUaGUgY29uY3JldGUgdmFsdWUgbXVzdCB0aGVyZWZvcmUgZGVwZW5kIG9uIHlvdXIgc3RvcmFnZSB1c2FnZS5ZASBBIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZU5NYXBgXSBmb3IgZXhhbXBsZSBjYW4gaGF2ZSBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mRQEga2V5cyB3aGljaCBhcmUgdGhlbiBoYXNoZWQgYW5kIGNvbmNhdGVuYXRlZCwgcmVzdWx0aW5nIGluIGFyYml0cmFyaWx5IGxvbmcga2V5cy4AQQEgVXNlIHRoZSAqc3RhdGUgbWlncmF0aW9uIFJQQyogdG8gcmV0cmlldmUgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBrZXkgaW4geW91cgEBIHN0b3JhZ2U6IDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvaXNzdWVzLzExNjQyPgApASBUaGUgbWlncmF0aW9uIHdpbGwgaGFsdCB3aXRoIGEgYEhhbHRlZGAgZXZlbnQgaWYgdGhpcyB2YWx1ZSBpcyB0b28gc21hbGwuSQEgU2luY2UgdGhlcmUgaXMgbm8gcmVhbCBwZW5hbHR5IGZyb20gb3Zlci1lc3RpbWF0aW5nLCBpdCBpcyBhZHZpc2VkIHRvIHVzZSBhIGxhcmdlgCB2YWx1ZS4gVGhlIGRlZmF1bHQgaXMgNTEyIGJ5dGUuAIAgU29tZSBrZXkgbGVuZ3RocyBmb3IgcmVmZXJlbmNlOtAgLSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VWYWx1ZWBdOiAzMiBieXRlyCAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZU1hcGBdOiA2NCBieXRl4CAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZURvdWJsZU1hcGBdOiA5NiBieXRlAEggRm9yIG1vcmUgaW5mbyBzZWVFASA8aHR0cHM6Ly93d3cuc2hhd250YWJyaXppLmNvbS9ibG9nL2ludGVyYWN0aW5nLXdpdGgtdGhlLXN1YnN0cmF0ZS1ycGMtZW5kcG9pbnQvPgAByQgAAABGAAA8Tm9taW5hdGlvblBvb2xzATxOb21pbmF0aW9uUG9vbHNUQFRvdGFsVmFsdWVMb2NrZWQBAFkBQAAAAAAAAAAAAAAAAAAAAAAUjCBUaGUgc3VtIG9mIGZ1bmRzIGFjcm9zcyBhbGwgcG9vbHMuAHEBIFRoaXMgbWlnaHQgYmUgbG93ZXIgYnV0IG5ldmVyIGhpZ2hlciB0aGFuIHRoZSBzdW0gb2YgYHRvdGFsX2JhbGFuY2VgIG9mIGFsbCBbYFBvb2xNZW1iZXJzYF1ZASBiZWNhdXNlIGNhbGxpbmcgYHBvb2xfd2l0aGRyYXdfdW5ib25kZWRgIG1pZ2h0IGRlY3JlYXNlIHRoZSB0b3RhbCBzdGFrZSBvZiB0aGUgcG9vbCdzKQEgYGJvbmRlZF9hY2NvdW50YCB3aXRob3V0IGFkanVzdGluZyB0aGUgcGFsbGV0LWludGVybmFsIGBVbmJvbmRpbmdQb29sYCdzLgAsTWluSm9pbkJvbmQBAFkBQAAAAAAAAAAAAAAAAAAAAAAEnCBNaW5pbXVtIGFtb3VudCB0byBib25kIHRvIGpvaW4gYSBwb29sLgA0TWluQ3JlYXRlQm9uZAEAWQFAAAAAAAAAAAAAAAAAAAAAABygIE1pbmltdW0gYm9uZCByZXF1aXJlZCB0byBjcmVhdGUgYSBwb29sLgBlASBUaGlzIGlzIHRoZSBhbW91bnQgdGhhdCB0aGUgZGVwb3NpdG9yIG11c3QgcHV0IGFzIHRoZWlyIGluaXRpYWwgc3Rha2UgaW4gdGhlIHBvb2wsIGFzIGFuiCBpbmRpY2F0aW9uIG9mICJza2luIGluIHRoZSBnYW1lIi4AaQEgVGhpcyBpcyB0aGUgdmFsdWUgdGhhdCB3aWxsIGFsd2F5cyBleGlzdCBpbiB0aGUgc3Rha2luZyBsZWRnZXIgb2YgdGhlIHBvb2wgYm9uZGVkIGFjY291bnSAIHdoaWxlIGFsbCBvdGhlciBhY2NvdW50cyBsZWF2ZS4AIE1heFBvb2xzAAA4BAAIaQEgTWF4aW11bSBudW1iZXIgb2Ygbm9taW5hdGlvbiBwb29scyB0aGF0IGNhbiBleGlzdC4gSWYgYE5vbmVgLCB0aGVuIGFuIHVuYm91bmRlZCBudW1iZXIgb2ZEIHBvb2xzIGNhbiBleGlzdC4AOE1heFBvb2xNZW1iZXJzAAA4BAAISQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IGNhbiBleGlzdCBpbiB0aGUgc3lzdGVtLiBJZiBgTm9uZWAsIHRoZW4gdGhlIGNvdW50uCBtZW1iZXJzIGFyZSBub3QgYm91bmQgb24gYSBzeXN0ZW0gd2lkZSBiYXNpcy4AVE1heFBvb2xNZW1iZXJzUGVyUG9vbAAAOAQACEEBIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgdGhhdCBtYXkgYmVsb25nIHRvIHBvb2wuIElmIGBOb25lYCwgdGhlbiB0aGUgY291bnQgb2aoIG1lbWJlcnMgaXMgbm90IGJvdW5kIG9uIGEgcGVyIHBvb2wgYmFzaXMuAExHbG9iYWxNYXhDb21taXNzaW9uAAChAQQADGkBIFRoZSBtYXhpbXVtIGNvbW1pc3Npb24gdGhhdCBjYW4gYmUgY2hhcmdlZCBieSBhIHBvb2wuIFVzZWQgb24gY29tbWlzc2lvbiBwYXlvdXRzIHRvIGJvdW5kJQEgcG9vbCBjb21taXNzaW9ucyB0aGF0IGFyZSA+IGBHbG9iYWxNYXhDb21taXNzaW9uYCwgbmVjZXNzYXJ5IGlmIGEgZnV0dXJlDQEgYEdsb2JhbE1heENvbW1pc3Npb25gIGlzIGxvd2VyIHRoYW4gc29tZSBjdXJyZW50IHBvb2wgY29tbWlzc2lvbnMuACxQb29sTWVtYmVycwABBAUEuQ0EAAxAIEFjdGl2ZSBtZW1iZXJzLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBUQ291bnRlckZvclBvb2xNZW1iZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAALEJvbmRlZFBvb2xzAAEEBTjFDQQABGggU3RvcmFnZSBmb3IgYm9uZGVkIHBvb2xzLgBUQ291bnRlckZvckJvbmRlZFBvb2xzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAALFJld2FyZFBvb2xzAAEEBTjVDQQACHUBIFJld2FyZCBwb29scy4gVGhpcyBpcyB3aGVyZSB0aGVyZSByZXdhcmRzIGZvciBlYWNoIHBvb2wgYWNjdW11bGF0ZS4gV2hlbiBhIG1lbWJlcnMgcGF5b3V0IGlzWQEgY2xhaW1lZCwgdGhlIGJhbGFuY2UgY29tZXMgb3V0IG9mIHRoZSByZXdhcmQgcG9vbC4gS2V5ZWQgYnkgdGhlIGJvbmRlZCBwb29scyBhY2NvdW50LgBUQ291bnRlckZvclJld2FyZFBvb2xzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAPFN1YlBvb2xzU3RvcmFnZQABBAU42Q0EAAgZASBHcm91cHMgb2YgdW5ib25kaW5nIHBvb2xzLiBFYWNoIGdyb3VwIG9mIHVuYm9uZGluZyBwb29scyBiZWxvbmdzIHRvIGEpASBib25kZWQgcG9vbCwgaGVuY2UgdGhlIG5hbWUgc3ViLXBvb2xzLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuAGRDb3VudGVyRm9yU3ViUG9vbHNTdG9yYWdlAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAIE1ldGFkYXRhAQEEBThFAQQABFwgTWV0YWRhdGEgZm9yIHRoZSBwb29sLgBIQ291bnRlckZvck1ldGFkYXRhAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAKExhc3RQb29sSWQBADgQAAAAAATQIEV2ZXIgaW5jcmVhc2luZyBudW1iZXIgb2YgYWxsIHBvb2xzIGNyZWF0ZWQgc28gZmFyLgBMUmV2ZXJzZVBvb2xJZExvb2t1cAABBAUEOAQAENwgQSByZXZlcnNlIGxvb2t1cCBmcm9tIHRoZSBwb29sJ3MgYWNjb3VudCBpZCB0byBpdHMgaWQuAHUBIFRoaXMgaXMgb25seSB1c2VkIGZvciBzbGFzaGluZyBhbmQgb24gYXV0b21hdGljIHdpdGhkcmF3IHVwZGF0ZS4gSW4gYWxsIG90aGVyIGluc3RhbmNlcywgdGhlJQEgcG9vbCBpZCBpcyB1c2VkLCBhbmQgdGhlIGFjY291bnRzIGFyZSBkZXRlcm1pbmlzdGljYWxseSBkZXJpdmVkIGZyb20gaXQuAHRDb3VudGVyRm9yUmV2ZXJzZVBvb2xJZExvb2t1cAEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAEBDbGFpbVBlcm1pc3Npb25zAQEEBQRVBQQCBAEBIE1hcCBmcm9tIGEgcG9vbCBtZW1iZXIgYWNjb3VudCB0byB0aGVpciBvcHRlZCBjbGFpbSBwZXJtaXNzaW9uLgABOQUAAc0IAAwgUGFsbGV0SWSZCiBweS9ub3BscwSEIFRoZSBub21pbmF0aW9uIHBvb2wncyBwYWxsZXQgaWQuAEhNYXhQb2ludHNUb0JhbGFuY2UMBAowHQEgVGhlIG1heGltdW0gcG9vbCBwb2ludHMtdG8tYmFsYW5jZSByYXRpbyB0aGF0IGFuIGBvcGVuYCBwb29sIGNhbiBoYXZlLgBVASBUaGlzIGlzIGltcG9ydGFudCBpbiB0aGUgZXZlbnQgc2xhc2hpbmcgdGFrZXMgcGxhY2UgYW5kIHRoZSBwb29sJ3MgcG9pbnRzLXRvLWJhbGFuY2V8IHJhdGlvIGJlY29tZXMgZGlzcHJvcG9ydGlvbmFsLgBlASBNb3Jlb3ZlciwgdGhpcyByZWxhdGVzIHRvIHRoZSBgUmV3YXJkQ291bnRlcmAgdHlwZSBhcyB3ZWxsLCBhcyB0aGUgYXJpdGhtZXRpYyBvcGVyYXRpb25zVQEgYXJlIGEgZnVuY3Rpb24gb2YgbnVtYmVyIG9mIHBvaW50cywgYW5kIGJ5IHNldHRpbmcgdGhpcyB2YWx1ZSB0byBlLmcuIDEwLCB5b3UgZW5zdXJlZQEgdGhhdCB0aGUgdG90YWwgbnVtYmVyIG9mIHBvaW50cyBpbiB0aGUgc3lzdGVtIGFyZSBhdCBtb3N0IDEwIHRpbWVzIHRoZSB0b3RhbF9pc3N1YW5jZSBvZpwgdGhlIGNoYWluLCBpbiB0aGUgYWJzb2x1dGUgd29yc2UgY2FzZS4ASQEgRm9yIGEgdmFsdWUgb2YgMTAsIHRoZSB0aHJlc2hvbGQgd291bGQgYmUgYSBwb29sIHBvaW50cy10by1iYWxhbmNlIHJhdGlvIG9mIDEwOjEuMQEgU3VjaCBhIHNjZW5hcmlvIHdvdWxkIGFsc28gYmUgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIHBvb2wgYmVpbmcgOTAlIHNsYXNoZWQuADBNYXhVbmJvbmRpbmc4ECAAAAAEPQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNpbXVsdGFuZW91cyB1bmJvbmRpbmcgY2h1bmtzIHRoYXQgY2FuIGV4aXN0IHBlciBtZW1iZXIuAAHxDQAENFJld2FyZENvdW50ZXIZBTCoIFRoZSB0eXBlIHRoYXQgaXMgdXNlZCBmb3IgcmV3YXJkIGNvdW50ZXIuADUBIFRoZSBhcml0aG1ldGljIG9mIHRoZSByZXdhcmQgY291bnRlciBtaWdodCBzYXR1cmF0ZSBiYXNlZCBvbiB0aGUgc2l6ZSBvZiB0aGVlASBgQ3VycmVuY3k6OkJhbGFuY2VgLiBJZiB0aGlzIGhhcHBlbnMsIG9wZXJhdGlvbnMgZmFpbHMuIE5vbmV0aGVsZXNzLCB0aGlzIHR5cGUgc2hvdWxkIGJlZQEgY2hvc2VuIHN1Y2ggdGhhdCB0aGlzIGZhaWx1cmUgYWxtb3N0IG5ldmVyIGhhcHBlbnMsIGFzIGlmIGl0IGhhcHBlbnMsIHRoZSBwb29sIGJhc2ljYWxseWUBIG5lZWRzIHRvIGJlIGRpc21hbnRsZWQgKG9yIGFsbCBwb29scyBtaWdyYXRlZCB0byBhIGxhcmdlciBgUmV3YXJkQ291bnRlcmAgdHlwZSwgd2hpY2ggaXM8IGEgUElUQSB0byBkbykuAGEBIFNlZSB0aGUgaW5saW5lIGNvZGUgZG9jcyBvZiBgTWVtYmVyOjpwZW5kaW5nX3Jld2FyZHNgIGFuZCBgUmV3YXJkUG9vbDo6dXBkYXRlX3JlY29yZGVkYGUBIGZvciBleGFtcGxlIGFuYWx5c2lzLiBBIFtgc3BfcnVudGltZTo6Rml4ZWRVMTI4YF0gc2hvdWxkIGJlIGZpbmUgZm9yIGNoYWlucyB3aXRoIGJhbGFuY2VRASB0eXBlcyBzaW1pbGFyIHRvIHRoYXQgb2YgUG9sa2Fkb3QgYW5kIEt1c2FtYSwgaW4gdGhlIGFic2VuY2Ugb2Ygc2V2ZXJlIHNsYXNoaW5nIChvcj0BIHByZXZlbnRlZCB2aWEgYSByZWFzb25hYmxlIGBNYXhQb2ludHNUb0JhbGFuY2VgKSwgZm9yIG1hbnkgbWFueSB5ZWFycyB0byBjb21lLgBQAAAkVm90ZXJMaXN0ASRWb3Rlckxpc3QcJExpc3ROb2RlcwABBAUE+Q0EAAyAIEEgc2luZ2xlIG5vZGUsIHdpdGhpbiBzb21lIGJhZy4ABQEgTm9kZXMgc3RvcmUgbGlua3MgZm9yd2FyZCBhbmQgYmFjayB3aXRoaW4gdGhlaXIgcmVzcGVjdGl2ZSBiYWdzLgBMQ291bnRlckZvckxpc3ROb2RlcwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwACBMaXN0QmFncwABBAUo/Q0EAAxkIEEgYmFnIHN0b3JlZCBpbiBzdG9yYWdlLgAZASBTdG9yZXMgYSBgQmFnYCBzdHJ1Y3QsIHdoaWNoIHN0b3JlcyBoZWFkIGFuZCB0YWlsIHBvaW50ZXJzIHRvIGl0c2VsZi4AUE5leHROb2RlQXV0b1JlYmFnZ2VkAAAEBAAIBQEgUG9pbnRlciB0aGF0IHJlbWVtYmVycyB0aGUgbmV4dCBub2RlIHRoYXQgd2lsbCBiZSBhdXRvLXJlYmFnZ2VkLgEBIFdoZW4gYE5vbmVgLCB0aGUgbmV4dCBzY2FuIHdpbGwgc3RhcnQgZnJvbSB0aGUgbGlzdCBoZWFkIGFnYWluLgAQTG9jawAAEAQAEIQgTG9jayBhbGwgdXBkYXRlcyB0byB0aGlzIHBhbGxldC4AOQEgSWYgYW55IG5vZGVzIG5lZWRzIHVwZGF0aW5nLCByZW1vdmFsIG9yIGFkZGl0aW9uIGR1ZSB0byBhIHRlbXBvcmFyeSBsb2NrLCB0aGV0IFtgQ2FsbDo6cmViYWdgXSBjYW4gYmUgdXNlZC4AMFBlbmRpbmdSZWJhZwABBAUEEAQAOB0BIEFjY291bnRzIHRoYXQgZmFpbGVkIHRvIGJlIGluc2VydGVkIGludG8gdGhlIGJhZ3MtbGlzdCBkdWUgdG8gbG9ja2luZy5ZASBUaGVzZSBhY2NvdW50cyB3aWxsIGJlIHByb2Nlc3NlZCB3aXRoIHByaW9yaXR5IGluIGBvbl9pZGxlYCBvciB2aWEgYHJlYmFnYCBleHRyaW5zaWMuAE0BIE5vdGU6IFRoaXMgc3RvcmFnZSBpcyBpbnRlbnRpb25hbGx5IHVuYm91bmRlZC4gVGhlIGZvbGxvd2luZyBmYWN0b3JzIG1ha2UgYm91bmRpbmc0IHVubmVjZXNzYXJ5OlEBIDEuIFRoZSBzdG9yYWdlIHVzYWdlIGlzIHRlbXBvcmFyeSAtIGFjY291bnRzIGFyZSBwcm9jZXNzZWQgYW5kIHJlbW92ZWQgaW4gYG9uX2lkbGVgRQEgMi4gVGhlIHBhbGxldCBpcyBvbmx5IGxvY2tlZCBkdXJpbmcgc25hcHNob3QgZ2VuZXJhdGlvbiwgd2hpY2ggaXMgd2VpZ2h0LWxpbWl0ZWRtASAzLiBQcm9jZXNzaW5nIGhhcHBlbnMgYXQgbXVsdGlwbGUgYWNjb3VudHMgcGVyIGJsb2NrLCBjbGVhcmluZyBldmVuIGxhcmdlIGJhY2tsb2dzIHF1aWNrbHlBASA0LiBBbiBhcnRpZmljaWFsIGxpbWl0IGNvdWxkIGJlIGV4aGF1c3RlZCBieSBhbiBhdHRhY2tlciwgcHJldmVudGluZyBsZWdpdGltYXRlAQEgICAgYXV0by1yZWJhZ2dpbmcgZnJvbSBwdXR0aW5nIGFjY291bnRzIGluIHRoZSBjb3JyZWN0IHBvc2l0aW9uAGkBIFdlIGRvbid0IHN0b3JlIHRoZSBzY29yZSBoZXJlIC0gaXQncyBhbHdheXMgZmV0Y2hlZCBmcm9tIGBTY29yZVByb3ZpZGVyYCB3aGVuIHByb2Nlc3NpbmcsaQEgZW5zdXJpbmcgd2UgdXNlIHRoZSBtb3N0IHVwLXRvLWRhdGUgc2NvcmUgKGFjY291bnRzIG1heSBoYXZlIGJlZW4gc2xhc2hlZCwgcmV3YXJkZWQsIGV0Yy50IHdoaWxlIHdhaXRpbmcgaW4gdGhlIHF1ZXVlKS4AWENvdW50ZXJGb3JQZW5kaW5nUmViYWcBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAABbQUAAdUIAAg0QmFnVGhyZXNob2xkcwEOCRkhAwDkC1QCAAAA856AlwIAAACosZfiAgAAAJRJLjYDAAAAJ5w6kwMAAAADvM76AwAAAELAG24EAAAAG0d17gQAAAA4XlV9BQAAAEbcYBwGAAAAiThszQYAAAC27oCSBwAAAP5+420IAAAA6BsaYgkAAACwGfRxCgAAABA1kqALAAAAz8lv8QwAAABBFG1oDgAAAOeb2gkQAAAAzuiF2hEAAAAoqcffEwAAALtwkx8WAAAAjkCJoBgAAACBCglqGwAAADZqSIQeAAAAW9Nq+CEAAACAfJzQJQAAAMlVMBgqAAAAvWPB2y4AAABx4FcpNAAAAGiQkhA6AAAA7cTUokAAAABpk3nzRwAAAI/YDBhQAAAAS6+KKFkAAABqFqY/YwAAAAmVF3tuAAAAeMX0+3oAAABiyBHniAAAAFG/bWWYAAAABI6rpKkAAABURpjXvAAAAJHKwDbSAAAAF18YAeoAAAC9FbJ8BAEAAEM1j/chAQAAuPyEyEIBAACZZzxQZwEAAAfkTvqPAQAAs0GDPr0BAAACfy6i7wEAAJiDvLknAgAAFk1lKmYCAAC0lROsqwIAAC2Oggv5AgAAoeaYLE8DAACmFggNrwMAAMydN8cZBAAAoNWElZAEAABC5+DVFAUAAAKM1w2oBQAAD3UK70sGAADqjS5cAgcAAMPLmW7NBwAAseVxfK8IAACqK44fqwkAALXBID3DCgAAJtA9DvsLAABwx1kpVg0AAOut2ozYDgAA95fbqoYQAADP8ER2ZRIAAB8mYHF6FAAACaYRvssWAAAd++gvYBkAAJQ6PGA/HAAAiv6JxHEfAADO2WPHACMAAAOpKuT2JgAA/nLuxV8rAAA2ycxpSDAAANrjMkW/NQAABip0cNQ7AAB8lzLWmUIAAISjJGgjSgAAVxrUWYdSAADn8QJi3lsAAA24dgNEZgAArgQB3tZxAAB9nrMIuX4AAB4ESnYQjQAAOh3wZAedAADgT6/azK4AAFZ58C+VwgAAlcOqqZrYAACWfAUlHvEAABd6ZtZnDAEAKMsfHsgqAQD6KC91mEwBANV9yHQ8cgEAfcSz+yKcAQA2XN50x8oBAJ644UKz/gEADDGuVH84AgBf4QHo1XgCAGNz2n50wAIAUdGmDS4QAwDH6aRo7WgDAGHAkfe3ywMAvyeht7A5BAB7FJmUG7QEAIUj7SJhPAUAaaXUxRLUBQDsjJNN73wGAPWqkBvoOAcAjL5d2yYKCAACl4zhE/MIAPrjFENd9gkA3fEtuv4WCwAuutxvSlgMAAxVGMTyvQ0A8LtUMRVMDwBJjoZrRgcRALLBU96f9BIAJ4ovss4ZFQCyOZ+EJH0XAOGZ5wSqJRoAuhP1qzMbHQAmR4XMeGYgAIi/gD8tESQAHJgj+B0mKADMxCLUULEsAPCIggUowDEANnxtfolhNwBukynTCqY9AIy8bBMioEQAAHDzKlxkTAC0O4RpmQlVAIC0q+RQqV4AoM2pedtfaQBMwn9Mx0x1ANCsDro0k4IASD4Mzz1akQBoxo50ac2hACgeb6UrHbQAmKkjJnR/yADwmnRjTTDfAIDN/EuNcvgAkBRgLZqQFAHwtBPZRd0zASCXNZbBtFYBUNz7rq19fQHgEZi5R6qoATDH7ha7udgBIG5Ihpc5DgKg+ksdcsdJAsARcXC1EowCgIoWQ6be1QLA+COxogQoA4CvWXCidoMDwG8th/9B6QNAk3+sj5JaBACRCXEXttgEQA/fWyEgZQUAScFJRG4BBgCOvKblbK8GAFlWhoUccQeAaKo0pLdICICh4p5SuTgJAL2r6IDkQwoAKnK0IExtC4DxwBMzXLgMAKA8y9zjKA6AuGKaniDDDwDeVpPSyosRAF1/TJMjiBMAGoffNQS+FQCnzkuE7zMYAAEQ++ok8RoAgCrl0bX9HQAioTRgnWIhAEQha/DaKSUAAmHxgo9eKQBmIM+FHg0uAIQQGVJSQzMAoMGPyoQQOQAmrRSTzIU/ANDNJGYvtkYAnOGaHNq2TgBYzMIMX59XACAKdXj7iWEAMLu71uSTbABgy6fcnt14ALg7wEJbi4YAuIYjYWTFlQD48V/ck7imACBqkcDWlrkA2O/ij8CXzgBoKZv1Lvnl//////////+s0CBUaGUgbGlzdCBvZiB0aHJlc2hvbGRzIHNlcGFyYXRpbmcgdGhlIHZhcmlvdXMgYmFncy4ASQEgSWRzIGFyZSBzZXBhcmF0ZWQgaW50byB1bnNvcnRlZCBiYWdzIGFjY29yZGluZyB0byB0aGVpciBzY29yZS4gVGhpcyBzcGVjaWZpZXMgdGhlYQEgdGhyZXNob2xkcyBzZXBhcmF0aW5nIHRoZSBiYWdzLiBBbiBpZCdzIGJhZyBpcyB0aGUgbGFyZ2VzdCBiYWcgZm9yIHdoaWNoIHRoZSBpZCdzIHNjb3JluCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gaXRzIHVwcGVyIHRocmVzaG9sZC4AZQEgV2hlbiBpZHMgYXJlIGl0ZXJhdGVkLCBoaWdoZXIgYmFncyBhcmUgaXRlcmF0ZWQgY29tcGxldGVseSBiZWZvcmUgbG93ZXIgYmFncy4gVGhpcyBtZWFuc1kBIHRoYXQgaXRlcmF0aW9uIGlzIF9zZW1pLXNvcnRlZF86IGlkcyBvZiBoaWdoZXIgc2NvcmUgdGVuZCB0byBjb21lIGJlZm9yZSBpZHMgb2YgbG93ZXItASBzY29yZSwgYnV0IHBlZXIgaWRzIHdpdGhpbiBhIHBhcnRpY3VsYXIgYmFnIGFyZSBzb3J0ZWQgaW4gaW5zZXJ0aW9uIG9yZGVyLgBoICMgRXhwcmVzc2luZyB0aGUgY29uc3RhbnQATQEgVGhpcyBjb25zdGFudCBtdXN0IGJlIHNvcnRlZCBpbiBzdHJpY3RseSBpbmNyZWFzaW5nIG9yZGVyLiBEdXBsaWNhdGUgaXRlbXMgYXJlIG5vdCwgcGVybWl0dGVkLgBBASBUaGVyZSBpcyBhbiBpbXBsaWVkIHVwcGVyIGxpbWl0IG9mIGBTY29yZTo6TUFYYDsgdGhhdCB2YWx1ZSBkb2VzIG5vdCBuZWVkIHRvIGJlIQEgc3BlY2lmaWVkIHdpdGhpbiB0aGUgYmFnLiBGb3IgYW55IHR3byB0aHJlc2hvbGQgbGlzdHMsIGlmIG9uZSBlbmRzIHdpdGgxASBgU2NvcmU6Ok1BWGAsIHRoZSBvdGhlciBvbmUgZG9lcyBub3QsIGFuZCB0aGV5IGFyZSBvdGhlcndpc2UgZXF1YWwsIHRoZSB0d298IGxpc3RzIHdpbGwgYmVoYXZlIGlkZW50aWNhbGx5LgA4ICMgQ2FsY3VsYXRpb24AVQEgSXQgaXMgcmVjb21tZW5kZWQgdG8gZ2VuZXJhdGUgdGhlIHNldCBvZiB0aHJlc2hvbGRzIGluIGEgZ2VvbWV0cmljIHNlcmllcywgc3VjaCB0aGF0QQEgdGhlcmUgZXhpc3RzIHNvbWUgY29uc3RhbnQgcmF0aW8gc3VjaCB0aGF0IGB0aHJlc2hvbGRbayArIDFdID09ICh0aHJlc2hvbGRba10gKtAgY29uc3RhbnRfcmF0aW8pLm1heCh0aHJlc2hvbGRba10gKyAxKWAgZm9yIGFsbCBga2AuAFkBIFRoZSBoZWxwZXJzIGluIHRoZSBgL3V0aWxzL2ZyYW1lL2dlbmVyYXRlLWJhZ3NgIG1vZHVsZSBjYW4gc2ltcGxpZnkgdGhpcyBjYWxjdWxhdGlvbi4ALCAjIEV4YW1wbGVzAFEBIC0gSWYgYEJhZ1RocmVzaG9sZHM6OmdldCgpLmlzX2VtcHR5KClgLCB0aGVuIGFsbCBpZHMgYXJlIHB1dCBpbnRvIHRoZSBzYW1lIGJhZywgYW5ksCAgIGl0ZXJhdGlvbiBpcyBzdHJpY3RseSBpbiBpbnNlcnRpb24gb3JkZXIuYQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkubGVuKCkgPT0gNjRgLCBhbmQgdGhlIHRocmVzaG9sZHMgYXJlIGRldGVybWluZWQgYWNjb3JkaW5nIHRvEQEgICB0aGUgcHJvY2VkdXJlIGdpdmVuIGFib3ZlLCB0aGVuIHRoZSBjb25zdGFudCByYXRpbyBpcyBlcXVhbCB0byAyLmUBIC0gSWYgYEJhZ1RocmVzaG9sZHM6OmdldCgpLmxlbigpID09IDIwMGAsIGFuZCB0aGUgdGhyZXNob2xkcyBhcmUgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG9ZASAgIHRoZSBwcm9jZWR1cmUgZ2l2ZW4gYWJvdmUsIHRoZW4gdGhlIGNvbnN0YW50IHJhdGlvIGlzIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gMS4yNDguYQEgLSBJZiB0aGUgdGhyZXNob2xkIGxpc3QgYmVnaW5zIGBbMSwgMiwgMywgLi4uXWAsIHRoZW4gYW4gaWQgd2l0aCBzY29yZSAwIG9yIDEgd2lsbCBmYWxs8CAgIGludG8gYmFnIDAsIGFuIGlkIHdpdGggc2NvcmUgMiB3aWxsIGZhbGwgaW50byBiYWcgMSwgZXRjLgAwICMgTWlncmF0aW9uAGEBIEluIHRoZSBldmVudCB0aGF0IHRoaXMgbGlzdCBldmVyIGNoYW5nZXMsIGEgY29weSBvZiB0aGUgb2xkIGJhZ3MgbGlzdCBtdXN0IGJlIHJldGFpbmVkLl0BIFdpdGggdGhhdCBgTGlzdDo6bWlncmF0ZWAgY2FuIGJlIGNhbGxlZCwgd2hpY2ggd2lsbCBwZXJmb3JtIHRoZSBhcHByb3ByaWF0ZSBtaWdyYXRpb24uAFBNYXhBdXRvUmViYWdQZXJCbG9jazgQCgAAABA1ASBNYXhpbXVtIG51bWJlciBvZiBhY2NvdW50cyB0aGF0IG1heSBiZSByZS1iYWdnZWQgYXV0b21hdGljYWxseSBpbiBgb25faWRsZWAuAFEBIEEgdmFsdWUgb2YgYDBgIChvYnRhaW5lZCBieSBjb25maWd1cmluZyBgdHlwZSBNYXhBdXRvUmViYWdQZXJCbG9jayA9ICgpO2ApIGRpc2FibGVzNCB0aGUgZmVhdHVyZS4AAQUOAAQUU2NvcmUoBAkBIFRoZSB0eXBlIHVzZWQgdG8gZGljdGF0ZSBhIG5vZGUgcG9zaXRpb24gcmVsYXRpdmUgdG8gb3RoZXIgbm9kZXMuBHTdcC2kb3fXrPd/WkjUr30SRlCdIc2xJui6xWgTxKKeGHNjb3JlcwQMd2hvBA0OGLAgR2V0IHRoZSBjdXJyZW50IGBzY29yZWAgb2YgYSBnaXZlbiBhY2NvdW50LgBhASBSZXR1cm5zIGAoY3VycmVudCwgcmVhbF9zY29yZSlgLCB0aGUgZm9ybWVyIGJlaW5nIHRoZSBjdXJyZW50IHNjb3JlIHRoYXQgdGhpcyBwYWxsZXQgaXNZASBhd2FyZSBvZiwgd2hpY2ggbWF5IG9yIG1heSBub3QgYmUgdXAgdG8gZGF0ZSwgYW5kIHRoZSBsYXR0ZXIgYmVpbmcgdGhlIHJlYWwgc2NvcmUsIGFzMCBwcm92aWRlZCBieR0BIElmIHRoZSB0d28gZGlmZmVyLCBpdCBtZWFucyB0aGlzIG5vZGUgaXMgZWxpZ2libGUgZm9yIFtgQ2FsbDo6cmViYWdgXS4AUgAAQERlbGVnYXRlZFN0YWtpbmcBQERlbGVnYXRlZFN0YWtpbmcQKERlbGVnYXRvcnMAAQQFBBEOBAAQpCBNYXAgb2YgRGVsZWdhdG9ycyB0byB0aGVpciBgRGVsZWdhdGlvbmAuAGEBIEltcGxlbWVudGF0aW9uIG5vdGU6IFdlIGFyZSBub3QgdXNpbmcgYSBkb3VibGUgbWFwIHdpdGggYGRlbGVnYXRvcmAgYW5kIGBhZ2VudGAgYWNjb3VudGEBIGFzIGtleXMgc2luY2Ugd2Ugd2FudCB0byByZXN0cmljdCBkZWxlZ2F0b3JzIHRvIGRlbGVnYXRlIG9ubHkgdG8gb25lIGFjY291bnQgYXQgYSB0aW1lLgBQQ291bnRlckZvckRlbGVnYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAYQWdlbnRzAAEEBQQVDgQABIggTWFwIG9mIGBBZ2VudGAgdG8gdGhlaXIgYExlZGdlcmAuAEBDb3VudGVyRm9yQWdlbnRzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAAAHZCAAIIFBhbGxldElkmQogcHkvZGxzdGsEkCBJbmplY3RlZCBpZGVudGlmaWVyIGZvciB0aGUgcGFsbGV0LgBMU2xhc2hSZXdhcmRGcmFjdGlvbqEBEICWmAAEUQEgRnJhY3Rpb24gb2YgdGhlIHNsYXNoIHRoYXQgaXMgcmV3YXJkZWQgdG8gdGhlIGNhbGxlciBvZiBwZW5kaW5nIHNsYXNoIHRvIHRoZSBhZ2VudC4AARkOAAAAUwAAPFN0YWtpbmdSY0NsaWVudAE8U3Rha2luZ1JjQ2xpZW50DFxJbmNvbXBsZXRlU2Vzc2lvblJlcG9ydAAAdQUEAAQdASBBbiBpbmNvbXBsZXRlIGluY29taW5nIHNlc3Npb24gcmVwb3J0IHRoYXQgd2UgaGF2ZSBub3QgYWN0ZWQgdXBvbiB5ZXQuAHBMYXN0U2Vzc2lvblJlcG9ydEVuZGluZ0luZGV4AAA4BAAg/CBUaGUgbGFzdCBzZXNzaW9uIHJlcG9ydCdzIGBlbmRfaW5kZXhgIHRoYXQgd2UgaGF2ZSBhY3RlZCB1cG9uLgBhASBUaGlzIGFsbG93cyB0aGlzIHBhbGxldCB0byBlbnN1cmUgYSBzZXF1ZW50aWFsbHkgaW5jcmVhc2luZyBzZXF1ZW5jZSBvZiBzZXNzaW9uIHJlcG9ydHNMIHBhc3NlZCB0byBzdGFraW5nLgBdASBOb3RlIHRoYXQgd2l0aCB0aGUgWENNIGJlaW5nIHRoZSBiYWNrYm9uZSBvZiBjb21tdW5pY2F0aW9uLCB3ZSBoYXZlIGEgZ3VhcmFudGVlIG9uIHRoZWEBIG9yZGVyaW5nIG9mIG1lc3NhZ2VzLiBBcyBsb25nIGFzIHRoZSBSQyBzZW5kcyBzZXNzaW9uIHJlcG9ydHMgaW4gb3JkZXIsIHdlIF9ldmVudHVhbGx5X8AgcmVjZWl2ZSB0aGVtIGluIHRoZSBzYW1lIGNvcnJlY3Qgb3JkZXIgYXMgd2VsbC4AUE91dGdvaW5nVmFsaWRhdG9yU2V0AAAdDgQAENggQSB2YWxpZGF0b3Igc2V0IHRoYXQgaXMgb3V0Z29pbmcsIGFuZCBzaG91bGQgYmUgc2VudC4AdQEgVGhpcyB3aWxsIGJlIGF0dGVtcHRlZCB0byBiZSBzZW50LCBwb3NzaWJseSBvbiBldmVyeSBgb25faW5pdGlhbGl6ZWAgY2FsbCwgdW50aWwgaXQgaXMgc2VudCz0IG9yIHRoZSBzZWNvbmQgdmFsdWUgcmVhY2hlcyB6ZXJvLCBhdCB3aGljaCBwb2ludCB3ZSBkcm9wIGl0LgABcQUAAd0IAAQoS2V5RGVwb3NpdFkBQADgAeyLAAAAAAAAAAAAAAAELQEgRGVwb3NpdCBoZWxkIHdoZW4gYSB2YWxpZGF0b3Igc2V0cyBzZXNzaW9uIGtleXMuIFJlbGVhc2VkIG9uIGBwdXJnZV9rZXlzYC4AASUOAAAAVAAASE11bHRpQmxvY2tFbGVjdGlvbgFITXVsdGlCbG9ja0VsZWN0aW9uHBRSb3VuZAEAOBAAAAAAGKwgSW50ZXJuYWwgY291bnRlciBmb3IgdGhlIG51bWJlciBvZiByb3VuZHMuAFUBIFRoaXMgaXMgdXNlZnVsIGZvciBkZS1kdXBsaWNhdGlvbiBvZiB0cmFuc2FjdGlvbnMgc3VibWl0dGVkIHRvIHRoZSBwb29sLCBhbmQgZ2VuZXJhbGwgZGlhZ25vc3RpY3Mgb2YgdGhlIHBhbGxldC4ATQEgVGhpcyBpcyBtZXJlbHkgaW5jcmVtZW50ZWQgb25jZSBwZXIgZXZlcnkgdGltZSB0aGF0IGFuIHVwc3RyZWFtIGBlbGVjdGAgaXMgY2FsbGVkLgAwQ3VycmVudFBoYXNlAQCdBQQABDwgQ3VycmVudCBwaGFzZS4AOERlc2lyZWRUYXJnZXRzAAEEBTg4BAAEzCBEZXNpcmVkIG51bWJlciBvZiB0YXJnZXRzIHRvIGVsZWN0IGZvciB0aGlzIHJvdW5kLgBIUGFnZWRWb3RlclNuYXBzaG90AAEIBQXQKQ4EAAQBASBQYWdpbmF0ZWQgdm90ZXIgc25hcHNob3QuIEF0IG1vc3QgW2BUOjpQYWdlc2BdIGtleXMgd2lsbCBleGlzdC4AWFBhZ2VkVm90ZXJTbmFwc2hvdEhhc2gAAQgFBdBABAAMMQEgU2FtZSBhcyBbYFBhZ2VkVm90ZXJTbmFwc2hvdGBdLCBidXQgaXQgd2lsbCBzdG9yZSB0aGUgaGFzaCBvZiB0aGUgc25hcHNob3QuAPwgVGhlIGhhc2ggaXMgZ2VuZXJhdGVkIHVzaW5nIFtgZnJhbWVfc3lzdGVtOjpDb25maWc6Okhhc2hpbmdgXS4ATFBhZ2VkVGFyZ2V0U25hcHNob3QAAQgFBdA5DgQADGwgUGFnaW5hdGVkIHRhcmdldCBzbmFwc2hvdC4AWQEgRm9yIHRoZSB0aW1lIGJlaW5nLCBzaW5jZSB3ZSBhc3N1bWUgb25lIHBhZ2VzIG9mIHRhcmdldHMsIGF0IG1vc3QgT05FIGtleSB3aWxsIGV4aXN0LgBcUGFnZWRUYXJnZXRTbmFwc2hvdEhhc2gAAQgFBdBABAAMNQEgU2FtZSBhcyBbYFBhZ2VkVGFyZ2V0U25hcHNob3RgXSwgYnV0IGl0IHdpbGwgc3RvcmUgdGhlIGhhc2ggb2YgdGhlIHNuYXBzaG90LgD8IFRoZSBoYXNoIGlzIGdlbmVyYXRlZCB1c2luZyBbYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpIYXNoaW5nYF0uAAGVBQAB5QgAGDRVbnNpZ25lZFBoYXNlOBCWAAAABIAgRHVyYXRpb24gb2YgdGhlIHVuc2lnbmVkIHBoYXNlLgAsU2lnbmVkUGhhc2U4ECwBAAAEeCBEdXJhdGlvbiBvZiB0aGUgc2lnbmVkIHBoYXNlLgBUU2lnbmVkVmFsaWRhdGlvblBoYXNlOBAAAgAAEKQgRHVyYXRpb24gb2YgdGhlIHNpbmdlZCB2YWxpZGF0aW9uIHBoYXNlLgBVASBUaGUgZHVyYXRpb24gb2YgdGhpcyBzaG91bGQgbm90IGJlIGxlc3MgdGhhbiBgVDo6UGFnZXNgLCBhbmQgdGhlcmUgaXMgbm8gcG9pbnQgaW4gaXQBASBiZWluZyBtb3JlIHRoYW4gYFNpZ25lZFBoYXNlOjpNYXhTdWJtaXNzaW9uOjpnZXQoKSAqIFQ6OlBhZ2VzYC4AVFZvdGVyU25hcHNob3RQZXJCbG9jazgQwAIAAATIIFRoZSBudW1iZXIgb2Ygc25hcHNob3Qgdm90ZXJzIHRvIGZldGNoIHBlciBibG9jay4AWFRhcmdldFNuYXBzaG90UGVyQmxvY2s4ENAHAAAEzCBUaGUgbnVtYmVyIG9mIHNuYXBzaG90IHRhcmdldHMgdG8gZmV0Y2ggcGVyIGJsb2NrLgAUUGFnZXM4ECAAAAAYVCBUaGUgbnVtYmVyIG9mIHBhZ2VzLgABASBUaGUgc25hcHNob3QgaXMgY3JlYXRlZCB3aXRoIHRoaXMgbWFueSBrZXlzIGluIHRoZSBzdG9yYWdlIG1hcC4AUQEgVGhlIHNvbHV0aW9ucyBtYXkgY29udGFpbiBhdCBNT1NUIHRoaXMgbWFueSBwYWdlcywgYnV0IGxlc3MgcGFnZXMgYXJlIGFjY2VwdGFibGUgYXMYIHdlbGwuAAE9DgAAAFUAAGhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllcgFoTXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIcPFF1ZXVlZFNvbHV0aW9uWAABCAUF0KUFBAAcPQEgVGhlIGBYYCB2YXJpYW50IG9mIHRoZSBjdXJyZW50IHF1ZXVlZCBzb2x1dGlvbi4gTWlnaHQgYmUgdGhlIHZhbGlkIG9uZSBvciBub3QuAGkBIFRoZSB0d28gdmFyaWFudHMgb2YgdGhpcyBzdG9yYWdlIGl0ZW0gaXMgdG8gYXZvaWQgdGhlIG5lZWQgb2YgY29weWluZy4gUmVjYWxsIHRoYXQgb25jZSBhcQEgYFZlcmlmeWluZ1NvbHV0aW9uYCBpcyBiZWluZyBwcm9jZXNzZWQsIGl0IG5lZWRzIHRvIHdyaXRlIGl0cyBwYXJ0aWFsIHN1cHBvcnRzICpzb21ld2hlcmUqLmkBIFdyaXRpbmcgdGhlc2VzIHN1cHBvcnRzIG9uIHRvcCBvZiBhICpnb29kKiBxdWV1ZWQgc3VwcG9ydHMgaXMgd3JvbmcsIHNpbmNlIHdlIG1pZ2h0IGJhaWwudQEgV3JpdGluZyB0aGVtIHRvIGEgYnVnZ2VyIGFuZCBjb3B5aW5nIGF0IHRoZSBuZWQgaXMgc2xpZ2h0bHkgYmV0dGVyLCBidXQgZXhwZW5zaXZlLiBUaGlzIGZsYWd8IHN5c3RlbSBpcyBiZXN0IG9mIGJvdGggd29ybGRzLgA8UXVldWVkU29sdXRpb25ZAAEIBQXQpQUEAAQ9ASBUaGUgYFlgIHZhcmlhbnQgb2YgdGhlIGN1cnJlbnQgcXVldWVkIHNvbHV0aW9uLiBNaWdodCBiZSB0aGUgdmFsaWQgb25lIG9yIG5vdC4ASFF1ZXVlZFZhbGlkVmFyaWFudAEBBAU4QQ4EAQhdASBQb2ludGVyIHRvIHRoZSB2YXJpYW50IG9mIFtgUXVldWVkU29sdXRpb25YYF0gb3IgW2BRdWV1ZWRTb2x1dGlvbllgXSB0aGF0IGlzIGN1cnJlbnRseRwgdmFsaWQuAFhRdWV1ZWRTb2x1dGlvbkJhY2tpbmdzAAEIBQXQRQ4EACDUIFRoZSBgKGFtb3VudCwgY291bnQpYCBvZiBiYWNraW5ncywgZGl2aWRlZCBwZXIgcGFnZS4AcQEgVGhpcyBpcyBzdG9yZWQgYmVjYXVzZSBpbiB0aGUgbGFzdCBibG9jayBvZiB2ZXJpZmljYXRpb24gd2UgbmVlZCB0aGVtIHRvIGNvbXB1dGUgdGhlIHNjb3JlLJggYW5kIGNoZWNrIGBNYXhCYWNrZXJzUGVyV2lubmVyRmluYWxgLgBxASBUaGlzIGNhbiBvbmx5IGV2ZXIgbGl2ZSBmb3IgdGhlIGludmFsaWQgdmFyaWFudCBvZiB0aGUgc29sdXRpb24uIE9uY2UgaXQgaXMgdmFsaWQsIHdlIGRvbid0FQEgbmVlZCB0aGlzIGluZm9ybWF0aW9uIGFueW1vcmU7IHRoZSBzY29yZSBpcyBhbHJlYWR5IGNvbXB1dGVkIG9uY2UgaW70IFtgUXVldWVkU29sdXRpb25TY29yZWBdLCBhbmQgdGhlIGJhY2tpbmcgY291bnRzIGFyZSBjaGVja2VkLgBMUXVldWVkU29sdXRpb25TY29yZQABBAU4xQUEAAzYIFRoZSBzY29yZSBvZiB0aGUgdmFsaWQgdmFyaWFudCBvZiBbYFF1ZXVlZFNvbHV0aW9uYF0uALggVGhpcyBvbmx5IGV2ZXIgbGl2ZXMgZm9yIHRoZSBgdmFsaWRgIHZhcmlhbnQuADBNaW5pbXVtU2NvcmUAAMUFBAAEVQEgVGhlIG1pbmltdW0gc2NvcmUgdGhhdCBlYWNoIHNvbHV0aW9uIG11c3QgYXR0YWluIGluIG9yZGVyIHRvIGJlIGNvbnNpZGVyZWQgZmVhc2libGUuADRTdGF0dXNTdG9yYWdlAQBVDgQBBHQgU3RvcmFnZSBpdGVtIGZvciBbYFN0YXR1c2BdLgAByQUAAekIAAxgTWF4QmFja2Vyc1Blcldpbm5lckZpbmFsOBDkVwAAFB0BIE1heGltdW0gbnVtYmVyIG9mIGJhY2tlcnMsIHBlciB3aW5uZXIsIGFtb25nIGFsbCBwYWdlcyBvZiBhbiBlbGVjdGlvbi4ABQEgVGhpcyBjYW4gb25seSBiZSBjaGVja2VkIGF0IHRoZSB2ZXJ5IGZpbmFsIHN0ZXAgb2YgdmVyaWZpY2F0aW9uLgBdASBOT1RFOiBhdCB0aGUgbW9tZW50LCB3ZSBkb24ndCBjaGVjayB0aGlzLCBhbmQgaXQgaXMgaW4gcGxhY2UgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5LgBMTWF4QmFja2Vyc1Blcldpbm5lcjgQwAIAAATEIE1heGltdW0gbnVtYmVyIG9mIGJhY2tlcnMsIHBlciB3aW5uZXIsIHBlciBwYWdlLgBETWF4V2lubmVyc1BlclBhZ2U4EOgDAAAIYQEgTWF4aW11bSBudW1iZXIgb2Ygc3VwcG9ydHMgKGFrYS4gd2lubmVycy92YWxpZGF0b3JzL3RhcmdldHMpIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIGluTCBhIHBhZ2Ugb2YgcmVzdWx0cy4AAAAAVgAAaE11bHRpQmxvY2tFbGVjdGlvblVuc2lnbmVkAAHNBQAAAAAAAFcAAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQBYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZBA0SW52dWxuZXJhYmxlcwEAMQ4EACQVASBBY2NvdW50cyB3aGl0ZWxpc3RlZCBieSBnb3Zlcm5hbmNlIHRvIGFsd2F5cyBzdWJtaXQgdGhlaXIgc29sdXRpb25zLgBwIFRoZXkgYXJlIGRpZmZlcmVudCBpbiB0aGF0OgD8ICogVGhleSBhbHdheXMgcGF5IGEgZml4ZWQgZGVwb3NpdCBmb3Igc3VibWlzc2lvbiwgc3BlY2lmaWVkIGJ59CAgIFtgQ29uZmlnOjpJbnZ1bG5lcmFibGVEZXBvc2l0YF0uIFRoZXkgcGF5IG5vIHBhZ2UgZGVwb3NpdC5pASAqIElmIF9lamVjdGVkXyBieSBiZXR0ZXIgc29sdXRpb24gZnJvbSBbYFNvcnRlZFNjb3Jlc2BdLCB0aGV5IHdpbGwgZ2V0IHRoZWlyIGZ1bGwgZGVwb3NpdCAgICBiYWNrLgkBICogVGhleSBhbHdheXMgZ2V0IHRoZWlyIHR4LWZlZSBiYWNrIGV2ZW4gaWYgdGhleSBhcmUgX2Rpc2NhcmRlZF8uADBTb3J0ZWRTY29yZXMBAQQFOFkOBAAAAERTdWJtaXNzaW9uU3RvcmFnZQABDAUFBWUO2QUEAATsIFRyaXBsZSBtYXAgZnJvbSAocm91bmQsIGFjY291bnQsIHBhZ2UpIHRvIGEgc29sdXRpb24gcGFnZS4AZFN1Ym1pc3Npb25NZXRhZGF0YVN0b3JhZ2UAAQgFBfELaQ4EABDYIE1hcCBmcm9tIGFjY291bnQgdG8gdGhlIG1ldGFkYXRhIG9mIHRoZWlyIHN1Ym1pc3Npb24uAHEBIGludmFyaWFudDogZm9yIGFueSBLZXkxIG9mIHR5cGUgYEFjY291bnRJZGAgaW4gW2BTdWJtaXNzaW9uc2BdLCB0aGlzIHN0b3JhZ2UgbWFwIGFsc28gaGFzIGEcIHZhbHVlLgABpQYAAfkIAAABdQ4AAAR3C2VQQmgLzwU50gTfWdMoia+mC8nJTI4kdu2bqqkwBSxkZXBvc2l0X2ZvcggMd2hvBBRwYWdlczhZARQRASBHZXQgdGhlIGRlcG9zaXQgYW1vdW50IHRoYXQgd2lsbCBiZSBoZWxkIGZvciBhIHNvbHV0aW9uIG9mIGBwYWdlc2AuAEEBIFRoaXMgYWxsb3dzIGFuIG9mZmNoYWluIGFwcGxpY2F0aW9uIHRvIGtub3cgd2hhdCBbYENvbmZpZzo6RGVwb3NpdFBlclBhZ2VgXSBhbmRlASBbYENvbmZpZzo6RGVwb3NpdEJhc2VgXSBhcmUgZG9pbmcgdW5kZXIgdGhlIGhvb2QuIEl0IGFsc28gdGFrZXMgaW50byBhY2NvdW50IGlmIGB3aG9gIGlzaCBbYEludnVsbmVyYWJsZXNgXSBvciBub3QuAFgAABxTdGFraW5nARxTdGFraW5n0DhWYWxpZGF0b3JDb3VudAEAOBAAAAAABJwgVGhlIGlkZWFsIG51bWJlciBvZiBhY3RpdmUgdmFsaWRhdG9ycy4AGEJvbmRlZAABBAUEBAQADAEBIE1hcCBmcm9tIGFsbCBsb2NrZWQgInN0YXNoIiBhY2NvdW50cyB0byB0aGUgY29udHJvbGxlciBhY2NvdW50LgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBATWluTm9taW5hdG9yQm9uZAEAWQFAAAAAAAAAAAAAAAAAAAAAAAQhASBUaGUgbWluaW11bSBhY3RpdmUgYm9uZCB0byBiZWNvbWUgYW5kIG1haW50YWluIHRoZSByb2xlIG9mIGEgbm9taW5hdG9yLgBATWluVmFsaWRhdG9yQm9uZAEAWQFAAAAAAAAAAAAAAAAAAAAAAAQhASBUaGUgbWluaW11bSBhY3RpdmUgYm9uZCB0byBiZWNvbWUgYW5kIG1haW50YWluIHRoZSByb2xlIG9mIGEgdmFsaWRhdG9yLgBITWluaW11bUFjdGl2ZVN0YWtlAQBZAUAAAAAAAAAAAAAAAAAAAAAABBEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBub21pbmF0b3Igc3Rha2Ugb2YgdGhlIGxhc3Qgc3VjY2Vzc2Z1bCBlbGVjdGlvbi4ANE1pbkNvbW1pc3Npb24BAKEBEAAAAAAM6CBUaGUgbWluaW11bSBhbW91bnQgb2YgY29tbWlzc2lvbiB0aGF0IHZhbGlkYXRvcnMgY2FuIHNldC4AgCBJZiBzZXQgdG8gYDBgLCBubyBsaW1pdCBleGlzdHMuADRNYXhDb21taXNzaW9uAQChARAAypo7DMAgVGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IHZhbGlkYXRvcnMgY2FuIHNldC4AGQEgSWYgbm90IHNldCwgZGVmYXVsdHMgdG8gYFBlcmJpbGw6Om9uZSgpYCAoMTAwJSksIGkuZS4gbm8gdXBwZXIgbGltaXQuAExEaXNhYmxlTWludGluZ0d1YXJkAAA4BAAcPQEgU2FmZXR5IGd1YXJkOiB0aGUgZXJhIGZyb20gd2hpY2ggbGVnYWN5IG1pbnRpbmcgaXMgcGVybWFuZW50bHkgZGlzYWJsZWQgb24gdGhlFQEgcGF5b3V0IHNpZGUuICoqSXJyZXZlcnNpYmxlKiog4oCUIG9uY2Ugc2V0LCBzaG91bGQgbmV2ZXIgYmUgY2xlYXJlZC4AMQEgU2VwYXJhdGUgZnJvbSBbYENvbmZpZzo6RGlzYWJsZU1pbnRpbmdgXSB3aGljaCBjb250cm9scyB0aGUgYGVuZF9lcmFgIHBhdGguNQEgVGhpcyBzdG9yYWdlIGd1YXJkcyBhZ2FpbnN0IG1pbnRpbmcgZHVyaW5nIHBheW91dCBmb3IgZXJhcyB0aGF0IHdlcmUgY3JlYXRlZEkBIGluIERBUCBtb2RlLiBTZXQgYXV0b21hdGljYWxseSBieSBgZW5kX2VyYV9kYXBgIG9uIGZpcnN0IHN1Y2Nlc3NmdWwgcG90IHNuYXBzaG90LhkBIEluIGxlZ2FjeSBtb2RlIChLdXNhbWEpLCB0aGlzIGlzIG5ldmVyIHNldCBhbmQgdGhlIGd1YXJkIGlzIGluYWN0aXZlLgBAT3B0aW11bVNlbGZTdGFrZQEAWQFAAAAAAAAAAAAAAAAAAAAAABC0IE9wdGltdW0gc2VsZi1zdGFrZSB0aHJlc2hvbGQgZm9yIHZhbGlkYXRvcnMuACEBIEJlbG93IHRoaXMgdGhyZXNob2xkLCB0aGUgaW5jZW50aXZlIHdlaWdodCBncm93cyBhcyBgc3FydChzZWxmX3N0YWtlKWAu6CBBYm92ZSBpdCwgZ3Jvd3RoIGlzIGRhbXBlbmVkIGJ5IFtgU2VsZlN0YWtlU2xvcGVGYWN0b3JgXS4AQEhhcmRDYXBTZWxmU3Rha2UBAFkBQAAAAAAAAAAAAAAAAAAAAAAMsCBIYXJkIGNhcCBvbiBlZmZlY3RpdmUgdmFsaWRhdG9yIHNlbGYtc3Rha2UuADUBIFNlbGYtc3Rha2UgYWJvdmUgdGhpcyB2YWx1ZSByZWNlaXZlcyBubyBhZGRpdGlvbmFsIHJld2FyZCBiZW5lZml0IChwbGF0ZWF1KS4AUFNlbGZTdGFrZVNsb3BlRmFjdG9yAQChARAAAAAADGUBIFNsb3BlIGZhY3RvciBjb250cm9sbGluZyB0aGUgZGlzY291cmFnZW1lbnQgcmF0ZSBmb3Igc2VsZi1zdGFrZSBiZXR3ZWVuIG9wdGltdW0gYW5kIGNhcC4ARQEgVmFsdWUgYmV0d2VlbiAwIGFuZCAxOiBrPTEgbWVhbnMgbm8gZGlzY291cmFnZW1lbnQsIGs9MCBtZWFucyBpbW1lZGlhdGUgcGxhdGVhdS4AcEVyYXNWYWxpZGF0b3JJbmNlbnRpdmVCdWRnZXQBAQQFOFkBQAAAAAAAAAAAAAAAAAAAAAAMQQEgVGhlIHRvdGFsIHZhbGlkYXRvciBpbmNlbnRpdmUgYnVkZ2V0IGZvciB0aGUgZ2l2ZW4gZXJhLCBzbmFwc2hvdHRlZCBhdCBlcmEgZW5kLgBVASBUaGlzIGlzIHRoZSBzaW1pbGFyIHRvIFtgRXJhc1ZhbGlkYXRvclJld2FyZGBdIGJ1dCBmb3IgdGhlIHNlbGYtc3Rha2UgaW5jZW50aXZlIHBvdC4AfEVyYXNTdW1WYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHQBAQQFOFkBQAAAAAAAAAAAAAAAAAAAAAAM2CBTdW0gb2YgYWxsIHZhbGlkYXRvcnMnIGluY2VudGl2ZSB3ZWlnaHRzIGZvciB0aGUgZXJhLgDUIERpcmVjdGx5IGxpbmtlZCB0byBbYEVyYXNWYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHRgXS4AcEVyYXNWYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHQAAQgFBfELWQEEAAi8IEluZGl2aWR1YWwgdmFsaWRhdG9yIGluY2VudGl2ZSB3ZWlnaHQgcGVyIGVyYS4tASBFYWNoIHZhbGlkYXRvcidzIHNoYXJlIG9mIHRoZSBpbmNlbnRpdmUgcG90ID0gYHRoZWlyX3dlaWdodCAvIHN1bV93ZWlnaHRgLgBYQXJlTm9taW5hdG9yc1NsYXNoYWJsZQEAXQEEARykIFdoZXRoZXIgbm9taW5hdG9ycyBhcmUgc2xhc2hhYmxlIG9yIG5vdC4AbQEgLSBXaGVuIHNldCB0byBgdHJ1ZWAgKGRlZmF1bHQpLCBub21pbmF0b3JzIGFyZSBzbGFzaGVkIGFsb25nIHdpdGggdmFsaWRhdG9ycyBhbmQgbXVzdCB3YWl0KQEgICB0aGUgZnVsbCBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gYmVmb3JlIHdpdGhkcmF3aW5nIHVuYm9uZGVkIGZ1bmRzLhUBIC0gV2hlbiBzZXQgdG8gYGZhbHNlYCwgbm9taW5hdG9ycyBhcmUgbm90IHNsYXNoZWQsIGFuZCBjYW4gdW5ib25kIGluDQEgICBbYENvbmZpZzo6Tm9taW5hdG9yRmFzdFVuYm9uZER1cmF0aW9uYF0gZXJhcyBpbnN0ZWFkIG9mIHRoZSBmdWxsWQEgICBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gKHNlZSBbYFN0YWtpbmdJbnRlcmZhY2U6Om5vbWluYXRvcl9ib25kaW5nX2R1cmF0aW9uYF0pLgBcRXJhc05vbWluYXRvcnNTbGFzaGFibGUAAQQFOF0BBAAc2CBQZXItZXJhIHNuYXBzaG90IG9mIHdoZXRoZXIgbm9taW5hdG9ycyBhcmUgc2xhc2hhYmxlLgBlASBUaGlzIGlzIGNvcGllZCBmcm9tIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGF0IHRoZSBzdGFydCBvZiBlYWNoIGVyYS4gV2hlbiBwcm9jZXNzaW5nUQEgb2ZmZW5jZXMsIHdlIHVzZSB0aGUgdmFsdWUgZnJvbSB0aGlzIHN0b3JhZ2UgZm9yIHRoZSBvZmZlbmNlIGVyYSB0byBlbnN1cmUgdGhhdCB0aGU5ASBzbGFzaGluZyBydWxlcyBhdCB0aGUgdGltZSBvZiB0aGUgb2ZmZW5jZSBhcmUgYXBwbGllZCwgbm90IHRoZSBjdXJyZW50IHJ1bGVzLgBlASBJZiBhbiBlbnRyeSBkb2VzIG5vdCBleGlzdCBmb3IgYW4gZXJhLCBub21pbmF0b3JzIGFyZSBhc3N1bWVkIHRvIGJlIHNsYXNoYWJsZSAoZGVmYXVsdCkuABhMZWRnZXIAAQQCBHkOBAAQRQEgTWFwIGZyb20gYWxsICh1bmxvY2tlZCkgImNvbnRyb2xsZXIiIGFjY291bnRzIHRvIHRoZSBpbmZvIHJlZ2FyZGluZyB0aGUgc3Rha2luZy4AdQEgTm90ZTogQWxsIHRoZSByZWFkcyBhbmQgbXV0YXRpb25zIHRvIHRoaXMgc3RvcmFnZSAqTVVTVCogYmUgZG9uZSB0aHJvdWdoIHRoZSBtZXRob2RzIGV4cG9zZWToIGJ5IFtgU3Rha2luZ0xlZGdlcmBdIHRvIGVuc3VyZSBkYXRhIGFuZCBsb2NrIGNvbnNpc3RlbmN5LgAUUGF5ZWUAAQQFBLEGBAAM5CBXaGVyZSB0aGUgcmV3YXJkIHBheW1lbnQgc2hvdWxkIGJlIG1hZGUuIEtleWVkIGJ5IHN0YXNoLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgAoVmFsaWRhdG9ycwEBBAUEtQYIAAAMRQEgVGhlIG1hcCBmcm9tICh3YW5uYWJlKSB2YWxpZGF0b3Igc3Rhc2gga2V5IHRvIHRoZSBwcmVmZXJlbmNlcyBvZiB0aGF0IHZhbGlkYXRvci4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AUENvdW50ZXJGb3JWYWxpZGF0b3JzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASE1heFZhbGlkYXRvcnNDb3VudAAAOAQADDEBIFRoZSBtYXhpbXVtIHZhbGlkYXRvciBjb3VudCBiZWZvcmUgd2Ugc3RvcCBhbGxvd2luZyBuZXcgdmFsaWRhdG9ycyB0byBqb2luLgDQIFdoZW4gdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCBubyBsaW1pdHMgYXJlIGVuZm9yY2VkLgBATGFzdFZhbGlkYXRvckVyYQABBAUEOAQAMGUBIFRyYWNrcyB0aGUgbGFzdCBlcmEgaW4gd2hpY2ggYW4gYWNjb3VudCB3YXMgYWN0aXZlIGFzIGEgdmFsaWRhdG9yIChpbmNsdWRlZCBpbiB0aGUgZXJhJ3NQIGV4cG9zdXJlL3NuYXBzaG90KS4AWQEgVGhpcyBpcyB1c2VkIHRvIGVuZm9yY2UgdGhhdCBhY2NvdW50cyB3aG8gd2VyZSByZWNlbnRseSB2YWxpZGF0b3JzIG11c3Qgd2FpdCB0aGUgZnVsbGEBIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBiZWZvcmUgdGhlaXIgZnVuZHMgY2FuIGJlIHdpdGhkcmF3biwgZXZlbiBpZiB0aGV5IHN3aXRjaCB0b7wgbm9taW5hdG9yIHJvbGUuIFRoaXMgcHJldmVudHMgdmFsaWRhdG9ycyBmcm9tOqwgMS4gQ29tbWl0dGluZyBhIHNsYXNoYWJsZSBvZmZlbmNlIGluIGVyYSBOfCAyLiBTd2l0Y2hpbmcgdG8gbm9taW5hdG9yIHJvbGVlASAzLiBVc2luZyB0aGUgc2hvcnRlciBub21pbmF0b3IgdW5ib25kaW5nIGR1cmF0aW9uIHRvIHdpdGhkcmF3IGZ1bmRzIGJlZm9yZSBiZWluZyBzbGFzaGVkAFkBIFVwZGF0ZWQgd2hlbiBlcmEgc25hcHNob3RzIGFyZSBjcmVhdGVkIChpbiBgRXJhc1N0YWtlcnNQYWdlZGAvYEVyYXNTdGFrZXJzT3ZlcnZpZXdgKS74IENsZWFuZWQgdXAgd2hlbiB0aGUgc3Rhc2ggaXMga2lsbGVkIChmdWxseSB3aXRoZHJhd24vcmVhcGVkKS4AKE5vbWluYXRvcnMAAQQFBH0OBABMdQEgVGhlIG1hcCBmcm9tIG5vbWluYXRvciBzdGFzaCBrZXkgdG8gdGhlaXIgbm9taW5hdGlvbiBwcmVmZXJlbmNlcywgbmFtZWx5IHRoZSB2YWxpZGF0b3JzIHRoYXRYIHRoZXkgd2lzaCB0byBzdXBwb3J0LgA5ASBOb3RlIHRoYXQgdGhlIGtleXMgb2YgdGhpcyBzdG9yYWdlIG1hcCBtaWdodCBiZWNvbWUgbm9uLWRlY29kYWJsZSBpbiBjYXNlIHRoZS0BIGFjY291bnQncyBbYE5vbWluYXRpb25zUXVvdGE6Ok1heE5vbWluYXRpb25zYF0gY29uZmlndXJhdGlvbiBpcyBkZWNyZWFzZWQukCBJbiB0aGlzIHJhcmUgY2FzZSwgdGhlc2Ugbm9taW5hdG9yc2UBIGFyZSBzdGlsbCBleGlzdGVudCBpbiBzdG9yYWdlLCB0aGVpciBrZXkgaXMgY29ycmVjdCBhbmQgcmV0cmlldmFibGUgKGkuZS4gYGNvbnRhaW5zX2tleWBxASBpbmRpY2F0ZXMgdGhhdCB0aGV5IGV4aXN0KSwgYnV0IHRoZWlyIHZhbHVlIGNhbm5vdCBiZSBkZWNvZGVkLiBUaGVyZWZvcmUsIHRoZSBub24tZGVjb2RhYmxlbQEgbm9taW5hdG9ycyB3aWxsIGVmZmVjdGl2ZWx5IG5vdC1leGlzdCwgdW50aWwgdGhleSByZS1zdWJtaXQgdGhlaXIgcHJlZmVyZW5jZXMgc3VjaCB0aGF0IGl0AQEgaXMgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhlIG5ld2x5IHNldCBgQ29uZmlnOjpNYXhOb21pbmF0aW9uc2AuAGEBIFRoaXMgaW1wbGllcyB0aGF0IGA6Oml0ZXJfa2V5cygpLmNvdW50KClgIGFuZCBgOjppdGVyKCkuY291bnQoKWAgbWlnaHQgcmV0dXJuIGRpZmZlcmVudG0BIHZhbHVlcyBmb3IgdGhpcyBtYXAuIE1vcmVvdmVyLCB0aGUgbWFpbiBgOjpjb3VudCgpYCBpcyBhbGlnbmVkIHdpdGggdGhlIGZvcm1lciwgbmFtZWx5IHRoZWwgbnVtYmVyIG9mIGtleXMgdGhhdCBleGlzdC4AbQEgTGFzdGx5LCBpZiBhbnkgb2YgdGhlIG5vbWluYXRvcnMgYmVjb21lIG5vbi1kZWNvZGFibGUsIHRoZXkgY2FuIGJlIGNoaWxsZWQgaW1tZWRpYXRlbHkgdmlhuCBbYENhbGw6OmNoaWxsX290aGVyYF0gZGlzcGF0Y2hhYmxlIGJ5IGFueW9uZS4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AUENvdW50ZXJGb3JOb21pbmF0b3JzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAOFZpcnR1YWxTdGFrZXJzAAEEBQQQBAAYyCBTdGFrZXJzIHdob3NlIGZ1bmRzIGFyZSBtYW5hZ2VkIGJ5IG90aGVyIHBhbGxldHMuAHUBIFRoaXMgcGFsbGV0IGRvZXMgbm90IGFwcGx5IGFueSBsb2NrcyBvbiB0aGVtLCB0aGVyZWZvcmUgdGhleSBhcmUgb25seSB2aXJ0dWFsbHkgYm9uZGVkLiBUaGV5bQEgYXJlIGV4cGVjdGVkIHRvIGJlIGtleWxlc3MgYWNjb3VudHMgYW5kIGhlbmNlIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBtdXRhdGUgdGhlaXIgbGVkZ2VycQEgZGlyZWN0bHkgdmlhIHRoaXMgcGFsbGV0LiBJbnN0ZWFkLCB0aGVzZSBhY2NvdW50cyBhcmUgbWFuYWdlZCBieSBvdGhlciBwYWxsZXRzIGFuZCBhY2Nlc3NlZCkBIHZpYSBsb3cgbGV2ZWwgYXBpcy4gV2Uga2VlcCB0cmFjayBvZiB0aGVtIHRvIGRvIG1pbmltYWwgaW50ZWdyaXR5IGNoZWNrcy4AYENvdW50ZXJGb3JWaXJ0dWFsU3Rha2VycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAEhNYXhOb21pbmF0b3JzQ291bnQAADgEAAwxASBUaGUgbWF4aW11bSBub21pbmF0b3IgY291bnQgYmVmb3JlIHdlIHN0b3AgYWxsb3dpbmcgbmV3IHZhbGlkYXRvcnMgdG8gam9pbi4A0CBXaGVuIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgbm8gbGltaXRzIGFyZSBlbmZvcmNlZC4AKEN1cnJlbnRFcmEAADgEABB8IFRoZSBjdXJyZW50IHBsYW5uZWQgZXJhIGluZGV4LgBlASBUaGlzIGlzIHRoZSBsYXRlc3QgcGxhbm5lZCBlcmEsIGRlcGVuZGluZyBvbiBob3cgdGhlIFNlc3Npb24gcGFsbGV0IHF1ZXVlcyB0aGUgdmFsaWRhdG9ygCBzZXQsIGl0IG1pZ2h0IGJlIGFjdGl2ZSBvciBub3QuACRBY3RpdmVFcmEAAIEOBAAQ2CBUaGUgYWN0aXZlIGVyYSBpbmZvcm1hdGlvbiwgaXQgaG9sZHMgaW5kZXggYW5kIHN0YXJ0LgBZASBUaGUgYWN0aXZlIGVyYSBpcyB0aGUgZXJhIGJlaW5nIGN1cnJlbnRseSByZXdhcmRlZC4gVmFsaWRhdG9yIHNldCBvZiB0aGlzIGVyYSBtdXN0IGJlmCBlcXVhbCB0byB3aGF0IGlzIFJDJ3Mgc2Vzc2lvbiBwYWxsZXQuAChCb25kZWRFcmFzAQCFDgQAECUBIEEgbWFwcGluZyBmcm9tIHN0aWxsLWJvbmRlZCBlcmFzIHRvIHRoZSBmaXJzdCBzZXNzaW9uIGluZGV4IG9mIHRoYXQgZXJhLgDIIE11c3QgY29udGFpbnMgaW5mb3JtYXRpb24gZm9yIGVyYXMgZm9yIHRoZSByYW5nZTq8IGBbYWN0aXZlX2VyYSAtIGJvdW5kaW5nX2R1cmF0aW9uOyBhY3RpdmVfZXJhXWAATEVyYXNTdGFrZXJzT3ZlcnZpZXcAAQgFBfELiQ4EADC4IFN1bW1hcnkgb2YgdmFsaWRhdG9yIGV4cG9zdXJlIGF0IGEgZ2l2ZW4gZXJhLgBxASBUaGlzIGNvbnRhaW5zIHRoZSB0b3RhbCBzdGFrZSBpbiBzdXBwb3J0IG9mIHRoZSB2YWxpZGF0b3IgYW5kIHRoZWlyIG93biBzdGFrZS4gSW4gYWRkaXRpb24sdQEgaXQgY2FuIGFsc28gYmUgdXNlZCB0byBnZXQgdGhlIG51bWJlciBvZiBub21pbmF0b3JzIGJhY2tpbmcgdGhpcyB2YWxpZGF0b3IgYW5kIHRoZSBudW1iZXIgb2ZpASBleHBvc3VyZSBwYWdlcyB0aGV5IGFyZSBkaXZpZGVkIGludG8uIFRoZSBwYWdlIGNvdW50IGlzIHVzZWZ1bCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZqwgcGFnZXMgb2YgcmV3YXJkcyB0aGF0IG5lZWRzIHRvIGJlIGNsYWltZWQuAGEBIFRoaXMgaXMga2V5ZWQgZmlyc3QgYnkgdGhlIGVyYSBpbmRleCB0byBhbGxvdyBidWxrIGRlbGV0aW9uIGFuZCB0aGVuIHRoZSBzdGFzaCBhY2NvdW50LqAgU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBgRXJhc2AuAMwgSXMgaXQgcmVtb3ZlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy5BASBJZiBzdGFrZXJzIGhhc24ndCBiZWVuIHNldCBvciBoYXMgYmVlbiByZW1vdmVkIHRoZW4gZW1wdHkgb3ZlcnZpZXcgaXMgcmV0dXJuZWQuAEBFcmFzU3Rha2Vyc1BhZ2VkAAEMBQUFZQ6NDgQAGMAgUGFnaW5hdGVkIGV4cG9zdXJlIG9mIGEgdmFsaWRhdG9yIGF0IGdpdmVuIGVyYS4AcQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24sIHRoZW4gc3Rhc2ggYWNjb3VudCBhbmQgZmluYWxsecggdGhlIHBhZ2UuIFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHRocm91Z2ggYEVyYXNgLgDUIFRoaXMgaXMgY2xlYXJlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4AOENsYWltZWRSZXdhcmRzAQEIBQXxC50OBAAY3CBIaXN0b3J5IG9mIGNsYWltZWQgcGFnZWQgcmV3YXJkcyBieSBlcmEgYW5kIHZhbGlkYXRvci4AaQEgVGhpcyBpcyBrZXllZCBieSBlcmEgYW5kIHZhbGlkYXRvciBzdGFzaCB3aGljaCBtYXBzIHRvIHRoZSBzZXQgb2YgcGFnZSBpbmRleGVzIHdoaWNoIGhhdmU4IGJlZW4gY2xhaW1lZC4AzCBJdCBpcyByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgBIRXJhc1ZhbGlkYXRvclByZWZzAQEIBQXxC7UGCAAAFAUBIEV4cG9zdXJlIG9mIHZhbGlkYXRvciBhdCBlcmEgd2l0aCB0aGUgcHJlZmVyZW5jZXMgb2YgdmFsaWRhdG9ycy4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQuAMwgSXMgaXQgcmVtb3ZlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4ATEVyYXNWYWxpZGF0b3JSZXdhcmQAAQQFOFkBBAAUNQEgVGhlIHRvdGFsIHN0YWtlciByZXdhcmQgYnVkZ2V0IGZvciBlYWNoIGVyYSB3aXRoaW4gW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdLgBkIFNldCBhdCBlcmEgZmluYWxpemF0aW9uOlkBIC0gaW4gbm9uLW1pbnRpbmcgbW9kZSB0aGlzIGlzIHRoZSBzbmFwc2hvdCBvZiB0aGUgZXJhIHBvdCBiYWxhbmNlIGJlZm9yZSBhbnkgcGF5b3V0cy4xASAtIGluIGxlZ2FjeSBtb2RlIGl0IGNvbWVzIGZyb20gYEVyYVBheW91dGAsIHdpdGggcmV3YXJkcyBtaW50ZWQgb24gdGhlIGZseS4AQEVyYXNSZXdhcmRQb2ludHMBAQQFOKEOFAAAAAAACNAgUmV3YXJkcyBmb3IgdGhlIGxhc3QgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuJQEgSWYgcmV3YXJkIGhhc24ndCBiZWVuIHNldCBvciBoYXMgYmVlbiByZW1vdmVkIHRoZW4gMCByZXdhcmQgaXMgcmV0dXJuZWQuADhFcmFzVG90YWxTdGFrZQEBBAU4WQFAAAAAAAAAAAAAAAAAAAAAAAgRASBUaGUgdG90YWwgYW1vdW50IHN0YWtlZCBmb3IgdGhlIGxhc3QgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuHQEgSWYgdG90YWwgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHN0YWtlIGlzIHJldHVybmVkLgAgRm9yY2VFcmEBAAEJBAAEVCBNb2RlIG9mIGVyYSBmb3JjaW5nLgBATWF4U3Rha2VkUmV3YXJkcwAAwQYEABAZASBNYXhpbXVtIHN0YWtlZCByZXdhcmRzLCBpLmUuIHRoZSBwZXJjZW50YWdlIG9mIHRoZSBlcmEgaW5mbGF0aW9uIHRoYXRsIGlzIHVzZWQgZm9yIHN0YWtlIHJld2FyZHMuAPQgT25seSB1c2VkIGluIGxlZ2FjeSBtaW50aW5nIG1vZGUgKGBEaXNhYmxlTWludGluZyA9IGZhbHNlYCkuAExTbGFzaFJld2FyZEZyYWN0aW9uAQChARAAAAAADPggVGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIHNsYXNoIHRoYXQgaXMgZGlzdHJpYnV0ZWQgdG8gcmVwb3J0ZXJzLgDkIFRoZSByZXN0IG9mIHRoZSBzbGFzaGVkIHZhbHVlIGlzIGhhbmRsZWQgYnkgdGhlIGBTbGFzaGAuAExDYW5jZWxlZFNsYXNoUGF5b3V0AQBZAUAAAAAAAAAAAAAAAAAAAAAACBUBIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgZ2l2ZW4gdG8gcmVwb3J0ZXJzIG9mIGEgc2xhc2ggZXZlbnQgd2hpY2ggd2Fz7CBjYW5jZWxlZCBieSBleHRyYW9yZGluYXJ5IGNpcmN1bXN0YW5jZXMgKGUuZy4gZ292ZXJuYW5jZSkuADBPZmZlbmNlUXVldWUAAQgFBfELrQ4EAChNASBTdG9yZXMgcmVwb3J0ZWQgb2ZmZW5jZXMgaW4gYSBxdWV1ZSB1bnRpbCB0aGV5IGFyZSBwcm9jZXNzZWQgaW4gc3Vic2VxdWVudCBibG9ja3MuAGUBIEVhY2ggb2ZmZW5jZSBpcyByZWNvcmRlZCB1bmRlciB0aGUgY29ycmVzcG9uZGluZyBlcmEgaW5kZXggYW5kIHRoZSBvZmZlbmRpbmcgdmFsaWRhdG9yJ3NxASBhY2NvdW50LiBJZiBhbiBvZmZlbmNlIHNwYW5zIG11bHRpcGxlIHBhZ2VzLCBvbmx5IG9uZSBwYWdlIGlzIHByb2Nlc3NlZCBhdCBhIHRpbWUuIE9mZmVuY2VzPQEgYXJlIGhhbmRsZWQgc2VxdWVudGlhbGx5LCB3aXRoIHRoZWlyIGFzc29jaWF0ZWQgc2xhc2hlcyBjb21wdXRlZCBhbmQgc3RvcmVkIGluUQEgYFVuYXBwbGllZFNsYXNoZXNgLiBUaGVzZSBzbGFzaGVzIGFyZSB0aGVuIGFwcGxpZWQgaW4gYSBmdXR1cmUgZXJhIGFzIGRldGVybWluZWQgYnlYIGBTbGFzaERlZmVyRHVyYXRpb25gLgBRASBBbnkgb2ZmZW5jZXMgdGllZCB0byBhbiBlcmEgb2xkZXIgdGhhbiBgQm9uZGluZ0R1cmF0aW9uYCBhcmUgYXV0b21hdGljYWxseSBkcm9wcGVkLtAgUHJvY2Vzc2luZyBhbHdheXMgcHJpb3JpdGl6ZXMgdGhlIG9sZGVzdCBlcmEgZmlyc3QuAEBPZmZlbmNlUXVldWVFcmFzAACxDgQAMHUBIFRyYWNrcyB0aGUgZXJhcyB0aGF0IGNvbnRhaW4gb2ZmZW5jZXMgaW4gYE9mZmVuY2VRdWV1ZWAsIHNvcnRlZCBmcm9tICoqZWFybGllc3QgdG8gbGF0ZXN0KiouAE0BIC0gVGhpcyBlbnN1cmVzIGVmZmljaWVudCByZXRyaWV2YWwgb2YgdGhlIG9sZGVzdCBvZmZlbmNlIHdpdGhvdXQgaXRlcmF0aW5nIHRocm91Z2hAIGBPZmZlbmNlUXVldWVgLmUBIC0gV2hlbiBhIG5ldyBvZmZlbmNlIGlzIGFkZGVkIHRvIGBPZmZlbmNlUXVldWVgLCBpdHMgZXJhIGlzICoqaW5zZXJ0ZWQgaW4gc29ydGVkIG9yZGVyKipgIGlmIG5vdCBhbHJlYWR5IHByZXNlbnQuQQEgLSBXaGVuIGFsbCBvZmZlbmNlcyBmb3IgYW4gZXJhIGFyZSBwcm9jZXNzZWQsIGl0IGlzICoqcmVtb3ZlZCoqIGZyb20gdGhpcyBsaXN0LhUBIC0gVGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoaXMgdmVjdG9yIGlzIGJvdW5kZWQgYnkgYEJvbmRpbmdEdXJhdGlvbiArdCAgIE9GRkVOQ0VfUVVFVUVfRVJBU19CT1VORGAuAHEBIFRoaXMgZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgZXhwZW5zaXZlIGl0ZXJhdGlvbiBhbmQgc29ydGluZyB3aGVuIGZldGNoaW5nIHRoZSBuZXh0IG9mZmVuY2UwIHRvIHByb2Nlc3MuAERQcm9jZXNzaW5nT2ZmZW5jZQAAtQ4EADAdASBUcmFja3MgdGhlIGN1cnJlbnRseSBwcm9jZXNzZWQgb2ZmZW5jZSByZWNvcmQgZnJvbSB0aGUgYE9mZmVuY2VRdWV1ZWAuAE0BIC0gV2hlbiBwcm9jZXNzaW5nIG9mZmVuY2VzLCBhbiBvZmZlbmNlIHJlY29yZCBpcyAqKnBvcHBlZCoqIGZyb20gdGhlIG9sZGVzdCBlcmEgaW6IICAgYE9mZmVuY2VRdWV1ZWAgYW5kIHN0b3JlZCBoZXJlLnUBIC0gVGhlIGZ1bmN0aW9uIGBwcm9jZXNzX29mZmVuY2VgIHJlYWRzIGZyb20gdGhpcyBzdG9yYWdlLCBwcm9jZXNzaW5nIG9uZSBwYWdlIG9mIGV4cG9zdXJlIGF0KCAgIGEgdGltZS5lASAtIEFmdGVyIHByb2Nlc3NpbmcgYSBwYWdlLCB0aGUgYGV4cG9zdXJlX3BhZ2VgIGNvdW50IGlzICoqZGVjcmVtZW50ZWQqKiB1bnRpbCBpdCByZWFjaGVzICAgIHplcm8uJQEgLSBPbmNlIGZ1bGx5IHByb2Nlc3NlZCwgdGhlIG9mZmVuY2UgcmVjb3JkIGlzIHJlbW92ZWQgZnJvbSB0aGlzIHN0b3JhZ2UuAGUBIFRoaXMgZW5zdXJlcyB0aGF0IG9mZmVuY2VzIGFyZSBwcm9jZXNzZWQgaW5jcmVtZW50YWxseSwgcHJldmVudGluZyBleGNlc3NpdmUgY29tcHV0YXRpb278IGluIGEgc2luZ2xlIGJsb2NrIHdoaWxlIG1haW50YWluaW5nIGNvcnJlY3Qgc2xhc2hpbmcgYmVoYXZpb3IuAEBVbmFwcGxpZWRTbGFzaGVzAAEIBQW5Dr0OBAAExCBBbGwgdW5hcHBsaWVkIHNsYXNoZXMgdGhhdCBhcmUgcXVldWVkIGZvciBsYXRlci4AQENhbmNlbGxlZFNsYXNoZXMBAQQFOMUOBAAUUQEgQ2FuY2VsbGVkIHNsYXNoZXMgYnkgZXJhIGFuZCB2YWxpZGF0b3Igd2l0aCBtYXhpbXVtIHNsYXNoIGZyYWN0aW9uIHRvIGJlIGNhbmNlbGxlZC4ARQEgV2hlbiBzbGFzaGVzIGFyZSBjYW5jZWxsZWQgYnkgZ292ZXJuYW5jZSwgdGhpcyBzdG9yZXMgdGhlIGVyYSBhbmQgdGhlIHZhbGlkYXRvcnNVASB3aG9zZSBzbGFzaGVzIHNob3VsZCBiZSBjYW5jZWxsZWQsIGFsb25nIHdpdGggdGhlIG1heGltdW0gc2xhc2ggZnJhY3Rpb24gdGhhdCBzaG91bGSEIGJlIGNhbmNlbGxlZCBmb3IgZWFjaCB2YWxpZGF0b3IuAExWYWxpZGF0b3JTbGFzaEluRXJhAAEIBQXxC8kOBAAIRQEgQWxsIHNsYXNoaW5nIGV2ZW50cyBvbiB2YWxpZGF0b3JzLCBtYXBwZWQgYnkgZXJhIHRvIHRoZSBoaWdoZXN0IHNsYXNoIHByb3BvcnRpb25wIGFuZCBzbGFzaCB2YWx1ZSBvZiB0aGUgZXJhLgA4Q2hpbGxUaHJlc2hvbGQAAMEGBAAMUQEgVGhlIHRocmVzaG9sZCBmb3Igd2hlbiB1c2VycyBjYW4gc3RhcnQgY2FsbGluZyBgY2hpbGxfb3RoZXJgIGZvciBvdGhlciB2YWxpZGF0b3JzIC9ZASBub21pbmF0b3JzLiBUaGUgdGhyZXNob2xkIGlzIGNvbXBhcmVkIHRvIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHZhbGlkYXRvcnMgLyBub21pbmF0b3JzKQEgKGBDb3VudEZvcipgKSBpbiB0aGUgc3lzdGVtIGNvbXBhcmVkIHRvIHRoZSBjb25maWd1cmVkIG1heCAoYE1heCpDb3VudGApLgBMVm90ZXJTbmFwc2hvdFN0YXR1cwEAzQ4EAhCAIFZvdGVyIHNuYXBzaG90IHByb2dyZXNzIHN0YXR1cy4AaQEgSWYgdGhlIHN0YXR1cyBpcyBgT25nb2luZ2AsIGl0IGtlZXBzIGEgY3Vyc29yIG9mIHRoZSBsYXN0IHZvdGVyIHJldHJpZXZlZCB0byBwcm9jZWVkIHdoZW6EIGNyZWF0aW5nIHRoZSBuZXh0IHNuYXBzaG90IHBhZ2UuAEBOZXh0RWxlY3Rpb25QYWdlAAA4BAAYAQEgS2VlcHMgdHJhY2sgb2YgYW4gb25nb2luZyBtdWx0aS1wYWdlIGVsZWN0aW9uIHNvbHV0aW9uIHJlcXVlc3QuAGUBIElmIGBTb21lKF8pYGAsIGl0IGlzIHRoZSBuZXh0IHBhZ2UgdGhhdCB3ZSBpbnRlbmQgdG8gZWxlY3QuIElmIGBOb25lYCwgd2UgYXJlIG5vdCBpbiB0aGVIIGVsZWN0aW9uIHByb2Nlc3MuADkBIFRoaXMgaXMgb25seSBzZXQgaW4gbXVsdGktYmxvY2sgZWxlY3Rpb25zLiBTaG91bGQgYWx3YXlzIGJlIGBOb25lYCBvdGhlcndpc2UuAEBFbGVjdGFibGVTdGFzaGVzAQDRDgQABFEBIEEgYm91bmRlZCBsaXN0IG9mIHRoZSAiZWxlY3RhYmxlIiBzdGFzaGVzIHRoYXQgcmVzdWx0ZWQgZnJvbSBhIHN1Y2Nlc3NmdWwgZWxlY3Rpb24uADxFcmFQcnVuaW5nU3RhdGUAAQQFONUOBAAERQEgVHJhY2tzIHRoZSBjdXJyZW50IHN0ZXAgb2YgZXJhIHBydW5pbmcgcHJvY2VzcyBmb3IgZWFjaCBlcmEgYmVpbmcgbGF6aWx5IHBydW5lZC4AAa0GAAH9CAAwMEhpc3RvcnlEZXB0aDgQVAAAADSMIE51bWJlciBvZiBlcmFzIHRvIGtlZXAgaW4gaGlzdG9yeS4A6CBGb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMga2VwdCBmb3IgZXJhcyBpbiBgW2N1cnJlbnRfZXJhIC0pASBIaXN0b3J5RGVwdGgsIGN1cnJlbnRfZXJhXWA6IGBFcmFzVmFsaWRhdG9yUHJlZnNgLCBgRXJhc1ZhbGlkYXRvclJld2FyZGAs4CBgRXJhc1Jld2FyZFBvaW50c2AsIGBFcmFzVG90YWxTdGFrZWAsIGBDbGFpbWVkUmV3YXJkc2AsrCBgRXJhc1N0YWtlcnNQYWdlZGAsIGBFcmFzU3Rha2Vyc092ZXJ2aWV3YC4A5CBNdXN0IGJlIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGVyYXMgZGVsYXllZCBieSBzZXNzaW9uLvggSS5lLiBhY3RpdmUgZXJhIG11c3QgYWx3YXlzIGJlIGluIGhpc3RvcnkuIEkuZS4gYGFjdGl2ZV9lcmEgPsQgY3VycmVudF9lcmEgLSBoaXN0b3J5X2RlcHRoYCBtdXN0IGJlIGd1YXJhbnRlZWQuABEBIElmIG1pZ3JhdGluZyBhbiBleGlzdGluZyBwYWxsZXQgZnJvbSBzdG9yYWdlIHZhbHVlIHRvIGNvbmZpZyB2YWx1ZSzsIHRoaXMgc2hvdWxkIGJlIHNldCB0byBzYW1lIHZhbHVlIG9yIGdyZWF0ZXIgYXMgaW4gc3RvcmFnZS4AOFNlc3Npb25zUGVyRXJhOBAGAAAABC0BIE51bWJlciBvZiBzZXNzaW9ucyBwZXIgZXJhLCBhcyBwZXIgdGhlIHByZWZlcmVuY2VzIG9mIHRoZSAqKnJlbGF5IGNoYWluKiouAERQbGFubmluZ0VyYU9mZnNldDgQBgAAADhRASBOdW1iZXIgb2Ygc2Vzc2lvbnMgYmVmb3JlIHRoZSBlbmQgb2YgYW4gZXJhIHdoZW4gdGhlIGVsZWN0aW9uIGZvciB0aGUgbmV4dCBlcmEgd2lsbBwgc3RhcnQuAF0BIC0gVGhpcyBkZXRlcm1pbmVzIGhvdyBtYW55IHNlc3Npb25zICoqYmVmb3JlKiogdGhlIGxhc3Qgc2Vzc2lvbiBvZiB0aGUgZXJhIHRoZSBzdGFraW5nhCAgIGVsZWN0aW9uIHByb2Nlc3Mgc2hvdWxkIGJlZ2luLk0BIC0gVGhlIHZhbHVlIGlzIGJvdW5kZWQgYmV0d2VlbiAqKjEqKiAoZWxlY3Rpb24gc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxhc3RdASAgIHNlc3Npb24pIGFuZCBgU2Vzc2lvbnNQZXJFcmFgIChlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyc3Qgc2Vzc2lvbjwgICBvZiB0aGUgZXJhKS4ANCAjIyMgRXhhbXBsZTpJASAtIElmIGBTZXNzaW9uc1BlckVyYSA9IDZgIGFuZCBgUGxhbm5pbmdFcmFPZmZzZXQgPSAxYCwgdGhlIGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGWQICAgYmVnaW5uaW5nIG9mIHNlc3Npb24gYDYgLSAxID0gNWAuXQEgLSBJZiBgUGxhbm5pbmdFcmFPZmZzZXQgPSA2YCwgdGhlIGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHNlc3Npb24gYDYgLSA2ID3oICAgMGAsIG1lYW5pbmcgaXQgc3RhcnRzIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgZXJhLgA8Qm9uZGluZ0R1cmF0aW9uOBAcAAAAFOQgTnVtYmVyIG9mIGVyYXMgdGhhdCBzdGFrZWQgZnVuZHMgbXVzdCByZW1haW4gYm9uZGVkIGZvci4ATQEgVGhpcyBpcyB0aGUgYm9uZGluZyBkdXJhdGlvbiBmb3IgdmFsaWRhdG9ycy4gTm9taW5hdG9ycyBtYXkgaGF2ZSBhIHNob3J0ZXIgYm9uZGluZwEBIGR1cmF0aW9uIHdoZW4gW2BBcmVOb21pbmF0b3JzU2xhc2hhYmxlYF0gaXMgc2V0IHRvIGBmYWxzZWAgKHNlZcwgW2BTdGFraW5nSW50ZXJmYWNlOjpub21pbmF0b3JfYm9uZGluZ19kdXJhdGlvbmBdKS4AbE5vbWluYXRvckZhc3RVbmJvbmREdXJhdGlvbjgQAgAAACAtASBOdW1iZXIgb2YgZXJhcyBub21pbmF0b3JzIG11c3Qgd2FpdCB0byB1bmJvbmQgd2hlbiB0aGV5IGFyZSBub3Qgc2xhc2hhYmxlLgBFASBUaGlzIGR1cmF0aW9uIGlzIHVzZWQgZm9yIG5vbWluYXRvcnMgd2hlbiBbYEFyZU5vbWluYXRvcnNTbGFzaGFibGVgXSBpcyBgZmFsc2VgLl0BIFdoZW4gbm9taW5hdG9ycyBhcmUgc2xhc2hhYmxlLCB0aGV5IHVzZSB0aGUgZnVsbCBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gdG8gZW5zdXJl0CBzbGFzaGVzIGNhbiBiZSBhcHBsaWVkIGR1cmluZyB0aGUgdW5ib25kaW5nIHBlcmlvZC4APQEgU2V0dGluZyB0aGlzIHRvIGEgbG93ZXIgdmFsdWUgKGUuZy4sIDEgZXJhKSBhbGxvd3MgZm9yIGZhc3RlciB3aXRoZHJhd2FscyB3aGVutCBub21pbmF0b3JzIGFyZSBub3Qgc3ViamVjdCB0byBzbGFzaGluZyByaXNrLgBIU2xhc2hEZWZlckR1cmF0aW9uOBAbAAAAEAEBIE51bWJlciBvZiBlcmFzIHRoYXQgc2xhc2hlcyBhcmUgZGVmZXJyZWQgYnksIGFmdGVyIGNvbXB1dGF0aW9uLgANASBUaGlzIHNob3VsZCBiZSBsZXNzIHRoYW4gdGhlIGJvbmRpbmcgZHVyYXRpb24uIFNldCB0byAwIGlmIHNsYXNoZXMVASBzaG91bGQgYmUgYXBwbGllZCBpbW1lZGlhdGVseSwgd2l0aG91dCBvcHBvcnR1bml0eSBmb3IgaW50ZXJ2ZW50aW9uLgA4RGlzYWJsZU1pbnRpbmddAQQBKCkBIFdoZW4gYHRydWVgLCBzdGFraW5nIGRvZXMgbm90IG1pbnQuIEl0IGV4cGVjdHMgYW4gZXh0ZXJuYWwgc291cmNlIHRvIGZ1bmQZASB0aGUgZ2VuZXJhbCByZXdhcmQgcG90LiBBdCBlcmEgYm91bmRhcnksIHJld2FyZHMgYXJlIHNuYXBzaG90dGVkIGZyb22QIHRoZSBwb3QuIGBFcmFQYXlvdXRgIGlzIG5vdCBjYWxsZWQuADEBIFdoZW4gYGZhbHNlYCwgc3Rha2luZyB1c2VzIHRoZSBsZWdhY3kgcGF0aDogYEVyYVBheW91dGAgY29tcHV0ZXMgaW5mbGF0aW9uLLAgdG9rZW5zIGFyZSBtaW50ZWQgb24tdGhlLWZseSBkdXJpbmcgcGF5b3V0LgAhASAqKklycmV2ZXJzaWJsZSoqOiBvbmNlIHNldCB0byBgdHJ1ZWAsIG11c3QgbmV2ZXIgYmUgc3dpdGNoZWQgYmFjay4gRXJhczEBIGNyZWF0ZWQgaW4gbm9uLW1pbnRpbmcgbW9kZSBoYXZlIGZ1bmRlZCByZXdhcmQgcG90cyDigJQgc3dpdGNoaW5nIHRvIGxlZ2Fjecggd291bGQgb3JwaGFuIHRob3NlIHBvdHMgYW5kIGNhdXNlIGRvdWJsZS1taW50aW5nLgBMTWF4RXhwb3N1cmVQYWdlU2l6ZTgQAAIAACywIFRoZSBtYXhpbXVtIHNpemUgb2YgZWFjaCBgVDo6RXhwb3N1cmVQYWdlYC4AKQEgQW4gYEV4cG9zdXJlUGFnZWAgaXMgd2Vha2x5IGJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGBNYXhFeHBvc3VyZVBhZ2VTaXplYDAgbm9taW5hdG9ycy4AIQEgRm9yIG9sZGVyIG5vbi1wYWdlZCBleHBvc3VyZSwgYSByZXdhcmQgcGF5b3V0IHdhcyByZXN0cmljdGVkIHRvIHRoZSB0b3AhASBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgbm9taW5hdG9ycy4gVGhpcyBpcyB0byBsaW1pdCB0aGUgaS9vIGNvc3QgZm9yIHRoZUggbm9taW5hdG9yIHBheW91dC4APQEgTm90ZTogYE1heEV4cG9zdXJlUGFnZVNpemVgIGlzIHVzZWQgdG8gYm91bmQgYENsYWltZWRSZXdhcmRzYCBhbmQgaXMgdW5zYWZlIHRvrCByZWR1Y2Ugd2l0aG91dCBoYW5kbGluZyBpdCBpbiBhIG1pZ3JhdGlvbi4APE1heFZhbGlkYXRvclNldDgQ6AMAABAVASBUaGUgYWJzb2x1dGUgbWF4aW11bSBvZiB3aW5uZXIgdmFsaWRhdG9ycyB0aGlzIHBhbGxldCBzaG91bGQgcmV0dXJuLgBBASBBcyB0aGlzIHBhbGxldCBzdXBwb3J0cyBtdWx0aS1ibG9jayBlbGVjdGlvbiwgdGhlIHNldCBvZiB3aW5uZXIgdmFsaWRhdG9ycyAqcGVyjCBlbGVjdGlvbiogaXMgYm91bmRlZCBieSB0aGlzIHR5cGUuAEhNYXhVbmxvY2tpbmdDaHVua3M4ECAAAAAoBQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGB1bmxvY2tpbmdgIGNodW5rcyBhIFtgU3Rha2luZ0xlZGdlcmBdIGNhbgkBIGhhdmUuIEVmZmVjdGl2ZWx5IGRldGVybWluZXMgaG93IG1hbnkgdW5pcXVlIGVyYXMgYSBzdGFrZXIgbWF5IGJlOCB1bmJvbmRpbmcgaW4uAPggTm90ZTogYE1heFVubG9ja2luZ0NodW5rc2AgaXMgdXNlZCBhcyB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZQEBIGBCb3VuZGVkVmVjYCBpdGVtIGBTdGFraW5nTGVkZ2VyLnVubG9ja2luZ2AuIFNldHRpbmcgdGhpcyB2YWx1ZQUBIGxvd2VyIHRoYW4gdGhlIGV4aXN0aW5nIHZhbHVlIGNhbiBsZWFkIHRvIGluY29uc2lzdGVuY2llcyBpbiB0aGUJASBgU3Rha2luZ0xlZGdlcmAgYW5kIHdpbGwgbmVlZCB0byBiZSBoYW5kbGVkIHByb3Blcmx5IGluIGEgcnVudGltZQUBIG1pZ3JhdGlvbi4gVGhlIHRlc3QgYHJlZHVjaW5nX21heF91bmxvY2tpbmdfY2h1bmtzX2FicnVwdGAgc2hvd3M0IHRoaXMgZWZmZWN0LgA4TWF4RXJhRHVyYXRpb24oIACKuQcAAAAAKLggTWF4aW11bSBhbGxvd2VkIGVyYSBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuAFEBIFRoaXMgcHJvdmlkZXMgYSBkZWZlbnNpdmUgdXBwZXIgYm91bmQgdG8gY2FwIHRoZSBlZmZlY3RpdmUgZXJhIGR1cmF0aW9uLCBwcmV2ZW50aW5nYQEgZXhjZXNzaXZlbHkgbG9uZyBlcmFzIGZyb20gY2F1c2luZyBydW5hd2F5IGluZmxhdGlvbiAoZS5nLiwgZHVlIHRvIGJ1Z3MpLiBJZiB0aGUgYWN0dWFsFQEgZXJhIGR1cmF0aW9uIGV4Y2VlZHMgdGhpcyB2YWx1ZSwgaXQgd2lsbCBiZSBjbGFtcGVkIHRvIHRoaXMgbWF4aW11bS4AAQEgRXhhbXBsZTogRm9yIGFuIGlkZWFsIGVyYSBkdXJhdGlvbiBvZiAyNCBob3VycyAoODYsNDAwLDAwMCBtcykssCB0aGlzIGNhbiBiZSBzZXQgdG8gNjA0LDgwMCwwMDAgbXMgKDcgZGF5cykuAPQgT25seSB1c2VkIGluIGxlZ2FjeSBtaW50aW5nIG1vZGUgKGBEaXNhYmxlTWludGluZyA9IGZhbHNlYCkuADxNYXhQcnVuaW5nSXRlbXM4EGQAAAAUFQEgTWF4aW11bSBudW1iZXIgb2Ygc3RvcmFnZSBpdGVtcyB0aGF0IGNhbiBiZSBwcnVuZWQgaW4gYSBzaW5nbGUgY2FsbC4AWQEgVGhpcyBjb250cm9scyBob3cgbWFueSBzdG9yYWdlIGl0ZW1zIGNhbiBiZSBkZWxldGVkIGluIGVhY2ggY2FsbCB0byBgcHJ1bmVfZXJhX3N0ZXBgLk0BIFRoaXMgc2hvdWxkIGJlIHNldCB0byBhIGNvbnNlcnZhdGl2ZSB2YWx1ZSAoZS5nLiwgMTAwLTUwMCBpdGVtcykgdG8gZW5zdXJlIHBydW5pbmdVASBkb2Vzbid0IGNvbnN1bWUgdG9vIG11Y2ggYmxvY2sgc3BhY2UuIFRoZSBhY3R1YWwgd2VpZ2h0IGlzIGRldGVybWluZWQgYnkgYmVuY2htYXJrcy4AAdkOAAQ8Q3VycmVuY3lCYWxhbmNlWQEIUQEgSnVzdCB0aGUgYEN1cnJlbmN5OjpCYWxhbmNlYCB0eXBlOyB3ZSBoYXZlIHRoaXMgaXRlbSB0byBhbGxvdyB1cyB0byBjb25zdHJhaW4gaXQgdG80IGBGcm9tPHU2ND5gLgxfPkkH9xasibY0fRXs7O3KcjOGvE9UzKmJdl6ES58MaCxwb3RfYWNjb3VudAQMcG903Q4EBLwgUmVzb2x2ZSB0aGUgYWNjb3VudCBJRCBmb3IgYSBnaXZlbiByZXdhcmQgcG90LgBfPkkH9xasibY0fRXs7O3KLxsjBEfJYPP4Q/jPsacGyixwb3RfYmFsYW5jZQQMcG903Q5ZAQSwIEN1cnJlbnQgYmFsYW5jZSBoZWxkIGluIGEgZ2l2ZW4gcmV3YXJkIHBvdC4AXz5JB/cWrIm2NH0V7OztylbrmxSmvPZeV51dALMJO2xUZXJhX3Jld2FyZF9hbGxvY2F0aW9uBAxlcmE45Q4MJQEgUGVyLWVyYSByZXdhcmQgYWxsb2NhdGlvbiAoc3Rha2VyIHJld2FyZHMgKyB2YWxpZGF0b3IgaW5jZW50aXZlIGJ1ZGdldCkuAPggQm90aCBmaWVsZHMgYXJlIHplcm8gZm9yIGVyYXMgY3JlYXRlZCBpbiBsZWdhY3kgbWludGluZyBtb2RlLgBZAAAYUmV2aXZlARhSZXZpdmU4MFByaXN0aW5lQ29kZQABBAZAGAQADMwgQSBtYXBwaW5nIGZyb20gYSBjb250cmFjdCdzIGNvZGUgaGFzaCB0byBpdHMgY29kZS4hASBUaGUgY29kZSdzIHNpemUgaXMgYm91bmRlZCBieSBbYGNyYXRlOjpsaW1pdHM6OkJMT0JfQllURVNgXSBmb3IgUFZNIGFuZPggW2ByZXZtOjpwcmltaXRpdmVzOjplaXAxNzA6Ok1BWF9DT0RFX1NJWkVgXSBmb3IgRVZNIGJ5dGVjb2RlLgAoQ29kZUluZm9PZgABBAZA6Q4EAATgIEEgbWFwcGluZyBmcm9tIGEgY29udHJhY3QncyBjb2RlIGhhc2ggdG8gaXRzIGNvZGUgaW5mby4ANEFjY291bnRJbmZvT2YAAQQG/QbxDgQABPwgVGhlIGRhdGEgYXNzb2NpYXRlZCB0byBhIGNvbnRyYWN0IG9yIGV4dGVybmFsbHkgb3duZWQgYWNjb3VudC4APE5hdGl2ZURlcG9zaXRPZgEBCAYG/Q5ZAUAAAAAAAAAAAAAAAAAAAAAAKB0BIE5hdGl2ZSBjdXJyZW5jeSBzdG9yYWdlIGRlcG9zaXQgY29udHJpYnV0ZWQgYnkgYSB1c2VyIGludG8gYSBjb250cmFjdC4AMQEgQm91bmRzIGhvdyBtdWNoIG5hdGl2ZSB2YWx1ZSB0aGUgdXNlciBjYW4gcmVjZWl2ZSBiYWNrIGZyb20gdGhhdCBjb250cmFjdCdzRCBzdG9yYWdlIGRlcG9zaXQuAKAgS2V5czogYChob2xkZXIsIGNvbnRyaWJ1dG9yKSAtPiBhbW91bnRgaQEgLSBgaG9sZGVyYDogYWNjb3VudCBvbiB3aGljaCB0aGUgZGVwb3NpdCBpcyBoZWxkIChhIGNvbnRyYWN0LCBvciB0aGUgcGFsbGV0J3Mgb3duIGFjY291bnR0ICAgZm9yIGNvZGUtdXBsb2FkIGRlcG9zaXRzKS51ASAtIGBjb250cmlidXRvcmA6IHVzZXIgdGhhdCBmdW5kZWQgdGhlIGRlcG9zaXQuIFJlY2VpdmVzIHRoZSBuYXRpdmUgcG9ydGlvbiBvbiByZWZ1bmQsIGNhcHBlZHAgICBhdCB0aGlzIGVudHJ5J3MgYGFtb3VudGAuADxJbW11dGFibGVEYXRhT2YAAQQG/QYBDwQABNAgVGhlIGltbXV0YWJsZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFjY291bnQuADREZWxldGlvblF1ZXVlAAEEBTgFDwQAFLggVGVybWluYXRlZCBjb250cmFjdHMgdGhhdCBhd2FpdCBsYXp5IGNsZWFudXAuAEUBIEVhY2ggZW50cnkgcGFpcnMgYSBjaGlsZCB0cmllIElEIHdpdGggdGhlIGNvbnRyYWN0IGFjY291bnQgc28gdGhhdCBgb25faWRsZWAgY2FuWQEgZHJhaW4gYm90aCB0aGUgY2hpbGQgdHJpZSBhbmQgYW55IFtgTmF0aXZlRGVwb3NpdE9mYF0gZW50cmllcyB0aGF0IG5hbWVkIHRoZSBjb250cmFjdEUBIGFzIGBob2xkZXJgLiBCb3RoIGNhbiBiZSBhcmJpdHJhcmlseSBsYXJnZSwgc28gY2xlYW51cCBydW5zIGxhemlseSBpbiBgb25faWRsZWAuAFBEZWxldGlvblF1ZXVlQ291bnRlcgEACQ8gAAAAAAAAAAAITQEgQSBwYWlyIG9mIG1vbm90b25pYyBjb3VudGVycyB1c2VkIHRvIHRyYWNrIHRoZSBsYXRlc3QgY29udHJhY3QgbWFya2VkIGZvciBkZWxldGlvbqggYW5kIHRoZSBsYXRlc3QgZGVsZXRlZCBjb250cmFjdCBpbiBxdWV1ZS4APE9yaWdpbmFsQWNjb3VudAABBAb9BgQEABjYIE1hcCBhIEV0aGVyZXVtIGFkZHJlc3MgdG8gaXRzIG9yaWdpbmFsIGBBY2NvdW50SWQzMmAuAEUBIFdoZW4gZGVyaXZpbmcgYSBgSDE2MGAgZnJvbSBhbiBgQWNjb3VudElkMzJgIHdlIHVzZSBhIGhhc2ggZnVuY3Rpb24uIEluIG9yZGVyIHRvMQEgcmVjb25zdHJ1Y3QgdGhlIG9yaWdpbmFsIGFjY291bnQgd2UgbmVlZCB0byBzdG9yZSB0aGUgcmV2ZXJzZSBtYXBwaW5nIGhlcmUuGQEgUmVnaXN0ZXIgeW91ciBgQWNjb3VudElkMzJgIHVzaW5nIFtgUGFsbGV0OjptYXBfYWNjb3VudGBdIGluIG9yZGVyIHRvZCB1c2UgaXQgd2l0aCB0aGlzIHBhbGxldC4ANEV0aGVyZXVtQmxvY2sBAA0PEQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQdASBUaGUgY3VycmVudCBFdGhlcmV1bSBibG9jayB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgYG9uX2ZpbmFsaXplYCBtZXRob2QuABwgIyBOb3RlACkBIFRoaXMgY291bGQgYmUgZnVydGhlciBvcHRpbWl6ZWQgaW50byB0aGUgZnV0dXJlIHRvIHN0b3JlIG9ubHkgdGhlIG1pbmltdW0dASBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIEV0aGVyZXVtIGJsb2NrIGF0IHRoZSBSUEMgbGV2ZWwuAD0BIFNpbmNlIHRoZSBibG9jayBpcyBjb252ZW5pZW50IHRvIGhhdmUgYXJvdW5kLCBhbmQgdGhlIGV4dHJhIGRldGFpbHMgYXJlIGNhcHBlZD0BIGJ5IGEgZmV3IGhhc2hlcyBhbmQgdGhlIHZlY3RvciBvZiB0cmFuc2FjdGlvbiBoYXNoZXMsIHdlIHN0b3JlIHRoZSBibG9jayBoZXJlLgAkQmxvY2tIYXNoAQEEBjhAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJQgTWFwcGluZyBmb3IgYmxvY2sgbnVtYmVyIGFuZCBoYXNoZXMuAHEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgaXMgY2FwcGVkIGJ5IHRoZSBibG9jayBoYXNoIGNvdW50IGBCTE9DS19IQVNIX0NPVU5UYC4APFJlY2VpcHRJbmZvRGF0YQEAeQ8EABj0IFRoZSBkZXRhaWxzIG5lZWRlZCB0byByZWNvbnN0cnVjdCB0aGUgcmVjZWlwdCBpbmZvIG9mZmNoYWluLgApASBUaGlzIGNvbnRhaW5zIHZhbHVhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBnYXMgdXNlZCBieSB0aGUgdHJhbnNhY3Rpb24uAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgBERXRoQmxvY2tCdWlsZGVySVIBAIEPEQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAEC3Q7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAgSW5jcmVtZW50YWwgZXRoZXJldW0gYmxvY2sgYnVpbGRlci4AaEV0aEJsb2NrQnVpbGRlckZpcnN0VmFsdWVzAQCJDwQAEOQgVGhlIGZpcnN0IHRyYW5zYWN0aW9uIGFuZCByZWNlaXB0IG9mIHRoZSBldGhlcmV1bSBibG9jay4APQEgVGhlc2UgdmFsdWVzIGFyZSBtb3ZlZCBvdXQgb2YgdGhlIGBFdGhCbG9ja0J1aWxkZXJJUmAgdG8gYXZvaWQgc2VyaWFsaXppbmcgYW5kPQEgZGVzZXJpYWxpemluZyB0aGVtIG9uIGV2ZXJ5IHRyYW5zYWN0aW9uLiBJbnN0ZWFkLCB0aGV5IGFyZSBsb2FkZWQgd2hlbiBuZWVkZWQuADxEZWJ1Z1NldHRpbmdzT2YBAI0PEAAAAAAEMQEgRGVidWdnaW5nIHNldHRpbmdzIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2hlbiBEZWJ1Z0VuYWJsZWQgY29uZmlnIGlzIHRydWUuAAH5BgABDQkALDhEZXBvc2l0UGVyQnl0ZVkBQKCGAQAAAAAAAAAAAAAAAAAUEQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggYnl0ZSBvZiBzdG9yYWdlLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuADhEZXBvc2l0UGVySXRlbVkBQACUNXcAAAAAAAAAAAAAAAAUBQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggc3RvcmFnZSBpdGVtLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAFxEZXBvc2l0UGVyQ2hpbGRUcmllSXRlbVkBQAAtMQEAAAAAAAAAAAAAAAAkMQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggY2hpbGQgdHJpZSBzdG9yYWdlIGl0ZW0uADkBIFRob3NlIGFyZSB0aGUgaXRlbXMgY3JlYXRlZCBieSBhIGNvbnRyYWN0LiBJbiBTb2xpZGl0eSBlYWNoIHZhbHVlIGlzIGEgc2luZ2xlOQEgc3RvcmFnZSBpdGVtLiBUaGlzIGlzIHdoeSB3ZSBuZWVkIHRvIHNldCBhIGxvd2VyIHZhbHVlIGhlcmUgdGhhbiBmb3IgdGhlIG1haW7cIHRyaWUgaXRlbXMuIE90aGVyd2lzZSB0aGUgc3RvcmFnZSBkZXBvc2l0IGlzIHRvbyBoaWdoLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAHBDb2RlSGFzaExvY2t1cERlcG9zaXRQZXJjZW50oQEQAKPhEQxFASBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc3RvcmFnZSBkZXBvc2l0IHRoYXQgc2hvdWxkIGJlIGhlbGQgZm9yIHVzaW5nIGEgY29kZSBoYXNoLlEBIEluc3RhbnRpYXRpbmcgYSBjb250cmFjdCwgcHJvdGVjdHMgdGhlIGNvZGUgZnJvbSBiZWluZyByZW1vdmVkLiBJbiBvcmRlciB0byBwcmV2ZW50JQEgYWJ1c2UgdGhlc2UgYWN0aW9ucyBhcmUgcHJvdGVjdGVkIHdpdGggYSBwZXJjZW50YWdlIG9mIHRoZSBjb2RlIGRlcG9zaXQuAEBBbGxvd0VWTUJ5dGVjb2RlXQEEAQTQIEFsbG93IEVWTSBieXRlY29kZSB0byBiZSB1cGxvYWRlZCBhbmQgaW5zdGFudGlhdGVkLgAcQ2hhaW5JZCggQxsPGQAAAAAQAQEgVGhlIFtFSVAtMTU1XShodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTE1NSkgY2hhaW4gSUQuAAUBIFRoaXMgaXMgYSB1bmlxdWUgaWRlbnRpZmllciBhc3NpZ25lZCB0byBlYWNoIGJsb2NrY2hhaW4gbmV0d29yayxsIHByZXZlbnRpbmcgcmVwbGF5IGF0dGFja3MuAEBOYXRpdmVUb0V0aFJhdGlvOBAA4fUFBFEBIFRoZSByYXRpbyBiZXR3ZWVuIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuYXRpdmUgdG9rZW4gYW5kIHRoZSBFVEggdG9rZW4uAFRNYXhFdGhFeHRyaW5zaWNXZWlnaHQZBUAAALLTWVvwBgAAAAAAAAAAME0BIFRoZSBmcmFjdGlvbiB0aGUgbWF4aW11bSBleHRyaW5zaWMgd2VpZ2h0IGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpY3MgYXJlIGNhcHBlZCB0by4AUQEgVGhpcyBpcyBub3QgYSBzZWN1cml0eSBtZWFzdXJlIGJ1dCBhIHJlcXVpcmVtZW50IGR1ZSB0byBob3cgd2UgbWFwIGdhcyB0byBgKFdlaWdodCxdASBTdG9yYWdlRGVwb3NpdClgLiBUaGUgbWFwcGluZyBtaWdodCBkZXJpdmUgYSBgV2VpZ2h0YCB0aGF0IGlzIHRvbyBsYXJnZSB0byBmaXQgaW50byBhbvwgZXh0cmluc2ljLiBJbiB0aGlzIGNhc2Ugd2UgY2FwIGl0IHRvIHRoZSBsaW1pdCBzcGVjaWZpZWQgaGVyZS4AZQEgYGV0aF90cmFuc2FjdGAgdHJhbnNhY3Rpb25zIHRoYXQgdXNlIG1vcmUgd2VpZ2h0IHRoYW4gc3BlY2lmaWVkIHdpbGwgZmFpbCB3aXRoIGFuIG91dCBvZkkBIGdhcyBlcnJvciBkdXJpbmcgZXhlY3V0aW9uLiBMYXJnZXIgZnJhY3Rpb25zIHdpbGwgYWxsb3cgbW9yZSB0cmFuc2FjdGlvbnMgdG8gcnVuLk0BIFNtYWxsZXIgdmFsdWVzIHdhc3RlIGxlc3MgYmxvY2sgc3BhY2U6IENob29zZSBhcyBzbWFsbCBhcyBwb3NzaWJsZSBhbmQgYXMgbGFyZ2UgYXMsIG5lY2Vzc2FyeS4ARCAgRGVmYXVsdDogYDAuNWAuADBEZWJ1Z0VuYWJsZWRdAQQABC0BIEFsbG93cyBkZWJ1Zy1tb2RlIGNvbmZpZ3VyYXRpb24sIHN1Y2ggYXMgZW5hYmxpbmcgdW5saW1pdGVkIGNvbnRyYWN0IHNpemUuABxBdXRvTWFwXQEEARgxASBXaGVuIGVuYWJsZWQsIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZCBvbiBjcmVhdGlvbiBhbmQgdW5tYXBwZWQgb25FASBraWxsIHZpYSBbYEF1dG9NYXBwZXJgXS4gVGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciBleHBsaWNpdCBgbWFwX2FjY291bnRgIGNhbGxzLgA5ASBSZXF1aXJlcyBgZnJhbWVfc3lzdGVtOjpDb25maWc6Ok9uTmV3QWNjb3VudGAgYW5kIGBPbktpbGxlZEFjY291bnRgIHRvIGJlIHNldB0BIHRvIFtgQXV0b01hcHBlcmBdLiBXaGVuIGVuYWJsZWQsIHRoZSBgbWFwX2FjY291bnRgIGFuZCBgdW5tYXBfYWNjb3VudGBwIGRpc3BhdGNoYWJsZXMgYXJlIGRpc2FibGVkLgAgR2FzU2NhbGU4EIA4AQBEHQEgVGhpcyBkZXRlcm1pbmVzIHRoZSByZWxhdGl2ZSBzY2FsZSBvZiBvdXIgZ2FzIHByaWNlIGFuZCBnYXMgZXN0aW1hdGVzLgBVASBCeSBkZWZhdWx0LCB0aGUgZ2FzIHByaWNlIChpbiB3ZWkpIGlzIGBGZWVJbmZvOjpuZXh0X2ZlZV9tdWx0aXBsaWVyKClgIG11bHRpcGxpZWQgYnldASBgTmF0aXZlVG9FdGhSYXRpb2AuIGBHYXNTY2FsZWAgYWxsb3dzIHRvIHNjYWxlIHRoaXMgdmFsdWU6IHRoZSBhY3R1YWwgZ2FzIHByaWNlIGlzIHRoZbAgZGVmYXVsdCBnYXMgcHJpY2UgbXVsdGlwbGllZCBieSBgR2FzU2NhbGVgLgBZASBBcyBhIGNvbnNlcXVlbmNlLCBnYXMgY29zdCAoZ2FzIGVzdGltYXRlcyBhbmQgYWN0dWFsIGdhcyB1c2FnZSBkdXJpbmcgdHJhbnNhY3Rpb24pIGlzUQEgc2NhbGVkIGRvd24gYnkgdGhlIHNhbWUgZmFjdG9yLiBUaHVzLCB0aGUgdG90YWwgdHJhbnNhY3Rpb24gY29zdCBpcyBub3QgYWZmZWN0ZWQgYnltASBgR2FzU2NhbGVgIOKAk8KgYXBhcnQgZnJvbSByb3VuZGluZyBkaWZmZXJlbmNlczogdGhlIHRyYW5zYWN0aW9uIGNvc3QgaXMgYWx3YXlzIGEgbXVsdGlwbGVhASBvZiB0aGUgZ2FzIHByaWNlIGFuZCBpcyBkZXJpdmVkIGJ5IHJvdW5kZWQgdXAsIHNvIHRoYXQgd2l0aCBoaWdoZXIgYEdhc1NjYWxlc2AgdGhpcyBjYW4RASBsZWFkIHRvIGhpZ2hlciBnYXMgY29zdCBhcyB0aGUgcm91bmRpbmcgZGlmZmVyZW5jZSB3b3VsZCBiZSBsYXJnZXIuAGUBIFRoZSBtYWluIHB1cnBvc2Ugb2YgY2hhbmdpbmcgdGhlIGBHYXNTY2FsZWAgaXMgdG8gdHVuZSB0aGUgZ2FzIGNvc3Qgc28gdGhhdCBpdCBpcyBjbG9zZXJJASB0byBzdGFuZGFyZCBFVk0gZ2FzIGNvc3QgYW5kIGNvbnRyYWN0cyB3aWxsIG5vdCBydW4gb3V0IG9mIGdhcyB3aGVuIHRvb2xzIG9yIGNvZGV4IGFzc3VtZSBoYXJkIGNvZGVkIGdhcyBsaW1pdHMuAJggUmVxdWlyZW1lbnQ6IGBHYXNTY2FsZWAgbXVzdCBub3QgYmUgMAABkQ8ABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgBaAABEQXNzZXRzUHJlY29tcGlsZXMBREFzc2V0c1ByZWNvbXBpbGVzDDhOZXh0QXNzZXRJbmRleAEAOBAAAAAACMwgVGhlIG5leHQgYXZhaWxhYmxlIGFzc2V0IGluZGV4IGZvciBmb3JlaWduIGFzc2V0cy4ZASBUaGlzIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBhIG5ldyBmb3JlaWduIGFzc2V0IG1hcHBpbmcgaXMgY3JlYXRlZC4AaEFzc2V0SW5kZXhUb0ZvcmVpZ25Bc3NldElkAAEEBjgdAgQABFEBIE1hcHBpbmcgYW4gYXNzZXQgaW5kZXggKGRlcml2ZWQgZnJvbSB0aGUgcHJlY29tcGlsZSBhZGRyZXNzKSB0byBhIGBGb3JlaWduQXNzZXRJZGAuAGhGb3JlaWduQXNzZXRJZFRvQXNzZXRJbmRleAABBAIdAjgEAARdASBNYXBwaW5nIGEgYEZvcmVpZ25Bc3NldElkYCB0byBhbiBhc3NldCBpbmRleCAodXNlZCBmb3IgZGVyaXZpbmcgcHJlY29tcGlsZSBhZGRyZXNzZXMpLgAAAAAABDhGb3JlaWduQXNzZXRJZB0CCCkBIFRoZSBmb3JlaWduIGFzc2V0IElEIHR5cGUuIFRoaXMgbXVzdCBtYXRjaCB0aGUgYEFzc2V0SWRgIHR5cGUgdXNlZCBieSB0aGW0IGBwYWxsZXRfYXNzZXRzYCBpbnN0YW5jZSBmb3IgZm9yZWlnbiBhc3NldHMuAFsAAFxBc3NldHNQcmVjb21waWxlc1Blcm1pdAFcQXNzZXRzUHJlY29tcGlsZXNQZXJtaXQEGE5vbmNlcwEBCAIClQ8FB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABx4IE5vbmNlcyBmb3IgcGVybWl0IHNpZ25hdHVyZXMu2CBNYXBwaW5nOiAodmVyaWZ5aW5nX2NvbnRyYWN0LCBvd25lcl9hZGRyZXNzKSA9PiBub25jZQA1ASBVc2VzIEJsYWtlMl8xMjhDb25jYXQgZm9yIHRoZSBmaXJzdCBrZXkgdG8gcHJldmVudCBzdG9yYWdlIGNvbGxpc2lvbiBhdHRhY2tzIQEgd2hlbiB0aGUgdmVyaWZ5aW5nX2NvbnRyYWN0IGFkZHJlc3MgY291bGQgYmUgaW5mbHVlbmNlZCBieSBhbiBhdHRhY2tlci4AMQEgTm90ZTogRUlQLTI2MTIgc3BlY2lmaWVzIHVpbnQyNTYgbm9uY2UuIFdlIHN0b3JlIGFzIFUyNTYgZm9yIGNvbXBhdGliaWxpdHkuAAAABBxDaGFpbklkKCBDGw8ZAAAAAAS8IFRoZSBjaGFpbiBJRCB1c2VkIGluIEVJUC03MTIgZG9tYWluIHNlcGFyYXRvci4AAZkPAAAAXAAASFZlc3RpbmdQcmVjb21waWxlcwAAAAAAAABdBEkBIE1pbmltYWwgcGFsbGV0IHByb3ZpZGluZyBhIGBQYWxsZXQ8VD5gIHR5cGUgZm9yIHRoZSBGUkFNRSBiZW5jaG1hcmtpbmcgbWFjaGluZXJ5LgAUQWhPcHMBFEFoT3BzDDhSY0xlYXNlUmVzZXJ2ZQABDAUFBZ0PWQEEADgFASBBbW91bnQgb2YgYmFsYW5jZSB0aGF0IHdhcyByZXNlcnZlZCBmb3Igd2lubmluZyBhIGxlYXNlIGF1Y3Rpb24uAGUBIGB1bnJlc2VydmVfbGVhc2VfZGVwb3NpdGAgY2FuIGJlIHBlcm1pc3Npb25sZXNzbHkgY2FsbGVkIG9uY2UgdGhlIGJsb2NrIG51bWJlciBwYXNzZWQgdG9VASB1bnJlc2VydmUgdGhlIGRlcG9zaXQuIEl0IGlzIGltcGxpY2l0bHkgY2FsbGVkIGJ5IGB3aXRoZHJhd19jcm93ZGxvYW5fY29udHJpYnV0aW9uYC4IICBpASBUaGUgYWNjb3VudCBoZXJlIGNhbiBlaXRoZXIgYmUgYSBjcm93ZGxvYW4gYWNjb3VudCBvciBhIHNvbG8gYmlkZGVyLiBJZiBpdCBpcyBhIGNyb3dkbG9hbmkBIGFjY291bnQsIHRoZW4gdGhlIHN1bW1lZCB1cCBjb250cmlidXRpb25zIGZvciBpdCBpbiB0aGUgY29udHJpYnV0aW9ucyBtYXAgd2lsbCBlcXVhdGUgdGhlXCByZXNlcnZlZCBiYWxhbmNlIGhlcmUuAGQgVGhlIGtleXMgYXJlIGFzIGZvbGxvd3M66CAtIEJsb2NrIG51bWJlciBhZnRlciB3aGljaCB0aGUgZGVwb3NpdCBjYW4gYmUgdW5yZXNlcnZlZC6EIC0gVGhlIHBhcmFfaWQgb2YgdGhlIGxlYXNlIHNsb3Qu1CAtIFRoZSBhY2NvdW50IHRoYXQgd2lsbCBoYXZlIHRoZSBiYWxhbmNlIHVucmVzZXJ2ZWQugCAtIFRoZSBiYWxhbmNlIHRvIGJlIHVucmVzZXJ2ZWQuAFxSY0Nyb3dkbG9hbkNvbnRyaWJ1dGlvbgABDAUFBZ0PuQUEADD8IEFtb3VudCBvZiBiYWxhbmNlIHRoYXQgYSBjb250cmlidXRvciBtYWRlIHRvd2FyZHMgYSBjcm93ZGxvYW4uAF0BIGB3aXRoZHJhd19jcm93ZGxvYW5fY29udHJpYnV0aW9uYCBjYW4gYmUgcGVybWlzc2lvbmxlc3NseSBjYWxsZWQgb25jZSB0aGUgYmxvY2sgbnVtYmVy1CBwYXNzZWQgdG8gdW5sb2NrIHRoZSBiYWxhbmNlIGZvciBhIHNwZWNpZmljIGFjY291bnQuAGQgVGhlIGtleXMgYXJlIGFzIGZvbGxvd3M64CAtIEJsb2NrIG51bWJlciBhZnRlciB3aGljaCB0aGUgYmFsYW5jZSBjYW4gYmUgdW5sb2NrZWQugCAtIFRoZSBwYXJhX2lkIG9mIHRoZSBjcm93ZGxvYW4uqCAtIFRoZSBhY2NvdW50IHRoYXQgbWFkZSB0aGUgY29udHJpYnV0aW9uLgBBASBUaGUgdmFsdWUgaXMgKGZ1bmRfcG90LCBiYWxhbmNlKS4gVGhlIGNvbnRyaWJ1dGlvbiBwb3QgaXMgdGhlIHNlY29uZCBrZXkgaW4gdGhljCBgUmNDcm93ZGxvYW5Db250cmlidXRpb25gIHN0b3JhZ2UuAEhSY0Nyb3dkbG9hblJlc2VydmUAAQwFBQWdD1kBBAAkyCBUaGUgcmVzZXJ2ZSB0aGF0IHdhcyB0YWtlbiB0byBjcmVhdGUgYSBjcm93ZGxvYW4uABEBIFRoaXMgaXMgbm9ybWFsbHkgNTAwIERPVCBhbmQgY2FuIGJlIHJlZnVuZGVkIGFzIGxhc3Qgc3RlcCBhZnRlciBhbGz0IGBSY0Nyb3dkbG9hbkNvbnRyaWJ1dGlvbmBzIG9mIHRoaXMgbG9hbiBoYXZlIGJlZW4gd2l0aGRyYXduLgAYIEtleXM6yCAtIEJsb2NrIG51bWJlciBhZnRlciB3aGljaCB0aGlzIGNhbiBiZSB1bnJlc2VydmVkfCAtIFRoZSBwYXJhX2lkIG9mIHRoZSBjcm93ZGxvYW7QIC0gVGhlIGFjY291bnQgdGhhdCB3aWxsIGhhdmUgdGhlIGJhbGFuY2UgdW5yZXNlcnZlZAABDQcAAREJAAABoQ8ABBxBc3NldElkHQIEqCBBc3NldCBJRCB0eXBlIG9mIHRoZSBgRnVuZ2libGVzYCBhZGFwdGVyLgD+AAAIBAUAIKEEBAA0AAQIDBAUGBwgJCgsMDQ0QXV0aG9yaXplQ2FsbBUHEEhDaGVja05vblplcm9TZW5kZXIZBxBAQ2hlY2tTcGVjVmVyc2lvbh0HODhDaGVja1R4VmVyc2lvbiEHODBDaGVja0dlbmVzaXMlB0A4Q2hlY2tNb3J0YWxpdHkpB0AoQ2hlY2tOb25jZTEHECxDaGVja1dlaWdodDUHEFBDaGFyZ2VBc3NldFR4UGF5bWVudDkHEEhQcmV2YWxpZGF0ZUF0dGVzdHM9BxBEQ2hlY2tNZXRhZGF0YUhhc2hBBwEHMEV0aFNldE9yaWdpbkkHEFBTdG9yYWdlV2VpZ2h0UmVjbGFpbRAQcBxBdXJhQXBpCDRzbG90X2R1cmF0aW9uAKUPDJAgUmV0dXJucyB0aGUgc2xvdCBkdXJhdGlvbiBmb3IgQXVyYS4AJQEgQ3VycmVudGx5LCBvbmx5IHRoZSB2YWx1ZSBwcm92aWRlZCBieSB0aGlzIHR5cGUgYXQgZ2VuZXNpcyB3aWxsIGJlIHVzZWQuACxhdXRob3JpdGllcwDhCgScIFJldHVybiB0aGUgY3VycmVudCBzZXQgb2YgYXV0aG9yaXRpZXMuAAS4IEFQSSBuZWNlc3NhcnkgZm9yIGJsb2NrIGF1dGhvcnNoaXAgd2l0aCBhdXJhLgQAUFJlbGF5UGFyZW50T2Zmc2V0QXBpCExyZWxheV9wYXJlbnRfb2Zmc2V0ADgMFQEgRmV0Y2ggdGhlIHJlbGF5IHBhcmVudCBvZmZzZXQgdGhhdCBpcyBleHBlY3RlZCBmcm9tIHRoZSByZWxheSBjaGFpbi4AXQEgVGhpcyBkZXRlcm1pbmVzIGhvdyBtYW55IGJsb2NrcyBiZWhpbmQgdGhlIHJlbGF5IGNoYWluIHRpcCB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBiZS4AWG1heF9jbGFpbV9xdWV1ZV9vZmZzZXQADIjoIE1heGltdW0gY2xhaW0gcXVldWUgb2Zmc2V0IGZvciBhc3luYyBiYWNraW5nIGZsZXhpYmlsaXR5LgA5ASBCb3VuZHMgaG93IGZhciAiaW50byB0aGUgZnV0dXJlIiBhIGNhbmRpZGF0ZSBtYXkgbG9vayBpbiB0aGUgY2xhaW0gcXVldWUgd2hlblEBIHNlbGVjdGluZyBhIGNvcmUuIFRoZSBlZmZlY3RpdmUgY2xhaW0gcXVldWUgZGVwdGggZGVwZW5kcyBvbiB0aGUgY2FuZGlkYXRlIHZlcnNpb246AGEBIC0gKipWMS9WMiBjYW5kaWRhdGVzKio6IHRoZSBjbGFpbSBxdWV1ZSBpcyBsb29rZWQgdXAgYXQgdGhlIGNhbmRpZGF0ZSdzIGByZWxheV9wYXJlbnRgLEkBICAgd2hpY2ggaXMgYHJlbGF5X3BhcmVudF9vZmZzZXRgIGJsb2NrcyBiZWhpbmQgdGhlIHJlbGF5LWNoYWluIHRpcC4gVGhlIGVmZmVjdGl2ZewgICBkZXB0aCBpcyBgcmVsYXlfcGFyZW50X29mZnNldCArIG1heF9jbGFpbV9xdWV1ZV9vZmZzZXRgLgAVASAtICoqVjMgY2FuZGlkYXRlcyoqOiB0aGUgY2xhaW0gcXVldWUgaXMgbG9va2VkIHVwIGF0IHRoZSBjYW5kaWRhdGUnc10BICAgYHNjaGVkdWxpbmdfcGFyZW50YCDigJQgdGhlIHJlbGF5LWNoYWluIGJsb2NrIG9mIHRoZSAqbGFzdCBmaW5pc2hlZCogc2xvdCwgZGVjb3VwbGVkJQEgICBmcm9tIHRoZSBleGVjdXRpb24tY29udGV4dCBgcmVsYXlfcGFyZW50YC4gVGhlIGVmZmVjdGl2ZSBkZXB0aCBpcyBqdXN0cCAgIGBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0YC4AIQEgQ29sbGF0b3JzIHNlbGVjdCBhIGNvcmUgdmlhIGFuIG9mZnNldCBpbiBgWzAsIG1heF9jbGFpbV9xdWV1ZV9vZmZzZXRdYC4AUQEgLSAqKlYyIGNhbmRpZGF0ZXMqKjogYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXQgPSAxYCBpcyBzdWZmaWNpZW50LiBUaGUgY2xhaW0gcXVldWUgaXNZASAgIGxvb2tlZCB1cCBhdCBgcmVsYXlfcGFyZW50YCwgd2hpY2ggc2l0cyBiZWhpbmQgdGhlIHRpcC4gT2Zmc2V0IDAgY292ZXJzIHN5bmNocm9ub3VzVQEgICBiYWNraW5nIGluIHRoZSBuZXh0IHJlbGF5IGJsb2NrOyBvZmZzZXQgMSBjb3ZlcnMgYXN5bmNocm9ub3VzIGJhY2tpbmcgaW4gdGhlIHJlbGF5UCAgIGJsb2NrIGFmdGVyIHRoYXQuAC0BIC0gKipWMyBjYW5kaWRhdGVzKio6IG9mZnNldCAwIGlzIG5vdCByZWFjaGFibGUg4oCUIHRoZSBgc2NoZWR1bGluZ19wYXJlbnRgVQEgICBpcyB1c3VhbGx5IHRoZSBsZWFmIHdoZW4gcGlja2VkLCBidXQgaXRzIGNoaWxkIGlzIGFscmVhZHkgYmVpbmcgYnVpbHQsIHNvIHRoZXJlIGlzOQEgICBubyBvcHBvcnR1bml0eSB0byBsYW5kIGluIHRoZSBuZXh0IHJlbGF5IGJsb2NrLiBPZmZzZXQgMSBpcyByZWFjaGFibGUgdW5kZXJVASAgIHN5bmNocm9ub3VzLWJhY2tpbmcgc2VtYW50aWNzLiBGb3IgZWxhc3RpYyBzY2FsaW5nIHRoZSBsYXN0IGJsb2NrIGluIHRoZSBidW5kbGUgaXM1ASAgIGJ1aWx0IG5lYXIgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzbG90LCB3aGljaCBtYWtlcyBvZmZzZXQgMSB0b28gdGlnaHQg4oCUVQEgICBgbWF4X2NsYWltX3F1ZXVlX29mZnNldCA9IDJgIGlzIHRoZSBtaW5pbXVtIGNhcCB0aGF0IGtlZXBzIGVsYXN0aWMgc2NhbGluZyB2aWFibGUuAFUBIE5vdGU6IHRoaXMgbWV0aG9kIHdhcyBhZGRlZCBpbiBgYXBpX3ZlcnNpb24gPSAyYC4gQ29sbGF0b3JzIGNhbGxpbmcgb24gcnVudGltZXMgdGhhdE0BIG9ubHkgaW1wbGVtZW50IGBhcGlfdmVyc2lvbiA9IDFgIG9mIFtgUmVsYXlQYXJlbnRPZmZzZXRBcGlgXSB3aWxsIHJlY2VpdmUgYW4gZXJyb3JJASBhbmQgc2hvdWxkIGZhbGwgYmFjayB0byBhIHNlbnNpYmxlIGRlZmF1bHQgKGN1cnJlbnQgY29sbGF0b3IgZGVmYXVsdHM6IGAxYCBvbiB0aGWEIFYzIHBhdGgsIGAwYCBvbiB0aGUgVjEvVjIgcGF0aCkuAPggU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL2lzc3Vlcy84ODkzPgA8UQEgQVBJIHRvIHRlbGwgdGhlIG5vZGUgc2lkZSBob3cgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgYmUgY2hvc2VuIGFuZCBob3cgY2xhaW0gcXVldWVgIG9mZnNldHMgYXJlIGRldGVybWluZWQuAFkBIEEgbGFyZ2VyIHJlbGF5IHBhcmVudCBvZmZzZXQgaW5kaWNhdGVzIHRoYXQgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgbm90IGJlIHRoZSB0aXAgb2ZRASB0aGUgcmVsYXkgY2hhaW4sIGJ1dCBgTmAgYmxvY2tzIGJlaGluZCB0aGUgdGlwLiBUaGlzIG9mZnNldCBpcyB0aGVuIGVuZm9yY2VkIGJ5IHRoZSQgcnVudGltZS4AWQEgVGhlIG1heCBjbGFpbSBxdWV1ZSBvZmZzZXQgZGV0ZXJtaW5lcyBob3cgZmFyICJpbnRvIHRoZSBmdXR1cmUiIGNvbGxhdG9ycyB0YXJnZXQgd2hlblEBIHNlbGVjdGluZyBjb3JlcyBmcm9tIHRoZSBjbGFpbSBxdWV1ZS4gVGhpcyBwcm92aWRlcyBhc3luYyBiYWNraW5nIGZsZXhpYmlsaXR5IHdoaWxlqCBwcmV2ZW50aW5nIGNvbGxhdG9ycyBmcm9tIHNraXBwaW5nIHNsb3RzLvggU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL2lzc3Vlcy84ODkzPgBEIFZlcnNpb24gaGlzdG9yeTr0IC0gVmVyc2lvbiAxOiBJbml0aWFsIHZlcnNpb24gd2l0aCBgcmVsYXlfcGFyZW50X29mZnNldGAgb25secwgLSBWZXJzaW9uIDI6IEFkZGVkIGBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0YCBtZXRob2QIAGBBdXJhVW5pbmNsdWRlZFNlZ21lbnRBcGkEOGNhbl9idWlsZF91cG9uCDRpbmNsdWRlZF9oYXNoQBBzbG905QpdASg5ASBXaGV0aGVyIGl0IGlzIGxlZ2FsIHRvIGV4dGVuZCB0aGUgY2hhaW4sIGFzc3VtaW5nIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbW9zdDUBIHJlY2VudGx5IGluY2x1ZGVkIG9uZSBhcy1vZiB0aGUgcmVsYXkgcGFyZW50IHRoYXQgd2lsbCBiZSBidWlsdCBhZ2FpbnN0LCBhbmRwIHRoZSBnaXZlbiByZWxheSBjaGFpbiBzbG90LgBRASBUaGlzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvZ2ljIHRoZSBydW50aW1lIHVzZXMgd2hlbiB2YWxpZGF0aW5nIGJsb2NrcyB0bzggYXZvaWQgaXNzdWVzLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgZW1wdHksIGkuZS4gYGluY2x1ZGVkX2hhc2ggPT0gYXRgLCB3aGVyZSBhdCBpcyB0aGUgYmxvY2thASB3aG9zZSBzdGF0ZSB3ZSBhcmUgcXVlcnlpbmcgYWdhaW5zdCwgdGhpcyBtdXN0IGFsd2F5cyByZXR1cm4gYHRydWVgIGFzIGxvbmcgYXMgdGhlIHNsb3S8IGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGluY2x1ZGVkIGJsb2NrIGl0c2VsZi4ANDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4AJCBDaGFuZ2VzOpEBIC0gVmVyc2lvbiAyOiBVcGRhdGUgdG8gYGNhbl9idWlsZF91cG9uYCB0byB0YWtlIGEgcmVsYXkgY2hhaW4gYFNsb3RgIGluc3RlYWQgb2YgYSBwYXJhY2hhaW4gYFNsb3RgLggAEENvcmUMHHZlcnNpb24ARQkEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2upDxAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlcmC1DwRBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQC5DwSMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb244vQ8QpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAQQQMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4ABAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLggAMEJsb2NrQnVpbGRlchA8YXBwbHlfZXh0cmluc2ljBCRleHRyaW5zaWNdCcEPEGwgQXBwbHkgdGhlIGdpdmVuIGV4dHJpbnNpYy4AOQEgUmV0dXJucyBhbiBpbmNsdXNpb24gb3V0Y29tZSB3aGljaCBzcGVjaWZpZXMgaWYgdGhpcyBleHRyaW5zaWMgaXMgaW5jbHVkZWQgaW5MIHRoaXMgYmxvY2sgb3Igbm90LgA4ZmluYWxpemVfYmxvY2sAYARoIEZpbmlzaCB0aGUgY3VycmVudCBibG9jay4ATGluaGVyZW50X2V4dHJpbnNpY3MEIGluaGVyZW500Q9pCQQ9ASBHZW5lcmF0ZSBpbmhlcmVudCBleHRyaW5zaWNzLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4APGNoZWNrX2luaGVyZW50cwgUYmxvY2upDxBkYXRh0Q/hDwRVASBDaGVjayB0aGF0IHRoZSBpbmhlcmVudHMgYXJlIHZhbGlkLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4ABHEBIFRoZSBgQmxvY2tCdWlsZGVyYCBhcGkgdHJhaXQgdGhhdCBwcm92aWRlcyB0aGUgcmVxdWlyZWQgZnVuY3Rpb25hbGl0eSBmb3IgYnVpbGRpbmcgYSBibG9jay4YAFhUYWdnZWRUcmFuc2FjdGlvblF1ZXVlBFB2YWxpZGF0ZV90cmFuc2FjdGlvbgwYc291cmNl5Q8IdHhdCShibG9ja19oYXNoQOkPJGggVmFsaWRhdGUgdGhlIHRyYW5zYWN0aW9uLgBlASBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHRoZSB0cmFuc2FjdGlvbiBwb29sIHRvIGxlYXJuIGRldGFpbHMgYWJvdXQgZ2l2ZW4gdHJhbnNhY3Rpb24uRQEgVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIHN1cmUgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgdHJhbnNhY3Rpb25NASBhZ2FpbnN0IGN1cnJlbnQgc3RhdGUuIFRoZSBnaXZlbiBgYmxvY2tfaGFzaGAgY29ycmVzcG9uZHMgdG8gdGhlIGhhc2ggb2YgdGhlIGJsb2NrfCB0aGF0IGlzIHVzZWQgYXMgY3VycmVudCBzdGF0ZS4ARQEgTm90ZSB0aGF0IHRoaXMgY2FsbCBtYXkgYmUgcGVyZm9ybWVkIGJ5IHRoZSBwb29sIG11bHRpcGxlIHRpbWVzIGFuZCB0cmFuc2FjdGlvbnOkIG1pZ2h0IGJlIHZlcmlmaWVkIGluIGFueSBwb3NzaWJsZSBvcmRlci4ABE0BIFRoZSBgVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZWAgYXBpIHRyYWl0IGZvciBpbnRlcmZlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBxdWV1ZS4MAERPZmZjaGFpbldvcmtlckFwaQQ8b2ZmY2hhaW5fd29ya2VyBBhoZWFkZXJgEATIIFN0YXJ0cyB0aGUgb2ZmLWNoYWluIHRhc2sgZm9yIGdpdmVuIGJsb2NrIGhlYWRlci4ABGQgVGhlIG9mZmNoYWluIHdvcmtlciBhcGkuCAAsU2Vzc2lvbktleXMIVGdlbmVyYXRlX3Nlc3Npb25fa2V5cwgUb3duZXIYEHNlZWRNAfEPHBUBIEdlbmVyYXRlIGEgc2V0IG9mIHNlc3Npb24ga2V5cyB3aXRoIG9wdGlvbmFsbHkgdXNpbmcgdGhlIGdpdmVuIHNlZWQuCQEgVGhlIGtleXMgc2hvdWxkIGJlIHN0b3JlZCB3aXRoaW4gdGhlIGtleXN0b3JlIGV4cG9zZWQgdmlhIHJ1bnRpbWU8IGV4dGVybmFsaXRpZXMuALAgVGhlIHNlZWQgbmVlZHMgdG8gYmUgYSB2YWxpZCBgdXRmOGAgc3RyaW5nLgDQIFJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCBTQ0FMRSBlbmNvZGVkIHB1YmxpYyBrZXlzLgBMZGVjb2RlX3Nlc3Npb25fa2V5cwQcZW5jb2RlZBj1DwyYIERlY29kZSB0aGUgZ2l2ZW4gcHVibGljIHNlc3Npb24ga2V5cy4A3CBSZXR1cm5zIHRoZSBsaXN0IG9mIHB1YmxpYyByYXcgcHVibGljIGtleXMgKyBrZXkgdHlwZS4ABGggU2Vzc2lvbiBrZXlzIHJ1bnRpbWUgYXBpLggATFJ1bnRpbWVWaWV3RnVuY3Rpb24EVGV4ZWN1dGVfdmlld19mdW5jdGlvbgggcXVlcnlfaWQBEBRpbnB1dBgFEAR8IEV4ZWN1dGUgYSB2aWV3IGZ1bmN0aW9uIHF1ZXJ5LgAEpCBSdW50aW1lIEFQSSBmb3IgZXhlY3V0aW5nIHZpZXcgZnVuY3Rpb25zBAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHRdCQxsZW44DRAAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0XQkMbGVuOBEQAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0FQFZAQAATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDhZAQAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOA0QBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOBEQBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodBUBWQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4WQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgTGVuZ3RoVG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAAAMADRYY21QYXltZW50QXBpEHxxdWVyeV9hY2NlcHRhYmxlX3BheW1lbnRfYXNzZXRzBCx4Y21fdmVyc2lvbjgdEBS0IFJldHVybnMgYSBsaXN0IG9mIGFjY2VwdGFibGUgcGF5bWVudCBhc3NldHMuADAgIyBBcmd1bWVudHMAaCAqIGB4Y21fdmVyc2lvbmA6IFZlcnNpb24uAEBxdWVyeV94Y21fd2VpZ2h0BBxtZXNzYWdlUQIpEBSoIFJldHVybnMgYSB3ZWlnaHQgbmVlZGVkIHRvIGV4ZWN1dGUgYSBYQ00uADAgIyBBcmd1bWVudHMAdCAqIGBtZXNzYWdlYDogYFZlcnNpb25lZFhjbWAuAGRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHQVARRhc3NldMEDLRAY6CBDb252ZXJ0cyBhIHdlaWdodCBpbnRvIGEgZmVlIGZvciB0aGUgc3BlY2lmaWVkIGBBc3NldElkYC4AMCAjIEFyZ3VtZW50cwCIICogYHdlaWdodGA6IGNvbnZlcnRpYmxlIGBXZWlnaHRgLnwgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRJZGAuAExxdWVyeV9kZWxpdmVyeV9mZWVzDCxkZXN0aW5hdGlvbskBHG1lc3NhZ2VRAiBhc3NldF9pZMEDMRAoYCBRdWVyeSBkZWxpdmVyeSBmZWVzIFYyLgAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLgAscCBBIHRyYWl0IG9mIFhDTSBwYXltZW50IEFQSS4AqCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Igb2J0YWluaW5nOgDEICogdGhlIHdlaWdodCByZXF1aXJlZCB0byBleGVjdXRlIGFuIFhDTSBtZXNzYWdlLAUBICogYSBsaXN0IG9mIGFjY2VwdGFibGUgYEFzc2V0SWRgcyBmb3IgbWVzc2FnZSBleGVjdXRpb24gcGF5bWVudCwBASAqIHRoZSBjb3N0IG9mIHRoZSB3ZWlnaHQgaW4gdGhlIHNwZWNpZmllZCBhY2NlcHRhYmxlIGBBc3NldElkYC6gICogdGhlIGZlZXMgZm9yIGFuIFhDTSBtZXNzYWdlIGRlbGl2ZXJ5LgDwIFRvIGRldGVybWluZSB0aGUgZXhlY3V0aW9uIHdlaWdodCBvZiB0aGUgY2FsbHMgcmVxdWlyZWQgZm9ydQEgW2B4Y206OmxhdGVzdDo6SW5zdHJ1Y3Rpb246OlRyYW5zYWN0YF0gaW5zdHJ1Y3Rpb24sIGBUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpYCBjYW4gYmUgdXNlZC4IACREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAwYb3JpZ2lu8QMQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjg1EAREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb27JAQx4Y22RA1UQBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9uyQFdEASQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EADxUcnVzdGVkUXVlcnlBcGkISGlzX3RydXN0ZWRfcmVzZXJ2ZQgUYXNzZXRlECBsb2NhdGlvbskBaRAU8CBSZXR1cm5zIGlmIHRoZSBsb2NhdGlvbiBpcyBhIHRydXN0ZWQgcmVzZXJ2ZSBmb3IgdGhlIGFzc2V0LgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAFRpc190cnVzdGVkX3RlbGVwb3J0ZXIIFGFzc2V0ZRAgbG9jYXRpb27JAWkQFOAgUmV0dXJucyBpZiB0aGUgYXNzZXQgY2FuIGJlIHRlbGVwb3J0ZWQgdG8gdGhlIGxvY2F0aW9uLgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAATsIEFQSSBmb3IgcXVlcnlpbmcgdHJ1c3RlZCByZXNlcnZlcyBhbmQgdHJ1c3RlZCB0ZWxlcG9ydGVycy4EAFRBdXRob3JpemVkQWxpYXNlcnNBcGkITGF1dGhvcml6ZWRfYWxpYXNlcnMEGHRhcmdldMkBcRAE9CBSZXR1cm5zIGxvY2F0aW9ucyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ATGlzX2F1dGhvcml6ZWRfYWxpYXMIGG9yaWdpbskBGHRhcmdldMkBeRAEHQEgUmV0dXJucyB3aGV0aGVyIGBvcmlnaW5gIGlzIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgAEoCBBUEkgZm9yIHF1ZXJ5aW5nIFhDTSBhdXRob3JpemVkIGFsaWFzZXMEADBGdW5naWJsZXNBcGkEWHF1ZXJ5X2FjY291bnRfYmFsYW5jZXMEHGFjY291bnQEfRAE7CBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBbYEFzc2V0YF0gdGhhdCBhbiBgQWNjb3VudElkYCBoYXMuAATYIFRoZSBBUEkgZm9yIHF1ZXJ5aW5nIGFjY291bnQncyBiYWxhbmNlcyBmcm9tIHJ1bnRpbWUuCABQQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlcmCFEBCcIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAPQgVGhlIGdpdmVuIGBoZWFkZXJgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1aWx0IGJsb2NrIGZvciB0aGF0qCB3ZSBhcmUgY29sbGVjdGluZyB0aGUgY29sbGF0aW9uIGluZm8gZm9yLgAU2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgBEIFZlcnNpb24gaGlzdG9yeToBASAtIFZlcnNpb24gMjogQ2hhbmdlZCBbYFNlbGY6OmNvbGxlY3RfY29sbGF0aW9uX2luZm9gXSBzaWduYXR1cmU1ASAtIFZlcnNpb24gMzogU2lnbmFscyB0byB0aGUgbm9kZSB0byB1c2UgdmVyc2lvbiAxIG9mIFtgUGFyYWNoYWluQmxvY2tEYXRhYF0uDAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGJEQKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWSVEE0BOGEBIFJldHVybnMgYSBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgaWRlbnRpZmllZCBieRggYGlkYC4AVQEgSWYgYGlkYCBpcyBgTm9uZWAgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZWZhdWx0SQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBzdHJ1Y3Qgb2YgdGhlIHJ1bnRpbWUuIEltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBkZWZhdWx0YCBgUnVudGltZUdlbmVzaXNDb25maWdgLgAhASBPdGhlcndpc2UgZnVuY3Rpb24gcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluLCBuYW1lZFEBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0IGlkZW50aWZpZWQgYnkgYGlkYCwgb3IgYE5vbmVgIGlmIHN1Y2ggcHJlc2V0IGRvZXMgbm90YQEgZXhpc3QuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuADBwcmVzZXRfbmFtZXMAmRAQUQEgUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgZm9yIGF2YWlsYWJsZSBidWlsdGluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0cy4AYQEgVGhlIHByZXNldHMgZnJvbSB0aGUgbGlzdCBjYW4gYmUgcXVlcmllZCB3aXRoIFtgR2VuZXNpc0J1aWxkZXI6OmdldF9wcmVzZXRgXSBtZXRob2QuIElmAQEgbm8gbmFtZWQgcHJlc2V0cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIGxpc3QgaXMgZW1wdHkuAATwIEFQSSB0byBpbnRlcmFjdCB3aXRoIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZm9yIHRoZSBydW50aW1lBABQQXNzZXRIdWJNaWdyYXRpb25BcGkIVG1pZ3JhdGlvbl9zdGFydF9ibG9jawA4BNQgUmV0dXJucyB0aGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIG1pZ3JhdGlvbiBzdGFydGVkLgBMbWlncmF0aW9uX2VuZF9ibG9jawA4BMwgUmV0dXJucyB0aGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIG1pZ3JhdGlvbiBlbmRlZC4ABAEBIEFQSSB0byBxdWVyeSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQXNzZXQgSHViIG1pZ3JhdGlvbiBwcm9jZXNzLgQASEFzc2V0Q29udmVyc2lvbkFwaQyMcXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MR0CGGFzc2V0Mh0CGGFtb3VudFkBLGluY2x1ZGVfZmVlXQFJBBD8IFByb3ZpZGVzIGEgcXVvdGUgZm9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0uADkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQurCAoVXNlIGBhbW91bnRfaW5fbWF4YCB0byBjb250cm9sIHNsaXBwYWdlLikAjHF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zEBhhc3NldDEdAhhhc3NldDIdAhhhbW91bnRZASxpbmNsdWRlX2ZlZV0BSQQQ/CBQcm92aWRlcyBhIHF1b3RlIGZvciBbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdLgA5ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKQAwZ2V0X3Jlc2VydmVzCBhhc3NldDEdAhhhc3NldDIdAp0QBAUBIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGxpcXVpZGl0eSBwb29sIGZvciB0aGUgZ2l2ZW4gYXNzZXQgcGFpci4ACCEBIFRoaXMgcnVudGltZSBhcGkgYWxsb3dzIHBlb3BsZSB0byBxdWVyeSB0aGUgc2l6ZSBvZiB0aGUgbGlxdWlkaXR5IHBvb2xzcCBhbmQgcXVvdGUgcHJpY2VzIGZvciBzd2Fwcy4EAEBHZXRQYXJhY2hhaW5JbmZvBDBwYXJhY2hhaW5faWQAoASwIFJldHJpZXZlIHRoZSBwYXJhY2hhaW4gaWQgdXNlZCBmb3IgcnVudGltZS4ABA0BIFJ1bnRpbWUgYXBpIHVzZWQgdG8gYWNjZXNzIGdlbmVyYWwgaW5mbyBhYm91dCBhIHBhcmFjaGFpbiBydW50aW1lLgQASE5vbWluYXRpb25Qb29sc0FwaSg8cGVuZGluZ19yZXdhcmRzBAx3aG8EWQEENQEgUmV0dXJucyB0aGUgcGVuZGluZyByZXdhcmRzIGZvciB0aGUgbWVtYmVyIHRoYXQgdGhlIEFjY291bnRJZCB3YXMgZ2l2ZW4gZm9yLgBEcG9pbnRzX3RvX2JhbGFuY2UIHHBvb2xfaWQ4GHBvaW50c1kBWQEE9CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IGJhbGFuY2Ugb2YgYHBvaW50c2AgZm9yIGEgZ2l2ZW4gcG9vbC4ARGJhbGFuY2VfdG9fcG9pbnRzCBxwb29sX2lkOCRuZXdfZnVuZHNZAVkBBPwgUmV0dXJucyB0aGUgZXF1aXZhbGVudCBwb2ludHMgb2YgYG5ld19mdW5kc2AgZm9yIGEgZ2l2ZW4gcG9vbC4ASHBvb2xfcGVuZGluZ19zbGFzaAQccG9vbF9pZDhZAQSwIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbC4AUG1lbWJlcl9wZW5kaW5nX3NsYXNoBBhtZW1iZXIEWQEQzCBSZXR1cm5zIHRoZSBwZW5kaW5nIHNsYXNoIGZvciBhIGdpdmVuIHBvb2wgbWVtYmVyLgBNASBJZiBwZW5kaW5nIHNsYXNoIG9mIHRoZSBtZW1iZXIgZXhjZWVkcyBgRXhpc3RlbnRpYWxEZXBvc2l0YCwgaXQgY2FuIGJlIHJlcG9ydGVkIG9uHCBjaGFpbi4AdHBvb2xfbmVlZHNfZGVsZWdhdGVfbWlncmF0aW9uBBxwb29sX2lkOF0BIOQgUmV0dXJucyB0cnVlIGlmIHRoZSBwb29sIHdpdGggYHBvb2xfaWRgIG5lZWRzIG1pZ3JhdGlvbi4ASQEgVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIGBwYWxsZXQtbm9taW5hdGlvbi1wb29sc2AgaGFzIHN3aXRjaGVkIHRvIHVzaW5nIHN0cmF0ZWd5QQEgW2BEZWxlZ2F0ZVN0YWtlYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OmFkYXB0ZXI6OkRlbGVnYXRlU3Rha2UpIGJ1dCB0aGUgcG9vbOggc3RpbGwgaGFzIGZ1bmRzIHRoYXQgd2VyZSBzdGFrZWQgdXNpbmcgdGhlIG9sZGVyIHN0cmF0ZWd5GQEgW1RyYW5zZmVyU3Rha2VdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpUcmFuc2ZlclN0YWtlKS4gVXNliQEgW2BtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6Q2FsbDo6bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlKVQgdG8gbWlncmF0ZSB0aGUgcG9vbC4AfG1lbWJlcl9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EGG1lbWJlcgRdARwpASBSZXR1cm5zIHRydWUgaWYgdGhlIGRlbGVnYXRlZCBmdW5kcyBvZiB0aGUgcG9vbCBgbWVtYmVyYCBuZWVkcyBtaWdyYXRpb24uANggT25jZSBhIHBvb2wgaGFzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCB0byB0aGUgc3RyYXRlZ3lVASBbYERlbGVnYXRlU3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6RGVsZWdhdGVTdGFrZSksIHRoZSBmdW5kcyBvZiB0aGUZASBtZW1iZXIgY2FuIGJlIG1pZ3JhdGVkIGZyb20gcG9vbCBhY2NvdW50IHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LiBVc2UpASBbYG1pZ3JhdGVfZGVsZWdhdGlvbmBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpDYWxsOjptaWdyYXRlX2RlbGVnYXRpb24ppCB0byBtaWdyYXRlIHRoZSBmdW5kcyBvZiB0aGUgcG9vbCBtZW1iZXIuAFBtZW1iZXJfdG90YWxfYmFsYW5jZQQMd2hvBFkBBGUBIFJldHVybnMgdGhlIHRvdGFsIGNvbnRyaWJ1dGlvbiBvZiBhIHBvb2wgbWVtYmVyIGluY2x1ZGluZyBhbnkgYmFsYW5jZSB0aGF0IGlzIHVuYm9uZGluZy4AMHBvb2xfYmFsYW5jZQQccG9vbF9pZDhZAQScIFRvdGFsIGJhbGFuY2UgY29udHJpYnV0ZWQgdG8gdGhlIHBvb2wuADRwb29sX2FjY291bnRzBBxwb29sX2lkOP0OBC0BIFJldHVybnMgdGhlIGJvbmRlZCBhY2NvdW50IGFuZCByZXdhcmQgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2xfaWQuAAT4IFJ1bnRpbWUgYXBpIGZvciBhY2Nlc3NpbmcgaW5mb3JtYXRpb24gYWJvdXQgbm9taW5hdGlvbiBwb29scy4EAChTdGFraW5nQXBpDERub21pbmF0aW9uc19xdW90YQQcYmFsYW5jZVkBOAQRASBSZXR1cm5zIHRoZSBub21pbmF0aW9ucyBxdW90YSBmb3IgYSBub21pbmF0b3Igd2l0aCBhIGdpdmVuIGJhbGFuY2UuAFxlcmFzX3N0YWtlcnNfcGFnZV9jb3VudAgMZXJhOBxhY2NvdW50BDgEOQEgUmV0dXJucyB0aGUgcGFnZSBjb3VudCBvZiBleHBvc3VyZXMgZm9yIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBpbiBhIGdpdmVuIGVyYS4APHBlbmRpbmdfcmV3YXJkcwgMZXJhOBxhY2NvdW50BF0BBEUBIFJldHVybnMgdHJ1ZSBpZiBhIHZhbGlkYXRvciBgYWNjb3VudGAgaGFzIHBhZ2VzIHRvIGJlIGNsYWltZWQgZm9yIHRoZSBnaXZlbiBlcmEuAAAEACRJbmZsYXRpb24ElGV4cGVyaW1lbnRhbF9pc3N1YW5jZV9wcmVkaWN0aW9uX2luZm8AoRAQ1CBSZXR1cm4gdGhlIGN1cnJlbnQgZXN0aW1hdGVzIG9mIHRoZSBpc3N1YW5jZSBhbW91bnQuAFEBIFRoaXMgaXMgbWFya2VkIGFzIGV4cGVyaW1lbnRhbCBpbiBsaWdodCBvZiBSRkMjODkuIE5vbmV0aGVsZXNzLCBpdHMgdXNhZ2UgaXMgaGlnaGx5JQEgcmVjb21tZW5kZWQgb3ZlciB0cnlpbmcgdG8gcmVhZC1zdG9yYWdlLCBvciByZS1jcmVhdGUgdGhlIG9uY2hhaW4gbG9naWMuAAAEACRSZXZpdmVBcGlsJGV0aF9ibG9jawANDwx8IFJldHVybnMgdGhlIGN1cnJlbnQgRVRIIGJsb2NrLgC4IFRoaXMgaXMgb25lIGJsb2NrIGJlaGluZCB0aGUgc3Vic3RyYXRlIGJsb2NrLgA4ZXRoX2Jsb2NrX2hhc2gEGG51bWJlcgUHBQUE3CBSZXR1cm5zIHRoZSBFVEggYmxvY2sgaGFzaCBmb3IgdGhlIGdpdmVuIGJsb2NrIG51bWJlci4AQGV0aF9yZWNlaXB0X2RhdGEAeQ8UEQEgVGhlIGRldGFpbHMgbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSByZWNlaXB0IGluZm9ybWF0aW9uIG9mZmNoYWluLgAcICMgTm90ZQBVASBFYWNoIGVudHJ5IGNvcnJlc3BvbmRzIHRvIHRoZSBhcHByb3ByaWF0ZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiBpbiB0aGUgY3VycmVudCBibG9jay4APGJsb2NrX2dhc19saW1pdAAFBwR0IFJldHVybnMgdGhlIGJsb2NrIGdhcyBsaW1pdC4AbG1heF9leHRyaW5zaWNfd2VpZ2h0X2luX2dhcwAFBwTwIFJldHVybnMgdGhlIGJsb2NrIGdhcyBsaW1pdCBhcyBjYWxjdWxhdGVkIGZyb20gdGhlIHdlaWdodHMuABxiYWxhbmNlBBxhZGRyZXNz/QYFBwQxASBSZXR1cm5zIHRoZSBmcmVlIGJhbGFuY2Ugb2YgdGhlIGdpdmVuIGBbSDE2MF1gIGFkZHJlc3MsIHVzaW5nIEVWTSBkZWNpbWFscy4AJGdhc19wcmljZQAFBwRcIFJldHVybnMgdGhlIGdhcyBwcmljZS4AFG5vbmNlBBxhZGRyZXNz/QY4BMQgUmV0dXJucyB0aGUgbm9uY2Ugb2YgdGhlIGdpdmVuIGBbSDE2MF1gIGFkZHJlc3MuABBjYWxsGBhvcmlnaW4EEGRlc3T9BhR2YWx1ZVkBJGdhc19saW1pdBEBVHN0b3JhZ2VfZGVwb3NpdF9saW1pdEkEKGlucHV0X2RhdGEYqRAM9CBQZXJmb3JtIGEgY2FsbCBmcm9tIGEgc3BlY2lmaWVkIGFjY291bnQgdG8gYSBnaXZlbiBjb250cmFjdC4AiCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpiYXJlX2NhbGxgXS4ALGluc3RhbnRpYXRlHBhvcmlnaW4EFHZhbHVlWQEkZ2FzX2xpbWl0EQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0SQQQY29kZb0QEGRhdGEYEHNhbHQBB8EQDHAgSW5zdGFudGlhdGUgYSBuZXcgY29udHJhY3QuAKQgU2VlIGBbY3JhdGU6OlBhbGxldDo6YmFyZV9pbnN0YW50aWF0ZV1gLgAwZXRoX3RyYW5zYWN0BAh0eM0Q6RAQaCBQZXJmb3JtIGFuIEV0aGVyZXVtIGNhbGwuAJQgRGVwcmVjYXRlZCB1c2UgYHYyYCB2ZXJzaW9uIGluc3RlYWQusCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpkcnlfcnVuX2V0aF90cmFuc2FjdGBdAGBldGhfdHJhbnNhY3Rfd2l0aF9jb25maWcICHR4zRAYY29uZmln9RDpEAxoIFBlcmZvcm0gYW4gRXRoZXJldW0gY2FsbC4AsCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpkcnlfcnVuX2V0aF90cmFuc2FjdGBdAEBldGhfZXN0aW1hdGVfZ2FzCAh0eM0QGGNvbmZpZ/UQKREU6CBFc3RpbWF0ZXMgdGhlIGFtb3VudCBvZiBnYXMgdGhhdCBhIHRyYW5zYWN0aW9ucyByZXF1aXJlcy4AXQEgVGhpcyBmdW5jdGlvbiBlc3RpbWF0ZXMgdGhlIGdhcyBvZiB0aGUgdHJhbnNhY3Rpb24gYWNjb3JkaW5nIHRvIHRoZSBzYW1lIGJpbmFyeSBzZWFyY2hZASBhbGdvcml0aG0gdGhhdCdzIGltcGxlbWVudGVkIGluIEdldGguIEl0IHN0b3BzIHdoZW4gd2l0aCBhbiBhY2NlcHRhYmxlIGVycm9yIHJhdGlvIG9mtCAxLjUlIHNvIHRoYXQgdGhlIGFsZ29yaXRobSB0ZXJtaW5hdGVzIGVhcmx5LgBcZXRoX3ByZV9kaXNwYXRjaF93ZWlnaHQECHR4GC0RBE0BIFJldHVybiB0aGUgcHJlLWRpc3BhdGNoIHdlaWdodCBib29rZWQgZm9yIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24gcGF5bG9hZC4ALHVwbG9hZF9jb2RlDBhvcmlnaW4EEGNvZGUYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdEkEMREM6CBVcGxvYWQgbmV3IGNvZGUgd2l0aG91dCBpbnN0YW50aWF0aW5nIGEgY29udHJhY3QgZnJvbSBpdC4ApCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpiYXJlX3VwbG9hZF9jb2RlYF0uACxnZXRfc3RvcmFnZQgcYWRkcmVzc/0GDGtleQg5ERS8IFF1ZXJ5IGEgZ2l2ZW4gc3RvcmFnZSBrZXkgaW4gYSBnaXZlbiBjb250cmFjdC4ATQEgUmV0dXJucyBgT2soU29tZShWZWM8dTg+KSlgIGlmIHRoZSBzdG9yYWdlIHZhbHVlIGV4aXN0cyB1bmRlciB0aGUgZ2l2ZW4ga2V5IGluIHRoZWEBIHNwZWNpZmllZCBhY2NvdW50IGFuZCBgT2soTm9uZSlgIGlmIGl0IGRvZXNuJ3QuIElmIHRoZSBhY2NvdW50IHNwZWNpZmllZCBieSB0aGUgYWRkcmVzcwkBIGRvZXNuJ3QgZXhpc3QsIG9yIGRvZXNuJ3QgaGF2ZSBhIGNvbnRyYWN0IHRoZW4gYEVycmAgaXMgcmV0dXJuZWQuAExnZXRfc3RvcmFnZV92YXJfa2V5CBxhZGRyZXNz/QYMa2V5GDkRFPggUXVlcnkgYSBnaXZlbiB2YXJpYWJsZS1zaXplZCBzdG9yYWdlIGtleSBpbiBhIGdpdmVuIGNvbnRyYWN0LgBNASBSZXR1cm5zIGBPayhTb21lKFZlYzx1OD4pKWAgaWYgdGhlIHN0b3JhZ2UgdmFsdWUgZXhpc3RzIHVuZGVyIHRoZSBnaXZlbiBrZXkgaW4gdGhlYQEgc3BlY2lmaWVkIGFjY291bnQgYW5kIGBPayhOb25lKWAgaWYgaXQgZG9lc24ndC4gSWYgdGhlIGFjY291bnQgc3BlY2lmaWVkIGJ5IHRoZSBhZGRyZXNzCQEgZG9lc24ndCBleGlzdCwgb3IgZG9lc24ndCBoYXZlIGEgY29udHJhY3QgdGhlbiBgRXJyYCBpcyByZXR1cm5lZC4ALHRyYWNlX2Jsb2NrCBRibG9ja1kJGGNvbmZpZ0ERXREYBQEgVHJhY2VzIHRoZSBleGVjdXRpb24gb2YgYW4gZW50aXJlIGJsb2NrIGFuZCByZXR1cm5zIGNhbGwgdHJhY2VzLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhlOCBwYXJlbnQgYmxvY2suAMggU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQmxvY2tCeU51bWJlcmAgZm9yIHVzYWdlLgAgdHJhY2VfdHgMFGJsb2NrWQkgdHhfaW5kZXg4GGNvbmZpZ0ERvREY/CBUcmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiBhIHNwZWNpZmljIHRyYW5zYWN0aW9uIHdpdGhpbiBhIGJsb2NrLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhljCBwYXJlbnQgaGFzaCB1cCB0byB0aGUgdHJhbnNhY3Rpb24uAMAgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlVHJhbnNhY3Rpb25gIGZvciB1c2FnZS4AKHRyYWNlX2NhbGwICHR4zRAYY29uZmlnQRHBEQzAIERyeSBydW4gYW5kIHJldHVybiB0aGUgdHJhY2Ugb2YgdGhlIGdpdmVuIGNhbGwuAKQgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQ2FsbGAgZm9yIHVzYWdlLgBYdHJhY2VfY2FsbF93aXRoX2NvbmZpZwwIdHjNECx0cmFjZXJfdHlwZUERGGNvbmZpZ8URwREUOQEgRHJ5IHJ1biBhbmQgcmV0dXJuIHRoZSB0cmFjZSBvZiB0aGUgZ2l2ZW4gY2FsbCB3aXRoIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi4AQQEgTGlrZSBbYFNlbGY6OnRyYWNlX2NhbGxgXSwgYnV0IGFjY2VwdHMgYSBbYFRyYWNpbmdDb25maWdgXSB0aGF0IGNhbiBjYXJyeSBzdGF0ZUUBIG92ZXJyaWRlcyBhbmQgZnV0dXJlIGV4dGVuc2liaWxpdHkuIFRoZSBjb25maWcgbXVzdCBiZSB0aGUgKipsYXN0IGFyZ3VtZW50KiogZm9yBQEgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkg4oCUIHNlZSBbYFRyYWNpbmdDb25maWdgXSBkb2N1bWVudGF0aW9uLgAwYmxvY2tfYXV0aG9yAP0GBPggVGhlIGFkZHJlc3Mgb2YgdGhlIHZhbGlkYXRvciB0aGF0IHByb2R1Y2VkIHRoZSBjdXJyZW50IGJsb2NrLgAcYWRkcmVzcwQoYWNjb3VudF9pZAT9BgTMIEdldCB0aGUgSDE2MCBhZGRyZXNzIGFzc29jaWF0ZWQgdG8gdGhpcyBhY2NvdW50IGlkAChhY2NvdW50X2lkBBxhZGRyZXNz/QYEBNAgR2V0IHRoZSBhY2NvdW50IGlkIGFzc29jaWF0ZWQgdG8gdGhpcyBIMTYwIGFkZHJlc3MuAFxydW50aW1lX3BhbGxldHNfYWRkcmVzcwD9BgT0IFRoZSBhZGRyZXNzIHVzZWQgdG8gY2FsbCB0aGUgcnVudGltZSdzIHBhbGxldHMgZGlzcGF0Y2hhYmxlcwAQY29kZQQcYWRkcmVzc/0GGAQRASBUaGUgY29kZSBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgdGFraW5nIHByZS1jb21waWxlcyBpbnRvIGFjY291bnQuAFRuZXdfYmFsYW5jZV93aXRoX2R1c3QEHGJhbGFuY2UFB8kRBA0BIENvbnN0cnVjdCB0aGUgbmV3IGJhbGFuY2UgYW5kIGR1c3QgY29tcG9uZW50cyBvZiB0aGlzIEVWTSBiYWxhbmNlLgAEvCBUaGUgQVBJIHVzZWQgdG8gZHJ5LXJ1biBjb250cmFjdCBpbnRlcmFjdGlvbnMuBAAgZQfVEQA=";
2
+
3
+ export { binMeta as default };