@parity/product-sdk-descriptors 0.11.0 → 0.12.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 (87) 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 +452 -244
  18. package/chains/paseo-asset-hub/generated/dist/descriptors-DYdxAxn9.js +25 -0
  19. package/chains/paseo-asset-hub/generated/dist/index.js +5 -5
  20. package/chains/paseo-asset-hub/generated/dist/metadataTypes-CzaLmQWq.js +3 -0
  21. package/chains/paseo-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  22. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub.d.ts +389 -136
  23. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-DolGICyF.js +3 -0
  24. package/chains/paseo-bulletin/.papi/polkadot-api.json +1 -1
  25. package/chains/paseo-bulletin/generated/dist/common-types.d.ts +58 -54
  26. package/chains/paseo-bulletin/generated/dist/descriptors-B1VRTRQv.js +25 -0
  27. package/chains/paseo-bulletin/generated/dist/index.js +4 -4
  28. package/chains/paseo-bulletin/generated/dist/metadataTypes-DIFn96VK.js +3 -0
  29. package/chains/paseo-bulletin/generated/dist/metadataTypes.d.ts +1 -1
  30. package/chains/paseo-bulletin/generated/dist/paseo_bulletin.d.ts +111 -47
  31. package/chains/paseo-bulletin/generated/dist/paseo_bulletin_metadata-BXuTEONY.js +3 -0
  32. package/chains/paseo-individuality/.papi/polkadot-api.json +2 -2
  33. package/chains/paseo-individuality/generated/dist/common-types.d.ts +3985 -1981
  34. package/chains/paseo-individuality/generated/dist/descriptors-S9Iw_eUG.js +25 -0
  35. package/chains/paseo-individuality/generated/dist/index.js +5 -5
  36. package/chains/paseo-individuality/generated/dist/metadataTypes-DrB-HZYT.js +3 -0
  37. package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +1 -1
  38. package/chains/paseo-individuality/generated/dist/paseo_individuality.d.ts +2305 -571
  39. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-CyQSuf-t.js +3 -0
  40. package/chains/polkadot-asset-hub/.papi/polkadot-api.json +1 -1
  41. package/chains/polkadot-asset-hub/generated/dist/common-types.d.ts +875 -178
  42. package/chains/polkadot-asset-hub/generated/dist/descriptors-B4K2pLTI.js +25 -0
  43. package/chains/polkadot-asset-hub/generated/dist/index.d.ts +1 -1
  44. package/chains/polkadot-asset-hub/generated/dist/index.js +5 -5
  45. package/chains/polkadot-asset-hub/generated/dist/metadataTypes-BgiH324c.js +3 -0
  46. package/chains/polkadot-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  47. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub.d.ts +733 -62
  48. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-DkUzze1o.js +3 -0
  49. package/chains/previewnet-asset-hub/.papi/polkadot-api.json +2 -2
  50. package/chains/previewnet-asset-hub/generated/dist/common-types.d.ts +309 -182
  51. package/chains/previewnet-asset-hub/generated/dist/descriptors-CQcPA8uu.js +25 -0
  52. package/chains/previewnet-asset-hub/generated/dist/index.js +5 -5
  53. package/chains/previewnet-asset-hub/generated/dist/metadataTypes-CzaLmQWq.js +3 -0
  54. package/chains/previewnet-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  55. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub.d.ts +293 -107
  56. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-DO5OICbZ.js +3 -0
  57. package/chains/previewnet-bulletin/.papi/polkadot-api.json +1 -1
  58. package/chains/previewnet-bulletin/generated/dist/index.js +1 -1
  59. package/chains/previewnet-individuality/.papi/polkadot-api.json +2 -2
  60. package/chains/previewnet-individuality/generated/dist/common-types.d.ts +167 -116
  61. package/chains/previewnet-individuality/generated/dist/descriptors-BFolU1bo.js +25 -0
  62. package/chains/previewnet-individuality/generated/dist/index.js +5 -5
  63. package/chains/previewnet-individuality/generated/dist/metadataTypes-DrB-HZYT.js +3 -0
  64. package/chains/previewnet-individuality/generated/dist/metadataTypes.d.ts +1 -1
  65. package/chains/previewnet-individuality/generated/dist/previewnet_individuality.d.ts +255 -146
  66. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-Bqj-d95E.js +3 -0
  67. package/package.json +1 -1
  68. package/chains/kusama-asset-hub/generated/dist/descriptors-DISR3KIi.js +0 -25
  69. package/chains/kusama-asset-hub/generated/dist/metadataTypes-D7CQu3b0.js +0 -3
  70. package/chains/paseo-asset-hub/generated/dist/descriptors-D_6q-TZg.js +0 -25
  71. package/chains/paseo-asset-hub/generated/dist/metadataTypes-uABbUf26.js +0 -3
  72. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-BDERNxN0.js +0 -3
  73. package/chains/paseo-bulletin/generated/dist/descriptors-YjGUL06H.js +0 -25
  74. package/chains/paseo-bulletin/generated/dist/metadataTypes-BYRh30V_.js +0 -3
  75. package/chains/paseo-bulletin/generated/dist/paseo_bulletin_metadata-CWv0bj9A.js +0 -3
  76. package/chains/paseo-individuality/generated/dist/descriptors-BV8FuMxu.js +0 -25
  77. package/chains/paseo-individuality/generated/dist/metadataTypes-4OzMJJMF.js +0 -3
  78. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-Be34mrmF.js +0 -3
  79. package/chains/polkadot-asset-hub/generated/dist/descriptors-BwnkDiaI.js +0 -25
  80. package/chains/polkadot-asset-hub/generated/dist/metadataTypes--EQ8pxh1.js +0 -3
  81. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-CN_MTTeF.js +0 -3
  82. package/chains/previewnet-asset-hub/generated/dist/descriptors-D499B54L.js +0 -25
  83. package/chains/previewnet-asset-hub/generated/dist/metadataTypes-CKCAKys8.js +0 -3
  84. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-CPJf2_Ma.js +0 -3
  85. package/chains/previewnet-individuality/generated/dist/descriptors-BU9tL-VV.js +0 -25
  86. package/chains/previewnet-individuality/generated/dist/metadataTypes-D7WDCVlV.js +0 -3
  87. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-DEV5-BYY.js +0 -3
@@ -0,0 +1,3 @@
1
+ const binMeta = "bWV0YRDFDgAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAGcGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAIANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4AAwAoUGFyYW1ldGVycwQAvAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhbWV0ZXJzLCBSdW50aW1lPgBJADROZXR3b3JrU3VmZml4BABJAQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZXR3b3JrU3VmZml4LCBSdW50aW1lPgBKACBCYWxhbmNlcwQAUQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoARE9yaWdpblJlc3RyaWN0aW9uBABlAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxPcmlnaW5SZXN0cmljdGlvbiwgUnVudGltZT4ADQAYQXNzZXRzBABtAQGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+AA4AJEFzc2V0UmF0ZQQAuQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRSYXRlLCBSdW50aW1lPgAQADxBc3NldENvbnZlcnNpb24EAMEBAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0Q29udmVyc2lvbiwgUnVudGltZT4AEgAoUG9vbEFzc2V0cwQAyQEBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9vbEFzc2V0cywgUnVudGltZT4AEwBEQ29sbGF0b3JTZWxlY3Rpb24EANUBAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbGxhdG9yU2VsZWN0aW9uLCBSdW50aW1lPgAVABxTZXNzaW9uBADZAQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTZXNzaW9uLCBSdW50aW1lPgAWACRYY21wUXVldWUEAOUBAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFhjbXBRdWV1ZSwgUnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAOkBAcEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvbGthZG90WGNtLCBSdW50aW1lPgAfAChDdW11bHVzWGNtBAC5AwG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDdW11bHVzWGNtLCBSdW50aW1lPgAgADBNZXNzYWdlUXVldWUEAL0DAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lc3NhZ2VRdWV1ZSwgUnVudGltZT4AIgAcVXRpbGl0eQQAxQMBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VXRpbGl0eSwgUnVudGltZT4AKAAgTXVsdGlzaWcEADEEAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpc2lnLCBSdW50aW1lPgApABBTdWRvBAA9BAGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdWRvLCBSdW50aW1lPgAqABRQcm94eQQAQQQBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJveHksIFJ1bnRpbWU+ACwAGFBlb3BsZQQATQQBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGVvcGxlLCBSdW50aW1lPgAzABxNb2JSdWxlBABdBAGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNb2JSdWxlLCBSdW50aW1lPgA0AChQcm9vZk9mSW5rBABtBAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm9vZk9mSW5rLCBSdW50aW1lPgA1ABBHYW1lBACVBAGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxHYW1lLCBSdW50aW1lPgA3ABRTY29yZQQA5QQBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NvcmUsIFJ1bnRpbWU+ADgAKE5mdENyZWRpdHMEAAkFAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdENyZWRpdHMsIFJ1bnRpbWU+ADkAIER1bW15RGltBAAVBQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEdW1teURpbSwgUnVudGltZT4AOwAoUGVvcGxlTGl0ZQQALQUBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGVvcGxlTGl0ZSwgUnVudGltZT4APgAkUmVzb3VyY2VzBABBBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZXNvdXJjZXMsIFJ1bnRpbWU+AD8ANENodW5rc01hbmFnZXIEAE0FAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENodW5rc01hbmFnZXIsIFJ1bnRpbWU+AEAAHE1lbWJlcnMEAF0FAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lbWJlcnMsIFJ1bnRpbWU+AEMAHENvaW5hZ2UEAGUFAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvaW5hZ2UsIFJ1bnRpbWU+AEQAPE1lbWJlcnNOb3RpZmllcgQAwQUB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TWVtYmVyc05vdGlmaWVyLCBSdW50aW1lPgBFABxBaXJkcm9wBADZBQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBaXJkcm9wLCBSdW50aW1lPgBGABhIb25vdXIEAOEFAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEhvbm91ciwgUnVudGltZT4ARwA4UGVvcGxlQWlyZHJvcHMEAO0FAc0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBlb3BsZUFpcmRyb3BzLCBSdW50aW1lPgBIAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQA/QUB5QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja01pZ3JhdGlvbnMsIFJ1bnRpbWU+AGIAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0EENhbGwEBFQAAQQ0c2V0X3BhcmFtZXRlcgQBJGtleV92YWx1ZcABUFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzAAAQdFNldCB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBgQWRtaW5PcmlnaW5gIGZvciB0aGUgZ2l2ZW4gYGtleWAuIFZhbHVlcyBiZYhkZWxldGVkIGJ5IHNldHRpbmcgdGhlbSB0byBgTm9uZWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAMZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyc0RSdW50aW1lUGFyYW1ldGVycwABEEBTdGF0ZW1lbnRTdG9yYWdlBADEAbRkeW5hbWljX3BhcmFtczo6c3RhdGVtZW50X3N0b3JhZ2U6OlBhcmFtZXRlcnMAAAA8QnVsbGV0aW5TdG9yYWdlBAAJAQGwZHluYW1pY19wYXJhbXM6OmJ1bGxldGluX3N0b3JhZ2U6OlBhcmFtZXRlcnMAAQA4UGVvcGxlQWlyZHJvcHMEAC0BAaxkeW5hbWljX3BhcmFtczo6cGVvcGxlX2FpcmRyb3BzOjpQYXJhbWV0ZXJzAAIAOExpdGVQZXJzb25ob29kBAA5AQGsZHluYW1pY19wYXJhbXM6OmxpdGVfcGVyc29uaG9vZDo6UGFyYW1ldGVycwADAADEFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2UoUGFyYW1ldGVycwABMFBBY2NvdW50c0FwaUFsbG93YW5jZQgAyAFQQWNjb3VudHNBcGlBbGxvd2FuY2UAAMwBjE9wdGlvbjxTdGF0ZW1lbnRBbGxvd2FuY2VQYXJhbWV0ZXI+AAAAVE5vdGlmaWNhdGlvbkFsbG93YW5jZQgA1AFUTm90aWZpY2F0aW9uQWxsb3dhbmNlAADMAYxPcHRpb248U3RhdGVtZW50QWxsb3dhbmNlUGFyYW1ldGVyPgAGAGBMaXRlUGVyc29uU3RhdGVtZW50TGltaXQIANgBYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAAAzAGMT3B0aW9uPFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcj4ACgBQUGVyc29uU3RhdGVtZW50TGltaXQIANwBUFBlcnNvblN0YXRlbWVudExpbWl0AADMAYxPcHRpb248U3RhdGVtZW50QWxsb3dhbmNlUGFyYW1ldGVyPgALAFxTdG10U3RvcmVTbG90c1BlclBlcmlvZAgA4AFcU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2QAAOQBLE9wdGlvbjx1MzI+AAEAbExpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZAgA6AFsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAADkASxPcHRpb248dTMyPgACAFRTdG10U3RvcmVDbGVhbnVwTGltaXQIAOwBVFN0bXRTdG9yZUNsZWFudXBMaW1pdAAA5AEsT3B0aW9uPHUzMj4AAwBwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bggA8AFwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bgAA5AEsT3B0aW9uPHUzMj4ABABQU3RtdFN0b3JlR3JhY2VXaW5kb3cIAPQBUFN0bXRTdG9yZUdyYWNlV2luZG93AADkASxPcHRpb248dTMyPgAFAGhOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAgA+AFoTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QAAPwBKE9wdGlvbjx1OD4ABwB4TGl0ZU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kCAABAQF4TGl0ZU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kAAD8AShPcHRpb248dTg+AAgAaE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uCAAFAQFoTm90aWZpY2F0aW9uUGVyaW9kRHVyYXRpb24AAOQBLE9wdGlvbjx1MzI+AAkAAMgUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVBBY2NvdW50c0FwaUFsbG93YW5jZQAAAADMBBhPcHRpb24EBFQB0AEIEE5vbmUAAAAQU29tZQQA0AAAAQAA0Aw0aW5kaXZfc3VwcG9ydChwYXJhbWV0ZXJzbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgAACAEgbWF4X3NpemU4AQx1MzIAASRtYXhfY291bnQ4AQx1MzIAANQUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVROb3RpZmljYXRpb25BbGxvd2FuY2UAAAAA2BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAAAAADcFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2VQUGVyc29uU3RhdGVtZW50TGltaXQAAAAA4BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlXFN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAAAAOQEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAADoFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2VsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAAAAOwUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVRTdG10U3RvcmVDbGVhbnVwTGltaXQAAAAA8BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlcFN0bXRTdG9yZVJlcGxhY2VtZW50Q29vbGRvd24AAAAA9BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlUFN0bXRTdG9yZUdyYWNlV2luZG93AAAAAPgUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZWhOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAAAAAD8BBhPcHRpb24EBFQBDAEIEE5vbmUAAAAQU29tZQQADAAAAQAAAQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZXhMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QAAAAABQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZWhOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbgAAAAAJARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2UoUGFyYW1ldGVycwABGHRMb25nVGVybVN0b3JhZ2VQZXJpb2REdXJhdGlvbggADQEBdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uAADkASxPcHRpb248dTMyPgAAAGhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdwgAEQEBaExvbmdUZXJtU3RvcmFnZUdyYWNlV2luZG93AADkASxPcHRpb248dTMyPgABAHhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QIABUBAXhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QAAPwBKE9wdGlvbjx1OD4AAgBsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0CAAZAQFsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0AADkASxPcHRpb248dTMyPgADAIRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUIAB0BAYRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUAACEBAYRPcHRpb248TG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbj4ABACUTG9uZ1Rlcm1TdG9yYWdlQWxsb3dhbmNlRm9yTGl0ZVBlb3BsZQgAKQEBlExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvckxpdGVQZW9wbGUAACEBAYRPcHRpb248TG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbj4ABQAADQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0BidWxsZXRpbl9zdG9yYWdldExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uAAAAABEBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZWhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdwAAAAAVARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2V4TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kAAAAABkBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZWxMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXQAAAAAHQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0BidWxsZXRpbl9zdG9yYWdlhExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvclBlb3BsZQAAAAAhAQQYT3B0aW9uBARUASUBAQgQTm9uZQAAABBTb21lBAAlAQAAAQAAJQEMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNkTG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbgAACAEwdHJhbnNhY3Rpb25zOAEMdTMyAAEUYnl0ZXMoAQx1NjQAACkBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZZRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JMaXRlUGVvcGxlAAAAAC0BFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXM8cGVvcGxlX2FpcmRyb3BzKFBhcmFtZXRlcnMAAQQsUHJpemVTb3VyY2UIADEBASxQcml6ZVNvdXJjZQAANQEBfE9wdGlvbjxzcF9ydW50aW1lOjpBY2NvdW50SWQzMj4AAAAAMQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxwZW9wbGVfYWlyZHJvcHMsUHJpemVTb3VyY2UAAAAANQEEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAAA5ARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPGxpdGVfcGVyc29uaG9vZChQYXJhbWV0ZXJzAAEEPFJlZ2lzdHJhdGlvbkZlZQgAPQEBPFJlZ2lzdHJhdGlvbkZlZQAAQQEBPE9wdGlvbjxCYWxhbmNlPgAAAAA9ARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPGxpdGVfcGVyc29uaG9vZDxSZWdpc3RyYXRpb25GZWUAAAAAQQEEGE9wdGlvbgQEVAFFAQEIEE5vbmUAAAAQU29tZQQARQEAAAEAAEUBAAAFBwBJAQxsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4GHBhbGxldBBDYWxsBARUAAEESHNldF9uZXR3b3JrX3N1ZmZpeAQBOG5ldHdvcmtfc3VmZml4TQEBbFByb2R1Y3RDb250ZXh0TmV0d29ya1N1ZmZpeAAABPxTZXQgdGhlIG5ldHdvcmsgc3VmZml4IHVzZWQgYnkgYWxsIHByb2R1Y3QtY29udGV4dCBkZXJpdmF0aW9ucy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuTQEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABRAQw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVVAQEoVDo6QmFsYW5jZQAAHNRUcmFuc2ZlciBzb21lIGxpcXVpZCBmcmVlIGJhbGFuY2UgdG8gYW5vdGhlciBhY2NvdW50LgA1AWB0cmFuc2Zlcl9hbGxvd19kZWF0aGAgd2lsbCBzZXQgdGhlIGBGcmVlQmFsYW5jZWAgb2YgdGhlIHNlbmRlciBhbmQgcmVjZWl2ZXIuEQFJZiB0aGUgc2VuZGVyJ3MgYWNjb3VudCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdLBvZiB0aGUgdHJhbnNmZXIsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB0cmFuc2FjdG9yLjhmb3JjZV90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVVAQEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVVAQEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZVkBARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UABQywVW5yZXNlcnZlIHNvbWUgYmFsYW5jZSBmcm9tIGEgdXNlciBieSBmb3JjZS4AbENhbiBvbmx5IGJlIGNhbGxlZCBieSBST09ULkB1cGdyYWRlX2FjY291bnRzBAEMd2hvXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAYgcFVwZ3JhZGUgYSBzcGVjaWZpZWQgYWNjb3VudC4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVwZ3JhZGVkLgBVAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIGF0IGxlYXN0IGFsbCBidXQgMTAlIG9mIHRoZSBhY2NvdW50cyBuZWVkZWQgdG9BAWJlIHVwZ3JhZGVkLiAoV2UgbGV0IHNvbWUgbm90IGhhdmUgdG8gYmUgdXBncmFkZWQganVzdCBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGhlWHBvc3NpYmlsaXR5IG9mIGNodXJuKS5EZm9yY2Vfc2V0X2JhbGFuY2UIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVlVQEBKFQ6OkJhbGFuY2UACAysU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50LgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC5sZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlCAEkZGlyZWN0aW9uYQEBTEFkanVzdG1lbnREaXJlY3Rpb24AARRkZWx0YVUBAShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZVUBAShUOjpCYWxhbmNlAAEoa2VlcF9hbGl2ZVkBARBib29sAAoc/EJ1cm4gdGhlIHNwZWNpZmllZCBsaXF1aWQgZnJlZSBiYWxhbmNlIGZyb20gdGhlIG9yaWdpbiBhY2NvdW50LgAlAUlmIHRoZSBvcmlnaW4ncyBhY2NvdW50IGVuZHMgdXAgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHQJAW9mIHRoZSBidXJuIGFuZCBga2VlcF9hbGl2ZWAgaXMgZmFsc2UsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgBRAVVubGlrZSBzZW5kaW5nIGZ1bmRzIHRvIGEgX2J1cm5fIGFkZHJlc3MsIHdoaWNoIG1lcmVseSBtYWtlcyB0aGUgZnVuZHMgaW5hY2Nlc3NpYmxlLCEBdGhpcyBgYnVybmAgb3BlcmF0aW9uIHdpbGwgcmVkdWNlIHRvdGFsIGlzc3VhbmNlIGJ5IHRoZSBhbW91bnQgX2J1cm5lZF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlUBAAAGRQEAWQEAAAUAAF0BAAACBABhAQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAZQEMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0EENhbGwEBFQAAQQsY2xlYW5fdXNhZ2UEARhlbnRpdHlpAQFMVDo6UmVzdHJpY3RlZEVudGl0eQABCEkBQWxsb3cgdG8gY2xlYW4gdXNhZ2UgYXNzb2NpYXRlZCB3aXRoIGFuIGVudGl0eSB3aGVuIGl0IGlzIHplcm8gb3Igd2hlbiB0aGVyZSBpcyBub5Bsb25nZXIgYW55IGFsbG93YW5jZSBmb3IgdGhlIG9yaWdpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuaQEIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWVAUmVzdHJpY3RlZEVudGl0eQABHDRQZXJzb25hbEFsaWFzBAAIARRBbGlhcwAAAEBQZXJzb25hbElkZW50aXR5BAAoAQx1NjQAAQBEUmVmZXJyZWRDYW5kaWRhdGUEAAQBJEFjY291bnRJZAACAEhBY2NvdW50UGFydGljaXBhbnQEAAQBJEFjY291bnRJZAADAEBJbnZpdGVkQ2FuZGlkYXRlBAAEASRBY2NvdW50SWQABAAoTGl0ZVBlcnNvbgQABAEkQWNjb3VudElkAAUAJExpdGVBbGlhcwQACAEUQWxpYXMABgAAbQEMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYgYY3JlYXRlDAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZUUBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudFkBARBib29sAAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAIw3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWa4YW4gYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLkBkZXN0cm95X2FjY291bnRzBAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuWQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB0siENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLmEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQsIHRoZSBhc3NldCBzdGF0dXMgbXVzdCggIGJlIGxpdmUujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlWQEBEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLjBzZXRfcmVzZXJ2ZXMIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXOtAQHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnEBECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3J1AQEkSnVuY3Rpb25zAAB1ARAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAB5AQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBACRAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBACVAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BACZAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BACdAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAChAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAClAQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BACpAQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAHkBAAADAQAAAH0BAH0BECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmuBAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya4EBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmuBAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkiQEBGEJvZHlJZAABEHBhcnSNAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBACFAQEkTmV0d29ya0lkAAkAAIEBBBhPcHRpb24EBFQBhQEBCBBOb25lAAAAEFNvbWUEAIUBAAABAACFARAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAiQEQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBABwARxbdTg7IDRdAAEAFEluZGV4BABgAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAAI0BEAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAACRAQAAAwIAAAB9AQCVAQAAAwMAAAB9AQCZAQAAAwQAAAB9AQCdAQAAAwUAAAB9AQChAQAAAwYAAAB9AQClAQAAAwcAAAB9AQCpAQAAAwgAAAB9AQCtAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbEBBFMAAAQAtQEBGFZlYzxUPgAAsQEMNGFzc2V0c19jb21tb25gbG9jYWxfYW5kX2ZvcmVpZ25fYXNzZXRzXEZvcmVpZ25Bc3NldFJlc2VydmVEYXRhAAAIARxyZXNlcnZlcQEBIExvY2F0aW9uAAEwdGVsZXBvcnRhYmxlWQEBEGJvb2wAALUBAAACsQEAuQEMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmRxAQFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlvQEBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZHEBAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGW9AQEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZHEBAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvQEMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAEUBARB1MTI4AADBAQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0EENhbGwEBFQAARgsY3JlYXRlX3Bvb2wIARhhc3NldDFxAQFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDJxAQFEQm94PFQ6OkFzc2V0S2luZD4AABAZAUNyZWF0ZXMgYW4gZW1wdHkgbGlxdWlkaXR5IHBvb2wgYW5kIGFuIGFzc29jaWF0ZWQgbmV3IGBscF90b2tlbmAgYXNzZXQBASh0aGUgaWQgb2Ygd2hpY2ggaXMgcmV0dXJuZWQgaW4gdGhlIGBFdmVudDo6UG9vbENyZWF0ZWRgIGV2ZW50KS4AEQFPbmNlIGEgcG9vbCBpcyBjcmVhdGVkLCBzb21lb25lIG1heSBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIHRvIGl0LjRhZGRfbGlxdWlkaXR5HAEYYXNzZXQxcQEBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQycQEBREJveDxUOjpBc3NldEtpbmQ+AAE8YW1vdW50MV9kZXNpcmVkRQEBKFQ6OkJhbGFuY2UAATxhbW91bnQyX2Rlc2lyZWRFAQEoVDo6QmFsYW5jZQABLGFtb3VudDFfbWluRQEBKFQ6OkJhbGFuY2UAASxhbW91bnQyX21pbkUBAShUOjpCYWxhbmNlAAEcbWludF90bwQBMFQ6OkFjY291bnRJZAABOORQcm92aWRlIGxpcXVpZGl0eSBpbnRvIHRoZSBwb29sIG9mIGBhc3NldDFgIGFuZCBgYXNzZXQyYC4NAU5PVEU6IGFuIG9wdGltYWwgYW1vdW50IG9mIGFzc2V0MSBhbmQgYXNzZXQyIHdpbGwgYmUgY2FsY3VsYXRlZCBhbmQhAW1pZ2h0IGJlIGRpZmZlcmVudCB0aGFuIHRoZSBwcm92aWRlZCBgYW1vdW50MV9kZXNpcmVkYC9gYW1vdW50Ml9kZXNpcmVkYPx0aHVzIHlvdSBzaG91bGQgcHJvdmlkZSB0aGUgbWluIGFtb3VudCB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS7IUGFyYW1zIGBhbW91bnQxX21pbmAvYGFtb3VudDJfbWluYCByZXByZXNlbnQgdGhhdC5JAWBtaW50X3RvYCB3aWxsIGJlIHNlbnQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCByZXByZXNlbnQgdGhpcyBzaGFyZSBvZiB0aGUgcG9vbC4AXQFOT1RFOiB3aGVuIGVuY291bnRlcmluZyBhbiBpbmNvcnJlY3QgZXhjaGFuZ2UgcmF0ZSBhbmQgbm9uLXdpdGhkcmF3YWJsZSBwb29sIGxpcXVpZGl0eSzcYmF0Y2ggYW4gYXRvbWljIGNhbGwgd2l0aCBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIGFuZFEBW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBvciBbYFBhbGxldDo6c3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdJQFjYWxscyB0byByZW5kZXIgdGhlIGxpcXVpZGl0eSB3aXRoZHJhd2FibGUgYW5kIHJlY3RpZnkgdGhlIGV4Y2hhbmdlIHJhdGUuANhPbmNlIGxpcXVpZGl0eSBpcyBhZGRlZCwgc29tZW9uZSBtYXkgc3VjY2Vzc2Z1bGx5IGNhbGykW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXS5AcmVtb3ZlX2xpcXVpZGl0eRgBGGFzc2V0MXEBAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MnEBAURCb3g8VDo6QXNzZXRLaW5kPgABNGxwX3Rva2VuX2J1cm5FAQEoVDo6QmFsYW5jZQABTGFtb3VudDFfbWluX3JlY2VpdmVFAQEoVDo6QmFsYW5jZQABTGFtb3VudDJfbWluX3JlY2VpdmVFAQEoVDo6QmFsYW5jZQABLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkAAIMTQFBbGxvd3MgeW91IHRvIHJlbW92ZSBsaXF1aWRpdHkgYnkgcHJvdmlkaW5nIHRoZSBgbHBfdG9rZW5fYnVybmAgdG9rZW5zIHRoYXQgd2lsbCBiZVEBYnVybmVkIGluIHRoZSBwcm9jZXNzLiBXaXRoIHRoZSB1c2FnZSBvZiBgYW1vdW50MV9taW5fcmVjZWl2ZWAvYGFtb3VudDJfbWluX3JlY2VpdmVgNQFpdCdzIHBvc3NpYmxlIHRvIGNvbnRyb2wgdGhlIG1pbiBhbW91bnQgb2YgcmV0dXJuZWQgdG9rZW5zIHlvdSdyZSBoYXBweSB3aXRoLnBzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zFAEQcGF0aMUBAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEkYW1vdW50X2luRQEBKFQ6OkJhbGFuY2UAAThhbW91bnRfb3V0X21pbkUBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmVZAQEQYm9vbAADGMBTd2FwIHRoZSBleGFjdCBhbW91bnQgb2YgYGFzc2V0MWAgaW50byBgYXNzZXQyYC4tAWBhbW91bnRfb3V0X21pbmAgcGFyYW0gYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBtaW4gYW1vdW50IG9mIHRoZSBgYXNzZXQyYGB5b3UncmUgaGFwcHkgdG8gcmVjZWl2ZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS5wc3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxQBEHBhdGjFAQFYVmVjPEJveDxUOjpBc3NldEtpbmQ+PgABKGFtb3VudF9vdXRFAQEoVDo6QmFsYW5jZQABNGFtb3VudF9pbl9tYXhFAQEoVDo6QmFsYW5jZQABHHNlbmRfdG8EATBUOjpBY2NvdW50SWQAAShrZWVwX2FsaXZlWQEBEGJvb2wABBgBAVN3YXAgYW55IGFtb3VudCBvZiBgYXNzZXQxYCB0byBnZXQgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQyYC4ZAWBhbW91bnRfaW5fbWF4YCBwYXJhbSBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgbWF4IGFtb3VudCBvZiB0aGUgYGFzc2V0MWBgeW91J3JlIGhhcHB5IHRvIHByb3ZpZGUuAFkBW2BBc3NldENvbnZlcnNpb25BcGk6OnF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0gcnVudGltZSBjYWxsIGNhbiBiZSBjYWxsZWQwZm9yIGEgcXVvdGUuFHRvdWNoCAEYYXNzZXQxcQEBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQycQEBREJveDxUOjpBc3NldEtpbmQ+AAUsTQFUb3VjaCBhbiBleGlzdGluZyBwb29sIHRvIGZ1bGZpbGwgcHJlcmVxdWlzaXRlcyBiZWZvcmUgcHJvdmlkaW5nIGxpcXVpZGl0eSwgc3VjaCBhc0kBZW5zdXJpbmcgdGhhdCB0aGUgcG9vbCdzIGFjY291bnRzIGFyZSBpbiBwbGFjZS4gSXQgaXMgdHlwaWNhbGx5IHVzZWZ1bCB3aGVuIGEgcG9vbFUBY3JlYXRvciByZW1vdmVzIHRoZSBwb29sJ3MgYWNjb3VudHMgYW5kIGRvZXMgbm90IHByb3ZpZGUgYSBsaXF1aWRpdHkuIFRoaXMgYWN0aW9uIG1heVUBaW52b2x2ZSBob2xkaW5nIGFzc2V0cyBmcm9tIHRoZSBjYWxsZXIgYXMgYSBkZXBvc2l0IGZvciBjcmVhdGluZyB0aGUgcG9vbCdzIGFjY291bnRzLgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AKQEtIGBhc3NldDFgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLikBLSBgYXNzZXQyYDogVGhlIGFzc2V0IElEIG9mIGFuIGV4aXN0aW5nIHBvb2wgd2l0aCBhIHBhaXIgKGFzc2V0MSwgYXNzZXQyKS4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBHBQYWxsZXQncyBjYWxsYWJsZSBmdW5jdGlvbnMuxQEAAAJxAQDJAQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAATOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudFkBARBib29sAAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlVQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASRpc19mcm96ZW5ZAQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVyblkBARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVZAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzzQEByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARAEUwAABADRAQEYVmVjPFQ+AADRAQAAAhAA1QEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXddAQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25kRQEBMEJhbGFuY2VPZjxUPgACHHhTZXQgdGhlIGNhbmRpZGFjeSBib25kIGFtb3VudC4AUQFJZiB0aGUgY2FuZGlkYWN5IGJvbmQgaXMgaW5jcmVhc2VkIGJ5IHRoaXMgY2FsbCwgYWxsIGN1cnJlbnQgY2FuZGlkYXRlcyB3aGljaCBoYXZlIGFNAWRlcG9zaXQgbG93ZXIgdGhhbiB0aGUgbmV3IGJvbmQgd2lsbCBiZSBraWNrZWQgZnJvbSB0aGUgbGlzdCBhbmQgZ2V0IHRoZWlyIGRlcG9zaXRzFGJhY2suANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuVHJlZ2lzdGVyX2FzX2NhbmRpZGF0ZQADEEEBUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBUaGUgYWNjb3VudCBtdXN0IChhKSBhbHJlYWR5IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzIGFuZCAoYikgYmUgYWJsZSB0byByZXNlcnZlIHRoZSBgQ2FuZGlkYWN5Qm9uZGAuANxUaGlzIGNhbGwgaXMgbm90IGF2YWlsYWJsZSB0byBgSW52dWxuZXJhYmxlYCBjb2xsYXRvcnMuMGxlYXZlX2ludGVudAAEFFUBRGVyZWdpc3RlciBgb3JpZ2luYCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gTm90ZSB0aGF0IHRoZSBjb2xsYXRvciBjYW4gb25seSBsZWF2ZSBvbg0Bc2Vzc2lvbiBjaGFuZ2UuIFRoZSBgQ2FuZGlkYWN5Qm9uZGAgd2lsbCBiZSB1bnJlc2VydmVkIGltbWVkaWF0ZWx5LgAZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHRvdGFsIG51bWJlciBvZiBjYW5kaWRhdGVzIHdvdWxkIGRyb3AgYmVsb3dcYE1pbkVsaWdpYmxlQ29sbGF0b3JzYC5AYWRkX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAFEEUBQWRkIGEgbmV3IGFjY291bnQgYHdob2AgdG8gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYHdob2AgbXVzdCBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cy4gSWYgYHdob2AgaXMgYSBjYW5kaWRhdGUsIHRoZXkgd2lsbCBiZSByZW1vdmVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkxyZW1vdmVfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAYQYQFSZW1vdmUgYW4gYWNjb3VudCBgd2hvYCBmcm9tIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGBJbnZ1bG5lcmFibGVzYCBtdXN0KGJlIHNvcnRlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC4sdXBkYXRlX2JvbmQEASxuZXdfZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtkBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXPdAQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu3QEIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmHhAQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAA4QEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAA5QEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu6QEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3TtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2U5AgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3TtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ57QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHN9AwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnntAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2WBAwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodHkCARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbnEBATRCb3g8TG9jYXRpb24+AAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ABBhJAUV4dG9sbCB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBjYW4gYmUgY29tbXVuaWNhdGVkIHdpdGggdGhyb3VnaCBhIHBhcnRpY3VsYXI8dmVyc2lvbiBvZiBYQ00uANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u2C0gYGxvY2F0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRoYXQgaXMgYmVpbmcgZGVzY3JpYmVkLhEBLSBgeGNtX3ZlcnNpb25gOiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgWENNIHRoYXQgYGxvY2F0aW9uYCBzdXBwb3J0cy5kZm9yY2VfZGVmYXVsdF94Y21fdmVyc2lvbgQBRG1heWJlX3hjbV92ZXJzaW9u5AFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbu0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27tAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnntAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnntAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZFkBARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN07QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyee0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzfQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ57QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADBhVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzfQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGWtAwFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZLEDAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGWtAwFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3Q5AgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlBhZGRfYXV0aG9yaXplZF9hbGlhcwgBHGFsaWFzZXLtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHGV4cGlyZXO1AwEsT3B0aW9uPHU2ND4ADixdAUF1dGhvcml6ZSBhbm90aGVyIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLikBVGhlIGBhbGlhc2VyYCBpcyBvbmx5IGF1dGhvcml6ZWQgdW50aWwgdGhlIHByb3ZpZGVkIGBleHBpcnlgIGJsb2NrIG51bWJlci5JAVRoZSBjYWxsIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGFsaWFzIGluIG9yZGVyIHRvIHVwZGF0ZSBpdHNYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLgBRAVVzdWFsbHkgdXNlZnVsIHRvIGFsbG93IHlvdXIgbG9jYWwgYWNjb3VudCB0byBiZSBhbGlhc2VkIGludG8gZnJvbSBhIHJlbW90ZSBsb2NhdGlvbvRhbHNvIHVuZGVyIHlvdXIgY29udHJvbCAobGlrZSB5b3VyIGFjY291bnQgb24gYW5vdGhlciBjaGFpbikuAFEBV0FSTklORzogbWFrZSBzdXJlIHRoZSBjYWxsZXIgYG9yaWdpbmAgKHlvdSkgdHJ1c3RzIHRoZSBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWN0IGluWQF0aGVpci95b3VyIG5hbWUuIE9uY2UgYXV0aG9yaXplZCB1c2luZyB0aGlzIGNhbGwsIHRoZSBgYWxpYXNlcmAgY2FuIGZyZWVseSBpbXBlcnNvbmF0ZdRgb3JpZ2luYCBpbiBYQ00gcHJvZ3JhbXMgZXhlY3V0ZWQgb24gdGhlIGxvY2FsIGNoYWluLlxyZW1vdmVfYXV0aG9yaXplZF9hbGlhcwQBHGFsaWFzZXLtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAPCF0BUmVtb3ZlIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYCBmcm9tIHRoZSBsaXN0IG9mIGxvY2F0aW9ucyB0aGF0IGNhbiBhbGlhcyBpbnRvkHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLnRyZW1vdmVfYWxsX2F1dGhvcml6ZWRfYWxpYXNlcwAQCEkBUmVtb3ZlIGFsbCBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgcyB0aGF0IGNhbiBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYERtYWtpbmcgdGhpcyBjYWxsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7tAQgMeGNtRFZlcnNpb25lZExvY2F0aW9uAAEMCFYzBADxAQFEdjM6Ok11bHRpTG9jYXRpb24AAwAIVjQEAAUCATB2NDo6TG9jYXRpb24ABAAIVjUEAHEBATB2NTo6TG9jYXRpb24ABQAA8QEQLHN0YWdpbmdfeGNtCHYzNG11bHRpbG9jYXRpb240TXVsdGlMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3L1AQEkSnVuY3Rpb25zAAD1ARAMeGNtCHYzJGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA+QEBIEp1bmN0aW9uAAEACFgyCAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgACAAhYMwwA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgADAAhYNBAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAQACFg1FAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAFAAhYNhgA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAGAAhYNxwA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAcACFg4IAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAIAAD5ARAMeGNtCHYzIGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAYAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya/0BAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3Jr/QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi0AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya/0BAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAFUBARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWSJAQEYQm9keUlkAAEQcGFydI0BASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAAECASROZXR3b3JrSWQACQAA/QEEGE9wdGlvbgQEVAEBAgEIEE5vbmUAAAAQU29tZQQAAQIAAAEAAAECEAx4Y20IdjMganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAAUCECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3IJAgEkSnVuY3Rpb25zAAAJAhAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAANAgFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAAdAgFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAAhAgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAAlAgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAApAgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAAtAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAAxAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAA1AgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAA0CAAADAQAAABECABECECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmsVAgFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29yaxUCAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmsVAgFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkiQEBGEJvZHlJZAABEHBhcnSNAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAAZAgEkTmV0d29ya0lkAAkAABUCBBhPcHRpb24EBFQBGQIBCBBOb25lAAAAEFNvbWUEABkCAAABAAAZAhAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAB0CAAADAgAAABECACECAAADAwAAABECACUCAAADBAAAABECACkCAAADBQAAABECAC0CAAADBgAAABECADECAAADBwAAABECADUCAAADCAAAABECADkCCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAPQIBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BAC1AgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEAAEDAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAAA9AgwMeGNtCHYzDFhjbQQQQ2FsbAAABABBAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAQQIAAAJFAgBFAgwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAEkCASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAEkCASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABJAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlaQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodHkCARhXZWlnaHQAARxxdWVyaWVylQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzSQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnxAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c0kCASxNdWx0aUFzc2V0cwABEGRlc3TxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSZAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3R5AgEYV2VpZ2h0AAEQY2FsbJ0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAPUBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAKECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ58QEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c6UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdPEBATRNdWx0aUxvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmWlAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRJAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvoQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc1ECAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAA9AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAA9AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c0kCASxNdWx0aUFzc2V0cwABGHRpY2tldPEBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodHkCARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQASQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABJAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBACVAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABtAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAI0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+hAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAChAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAPkBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29yawECASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbvUBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldFECAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLxAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0UQIBKE11bHRpQXNzZXQAARh0YXJnZXTxAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0UQIBKE11bHRpQXNzZXQAARRvd25lcvEBATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldFECAShNdWx0aUFzc2V0AAEYbG9ja2Vy8QEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXdZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA8QEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lulQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAABJAhAMeGNtCHYzKG11bHRpYXNzZXQsTXVsdGlBc3NldHMAAAQATQIBPFZlYzxNdWx0aUFzc2V0PgAATQIAAAJRAgBRAhAMeGNtCHYzKG11bHRpYXNzZXQoTXVsdGlBc3NldAAACAEIaWRVAgEcQXNzZXRJZAABDGZ1blkCASxGdW5naWJpbGl0eQAAVQIQDHhjbQh2MyhtdWx0aWFzc2V0HEFzc2V0SWQAAQggQ29uY3JldGUEAPEBATRNdWx0aUxvY2F0aW9uAAAAIEFic3RyYWN0BAAIASBbdTg7IDMyXQABAABZAhAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAFUBARB1MTI4AAAALE5vbkZ1bmdpYmxlBABdAgE0QXNzZXRJbnN0YW5jZQABAABdAhAMeGNtCHYzKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAFUBARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAGECARxbdTg7IDhdAAMAHEFycmF5MTYEAGUCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAABhAgAAAwgAAAAMAGUCAAADEAAAAAwAaQIMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQASQIBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBAB9AgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAI0CAThNYXliZUVycm9yQ29kZQAFAABtAgQYT3B0aW9uBARUAXECAQgQTm9uZQAAABBTb21lBABxAgAAAQAAcQIAAAQIOHUCAHUCEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQAeQIBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAAeQIMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW0AQx1NjQAAShwcm9vZl9zaXpltAEMdTY0AAB9AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYECBFMAAAQAiQIBGFZlYzxUPgAAgQIMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWWFAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZYUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAhQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACJAgAAAoECAI0CDAx4Y20IdjM4TWF5YmVFcnJvckNvZGUAAQwcU3VjY2VzcwAAABRFcnJvcgQAkQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAEAOFRydW5jYXRlZEVycm9yBACRAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAgAAkQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACVAgQYT3B0aW9uBARUAfEBAQgQTm9uZQAAABBTb21lBADxAQAAAQAAmQIMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAnQIMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAoQIMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27xAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAClAhAMeGNtCHYzKG11bHRpYXNzZXRATXVsdGlBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQASQIBLE11bHRpQXNzZXRzAAAAEFdpbGQEAKkCAThXaWxkTXVsdGlBc3NldAABAACpAhAMeGNtCHYzKG11bHRpYXNzZXQ4V2lsZE11bHRpQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWRVAgEcQXNzZXRJZAABDGZ1bq0CATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkVQIBHEFzc2V0SWQAAQxmdW6tAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAArQIQDHhjbQh2MyhtdWx0aWFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAACxAgwMeGNtCHYzLFdlaWdodExpbWl0AAEIJFVubGltaXRlZAAAABxMaW1pdGVkBAB5AgEYV2VpZ2h0AAEAALUCDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAuQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AALkCAAACvQIAvQIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAMECARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADBAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAMECARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNl2QIBIFJlc3BvbnNlAAEobWF4X3dlaWdodHkCARhXZWlnaHQAARxxdWVyaWVy7QIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c8ECARhBc3NldHMAASxiZW5lZmljaWFyeQUCASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c8ECARhBc3NldHMAARBkZXN0BQIBIExvY2F0aW9uAAEMeGNttQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZJkCAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdHkCARhXZWlnaHQAARBjYWxsnQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQACQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAPECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHP1AgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeQUCASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRz9QIBLEFzc2V0RmlsdGVyAAEQZGVzdAUCASBMb2NhdGlvbgABDHhjbbUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZl9QIBLEFzc2V0RmlsdGVyAAEQd2FudMECARhBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHP1AgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlBQIBIExvY2F0aW9uAAEMeGNttQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c/UCASxBc3NldEZpbHRlcgABEGRlc3QFAgEgTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb/ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c/UCASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzyQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAC1AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAC1AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c8ECARhBc3NldHMAARh0aWNrZXQFAgEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0eQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADBAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BADBAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQA7QIBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAG0CAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAjQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb/ECAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAPECAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAEQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrGQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uCQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldMkCARRBc3NldAABIHVubG9ja2VyBQIBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTJAgEUQXNzZXQAARh0YXJnZXQFAgEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldMkCARRBc3NldAABFG93bmVyBQIBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldMkCARRBc3NldAABGGxvY2tlcgUCASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAAFAgEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lu7QIBQE9wdGlvbjxMb2NhdGlvbj4ALwAAwQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0GEFzc2V0cwAABADFAgEoVmVjPEFzc2V0PgAAxQIAAALJAgDJAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQUQXNzZXQAAAgBCGlkzQIBHEFzc2V0SWQAAQxmdW7RAgEsRnVuZ2liaWxpdHkAAM0CECxzdGFnaW5nX3hjbQh2NBRhc3NldBxBc3NldElkAAAEAAUCASBMb2NhdGlvbgAA0QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBABVAQEQdTEyOAAAACxOb25GdW5naWJsZQQA1QIBNEFzc2V0SW5zdGFuY2UAAQAA1QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BABVAQEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BABhAgEcW3U4OyA4XQADABxBcnJheTE2BABlAgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAA2QIMLHN0YWdpbmdfeGNtCHY0IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBADBAgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADdAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAI0CAThNYXliZUVycm9yQ29kZQAFAADdAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeECBFMAAAQA6QIBGFZlYzxUPgAA4QIMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZeUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1l5QIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAADlAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAOkCAAAC4QIA7QIEGE9wdGlvbgQEVAEFAgEIEE5vbmUAAAAQU29tZQQABQIAAAEAAPECDCxzdGFnaW5nX3hjbQh2NERRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb24FAgEgTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0eQIBGFdlaWdodAAA9QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBADBAgEYQXNzZXRzAAAAEFdpbGQEAPkCASRXaWxkQXNzZXQAAQAA+QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZM0CARxBc3NldElkAAEMZnVu/QIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWTNAgEcQXNzZXRJZAABDGZ1bv0CATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAAD9AhAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAAEDDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQABQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAAUDAAACCQMACQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAA0DARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAANAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAA0DARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlJQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodHkCARhXZWlnaHQAARxxdWVyaWVyRQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cw0DARhBc3NldHMAASxiZW5lZmljaWFyeXEBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cw0DARhBc3NldHMAARBkZXN0cQEBIExvY2F0aW9uAAEMeGNtAQMBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZJkCAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodEkDAThPcHRpb248V2VpZ2h0PgABEGNhbGydAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAB1AQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQATQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c1EDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5cQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNRAwEsQXNzZXRGaWx0ZXIAARBkZXN0cQEBIExvY2F0aW9uAAEMeGNtAQMBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVRAwEsQXNzZXRGaWx0ZXIAARB3YW50DQMBGEFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c1EDASxBc3NldEZpbHRlcgABHHJlc2VydmVxAQEgTG9jYXRpb24AAQx4Y20BAwEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzUQMBLEFzc2V0RmlsdGVyAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbQEDARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvTQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzUQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMVAwEUQXNzZXQAATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAAEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAAEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzDQMBGEFzc2V0cwABGHRpY2tldHEBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAA0DARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAA0DARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABFAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAKQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACNAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvTQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQATQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAB9AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmuFAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb251AQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbQEDARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0FQMBFEFzc2V0AAEgdW5sb2NrZXJxAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldBUDARRBc3NldAABGHRhcmdldHEBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0FQMBFEFzc2V0AAEUb3duZXJxAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0FQMBFEFzc2V0AAEYbG9ja2VycQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAHEBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5FAwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQVAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9ucQEBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNdAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luWQEBEGJvb2wAARhhc3NldHNlAwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtAQMBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbm0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y20BAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHNxAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAA0DECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQAEQMBKFZlYzxBc3NldD4AABEDAAACFQMAFQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZBkDARxBc3NldElkAAEMZnVuHQMBLEZ1bmdpYmlsaXR5AAAZAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABABxAQEgTG9jYXRpb24AAB0DECxzdGFnaW5nX3hjbQh2NRRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAVQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEACEDATRBc3NldEluc3RhbmNlAAEAACEDECxzdGFnaW5nX3hjbQh2NRRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAVQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAYQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAZQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAACUDDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQADQMBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEACkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQANQMBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BACNAgE4TWF5YmVFcnJvckNvZGUABQAAKQMEGE9wdGlvbgQEVAEtAwEIEE5vbmUAAAAQU29tZQQALQMAAAEAAC0DAAAECDgxAwAxAxAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQAeQIBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAANQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE5AwRTAAAEAEEDARhWZWM8VD4AADkDDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWU9AwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZT0DAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAPQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABBAwAAAjkDAEUDBBhPcHRpb24EBFQBcQEBCBBOb25lAAAAEFNvbWUEAHEBAAABAABJAwQYT3B0aW9uBARUAXkCAQgQTm9uZQAAABBTb21lBAB5AgAAAQAATQMMLHN0YWdpbmdfeGNtCHY1RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AABRAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAA0DARhBc3NldHMAAAAQV2lsZAQAVQMBJFdpbGRBc3NldAABAABVAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkGQMBHEFzc2V0SWQAAQxmdW5ZAwE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZBkDARxBc3NldElkAAEMZnVuWQMBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAFkDECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAXQMEGE9wdGlvbgQEVAFhAwEIEE5vbmUAAAAQU29tZQQAYQMAAAEAAGEDECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BABRAwEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAFEDASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAFEDASxBc3NldEZpbHRlcgACAABlAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWEDBFMAAAQAaQMBGFZlYzxUPgAAaQMAAAJhAwBtAwQYT3B0aW9uBARUAXUBAQgQTm9uZQAAABBTb21lBAB1AQAAAQAAcQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF1AwRTAAAEAHkDARhWZWM8VD4AAHUDDCxzdGFnaW5nX3hjbQh2NRBIaW50AAEEMEFzc2V0Q2xhaW1lcgQBIGxvY2F0aW9ucQEBIExvY2F0aW9uAAAAAHkDAAACdQMAfQMIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAEkCATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEAMECASh2NDo6QXNzZXRzAAQACFY1BAANAwEodjU6OkFzc2V0cwAFAACBAwgMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAIUDAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAlQMBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BAChAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAhQMMDHhjbQh2MwxYY20EEENhbGwAAAQAiQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAIkDAAACjQMAjQMMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BABJAgEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBABJAgEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQASQIBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZWkCASBSZXNwb25zZQABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAEccXVlcmllcpUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c0kCASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ58QEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNJAgEsTXVsdGlBc3NldHMAARBkZXN08QEBNE11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kmQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0eQIBGFdlaWdodAABEGNhbGyRAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAD1AQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAChAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyefEBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlpQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50SQIBLE11bHRpQXNzZXRzAAEcbWF4aW1hbFkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZl8QEBNE11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN08QEBNE11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb6ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c6UCAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXNRAgEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdLECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAhQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAhQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNJAgEsTXVsdGlBc3NldHMAARh0aWNrZXTxAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAEkCASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQASQIBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAlQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACNAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvoQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAoQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAD5AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsBAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb271AQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRRAgEoTXVsdGlBc3NldAABIHVubG9ja2Vy8QEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldFECAShNdWx0aUFzc2V0AAEYdGFyZ2V08QEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldFECAShNdWx0aUFzc2V0AAEUb3duZXLxAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRRAgEoTXVsdGlBc3NldAABGGxvY2tlcvEBATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAPEBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdLECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbpUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAkQMMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAlQMMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABACZAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAmQMAAAKdAwCdAwwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAwQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAMECARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAwQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2XZAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0eQIBGFdlaWdodAABHHF1ZXJpZXLtAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzwQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5BQIBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzwQIBGEFzc2V0cwABEGRlc3QFAgEgTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kmQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0eQIBGFdlaWdodAABEGNhbGyRAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAAJAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQA8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c/UCASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5BQIBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHP1AgEsQXNzZXRGaWx0ZXIAARBkZXN0BQIBIExvY2F0aW9uAAEMeGNttQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmX1AgEsQXNzZXRGaWx0ZXIAARB3YW50wQIBGEFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c/UCASxBc3NldEZpbHRlcgABHHJlc2VydmUFAgEgTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRz9QIBLEFzc2V0RmlsdGVyAAEQZGVzdAUCASBMb2NhdGlvbgABDHhjbbUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZv8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRz9QIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPJAgEUQXNzZXQAATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAJUDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAJUDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzwQIBGEFzc2V0cwABGHRpY2tldAUCASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAMECARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAMECARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBADtAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACNAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZv8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQA8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAARAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsZAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24JAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbbUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0yQIBFEFzc2V0AAEgdW5sb2NrZXIFAgEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldMkCARRBc3NldAABGHRhcmdldAUCASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0yQIBFEFzc2V0AAEUb3duZXIFAgEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0yQIBFEFzc2V0AAEYbG9ja2VyBQIBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAAUCASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW7tAgFAT3B0aW9uPExvY2F0aW9uPgAvAAChAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEAKUDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAClAwAAAqkDAKkDDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAANAwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQADQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAANAwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZSUDASBSZXNwb25zZQABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAEccXVlcmllckUDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMNAwEYQXNzZXRzAAEsYmVuZWZpY2lhcnlxAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMNAwEYQXNzZXRzAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbQEDARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSZAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHRJAwE4T3B0aW9uPFdlaWdodD4AARBjYWxskQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAdQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAE0DAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNRAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeXEBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzUQMBLEFzc2V0RmlsdGVyAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbQEDARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlUQMBLEFzc2V0RmlsdGVyAAEQd2FudA0DARhBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNRAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlcQEBIExvY2F0aW9uAAEMeGNtAQMBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c1EDASxBc3NldEZpbHRlcgABEGRlc3RxAQEgTG9jYXRpb24AAQx4Y20BAwEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb00DAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c1EDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzFQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAChAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAChAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cw0DARhBc3NldHMAARh0aWNrZXRxAQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0eQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAANAwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAANAwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQARQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEACkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAjQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb00DAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAE0DAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAfQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrhQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9udQEBQEludGVyaW9yTG9jYXRpb24AAQx4Y20BAwEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldBUDARRBc3NldAABIHVubG9ja2VycQEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQVAwEUQXNzZXQAARh0YXJnZXRxAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldBUDARRBc3NldAABFG93bmVycQEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldBUDARRBc3NldAABGGxvY2tlcnEBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABxAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luRQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0FQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzXQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpblkBARBib29sAAEYYXNzZXRzZQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbQEDARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW5tAwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtoQMBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzcQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAACtAxBQc3RhZ2luZ194Y21fZXhlY3V0b3IYdHJhaXRzOGFzc2V0X3RyYW5zZmVyMFRyYW5zZmVyVHlwZQABECBUZWxlcG9ydAAAADBMb2NhbFJlc2VydmUAAQBIRGVzdGluYXRpb25SZXNlcnZlAAIANFJlbW90ZVJlc2VydmUEAO0BAURWZXJzaW9uZWRMb2NhdGlvbgADAACxAwgMeGNtQFZlcnNpb25lZEFzc2V0SWQAAQwIVjMEAFUCASx2Mzo6QXNzZXRJZAADAAhWNAQAzQIBLHY0OjpBc3NldElkAAQACFY1BAAZAwEsdjU6OkFzc2V0SWQABQAAtQMEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAAC5AwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLr0DDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABCCRyZWFwX3BhZ2UIAThtZXNzYWdlX29yaWdpbsEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAAEPQFSZW1vdmUgYSBwYWdlIHdoaWNoIGhhcyBubyBtb3JlIG1lc3NhZ2VzIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgb3IgaXMgc3RhbGUuSGV4ZWN1dGVfb3ZlcndlaWdodBABOG1lc3NhZ2Vfb3JpZ2luwQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABEHBhZ2U4ASRQYWdlSW5kZXgAARRpbmRleDgBHFQ6OlNpemUAATB3ZWlnaHRfbGltaXR5AgEYV2VpZ2h0AAE0eEV4ZWN1dGUgYW4gb3ZlcndlaWdodCBtZXNzYWdlLgBNAVRlbXBvcmFyeSBwcm9jZXNzaW5nIGVycm9ycyB3aWxsIGJlIHByb3BhZ2F0ZWQgd2hlcmVhcyBwZXJtYW5lbnQgZXJyb3JzIGFyZSB0cmVhdGVkVGFzIHN1Y2Nlc3MgY29uZGl0aW9uLgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC41AS0gYG1lc3NhZ2Vfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGFycml2ZWQuPQEtIGBwYWdlYDogVGhlIHBhZ2UgaW4gdGhlIHF1ZXVlIGluIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGlzIHNpdHRpbmcuCQEtIGBpbmRleGA6IFRoZSBpbmRleCBpbnRvIHRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZC5ZAS0gYHdlaWdodF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgYWxsb3dlZCB0byBiZSBjb25zdW1lZCBpbiB0aGUgZXhlY3V0aW9uRCAgb2YgdGhlIG1lc3NhZ2UuAPRCZW5jaG1hcmsgY29tcGxleGl0eSBjb25zaWRlcmF0aW9uczogTyhpbmRleCArIHdlaWdodF9saW1pdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsEDCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZVhBZ2dyZWdhdGVNZXNzYWdlT3JpZ2luAAEMEEhlcmUAAAAYUGFyZW50AAEAHFNpYmxpbmcEAJwBGFBhcmFJZAACAADFAww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc8kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AABIfFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4AVQFUaGlzIHdpbGwgcmV0dXJuIGBPa2AgaW4gYWxsIGNpcmN1bXN0YW5jZXMuIFRvIGRldGVybWluZSB0aGUgc3VjY2VzcyBvZiB0aGUgYmF0Y2gsIGFuMQFldmVudCBpcyBkZXBvc2l0ZWQuIElmIGEgY2FsbCBmYWlsZWQgYW5kIHRoZSBiYXRjaCB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gdGhlVQFgQmF0Y2hJbnRlcnJ1cHRlZGAgZXZlbnQgaXMgZGVwb3NpdGVkLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjYWxscyBtYWRlTQFhbmQgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgY2FsbC4gSWYgYWxsIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgYEJhdGNoQ29tcGxldGVkYExldmVudCBpcyBkZXBvc2l0ZWQuNGFzX2Rlcml2YXRpdmUIARRpbmRleM0DAQx1MTYAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABNNxTZW5kIGEgY2FsbCB0aHJvdWdoIGFuIGluZGV4ZWQgcHNldWRvbnltIG9mIHRoZSBzZW5kZXIuAFUBRmlsdGVyIGZyb20gb3JpZ2luIGFyZSBwYXNzZWQgYWxvbmcuIFRoZSBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB3aXRoIGFuIG9yaWdpbiB3aGljaLx1c2UgdGhlIHNhbWUgZmlsdGVyIGFzIHRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsLgBFAU5PVEU6IElmIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFueSBhY2NvdW50LWJhc2VkIGZpbHRlcmluZyBpcyBub3QgaG9ub3JlZCAoaS5lLmEBYmVjYXVzZSB5b3UgZXhwZWN0IGBwcm94eWAgdG8gaGF2ZSBiZWVuIHVzZWQgcHJpb3IgaW4gdGhlIGNhbGwgc3RhY2sgYW5kIHlvdSBkbyBub3Qgd2FudFEBdGhlIGNhbGwgcmVzdHJpY3Rpb25zIHRvIGFwcGx5IHRvIGFueSBzdWItYWNjb3VudHMpLCB0aGVuIHVzZSBgYXNfbXVsdGlfdGhyZXNob2xkXzFgfGluIHRoZSBNdWx0aXNpZyBwYWxsZXQgaW5zdGVhZC4A9E5PVEU6IFByaW9yIHRvIHZlcnNpb24gKjEyLCB0aGlzIHdhcyBjYWxsZWQgYGFzX2xpbWl0ZWRfc3ViYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiRiYXRjaF9hbGwEARRjYWxsc8kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7RAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxjIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLixmb3JjZV9iYXRjaAQBFGNhbGxzyQMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABDR8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLtRVbmxpa2UgYGJhdGNoYCwgaXQgYWxsb3dzIGVycm9ycyBhbmQgd29uJ3QgaW50ZXJydXB0LgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBNAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sd2l0aF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodHkCARhXZWlnaHQABRjERGlzcGF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBzcGVjaWZpZWQgd2VpZ2h0LgAtAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbhSb290IG9yaWdpbiB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uHGlmX2Vsc2UIARBtYWluIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABIGZhbGxiYWNrIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAGXBUBRGlzcGF0Y2ggYSBmYWxsYmFjayBjYWxsIGluIHRoZSBldmVudCB0aGUgbWFpbiBjYWxsIGZhaWxzIHRvIGV4ZWN1dGUusE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAORUaGlzIGZ1bmN0aW9uIGZpcnN0IGF0dGVtcHRzIHRvIGRpc3BhdGNoIHRoZSBgbWFpbmAgY2FsbC7USWYgdGhlIGBtYWluYCBjYWxsIGZhaWxzLCB0aGUgYGZhbGxiYWNrYCBpcyBhdHRlbXRlZC4VAWlmIHRoZSBmYWxsYmFjayBpcyBzdWNjZXNzZnVsbHkgZGlzcGF0Y2hlZCwgdGhlIHdlaWdodHMgb2YgYm90aCBjYWxscyUBYXJlIGFjY3VtdWxhdGVkIGFuZCBhbiBldmVudCBjb250YWluaW5nIHRoZSBtYWluIGNhbGwgZXJyb3IgaXMgZGVwb3NpdGVkLgDcSW4gdGhlIGV2ZW50IG9mIGEgZmFsbGJhY2sgZmFpbHVyZSB0aGUgd2hvbGUgY2FsbCBmYWlsc2h3aXRoIHRoZSB3ZWlnaHRzIHJldHVybmVkLgBBAS0gYG1haW5gOiBUaGUgbWFpbiBjYWxsIHRvIGJlIGRpc3BhdGNoZWQuIFRoaXMgaXMgdGhlIHByaW1hcnkgYWN0aW9uIHRvIGV4ZWN1dGUuPQEtIGBmYWxsYmFja2A6IFRoZSBmYWxsYmFjayBjYWxsIHRvIGJlIGRpc3BhdGNoZWQgaW4gY2FzZSB0aGUgYG1haW5gIGNhbGwgZmFpbHMuAEQjIyBEaXNwYXRjaCBMb2dpY0EBLSBJZiB0aGUgb3JpZ2luIGlzIGByb290YCwgYm90aCB0aGUgbWFpbiBhbmQgZmFsbGJhY2sgY2FsbHMgYXJlIGV4ZWN1dGVkIHdpdGhvdXR4ICBhcHBseWluZyBhbnkgb3JpZ2luIGZpbHRlcnMuSQEtIElmIHRoZSBvcmlnaW4gaXMgbm90IGByb290YCwgdGhlIG9yaWdpbiBmaWx0ZXIgaXMgYXBwbGllZCB0byBib3RoIHRoZSBgbWFpbmAgYW5kTCAgYGZhbGxiYWNrYCBjYWxscy4ALCMjIFVzZSBDYXNlWQEtIFNvbWUgdXNlIGNhc2VzIG1pZ2h0IGludm9sdmUgc3VibWl0dGluZyBhIGBiYXRjaGAgdHlwZSBjYWxsIGluIGVpdGhlciBtYWluLCBmYWxsYmFjayggIG9yIGJvdGguUGRpc3BhdGNoX2FzX2ZhbGxpYmxlCAEkYXNfb3JpZ2lu0QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLskDAAACIADNAwAABQQA0QMIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUwT3JpZ2luQ2FsbGVyAAEwGHN5c3RlbQQA1QMBdGZyYW1lX3N5c3RlbTo6T3JpZ2luPFJ1bnRpbWU+AAAALFBvbGthZG90WGNtBADZAwFIcGFsbGV0X3hjbTo6T3JpZ2luAB8AKEN1bXVsdXNYY20EAN0DAWhjdW11bHVzX3BhbGxldF94Y206Ok9yaWdpbgAgABhQZW9wbGUEAOEDAWxpbmRpdl9wYWxsZXRfcGVvcGxlOjpPcmlnaW4AMwAoUHJvb2ZPZkluawQA7QMBqGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6Ok9yaWdpbjxSdW50aW1lPgA1ABBHYW1lBADxAwGIaW5kaXZfcGFsbGV0X2dhbWU6Ok9yaWdpbjxSdW50aW1lPgA3ABRTY29yZQQA9QMBjGluZGl2X3BhbGxldF9zY29yZTo6T3JpZ2luPFJ1bnRpbWU+ADgAKFBlb3BsZUxpdGUEAPkDAaRpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGU6Ok9yaWdpbjxSdW50aW1lPgA+ACRSZXNvdXJjZXMEAP0DAXhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzOjpPcmlnaW4APwAcTWVtYmVycwQABQQBlGluZGl2X3BhbGxldF9tZW1iZXJzOjpPcmlnaW48UnVudGltZT4AQwAcQ29pbmFnZQQADQQBlGluZGl2X3BhbGxldF9jb2luYWdlOjpPcmlnaW48UnVudGltZT4ARAAYSG9ub3VyBAApBAFsaW5kaXZfcGFsbGV0X2hvbm91cjo6T3JpZ2luAEcAANUDDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoJFJhd09yaWdpbgQkQWNjb3VudElkAQQBEBBSb290AAAAGFNpZ25lZAQABAEkQWNjb3VudElkAAEAEE5vbmUAAgAoQXV0aG9yaXplZAADAADZAwwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQAcQEBIExvY2F0aW9uAAAAIFJlc3BvbnNlBABxAQEgTG9jYXRpb24AAQAA3QMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIFFJlbGF5AAAAQFNpYmxpbmdQYXJhY2hhaW4EAJwBGFBhcmFJZAABAADhAwxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQYT3JpZ2luAAEIQFBlcnNvbmFsSWRlbnRpdHkEACgBKFBlcnNvbmFsSWQAAAA0UGVyc29uYWxBbGlhcwQA5QMBWFJldmlzZWRDb250ZXh0dWFsQWxpYXMAAQAA5QMQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHlYUmV2aXNlZENvbnRleHR1YWxBbGlhcwAADAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEQcmluZzgBJFJpbmdJbmRleAABCGNh6QMBPENvbnRleHR1YWxBbGlhcwAA6QMQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHk8Q29udGV4dHVhbEFsaWFzAAAIARRhbGlhcwgBFEFsaWFzAAEcY29udGV4dAgBHENvbnRleHQAAO0DDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhPcmlnaW4EBFQAAQxYQXV0aG9yaXplZEFwcGx5V2l0aFNpZwQABAEwVDo6QWNjb3VudElkAAAARFJlZmVycmVkQ2FuZGlkYXRlBAAEATBUOjpBY2NvdW50SWQAAQBASW52aXRlZENhbmRpZGF0ZQQABAEwVDo6QWNjb3VudElkAAIAAPEDDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQYT3JpZ2luBARUAAEEHEludml0ZWQEAAQBMFQ6OkFjY291bnRJZAAAAAD1AwxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldBhPcmlnaW4EBFQAAQRIQWNjb3VudFBhcnRpY2lwYW50BAAEATBUOjpBY2NvdW50SWQAAAAA+QMMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQYT3JpZ2luBARUAAEIKExpdGVQZXJzb24EAAQBMFQ6OkFjY291bnRJZAAAACRMaXRlQWxpYXMEAOUDAVhSZXZpc2VkQ29udGV4dHVhbEFsaWFzAAEAAP0DDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBhPcmlnaW4AAQxETm90aWZpY2F0aW9uQWxpYXMEAAgBFEFsaWFzAAAAOFN0bXRTdG9yZUFsaWFzBAAIARRBbGlhcwABAFBMb25nVGVybVN0b3JhZ2VDbGFpbQgACAEUQWxpYXMAAAEEAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgACAAABBAxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1BNZW1iZXJzaGlwQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoTGl0ZVBlb3BsZQABAAAFBAxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0GE9yaWdpbgQEVAEJBAEILE1lbWJlckFsaWFzCAAIAShJZGVudGlmaWVyAADlAwFYUmV2aXNlZENvbnRleHR1YWxBbGlhcwAAACxTZWxmSW5jbHVkZQQACAEsTWVtYmVyT2Y8VD4AAQAACQQIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUcUnVudGltZQAAAAANBAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0GE9yaWdpbgQEVAEJBAEMEENvaW4IARxjb2luX2lkBAEwVDo6QWNjb3VudElkAAEQY29pbhEEARBDb2luAAAALFVubG9hZFRva2VuDAEwYWxpYXNfcHJvb2ZzGQQBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAShwcm92ZW5fbXNnCAEgW3U4OyAzMl0AAQxmZWUlBAEkVW5sb2FkRmVlAAEAWEluZmFsbGlibGVVbnBhaWRTaWduZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAAgAAEQQMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBBDb2luAAAMASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AAQxhZ2XNAwEMdTE2AAAVBAAABQkAGQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEdBARTAAAEACEEARhWZWM8VD4AAB0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAIQQAAAIdBAAlBAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0JFVubG9hZEZlZQABCBxQcmVwYWlkAAAAKEZyb21PdXRwdXQIAUhmZWVfcmVjeWNsZXJfdmFsdWUVBAEwRGVub21pbmF0aW9uAAFIZmVlX3JlY3ljbGVyX2luZGV4OAEkUmluZ0luZGV4AAEAACkEDExpbmRpdl9wYWxsZXRfaG9ub3VyGHBhbGxldBhPcmlnaW4AAQQUVm90ZXIEARxhbGlhc2VzLQQBLFZvdGVBbGlhc2VzAAAAAC0EDExpbmRpdl9wYWxsZXRfaG9ub3VyFHR5cGVzLFZvdGVBbGlhc2VzAAAIATRzdWJqZWN0X2FsaWFzCAEwU3ViamVjdEFsaWFzAAEscG9pbnRfYWxpYXMIAShQb2ludEFsaWFzAAAxBAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBBDYWxsBARUAAEUUGFzX211bHRpX3RocmVzaG9sZF8xCAFEb3RoZXJfc2lnbmF0b3JpZXNdAQFEVmVjPFQ6OkFjY291bnRJZD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAMFEBSW1tZWRpYXRlbHkgZGlzcGF0Y2ggYSBtdWx0aS1zaWduYXR1cmUgY2FsbCB1c2luZyBhIHNpbmdsZSBhcHByb3ZhbCBmcm9tIHRoZSBjYWxsZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4APQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlAQFtdWx0aS1zaWduYXR1cmUsIGJ1dCBkbyBub3QgcGFydGljaXBhdGUgaW4gdGhlIGFwcHJvdmFsIHByb2Nlc3MuiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4AuFJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdC4ANCMjIENvbXBsZXhpdHkZAU8oWiArIEMpIHdoZXJlIFogaXMgdGhlIGxlbmd0aCBvZiB0aGUgY2FsbCBhbmQgQyBpdHMgZXhlY3V0aW9uIHdlaWdodC4gYXNfbXVsdGkUASR0aHJlc2hvbGTNAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNdAQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQ1BAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAShtYXhfd2VpZ2h0eQIBGFdlaWdodAABqFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA9ASoqSWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpcyBtZXQgKGluY2x1ZGluZyB0aGUgc2VuZGVyJ3MgYXBwcm92YWwpLCB0aGlzIHdpbGxFAWltbWVkaWF0ZWx5IGV4ZWN1dGUgdGhlIGNhbGwuKiogVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZXhlY3V0ZSBhIG11bHRpc2lnIGNhbGwgLcBgYXBwcm92ZV9hc19tdWx0aWAgd2lsbCBuZXZlciB0cmlnZ2VyIGV4ZWN1dGlvbi4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4ATQFOT1RFOiBGb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyAobm90IHRoZSBmaW5hbCBhcHByb3ZhbCksIHlvdSBzaG91bGQgZ2VuZXJhbGx5IHVzZUUBYGFwcHJvdmVfYXNfbXVsdGlgIGluc3RlYWQsIHNpbmNlIGl0IG9ubHkgcmVxdWlyZXMgYSBoYXNoIG9mIHRoZSBjYWxsIGFuZCBpcyBtb3JlKGVmZmljaWVudC4AWQFSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQgaWYgYHRocmVzaG9sZGAgaXMgZXhhY3RseSBgMWAuIE90aGVyd2lzZVUBb24gc3VjY2VzcywgcmVzdWx0IGlzIGBPa2AgYW5kIHRoZSByZXN1bHQgZnJvbSB0aGUgaW50ZXJpb3IgY2FsbCwgaWYgaXQgd2FzIGV4ZWN1dGVkLNxtYXkgYmUgZm91bmQgaW4gdGhlIGRlcG9zaXRlZCBgTXVsdGlzaWdFeGVjdXRlZGAgZXZlbnQuADQjIyBDb21wbGV4aXR5UC0gYE8oUyArIFogKyBDYWxsKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuIQEtIE9uZSBjYWxsIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhaKWAgd2hlcmUgYFpgIGlzIHR4LWxlbi68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQubC0gVGhlIHdlaWdodCBvZiB0aGUgYGNhbGxgLk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC5AYXBwcm92ZV9hc19tdWx0aRQBJHRocmVzaG9sZM0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc10BAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludDUEAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAKYVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuADkBKipUaGlzIGZ1bmN0aW9uIHdpbGwgTkVWRVIgZXhlY3V0ZSB0aGUgY2FsbCwgZXZlbiBpZiB0aGUgYXBwcm92YWwgdGhyZXNob2xkIGlzUQFyZWFjaGVkLioqIEl0IG9ubHkgcmVnaXN0ZXJzIGFwcHJvdmFsLiBUbyBhY3R1YWxseSBleGVjdXRlIHRoZSBjYWxsLCBgYXNfbXVsdGlgIG11c3TwYmUgY2FsbGVkIHdpdGggdGhlIGZ1bGwgY2FsbCBkYXRhIGJ5IGFueSBvZiB0aGUgc2lnbmF0b3JpZXMuAE0BVGhpcyBmdW5jdGlvbiBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGBhc19tdWx0aWAgZm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgc2luY2UgaXTQb25seSByZXF1aXJlcyB0aGUgY2FsbCBoYXNoLCBub3QgdGhlIGZ1bGwgY2FsbCBkYXRhLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAD0BTk9URTogVG8gZXhlY3V0ZSB0aGUgY2FsbCBhZnRlciBhcHByb3ZhbHMgYXJlIGdhdGhlcmVkLCBhbnkgc2lnbmF0b3J5IG11c3QgY2FsbCkBYGFzX211bHRpYCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YS4gVGhpcyBmdW5jdGlvbiBjYW5ub3QgZXhlY3V0ZSB0aGUgY2FsbC4ANCMjIENvbXBsZXhpdHkkLSBgTyhTKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50Lk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC48Y2FuY2VsX2FzX211bHRpEAEkdGhyZXNob2xkzQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkdGltZXBvaW50OQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQADVFUBQ2FuY2VsIGEgcHJlLWV4aXN0aW5nLCBvbi1nb2luZyBtdWx0aXNpZyB0cmFuc2FjdGlvbi4gQW55IGRlcG9zaXQgcmVzZXJ2ZWQgcHJldmlvdXNsecRmb3IgdGhpcyBvcGVyYXRpb24gd2lsbCBiZSB1bnJlc2VydmVkIG9uIHN1Y2Nlc3MuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5dAS0gYHRpbWVwb2ludGA6IFRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmQgdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbHh0cmFuc2FjdGlvbiBmb3IgdGhpcyBkaXNwYXRjaC7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLjAtIE9uZSBldmVudC6ELSBJL086IDEgcmVhZCBgTyhTKWAsIG9uZSByZW1vdmUucC0gU3RvcmFnZTogcmVtb3ZlcyBvbmUgaXRlbS4wcG9rZV9kZXBvc2l0DAEkdGhyZXNob2xkzQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0ABDT0UG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgYW4gZXhpc3RpbmcgbXVsdGlzaWcgb3BlcmF0aW9uLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBtdXN0IGJlIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3Igb2ZcdGhlIG11bHRpc2lnIG9wZXJhdGlvbi4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuABkBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgbmVlZGVkIGZvciB0aGlzIG11bHRpc2lnLj0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZSwgIG11bHRpc2lnLgUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdGhpcyBkZXBvc2l0IGlzIHJlc2VydmVkIGZvci4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjUEBBhPcHRpb24EBFQBOQQBCBBOb25lAAAAEFNvbWUEADkEAAABAAA5BAg8cGFsbGV0X211bHRpc2lnJFRpbWVwb2ludAQsQmxvY2tOdW1iZXIBOAAIARhoZWlnaHQ4ASxCbG9ja051bWJlcgABFGluZGV4OAEMdTMyAAA9BAwscGFsbGV0X3N1ZG8YcGFsbGV0EENhbGwEBFQAARQQc3VkbwQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAENQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodHkCARhXZWlnaHQAARQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uLQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGWwU3VkbyB1c2VyIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLhxzZXRfa2V5BAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAghdAUF1dGhlbnRpY2F0ZXMgdGhlIGN1cnJlbnQgc3VkbyBrZXkgYW5kIHNldHMgdGhlIGdpdmVuIEFjY291bnRJZCAoYG5ld2ApIGFzIHRoZSBuZXcgc3VkbxBrZXkuHHN1ZG9fYXMIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMQTQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgU2lnbmVkYCBvcmlnaW4gZnJvbUBhIGdpdmVuIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ocmVtb3ZlX2tleQAEDIRQZXJtYW5lbnRseSByZW1vdmVzIHRoZSBzdWRvIGtleS4AbCoqVGhpcyBjYW5ub3QgYmUgdW4tZG9uZS4qKgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5BBAwwcGFsbGV0X3Byb3h5GHBhbGxldBBDYWxsBARUAAEsFHByb3h5DAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZUUEAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAkTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXNlZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LiRhZGRfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZUkEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkRQFSZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIgdGhhdCBpcyBhYmxlIHRvIG1ha2UgY2FsbHMgb24gaXRzIGJlaGFsZi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoRAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byBtYWtlIGEgcHJveHku/C0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdGhpcyBwcm94eSBhY2NvdW50Lk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4wcmVtb3ZlX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGVJBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgACHKhVbnJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczolAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byByZW1vdmUgYXMgYSBwcm94eS5BAS0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIHRoZSByZW1vdmVkIHByb3h5IGFjY291bnQuOHJlbW92ZV9wcm94aWVzAAMYtFVucmVnaXN0ZXIgYWxsIHByb3h5IGFjY291bnRzIGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAF0BV0FSTklORzogVGhpcyBtYXkgYmUgY2FsbGVkIG9uIGFjY291bnRzIGNyZWF0ZWQgYnkgYGNyZWF0ZV9wdXJlYCwgaG93ZXZlciBpZiBkb25lLCB0aGVuWQF0aGUgdW5yZXNlcnZlZCBmZWVzIHdpbGwgYmUgaW5hY2Nlc3NpYmxlLiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKixjcmVhdGVfcHVyZQwBKHByb3h5X3R5cGVJBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4zQMBDHUxNgAESDkBU3Bhd24gYSBmcmVzaCBuZXcgYWNjb3VudCB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb3RoZXJ3aXNlIGluYWNjZXNzaWJsZSwgYW5k/GluaXRpYWxpemUgaXQgd2l0aCBhIHByb3h5IG9mIGBwcm94eV90eXBlYCBmb3IgYG9yaWdpbmAgc2VuZGVyLgBsUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4uAFEBLSBgcHJveHlfdHlwZWA6IFRoZSB0eXBlIG9mIHRoZSBwcm94eSB0aGF0IHRoZSBzZW5kZXIgd2lsbCBiZSByZWdpc3RlcmVkIGFzIG92ZXIgdGhlTQFuZXcgYWNjb3VudC4gVGhpcyB3aWxsIGFsbW9zdCBhbHdheXMgYmUgdGhlIG1vc3QgcGVybWlzc2l2ZSBgUHJveHlUeXBlYCBwb3NzaWJsZSB0b3hhbGxvdyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS5RAS0gYGluZGV4YDogQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCwgaW4gY2FzZSB0aGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgc2FtZV0BdHJhbnNhY3Rpb24gKGUuZy4gd2l0aCBgdXRpbGl0eTo6YmF0Y2hgKS4gVW5sZXNzIHlvdSdyZSB1c2luZyBgYmF0Y2hgIHlvdSBwcm9iYWJseSBqdXN0QHdhbnQgdG8gdXNlIGAwYC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uAFEBRmFpbHMgd2l0aCBgRHVwbGljYXRlYCBpZiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGluIHRoaXMgdHJhbnNhY3Rpb24sIGZyb20gdGhlmHNhbWUgc2VuZGVyLCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuAORGYWlscyBpZiB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGZ1bmRzIHRvIHBheSBmb3IgZGVwb3NpdC4ka2lsbF9wdXJlFAEcc3Bhd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZUkEATBUOjpQcm94eVR5cGUAARRpbmRleM0DAQx1MTYAARhoZWlnaHRgAURCbG9ja051bWJlckZvcjxUPgABJGV4dF9pbmRleGABDHUzMgAFQKBSZW1vdmVzIGEgcHJldmlvdXNseSBzcGF3bmVkIHB1cmUgcHJveHkuAEkBV0FSTklORzogKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiogQW55IGZ1bmRzIGhlbGQgaW4gaXQgd2lsbCBiZTRpbmFjY2Vzc2libGUuAFkBUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4sIGFuZCB0aGUgc2VuZGVyIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBieSBhIGNhbGwgdG+wYGNyZWF0ZV9wdXJlYCB3aXRoIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4AVQEtIGBzcGF3bmVyYDogVGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNhbGxlZCBgY3JlYXRlX3B1cmVgIHRvIGNyZWF0ZSB0aGlzIGFjY291bnQuVQEtIGBpbmRleGA6IFRoZSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLiBQcm9iYWJseSBgMGAuCQEtIGBwcm94eV90eXBlYDogVGhlIHByb3h5IHR5cGUgb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC5FAS0gYGhlaWdodGA6IFRoZSBoZWlnaHQgb2YgdGhlIGNoYWluIHdoZW4gdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLlEBLSBgZXh0X2luZGV4YDogVGhlIGV4dHJpbnNpYyBpbmRleCBpbiB3aGljaCB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuADUBRmFpbHMgd2l0aCBgTm9QZXJtaXNzaW9uYCBpbiBjYXNlIHRoZSBjYWxsZXIgaXMgbm90IGEgcHJldmlvdXNseSBjcmVhdGVkIHB1cmX4YWNjb3VudCB3aG9zZSBgY3JlYXRlX3B1cmVgIGNhbGwgaGFzIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4gYW5ub3VuY2UIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAY8BQFQdWJsaXNoIHRoZSBoYXNoIG9mIGEgcHJveHktY2FsbCB0aGF0IHdpbGwgYmUgbWFkZSBpbiB0aGUgZnV0dXJlLgBdAVRoaXMgbXVzdCBiZSBjYWxsZWQgc29tZSBudW1iZXIgb2YgYmxvY2tzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyBgcHJveHlgIGlzIGF0dGVtcHRlZCUBaWYgdGhlIGRlbGF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJveHkgcmVsYXRpb25zaGlwIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgARAU5vIG1vcmUgdGhhbiBgTWF4UGVuZGluZ2AgYW5ub3VuY2VtZW50cyBtYXkgYmUgbWFkZSBhdCBhbnkgb25lIHRpbWUuAAkBVGhpcyB3aWxsIHRha2UgYSBkZXBvc2l0IG9mIGBBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yYCBhcyB3ZWxsIGFzGQFgQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VgIGlmIHRoZXJlIGFyZSBubyBvdGhlciBwZW5kaW5nIGFubm91bmNlbWVudHMuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgcHJveHkgb2YgYHJlYWxgLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZW1vdmVfYW5ub3VuY2VtZW50CAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAHKHBSZW1vdmUgYSBnaXZlbiBhbm5vdW5jZW1lbnQuAFkBTWF5IGJlIGNhbGxlZCBieSBhIHByb3h5IGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGV5IHByZXZpb3VzbHkgYW5ub3VuY2VkIGFuZCByZXR1cm4wdGhlIGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVqZWN0X2Fubm91bmNlbWVudAgBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAgosFJlbW92ZSB0aGUgZ2l2ZW4gYW5ub3VuY2VtZW50IG9mIGEgZGVsZWdhdGUuAGEBTWF5IGJlIGNhbGxlZCBieSBhIHRhcmdldCAocHJveGllZCkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoYXQgb25lIG9mIHRoZWlyIGRlbGVnYXRlcyUBKGBkZWxlZ2F0ZWApIGhhcyBhbm5vdW5jZWQgdGhleSB3YW50IHRvIGV4ZWN1dGUuIFRoZSBkZXBvc2l0IGlzIHJldHVybmVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOvQtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRoYXQgcHJldmlvdXNseSBhbm5vdW5jZWQgdGhlIGNhbGwuvC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUuPHByb3h5X2Fubm91bmNlZBABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlRQQBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ACSxNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3JpemVkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgCoUmVtb3ZlcyBhbnkgY29ycmVzcG9uZGluZyBhbm5vdW5jZW1lbnQocykuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4wcG9rZV9kZXBvc2l0AAogSQFQb2tlIC8gQWRqdXN0IGRlcG9zaXRzIG1hZGUgZm9yIHByb3hpZXMgYW5kIGFubm91bmNlbWVudHMgYmFzZWQgb24gY3VycmVudCB2YWx1ZXMuDQFUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHBvc3NpYmx5IGxvd2VyIHRoZWlyIGxvY2tlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5FBAQYT3B0aW9uBARUAUkEAQgQTm9uZQAAABBTb21lBABJBAAAAQAASQQIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUkUHJveHlUeXBlAAEYDEFueQAAACxOb25UcmFuc2ZlcgABACxDYW5jZWxQcm94eQACACBJZGVudGl0eQADAERJZGVudGl0eUp1ZGdlbWVudAAEACBDb2xsYXRvcgAFAABNBAxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQQQ2FsbAQEVAABICx1bmRlcl9hbGlhcwQBEGNhbGwgAbRCb3g8PFQgYXMgZnJhbWVfc3lzdGVtOjpDb25maWc+OjpSdW50aW1lQ2FsbD4AABAVAURpc3BhdGNoIGEgY2FsbCB1bmRlciBhbiBhbGlhcyB1c2luZyB0aGUgYGFjY291bnQgPC0+IGFsaWFzYCBtYXBwaW5nLgBFAVRoaXMgaXMgYSBjYWxsIHZlcnNpb24gb2YgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBgQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnRgLiUBSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gaW5zdGVhZCB3aGVuIHN1aXRhYmxlLkRzZXRfYWxpYXNfYWNjb3VudAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATRjYWxsX3ZhbGlkX2F0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAUwtAVRoaXMgdHJhbnNhY3Rpb24gaXMgcmVmdW5kZWQgaWYgc3VjY2Vzc2Z1bCBhbmQgbm8gYWxpYXMgd2FzIHByZXZpb3VzbHkgc2V0LgCwVGhlIGNhbGwgaXMgdmFsaWQgZnJvbSBgY2FsbF92YWxpZF9hdGAgdW50aWy8YGNhbGxfdmFsaWRfYXQgKyBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYC4dAWBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYCBpcyBhIGNvbnN0YW50IGF2YWlsYWJsZSBpbiB0aGUgbWV0YWRhdGEuAGEBVGhpcyBjYWxsIGlzIGF1dGhvcml6ZWQgdGhyb3VnaCB0aGUgYEFzUGVyc29uYWxBbGlhc1dpdGhQcm9vZmAgdmFyaWFudCBvZiB0aGUgYEFzUGVyc29uYFkBdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLCB3aGljaCBwcm92aWRlcyBubyBub25jZS1iYXNlZCByZXBsYXkgcHJvdGVjdGlvbi4gUmVwbGF5IGlzIG9ubHlZAXByZXZlbnRlZCBmb3IgYXMgbG9uZyBhcyB0aGUgYWxpYXMgc3RpbGwgcG9pbnRzIGF0IHRoZSBhY2NvdW50IHRoaXMgY2FsbCBzZXRzLiBBcyBzb29uVQFhcyB0aGUgYWxpYXMgaXMgcG9pbnRlZCBhdCBhIGRpZmZlcmVudCBhY2NvdW50IChieSBhbm90aGVyIGBzZXRfYWxpYXNfYWNjb3VudGApLCB0aGlzTQFjYWxsIGJlY29tZXMgcmVwbGF5YWJsZSBhZ2FpbiB1bnRpbCBpdHMgdmFsaWRpdHkgcGVyaW9kIGVsYXBzZXMuIENvbnNlcXVlbnRseSwgaWYgMlkBc3VjaCB0cmFuc2FjdGlvbnMgc2V0dGluZyAyIGRpZmZlcmVudCBhY2NvdW50cyBoYXZlIG92ZXJsYXBwaW5nIHZhbGlkaXR5IHBlcmlvZHMsIHRoZXlNAWNhbiBiZSByZXBsYXllZCBhZ2FpbnN0IGVhY2ggb3RoZXIgaW5kZWZpbml0ZWx5IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIG92ZXJsYXAuIFRvVQFhdm9pZCB0aGlzLCB0aGUgY2FsbGVyIG11c3Qgbm90IGhhdmUgMiBzdWNoIHRyYW5zYWN0aW9ucyBhbGl2ZSAod2l0aGluIHRoZWlyIHZhbGlkaXR5ZHBlcmlvZCkgYXQgdGhlIHNhbWUgdGltZS4ALFBhcmFtZXRlcnM6uC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBzZXQgdGhlIGFsaWFzIGZvci4BAS0gYGNhbGxfdmFsaWRfYXRgOiBUaGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIGNhbGwgYmVjb21lcyB2YWxpZC5MdW5zZXRfYWxpYXNfYWNjb3VudAACBBUBUmVtb3ZlIHRoZSBtYXBwaW5nIGZyb20gYSBwYXJ0aWN1bGFyIGFsaWFzIHRvIGl0cyByZWdpc3RlcmVkIGFjY291bnQuaGZvcmNlX3JlY29nbml6ZV9wZXJzb25ob29kBAEYcGVvcGxlUQQBQFZlYzxNZW1iZXJPZjxUPj4AAxDgUmVjb2duaXplIGEgc2V0IG9mIHBlb3BsZSB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGNoZWNrcy4AUQFUaGUgcGVvcGxlIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwcm92aWRlZCBsaXN0IG9mIGtleXMgYW5kIHdpbGwgZWFjaCBiZSBhc3NpZ25lZCwgaW6Yb3JkZXIsIHRoZSBuZXh0IGF2YWlsYWJsZSBwZXJzb25hbCBJRC5cc2V0X3BlcnNvbmFsX2lkX2FjY291bnQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE0Y2FsbF92YWxpZF9hdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAQ8aFNldCBhIHBlcnNvbmFsIGlkIGFjY291bnQuAE0BVGhlIGFjY291bnQgY2FuIHRoZW4gYmUgdXNlZCB0byBzaWduIHRyYW5zYWN0aW9ucyBvbiBiZWhhbGYgb2YgdGhlIHBlcnNvbmFsIGlkLCBhbmSkcHJvdmlkZSByZXBsYXkgcHJvdGVjdGlvbiB3aXRoIHRoZSBub25jZS4AUQFUaGlzIHRyYW5zYWN0aW9uIGlzIHJlZnVuZGVkIGlmIHN1Y2Nlc3NmdWwgYW5kIG5vIGFjY291bnQgd2FzIHByZXZpb3VzbHkgc2V0IGZvciB0aGUwcGVyc29uYWwgaWQuALBUaGUgY2FsbCBpcyB2YWxpZCBmcm9tIGBjYWxsX3ZhbGlkX2F0YCB1bnRpbLxgY2FsbF92YWxpZF9hdCArIGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgLh0BYGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgIGlzIGEgY29uc3RhbnQgYXZhaWxhYmxlIGluIHRoZSBtZXRhZGF0YS4ALFBhcmFtZXRlcnM6uC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBzZXQgdGhlIGFsaWFzIGZvci4BAS0gYGNhbGxfdmFsaWRfYXRgOiBUaGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIGNhbGwgYmVjb21lcyB2YWxpZC5kdW5zZXRfcGVyc29uYWxfaWRfYWNjb3VudAAFBHhVbnNldCB0aGUgcGVyc29uYWwgaWQgYWNjb3VudC5gY3JlYXRlX3Blb3BsZV9jb2xsZWN0aW9uAAYodENyZWF0ZSB0aGUgcGVvcGxlIGNvbGxlY3Rpb24uACkBVGhpcyBjYWxsIGlzIHZhbGlkIG9ubHkgaWYgdGhlIGNvbGxlY3Rpb24gZG9lc24ndCBleGlzdCB5ZXQuIE9uY2UgY3JlYXRlZCyMdGhpcyBjYWxsIGNhbm5vdCBiZSBleGVjdXRlZCBhZ2Fpbi4A1FRoZSBjb2xsZWN0aW9uIGlzIGNyZWF0ZWQgd2l0aCBhIGZpeGVkIGNvbmZpZ3VyYXRpb246uC0gT3duZXI6IENvbmZpZ3VyZWQgdmlhIGBDb2xsZWN0aW9uT3duZXJgIHR5cGXALSBPbmJvYXJkaW5nIHNpemU6IGBQRU9QTEVfT05CT0FSRElOR19TSVpFYCAoMTApSC0gTW9kZTogYEZsZXhpYmxlYEwtIFJpbmcgc2l6ZTogYFIyZTlgWGNsZWFuX3VwX3N0YWxlX2FsaWFzZXMEARxhbGlhc2VzVQQB3EJvdW5kZWRWZWM8Q29udGV4dHVhbEFsaWFzLCBDb25zdFUzMjxNQVhfQlVMS19DTEVBTlVQPj4AB1CgUmVtb3ZlIHN0YWxlIGFsaWFzIDwtPiBhY2NvdW50IG1hcHBpbmdzLgBgQSBtYXBwaW5nIGlzIHN0YWxlIHdoZW46LQEtIGl0cyBjb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBbYENvbmZpZzo6QWNjb3VudENvbnRleHRzYF0gKGdvdmVybmFuY2WoICByZWNvbmZpZ3VyYXRpb24sIGVuZGVkIGFpcmRyb3AgZXRjLiksIG9ycC0gaXRzIHJpbmcgaGFzIGJlZW4gZGVsZXRlZC4AHQFSZXZpc2lvbiBtaXNtYXRjaGVzIGRvIG5vdCByZW5kZXIgYW4gYWxpYXMgc3RhbGUuIFRoZSB1c2VyIGNhbiBjb250aW51ZRUBdHJhbnNhY3RpbmcgdmlhIGBBc1BlcnNvbmFsQWxpYXNXaXRoQWNjb3VudFJldmlzZWRgIHdpdGhvdXQgaGF2aW5nIHRvTHJlZG8gYWNjb3VudCBzZXR1cC4A/FR5cGljYWxseSBzdWJtaXR0ZWQgYnkgdGhlIE9DVywgYnV0IHRoZSBkaXNwYXRjaCBkb2VzIG5vdCB0cnVzdKh0aGUgY2FsbGVyLiBFYWNoIGFsaWFzIGlzIHJlLXZhbGlkYXRlZCB2aWHsYFNlbGY6OmVuc3VyZV9hbGlhc19pc19zdGFsZWA7IHRob3NlIHRoYXQgYXJlIG5vdCBzdGFsZSBhcmUgc2tpcHBlZC4A8EF0IG1vc3QgW2BNQVhfQlVMS19DTEVBTlVQYF0gYWxpYXNlcyBhcmUgcHJvY2Vzc2VkIHBlciBjYWxsLgABAVRoZSB0cmFuc2FjdGlvbiBzb3VyY2UgbXVzdCBiZSBsb2NhbCBvciBpbi1ibG9jay4gVGh1cywgZXh0ZXJuYWx4aW52b2NhdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlEEAAACCABVBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAekDBFMAAAQAWQQBGFZlYzxUPgAAWQQAAALpAwBdBAxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldBBDYWxsBARUAAFEEHZvdGUIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcb3BpbmlvbmEEASRKdWRnZW1lbnQAAATgRmVlbGVzcyBvbiBzdWNjZXNzIChkZXRlcm1pbmVkIG9ubHkgYnkgdG9wIHRocmVlIGxpbmVzKS4oY2xvc2VfY2FzZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAAUxtYXhfY2FsbGJhY2tfd2VpZ2h0eQIBGFdlaWdodAABEFEBYG1heF9jYWxsYmFja193ZWlnaHRgIGlzIGEgY2FsbGVyLWRlY2xhcmVkIHVwcGVyIGJvdW5kIG9uIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGxiYWNrVQFkaXNwYXRjaGVkIHdoZW4gdGhlIGNhc2UgaXMgY2xvc2VkLiBJdCBpcyBpbmNsdWRlZCBpbiB0aGlzIGNhbGwncyBkZWNsYXJlZCB3ZWlnaHQgYW5kWQFjaGVja2VkIGFnYWluc3QgdGhlIGFjdHVhbCBjYWxsYmFjayB3ZWlnaHQgb24tY2hhaW4sIHdpdGggdGhlIGRpZmZlcmVuY2UgcmVmdW5kZWQuIFRoZUEBY2FsbCBmYWlscyB3aXRoIGBDYWxsYmFja1dlaWdodFRvb0xvd2AgaWYgdGhlIGJvdW5kIGRvZXMgbm90IGNvdmVyIHRoZSBjYWxsYmFjay4oY2xlYW5fdm90ZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAARR2b3RlcggBFEFsaWFzAAIMLQFPcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLiBUaGUgdHJhbnNhY3Rpb24gaXMgYXV0aG9yaXplZCBpbiBgQXV0aG9yaXplQ2FsbGBhAXdoZW4gdGhlIHNvdXJjZSBpcyBsb2NhbCAoZS5nLiBmcm9tIHRoZSBvZmZjaGFpbiB3b3JrZXIpLiBGb3IgZXh0ZXJuYWwgdHJhbnNhY3Rpb25zLCB1c2VQYGNsZWFuX3ZvdGVfc2lnbmVkYC4kcmVhcF9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAADACRpbnRlcnZlbmUMAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcdmVyZGljdGEEASRKdWRnZW1lbnQAAUxtYXhfY2FsbGJhY2tfd2VpZ2h0eQIBGFdlaWdodAAEEFEBYG1heF9jYWxsYmFja193ZWlnaHRgIGlzIGEgY2FsbGVyLWRlY2xhcmVkIHVwcGVyIGJvdW5kIG9uIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGxiYWNrVQFkaXNwYXRjaGVkIHdoZW4gdGhlIGNhc2UgaXMgaW50ZXJ2ZW5lZC4gSXQgaXMgaW5jbHVkZWQgaW4gdGhpcyBjYWxsJ3MgZGVjbGFyZWQgd2VpZ2h0WQFhbmQgY2hlY2tlZCBhZ2FpbnN0IHRoZSBhY3R1YWwgY2FsbGJhY2sgd2VpZ2h0IG9uLWNoYWluLCB3aXRoIHRoZSBkaWZmZXJlbmNlIHJlZnVuZGVkLlEBVGhlIGNhbGwgZmFpbHMgd2l0aCBgQ2FsbGJhY2tXZWlnaHRUb29Mb3dgIGlmIHRoZSBib3VuZCBkb2VzIG5vdCBjb3ZlciB0aGUgY2FsbGJhY2suKGNsYWltX3ZvdGUEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAUIIQFBIHBlcnNvbiBjbGFpbXMgdGhlIG1vYiBjcmVkaXQgYXNzb2NpYXRlZCB3aXRoIGEgY29ycmVjdCB2b3RlIG9uIGEgY2FzZS5gVGhlIGNhc2UgbXVzdCBiZSBgRG9uZWAuOHBheW91dF9yZXdhcmRzBAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQABgQJAUEgcGVyc29uIGNvbnZlcnRzIHRoZWlyIGNsYWltZWQgbW9iIGNyZWRpdCBpbnRvIGEgZGlyZWN0IHRyYW5zZmVyLixjbGFpbV92b3RlcwQBMGNhc2VfaW5kaWNlc2kEAThWZWM8Q2FzZUluZGV4PgAHCDUBQSBwZXJzb24gY2xhaW1zIG11bHRpcGxlIG1vYiBjcmVkaXRzIGFzc29jaWF0ZWQgYSBjb3JyZWN0IHZvdGUgb24gYSBjYXNlLiBUaGVQY2FzZSBtdXN0IGJlIGBEb25lYC5Ic3RhcnRfcGF5b3V0X3JvdW5kAAgAWHNjaGVkdWxlX3BheW91dF9yb3VuZHMMARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAJAFhyZW1vdmVfcGF5b3V0X3NjaGVkdWxlBAEUaW5kZXg4AQx1MzIACgAwY2xhaW1fY3JlZGl0AAsAMGNsZWFuX3BvaW50cwgBFHJvdW5kOAEoUm91bmRJbmRleAABFHZvdGVyCAEUQWxpYXMADABAZm9yY2VfcmlwZW5fY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgADQAodG91Y2hfY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgADgBQY2xlYXJfdm90aW5nX3BlbmFsdHkADwBEY2xlYW5fdm90ZV9zaWduZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEUdm90ZXIIARRBbGlhcwAQBFhPcmlnaW4gbXVzdCBiZSBzaWduZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmEEEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5JEp1ZGdlbWVudAABCBRUcnV0aAQAZQQBFFRydXRoAAAAIENvbnRlbXB0AAEAAGUEEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5FFRydXRoAAEIEFRydWUAAAAURmFsc2UAAQAAaQQAAAI4AG0EDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBBDYWxsBARUAAFYFGFwcGx5AAAMkC0gRGVjbGFyZSBpbnRlbnRpb24gdG8gZ2V0IGEgdGF0dG9vLkwtIERlcG9zaXQgaXMgdGFrZW4uuC0gYElua1R5cGVgIG1heSBub3QgYmUgYFByb2NlZHVyYWxEZXJpdmF0aXZlYC48c3VibWl0X2V2aWRlbmNlBAEgZXZpZGVuY2UIATBFdmlkZW5jZUhhc2gAARC8LSBPcGVuIGEgTW9iIFJ1bGUgY2FzZSB0byBqdWRnZSB0aGUgYGV2aWRlbmNlYC78LSBSZXF1ZXN0cyBhIGp1ZGdlbWVudCBmb3IgdGhlIHByb29mLW9mLWluayBldmlkZW5jZSBzdGF0ZW1lbnQuUQEtIE5lZWRzIGBTaWduZWRFeHRlbnNpb25gIHRvIGF2b2lkIHVwZnJvbnQgcmVxdWlyZW1lbnQgZm9yIGZlZSBpZiBganVkZ2VtZW50cyA9PSAwYC45AS0gSWYgYGp1ZGdlbWVudHMgPiAwYCwgdGhlbiBhbiBhZGRpdGlvbmFsIGZlZSBzaG91bGQgYmUgY2hhcmdlZCBpbnRvIFRyZWFzdXJ5LhhqdWRnZWQMARh0aWNrZXQ4AURPcmFjbGVUaWNrZXRPZjxUPgABHGNvbnRleHR4AUBKdWRnZW1lbnRDb250ZXh0AAEkanVkZ2VtZW50YQQBJEp1ZGdlbWVudAACBOhJcyBjYWxsZWQgYnkgdGhlIE9yYWNsZSB3aGVuIHRoZSBldmlkZW5jZSBoYXMgYmVlbiBqdWRnZWQuRHJlZ2lzdGVyX3JlZmVycmVkDAEMa2V5CAEsTWVtYmVyT2Y8VD4AASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABSHByb29mX29mX293bmVyc2hpcHEEAbA8VDo6Q3J5cHRvIGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQADJFAtIEdldHMgYSBuZXcgYGluZGV4YHgtIFB1dHMgYW4gZW50cnkgaW50byBgUGVvcGxlYC6YLSBDYWxscyBQZW9wbGUvYG5ld1BlcnNvbihpbmRleCwga2V5KWAALCMgQXJndW1lbnRzsCogYGtleWAgLSBUaGUgcGVyc29uYWwgaWRlbnRpdHkgdG8gcmVnaXN0ZXIuIQEqIGBkZXN0aW5hdGlvbmAgLSBUaGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIGNhbmRpZGF0ZSdzIHJlZmVycmFsIHJld2FyZC5JASogYHByb29mX29mX293bmVyaHNpcGAgLSBUaGUgc2lnbmF0dXJlIG9mIHByZWRlZmluZWQgcHJlZml4IGAicG9wIHJlZ2lzdGVyIHVzaW5nImCoICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgc2VuZGVyIGFjY291bnQgaWQuVHJlZ2lzdGVyX25vbl9yZWZlcnJlZAwBDGtleQgBLE1lbWJlck9mPFQ+AAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAAUhwcm9vZl9vZl9vd25lcnNoaXBxBAGwPFQ6OkNyeXB0byBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUABDhQLSBHZXRzIGEgbmV3IGBpbmRleGB4LSBQdXRzIGFuIGVudHJ5IGludG8gYFBlb3BsZWAumC0gQ2FsbHMgUGVvcGxlL2BuZXdQZXJzb24oaW5kZXgsIGtleSlgACwjIEFyZ3VtZW50c7AqIGBrZXlgIC0gVGhlIHBlcnNvbmFsIGlkZW50aXR5IHRvIHJlZ2lzdGVyLsAqIGBkZXN0aW5hdGlvbmAgLSBUaGUgYWNjb3VudCByZWNlaXZpbmcgcmV3YXJkcy5JASogYHByb29mX29mX293bmVyaHNpcGAgLSBUaGUgc2lnbmF0dXJlIG9mIHByZWRlZmluZWQgcHJlZml4IGAicG9wIHJlZ2lzdGVyIHVzaW5nImCoICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgc2VuZGVyIGFjY291bnQgaWQuACgjIFdhcm5pbmc6ADkBVGhpcyBjYWxsIGNhbiBwYXkgdHdvIHJld2FyZHMgdG8gdGhlIHNhbWUgYWNjb3VudCBmb3Igbm9uLXJlZmVycmVkIGNhbmRpZGF0ZXMuKQFUaGUgYXBwIGlzIHJlc3BvbnNpYmxlIGZvciBhbnkgYWRkaXRpb25hbCBwcml2YWN5IGhhbmRsaW5nIGFmdGVyIHRyYW5zZmVyLhhyZXJvbGwABQAYY29tbWl0CAEYY2hvaWNldQQBJElua0Nob2ljZQABKHJlcXVpcmVfaWS1AwFIT3B0aW9uPFBlcnNvbmFsSWQ+AAYUSQFDb21taXQgdG8gYSBkZXNpZ24gYW5kIGF1dGhvcml6ZSB0aGUgc3RvcmFnZSBmb3IgKHBvc3NpYmx5IGp1c3QgaW5pdGlhbCkgZXZpZGVuY2UuAFUBSWYgYSBzcGVjaWZpYyBwZXJzb25hbCBpZGVudGl0eSBpcyByZXF1aXJlZCwgdGhlbiB0aGlzIGNhbiBiZSBwbGFjZWQgaW4gYHJlcXVpcmVfaWRgLkEBVGhpcyBjYW4gYmUgYW55IHVudXNlZC91bnJlc2VydmVkIHBlcnNvbmFsIGlkZW50aXR5IG5vIGdyZWF0ZXIgdGhhbiB0aGUgYE5leHRJZGAgY291bnRlci40YWxsb2NhdGVfZnVsbAAHABx0aW1lb3V0BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAIDDkBT25jZSBhIHRpbWVvdXQgcGFzc2VzLCByZW1vdmVzIGEgY2FuZGlkYXRlIHdobyBpcyBzZWxlY3RlZCBidXQgbm90IHlldCBwcm92ZW4uWQFJZiB0aGUgY2FuZGlkYXRlIHdhcyByZWZlcnJlZCB0aGVuIHJlZmVycmFsIGlzIGJhZCwgaWYgY2FuZGlkYXRlIGFwcGxpZWQgd2l0aCBkZXBvc2l0LExkZXBvc2l0IGlzIHNsYXNoZWQuIGZsYWtlb3V0AAkEtFJlbW92ZSBhIGNhbmRpZGF0ZSB3aG8gaGFzIG5vdCB5ZXQgY29tbWl0dGVkLlBhcHBseV93aXRoX3NpZ25hdHVyZQwBIHJlZmVycmVyKAEoUGVyc29uYWxJZAABJHNpZ25hdHVyZXkEAUhUOjpUaWNrZXRTaWduYXR1cmUAARh0aWNrZXQEASRUOjpUaWNrZXQAChB0VXRpbGl6ZSBhIHJlZmVycmFsIHNpZ25hdHVyZS4AXQFUaGUgcGF5bG9hZCB0byBiZSBzaWduZWQgYnkgdGhlIHJlZmVycmVyIHVzaW5nIHRoZWlyIHJlZ2lzdGVyZWQga2V5IHBhaXIgaXMgdGhlIGVuY29kZWSkYnl0ZXMgb2YgdGhlIGFjY291bnQgSUQgb2YgdGhlIGNhbmRpZGF0ZS5UYXBwbHlfd2l0aF9pbnZpdGF0aW9uDAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAABGHRpY2tldAQBLFRpY2tldE9mPFQ+AAEkc2lnbmF0dXJleQQBSFQ6OlRpY2tldFNpZ25hdHVyZQATENRBcHBseSB0byB0aGUgUHJvb2Ytb2YtSW5rIHByb2Nlc3Mgd2l0aCBhbiBpbnZpdGF0aW9uLgBZAVRoZSBwYXlsb2FkIHRvIGJlIHNpZ25lZCBieSB0aGUgaW52aXRlciB1c2luZyB0aGVpciByZWdpc3RlcmVkIGtleSBwYWlyIGlzIHRoZSBlbmNvZGVkpGJ5dGVzIG9mIHRoZSBhY2NvdW50IElEIG9mIHRoZSBjYW5kaWRhdGUuRGFkZF9kZXNpZ25fZmFtaWx5DAEUaW5kZXjNAwEsRmFtaWx5SW5kZXgAARBraW5kgQQBKEZhbWlseUtpbmQAAQhpZAgBIEZhbWlseUlkAAsE8EFkZCBhIGRlc2lnbiBmYW1pbHkuIE11c3QgaGF2ZSBwcml2aWxlZ2VkIGFjY2VzcyB0byBkbyB0aGlzLkxzZXRfcmVmZXJyYWxfdGlja2V0BAEYdGlja2V0BAEkVDo6VGlja2V0AAwYvEFkZCBhIHJlZmVycmFsIHRpY2tldCBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb24uAFUBT25seSBvbmUgcmVmZXJyYWwgdGlja2V0IG1heSBiZSBhY3RpdmUgYXQgYW55IGdpdmVuIHRpbWUgZm9yIG9uZSBwZXJzb24uIENhbGxpbmcgdGhpcyUBZXh0cmluc2ljIHdoaWxlIGEgdmFsaWQgdGlja2V0IGlzIHNldCB3aWxsIG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgdGlja2V0LgA5AUlmIGFueSBwZW5kaW5nIHJlZmVycmFsIHJld2FyZHMgYXJlIHByZXNlbnQsIHRoZXkgbmVlZCB0byBiZSByZWdpc3RlcmVkIGZpcnN0LlhjYW5jZWxfcmVmZXJyYWxfdGlja2V0BAEYdGlja2V0BAEkVDo6VGlja2V0AA0EyENhbmNlbCBhIHJlZmVycmFsIHRpY2tldCBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb24ujHJlZ2lzdGVyX3N1Y2Nlc3NmdWxfcmVmZXJyYWxfcmV3YXJkBAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQADgA0Z3JhbnRfaW52aXRlcwgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgAPGORHcmFudHMgaW52aXRlcyB0byBhbiBhY2NvdW50IHNvIHRoZXkgY2FuIGRpc3RyaWJ1dGUgdGhlbS4AmFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRhdGlvbnNPcmlnaW4uALAtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gZ2l2ZSBpbnZpdGVzIHRvLqQtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgaW52aXRlcyB0byBnaXZlLpByZW1vdmVfYXZhaWxhYmxlX2FuZF9wZW5kaW5nX2ludml0ZXMIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUbGltaXQ4AQx1MzIAEBicUmVtb3ZlIGFsbCBpbnZpdGVzIGdpdmVuIHRvIGFuIGFjY291bnQuAJxUaGUgb3JpZ2luIG11c3QgYmUgYEludml0YXRpb25zT3JpZ2luYC4A0C0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byByZW1vdmUgYWxsIGludml0ZXMgZnJvbS7sLSBgbGltaXRgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGVuZGluZyBpbnZpdGVzIHRvIHJlbW92ZS5Ec2V0X2ludml0ZV90aWNrZXQEARh0aWNrZXQEASxUaWNrZXRPZjxUPgARFEhJbnZpdGUgYW4gYWNjb3VudC4ADQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIGhhdmUgc29tZSBpbnZpdGVzIGxlZnQuAJQtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBzZXQuUGNhbmNlbF9pbnZpdGVfdGlja2V0BAEYdGlja2V0BAEsVGlja2V0T2Y8VD4AEhRUQ2FuY2VsIGFuIGludml0YXRpb24uACEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIHRpY2tldCB0byBjYW5jZWwuAKAtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBjYW5jZWwuRHNldF9jb25maWd1cmF0aW9uBAEYY29uZmlnhQQBfENvbmZpZ1JlY29yZDxCbG9ja051bWJlckZvcjxUPj4AMgQVAVNldCB0aGUgY29uZmlndXJhdGlvbiByZWNvcmQuIE11c3QgaGF2ZSBwcml2aWxlZ2VkIGFjY2VzcyB0byBkbyB0aGlzLmBzZXRfcmVpbWJ1cnNlbWVudF92YWx1ZXMIATxyZWZlcnJlZF92YWx1ZXOJBAHoQm91bmRlZFZlYzwoQmFsYW5jZU9mPFQ+LCB1MzIpLCBUOjpNYXhSZWltYnVyc2VtZW50VmFsdWVzPgABPHJlZmVycmVyX3ZhbHVlc4kEAehCb3VuZGVkVmVjPChCYWxhbmNlT2Y8VD4sIHUzMiksIFQ6Ok1heFJlaW1idXJzZW1lbnRWYWx1ZXM+ADMoTQFTZXQgdGhlIHZhbHVlcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBhd2FyZGVkIHRvIHJlZmVycmVkIGNhbmRpZGF0ZXMgYXMgd2VsbCBhcyB0aGVpck0BcmVmZXJyZXJzLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2YgcmVpbWJ1cnNlbWVudHMgZm9yIGVhY2ggdmFsdWUuIFRoZXNlIHZhbHVlcyBhcmUkc3RvcmVkIGluUQFyZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbGlzdCB3aWxsIGJlIHRoZSBmaXJzdCBvbmVJAXRvIGJlIHVzZWQgYnkgdGhlIHJlaW1idXJzZW1lbnQgc3lzdGVtLiBUaGUgbGVuZ3RoIG9mIHRoZSB0d28gbGlzdHMgbXVzdCBiZSBlcXVhbC4AIFdBUk5JTkchAE0BQWZ0ZXIgdGhlIG51bWJlciBvZiByZWltYnVyc2VtZW50cyBpcyBleGhhdXN0ZWQgZm9yIGEgdmFsdWUgaW4gdGhlIGxpc3QsIHRoZSBwYWxsZXT0c3RhcnRzIHVzaW5nIHRoZSBuZXh0IHZhbHVlIGltbWVkaWF0ZWx5IGZvciBmdXR1cmUgdHJhbnNmZXJzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5xBAAAA0AAAAAMAHUEDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCRJbmtDaG9pY2UAARRARGVzaWduZWRFbGVjdGl2ZQgAzQMBLEZhbWlseUluZGV4AADNAwEsRGVzaWduSW5kZXgAAABEUHJvY2VkdXJhbEFjY291bnQEAM0DASxGYW1pbHlJbmRleAABAEhQcm9jZWR1cmFsUGVyc29uYWwEAM0DASxGYW1pbHlJbmRleAACAChQcm9jZWR1cmFsCADNAwEsRmFtaWx5SW5kZXgAAAwBMFZhcmlhbnRJbmRleAADAFBQcm9jZWR1cmFsRGVyaXZhdGl2ZQgAKAEoUGVyc29uYWxJZAAAtQMBSE9wdGlvbjxQZXJzb25hbElkPgAEAAB5BAgoc3BfcnVudGltZThNdWx0aVNpZ25hdHVyZQABEBxFZDI1NTE5BABxBAFIZWQyNTUxOTo6U2lnbmF0dXJlAAAAHFNyMjU1MTkEAHEEAUhzcjI1NTE5OjpTaWduYXR1cmUAAQAURWNkc2EEAH0EAUBlY2RzYTo6U2lnbmF0dXJlAAIADEV0aAQAfQQBWGVjZHNhOjpLZWNjYWtTaWduYXR1cmUAAwAAfQQAAANBAAAADACBBAxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQoRmFtaWx5S2luZAABECBEZXNpZ25lZAQBFGNvdW50zQMBLERlc2lnbkluZGV4AAAARFByb2NlZHVyYWxBY2NvdW50AAEASFByb2NlZHVyYWxQZXJzb25hbAACAChQcm9jZWR1cmFsBAEUcmFuZ2UMATBWYXJpYW50SW5kZXgAAwAAhQQMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0MENvbmZpZ1JlY29yZAQsQmxvY2tOdW1iZXIBOAAgAThyZXJvbGxfdGltZW91dDgBLEJsb2NrTnVtYmVyAAE8ZmFzdHRyYWNrX2NvdW50OAEMdTMyAAEcbWF4aW11bTgBDHUzMgABOGZ1bGxfYWxsb2NfbGVuKAEMdTY0AAFAZnVsbF9hbGxvY19jb3VudDgBDHUzMgABOGluaXRfYWxsb2NfbGVuKAEMdTY0AAFAaW5pdF9hbGxvY19jb3VudDgBDHUzMgABHHRpbWVvdXQ4ASxCbG9ja051bWJlcgAAiQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGNBARTAAAEAJEEARhWZWM8VD4AAI0EAAAECEUBOACRBAAAAo0EAJUEDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQQQ2FsbAQEVAABTExzaWduX3VwX3dpdGhfaW52aXRlCAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5kEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgAASNBTaWduIHVwIGZvciB0aGUgZ2FtZSB1c2luZyBhbiBhY2NvdW50IGFuZCBhbiBpbnZpdGUuABUBVGhpcyBpcyBmb3IgbmV3IHBsYXllcnMgb3IgYXJjaGl2ZWQgcGxheWVycywgb3RoZXIgcGxheWVycyBzaG91bGQgdXNlqFtgUGFsbGV0OjpzaWduX3VwX3dpdGhfYWNjb3VudGBdIGZvciBmcmVlLgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4ARQFgYWlyZHJvcHNgIG9wdGlvbmFsbHkgZW50ZXJzIHRoZSBwbGF5ZXIgaW50byB0aGUgYWlyZHJvcCBkcmF3cyBzY2hlZHVsZWQgZm9yIHRoaXM5AWdhbWUuIFBhc3MgYE5vbmVgIHRvIHNraXAgaXQ7IG90aGVyd2lzZSBpdCBob2xkcyBleGFjdGx5IG9uZSBWUkYgcGVyIHNjaGVkdWxlZFUBYWlyZHJvcCBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIFtgR2FtZWBdIHN0b3JhZ2UpLCBpbiBhaXJkcm9wLWluZGV4IG9yZGVyLlUBRWFjaCBlbnRyeSBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgW2BQYWxsZXQ6OmFpcmRyb3BfZXZlbnRfaWRgXSksIHNlZWRzIHRoZVkBcGxheWVyJ3MgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50IGFuZCBwcm92ZXMgdGhlaXIgaWRlbnRpdHkgcGF0aDogdGhlIGFsaWFzIHZhcmlhbnQgaWYdAXRoZSBwbGF5ZXIgaXMgcmVjb2duaXplZCAocGFsbGV0LXNjb3JlIGByZWNvZ25pdGlvbmAgaXMgYFJlY29nbml6ZWRgIG9yVQFgRXh0ZXJuYWxseVJlY29nbml6ZWRgKSwgb3RoZXJ3aXNlIHRoZSBhY2NvdW50IHZhcmlhbnQuIFRoZSBzaWduLXVwIGZhaWxzIGVudGlyZWx5IGlmSQFhbnkgZXZlbnQgZG9lcyBub3QgYWNjZXB0IGl0cyByZWdpc3RyYXRpb24gb3IgdGhlIG51bWJlciBvZiBzdXBwbGllZCBWUkZzIGRvZXMgbm90WQFtYXRjaCBgYWlyZHJvcHNfc2NoZWR1bGVkYC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgQWlyZHJvcFZyZnNgXSBmb3IgbW9yZSBkZXRhaWxzLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCB1c2UgdGhlIGBHYW1lQXNJbnZpdGVkYCBleHRlbnNpb24uUHNpZ25fdXBfd2l0aF9hY2NvdW50CAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5kEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgABTJhTaWduIHVwIGZvciB0aGUgZ2FtZSB1c2luZyBhbiBhY2NvdW50LgA9AUlmIHRoZSBwbGF5ZXIgaXMgbmV3IG9yIGFyY2hpdmVkLCB0aGVuIGEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lci5sT3RoZXJ3aXNlIHRoZSBjYWxsIGlzIGZyZWUuANRBIGdhbWUgbXVzdCBiZSBvbmdvaW5nIGFuZCBpbiBpdHMgcmVnaXN0cmF0aW9uIHBoYXNlLgBFAWBhaXJkcm9wc2Agb3B0aW9uYWxseSBlbnRlcnMgdGhlIHBsYXllciBpbnRvIHRoZSBhaXJkcm9wIGRyYXdzIHNjaGVkdWxlZCBmb3IgdGhpczkBZ2FtZS4gUGFzcyBgTm9uZWAgdG8gc2tpcCBpdDsgb3RoZXJ3aXNlIGl0IGhvbGRzIGV4YWN0bHkgb25lIFZSRiBwZXIgc2NoZWR1bGVkVQFhaXJkcm9wIGV2ZW50IChgYWlyZHJvcHNfc2NoZWR1bGVkYCBpbiB0aGUgW2BHYW1lYF0gc3RvcmFnZSksIGluIGFpcmRyb3AtaW5kZXggb3JkZXIuVQFFYWNoIGVudHJ5IGlzIGJvdW5kIHRvIGl0cyBvd24gZXZlbnQgaWQgKHNlZSBbYFBhbGxldDo6YWlyZHJvcF9ldmVudF9pZGBdKSwgc2VlZHMgdGhlWQFwbGF5ZXIncyBkcmF3IHNsb3QgZm9yIHRoYXQgZXZlbnQgYW5kIHByb3ZlcyB0aGVpciBpZGVudGl0eSBwYXRoOiB0aGUgYWxpYXMgdmFyaWFudCBpZh0BdGhlIHBsYXllciBpcyByZWNvZ25pemVkIChwYWxsZXQtc2NvcmUgYHJlY29nbml0aW9uYCBpcyBgUmVjb2duaXplZGAgb3JVAWBFeHRlcm5hbGx5UmVjb2duaXplZGApLCBvdGhlcndpc2UgdGhlIGFjY291bnQgdmFyaWFudC4gVGhlIHNpZ24tdXAgZmFpbHMgZW50aXJlbHkgaWZJAWFueSBldmVudCBkb2VzIG5vdCBhY2NlcHQgaXRzIHJlZ2lzdHJhdGlvbiBvciB0aGUgbnVtYmVyIG9mIHN1cHBsaWVkIFZSRnMgZG9lcyBub3RZAW1hdGNoIGBhaXJkcm9wc19zY2hlZHVsZWRgLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgW2BBaXJkcm9wVnJmc2BdIGZvciBtb3JlIGRldGFpbHMuADEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciwgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIHVzZXxgU2NvcmVBc1BhcnRpY2lwYW50YCBleHRlbnNpb24uSHNpZ25fdXBfd2l0aF9hbGlhcxABOGlkZW50aWZpZXJfa2V5fQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAFEc3RhdGVtZW50X2FjY291bnQEATBUOjpBY2NvdW50SWQAAQxzaWd5BAFMVDo6QWNjb3VudFNpZ25hdHVyZQABIGFpcmRyb3BzmQQBmE9wdGlvbjxBaXJkcm9wVnJmczxBaXJkcm9wUHJvb2ZPZjxUPj4+AAJsVFNpZ24gdXAgZm9yIHRoZSBnYW1lLgBVAUlmIGEgcGxheWVyIGlzIGFscmVhZHkgcmVjb2duaXplZCBieSBhbm90aGVyIERJTSwgdGhleSBjYW4gc2lnbiB1c2luZyB0aGVpciBhbGlhcyBhbmQRAWRvbid0IG5lZWQgYW55IGRlcG9zaXQgb3IgaW52aXRlIHRvIHByb3ZlIHRoZWlyIGluaXRpYWwgY3JlZGliaWxpdHkuYQFPbiB0b3Agb2YgdGhpcyB0aGVpciBzY29yZSBpcyBuZXZlciBnb2luZyBiZWxvdyBwZXJzb25ob29kIHRocmVzaG9sZCBhbmQgdGhlIHBsYXllciB3aWxsTG5ldmVyIGdldCBhcmNoaXZlZC4A1EEgZ2FtZSBtdXN0IGJlIG9uZ29pbmcgYW5kIGluIGl0cyByZWdpc3RyYXRpb24gcGhhc2UuAJBUaGUgb3JpZ2luIG11c3QgYmUgYSBwZXJzb25hbCBhbGlhcy4ALFBhcmFtZXRlcnM6YQEtIGBzdGF0ZW1lbnRfYWNjb3VudGA6IHRoZSBhY2NvdW50IGlkIHRvIHVzZSB0byBpbnRlcmFjdCB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUgZHVyaW5nLCAgdGhlIGdhbWUuVQEtIGBzaWdgOiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIHRoZSBhY2NvdW50IGBzdGF0ZW1lbnRfYWNjb3VudGAgYnkgYW4gYWxpYXMsIGl0IGlzXQEgIHRoZSBzaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2UgYCJwb3A6Z2FtZTpzdG10X2FjY291bnRfZm9yX2FsaWFzOiJgIGNvbmNhdGVuYXRlZCB0byB0aGVJASAgYWxpYXMsIGFuZCB0aGVuIGhhc2hlZCB3aXRoIGBibGFrZTJfMjU2YCAoYmxha2UyIDI1NmJpdCBvdXRwdXQpLiBUaGUgYmFzZSBvZiB0aGUZASAgbWVzc2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlIGNvbnN0YW50OiBgcHJvb2Zfb2Zfb3duZXJzaGlwX21zZ19iYXNlYC5RAS0gYGFpcmRyb3BzYDogb3B0aW9uYWxseSBlbnRlcnMgdGhlIHBsYXllciBpbnRvIHRoZSBhaXJkcm9wIGRyYXdzIHNjaGVkdWxlZCBmb3IgdGhpc2EBICBnYW1lLiBQYXNzIGBOb25lYCB0byBza2lwIGl0OyBvdGhlcndpc2UgaXQgaG9sZHMgZXhhY3RseSBvbmUgVlJGIHBlciBzY2hlZHVsZWQgYWlyZHJvcGEBICBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIGBHYW1lYCBzdG9yYWdlKSwgaW4gYWlyZHJvcC1pbmRleCBvcmRlci4gRWFjaCBlbnRyeVkBICBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgYFBhbGxldDo6YWlyZHJvcF9ldmVudF9pZGApIGFuZCBzZWVkcyB0aGUgcGxheWVyJ3NhASAgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50OyB0aGUgYWxpYXMgdmFyaWFudCBtdXN0IGJlIHVzZWQgZm9yIGFsaWFzLWJhc2VkIHBsYXllcnMgZ2l2ZW5BASAgdGhleSBhcmUgcmVjb2duaXplZCBpbiBwYWxsZXQtc2NvcmUgcGFydGljaXBhbnQgaW5mb3JtYXRpb24uIFRoZSBzaWduLXVwIGZhaWxzXQEgIGVudGlyZWx5IGlmIGFueSBldmVudCBkb2VzIG5vdCBhY2NlcHQgaXRzIHJlZ2lzdHJhdGlvbiBvciB0aGUgbnVtYmVyIG9mIHN1cHBsaWVkIFZSRnNZASAgZG9lcyBub3QgbWF0Y2ggYGFpcmRyb3BzX3NjaGVkdWxlZGAuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBgQWlyZHJvcFZyZnNgIGZvciBtb3JlKCAgZGV0YWlscy6Ac2lnbl91cF93aXRoX2FjY291bnRfbGl0ZV9pbnZpdGUMARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5kEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgAVdEUBU2lnbiB1cCBmb3IgdGhlIGdhbWUgdXNpbmcgYW4gYWNjb3VudCBhbmQgYSBsaXRlIGludml0ZSwgdGhlIGludml0YXRpb24gb2YgYSBsaXRlHHBlcnNvbi4AVQFMaXRlIHBlcnNvbmhvb2QgaXMgY3JlZGlibGUgZW5vdWdoIHRvIHBsYXksIHNvIGEgbGl0ZSBwZXJzb24gY2FuIGludml0ZSBhbiBhY2NvdW50IG9mTQF0aGVpciBvd24uIEl0IGlzIHJlZ2lzdGVyZWQgYXMgYW4gYWNjb3VudC1iYXNlZCBwbGF5ZXIgd2l0aCBhbiBpbnZpdGVkIGNyZWRpYmlsaXR5LgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4ARQFgYWlyZHJvcHNgIG9wdGlvbmFsbHkgZW50ZXJzIHRoZSBwbGF5ZXIgaW50byB0aGUgYWlyZHJvcCBkcmF3cyBzY2hlZHVsZWQgZm9yIHRoaXM5AWdhbWUuIFBhc3MgYE5vbmVgIHRvIHNraXAgaXQ7IG90aGVyd2lzZSBpdCBob2xkcyBleGFjdGx5IG9uZSBWUkYgcGVyIHNjaGVkdWxlZFUBYWlyZHJvcCBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIFtgR2FtZWBdIHN0b3JhZ2UpLCBpbiBhaXJkcm9wLWluZGV4IG9yZGVyLlUBRWFjaCBlbnRyeSBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgW2BQYWxsZXQ6OmFpcmRyb3BfZXZlbnRfaWRgXSksIHNlZWRzIHRoZVkBcGxheWVyJ3MgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50IGFuZCBwcm92ZXMgdGhlaXIgaWRlbnRpdHkgcGF0aDogdGhlIGFsaWFzIHZhcmlhbnQgaWYdAXRoZSBwbGF5ZXIgaXMgcmVjb2duaXplZCAocGFsbGV0LXNjb3JlIGByZWNvZ25pdGlvbmAgaXMgYFJlY29nbml6ZWRgIG9yVQFgRXh0ZXJuYWxseVJlY29nbml6ZWRgKSwgb3RoZXJ3aXNlIHRoZSBhY2NvdW50IHZhcmlhbnQuIFRoZSBzaWduLXVwIGZhaWxzIGVudGlyZWx5IGlmSQFhbnkgZXZlbnQgZG9lcyBub3QgYWNjZXB0IGl0cyByZWdpc3RyYXRpb24gb3IgdGhlIG51bWJlciBvZiBzdXBwbGllZCBWUkZzIGRvZXMgbm90WQFtYXRjaCBgYWlyZHJvcHNfc2NoZWR1bGVkYC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgQWlyZHJvcFZyZnNgXSBmb3IgbW9yZSBkZXRhaWxzLgBVAVRoZSBvcmlnaW4gbXVzdCBiZSBhIGxpdGUgYWxpYXMgaW4gW2BpbmRpdl9wYWxsZXRfc2NvcmU6OlBhbGxldDo6c2NvcmVfY29udGV4dGBdLCBzZWVZAVtgQ29uZmlnOjpFbnN1cmVMaXRlQWxpYXNgXS4gVGhlIGxpdGUgcGVyc29uIG5hbWVzIHRoZSBhY2NvdW50IHBsYXlpbmcgb24gdGhlaXIgYmVoYWxmVQF3aXRoIGBhY2NvdW50YCwgc28gdGhlIHBsYXlpbmcgYWNjb3VudCBpcyBub3QgdGhlIGxpdGUgcGVyc29uJ3Mgb3duIGFjY291bnQgYW5kIHN0YXlzTHVubGlua2FibGUgZnJvbSBpdC4AXQFBIGxpdGUgcGVyc29uIGludml0ZXMgb25lIGFjY291bnQsIGV2ZXI6IHRoZSBmaXJzdCBhY2NvdW50IHRoZXkgc2lnbiB1cCB0aGlzIHdheSBpcyB0aGXsb25seSBvbmUgdGhleSBjYW4gcGxheSB3aXRoLCBldmVuIGFmdGVyIGl0IHN0b3BwZWQgcGxheWluZy4AOQFUaGlzIG11c3QgYmUgdXNlZCBieSBsaXRlLXBlb3BsZSBvbiB0aGVpciBmaXJzdCBzaWdudXAgb3IgYWZ0ZXIgdGhleSBoYXZlIGJlZW70YXJjaGl2ZWQuIEZ1cnRoZXIgc2lnbnVwcyB3aGlsZSB0aGUgcGxheWVyIGlzIGFjdGl2ZSBtdXN0IHVzZaRbYFBhbGxldDo6c2lnbl91cF93aXRoX2FjY291bnRgXSBpbnN0ZWFkLhhyZXBvcnQEASxmdWxsX3JlcG9ydLEEATRGdWxsUmVwb3J0PFQ+AANclEFmdGVyIHRoZSBnYW1lLCBzZW5kIHRoZSBmdWxsIHJlcG9ydC4A0FRoZSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlcG9ydGluZyBwaGFzZS4AVQFUaGUgb3JpZ2luIG11c3QgYmUgYW4gYWxpYXMsIG9yIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi4ARQFgZnVsbF9yZXBvcnRgIGhvbGRzIG9uZSBlbnRyeSBwZXIgcm91bmQgKGV4YWN0bHkgYGdhbWUucm91bmRzYCBvZiB0aGVtKSwgYW5kIGVhY2hFAXJvdW5kIGxpc3RzIG9uZSBgUmVwb3J0YCBwZXIgY28tcGxheWVyIGluIHRoZSByZXBvcnRlcidzIGdyb3VwIGZvciB0aGF0IHJvdW5kLCBpbj0BZ3JvdXAgb3JkZXIgYW5kIGV4Y2x1ZGluZyB0aGUgcmVwb3J0ZXIuIEEgcm91bmQgd2hvc2UgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIHRoZTkBcmVwb3J0ZXIncyByZWFsIGdyb3VwIG1lbWJlcnNoaXAgaXMgcmVqZWN0ZWQgd2l0aCBgRXJyb3I6OkludmFsaWRSZXBvcnRgLiBFYWNoYQFgUmVwb3J0OjpQZXJzb25gIHZvdGUgYXdhcmRzIGFuIGF0dGVuZGFuY2UgTkZUIGNsYWltIGNyZWRpdCB0byB0aGUgYXR0ZXN0ZWUgaW1tZWRpYXRlbHk7jGBSZXBvcnQ6Ok5vdFBlcnNvbmAgYXdhcmRzIG5vdGhpbmcuAEkBQWZ0ZXIgdGhlIHZvdGVzIGZyb20gdGhlIHJlcG9ydCBhcmUgY291bnRlZCwgdGhlIHJlcG9ydGVyIGFuZCBlYWNoIG9mIHRoZSByZXBvcnRlZEUBcGxheWVycyB3aG9zZSBhdHRlbmRhbmNlIGNhbiBub3cgYmUgZGV0ZXJtaW5lZCBhcmUgcHJvY2Vzc2VkIGVhcmx5LiBUaGlzIGxldHMgdGhlTQFnYW1lIHNraXAgdGhlIHBsYXllci1wcm9jZXNzIHBoYXNlIGVudGlyZWx5IHdoZW4gZXZlcnkgcGxheWVyIGhhcyBiZWVuIHByb2Nlc3NlZCBieVR0aGUgZW5kIG9mIHJlcG9ydGluZy4ASQFPbiBzdWNjZXNzIHRoZSBjYWxsIHBheXMgbm8gZmVlIChgUGF5czo6Tm9gKS4gSXRzIHdlaWdodCBzY2FsZXMgd2l0aCB0aGUgbnVtYmVyIG9mTQFjby1wbGF5ZXIgZW50cmllcyBhY3Jvc3MgYWxsIHJvdW5kcywgbm90IHRoZSByb3VuZCBjb3VudCwgc28gcGFydGlhbCBncm91cHMgYXJlIG5vdFEBb3ZlcmNoYXJnZWQuIFRoZSBwcmUtZGlzcGF0Y2ggY2hhcmdlIGFzc3VtZXMgZXZlcnkgY28tcGxheWVyIGVudHJ5IHBsdXMgdGhlIHJlcG9ydGVySQFpcyBlYXJseS1lbmFjdGVkIGFuZCBpcyByZWZ1bmRlZCBkb3duIHRvIHRoZSBhY3R1YWwgZW5hY3RtZW50IGNvdW50IHBvc3QtZGlzcGF0Y2guIG9mZmJvYXJkAAQwgE9mZmJvYXJkIGEgcGxheWVyIGZyb20gdGhlIGdhbWUuAFUBVGhlIG9yaWdpbiBtdXN0IGJlIGFuIGFsaWFzLCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCwgb3Igc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIHVzZXxgU2NvcmVBc1BhcnRpY2lwYW50YCBleHRlbnNpb24uAF0BVGhlcmUgbXVzdCBiZSBubyBnYW1lIG9yIHRoZSBleGlzdGluZyBnYW1lIG11c3QgYmUgaW4gcmVnaXN0cmF0aW9uIHBoYXNlIGFuZCB0aGUgcGxheWVylG11c3QgaGF2ZSBub3Qgc2lnbmVkIHVwIGZvciB0aGUgZ2FtZS4AXQFBIHBsYXllciB3aG9zZSBwYWxsZXQtc2NvcmUgcmVjb2duaXRpb24gaXMgYFJlY29nbml6ZWRgIGhhcyB0aGVpciBwZXJzb25ob29kIHN1c3BlbmRlZCxNAXRoZSBzYW1lIGFzIGFuIGFic2VuY2UtdHJpZ2dlcmVkIHN1c3BlbnNpb24uIE9mZmJvYXJkaW5nIGlzIHBlcm1hbmVudC4gUGxheWluZyBhcyBhXQFwZXJzb24gYWdhaW4gYWZ0ZXIgYSBzdXNwZW5zaW9uIGFuZCB0aGVuIHJlLXJlY29nbml0aW9uIHJlcXVpcmVzIG9uYm9hcmRpbmcgdW5kZXIgYSBuZXdscGVyc29uYWwgaWQgd2l0aCBhIG5ldyBrZXkuHGtpY2tvdXQEARhwbGF5ZXIEATBUOjpBY2NvdW50SWQABSwxAUtpY2tvdXQgYSBraWNrYWJsZSBwbGF5ZXIgdGhhdCBpcyBub3QgcGxheWluZyBhZnRlciBgTm9uUGxheWluZ0tpY2tvdXRUaW1lYC4AoFRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudC4AXQFBIHBsYXllciB3aG9zZSBwYWxsZXQtc2NvcmUgcmVjb2duaXRpb24gaXMgYFJlY29nbml6ZWRgIGhhcyB0aGVpciBwZXJzb25ob29kIHN1c3BlbmRlZCxNAXRoZSBzYW1lIGFzIGFuIGFic2VuY2UtdHJpZ2dlcmVkIHN1c3BlbnNpb24uIFRoZSBraWNrb3V0IGlzIHBlcm1hbmVudC4gUGxheWluZyBhcyBhXQFwZXJzb24gYWdhaW4gYWZ0ZXIgYSBzdXNwZW5zaW9uIGFuZCB0aGVuIHJlLXJlY29nbml0aW9uIHJlcXVpcmVzIG9uYm9hcmRpbmcgdW5kZXIgYSBuZXdscGVyc29uYWwgaWQgd2l0aCBhIG5ldyBrZXkuACEBLSBgcGxheWVyYDogVGhlIHBsYXllciB0byBraWNrb3V0LiBJdCBtdXN0IGJlIGFyY2hpdmVkIGFuZCBraWNrYWJsZSB3aXRo2CAgYGFyY2hpdmVkX3NpbmNlYCBvbGRlciB0aGFuIGBOb25QbGF5aW5nS2lja291dFRpbWVgLjRncmFudF9pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAYY9EdyYW50IHNvbWUgaW52aXRlcyB0byBhbiBhY2NvdW50IHNvIHRoZXkgY2FuIGRpc3RyaWJ1dGUgdGhlbS4AiFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRlSXNzdWVyYC4AtC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBncmFudCBpbnZpdGVzIHRvLqgtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgaW52aXRlcyB0byBncmFudC6QcmVtb3ZlX2F2YWlsYWJsZV9hbmRfcGVuZGluZ19pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGxpbWl0OAEMdTMyAAcYmENsZWFyIGFsbCBpbnZpdGVzIGdpdmVuIHRvIGFuIGFjY291bnQuAIhUaGUgb3JpZ2luIG11c3QgYmUgYEludml0ZUlzc3VlcmAuANAtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIGFsbCBpbnZpdGVzIGZyb20u7C0gYGxpbWl0YDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBlbmRpbmcgaW52aXRlcyB0byByZW1vdmUuRHNldF9pbnZpdGVfdGlja2V0BAEYdGlja2V0BAEsVGlja2V0T2Y8VD4ACBhISW52aXRlIGFuIGFjY291bnQuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCBoYXZlIHNvbWUgaW52aXRlcyBsZWZ0LiBUaGUgY2FsbCBpcyBmcmVlIG9uIHN1Y2Nlc3MuAJQtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBzZXQuUGNhbmNlbF9pbnZpdGVfdGlja2V0BAEYdGlja2V0BAEsVGlja2V0T2Y8VD4ACRREQ2FuY2VsIGFuIGludml0ZS4AIQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBhY2NvdW50IHRoYXQgb3ducyB0aGUgdGlja2V0IHRvIGNhbmNlbC4AoC0gYHRpY2tldGA6IFRoZSBpbnZpdGUgdGlja2V0IHRvIGNhbmNlbC44c2NoZWR1bGVfZ2FtZXMEATxnYW1lc19zY2hlZHVsZXPFBAFYVmVjPEdhbWVTY2hlZHVsZU9mPFQ+PgAKCNBTY2hlZHVsZXMgbmV3IGdhbWVzIGFjY29yZGluZyB0byBwcm92aWRlZCBzY2hlZHVsZXMuXQFTY2hlZHVsZXMgbXVzdCBiZSBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyLCBhbmQgYWZ0ZXIgdGhlIG9uZ29pbmcgZ2FtZSAoaWYgdGhlcmUgaXMgYW55KS5UcmVtb3ZlX3NjaGVkdWxlZF9nYW1lBAE4Z2FtZV9wbGF5X3RpbWU4AQx1MzIACwBAc2V0X3BsYXlfZGVwb3NpdAQBGGFtb3VudEUBAUhOYXRpdmVCYWxhbmNlT2Y8VD4AEAQVAVVwZGF0ZSB0aGUgY29uZmlndXJlZCBwbGF5IGRlcG9zaXQgYW1vdW50IGZvciBmdXR1cmUgYWNjb3VudCBzaWdudXBzLjRjbGFpbV9haXJkcm9wDAEoZ2FtZV9pbmRleDgBHEdhbWVJZHgAATRhaXJkcm9wX2luZGV4DAEIdTgAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAARSC0BQ2xhaW0gYSBwcml6ZSBmcm9tIHRoZSBhaXJkcm9wIGV2ZW50IGF0IGluZGV4IGBhaXJkcm9wX2luZGV4YCBzY2hlZHVsZWQgZm9yNGBnYW1lX2luZGV4YC4AOQFBIGdhbWUgc2NoZWR1bGVzIG9uZSBhaXJkcm9wIGV2ZW50IHBlciBlbnRyeSBpbiBpdHMgc2NoZWR1bGUncyBgYWlyZHJvcHNgIChzZWVRAVtgR2FtZVNjaGVkdWxlYF0pOyBgYWlyZHJvcF9pbmRleGAgc2VsZWN0cyB3aGljaCBvZiB0aGVtIHRvIGNsYWltIGZyb20uIEEgcGxheWVyIHdobyEBd29uIHNldmVyYWwgb2YgdGhlIGdhbWUncyBhaXJkcm9wIGV2ZW50cyBjbGFpbXMgZWFjaCBvZiB0aGVtIHNlcGFyYXRlbHkuAGEBRWxpZ2liaWxpdHkgcmVxdWlyZXMgMiBjb25kaXRpb25zIG9uIHRoZSBjbGFpbWFudCB0byBiZSByZWNvZ25pemVkIGFuZCBoYXZlIGF0dGVuZGVkIHRoZVhnYW1lLiBJbiBtb3JlIGRldGFpbHM6UQEqIHRvIGJlIGVpdGhlciByZWNvZ25pemVkIGluIHBhbGxldC1zY29yZSAoYHJlY29nbml0aW9uLmlzX3JlY29nbml6ZWQoKWApIG9yIHRvIGhhdmXYICByZWFjaGVkIHRoZSBwZXJzb25ob29kIHNjb3JlIChgcmVhY2hlZF9wZXJzb25ob29kYCksYQEqIEFORCBmb3IgYGdhbWVfaW5kZXhgIHRvIG1hdGNoIHRoZSBwYXJ0aWNpcGFudCdzIGBsYXN0X2F0dGVuZGVkX2dhbWVgIOKAlCBpLmUuIHRoZSBtb3N0UQEgIHJlY2VudCBnYW1lIHRoZSBjbGFpbWFudCBhY3R1YWxseSBhdHRlbmRlZCBtdXN0IGJlIGV4YWN0bHkgdGhlIGdhbWUgdGhlIGFpcmRyb3AgaXNVASAgdGllZCB0by4gU3Vic2VxdWVudCBnYW1lIGF0dGVuZGFuY2Ugb3ZlcnJpZGVzIHRoaXMgaW5mb3JtYXRpb24gc28gdGhlIGNsYWltIG11c3QgYmVhASAgbWFkZSBiZWZvcmUgYXR0ZW5kaW5nIGFub3RoZXIgZ2FtZS4gSW4gcGFydGljdWxhciBhbiBhaXJkcm9wIGV2ZW50IGRyYXduIGxhdGUgcmVsYXRpdmVJASAgdG8gdGhlIGdhbWUgcGxheSB0aW1lIG11c3QgYmUgY2xhaW1lZCBiZWZvcmUgdGhlIGNsYWltYW50IGF0dGVuZHMgdGhlIG5leHQgZ2FtZS4AtENsYWltcyBhZ2FpbnN0IGEgY2FuY2VsbGVkIGdhbWUgYXJlIHJlamVjdGVkLmx0ZXN0bmV0X2ZvcmNlX3N0YXJ0X3NodWZmbGUAZQzURm9yY2Ugc3RhcnQgdGhlIHNodWZmbGUgYmVmb3JlIGl0cyBub3JtYWwgc3RhcnQgdGltZS4ATQFUaGlzIGFjdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgYnkgdGhlIHJvb3Qgb3JpZ2luIGFuZCBpcyBvbmx5IG1lYW50IGZvciB0ZXN0aW5nLmx0ZXN0bmV0X2ZvcmNlX2VuZF9yZXBvcnRpbmcAZgz4Rm9yY2UgZW5kIGEgZ2FtZSdzIHJlcG9ydGluZyBwaGFzZSBiZWZvcmUgaXRzIG5vcm1hbCBlbmQgdGltZS4ATQFUaGlzIGFjdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgYnkgdGhlIHJvb3Qgb3JpZ2luIGFuZCBpcyBvbmx5IG1lYW50IGZvciB0ZXN0aW5nLjxzZXRfZ2FtZV9waGFzZXMEARhwaGFzZXPhBAFMUGhhc2VEdXJhdGlvblZhbHVlcwAOLIhPdmVycmlkZSB0aGUgZ2FtZSBwaGFzZSBkdXJhdGlvbnMuACkBUmVzdHJpY3RlZCB0byBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdIChvciByb290KS4gVW50aWwgcmVzZXQsIGFsbCBmdXR1cmU1AWdhbWUgc2NoZWR1bGVzIHVzZSB0aGVzZSBwaGFzZXMgaW5zdGVhZCBvZiBbYENvbmZpZzo6RGVmYXVsdFBoYXNlRHVyYXRpb25zYF0uDQFUbyByZXZlcnQsIHRoZSBtYW5hZ2VyIHJlLWlzc3VlcyB0aGUgY2FsbCB3aXRoIHRoZSBkZXNpcmVkIGV4cGxpY2l0wHZhbHVlcyDigJQgdGhlcmUgaXMgbm8gc2VwYXJhdGUgY2xlYXIgZXh0cmluc2ljLgAZAU9ubHkgY2FsbGFibGUgd2hpbGUgbm8gZ2FtZSBleGlzdHMgb3IgdGhlIGN1cnJlbnQgZ2FtZSBpcyBzdGlsbCBpbiBpdHMpAVJlZ2lzdHJhdGlvbiBwaGFzZTsgb3RoZXJ3aXNlIGZhaWxzIHdpdGggW2BFcnJvcjo6SW52YWxpZEdhbWVTdGF0ZWBdLiBUaGlzHQFwcmV2ZW50cyBjaGFuZ2luZyBwaGFzZSBkdXJhdGlvbnMgb25jZSBwbGF5ZXJzIGhhdmUgY29tbWl0dGVkIHRvIGEgZ2FtZYh3aG9zZSB0aW1pbmcgaXMgYWxyZWFkeSBsb2NrZWQgaW4uLGNhbmNlbF9nYW1lAA8MPQFDYW5jZWwgdGhlIGN1cnJlbnQgZ2FtZSB3aGlsZSBpdCBpcyBzdGlsbCBpbiB0aGUgUmVnaXN0cmF0aW9uIG9yIFNodWZmbGUgcGhhc2UuAMhSZXN0cmljdGVkIHRvIFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0gKG9yIHJvb3QpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6ZBAQYT3B0aW9uBARUAZ0EAQgQTm9uZQAAABBTb21lBACdBAAAAQAAnQQMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzLEFpcmRyb3BWcmZzBARQAAEIHEFjY291bnQEAKEEAQEBQm91bmRlZFZlYzxWcmZTaWduYXR1cmUsIENvbnN0VTMyPHsgTUFYX0dBTUVfQUlSRFJPUFMgYXMgdTMyIH0+PgAAABRBbGlhcwwBGHByb29mc60EAdRCb3VuZGVkVmVjPFAsIENvbnN0VTMyPHsgTUFYX0dBTUVfQUlSRFJPUFMgYXMgdTMyIH0+PgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQAAoQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGlBARTAAAEAKkEARhWZWM8VD4AAKUEEBxzcF9jb3JlHHNyMjU1MTkMdnJmMFZyZlNpZ25hdHVyZQAACAEocHJlX291dHB1dAgBMFZyZlByZU91dHB1dAABFHByb29mcQQBIFZyZlByb29mAACpBAAAAqUEAK0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBHQQEUwAABAAhBAEYVmVjPFQ+AACxBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbUEBFMAAAQAwQQBGFZlYzxUPgAAtQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG5BARTAAAEAL0EARhWZWM8VD4AALkEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcxhSZXBvcnQAAQgYUGVyc29uAAAAJE5vdFBlcnNvbgABAAC9BAAAArkEAMEEAAACtQQAxQQAAALJBADJBAxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMwR2FtZVNjaGVkdWxlCBxBc3NldElkAXEBHEJhbGFuY2UBRQEAEAE4Z2FtZV9wbGF5X3RpbWU4AQx1MzIAARhyb3VuZHMMAQh1OAABOG1heF9ncm91cF9zaXplOAEMdTMyAAEgYWlyZHJvcHPNBAFJAUJvdW5kZWRWZWM8R2FtZUFpcmRyb3A8QXNzZXRJZCwgQmFsYW5jZT4sIENvbnN0VTMyPAp7IE1BWF9HQU1FX0FJUkRST1BTIGFzIHUzMiB9Pj4AAM0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB0QQEUwAABADdBAEYVmVjPFQ+AADRBAxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMsR2FtZUFpcmRyb3AIHEFzc2V0SWQBcQEcQmFsYW5jZQFFAQAMASxkcmF3X29mZnNldDgBDHUzMgABMGNsYWltX3dpbmRvdzgBDHUzMgABFHByaXpl1QQBeEFpcmRyb3BQcml6ZTxBc3NldElkLCBCYWxhbmNlPgAA1QQMUGluZGl2X3BhbGxldF9haXJkcm9wFHR5cGVzMEFpcmRyb3BQcml6ZQgcQXNzZXRJZAFxATBBc3NldEJhbGFuY2UBRQEAEAEgYXNzZXRfaWRxAQEcQXNzZXRJZAABMGFzc2V0X2Ftb3VudEUBATBBc3NldEJhbGFuY2UAASxtYXhfd2lubmVyczgBDHUzMgABKHdpbm5lcl9jYXDZBAEcUGVybWlsbAAA2QQMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJtaWxsAAAEADgBDHUzMgAA3QQAAALRBADhBAxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNMUGhhc2VEdXJhdGlvblZhbHVlcwAAFAEwcmVnaXN0cmF0aW9uOAEMdTMyAAEcc2h1ZmZsZTgBDHUzMgABTHBvc3Rfc2h1ZmZsZV9tYXJnaW44AQx1MzIAASRyZXBvcnRpbmc4AQx1MzIAAThwbGF5ZXJfcHJvY2VzczgBDHUzMgAA5QQMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQQQ2FsbAQEVAABJFhzY2hlZHVsZV9wYXlvdXRfcm91bmRzDAEYYW1vdW50RQEBMEJhbGFuY2VPZjxUPgABFGNvdW50OAEMdTMyAAEgZHVyYXRpb244AURCbG9ja051bWJlckZvcjxUPgABDFxTY2hlZHVsZSBwYXlvdXQgcm91bmRzLgCQQ2FsbGVkIGZyb20gYE1hbmFnZXJPcmlnaW5gIG9yIHJvb3QuWHJlbW92ZV9wYXlvdXRfc2NoZWR1bGUEARRpbmRleDgBDHUzMgACDIBSZW1vdmUgYSBzY2hlZHVsZWQgcGF5b3V0IHJvdW5kLgCQQ2FsbGVkIGZyb20gYE1hbmFnZXJPcmlnaW5gIG9yIHJvb3QuQHRyYW5zaXRpb25fcm91bmQEASxyb3VuZF9pbmRleDgBDHUzMgADGEhTdGFydCBhIG5ldyByb3VuZC4AUQFUaGlzIGlzIHZhbGlkIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGZpbmlzaGVkLCBvciBpZiB0aGUgY3VycmVudCByb3VuZCBkb2Vzbid0IGhhdmWocGxhbm5pbmcgYW5kIGEgc2NoZWR1bGUgZXhpc3RzIHRvIHBsYW4gaXQuALxUaGlzIGlzIGEgdGFzaywgYW5kIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnlib2R5LlBvcGVyYXRlX3BheW91dF9yb3VuZAgBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleAABFGxpbWl0OAEMdTMyAAQ8eE9wZXJhdGUgc29tZSByb3VuZCBwYXlpbmcgb3V0LgBRAURyYWlucyByb3VuZCdzIHBhcnRpY2lwYW50cywgdXAgdG8gYSBsaW1pdC4gRm9yIGVhY2ggcGFydGljaXBhbnQsIGFkZCB0aGUgY2FsY3VsYXRlZBUBcmV3YXJkIChgYmFzZV9yZXdhcmQgKyByZW1haW5kZXJfcG9ydGlvbmApIHRvIHRoZWlyIGBjcmVkaXRgIGJhbGFuY2UuAGEBVGhlbiwgbW92ZXMgZnVuZHMgb24gdGhlIHBvdCBhY2NvdW50IGZyb20gUGF5b3V0IHRvIENyZWRpdCwgc28gdGhleSBhcmUgb3dlZCB0byBzcGVjaWZpY6BwYXJ0aWNpcGFudHMgcmF0aGVyIHRoYW4gdGhlIHJvdW5kIHBvb2wuAEUBRmluYWxseSwgcmVsZWFzZSB0aGUgbGVmdG92ZXIgZnJvbSB0aGUgUGF5b3V0IGhvbGQgYmFjayB0byB0aGUgcG90J3MgZnJlZSBiYWxhbmNlVChmdW5kcyBhcmUgcmVjeWNsZWQpLgC8VGhpcyBpcyBhIHRhc2ssIGFuZCBjYW4gYmUgY2FsbGVkIGZyb20gYW55Ym9keS4AxCogcm91bmRfaW5kZXg6IFRoZSBpbmRleCBvZiB0aGUgcm91bmQgdG8gb3BlcmF0ZS4RASogbGltaXQ6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJ0aWNpcGFudHMgdG8gb3BlcmF0ZSBpbiB0aGlzIGNhbGwuIGNhc2hfb3V0AAUkWQFDYXNoIG91dCBoYWxmIG9mIHRoZSBzY29yZSwgcm91bmRlZCB1cC4gQ29udmVydHMgdGhlIHNjb3JlIGludG8gcG9pbnRzIGZvciB0aGUgY3VycmVudCUBcGF5b3V0IHJvdW5kLiBDYWxsZXIgbXVzdCBoYXZlIG5ldmVyIHJlYWNoZWQgcGVyc29uaG9vZCBzaW5jZSBvbmJvYXJkaW5nLgC0SXQgY2FuIGJlIGNhbGxlZCBvbmNlIHBlciBnYW1lIHNlc3Npb24gKGVyYSkuAD0BT3JpZ2luIG11c3QgYmUgc2lnbmVkIG9yIHBhcnRpY2lwYW50IChzaWduZWQgZXh0cmluc2ljIHVzaW5nIFNjb3JlQXNQYXJ0aWNpcGFudFh0cmFuc2FjdGlvbiBleHRlbnNpb24pAMxBbGlhcyBvcmlnaW4gaXMgbm90IGFsbG93ZWQgYXMgdGhleSBjYW4ndCBjYXNoIG91dC40cmVkZWVtX2NyZWRpdAQBLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAYYUQFSZWRlZW0gZnVsbCBhY2N1bXVsYXRlZCBjcmVkaXQsIHRyYW5zZmVycmluZyBpdCB0byB0aGUgcHJvdmlkZWQgZGVzdGluYXRpb24gYWNjb3VudC4A5ENyZWRpdCBpcyBjb252ZXJ0ZWQgZnJvbSBwb2ludHMgZHVyaW5nIHBheW91dCBwcm9jZXNzaW5nLgBJAU9yaWdpbiBtdXN0IGJlIGEgcGVyc29uIGFsaWFzLCBhIHNpZ25lZCBhY2NvdW50IG9yIGEgcGFydGljaXBhbnQgKHNpZ25lZCBleHRyaW5zaWPAdXNpbmcgU2NvcmVBc1BhcnRpY2lwYW50IHRyYW5zYWN0aW9uIGV4dGVuc2lvbikuIHJlZ2lzdGVyBAEMa2V56QQBDQFPcHRpb248KE1lbWJlck9mPFQ+LDxUOjpDcnlwdG8gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlKQo+AAc08FJlZ2lzdGVyIGFzIGEgcGVyc29uLCBvciByZXN1bWUgcGVyc29uaG9vZCBhZnRlciBzdXNwZW5zaW9uLgAlAVJlcXVpcmVzIHNjb3JlID49IHBlcnNvbmhvb2QgdGhyZXNob2xkIChvciBoYXZpbmcgcHJldmlvdXNseSByZWFjaGVkIGl0KS4AYQFJZiB0aGUgcGFydGljaXBhbnQgd2FzIHByZXZpb3VzbHkgcmVjb2duaXNlZCBhbmQgaXMgbm93IHN1c3BlbmRlZCwgdGhleSBtdXN0IG5vdCBwcm92aWRliGEga2V5LiBUaGUgZXhpc3Rpbmcga2V5IGlzIHJldXNlZC4APQFJZiB0aGUgcGFydGljaXBhbnQgd2FzIG5ldmVyIHJlY29nbmlzZWQsIHRoZXkgbXVzdCBwcm92aWRlIGEga2V5IGFuZCBhIHByb29mIG9mGQFvd25lcnNoaXAgKGBrZXlgIHBhcmFtZXRlcik6IGEgc2lnbmF0dXJlIG92ZXIgYCJwb3AgcmVnaXN0ZXIgdXNpbmciIHx8THNlbmRlcl9hY2NvdW50X2lkYC4ARQFPcmlnaW4gbXVzdCBiZSBzaWduZWQgb3IgYSBwYXJ0aWNpcGFudCAoc2lnbmVkIGV4dHJpbnNpYyB1c2luZyBTY29yZUFzUGFydGljaXBhbnRcdHJhbnNhY3Rpb24gZXh0ZW5zaW9uKS5oc2V0X2Fic2VuY2VfZ3JhY2Vfc2NoZWR1bGUEASBzY2hlZHVsZfEEAURBYnNlbmNlR3JhY2VUaWVycwAIOHxTZXQgdGhlIGFic2VuY2UgZ3JhY2Ugc2NoZWR1bGUuACkBRXZlcnkgdGllciBtdXN0IHNhdGlzZnk6IGAwIDw9IHdpbmRvdyA8PSA4YCBhbmQgYGFsbG93ZWRfbWlzc2VzIDwgd2luZG93YC4VAWBhbGxvd2VkX21pc3NlcyA9IDBgIGRpc2FibGVzIGdyYWNlIGVudGlyZWx5IChhbnkgYWJzZW5jZSBpbW1lZGlhdGVseShzdXNwZW5kcykuACUBVGllcnMgbXVzdCBiZSBwcm92aWRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLgD8QW4gZW1wdHkgc2NoZWR1bGUgZGlzYWJsZXMgdGhlIGdyYWNlIHBlcmlvZCBlbnRpcmVseSAoaW1tZWRpYXRlHQFzdXNwZW5zaW9uIG9uIGFueSBtaXNzZWQgZ2FtZSkuIFRoZSBuZXcgcmF0aW8gdGFrZXMgZWZmZWN0IGF0IHRoZSBzdGFydAkBb2YgdGhlIG5leHQgcmVwb3J0IHNlc3Npb24gd2hlbiBgdXBkYXRlX3RocmVzaG9sZHMoKWAgcmVjYWxjdWxhdGVzUGBBYnNlbmNlR3JhY2VSYXRpb2AuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC6Ec2V0X3BlcnNvbmhvb2RfdGhyZXNob2xkX3NjaGVkdWxlBAEgc2NoZWR1bGX9BAFgUGVyc29uaG9vZFRocmVzaG9sZFRpZXJzAAlAmFNldCB0aGUgcGVyc29uaG9vZC10aHJlc2hvbGQgc2NoZWR1bGUuADhUaWVycyBtdXN0IGJlOjAtIG5vbi1lbXB0eSzILSBzb3J0ZWQgYXNjZW5kaW5nIGJ5IGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkYCwZAS0gY2FwcGVkIGJ5IGEgZmluYWwgdGllciB3aXRoIGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkID09IHUzMjo6TUFYYCwVAS0gcGVyLXRpZXI6IGAwIDwgc2NvcmVfdGhyZXNob2xkIDw9IE1BWF9QRVJTT05IT09EX1RIUkVTSE9MRGAgKD0gMjEpLNQtIGhhdmUgbm9uLWRlY3JlYXNpbmcgYHNjb3JlX3RocmVzaG9sZGAgYWNyb3NzIHRpZXJzLgAJAVRoZSBuZXcgY3VydmUgdGFrZXMgZWZmZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCByZXBvcnQgc2Vzc2lvbvh3aGVuIGB1cGRhdGVfdGhyZXNob2xkcygpYCByZWNhbGN1bGF0ZXMgYFBlcnNvbmhvb2RUaHJlc2hvbGRgLgABAUFscmVhZHktcmVjb2duaXplZCBwYXJ0aWNpcGFudHMgYXJlIE5PVCByZXRyb2FjdGl2ZWx5IHN1c3BlbmRlZDoRAXRoZSBuZXcgYmFyIG9ubHkgZ2F0ZXMgZnV0dXJlIHNjb3JlIGV2YWx1YXRpb25zIGluIGBzZXRfYXR0ZW5kYW5jZWAuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu6QQEGE9wdGlvbgQEVAHtBAEIEE5vbmUAAAAQU29tZQQA7QQAAAEAAO0EAAAECAhxBADxBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfUEBFMAAAQA+QQBGFZlYzxUPgAA9QQMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlc0BBYnNlbmNlR3JhY2VUaWVyAAAMAWRwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkOAEMdTMyAAEYd2luZG93DAEIdTgAAThhbGxvd2VkX21pc3NlcwwBCHU4AAD5BAAAAvUEAP0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBAQUEUwAABAAFBQEYVmVjPFQ+AAABBQxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzXFBlcnNvbmhvb2RUaHJlc2hvbGRUaWVyAAAIAWRwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkOAEMdTMyAAE8c2NvcmVfdGhyZXNob2xkDAEIdTgAAAUFAAACAQUACQUMYGluZGl2X3BhbGxldF9uZnRfY3JlZGl0cxhwYWxsZXQQQ2FsbAQEVAABDERzZW5kX2NyZWRpdF90cmVlcwgBOGZpcnN0X3NlcXVlbmNlKAEwVHJlZVNlcXVlbmNlAAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+ABIcSQFEZWxpdmVycyB0aGUgcXVldWVkIGNyZWRpdCB0cmVlcyB0aGF0IGZpdCBvbmUgWENNIG1lc3NhZ2UgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4uAEUBQXV0aG9yaXplZCBjYWxsIHN1Ym1pdHRlZCBieSB0aGlzIHBhbGxldCdzIG9mZmNoYWluIHdvcmtlcjogaXQgaXMgYWNjZXB0ZWQgZnJvbSBhEQFsb2NhbCBvciBpbi1ibG9jayBzb3VyY2Ugb25seSwgc28gaXQgY2Fubm90IGJlIHN1Ym1pdHRlZCBleHRlcm5hbGx5LgBZAWBmaXJzdF9zZXF1ZW5jZWAgbXVzdCBiZSB0aGUgc2VxdWVuY2UgYXQgdGhlIGZyb250IG9mIGBDcmVkaXRUcmVlRGVsaXZlcnlRdWV1ZWAsIHdoaWNoPQFtYWtlcyBhIHJldHJ5IHRoYXQgcmFjZWQgYSBzdWNjZXNzZnVsIGRlbGl2ZXJ5IHN0YWxlIHJhdGhlciB0aGFuIGEgc2Vjb25kIHNlbmQuTHJlcGxheV9jcmVkaXRfdHJlZXMEARhibG9ja3MNBQHoQm91bmRlZFZlYzxCbG9ja051bWJlckZvcjxUPiwgVDo6TWF4Q3JlZGl0VHJlZXNQZXJNZXNzYWdlPgATQPRSZXNlbmRzIHRoZSBjcmVkaXQgdHJlZXMgb2YgYGJsb2Nrc2AgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4uAF0BUGVybWlzc2lvbmxlc3M6IGEgY3JlZGl0IHRyZWUgaXMgYSBwdWJsaWMgY29tbWl0bWVudCB0aGUgY2xhaW1zIGNoYWluIGlzIG1lYW50IHRvIGhvbGQsXQFhbmQgdGhlIHRyZWVzIGFyZSByZWFkIGZyb20gW2BOZnRDbGFpbUNyZWRpdFJvb3RzYF0gcmF0aGVyIHRoYW4gc3VwcGxpZWQgYnkgdGhlIGNhbGxlci5RAUJsb2NrcyB3aXRob3V0IGEgdHJlZSBhcmUgc2tpcHBlZC4gQSByZXNlbnQgdHJlZSBjYXJyaWVzIG5vIHNlcXVlbmNlIG51bWJlciwgc28gdGhpc10BY2Fubm90IGRpc3R1cmIgdGhlIGNsYWltcyBjaGFpbidzIHRyYWNraW5nIG9mIHRoZSBsaXZlIHN0cmVhbSwgYW5kIG9uZSB0aGUgY2xhaW1zIGNoYWluAQFhbHJlYWR5IGhvbGRzIGlzIGlnbm9yZWQgdGhlcmUgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgYW55dGhpbmcuAE0BT25lIHJlcGxheSBydW5zIHBlciBbYENvbmZpZzo6UmVwbGF5Q29vbGRvd25TZWNvbmRzYF0sIGNvdW50ZWQgZnJvbSB0aGUgbGFzdCBvbmUgYnlMW2BMYXN0UmVwbGF5VGltZWBdLgBZAVRoZSBjYWxsZXIgcGF5cyBmb3IgdGhlIHJlbW90ZSB3b3JrLCBbYENvbmZpZzo6TmZ0Q2xhaW1zUmVtb3RlV2VpZ2h0YF0gcGVyIHRyZWUgb24gdG9waG9mIHRoaXMgY2FsbCdzIG93biB3ZWlnaHQuADQjIyBQYXJhbWV0ZXJzEQEtIGBibG9ja3NgOiBUaGUgYXdhcmQgYmxvY2tzIHRvIHJlc2VuZCwgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLnh0ZXN0bmV0X2dyYW50X25mdF9jbGFpbV9jcmVkaXQUASBjbGFpbWFudBEFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgABIGF0dGVzdGVyEQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAEoZ2FtZV9pbmRleDgBHEdhbWVJZHgAARRyb3VuZAwBKFJvdW5kSW5kZXgAAURhdHRlc3Rlcl9wb3NpdGlvbjgBQEF0dGVzdGVyUG9zaXRpb24AZ2DoQXdhcmQgYW4gTkZUIGNsYWltIGNyZWRpdCB0byBgY2xhaW1hbnRgIG91dHNpZGUgb2YgYSBnYW1lLgBNAVRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBieSB0aGUgcm9vdCBvcmlnaW4gYW5kIGlzIG9ubHkgbWVhbnQgZm9yIHRlc3RpbmcuSQFJdCBleGlzdHMgYmVjYXVzZSBhIGNyZWRpdCBpcyBvdGhlcndpc2Ugb25seSBlYXJuZWQgYnkgYSBgUGVyc29uYCB2b3RlIGluIGEgcGxheWVkRQFnYW1lLCB3aGljaCBtYWtlcyB0aGUgY2xhaW0gY2hhaW4ncyBtaW50aW5nIHBhdGggaGFyZCB0byBleGVyY2lzZSBvbiBpdHMgb3duLiBUaGUBAWNyZWRpdCBpdCBhd2FyZHMgaXMgYSBub3JtYWwgb25lOiBpdCBpcyByZWNvcmRlZCBpbiB0aGlzIGJsb2NrJ3NFAVtgTmZ0Q2xhaW1DcmVkaXRBd2FyZHNgXSwgY29tbWl0dGVkIHRvIHRoZSBibG9jaydzIHRyZWUgYW5kIGNsYWltZWQgd2l0aCB0aGUgc2FtZUxwcm9vZiBhcyBhbnkgb3RoZXIuAFEBVGhlIGNyZWRpdCBpcyB0aGUgb25lIGBhdHRlc3RlcmAgd291bGQgZWFybiBgY2xhaW1hbnRgIGJ5IHJlcG9ydGluZyB0aGVtIGEgcGVyc29uIGluSQFgcm91bmRgIG9mIGBnYW1lX2luZGV4YCwgc28gaXQgZG9lcyBub3QgbmVlZCBhbnkgb2YgdGhvc2UgdG8gZXhpc3QuIEEgc2xvdCBpcyB1c2VkUQFvbmNlIHBlciBjbGFpbWFudCBhbmQgZ2FtZTogcmVwZWF0aW5nIGEgY2FsbCB3aXRoIHRoZSBzYW1lIGBnYW1lX2luZGV4YCwgYHJvdW5kYCBhbmRdAWBhdHRlc3Rlcl9wb3NpdGlvbmAgZm9yIHRoZSBzYW1lIGBjbGFpbWFudGAgZmFpbHMgcmF0aGVyIHRoYW4gYXdhcmRpbmcgYSBzZWNvbmQgY3JlZGl0LqBWYXJ5IGFueSBvZiB0aGVtIHRvIGF3YXJkIG1vcmUgdGhhbiBvbmUuACxQYXJhbWV0ZXJzOk0BLSBgY2xhaW1hbnRgOiB3aG8gdGhlIGNyZWRpdCBpcyBhd2FyZGVkIHRvLCBhbmQgdGhlIG9ubHkgaWRlbnRpdHkgdGhhdCBjYW4gbWludCBpdC5VAS0gYGF0dGVzdGVyYDogdGhlIHJlcG9ydGVyIHRoZSBjcmVkaXQgaXMgYXR0cmlidXRlZCB0bywgd2hpY2ggYWxvbmcgd2l0aCBgZ2FtZV9pbmRleGAhASAgYW5kIGByb3VuZGAgaXMgd2hhdCBtYWtlcyB0aGUgY3JlZGl0IGRpc3RpbmN0IGZyb20gYW5vdGhlciBjbGFpbWFudCdzLlEBLSBgZ2FtZV9pbmRleGA6IHRoZSBnYW1lIHRoZSBjcmVkaXQgaXMgYXR0cmlidXRlZCB0by4gQWxsIHRoZSBjcmVkaXRzIGEgYmxvY2sgYXdhcmRzHQEgIG11c3QgbmFtZSB0aGUgc2FtZSBnYW1lLCBzaW5jZSB0aGUgYmxvY2sncyB0cmVlIGlzIGxhYmVsbGVkIHdpdGggb25lLtQtIGByb3VuZGA6IHRoZSByb3VuZCBvZiB0aGF0IGdhbWUsIGJlbG93IGBNYXhSb3VuZHNgLmEBLSBgYXR0ZXN0ZXJfcG9zaXRpb25gOiB0aGUgYXR0ZXN0ZXIncyBwbGFjZSBpbiB0aGUgZ3JvdXAsIGJlbG93IGBNYXhHcm91cFNpemVgLiBUb2dldGhlcgEBICB3aXRoIGByb3VuZGAgaXQgcGlja3MgdGhlIGNsYWltYW50J3MgY3JlZGl0IHNsb3QgZm9yIHRoZSBnYW1lLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4NBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABpBAEYVmVjPFQ+AAARBQw0aW5kaXZfc3VwcG9ydCBpZGVudGl0eTxBY2NvdW50T3JQZXJzb24EJEFjY291bnRJZAEEAQgcQWNjb3VudAQABAEkQWNjb3VudElkAAAAGFBlcnNvbgQACAEUQWxpYXMAAQAAFQUMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0EENhbGwEBFQAASAscmVzZXJ2ZV9pZHMEARRjb3VudDgBDHUzMgAABIRSZXNlcnZlIGEgbnVtYmVyIG9mIHBlcnNvbmFsIElEcy5QcmVuZXdfaWRfcmVzZXJ2YXRpb24EAQhpZCgBKFBlcnNvbmFsSWQAAQS8UmVuZXcgYSBwZXJzb25hbCBJRC4gVGhlIElEIG11c3Qgbm90IGJlIGluIHVzZS5UY2FuY2VsX2lkX3Jlc2VydmF0aW9uBAEIaWQoAShQZXJzb25hbElkAAIEhENhbmNlbCBhIHBlcnNvbmFsIElEIHJlc2VydmF0aW9uLlByZWNvZ25pemVfcGVyc29uaG9vZAQBMGlkc19hbmRfa2V5cxkFAfBCb3VuZGVkVmVjPChQZXJzb25hbElkLCBNZW1iZXJPZjxUPiksIFQ6Ok1heFBlcnNvbkJhdGNoU2l6ZT4AAwQpAUdyYW50IHBlcnNvbmhvb2QgZm9yIGEgbGlzdCBvZiBjYW5kaWRhdGVzIHRoYXQgaGF2ZSByZXNlcnZlZCBwZXJzb25hbCBJRHMuSHN1c3BlbmRfcGVyc29uaG9vZAQBDGlkcyUFAbRCb3VuZGVkVmVjPFBlcnNvbmFsSWQsIFQ6Ok1heFBlcnNvbkJhdGNoU2l6ZT4ABAhdAVN1c3BlbmQgdGhlIHBlcnNvbmhvb2Qgb2YgYSBsaXN0IG9mIHJlY29nbml6ZWQgcGVvcGxlLiBUaGUgcGVvcGxlIG11c3Qgbm90IGN1cnJlbnRseSBiZShzdXNwZW5kZWQuRHJlc3VtZV9wZXJzb25ob29kBAEIaWQoAShQZXJzb25hbElkAAUEEQFSZXN1bWUgc29tZW9uZSdzIHBlcnNvbmhvb2QuIFRoZSBwZXJzb24gbXVzdCBjdXJyZW50bHkgYmUgc3VzcGVuZGVkLlhzdGFydF9tdXRhdGlvbl9zZXNzaW9uAAYIXQFTdGFydCBhIG11dGF0aW9uIHNlc3Npb24gaW4gdGhlIHVuZGVybHlpbmcgYFBlb3BsZWAgaW50ZXJmYWNlLiBUaGlzIGNhbGwgZG9lcyBub3QgY2hlY2slAXdoZXRoZXIgYSBtdXRhdGlvbiBzZXNzaW9uIGlzIGFscmVhZHkgb25nb2luZyBhbmQgY2FuIHN0YXJ0IG5ldyBzZXNzaW9ucy5QZW5kX211dGF0aW9uX3Nlc3Npb24ABxBdAUVuZCBhIG11dGF0aW9uIHNlc3Npb24gaW4gdGhlIHVuZGVybHlpbmcgYFBlb3BsZWAgaW50ZXJmYWNlLiBUaGlzIGNhbGwgY2FuIGVuZCBtdWx0aXBsZeBtdXRhdGlvbiBzZXNzaW9ucywgZXZlbiBvbmVzIG5vdCBzdGFydGVkIGJ5IHRoaXMgcGFsbGV0LgDYVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBubyBtdXRhdGlvbiBzZXNzaW9uIGlzIG9uZ29pbmcuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBHQUEUwAABAAhBQEYVmVjPFQ+AAAdBQAABAgoCAAhBQAAAh0FACUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBKARTAAAEACkFARhWZWM8VD4AACkFAAACKAAtBQxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlGHBhbGxldBBDYWxsBARUAAEgeGluY3JlYXNlX2F0dGVzdGF0aW9uX2FsbG93YW5jZQgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgAAGCUBR3JhbnQgc29tZSBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgdG8gYW4gYWNjb3VudCBzbyB0aGV5IGNhbiBhdHRlc3QgcGVvcGxlLgDEVGhlIG9yaWdpbiBtdXN0IGJlIGBBdHRlc3RhdGlvbkFsbG93YW5jZU1hbmFnZXJgLgDILSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIGdyYW50IGF0dGVzdGF0aW9ucyB0by68LSBgY291bnRgOiBUaGUgbnVtYmVyIG9mIGF0dGVzdGF0aW9ucyB0byBncmFudC5sY2xlYXJfYXR0ZXN0YXRpb25fYWxsb3dhbmNlBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFLxDbGVhciBhbGwgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGZvciBhbiBhY2NvdW50LgDEVGhlIG9yaWdpbiBtdXN0IGJlIGBBdHRlc3RhdGlvbkFsbG93YW5jZU1hbmFnZXJgLgDkLSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSBhbGwgYXR0ZXN0YXRpb25zIGZyb20uGGF0dGVzdBQBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZAABTGNhbmRpZGF0ZV9zaWduYXR1cmV5BAFcVDo6QXR0ZXN0YXRpb25TaWduYXR1cmUAATByaW5nX3ZyZl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcHEEAThTaWduYXR1cmVPZjxUPgABVGNvbnN1bWVyX3JlZ2lzdHJhdGlvbjEFAaxPcHRpb248TGl0ZUNvbnN1bWVyUmVnaXN0cmF0aW9uUGFyYW1zT2Y8VD4+AAKMSEF0dGVzdCBhbiBhY2NvdW50LgBFAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgaGF2ZSBzb21lIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBsZWZ0LgDwVGhlIGF1dGhvcml0eSB3aWxsIGhhdmUgdG8gZ2V0IHR3byBzaWduYXR1cmVzIGZyb20gdGhlIHVzZXI6TQEtIG9uZSBjcmVhdGVkIHVzaW5nIHRoZWlyIGFjY291bnQga2V5IGF0dGVzdGluZyB0byB0aGUgb3duZXJzaGlwIG9mIHRoZSBgY2FuZGlkYXRlYCggIGFjY291bnQ7XQEtIG9uZSBjcmVhdGVkIHVzaW5nIHRoZWlyIHJpbmctdnJmIGtleSBhdHRlc3RpbmcgdG8gdGhlIG93bmVyc2hpcCBvZiB0aGUgYHJpbmdfdnJmX2tleWAYICBrZXkuAGEBVGhlIG1lc3NhZ2UgdG8gYmUgc2lnbmVkIGJ5IGJvdGgga2V5cyBmcm9tIHdoaWNoIHRoZSBzaWduYXR1cmVzIGFyZSBnZW5lcmF0ZWQgaXMgY3JlYXRlZFUBYnkgY29uY2F0ZW5hdGluZyB0aGUgYnl0ZXMgInBvcDpwZW9wbGUtbGl0ZTpyZWdpc3RlciB1c2luZyIgd2l0aCB0aGUgZW5jb2RlZCBieXRlcyBvZi0BdGhlIHVzZXIncyBhY2NvdW50IChgY2FuZGlkYXRlYCksIGFuZCB0aGUgZW5jb2RlZCBieXRlcyBvZiB0aGUgcmluZyBWUkYga2V5RChgcmluZ192cmZfa2V5YCkuAFhPbiBzdWNjZXNzLCB0aGlzIGNhbGw6wC0gc3RvcmVzIGxpdGUgcmVnaXN0cmF0aW9uIGRhdGEgaW4gYExpdGVQZW9wbGVgLPQtIGFkZHMgdGhlIHVzZXIncyByaW5nIFZSRiBrZXkgdG8gdGhlIGxpdGUgbWVtYmVyIGNvbGxlY3Rpb24uAAkBVGhlIGxpdGUgbWVtYmVyIGNvbGxlY3Rpb24gbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBjcmVhdGVkICh2aWEgdGhl6GBtaWdyYXRpb246OkNyZWF0ZUxpdGVQZW9wbGVDb2xsZWN0aW9uYCBydW50aW1lIHVwZ3JhZGUgb3KkW2BDYWxsOjpjcmVhdGVfbGl0ZV9wZW9wbGVfY29sbGVjdGlvbmBdKS4A/C0gYGNhbmRpZGF0ZWA6IFRoZSBjYW5kaWRhdGUgdG8gYmUgcmVjb2duaXplZCBhcyBhIGxpdGUgcGVyc29uLmEBLSBgY2FuZGlkYXRlX3NpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUsIHByb3ZpZGVkIGJ5IHRoZSBjYW5kaWRhdGUsIHRvIGFsbG93IHRoZSBhdHRlc3RlctwgIHRvIGNvbXBsZXRlIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBvbiB0aGVpciBiZWhhbGYuJQEtIGByaW5nX3ZyZl9rZXlgOiBUaGUgcmluZyBWUkYga2V5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGl0ZSBwZXJzb24uXQEtIGByaW5nX3ZyZl9rZXlfc2lnbmF0dXJlYDogVGhlIHJpbmcgVlJGIHNpZ25hdHVyZSwgcHJvdmlkZWQgYnkgdGhlIGNhbmRpZGF0ZSwgdG8gYWxsb3dVASAgdGhlIGF0dGVzdGVyIHRvIGNvbXBsZXRlIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy4gVGhpcyBhbHNvIHByb3ZlIHRoZSBvd25lcnNoaXAgb2aQICB0aGUgcmluZyBWUkYga2V5IGJ5IHRoZSBjYW5kaWRhdGUuXQEtIGNvbnN1bWVyX3JlZ2lzdHJhdGlvbjogT3B0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGNhbiBjb250YWluIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb25dASAgdG8gZm9yd2FyZCBhIGNvbnN1bWVyIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IHRvIHRoZSBgTGl0ZUNvbnN1bWVyUmVnaXN0cmFyYCBzZXJ2aWNlLiBJZlEBICBwcmVzZW50LCBpdCBhbHNvIGNvbnRhaW5zIGEgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgdGhlIHVzZXIgaW4gb3JkZXIgdG8gdmFsaWRhdGUgdGhlJQEgIGludGVudC4gTW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgc2lnbmluZyBwYXlsb2FkIGdlbmVyYXRpb24gYXZhaWxhYmxlIGlu7CAgW3R5cGVzOjpMaXRlQ29uc3VtZXJSZWdpc3RyYXRpb25QYXJhbXM6OnNpZ25pbmdfcGF5bG9hZF0uRHJlZ2lzdGVyX3dpdGhfZmVlDAEwcmluZ192cmZfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBxBAE4U2lnbmF0dXJlT2Y8VD4AAVRjb25zdW1lcl9yZWdpc3RyYXRpb24xBQGsT3B0aW9uPExpdGVDb25zdW1lclJlZ2lzdHJhdGlvblBhcmFtc09mPFQ+PgADSC0BUmVnaXN0ZXIgYXMgYSBsaXRlIHBlcnNvbiBieSBwYXlpbmcgdGhlIGNvbmZpZ3VyZWQgbmF0aXZlIHJlZ2lzdHJhdGlvbiBmZWUuAGEBVGhlIG9yaWdpbiBtdXN0IGJlIHRoZSBjYW5kaWRhdGUncyBzaWduZWQgYWNjb3VudC4gVGhlIGNhbmRpZGF0ZSBwcm92ZXMgb3duZXJzaGlwIG9mIHRoZUUBYHJpbmdfdnJmX2tleWAgYnkgc2lnbmluZyB0aGUgc2FtZSByZWdpc3RyYXRpb24gbWVzc2FnZSB1c2VkIGJ5IFtgU2VsZjo6YXR0ZXN0YF0uAEUBT24gc3VjY2VzcywgdGhpcyBjYWxsIHRyYW5zZmVycyB0aGUgY29uZmlndXJlZCBmZWUgdG8gdGhlIHBhbGxldCBwb3QsIHN0b3JlcyBsaXRlOQFyZWdpc3RyYXRpb24gZGF0YSBpbiBgTGl0ZVBlb3BsZWAgYW5kIGFkZHMgdGhlIHJpbmcgVlJGIGtleSB0byB0aGUgbGl0ZSBtZW1iZXKQY29sbGVjdGlvbi4gVGhlIGZlZSBpcyBub3QgcmVmdW5kZWQuAAUBVGhlIGxpdGUgbWVtYmVyIGNvbGxlY3Rpb24gbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBjcmVhdGVkIHZpYSB0aGXoYG1pZ3JhdGlvbjo6Q3JlYXRlTGl0ZVBlb3BsZUNvbGxlY3Rpb25gIHJ1bnRpbWUgdXBncmFkZSBvcqBbYENhbGw6OmNyZWF0ZV9saXRlX3Blb3BsZV9jb2xsZWN0aW9uYF0uACUBLSBgcmluZ192cmZfa2V5YDogVGhlIHJpbmcgVlJGIGtleSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGxpdGUgcGVyc29uLk0BLSBgcHJvb2Zfb2Zfb3duZXJzaGlwYDogVGhlIHJpbmcgVlJGIHNpZ25hdHVyZSBwcm92aW5nIG93bmVyc2hpcCBvZiBgcmluZ192cmZfa2V5YC5JAS0gYGNvbnN1bWVyX3JlZ2lzdHJhdGlvbmA6IE9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gcmVnaXN0ZXIgdGhlIGNhbmRpZGF0ZSBhcyBhIGxpdGVVASAgY29uc3VtZXIuIFRoZSByZXF1ZXN0IG11c3QgY29udGFpbiBhIHNpZ25hdHVyZSBvdmVyIHRoZSB1c3VhbCBjb25zdW1lciBwYXlsb2FkIHdpdGgpASAgdGhlIHNpZ25lZCBjYW5kaWRhdGUgYWNjb3VudCBpbiBib3RoIHRoZSBhY2NvdW50IGFuZCB2ZXJpZmllciBwb3NpdGlvbnMuSGRpc3BhdGNoX2FzX3NpZ25lcgQBEGNhbGwgAUxCb3g8VDo6UnVudGltZUNhbGw+AAUARHNldF9hbGlhc19hY2NvdW50CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABOHZhbGlkX2F0X2Jsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4ABji0U2V0IHRoZSBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCBhIGxpdGUgYWxpYXMuALRUaGUgY2FsbCBpcyB2YWxpZCBmcm9tIGB2YWxpZF9hdF9ibG9ja2AgdW50aWzEYHZhbGlkX2F0X2Jsb2NrICsgYWNjb3VudF9zZXR1cF9ibG9ja190b2xlcmFuY2VgLgAlAVRoaXMgY2FsbCBpcyBhdXRob3JpemVkIHRocm91Z2ggdGhlIGBBc0xpdGVBbGlhc1dpdGhQcm9vZmAgdmFyaWFudCBvZiB0aGUxAWBQZW9wbGVMaXRlQXV0aGAgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLCB3aGljaCBwcm92aWRlcyBubyBub25jZS1iYXNlZCByZXBsYXlFAXByb3RlY3Rpb24uIFJlcGxheSBpcyBvbmx5IHByZXZlbnRlZCBmb3IgYXMgbG9uZyBhcyB0aGUgYWxpYXMgc3RpbGwgcG9pbnRzIGF0IHRoZUkBYWNjb3VudCB0aGlzIGNhbGwgc2V0cy4gQXMgc29vbiBhcyB0aGUgYWxpYXMgaXMgcG9pbnRlZCBhdCBhIGRpZmZlcmVudCBhY2NvdW50IChieU0BYW5vdGhlciBgc2V0X2FsaWFzX2FjY291bnRgKSwgdGhpcyBjYWxsIGJlY29tZXMgcmVwbGF5YWJsZSBhZ2FpbiB1bnRpbCBpdHMgdmFsaWRpdHlZAXBlcmlvZCBlbGFwc2VzLiBDb25zZXF1ZW50bHksIGlmIDIgc3VjaCB0cmFuc2FjdGlvbnMgc2V0dGluZyAyIGRpZmZlcmVudCBhY2NvdW50cyBoYXZlWQFvdmVybGFwcGluZyB2YWxpZGl0eSBwZXJpb2RzLCB0aGV5IGNhbiBiZSByZXBsYXllZCBhZ2FpbnN0IGVhY2ggb3RoZXIgaW5kZWZpbml0ZWx5IGZvci0BdGhlIGR1cmF0aW9uIG9mIHRoZSBvdmVybGFwLiBUbyBhdm9pZCB0aGlzLCB0aGUgY2FsbGVyIG11c3Qgbm90IGhhdmUgMiBzdWNoDQF0cmFuc2FjdGlvbnMgYWxpdmUgKHdpdGhpbiB0aGVpciB2YWxpZGl0eSBwZXJpb2QpIGF0IHRoZSBzYW1lIHRpbWUuTHVuc2V0X2FsaWFzX2FjY291bnQABwB0Y3JlYXRlX2xpdGVfcGVvcGxlX2NvbGxlY3Rpb24ACCiIQ3JlYXRlIHRoZSBsaXRlIHBlb3BsZSBjb2xsZWN0aW9uLgApAVRoaXMgY2FsbCBpcyB2YWxpZCBvbmx5IGlmIHRoZSBjb2xsZWN0aW9uIGRvZXNuJ3QgZXhpc3QgeWV0LiBPbmNlIGNyZWF0ZWQsjHRoaXMgY2FsbCBjYW5ub3QgYmUgZXhlY3V0ZWQgYWdhaW4uANRUaGUgY29sbGVjdGlvbiBpcyBjcmVhdGVkIHdpdGggYSBmaXhlZCBjb25maWd1cmF0aW9uOrgtIE93bmVyOiBDb25maWd1cmVkIHZpYSBgQ29sbGVjdGlvbk93bmVyYCB0eXBlnC0gT25ib2FyZGluZyBzaXplOiBgTGl0ZU9uYm9hcmRpbmdTaXplYFAtIE1vZGU6IGBBcHBlbmRPbmx5YHwtIFJpbmcgc2l6ZTogYExpdGVSaW5nRXhwb25lbnRgBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjEFBBhPcHRpb24EBFQBNQUBCBBOb25lAAAAEFNvbWUEADUFAAABAAA1BQxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlFHR5cGVzeExpdGVDb25zdW1lclJlZ2lzdHJhdGlvblBhcmFtcwgkQWNjb3VudElkAQQkU2lnbmF0dXJlAXkEABQBJHNpZ25hdHVyZXkEASRTaWduYXR1cmUAARxhY2NvdW50BAEkQWNjb3VudElkAAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASB1c2VybmFtZTkFASBVc2VybmFtZQABRHJlc2VydmVkX3VzZXJuYW1lPQUBQE9wdGlvbjxVc2VybmFtZT4AADkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAPQUEGE9wdGlvbgQEVAE5BQEIEE5vbmUAAAAQU29tZQQAOQUAAAEAAEEFDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBBDYWxsBARUAAE0UHJlZ2lzdGVyX2xpdGVfcGVyc29uDAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASB1c2VybmFtZTkFASBVc2VybmFtZQABRHJlc2VydmVkX3VzZXJuYW1lPQUBQE9wdGlvbjxVc2VybmFtZT4AAASUUmVnaXN0ZXIgYSBsaXRlIHBlcnNvbiBhcyBhIGNvbnN1bWVyLjxyZWdpc3Rlcl9wZXJzb24MAVBsaW5rZWRfbGl0ZV9pZGVudGl0eQQBMFQ6OkFjY291bnRJZAABTGxpdGVfaWRlbnRpdHlfcHJvb2Z5BAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAATx1c2VybmFtZV9jaG9pY2VFBQFYUGVyc29uYWxVc2VybmFtZUNob2ljZQABJJxSZWdpc3RlciBhIHByb3ZlbiBwZXJzb24gYXMgYSBjb25zdW1lci4AXQFUaGUgcGVyc29uIG11c3QgbGluayBhIHByZXZpb3VzbHkgcmVjb2duaXplZCBsaXRlIGlkZW50aXR5LCB3aGljaCB3aWxsIGJlIHVwZ3JhZGVkIHRvIGFZAWZ1bGwgcGVyc29uIGNvbnN1bWVyLiBJbiBvcmRlciB0byBwcm92ZSB0aGV5IGhvbGQgdGhlIGxpdGUgaWRlbnRpdHkgdGhleSB3YW50IHRvIGxpbmssYQF1c2VycyBtdXN0IHByb3ZpZGUgYSBgbGl0ZV9pZGVudGl0eV9wcm9vZmAgc2lnbmF0dXJlLCBjcmVhdGVkIGJ5IHNpZ25pbmcgdGhlIGFsaWFzIGJ5dGVziHVzaW5nIHRoZWlyIGxpdGUgY29uc3VtZXIgYWNjb3VudC4AOQFUaGUgY29uc3VtZXIgY2FuIGNob29zZSBpZiB0aGV5IHdhbnQgdG8gaGF2ZSBhIG5ldyB1c2VybmFtZSBvciB1c2UgYW4gZXhpc3RpbmcVAXJlc2VydmF0aW9uIG1hZGUgaW4gdGhlIG5hbWUgb2YgdGhlIGxpdGUgY29uc3VtZXIgd2hvIHdpbGwgYmUgbGlua2VkLmh0b3VjaF9wZXJzb25fYXV0aG9yaXphdGlvbgACEEkBVXBkYXRlIGEgcGVyc29uJ3MgYXV0aG9yaXphdGlvbiBieSBlbnN1cmluZyB0aGV5IGNhbiBzdGlsbCBhdXRoZW50aWNhdGUgYXMgcGVvcGxlLgBRAVRoaXMgY2FsbCBtdXN0IGJlIHBlcmZvcm1lZCBhdCBsZWFzdCBgTWluUGVyc29uQXV0aFVwZGF0ZUludGVydmFsYCBzZWNvbmRzIGFmdGVyIHRoZZRsYXN0IHVwZGF0ZSBpbiBvcmRlciB0byBwcmV2ZW50IHNwYW0ujHJlbW92ZV9leHBpcmVkX3VzZXJuYW1lX3Jlc2VydmF0aW9uCAEgdXNlcm5hbWU5BQEgVXNlcm5hbWUAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMgOQFSZW1vdmUgYW4gZXhwaXJlZCBlbnRyeSBmcm9tIGEgdXNlcm5hbWUgcmVzZXJ2YXRpb24gcXVldWUuIFRoZSB0YXJnZXQgZW50cnkgaXMBAWlkZW50aWZpZWQgYnkgYGFjY291bnRgIGFuZCBjYW4gYmUgYXQgYW55IHBvc2l0aW9uIGluIHRoZSBxdWV1ZS4dAUVhY2ggY2FsbCByZW1vdmVzIGV4YWN0bHkgb25lIGVudHJ5LCBzbyBpdCBtdXN0IGJlIGNhbGxlZCByZXBlYXRlZGx5IHRvkGNsZWFyIG11bHRpcGxlIGV4cGlyZWQgcmVzZXJ2YXRpb25zLgAtAVRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC4gVGhlIGBhY2NvdW50YDEBcGFyYW1ldGVyIGlzIGFsc28gdXNlZCBmb3IgdHJhbnNhY3Rpb24gcG9vbCBkZWR1cGxpY2F0aW9uLCBhbGxvd2luZyBwYXJhbGxlbBEBc3VibWlzc2lvbnMgdGhhdCB0YXJnZXQgZGlmZmVyZW50IGV4cGlyZWQgZW50cmllcyBpbiB0aGUgc2FtZSBxdWV1ZS5UdXBkYXRlX2lkZW50aWZpZXJfa2V5BAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIABBDYVXBkYXRlIHRoZSBjb21tdW5pY2F0aW9uIGlkZW50aWZpZXIga2V5IG9mIGEgY29uc3VtZXIuAEEBVGhlIG9yaWdpbiBtdXN0IGJlIHRoZSBhY2NvdW50IHJlZ2lzdGVyZWQgZm9yIHRoYXQgY29uc3VtZXIsIHJlZ2FyZGxlc3Mgb2YgdGhlaXIwY3JlZGliaWxpdHkuhHNldF91c2VybmFtZV9yZXNlcnZhdGlvbl9kdXJhdGlvbgQBIGR1cmF0aW9uKAEMdTY0AAUMHQFTZXQgdGhlIGR1cmF0aW9uIGZvciB3aGljaCBhIHVzZXJuYW1lIHJlc2VydmF0aW9uIGlzIHZhbGlkLCBpbiBzZWNvbmRzLgBgVGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QuTGRlbW90ZV9hdXRoX2V4cGlyZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAcMMQFEZW1vdGUgYSBmdWxsIHBlcnNvbiB0byBhIGxpdGUgcGVyc29uIGFmdGVyIHRoZWlyIGF1dGhvcml6YXRpb24gaGFzIGV4cGlyZWQuAPRUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbDsgdGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQuvHNldF9ub3RpZmljYXRpb25fc3RhdGVtZW50X2FjY291bnRfZm9yX3NlcXVlbmNlCAEkcmVmZXJlbmNlSQUBVE5vdGlmaWNhdGlvblJlZmVyZW5jZQABKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACDwNAUFzc29jaWF0ZSBhIHN0YXRlbWVudCBhY2NvdW50IHdpdGggYSBub3RpZmljYXRpb24gY29udGV4dCBzZXF1ZW5jZS4AUQFUaGUgYXNzb2NpYXRlZCBhY2NvdW50IGNhbiBzdWJtaXQgc3RhdGVtZW50cyB3aGlsZSB0aGlzIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb24gaXMcYWN0aXZlLjEBVGhlIG9yaWdpbiBtdXN0IGJlIGBPcmlnaW46Ok5vdGlmaWNhdGlvbkFsaWFzYCwgY3JlYXRlZCBieSB0aGUgYEFzUmVzb3VyY2VzYE0BKGBSZWdpc3Rlck5vdGlmaWNhdGlvbldpdGhQcm9vZiguLilgKSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYWZ0ZXIgcHJvb2YgdmFsaWRhdGlvbi4dAU9uIHN1Y2Nlc3MsIGluY3JlYXNlcyBzdGF0ZW1lbnQgYWxsb3dhbmNlIGFuZCBzdG9yZXMgcmVnaXN0cmF0aW9uIHN0YXRlaGB7YWNjb3VudF9pZCwgcmVmZXJlbmNlfWAuACxQYXJhbWV0ZXJzOsQqIGByZWZlcmVuY2VgOiBub3RpZmljYXRpb24gcGVyaW9kL3NlcXVlbmNlIHBhaXIuCQEgIC0gYHJlZmVyZW5jZS5wZXJpb2RgIG11c3QgYmUgdGhlIGN1cnJlbnQgc3RhdGVtZW50LXN0b3JlIHBlcmlvZC4BASAgLSBgcmVmZXJlbmNlLnNlcWAgbXVzdCBiZSBpbiBgMC4uPU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kYC5NASogYGFjY291bnRfaWRgOiBzdGF0ZW1lbnQgYWNjb3VudCB0byBhdXRob3JpemUuIE11c3Qgbm90IGFscmVhZHkgYmUgdXNlZCBieSBhbm90aGVycCAgbm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbi6MY2xlYXJfZXhwaXJlZF9ub3RpZmljYXRpb25fc2VxdWVuY2UIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEMc2VxDAEIdTgACSgtAUNsZWFyIGEgc3RhbGUgbm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbiBhbmQgcmV2b2tlIGl0cyBzdGF0ZW1lbnQgYWxsb3dhbmNlLgD0VGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGw7IHRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLiEBU3VjY2VlZHMgb25seSB3aGVuIHRoZSByZWdpc3RyYXRpb24ncyBwZXJpb2QtZGVyaXZlZCBleHBpcnkgaGFzIGVsYXBzZWQuWQFPbiBzdWNjZXNzLCByZW1vdmVzIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb24gc3RhdGUgYW5kIGRlY3JlYXNlcyBzdGF0ZW1lbnQgYWxsb3dhbmNlLgAsUGFyYW1ldGVyczpZASogYGFjY291bnRgOiBzdGF0ZW1lbnQgYWNjb3VudCBwcmV2aW91c2x5IGFzc29jaWF0ZWQgd2l0aCBhIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb24uXQEqIGBzZXFgOiBub3RpZmljYXRpb24gc2VxdWVuY2UgdG8gY2xlYXIuIE11c3QgbWF0Y2ggc3RvcmVkIHJlZ2lzdHJhdGlvbiBzZXF1ZW5jZSBhbmQgYmWYICBpbiBgMC4uPU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kYC5sc2V0X3N0YXRlbWVudF9zdG9yZV9hY2NvdW50DAEYcGVyaW9kOAEMdTMyAAEMc2VxOAEMdTMyAAE4dGFyZ2V0X2FjY291bnQEATBUOjpBY2NvdW50SWQACiwJAUNsYWltIGFuIGFub255bW91cyBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIGZvciBhIHRhcmdldCBhY2NvdW50LgApAVRoZSBvcmlnaW4gbXVzdCBiZSBgT3JpZ2luOjpTdG10U3RvcmVBbGlhc2AsIHByb2R1Y2VkIGJ5IHRoZSBgQXNSZXNvdXJjZXNgVQEoYFJlZ2lzdGVyU3RhdGVtZW50U3RvcmVBbGxvd2FuY2UoLi4pYCkgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGFmdGVyIHByb29mIHZhbGlkYXRpb24uRQFPbiBzdWNjZXNzLCBpbmNyZWFzZXMgdGhlIHN0YXRlbWVudCBhbGxvd2FuY2UgZm9yIGB0YXJnZXRfYWNjb3VudGAgYW5kIHN0b3JlcyB0aGWYbWFwcGluZyBpbiBgU3RhdGVtZW50U3RvcmVBbGxvd2FuY2VzYC4ALFBhcmFtZXRlcnM6PQEqIGBwZXJpb2RgOiBkYXkgbnVtYmVyIHNpbmNlIFVuaXggZXBvY2guIE11c3QgYmUgaW4gdGhlIGFjY2VwdGVkIHBlcmlvZCB3aW5kb3cuRQEqIGBzZXFgOiBzbG90IG51bWJlciB3aXRoaW4gdGhlIHBlcmlvZCwgYm91bmRlZCBieSB0aGUgY29sbGVjdGlvbi1zcGVjaWZpYyBsaW1pdC7MKiBgdGFyZ2V0X2FjY291bnRgOiBzdGF0ZW1lbnQgYWNjb3VudCB0byBhdXRob3JpemUujGNsZWFyX2V4cGlyZWRfc3RtdF9zdG9yZV9hbGxvd2FuY2VzCAEYcGVyaW9kOAEMdTMyAAEsZmlyc3RfZW50cnkIARRBbGlhcwALFPBSZW1vdmUgZXhwaXJlZCBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlcyBmb3IgYSBwYXN0IHBlcmlvZC4A9FRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC5FAVJlbW92ZXMgdXAgdG8gYFN0bXRTdG9yZUNsZWFudXBMaW1pdGAgZW50cmllcyBmcm9tIGBTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZXNgIGZvckEBdGhlIGdpdmVuIGBwZXJpb2RgLCBkZWNyZWFzaW5nIHRoZSBzdGF0ZW1lbnQgYWxsb3dhbmNlIGZvciBlYWNoIHJlbW92ZWQgYWNjb3VudC5cY2xhaW1fbG9uZ190ZXJtX3N0b3JhZ2UMARhwZXJpb2Q4AQx1MzIAARxjb3VudGVyDAEIdTgAAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAwwOQFDbGFpbSBsb25nLXRlcm0gc3RvcmFnZSBvbiBhIHJlbW90ZSBjaGFpbiB1c2luZyBhbiBhbm9ueW1vdXMgbWVtYmVyc2hpcCBwcm9vZi4AUQFUaGUgb3JpZ2luIG11c3QgYmUgYE9yaWdpbjo6TG9uZ1Rlcm1TdG9yYWdlQ2xhaW0oYWxpYXMsIGNvbGxlY3Rpb24pYCwgY3JlYXRlZCBieSB0aGVVAWBBc1Jlc291cmNlc2AgKGBDbGFpbUxvbmdUZXJtU3RvcmFnZSguLilgKSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYWZ0ZXIgcmluZy1WUkYgcHJvb2YsdmFsaWRhdGlvbi4ALFBhcmFtZXRlcnM6SQEqIGBwZXJpb2RgOiB0aGUgY2xhaW1pbmcgcGVyaW9kLiBNdXN0IGJlIHRoZSBjdXJyZW50IHBlcmlvZCBvciB0aGUgcHJldmlvdXMgb25lIGlmaCAgd2l0aGluIHRoZSBncmFjZSB3aW5kb3cuDQEqIGBjb3VudGVyYDogdGhlIGNsYWltIGNvdW50ZXIgd2l0aGluIHRoZSBwZXJpb2QuIE11c3QgYmUgbGVzcyB0aGFuLQEgIGBMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2RgLiBFYWNoIGNvdW50ZXIgcHJvZHVjZXMgYSBkaXN0aW5jdCBhbGlhcy4lASogYGFjY291bnRfaWRgOiB0aGUgYWNjb3VudCB0byBhdXRob3JpemUgZm9yIHN0b3JhZ2Ugb24gdGhlIHJlbW90ZSBjaGFpbi6cY2xlYXJfZXhwaXJlZF9sb25nX3Rlcm1fc3RvcmFnZV9hbGlhc2VzCAEYcGVyaW9kOAEMdTMyAAEUbGltaXQ4AQx1MzIADSDwQ2xlYXIgc3BlbnQgbG9uZy10ZXJtIHN0b3JhZ2UgYWxpYXNlcyBmb3IgYW4gZXhwaXJlZCBwZXJpb2QuAEUBVGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGwgYXV0aG9yaXplZCB2aWEgdGhlIGBhdXRob3JpemVgIGF0dHJpYnV0ZS4gSXQgY2FuIGJlJQFjYWxsZWQgYnkgYW55b25lIG9uY2UgYSBwZXJpb2QgaGFzIGZ1bGx5IGV4cGlyZWQgKHBhc3QgdGhlIGdyYWNlIHdpbmRvdykuACxQYXJhbWV0ZXJzOtAqIGBwZXJpb2RgOiB0aGUgZXhwaXJlZCBwZXJpb2QgdG8gY2xlYXIgYWxpYXNlcyBmb3IuAQEqIGBsaW1pdGA6IHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIHRvIHJlbW92ZSBpbiB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkUFDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzWFBlcnNvbmFsVXNlcm5hbWVDaG9pY2UAAQgoU3RhbmRhbG9uZQQAOQUBIFVzZXJuYW1lAAAALFJlc2VydmF0aW9uBAA5BQEgVXNlcm5hbWUAAQAASQUMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNUTm90aWZpY2F0aW9uUmVmZXJlbmNlAAAIARhwZXJpb2Q4AQx1MzIAAQxzZXEMAQh1OAAATQUMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQQQ2FsbAQEVAABCChhZGRfY2h1bmtzDAE0cmluZ19leHBvbmVudFEFATBSaW5nRXhwb25lbnQAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAE4ZW5jb2RlZF9jaHVua3NVBQGYQm91bmRlZFZlYzx1OCwgTWF4RW5jb2RlZENodW5rc0xlbjxUPj4AABBoQWRkcyBhIG5ldyBwYWdlIG9mIGNodW5rcy4AQQFUaGUgaGFzaCBvZiB0aGUgY2h1bmtzIG11c3QgbWF0Y2ggdGhlIGhhc2ggc3RvcmVkIG9uLWNoYWluIGluIGBDaHVua1BhZ2VIYXNoZXNgLtxUaGUgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHBhZ2UgYWxyZWFkeSBleGlzdHMgb24tY2hhaW4uVHNldF9jaHVua19wYWdlX2hhc2hlcwgBNHJpbmdfZXhwb25lbnRRBQEwUmluZ0V4cG9uZW50AAEscGFnZV9oYXNoZXNZBQHMQm91bmRlZFZlYzxDaHVua1BhZ2VIYXNoLCBDb25zdFUzMjxNQVhfUEFHRV9DT1VOVD4+AAEYDQFTZXRzIHRoZSBleHBlY3RlZCBoYXNoZXMgZm9yIGNodW5rIHBhZ2VzIGZvciBhIGdpdmVuIHJpbmcgZXhwb25lbnQuACEBQWxsb3dzIHNldHRpbmcgdGhlIGV4cGVjdGVkIGhhc2hlcyB0aGF0IGNodW5rcyBtdXN0IG1hdGNoIHdoZW4gYWRkZWQgdmlhNGBhZGRfY2h1bmtzYC4ArFRoZSBvcmlnaW4gbXVzdCBiZSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuUQUQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkwUmluZ0V4cG9uZW50AAEMEFIyZTkACQAUUjJlMTAACgAUUjJlMTQADgAAVQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABZBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABABRBAEYVmVjPFQ+AABdBQxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0EENhbGwEBFQAATgsbWVyZ2VfcmluZ3MMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPGJhc2VfcmluZ19pbmRleDgBJFJpbmdJbmRleAABRHRhcmdldF9yaW5nX2luZGV4OAEkUmluZ0luZGV4AAAYUQFNZXJnZSB0aGUgbWVtYmVycyBpbiB0d28gcmluZ3MgaW50byBhIHNpbmdsZSwgbmV3IHJpbmcuIEluIG9yZGVyIGZvciB0aGUgcmluZ3MgdG8gYmVVAWVsaWdpYmxlIGZvciBtZXJnaW5nLCB0aGV5IG11c3QgYm90aCBiZSBub24tZW1wdHkgZXhpc3RpbmcgcmluZ3MsIGJlIGJlbG93IDEvMiBvZiBtYXhJAWNhcGFjaXR5LCBoYXZlIG5vIHBlbmRpbmcgc3VzcGVuc2lvbnMgYW5kIG5vdCBiZSB0aGUgdG9wIHJpbmcgdXNlZCBmb3Igb25ib2FyZGluZy4AUQFPbmx5IFtgUmluZ01vZGU6OkZsZXhpYmxlYF0gY29sbGVjdGlvbnMgY2FuIGJlIG1lcmdlZC4gVGhlaXIgcmluZyBzaXplIG5ldmVyIGV4Y2VlZHMBAWBNYXhGbGV4aWJsZVJpbmdFeHBvbmVudGAsIHNvIGFsbCBrZXlzIG9mIGEgcmluZyBsaXZlIG9uIHBhZ2UgMC5Mc2V0X29uYm9hcmRpbmdfc2l6ZQgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAE8b25ib2FyZGluZ19zaXplOAEMdTMyAAEETQFGb3JjZSBzZXQgdGhlIG9uYm9hcmRpbmcgc2l6ZSBmb3IgYSBjb2xsZWN0aW9uLiBUaGlzIGNhbGwgcmVxdWlyZXMgcm9vdCBwcml2aWxlZ2VzLjBzZWxmX2luY2x1ZGUMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABGG1lbWJlcggBLE1lbWJlck9mPFQ+AAE0Y2FsbF92YWxpZF9hdCgBDHU2NAACKEEBQWxsb3cgYSBtZW1iZXIgd2FpdGluZyBpbiB0aGUgb25ib2FyZGluZyBxdWV1ZSB0byBpbmNsdWRlIHRoZW1zZWx2ZXMgaW50byBhIHJpbmdNAWFmdGVyIGVub3VnaCB0aW1lIGhhcyBwYXNzZWQuIFRoaXMgYnlwYXNzZXMgdGhlIG5vcm1hbCBjb2hvcnQtYmFzZWQgb25ib2FyZGluZyBzaXplMHJlcXVpcmVtZW50LgA5AVRoaXMgY2FsbCBtdXN0IGJlIGRpc3BhdGNoZWQgd2l0aCBhIGBTZWxmSW5jbHVkZWAgb3JpZ2luLCBhdXRoZW50aWNhdGVkIGJ5IHRoZSEBYEFzTWVtYmVyYCB0cmFuc2FjdGlvbiBleHRlbnNpb24uIFRoZSByaW5ncyBtdXN0IGJlIGluIGFwcGVuZC1vbmx5IG1vZGUuAE0BVGhlIGBjYWxsX3ZhbGlkX2F0YCBwYXJhbWV0ZXIgZGljdGF0ZXMgdGhlIHRpbWUgd2luZG93IGluIHdoaWNoIHRoaXMgdHJhbnNhY3Rpb24gaXNNAXZhbGlkIGFuZCByZXByZXNlbnRzIHRoZSB0aW1lc3RhbXAgKGluIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2gpIHdoZW4gdGhpcyBjYWxsOGJlY29tZXMgdmFsaWQuVGJ1aWxkX3JpbmdfYXV0aG9yaXplZBgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfZXhwb25lbnRRBQEwUmluZ0V4cG9uZW50AAEgcmV2aXNpb27kAVRPcHRpb248UmV2aXNpb25JbmRleD4AASh0b19pbmNsdWRlOAEMdTMyAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgBkLNhCdWlsZCBhIHJpbmcgcm9vdCBmb3IgYSBzcGVjaWZpYyByaW5nIGluIGEgY29sbGVjdGlvbi4A2FN1Ym1pdHRlZCBieSB0aGUgT0NXIHdpdGggYSBgdG9faW5jbHVkZWAgc25hcHNob3QgZnJvbTEBW2BQYWxsZXQ6OnNob3VsZF9idWlsZF9yaW5nYF0uIExlZnRvdmVycyBmcm9tIGxhdGVyIG9uYm9hcmRpbmcgYXJlIHBpY2tlZCB1cBkBb24gdGhlIG5leHQgT0NXIHRpY2ssIG9yIGJ5IHRoZSBtZW1iZXIgdmlhIFtgU2VsZjo6c2VsZl9pbmNsdWRlYF0gd2hlboBjb2hvcnQgZ2F0aW5nIHN0YWxscyBvbmJvYXJkaW5nLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5ob25ib2FyZF9tZW1iZXJzX2F1dGhvcml6ZWQUAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAARBoZWFkOAEkUGFnZUluZGV4AAEwZmlyc3RfbWVtYmVyYQUBTE9wdGlvbjxNZW1iZXJPZjxUPj4AATRkaXNjcmltaW5hdG9yOAEMdTMyAGUgEQFPbmJvYXJkIG1lbWJlcnMgZnJvbSB0aGUgb25ib2FyZGluZyBxdWV1ZSBmb3IgYSBzcGVjaWZpYyBjb2xsZWN0aW9uLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLnBtZXJnZV9xdWV1ZV9wYWdlc19hdXRob3JpemVkDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATBpbml0aWFsX2hlYWQ4ASRQYWdlSW5kZXgAASBuZXdfaGVhZDgBJFBhZ2VJbmRleABmDA0BTWVyZ2UgdGhlIHRvcCB0d28gb25ib2FyZGluZyBxdWV1ZSBwYWdlcyBmb3IgYSBzcGVjaWZpYyBjb2xsZWN0aW9uLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIugHJlbW92ZV9zdXNwZW5kZWRfa2V5c19hdXRob3JpemVkEAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb27kAVRPcHRpb248UmV2aXNpb25JbmRleD4AATRkaXNjcmltaW5hdG9yOAEMdTMyAGcg7FJlbW92ZSBzdXNwZW5kZWQga2V5cyBmcm9tIGEgc3BlY2lmaWMgcmluZyBpbiBhIGNvbGxlY3Rpb24uAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wubGRlbGV0ZV9yaW5nX3BhZ2VfYXV0aG9yaXplZAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAaAzIRGVsZXRlIGEgcGFnZSBmb3IgYSBzcGVjaWZpYyByaW5nIGluIGEgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLoBlbnF1ZXVlX3JpbmdfZGVsZXRpb25fYXV0aG9yaXplZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleABpHOxFbnF1ZXVlIGEgcmluZyBmb3IgZGVsZXRpb24gYXMgcGFydCBvZiBjb2xsZWN0aW9uIGRlbGV0aW9uLgAhAUFyY2hpdmVzIHRoZSByaW5nIHJvb3QsIG5vdGlmaWVzIHN1YnNjcmliZXJzLCByZW1vdmVzIHJpbmcgbWV0YWRhdGEsIGFuZPhlbnF1ZXVlcyByaW5nIHBhZ2VzIGludG8gYFJpbmdEZWxldGlvblF1ZXVlYCBmb3IgcHJvY2Vzc2luZyBieXhgZGVsZXRlX3JpbmdfcGFnZV9hdXRob3JpemVkYC4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLpxkZWxldGVfb25ib2FyZGluZ19xdWV1ZV9wYWdlX2F1dGhvcml6ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAahz8RGVsZXRlIGFuIG9uYm9hcmRpbmcgcXVldWUgcGFnZSBhcyBwYXJ0IG9mIGNvbGxlY3Rpb24gZGVsZXRpb24uAB0BUmVtb3ZlcyBhbGwgYE1lbWJlcnNgIGVudHJpZXMgZm9yIHRoZSBtZW1iZXJzIGluIHRoZSBwYWdlLCB0aGVuIHJlbW92ZXMlAXRoZSBwYWdlIGl0c2VsZi4gQ2FuIG9ubHkgcHJvY2VlZCB3aGVuIGFsbCByaW5ncyBhbmQgcmluZyBwYWdlcyBoYXZlIGJlZW44ZnVsbHkgZGVsZXRlZC4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLpxmaW5hbGl6ZV9jb2xsZWN0aW9uX2RlbGV0aW9uX2F1dGhvcml6ZWQEAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgBrHHRGaW5hbGl6ZSBjb2xsZWN0aW9uIGRlbGV0aW9uLgAdAVJlbW92ZXMgYWxsIHJlbWFpbmluZyBwZXItY29sbGVjdGlvbiBzdG9yYWdlIGFuZCB0aGUgb3duZXIncyBpZGVudGlmaWVyGQFyZWZlcmVuY2UuIENhbiBvbmx5IHByb2NlZWQgd2hlbiBhbGwgcmluZ3MsIHJpbmcgcGFnZXMsIGFuZCBvbmJvYXJkaW5nkHF1ZXVlIHBhZ2VzIGhhdmUgYmVlbiBmdWxseSBkZWxldGVkLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuiHJlbW92ZV9vcnBoYW5lZF9tZW1iZXJzX2F1dGhvcml6ZWQEAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgBuJPRSZW1vdmUgb3JwaGFuZWQgYE1lbWJlcnNgIGVudHJpZXMgZm9yIGEgc3VzcGVuZGVkIGNvbGxlY3Rpb24uAFUBU3VzcGVuZGVkIG1lbWJlcnMgY2FuIGxlYXZlIGVudHJpZXMgaW4gYE1lbWJlcnNgIHRoYXQgb3V0bGl2ZSB0aGVpciByaW5nLCBzbyBiZWZvcmUgYfxjb2xsZWN0aW9uIGNhbiBiZSBmaW5hbGl6ZWQgdGhlc2UgbXVzdCBiZSBkcmFpbmVkLiBEcmFpbnMgdXAgdG85AWBPUlBIQU5FRF9NRU1CRVJTX1JFTU9WQUxfTElNSVRgIGVudHJpZXMgZm9yIGBpZGVudGlmaWVyYC4gVGhlIG9mZmNoYWluIHdvcmtlcj0BcmVzdWJtaXRzIHVudGlsIHRoZSBwcmVmaXggaXMgZW1wdHksIGFmdGVyIHdoaWNoIHRoZSBjb2xsZWN0aW9uIGRlbGV0aW9uIGNhbiBiZShmaW5hbGl6ZWQuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci5obWFya19yaW5nX3N0YWxlX2F1dGhvcml6ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAbBjwTWFyayBhIHJpbmcgYXMgc3RhbGUgc28gdGhlIG9mZmNoYWluIHdvcmtlciB3aWxsIHJlYnVpbGQgaXQuAB0BQW55b25lIGNhbiBzdWJtaXQgdGhpcyB0cmFuc2FjdGlvbiBpZiB0aGUgcmluZyBoYXMgbWVtYmVycyB0aGF0IGFyZSBub3QlAXlldCBpbmNsdWRlZCBpbiB0aGUgcm9vdCAoYHRvdGFsID4gaW5jbHVkZWRgKSBhbmQgdGhlIHJpbmcgaXMgbm90IGFscmVhZHklAW1hcmtlZCBzdGFsZS4gVGhpcyBpcyBhIHJlY292ZXJ5IG1lY2hhbmlzbSBpbiBjYXNlIHRoZSBgU3RhbGVSaW5nc2AgZW50cnlsd2FzIGxvc3Qgb3IgbmV2ZXIgaW5zZXJ0ZWQudGNsZWFuX3VwX29sZF9yb290c19hdXRob3JpemVkDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEUbGltaXQ4AQx1MzIAbSCAQ2xlYW4gdXAgZXhwaXJlZCBvbGQgcmluZyByb290cy4AEQFSZW1vdmVzIHVwIHRvIGBsaW1pdGAgb2xkIHJpbmcgcm9vdHMgZm9yIHRoZSBnaXZlbiByaW5nIGluIHRoZSBnaXZlbixjb2xsZWN0aW9uLgDQVGhlIHRyYW5zYWN0aW9uIHNvdXJjZSBtdXN0IGJlIGBMb2NhbGAgb3IgYEluQmxvY2tgLgD0VGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5hBQQYT3B0aW9uBARUAQgBCBBOb25lAAAAEFNvbWUEAAgAAAEAAGUFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQQQ2FsbAQEVAABeBRzcGxpdAQBKHNwbGl0X2ludG9pBQF9AUJvdW5kZWRWZWM8CihEZW5vbWluYXRpb24sIEJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhTcGxpdE91dHB1dHM+KSwgVDo6Ck1heFNwbGl0T3V0cHV0cyw+AABQhFNwbGl0IGEgY29pbiBpbnRvIG11bHRpcGxlIGNvaW5zLgA9AVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb27UZXh0ZW5zaW9uIFtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKS4A1FRoZSBjYWxsIGlzIGZyZWUgYW5kIGFnZXMgdGhlIHJlc3VsdGluZyBjb2lucyBieSBvbmUuAEkBVGhlIGBzcGxpdF9pbnRvYCBwYXJhbWV0ZXIgY29udGFpbnMgYSB2ZWN0b3Igb2YgcGFpcnMsIGVhY2ggcGFpciBjb250YWluaW5nIGEgY29pblUBdmFsdWUgYW5kIGEgbGlzdCBvZiBkZXN0aW5hdGlvbiBhY2NvdW50IGlkcy4gRm9yIGVhY2ggcGFpciwgYSBuZXcgY29pbiB3aXRoIHRoZSBnaXZlbsR2YWx1ZSBpcyBjcmVhdGVkIGZvciBlYWNoIGRlc3RpbmF0aW9uIGFjY291bnQgaWQuAFhWYWxpZGl0eSByZXF1aXJlbWVudHM6PQEoYW4gaW52YWxpZCB0cmFuc2FjdGlvbiB3b24ndCBiZSBpbmNsdWRlZCBpbiBhIGJsb2NrLCB0aGUgY29pbiBpcyBub3QgY29uc3VtZWQp4CogVGhlIGNvaW4ncyBhZ2UgbXVzdCBiZSBsZXNzIHRoYW4gW0NvbmZpZzo6TWF4aW11bUFnZV0uVQEqIFRoZSBkZW5vbWluYXRpb24gbXVzdCBiZSB3aXRoaW4gdGhlIGJvdW5kcyBkZWZpbmVkIGJ5IFtDb25maWc6Ok1pbmltdW1FeHBvbmVudF0gYW5kcCAgW0NvbmZpZzo6TWF4aW11bUV4cG9uZW50XS4tASogVGhlIHRvdGFsIHZhbHVlIG9mIHRoZSBuZXcgY29pbnMgbXVzdCBlcXVhbCB0aGUgdmFsdWUgb2YgdGhlIG9yaWdpbiBjb2luLgkBKiBUaGUgbnVtYmVyIG9mIG91dHB1dHMgbXVzdCBub3QgZXhjZWVkIFtDb25maWc6Ok1heFNwbGl0T3V0cHV0c10uJQEqIFRoZSBhZ2Ugb2YgdGhlIG5ldyBjb2lucyBpcyBzZXQgdG8gdGhlIGFnZSBvZiB0aGUgb3JpZ2luIGNvaW4gcGx1cyBvbmUu4CogRWFjaCBkZXN0aW5hdGlvbiBhY2NvdW50IG11c3Qgbm90IGFscmVhZHkgaGF2ZSBhIGNvaW4uIHRyYW5zZmVyBAEIdG8EATBUOjpBY2NvdW50SWQAASyMVHJhbnNmZXIgYSBjb2luIHRvIGFub3RoZXIgYWNjb3VudC4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9u1GV4dGVuc2lvbiBbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkuANBUaGUgY2FsbCBpcyBmcmVlIGFuZCBhZ2VzIHRoZSByZXN1bHRpbmcgY29pbiBieSBvbmUuAFhWYWxpZGl0eSByZXF1aXJlbWVudHM6PQEoYW4gaW52YWxpZCB0cmFuc2FjdGlvbiB3b24ndCBiZSBpbmNsdWRlZCBpbiBhIGJsb2NrLCB0aGUgY29pbiBpcyBub3QgY29uc3VtZWQp3CogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgbXVzdCBub3QgYWxyZWFkeSBoYXZlIGEgY29pbi7gKiBUaGUgY29pbidzIGFnZSBtdXN0IGJlIGxlc3MgdGhhbiBbQ29uZmlnOjpNYXhpbXVtQWdlXS5cbG9hZF9yZWN5Y2xlcl93aXRoX2NvaW4IAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBxBAE4U2lnbmF0dXJlT2Y8VD4AAkhoTG9hZCBjb2luIGludG8gYSByZWN5Y2xlci4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9u1GV4dGVuc2lvbiBbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkuAERUaGUgY2FsbCBpcyBmcmVlLgBZAVRoZSBgbWVtYmVyX2tleWAgcGFyYW1ldGVyIGlzIHRoZSBtZW1iZXIga2V5IHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZWN5Y2xlciwgYW5kIHdob3NlqGFsaWFzIGlzIHVzZWQgdG8gdW5sb2FkIGZyb20gdGhlIHJlY3ljbGVyLgBYVmFsaWRpdHkgcmVxdWlyZW1lbnRzOj0BKGFuIGludmFsaWQgdHJhbnNhY3Rpb24gd29uJ3QgYmUgaW5jbHVkZWQgaW4gYSBibG9jaywgdGhlIGNvaW4gaXMgbm90IGNvbnN1bWVkKQEBKiBUaGUgYG1lbWJlcl9rZXlgIG11c3Qgbm90IGFscmVhZHkgYmUgdXNlZCBpbiBhbm90aGVyIHJlY3ljbGVyLtAqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBiZSB2YWxpZCAoaS5lLiB3ZWxsIGZvcm1lZCkuUQEqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIGEgdmFsaWQgc2lnbmF0dXJlIG9mIHRoZSBjb2luJ3MgYWNjb3VudCBpZCBieSB0aGU8ICBgbWVtYmVyX2tleWAuBQEqIFRoZSByZWN5Y2xlciBjb2xsZWN0aW9uIGZvciB0aGUgY29pbidzIHZhbHVlIG11c3QgYWxyZWFkeSBleGlzdFkBKiBPbiBhIHNwb25zb3JlZCBpbnN0YW5jZSwgdGhlIHBvdCdzIGZyZWUgYmFsYW5jZSBtdXN0IGNvdmVyIHRoZSBsb2FkZWQga2V5J3MgZGVwb3NpdC6EbG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0FAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEwcHJlc2VydmF0aW9ueQUBRENvZGVjUHJlc2VydmF0aW9uAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwcQQBOFNpZ25hdHVyZU9mPFQ+AAOEkExvYWQgZXh0ZXJuYWwgYXNzZXQgaW50byBhIHJlY3ljbGVyLgCMVGhlIG9yaWdpbiBtdXN0IGJlIGEgc2lnbmVkIG9yaWdpbi4AgFRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgcmVmdW5kZWQuAEUBVGhlIGBwcmVzZXJ2YXRpb25gIHBhcmFtZXRlciBpbmRpY2F0ZXMgaG93IHRoZSBhc3NldCB0cmFuc2ZlciBzaG91bGQgcHJlc2VydmUgdGhlRHNpZ25lcidzIGFjY291bnQuAFEBVGhlIGBpbnN0YW5jZV9pZGAgcGFyYW1ldGVyIGluZGljYXRlcyB3aGljaCBjb2luYWdlIGluc3RhbmNlIHRvIGxvYWQgaW50bywgYW5kIGhlbmNlmHdoaWNoIHVuZGVybHlpbmcgYXNzZXQgaXMgdHJhbnNmZXJyZWQuAEEBVGhlIGB2YWx1ZWAgcGFyYW1ldGVyIGluZGljYXRlcyB0aGUgZGVub21pbmF0aW9uIHRvIGJlIGxvYWRlZCBpbnRvIHRoZSByZWN5Y2xlci49AVRoZSBlcXVpdmFsZW50IGFtb3VudCBvZiB0aGUgdW5kZXJseWluZyBhc3NldCBpcyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBzaWduZXIgdG9MdGhlIHBhbGxldCBhY2NvdW50LgBZAVRoZSBgbWVtYmVyX2tleWAgcGFyYW1ldGVyIGlzIHRoZSBtZW1iZXIga2V5IHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZWN5Y2xlciwgYW5kIHdob3NlqGFsaWFzIGlzIHVzZWQgdG8gdW5sb2FkIGZyb20gdGhlIHJlY3ljbGVyLgBVAVRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBwYXJhbWV0ZXIgaXMgdGhlIHNpZ25hdHVyZSBvZiB0aGUgc2lnbmVyJ3MgYWNjb3VudCBpZCBieSB0aGU0YG1lbWJlcl9rZXlgLgA0UmVxdWlyZW1lbnRzOtwqIFRoZSBgaW5zdGFuY2VfaWRgIG11c3QgcmVmZXIgdG8gYW4gZXhpc3RpbmcgaW5zdGFuY2UuAQEqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBub3QgYWxyZWFkeSBiZSB1c2VkIGluIGFub3RoZXIgcmVjeWNsZXIu0CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIChpLmUuIHdlbGwgZm9ybWVkKS5BASogVGhlIGB2YWx1ZWAgbXVzdCBiZSB3aXRoaW4gdGhlIGJvdW5kcyBkZWZpbmVkIGJ5IFtDb25maWc6Ok1pbmltdW1FeHBvbmVudF0gYW5kcCAgW0NvbmZpZzo6TWF4aW11bUV4cG9uZW50XS5VASogVGhlIHNpZ25lciBtdXN0IGhhdmUgZW5vdWdoIGJhbGFuY2Ugb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgdG8gY292ZXIgdGhlIGVxdWl2YWxlbnSQICBhbW91bnQgZm9yIHRoZSBnaXZlbiBkZW5vbWluYXRpb24uWQEqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIGEgdmFsaWQgc2lnbmF0dXJlIG9mIHRoZSBzaWduZXIncyBhY2NvdW50IGlkIGJ5IHRoZTRgbWVtYmVyX2tleWAuWQEqIE9uIGEgc3BvbnNvcmVkIGluc3RhbmNlLCB0aGUgcG90J3MgZnJlZSBiYWxhbmNlIG11c3QgY292ZXIgdGhlIGxvYWRlZCBrZXkncyBkZXBvc2l0LqBsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkFAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEwcHJlc2VydmF0aW9ueQUBRENvZGVjUHJlc2VydmF0aW9uAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwcQQBOFNpZ25hdHVyZU9mPFQ+AA9QLQFMb2FkIGV4dGVybmFsIGFzc2V0IGludG8gYSByZWN5Y2xlciAoaW5mYWxsaWJsZSwgdmFsaWRhdGVkIHVucGFpZCB2YXJpYW50KS4ATQFUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZF0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZXR0cmFuc2FjdGlvbiBleHRlbnNpb24gdmFyaWFudI0BW2BBc0NvaW5hZ2VJbmZvOjpJbmZhbGxpYmxlVW5wYWlkU2lnbmVkYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlSW5mbzo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZCkuANxUaGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhbGlkYXRpb24gcGhhc2UgbXVzdCBlbnN1cmU6zC0gVGhlIGBpbnN0YW5jZV9pZGAgcmVmZXJzIHRvIGFuIGV4aXN0aW5nIGluc3RhbmNlLhUBLSBUaGUgYG1lbWJlcl9rZXlgIGlzIHZhbGlkIGFuZCBub3QgYWxyZWFkeSB1c2VkIGluIGFub3RoZXIgcmVjeWNsZXIuRQEtIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBpcyBhIHZhbGlkIHNpZ25hdHVyZSBvZiB0aGUgc2lnbmVyJ3MgYWNjb3VudCBpZCBieSB0aGU8ICBgbWVtYmVyX2tleWAuLQEtIFRoZSBgdmFsdWVgIGlzIHdpdGhpbiB0aGUgYm91bmRzIGRlZmluZWQgYnkgW0NvbmZpZzo6TWluaW11bUV4cG9uZW50XSBhbmRBASAgW0NvbmZpZzo6TWF4aW11bUV4cG9uZW50XSwgYW5kIGNhbiBiZSBsb3NzbGVzc2x5IGNvbnZlcnRlZCB0byBhbiBhc3NldCBhbW91bnQuWQEtIFRoZSBzaWduZXIgaGFzIGVub3VnaCBiYWxhbmNlIG9mIHRoZSB1bmRlcmx5aW5nIGFzc2V0IHRvIGNvdmVyIHRoZSBlcXVpdmFsZW50IGFtb3VudOQgIGZvciB0aGUgZ2l2ZW4gZGVub21pbmF0aW9uIChyZXNwZWN0aW5nIGBwcmVzZXJ2YXRpb25gKS6sLSBUaGUgbm9uY2UgaXMgdmFsaWQgZm9yIHJlcGxheSBwcm90ZWN0aW9uLh0BLSBUaGUgcmVjeWNsZXIgY29sbGVjdGlvbiBmb3IgYGluc3RhbmNlX2lkYCBhbmQgYHZhbHVlYCBhbHJlYWR5IGV4aXN0cy5JAS0gT24gYSBzcG9uc29yZWQgaW5zdGFuY2UsIHRoZSBwb3QncyBmcmVlIGJhbGFuY2UgY292ZXJzIHRoZSBsb2FkZWQga2V5J3MgZGVwb3NpdC4ARFRoZSBjYWxsIGlzIGZyZWUuuGxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRfYmF0Y2gIASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARRpdGVtc30FAdRCb3VuZGVkVmVjPFVucGFpZExvYWRJbnB1dDxUPiwgVDo6TWF4QmF0Y2hVbnBhaWRMb2FkPgAQWBkBQmF0Y2hlZCB2YXJpYW50IG9mIFtgU2VsZjo6bG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0X3VucGFpZGBdLgBNAVRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpJbmZhbGxpYmxlVW5wYWlkU2lnbmVkXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhldHRyYW5zYWN0aW9uIGV4dGVuc2lvbiB2YXJpYW50jQFbYEFzQ29pbmFnZUluZm86OkluZmFsbGlibGVVbnBhaWRTaWduZWRgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2VJbmZvOjpJbmZhbGxpYmxlVW5wYWlkU2lnbmVkKS4xAVRoZSBleHRlbnNpb24gdmFsaWRhdGVzIGVhY2ggaW5uZXIgaXRlbSBhbmQgYWRkaXRpb25hbGx5IGNoZWNrcyB3aXRoaW4tYmF0Y2hVAW1lbWJlci1rZXkgdW5pcXVlbmVzcyBhbmQgdGhhdCB0aGUgc2lnbmVyJ3MgYmFsYW5jZSBjb3ZlcnMgdGhlIHN1bSBvZiBhbGwgaW5uZXIgYXNzZXQgYW1vdW50cy4AQQFUaGlzIGNhbGwgZGlzcGF0Y2hlcyBlYWNoIGlubmVyIGxvYWQgYnkgcmUtcnVubmluZyB0aGUgc2FtZSBjaGVja3MgdGhlIGV4dGVuc2lvblEBanVzdCBwZXJmb3JtZWQgKHNlZSBbYFJlY3ljbGVyTWFuYWdlcjo6bG9hZGBdKS4gVGhlIHJlZHVuZGFuY3kgbWF0Y2hlcyB0aGUgZGVmZW5zaXZlTQFwYXR0ZXJuIHVzZWQgYnkgW2BTZWxmOjpsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkYF06IGEgZGlzcGF0Y2ggcGF0aEUBdGhhdCBmYWlscyBhbnkgb2YgdGhlc2UgY2hlY2tzIGlzIGEgbG9naWMgYnVnIGluIHRoZSBleHRlbnNpb24sIG5vdCBhIHVzZXIgZXJyb3IuAFUBVGhlIGluc3RhbmNlIGlzIGZpeGVkIGZvciB0aGUgd2hvbGUgYmF0Y2ggcmF0aGVyIHRoYW4gcGVyIGl0ZW0sIGJlY2F1c2UgdGhlIGV4dGVuc2lvblUBY2hlY2tzIHRoZSBzaWduZXIncyBiYWxhbmNlIG9uY2UgYWdhaW5zdCB0aGUgc3VtbWVkIGNvc3Qgb2YgZXZlcnkgaXRlbSwgd2hpY2ggaXMgb25seZxtZWFuaW5nZnVsIHdpdGhpbiBvbmUgdW5kZXJseWluZyBhc3NldC4AUQFPbiBhIHNwb25zb3JlZCBpbnN0YW5jZSwgdGhlIHBvdCdzIGZyZWUgYmFsYW5jZSBtdXN0IGNvdmVyIHRoZSBkZXBvc2l0cyBvZiBldmVyeSBrZXmwbG9hZGVkIGhlcmUsIHRoZSBiYXRjaCBiZWluZyBjaGFyZ2VkIGFzIG9uZS4ARFRoZSBjYWxsIGlzIGZyZWUuZHVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW4YASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARxhbGlhc2VziQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQh0bwQBMFQ6OkFjY291bnRJZAAEaJRVbmxvYWQgYSByZWN5Y2xlciB0byBtaW50IGEgbmV3IGNvaW4uAF0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6VW5sb2FkVG9rZW5dIHdpdGggYGZlZTogVW5sb2FkRmVlOjpQcmVwYWlkYCwgd2hpY2ggY2FuIGJlYQFvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpIHVzaW5nWGBBc1VubG9hZFRva2VuUGVvcGxlYCzsYEFzVW5sb2FkVG9rZW5MaXRlUGVvcGxlYCwgb3IgYEFzVW5sb2FkVG9rZW5QYWlkYCB2YXJpYW50cy4ASQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBhIHVzZXIgdG8gcHJvdmUgdGhleSBvd24gb25lIG9yIG1vcmUgY29pbnMgaW4gYSByZWN5Y2xlciByaW5nXQF3aXRob3V0IHJldmVhbGluZyB3aGljaCBzcGVjaWZpYyBjb2lucyB0aGV5IG93bi4gSXQgY29uc29saWRhdGVzIG9uZSBvciBtdWx0aXBsZSBpbnB1dHNoaW50byBhIHNpbmdsZSBvdXRwdXQgY29pbi4ALFBhcmFtZXRlcnM6RQEqIGBhbGlhc2VzYDogdGhlIGxpc3Qgb2YgYWxpYXNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtZW1iZXIga2V5cyBpbmNsdWRlZCBpbiB0aGUVASAgcmVjeWNsZXIuIFRoZSBwcm9vZnMgZm9yIHRoZXNlIGFsaWFzZXMgYXJlIGNvbnRhaW5lZCBpbiB0aGUgb3JpZ2luLjUBKiBgaW5zdGFuY2VfaWRgLCBgdmFsdWVgIGFuZCBgaW5kZXhgOiBpZGVudGlmaWVzIHRoZSByZWN5Y2xlciBiZWluZyB1bmxvYWRlZC78KiBgX3JldmlzaW9uYDogdGhlIHJlY3ljbGVyIHJldmlzaW9uIHVzZWQgZm9yIHRoZSBhbGlhc19wcm9vZnMuxCogYHRvYDogdGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSBuZXcgY29pbi4ANFJlcXVpcmVtZW50czopASogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXSB3aXRoIGBmZWU6IFVubG9hZEZlZTo6UHJlcGFpZGAuLQEqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLiEBKiBUaGUgYGFsaWFzZXNgIHByb3ZpZGVkIG11c3QgbWF0Y2ggdGhlIGFsaWFzZXMgZGVyaXZlZCBmcm9tIHRoZSBwcm9vZnMuFQEqIFRoZSBhbGlhc2VzIG11c3Qgbm90IGhhdmUgYmVlbiBhbHJlYWR5IHVubG9hZGVkIGZyb20gdGhpcyByZWN5Y2xlci68KiBUaGUgbnVtYmVyIG9mIGFsaWFzZXMgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by41ASogVGhlIHJlc3VsdGluZyBjb25zb2xpZGF0ZWQgdmFsdWUgbXVzdCBub3QgZXhjZWVkIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0ujHVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0HAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEcYWxpYXNlc4kFAZhCb3VuZGVkVmVjPEFsaWFzLCBUOjpNYXhDb25zb2xpZGF0aW9uPgABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABFGluZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEIdG8EATBUOjpBY2NvdW50SWQAARxtYXhfZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAFdPBVbmxvYWQgYSByZWN5Y2xlciB0byB3aXRoZHJhdyB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldC4AUQFUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb27UZXh0ZW5zaW9uIFtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKS4AXQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OlByZXBhaWRdICh2aWEgZnJlZSBvciBwYWlkIHVubG9hZCB0b2tlbiksIG5vIGZlZSBpcyBkZWR1Y3RlZC5RAVdoZW4gYGZlZWAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHRoZSBmZWUgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgdW5sb2FkZWQgYXNzZXRzOlkBdGhlIGFzc2V0IGlzIGNvbnZlcnRlZCBpbnRvIHRoZSBuYXRpdmUgY3VycmVuY3ksIHNvIHRoZSBhbW91bnQgZGVkdWN0ZWQgZGVwZW5kcyBvbiB0aGWMbWFya2V0IGFuZCBpcyBib3VuZGVkIGJ5IGBtYXhfZmVlYC4AMQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBhIHVzZXIgdG8gd2l0aGRyYXcgdGhlaXIgY29pbnMgYmFjayBpbnRvIHRoZSB1bmRlcmx5aW5ngGFzc2V0IChlLmcuLCBhbiBleHRlcm5hbCBhc3NldCkuACxQYXJhbWV0ZXJzOkUBKiBgYWxpYXNlc2A6IHRoZSBsaXN0IG9mIGFsaWFzZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbWVtYmVyIGtleXMgaW5jbHVkZWQgaW4gdGhlFQEgIHJlY3ljbGVyLiBUaGUgcHJvb2ZzIGZvciB0aGVzZSBhbGlhc2VzIGFyZSBjb250YWluZWQgaW4gdGhlIG9yaWdpbi41ASogYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu/CogYF9yZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXNfcHJvb2ZzLuQqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgdW5kZXJseWluZyBhc3NldC5dASogYG1heF9mZWVgOiB0aGUgbWF4aW11bSBhbW91bnQgb2YgdGhlIHVubG9hZGVkIGFzc2V0IHRoZSBmZWUgbWF5IGNvbnN1bWUuIFdoYXRldmVyIHRoZWEBICBmZWUgZG9lcyBub3QgY29uc3VtZSBnb2VzIHRvIGB0b2AuIEl0IGlzIGlnbm9yZWQgZm9yIFtVbmxvYWRGZWU6OlByZXBhaWRdLCB3aGljaCB0YWtlc2wgIG5vIGZlZSBvdXQgb2YgdGhlIG91dHB1dC4ANFJlcXVpcmVtZW50czqsKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLi0BKiBUaGUgcmVjeWNsZXIgaWRlbnRpZmllZCBieSBgaW5zdGFuY2VfaWRgLCBgdmFsdWVgIGFuZCBgaW5kZXhgIG11c3QgZXhpc3QuUQEqIFRoZSBhbGlhcyBwcm9vZnMgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbiBtdXN0IGJlIHZhbGlkIGZvciB0aGUgcmVjeWNsZXIncyByZXZpc2lvbi5ZASogVGhlIGFsaWFzZXMgbXVzdCBub3QgaGF2ZSBiZWVuIGFscmVhZHkgdW5sb2FkZWQgKGV4Y2VwdCBmb3IgdGhlIGZpcnN0IG9uZSB3aGVuIGBmZWVgFQEgIGlzIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB3aGljaCB3YXMgcHJlLW1hcmtlZCBpbiB0aGUgZXh0ZW5zaW9uKS6scGF5X2Zvcl9yZWN5Y2xlcl91bmxvYWRfZmVlX3Rva2VuX3dpdGhfY29pbggBKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcHEEAbg8Q3J5cHRvT2Y8VD4gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlAAZwKQFQYXkgdGhlIGZlZSB0byByZWdpc3RlciBhIG1lbWJlciBrZXkgZm9yIGEgcGFpZCB1bmxvYWQgdG9rZW4gdXNpbmcgYSBjb2luLgA9AVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb27UZXh0ZW5zaW9uIFtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKS4AXQFUaGUgY29pbiBpcyBjb25zdW1lZC4gVGhlIGZlZSBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBjb2luJ3MgdmFsdWU6IHRoZSBhc3NldCBpcyBjb252ZXJ0ZWQ9AWludG8gdGhlIG5hdGl2ZSBjdXJyZW5jeSwgd2hpY2ggaXMgdHJhbnNmZXJyZWQgdG8gW0NvbmZpZzo6RmVlRGVzdGluYXRpb25dLiBUaGWkcmVtYWluaW5nIHZhbHVlIG9mIHRoZSBjb2luIGlzIGRlc3Ryb3llZC4A1ElmIHRoZSBjYWxsIGZhaWxzLCB0aGUgb3JpZ2luIGNvaW4gaXMgc3RpbGwgY29uc3VtZWQuAF0BVG8gcHJvdGVjdCB0aGUgdXNlciBhZ2FpbnN0IHZhcnlpbmcgZmVlcywgaWYgdGhlIGNvaW4ncyB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIGZlZSwgdGhl6GNhbGwgaXMgaW52YWxpZCAoYW4gaW52YWxpZCBjYWxsIG5ldmVyIGdvZXMgaW50byBhIGJsb2NrKS4AYQFUaGlzIGlzIHRoZSBvbmUgYXNzZXQtcGF5aW5nIGNhbGwgd2l0aCBubyBjYWxsZXItc2V0dGFibGUgYm91bmQgb24gdGhlIGZlZSwgYW5kIGl0IG5lZWRzYQFub25lOiB0aGUgY29pbiBpcyBjb25zdW1lZCB3aG9sZSBlaXRoZXIgd2F5LCBzbyBpdHMgdmFsdWUgaXMgdGhlIGJvdW5kLCBhbmQgd2hhdGV2ZXIgdGhlXQFjb252ZXJzaW9uIGRvZXMgbm90IHRha2UgaXMgZGVzdHJveWVkIHJhdGhlciB0aGFuIHJldHVybmVkLiBBIGNhbGxlciB3aG8gd2FudHMgdG8gYm91bmSod2hhdCB0aGUgZmVlIGNvc3RzIHBheXMgZm9yIHRoZSB0b2tlbiB3aXRoIQFbYFNlbGY6OnBheV9mb3JfcmVjeWNsZXJfdW5sb2FkX2ZlZV90b2tlbl93aXRoX2V4dGVybmFsX2Fzc2V0YF0gaW5zdGVhZC4AXQFUaGUgYHByb29mX29mX293bmVyc2hpcGAgaXMgYSBzaWduYXR1cmUgb2YgdGhlIGNhbGxlcidzIGFjY291bnQgSUQgYnkgdGhlIGBtZW1iZXJfa2V5YC4lAVRoaXMgZW5zdXJlcyB0aGUgY2FsbGVyIGNvbnRyb2xzIHRoZSBtZW1iZXIga2V5IHRvIHByZXZlbnQgZnJvbnQtcnVubmluZy4ANFJlcXVpcmVtZW50czrgKiBUaGUgY29pbidzIGFnZSBtdXN0IGJlIGxlc3MgdGhhbiBbQ29uZmlnOjpNYXhpbXVtQWdlXS7cKiBUaGUgZGVub21pbmF0aW9uIG11c3QgYmUgc3VmZmljaWVudCB0byBjb3ZlciB0aGUgZmVlLtgqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBiZSB2YWxpZCBhbmQgbm90IGFscmVhZHkgdXNlZC6kKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSB2YWxpZC60cGF5X2Zvcl9yZWN5Y2xlcl91bmxvYWRfZmVlX3Rva2VuX3dpdGhfbmF0aXZlCAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwcQQBuDxDcnlwdG9PZjxUPiBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUABzxdAVBheSB0aGUgZmVlIHRvIHJlZ2lzdGVyIGEgbWVtYmVyIGtleSBmb3IgYSBwYWlkIHVubG9hZCB0b2tlbiB1c2luZyB0aGUgbmF0aXZlIGN1cnJlbmN5LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ARQFUaGlzIGFkZHMgdGhlIGBtZW1iZXJfa2V5YCB0byBhICJwYWlkIHVubG9hZCB0b2tlbiByaW5nIi4gQmVpbmcgcGFydCBvZiB0aGlzIHJpbmchAWFsbG93cyB0aGUgdXNlciB0byBsYXRlciBnZW5lcmF0ZSBhbiBgVW5sb2FkVG9rZW5gIHRvIHVubG9hZCBhIHJlY3ljbGVyLgANAVRoZSBmZWUgaXMgdHJhbnNmZXJyZWQgZnJvbSB0aGUgY2FsbGVyIHRvIFtDb25maWc6OkZlZURlc3RpbmF0aW9uXS4AXQFUaGUgYHByb29mX29mX293bmVyc2hpcGAgaXMgYSBzaWduYXR1cmUgb2YgdGhlIGNhbGxlcidzIGFjY291bnQgSUQgYnkgdGhlIGBtZW1iZXJfa2V5YC4lAVRoaXMgZW5zdXJlcyB0aGUgY2FsbGVyIGNvbnRyb2xzIHRoZSBtZW1iZXIga2V5IHRvIHByZXZlbnQgZnJvbnQtcnVubmluZy4ANFJlcXVpcmVtZW50czrYKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQupCogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgdmFsaWQu1HBheV9mb3JfcmVjeWNsZXJfdW5sb2FkX2ZlZV90b2tlbl93aXRoX2V4dGVybmFsX2Fzc2V0EAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwcQQBuDxDcnlwdG9PZjxUPiBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUAARxtYXhfZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAIeEUBUGF5IHRoZSBmZWUgdG8gcmVnaXN0ZXIgYSBtZW1iZXIga2V5IGZvciBhIHBhaWQgdW5sb2FkIHRva2VuIHVzaW5nIHRoZSB1bmRlcmx5aW5ncGFzc2V0IG9mIHRoZSBnaXZlbiBpbnN0YW5jZS4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAEUBVGhpcyBhZGRzIHRoZSBgbWVtYmVyX2tleWAgdG8gYSAicGFpZCB1bmxvYWQgdG9rZW4gcmluZyIuIEJlaW5nIHBhcnQgb2YgdGhpcyByaW5nIQFhbGxvd3MgdGhlIHVzZXIgdG8gbGF0ZXIgZ2VuZXJhdGUgYW4gYFVubG9hZFRva2VuYCB0byB1bmxvYWQgYSByZWN5Y2xlci4AUQFUaGUgZmVlIGFyZSBjaGFyZ2VkIGluIHRoZSB1bmRlcmx5aW5nIGFzc2V0IG9mIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UsIGFuZCBjb252ZXJ0ZWQJAWludG8gdGhlIG5hdGl2ZSBjdXJyZW5jeSB0byBiZSB0cmFuc2ZlcnJlZCB0byB0aGUgZmVlIGRlc3RpbmF0aW9uLvxgbWF4X2ZlZWAgYm91bmRzIGhvdyBtdWNoIG9mIHRoZSBhc3NldCB0aGUgY29udmVyc2lvbiBtYXkgdGFrZS4AXQFUaGUgYHByb29mX29mX293bmVyc2hpcGAgaXMgYSBzaWduYXR1cmUgb2YgdGhlIGNhbGxlcidzIGFjY291bnQgSUQgYnkgdGhlIGBtZW1iZXJfa2V5YC4lAVRoaXMgZW5zdXJlcyB0aGUgY2FsbGVyIGNvbnRyb2xzIHRoZSBtZW1iZXIga2V5IHRvIHByZXZlbnQgZnJvbnQtcnVubmluZy4AUQFUaGUgYGluc3RhbmNlX2lkYCBvbmx5IHNlbGVjdHMgd2hpY2ggaW5zdGFuY2UncyB1bmRlcmx5aW5nIGFzc2V0IHRoZSBmZWUgaXMgcGFpZCBpbi5NAVRoZSByZXN1bHRpbmcgdG9rZW4gaXMgbm90IGJvdW5kIHRvIHRoYXQgaW5zdGFuY2UgYW5kIGNhbiBiZSBjb25zdW1lZCB0byB1bmxvYWQgYW55GQFpbnN0YW5jZSdzIHJlY3ljbGVyLCB3aGljaCBpcyB3aHkgdGhlIGZlZSBpcyB0aGUgc2FtZSBmb3IgYWxsIG9mIHRoZW0uAFEBVW5saWtlIHRoZSBzaWduZWQgdW5sb2FkIGNhbGxzLCB0aGlzIG9uZSBpcyBub3QgcHJlLWNoZWNrZWQgYWdhaW5zdCBgbWF4X2ZlZWAgZHVyaW5nXQF0cmFuc2FjdGlvbiB2YWxpZGF0aW9uIGFuZCBkb2VzIG5vdCByZWZ1bmQgdGhlIHdlaWdodCBpdCBkaWQgbm90IHVzZTogYSBjb252ZXJzaW9uIHRoYXRVAW1vdmVkIHBhc3QgYG1heF9mZWVgIGJldHdlZW4gdGhlIGNhbGxlciBxdW90aW5nIGl0IGFuZCB0aGUgdHJhbnNhY3Rpb24gYmVpbmcgaW5jbHVkZWRNAWZhaWxzIHRoZSBkaXNwYXRjaCBhdCB0aGUgZnVsbCBiZW5jaG1hcmtlZCB3ZWlnaHQuIENhbGxlcnMgc2hvdWxkIGxlYXZlIGhlYWRyb29tIGluKGBtYXhfZmVlYC4ANFJlcXVpcmVtZW50czrcKiBUaGUgYGluc3RhbmNlX2lkYCBtdXN0IHJlZmVyIHRvIGFuIGV4aXN0aW5nIGluc3RhbmNlLtgqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBiZSB2YWxpZCBhbmQgbm90IGFscmVhZHkgdXNlZC6kKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSB2YWxpZC6kKiBgbWF4X2ZlZWAgbXVzdCBjb3ZlciB0aGUgY29udmVydGVkIGZlZS7QdW5sb2FkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXRfYW5kX2xvYWRlZF9jb2lucyQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABHGFsaWFzZXOJBQGYQm91bmRlZFZlYzxBbGlhcywgVDo6TWF4Q29uc29saWRhdGlvbj4AARR2YWx1ZRUEATBEZW5vbWluYXRpb24AARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABCHRvBAEwVDo6QWNjb3VudElkAAFUZXh0ZXJuYWxfYXNzZXRfYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABMGxvYWRlZF9jb2luc40FAexCb3VuZGVkVmVjPChEZW5vbWluYXRpb24sIE1lbWJlck9mPFQ+KSwgVDo6TWF4U3BsaXRPdXRwdXRzPgABHG1heF9mZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAmwRQFVbmxvYWQgYSByZWN5Y2xlciBpbnRvIGEgbWl4ZWQgb3V0cHV0IG9mIGV4dGVybmFsIGFzc2V0IGFuZCBmcmVzaGx5IGxvYWRlZCBjb2lucy4AUQFUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb27UZXh0ZW5zaW9uIFtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKS4AWQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBhIHVzZXIgdG8gb2ZmYm9hcmQgcGFydCBvZiB0aGUgdW5sb2FkZWQgdmFsdWUgaW50byB0aGUgdW5kZXJseWluZwEBYXNzZXQgd2hpbGUgcmVtaW50aW5nIHRoZSByZXN0IGFzIGZyZXNobHkgbG9hZGVkIHJlY3ljbGVyIGNvaW5zLgBFAVdoZW4gYGZlZWAgaXMgW1VubG9hZEZlZTo6UHJlcGFpZF0sIGBleHRlcm5hbF9hc3NldF9hbW91bnRgIGlzIHRyYW5zZmVycmVkIGFzLWlzLjUBV2hlbiBgZmVlYCBpcyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgdGhlIGZlZSBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBzcGVjaWZpZWQ5AWBleHRlcm5hbF9hc3NldF9hbW91bnRgLCBzbyB0aGUgcmVjaXBpZW50IHJlY2VpdmVzIHRoZSByZW1haW5kZXIuIFRoZSBhc3NldCBpc1EBY29udmVydGVkIGludG8gdGhlIG5hdGl2ZSBjdXJyZW5jeSB0byBwYXkgdGhlIGZlZSwgc28gdGhlIGFtb3VudCBkZWR1Y3RlZCBkZXBlbmRzIG9unHRoZSBtYXJrZXQgYW5kIGlzIGJvdW5kZWQgYnkgYG1heF9mZWVgLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4uNQEqIGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZpZXMgdGhlIHJlY3ljbGVyIGJlaW5nIHVubG9hZGVkLvgqIGByZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXMgcHJvb2ZzLvwqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgZXh0ZXJuYWwgYXNzZXQgcG9ydGlvbi5dASogYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGA6IHRoZSBncm9zcyBhc3NldCBwb3J0aW9uIHRvIG9mZmJvYXJkIGZyb20gdGhlIHVubG9hZGVkIHZhbHVlLl0BKiBgbG9hZGVkX2NvaW5zYDogdGhlIGZyZXNobHkgbG9hZGVkIHJlY3ljbGVyIGNvaW5zIHRvIG1pbnQgZnJvbSB0aGUgcmVtYWluaW5nIHVubG9hZGVkICAgdmFsdWUuYQEqIGBtYXhfZmVlYDogdGhlIG1heGltdW0gYW1vdW50IG9mIGBleHRlcm5hbF9hc3NldF9hbW91bnRgIHRoZSBmZWUgbWF5IGNvbnN1bWUuIFdoYXRldmVyWQEgIHRoZSBmZWUgZG9lcyBub3QgY29uc3VtZSBnb2VzIHRvIGB0b2AuIEl0IGlzIGlnbm9yZWQgZm9yIFtVbmxvYWRGZWU6OlByZXBhaWRdLCB3aGljaIQgIHRha2VzIG5vIGZlZSBvdXQgb2YgdGhlIG91dHB1dC4ARQFUaGUgdG90YWwgdW5sb2FkZWQgdmFsdWUgbXVzdCBhbHdheXMgZXF1YWwgdGhlIGFzc2V0IHBvcnRpb24gcGx1cyB0aGUgbG9hZGVkLWNvaW5JAXBvcnRpb24uIEluIGBGcm9tT3V0cHV0YCBtb2RlLCB0aGUgYXNzZXQgcG9ydGlvbiBtdXN0IGJlIGxhcmdlIGVub3VnaCB0byBjb3ZlciB0aGUsdW5sb2FkIGZlZS4ANFJlcXVpcmVtZW50czqsKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLi0BKiBUaGUgcmVjeWNsZXIgaWRlbnRpZmllZCBieSBgaW5zdGFuY2VfaWRgLCBgdmFsdWVgIGFuZCBgaW5kZXhgIG11c3QgZXhpc3QuUQEqIFRoZSBhbGlhcyBwcm9vZnMgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbiBtdXN0IGJlIHZhbGlkIGZvciB0aGUgcmVjeWNsZXIncyByZXZpc2lvbi5ZASogVGhlIGFsaWFzZXMgbXVzdCBub3QgaGF2ZSBiZWVuIGFscmVhZHkgdW5sb2FkZWQgKGV4Y2VwdCBmb3IgdGhlIGZpcnN0IG9uZSB3aGVuIGBmZWVgFQEgIGlzIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB3aGljaCB3YXMgcHJlLW1hcmtlZCBpbiB0aGUgZXh0ZW5zaW9uKS5VASogYGxvYWRlZF9jb2luc2AgbXVzdCBub3QgYmUgZW1wdHksIGFuZCBhbGwgbG9hZGVkLWNvaW4gbWVtYmVyIGtleXMgbXVzdCBiZSB2YWxpZCBhbmQkICB1bnVzZWQuYQEqIFRoZSB0b3RhbCB1bmxvYWRlZCB2YWx1ZSBtdXN0IGVxdWFsIGBleHRlcm5hbF9hc3NldF9hbW91bnRgIHBsdXMgdGhlIHRvdGFsIGFzc2V0IHZhbHVlUCAgb2YgYGxvYWRlZF9jb2luc2AuRQEqIFdoZW4gdXNpbmcgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIGBleHRlcm5hbF9hc3NldF9hbW91bnRgIG11c3QgY292ZXIgdGhlIGZlZS5BASogT24gYSBzcG9uc29yZWQgaW5zdGFuY2UsIHRoZSBwb3QncyBmcmVlIGJhbGFuY2UgbXVzdCBjb3ZlciB0aGUgZGVwb3NpdHMgb2YgdGhlLQEgIGBsb2FkZWRfY29pbnNgIGtleXMsIHdpdGhvdXQgY3JlZGl0aW5nIHRoZSBkZXBvc2l0cyB0aGlzIHVubG9hZCByZWxlYXNlcy7EdW5sb2FkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXRfbm9uX2Fub255bW91cxgBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABFGlucHV0mQUBoFVubG9hZFJlY3ljbGVySW5wdXQ8VDo6TWF4Q29uc29saWRhdGlvbj4AATBhbGlhc19wcm9vZnMZBAGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgABCHRvBAEwVDo6QWNjb3VudElkAAEwZmVlX2N1cnJlbmN5nQUBLEZlZUN1cnJlbmN5AAEcbWF4X2ZlZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ACxgxAVVubG9hZCBhIHJlY3ljbGVyIHRvIHdpdGhkcmF3IHRoZSB1bmRlcmx5aW5nIGV4dGVybmFsIGFzc2V0IChub24tYW5vbnltb3VzKS4AVQFDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXNddGZvciB0aGUgc2luZ2xlLXJlY3ljbGVyIGNhc2UuAFkBU2VlIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJzX2ludG9fZXh0ZXJuYWxfYXNzZXRfbm9uX2Fub255bW91c10gZm9yIGZ1bGwgZG9jdW1lbnRhdGlvbi7IdW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXMYASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARhpbnB1dHOhBQEpAUJvdW5kZWRWZWM8VW5sb2FkUmVjeWNsZXJJbnB1dDxUOjpNYXhDb25zb2xpZGF0aW9uPiwgVDo6Ck1heENvbnNvbGlkYXRpb24+AAEwYWxpYXNfcHJvb2ZzGQQBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAQh0bwQBMFQ6OkFjY291bnRJZAABMGZlZV9jdXJyZW5jeZ0FASxGZWVDdXJyZW5jeQABHG1heF9mZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAyEUQFVbmxvYWQgbXVsdGlwbGUgcmVjeWNsZXJzIHRvIHdpdGhkcmF3IHRoZSB1bmRlcmx5aW5nIGV4dGVybmFsIGFzc2V0IChub24tYW5vbnltb3VzKS4AQQFUaGlzIGlzIGEgc2lnbmVkLW9yaWdpbiB2ZXJzaW9uIG9mIFtgU2VsZjo6dW5sb2FkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXRgXRkBd2hlcmUgdGhlIGZlZSBpcyBwYWlkIGV4cGxpY2l0bHkgYnkgdGhlIHNpZ25lciByYXRoZXIgdGhhbiB0aHJvdWdoIHRoZfByaW5nLWF1dGhlbnRpY2F0ZWQgdW5sb2FkIHRva2VuLCBhbmQgZm9yIG11bHRpcGxlIHJlY3ljbGVycy4AMQFUaGUgZmVlIGNoYXJnZWQgaXMgb25lIHVubG9hZCB0b2tlbiBmZWUgcGVyIHJlY3ljbGVyIChpLmUuLCBgaW5wdXRzLmxlbigpYCkuAE0BRXZlcnkgaW5wdXQgdW5sb2FkcyBmcm9tIGBpbnN0YW5jZV9pZGA6IG9uZSBjYWxsIGNhbm5vdCBzcGFuIGluc3RhbmNlcywgYmVjYXVzZSB0aGVNAXVubG9hZGVkIHZhbHVlIGlzIHN1bW1lZCBhbmQgcGFpZCBvdXQgYXMgYSBzaW5nbGUgdHJhbnNmZXIgb2Ygb25lIHVuZGVybHlpbmcgYXNzZXQuACxQYXJhbWV0ZXJzOtwqIGBpbnN0YW5jZV9pZGA6IHRoZSBpbnN0YW5jZSBldmVyeSBpbnB1dCB1bmxvYWRzIGZyb20uUQEqIGBpbnB1dHNgOiBBIGxpc3Qgb2YgaW5wdXRzLCBzcGVjaWZ5aW5nIHRoZSByZWN5Y2xlciBhbmQgYWxpYXNlcyB0byB1bmxvYWQuIEF0IG1vc3QhASAgW2BDb25maWc6Ok1heENvbnNvbGlkYXRpb25gXSBpbnB1dHMsIG9uZSBhbGlhcyBvZiBvbmUgaW5wdXQgcGVyIHByb29mLlUBKiBgYWxpYXNfcHJvb2ZzYDogdGhlIHByb29mcyBmb3IgYWxsIGFsaWFzZXMgYWNyb3NzIGFsbCBpbnB1dHMsIHNpZ25lZCBvdmVyIGEgbWVzc2FnZVUBICB0aGF0IGluY2x1ZGVzIHRoZSBzaWduZXIuIFRoZSBwcm9vZnMgbXVzdCBjb3JyZXNwb25kIHNlcXVlbnRpYWxseSB0byB0aGUgYWxpYXNlcyBpbiwgIGBpbnB1dHNgLrgqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgYXNzZXQuOQEqIGBmZWVfY3VycmVuY3lgOiB3aGV0aGVyIHRvIHBheSB0aGUgZmVlIGluIG5hdGl2ZSBjdXJyZW5jeSBvciBleHRlcm5hbCBhc3NldC5hASogYG1heF9mZWVgOiB0aGUgbW9zdCB0aGUgZmVlIG1heSBjb3N0IHRoZSBzaWduZXIsIGluIGBmZWVfY3VycmVuY3lgOiB0aGUgbmF0aXZlIGZlZSBmb3JVASAgW0ZlZUN1cnJlbmN5OjpOYXRpdmVdLCBhbmQgdGhlIGFtb3VudCBvZiB0aGUgc2lnbmVyJ3MgYXNzZXQgdGhlIGNvbnZlcnNpb24gaW50byB0aGXcICBuYXRpdmUgZmVlIG1heSB0YWtlIGZvciBbRmVlQ3VycmVuY3k6OkV4dGVybmFsQXNzZXRdLgA0UmVxdWlyZW1lbnRzOnAqIFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQu3CogVGhlIGBpbnN0YW5jZV9pZGAgbXVzdCByZWZlciB0byBhbiBleGlzdGluZyBpbnN0YW5jZS6UKiBBbGwgc3BlY2lmaWVkIHJlY3ljbGVycyBtdXN0IGV4aXN0Li0BKiBUaGUgYWxpYXMgcHJvb2ZzIG11c3QgY29ycmVzcG9uZCBzZXF1ZW50aWFsbHkgdG8gdGhlIGFsaWFzZXMgaW4gYGlucHV0c2AuOQEqIGBpbnB1dHNgIG11c3Qgbm90IGJlIGVtcHR5IGFuZCBlYWNoIGVsZW1lbnQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBhbGlhcy4tASogYGFsaWFzX3Byb29mc2AgbXVzdCBob2xkIGV4YWN0bHkgb25lIHByb29mIHBlciBhbGlhcyBhY3Jvc3MgYWxsIGBpbnB1dHNgLkEBKiBUaGUgc2lnbmVyIG11c3QgaGF2ZSBzdWZmaWNpZW50IGJhbGFuY2UgdG8gcGF5IHRoZSBmZWUgKG9uZSBmZWUgcGVyIHJlY3ljbGVyKS7EKiBgbWF4X2ZlZWAgbXVzdCBjb3ZlciB0aGUgZmVlIGluIGBmZWVfY3VycmVuY3lgLrB1bmxvYWRfYXJjaGl2ZWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldCgBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABFGluZGV4OAEkUmluZ0luZGV4AAE0cmVjeWNsZXJfcm9vdKkFATBNZW1iZXJzT2Y8VD4AATR1bmxvYWRlZF9yb290PAEQSDI1NgABLGFsaWFzX3Byb29mHQQBKFByb29mT2Y8VD4AAUxub25faW5jbHVzaW9uX3Byb29mrQUBZQFCb3VuZGVkVmVjPEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPE1BWF9UUklFX05PREVfTEVOPj4sIENvbnN0VTMyPApNQVhfVFJJRV9QUk9PRl9OT0RFUz4sPgABCHRvBAEwVDo6QWNjb3VudElkAAEwZmVlX2N1cnJlbmN5nQUBLEZlZUN1cnJlbmN5AAEcbWF4X2ZlZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AEaQFAVJlY292ZXIgYSBjb2luIGZyb20gYW4gYXJjaGl2ZWQgcmVjeWNsZXIgaW50byB0aGUgZXh0ZXJuYWwgYXNzZXQuAFhUaGlzIGlzIGEgc2lnbmVkIGNhbGwuAPBJdCBhbGxvd3MgYSB1c2VyIHRvIHVubG9hZCBhIGNvaW4gZnJvbSBhbiBhcmNoaXZlZCByZWN5Y2xlci5JAVRoZSB1bmxvYWQgdG9rZW4gZmVlIGlzIGNoYXJnZWQgdG8gdGhlIHNpZ25lciwgYW5kIHRoZSBjYWxsIGlzIG5vdCByZWZ1bmRlZCwgYXMgaXQdAWFjY291bnRzIGZvciB0aGUgZXh0cmEgcHJvb2YgdmVyaWZpY2F0aW9uIGFuZCBhcmNoaXZlZCByZWN5Y2xlciB1cGRhdGUuACxQYXJhbWV0ZXJzOikBKiBgaW5zdGFuY2VfaWRgLCBgdmFsdWVgIGFuZCBgaW5kZXhgOiBpZGVudGlmeSB0aGUgYXJjaGl2ZWQgcmVjeWNsZXIgcmluZy4xASogYHJlY3ljbGVyX3Jvb3RgOiB0aGUgZGVsZXRlZCByaW5nJ3MgcmluZy1WUkYgcm9vdDsgdmFsaWRhdGVkIHRvZ2V0aGVyIHdpdGjkICBgdW5sb2FkZWRfcm9vdGAgYWdhaW5zdCB0aGUgc3RvcmVkIGFyY2hpdmFsIGNvbW1pdG1lbnQuBQEqIGB1bmxvYWRlZF9yb290YDogdGhlIGN1cnJlbnQgcm9vdCBvZiB0aGUgdW5sb2FkZWQtYWxpYXNlcyB0cmllLjkBKiBgYWxpYXNfcHJvb2ZgOiBhIHJpbmctVlJGIG1lbWJlcnNoaXAgcHJvb2YsIGNyZWF0ZWQgb3ZlciB0aGUgbWVzc2FnZSBiaW5kaW5nWQEgIGBibGFrZTJfMjU2KFVOTE9BRF9BUkNISVZFRF9NU0dfUFJFRklYICsrIHNpZ25lcilgIGluIHRoZSByZWN5Y2xlciB1bmxvYWRpbmcgY29udGV4dHQgIFVOTE9BRElOR19SRUNZQ0xFUl9DT05URVhULjUBKiBgbm9uX2luY2x1c2lvbl9wcm9vZmA6IHRyaWUgbm9kZXMgcHJvdmluZyB0aGUgY2FsbGVyJ3MgYWxpYXMgaXMgYWJzZW50IGZyb21VASAgYHVubG9hZGVkX3Jvb3RgIChpLmUuIGl0IHdhcyBuZXZlciB1bmxvYWRlZCk7IG11c3QgYWxzbyBjb3ZlciB0aGUgaW5zZXJ0aW9uIHBhdGggb2a4ICB0aGUgYWxpYXMgc28gdGhlIG5ldyByb290IGNhbiBiZSByZWNvbXB1dGVkLuQqIGB0b2A6IHRoZSBhY2NvdW50IHJlY2VpdmluZyB0aGUgcmVjb3ZlcmVkIGRlbm9taW5hdGlvbi5ZASogYGZlZV9jdXJyZW5jeWA6IHdoZXRoZXIgdGhlIHVubG9hZCBmZWUgaXMgcGFpZCBpbiBuYXRpdmUgY3VycmVuY3kgb3IgZXh0ZXJuYWwgYXNzZXQuYQEqIGBtYXhfZmVlYDogdGhlIG1vc3QgdGhlIGZlZSBtYXkgY29zdCB0aGUgc2lnbmVyLCBpbiBgZmVlX2N1cnJlbmN5YDogdGhlIG5hdGl2ZSBmZWUgZm9yVQEgIFtGZWVDdXJyZW5jeTo6TmF0aXZlXSwgYW5kIHRoZSBhbW91bnQgb2YgdGhlIHNpZ25lcidzIGFzc2V0IHRoZSBjb252ZXJzaW9uIGludG8gdGhl3CAgbmF0aXZlIGZlZSBtYXkgdGFrZSBmb3IgW0ZlZUN1cnJlbmN5OjpFeHRlcm5hbEFzc2V0XS4AYQFPbiBzdWNjZXNzIHRoZSBmdWxsIGRlbm9taW5hdGlvbiBpcyByZWxlYXNlZCB0byBgdG9gLCB0aGUgYWxpYXMgaXMgYWRkZWQgdG8gdGhlIHVubG9hZGVkNQFzZXQgKHNvIGl0IGNhbm5vdCBiZSByZWNvdmVyZWQgYWdhaW4pLCBhbmQgdGhlIGFyY2hpdmUncyByZWNvdmVyYWJsZSBjb3VudCBpc8BkZWNyZW1lbnRlZCAodGhlIGVudHJ5IGlzIHJlbW92ZWQgb25jZSBkcmFpbmVkKS5VAShObyBbYENvbmZpZzo6TG9hZERlcG9zaXRgXSBpcyBzZXR0bGVkIGhlcmUsIGl0IHdhcyBhbHJlYWR5IHNldHRsZWQgd2hlbiB0aGUgcmVjeWNsZXI4d2FzIGFyY2hpdmVkLikAVQFUaGUgdW5sb2FkZWQtYWxpYXNlcyB0cmllIG5lZWRlZCBmb3IgYHVubG9hZGVkX3Jvb3RgIGFuZCBgbm9uX2luY2x1c2lvbl9wcm9vZmAgY2FuIGJlMQFyZWNvbnN0cnVjdGVkIG9mZmNoYWluIGJ5IGxpc3RlbmluZyB0byB0aGUgW2BFdmVudDo6UmVjeWNsZXJBbGlhc1VubG9hZGVkYF0sUQFbYEV2ZW50OjpSZWN5Y2xlckFyY2hpdmVkYF0gYW5kIFtgRXZlbnQ6OkFyY2hpdmVkUmVjeWNsZXJVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0YF0cZXZlbnRzLgBVAVRoaXMgY2FsbCBjb25mbGljdHMgd2l0aCBhbnkgb3RoZXIgY2FsbCB0aGF0IHVubG9hZHMgZnJvbSB0aGUgc2FtZSBhcmNoaXZlZCByZWN5Y2xlcjphAWVhY2ggdW5sb2FkIHVwZGF0ZXMgdGhlIGNvbW1pdG1lbnQsIHNvIHRoZSBwcm9vZnMgaW4gdGhlIGNvbXBldGluZyBjYWxsIGJlY29tZSBvdXRkYXRlZC5BAWByZWN5Y2xlcl9yb290YCBhbmQgYHVubG9hZGVkX3Jvb3RgIGFyZSBjaGVja2VkIGFnYWluc3QgdGhlIHN0b3JlZCBjb21taXRtZW50IGF0TQF0cmFuc2FjdGlvbiB2YWxpZGF0aW9uLCB0aGVyZWZvcmUgcmVzb2x2aW5nIHN1Y2ggY29uZmxpY3RzIHdpdGhvdXQgY2hhcmdpbmcgZmVlcyBieYxtYXJraW5nIG91dGRhdGVkIHByb29mcyBhcyBpbnZhbGlkLmh1bmxvYWRfcmVjeWNsZXJfaW50b19jb2lucxwBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABHGFsaWFzZXOJBQGYQm91bmRlZFZlYzxBbGlhcywgVDo6TWF4Q29uc29saWRhdGlvbj4AARR2YWx1ZRUEATBEZW5vbWluYXRpb24AARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABKHNwbGl0X2ludG9pBQF9AUJvdW5kZWRWZWM8CihEZW5vbWluYXRpb24sIEJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhTcGxpdE91dHB1dHM+KSwgVDo6Ck1heFNwbGl0T3V0cHV0cyw+AAEcbWF4X2ZlZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ADbzUVW5sb2FkIGEgcmVjeWNsZXIgdG8gbWludCBtdWx0aXBsZSBuZXcgY29pbnMgKHNwbGl0KS4AKQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0gd2l0aCBgZmVlOiBVbmxvYWRGZWU6OlByZXBhaWRgLgBFAVRoaXMgZnVuY3Rpb24gY29tYmluZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgW1NlbGY6OnVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW5dIGFuZEUBW1NlbGY6OnNwbGl0XSBpbiBhIHNpbmdsZSBhdG9taWMgb3BlcmF0aW9uLiBUaGUgcmVzdWx0aW5nIGNvaW5zJyBhZ2UgaXMgMSBiZWNhdXNlRQF0aGUgYWN0aW9uIG9mIHNwbGl0dGluZyBhZ2UgY29pbnMuIFRoaXMgaXMgYWxzbyBpbXBvcnRhbnQgYmVjYXVzZSByZXN1bHRpbmcgY29pbnPoYXJlIG5vdCBlbnRpcmVseSBmcmVzaCwgdGhleSBjYW4gYmUgbGlua2VkIHRvIG90aGVyIGNvaW5zLgBZAVVubGlrZSBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbl0sIHRoaXMgY2FsbCBkb2VzICoqbm90KiogcmVxdWlyZSB0aGUgbnVtYmVyIG9mdGFsaWFzZXMgdG8gYmUgYSBwb3dlciBvZiB0d28uACxQYXJhbWV0ZXJzOkUBKiBgYWxpYXNlc2A6IHRoZSBsaXN0IG9mIGFsaWFzZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbWVtYmVyIGtleXMgaW5jbHVkZWQgaW4gdGhlFQEgIHJlY3ljbGVyLiBUaGUgcHJvb2ZzIGZvciB0aGVzZSBhbGlhc2VzIGFyZSBjb250YWluZWQgaW4gdGhlIG9yaWdpbi41ASogYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu+CogYHJldmlzaW9uYDogdGhlIHJlY3ljbGVyIHJldmlzaW9uIHVzZWQgZm9yIHRoZSBhbGlhc19wcm9vZnMuUQEqIGBzcGxpdF9pbnRvYDogYSB2ZWN0b3Igb2YgcGFpcnMsIGVhY2ggcGFpciBjb250YWluaW5nIGEgZGVub21pbmF0aW9uIGFuZCBhIGxpc3Qgb2ZoICBkZXN0aW5hdGlvbiBhY2NvdW50IGlkcy5ZASogYG1heF9mZWVgOiB0aGUgbWF4aW11bSBmZWUgdGhlIGNhbGxlciBpcyB3aWxsaW5nIHRvIHBheSwgZXhwcmVzc2VkIGluIHRoZSB1bmRlcmx5aW5nSQEgIGFzc2V0IGJhbGFuY2UuIEl0IG11c3QgYmUgZXF1YWwgdG8gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdG90YWwgdmFsdWUgb2YgdGhlOQEgIHVubG9hZGVkIGNvaW5zIGFuZCB0aGUgdG90YWwgdmFsdWUgb2YgdGhlIG5ldyBjb2lucyBkZWZpbmVkIGluIGBzcGxpdF9pbnRvYC4AYQEgIFdoZW4gdXNpbmcgW1VubG9hZEZlZTo6UHJlcGFpZF0sIGl0IG11c3QgYmUgemVybzogbm90aGluZyBpcyBzZXQgYXNpZGUgZm9yIHRoZSBmZWUsIHNvuCAgYHNwbGl0X2ludG9gIHRha2VzIHRoZSB3aG9sZSB1bmxvYWRlZCB2YWx1ZS5dASAgV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgdGhpcyBhbW91bnQgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgaW5wdXQ6IHRoZSBhc3NldA0BICBpcyBjb252ZXJ0ZWQgaW50byB0aGUgbmF0aXZlIG5ldHdvcmsgZmVlLCB3aGljaCBpcyB0cmFuc2ZlcnJlZCB0bzUBICBbQ29uZmlnOjpGZWVEZXN0aW5hdGlvbl0sIGFuZCBhbnkgcmVtYWluZGVyIGlzIGJ1cm5lZC4gVGhlIGNhbGxlciBjYW4gcXVlcnnsICBgZ2V0X3BhaWRfdW5sb2FkX3Rva2VuX2ZlZV9pbl9hc3NldGAgdG8gZXN0aW1hdGUgdGhlIGZlZS4AYQEgIFRoaXMgcGFyYW1ldGVyIHNlcnZlcyBhcyBhIHNhZmVndWFyZDogdGhlIHRyYW5zYWN0aW9uIGlzIHJlamVjdGVkIGF0IHZhbGlkYXRpb24gaWYgdGhlQQEgIGFjdHVhbCBuZXR3b3JrIGZlZSBleGNlZWRzIGBtYXhfZmVlYCwgcHJvdGVjdGluZyB0aGUgY2FsbGVyIGZyb20gZXhjZXNzaXZlIGZlZV0BICBpbmNyZWFzZXMgdGhhdCB3b3VsZCByZW5kZXIgdGhlIGFyZ3VtZW50IGBzcGxpdF9pbnRvYCBpbnZhbGlkICh1bmxvYWRlZCBmdW5kcyBtdXN0IGJlmCAgaGlnaGVyIHRoYW4gdGhlIHNwbGl0IHBsdXMgdGhlIGZlZSkuADRSZXF1aXJlbWVudHM6rCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXS4tASogVGhlIHJlY3ljbGVyIGlkZW50aWZpZWQgYnkgYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YCBtdXN0IGV4aXN0LlEBKiBUaGUgYWxpYXMgcHJvb2ZzIHByb3ZpZGVkIGluIHRoZSBvcmlnaW4gbXVzdCBiZSB2YWxpZCBmb3IgdGhlIHJlY3ljbGVyJ3MgcmV2aXNpb24uIQEqIFRoZSBgYWxpYXNlc2AgcHJvdmlkZWQgbXVzdCBtYXRjaCB0aGUgYWxpYXNlcyBkZXJpdmVkIGZyb20gdGhlIHByb29mcy7gKiBFYWNoIGRlc3RpbmF0aW9uIGFjY291bnQgbXVzdCBub3QgYWxyZWFkeSBoYXZlIGEgY29pbi5hASogVGhlIHRvdGFsIHZhbHVlIG9mIHRoZSBuZXcgY29pbnMgZGVmaW5lZCBpbiBgc3BsaXRfaW50b2AgcGx1cyBgbWF4X2ZlZWAgbXVzdCBlcXVhbCB0aGWQICB0b3RhbCB2YWx1ZSBvZiB0aGUgdW5sb2FkZWQgY29pbnMuVQEqIGBtYXhfZmVlYCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIG1pbmltdW0gY29pbi4gKFRoaXMgaXMgaW1wbGllZCBieSB0aGUgY29uZGl0aW9uJCAgYWJvdmUpLtwqIFdoZW4gdXNpbmcgW1VubG9hZEZlZTo6UHJlcGFpZF0sIGBtYXhfZmVlYCBtdXN0IGJlIDAuLQEqIFdoZW4gdXNpbmcgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIGBtYXhfZmVlYCBtdXN0IGNvdmVyIHRoZSBuZXR3b3JrIGZlZS6gZGlyZWN0X29mZmJvYXJkX2NvaW5faW50b19leHRlcm5hbF9hc3NldAQBCHRvBAEwVDo6QWNjb3VudElkAA5g8ERpcmVjdGx5IG9mZmJvYXJkIGEgY29pbiBpbnRvIHRoZSB1bmRlcmx5aW5nIGV4dGVybmFsIGFzc2V0LgDUVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIG9idGFpbmVkIHRocm91Z2joW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpIHVzaW5nIGBBc0NvaW5gLgA5AVRoaXMgY2FsbCBieXBhc3NlcyB0aGUgcmVjeWNsZXIvdW5sb2FkLXRva2VuIG9mZmJvYXJkaW5nIGZsb3cgYW5kIHJlbGVhc2VzIHRoZcx1bmRlcmx5aW5nIGFzc2V0IGRpcmVjdGx5LCB3aGF0ZXZlciB0aGUgY29pbidzIGFnZS4ARCMgUHJpdmFjeSB3YXJuaW5nAEEBRGlyZWN0bHkgb2ZmYm9hcmRpbmcgYSBjb2luIHdpdGggbm9uLXplcm8gYWdlIHB1YmxpY2x5IGxpbmtzIHRoZSBjb2luJ3MgdHJhbnNmZXJVAWNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50LCB3aGljaCBjb21wcm9taXNlcywgdG8gc29tZSBleHRlbnQsIHRoZSBhbm9ueW1pdHkgb2ZNAWV2ZXJ5IHByZXZpb3VzIGhvbGRlciBpbiB0aGUgY2hhaW46IGlmIEFsaWNlIHNlbmRzIGEgY29pbiB0byBCb2IgYW5kIEJvYiB0byBDaGFybGllRQFhbmQgQ2hhcmxpZSBkaXJlY3RseSBvZmZib2FyZHMgaXQsIEFsaWNlIG1heSBkZWR1Y2Ugd2hhdCBCb2IgZGlkIHdpdGggdGhlIGNvaW4uIEFZAWZyZXNoIGNvaW4gKGBhZ2UgPT0gMGApIGhhcyBqdXN0IGJlZW4gdW5sb2FkZWQgZnJvbSBhIHJlY3ljbGVyIGFuZCBjYXJyaWVzIG5vIHRyYW5zZmVyQQFoaXN0b3J5LCBzbyBpdCBjYW4gYmUgb2ZmYm9hcmRlZCBkaXJlY3RseSB3aXRob3V0IHRoaXMgcHJpdmFjeSBsb3NzLiBGb3IgbWF4aW11bR0BcHJpdmFjeSwgb2ZmYm9hcmQgY29pbnMgd2l0aCBub24temVybyBhZ2UgdGhyb3VnaCB0aGUgcmVjeWNsZXIgaW5zdGVhZC4ALFBhcmFtZXRlcnM6PQEqIGB0b2A6IGRlc3RpbmF0aW9uIGFjY291bnQgdGhhdCByZWNlaXZlcyB0aGUgcmVsZWFzZWQgdW5kZXJseWluZyBhc3NldCBhbW91bnQuADRSZXF1aXJlbWVudHM6kCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OkNvaW5dLhEBKiBUaGUgZGVub21pbmF0aW9uIG11c3QgYmUgcmVwcmVzZW50YWJsZSBhcyB1bmRlcmx5aW5nLWFzc2V0IGFtb3VudC5oY3JlYXRlX3N1ZmZpY2llbnRfaW5zdGFuY2UIASBhc3NldF9pZHEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AAShhc3NldF91bml0RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgASQPRDcmVhdGUgYSBzdWZmaWNpZW50IGNvaW5hZ2UgaW5zdGFuY2UgZm9yIGFuIHVuZGVybHlpbmcgYXNzZXQuACEBVGhlIG9yaWdpbiBtdXN0IHNhdGlzZnkgW2BDb25maWc6OkFkbWluT3JpZ2luYF0uIFRoZSBhc3NldCBtdXN0IGV4aXN0IGluRQFbYENvbmZpZzo6RnVuZ2libGVzYF07IGl0IG1heSBhbHJlYWR5IGJlIHdyYXBwZWQgYnkgb3RoZXIgaW5zdGFuY2VzLCBzbyBhZG1pbiBjYW4hAWFsd2F5cyB3cmFwIGl0IGF0IHRoZSBncmFudWxhcml0eSBpdCB3YW50cywgd2hhdGV2ZXIgd2FzIGNyZWF0ZWQgYmVmb3JlLgBRAVRoZSBpbnN0YW5jZSdzIHJlY3ljbGVyIGNvbGxlY3Rpb25zIGFyZSBjcmVhdGVkIHdpdGhpbiB0aGlzIGNhbGwuIFRoZSBwYWxsZXQgYWNjb3VudE0BbXVzdCBhbHJlYWR5IGJlIGFibGUgdG8gcmVjZWl2ZSB0aGUgdW5kZXJseWluZyBhc3NldDogZm9yIGEgbm9uLXN1ZmZpY2llbnQgYXNzZXQgaXRBAW11c3QgaGF2ZSBiZWVuIHRvdWNoZWQgYmVmb3JlaGFuZC4gSXQgbXVzdCBhbHNvIGFscmVhZHkgaG9sZCB0aGUgYXNzZXQncyBtaW5pbXVtmGJhbGFuY2UgYXMgYSBidWZmZXIgdG8gYXZvaWQgZHVzdGluZ3MuACxQYXJhbWV0ZXJzOgUBKiBgYXNzZXRfaWRgOiB0aGUgdW5kZXJseWluZyBhc3NldCBiYWNraW5nIHRoaXMgaW5zdGFuY2UncyBjb2lucy5ZASogYGFzc2V0X3VuaXRgOiB0aGUgYXNzZXQgYW1vdW50IG9mIGEgY29pbiBvZiBkZW5vbWluYXRpb24gemVyby4gTXVzdCBiZSBub24temVybywgYW5kTQEgIG11c3QgcmVwcmVzZW50IGV2ZXJ5IGRlbm9taW5hdGlvbiBpbiBgW01pbmltdW1FeHBvbmVudCwgTWF4aW11bUV4cG9uZW50XWAgd2l0aG91dDQgIHRydW5jYXRpb24uZGNyZWF0ZV9zcG9uc29yZWRfaW5zdGFuY2UMASBhc3NldF9pZHEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AAShhc3NldF91bml0RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABPGluaXRpYWxfZnVuZGluZ7kFAdhPcHRpb248KEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPiwgRnVuZ2libGVzQmFsYW5jZU9mPFQ+KT4AE4DgQ3JlYXRlIGEgc3BvbnNvcmVkIGNvaW5hZ2UgaW5zdGFuY2Ugd3JhcHBpbmcgYGFzc2V0X2lkYC4ATQFUaGUgb3JpZ2luIG11c3Qgc2F0aXNmeSBbYENvbmZpZzo6U3BvbnNvck9yaWdpbmBdLCB3aGljaCB5aWVsZHMgdGhlIHBheWluZyBhY2NvdW50O0kBd2l0aCBgRW5zdXJlU2lnbmVkYCBhbnlvbmUgY2FuIGNhbGwgdGhpcy4gW2BDb25maWc6OkVuYWJsZVBlcm1pc3Npb25sZXNzYF0gbXVzdCBiZVUBdHJ1ZSwgb3RoZXJ3aXNlIG5vIHNwb25zb3JlZCBpbnN0YW5jZSBjYW4gYmUgY3JlYXRlZCBhdCBhbGwuIFRoZSBpbnN0YW5jZSdzIGxvYWQtc2lkZSUBY29zdHMgYXJlIHVuZGVyd3JpdHRlbiBieSBhIHBvdCBhY2NvdW50IGRlcml2ZWQgZnJvbSB0aGUgaW5zdGFuY2UgaWQgKHNlZT0BW2BQYWxsZXQ6OnBvdF9hY2NvdW50YF0pLCBrZXB0IGZ1bmRlZCBieSBzcG9uc29ycyB0aHJvdWdoIFtgUGFsbGV0OjpmdW5kX3BvdGBdLgBQVGhlIGNhbGxlciBwcm92aWRlczpRAS0gdGhlIGluc3RhbmNlIGNyZWF0aW9uIGRlcG9zaXQgKFtgQ29uZmlnOjpJbnN0YW5jZUNyZWF0aW9uRGVwb3NpdGBdLCB0YWtlbiBmcm9tIHRoZVUBICBjYWxsZXIgYW5kIGtlcHQgZm9yIGFzIGxvbmcgYXMgdGhlIGluc3RhbmNlIGlzIHNwb25zb3JlZCwgc2luY2UgaW5zdGFuY2VzIGFyZSBuZXZlckkBICByZW1vdmVkOyB0aGUgY2FsbGVyIGFuZCBpdHMgdGlja2V0IGFyZSByZWNvcmRlZCBpbiBbYEluc3RhbmNlUmVjb3JkOjpjcmVhdG9yYF0pLF0BLSB0aGUgcGFsbGV0IGFjY291bnQncyBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgKHRyYW5zZmVycmVkIHJhdGhlciB0aGFuBQEgIG1pbnRlZCwgc28gYSBwZXJtaXNzaW9ubGVzcyBjYWxsIGNhbm5vdCBjcmVhdGUgdW5iYWNrZWQgZnVuZHMpLFEBLSBvcHRpb25hbGx5IGBpbml0aWFsX2Z1bmRpbmdgLCByZWNvcmRlZCBhcyB0aGUgY2FsbGVyJ3MgcG90IGNvbnRyaWJ1dGlvbiBleGFjdGx5IGFzTQEgIFtgUGFsbGV0OjpmdW5kX3BvdGBdIHdvdWxkLiBCdW5kbGVkIGhlcmUgYmVjYXVzZSB0aGUgaW5zdGFuY2UgaWQgaXMgb25seSBhc3NpZ25lZD0BICBpbnNpZGUgdGhlIGNhbGwsIHNvIGEgc2VwYXJhdGUgYGZ1bmRfcG90YCBjYW5ub3QgYmUgYmF0Y2hlZCB3aXRoIHRoZSBjcmVhdGlvbjAgIHJhY2UtZnJlZS4AWQFgYXNzZXRfdW5pdGAgaXMgZml4ZWQgYXQgY3JlYXRpb24gYW5kIGluc3RhbmNlcyBhcmUgbmV2ZXIgcmVtb3ZlZCwgYnV0IGFuIGFzc2V0IGlzIG5vdDEBZmlyc3QtY29tZTogYW55b25lLCBhZG1pbiBpbmNsdWRlZCwgY2FuIHdyYXAgdGhlIHNhbWUgYXNzZXQgYWdhaW4gaW4gaXRzIG93blEBaW5zdGFuY2UgYXQgYW5vdGhlciB1bml0LCBzbyBvbmUgY3JlYXRvciBjYW5ub3QgZml4IHRoZSBjb2luIGdyYW51bGFyaXR5IG9mIGFuIGFzc2V0FQFmb3IgZXZlcnlib2R5IGVsc2UuIFdoYXQgc3RvcHMgYSBmbG9vZCBvZiBuZWFyLWR1cGxpY2F0ZSBpbnN0YW5jZXMgaXNVAVtgQ29uZmlnOjpJbnN0YW5jZUNyZWF0aW9uRGVwb3NpdGBdLCBoZWxkIG9uIGVhY2ggY3JlYXRvciBmb3IgYXMgbG9uZyBhcyBpdHMgaW5zdGFuY2U0aXMgc3BvbnNvcmVkLgAsUGFyYW1ldGVyczoFASogYGFzc2V0X2lkYDogdGhlIHVuZGVybHlpbmcgYXNzZXQgYmFja2luZyB0aGlzIGluc3RhbmNlJ3MgY29pbnMuWQEqIGBhc3NldF91bml0YDogdGhlIGFzc2V0IGFtb3VudCBvZiBhIGNvaW4gb2YgZGVub21pbmF0aW9uIHplcm8uIE11c3QgYmUgbm9uLXplcm8sIGFuZE0BICBtdXN0IHJlcHJlc2VudCBldmVyeSBkZW5vbWluYXRpb24gaW4gYFtNaW5pbXVtRXhwb25lbnQsIE1heGltdW1FeHBvbmVudF1gIHdpdGhvdXQ0ICB0cnVuY2F0aW9uLh0BKiBgaW5pdGlhbF9mdW5kaW5nYDogYW4gb3B0aW9uYWwgYChjdXJyZW5jeSwgYW1vdW50KWAgcG90IGNvbnRyaWJ1dGlvbi4gZnVuZF9wb3QMASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAASBjdXJyZW5jeXEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABQ8RQFGdW5kIHRoZSBwb3Qgb2YgdGhlIHNwb25zb3JlZCBpbnN0YW5jZSBgaW5zdGFuY2VfaWRgIHdpdGggYGFtb3VudGAgb2YgYGN1cnJlbmN5YC4AMQFUaGUgY29udHJpYnV0aW9uIGlzIHJlY29yZGVkIHBlciBmdW5kZXIgYW5kIHBlciBjdXJyZW5jeTogdGhlIHBhcnQgb2YgaXQgbm90AQFjdXJyZW50bHkgaGVsZCBhcyBsb2FkLWRlcG9zaXQgY29sbGF0ZXJhbCBjYW4gYmUgdGFrZW4gYmFjayB3aXRoTQFbYFBhbGxldDo6d2l0aGRyYXdfcG90X2Z1bmRzYF0uIEEgcGxhaW4gdHJhbnNmZXIgdG8gdGhlIHBvdCBhY2NvdW50IGJhY2tzIGxvYWRzIGFsbLR0aGUgc2FtZSBidXQgaXMgYSBkb25hdGlvbiwgbm90IHdpdGhkcmF3YWJsZS4AQQFBbnkgZXhpc3RpbmcgYGN1cnJlbmN5YCBpcyBhY2NlcHRlZCwgbm90IGp1c3QgdGhlIGN1cnJlbnQgZGVwb3NpdCBjdXJyZW5jeSwgc28gYdhzcG9uc29yIGNhbiBwcmVmdW5kIGFoZWFkIG9mIGFuIGFkbWluIGN1cnJlbmN5IHN3aXRjaC4ASQFBIHBvdCB3aXRoIG5vIGFjY291bnQgZm9yIGBjdXJyZW5jeWAgaGFzIG9uZSBjcmVhdGVkIGZvciBpdCBmaXJzdCwgYXQgdGhlIGNhbGxlcidzSQFleHBlbnNlLiBXaGF0ZXZlciB0aGF0IGNvc3RzIGlzIG5vdCBwYXJ0IG9mIHRoZSByZWNvcmRlZCBjb250cmlidXRpb24gYW5kIGlzIG5ldmVyMQFyZWZ1bmRlZC4gVGhlIGBhbW91bnRgIG11c3QgYmUgYXQgbGVhc3QgdGhlIGN1cnJlbmN5J3MgbWluaW11bSBiYWxhbmNlLCBzbyBhTQFmdW5kaW5nIGNhbm5vdCBiZSBkdXN0ZWQgb24gYXJyaXZhbDsgdGhlIHBvdCdzIGFjY291bnQgdGhlbiBzdXJ2aXZlcyBhbnkgd2l0aGRyYXdhbCBvciBob2xkLkh3aXRoZHJhd19wb3RfZnVuZHMMASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAASBjdXJyZW5jeXEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABUQRQFUYWtlIGJhY2sgdXAgdG8gdGhlIGNhbGxlcidzIHJlY29yZGVkIGNvbnRyaWJ1dGlvbiB0byB0aGUgcG90IG9mIGBpbnN0YW5jZV9pZGAgaW4sYGN1cnJlbmN5YC4AOQFPbmx5IHRoZSBwb3QncyBmcmVlIGJhbGFuY2UgY2FuIGJlIHdpdGhkcmF3bjogaGVsZCBjb2xsYXRlcmFsIGlzIG91dCBvZiByZWFjaC5YY29sbGFwc2VfbG9hZF9kZXBvc2l0cwQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAAXNAEBUmUtcHJpY2UgZXZlcnkgbGl2ZSBsb2FkIGRlcG9zaXQgb2YgYGluc3RhbmNlX2lkYCB0byB0aGUgY3VycmVudC0BW2BDb25maWc6OkxvYWREZXBvc2l0YF0sIGNvbnZlcnRpbmcgdGhlIGNvbGxhdGVyYWwgdG8gdGhlIGN1cnJlbnQgY3VycmVuY3kuAEEBQW55Ym9keSBtYXkgY2FsbCB0aGlzLiBJdCBpcyB0aGUgb25seSBvcGVyYXRpb24gdGhhdCBjaGFuZ2VzIGhvdyBtdWNoIGNvbGxhdGVyYWxVAWJhY2tzIGFscmVhZHktbG9hZGVkIGtleXMsIGluIGVpdGhlciBkaXJlY3Rpb246IHRoZSBwb3QgaXMgY2hhcmdlZCB0aGUgc2hvcnRmYWxsIHdoZW41AWFkbWluIGhhcyByYWlzZWQgdGhlIHByaWNlIHNpbmNlIHRob3NlIGxvYWRzLCBhbmQgcmVmdW5kZWQgdGhlIGV4Y2VzcyB3aGVuIGl0TQFoYXMgbG93ZXJlZCBpdC4gTm90aGluZyBpcyBjb252ZXJ0ZWQgYmV0d2VlbiBjdXJyZW5jaWVzOiBvbGQgY29sbGF0ZXJhbCBpcyByZWxlYXNlZFEBdG8gdGhlIHBvdCdzIGZyZWUgYmFsYW5jZSBhbmQgdGhlIG5ldyByZXF1aXJlbWVudCBpcyB0YWtlbiBmcmVzaCwgc28gbm8gcmF0ZSBmZWVkIGlzJGludm9sdmVkLgAxAVRoaXMgaXMgdGhlIGNvbXBhbmlvbiB0byBhbiBhZG1pbiBjaGFuZ2Ugb2YgW2BDb25maWc6OkxvYWREZXBvc2l0YF0sIGFuZCB0aGVVAXBlcm1pc3Npb25sZXNzIHJlbWVkeSBmb3IgYW4gaW5zdGFuY2Ugd2hvc2UgbG9hZHMgYXJlIHJlZnVzZWQgYmVjYXVzZSBpdHMgb2xkIHRpZXIgaXM8c3RpbGwgb2NjdXBpZWQuYG1ha2VfaW5zdGFuY2Vfc3VmZmljaWVudAQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAAYKOhTd2l0Y2ggYSBzcG9uc29yZWQgaW5zdGFuY2UgdG8gYEluc3RhbmNlTW9kZTo6U3VmZmljaWVudGAuAB0BVGhlIG9yaWdpbiBtdXN0IHNhdGlzZnkgW2BDb25maWc6OkFkbWluT3JpZ2luYF06IHRoaXMgaXMgYWRtaW4gYmxlc3NpbmdRAWFuIGluc3RhbmNlIGludG8gdGhlIHN0cmFuZGVkLXZhbHVlIGVjb25vbWljcy4gRXZlcnkgbG9hZCBkZXBvc2l0IGlzIHJlbGVhc2VkIHRvIHRoZRUBcG90J3MgZnJlZSBiYWxhbmNlLCB3aGVyZSBmdW5kZXJzIHJlY2xhaW0gdGhlaXIgY29udHJpYnV0aW9ucyB0aHJvdWdoOQFbYFBhbGxldDo6d2l0aGRyYXdfcG90X2Z1bmRzYF0gKHdpdGhkcmF3YWwgZG9lcyBub3QgcmVxdWlyZSB0aGUgaW5zdGFuY2UgdG8gYmVFAXNwb25zb3JlZCk7IG9ubHkgZG9uYXRpb25zIHN0YXkgc3RyYW5kZWQuIFRoZSBsZWRnZXIgaXMgcmVtb3ZlZCwgYW5kIGZyb20gaGVyZSBvbrxsb2FkcyB0YWtlIG5vIGRlcG9zaXQgYW5kIHVubG9hZHMgcmVsZWFzZSBub25lLgDIVGhlIGluc3RhbmNlIGNyZWF0aW9uIGRlcG9zaXQgaXMgcmVsZWFzZWQgaWYgc29tZS5cbWFrZV9pbnN0YW5jZV9zcG9uc29yZWQEASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAGUDoU3dpdGNoIGEgc3VmZmljaWVudCBpbnN0YW5jZSB0byBgSW5zdGFuY2VNb2RlOjpTcG9uc29yZWRgLgAxAVRoZSBvcmlnaW4gbXVzdCBzYXRpc2Z5IFtgQ29uZmlnOjpBZG1pbk9yaWdpbmBdLiBUaGUgZGVwb3NpdCBsZWRnZXIgcmVzdGFydHNNAWZyb20gemVybzoga2V5cyBsb2FkZWQgd2hpbGUgdGhlIGluc3RhbmNlIHdhcyBzdWZmaWNpZW50IGNhcnJ5IG5vIGRlcG9zaXQsIHNvIHRoZWlyQQF1bmxvYWRzIHNldHRsZSBhZ2FpbnN0IHdoYXRldmVyIHRoZSBsZWRnZXIgaG9sZHMgYXQgdGhlIHRpbWUsIHBvc3NpYmx5IHJlbGVhc2luZzkBZGVwb3NpdHMgdGFrZW4gZm9yIGtleXMgbG9hZGVkIGFmdGVyIHRoZSBzd2l0Y2gsIG9yIG5vdGhpbmcgb25jZSB0aGUgbGVkZ2VyIGlzTQFkcmFpbmVkLiBUaGUgaW5zdGFuY2UgdGhlcmVmb3JlIHJ1bnMgdW5kZXItY29sbGF0ZXJhbGl6ZWQgdW50aWwgaXRzIHByZS1zd2l0Y2gga2V5c+RzdG9wIHJlc29sdmluZywgd2hpY2ggYWRtaW4gYWNjZXB0cyBieSBtYWtpbmcgdGhlIHN3aXRjaC4AVQFMb2FkcyBzdGF5IGludmFsaWQgdW50aWwgW2BDb25maWc6OkxvYWREZXBvc2l0YF0gaXMgc2V0IGFuZCB0aGUgcG90IGlzIGZ1bmRlZCB0aHJvdWdoVFtgUGFsbGV0OjpmdW5kX3BvdGBdLgDQTm8gW2BDb25maWc6Okluc3RhbmNlQ3JlYXRpb25EZXBvc2l0YF0gaXMgdGFrZW4sIGFuZDEBW2BJbnN0YW5jZVJlY29yZDo6Y3JlYXRvcmBdIHN0YXlzIGFzIGl0IGlzLCBzbyBhbiBpbnN0YW5jZSB0aGF0IHdlbnQgdGhyb3VnaE0BW2BQYWxsZXQ6Om1ha2VfaW5zdGFuY2Vfc3VmZmljaWVudGBdIGNvbWVzIGJhY2sgd2l0aCBubyBjcmVhdG9yIGFuZCBubyBkZXBvc2l0LCB0aGVoc2FtZSBhcyBvbmUgYWRtaW4gY3JlYXRlZC44Y2xlYW5fcmVjeWNsZXIIASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AZSx0Q2xlYW4gdXAgYW4gZXhwaXJlZCByZWN5Y2xlci4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLgANAVRoaXMgcmVtb3ZlcyBhbiBvbGQgcmVjeWNsZXIgdGhhdCBoYXMgZXhjZWVkZWQgaXRzIGV4cGlyYXRpb24gdGltZS5hAUFueSByZW1haW5pbmcgKG5vdC15ZXQtdW5sb2FkZWQpIGNvaW5zIGFyZSBub3QgZGVzdHJveWVkOiB0aGUgcmluZyBpcyBhcmNoaXZlZCBhbmQgdGhlaXL8YmFja2luZyBhc3NldCBzdGF5cyBoZWxkIGluIHRoZSBwYWxsZXQgYWNjb3VudCwgcmVjb3ZlcmFibGUgdmlh5FtgUGFsbGV0Ojp1bmxvYWRfYXJjaGl2ZWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldGBdLgBNAU9uIGEgc3BvbnNvcmVkIGluc3RhbmNlIHRoaXMgc2V0dGxlcyB0aGUgW2BDb25maWc6OkxvYWREZXBvc2l0YF0gb2YgZXZlcnkgcmVtYWluaW5nEGtleS5kY2xlYW5fY29uc3VtZWRfZnJlZV90b2tlbgQBGHBlcmlvZDgBGFBlcmlvZABmDPxDbGVhbnVwIHN0b3JhZ2UgZm9yIGNvbnN1bWVkIGZyZWUgdW5sb2FkIHRva2VucyBvZiBvbGQgcGVyaW9kcy4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLnBjbGVhbl9wYWlkX3VubG9hZF90b2tlbl9yaW5nCAEYcGVyaW9kOAEYUGVyaW9kAAEocmluZ19pbmRleDgBJFJpbmdJbmRleABoGAkBQ2xlYW4gdXAgYSBzaW5nbGUgcmluZyBpbiBhbiBleHBpcmVkIHBhaWQgdW5sb2FkIHRva2VuIGNvbGxlY3Rpb24uAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS4pAVJpbmdzIG11c3QgYmUgY2xlYW5lZCBzZXF1ZW50aWFsbHkgKHJpbmcgMCBmaXJzdCwgdGhlbiAxLCBldGMuKSBiZWZvcmUgdGhldGNvbGxlY3Rpb24gY2FuIGJlIGRlbGV0ZWQgdmlhjQFbYGRlbGV0ZV9leHBpcmVkX3BhaWRfdW5sb2FkX3Rva2VuX2NvbGxlY3Rpb25gXShTZWxmOjpkZWxldGVfZXhwaXJlZF9wYWlkX3VubG9hZF90b2tlbl9jb2xsZWN0aW9uKS5MY2xlYW5fcmVjeWNsZXJfZHVzdABpFHBDbGVhbiB1cCBkdXN0IGZvciByZWN5Y2xlcnMuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS5RAVJlbW92ZXMgdXAgdG8gRFVTVF9DTEVBTlVQX0JBVENIX1NJWkUgZW50cmllcyBmcm9tIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSBwZXIgY2FsbCB0b1Bib3VuZCB0aGUgb3BlcmF0aW9uLnBjbGVhbl9wYWlkX3VubG9hZF90b2tlbl9kdXN0AGoMlENsZWFuIHVwIGR1c3QgZm9yIHBhaWQgdW5sb2FkIHRva2Vucy4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLqxkZWxldGVfZXhwaXJlZF9wYWlkX3VubG9hZF90b2tlbl9jb2xsZWN0aW9uBAEYcGVyaW9kOAEYUGVyaW9kAGsYRQFEZWxldGUgYW4gZXhwaXJlZCBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9uIGFmdGVyIGFsbCByaW5ncyBoYXZlIGJlZW4gY2xlYW5lZC4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLpBBbGwgcmluZ3MgbXVzdCBoYXZlIGJlZW4gY2xlYW5lZCB2aWFBAVtgY2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fcmluZ2BdKFNlbGY6OmNsZWFuX3BhaWRfdW5sb2FkX3Rva2VuX3JpbmcpIGJlZm9yZSB0aGlzOGNhbiBiZSBjYWxsZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBbQUEUwAABAB1BQEYVmVjPFQ+AABtBQAABAgVBHEFAHEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAF0BARhWZWM8VD4AAHUFAAACbQUAeQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldERDb2RlY1ByZXNlcnZhdGlvbgABDChFeHBlbmRhYmxlAAAAHFByb3RlY3QAAQAgUHJlc2VydmUAAgAAfQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGBBQRTAAAEAIUFARhWZWM8VD4AAIEFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQ8VW5wYWlkTG9hZElucHV0BARUAAAQATBwcmVzZXJ2YXRpb255BQFEQ29kZWNQcmVzZXJ2YXRpb24AARR2YWx1ZRUEATBEZW5vbWluYXRpb24AAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBxBAE4U2lnbmF0dXJlT2Y8VD4AAIUFAAACgQUAiQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAUQQBGFZlYzxUPgAAjQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGRBQRTAAAEAJUFARhWZWM8VD4AAJEFAAAECBUECACVBQAAApEFAJkFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXRMVW5sb2FkUmVjeWNsZXJJbnB1dAQwQWxpYXNlc0JvdW5kAAAQARR2YWx1ZRUEATBEZW5vbWluYXRpb24AARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABHGFsaWFzZXOJBQF8Qm91bmRlZFZlYzxBbGlhcywgQWxpYXNlc0JvdW5kPgAAnQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldCxGZWVDdXJyZW5jeQABCBhOYXRpdmUAAAA0RXh0ZXJuYWxBc3NldAABAAChBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZkFBFMAAAQApQUBGFZlYzxUPgAApQUAAAKZBQCpBQwodmVyaWZpYWJsZRByaW5nRE1lbWJlcnNDb21taXRtZW50AAMgAQAADACtBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbEFBFMAAAQAtQUBGFZlYzxUPgAAsQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAC1BQAAArEFALkFBBhPcHRpb24EBFQBvQUBCBBOb25lAAAAEFNvbWUEAL0FAAABAAC9BQAABAhxAUUBAMEFDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchhwYWxsZXQQQ2FsbAQEVAABICRzdWJzY3JpYmUMAVxzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZJwBGFBhcmFJZAABTG1lbWJlcnNfY29sbGVjdGlvbnPFBQEdAUJvdW5kZWRWZWM8KElkZW50aWZpZXIsIFJpbmdFeHBvbmVudCksIFQ6Ok1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlciw+AAEwcGFsbGV0X2luZGV4DAEIdTgAACygUmVnaXN0ZXJzIHRoZSBwYXJhY2hhaW4gYXMgYSBzdWJzY3JpYmVyLtBUaGUgaW5pdGlhbCBzdGF0ZSB3aWxsIGJlIHNlbnQgb3ZlciBzaG9ydGx5IHZpYSBYQ00uACQjIyBPcmlnaW6oUmVxdWlyZXMgYE1hbmFnZU9yaWdpbmAgKGdvdmVybmFuY2Uvcm9vdCkuADQjIyBQYXJhbWV0ZXJzFQEtIGBzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZGA6IFRoZSBQYXJhSWQgb2YgdGhlIHN1YnNjcmliaW5nIHBhcmFjaGFpbi5FAS0gYG1lbWJlcnNfY29sbGVjdGlvbnNgOiBMaXN0IG9mIGNvbGxlY3Rpb24gaWRlbnRpZmllcnMgdG8gc3Vic2NyaWJlIHRvIGFuZCB0aGVpcnAgIHJlc3BlY3RpdmUgcmluZyBleHBvbmVudHMuNQEtIGBwYWxsZXRfaW5kZXhgOiBQYWxsZXQgaW5kZXggb2YgbWVtYmVycy1zdWJzY3JpYmVyIG9uIHRoZSBzdWJzY3JpYmVyIGNoYWluLix1bnN1YnNjcmliZQQBXHN1YnNjcmliZXJfcGFyYWNoYWluX2lk0QUBOE9wdGlvbjxQYXJhSWQ+AAEkZFVuc3Vic2NyaWJlcyBhIHBhcmFjaGFpbi4AJCMjIE9yaWdpbj0BLSAqKlNlbGYtdW5zdWJzY3JpYmUqKjogU3Vic2NyaWJlciBwYXJhY2hhaW4gdmlhIFhDTSAoYEVuc3VyZVN1YnNjcmliZXJPcmlnaW5gKdQtICoqR292ZXJuYW5jZSB1bnN1YnNjcmliZSoqOiBSZXF1aXJlcyBgTWFuYWdlT3JpZ2luYAA0IyMgUGFyYW1ldGVyc2EBLSBgc3Vic2NyaWJlcl9wYXJhY2hhaW5faWRgOiBUaGUgUGFyYUlkIHRvIHVuc3Vic2NyaWJlLiBSZXF1aXJlZCBmb3IgZ292ZXJuYW5jZSwgaWdub3JlZMQgIGZvciBzZWxmLXVuc3Vic2NyaWJlIChkZXJpdmVkIGZyb20gWENNIG9yaWdpbikuOHJlcXVlc3RfcmVwbGF5DAFcc3Vic2NyaWJlcl9wYXJhY2hhaW5faWScARhQYXJhSWQAAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABRHJpbmdfcm9vdF9pbmRpY2Vz1QUBsEJvdW5kZWRWZWM8UmluZ0luZGV4LCBUOjpNYXhVcGRhdGVzUGVyQmF0Y2g+AAIknFJlcXVlc3RzIHJlcGxheSBvZiBzcGVjaWZpYyByaW5nIHJvb3RzLgA1AVBlcm1pc3Npb25sZXNzIOKAlCBhbnkgc2lnbmVkIG9yaWdpbiBjYW4gcmVxdWVzdCBhIHJlcGxheSBmb3IgYW55IHN1YnNjcmliZXIuSQFUaGUgc3Vic2NyaWJlciBwYXJhY2hhaW4gaXMgaWRlbnRpZmllZCBieSB0aGUgYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYCBwYXJhbWV0ZXIuACxQYXJhbWV0ZXJzOugtIGBzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZGA6IFRoZSBQYXJhSWQgb2YgdGhlIHN1YnNjcmliZXIumC0gYGlkZW50aWZpZXJgOiBDb2xsZWN0aW9uIGlkZW50aWZpZXIuWQEtIGByaW5nX3Jvb3RfaW5kaWNlc2A6IExpc3Qgb2YgcmluZyByb290IGluZGljZXMsIG11c3QgYmUgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLjxlbnF1ZXVlX3VwZGF0ZXMIASRzZW5kX3BhZ2XNAwEMdTE2AAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAMM+EVucXVldWVzIHBlbmRpbmcgdXBkYXRlcyBpbnRvIGEgc2VhbGVkIGJhdGNoIGZvciBkaXN0cmlidXRpb24uAMRBdXRob3JpemVkIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuKHNlbmRfYmF0Y2gMARxwYXJhX2lknAEYUGFyYUlkAAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgAEDMRTZW5kcyB0aGUgY3VycmVudCBiYXRjaCB0byBhIHNwZWNpZmljIHN1YnNjcmliZXIuAPRBdXRob3JpemVkIG1haW50ZW5hbmNlIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuOHNlbmRfaW5pdF9wYWdlEAEccGFyYV9pZJwBGFBhcmFJZAABYGN1cnJlbnRfY29sbGVjdGlvbl9pbmRleDgBDHUzMgABQGFmdGVyX3JpbmdfaW5kZXjkAURPcHRpb248UmluZ0luZGV4PgABNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgAFDNhTZW5kcyBvbmUgcGFnZSBvZiBpbml0aWFsaXphdGlvbiBkYXRhIHRvIGEgc3Vic2NyaWJlci4A9EF1dGhvcml6ZWQgbWFpbnRlbmFuY2UgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci5MYWJhbmRvbl9zdHVja19iYXRjaAQBNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgAGFORBYmFuZG9ucyBhIHN0dWNrIGJhdGNoIHRoYXQgZXhjZWVkZWQgYFN0dWNrQmF0Y2hUaW1lb3V0YC4xAVN1YnNjcmliZXJzIHRoYXQgZGlkIG5vdCByZWNlaXZlIHRoZSBiYXRjaCBjYW4gcmVjb3ZlciB2aWEgYHJlcXVlc3RfcmVwbGF5YC4ANQFBdXRob3JpemVkIG1haW50ZW5hbmNlIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIgd2hlbiBhIGJhdGNoIGhhc7BiZWVuIGFjdGl2ZSBsb25nZXIgdGhhbiBgU3R1Y2tCYXRjaFRpbWVvdXRgLlRzdWJzY3JpYmVfd2hpdGVsaXN0ZWQEAVxzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZJwBGFBhcmFJZAAHFE0BUmVnaXN0ZXJzIGEgd2hpdGVsaXN0ZWQgcGFyYWNoYWluIGFzIGEgc3Vic2NyaWJlciwgdXNpbmcgdGhlIGNvbGxlY3Rpb25zIGFuZCBwYWxsZXSAaW5kZXggcmVjb3JkZWQgaW4gdGhlIHdoaXRlbGlzdC4APQFUaGUgd2hpdGVsaXN0IGVudHJ5IGlzIGNvbnN1bWVkLCBzbyBhIHBhcmFjaGFpbiBjYW4gYmUgc3Vic2NyaWJlZCB0aGlzIHdheSBvbmx5JQFvbmNlLiBBZnRlciBhbiBgdW5zdWJzY3JpYmVgLCBvbmx5IGBNYW5hZ2VPcmlnaW5gIGNhbiBzdWJzY3JpYmUgaXQgYWdhaW4uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQByQUEUwAABADNBQEYVmVjPFQ+AADJBQAABAgIUQUAzQUAAALJBQDRBQQYT3B0aW9uBARUAZwBCBBOb25lAAAAEFNvbWUEAJwAAAEAANUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGkEARhWZWM8VD4AANkFDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBhwYWxsZXQQQ2FsbAQEVAABNDhzY2hlZHVsZV9ldmVudAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABEGluZm/dBQE4RXZlbnRJbmZvT2Y8VD4AABRVAVNjaGVkdWxlIGEgbmV3IGFpcmRyb3AgZXZlbnQuIE9yaWdpbiBtdXN0IGJlIGBNYW5hZ2VyT3JpZ2luYC4gVGhlIHByaXplIGFsbG9jYXRpb24gaXMZAWhlbGQgaW4gdGhlIHBhbGxldCdzIHBvdCBhY2NvdW50LiBUaGUgcG90IGlzIGFzc3VtZWQgdG8gYmUgcHJlLWZ1bmRlZC4AUQFDcm9zcy1wYWxsZXQgY2FsbGVycyBzaG91bGQgdXNlIHRoZSBbYGNyYXRlOjp0eXBlczo6QWlyZHJvcDo6c2NoZWR1bGVgXSB0cmFpdCBtZXRob2TkaW5zdGVhZCwgd2hpY2ggZGViaXRzIGEgY2FsbGVyLXN1cHBsaWVkIGBzb3VyY2VgIGFjY291bnQuWHJlbW92ZV9zY2hlZHVsZWRfZXZlbnQEASBldmVudF9pZAgBHEV2ZW50SWQAAQgRAVJlbW92ZSBhIHByZXZpb3VzbHkgc2NoZWR1bGVkIGV2ZW50LiBUaGUgZXZlbnQgbXVzdCBub3QgaGF2ZSBhbHJlYWR5nHN0YXJ0ZWQsIG90aGVyd2lzZSB0aGlzIGNhbGwgd2lsbCBmYWlsLjBlbmFibGVfYXNzZXQIASBhc3NldF9pZHEBATBBc3NldElkT2Y8VD4AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAChBNAUVuYWJsZSBhbiBhc3NldCBmb3IgdXNlIGluIGFpcmRyb3AgZXZlbnRzLiBUaGUgb3JpZ2luIG11c3QgYmUgYE1hbmFnZXJPcmlnaW5gIG9ubHkuAFkBVHJhbnNmZXJzIHRoZSBhc3NldCdzIGN1cnJlbnQgbWluaW11bSBiYWxhbmNlIGZyb20gYHNvdXJjZWAgdG8gdGhlIHBhbGxldCdzIHBvdCBzbyB0aGUlAXBvdCdzIGFzc2V0IGFjY291bnQgc3RheXMgYWxpdmUgd2hpbGUgZXZlbnRzIGhvbGQgcHJpemUgZnVuZHMgYWdhaW5zdCBpdC40ZGlzYWJsZV9hc3NldAgBIGFzc2V0X2lkcQEBMEFzc2V0SWRPZjxUPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAsUWQFEaXNhYmxlIGFuIGFzc2V0IHByZXZpb3VzbHkgZW5hYmxlZCB3aXRoIGBlbmFibGVfYXNzZXRgLiBSZWZ1bmRzIHRoZSBvcmlnaW5hbGx5LWZ1bmRlZDkBYW1vdW50IGZyb20gdGhlIHBvdCB0byBgYmVuZWZpY2lhcnlgLiBUaGUgb3JpZ2luIG11c3QgYmUgYE1hbmFnZXJPcmlnaW5gIG9ubHkuAE0BVGhlIG1hbmFnZXIgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIG5vIGV2ZW50cyBzdGlsbCByZWZlcmVuY2UgdGhpcyBhc3NldCBiZWZvcmUZAWRpc2FibGluZywgYnV0IHRoaXMgaXMgc2FmZSBzaW5jZSBzY2hlZHVsaW5nIGFuIGV2ZW50IGlzIHBlcm1pc3Npb25lZC50c3RhcnRfcmVnaXN0cmF0aW9uX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAIc3E9DVy1kcml2ZW46IHRyYW5zaXRpb24gYFNjaGVkdWxlZCDihpIgUmVnaXN0ZXJpbmdgIHdoZW6EYHJlZ2lzdHJhdGlvbl9zdGFydHNgIGlzIHJlYWNoZWQuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLnRjbG9zZV9yZWdpc3RyYXRpb25fYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIAAzRsT0NXLWRyaXZlbjogYXQgYGRyYXdfdGltZWA6UC0gY2xvc2UgcmVnaXN0cmF0aW9uhC0gY29tcHV0ZSB0aGUgdGFyZ2V0IHdpbm5lciBjb3VudMwtIHJlbGVhc2UgdGhlIHVudXNlZC1zbG90IHByaXplIGFsbG9jYXRpb24gdXAtZnJvbnT4LSByZWNvcmQgdGhlIHJhbmRvbW5lc3Mgc291cmNlJ3MgY3VycmVudCBtb21lbnQgYXMgYSB3YXRlcm1hcmu4LSB0cmFuc2l0aW9uIGBSZWdpc3RlcmluZyDihpIgQXdhaXRpbmdFbnRyb3B5YAAdAVRoZSBlbnRyb3B5IGNhcHR1cmUgYW5kIHRoZSB3aW5uZXIgZHJhd3MgYXJlIHBlcmZvcm1lZCBpbiBsYXRlciBzdGFnZXMuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLmhjYXB0dXJlX2VudHJvcHlfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIADCxZAU9DVy1kcml2ZW46IHNlZWQgdGhlIGRyYXcgd2l0aCBmcmVzaCByYW5kb21uZXNzIHByb2R1Y2VkIGFmdGVyIHJlZ2lzdHJhdGlvbiBjbG9zZWQgYW5ktHRyYW5zaXRpb24gYEF3YWl0aW5nRW50cm9weSDihpIgRHJhd1dpbm5lcnNgLgAtAVRoZSBgYXV0aG9yaXplYCBnYXRlIG9ubHkgbGV0cyB0aGlzIGNhbGwgdGhyb3VnaCBvbmNlIHRoZSByYW5kb21uZXNzIHNvdXJjZSkBcmVwb3J0cyBhIHZhbHVlIHdpdGggYSBtb21lbnQgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIHRoZSB3YXRlcm1hcmsgcmVjb3JkZWQBAXdoZW4gcmVnaXN0cmF0aW9uIGNsb3NlZDsgdW50aWwgdGhlbiB0aGUgdHJhbnNhY3Rpb24gaXMgaW52YWxpZC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVdAWFmdGVyIGEgcmUtb3JnLCBvciBpbnZhbGlkYXRlZCBiZWNhdXNlIHRoZSByYW5kb21uZXNzIGlzIG5vdCBmcmVzaCB5ZXQuIEFzIHRoZSBhY2NlcHRlZBUBdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvIHNwYW0gdGhlIHBvb2wuXGRyYXdfd2lubmVyc19hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgAEJNBPQ1ctZHJpdmVuOiBkcmF3IHVwIHRvIGBEcmF3TGltaXRgIHdpbm5lcnMgcGVyIGNhbGwuAEUBQWZ0ZXIgYWxsIHRoZSB3aW5uZXJzIGFyZSBkcmF3biwgdGhlIHRyYW5zaXRpb24gdG8gYENsYWltaW5nYCBpcyBwZXJmb3JtZWQgYnkgdGhlkHNlcGFyYXRlIGBjbG9zZV9kcmF3aW5nX2F1dGhvcml6ZWRgLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5gY2xvc2VfZHJhd2luZ19hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgAFHFEBT0NXLWRyaXZlbjogb25jZSBgZHJhd193aW5uZXJzX2F1dGhvcml6ZWRgIGhhcyBmaWxsZWQgdGhlIHdpbm5lciBzZXQsIHRyYW5zaXRpb24gdGhlnGV2ZW50IGZyb20gYERyYXdXaW5uZXJzYCB0byBgQ2xhaW1pbmdgLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5kY2xvc2VfY2xhaW1pbmdfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIABhgxAU9DVy1kcml2ZW46IGF0IGBlbmRfdGltZWAgY2xvc2UgY2xhaW1pbmcgYW5kIGVudGVyIHRoZSBmaXJzdCBjbGVhbi11cCBwaGFzZS4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuhGNsZWFuX3VwX3JlZ2lzdHJhdGlvbnNfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIABxw5AU9DVy1kcml2ZW46IEZpcnN0IHN0ZXAgb2YgY2xlYW4tdXAgaXMgdG8gY2xlYXIgdXAgdG8gYENsZWFyTGltaXRgIGVudHJpZXMgZnJvbVUBYFJlZ2lzdHJhdGlvbnNgLiBXaGVuIHRoZSBzdG9yYWdlIGlzIGZ1bGx5IGRyYWluZWQsIHRyYW5zaXRpb25zIHRvIGBDbGVhcmluZ1dpbm5lcnNgLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5sY2xlYW5fdXBfd2lubmVyc19hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgAIHD0BT0NXLWRyaXZlbjogU2Vjb25kIHN0ZXAgb2YgY2xlYW4tdXAgaXMgdG8gY2xlYXIgdXAgdG8gYENsZWFyTGltaXRgIGVudHJpZXMgZnJvbSkBYFdpbm5lcnNgLiBXaGVuIHRoZSBzdG9yYWdlIGlzIGZ1bGx5IGRyYWluZWQsIHRyYW5zaXRpb25zIHRvIGBGaW5hbGl6aW5nYC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuTGZpbmFsaXplX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAkcTQFPQ1ctZHJpdmVuOiBUaGlyZCBzdGVwIG9mIGNsZWFuLXVwIGlzIHRvIHJlbGVhc2UgdGhlIHVuY2xhaW1lZCBwcml6ZSBhbGxvY2F0aW9uIGFuZERyZW1vdmUgdGhlIGV2ZW50LgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu3QUMUGluZGl2X3BhbGxldF9haXJkcm9wFHR5cGVzJEV2ZW50SW5mbwgcQXNzZXRJZAFxATBBc3NldEJhbGFuY2UBRQEAEAEUcHJpemXVBAGMQWlyZHJvcFByaXplPEFzc2V0SWQsIEFzc2V0QmFsYW5jZT4AAUxyZWdpc3RyYXRpb25fc3RhcnRzKAEMdTY0AAEkZHJhd190aW1lKAEMdTY0AAEgZW5kX3RpbWUoAQx1NjQAAOEFDExpbmRpdl9wYWxsZXRfaG9ub3VyGHBhbGxldBBDYWxsBARUAAEEGGJlc3RvdwgBEHZvdGXlBQEgVm90ZURhdGEAATxjYWxsX3ZhbGlkX2Zyb20oARxTZWNvbmRzAAAQOEJlc3RvdyBhIHZvdGUuAFUBQWNjZXB0cyBvbmx5IHRoZSBbYE9yaWdpbjo6Vm90ZXJgXSBvcmlnaW4sIHdoaWNoIGlzIGNyZWF0ZWQgYnkgdmVyaWZ5aW5nIGEgcmluZyBwcm9vZgUBaW4gdGhlIFtgVm90ZXJBdXRoYF0oZXh0ZW5zaW9uOjpWb3RlckF1dGgpIHRyYW5zYWN0aW9uIGV4dGVuc2lvbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu5QUMTGluZGl2X3BhbGxldF9ob25vdXIUdHlwZXMgVm90ZURhdGEAAAwBHHN1YmplY3QIASRTdWJqZWN0SWQAARRwb2ludAwBHFBvaW50SWQAASRkaXJlY3Rpb27pBQEkRGlyZWN0aW9uAADpBQxMaW5kaXZfcGFsbGV0X2hvbm91chR0eXBlcyREaXJlY3Rpb24AAQgoSG9ub3VyYWJsZQAAADREaXNob25vdXJhYmxlAAEAAO0FDHBpbmRpdl9wYWxsZXRfcGVvcGxlX2FpcmRyb3BzGHBhbGxldBBDYWxsBARUAAEYOHNjaGVkdWxlX2RyYXdzBAEUZHJhd3PxBQHYQm91bmRlZFZlYzxBaXJkcm9wRXZlbnRJbmZvT2Y8VD4sIFQ6Ok1heFNjaGVkdWxlQmF0Y2g+AAAUSQFTY2hlZHVsZSBhIGJhdGNoIG9mIGRyYXdzLCBpbiBvcmRlciwgYXNzaWduaW5nIGVhY2ggdGhlIG5leHQgZHJhdyBpbmRleC4gVGhlIHByaXplVQFhbGxvY2F0aW9uIG9mIGV2ZXJ5IGRyYXcgaXMgdHJhbnNmZXJyZWQgZnJvbSBbYENvbmZpZzo6UHJpemVTb3VyY2VgXSBpbnRvIHRoZSBhaXJkcm9wEHBvdC4AVQFJZiBhbnkgZXZlbnQgZmFpbHMgdG8gYmUgc2NoZWR1bGVkLCB0aGUgd2hvbGUgY2FsbCBmYWlscyBhbmQgbm8gZXZlbnRzIGFyZSBzY2hlZHVsZWQuVHJlbW92ZV9zY2hlZHVsZWRfZHJhdwQBIGV2ZW50X2lkCAEcRXZlbnRJZAABDEkBUmVtb3ZlIGEgc2NoZWR1bGVkIGRyYXcgdGhhdCBoYXMgbm90IG9wZW5lZCB5ZXQsIHJlZnVuZGluZyBpdHMgcHJpemUgYWxsb2NhdGlvbiB0b1EBW2BDb25maWc6OlByaXplU291cmNlYF0uIEJlc3QtZWZmb3J0OiBhIG5vLW9wIGZvciBhbiB1bmtub3duIG9yIGFscmVhZHktb3BlbmVkIGRyYXcuOQFUaGUgZHJhdydzIHNhbHQgaXMga2VwdCwgc2luY2UgdGhlIGRyYXcgbWF5IHN0aWxsIGJlIGxpdmUgKHNlZSBbYERyYXdTYWx0c2BdKS4sY2FuY2VsX2RyYXcEASBldmVudF9pZAgBHEV2ZW50SWQAAgw5AUNhbmNlbCBhIGRyYXcgaW4gYW55IHN0YXRlOiBwYXJ0aWNpcGF0aW9uIGFuZCBjbGFpbXMgY2xvc2UgaW1tZWRpYXRlbHkgYW5kIHRoZUUBc3RpbGwtaGVsZCBwcml6ZSBhbGxvY2F0aW9uIGlzIHJlZnVuZGVkIHRvIFtgQ29uZmlnOjpQcml6ZVNvdXJjZWBdIGJ5IHRoZSBhaXJkcm9wKQFjbGVhbi11cC4gQmVzdC1lZmZvcnQ6IGEgbm8tb3AgZm9yIGFuIHVua25vd24gb3IgYWxyZWFkeS10ZXJtaW5hdGluZyBkcmF3LiByZWdpc3RlcgQBJGV2ZW50X2lkc/kFAaBCb3VuZGVkVmVjPEV2ZW50SWQsIFQ6Ok1heFJlZ2lzdGVyQmF0Y2g+AAMUWQFSZWdpc3RlciB0aGUgY2FsbGluZyBwZXJzb24gZm9yIGV2ZXJ5IGRyYXcgaW4gYGV2ZW50X2lkc2AuIEFsbCBvciBub3RoaW5nOiBhbnkgZmFpbHVyZSkBKHVua25vd24gZHJhdywgZHJhdyBub3Qgb3BlbiwgYWxyZWFkeSByZWdpc3RlcmVkKSByZXZlcnRzIHRoZSB3aG9sZSBiYXRjaC4APQFGcmVlIG9uIHN1Y2Nlc3MuIFN1Y2Nlc3MgaXMgYm91bmRlZCB0byBvbmUgcmVnaXN0cmF0aW9uIHBlciBwZXJzb24gYW5kIGRyYXcsIHNvcHJlcGVhdGVkIGNhbGxzIGZhaWwgYW5kIHBheS4UY2xhaW0IASBldmVudF9pZAgBHEV2ZW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAAEGCUBQ2xhaW0gdGhlIGNhbGxpbmcgcGVyc29uJ3MgcHJpemUgaW4gdGhlIGRyYXcgYGV2ZW50X2lkYCwgcGF5aW5nIGl0IG91dCB0b00BYGRlc3RpbmF0aW9uYC4gT25seSBkcmF3biB3aW5uZXJzIGhvbGQgYSBjbGFpbWFibGUgcHJpemUsIGFuZCBvbmx5IHVudGlsIHRoZSBkcmF3J3NQY2xhaW0gd2luZG93IGNsb3Nlcy4AAQFTdWNjZXNzIGlzIGJvdW5kZWQgdG8gb25lIGNsYWltIHBlciBwZXJzb24gYW5kIGRyYXcsIHNvIHJlcGVhdGVkTGNhbGxzIGZhaWwgYW5kIHBheS5IY2xlYW5fdXBfZHJhd19zYWx0BAEgZXZlbnRfaWQIARxFdmVudElkAAUYYQFPQ1ctZHJpdmVuOiByZW1vdmUgYSBkcmF3J3MgW2BEcmF3U2FsdHNgXSBlbnRyeSBvbmNlIHRoZSBkcmF3J3MgZW5kIHRpbWUgaGFzIHBhc3NlZC4gVGhlUQFzYWx0IGlzIG9ubHkgcmVhZCBkdXJpbmcgcmVnaXN0cmF0aW9uLCB3aGljaCBjbG9zZXMgc3RyaWN0bHkgYmVmb3JlIHRoZSBlbmQgdGltZSwgc29odGhlIGVudHJ5IGlzIGRlYWQgYnkgdGhlbi4ARQFUaGUgdHJhbnNhY3Rpb24gaXMgb25seSBhY2NlcHRlZCBmcm9tIGEgbG9jYWwgb3IgaW4tYmxvY2sgc291cmNlLCBzbyBpdCBjYW5ub3QgYmVUc3VibWl0dGVkIGV4dGVybmFsbHkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB3QUEUwAABAD1BQEYVmVjPFQ+AAD1BQAAAt0FAPkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFEEARhWZWM8VD4AAP0FDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29yAQYBTE9wdGlvbjxDdXJzb3JPZjxUPj4AABRdAUFsbG93cyByb290IHRvIHNldCBhIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0LCBzdG9wIG9yIGZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBJAVNob3VsZCBub3JtYWxseSBub3QgYmUgbmVlZGVkIGFuZCBpcyBvbmx5IGluIHBsYWNlIGFzIGVtZXJnZW5jeSBtZWFzdXJlLiBOb3RlIHRoYXQFAXJlc3RhcnRpbmcgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGluIHRoaXMgbWFubmVyIHdpbGwgbm90IGNhbGwgdGhlLQFbYE1pZ3JhdGlvblN0YXR1c0hhbmRsZXI6OnN0YXJ0ZWRgXSBob29rIG9yIGVtaXQgYW4gYFVwZ3JhZGVTdGFydGVkYCBldmVudC5cZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvchEGAVhPcHRpb248UmF3Q3Vyc29yT2Y8VD4+AAEoc3RhcnRlZF9hdOQBZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4AARhZAUFsbG93cyByb290IHRvIHNldCBhbiBhY3RpdmUgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQvZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEUBVGhpcyBpcyBhbiBlZGdlLWNhc2UgdmVyc2lvbiBvZiBbYFNlbGY6OmZvcmNlX3NldF9jdXJzb3JgXSB0aGF0IGFsbG93cyB0byBzZXQgdGhlYQFgc3RhcnRlZF9hdGAgdmFsdWUgdG8gdGhlIG5leHQgYmxvY2sgbnVtYmVyLiBPdGhlcndpc2UgdGhpcyB3b3VsZCBub3QgYmUgcG9zc2libGUsIHNpbmNlRQFgZm9yY2Vfc2V0X2N1cnNvcmAgdGFrZXMgYW4gYWJzb2x1dGUgYmxvY2sgbnVtYmVyLiBTZXR0aW5nIGBzdGFydGVkX2F0YCB0byBgTm9uZWABAWluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBwbHVzIG9uZSBzaG91bGQgYmUgdXNlZC5IZm9yY2Vfb25ib2FyZF9tYm1zAAIQoEZvcmNlcyB0aGUgb25ib2FyZGluZyBvZiB0aGUgbWlncmF0aW9ucy4AXQFUaGlzIHByb2Nlc3MgaGFwcGVucyBhdXRvbWF0aWNhbGx5IG9uIGEgcnVudGltZSB1cGdyYWRlLiBJdCBpcyBpbiBwbGFjZSBhcyBhbiBlbWVyZ2VuY3n8bWVhc3VyZW1lbnQuIFRoZSBjdXJzb3IgbmVlZHMgdG8gYmUgYE5vbmVgIGZvciB0aGlzIHRvIHN1Y2NlZWQuOGNsZWFyX2hpc3RvcmljBAEgc2VsZWN0b3IVBgGgSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3I8SWRlbnRpZmllck9mPFQ+PgADFGhDbGVhcnMgdGhlIGBIaXN0b3JpY2Agc2V0LgANAWBtYXBfY3Vyc29yYCBtdXN0IGJlIHNldCB0byB0aGUgbGFzdCB2YWx1ZSB0aGF0IHdhcyByZXR1cm5lZCBieSB0aGVdAWBIaXN0b3JpY0NsZWFyZWRgIGV2ZW50LiBUaGUgZmlyc3QgdGltZSBgTm9uZWAgY2FuIGJlIHVzZWQuIGBsaW1pdGAgbXVzdCBiZSBjaG9zZW4gaW4gYah3YXkgdGhhdCB3aWxsIHJlc3VsdCBpbiBhIHNlbnNpYmxlIHdlaWdodC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuAQYEGE9wdGlvbgQEVAEFBgEIEE5vbmUAAAAQU29tZQQABQYAAAEAAAUGCERwYWxsZXRfbWlncmF0aW9uczxNaWdyYXRpb25DdXJzb3IIGEN1cnNvcgEJBixCbG9ja051bWJlcgE4AQgYQWN0aXZlBAANBgGEQWN0aXZlQ3Vyc29yPEN1cnNvciwgQmxvY2tOdW1iZXI+AAAAFFN0dWNrAAEAAAkGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAADQYIRHBhbGxldF9taWdyYXRpb25zMEFjdGl2ZUN1cnNvcggYQ3Vyc29yAQkGLEJsb2NrTnVtYmVyATgADAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3IRBgE4T3B0aW9uPEN1cnNvcj4AAShzdGFydGVkX2F0OAEsQmxvY2tOdW1iZXIAABEGBBhPcHRpb24EBFQBCQYBCBBOb25lAAAAEFNvbWUEAAkGAAABAAAVBghEcGFsbGV0X21pZ3JhdGlvbnNcSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3IECElkARkGAQggU3BlY2lmaWMEAB0GARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXTkASxPcHRpb248dTMyPgABPHByZXZpb3VzX2N1cnNvciEGATxPcHRpb248VmVjPHU4Pj4AAQAAGQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAdBgAAAhkGACEGBBhPcHRpb24EBFQBGAEIEE5vbmUAAAAQU29tZQQAGAAAAQAAJQYMXHBhbGxldF92ZXJpZnlfc2lnbmF0dXJlJGV4dGVuc2lvbjxWZXJpZnlTaWduYXR1cmUEBFQAAQggRGlzYWJsZWQAAAAYU2lnbmVkCAEkc2lnbmF0dXJleQQBMFQ6OlNpZ25hdHVyZQABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAQAAKQYMTGluZGl2X3BhbGxldF9wZW9wbGUkZXh0ZW5zaW9uIEFzUGVyc29uBARUAAAEAC0GAVxPcHRpb248QXNQZXJzb25JbmZvPFQ+PgAALQYEGE9wdGlvbgQEVAExBgEIEE5vbmUAAAAQU29tZQQAMQYAAAEAADEGDExpbmRpdl9wYWxsZXRfcGVvcGxlJGV4dGVuc2lvbjBBc1BlcnNvbkluZm8EBFQAARRoQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnQEADgBIFQ6Ok5vbmNlAAAAYEFzUGVyc29uYWxBbGlhc1dpdGhQcm9vZhAAHQQBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAACAEcQ29udGV4dAABAGxBc1BlcnNvbmFsSWRlbnRpdHlXaXRoUHJvb2YIAHEEAThTaWduYXR1cmVPZjxUPgAAKAEoUGVyc29uYWxJZAACAHRBc1BlcnNvbmFsSWRlbnRpdHlXaXRoQWNjb3VudAQAOAEgVDo6Tm9uY2UAAwCEQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnRSZXZpc2VkFAA4ASBUOjpOb25jZQAAHQQBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAACAEcQ29udGV4dAAEAAA1BgxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luayRleHRlbnNpb25cQXNQcm9vZk9mSW5rUGFydGljaXBhbnQEBFQAAAQAOQYBmE9wdGlvbjxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudEluZm88VD4+AAA5BgQYT3B0aW9uBARUAT0GAQgQTm9uZQAAABBTb21lBAA9BgAAAQAAPQYMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmskZXh0ZW5zaW9ubEFzUHJvb2ZPZklua1BhcnRpY2lwYW50SW5mbwQEVAABDDhBc0FwcGx5V2l0aFNpZwQAOAEgVDo6Tm9uY2UAAAAoQXNSZWZlcnJlZAQAOAEgVDo6Tm9uY2UAAQAkQXNJbnZpdGVkBAA4ASBUOjpOb25jZQACAABBBgxIaW5kaXZfcGFsbGV0X3Njb3JlJGV4dGVuc2lvbkhTY29yZUFzUGFydGljaXBhbnQEBFQAAAQARQYBoE9wdGlvbjxTY29yZUFzUGFydGljaXBhbnREYXRhPFQ6Ok5vbmNlPj4AAEUGBBhPcHRpb24EBFQBSQYBCBBOb25lAAAAEFNvbWUEAEkGAAABAABJBgxIaW5kaXZfcGFsbGV0X3Njb3JlJGV4dGVuc2lvblhTY29yZUFzUGFydGljaXBhbnREYXRhBBROb25jZQE4AAQBFG5vbmNlOAEUTm9uY2UAAE0GDERpbmRpdl9wYWxsZXRfZ2FtZSRleHRlbnNpb240R2FtZUFzSW52aXRlZAQEVAAABABRBgFwT3B0aW9uPEdhbWVBc0ludml0ZWREYXRhPFQ+PgAAUQYEGE9wdGlvbgQEVAFVBgEIEE5vbmUAAAAQU29tZQQAVQYAAAEAAFUGDERpbmRpdl9wYWxsZXRfZ2FtZSRleHRlbnNpb25ER2FtZUFzSW52aXRlZERhdGEEBFQAABABFG5vbmNlOAEgVDo6Tm9uY2UAARxpbnZpdGVyBAEwVDo6QWNjb3VudElkAAEYdGlja2V0BAEsVGlja2V0T2Y8VD4AASRzaWduYXR1cmV5BAFIVDo6VGlja2V0U2lnbmF0dXJlAABZBgxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlJGV4dGVuc2lvbjhQZW9wbGVMaXRlQXV0aAQEVAAABABdBgF8T3B0aW9uPFBlb3BsZUxpdGVBdXRoRGF0YU9mPFQ+PgAAXQYEGE9wdGlvbgQEVAFhBgEIEE5vbmUAAAAQU29tZQQAYQYAAAEAAGEGDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUkZXh0ZW5zaW9uSFBlb3BsZUxpdGVBdXRoRGF0YQgUTm9uY2UBOBRQcm9vZgEdBAEQMEFzTGl0ZVBlcnNvbgQAOAEUTm9uY2UAAABYQXNMaXRlQWxpYXNXaXRoQWNjb3VudAQAOAEUTm9uY2UAAQBQQXNMaXRlQWxpYXNXaXRoUHJvb2YQAB0EARRQcm9vZgAAOAEkUmluZ0luZGV4AAA4ATRSZXZpc2lvbkluZGV4AAAIARxDb250ZXh0AAIAdEFzTGl0ZUFsaWFzV2l0aEFjY291bnRSZXZpc2VkFAA4ARROb25jZQAAHQQBFFByb29mAAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAAgBHENvbnRleHQAAwAAZQYMUGluZGl2X3BhbGxldF9tZW1iZXJzJGV4dGVuc2lvbiBBc01lbWJlcgQEVAAABABpBgFcT3B0aW9uPEFzTWVtYmVySW5mbzxUPj4AAGkGBBhPcHRpb24EBFQBbQYBCBBOb25lAAAAEFNvbWUEAG0GAAABAABtBgxQaW5kaXZfcGFsbGV0X21lbWJlcnMkZXh0ZW5zaW9uMEFzTWVtYmVySW5mbwQEVAABBCxTZWxmSW5jbHVkZQQAcQQBOFNpZ25hdHVyZU9mPFQ+AAAAAHEGDFBpbmRpdl9wYWxsZXRfY29pbmFnZSRleHRlbnNpb24kQXNDb2luYWdlBARUAAAEAHUGAWBPcHRpb248QXNDb2luYWdlSW5mbzxUPj4AAHUGBBhPcHRpb24EBFQBeQYBCBBOb25lAAAAEFNvbWUEAHkGAAABAAB5BgxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UkZXh0ZW5zaW9uNEFzQ29pbmFnZUluZm8EBFQAARgYQXNDb2luAAAATEFzVW5sb2FkVG9rZW5QZW9wbGUQARRwcm9vZn0GAbA8VDo6TWVtYmVyc2hpcFByb29mIGFzIFZhbGlkYXRlUHJvb2Y+OjpQcm9vZgABGHBlcmlvZDgBGFBlcmlvZAABHGNvdW50ZXI4AQx1MzIAATBhbGlhc19wcm9vZnMZBAGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgABAFxBc1VubG9hZFRva2VuTGl0ZVBlb3BsZRABFHByb29mfQYBsDxUOjpNZW1iZXJzaGlwUHJvb2YgYXMgVmFsaWRhdGVQcm9vZj46OlByb29mAAEYcGVyaW9kOAEYUGVyaW9kAAEcY291bnRlcjgBDHUzMgABMGFsaWFzX3Byb29mcxkEAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAIAREFzVW5sb2FkVG9rZW5QYWlkFAEUcHJvb2YdBAEoUHJvb2ZPZjxUPgABGHBlcmlvZDgBGFBlcmlvZAABVHBhaWRfdG9rZW5fcmluZ19pbmRleDgBDHUzMgABYHBhaWRfdG9rZW5fcmluZ19yZXZpc2lvbjgBDHUzMgABMGFsaWFzX3Byb29mcxkEAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAMAXEFzVW5sb2FkVG9rZW5Gcm9tT3V0cHV0FAFIZmVlX3JlY3ljbGVyX3ZhbHVlFQQBMERlbm9taW5hdGlvbgABSGZlZV9yZWN5Y2xlcl9pbmRleDgBJFJpbmdJbmRleAABVGZlZV9yZWN5Y2xlcl9yZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAATRyZXRyeV9jb3VudGVyDAEIdTgAATBhbGlhc19wcm9vZnMZBAGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgAEAFhJbmZhbGxpYmxlVW5wYWlkU2lnbmVkBAEUbm9uY2U4ASBUOjpOb25jZQAFAAB9BgxMaW5kaXZfcGFsbGV0X3Blb3BsZRR0eXBlczxNZW1iZXJzaGlwUHJvb2YEBFQAAAwBFHByb29mHQQBKFByb29mT2Y8VD4AARByaW5nOAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AACBBgxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcyRleHRlbnNpb24sQXNSZXNvdXJjZXMEBFQAAAQAhQYBaE9wdGlvbjxBc1Jlc291cmNlc0luZm88VD4+AACFBgQYT3B0aW9uBARUAYkGAQgQTm9uZQAAABBTb21lBACJBgAAAQAAiQYMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMkZXh0ZW5zaW9uPEFzUmVzb3VyY2VzSW5mbwQEVAABEHRSZWdpc3Rlck5vdGlmaWNhdGlvbldpdGhQcm9vZgwAHQQBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAAAIRSZWdpc3Rlck5vdGlmaWNhdGlvbkZvckNvbGxlY3Rpb24QAB0EAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAAEEAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgABAHxSZWdpc3RlclN0YXRlbWVudFN0b3JlQWxsb3dhbmNlEAAdBAEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AAA4ATRSZXZpc2lvbkluZGV4AAABBAFQTWVtYmVyc2hpcENvbGxlY3Rpb24AAgBQQ2xhaW1Mb25nVGVybVN0b3JhZ2UQAB0EAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAAEEAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgADAACNBgxMaW5kaXZfcGFsbGV0X2hvbm91ciRleHRlbnNpb24kVm90ZXJBdXRoBARUAAAEAJEGAWBPcHRpb248Vm90ZXJBdXRoRGF0YTxUPj4AAJEGBBhPcHRpb24EBFQBlQYBCBBOb25lAAAAEFNvbWUEAJUGAAABAACVBgxMaW5kaXZfcGFsbGV0X2hvbm91ciRleHRlbnNpb240Vm90ZXJBdXRoRGF0YQQEVAAADAEUcHJvb2YdBAE4UmluZ1Byb29mT2Y8VD4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AACZBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM4YXV0aG9yaXplX2NhbGw0QXV0aG9yaXplQ2FsbAQEVAAAAACdBgh8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjhSZXN0cmljdE9yaWdpbgQEVAAABABZAQEQYm9vbAAAoQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zVGNoZWNrX25vbl96ZXJvX3NlbmRlckhDaGVja05vblplcm9TZW5kZXIEBFQAAAAApQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zSGNoZWNrX3NwZWNfdmVyc2lvbkBDaGVja1NwZWNWZXJzaW9uBARUAAAAAKkGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0BjaGVja190eF92ZXJzaW9uOENoZWNrVHhWZXJzaW9uBARUAAAAAK0GEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczRjaGVja19nZW5lc2lzMENoZWNrR2VuZXNpcwQEVAAAAACxBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM8Y2hlY2tfbW9ydGFsaXR5OENoZWNrTW9ydGFsaXR5BARUAAAEALUGAQxFcmEAALUGEChzcF9ydW50aW1lHGdlbmVyaWMMZXJhDEVyYQABAQQgSW1tb3J0YWwAAAAcTW9ydGFsMQQADAAAAQAcTW9ydGFsMgQADAAAAgAcTW9ydGFsMwQADAAAAwAcTW9ydGFsNAQADAAABAAcTW9ydGFsNQQADAAABQAcTW9ydGFsNgQADAAABgAcTW9ydGFsNwQADAAABwAcTW9ydGFsOAQADAAACAAcTW9ydGFsOQQADAAACQAgTW9ydGFsMTAEAAwAAAoAIE1vcnRhbDExBAAMAAALACBNb3J0YWwxMgQADAAADAAgTW9ydGFsMTMEAAwAAA0AIE1vcnRhbDE0BAAMAAAOACBNb3J0YWwxNQQADAAADwAgTW9ydGFsMTYEAAwAABAAIE1vcnRhbDE3BAAMAAARACBNb3J0YWwxOAQADAAAEgAgTW9ydGFsMTkEAAwAABMAIE1vcnRhbDIwBAAMAAAUACBNb3J0YWwyMQQADAAAFQAgTW9ydGFsMjIEAAwAABYAIE1vcnRhbDIzBAAMAAAXACBNb3J0YWwyNAQADAAAGAAgTW9ydGFsMjUEAAwAABkAIE1vcnRhbDI2BAAMAAAaACBNb3J0YWwyNwQADAAAGwAgTW9ydGFsMjgEAAwAABwAIE1vcnRhbDI5BAAMAAAdACBNb3J0YWwzMAQADAAAHgAgTW9ydGFsMzEEAAwAAB8AIE1vcnRhbDMyBAAMAAAgACBNb3J0YWwzMwQADAAAIQAgTW9ydGFsMzQEAAwAACIAIE1vcnRhbDM1BAAMAAAjACBNb3J0YWwzNgQADAAAJAAgTW9ydGFsMzcEAAwAACUAIE1vcnRhbDM4BAAMAAAmACBNb3J0YWwzOQQADAAAJwAgTW9ydGFsNDAEAAwAACgAIE1vcnRhbDQxBAAMAAApACBNb3J0YWw0MgQADAAAKgAgTW9ydGFsNDMEAAwAACsAIE1vcnRhbDQ0BAAMAAAsACBNb3J0YWw0NQQADAAALQAgTW9ydGFsNDYEAAwAAC4AIE1vcnRhbDQ3BAAMAAAvACBNb3J0YWw0OAQADAAAMAAgTW9ydGFsNDkEAAwAADEAIE1vcnRhbDUwBAAMAAAyACBNb3J0YWw1MQQADAAAMwAgTW9ydGFsNTIEAAwAADQAIE1vcnRhbDUzBAAMAAA1ACBNb3J0YWw1NAQADAAANgAgTW9ydGFsNTUEAAwAADcAIE1vcnRhbDU2BAAMAAA4ACBNb3J0YWw1NwQADAAAOQAgTW9ydGFsNTgEAAwAADoAIE1vcnRhbDU5BAAMAAA7ACBNb3J0YWw2MAQADAAAPAAgTW9ydGFsNjEEAAwAAD0AIE1vcnRhbDYyBAAMAAA+ACBNb3J0YWw2MwQADAAAPwAgTW9ydGFsNjQEAAwAAEAAIE1vcnRhbDY1BAAMAABBACBNb3J0YWw2NgQADAAAQgAgTW9ydGFsNjcEAAwAAEMAIE1vcnRhbDY4BAAMAABEACBNb3J0YWw2OQQADAAARQAgTW9ydGFsNzAEAAwAAEYAIE1vcnRhbDcxBAAMAABHACBNb3J0YWw3MgQADAAASAAgTW9ydGFsNzMEAAwAAEkAIE1vcnRhbDc0BAAMAABKACBNb3J0YWw3NQQADAAASwAgTW9ydGFsNzYEAAwAAEwAIE1vcnRhbDc3BAAMAABNACBNb3J0YWw3OAQADAAATgAgTW9ydGFsNzkEAAwAAE8AIE1vcnRhbDgwBAAMAABQACBNb3J0YWw4MQQADAAAUQAgTW9ydGFsODIEAAwAAFIAIE1vcnRhbDgzBAAMAABTACBNb3J0YWw4NAQADAAAVAAgTW9ydGFsODUEAAwAAFUAIE1vcnRhbDg2BAAMAABWACBNb3J0YWw4NwQADAAAVwAgTW9ydGFsODgEAAwAAFgAIE1vcnRhbDg5BAAMAABZACBNb3J0YWw5MAQADAAAWgAgTW9ydGFsOTEEAAwAAFsAIE1vcnRhbDkyBAAMAABcACBNb3J0YWw5MwQADAAAXQAgTW9ydGFsOTQEAAwAAF4AIE1vcnRhbDk1BAAMAABfACBNb3J0YWw5NgQADAAAYAAgTW9ydGFsOTcEAAwAAGEAIE1vcnRhbDk4BAAMAABiACBNb3J0YWw5OQQADAAAYwAkTW9ydGFsMTAwBAAMAABkACRNb3J0YWwxMDEEAAwAAGUAJE1vcnRhbDEwMgQADAAAZgAkTW9ydGFsMTAzBAAMAABnACRNb3J0YWwxMDQEAAwAAGgAJE1vcnRhbDEwNQQADAAAaQAkTW9ydGFsMTA2BAAMAABqACRNb3J0YWwxMDcEAAwAAGsAJE1vcnRhbDEwOAQADAAAbAAkTW9ydGFsMTA5BAAMAABtACRNb3J0YWwxMTAEAAwAAG4AJE1vcnRhbDExMQQADAAAbwAkTW9ydGFsMTEyBAAMAABwACRNb3J0YWwxMTMEAAwAAHEAJE1vcnRhbDExNAQADAAAcgAkTW9ydGFsMTE1BAAMAABzACRNb3J0YWwxMTYEAAwAAHQAJE1vcnRhbDExNwQADAAAdQAkTW9ydGFsMTE4BAAMAAB2ACRNb3J0YWwxMTkEAAwAAHcAJE1vcnRhbDEyMAQADAAAeAAkTW9ydGFsMTIxBAAMAAB5ACRNb3J0YWwxMjIEAAwAAHoAJE1vcnRhbDEyMwQADAAAewAkTW9ydGFsMTI0BAAMAAB8ACRNb3J0YWwxMjUEAAwAAH0AJE1vcnRhbDEyNgQADAAAfgAkTW9ydGFsMTI3BAAMAAB/ACRNb3J0YWwxMjgEAAwAAIAAJE1vcnRhbDEyOQQADAAAgQAkTW9ydGFsMTMwBAAMAACCACRNb3J0YWwxMzEEAAwAAIMAJE1vcnRhbDEzMgQADAAAhAAkTW9ydGFsMTMzBAAMAACFACRNb3J0YWwxMzQEAAwAAIYAJE1vcnRhbDEzNQQADAAAhwAkTW9ydGFsMTM2BAAMAACIACRNb3J0YWwxMzcEAAwAAIkAJE1vcnRhbDEzOAQADAAAigAkTW9ydGFsMTM5BAAMAACLACRNb3J0YWwxNDAEAAwAAIwAJE1vcnRhbDE0MQQADAAAjQAkTW9ydGFsMTQyBAAMAACOACRNb3J0YWwxNDMEAAwAAI8AJE1vcnRhbDE0NAQADAAAkAAkTW9ydGFsMTQ1BAAMAACRACRNb3J0YWwxNDYEAAwAAJIAJE1vcnRhbDE0NwQADAAAkwAkTW9ydGFsMTQ4BAAMAACUACRNb3J0YWwxNDkEAAwAAJUAJE1vcnRhbDE1MAQADAAAlgAkTW9ydGFsMTUxBAAMAACXACRNb3J0YWwxNTIEAAwAAJgAJE1vcnRhbDE1MwQADAAAmQAkTW9ydGFsMTU0BAAMAACaACRNb3J0YWwxNTUEAAwAAJsAJE1vcnRhbDE1NgQADAAAnAAkTW9ydGFsMTU3BAAMAACdACRNb3J0YWwxNTgEAAwAAJ4AJE1vcnRhbDE1OQQADAAAnwAkTW9ydGFsMTYwBAAMAACgACRNb3J0YWwxNjEEAAwAAKEAJE1vcnRhbDE2MgQADAAAogAkTW9ydGFsMTYzBAAMAACjACRNb3J0YWwxNjQEAAwAAKQAJE1vcnRhbDE2NQQADAAApQAkTW9ydGFsMTY2BAAMAACmACRNb3J0YWwxNjcEAAwAAKcAJE1vcnRhbDE2OAQADAAAqAAkTW9ydGFsMTY5BAAMAACpACRNb3J0YWwxNzAEAAwAAKoAJE1vcnRhbDE3MQQADAAAqwAkTW9ydGFsMTcyBAAMAACsACRNb3J0YWwxNzMEAAwAAK0AJE1vcnRhbDE3NAQADAAArgAkTW9ydGFsMTc1BAAMAACvACRNb3J0YWwxNzYEAAwAALAAJE1vcnRhbDE3NwQADAAAsQAkTW9ydGFsMTc4BAAMAACyACRNb3J0YWwxNzkEAAwAALMAJE1vcnRhbDE4MAQADAAAtAAkTW9ydGFsMTgxBAAMAAC1ACRNb3J0YWwxODIEAAwAALYAJE1vcnRhbDE4MwQADAAAtwAkTW9ydGFsMTg0BAAMAAC4ACRNb3J0YWwxODUEAAwAALkAJE1vcnRhbDE4NgQADAAAugAkTW9ydGFsMTg3BAAMAAC7ACRNb3J0YWwxODgEAAwAALwAJE1vcnRhbDE4OQQADAAAvQAkTW9ydGFsMTkwBAAMAAC+ACRNb3J0YWwxOTEEAAwAAL8AJE1vcnRhbDE5MgQADAAAwAAkTW9ydGFsMTkzBAAMAADBACRNb3J0YWwxOTQEAAwAAMIAJE1vcnRhbDE5NQQADAAAwwAkTW9ydGFsMTk2BAAMAADEACRNb3J0YWwxOTcEAAwAAMUAJE1vcnRhbDE5OAQADAAAxgAkTW9ydGFsMTk5BAAMAADHACRNb3J0YWwyMDAEAAwAAMgAJE1vcnRhbDIwMQQADAAAyQAkTW9ydGFsMjAyBAAMAADKACRNb3J0YWwyMDMEAAwAAMsAJE1vcnRhbDIwNAQADAAAzAAkTW9ydGFsMjA1BAAMAADNACRNb3J0YWwyMDYEAAwAAM4AJE1vcnRhbDIwNwQADAAAzwAkTW9ydGFsMjA4BAAMAADQACRNb3J0YWwyMDkEAAwAANEAJE1vcnRhbDIxMAQADAAA0gAkTW9ydGFsMjExBAAMAADTACRNb3J0YWwyMTIEAAwAANQAJE1vcnRhbDIxMwQADAAA1QAkTW9ydGFsMjE0BAAMAADWACRNb3J0YWwyMTUEAAwAANcAJE1vcnRhbDIxNgQADAAA2AAkTW9ydGFsMjE3BAAMAADZACRNb3J0YWwyMTgEAAwAANoAJE1vcnRhbDIxOQQADAAA2wAkTW9ydGFsMjIwBAAMAADcACRNb3J0YWwyMjEEAAwAAN0AJE1vcnRhbDIyMgQADAAA3gAkTW9ydGFsMjIzBAAMAADfACRNb3J0YWwyMjQEAAwAAOAAJE1vcnRhbDIyNQQADAAA4QAkTW9ydGFsMjI2BAAMAADiACRNb3J0YWwyMjcEAAwAAOMAJE1vcnRhbDIyOAQADAAA5AAkTW9ydGFsMjI5BAAMAADlACRNb3J0YWwyMzAEAAwAAOYAJE1vcnRhbDIzMQQADAAA5wAkTW9ydGFsMjMyBAAMAADoACRNb3J0YWwyMzMEAAwAAOkAJE1vcnRhbDIzNAQADAAA6gAkTW9ydGFsMjM1BAAMAADrACRNb3J0YWwyMzYEAAwAAOwAJE1vcnRhbDIzNwQADAAA7QAkTW9ydGFsMjM4BAAMAADuACRNb3J0YWwyMzkEAAwAAO8AJE1vcnRhbDI0MAQADAAA8AAkTW9ydGFsMjQxBAAMAADxACRNb3J0YWwyNDIEAAwAAPIAJE1vcnRhbDI0MwQADAAA8wAkTW9ydGFsMjQ0BAAMAAD0ACRNb3J0YWwyNDUEAAwAAPUAJE1vcnRhbDI0NgQADAAA9gAkTW9ydGFsMjQ3BAAMAAD3ACRNb3J0YWwyNDgEAAwAAPgAJE1vcnRhbDI0OQQADAAA+QAkTW9ydGFsMjUwBAAMAAD6ACRNb3J0YWwyNTEEAAwAAPsAJE1vcnRhbDI1MgQADAAA/AAkTW9ydGFsMjUzBAAMAAD9ACRNb3J0YWwyNTQEAAwAAP4AJE1vcnRhbDI1NQQADAAA/wAAuQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zLGNoZWNrX25vbmNlKENoZWNrTm9uY2UEBFQAAAQAYAEgVDo6Tm9uY2UAAL0GEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczBjaGVja193ZWlnaHQsQ2hlY2tXZWlnaHQEBFQAAAAAwQYIXHBhbGxldF9hc3NldF90eF9wYXltZW50UENoYXJnZUFzc2V0VHhQYXltZW50BARUAAAIAQx0aXBVAQEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWRFAwFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AAMUGCDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFE5vbmNlATgsQWNjb3VudERhdGEByQYAFAEUbm9uY2U4ARROb25jZQABJGNvbnN1bWVyczgBIFJlZkNvdW50AAEkcHJvdmlkZXJzOAEgUmVmQ291bnQAASxzdWZmaWNpZW50czgBIFJlZkNvdW50AAEQZGF0YckGASxBY2NvdW50RGF0YQAAyQYMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQFFAQAQARBmcmVlRQEBHEJhbGFuY2UAASByZXNlcnZlZEUBARxCYWxhbmNlAAEYZnJvemVuRQEBHEJhbGFuY2UAARRmbGFnc80GAShFeHRyYUZsYWdzAADNBgw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzKEV4dHJhRmxhZ3MAAAQARQEBEHUxMjgAANEGDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBeQIADAEYbm9ybWFseQIBBFQAASxvcGVyYXRpb25hbHkCAQRUAAEkbWFuZGF0b3J5eQIBBFQAANUGAAAC2QYA2QYIMGZyYW1lX3N5c3RlbSxFdmVudFJlY29yZAgERQHdBgRUATwADAEUcGhhc2VBCAEUUGhhc2UAARRldmVudN0GAQRFAAEYdG9waWNzRQgBGFZlYzxUPgAA3QYIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUwUnVudGltZUV2ZW50AAGkGFN5c3RlbQQA4QYBcGZyYW1lX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBAAJBwG8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAQAoUGFyYW1ldGVycwQADQcBhHBhbGxldF9wYXJhbWV0ZXJzOjpFdmVudDxSdW50aW1lPgBJADROZXR3b3JrU3VmZml4BAA9BwGsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4OjpFdmVudDxSdW50aW1lPgBKACBCYWxhbmNlcwQAQQcBfHBhbGxldF9iYWxhbmNlczo6RXZlbnQ8UnVudGltZT4ACgBIVHJhbnNhY3Rpb25QYXltZW50BAB1BwGocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAsASFNraXBGZWVsZXNzUGF5bWVudAQAeQcBrHBhbGxldF9za2lwX2ZlZWxlc3NfcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ADABET3JpZ2luUmVzdHJpY3Rpb24EAH0HAbxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOjpFdmVudDxSdW50aW1lPgANABhBc3NldHMEAIEHAXRwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lPgAOADBBc3NldHNIb2xkZXIEAIUHAZBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6RXZlbnQ8UnVudGltZT4ADwAkQXNzZXRSYXRlBACJBwGEcGFsbGV0X2Fzc2V0X3JhdGU6OkV2ZW50PFJ1bnRpbWU+ABAAOEFzc2V0VHhQYXltZW50BACNBwGccGFsbGV0X2Fzc2V0X3R4X3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+ABEAPEFzc2V0Q29udmVyc2lvbgQAkQcBnHBhbGxldF9hc3NldF9jb252ZXJzaW9uOjpFdmVudDxSdW50aW1lPgASAChQb29sQXNzZXRzBACdBwHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgATAERDb2xsYXRvclNlbGVjdGlvbgQAoQcBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkV2ZW50PFJ1bnRpbWU+ABUAHFNlc3Npb24EAKUHAXhwYWxsZXRfc2Vzc2lvbjo6RXZlbnQ8UnVudGltZT4AFgAkWGNtcFF1ZXVlBACpBwGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAK0HAWhwYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAfAChDdW11bHVzWGNtBAC9BwGIY3VtdWx1c19wYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAgADBNZXNzYWdlUXVldWUEAMEHAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AIgAcVXRpbGl0eQQAyQcBVHBhbGxldF91dGlsaXR5OjpFdmVudAAoACBNdWx0aXNpZwQA0QcBfHBhbGxldF9tdWx0aXNpZzo6RXZlbnQ8UnVudGltZT4AKQAQU3VkbwQA1QcBbHBhbGxldF9zdWRvOjpFdmVudDxSdW50aW1lPgAqABRQcm94eQQA2QcBcHBhbGxldF9wcm94eTo6RXZlbnQ8UnVudGltZT4ALAAYUGVvcGxlBADhBwGMaW5kaXZfcGFsbGV0X3Blb3BsZTo6RXZlbnQ8UnVudGltZT4AMwAcTW9iUnVsZQQA5QcBlGluZGl2X3BhbGxldF9tb2JfcnVsZTo6RXZlbnQ8UnVudGltZT4ANAAoUHJvb2ZPZkluawQA7QcBpGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6OkV2ZW50PFJ1bnRpbWU+ADUAEEdhbWUEAPEHAYRpbmRpdl9wYWxsZXRfZ2FtZTo6RXZlbnQ8UnVudGltZT4ANwAUU2NvcmUEAPUHAYhpbmRpdl9wYWxsZXRfc2NvcmU6OkV2ZW50PFJ1bnRpbWU+ADgAKE5mdENyZWRpdHMEAPkHAaBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHM6OkV2ZW50PFJ1bnRpbWU+ADkAIER1bW15RGltBAAFCAGYaW5kaXZfcGFsbGV0X2R1bW15X2RpbTo6RXZlbnQ8UnVudGltZT4AOwAoUGVvcGxlTGl0ZQQACQgBoGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZTo6RXZlbnQ8UnVudGltZT4APgAkUmVzb3VyY2VzBAANCAGYaW5kaXZfcGFsbGV0X3Jlc291cmNlczo6RXZlbnQ8UnVudGltZT4APwA0Q2h1bmtzTWFuYWdlcgQAEQgBrGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlcjo6RXZlbnQ8UnVudGltZT4AQAAcTWVtYmVycwQAFQgBkGluZGl2X3BhbGxldF9tZW1iZXJzOjpFdmVudDxSdW50aW1lPgBDABxDb2luYWdlBAAZCAGQaW5kaXZfcGFsbGV0X2NvaW5hZ2U6OkV2ZW50PFJ1bnRpbWU+AEQAPE1lbWJlcnNOb3RpZmllcgQAIQgBtGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyOjpFdmVudDxSdW50aW1lPgBFABxBaXJkcm9wBAAlCAGQaW5kaXZfcGFsbGV0X2FpcmRyb3A6OkV2ZW50PFJ1bnRpbWU+AEYAGEhvbm91cgQAMQgBjGluZGl2X3BhbGxldF9ob25vdXI6OkV2ZW50PFJ1bnRpbWU+AEcAOFBlb3BsZUFpcmRyb3BzBAA5CAGwaW5kaXZfcGFsbGV0X3Blb3BsZV9haXJkcm9wczo6RXZlbnQ8UnVudGltZT4ASABQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAD0IAYRwYWxsZXRfbWlncmF0aW9uczo6RXZlbnQ8UnVudGltZT4AYgAA4QYMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAASBARXh0cmluc2ljU3VjY2VzcwQBNGRpc3BhdGNoX2luZm/lBgFERGlzcGF0Y2hFdmVudEluZm8AAASQQW4gZXh0cmluc2ljIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuPEV4dHJpbnNpY0ZhaWxlZAgBOGRpc3BhdGNoX2Vycm9y8QYBNERpc3BhdGNoRXJyb3IAATRkaXNwYXRjaF9pbmZv5QYBRERpc3BhdGNoRXZlbnRJbmZvAAEEUEFuIGV4dHJpbnNpYyBmYWlsZWQuLENvZGVVcGRhdGVkBAEQaGFzaDwBHFQ6Okhhc2gAAgTQYDpjb2RlYCB3YXMgdXBkYXRlZCB0byB0aGUgY29kZSB3aXRoIHRoZSBnaXZlbiBoYXNoLihOZXdBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBGhBIG5ldyBhY2NvdW50IHdhcyBjcmVhdGVkLjRLaWxsZWRBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBFhBbiBhY2NvdW50IHdhcyByZWFwZWQuIFJlbWFya2VkCAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEQaGFzaDwBHFQ6Okhhc2gABQRwT24gb24tY2hhaW4gcmVtYXJrIGhhcHBlbmVkLkRVcGdyYWRlQXV0aG9yaXplZAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uWQEBEGJvb2wABgRoQW4gdXBncmFkZSB3YXMgYXV0aG9yaXplZC6AUmVqZWN0ZWRJbnZhbGlkQXV0aG9yaXplZFVwZ3JhZGUIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAEUZXJyb3LxBgE0RGlzcGF0Y2hFcnJvcgAHBBEBQW4gaW52YWxpZCBhdXRob3JpemVkIHVwZ3JhZGUgd2FzIHJlamVjdGVkIHdoaWxlIHRyeWluZyB0byBhcHBseSBpdC4EcEV2ZW50IGZvciB0aGUgU3lzdGVtIHBhbGxldC7lBggwZnJhbWVfc3lzdGVtRERpc3BhdGNoRXZlbnRJbmZvAAAMARh3ZWlnaHR5AgEYV2VpZ2h0AAEUY2xhc3PpBgE0RGlzcGF0Y2hDbGFzcwABIHBheXNfZmVl7QYBEFBheXMAAOkGDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoNERpc3BhdGNoQ2xhc3MAAQwYTm9ybWFsAAAALE9wZXJhdGlvbmFsAAEAJE1hbmRhdG9yeQACAADtBgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaBBQYXlzAAEIDFllcwAAAAhObwABAADxBggoc3BfcnVudGltZTREaXNwYXRjaEVycm9yAAE8FE90aGVyAAAAMENhbm5vdExvb2t1cAABACRCYWRPcmlnaW4AAgAYTW9kdWxlBAD1BgEsTW9kdWxlRXJyb3IAAwBEQ29uc3VtZXJSZW1haW5pbmcABAAsTm9Qcm92aWRlcnMABQBAVG9vTWFueUNvbnN1bWVycwAGABRUb2tlbgQA+QYBKFRva2VuRXJyb3IABwAoQXJpdGhtZXRpYwQA/QYBPEFyaXRobWV0aWNFcnJvcgAIADRUcmFuc2FjdGlvbmFsBAABBwFIVHJhbnNhY3Rpb25hbEVycm9yAAkAJEV4aGF1c3RlZAAKAChDb3JydXB0aW9uAAsALFVuYXZhaWxhYmxlAAwAOFJvb3ROb3RBbGxvd2VkAA0AEFRyaWUEAAUHASRUcmllRXJyb3IADgAA9QYIKHNwX3J1bnRpbWUsTW9kdWxlRXJyb3IAAAgBFGluZGV4DAEIdTgAARRlcnJvcnABjFt1ODsgTUFYX01PRFVMRV9FUlJPUl9FTkNPREVEX1NJWkVdAAD5Bggoc3BfcnVudGltZShUb2tlbkVycm9yAAEoQEZ1bmRzVW5hdmFpbGFibGUAAAAwT25seVByb3ZpZGVyAAEAMEJlbG93TWluaW11bQACADBDYW5ub3RDcmVhdGUAAwAwVW5rbm93bkFzc2V0AAQAGEZyb3plbgAFACxVbnN1cHBvcnRlZAAGAEBDYW5ub3RDcmVhdGVIb2xkAAcANE5vdEV4cGVuZGFibGUACAAcQmxvY2tlZAAJAAD9Bgg0c3BfYXJpdGhtZXRpYzxBcml0aG1ldGljRXJyb3IAAQwkVW5kZXJmbG93AAAAIE92ZXJmbG93AAEAOERpdmlzaW9uQnlaZXJvAAIAAAEHCChzcF9ydW50aW1lSFRyYW5zYWN0aW9uYWxFcnJvcgABCDBMaW1pdFJlYWNoZWQAAAAcTm9MYXllcgABAAAFBwwoc3BfcnVudGltZTBwcm92aW5nX3RyaWUkVHJpZUVycm9yAAE4QEludmFsaWRTdGF0ZVJvb3QAAABISW5jb21wbGV0ZURhdGFiYXNlAAEAUFZhbHVlQXRJbmNvbXBsZXRlS2V5AAIAMERlY29kZXJFcnJvcgADACxJbnZhbGlkSGFzaAAEADBEdXBsaWNhdGVLZXkABQA4RXh0cmFuZW91c05vZGUABgA8RXh0cmFuZW91c1ZhbHVlAAcAXEV4dHJhbmVvdXNIYXNoUmVmZXJlbmNlAAgAVEludmFsaWRDaGlsZFJlZmVyZW5jZQAJADRWYWx1ZU1pc21hdGNoAAoAPEluY29tcGxldGVQcm9vZgALADBSb290TWlzbWF0Y2gADAAsRGVjb2RlRXJyb3IADQAACQcMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEYYFZhbGlkYXRpb25GdW5jdGlvblN0b3JlZAAABNBUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgYmVlbiBzY2hlZHVsZWQgdG8gYXBwbHkuZFZhbGlkYXRpb25GdW5jdGlvbkFwcGxpZWQEAVRyZWxheV9jaGFpbl9ibG9ja19udW04AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAAQRFAVRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGFzIG9mIHRoZSBjb250YWluZWQgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyLmxWYWxpZGF0aW9uRnVuY3Rpb25EaXNjYXJkZWQAAgSwVGhlIHJlbGF5LWNoYWluIGFib3J0ZWQgdGhlIHVwZ3JhZGUgcHJvY2Vzcy5gRG93bndhcmRNZXNzYWdlc1JlY2VpdmVkBAEUY291bnQ4AQx1MzIAAwQBAVNvbWUgZG93bndhcmQgbWVzc2FnZXMgaGF2ZSBiZWVuIHJlY2VpdmVkIGFuZCB3aWxsIGJlIHByb2Nlc3NlZC5kRG93bndhcmRNZXNzYWdlc1Byb2Nlc3NlZAgBLHdlaWdodF91c2VkeQIBGFdlaWdodAABIGRtcV9oZWFkPAFEcmVsYXlfY2hhaW46Okhhc2gABATgRG93bndhcmQgbWVzc2FnZXMgd2VyZSBwcm9jZXNzZWQgdXNpbmcgdGhlIGdpdmVuIHdlaWdodC5EVXB3YXJkTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2hhBQE8T3B0aW9uPFhjbUhhc2g+AAUEuEFuIHVwd2FyZCBtZXNzYWdlIHdhcyBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQNBwxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0FEV2ZW50BARUAAEEHFVwZGF0ZWQMAQxrZXkRBwHEPFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQRkVGhlIGtleSB0aGF0IHdhcyB1cGRhdGVkLgEkb2xkX3ZhbHVlJQcB7E9wdGlvbjw8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWU+BHxUaGUgb2xkIHZhbHVlIGJlZm9yZSB0aGlzIGNhbGwuASRuZXdfdmFsdWUlBwHsT3B0aW9uPDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZT4EeFRoZSBuZXcgdmFsdWUgYWZ0ZXIgdGhpcyBjYWxsLgAMUEEgUGFyYW1ldGVyIHdhcyBzZXQuALxJcyBhbHNvIGVtaXR0ZWQgd2hlbiB0aGUgdmFsdWUgd2FzIG5vdCBjaGFuZ2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBEHDGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnNQUnVudGltZVBhcmFtZXRlcnNLZXkAARBAU3RhdGVtZW50U3RvcmFnZQQAFQcByQE8ZHluYW1pY19wYXJhbXM6OnN0YXRlbWVudF9zdG9yYWdlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAAA8QnVsbGV0aW5TdG9yYWdlBAAZBwHFATxkeW5hbWljX3BhcmFtczo6YnVsbGV0aW5fc3RvcmFnZTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAEAOFBlb3BsZUFpcmRyb3BzBAAdBwHBATxkeW5hbWljX3BhcmFtczo6cGVvcGxlX2FpcmRyb3BzOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAgA4TGl0ZVBlcnNvbmhvb2QEACEHAcEBPGR5bmFtaWNfcGFyYW1zOjpsaXRlX3BlcnNvbmhvb2Q6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQADAAAVBxRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlNFBhcmFtZXRlcnNLZXkAATBQQWNjb3VudHNBcGlBbGxvd2FuY2UEAMgBUEFjY291bnRzQXBpQWxsb3dhbmNlAAAAVE5vdGlmaWNhdGlvbkFsbG93YW5jZQQA1AFUTm90aWZpY2F0aW9uQWxsb3dhbmNlAAYAYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAQA2AFgTGl0ZVBlcnNvblN0YXRlbWVudExpbWl0AAoAUFBlcnNvblN0YXRlbWVudExpbWl0BADcAVBQZXJzb25TdGF0ZW1lbnRMaW1pdAALAFxTdG10U3RvcmVTbG90c1BlclBlcmlvZAQA4AFcU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2QAAQBsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kBADoAWxMaXRlU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2QAAgBUU3RtdFN0b3JlQ2xlYW51cExpbWl0BADsAVRTdG10U3RvcmVDbGVhbnVwTGltaXQAAwBwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bgQA8AFwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bgAEAFBTdG10U3RvcmVHcmFjZVdpbmRvdwQA9AFQU3RtdFN0b3JlR3JhY2VXaW5kb3cABQBoTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QEAPgBaE5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kAAcAeExpdGVOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAQAAQEBeExpdGVOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAAIAGhOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbgQABQEBaE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uAAkAABkHFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZTRQYXJhbWV0ZXJzS2V5AAEYdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uBAANAQF0TG9uZ1Rlcm1TdG9yYWdlUGVyaW9kRHVyYXRpb24AAABoTG9uZ1Rlcm1TdG9yYWdlR3JhY2VXaW5kb3cEABEBAWhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdwABAHhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QEABUBAXhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QAAgBsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0BAAZAQFsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0AAMAhExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvclBlb3BsZQQAHQEBhExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvclBlb3BsZQAEAJRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JMaXRlUGVvcGxlBAApAQGUTG9uZ1Rlcm1TdG9yYWdlQWxsb3dhbmNlRm9yTGl0ZVBlb3BsZQAFAAAdBxRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPHBlb3BsZV9haXJkcm9wczRQYXJhbWV0ZXJzS2V5AAEELFByaXplU291cmNlBAAxAQEsUHJpemVTb3VyY2UAAAAAIQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxsaXRlX3BlcnNvbmhvb2Q0UGFyYW1ldGVyc0tleQABBDxSZWdpc3RyYXRpb25GZWUEAD0BATxSZWdpc3RyYXRpb25GZWUAAAAAJQcEGE9wdGlvbgQEVAEpBwEIEE5vbmUAAAAQU29tZQQAKQcAAAEAACkHDGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnNYUnVudGltZVBhcmFtZXRlcnNWYWx1ZQABEEBTdGF0ZW1lbnRTdG9yYWdlBAAtBwHRATxkeW5hbWljX3BhcmFtczo6c3RhdGVtZW50X3N0b3JhZ2U6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAAAPEJ1bGxldGluU3RvcmFnZQQAMQcBzQE8ZHluYW1pY19wYXJhbXM6OmJ1bGxldGluX3N0b3JhZ2U6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAEAOFBlb3BsZUFpcmRyb3BzBAA1BwHJATxkeW5hbWljX3BhcmFtczo6cGVvcGxlX2FpcmRyb3BzOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQACADhMaXRlUGVyc29uaG9vZAQAOQcByQE8ZHluYW1pY19wYXJhbXM6OmxpdGVfcGVyc29uaG9vZDo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAwAALQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZTxQYXJhbWV0ZXJzVmFsdWUAATBQQWNjb3VudHNBcGlBbGxvd2FuY2UEANABbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgAAAFROb3RpZmljYXRpb25BbGxvd2FuY2UEANABbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgAGAGBMaXRlUGVyc29uU3RhdGVtZW50TGltaXQEANABbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgAKAFBQZXJzb25TdGF0ZW1lbnRMaW1pdAQA0AFsU3RhdGVtZW50QWxsb3dhbmNlUGFyYW1ldGVyAAsAXFN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kBAA4AQx1MzIAAQBsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kBAA4AQx1MzIAAgBUU3RtdFN0b3JlQ2xlYW51cExpbWl0BAA4AQx1MzIAAwBwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bgQAOAEMdTMyAAQAUFN0bXRTdG9yZUdyYWNlV2luZG93BAA4AQx1MzIABQBoTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QEAAwBCHU4AAcAeExpdGVOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAQADAEIdTgACABoTm90aWZpY2F0aW9uUGVyaW9kRHVyYXRpb24EADgBDHUzMgAJAAAxBxRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2U8UGFyYW1ldGVyc1ZhbHVlAAEYdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uBAA4AQx1MzIAAABoTG9uZ1Rlcm1TdG9yYWdlR3JhY2VXaW5kb3cEADgBDHUzMgABAHhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QEAAwBCHU4AAIAbExvbmdUZXJtU3RvcmFnZUNsZWFudXBMaW1pdAQAOAEMdTMyAAMAhExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvclBlb3BsZQQAJQEBZExvbmdUZXJtU3RvcmFnZUFsbG9jYXRpb24ABACUTG9uZ1Rlcm1TdG9yYWdlQWxsb3dhbmNlRm9yTGl0ZVBlb3BsZQQAJQEBZExvbmdUZXJtU3RvcmFnZUFsbG9jYXRpb24ABQAANQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxwZW9wbGVfYWlyZHJvcHM8UGFyYW1ldGVyc1ZhbHVlAAEELFByaXplU291cmNlBAAEAVxzcF9ydW50aW1lOjpBY2NvdW50SWQzMgAAAAA5BxRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPGxpdGVfcGVyc29uaG9vZDxQYXJhbWV0ZXJzVmFsdWUAAQQ8UmVnaXN0cmF0aW9uRmVlBABFAQEcQmFsYW5jZQAAAAA9BwxsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4GHBhbGxldBRFdmVudAQEVAABBEBOZXR3b3JrU3VmZml4U2V0CAEMb2xkTQEBbFByb2R1Y3RDb250ZXh0TmV0d29ya1N1ZmZpeAABDG5ld00BAWxQcm9kdWN0Q29udGV4dE5ldHdvcmtTdWZmaXgAAARsVGhlIG5ldHdvcmsgc3VmZml4IGNoYW5nZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0QQcMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXZlbnQIBFQABEkAAXgcRW5kb3dlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATBmcmVlX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAABLhBbiBhY2NvdW50IHdhcyBjcmVhdGVkIHdpdGggc29tZSBmcmVlIGJhbGFuY2UuIER1c3RMb3N0CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAEIPQFBbiBhY2NvdW50IHdhcyByZW1vdmVkIHdob3NlIGJhbGFuY2Ugd2FzIG5vbi16ZXJvIGJ1dCBiZWxvdyBFeGlzdGVudGlhbERlcG9zaXQseHJlc3VsdGluZyBpbiBhbiBvdXRyaWdodCBsb3NzLiBUcmFuc2ZlcgwBEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAIETFRyYW5zZmVyIHN1Y2NlZWRlZC4oQmFsYW5jZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyZWVFAQEoVDo6QmFsYW5jZQADBGhBIGJhbGFuY2Ugd2FzIHNldCBieSByb290LiBSZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAQE4FNvbWUgYmFsYW5jZSB3YXMgcmVzZXJ2ZWQgKG1vdmVkIGZyb20gZnJlZSB0byByZXNlcnZlZCkuKFVucmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAFBOhTb21lIGJhbGFuY2Ugd2FzIHVucmVzZXJ2ZWQgKG1vdmVkIGZyb20gcmVzZXJ2ZWQgdG8gZnJlZSkuSFJlc2VydmVSZXBhdHJpYXRlZBABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAFIZGVzdGluYXRpb25fc3RhdHVzRQcBGFN0YXR1cwAGCE0BU29tZSBiYWxhbmNlIHdhcyBtb3ZlZCBmcm9tIHRoZSByZXNlcnZlIG9mIHRoZSBmaXJzdCBhY2NvdW50IHRvIHRoZSBzZWNvbmQgYWNjb3VudC7YRmluYWwgYXJndW1lbnQgaW5kaWNhdGVzIHRoZSBkZXN0aW5hdGlvbiBiYWxhbmNlIHR5cGUuHERlcG9zaXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAHBNhTb21lIGFtb3VudCB3YXMgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4gV2l0aGRyYXcIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAkEAQFTb21lIGFtb3VudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciBtaXNiZWhhdmlvcikuGE1pbnRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAoEnFNvbWUgYW1vdW50IHdhcyBtaW50ZWQgaW50byBhbiBhY2NvdW50LjBNaW50ZWRDcmVkaXQEARhhbW91bnRFAQEoVDo6QmFsYW5jZQALBOBTb21lIGNyZWRpdCB3YXMgYmFsYW5jZWQgYW5kIGFkZGVkIHRvIHRoZSBUb3RhbElzc3VhbmNlLhhCdXJuZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAMBJxTb21lIGFtb3VudCB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC4oQnVybmVkRGVidAQBGGFtb3VudEUBAShUOjpCYWxhbmNlAA0EzFNvbWUgZGVidCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIFRvdGFsIElzc3VhbmNlLiRTdXNwZW5kZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAOBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UADwSkU29tZSBhbW91bnQgd2FzIHJlc3RvcmVkIGludG8gYW4gYWNjb3VudC4gVXBncmFkZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAEARgQW4gYWNjb3VudCB3YXMgdXBncmFkZWQuGElzc3VlZAQBGGFtb3VudEUBAShUOjpCYWxhbmNlABEELQFUb3RhbCBpc3N1YW5jZSB3YXMgaW5jcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGNyZWRpdCB0byBiZSBiYWxhbmNlZC4kUmVzY2luZGVkBAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAEgQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAEwRgU29tZSBiYWxhbmNlIHdhcyBsb2NrZWQuIFVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAFARoU29tZSBiYWxhbmNlIHdhcyB1bmxvY2tlZC4YRnJvemVuCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAFQRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABYEYFNvbWUgYmFsYW5jZSB3YXMgdGhhd2VkLkxUb3RhbElzc3VhbmNlRm9yY2VkCAEMb2xkRQEBKFQ6OkJhbGFuY2UAAQxuZXdFAQEoVDo6QmFsYW5jZQAXBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuEEhlbGQMARhyZWFzb25JBwFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAYBIBTb21lIGJhbGFuY2Ugd2FzIHBsYWNlZCBvbiBob2xkLihCdXJuZWRIZWxkDAEYcmVhc29uSQcBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAGQSgSGVsZCBiYWxhbmNlIHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LjhUcmFuc2Zlck9uSG9sZBABGHJlYXNvbkkHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAaBBUBQSB0cmFuc2ZlciBvZiBgYW1vdW50YCBvbiBob2xkIGZyb20gYHNvdXJjZWAgdG8gYGRlc3RgIHdhcyBpbml0aWF0ZWQuPFRyYW5zZmVyQW5kSG9sZBABGHJlYXNvbkkHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAASx0cmFuc2ZlcnJlZEUBAShUOjpCYWxhbmNlABsECQFUaGUgYHRyYW5zZmVycmVkYCBiYWxhbmNlIGlzIHBsYWNlZCBvbiBob2xkIGF0IHRoZSBgZGVzdGAgYWNjb3VudC4gUmVsZWFzZWQMARhyZWFzb25JBwFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAcBJBTb21lIGJhbGFuY2Ugd2FzIHJlbGVhc2VkIGZyb20gaG9sZC4oVW5leHBlY3RlZAQAcQcBOFVuZXhwZWN0ZWRLaW5kAB0EsEFuIHVuZXhwZWN0ZWQvZGVmZW5zaXZlIGV2ZW50IHdhcyB0cmlnZ2VyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0RQcUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjNEJhbGFuY2VTdGF0dXMAAQgQRnJlZQAAACBSZXNlcnZlZAABAABJBwhkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZURSdW50aW1lSG9sZFJlYXNvbgABJBxTZXNzaW9uBABNBwFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24AFgAsUG9sa2Fkb3RYY20EAFEHAVhwYWxsZXRfeGNtOjpIb2xkUmVhc29uAB8AHE1vYlJ1bGUEAFUHAYRpbmRpdl9wYWxsZXRfbW9iX3J1bGU6OkhvbGRSZWFzb24ANAAoUHJvb2ZPZkluawQAWQcBlGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6OkhvbGRSZWFzb24ANQAQR2FtZQQAXQcBdGluZGl2X3BhbGxldF9nYW1lOjpIb2xkUmVhc29uADcAFFNjb3JlBABhBwF4aW5kaXZfcGFsbGV0X3Njb3JlOjpIb2xkUmVhc29uADgAKE5mdENyZWRpdHMEAGUHAZBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHM6OkhvbGRSZWFzb24AOQAcQ29pbmFnZQQAaQcBgGluZGl2X3BhbGxldF9jb2luYWdlOjpIb2xkUmVhc29uAEQAHEFpcmRyb3AEAG0HAYBpbmRpdl9wYWxsZXRfYWlyZHJvcDo6SG9sZFJlYXNvbgBGAABNBww4cGFsbGV0X3Nlc3Npb24YcGFsbGV0KEhvbGRSZWFzb24AAQQQS2V5cwAAAABRBwwocGFsbGV0X3hjbRhwYWxsZXQoSG9sZFJlYXNvbgABBDhBdXRob3JpemVBbGlhcwAAAABVBwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldChIb2xkUmVhc29uAAEIGFBheW91dAAAABhDcmVkaXQAAQAAWQcMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0KEhvbGRSZWFzb24AAQQoUHJvb2ZPZkluawAAAABdBwxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0KEhvbGRSZWFzb24AAQQsUGxheURlcG9zaXQAAAAAYQcMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQoSG9sZFJlYXNvbgABCBhQYXlvdXQAAAAYQ3JlZGl0AAEAAGUHDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMYcGFsbGV0KEhvbGRSZWFzb24AAQQsUGxheURlcG9zaXQAAAAAaQcMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldChIb2xkUmVhc29uAAEMHFdyYXBwZWQAAAAsTG9hZERlcG9zaXQAAQBcSW5zdGFuY2VDcmVhdGlvbkRlcG9zaXQAAgAAbQcMUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldChIb2xkUmVhc29uAAEEHEFpcmRyb3AAAAAAcQcMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQg4QmFsYW5jZVVwZGF0ZWQAAABURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEAAHUHDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQRIVHJhbnNhY3Rpb25GZWVQYWlkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZUUBATBCYWxhbmNlT2Y8VD4AAQx0aXBFAQEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHkHDGxwYWxsZXRfc2tpcF9mZWVsZXNzX3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEEKEZlZVNraXBwZWQEARhvcmlnaW7RAwHAPFQ6OlJ1bnRpbWVPcmlnaW4gYXMgT3JpZ2luVHJhaXQ+OjpQYWxsZXRzT3JpZ2luAAAEeEEgdHJhbnNhY3Rpb24gZmVlIHdhcyBza2lwcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldH0HDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFdmVudAQEVAABBDBVc2FnZUNsZWFuZWQEARhlbnRpdHlpAQFMVDo6UmVzdHJpY3RlZEVudGl0eQAABHxVc2FnZSBmb3IgYW4gZW50aXR5IGlzIGNsZWFuZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0gQcMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlRQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZHEBAShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZHEBAShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZHEBAShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZUUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAASByZXNlcnZlc7UBAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZHEBAShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIUHDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXZlbnQIBFQABEkAAQwQSGVsZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhyZWFzb25JBwFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRFAQEoVDo6QmFsYW5jZQAABMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAuIFJlbGVhc2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGHJlYXNvbkkHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudEUBAShUOjpCYWxhbmNlAAEExGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YC4YQnVybmVkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGHJlYXNvbkkHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudEUBAShUOjpCYWxhbmNlAAIEuGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGJ1cm5lZCBieSBgYW1vdW50YC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSJBwxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEV2ZW50BARUAAEMQEFzc2V0UmF0ZUNyZWF0ZWQIAShhc3NldF9raW5kcQEBMFQ6OkFzc2V0S2luZAABEHJhdGW9AQEkRml4ZWRVMTI4AAAAQEFzc2V0UmF0ZVJlbW92ZWQEAShhc3NldF9raW5kcQEBMFQ6OkFzc2V0S2luZAABAEBBc3NldFJhdGVVcGRhdGVkDAEoYXNzZXRfa2luZHEBATBUOjpBc3NldEtpbmQAAQxvbGS9AQEkRml4ZWRVMTI4AAEMbmV3vQEBJEZpeGVkVTEyOAACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldI0HDFxwYWxsZXRfYXNzZXRfdHhfcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQQ4QXNzZXRUeEZlZVBhaWQQAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlRQEBREFzc2V0QmFsYW5jZU9mPFQ+AAEMdGlwRQEBREFzc2V0QmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWRFAwFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSRBwxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0FEV2ZW50BARUAAEYLFBvb2xDcmVhdGVkEAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZASIVGhlIGFjY291bnQgdGhhdCBjcmVhdGVkIHRoZSBwb29sLgEccG9vbF9pZJUHASRUOjpQb29sSWQISQFUaGUgcG9vbCBpZCBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2wuIE5vdGUgdGhhdCB0aGUgb3JkZXIgb2YgdGhlIGFzc2V0cyBtYXkgbm90IGJl9HRoZSBzYW1lIGFzIHRoZSBvcmRlciBzcGVjaWZpZWQgaW4gdGhlIGNyZWF0ZSBwb29sIGV4dHJpbnNpYy4BMHBvb2xfYWNjb3VudAQBMFQ6OkFjY291bnRJZARsVGhlIGFjY291bnQgSUQgb2YgdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkCEEBVGhlIGlkIG9mIHRoZSBsaXF1aWRpdHkgdG9rZW5zIHRoYXQgd2lsbCBiZSBtaW50ZWQgd2hlbiBhc3NldHMgYXJlIGFkZGVkIHRvIHRoaXMUcG9vbC4ABB0BQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBDcmVhdGVQb29sYCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC44TGlxdWlkaXR5QWRkZWQcAQx3aG8EATBUOjpBY2NvdW50SWQEuFRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgdGFrZW4gZnJvbS4BHG1pbnRfdG8EATBUOjpBY2NvdW50SWQE1FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBtaW50ZWQgdG8uARxwb29sX2lklQcBJFQ6OlBvb2xJZATgVGhlIHBvb2wgaWQgb2YgdGhlIHBvb2wgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyBhZGRlZCB0by4BQGFtb3VudDFfcHJvdmlkZWRFAQEoVDo6QmFsYW5jZQTkVGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHBvb2wuAUBhbW91bnQyX3Byb3ZpZGVkRQEBKFQ6OkJhbGFuY2UE6FRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQEnFRoZSBpZCBvZiB0aGUgbHAgdG9rZW4gdGhhdCB3YXMgbWludGVkLgE8bHBfdG9rZW5fbWludGVkRQEBKFQ6OkJhbGFuY2UE0FRoZSBhbW91bnQgb2YgbHAgdG9rZW5zIHRoYXQgd2VyZSBtaW50ZWQgb2YgdGhhdCBpZC4BBCUBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBBZGRMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LkBMaXF1aWRpdHlSZW1vdmVkIAEMd2hvBAEwVDo6QWNjb3VudElkBNxUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHdlcmUgYnVybmVkIGZyb20uASx3aXRoZHJhd190bwQBMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uARxwb29sX2lklQcBJFQ6OlBvb2xJZATAVGhlIHBvb2wgaWQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyByZW1vdmVkIGZyb20uARxhbW91bnQxRQEBKFQ6OkJhbGFuY2UE9FRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgcG9vbC4BHGFtb3VudDJFAQEoVDo6QmFsYW5jZQT4VGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQEnFRoZSBpZCBvZiB0aGUgbHAgdG9rZW4gdGhhdCB3YXMgYnVybmVkLgE8bHBfdG9rZW5fYnVybmVkRQEBKFQ6OkJhbGFuY2UE0FRoZSBhbW91bnQgb2YgbHAgdG9rZW5zIHRoYXQgd2VyZSBidXJuZWQgb2YgdGhhdCBpZC4BOHdpdGhkcmF3YWxfZmVl2QQBHFBlcm1pbGwEdExpcXVpZGl0eSB3aXRoZHJhd2FsIGZlZSAoJSkuAgQxAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgUmVtb3ZlTGlxdWlkaXR5YCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC4wU3dhcEV4ZWN1dGVkFAEMd2hvBAEwVDo6QWNjb3VudElkBLRXaGljaCBhY2NvdW50IHdhcyB0aGUgaW5zdGlnYXRvciBvZiB0aGUgc3dhcC4BHHNlbmRfdG8EATBUOjpBY2NvdW50SWQEwFRoZSBhY2NvdW50IHRoYXQgdGhlIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkIHRvLgEkYW1vdW50X2luRQEBKFQ6OkJhbGFuY2UEvFRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHN3YXBwZWQuAShhbW91bnRfb3V0RQEBKFQ6OkJhbGFuY2UExFRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZWNlaXZlZC4BEHBhdGiZBwE4QmFsYW5jZVBhdGg8VD4I/FRoZSByb3V0ZSBvZiBhc3NldCBJRHMgd2l0aCBhbW91bnRzIHRoYXQgdGhlIHN3YXAgd2VudCB0aHJvdWdoLuxFLmcuIChBLCBhbW91bnRfaW4pIC0+IChEb3QsIGFtb3VudF9vdXQpIC0+IChCLCBhbW91bnRfb3V0KQMINQFBc3NldHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCBmcm9tIG9uZSB0byBhbm90aGVyLiBCb3RoIGBTd2FwRXhhY3RUb2tlbkZvclRva2VuYNhhbmQgYFN3YXBUb2tlbkZvckV4YWN0VG9rZW5gIHdpbGwgZ2VuZXJhdGUgdGhpcyBldmVudC5IU3dhcENyZWRpdEV4ZWN1dGVkDAEkYW1vdW50X2luRQEBKFQ6OkJhbGFuY2UEvFRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHN3YXBwZWQuAShhbW91bnRfb3V0RQEBKFQ6OkJhbGFuY2UExFRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZWNlaXZlZC4BEHBhdGiZBwE4QmFsYW5jZVBhdGg8VD4I/FRoZSByb3V0ZSBvZiBhc3NldCBJRHMgd2l0aCBhbW91bnRzIHRoYXQgdGhlIHN3YXAgd2VudCB0aHJvdWdoLuxFLmcuIChBLCBhbW91bnRfaW4pIC0+IChEb3QsIGFtb3VudF9vdXQpIC0+IChCLCBhbW91bnRfb3V0KQQEvEFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuHFRvdWNoZWQIARxwb29sX2lklQcBJFQ6OlBvb2xJZARMVGhlIElEIG9mIHRoZSBwb29sLgEMd2hvBAEwVDo6QWNjb3VudElkBIRUaGUgYWNjb3VudCBpbml0aWF0aW5nIHRoZSB0b3VjaC4FBA0BUG9vbCBoYXMgYmVlbiB0b3VjaGVkIGluIG9yZGVyIHRvIGZ1bGZpbGwgb3BlcmF0aW9uYWwgcmVxdWlyZW1lbnRzLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJUHAAAECHEBcQEAmQcAAAK9BQCdBww0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZUUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVz0QEBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKEHDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBRFdmVudAQEVAABKEBOZXdJbnZ1bG5lcmFibGVzBAE0aW52dWxuZXJhYmxlc10BAURWZWM8VDo6QWNjb3VudElkPgAABGxOZXcgSW52dWxuZXJhYmxlcyB3ZXJlIHNldC5ESW52dWxuZXJhYmxlQWRkZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEEdEEgbmV3IEludnVsbmVyYWJsZSB3YXMgYWRkZWQuTEludnVsbmVyYWJsZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAIEcEFuIEludnVsbmVyYWJsZSB3YXMgcmVtb3ZlZC5QTmV3RGVzaXJlZENhbmRpZGF0ZXMEAUhkZXNpcmVkX2NhbmRpZGF0ZXM4AQx1MzIAAwSkVGhlIG51bWJlciBvZiBkZXNpcmVkIGNhbmRpZGF0ZXMgd2FzIHNldC5ATmV3Q2FuZGlkYWN5Qm9uZAQBLGJvbmRfYW1vdW50RQEBMEJhbGFuY2VPZjxUPgAEBGxUaGUgY2FuZGlkYWN5IGJvbmQgd2FzIHNldC44Q2FuZGlkYXRlQWRkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4ABQRcQSBuZXcgY2FuZGlkYXRlIGpvaW5lZC5QQ2FuZGlkYXRlQm9uZFVwZGF0ZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4ABgRwQm9uZCBvZiBhIGNhbmRpZGF0ZSB1cGRhdGVkLkBDYW5kaWRhdGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAHBGBBIGNhbmRpZGF0ZSB3YXMgcmVtb3ZlZC5EQ2FuZGlkYXRlUmVwbGFjZWQMAQxvbGQEATBUOjpBY2NvdW50SWQAAQxuZXcEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0RQEBMEJhbGFuY2VPZjxUPgAIBPRBbiBhY2NvdW50IHdhcyByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgYnkgYW5vdGhlciBvbmUuaEludmFsaWRJbnZ1bG5lcmFibGVTa2lwcGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAJCFUBQW4gYWNjb3VudCB3YXMgdW5hYmxlIHRvIGJlIGFkZGVkIHRvIHRoZSBJbnZ1bG5lcmFibGVzIGJlY2F1c2UgdGhleSBkaWQgbm90IGhhdmUga2V5c8hyZWdpc3RlcmVkLiBPdGhlciBJbnZ1bG5lcmFibGVzIG1heSBoYXZlIGJlZW4gc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKUHDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXZlbnQEBFQAARAoTmV3U2Vzc2lvbgQBNHNlc3Npb25faW5kZXg4ATBTZXNzaW9uSW5kZXgAAAg5AU5ldyBzZXNzaW9uIGhhcyBoYXBwZW5lZC4gTm90ZSB0aGF0IHRoZSBhcmd1bWVudCBpcyB0aGUgc2Vzc2lvbiBpbmRleCwgbm90IHRoZZxibG9jayBudW1iZXIgYXMgdGhlIHR5cGUgbWlnaHQgc3VnZ2VzdC4kTmV3UXVldWVkAAEISQFUaGUgYE5ld1Nlc3Npb25gIGV2ZW50IGluIHRoZSBjdXJyZW50IGJsb2NrIGFsc28gaW1wbGllcyBhIG5ldyB2YWxpZGF0b3Igc2V0IHRvIGJlHHF1ZXVlZC5EVmFsaWRhdG9yRGlzYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAACBHBWYWxpZGF0b3IgaGFzIGJlZW4gZGlzYWJsZWQuSFZhbGlkYXRvclJlZW5hYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAMEeFZhbGlkYXRvciBoYXMgYmVlbiByZS1lbmFibGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKkHDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABBDxYY21wTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2gIARxYY21IYXNoAAAEwEFuIEhSTVAgbWVzc2FnZSB3YXMgc2VudCB0byBhIHNpYmxpbmcgcGFyYWNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldK0HDChwYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABdCRBdHRlbXB0ZWQEARxvdXRjb21lsQcBUHhjbTo6bGF0ZXN0OjpPdXRjb21lAAAEqEV4ZWN1dGlvbiBvZiBhbiBYQ00gbWVzc2FnZSB3YXMgYXR0ZW1wdGVkLhBTZW50EAEYb3JpZ2lucQEBIExvY2F0aW9uAAEsZGVzdGluYXRpb25xAQEgTG9jYXRpb24AARxtZXNzYWdlAQMBHFhjbTwoKT4AAShtZXNzYWdlX2lkCAEcWGNtSGFzaAABBGBBbiBYQ00gbWVzc2FnZSB3YXMgc2VudC4oU2VuZEZhaWxlZBABGG9yaWdpbnEBASBMb2NhdGlvbgABLGRlc3RpbmF0aW9ucQEBIExvY2F0aW9uAAEUZXJyb3K5BwEkU2VuZEVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAgR4QW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHNlbmQuPFByb2Nlc3NYY21FcnJvcgwBGG9yaWdpbnEBASBMb2NhdGlvbgABFGVycm9yMQMBIFhjbUVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAwSEQW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHByb2Nlc3MuSFVuZXhwZWN0ZWRSZXNwb25zZQgBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAAEDFkBUXVlcnkgcmVzcG9uc2UgcmVjZWl2ZWQgd2hpY2ggZG9lcyBub3QgbWF0Y2ggYSByZWdpc3RlcmVkIHF1ZXJ5LiBUaGlzIG1heSBiZSBiZWNhdXNlIGFVAW1hdGNoaW5nIHF1ZXJ5IHdhcyBuZXZlciByZWdpc3RlcmVkLCBpdCBtYXkgYmUgYmVjYXVzZSBpdCBpcyBhIGR1cGxpY2F0ZSByZXNwb25zZSwgb3JwYmVjYXVzZSB0aGUgcXVlcnkgdGltZWQgb3V0LjRSZXNwb25zZVJlYWR5CAEgcXVlcnlfaWQoARxRdWVyeUlkAAEgcmVzcG9uc2UlAwEgUmVzcG9uc2UABQhdAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBpcyByZWFkeSBmb3IgdGFraW5nIHdpdGggYHRha2VfcmVzcG9uc2VgLiBUaGVyZSBpc4BubyByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBjYWxsLiBOb3RpZmllZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAYIWQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGhhc6hiZWVuIGRpc3BhdGNoZWQgYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS5ATm90aWZ5T3ZlcndlaWdodBQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAE0YWN0dWFsX3dlaWdodHkCARhXZWlnaHQAAUxtYXhfYnVkZ2V0ZWRfd2VpZ2h0eQIBGFdlaWdodAAHDEkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvblkBY291bGQgbm90IGJlIGRpc3BhdGNoZWQgYmVjYXVzZSB0aGUgZGlzcGF0Y2ggd2VpZ2h0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSB3ZWlnaHTkb3JpZ2luYWxseSBidWRnZXRlZCBieSB0aGlzIHJ1bnRpbWUgZm9yIHRoZSBxdWVyeSByZXN1bHQuTE5vdGlmeURpc3BhdGNoRXJyb3IMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAICFUBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZXJlIHdhcyBhIGdlbmVyYWwgZXJyb3Igd2l0aIhkaXNwYXRjaGluZyB0aGUgbm90aWZpY2F0aW9uIGNhbGwuSE5vdGlmeURlY29kZUZhaWxlZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAkMUQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIGRpc3BhdGNoIHdhcyB1bmFibGUgdG8gYmVZAWRlY29kZWQgaW50byBhIGBDYWxsYDsgdGhpcyBtaWdodCBiZSBkdWUgdG8gZGlzcGF0Y2ggZnVuY3Rpb24gaGF2aW5nIGEgc2lnbmF0dXJlIHdoaWNolGlzIG5vdCBgKG9yaWdpbiwgUXVlcnlJZCwgUmVzcG9uc2UpYC5ASW52YWxpZFJlc3BvbmRlcgwBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABRGV4cGVjdGVkX2xvY2F0aW9uRQMBQE9wdGlvbjxMb2NhdGlvbj4ACgxZAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgb3JpZ2luIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzVQFub3QgbWF0Y2ggdGhhdCBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlxJbnZhbGlkUmVzcG9uZGVyVmVyc2lvbggBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAALHFEBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBvcmlnaW4gbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjRSZXNwb25zZVRha2VuBAEgcXVlcnlfaWQoARxRdWVyeUlkAAwEyFJlY2VpdmVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlYWQgYW5kIHJlbW92ZWQuNEFzc2V0c1RyYXBwZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbnEBASBMb2NhdGlvbgABGGFzc2V0c30DATxWZXJzaW9uZWRBc3NldHMADQS4U29tZSBhc3NldHMgaGF2ZSBiZWVuIHBsYWNlZCBpbiBhbiBhc3NldCB0cmFwLlRWZXJzaW9uQ2hhbmdlTm90aWZpZWQQASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABGHJlc3VsdDgBKFhjbVZlcnNpb24AARBjb3N0DQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoAA4MJQFBbiBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIG1lc3NhZ2UgaGFzIGJlZW4gYXR0ZW1wdGVkIHRvIGJlIHNlbnQuAOBUaGUgY29zdCBvZiBzZW5kaW5nIGl0IChib3JuZSBieSB0aGUgY2hhaW4pIGlzIGluY2x1ZGVkLlxTdXBwb3J0ZWRWZXJzaW9uQ2hhbmdlZAgBIGxvY2F0aW9ucQEBIExvY2F0aW9uAAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ADwg5AVRoZSBzdXBwb3J0ZWQgdmVyc2lvbiBvZiBhIGxvY2F0aW9uIGhhcyBiZWVuIGNoYW5nZWQuIFRoaXMgbWlnaHQgYmUgdGhyb3VnaCBhbsBhdXRvbWF0aWMgbm90aWZpY2F0aW9uIG9yIGEgbWFudWFsIGludGVydmVudGlvbi5QTm90aWZ5VGFyZ2V0U2VuZEZhaWwMASBsb2NhdGlvbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABFGVycm9yMQMBIFhjbUVycm9yABAIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcnxzZW5kaW5nIHRoZSBub3RpZmljYXRpb24gdG8gaXQuZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwIASBsb2NhdGlvbu0BAURWZXJzaW9uZWRMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAARCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3K0bWlncmF0aW5nIHRoZSBsb2NhdGlvbiB0byBvdXIgbmV3IFhDTSBmb3JtYXQuVEludmFsaWRRdWVyaWVyVmVyc2lvbggBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAASHFUBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBxdWVyaWVyIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC44SW52YWxpZFF1ZXJpZXIQARhvcmlnaW5xAQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAUBleHBlY3RlZF9xdWVyaWVycQEBIExvY2F0aW9uAAFQbWF5YmVfYWN0dWFsX3F1ZXJpZXJFAwFAT3B0aW9uPExvY2F0aW9uPgATDF0BRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBxdWVyaWVyIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzUQFub3QgbWF0Y2ggdGhlIGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uUFZlcnNpb25Ob3RpZnlTdGFydGVkDAEsZGVzdGluYXRpb25xAQEgTG9jYXRpb24AARBjb3N0DQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABQIWQFBIHJlbW90ZSBoYXMgcmVxdWVzdGVkIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gZnJvbSB1cyBhbmQgd2UgaGF2ZSBob25vcmVkIGl0Lh0BQSB2ZXJzaW9uIGluZm9ybWF0aW9uIG1lc3NhZ2UgaXMgc2VudCB0byB0aGVtIGFuZCBpdHMgY29zdCBpcyBpbmNsdWRlZC5YVmVyc2lvbk5vdGlmeVJlcXVlc3RlZAwBLGRlc3RpbmF0aW9ucQEBIExvY2F0aW9uAAEQY29zdA0DARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAVBD0BV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzZW5kIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb25zLmBWZXJzaW9uTm90aWZ5VW5yZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABEGNvc3QNAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFgglAVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc3RvcHMgc2VuZGluZyB1cyBYQ00gdmVyc2lvbiBjaGFuZ2U4bm90aWZpY2F0aW9ucy4gRmVlc1BhaWQIARhwYXlpbmdxAQEgTG9jYXRpb24AARBmZWVzDQMBGEFzc2V0cwAXBDEBRmVlcyB3ZXJlIHBhaWQgZnJvbSBhIGxvY2F0aW9uIGZvciBhbiBvcGVyYXRpb24gKG9mdGVuIGZvciB1c2luZyBgU2VuZFhjbWApLjRBc3NldHNDbGFpbWVkDAEQaGFzaDwBEEgyNTYAARhvcmlnaW5xAQEgTG9jYXRpb24AARhhc3NldHN9AwE8VmVyc2lvbmVkQXNzZXRzABgEwFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBjbGFpbWVkIGZyb20gYW4gYXNzZXQgdHJhcGBWZXJzaW9uTWlncmF0aW9uRmluaXNoZWQEARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAZBIRBIFhDTSB2ZXJzaW9uIG1pZ3JhdGlvbiBmaW5pc2hlZC48QWxpYXNBdXRob3JpemVkDAEcYWxpYXNlcnEBASBMb2NhdGlvbgABGHRhcmdldHEBASBMb2NhdGlvbgABGGV4cGlyebUDASxPcHRpb248dTY0PgAaCF0BQW4gYGFsaWFzZXJgIGxvY2F0aW9uIHdhcyBhdXRob3JpemVkIGJ5IGB0YXJnZXRgIHRvIGFsaWFzIGl0LCBhdXRob3JpemF0aW9uIHZhbGlkIHVudGlsWGBleHBpcnlgIGJsb2NrIG51bWJlci5kQWxpYXNBdXRob3JpemF0aW9uUmVtb3ZlZAgBHGFsaWFzZXJxAQEgTG9jYXRpb24AARh0YXJnZXRxAQEgTG9jYXRpb24AGwTMYHRhcmdldGAgcmVtb3ZlZCBhbGlhcyBhdXRob3JpemF0aW9uIGZvciBgYWxpYXNlcmAucEFsaWFzZXNBdXRob3JpemF0aW9uc1JlbW92ZWQEARh0YXJnZXRxAQEgTG9jYXRpb24AHASoYHRhcmdldGAgcmVtb3ZlZCBhbGwgYWxpYXMgYXV0aG9yaXphdGlvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0sQcQLHN0YWdpbmdfeGNtCHY1GHRyYWl0cxxPdXRjb21lAAEMIENvbXBsZXRlBAEQdXNlZHkCARhXZWlnaHQAAAAoSW5jb21wbGV0ZQgBEHVzZWR5AgEYV2VpZ2h0AAEUZXJyb3K1BwFASW5zdHJ1Y3Rpb25FcnJvcgABABRFcnJvcgQAtQcBQEluc3RydWN0aW9uRXJyb3IAAgAAtQcQLHN0YWdpbmdfeGNtCHY1GHRyYWl0c0BJbnN0cnVjdGlvbkVycm9yAAAIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvcjEDARRFcnJvcgAAuQcQDHhjbQh2Mxh0cmFpdHMkU2VuZEVycm9yAAEcNE5vdEFwcGxpY2FibGUAAAAkVHJhbnNwb3J0AAEAKFVucm91dGFibGUAAgBYRGVzdGluYXRpb25VbnN1cHBvcnRlZAADAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUABAA8TWlzc2luZ0FyZ3VtZW50AAUAEEZlZXMABgAAvQcMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAQw0SW52YWxpZEZvcm1hdAQACAEgW3U4OyAzMl0AAAiARG93bndhcmQgbWVzc2FnZSBpcyBpbnZhbGlkIFhDTS4gXFsgaWQgXF1IVW5zdXBwb3J0ZWRWZXJzaW9uBAAIASBbdTg7IDMyXQABCLxEb3dud2FyZCBtZXNzYWdlIGlzIHVuc3VwcG9ydGVkIHZlcnNpb24gb2YgWENNLiBcWyBpZCBcXUBFeGVjdXRlZERvd253YXJkCAAIASBbdTg7IDMyXQAAsQcBHE91dGNvbWUAAgjERG93bndhcmQgbWVzc2FnZSBleGVjdXRlZCB3aXRoIHRoZSBnaXZlbiBvdXRjb21lLkRcWyBpZCwgb3V0Y29tZSBcXQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMEHDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAARBAUHJvY2Vzc2luZ0ZhaWxlZAwBCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2luwQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEUZXJyb3LFBwFMUHJvY2Vzc01lc3NhZ2VFcnJvchBgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuAEkBVGhpcyBlcnJvciBpcyBwcmV0dHkgb3BhcXVlLiBNb3JlIGZpbmUtZ3JhaW5lZCBlcnJvcnMgbmVlZCB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgAEVQFNZXNzYWdlIGRpc2NhcmRlZCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGBNZXNzYWdlUHJvY2Vzc29yYCAodXN1YWxseSBhIGZvcm1hdCBlcnJvcikuJFByb2Nlc3NlZBABCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2luwQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEsd2VpZ2h0X3VzZWR5AgEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3NZAQEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAgBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7BAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4OAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXg4ARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW7BAwFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleDgBJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMUHEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEAHkCARhXZWlnaHQAAwAUWWllbGQABABEU3RhY2tMaW1pdFJlYWNoZWQABQAAyQcMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvcvEGATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvcvEGATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHTNBwE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvcvEGATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldM0HBBhSZXN1bHQIBFQBEARFAfEGAQgIT2sEABAAAAAADEVycgQA8QYAAAEAANEHDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEV2ZW50BARUAAEULE5ld011bHRpc2lnDAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAAABIxBIG5ldyBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZ3VuLkBNdWx0aXNpZ0FwcHJvdmFsEAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50OQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEEyEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHNvbWVvbmUuQE11bHRpc2lnRXhlY3V0ZWQUASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQ5BAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAARhyZXN1bHTNBwE4RGlzcGF0Y2hSZXN1bHQAAgScQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gZXhlY3V0ZWQuRE11bHRpc2lnQ2FuY2VsbGVkEAEoY2FuY2VsbGluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludDkEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAADBKBBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEsb2xkX2RlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAQE8FRoZSBkZXBvc2l0IGZvciBhIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkL3Bva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNUHDCxwYWxsZXRfc3VkbxhwYWxsZXQURXZlbnQEBFQAARAUU3VkaWQEASxzdWRvX3Jlc3VsdM0HAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAARwQSBzdWRvIGNhbGwganVzdCB0b29rIHBsYWNlLihLZXlDaGFuZ2VkCAEMb2xkNQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+BLRUaGUgb2xkIHN1ZG8ga2V5IChpZiBvbmUgd2FzIHByZXZpb3VzbHkgc2V0KS4BDG5ldwQBMFQ6OkFjY291bnRJZASIVGhlIG5ldyBzdWRvIGtleSAoaWYgb25lIHdhcyBzZXQpLgEEeFRoZSBzdWRvIGtleSBoYXMgYmVlbiB1cGRhdGVkLihLZXlSZW1vdmVkAAIEgFRoZSBrZXkgd2FzIHBlcm1hbmVudGx5IHJlbW92ZWQuKFN1ZG9Bc0RvbmUEASxzdWRvX3Jlc3VsdM0HAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAwTIQSBbc3Vkb19hc10oUGFsbGV0OjpzdWRvX2FzKSBjYWxsIGp1c3QgdG9vayBwbGFjZS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTZBwwwcGFsbGV0X3Byb3h5GHBhbGxldBRFdmVudAQEVAABHDRQcm94eUV4ZWN1dGVkBAEYcmVzdWx0zQcBOERpc3BhdGNoUmVzdWx0AAAEvEEgcHJveHkgd2FzIGV4ZWN1dGVkIGNvcnJlY3RseSwgd2l0aCB0aGUgZ2l2ZW4uLFB1cmVDcmVhdGVkGAEQcHVyZQQBMFQ6OkFjY291bnRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGVJBAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjNAwEMdTE2AAEIYXQ4AURCbG9ja051bWJlckZvcjxUPgABPGV4dHJpbnNpY19pbmRleDgBDHUzMgABCNxBIHB1cmUgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5ldyBwcm94eSB3aXRoIGdpdmVukGRpc2FtYmlndWF0aW9uIGluZGV4IGFuZCBwcm94eSB0eXBlLihQdXJlS2lsbGVkEAEQcHVyZQQBMFQ6OkFjY291bnRJZAABHHNwYXduZXIEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlSQQBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV4zQMBDHUxNgACBJxBIHB1cmUgcHJveHkgd2FzIGtpbGxlZCBieSBpdHMgc3Bhd25lci4kQW5ub3VuY2VkDAEQcmVhbAQBMFQ6OkFjY291bnRJZAABFHByb3h5BAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgADBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZUkEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAQESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlSQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABQRQQSBwcm94eSB3YXMgcmVtb3ZlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEQa2luZN0HASxEZXBvc2l0S2luZAABLG9sZF9kZXBvc2l0RQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0RQEBMEJhbGFuY2VPZjxUPgAGBAkBQSBkZXBvc2l0IHN0b3JlZCBmb3IgcHJveGllcyBvciBhbm5vdW5jZW1lbnRzIHdhcyBwb2tlZCAvIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV03QcIMHBhbGxldF9wcm94eSxEZXBvc2l0S2luZAABCBxQcm94aWVzAAAANEFubm91bmNlbWVudHMAAQAA4QcMTGluZGl2X3BhbGxldF9wZW9wbGUYcGFsbGV0FEV2ZW50BARUAAEoUFBlcnNvbmhvb2RSZWNvZ25pemVkCAEMd2hvKAEoUGVyc29uYWxJZAABDGtleQgBLE1lbWJlck9mPFQ+AAAE+EFuIGluZGl2aWR1YWwgaGFzIGhhZCB0aGVpciBwZXJzb25ob29kIHJlY29nbmlzZWQgYW5kIGluZGV4ZWQuQFBlcnNvbk9uYm9hcmRpbmcIAQx3aG8oAShQZXJzb25hbElkAAEMa2V5CAEsTWVtYmVyT2Y8VD4AAQQRAUFuIGluZGl2aWR1YWwgaGFzIGhhZCB0aGVpciBwZXJzb25ob29kIHJlY29nbmlzZWQgYWdhaW4gYW5kIGluZGV4ZWQuPEFsaWFzRGlzcGF0Y2hlZAgBFGFsaWFz6QMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAgSUQSBjYWxsIHdhcyBkaXNwYXRjaGVkIHVuZGVyIGFuIGFsaWFzLjxBbGlhc0FjY291bnRTZXQIARRhbGlhc+kDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEvEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgc2V0IG9yIHVwZGF0ZWQuREFsaWFzQWNjb3VudFVuc2V0CAEUYWxpYXPpAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBKBBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIHJlbW92ZWQuUFBlcnNvbmFsSWRBY2NvdW50U2V0CAEMd2hvKAEoUGVyc29uYWxJZAABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQTQQSBwZXJzb25hbCBJRC10by1hY2NvdW50IG1hcHBpbmcgd2FzIHNldCBvciB1cGRhdGVkLlhQZXJzb25hbElkQWNjb3VudFVuc2V0CAEMd2hvKAEoUGVyc29uYWxJZAABHGFjY291bnQEATBUOjpBY2NvdW50SWQABgS0QSBwZXJzb25hbCBJRC10by1hY2NvdW50IG1hcHBpbmcgd2FzIHJlbW92ZWQuRENvbGxlY3Rpb25DcmVhdGVkAAcEiFRoZSBwZW9wbGUgY29sbGVjdGlvbiB3YXMgY3JlYXRlZC5kRm9yY2VQZXJzb25ob29kUmVjb2duaXplZAQBGHBlb3BsZVEEAUBWZWM8TWVtYmVyT2Y8VD4+AAgEtFBlcnNvbmhvb2Qgd2FzIGZvcmNlZnVsbHkgcmVjb2duaXplZCBieSByb290LjhBbGlhc0NsZWFuZWRVcAgBFGFsaWFz6QMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQACQSsQW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyBjbGVhbmVkIHVwLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOUHDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0FEV2ZW50BARUAAFELENhc2VDcmVhdGVkBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleASAVGhlIGNhc2UgaW5kZXggdGhhdCB3YXMgY3JlYXRlZC4ABGBBIGNhc2UgaGFzIGJlZW4gY3JlYXRlZC4gQ2FsbGJhY2sEARhyZXN1bHTNBwE4RGlzcGF0Y2hSZXN1bHQEbFRoZSByZXN1bHQgb2YgdGhlIGNhbGxiYWNrLgEEnEEgY2FsbGJhY2sgd2FzIHRyaWdnZXJlZCBmcm9tIG1vYi1ydWxlLjRDYWxsYmFja0Vycm9yCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleASkVGhlIGNhc2Ugd2hvc2UgY2FsbGJhY2sgZmFpbGVkIHRvIGRlY29kZS4BHHRyaWdnZXLpBwE8Q2FsbGJhY2tUcmlnZ2VyBBEBVGhlIG1vYi1ydWxlIGV4dHJpbnNpYyBjYWxsIHdoaWNoIGF0dGVtcHRlZCB0byB0cmlnZ2VyIHRoZSBjYWxsYmFjay4CBAEBVGhlcmUgd2FzIGEgY29kZWMgZXJyb3Igd2hlbiB0cnlpbmcgdG8gZGVjb2RlIHRoZSBjYWxsYmFjayBjYWxsLihDYXNlQ2xvc2VkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAR8VGhlIGNhc2UgaW5kZXggdGhhdCB3YXMgY2xvc2VkLgEcdmVyZGljdGEEASRKdWRnZW1lbnQEfFRoZSB2ZXJkaWN0IG9mIHRoZSBjbG9zZWQgY2FzZS4DBMxUaGUgY2FzZSBoYXMgYmVlbiBjbG9zZWQgd2l0aCB0aGUgZm9sbG93aW5nIHJlc3VsdC4UVm90ZWQMAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BEhUaGUgY2FzZSB2b3RlZCBvbi4BFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgEcb3BpbmlvbmEEASRKdWRnZW1lbnQEZFRoZSBvcGluaW9uIG9mIHRoZSB2b3Rlci4EBIRBIHZvdGUgaGFzIGJlZW4gcGxhY2VkIG9uIGEgY2FzZS4sVm90ZUNsZWFuZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BEhUaGUgY2FzZSB2b3RlZCBvbi4BFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgUEYEEgdm90ZSBoYXMgYmVlbiBjbGVhbmVkLixDYXNlUmVtb3ZlZAQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgYEYEEgY2FzZSBoYXMgYmVlbiByZW1vdmVkLjhDYXNlSW50ZXJ2ZW5lZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgEiFRoZSBjYXNlIHRoYXQgaGFzIGJlZW4gaW50ZXJ2ZW5lZC4BHHZlcmRpY3RhBAEkSnVkZ2VtZW50BIBUaGUgdmVyZGljdCBhcHBsaWVkIHRvIHRoZSBjYXNlLgcEbEEgY2FzZSBoYXMgYmVlbiBpbnRlcnZlbmVkLjBWb3Rlc0NsYWltZWQIARR2b3RlcggBFEFsaWFzBFRUaGUgYWxpYXMgdGhhdCB2b3RlZC4BMGNhc2VfaW5kaWNlc2kEAThWZWM8Q2FzZUluZGV4PgSIVGhlIGNhc2UgdGhhdCBoYXMgYmVlbiBpbnRlcnZlbmVkLggEkENyZWRpdHMgZm9yIHZvdGVzIGhhdmUgYmVlbiBjbGFpbWVkLjBSZXdhcmRQYXlvdXQMARR2b3RlcggBFEFsaWFzBHxUaGUgYWxpYXMgdGhhdCBlYXJuZWQgYSByZXdhcmQuASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAScVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSBwYXlvdXQuARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+BJxUaGUgcGF5b3V0IGFtb3VudCB0aGF0IHdhcyB0cmFuc2ZlcnJlZC4JBIBBIHJld2FyZCB0aGF0IGhhcyBiZWVuIHBhaWQgb3V0LkhQYXlvdXRSb3VuZFN0YXJ0ZWQMARRyb3VuZDgBKFJvdW5kSW5kZXgEiFRoZSBpbmRleCBvZiB0aGUgbmV3IHBheW91dCByb3VuZC4BPGluaXRpYWxfYmFsYW5jZUUBATBCYWxhbmNlT2Y8VD4EsFRoZSBpbml0aWFsIGJhbGFuY2UgYWxsb2NhdGVkIGZvciB0aGUgcm91bmQuATB0b3RhbF9wb2ludHMoASRWb3RlQ291bnQExFRvdGFsIGFjY3VtdWxhdGVkIHBvaW50cyBjbGFpbWFibGUgaW4gdGhpcyByb3VuZC4KBJBBIG5ldyBwYXlvdXQgcm91bmQgaGFzIGJlZW4gc3RhcnRlZC5UUGF5b3V0Um91bmRzU2NoZWR1bGVkDAEYYW1vdW50RQEBMEJhbGFuY2VPZjxUPgR4VGhlIGFtb3VudCBvZiBmdW5kcyBwZXIgcm91bmQuARRjb3VudDgBDHUzMgR8VGhlIG51bWJlciBvZiByb3VuZHMgc2NoZWR1bGVkLgEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4EuFRoZSBtaW5pbXVtIHBlcmlvZCAoaW4gYmxvY2tzKSBiZXR3ZWVuIHJvdW5kcy4LBIhQYXlvdXQgcm91bmRzIGhhdmUgYmVlbiBzY2hlZHVsZWQuVFBheW91dFNjaGVkdWxlUmVtb3ZlZAQBFGluZGV4OAEMdTMyBIhUaGUgaW5kZXggb2YgdGhlIHJlbW92ZWQgc2NoZWR1bGUuDASMQSBwYXlvdXQgc2NoZWR1bGUgaGFzIGJlZW4gcmVtb3ZlZC40Q3JlZGl0Q2xhaW1lZAgBFHZvdGVyCAEUQWxpYXMEjFRoZSBhbGlhcyBvZiB0aGUgdm90ZXIgd2hvIGNsYWltZWQuARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+BHRUaGUgYW1vdW50IG9mIGNyZWRpdCBjbGFpbWVkLg0E1ENyZWRpdCBoYXMgYmVlbiBjbGFpbWVkIGZyb20gdGhlIHBheW91dCBkaXN0cmlidXRpb24uNFBvaW50c0NsZWFuZWQIARRyb3VuZDgBKFJvdW5kSW5kZXgEvFRoZSByb3VuZCBpbmRleCBmcm9tIHdoaWNoIHBvaW50cyB3ZXJlIHJlbW92ZWQuARR2b3RlcggBFEFsaWFzBJBUaGUgYWxpYXMgd2hvc2UgcG9pbnRzIHdlcmUgcmVtb3ZlZC4OBJhTdGFsZSB2b3RpbmcgcG9pbnRzIGhhdmUgYmVlbiBjbGVhbmVkLixDYXNlVG91Y2hlZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgEaFRoZSBjYXNlIHRoYXQgd2FzIHRvdWNoZWQuARxyaXBlbmVkWQEBEGJvb2wEpFdoZXRoZXIgdGhlIGNhc2Ugd2FzIHJpcGVuZWQgYXMgYSByZXN1bHQuDwScQSBjYXNlIGhhcyBiZWVuIHRvdWNoZWQgKHJlLWV2YWx1YXRlZCkuUFZvdGluZ1BlbmFsdHlDbGVhcmVkBAEMd2hvCAEUQWxpYXMEkFRoZSBhbGlhcyB3aG9zZSBwZW5hbHR5IHdhcyBjbGVhcmVkLhAEiEEgdm90aW5nIHBlbmFsdHkgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTpBwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldDxDYWxsYmFja1RyaWdnZXIAAQgkQ2xvc2VDYXNlAAAAJEludGVydmVuZQABAADtBwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQURXZlbnQEBFQAAVxAQ2FuZGlkYXRlQXBwbGllZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAASMQ2FuZGlkYXRlIGFwcGxpZWQgZm9yIHZlcmlmaWNhdGlvbi5ISnVkZ2VtZW50UmVxdWVzdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBAUBQ2FuZGlkYXRlIG9wZW5lZCBhIE1vYiBSdWxlIGNhc2UgZm9yIHRoZWlyIHZlcmlmaWNhdGlvbiBldmlkZW5jZS5ESnVkZ2VtZW50UHJvdmlkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEkanVkZ2VtZW50YQQBJEp1ZGdlbWVudAACBNhPcmFjbGUgaGFzIHByb3ZpZGVkIHRoZSBqdWRnZW1lbnQgZm9yIGEgTW9iIFJ1bGUgY2FzZS4wUmV0cnlHcmFudGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABIGZhaWx1cmVzOAEMdTMyAAMIRQFBIGNhbmRpZGF0ZSBoYXMgYmVlbiBncmFudGVkIGEgZnJlZSByZXRyeSBhdHRlbXB0IGFmdGVyIGEgZmFpbHVyZSB0byB2ZXJpZnkgdGhlaXIkZXZpZGVuY2UuQFBlcnNvblJlZ2lzdGVyZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEscGVyc29uYWxfaWQoAShQZXJzb25hbElkAAQEgFJlZ2lzdGVyIGFuIGFjY291bnQgYXMgYSBwZXJzb24uRENhbmRpZGF0ZVJlZmVycmVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEgcmVmZXJyZWQEATBUOjpBY2NvdW50SWQABQRsUGVyc29uIHJlZmVycmVkIGFuIGFjY291bnQuIFJlcm9sbGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAGBLRFbnRyb3B5IGZvciBhIGNhbmRpZGF0ZSBjaGFuZ2VkIGFmdGVyIGV4cGlyeS48RGVzaWduQ29tbWl0dGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABLHJlc2VydmVkX2lkKAEoUGVyc29uYWxJZAAHBJRDYW5kaWRhdGUgY29tbWl0dGVkIHRvIGFuIGluayBkZXNpZ24uOEZ1bGx5QWxsb2NhdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAIBLxTdG9yYWdlIGZ1bGx5IGFsbG9jYXRlZCBmb3IgYSBjb21taXR0ZWQgZGVzaWduLiBUaW1lZE91dAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQSAQ2FuZGlkYXRlIHJlbW92ZWQgYWZ0ZXIgdGltZW91dC4kRmxha2VkT3V0BAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAKBHhVbmNvbW1pdHRlZCBjYW5kaWRhdGUgcmVtb3ZlZC44VGlja2V0UmVmZXJyZWQIASByZWZlcnJlcigBKFBlcnNvbmFsSWQAARh0aWNrZXQEASRUOjpUaWNrZXQACwTsUmVmZXJyYWwgdGlja2V0IGNyZWF0ZWQgYnkgc3RvcmluZyB0aGUgcHVibGljIGtleSBvbiBjaGFpbi48VGlja2V0Q2FuY2VsbGVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEYdGlja2V0BAEkVDo6VGlja2V0AAwEGQFSZWZlcnJhbCB0aWNrZXQgcmVtb3ZlZCBieSByZW1vdmluZyB0aGUgcHVibGljIGtleSBmcm9tIGNoYWluIHN0b3JhZ2UuNFRpY2tldEFwcGxpZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEgcmVmZXJyZXIoAShQZXJzb25hbElkAA0EqENhbmRpZGF0ZSBhcHBsaWVkIHVzaW5nIGEgcmVmZXJyYWwgdGlja2V0LixGYW1pbHlBZGRlZAwBFGluZGV4zQMBLEZhbWlseUluZGV4AAEQa2luZIEEAShGYW1pbHlLaW5kAAEIaWQIASBGYW1pbHlJZAAOBFBEZXNpZ24gZmFtaWx5IGFkZGVkLkRBbGxJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwS4QWxsIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLkhTb21lSW52aXRlc1JlbW92ZWQEARxpbnZpdGVyBAEwVDo6QWNjb3VudElkABAEDQFTb21lIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLCBzb21lIGFyZSByZW1haW5pbmcuXEludml0ZWRDYW5kaWRhdGVBcHBsaWVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAARBJhDYW5kaWRhdGUgYXBwbGllZCB1c2luZyBhbiBpbnZpdGF0aW9uLmRSZWZlcnJhbFZvdWNoZXJSZWdpc3RlcmVkBAEgcmVmZXJyZXIoAShQZXJzb25hbElkABIEwEEgcmVmZXJyZXIncyByZXdhcmQgdm91Y2hlciBoYXMgYmVlbiByZWdpc3RlcmVkLjhJbnZpdGVzR3JhbnRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgATBKBJbnZpdGVzIGhhdmUgYmVlbiBncmFudGVkIHRvIGFuIGFjY291bnQuPEludml0ZVRpY2tldFNldAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFAR4QW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFQSQQW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBjYW5jZWxsZWQuQENvbmZpZ3VyYXRpb25TZXQEARhjb25maWeFBAF8Q29uZmlnUmVjb3JkPEJsb2NrTnVtYmVyRm9yPFQ+PgAWBKhUaGUgcGFsbGV0IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTxBwxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0FEV2ZW50BARUAAFQHE5ld0dhbWUMAURyZWdpc3RyYXRpb25fZW5kczgBDHUzMgABJGdhbWVfZGF0ZTgBDHUzMgABLHJlcG9ydF9lbmRzOAEMdTMyAAAEXEEgbmV3IGdhbWUgaXMgc3RhcnRpbmcuJEdhbWVFbmRlZAQBFGluZGV4OAEcR2FtZUlkeAABBKBUaGUgZ2FtZSBhbmQgaXRzIHBvc3QtcHJvY2VzcyBoYXMgZW5kZWQuNEdhbWVQaGFzZXNTZXQEARhwaGFzZXPhBAFMUGhhc2VEdXJhdGlvblZhbHVlcwACBBkBVGhlIGdhbWUgcGhhc2UgZHVyYXRpb25zIHdlcmUgb3ZlcnJpZGRlbiBieSBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdLiBTaWduZWRVcAQBDHdobxEFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgADBIBBIHBsYXllciBzaWduZWQgdXAgZm9yIHRoZSBnYW1lLjxSZXBvcnRTdWJtaXR0ZWQIAQx3aG8RBQF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4AAShnYW1lX2luZGV4OAEcR2FtZUlkeAAEBIBBIHBsYXllciBzdWJtaXR0ZWQgdGhlaXIgcmVwb3J0LihPZmZib2FyZGVkBAEMd2hvEQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAUEiEEgcGxheWVyIG9mZmJvYXJkZWQgZnJvbSB0aGUgZ2FtZS4kS2lja2VkT3V0BAEYcGxheWVyEQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAYEiEFuIGFyY2hpdmVkIHBsYXllciB3YXMga2lja2VkIG91dC44SW52aXRlc0dyYW50ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIABwSMSW52aXRlcyB3ZXJlIGdyYW50ZWQgdG8gYW4gYWNjb3VudC48SW52aXRlVGlja2V0U2V0BAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAIBGRBbiBpbnZpdGUgdGlja2V0IHdhcyBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQACQR8QW4gaW52aXRlIHRpY2tldCB3YXMgY2FuY2VsbGVkLixMaXRlSW52aXRlZAQBGHBsYXllcgQBMFQ6OkFjY291bnRJZAAKCEkBQSBsaXRlIHBlcnNvbiBpbnZpdGVkIHRoZSBhY2NvdW50IGBwbGF5ZXJgIHRvIHBsYXkgb24gdGhlaXIgYmVoYWxmLCB3aGljaCBpcyBub3cgYYxwbGF5ZXIgd2l0aCBhbiBpbnZpdGVkIGNyZWRpYmlsaXR5LjhHYW1lc1NjaGVkdWxlZAQBFGNvdW50OAEMdTMyAAsEVEdhbWVzIHdlcmUgc2NoZWR1bGVkLlBTY2hlZHVsZWRHYW1lUmVtb3ZlZAQBOGdhbWVfcGxheV90aW1lOAEMdTMyAAwEdEEgc2NoZWR1bGVkIGdhbWUgd2FzIHJlbW92ZWQuQFN0bXRVc2FnZVJlbW92ZWQEAQx3aG8IASBbdTg7IDMyXQANBLhTdGF0ZW1lbnQgc3RvcmUgdXNhZ2UgcmVtb3ZlZCBmb3IgdGhlIGFjY291bnQuREFsbEludml0ZXNSZW1vdmVkBAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAOBLhBbGwgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIuSFNvbWVJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwQNAVNvbWUgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIsIHNvbWUgYXJlIHJlbWFpbmluZy44UGxheURlcG9zaXRTZXQEARhhbW91bnRFAQFITmF0aXZlQmFsYW5jZU9mPFQ+ABAEoFRoZSBjb25maWd1cmVkIHBsYXkgZGVwb3NpdCB3YXMgdXBkYXRlZC5AQWlyZHJvcFNjaGVkdWxlZAwBKGdhbWVfaW5kZXg4ARxHYW1lSWR4AAE0YWlyZHJvcF9pbmRleAwBCHU4AAEgZXZlbnRfaWQIAThBaXJkcm9wRXZlbnRJZAARBNBBbiBhaXJkcm9wIGV2ZW50IHdhcyBzY2hlZHVsZWQgZm9yIHRoZSBjdXJyZW50IGdhbWUuVEFpcmRyb3BTY2hlZHVsZUZhaWxlZAwBKGdhbWVfaW5kZXg4ARxHYW1lSWR4AAE0YWlyZHJvcF9pbmRleAwBCHU4AAEUZXJyb3LxBgE0RGlzcGF0Y2hFcnJvcgASBORBbiBhaXJkcm9wIGV2ZW50IGZvciB0aGUgY3VycmVudCBnYW1lIGZhaWxlZCB0byBzY2hlZHVsZS40R2FtZUNhbmNlbGxlZAQBKGdhbWVfaW5kZXg4ARxHYW1lSWR4ABMEgEdhbWUgYGdhbWVfaW5kZXhgIHdhcyBjYW5jZWxsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV09QcMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQURXZlbnQEBFQAASQ0Q3JlZGl0Q2xhaW1lZAwBDHdobxEFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgR4VGhlIHBlcnNvbiB3aG8gY2xhaW1lZCBjcmVkaXQuASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAS8RGVzdGluYXRpb24gYWNjb3VudCB0aGF0IHJlY2VpdmVkIHRoZSB0cmFuc2Zlci4BGGFtb3VudEUBATBCYWxhbmNlT2Y8VD4ETEFtb3VudCB0cmFuc2ZlcnJlZC4ABHBBIHBlcnNvbiBoYXMgY2xhaW1lZCBjcmVkaXQuUFBlcnNvbmhvb2RSZWNvZ25pemVkCAEMd2hvEQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+BLBUaGUgYWNjb3VudCB3aG9zZSBwZXJzb25ob29kIHdhcyByZWNvZ25pemVkLgEccmVzdW1lZFkBARBib29sBBEBV2hldGhlciB0aGlzIHdhcyByZXN1bWluZyBmcm9tIHN1c3BlbnNpb24gb3IgZmlyc3QtdGltZSByZWNvZ25pdGlvbi4BBKRQZXJzb25ob29kIHdhcyByZWNvZ25pemVkIGZvciBhbiBhY2NvdW50LlRQYXlvdXRSb3VuZHNTY2hlZHVsZWQMARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+BFRUaGUgYW1vdW50IHBlciByb3VuZC4BFGNvdW50OAEMdTMyBFRUaGUgbnVtYmVyIG9mIHJvdW5kcy4BIGR1cmF0aW9uOAFEQmxvY2tOdW1iZXJGb3I8VD4EhFRoZSBkdXJhdGlvbiBwZXIgcm91bmQgaW4gYmxvY2tzLgIEiFBheW91dCByb3VuZHMgaGF2ZSBiZWVuIHNjaGVkdWxlZC5UUGF5b3V0U2NoZWR1bGVSZW1vdmVkBAEUaW5kZXg4AQx1MzIEiFRoZSBpbmRleCBvZiB0aGUgcmVtb3ZlZCBzY2hlZHVsZS4DBIxBIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiByZW1vdmVkLkRSb3VuZFRyYW5zaXRpb25lZAQBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleASYVGhlIHJvdW5kIGluZGV4IHRoYXQgd2FzIHRyYW5zaXRpb25lZC4EBHhBIHJvdW5kIGhhcyBiZWVuIHRyYW5zaXRpb25lZC5MUGF5b3V0Um91bmRPcGVyYXRlZAQBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleASIVGhlIHJvdW5kIGluZGV4IHRoYXQgd2FzIG9wZXJhdGVkLgUEGQFBIHBheW91dCByb3VuZCBoYXMgYmVlbiBvcGVyYXRlZCAoY3JlZGl0IGRpc3RyaWJ1dGVkIHRvIHBhcnRpY2lwYW50cykuJENhc2hlZE91dAQBDHdobxEFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgR8VGhlIHBhcnRpY2lwYW50IHdobyBjYXNoZWQgb3V0LgYEuEEgcGFydGljaXBhbnQgaGFzIGNhc2hlZCBvdXQgc2NvcmUgZm9yIHBvaW50cy54UGVyc29uaG9vZFRocmVzaG9sZFNjaGVkdWxlU2V0AAcEvFRoZSBwZXJzb25ob29kLXRocmVzaG9sZCBzY2hlZHVsZSBoYXMgYmVlbiBzZXQuXEFic2VuY2VHcmFjZVNjaGVkdWxlU2V0AAgEoFRoZSBhYnNlbmNlLWdyYWNlIHNjaGVkdWxlIGhhcyBiZWVuIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT5BwxgaW5kaXZfcGFsbGV0X25mdF9jcmVkaXRzGHBhbGxldBRFdmVudAQEVAABHFROZnRDbGFpbUNyZWRpdEF3YXJkZWQMASBjbGFpbWFudBEFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgABGGNyZWRpdAgBOE5mdENsYWltQ3JlZGl0AAEobGVhZl9pbmRleDgBDHUzMgAAHFkBQW4gTkZUIGNsYWltIGNyZWRpdCB3YXMgYXdhcmRlZCB0byBgY2xhaW1hbnRgIGFuZCByZWNvcmRlZCBhcyBsZWFmIGBsZWFmX2luZGV4YCBvZiB0aGVUY3VycmVudCBibG9jaydzIHRyZWUuAFUBT25lIGV2ZW50IHBlciBhd2FyZGVkIGNyZWRpdCwgaW4gbGVhZiBvcmRlciwgaXMgd2hhdCBsZXRzIGFuIGluY2x1c2lvbiBwcm9vZiBzdGlsbCBiZexidWlsdCBvbmNlIHRoZSBibG9jaydzIGF3YXJkcyBoYXZlIGJlZW4gcHJ1bmVkOiB0aGUgbGVhZiBpc1UBYGJsYWtlMl8yNTYoY2xhaW1hbnQgKysgY3JlZGl0KWAgYW5kIHRoZSBibG9jaydzIGxlYWYgc2V0IGlzIHRoZSBgbGVhZl9pbmRleGAtb3JkZXJlZNxzZXF1ZW5jZSBvZiB0aGVzZSBldmVudHMsIHNvIG5vIGJsb2NrIHJlcGxheSBpcyBuZWVkZWQuaE5mdENsYWltQ3JlZGl0Um9vdFJlY29yZGVkCAEUYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgABLGNyZWRpdF9yb290/QcBSE5mdENsYWltQ3JlZGl0VHJlZQABCFEBVGhlIGNyZWRpdHMgYXdhcmRlZCBpbiBibG9jayBgYmxvY2tgIGNhbiBiZSBtaW50ZWQgZnJvbSBub3cgb246IGBjcmVkaXRfcm9vdGAncyByb290PQFpcyB3aGF0IGFuIGluY2x1c2lvbiBwcm9vZiBmb3IgYW55IG9mIHRoZW0gdmVyaWZpZXMgYWdhaW5zdCwgYW5kIG5ldmVyIGNoYW5nZXMuPENyZWRpdFRyZWVzU2VudAQBFHRyZWVzDQUBzEJvdW5kZWRWZWM8QXdhcmRCbG9jaywgVDo6TWF4Q3JlZGl0VHJlZXNQZXJNZXNzYWdlPhgxAVRoZSBhd2FyZCBibG9jayBvZiBldmVyeSB0cmVlIHRoZSBtZXNzYWdlIGNhcnJpZXMsIGluIHRoZSBvcmRlciB0aGV5IGdvIG91dC45AUVtcHR5IG1lYW5zIGV2ZXJ5IHRyZWUgb2YgdGhpcyBtZXNzYWdlIGhhZCBsb3N0IGl0cyByb290LCBzbyBub3RoaW5nIHdhcyBzZW50LgA1AVRoZSBzZXF1ZW5jZSBlYWNoIGJsb2NrIHRyYXZlbHMgdW5kZXIgaXMgbm90IHNwZWxsZWQgb3V0OiB0aGUgbWVzc2FnZSB0YWtlcyBhTQFjb250aWd1b3VzIHJ1biBvZiBzZXF1ZW5jZXMgb2ZmIHRoZSBxdWV1ZSwgc3RhcnRpbmcgYXQgdGhlIGNhbGwncyBgZmlyc3Rfc2VxdWVuY2VgLB0BbWludXMgdGhlIG9uZXMgdGhpcyBibG9jaydzIFtgRXZlbnQ6OkNyZWRpdFRyZWVEZWxpdmVyeVNraXBwZWRgXSBuYW1lcy4CBEEBQ3JlZGl0IHRyZWVzIHdlcmUgaGFuZGVkIHRvIHRoZSBYQ00gcm91dGVyIGZvciBkZWxpdmVyeSB0byB0aGUgTkZUIGNsYWltcyBjaGFpbi5kQ3JlZGl0VHJlZURlbGl2ZXJ5U2tpcHBlZAgBIHNlcXVlbmNlKAEwVHJlZVNlcXVlbmNlAAEUYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgADECUBQSBxdWV1ZWQgY3JlZGl0IHRyZWUgd2FzIG5vdCBzZW50IGJlY2F1c2UgaXRzIHJvb3QgaXMgbm8gbG9uZ2VyIHJlY29yZGVkLgBZAUl0cyBzZXF1ZW5jZSBpcyBzcGVudCB3aXRob3V0IGEgdHJlZSBldmVyIGFycml2aW5nLCBzbyB0aGUgY2xhaW1zIGNoYWluIHJlcG9ydHMgYSBnYXAuXQFObyBbYFBhbGxldDo6cmVwbGF5X2NyZWRpdF90cmVlc2BdIGNhbiBmaWxsIGl0OiB0aGUgcm9vdCBwcm9vZnMgdmVyaWZ5IGFnYWluc3QgaXMgZ29uZS5QQ3JlZGl0VHJlZVNlbmRGYWlsZWQABAhVAURlbGl2ZXJpbmcgY3JlZGl0IHRyZWVzIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluIGZhaWxlZC4gVGhlIHRyZWVzIHN0YXkgcXVldWVkIGFuZCB0aGWgbmV4dCBvZmZjaGFpbiB3b3JrZXIgY3ljbGUgcmV0cmllcyB0aGVtLkxDcmVkaXRUcmVlc1JlcGxheWVkBAEUY291bnQ4AQx1MzIABQT0Q3JlZGl0IHRyZWVzIHdlcmUgcmVzZW50IHRvIHRoZSBORlQgY2xhaW1zIGNoYWluIG91dCBvZiBiYW5kLmRDcmVkaXRUcmVlRGVsaXZlcnlEcm9wcGVkBAEUYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgAGEBEBQSBmcmVzaGx5IGJ1aWx0IGNyZWRpdCB0cmVlIGNvdWxkIG5vdCBiZSBxdWV1ZWQgZm9yIGRlbGl2ZXJ5IGJlY2F1c2UxAWBDcmVkaXRUcmVlRGVsaXZlcnlRdWV1ZWAgaXMgZnVsbCwgd2hpY2ggbWVhbnMgZGVsaXZlcnkgaGFzIGJlZW4gZmFpbGluZyBmb3IFAWBNYXhRdWV1ZWRDcmVkaXRUcmVlc2AgdHJlZXMuIEl0cyBjcmVkaXRzIHN0YXkgdW5taW50YWJsZSB1bnRpbCBhuFtgUGFsbGV0OjpyZXBsYXlfY3JlZGl0X3RyZWVzYF0gbmFtZXMgYGJsb2NrYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT9Bww0aW5kaXZfc3VwcG9ydDBjcmVkaXRfdHJlZXNITmZ0Q2xhaW1DcmVkaXRUcmVlAAAQAShnYW1lX2luZGV4OAEMdTMyAAEQcm9vdAEIATxDcmVkaXRQcm9vZk5vZGUAAShsZWFmX2NvdW50OAEMdTMyAAEkdGltZXN0YW1wOAEMdTMyAAABCAw0aW5kaXZfc3VwcG9ydDBjcmVkaXRfdHJlZXM8Q3JlZGl0UHJvb2ZOb2RlAAAEAAgBIFt1ODsgMzJdAAAFCAxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQURXZlbnQEBFQAASAsSWRzUmVzZXJ2ZWQEARRjb3VudDgBDHUzMgAABHRBIG51bWJlciBvZiBJRHMgd2FzIHJlc2VydmVkLiRJZFJlbmV3ZWQEAQhpZCgBKFBlcnNvbmFsSWQAAQRIQW4gSUQgd2FzIHJlbmV3ZWQuMElkVW5yZXNlcnZlZAQBCGlkKAEoUGVyc29uYWxJZAACBGhBIHJlc2VydmVkIElEIHdhcyByZW1vdmVkLkBQZW9wbGVSZWdpc3RlcmVkBAEUY291bnQ4AQx1MzIAAwRkUmVnaXN0ZXIgbXVsdGlwbGUgcGVvcGxlLjxQZW9wbGVTdXNwZW5kZWQEARRjb3VudDgBDHUzMgAEBGxTdXNwZW5kIGEgbnVtYmVyIG9mIHBlb3BsZS5EUGVyc29uaG9vZFJlc3VtZWQEAQhpZCgBKFBlcnNvbmFsSWQABQSEU29tZW9uZSdzIHBlcnNvbmhvb2Qgd2FzIHJlc3VtZWQuSFN1c3BlbnNpb25zU3RhcnRlZAAGBHxUaGUgcGFsbGV0IGVuYWJsZWQgc3VzcGVuc2lvbnMuQFN1c3BlbnNpb25zRW5kZWQABwSAVGhlIHBhbGxldCBkaXNhYmxlZCBzdXNwZW5zaW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQJCAxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlGHBhbGxldBRFdmVudAQEVAABIHhBbGxBdHRlc3RhdGlvbkFsbG93YW5jZUNsZWFyZWQEASB2ZXJpZmllcgQBMFQ6OkFjY291bnRJZAAABPBBbGwgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGhhcyBiZWVuIHJlbW92ZWQgZm9yIHRoZSB2ZXJpZmllci50QXR0ZXN0YXRpb25BbGxvd2FuY2VJbmNyZWFzZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIAAQQtAUF0dGVzdGF0aW9uIGFsbG93YW5jZSB3YXMgaW5jcmVhc2VkIGZvciBhbiBhY2NvdW50IGJ5IGBjb3VudGAgYXR0ZXN0YXRpb25zLjhQZXJzb25BdHRlc3RlZAgBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZAABIHZlcmlmaWVyBAEwVDo6QWNjb3VudElkAAIE1EEgbmV3IGxpdGUgcGVyc29uIHdhcyByZWdpc3RlcmVkIHRocm91Z2ggYXR0ZXN0YXRpb24uXFBlcnNvblJlZ2lzdGVyZWRXaXRoRmVlBAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAMEAQFBIG5ldyBsaXRlIHBlcnNvbiB3YXMgcmVnaXN0ZXJlZCBieSBwYXlpbmcgdGhlIHJlZ2lzdHJhdGlvbiBmZWUuSENvbnN1bWVyUmVnaXN0ZXJlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABASsQSBsaXRlIHBlcnNvbiB3YXMgcmVnaXN0ZXJlZCBhcyBhIGNvbnN1bWVyLjxBbGlhc0FjY291bnRTZXQIARRhbGlhc+kDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAUEvEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgc2V0IG9yIHVwZGF0ZWQuREFsaWFzQWNjb3VudFVuc2V0CAEUYWxpYXPpAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAGBKBBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIHJlbW92ZWQuRENvbGxlY3Rpb25DcmVhdGVkAAcEuFRoZSBsaXRlIHBlb3BsZSBtZW1iZXIgY29sbGVjdGlvbiB3YXMgY3JlYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQNCAxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxhwYWxsZXQURXZlbnQEBFQAAThAUGVyc29uUmVnaXN0ZXJlZAgBFGFsaWFzCAEUQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAAEmEEgcGVyc29uIGhhcyByZWdpc3RlcmVkIGFzIGEgY29uc3VtZXIuUExpdGVQZXJzb25SZWdpc3RlcmVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABBKxBIGxpdGUgcGVyc29uIGhhcyByZWdpc3RlcmVkIGFzIGEgY29uc3VtZXIuYE5vdGlmaWNhdGlvblN0bXRVc2FnZVNldBABFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAAQxzZXEMAQh1OAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAgT4Tm90aWZpY2F0aW9uIHN0YXRlbWVudCB1c2FnZSBoYXMgYmVlbiBhc3NpZ25lZCBmb3IgYSBzZXF1ZW5jZS5wTm90aWZpY2F0aW9uU3RtdFVzYWdlUmVtb3ZlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwS4Tm90aWZpY2F0aW9uIHN0YXRlbWVudCB1c2FnZSBoYXMgYmVlbiByZW1vdmVkLmhQZXJzb25BdXRob3JpemF0aW9uVG91Y2hlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABASUQSBwZXJzb24ncyBhdXRob3JpemF0aW9uIHdhcyB0b3VjaGVkLoRFeHBpcmVkVXNlcm5hbWVSZXNlcnZhdGlvblJlbW92ZWQIASB1c2VybmFtZTkFASBVc2VybmFtZQABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQSwQW4gZXhwaXJlZCB1c2VybmFtZSByZXNlcnZhdGlvbiB3YXMgcmVtb3ZlZC5QSWRlbnRpZmllcktleVVwZGF0ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAYEoEEgY29uc3VtZXIncyBpZGVudGlmaWVyIGtleSB3YXMgdXBkYXRlZC54VXNlcm5hbWVSZXNlcnZhdGlvbkR1cmF0aW9uU2V0BAEgZHVyYXRpb24oAQx1NjQABwSoVGhlIHVzZXJuYW1lIHJlc2VydmF0aW9uIGR1cmF0aW9uIHdhcyBzZXQuVFN0bXRTdG9yZUFsbG93YW5jZVNldBABFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAAQxzZXE4AQx1MzIAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAgEzEFuIGFub255bW91cyBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIHdhcyBncmFudGVkLmhTdG10U3RvcmVBbGxvd2FuY2VzQ2xlYXJlZAwBGHBlcmlvZDgBDHUzMgABJGZpcnN0X2tleQgBFEFsaWFzAAEUY291bnQ4AQx1MzIACQTMRXhwaXJlZCBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlcyB3ZXJlIGNsZWFuZWQgdXAuNFBlcnNvbkRlbW90ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAoE3EEgZnVsbCBwZXJzb24gd2FzIGRlbW90ZWQgZHVlIHRvIGV4cGlyZWQgYXV0aG9yaXphdGlvbi5YTG9uZ1Rlcm1TdG9yYWdlQ2xhaW1lZBQBFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAARxjb3VudGVyDAEIdTgAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEoY29sbGVjdGlvbgEEAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgALBMhMb25nLXRlcm0gc3RvcmFnZSBoYXMgYmVlbiBjbGFpbWVkIGZvciBhbiBhY2NvdW50LnxMb25nVGVybVN0b3JhZ2VBbGxvY2F0aW9uRmFpbGVkFAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABHGNvdW50ZXIMAQh1OAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAShjb2xsZWN0aW9uAQQBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAwIWQFBIGxvbmctdGVybSBzdG9yYWdlIGNsYWltIHdhcyBhY2NlcHRlZCBidXQgdGhlIGRvd25zdHJlYW0gYWxsb2NhdGlvbiBmYWlsZWQuIFRoZSBhbGlhc5RpcyBzdGlsbCBtYXJrZWQgc3BlbnQgZm9yIHRoZSBwZXJpb2QudExvbmdUZXJtU3RvcmFnZUFsaWFzZXNDbGVhcmVkCAEYcGVyaW9kOAEMdTMyAAEUY291bnQ4AQx1MzIADQQFAUV4cGlyZWQgbG9uZy10ZXJtIHN0b3JhZ2UgYWxpYXNlcyBoYXZlIGJlZW4gY2xlYXJlZCBmb3IgYSBwZXJpb2QuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0EQgMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQURXZlbnQEBFQAAQhoQ2h1bmtQYWdlSGFzaGVzSW5pdGlhbGl6ZWQIATRyaW5nX2V4cG9uZW50UQUBMFJpbmdFeHBvbmVudAABLHRvdGFsX3BhZ2VzOAEMdTMyAAAEGQFBIG5ldyBjaHVuayBwYWdlIGhhc2ggc2V0IGhhcyBiZWVuIGluaXRpYWxpemVkIChlLmcuLCBkdXJpbmcgZ2VuZXNpcykuLENodW5rc0FkZGVkDAE0cmluZ19leHBvbmVudFEFATBSaW5nRXhwb25lbnQAASxzdGFydF9pbmRleDgBDHUzMgABFGNvdW50OAEMdTMyAAEEIQFOZXcgY2h1bmtzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gYW4gZXhpc3Rpbmcgb3IgbmV3IGNodW5rIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQVCAxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0FEV2ZW50BARUAAEoLE1lbWJlckFkZGVkBAEMa2V5CAEsTWVtYmVyT2Y8VD4AAAToQW4gZW50aXR5IGhhcyBoYWQgdGhlaXIgbWVtYmVyc2hpcCByZWNvZ25pc2VkIGFuZCBpbmRleGVkLjRNZW1iZXJSZW1vdmVkBAEMa2V5CAEsTWVtYmVyT2Y8VD4AAQSsQW4gZW50aXR5IGhhcyBoYWQgdGhlaXIgbWVtYmVyc2hpcCByZXZva2VkLmxDb2xsZWN0aW9uTWFya2VkRm9yRGVsZXRpb24EAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgACBKhBIGNvbGxlY3Rpb24gaGFzIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbi5EQ29sbGVjdGlvbkRlbGV0ZWQEAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgADBJBBIGNvbGxlY3Rpb24gaGFzIGJlZW4gZnVsbHkgZGVsZXRlZC4kUmluZ0J1aWx0CAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAQEWEEgcmluZyByb290IHdhcyBidWlsdC5ATWVtYmVyc09uYm9hcmRlZAQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAUEXE1lbWJlcnMgd2VyZSBvbmJvYXJkZWQuLFJpbmdzTWVyZ2VkDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxiYXNlX3JpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAUR0YXJnZXRfcmluZ19pbmRleDgBJFJpbmdJbmRleAAGBFhUd28gcmluZ3Mgd2VyZSBtZXJnZWQuRE9uYm9hcmRpbmdTaXplU2V0CAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxvbmJvYXJkaW5nX3NpemU4AQx1MzIABwS0VGhlIG9uYm9hcmRpbmcgc2l6ZSB3YXMgc2V0IGZvciBhIGNvbGxlY3Rpb24uSE1lbWJlclNlbGZJbmNsdWRlZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEMa2V5CAEsTWVtYmVyT2Y8VD4ACASMQSBtZW1iZXIgc2VsZi1pbmNsdWRlZCBpbnRvIGEgcmluZy5AT2xkUm9vdENsZWFuZWRVcAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAEMdTMyAAkEpEFuIG9sZCByb290IHJldmlzaW9uIGhhcyBiZWVuIGNsZWFuZWQgdXAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0GQgMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBRFdmVudAQEVAABhCRDb2luU3BsaXQIASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAATBvdXRwdXRfY291bnQ4AQx1MzIAAAA8Q29pblRyYW5zZmVycmVkEAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AARxuZXdfYWdlzQMBDHUxNgABAFhSZWN5Y2xlckxvYWRlZFdpdGhDb2luCAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAIAfFJlY3ljbGVyTG9hZGVkV2l0aEV4dGVybmFsQXNzZXQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAMAYFJlY3ljbGVyVW5sb2FkZWRJbnRvQ29pbhQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABCHRvBAEwVDo6QWNjb3VudElkAAEsaW5wdXRfdmFsdWUVBAEwRGVub21pbmF0aW9uAAEwb3V0cHV0X3ZhbHVlFQQBMERlbm9taW5hdGlvbgABLGlucHV0X2NvdW50OAEMdTMyAAQAhFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldBQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEsaW5wdXRfY291bnQ4AQx1MzIAARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAUAvFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldEFuZExvYWRlZENvaW5zGAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AASxpbnB1dF9jb3VudDgBDHUzMgABVGV4dGVybmFsX2Fzc2V0X2Ftb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AAURsb2FkZWRfY29pbl9jb3VudDgBDHUzMgAGAFRSZWN5Y2xlckFsaWFzVW5sb2FkZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEUYWxpYXMIARRBbGlhcwAHIBkBQW4gYWxpYXMgd2FzIHBlcm1hbmVudGx5IG1hcmtlZCBhcyB1bmxvYWRlZCBmcm9tIGEgbGl2ZSByZWN5Y2xlciByaW5nLgAtAUVtaXR0ZWQgb25jZSBwZXIgYWxpYXMgb24gZXZlcnkgdW5sb2FkIGZyb20gYSBsaXZlIChub3QgeWV0IGFyY2hpdmVkKSByaW5nO5RyZWNvdmVyaWVzIGZyb20gYW4gYXJjaGl2ZWQgcmluZyBlbWl0UQFbYEV2ZW50OjpBcmNoaXZlZFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldGBdIGluc3RlYWQuIFRvZ2V0aGVyLCB0aGVzZSBldmVudHM1AWxldCBhbiBvZmZjaGFpbiBzZXJ2aWNlIHJlY29uc3RydWN0IHRoZSB1bmxvYWRlZC1hbGlhc2VzIHRyaWUgY29tbWl0dGVkIHRvIGJ5BQFbYEV2ZW50OjpSZWN5Y2xlckFyY2hpdmVkYF0sIGFuZCBoZW5jZSBidWlsZCB0aGUgcHJvb2ZzIG5lZWRlZCBieeRbYFBhbGxldDo6dW5sb2FkX2FyY2hpdmVkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXRgXS6EUGFpZFVubG9hZFRva2VuUmVnaXN0ZXJlZFdpdGhDb2luDAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEMZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABJGRlc3Ryb3llZEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ACACMUGFpZFVubG9hZFRva2VuUmVnaXN0ZXJlZFdpdGhOYXRpdmUIAQx3aG8EATBUOjpBY2NvdW50SWQAAQxmZWVFAQFITmF0aXZlQmFsYW5jZU9mPFQ+AAkAqFBhaWRVbmxvYWRUb2tlblJlZ2lzdGVyZWRXaXRoRXh0ZXJuYWxBc3NldAwBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABDHdobwQBMFQ6OkFjY291bnRJZAABDGZlZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ACgB0UGVvcGxlRnJlZVVubG9hZFRva2VuQ29uc3VtZWQEARhwZXJpb2Q4ARhQZXJpb2QACwCETGl0ZVBlb3BsZUZyZWVVbmxvYWRUb2tlbkNvbnN1bWVkBAEYcGVyaW9kOAEYUGVyaW9kAAwAZFJlY3ljbGVyc1VubG9hZGVkSW50b0NvaW4QASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQh0bwQBMFQ6OkFjY291bnRJZAABMG91dHB1dF92YWx1ZRUEATBEZW5vbWluYXRpb24AASxpbnB1dF9jb3VudDgBDHUzMgANAIhSZWN5Y2xlcnNVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0EAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAASxpbnB1dF9jb3VudDgBDHUzMgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ADgC4UmVjeWNsZXJzVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldE5vbkFub255bW91cxgBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABDHdobwQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEsaW5wdXRfY291bnQ4AQx1MzIAARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEwZmVlX2N1cnJlbmN5nQUBLEZlZUN1cnJlbmN5AA8AZFJlY3ljbGVyVW5sb2FkZWRJbnRvQ29pbnMIASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAATBvdXRwdXRfY291bnQ4AQx1MzIAEAB8Q29pbk9mZmJvYXJkZWRJbnRvRXh0ZXJuYWxBc3NldBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgARADxSZWN5Y2xlckNsZWFuZWQMASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AATxyZW1haW5pbmdfY29pbnM4AQx1MzIAEgxdAUEgcmVjeWNsZXIgcmluZyB3YXMgY2xlYW5lZC4gYHJlbWFpbmluZ19jb2luc2AgaXMgdGhlIG51bWJlciBvZiBub3QteWV0LXVubG9hZGVkIGNvaW5zO1EBd2hlbiBub24temVybyB0aGUgcmluZyBpcyBhcmNoaXZlZCAoc2VlIFtFdmVudDo6UmVjeWNsZXJBcmNoaXZlZF0pIGFuZCB0aGF0IHZhbHVlIGlzsHJldGFpbmVkIGZvciByZWNvdmVyeSByYXRoZXIgdGhhbiBkZXN0cm95ZWQuQFJlY3ljbGVyQXJjaGl2ZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAE0cmVjeWNsZXJfcm9vdKkFATBNZW1iZXJzT2Y8VD4AExxRAUEgY2xlYW5lZCByZWN5Y2xlciByaW5nIHdpdGggcmVjb3ZlcmFibGUgY29pbnMgd2FzIGFyY2hpdmVkOiBpdHMgYXJjaGl2YWwgY29tbWl0bWVudAUBKHNlZSBbYGFyY2hpdmVfY29tbWl0bWVudGBdKSB3YXMgcmVjb3JkZWQgaW4gW1JlY3ljbGVyc0FyY2hpdmVzXS4AVQFUaGUgcmluZy1WUkYgYHJlY3ljbGVyX3Jvb3RgIGlzIGVtaXR0ZWQgaGVyZSBiZWNhdXNlIHRoZSByaW5nIGlzIHJlbW92ZWQgZnJvbSBzdG9yYWdlQQFpbiB0aGUgc2FtZSBvcGVyYXRpb246IHRoaXMgZXZlbnQgaXMgdGhlIGxhc3Qgb24tY2hhaW4gc291cmNlIG9mIHRoZSByb290LCB3aGljaPhvZmZjaGFpbiBzZXJ2aWNlcyBtdXN0IHJldGFpbiB0byBidWlsZCB0aGUgcmVjb3ZlcnkgcHJvb2ZzIGZvcuRbYFBhbGxldDo6dW5sb2FkX2FyY2hpdmVkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXRgXS6kQXJjaGl2ZWRSZWN5Y2xlclVubG9hZGVkSW50b0V4dGVybmFsQXNzZXQgASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQx3aG8EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEwZmVlX2N1cnJlbmN5nQUBLEZlZUN1cnJlbmN5AAEUYWxpYXMIARRBbGlhcwAUBDEBQSBjb2luIHdhcyByZWNvdmVyZWQgZnJvbSBhbiBhcmNoaXZlZCByZWN5Y2xlciByaW5nIGludG8gdGhlIGV4dGVybmFsIGFzc2V0LmRDb25zdW1lZEZyZWVUb2tlbnNDbGVhbmVkBAEYcGVyaW9kOAEYUGVyaW9kABUAaFBhaWRVbmxvYWRUb2tlblJpbmdDbGVhbmVkCAEYcGVyaW9kOAEYUGVyaW9kAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAAWAExSZWN5Y2xlckR1c3RDbGVhbmVkABcAaFBhaWRVbmxvYWRUb2tlbkR1c3RDbGVhbmVkABgAnEV4cGlyZWRQYWlkVW5sb2FkVG9rZW5Db2xsZWN0aW9uRGVsZXRlZAQBGHBlcmlvZDgBGFBlcmlvZAAZADxJbnN0YW5jZUNyZWF0ZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAASBhc3NldF9pZHEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AAShhc3NldF91bml0RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABEG1vZGUdCAEwSW5zdGFuY2VNb2RlABoE3EEgY29pbmFnZSBpbnN0YW5jZSB3YXMgY3JlYXRlZCBmb3IgYW4gdW5kZXJseWluZyBhc3NldC4kUG90RnVuZGVkEAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEYZnVuZGVyBAEwVDo6QWNjb3VudElkAAEgY3VycmVuY3lxAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAbBPxBIHRyYWNrZWQgY29udHJpYnV0aW9uIHdhcyBhZGRlZCB0byBhIHNwb25zb3JlZCBpbnN0YW5jZSdzIHBvdC5EUG90RnVuZHNXaXRoZHJhd24QASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARhmdW5kZXIEATBUOjpBY2NvdW50SWQAASBjdXJyZW5jeXEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABwE7EEgZnVuZGVyIHRvb2sgYmFjayBwYXJ0IG9mIHRoZWlyIHJlY29yZGVkIHBvdCBjb250cmlidXRpb24uQExvYWREZXBvc2l0c0hlbGQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAASBjdXJyZW5jeXEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AARRwcmljZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AARRjb3VudDgBDHUzMgAdBEUBYGNvdW50YCBsb2FkIGRlcG9zaXRzIG9mIGBwcmljZWAgZWFjaCB3ZXJlIHRha2VuIGZyb20gYSBzcG9uc29yZWQgaW5zdGFuY2UncyBwb3QuUExvYWREZXBvc2l0c1JlbGVhc2VkEAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEgY3VycmVuY3lxAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABFGNvdW50OAEMdTMyAB4EPQFgY291bnRgIHNldHRsZWQga2V5cyByZWxlYXNlZCBgYW1vdW50YCBvZiBgY3VycmVuY3lgIHRvIHRoZSBwb3QncyBmcmVlIGJhbGFuY2UuVExvYWREZXBvc2l0c0NvbGxhcHNlZBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABIGN1cnJlbmN5cQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABFHByaWNlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABFGNvdW50OAEMdTMyAB8IEQFFdmVyeSBsaXZlIGxvYWQgZGVwb3NpdCBvZiB0aGUgaW5zdGFuY2Ugd2FzIHJlLXByaWNlZCB0byB0aGUgY3VycmVudGBbYENvbmZpZzo6TG9hZERlcG9zaXRgXS48SW5zdGFuY2VNb2RlU2V0CAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEQbW9kZR0IATBJbnN0YW5jZU1vZGUAIASgR292ZXJuYW5jZSBzd2l0Y2hlZCB0aGUgaW5zdGFuY2UncyBtb2RlLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldB0IDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQwSW5zdGFuY2VNb2RlAAEIKFN1ZmZpY2llbnQAAAAkU3BvbnNvcmVkAAEAACEIDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchhwYWxsZXQURXZlbnQEBFQAARgoU3Vic2NyaWJlZAQBHHBhcmFfaWScARhQYXJhSWQAAARcQSBwYXJhY2hhaW4gc3Vic2NyaWJlZC4wVW5zdWJzY3JpYmVkBAEccGFyYV9pZJwBGFBhcmFJZAABBGRBIHBhcmFjaGFpbiB1bnN1YnNjcmliZWQuLFVwZGF0ZXNTZW50CAEccGFyYV9pZJwBGFBhcmFJZAABMHVwZGF0ZV9jb3VudDgBDHUzMgACBIBVcGRhdGUgYmF0Y2ggc2VudCB0byBzdWJzY3JpYmVyLkBVcGRhdGVTZW5kRmFpbGVkBAEccGFyYV9pZJwBGFBhcmFJZAADBMRTZW5kaW5nIHJpbmcgcm9vdCB1cGRhdGVzIHRvIGEgc3Vic2NyaWJlciBmYWlsZWQuPFJlcGxheVJlcXVlc3RlZAwBHHBhcmFfaWScARhQYXJhSWQAAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABNGluZGljZXNfY291bnQ4AQx1MzIABAS8UmVwbGF5IG9mIHJpbmcgcm9vdHMgcmVxdWVzdGVkIGJ5IGEgc3Vic2NyaWJlci44QmF0Y2hBYmFuZG9uZWQEASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAUEzEEgc3R1Y2sgYmF0Y2ggd2FzIGFiYW5kb25lZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCUIDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBhwYWxsZXQURXZlbnQEBFQAAUg4RXZlbnRTY2hlZHVsZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAABUU2NoZWR1bGVkRXZlbnRSZW1vdmVkBAEgZXZlbnRfaWQIARxFdmVudElkAAEAOEV2ZW50Q2FuY2VsbGVkBAEgZXZlbnRfaWQIARxFdmVudElkAAIATFJlZ2lzdHJhdGlvblN0YXJ0ZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAwA8QWxpYXNSZWdpc3RlcmVkDAEgZXZlbnRfaWQIARxFdmVudElkAAEQc2xvdCkIATRCaWdFbmRpYW5VMjU2AAFIcGFydGljaXBhbnRfb3JpZ2luLQgBWFJlZ2lzdHJhdGlvbkVudHJ5T2Y8VD4ABABEQWNjb3VudFJlZ2lzdGVyZWQMASBldmVudF9pZAgBHEV2ZW50SWQAARBzbG90KQgBNEJpZ0VuZGlhblUyNTYAAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAUAOFNsb3RSZWdpc3RlcmVkDAEgZXZlbnRfaWQIARxFdmVudElkAAEQc2xvdCkIATRCaWdFbmRpYW5VMjU2AAEUZW50cnktCAFYUmVnaXN0cmF0aW9uRW50cnlPZjxUPgAGAEhSZWdpc3RyYXRpb25DbG9zZWQIASBldmVudF9pZAgBHEV2ZW50SWQAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgAHADhEcmF3aW5nV2lubmVycwgBIGV2ZW50X2lkCAEcRXZlbnRJZAABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAgAPENsYWltaW5nU3RhcnRlZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAkANEV2ZW50Q2FuY2VsZWQEASBldmVudF9pZAgBHEV2ZW50SWQACgAwUHJpemVDbGFpbWVkFAEgZXZlbnRfaWQIARxFdmVudElkAAEQc2xvdCkIATRCaWdFbmRpYW5VMjU2AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAASBhc3NldF9pZHEBATBBc3NldElkT2Y8VD4AARhhbW91bnRFAQFEQXNzZXRCYWxhbmNlT2Y8VD4ACwBUQ2xlYXJpbmdSZWdpc3RyYXRpb25zCAEgZXZlbnRfaWQIARxFdmVudElkAAEkdW5jbGFpbWVkOAEMdTMyAAwAPENsZWFyaW5nV2lubmVycwQBIGV2ZW50X2lkCAEcRXZlbnRJZAANADxGaW5hbGl6aW5nRXZlbnQEASBldmVudF9pZAgBHEV2ZW50SWQADgA4RXZlbnRDb21wbGV0ZWQEASBldmVudF9pZAgBHEV2ZW50SWQADwAwQXNzZXRFbmFibGVkCAEgYXNzZXRfaWRxAQEwQXNzZXRJZE9mPFQ+AAEYZnVuZGVkRQEBREFzc2V0QmFsYW5jZU9mPFQ+ABAANEFzc2V0RGlzYWJsZWQIASBhc3NldF9pZHEBATBBc3NldElkT2Y8VD4AASByZWZ1bmRlZEUBAURBc3NldEJhbGFuY2VPZjxUPgARAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCkIDDRpbmRpdl9zdXBwb3J0FHV0aWxzNEJpZ0VuZGlhblUyNTYAAyAAAAAMBB0BQSBVMjU2IGVuY29kZWQgaW4gYmlnLWVuZGlhbiBmb3JtYXQgZm9yIGNvcnJlY3QgbGV4aWNvZ3JhcGhpYyBvcmRlcmluZy4tCAxQaW5kaXZfcGFsbGV0X2FpcmRyb3AUdHlwZXNEUmVnaXN0cmF0aW9uRW50cnkEJEFjY291bnRJZAEEAQgUQWxpYXMEARRhbGlhcwgBFEFsaWFzAAAAHEFjY291bnQEAShhY2NvdW50X2lkBAEkQWNjb3VudElkAAEAADEIDExpbmRpdl9wYWxsZXRfaG9ub3VyGHBhbGxldBRFdmVudAQEVAABDCBWb3RlQ2FzdAgBHHN1YmplY3QIASRTdWJqZWN0SWQEeFRoZSBzdWJqZWN0IHRoYXQgd2FzIHZvdGVkIG9uLgEkZGlyZWN0aW9u6QUBJERpcmVjdGlvbgRoVGhlIGRpcmVjdGlvbiBvZiB0aGUgdm90ZS4ABNhBIHN1YmplY3Qgd2FzIHZvdGVkIG9uIHdpdGggYSBwcmV2aW91c2x5IHVudXNlZCBwb2ludC4oVm90ZVJldXNlZBABLG9sZF9zdWJqZWN0CAEkU3ViamVjdElkBNhUaGUgc3ViamVjdCB0aGF0IHByZXZpb3VzbHkgaGVsZCB0aGUgcmVkaXJlY3RlZCBwb2ludC4BNG9sZF9kaXJlY3Rpb27pBQEkRGlyZWN0aW9uBJBUaGUgcHJldmlvdXMgZGlyZWN0aW9uIG9mIHRoZSBwb2ludC4BLG5ld19zdWJqZWN0CAEkU3ViamVjdElkBMBUaGUgc3ViamVjdCB0aGF0IG5vdyBob2xkcyB0aGUgcmVkaXJlY3RlZCBwb2ludC4BNG5ld19kaXJlY3Rpb27pBQEkRGlyZWN0aW9uBHhUaGUgbmV3IGRpcmVjdGlvbiBvZiB0aGUgdm90ZS4BBMxBIHBvaW50IHdhcyByZWRpcmVjdGVkIGZyb20gb25lIHN1YmplY3QgdG8gYW5vdGhlci40SG9ub3VyQ2hhbmdlZAwBHHN1YmplY3QIASRTdWJqZWN0SWQEnFRoZSBzdWJqZWN0IHdob3NlIGhvbm91ciBzY29yZSBjaGFuZ2VkLgEkb2xkX3ZhbHVlNQgBGEhvbm91cgSMVGhlIGhvbm91ciB2YWx1ZSBiZWZvcmUgdGhlIHVwZGF0ZS4BJG5ld192YWx1ZTUIARhIb25vdXIEiFRoZSBob25vdXIgdmFsdWUgYWZ0ZXIgdGhlIHVwZGF0ZS4CBKhUaGUgaG9ub3VyIHNjb3JlIG9mIGEgc3ViamVjdCBoYXMgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ1CAAABQsAOQgMcGluZGl2X3BhbGxldF9wZW9wbGVfYWlyZHJvcHMYcGFsbGV0FEV2ZW50BARUAAEQNERyYXdTY2hlZHVsZWQIAShkcmF3X2luZGV4KAEMdTY0AAEgZXZlbnRfaWQIARxFdmVudElkAAAIOQFBIGRyYXcgd2FzIHNjaGVkdWxlZC4gUmVnaXN0cmF0aW9uIGFuZCBjbGFpbSBldmVudHMgYXJlIGVtaXR0ZWQgYnkgdGhlIGFpcmRyb3CUaW1wbGVtZW50YXRpb24gdW5kZXIgdGhpcyBgZXZlbnRfaWRgLixEcmF3UmVtb3ZlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAABBOBBIHNjaGVkdWxlZCBkcmF3IHdhcyBhc2tlZCB0byBiZSByZW1vdmVkIGJlZm9yZSBvcGVuaW5nLjREcmF3Q2FuY2VsbGVkBAEgZXZlbnRfaWQIARxFdmVudElkAAIEhEEgZHJhdyB3YXMgYXNrZWQgdG8gYmUgY2FuY2VsbGVkLjxEcmF3U2FsdFJlbW92ZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAwTMQSBkcmF3J3Mgc2FsdCBlbnRyeSB3YXMgcmVtb3ZlZCBhZnRlciBpdHMgZW5kIHRpbWUuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0PQgMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFdmVudAQEVAABIDhVcGdyYWRlU3RhcnRlZAQBKG1pZ3JhdGlvbnM4AQx1MzIQ0FRoZSBudW1iZXIgb2YgbWlncmF0aW9ucyB0aGF0IHRoaXMgdXBncmFkZSBjb250YWlucy4AQQFUaGlzIGNhbiBiZSB1c2VkIHRvIGRlc2lnbiBhIHByb2dyZXNzIGluZGljYXRvciBpbiBjb21iaW5hdGlvbiB3aXRoIGNvdW50aW5nIHRoZcxgTWlncmF0aW9uQ29tcGxldGVkYCBhbmQgYE1pZ3JhdGlvblNraXBwZWRgIGV2ZW50cy4ADGhBIFJ1bnRpbWUgdXBncmFkZSBzdGFydGVkLgD4SXRzIGVuZCBpcyBpbmRpY2F0ZWQgYnkgYFVwZ3JhZGVDb21wbGV0ZWRgIG9yIGBVcGdyYWRlRmFpbGVkYC5AVXBncmFkZUNvbXBsZXRlZAABDJhUaGUgY3VycmVudCBydW50aW1lIHVwZ3JhZGUgY29tcGxldGVkLgAdAVRoaXMgaW1wbGllcyB0aGF0IGFsbCBvZiBpdHMgbWlncmF0aW9ucyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFzIHdlbGwuNFVwZ3JhZGVGYWlsZWQAAgxcUnVudGltZSB1cGdyYWRlIGZhaWxlZC4A6FRoaXMgaXMgdmVyeSBiYWQgYW5kIHdpbGwgcmVxdWlyZSBnb3Zlcm5hbmNlIGludGVydmVudGlvbi5ATWlncmF0aW9uU2tpcHBlZAQBFGluZGV4OAEMdTMyBCkBVGhlIGluZGV4IG9mIHRoZSBza2lwcGVkIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4DBAkBQSBtaWdyYXRpb24gd2FzIHNraXBwZWQgc2luY2UgaXQgd2FzIGFscmVhZHkgZXhlY3V0ZWQgaW4gdGhlIHBhc3QuRE1pZ3JhdGlvbkFkdmFuY2VkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4EBFxBIG1pZ3JhdGlvbiBwcm9ncmVzc2VkLkhNaWdyYXRpb25Db21wbGV0ZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgUEWEEgTWlncmF0aW9uIGNvbXBsZXRlZC48TWlncmF0aW9uRmFpbGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4GDExBIE1pZ3JhdGlvbiBmYWlsZWQuAE0BVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdob2xlIHVwZ3JhZGUgZmFpbGVkIGFuZCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyByZXF1aXJlZC48SGlzdG9yaWNDbGVhcmVkBAEsbmV4dF9jdXJzb3IhBgE8T3B0aW9uPFZlYzx1OD4+BOhTaG91bGQgYmUgcGFzc2VkIHRvIGBjbGVhcl9oaXN0b3JpY2AgaW4gYSBzdWNjZXNzaXZlIGNhbGwuBwTIVGhlIHNldCBvZiBoaXN0b3JpY2FsIG1pZ3JhdGlvbnMgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRBCAgwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAAEUIAAACPABJCAAAAk0IAE0IAAAECDg4AFEICDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9uYAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZVUIAURDb3c8J3N0YXRpYywgc3RyPgAAVQgEDENvdwQEVAFZCAAEAFkIAAAAWQgAAAUCAF0ICDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvblkBARBib29sAABhCAwwZnJhbWVfc3lzdGVtGGxpbWl0czBCbG9ja1dlaWdodHMAAAwBKGJhc2VfYmxvY2t5AgEYV2VpZ2h0AAEkbWF4X2Jsb2NreQIBGFdlaWdodAABJHBlcl9jbGFzc2UIAYRQZXJEaXNwYXRjaENsYXNzPFdlaWdodHNQZXJDbGFzcz4AAGUIDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBaQgADAEYbm9ybWFsaQgBBFQAASxvcGVyYXRpb25hbGkIAQRUAAEkbWFuZGF0b3J5aQgBBFQAAGkIDDBmcmFtZV9zeXN0ZW0YbGltaXRzPFdlaWdodHNQZXJDbGFzcwAAEAE4YmFzZV9leHRyaW5zaWN5AgEYV2VpZ2h0AAE0bWF4X2V4dHJpbnNpY0kDAThPcHRpb248V2VpZ2h0PgABJG1heF90b3RhbEkDAThPcHRpb248V2VpZ2h0PgABIHJlc2VydmVkSQMBOE9wdGlvbjxXZWlnaHQ+AABtCAwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAACAEMbWF4cQgBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgABPG1heF9oZWFkZXJfc2l6ZeQBLE9wdGlvbjx1MzI+AABxCAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATgADAEYbm9ybWFsOAEEVAABLG9wZXJhdGlvbmFsOAEEVAABJG1hbmRhdG9yeTgBBFQAAHUICChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZCgBDHU2NAABFHdyaXRlKAEMdTY0AAB5CAgoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1lVQgBRENvdzwnc3RhdGljLCBzdHI+AAEkaW1wbF9uYW1lVQgBRENvdzwnc3RhdGljLCBzdHI+AAFEYXV0aG9yaW5nX3ZlcnNpb244AQx1MzIAATBzcGVjX3ZlcnNpb244AQx1MzIAATBpbXBsX3ZlcnNpb244AQx1MzIAARBhcGlzfQgBHEFwaXNWZWMAAUx0cmFuc2FjdGlvbl92ZXJzaW9uOAEMdTMyAAE4c3lzdGVtX3ZlcnNpb24MAQh1OAAAfQgEDENvdwQEVAGBCAAEAIEIAAAAgQgAAAKFCACFCAAABAhhAjgAiQgMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASQ8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC5ETm90aGluZ0F1dGhvcml6ZWQABwRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACASUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0jQgMKHNwX3J1bnRpbWUYdHJhaXRzLEJsYWtlVHdvMjU2AAAAAJEIEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwGVCAAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzpQgBOFZlYzxFeHRyaW5zaWM+AACVCBAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAQAQQ2FsbAEgJFNpZ25hdHVyZQF5BBRFeHRyYQGZCAAEABgAAACZCAh0Y3VtdWx1c19wYWxsZXRfd2VpZ2h0X3JlY2xhaW1QU3RvcmFnZVdlaWdodFJlY2xhaW0IBFQABFMBnQgABACdCAEEUwAAnQgAAAQooQidBqEGpQapBq0GsQa5Br0GwQYAoQgAAAQwECUGKQY1BkEGTQZZBmUGcQaBBo0GmQYApQgAAAKVCACpCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTBibG9ja193ZWlnaHQ8QmxvY2tXZWlnaHRNb2RlBARUAAEMIEZ1bGxDb3JlBAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAAARFBvdGVudGlhbEZ1bGxDb3JlDAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjkASxPcHRpb248dTMyPgABNHRhcmdldF93ZWlnaHR5AgEYV2VpZ2h0AAEAOEZyYWN0aW9uT2ZDb3JlCAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjkASxPcHRpb248dTMyPgACAACtCAAABs0DALEIAAACtQgAtQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50IEFuY2VzdG9yBARIATwADAE4dXNlZF9iYW5kd2lkdGi5CAE0VXNlZEJhbmR3aWR0aAABOHBhcmFfaGVhZF9oYXNozQgBJE9wdGlvbjxIPgABYGNvbnN1bWVkX2dvX2FoZWFkX3NpZ25hbNEIAYxPcHRpb248cmVsYXlfY2hhaW46OlVwZ3JhZGVHb0FoZWFkPgAAuQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50NFVzZWRCYW5kd2lkdGgAAAwBNHVtcF9tc2dfY291bnQ4AQx1MzIAATx1bXBfdG90YWxfYnl0ZXM4AQx1MzIAATRocm1wX291dGdvaW5nvQgBjEJUcmVlTWFwPFBhcmFJZCwgSHJtcENoYW5uZWxVcGRhdGU+AAC9CAQgQlRyZWVNYXAIBEsBnARWAcEIAAQAxQgAAADBCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnRESHJtcENoYW5uZWxVcGRhdGUAAAgBJG1zZ19jb3VudDgBDHUzMgABLHRvdGFsX2J5dGVzOAEMdTMyAADFCAAAAskIAMkIAAAECJzBCADNCAQYT3B0aW9uBARUATwBCBBOb25lAAAAEFNvbWUEADwAAAEAANEIBBhPcHRpb24EBFQB1QgBCBBOb25lAAAAEFNvbWUEANUIAAABAADVCAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OThVcGdyYWRlR29BaGVhZAABCBRBYm9ydAAAABxHb0FoZWFkAAEAANkIDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDhTZWdtZW50VHJhY2tlcgQESAE8AAwBOHVzZWRfYmFuZHdpZHRouQgBNFVzZWRCYW5kd2lkdGgAAThocm1wX3dhdGVybWFya+QBgE9wdGlvbjxyZWxheV9jaGFpbjo6QmxvY2tOdW1iZXI+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFs0QgBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AADdCAQYT3B0aW9uBARUAeEIAQgQTm9uZQAAABBTb21lBADhCAAAAQAA4QgMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlIVXBncmFkZVJlc3RyaWN0aW9uAAEEHFByZXNlbnQAAAAA5QgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3RYTWVzc2FnaW5nU3RhdGVTbmFwc2hvdAAAEAEwZG1xX21xY19oZWFkPAFEcmVsYXlfY2hhaW46Okhhc2gAAZxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHnpCAGMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAUBpbmdyZXNzX2NoYW5uZWxz7QgBiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AATxlZ3Jlc3NfY2hhbm5lbHPtCAGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgAA6QgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3SMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAAgBPHJlbWFpbmluZ19jb3VudDgBDHUzMgABOHJlbWFpbmluZ19zaXplOAEMdTMyAADtCAAAAvEIAPEIAAAECJz1CAD1CAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUxBYnJpZGdlZEhybXBDaGFubmVsAAAYATBtYXhfY2FwYWNpdHk4AQx1MzIAAThtYXhfdG90YWxfc2l6ZTgBDHUzMgABQG1heF9tZXNzYWdlX3NpemU4AQx1MzIAASRtc2dfY291bnQ4AQx1MzIAASh0b3RhbF9zaXplOAEMdTMyAAEgbXFjX2hlYWTNCAEwT3B0aW9uPEhhc2g+AAD5CAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OWRBYnJpZGdlZEhvc3RDb25maWd1cmF0aW9uAAAoATRtYXhfY29kZV9zaXplOAEMdTMyAAFIbWF4X2hlYWRfZGF0YV9zaXplOAEMdTMyAAFYbWF4X3Vwd2FyZF9xdWV1ZV9jb3VudDgBDHUzMgABVG1heF91cHdhcmRfcXVldWVfc2l6ZTgBDHUzMgABXG1heF91cHdhcmRfbWVzc2FnZV9zaXplOAEMdTMyAAGQbWF4X3Vwd2FyZF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAGIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZTgBDHUzMgABbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bjgBLEJsb2NrTnVtYmVyAAFgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5OAEsQmxvY2tOdW1iZXIAAVBhc3luY19iYWNraW5nX3BhcmFtc/0IAUhBc3luY0JhY2tpbmdQYXJhbXMAAP0IEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NGFzeW5jX2JhY2tpbmdIQXN5bmNCYWNraW5nUGFyYW1zAAAIAUxtYXhfY2FuZGlkYXRlX2RlcHRoOAEMdTMyAAFQYWxsb3dlZF9hbmNlc3RyeV9sZW44AQx1MzIAAAEJCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50RE1lc3NhZ2VRdWV1ZUNoYWluAAAEADwBJFJlbGF5SGFzaAAABQkEIEJUcmVlTWFwCARLAZwEVgEBCQAEAAkJAAAACQkAAAINCQANCQAABAicAQkAEQkMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50QEluYm91bmRNZXNzYWdlSWQAAAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABLHJldmVyc2VfaWR4OAEMdTMyAAAVCQAAAhkJABkJCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNMT3V0Ym91bmRIcm1wTWVzc2FnZQQISWQBnAAIASRyZWNpcGllbnScAQhJZAABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AAAdCQh8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbSxQb1ZNZXNzYWdlcwAAGAFocmVsYXlfc3RvcmFnZV9yb290X29yX2hhc2g8AURyZWxheV9jaGFpbjo6SGFzaAABNGNvcmVfc2VsZWN0b3IMAQh1OAABMGJ1bmRsZV9pbmRleAwBCHU4AAE0dW1wX21zZ19jb3VudDgBDHUzMgABTGhybXBfb3V0Ym91bmRfY291bnQ4AQx1MzIAAWBocm1wX291dGJvdW5kX3JlY2lwaWVudHMhCQEsVmVjPFBhcmFJZD4AACEJAAACnAAlCQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAARhMT3ZlcmxhcHBpbmdVcGdyYWRlcwAABBkBQXR0ZW1wdCB0byB1cGdyYWRlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2hpbGUgZXhpc3RpbmcgdXBncmFkZSBwZW5kaW5nLlBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBE0BUG9sa2Fkb3QgY3VycmVudGx5IHByb2hpYml0cyB0aGlzIHBhcmFjaGFpbiBmcm9tIHVwZ3JhZGluZyBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvbi4YVG9vQmlnAAIIRQFUaGUgc3VwcGxpZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgY29tcGlsZWQgaW50byBhIGJsb2IgbGFyZ2VyIHRoYW4gUG9sa2Fkb3QgaXM8d2lsbGluZyB0byBydW4uaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAMEHQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIHZhbGlkYXRpb24gZGF0YSBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLnRIb3N0Q29uZmlndXJhdGlvbk5vdEF2YWlsYWJsZQAEBCkBVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSBob3N0IGNvbmZpZ3VyYXRpb24gZGlkIG5vdCBydW4gdGhpcyBibG9jay4wTm90U2NoZWR1bGVkAAUE2E5vIHZhbGlkYXRpb24gZnVuY3Rpb24gdXBncmFkZSBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4pCQh0aW5kaXZfcGFsbGV0X3JlbGF5X3JhbmRvbW5lc3NAUmFuZG9tbmVzc1ZhbHVlcwAACAEUYmxvY2stCQFcT3B0aW9uPFJhbmRvbW5lc3NFbnRyeT4AATRvbmVfZXBvY2hfYWdvLQkBXE9wdGlvbjxSYW5kb21uZXNzRW50cnk+AAAtCQQYT3B0aW9uBARUATEJAQgQTm9uZQAAABBTb21lBAAxCQAAAQAAMQkIdGluZGl2X3BhbGxldF9yZWxheV9yYW5kb21uZXNzPFJhbmRvbW5lc3NFbnRyeQAACAEocmFuZG9tbmVzcwgBIFt1ODsgMzJdAAEYbW9tZW50OAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAA1CQxsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4GHBhbGxldBRFcnJvcgQEVAABBCxFbXB0eVN1ZmZpeAAABIRBIG5ldHdvcmsgc3VmZml4IGNhbm5vdCBiZSBlbXB0eS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuOQkMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE9CQRTAAAEAEUJARhWZWM8VD4AAD0JDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQmFsYW5jZUxvY2sEHEJhbGFuY2UBRQEADAEIaWRhAgE4TG9ja0lkZW50aWZpZXIAARhhbW91bnRFAQEcQmFsYW5jZQABHHJlYXNvbnNBCQEcUmVhc29ucwAAQQkMPHBhbGxldF9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAABFCQAAAj0JAEkJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBTQkEUwAABABRCQEYVmVjPFQ+AABNCQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgFhAhxCYWxhbmNlAUUBAAgBCGlkYQIBRFJlc2VydmVJZGVudGlmaWVyAAEYYW1vdW50RQEBHEJhbGFuY2UAAFEJAAACTQkAVQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZCQRTAAAEAF0JARhWZWM8VD4AAFkJFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBSQccQmFsYW5jZQFFAQAIAQhpZEkHAQhJZAABGGFtb3VudEUBARxCYWxhbmNlAABdCQAAAlkJAGEJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBZQkEUwAABABpCQEYVmVjPFQ+AABlCRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkARAcQmFsYW5jZQFFAQAIAQhpZBABCElkAAEYYW1vdW50RQEBHEJhbGFuY2UAAGkJAAACZQkAbQkMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXJyb3IIBFQABEkAATA4VmVzdGluZ0JhbGFuY2UAAAScVmVzdGluZyBiYWxhbmNlIHRvbyBoaWdoIHRvIHNlbmQgdmFsdWUuVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBMhBY2NvdW50IGxpcXVpZGl0eSByZXN0cmljdGlvbnMgcHJldmVudCB3aXRoZHJhd2FsLkxJbnN1ZmZpY2llbnRCYWxhbmNlAAIEeEJhbGFuY2UgdG9vIGxvdyB0byBzZW5kIHZhbHVlLkhFeGlzdGVudGlhbERlcG9zaXQAAwTsVmFsdWUgdG9vIGxvdyB0byBjcmVhdGUgYWNjb3VudCBkdWUgdG8gZXhpc3RlbnRpYWwgZGVwb3NpdC40RXhwZW5kYWJpbGl0eQAEBJBUcmFuc2Zlci9wYXltZW50IHdvdWxkIGtpbGwgYWNjb3VudC5cRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUABQTMQSB2ZXN0aW5nIHNjaGVkdWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGFjY291bnQuLERlYWRBY2NvdW50AAYEjEJlbmVmaWNpYXJ5IGFjY291bnQgbXVzdCBwcmUtZXhpc3QuPFRvb01hbnlSZXNlcnZlcwAHBLhOdW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgZXhjZWVkIGBNYXhSZXNlcnZlc2AuMFRvb01hbnlIb2xkcwAIBPhOdW1iZXIgb2YgaG9sZHMgZXhjZWVkIGBWYXJpYW50Q291bnRPZjxUOjpSdW50aW1lSG9sZFJlYXNvbj5gLjhUb29NYW55RnJlZXplcwAJBJhOdW1iZXIgb2YgZnJlZXplcyBleGNlZWQgYE1heEZyZWV6ZXNgLkxJc3N1YW5jZURlYWN0aXZhdGVkAAoEAQFUaGUgaXNzdWFuY2UgY2Fubm90IGJlIG1vZGlmaWVkIHNpbmNlIGl0IGlzIGFscmVhZHkgZGVhY3RpdmF0ZWQuJERlbHRhWmVybwALBGRUaGUgZGVsdGEgY2Fubm90IGJlIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnEJCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudCBSZWxlYXNlcwABCCRWMUFuY2llbnQAAAAIVjIAAQAAdQkQNGZyYW1lX3N1cHBvcnQYdHJhaXRzHHN0b3JhZ2UYTm9Ecm9wBARUAXkJAAQAeQkBBFQAAHkJGDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGUkaW1iYWxhbmNlJEltYmFsYW5jZQwEQgFFARhPbkRyb3AAOE9wcG9zaXRlT25Ecm9wAAAEARhhbW91bnRFAQEEQgAAfQkMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FFVzYWdlCBxCYWxhbmNlAUUBLEJsb2NrTnVtYmVyATgACAEQdXNlZEUBARxCYWxhbmNlAAEgYXRfYmxvY2s4ASxCbG9ja051bWJlcgAAgQkMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FEVycm9yBARUAAEIHE5vVXNhZ2UAAASAVGhlIG9yaWdpbiBoYXMgbm8gdXNhZ2UgdHJhY2tlZC4cTm90WmVybwABBFhUaGUgdXNhZ2UgaXMgbm90IHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoUJDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0RGV0YWlscwwcQmFsYW5jZQFFASRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFFAQAwARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABGHN1cHBseUUBARxCYWxhbmNlAAEcZGVwb3NpdEUBAThEZXBvc2l0QmFsYW5jZQABLG1pbl9iYWxhbmNlRQEBHEJhbGFuY2UAATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASBhY2NvdW50czgBDHUzMgABLHN1ZmZpY2llbnRzOAEMdTMyAAEkYXBwcm92YWxzOAEMdTMyAAEYc3RhdHVziQkBLEFzc2V0U3RhdHVzAACJCQw0cGFsbGV0X2Fzc2V0cxR0eXBlcyxBc3NldFN0YXR1cwABDBBMaXZlAAAAGEZyb3plbgABAChEZXN0cm95aW5nAAIAAI0JAAAECHEBBACRCQw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UBRQE4RGVwb3NpdEJhbGFuY2UBRQEURXh0cmEBECRBY2NvdW50SWQBBAAQARxiYWxhbmNlRQEBHEJhbGFuY2UAARhzdGF0dXOVCQE0QWNjb3VudFN0YXR1cwABGHJlYXNvbpkJAahFeGlzdGVuY2VSZWFzb248RGVwb3NpdEJhbGFuY2UsIEFjY291bnRJZD4AARRleHRyYRABFEV4dHJhAACVCQw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBY2NvdW50U3RhdHVzAAEMGExpcXVpZAAAABhGcm96ZW4AAQAcQmxvY2tlZAACAACZCQw0cGFsbGV0X2Fzc2V0cxR0eXBlczxFeGlzdGVuY2VSZWFzb24IHEJhbGFuY2UBRQEkQWNjb3VudElkAQQBFCBDb25zdW1lcgAAAChTdWZmaWNpZW50AAEALERlcG9zaXRIZWxkBABFAQEcQmFsYW5jZQACADxEZXBvc2l0UmVmdW5kZWQAAwAsRGVwb3NpdEZyb20IAAQBJEFjY291bnRJZAAARQEBHEJhbGFuY2UABAAAnQkAAAQMcQEEBAChCQw0cGFsbGV0X2Fzc2V0cxR0eXBlcyBBcHByb3ZhbAgcQmFsYW5jZQFFAThEZXBvc2l0QmFsYW5jZQFFAQAIARhhbW91bnRFAQEcQmFsYW5jZQABHGRlcG9zaXRFAQE4RGVwb3NpdEJhbGFuY2UAAKUJDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFzc2V0TWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlAUUBNEJvdW5kZWRTdHJpbmcBqQkAFAEcZGVwb3NpdEUBAThEZXBvc2l0QmFsYW5jZQABEG5hbWWpCQE0Qm91bmRlZFN0cmluZwABGHN5bWJvbKkJATRCb3VuZGVkU3RyaW5nAAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sAACpCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAK0JDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABYChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEyFRoZSBhc3NldCBJRCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBbYE5leHRBc3NldElkYF0uPENvbnRhaW5zRnJlZXplcwAVBE0BVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gZnJlZXplcy40Q29udGFpbnNIb2xkcwAWBEUBVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gaG9sZHMuPFRvb01hbnlSZXNlcnZlcwAXBIBUcmllZCBzZXR0aW5nIHRvbyBtYW55IHJlc2VydmVzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6xCQQYT3B0aW9uBARUAYUJAQgQTm9uZQAAABBTb21lBACFCQAAAQAAtQkEGE9wdGlvbgQEVAGlCQEIEE5vbmUAAAAQU29tZQQApQkAAAEAALkJDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXJyb3IIBFQABEkAAQQwVG9vTWFueUhvbGRzAAAEMQFOdW1iZXIgb2YgaG9sZHMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgdGhlIGNvdW50IG9mIGBSdW50aW1lSG9sZFJlYXNvbmAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lr0JDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXJyb3IEBFQAAQxAVW5rbm93bkFzc2V0S2luZAAABHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwABBFEBVGhlIGdpdmVuIGFzc2V0IElEIGFscmVhZHkgaGFzIGFuIGFzc2lnbmVkIGNvbnZlcnNpb24gcmF0ZSBhbmQgY2Fubm90IGJlIHJlLWNyZWF0ZWQuIE92ZXJmbG93AAIEzE92ZXJmbG93IG9jdXJyZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSByYXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7BCQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24UdHlwZXMgUG9vbEluZm8ELFBvb2xBc3NldElkATgABAEgbHBfdG9rZW44ASxQb29sQXNzZXRJZAAAxQkINGZyYW1lX3N1cHBvcnQgUGFsbGV0SWQAAAQAYQIBHFt1ODsgOF0AAMkJDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQURXJyb3IEBFQAAWBASW52YWxpZEFzc2V0UGFpcgAABLhQcm92aWRlZCBhc3NldCBwYWlyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBvb2wuKFBvb2xFeGlzdHMAAQRQUG9vbCBhbHJlYWR5IGV4aXN0cy5IV3JvbmdEZXNpcmVkQW1vdW50AAIEdERlc2lyZWQgYW1vdW50IGNhbid0IGJlIHplcm8uYEFtb3VudE9uZUxlc3NUaGFuTWluaW1hbAADCEkBUHJvdmlkZWQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5gQW1vdW50VHdvTGVzc1RoYW5NaW5pbWFsAAQISQFQcm92aWRlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LmhSZXNlcnZlTGVmdExlc3NUaGFuTWluaW1hbAAFCE0BUmVzZXJ2ZSBuZWVkcyB0byBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuQEFtb3VudE91dFRvb0hpZ2gABgTIRGVzaXJlZCBhbW91bnQgY2FuJ3QgYmUgZXF1YWwgdG8gdGhlIHBvb2wgcmVzZXJ2ZS4wUG9vbE5vdEZvdW5kAAcEXFRoZSBwb29sIGRvZXNuJ3QgZXhpc3QuIE92ZXJmbG93AAgEVEFuIG92ZXJmbG93IGhhcHBlbmVkLoBBc3NldE9uZURlcG9zaXREaWROb3RNZWV0TWluaW11bQAJBCkBVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgZmlyc3QgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6AQXNzZXRUd29EZXBvc2l0RGlkTm90TWVldE1pbmltdW0ACgQtAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIHNlY29uZCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoxBc3NldE9uZVdpdGhkcmF3YWxEaWROb3RNZWV0TWluaW11bQALBCkBVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgZmlyc3QgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6MQXNzZXRUd29XaXRoZHJhd2FsRGlkTm90TWVldE1pbmltdW0ADAQtAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIHNlY29uZCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LnBPcHRpbWFsQW1vdW50TGVzc1RoYW5EZXNpcmVkAA0EvE9wdGltYWwgY2FsY3VsYXRlZCBhbW91bnQgaXMgbGVzcyB0aGFuIGRlc2lyZWQubEluc3VmZmljaWVudExpcXVpZGl0eU1pbnRlZAAOBHhJbnN1ZmZpY2llbnQgbGlxdWlkaXR5IG1pbnRlZC40WmVyb0xpcXVpZGl0eQAPBIhSZXF1ZXN0ZWQgbGlxdWlkaXR5IGNhbid0IGJlIHplcm8uKFplcm9BbW91bnQAEARUQW1vdW50IGNhbid0IGJlIHplcm8ujFByb3ZpZGVkTWluaW11bU5vdFN1ZmZpY2llbnRGb3JTd2FwABEE7ENhbGN1bGF0ZWQgYW1vdW50IG91dCBpcyBsZXNzIHRoYW4gcHJvdmlkZWQgbWluaW11bSBhbW91bnQujFByb3ZpZGVkTWF4aW11bU5vdFN1ZmZpY2llbnRGb3JTd2FwABIEzFByb3ZpZGVkIG1heGltdW0gYW1vdW50IGlzIG5vdCBzdWZmaWNpZW50IGZvciBzd2FwLixJbnZhbGlkUGF0aAATBNRUaGUgcHJvdmlkZWQgcGF0aCBtdXN0IGNvbnNpc3RzIG9mIDIgYXNzZXRzIGF0IGxlYXN0LjROb25VbmlxdWVQYXRoABQExFRoZSBwcm92aWRlZCBwYXRoIG11c3QgY29uc2lzdHMgb2YgdW5pcXVlIGFzc2V0cy5QSW5jb3JyZWN0UG9vbEFzc2V0SWQAFQTsSXQgd2FzIG5vdCBwb3NzaWJsZSB0byBnZXQgb3IgaW5jcmVtZW50IHRoZSBJZCBvZiB0aGUgcG9vbC4wQmVsb3dNaW5pbXVtABYE8FRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGNhbm5vdCBleGlzdCB3aXRoIHRoZSBzd2FwcGVkIGZ1bmRzLiRQb29sRW1wdHkAFwQxAVRoZSBwb29sIGV4aXN0cyBidXQgaGFzIG5vIGxpcXVpZGl0eSAoYXQgbGVhc3Qgb25lIG9mIHRoZSByZXNlcnZlcyBpcyB6ZXJvKS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuzQkEGFJlc3VsdAgEVAHRCQRFAckJAQgIT2sEANEJAAAAAAxFcnIEAMkJAAABAADRCQAABAhFAUUBANUJAAAECDgEANkJAAAEDDgEBADdCQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu4QkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAXQEBGFZlYzxUPgAA5QkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHpCQRTAAAEAO0JARhWZWM8VD4AAOkJDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldDRDYW5kaWRhdGVJbmZvCCRBY2NvdW50SWQBBBxCYWxhbmNlAUUBAAgBDHdobwQBJEFjY291bnRJZAABHGRlcG9zaXRFAQEcQmFsYW5jZQAA7QkAAALpCQDxCQxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXJyb3IEBFQAAUREVG9vTWFueUNhbmRpZGF0ZXMAAASMVGhlIHBhbGxldCBoYXMgdG9vIG1hbnkgY2FuZGlkYXRlcy5cVG9vRmV3RWxpZ2libGVDb2xsYXRvcnMAAQSsTGVhdmluZyB3b3VsZCByZXN1bHQgaW4gdG9vIGZldyBjYW5kaWRhdGVzLkBBbHJlYWR5Q2FuZGlkYXRlAAIEfEFjY291bnQgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZS4wTm90Q2FuZGlkYXRlAAMEbEFjY291bnQgaXMgbm90IGEgY2FuZGlkYXRlLlBUb29NYW55SW52dWxuZXJhYmxlcwAEBIRUaGVyZSBhcmUgdG9vIG1hbnkgSW52dWxuZXJhYmxlcy5MQWxyZWFkeUludnVsbmVyYWJsZQAFBIxBY2NvdW50IGlzIGFscmVhZHkgYW4gSW52dWxuZXJhYmxlLjxOb3RJbnZ1bG5lcmFibGUABgR8QWNjb3VudCBpcyBub3QgYW4gSW52dWxuZXJhYmxlLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAAHBJxBY2NvdW50IGhhcyBubyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRC5YVmFsaWRhdG9yTm90UmVnaXN0ZXJlZAAIBIxWYWxpZGF0b3IgSUQgaXMgbm90IHlldCByZWdpc3RlcmVkLmxJbnNlcnRUb0NhbmRpZGF0ZUxpc3RGYWlsZWQACQScQ291bGQgbm90IGluc2VydCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QudFJlbW92ZUZyb21DYW5kaWRhdGVMaXN0RmFpbGVkAAoEpENvdWxkIG5vdCByZW1vdmUgZnJvbSB0aGUgY2FuZGlkYXRlIGxpc3QuNERlcG9zaXRUb29Mb3cACwT0TmV3IGRlcG9zaXQgYW1vdW50IHdvdWxkIGJlIGJlbG93IHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLmRVcGRhdGVDYW5kaWRhdGVMaXN0RmFpbGVkAAwEkENvdWxkIG5vdCB1cGRhdGUgdGhlIGNhbmRpZGF0ZSBsaXN0LkBJbnN1ZmZpY2llbnRCb25kAA0EKQFEZXBvc2l0IGFtb3VudCBpcyB0b28gbG93IHRvIHRha2UgdGhlIHRhcmdldCdzIHNsb3QgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LlBUYXJnZXRJc05vdENhbmRpZGF0ZQAOBC0BVGhlIHRhcmdldCBhY2NvdW50IHRvIGJlIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBpcyBub3QgYSBjYW5kaWRhdGUuQElkZW50aWNhbERlcG9zaXQADwQNAVRoZSB1cGRhdGVkIGRlcG9zaXQgYW1vdW50IGlzIGVxdWFsIHRvIHRoZSBhbW91bnQgYWxyZWFkeSByZXNlcnZlZC5ASW52YWxpZFVucmVzZXJ2ZQAQBD0BQ2Fubm90IGxvd2VyIGNhbmRpZGFjeSBib25kIHdoaWxlIG9jY3VweWluZyBhIGZ1dHVyZSBjb2xsYXRvciBzbG90IGluIHRoZSBsaXN0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC71CQAAAvkJAPkJAAAECATdAQD9CQAAAgEKAAEKAAAECDgFCgAFCgwoc3Bfc3Rha2luZxxvZmZlbmNlPE9mZmVuY2VTZXZlcml0eQAABAAJCgEcUGVyYmlsbAAACQoMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJiaWxsAAAEADgBDHUzMgAADQoAAAQIEQoYABEKDBxzcF9jb3JlGGNyeXB0byRLZXlUeXBlSWQAAAQAcAEcW3U4OyA0XQAAFQoMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFcnJvcgQEVAABFDBJbnZhbGlkUHJvb2YAAARgSW52YWxpZCBvd25lcnNoaXAgcHJvb2YuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEEnE5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElEIGZvciBhY2NvdW50LjREdXBsaWNhdGVkS2V5AAIEZFJlZ2lzdGVyZWQgZHVwbGljYXRlIGtleS4YTm9LZXlzAAMEpE5vIGtleXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY291bnQuJE5vQWNjb3VudAAEBBkBS2V5IHNldHRpbmcgYWNjb3VudCBpcyBub3QgbGl2ZSwgc28gaXQncyBpbXBvc3NpYmxlIHRvIGFzc29jaWF0ZSBrZXlzLgR0RXJyb3IgZm9yIHRoZSBzZXNzaW9uIHBhbGxldC4ZCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeEBBFMAAAQAHQoBGFZlYzxUPgAAHQoAAALhAQAhCghIc3BfY29uc2Vuc3VzX3Nsb3RzEFNsb3QAAAQAKAEMdTY0AAAlCgAABAghCjgAKQoMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAZwEUwAABAAtCgEsQlRyZWVTZXQ8VD4AAC0KBCBCVHJlZVNldAQEVAGcAAQAIQkAAAAxCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATUKBFMAAAQAQQoBGFZlYzxUPgAANQoIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVYT3V0Ym91bmRDaGFubmVsRGV0YWlscwAAHAEkcmVjaXBpZW50nAEYUGFyYUlkAAEUc3RhdGU5CgE0T3V0Ym91bmRTdGF0ZQABNHNpZ25hbHNfZXhpc3RZAQEQYm9vbAABLGZpcnN0X2luZGV4zQMBDHUxNgABKGxhc3RfaW5kZXjNAwEMdTE2AAEUZmxhZ3M9CgFQT3V0Ym91bmRDaGFubmVsRmxhZ3MAATBxdWV1ZWRfYnl0ZXM4AQx1MzIAADkKCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlNE91dGJvdW5kU3RhdGUAAQgIT2sAAAAkU3VzcGVuZGVkAAEAAD0KCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlUE91dGJvdW5kQ2hhbm5lbEZsYWdzAAAEARBiaXRzOAEMdTMyAABBCgAAAjUKAEUKAAAECJzNAwBJCgxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAE0KCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlPFF1ZXVlQ29uZmlnRGF0YQAADAFEc3VzcGVuZF90aHJlc2hvbGQ4AQx1MzIAAThkcm9wX3RocmVzaG9sZDgBDHUzMgABQHJlc3VtZV90aHJlc2hvbGQ4AQx1MzIAAFEKDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABFDhCYWRRdWV1ZUNvbmZpZwAABBEBU2V0dGluZyB0aGUgcXVldWUgY29uZmlnIGZhaWxlZCBzaW5jZSBvbmUgb2YgaXRzIHZhbHVlcyB3YXMgaW52YWxpZC5AQWxyZWFkeVN1c3BlbmRlZAABBIxUaGUgZXhlY3V0aW9uIGlzIGFscmVhZHkgc3VzcGVuZGVkLjhBbHJlYWR5UmVzdW1lZAACBIRUaGUgZXhlY3V0aW9uIGlzIGFscmVhZHkgcmVzdW1lZC50VG9vTWFueUFjdGl2ZU91dGJvdW5kQ2hhbm5lbHMAAwSwVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBvdXRib3VuZCBjaGFubmVscy4YVG9vQmlnAAQEXFRoZSBtZXNzYWdlIGlzIHRvbyBiaWcuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlUKDChwYWxsZXRfeGNtGHBhbGxldCxRdWVyeVN0YXR1cwQsQmxvY2tOdW1iZXIBOAEMHFBlbmRpbmcQASRyZXNwb25kZXLtAQFEVmVyc2lvbmVkTG9jYXRpb24AAUxtYXliZV9tYXRjaF9xdWVyaWVyWQoBZE9wdGlvbjxWZXJzaW9uZWRMb2NhdGlvbj4AATBtYXliZV9ub3RpZnldCgFAT3B0aW9uPCh1OCwgdTgpPgABHHRpbWVvdXQ4ASxCbG9ja051bWJlcgAAADxWZXJzaW9uTm90aWZpZXIIARhvcmlnaW7tAQFEVmVyc2lvbmVkTG9jYXRpb24AASRpc19hY3RpdmVZAQEQYm9vbAABABRSZWFkeQgBIHJlc3BvbnNlZQoBRFZlcnNpb25lZFJlc3BvbnNlAAEIYXQ4ASxCbG9ja051bWJlcgACAABZCgQYT3B0aW9uBARUAe0BAQgQTm9uZQAAABBTb21lBADtAQAAAQAAXQoEGE9wdGlvbgQEVAFhCgEIEE5vbmUAAAAQU29tZQQAYQoAAAEAAGEKAAAECAwMAGUKCAx4Y21EVmVyc2lvbmVkUmVzcG9uc2UAAQwIVjMEAGkCATB2Mzo6UmVzcG9uc2UAAwAIVjQEANkCATB2NDo6UmVzcG9uc2UABAAIVjUEACUDATB2NTo6UmVzcG9uc2UABQAAaQoAAAQIOO0BAG0KAAAEDCh5AjgAcQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF1CgRTAAAEAHkKARhWZWM8VD4AAHUKAAAECO0BOAB5CgAAAnUKAH0KDChwYWxsZXRfeGNtGHBhbGxldFRWZXJzaW9uTWlncmF0aW9uU3RhZ2UAARBcTWlncmF0ZVN1cHBvcnRlZFZlcnNpb24AAABcTWlncmF0ZVZlcnNpb25Ob3RpZmllcnMAAQBQTm90aWZ5Q3VycmVudFRhcmdldHMEACEGATxPcHRpb248VmVjPHU4Pj4AAgBoTWlncmF0ZUFuZE5vdGlmeU9sZFRhcmdldHMAAwAAgQoAAAQMOASxAwCFCgwocGFsbGV0X3hjbRhwYWxsZXRoUmVtb3RlTG9ja2VkRnVuZ2libGVSZWNvcmQISENvbnN1bWVySWRlbnRpZmllcgEQME1heENvbnN1bWVycwAAEAEYYW1vdW50RQEBEHUxMjgAARRvd25lcu0BAURWZXJzaW9uZWRMb2NhdGlvbgABGGxvY2tlcu0BAURWZXJzaW9uZWRMb2NhdGlvbgABJGNvbnN1bWVyc4kKAdBCb3VuZGVkVmVjPChDb25zdW1lcklkZW50aWZpZXIsIHUxMjgpLCBNYXhDb25zdW1lcnM+AACJCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0KBFMAAAQAkQoBGFZlYzxUPgAAjQoAAAQIEEUBAJEKAAACjQoAlQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZCgRTAAAEAJ0KARhWZWM8VD4AAJkKAAAECEUB7QEAnQoAAAKZCgChCggocGFsbGV0X3hjbVhBdXRob3JpemVkQWxpYXNlc0VudHJ5CBhUaWNrZXQBpQoMTUFYAakKAAgBIGFsaWFzZXJzrQoBeEJvdW5kZWRWZWM8T3JpZ2luQWxpYXNlciwgTUFYPgABGHRpY2tldKUKARhUaWNrZXQAAKUKEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlIERpc2FibGVkAAAAAKkKDChwYWxsZXRfeGNtGHBhbGxldFBNYXhBdXRob3JpemVkQWxpYXNlcwAAAACtCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbEKBFMAAAQAtQoBGFZlYzxUPgAAsQoMQHhjbV9ydW50aW1lX2FwaXNIYXV0aG9yaXplZF9hbGlhc2VzNE9yaWdpbkFsaWFzZXIAAAgBIGxvY2F0aW9u7QEBRFZlcnNpb25lZExvY2F0aW9uAAEYZXhwaXJ5tQMBLE9wdGlvbjx1NjQ+AAC1CgAAArEKALkKDChwYWxsZXRfeGNtGHBhbGxldBRFcnJvcgQEVAABcCxVbnJlYWNoYWJsZQAACF0BVGhlIGRlc2lyZWQgZGVzdGluYXRpb24gd2FzIHVucmVhY2hhYmxlLCBnZW5lcmFsbHkgYmVjYXVzZSB0aGVyZSBpcyBhIG5vIHdheSBvZiByb3V0aW5nGHRvIGl0LixTZW5kRmFpbHVyZQABCEEBVGhlcmUgd2FzIHNvbWUgb3RoZXIgaXNzdWUgKGkuZS4gbm90IHRvIGRvIHdpdGggcm91dGluZykgaW4gc2VuZGluZyB0aGUgbWVzc2FnZS7IUGVyaGFwcyBhIGxhY2sgb2Ygc3BhY2UgZm9yIGJ1ZmZlcmluZyB0aGUgbWVzc2FnZS4gRmlsdGVyZWQAAgScVGhlIG1lc3NhZ2UgZXhlY3V0aW9uIGZhaWxzIHRoZSBmaWx0ZXIuSFVud2VpZ2hhYmxlTWVzc2FnZQADBLRUaGUgbWVzc2FnZSdzIHdlaWdodCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC5gRGVzdGluYXRpb25Ob3RJbnZlcnRpYmxlAAQE3FRoZSBkZXN0aW5hdGlvbiBgTG9jYXRpb25gIHByb3ZpZGVkIGNhbm5vdCBiZSBpbnZlcnRlZC4URW1wdHkABQSAVGhlIGFzc2V0cyB0byBiZSBzZW50IGFyZSBlbXB0eS44Q2Fubm90UmVhbmNob3IABgQ1AUNvdWxkIG5vdCByZS1hbmNob3IgdGhlIGFzc2V0cyB0byBkZWNsYXJlIHRoZSBmZWVzIGZvciB0aGUgZGVzdGluYXRpb24gY2hhaW4uNFRvb01hbnlBc3NldHMABwTEVG9vIG1hbnkgYXNzZXRzIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLjRJbnZhbGlkT3JpZ2luAAgEeE9yaWdpbiBpcyBpbnZhbGlkIGZvciBzZW5kaW5nLihCYWRWZXJzaW9uAAkEIQFUaGUgdmVyc2lvbiBvZiB0aGUgYFZlcnNpb25lZGAgdmFsdWUgdXNlZCBpcyBub3QgYWJsZSB0byBiZSBpbnRlcnByZXRlZC4sQmFkTG9jYXRpb24ACghBAVRoZSBnaXZlbiBsb2NhdGlvbiBjb3VsZCBub3QgYmUgdXNlZCAoZS5nLiBiZWNhdXNlIGl0IGNhbm5vdCBiZSBleHByZXNzZWQgaW4gdGhlYGRlc2lyZWQgdmVyc2lvbiBvZiBYQ00pLjhOb1N1YnNjcmlwdGlvbgALBLxUaGUgcmVmZXJlbmNlZCBzdWJzY3JpcHRpb24gY291bGQgbm90IGJlIGZvdW5kLkRBbHJlYWR5U3Vic2NyaWJlZAAMBBEBVGhlIGxvY2F0aW9uIGlzIGludmFsaWQgc2luY2UgaXQgYWxyZWFkeSBoYXMgYSBzdWJzY3JpcHRpb24gZnJvbSB1cy5YQ2Fubm90Q2hlY2tPdXRUZWxlcG9ydAANBCkBQ291bGQgbm90IGNoZWNrLW91dCB0aGUgYXNzZXRzIGZvciB0ZWxlcG9ydGF0aW9uIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi4oTG93QmFsYW5jZQAOBEEBVGhlIG93bmVyIGRvZXMgbm90IG93biAoYWxsKSBvZiB0aGUgYXNzZXQgdGhhdCB0aGV5IHdpc2ggdG8gZG8gdGhlIG9wZXJhdGlvbiBvbi4wVG9vTWFueUxvY2tzAA8EwFRoZSBhc3NldCBvd25lciBoYXMgdG9vIG1hbnkgbG9ja3Mgb24gdGhlIGFzc2V0LkxBY2NvdW50Tm90U292ZXJlaWduABAEMQFUaGUgZ2l2ZW4gYWNjb3VudCBpcyBub3QgYW4gaWRlbnRpZmlhYmxlIHNvdmVyZWlnbiBhY2NvdW50IGZvciBhbnkgbG9jYXRpb24uKEZlZXNOb3RNZXQAEQQpAVRoZSBvcGVyYXRpb24gcmVxdWlyZWQgZmVlcyB0byBiZSBwYWlkIHdoaWNoIHRoZSBpbml0aWF0b3IgY291bGQgbm90IG1lZXQuMExvY2tOb3RGb3VuZAASBPRBIHJlbW90ZSBsb2NrIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBjb3VsZCBub3QgYmUgZm91bmQuFEluVXNlABMESQFUaGUgdW5sb2NrIG9wZXJhdGlvbiBjYW5ub3Qgc3VjY2VlZCBiZWNhdXNlIHRoZXJlIGFyZSBzdGlsbCBjb25zdW1lcnMgb2YgdGhlIGxvY2suaEludmFsaWRBc3NldFVua25vd25SZXNlcnZlABUE8EludmFsaWQgYXNzZXQsIHJlc2VydmUgY2hhaW4gY291bGQgbm90IGJlIGRldGVybWluZWQgZm9yIGl0LnhJbnZhbGlkQXNzZXRVbnN1cHBvcnRlZFJlc2VydmUAFgRFAUludmFsaWQgYXNzZXQsIGRvIG5vdCBzdXBwb3J0IHJlbW90ZSBhc3NldCByZXNlcnZlcyB3aXRoIGRpZmZlcmVudCBmZWVzIHJlc2VydmVzLjxUb29NYW55UmVzZXJ2ZXMAFwRJAVRvbyBtYW55IGFzc2V0cyB3aXRoIGRpZmZlcmVudCByZXNlcnZlIGxvY2F0aW9ucyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci5gTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlABgEfExvY2FsIFhDTSBleGVjdXRpb24gaW5jb21wbGV0ZS5gVG9vTWFueUF1dGhvcml6ZWRBbGlhc2VzABkEuFRvbyBtYW55IGxvY2F0aW9ucyBhdXRob3JpemVkIHRvIGFsaWFzIG9yaWdpbi40RXhwaXJlc0luUGFzdAAaBIxFeHBpcnkgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LjRBbGlhc05vdEZvdW5kABsE0FRoZSBhbGlhcyB0byByZW1vdmUgYXV0aG9yaXphdGlvbiBmb3Igd2FzIG5vdCBmb3VuZC6ETG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yCAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3K9CgE4RXhlY3V0aW9uRXJyb3IAHAg1AUxvY2FsIFhDTSBleGVjdXRpb24gaW5jb21wbGV0ZSB3aXRoIHRoZSBhY3R1YWwgWENNIGVycm9yIGFuZCB0aGUgaW5kZXggb2YgdGhliGluc3RydWN0aW9uIHRoYXQgY2F1c2VkIHRoZSBlcnJvci4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuvQoMKHBhbGxldF94Y20YZXJyb3JzOEV4ZWN1dGlvbkVycm9yAAGkIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAAwQoIUHBhbGxldF9tZXNzYWdlX3F1ZXVlJEJvb2tTdGF0ZQQ0TWVzc2FnZU9yaWdpbgHBAwAYARRiZWdpbjgBJFBhZ2VJbmRleAABDGVuZDgBJFBhZ2VJbmRleAABFGNvdW50OAEkUGFnZUluZGV4AAFAcmVhZHlfbmVpZ2hib3Vyc8UKAYRPcHRpb248TmVpZ2hib3VyczxNZXNzYWdlT3JpZ2luPj4AATRtZXNzYWdlX2NvdW50KAEMdTY0AAEQc2l6ZSgBDHU2NAAAxQoEGE9wdGlvbgQEVAHJCgEIEE5vbmUAAAAQU29tZQQAyQoAAAEAAMkKCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZShOZWlnaGJvdXJzBDRNZXNzYWdlT3JpZ2luAcEDAAgBEHByZXbBAwE0TWVzc2FnZU9yaWdpbgABEG5leHTBAwE0TWVzc2FnZU9yaWdpbgAAzQoAAAQIwQM4ANEKCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRBQYWdlCBBTaXplATggSGVhcFNpemUAABgBJHJlbWFpbmluZzgBEFNpemUAAThyZW1haW5pbmdfc2l6ZTgBEFNpemUAASxmaXJzdF9pbmRleDgBEFNpemUAARRmaXJzdDgBEFNpemUAARBsYXN0OAEQU2l6ZQABEGhlYXDVCgGcQm91bmRlZFZlYzx1OCwgSW50b1UzMjxIZWFwU2l6ZSwgU2l6ZT4+AADVCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AANkKDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAASQsTm90UmVhcGFibGUAAAhJAVBhZ2UgaXMgbm90IHJlYXBhYmxlIGJlY2F1c2UgaXQgaGFzIGl0ZW1zIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgYW5kIGlzIG5vdCBvbGQcZW5vdWdoLhhOb1BhZ2UAAQSEUGFnZSB0byBiZSByZWFwZWQgZG9lcyBub3QgZXhpc3QuJE5vTWVzc2FnZQACBKhUaGUgcmVmZXJlbmNlZCBtZXNzYWdlIGNvdWxkIG5vdCBiZSBmb3VuZC5AQWxyZWFkeVByb2Nlc3NlZAADBAEBVGhlIG1lc3NhZ2Ugd2FzIGFscmVhZHkgcHJvY2Vzc2VkIGFuZCBjYW5ub3QgYmUgcHJvY2Vzc2VkIGFnYWluLhhRdWV1ZWQABASsVGhlIG1lc3NhZ2UgaXMgcXVldWVkIGZvciBmdXR1cmUgZXhlY3V0aW9uLkhJbnN1ZmZpY2llbnRXZWlnaHQABQQZAVRoZXJlIGlzIHRlbXBvcmFyaWx5IG5vdCBlbm91Z2ggd2VpZ2h0IHRvIGNvbnRpbnVlIHNlcnZpY2luZyBtZXNzYWdlcy5gVGVtcG9yYXJpbHlVbnByb2Nlc3NhYmxlAAYQqFRoaXMgbWVzc2FnZSBpcyB0ZW1wb3JhcmlseSB1bnByb2Nlc3NhYmxlLgBZAVN1Y2ggZXJyb3JzIGFyZSBleHBlY3RlZCwgYnV0IG5vdCBndWFyYW50ZWVkLCB0byByZXNvbHZlIHRoZW1zZWx2ZXMgZXZlbnR1YWxseSB0aHJvdWdoJHJldHJ5aW5nLixRdWV1ZVBhdXNlZAAHDOxUaGUgcXVldWUgaXMgcGF1c2VkIGFuZCBubyBtZXNzYWdlIGNhbiBiZSBleGVjdXRlZCBmcm9tIGl0LgAdAVRoaXMgY2FuIGNoYW5nZSBhdCBhbnkgdGltZSBhbmQgbWF5IHJlc29sdmUgaW4gdGhlIGZ1dHVyZSBieSByZS10cnlpbmcuTFJlY3Vyc2l2ZURpc2FsbG93ZWQACAQxAUFub3RoZXIgY2FsbCBpcyBpbiBwcm9ncmVzcyBhbmQgbmVlZHMgdG8gZmluaXNoIGJlZm9yZSB0aGlzIGNhbGwgY2FuIGhhcHBlbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu3QoMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu4QoAAAQIBAgA5QoIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAUUBJEFjY291bnRJZAEEME1heEFwcHJvdmFscwAAEAEQd2hlbjkEAVhUaW1lcG9pbnQ8QmxvY2tOdW1iZXI+AAEcZGVwb3NpdEUBARxCYWxhbmNlAAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEkYXBwcm92YWxz6QoBjEJvdW5kZWRWZWM8QWNjb3VudElkLCBNYXhBcHByb3ZhbHM+AADpCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AADtCgw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFcnJvcgQEVAABOEBNaW5pbXVtVGhyZXNob2xkAAAEfFRocmVzaG9sZCBtdXN0IGJlIDIgb3IgZ3JlYXRlci48QWxyZWFkeUFwcHJvdmVkAAEErENhbGwgaXMgYWxyZWFkeSBhcHByb3ZlZCBieSB0aGlzIHNpZ25hdG9yeS5ETm9BcHByb3ZhbHNOZWVkZWQAAgScQ2FsbCBkb2Vzbid0IG5lZWQgYW55IChtb3JlKSBhcHByb3ZhbHMuRFRvb0Zld1NpZ25hdG9yaWVzAAMEqFRoZXJlIGFyZSB0b28gZmV3IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LkhUb29NYW55U2lnbmF0b3JpZXMABASsVGhlcmUgYXJlIHRvbyBtYW55IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LlRTaWduYXRvcmllc091dE9mT3JkZXIABQQNAVRoZSBzaWduYXRvcmllcyB3ZXJlIHByb3ZpZGVkIG91dCBvZiBvcmRlcjsgdGhleSBzaG91bGQgYmUgb3JkZXJlZC5MU2VuZGVySW5TaWduYXRvcmllcwAGBA0BVGhlIHNlbmRlciB3YXMgY29udGFpbmVkIGluIHRoZSBvdGhlciBzaWduYXRvcmllczsgaXQgc2hvdWxkbid0IGJlLiBOb3RGb3VuZAAHBKBNdWx0aXNpZyBvcGVyYXRpb24gbm90IGZvdW5kIGluIHN0b3JhZ2UuIE5vdE93bmVyAAgIUQFPbmx5IHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBtdWx0aXNpZyBpcyBhYmxlIHRvIGNhbmNlbCBpdCBvciB1cGRhdGU0aXRzIGRlcG9zaXRzLixOb1RpbWVwb2ludAAJBB0BTm8gdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gaXMgYWxyZWFkeSB1bmRlcndheS44V3JvbmdUaW1lcG9pbnQACgQtAUEgZGlmZmVyZW50IHRpbWVwb2ludCB3YXMgZ2l2ZW4gdG8gdGhlIG11bHRpc2lnIG9wZXJhdGlvbiB0aGF0IGlzIHVuZGVyd2F5LkxVbmV4cGVjdGVkVGltZXBvaW50AAsE9EEgdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IG5vIG11bHRpc2lnIG9wZXJhdGlvbiBpcyB1bmRlcndheS48TWF4V2VpZ2h0VG9vTG93AAwE0FRoZSBtYXhpbXVtIHdlaWdodCBpbmZvcm1hdGlvbiBwcm92aWRlZCB3YXMgdG9vIGxvdy40QWxyZWFkeVN0b3JlZAANBKBUaGUgZGF0YSB0byBiZSBzdG9yZWQgaXMgYWxyZWFkeSBzdG9yZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvEKDCxwYWxsZXRfc3VkbxhwYWxsZXQURXJyb3IEBFQAAQQsUmVxdWlyZVN1ZG8AAASAU2VuZGVyIG11c3QgYmUgdGhlIFN1ZG8gYWNjb3VudC4EaEVycm9yIGZvciB0aGUgU3VkbyBwYWxsZXQu9QoAAAQI+QpFAQD5CgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAf0KBFMAAAQAAQsBGFZlYzxUPgAA/QoIMHBhbGxldF9wcm94eTxQcm94eURlZmluaXRpb24MJEFjY291bnRJZAEEJFByb3h5VHlwZQFJBCxCbG9ja051bWJlcgE4AAwBIGRlbGVnYXRlBAEkQWNjb3VudElkAAEocHJveHlfdHlwZUkEASRQcm94eVR5cGUAARRkZWxheTgBLEJsb2NrTnVtYmVyAAABCwAAAv0KAAULAAAECAkLRQEACQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAENCwRTAAAEABELARhWZWM8VD4AAA0LCDBwYWxsZXRfcHJveHkwQW5ub3VuY2VtZW50DCRBY2NvdW50SWQBBBBIYXNoATwsQmxvY2tOdW1iZXIBOAAMARByZWFsBAEkQWNjb3VudElkAAEkY2FsbF9oYXNoPAEQSGFzaAABGGhlaWdodDgBLEJsb2NrTnVtYmVyAAARCwAAAg0LABULDDBwYWxsZXRfcHJveHkYcGFsbGV0FEVycm9yBARUAAEgHFRvb01hbnkAAAQhAVRoZXJlIGFyZSB0b28gbWFueSBwcm94aWVzIHJlZ2lzdGVyZWQgb3IgdG9vIG1hbnkgYW5ub3VuY2VtZW50cyBwZW5kaW5nLiBOb3RGb3VuZAABBHRQcm94eSByZWdpc3RyYXRpb24gbm90IGZvdW5kLiBOb3RQcm94eQACBMxTZW5kZXIgaXMgbm90IGEgcHJveHkgb2YgdGhlIGFjY291bnQgdG8gYmUgcHJveGllZC4sVW5wcm94eWFibGUAAwQhAUEgY2FsbCB3aGljaCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgcHJveHkgdHlwZSdzIGZpbHRlciB3YXMgYXR0ZW1wdGVkLiREdXBsaWNhdGUABARsQWNjb3VudCBpcyBhbHJlYWR5IGEgcHJveHkuME5vUGVybWlzc2lvbgAFBBUBQ2FsbCBtYXkgbm90IGJlIG1hZGUgYnkgcHJveHkgYmVjYXVzZSBpdCBtYXkgZXNjYWxhdGUgaXRzIHByaXZpbGVnZXMuLFVuYW5ub3VuY2VkAAYE0EFubm91bmNlbWVudCwgaWYgbWFkZSBhdCBhbGwsIHdhcyBtYWRlIHRvbyByZWNlbnRseS4sTm9TZWxmUHJveHkABwRkQ2Fubm90IGFkZCBzZWxmIGFzIHByb3h5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4ZCwxMaW5kaXZfcGFsbGV0X3Blb3BsZRR0eXBlczBQZXJzb25SZWNvcmQIGE1lbWJlcgEIJEFjY291bnRJZAEEAAgBDGtleQgBGE1lbWJlcgABHGFjY291bnQ1AQFET3B0aW9uPEFjY291bnRJZD4AAB0LDExpbmRpdl9wYWxsZXRfcGVvcGxlGHBhbGxldBRFcnJvcgQEVAABlCROb3RQZXJzb24AAATQVGhlIHN1cHBsaWVkIGlkZW50aWZpZXIgZG9lcyBub3QgcmVwcmVzZW50IGEgcGVyc29uLhROb0tleQABBJxUaGUgZ2l2ZW4gcGVyc29uIGhhcyBubyBhc3NvY2lhdGVkIGtleS44SW52YWxpZENvbnRleHQAAgQpAVRoZSBjb250ZXh0IGlzIG5vdCBhIG1lbWJlciBvZiB0aG9zZSBhbGxvd2VkIHRvIGhhdmUgYWNjb3VudCBhbGlhc2VzIGhlbGQuOEludmFsaWRBY2NvdW50AAMEZFRoZSBhY2NvdW50IGlzIG5vdCBrbm93bi4wQWNjb3VudEluVXNlAAQEyFRoZSBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlIHVuZGVyIGFub3RoZXIgYWxpYXMuMEludmFsaWRQcm9vZgAFBFRUaGUgcHJvb2YgaXMgaW52YWxpZC5ASW52YWxpZFNpZ25hdHVyZQAGBGRUaGUgc2lnbmF0dXJlIGlzIGludmFsaWQuJE5vTWVtYmVycwAHBNBUaGVyZSBhcmUgbm90IHlldCBhbnkgbWVtYmVycyBvZiBvdXIgcGVyc29uaG9vZCBzZXQuKEluY29tcGxldGUACAQFAVRoZSByb290IGNhbm5vdCBiZSBmaW5hbGl6ZWQgYXMgdGhlcmUgYXJlIHN0aWxsIHVucHVzaGVkIG1lbWJlcnMuKFN0aWxsRnJlc2gACQRgVGhlIHJvb3QgaXMgc3RpbGwgZnJlc2guOFRvb01hbnlNZW1iZXJzAAoEiFRvbyBtYW55IG1lbWJlcnMgaGF2ZSBiZWVuIHB1c2hlZC48S2V5QWxyZWFkeUluVXNlAAsElEtleSBhbHJlYWR5IGluIHVzZSBieSBhbm90aGVyIHBlcnNvbi4sS2V5Tm90Rm91bmQADASgVGhlIG9sZCBrZXkgd2FzIG5vdCBmb3VuZCB3aGVuIGV4cGVjdGVkLjBDb3VsZE5vdFB1c2gADQSQQ291bGQgbm90IHB1c2ggbWVtYmVyIGludG8gdGhlIHJpbmcuHFNhbWVLZXkADgSUVGhlIHJlY29yZCBpcyBhbHJlYWR5IHVzaW5nIHRoaXMga2V5LlRQZXJzb25hbElkTm90UmVzZXJ2ZWQADwR0UGVyc29uYWwgSWQgd2FzIG5vdCByZXNlcnZlZC6AUGVyc29uYWxJZFJlc2VydmF0aW9uQ2Fubm90UmVuZXcAEASQUGVyc29uYWwgSWQgaGFzIG5ldmVyIGJlZW4gcmVzZXJ2ZWQukFBlcnNvbmFsSWROb3RSZXNlcnZlZE9yTm90UmVjb2duaXplZAARBNxQZXJzb25hbCBJZCB3YXMgbm90IHJlc2VydmVkIG9yIG5vdCBhbHJlYWR5IHJlY29nbml6ZWQuLEludmFsaWRSaW5nABIErFJpbmcgY2Fubm90IGJlIG1lcmdlZCBpZiBpdCdzIHRoZSB0b3AgcmluZy5IU3VzcGVuc2lvbnNQZW5kaW5nABME5FJpbmcgY2Fubm90IGJlIGJ1aWx0IHdoaWxlIHRoZXJlIGFyZSBzdXNwZW5zaW9ucyBwZW5kaW5nLlxSaW5nQWJvdmVNZXJnZVRocmVzaG9sZAAUBNRSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyBub3QgYmVsb3cgMS8yIGNhcGFjaXR5LkhJbnZhbGlkU3VzcGVuc2lvbnMAFQSgU3VzcGVuc2lvbiBpbmRpY2VzIHByb3ZpZGVkIGFyZSBpbnZhbGlkLkROb011dGF0aW9uU2Vzc2lvbgAWBDUBQW4gbXV0YXRpbmcgYWN0aW9uIHdhcyBxdWV1ZWQgd2hlbiB0aGVyZSB3YXMgbm8gbXV0YXRpb24gc2Vzc2lvbiBpbiBwcm9ncmVzcy5wQ291bGROb3RTdGFydE11dGF0aW9uU2Vzc2lvbgAXBKRBbiBtdXRhdGluZyBzZXNzaW9uIGNvdWxkIG5vdCBiZSBzdGFydGVkLmxTdXNwZW5zaW9uU2Vzc2lvbkluUHJvZ3Jlc3MAGAT0Q2Fubm90IG1lcmdlIHJpbmdzIHdoaWxlIGEgc3VzcGVuc2lvbiBzZXNzaW9uIGlzIGluIHByb2dyZXNzLjRBbGlhc05vdFN0YWxlABkEfFRoZSBhbGlhcyBtYXBwaW5nIGlzIG5vdCBzdGFsZS44VGltZU91dE9mUmFuZ2UAGgR4Q2FsbCBpcyB0b28gbGF0ZSBvciB0b28gZWFybHkuWEFsaWFzQWNjb3VudEFscmVhZHlTZXQAGwTAQWxpYXMgPC0+IEFjY291bnQgaXMgYWxyZWFkeSBzZXQgYW5kIHVwIHRvIGRhdGUuME5vdFN1c3BlbmRlZAAcBNBQZXJzb25ob29kIGNhbm5vdCBiZSByZXN1bWVkIGlmIGl0IGlzIG5vdCBzdXNwZW5kZWQuJFN1c3BlbmRlZAAdBGBQZXJzb25ob29kIGlzIHN1c3BlbmRlZC5MSW52YWxpZEtleU1pZ3JhdGlvbgAeBKhJbnZhbGlkIHN0YXRlIGZvciBhdHRlbXB0ZWQga2V5IG1pZ3JhdGlvbi5MS2V5QWxyZWFkeVN1c3BlbmRlZAAfCFUBSW52YWxpZCBzdXNwZW5zaW9uIG9mIGEga2V5IGJlbG9uZ2luZyB0byBhIHBlcnNvbiB3aG9zZSBpbmRleCBpbiB0aGUgcmluZyBoYXMgYWxyZWFkebhiZWVuIGluY2x1ZGVkIGluIHRoZSBwZW5kaW5nIHN1c3BlbnNpb25zIGxpc3QuVEludmFsaWRPbmJvYXJkaW5nU2l6ZQAgBOhUaGUgb25ib2FyZGluZyBzaXplIG11c3Qgbm90IGV4Y2VlZCB0aGUgbWF4aW11bSByaW5nIHNpemUuQEludmFsaWRNZW1iZXJLZXkAIQSsVGhlIG1lbWJlciBrZXkgaXMgbm90IHZhbGlkIGZvciB0aGUgY3J5cHRvLnRQZW9wbGVDb2xsZWN0aW9uQWxyZWFkeUV4aXN0cwAiBLxUaGUgcGVvcGxlIGNvbGxlY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLjRBbGlhc01pc21hdGNoACMEGQFUaGUgcHJvdmlkZWQgYWxpYXMgZG9lcyBub3QgbWF0Y2ggdGhlIGFjY291bnQncyBjdXJyZW50IGFsaWFzIG1hcHBpbmcuOE5vU3RhbGVBbGlhc2VzACQEoE5vbmUgb2YgdGhlIHN1cHBsaWVkIGFsaWFzZXMgd2VyZSBzdGFsZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuIQsMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQkTW9iQ3JlZGl0BBxCYWxhbmNlAUUBABABFHZvdGVkOAEMdTMyAAEcY2xlYW5lZDgBDHUzMgABHGNvcnJlY3Q4AQx1MzIAARhjcmVkaXRFAQEcQmFsYW5jZQAAJQsAAAQIOAgAKQsMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQgT3BlbkNhc2UELFJ1bnRpbWVDYWxsASAADAEUc2luY2UoAUBTZWNzU2luY2VHZW5lc2lzAAEcZGV0YWlscy0LAWBDYXNlRGV0YWlsczxSdW50aW1lQ2FsbD4AARR0YWxseUELASRWb3RlVGFsbHkAAC0LDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0LENhc2VEZXRhaWxzBCxSdW50aW1lQ2FsbAEgAAwBJHN0YXRlbWVudDELASRTdGF0ZW1lbnQAARxjb250ZXh0eAFASnVkZ2VtZW50Q29udGV4dAABIGNhbGxiYWNrPQsB/ENhbGxiYWNrPChDYXNlSW5kZXgsIEp1ZGdlbWVudENvbnRleHQsIEp1ZGdlbWVudCksIFJ1bnRpbWVDYWxsPgAAMQsQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkkU3RhdGVtZW50AAEMKFByb29mT2ZJbmsMARhkZXNpZ241CwFUcHJvb2Zfb2ZfaW5rOjpJbmtTcGVjAAEgZXZpZGVuY2UIATBFdmlkZW5jZUhhc2gAAUxwcm9iYWJsZV9hY2NlcHRhYmxlWQEBEGJvb2wAAABISWRlbnRpdHlDcmVkZW50aWFsCAEgcGxhdGZvcm05CwFAaWRlbnRpdHk6OlNvY2lhbAABIGV2aWRlbmNlOQUBOGlkZW50aXR5OjpEYXRhAAEANFVzZXJuYW1lVmFsaWQEASB1c2VybmFtZTkFAThpZGVudGl0eTo6RGF0YQACAAA1CxQ0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTBwcm9vZl9vZl9pbmscSW5rU3BlYwABEEBEZXNpZ25lZEVsZWN0aXZlCADNAwEsRmFtaWx5SW5kZXgAAM0DASxEZXNpZ25JbmRleAAAAERQcm9jZWR1cmFsQWNjb3VudAgAzQMBLEZhbWlseUluZGV4AAAIASRBY2NvdW50SWQAAQBIUHJvY2VkdXJhbFBlcnNvbmFsCADNAwEsRmFtaWx5SW5kZXgAACgBKFBlcnNvbmFsSWQAAgAoUHJvY2VkdXJhbAgAzQMBLEZhbWlseUluZGV4AABwAThQcm9jZWR1cmFsU2VlZAADAAA5CxQ0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBpZGVudGl0eRhTb2NpYWwAAQwcVHdpdHRlcgQBIHVzZXJuYW1lOQUBEERhdGEAAAAYR2l0aHViBAEgdXNlcm5hbWU5BQEQRGF0YQABABxEaXNjb3JkBAE8ZGlzcGxheV9hbmRfdGFnOQUBEERhdGEAAgAAPQsQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkgQ2FsbGJhY2sIGFBhcmFtcwAsUnVudGltZUNhbGwAAAgBMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AABBCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCRWb3RlVGFsbHkAAAwBDGF5ZTgBDHUzMgABDG5heTgBDHUzMgABIGNvbnRlbXB0OAEMdTMyAABFCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBSaXBlQ2FzZQQsUnVudGltZUNhbGwBIAAIARxkZXRhaWxzLQsBYENhc2VEZXRhaWxzPFJ1bnRpbWVDYWxsPgABHHZlcmRpY3RhBAEkSnVkZ2VtZW50AABJCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBEb25lQ2FzZQAACAEUc2luY2UoAUBTZWNzU2luY2VHZW5lc2lzAAEcdmVyZGljdGEEASRKdWRnZW1lbnQAAE0LDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0SENyZWRpdERpc3RyaWJ1dGlvbggcQmFsYW5jZQFFASxCbG9ja051bWJlcgE4ABQBFHJvdW5kOAEoUm91bmRJbmRleAABPGluaXRpYWxfYmFsYW5jZUUBARxCYWxhbmNlAAFEcmVtYWluaW5nX2JhbGFuY2VFAQEcQmFsYW5jZQABMHRvdGFsX3BvaW50cygBJFZvdGVDb3VudAABFHN0YXJ0OAEsQmxvY2tOdW1iZXIAAFELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBVQsEUwAABABZCwEYVmVjPFQ+AABVCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldDhQYXlvdXRTY2hlZHVsZQgcQmFsYW5jZQFFASxCbG9ja051bWJlcgE4AAwBJHJlbWFpbmluZzgBKFJvdW5kSW5kZXgAAUBhbW91bnRfcGVyX3JvdW5kRQEBHEJhbGFuY2UAARhwZXJpb2Q4ASxCbG9ja051bWJlcgAAWQsAAAJVCwBdCww0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmNlbnQAAAQADAEIdTgAAGELDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0FEVycm9yBARUAAFUKE5vU3VjaENhc2UAAARgVGhlIGNhc2UgZG9lcyBub3QgZXhpc3QuKE5vU3VjaFZvdGUAAQRgVGhlIHZvdGUgZG9lcyBub3QgZXhpc3QuHE5vdE9wZW4AAgRUVGhlIGNhc2UgaXMgbm90IG9wZW4uHE5vdFJpcGUAAwRUVGhlIGNhc2UgaXMgbm90IHJpcGUuHE5vdERvbmUABARkVGhlIGNhc2UgaXMgbm90IHlldCBkb25lLihDb2RlY0Vycm9yAAUEVQFUaGUgZGVjb2RlIG9mIHRoZSBjYWxsIGZhaWxlZC4gTWF5YmUgdGhlcmUgd2FzIGEgYnJlYWtpbmcgcnVudGltZSB1cGdyYWRlIGluIGJldHdlZW4/NERpc3BhdGNoRXJyb3IABgRNAVRoZSBjYWxsIGZhaWxlZCB0byBkaXNwYXRjaC4gTWF5YmUgdGhlcmUgd2FzIGEgYnJlYWtpbmcgcnVudGltZSB1cGdyYWRlIGluIGJldHdlZW4/GFJlY2VudAAHBJBUaGUgY2FzZSBpcyB0b28gcmVjZW50IHRvIGJlIHJlYXBlZC4gTm9DcmVkaXQACASgTm90IGVub3VnaCBjcmVkaXQgdG8gcGF5b3V0IHRoZSByZXdhcmRzLiBOb1Jld2FyZAAJBNRObyBtb2IgY3JlZGl0IGRpc3RyaWJ1dGlvbiBpbiBwbGFjZSB0byByZXdhcmQgdm90ZXJzLiBOb1BvaW50cwAKBKBObyBwb2ludHMgdG8gYmUgY29udmVydGVkIHRvIG1vYiBjcmVkaXQuNFRvb01hbnlDbGFpbXMACwRUVG9vIG1hbnkgdm90ZSBjbGFpbXMuIE5vUGF5b3V0AAwEWE5vIHBheW91dCBpbiBwcm9ncmVzcy5IQXJpdGhtZXRpY092ZXJmbG93AA0EtFRoZSBwb2ludCBhbmQvb3IgY3JlZGl0IGFyaXRobWV0aWMgb3ZlcmZsb3dzLkBUb29NYW55U2NoZWR1bGVzAA4EgFRvbyBtYW55IHBheW91dCByb3VuZCBzY2hlZHVsZXMuKE5vU2NoZWR1bGUADwR8Tm8gcGF5b3V0IHJvdW5kIHNjaGVkdWxlIGZvdW5kLiROb1BlbmFsdHkAEARYTm8gdm90ZSBwZW5hbHR5IGZvdW5kLhRFYXJseQARBJRUaGUgdm90ZSBwZW5hbHR5IGhhcyBub3QgZXhwaXJlZCB5ZXQuMFVuZGVyUGVuYWx0eQASBOhUaGUgdm90ZSBjYW5ub3QgYmUgY2FzdCBkdWUgdG8gYSB2b3RpbmcgcGVuYWx0eSBpbiBlZmZlY3QuWENhc2VFeHBpcmF0aW9uRGlzYWJsZWQAEwQdAVRoZSBvcGVuIGNhc2UgZXhwaXJhdGlvbiBpcyBkaXNhYmxlZCBkdWUgdG8gaW5zdWZmaWNpZW50IGFjdGl2ZSB2b3RlcnMuUENhbGxiYWNrV2VpZ2h0VG9vTG93ABQIRQFUaGUgZGlzcGF0Y2hlZCBjYWxsYmFjaydzIHdlaWdodCBleGNlZWRzIHRoZSBkZWNsYXJlZCBgbWF4X2NhbGxiYWNrX3dlaWdodGAgdXBwZXIYYm91bmQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmULDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCRDYW5kaWRhdGUQLEp1ZGdlbWVudElkATgcRGVwb3NpdAFpCyxCbG9ja051bWJlcgE4JEFjY291bnRJZAEEAQwcQXBwbGllZAwBEGNyZWRtCwGsQ3JlZGliaWxpdHk8RGVwb3NpdCwgUGVyc29uYWxJZCwgQWNjb3VudElkPgABHGVudHJvcHkIARxFbnRyb3B5AAE0ZW50cm9weV9zaW5jZTgBLEJsb2NrTnVtYmVyAAAAIFNlbGVjdGVkIAEUc2luY2U4ASxCbG9ja051bWJlcgABEGNyZWRtCwGsQ3JlZGliaWxpdHk8RGVwb3NpdCwgUGVyc29uYWxJZCwgQWNjb3VudElkPgABIHJlc2VydmVkKAEoUGVyc29uYWxJZAABHGVudHJvcHkIARxFbnRyb3B5AAEYZGVzaWduNQsBHElua1NwZWMAAShhbGxvY2F0aW9ucQsBKEFsbG9jYXRpb24AARxqdWRnaW5n5AFMT3B0aW9uPEp1ZGdlbWVudElkPgABGGZhaWxlZDgBHENvdW50ZXIAAQAYUHJvdmVuEAEYZGVzaWduNQsBHElua1NwZWMAASByZXNlcnZlZCgBKFBlcnNvbmFsSWQAATB3YXNfcmVmZXJyZWRZAQEQYm9vbAABLHdhc19pbnZpdGVkWQEBEGJvb2wAAgAAaQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQARQEBKEY6OkJhbGFuY2UAAG0LDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCxDcmVkaWJpbGl0eQwcRGVwb3NpdAFpCyhQZXJzb25hbElkASgkQWNjb3VudElkAQQBDCBSZWZlcnJlZAQAKAEoUGVyc29uYWxJZAAAABxEZXBvc2l0BABpCwEcRGVwb3NpdAABABxJbnZpdGVkBAAEASRBY2NvdW50SWQAAgAAcQsMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0KEFsbG9jYXRpb24AAQwcSW5pdGlhbAAAACBJbml0RG9uZQABABBGdWxsAAIAAHULDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhQZXJzb24EPEJvdW5kZWRBY2NvdW50cwF5CwAkARhkZXNpZ259CwE8T3B0aW9uPElua1NwZWM+AAFAYWN0aXZlX3JlZmVycmFsc3kLATxCb3VuZGVkQWNjb3VudHMAAWBhbGxvd2VkX3JlZmVycmFsX3RpY2tldHM4ARxDb3VudGVyAAE0YmFkX3JlZmVycmFsczgBHENvdW50ZXIAAVBzdWNjZXNzZnVsX3JlZmVycmFsczgBHENvdW50ZXIAASRyZWZlcnJhbHM4ARxDb3VudGVyAAEsZGVyaXZhdGl2ZXM4ARxDb3VudGVyAAEYYmFubmVkWQEBEGJvb2wAAWBwZW5kaW5nX3JlZmVycmFsX3Jld2FyZHM4ARxDb3VudGVyAAB5CwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AAB9CwQYT3B0aW9uBARUATULAQgQTm9uZQAAABBTb21lBAA1CwAAAQAAgQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGFCwRTAAAEAIkLARhWZWM8VD4AAIULDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldDhSZWZlcnJhbFRpY2tldAQYVGlja2V0AQQABAEYdGlja2V0BAEYVGlja2V0AACJCwAAAoULAI0LDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhGYW1pbHkAAAgBEGtpbmSBBAEoRmFtaWx5S2luZAABCGlkCAEgRmFtaWx5SWQAAJELAAAECM0DzQMAlQsMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0MERlc2lnblN0YXR1cwABCCBSZXNlcnZlZAAAACRDb21taXR0ZWQAAQAAmQsAAAQIBAQAnQsMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0FEVycm9yBARUAAGgKEluUHJvZ3Jlc3MAAATMQWNjb3VudCBpcyBhbHJlYWR5IGFwcGx5aW5nIHRvIG1ha2UgYSBwcm9vZi1vZi1pbmsuKE5vUmVmZXJyYWwAAQR4QWNjb3VudCBoYXMgbm90IGJlZW4gcmVmZXJyZWQuKEJhZENvbnRleHQAAgToVGhlIGNhbGxiYWNrIGNvbnRleHQgaXMgaW52YWxpZDsgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLkxVbmV4cGVjdGVkSnVkZ2VtZW50AAMEIQFUaGUgaW5jb21pbmcganVkZ2VtZW50IElEIGlzIG5vdCB3aGF0IHdlIHdlcmUgZXhwZWN0aW5nIGZvciB0aGUgYWNjb3VudC4YTm9BcmdzAAQEuE5vIGFyZ3VtZW50cyB3ZXJlIHN1cHBsaWVkIHdpdGggdGhlIGp1ZGdlbWVudC4oTm90QXBwbGllZAAFBMxUaGUgYWNjb3VudCBoYXMgbm90IGFwcGxpZWQgdG8gbWFrZSBhIHByb29mLW9mLWluay4sTm90U2VsZWN0ZWQABgSwVGhlIGNhbmRpZGF0ZSBoYXMgbm90IGNvbW1pdHRlZCB0byBhIGRlc2lnbi4kTm90UHJvdmVuAAcErFRoZSBjYW5kaWRhdGUgZGlkIG5vdCBwcm92ZSB0aGVtc2VsdmVzIHlldC44QWxyZWFkeVN0YXJ0ZWQACATIVGhlIGNhbmRpZGF0ZSBoYXMgYWxyZWFkeSBzdGFydGVkIHRoZWlyIGp1ZGdlbWVudC4oT3V0T2ZSYW5nZQAJBIBUaGUgcGVyc29uYWwgSUQgaXMgbm90IGluIHJhbmdlLjBBbHJlYWR5VGFrZW4ACgScVGhlIHBlcnNvbmFsIElEIGhhcyBhbHJlYWR5IGJlZW4gdGFrZW4uPE5vTW9yZVJlZmVycmFscwALBLhUaGUgcGVyc29uIGhhcyBubyBtb3JlIHJlZmVycmFscyBsZWZ0IHRvIGdpdmUuIFRvb0Vhcmx5AAwEYFRoZSByZXJvbGwgaXMgdG9vIGVhcmx5LjREZXNpZ25JbnZhbGlkAA0EoFRoZSByZWZlcnJlcidzIGRlc2lnbiBpcyBub3QgcHJvY2VkdXJhbC4sRGVzaWduVGFrZW4ADgScVGhlIHJlZmVycmVyJ3MgZGVzaWduIGlzIGFscmVhZHkgdGFrZW4uJEJhZFBhcmVudAAPBBUBVGhlIHJlZmVycmVyIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgcGVyc29uLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uJEJhZEZhbWlseQAQBIBUaGUgZGVzaWduIGZhbWlseSBkb2Vzbid0IGV4aXN0LixXcm9uZ0ZhbWlseQARBLRUaGUgZGVzaWduIGZhbWlseSBpcyBpbnZhbGlkIGZvciB0aGlzIGNob2ljZS4sSW5kZXhUb29CaWcAEgRBAVRoZSBpbmRleCBvZiB0aGUgZGVzaWduIG9yIHZhcmlhbnQgaXMgYmV5b25kIHRoZSBhbGxvd2VkIG1heGltdW0gZm9yIHRoZSBmYW1pbHkuEEJ1c3kAEwT4VGhlIHN5c3RlbSBpcyBidXN5IHdpdGggdG9vIG1hbnkgY29tbWl0bWVudHM7IHRyeSBhZ2FpbiBsYXRlci4YQmFubmVkABQEqFRoZSBwZXJzb24gaGFzIGJlZW4gYmFubmVkIGZyb20gcmVmZXJyaW5nLihJbXByb2JhYmxlABUEJQFUaGUgY2FuZGlkYXRlIGhhcyBub3QgZGVtb25zdHJhdGVkIHByb2JhYmx5IHRocm91Z2ggdGhlIGluaXRpYWwgZXZpZGVuY2UuKElkUmVzZXJ2ZWQAFgTAVGhlIHBlcnNvbmFsIGlkZW50aXR5IGhhcyBhbHJlYWR5IGJlZW4gcmVzZXJ2ZWQuGElkVXNlZAAXBOhUaGUgcGVyc29uYWwgaWRlbnRpdHkgaXMgYWxyZWFkeSB0YWtlbiBieSBhIHByb3ZlbiBwZXJzb24uNEludmFsaWRUaWNrZXQAGAR8VGhlIHRpY2tldCBwcm92aWRlZCBpcyBpbnZhbGlkLiBOb1RpY2tldAAZBPBUaGUgY2FsbGVyIGhhcyBub3QgcHJvdmlkZWQgYSByZWZlcnJhbCBvciBpbnZpdGF0aW9uIHRpY2tldC40Tm90QXV0aG9yaXplZAAaBKRUaGUgYWNjb3VudCBpcyBub3QgYXV0aG9yaXplZCB0byBkbyB0aGlzLiROb3RQZXJzb24AGwSQVGhlIHBlcnNvbmFsIGlkZW50aXR5IGRvZXNuJ3QgZXhpc3QuRFJlZmVycmVkQ2FuZGlkYXRlABwEXQFUaGUgY2FuZGlkYXRlIGlzIHJlZmVycmVkLiBCdXQgdGhlIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgY2FuZGlkYXRlIHRvIG5vdCBiZSByZWZlcnJlZC5QTm90UmVmZXJyZWRDYW5kaWRhdGUAHQRdAVRoZSBjYW5kaWRhdGUgaXMgbm90IHJlZmVycmVkLiBCdXQgdGhlIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgY2FuZGlkYXRlIHRvIGJlIHJlZmVycmVkLkhOb1Jld2FyZFRvUmVnaXN0ZXIAHgSgVGhlcmUgaXMgbm8gcmVmZXJyYWwgcmV3YXJkIHRvIHJlZ2lzdGVyLkBSZXdhcmRUb1JlZ2lzdGVyAB8EBQFUaGVyZSBpcyBhIHBlbmRpbmcgcmVmZXJyYWwgcmV3YXJkIHRoYXQgbXVzdCBiZSByZWdpc3RlcmVkIGZpcnN0LiROb0ludml0ZXIAIARETm8gaW52aXRlciBmb3VuZC5ASW52YWxpZFNpZ25hdHVyZQAhBEhJbnZhbGlkIHNpZ25hdHVyZS4kTm9JbnZpdGVzACIEUE5vIGludml0ZSBhdmFpbGFibGUuOEFscmVhZHlJbnZpdGVkACMEWEludml0ZSBpcyBhbHJlYWR5IHNldC4oTm9SZWZlcnJlcgAkBHRUaGUgcmVmZXJyZXIgaXMgbm90IGEgcGVyc29uLjBOb3RQb2lQZXJzb24AJQToVGhlIGluZGl2aWR1YWwgaXMgbm90IGEgcGVyc29uIHJlY29nbml6ZWQgYnkgcHJvb2Ygb2YgaW5rLlxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAAmBIhUaGUgcHJvb2Ygb2Ygb3duZXJzaGlwIGlzIGludmFsaWQuaEludmFsaWRSZWltYnVyc2VtZW50VmFsdWVzACcElFRoZSByZWltYnVyc2VtZW50IHZhbHVlcyBhcmUgaW52YWxpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuoQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzOEFyY2hpdmVkUGxheWVyBCxCbG9ja051bWJlcgE4AQggS2lja2FibGUIAShmaXJzdF9nYW1lOAEcR2FtZUlkeAABOGFyY2hpdmVkX3NpbmNlOAEsQmxvY2tOdW1iZXIAAAAoVW5raWNrYWJsZQQBKGZpcnN0X2dhbWU4ARxHYW1lSWR4AAEAAKULDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcxhQbGF5ZXIELFBsYXlEZXBvc2l0AakLACQBKGZpcnN0X2dhbWU4ARxHYW1lSWR4AAEocmVnaXN0ZXJlZFkBARBib29sAAEsc2VudF9yZXBvcnRZAQEQYm9vbAABaGVhcmx5X2F0dGVuZGFuY2VfZW5hY3RtZW50rQsBgE9wdGlvbjxFYXJseUF0dGVuZGFuY2VFbmFjdG1lbnQ+AAEoeWVzX3BlcnNvbgwBCHU4AAE0bm9fbm90X3BlcnNvbgwBCHU4AAFgZXhwZWN0ZWRfbWF4X3ZvdGVfd2VpZ2h0zQMBDHUxNgABLHZvdGVfd2VpZ2h0DAEIdTgAASxjcmVkaWJpbGl0ebkLAXhQbGF5ZXJDcmVkaWJpbGl0eTxQbGF5RGVwb3NpdD4AAKkLFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAEUBAShGOjpCYWxhbmNlAACtCwQYT3B0aW9uBARUAbELAQgQTm9uZQAAABBTb21lBACxCwAAAQAAsQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzYEVhcmx5QXR0ZW5kYW5jZUVuYWN0bWVudAAACAEoYXR0ZW5kYW5jZVkBARBib29sAAEsZGlzcG9zaXRpb261CwFEUGxheWVyRGlzcG9zaXRpb24AALULDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc0RQbGF5ZXJEaXNwb3NpdGlvbgABDBBLZWVwAAAAPEFyY2hpdmVLaWNrYWJsZQABAERBcmNoaXZlVW5raWNrYWJsZQACAAC5CwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNEUGxheWVyQ3JlZGliaWxpdHkELFBsYXlEZXBvc2l0AakLAQwcSW52aXRlZAAAAChSZWNvZ25pemVkAAEAHERlcG9zaXQEAKkLASxQbGF5RGVwb3NpdAACAAC9CwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMgR2FtZUluZm8EJEFjY291bnRJZAEEACgBFGluZGV4OAEcR2FtZUlkeAABRHJlZ2lzdHJhdGlvbl9lbmRzOAEMdTMyAAFAc2h1ZmZsZV9kZWFkbGluZTgBDHUzMgABJGdhbWVfZGF0ZTgBDHUzMgABLHJlcG9ydF9lbmRzOAEMdTMyAAEUc3RhdGXBCwFQR2FtZVN0YXRlPEFjY291bnRJZD4AAThtYXhfZ3JvdXBfc2l6ZTgBDHUzMgABGHJvdW5kcwwBCHU4AAFIcGVuZGluZ19hdHRlbmRhbmNlOAEMdTMyAAFIYWlyZHJvcHNfc2NoZWR1bGVkDAEIdTgAAMELDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcyRHYW1lU3RhdGUEJEFjY291bnRJZAEEARQwUmVnaXN0cmF0aW9uBAFEbmV4dF9wbGF5ZXJfaW5kZXg4ASxQbGF5ZXJJbmRleAAAABxTaHVmZmxlBAEQc3RlcMULAVhTaHVmZmxlU3RlcDxBY2NvdW50SWQ+AAEAJFJlcG9ydGluZwQBMHBsYXllcl9jb3VudDgBDHUzMgACADRQbGF5ZXJQcm9jZXNzBAEQc3RlcNELAXBQbGF5ZXJQcm9jZXNzU3RlcDxBY2NvdW50SWQ+AAMAKENhbmNlbGxpbmcEARBzdGVw1QsBZENhbmNlbGxpbmdTdGVwPEFjY291bnRJZD4ABAAAxQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzLFNodWZmbGVTdGVwBCRBY2NvdW50SWQBBAEQLFN0ZXAxSW5zZXJ0BAE4bGFzdF9pdGVyYXRpb27JCwGIT3B0aW9uPEFjY291bnRPclBlcnNvbjxBY2NvdW50SWQ+PgAAADRTdGVwMlJldHJpZXZlCAFEbmV4dF9wbGF5ZXJfaW5kZXg4ASxQbGF5ZXJJbmRleAABFHBoYXNlzQsBUFNodWZmbGVSZXRyaWV2ZVBoYXNlAAEATFN0ZXAzQ29tcHV0ZVdlaWdodHMMAThsYXN0X2l0ZXJhdGlvbskLAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAEwcGxheWVyX2NvdW50OAEMdTMyAAFAcmVjb2duaXplZF9jb3VudDgBDHUzMgACAERTdGVwNEF3YWl0U2Vzc2lvbgQBMHBsYXllcl9jb3VudDgBDHUzMgADAADJCwQYT3B0aW9uBARUAREFAQgQTm9uZQAAABBTb21lBAARBQAAAQAAzQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzUFNodWZmbGVSZXRyaWV2ZVBoYXNlAAEIKFJlY29nbml6ZWQAAAA0Tm90UmVjb2duaXplZAQBQHJlY29nbml6ZWRfY291bnQ4AQx1MzIAAQAA0QsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzRFBsYXllclByb2Nlc3NTdGVwBCRBY2NvdW50SWQBBAEITFN0ZXAxUHJvY2Vzc1BsYXllcnMIAThsYXN0X2l0ZXJhdGlvbskLAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAEwcGxheWVyX2NvdW50OAEMdTMyAAAARFN0ZXAyQ2xlYXJJbmRpY2VzAAEAANULDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlczhDYW5jZWxsaW5nU3RlcAQkQWNjb3VudElkAQQBCERTdGVwMURyYWluU2h1ZmZsZQAAAERTdGVwMkRyYWluUGxheWVycwQBOGxhc3RfaXRlcmF0aW9uyQsBiE9wdGlvbjxBY2NvdW50T3JQZXJzb248QWNjb3VudElkPj4AAQAA2QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAaQQBGFZlYzxUPgAA3QsAAAQIDDgA4QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAaQQBGFZlYzxUPgAA5QsAAAQIDAgA6QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHJBARTAAAEAMUEARhWZWM8VD4AAO0LAAADGwAAAAwA8QsMRGluZGl2X3BhbGxldF9nYW1lGHBhbGxldBRFcnJvcgQEVAABhCxHYW1lT25nb2luZwAABDRHYW1lIG9uZ29pbmcuOE5vUmVnaXN0cmF0aW9uAAEEeE5vIHJlZ2lzdHJhdGlvbiBwaGFzZSBvbmdvaW5nLkRPdXRkYXRlZEdhbWVTZXR1cAACBFhUaGUgc2V0dXAgaXMgb3V0ZGF0ZWQuQEludmFsaWRHYW1lU2V0dXAAAwQ4SW52YWxpZCBzZXR1cC40SW52YWxpZFJlcG9ydAAEBDxJbnZhbGlkIHJlcG9ydC4YTm9HYW1lAAUEQE5vIGdhbWUgb25nb2luZy4sTm9SZXBvcnRpbmcABgRgTm8gcmVwb3J0IHBoYXNlIG9uZ29pbmcuNE5vdFJlZ2lzdGVyZWQABwQ8Tm90IHJlZ2lzdGVyZWQuREFscmVhZHlSZWdpc3RlcmVkAAgEaFBsYXllciBhbHJlYWR5IHJlZ2lzdGVyZWQuRFJlcG9ydEFscmVhZHlTZW50AAkEUFJlcG9ydCBhbHJlYWR5IHNlbnQuFEVhcmx5AAoEbE9wZXJhdGlvbiBpcyBub3QgdmFsaWQgeWV0LkROb3RLaWNrYWJsZVBsYXllcgALBJhUaGUgb3BlcmF0aW9uIGV4cGVjdCBhIHBsYXllciBhY2NvdW50LkBOb0FyY2hpdmVkUGxheWVyAAwEZE5vIGFyY2hpdmVkIHBsYXllciBmb3VuZC4gTm9UaWNrZXQADQRATm8gdGlja2V0IGZvdW5kLiROb0ludml0ZXMADgRQTm8gaW52aXRlIGF2YWlsYWJsZS44QWxyZWFkeUludml0ZWQADwRYSW52aXRlIGlzIGFscmVhZHkgc2V0LkBOb3RBY2NvdW50UGxheWVyABAE+E5vdCBhbiBhY2NvdW50IGJhc2VkIHBsYXllciwgZXhwZWN0ZWQgYW4gYWNjb3VudCBiYXNlZCBwbGF5ZXIuaFVzZUludml0ZUJ1dEFscmVhZHlQbGF5aW5nABEEyFRoZSBwbGF5ZXIgY2FuJ3QgdXNlIGFuIGludml0ZSBpZiBhbHJlYWR5IHBsYXlpbmcuVEFub3RoZXJBY2NvdW50SW52aXRlZAASBE0BVGhlIGxpdGUgcGVyc29uIGFscmVhZHkgaW52aXRlZCBhbm90aGVyIGFjY291bnQsIGFuZCBpbnZpdGVzIG9ubHkgb25lIGFjY291bnQgZXZlci5QVG9vTWFueUdhbWVTY2hlZHVsZXMAEwRBAVRoZSBudW1iZXIgb2YgZXhpc3Rpbmcgc2NoZWR1bGVzIGFuZCBuZXcgc2NoZWR1bGVzIGV4Y2VlZHMgdGhlIGNvbmZpZ3VyZWQgbGltaXQuTE5vU3VjaEdhbWVTY2hlZHVsZWQAFAQpAVRoZSBnYW1lIHRoYXQgd2FzIHN1cHBvc2VkIHRvIGJlIHJlbW92ZWQgd2FzIG5vdCBmb3VuZCBpbiBzY2hlZHVsZWQgZ2FtZXMugEludmFsaWRTdGF0ZW1lbnRBY2NvdW50U2lnbmF0dXJlABUErFRoZSBzdGF0ZW1lbnQgYWNjb3VudCBzaWduYXR1cmUgaXMgaW52YWxpZC5wU3RhdGVtZW50QWNjb3VudEFscmVhZHlJblVzZQAWBOxUaGUgc3RhdGVtZW50IGFjY291bnQgaXMgYWxyZWFkeSBpbiB1c2VkIGJ5IGFub3RoZXIgcGxheWVyLmRJbnRlcm5hbEVycm9ySW52YWxpZFN0YXRlABcEdEludGVybmFsIGVycm9yIGludmFsaWQgc3RhdGUuQEludmFsaWRHYW1lU3RhdGUAGATwVGhlIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIGluIHRoZSBjdXJyZW50IGdhbWUgc3RhdGUuIE5vUGxheWVyABkEQE5vIHBsYXllciBmb3VuZC6QQ2Fubm90T2ZmYm9hcmRXaGlsZVJlZ2lzdGVyZWRGb3JHYW1lABoE3FRoZSBwbGF5ZXIgY2Fubm90IG9mZmJvYXJkIHdoaWxlIHJlZ2lzdGVyZWQgZm9yIGEgZ2FtZS4wSW52YWxpZFN0YXRlABsENEludmFsaWQgc3RhdGVISW52YWxpZFBsYXlEZXBvc2l0ABwE5GBzZXRfcGxheV9kZXBvc2l0YDogdGhlIHN1cHBsaWVkIGFtb3VudCBtdXN0IGJlIG5vbi16ZXJvLohJbnZhbGlkQWlyZHJvcFZyZlZhcmlhbnRGb3JBY2NvdW50AB0AmEludmFsaWRBaXJkcm9wVnJmVmFyaWFudEZvclJlY29nbml0aW9uAB4AWEludmFsaWRBaXJkcm9wVnJmQ291bnQAHwhFAVRoZSBudW1iZXIgb2Ygc3VwcGxpZWQgYWlyZHJvcCBWUkYgZW50cmllcyBkb2VzIG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHNjaGVkdWxlZDxhaXJkcm9wIGV2ZW50cy5UTm90RWxpZ2libGVGb3JBaXJkcm9wACAIVQFgY2xhaW1fYWlyZHJvcGA6IHRoZSBjbGFpbWFudCBpcyBub3QgcmVjb2duaXplZCBpbiBwYWxsZXQtc2NvcmUsIG9yIHRoZWlyIG1vc3QgcmVjZW509GF0dGVuZGVkIGdhbWUgZG9lcyBub3QgbWF0Y2ggdGhlIGBnYW1lX2luZGV4YCBvZiB0aGUgYWlyZHJvcC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu9QsMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlcyxQYXJ0aWNpcGFudAQcQmFsYW5jZQFFAQAkARRzY29yZQwBCHU4AAEYc3RyZWFr+QsBGFN0cmVhawABSGF0dGVuZGFuY2VfaGlzdG9yef0LAURBdHRlbmRhbmNlSGlzdG9yeQABGGNyZWRpdEUBARxCYWxhbmNlAAEoY2FzaGVkX291dFkBARBib29sAAFIcmVhY2hlZF9wZXJzb25ob29kWQEBEGJvb2wAAWxoYXNfZXZlcl9yZWFjaGVkX3BlcnNvbmhvb2RZAQEQYm9vbAABLHJlY29nbml0aW9uAQwBLFJlY29nbml0aW9uAAFIbGFzdF9hdHRlbmRlZF9nYW1l5AEsT3B0aW9uPHUzMj4AAPkLDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMYU3RyZWFrAAEIIEF0dGVuZGVkBAAMAQh1OAAAABhBYnNlbnQEAAwBCHU4AAEAAP0LDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXNEQXR0ZW5kYW5jZUhpc3RvcnkAAAQADAEIdTgAAAEMDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUmVjb2duaXRpb24AARBQRXh0ZXJuYWxseVJlY29nbml6ZWQAAAA0Tm90UmVjb2duaXplZAABACRTdXNwZW5kZWQEACgBKFBlcnNvbmFsSWQAAgAoUmVjb2duaXplZAQAKAEoUGVyc29uYWxJZAADAAAFDAAABAg4EQUACQwMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlcyxSb3VuZFBheW91dAQcQmFsYW5jZQFFAQAQAURyZW1haW5pbmdfYmFsYW5jZUUBARxCYWxhbmNlAAEscG9pbnRfcHJpY2VFAQEcQmFsYW5jZQABJHJlbWFpbmRlckUBARxCYWxhbmNlAAEwdG90YWxfcG9pbnRzOAEMdTMyAAANDAxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzJFJvdW5kSW5mbwgsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAUUBAAgBJGZpbmlzaF9hdDgBLEJsb2NrTnVtYmVyAAEYY3JlZGl0RQEBHEJhbGFuY2UAABEMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBFQwEUwAABAAZDAEYVmVjPFQ+AAAVDAxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzOFBheW91dFNjaGVkdWxlCBxCYWxhbmNlAUUBLEJsb2NrTnVtYmVyATgADAEkcmVtYWluaW5nOAEMdTMyAAFAYW1vdW50X3Blcl9yb3VuZEUBARxCYWxhbmNlAAEgZHVyYXRpb244ASxCbG9ja051bWJlcgAAGQwAAAIVDAAdDAxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldBRFcnJvcgQEVAABbCROb3RQZXJzb24AAASMVGhlIGNhbGxpbmcgb3JpZ2luIGlzIG5vdCBhIHBlcnNvbi5cSGFzTm90UmVhY2hlZFBlcnNvbmhvb2QAAQSMVGhlIHBlcnNvbiBkaWRuJ3QgcmVhY2ggcGVyc29uaG9vZC4gTm9SZXdhcmQAAgRQTm8gcmV3YXJkIGF2YWlsYWJsZS4cTm9TY29yZQADBIxUaGUgcGVyc29uIGhhcyBubyBhc3NvY2lhdGVkIHNjb3JlLihOb1NjaGVkdWxlAAQEdE5vIHBheW91dCBzY2hlZHVsZSBhdmFpbGFibGUuQFRvb01hbnlTY2hlZHVsZXMABQS0VG9vIG1hbnkgcGF5b3V0IHNjaGVkdWxlcyBhbHJlYWR5IHJlZ2lzdGVyZWQuKFJlY29nbml6ZWQABgQFAVRoZSBwYXJ0aWNpcGFudCBpcyByZWNvZ25pemVkIG9yIGhhcyBiZWVuIHJlY29nbml6ZWQgYXMgYSBwZXJzb24uPENhc2hPdXRDb29sZG93bgAHBMxUaGUgcGFydGljaXBhbnQgaGFzIGFscmVhZHkgY2FzaGVkIG91dCBpbiB0aGlzIGVyYS5gUm91bmRPbkdvaW5nT3JOb1NjaGVkdWxlAAgElFRoZSByb3VuZCBpcyBvbiBnb2luZyBvciBubyBzY2hlZHVsZS4cTm9Sb3VuZAAJBIRUaGUgcGF5b3V0IHJvdW5kIGhhcyBub3Qgc3RhcnRlZC5sQmFkT3JpZ2luTm90UGVyc29uTm90U2lnbmVkAAoE0FRoZSBvcmlnaW4gaXMgbmVpdGhlciBhIHBlcnNvbiBub3IgYSBzaWduZWQgYWNjb3VudC7AQmFkT3JpZ2luTm90UGVyc29uTm90U2lnbmVkTm90QWNjb3VudFBhcnRpY2lwYW50AAsEPQFUaGUgb3JpZ2luIGlzIG5laXRoZXIgYSBwZXJzb24gbm9yIGEgc2lnbmVkIGFjY291bnQgbm9yIGFuIGFjY291bnQgcGFydGljaXBhbnQunEJhZE9yaWdpbk5vdFNpZ25lZE5vdEFjY291bnRQYXJ0aWNpcGFudAAMBAkBVGhlIG9yaWdpbiBpcyBuZWl0aGVyIGEgc2lnbmVkIGFjY291bnQgbm9yIGFuIGFjY291bnQgcGFydGljaXBhbnQuUEFscmVhZHlQYXJ0aWNpcGF0aW5nAA0EpFRoZSBwYXJ0aWNpcGFudCBpcyBhbHJlYWR5IHBhcnRpY2lwYXRpbmcuREtleU11c3RCZVByb3ZpZGVkAA4EZFRoZSBrZXkgbXVzdCBiZSBwcm92aWRlZC5QS2V5TXVzdE5vdEJlUHJvdmlkZWQADwR0VGhlIGtleSBtdXN0IG5vdCBiZSBwcm92aWRlZC5QSGFzUmVhY2hlZFBlcnNvbmhvb2QAEASMSGFzIHJlYWNoZWQgcGVyc29uaG9vZCBpbiB0aGUgcGFzdC5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAEQSIVGhlIHByb29mIG9mIG93bmVyc2hpcCBpcyBpbnZhbGlkLjhXaW5kb3dUb29MYXJnZQASBD0BQW4gYWJzZW5jZSBncmFjZSB0aWVyIGhhcyBhIHdpbmRvdyBleGNlZWRpbmcgdGhlIG1heGltdW0gdHJhY2thYmxlIGhpc3RvcnkgKDgpLlRBbGxvd2VkTWlzc2VzVG9vTGFyZ2UAEwQhAVRoZSBhbGxvd2VkIG1pc3NlcyBtdXN0IGJlIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgd2luZG93IChvciBib3RoIHplcm8pLmBBYnNlbmNlU2NoZWR1bGVOb3RTb3J0ZWQAFAQxAUFic2VuY2UtZ3JhY2UgdGllcnMgbXVzdCBiZSBzb3J0ZWQgYnkgYXNjZW5kaW5nIGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkYC5cUGVyc29uaG9vZFNjaGVkdWxlRW1wdHkAFQQFAVRoZSBwZXJzb25ob29kLXRocmVzaG9sZCBzY2hlZHVsZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIHRpZXIucFBlcnNvbmhvb2RTY29yZVRocmVzaG9sZFplcm8AFgTcQSBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVyIGhhcyBgc2NvcmVfdGhyZXNob2xkID09IDBgLoBQZXJzb25ob29kU2NvcmVUaHJlc2hvbGRUb29MYXJnZQAXBPxBIHBlcnNvbmhvb2QtdGhyZXNob2xkIHRpZXIgZXhjZWVkcyBgTUFYX1BFUlNPTkhPT0RfVEhSRVNIT0xEYC5sUGVyc29uaG9vZFNjaGVkdWxlTm90U29ydGVkABgI2FBlcnNvbmhvb2QtdGhyZXNob2xkIHRpZXJzIG11c3QgYmUgc29ydGVkIGJ5IGFzY2VuZGluZ3BgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAueFBlcnNvbmhvb2RTY2hlZHVsZU5vdE1vbm90b25pYwAZCBEBUGVyc29uaG9vZC10aHJlc2hvbGQgYHNjb3JlX3RocmVzaG9sZGAgdmFsdWVzIG11c3QgYmUgbm9uLWRlY3JlYXNpbmf0YWNyb3NzIHRpZXJzIChhIGxhcmdlciBwb3B1bGF0aW9uIG11c3Qgbm90IGhhdmUgYSBsb3dlciBiYXIpLmhQZXJzb25ob29kU2NoZWR1bGVOb3RUb3RhbAAaCPRUaGUgbGFzdCBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVyIG11c3QgY292ZXIgYWxsIHBvcHVsYXRpb25zqChgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZCA9PSB1MzI6Ok1BWGApLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4hDAxgaW5kaXZfcGFsbGV0X25mdF9jcmVkaXRzFHR5cGVzOEF3YXJkZWRDcmVkaXRzAAAEAEUBARB1MTI4AAAlDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUASkMBFMAAAQALQwBGFZlYzxUPgAAKQwMYGluZGl2X3BhbGxldF9uZnRfY3JlZGl0cxR0eXBlc0xOZnRDbGFpbUNyZWRpdEF3YXJkBCRBY2NvdW50SWQBBAAIASBjbGFpbWFudBEFAWhBY2NvdW50T3JQZXJzb248QWNjb3VudElkPgABGGNyZWRpdAgBOE5mdENsYWltQ3JlZGl0AAAtDAAAAikMADEMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGkEARhWZWM8VD4AADUMDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMUdHlwZXNYTmZ0Q2xhaW1DcmVkaXRSb290SW5mbwAACAEoZ2FtZV9pbmRleDgBHEdhbWVJZHgAASR0aW1lc3RhbXA4AQx1MzIAADkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQwEUwAABABBDAEYVmVjPFQ+AAA9DAAABAgoOABBDAAAAj0MAEUMDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMYcGFsbGV0FEVycm9yBARUAAEgQE5vQmxvY2tzVG9SZXBsYXkAAAT8QSBjcmVkaXQgdHJlZSByZXBsYXkgd2FzIHJlcXVlc3RlZCBmb3IgYW4gZW1wdHkgbGlzdCBvZiBibG9ja3MuUFVuc29ydGVkUmVwbGF5QmxvY2tzAAEE5FRoZSBibG9ja3MgdG8gcmVwbGF5IGFyZSBub3QgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLlBOb0NyZWRpdFRyZWVGb3JCbG9jawACBLxOb25lIG9mIHRoZSBibG9ja3MgdG8gcmVwbGF5IGhhcyBhIGNyZWRpdCB0cmVlLlBSZXBsYXlDb29sZG93bkFjdGl2ZQADCFkBQSBjcmVkaXQgdHJlZSByZXBsYXkgcmFuIHdpdGhpbiBgUmVwbGF5Q29vbGRvd25TZWNvbmRzYCBvZiB0aGUgbGFzdCBvbmUuIFRoZSB3aW5kb3cgaXNcc2hhcmVkIGJ5IGV2ZXJ5IGNhbGxlci5wRXhjZWVkc0NsYWltc0NoYW5uZWxDYXBhY2l0eQAECEkBVGhlIHJlcGxheSBkb2VzIG5vdCBmaXQgd2hhdCB0aGUgSFJNUCBjaGFubmVsIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluIGNhbiBjYXJyeSBpbjBvbmUgbWVzc2FnZS5MQ3JlZGl0VHJlZVhjbUZhaWxlZAAFBAUBU2VuZGluZyB0aGUgY3JlZGl0IHRyZWVzIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluIG92ZXIgWENNIGZhaWxlZC5UQ3JlZGl0U2xvdE91dE9mQm91bmRzAAYIVQFUaGUgcm91bmQgaXMgbm90IGJlbG93IGBNYXhSb3VuZHNgLCBvciB0aGUgYXR0ZXN0ZXIgc2xvdCBpcyBub3QgYmVsb3cgYE1heEdyb3VwU2l6ZWAsuHNvIHRoZSB0d28gbmFtZSBhIGNyZWRpdCBzbG90IG5vIGdhbWUgY2FuIHVzZS5AQ3JlZGl0Tm90QXdhcmRlZAAHCFUBTm8gY3JlZGl0IHdhcyBhd2FyZGVkOiB0aGUgY2xhaW1hbnQgYWxyZWFkeSBob2xkcyB0aGUgc2xvdCdzIGNyZWRpdCBmb3IgdGhhdCBnYW1lLCBvcqB0aGUgYmxvY2sgaGFzIG5vIHJvb20gZm9yIGFub3RoZXIgYXdhcmQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkkMDFhpbmRpdl9wYWxsZXRfZHVtbXlfZGltGHBhbGxldBhSZWNvcmQEDEtleQEIAAgBDGtleQgBDEtleQABJHN1c3BlbmRlZFkBARBib29sAABNDAxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQURXJyb3IEBFQAARAkTm90UGVyc29uAAAE3FRoZSBwZXJzb25hbCBJRCBkb2VzIG5vdCBiZWxvbmcgdG8gYSByZWNvZ25pemVkIHBlcnNvbi4wTm90U3VzcGVuZGVkAAEE2FRoZSBwZXJzb25hbCBJRCBkb2VzIG5vdCBiZWxvbmcgdG8gYSBzdXNwZW5kZWQgcGVyc29uLixOb3RSZXNlcnZlZAACBORUaGUgcGVyc29uYWwgSUQgaXMgbm90IHJlc2VydmVkIGFuZCBhd2FpdGluZyByZWNvZ25pdGlvbi40VG9vTWFueVBlb3BsZQADBMBUaGUgb3BlcmF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBtYW55IHBlb3BsZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuUQwMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRR0eXBlczhMaXRlUGVyc29uSW5mbwgYTWVtYmVyAQgYTWV0aG9kAVUMAAgBMHJpbmdfdnJmX2tleQgBGE1lbWJlcgABGG1ldGhvZFUMARhNZXRob2QAAFUMDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUUdHlwZXNEUmVjb2duaXRpb25NZXRob2QEHEFjY291bnQBBAEIMFVuaXF1ZURldmljZQQABAEcQWNjb3VudAAAAAxGZWUAAQAAWQwMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQURXJyb3IEBFQAATBYTm9BdHRlc3RhdGlvbkFsbG93YW5jZQAABGRObyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UubEludmFsaWRBdHRlc3RhdGlvblNpZ25hdHVyZQABBPBUaGUgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgdGhlIGNhbmRpZGF0ZSdzIGFjY291bnQgaXMgaW52YWxpZC5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAAgQFAVRoZSBzaWduYXR1cmUgY3JlYXRlZCBieSB0aGUgY2FuZGlkYXRlJ3MgcmluZyB2cmYga2V5IGlzIGludmFsaWQuREFscmVhZHlSZWdpc3RlcmVkAAMEkFRoZSBjYW5kaWRhdGUgaXMgYWxyZWFkeSByZWdpc3RlcmVkLjxLZXlBbHJlYWR5SW5Vc2UABATwVGhlIHJpbmcgVlJGIGtleSBpcyBhbHJlYWR5IGVucm9sbGVkIGJ5IGFub3RoZXIgbGl0ZSBwZXJzb24uMEFjY291bnRJblVzZQAFBHhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZS5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAAGBORUaGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZyBpcyBhbHJlYWR5IHNldCBhbmQgY3VycmVudC5IQWxpYXNBY2NvdW50Tm90U2V0AAcEpFRoZSBhbGlhcyA8LT4gYWNjb3VudCBtYXBwaW5nIGlzIG5vdCBzZXQuTENhbGxCbG9ja091dE9mUmFuZ2UACAQhAVRoZSByZXF1ZXN0ZWQgYWxpYXMgc2V0dXAgYmxvY2sgd2luZG93IGlzIGludmFsaWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLkxJbnZhbGlkQWxpYXNDb250ZXh0AAkEdFRoZSBhbGlhcyBjb250ZXh0IGlzIGludmFsaWQueExpdGVQZW9wbGVDb2xsZWN0aW9uTm90Q3JlYXRlZAAKBPxUaGUgbGl0ZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC6ISW52YWxpZENvbnN1bWVyUmVnaXN0cmF0aW9uQWNjb3VudAALBPxUaGUgY29uc3VtZXIgcmVnaXN0cmF0aW9uIGFjY291bnQgZG9lcyBub3QgbWF0Y2ggdGhlIGNhbmRpZGF0ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuXQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMwQ29uc3VtZXJJbmZvAAAQAThpZGVudGlmaWVyX2tleX0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABNGZ1bGxfdXNlcm5hbWU9BQFAT3B0aW9uPFVzZXJuYW1lPgABNGxpdGVfdXNlcm5hbWU5BQEgVXNlcm5hbWUAASxjcmVkaWJpbGl0eWEMASxDcmVkaWJpbGl0eQAAYQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMsQ3JlZGliaWxpdHkAAQgQTGl0ZQAAABhQZXJzb24MARRhbGlhcwgBFEFsaWFzAAEsbGFzdF91cGRhdGUoAQx1NjQAARxkZW1vdGVkWQEBEGJvb2wAAQAAZQwAAAQIaQwIAGkMDDRpbmRpdl9zdXBwb3J0FHV0aWxzMEJpZ0VuZGlhblUzMgADBAAAAAwEGQFBIHUzMiBlbmNvZGVkIGluIGJpZy1lbmRpYW4gZm9ybWF0IGZvciBjb3JyZWN0IGxleGljb2dyYXBoaWMgb3JkZXJpbmcubQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNcU3RtdFN0b3JlQWxsb3dhbmNlRW50cnkEBFQAAAwBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAQxzZXE4AQx1MzIAARRzaW5jZSgBDHU2NAAAcQwAAAQIBHUMAHUMAAAEDGkMOAgAeQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNgTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uBBxBY2NvdW50AQQACAEoYWNjb3VudF9pZAQBHEFjY291bnQAASRyZWZlcmVuY2VJBQFUTm90aWZpY2F0aW9uUmVmZXJlbmNlAAB9DAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYEMBFMAAAQAhQwBGFZlYzxUPgAAgQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNUUmVzZXJ2YXRpb25RdWV1ZUVudHJ5BBxBY2NvdW50AQQACAEcYWNjb3VudAQBHEFjY291bnQAASRqb2luZWRfYXQoAQx1NjQAAIUMAAACgQwAiQwISHNwX3N0YXRlbWVudF9zdG9yZUhTdGF0ZW1lbnRBbGxvd2FuY2UAAAgBJG1heF9jb3VudDgBDHUzMgABIG1heF9zaXplOAEMdTMyAACNDAxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxhwYWxsZXQURXJyb3IEBFQAAWA8SW52YWxpZFVzZXJuYW1lAAAEnFVzZXJuYW1lIGRvZXMgbm90IGZpdCB0aGUgcmVxdWlyZW1lbnRzLjRVc2VybmFtZVRha2VuAAEEaFVzZXJuYW1lIGlzIGFscmVhZHkgdGFrZW4uREFscmVhZHlSZWdpc3RlcmVkAAIEfENvbnN1bWVyIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAAwScUHJvdmlkZWQgcHJvb2Ygb2Ygb3duZXJzaGlwIGlzIGludmFsaWQuNE5vdFJlZ2lzdGVyZWQABAScUGVyc29uIGlzIG5vdCByZWdpc3RlcmVkIGFzIGEgY29uc3VtZXIuNE5vdEZ1bGxQZXJzb24ABQR4Q29uc3VtZXIgaXMgbm90IGEgZnVsbCBwZXJzb24uNFRvdWNoTm90UmVhZHkABgTMQXR0ZW1wdGVkIHRvIHVwZGF0ZSBwZXJzb24gYXV0aG9yaXphdGlvbiB0b28gZWFybHkuNE5vUmVzZXJ2YXRpb24ABwRoUmVzZXJ2YXRpb24gaXMgbm90IGFjdGl2ZS5QTm90UmVzZXJ2YXRpb25Ib2xkZXIACAQVAVRoZSBsaW5rZWQgbGl0ZSBpZGVudGl0eSBpcyBub3QgdGhlIGFjdGl2ZSBob2xkZXIgb2YgdGhlIHJlc2VydmF0aW9uLmBVc2VybmFtZVJlc2VydmF0aW9uVGFrZW4ACQTkVGhlIHVzZXJuYW1lIGluIHRoZSByZXNlcnZhdGlvbiByZXF1ZXN0IGlzIGFscmVhZHkgdGFrZW4uQFJlc2VydmF0aW9uRnJlc2gACgSAVGhlIHJlc2VydmF0aW9uIGhhcyBub3QgZXhwaXJlZC5ATm9MaW5rZWRJZGVudGl0eQALBJxUaGVyZSBpcyBubyBsaXRlIGNvbnN1bWVyIHRvIGJlIGxpbmtlZC40QWxyZWFkeUxpbmtlZAAMBPhUaGUgbGl0ZSBjb25zdW1lciBpcyBhbHJlYWR5IGxpbmtlZCB0byBhIGZ1bGwgcGVyc29uIGNvbnN1bWVyLlBQZXJzb25BdXRoTm90RXhwaXJlZAANBLxUaGUgcGVyc29uJ3MgYXV0aG9yaXphdGlvbiBoYXMgbm90IGV4cGlyZWQgeWV0LjhBbHJlYWR5RGVtb3RlZAAOBJBUaGUgcGVyc29uIGhhcyBhbHJlYWR5IGJlZW4gZGVtb3RlZC4kUXVldWVGdWxsAA8EgFF1ZXVlIGZvciB0aGlzIHVzZXJuYW1lIGlzIGZ1bGwuKE5vdEluUXVldWUAEAS4QWNjb3VudCBpcyBub3QgaW4gdGhlIHF1ZXVlIGZvciB0aGlzIHVzZXJuYW1lLlRBbHJlYWR5SGFzUmVzZXJ2YXRpb24AEQTcQWNjb3VudCBhbHJlYWR5IGhhcyBhIHJlc2VydmF0aW9uIGZvciBhbm90aGVyIHVzZXJuYW1lLmxJbnZhbGlkTm90aWZpY2F0aW9uU2VxdWVuY2UAEgTITm90aWZpY2F0aW9uIHNlcXVlbmNlIGlzIGludmFsaWQgZm9yIHRoZSBjb25zdW1lci5kSW52YWxpZE5vdGlmaWNhdGlvblBlcmlvZAATBOROb3RpZmljYXRpb24gcGVyaW9kIGlzIG91dHNpZGUgdGhlIGFjY2VwdGVkIGNsYWltIHdpbmRvdy6ITm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uTm90RXhwaXJlZAAUBLROb3RpZmljYXRpb24gcmVnaXN0cmF0aW9uIGlzIG5vdCBleHBpcmVkIHlldC6UTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uQWxyZWFkeUV4aXN0cwAVBPxOb3RpZmljYXRpb24gcmVnaXN0cmF0aW9uIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgYWxpYXMvY29udGV4dC5wU3RtdFN0b3JlUmVwbGFjZW1lbnRUb29FYXJseQAWBBkBVGhlIHJlcGxhY2VtZW50IGNvb2xkb3duIGhhcyBub3QgZWxhcHNlZCBzaW5jZSB0aGUgZW50cnkgd2FzIGxhc3Qgc2V0LoxMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXRFeGNlZWRlZAAXBOxUaGUgcHJvdmlkZWQgYGxpbWl0YCBleGNlZWRzIGBMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXRgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6RDAAABAhRBTgAlQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZDARTAAAEAKEMARhWZWM8VD4AAJkMDGxpbmRpdl9wYWxsZXRfY2h1bmtzX21hbmFnZXIYcGFsbGV0OFVuY2hlY2tlZENodW5rBARUAAAEAJ0MASBUOjpDaHVuawAAnQwMKHZlcmlmaWFibGUQcmluZyxTdGF0aWNDaHVuawADYAAAAAwAoQwAAAKZDAClDAxsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyGHBhbGxldBRFcnJvcgQEVAABDDRDaHVua05vdEZvdW5kAAAEoFRoZSByZXF1ZXN0ZWQgY2h1bmsgaW5kZXggZG9lc24ndCBleGlzdC40SW52YWxpZENodW5rcwABBLBUaGUgcHJvdmlkZWQgY2h1bmsgZGF0YSBjb3VsZG4ndCBiZSBkZWNvZGVkLkRJbnZhbGlkQ2h1bmtSYW5nZQACBNxUaGUgc3RhcnQgaW5kZXggaXNuJ3Qgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBlbmQgaW5kZXguBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqkMDFBpbmRpdl9wYWxsZXRfbWVtYmVycxR0eXBlczhDb2xsZWN0aW9uSW5mbwgcQWNjb3VudAEEIExvY2F0aW9uAXEBABABFG93bmVyrQwBiENvbGxlY3Rpb25Pd25lcjxBY2NvdW50LCBMb2NhdGlvbj4AARBtb2RlsQwBIFJpbmdNb2RlAAEkcmluZ19zaXplUQUBMFJpbmdFeHBvbmVudAABUHNlbGZfaW5jbHVzaW9uX2RlbGF5tQMBLE9wdGlvbjx1NjQ+AACtDAxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXM8Q29sbGVjdGlvbk93bmVyCBxBY2NvdW50AQQgTG9jYXRpb24BcQEBCCBFeHRlcm5hbAQAcQEBIExvY2F0aW9uAAAAFExvY2FsBAAEARxBY2NvdW50AAEAALEMEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5IFJpbmdNb2RlAAEIKEFwcGVuZE9ubHkAAAAgRmxleGlibGUAAQAAtQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAUQQBGFZlYzxUPgAAuQwAAAQICDgAvQwMUGluZGl2X3BhbGxldF9tZW1iZXJzFHR5cGVzIFJpbmdSb290BARUAAAMARByb290qQUBME1lbWJlcnNPZjxUPgABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABMGludGVybWVkaWF0ZcEMAURJbnRlcm1lZGlhdGVPZjxUPgAAwQwMKHZlcmlmaWFibGUQcmluZyhNZW1iZXJzU2V0AANQAwAADADFDAAABAwIOGkMAMkMDFBpbmRpdl9wYWxsZXRfbWVtYmVycxR0eXBlcxxPbGRSb290BARUAAAIARByb290qQUBME1lbWJlcnNPZjxUPgABLGFyY2hpdmVkX2F0KAEMdTY0AADNDAAABAwIODgA0QwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAUQQBGFZlYzxUPgAA1QwQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkoUmluZ1N0YXR1cwAADAEUdG90YWw4AQx1MzIAASBpbmNsdWRlZDgBDHUzMgABPGltbXV0YWJsZV9zaW5jZbUDASxPcHRpb248dTY0PgAA2QwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAaQQBGFZlYzxUPgAA3QwAAAQICAgA4QwQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkwUmluZ1Bvc2l0aW9uAAEMKE9uYm9hcmRpbmcIAShxdWV1ZV9wYWdlOAEkUGFnZUluZGV4AAEkcXVldWVkX2F0KAEMdTY0AAAAIEluY2x1ZGVkDAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABJHJpbmdfcGFnZTgBJFBhZ2VJbmRleAABNHJpbmdfcG9zaXRpb244AQx1MzIAAQAkU3VzcGVuZGVkAAIAAOUMEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5QFJpbmdNZW1iZXJzU3RhdGUAAAQBEG1vZGXpDAFAUmluZ011dGF0aW9uTW9kZQAA6QwQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHlAUmluZ011dGF0aW9uTW9kZQABCChBcHBlbmRPbmx5AAAAIE11dGF0aW5nBAAMAQh1OAABAADtDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABABRBAEYVmVjPFQ+AADxDAxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0FEVycm9yBARUAAF0JE5vdE1lbWJlcgAABNBUaGUgc3VwcGxpZWQgaWRlbnRpZmllciBkb2VzIG5vdCByZXByZXNlbnQgYSBtZW1iZXIuGE5vUm9vdAABBERSaW5nIGhhcyBubyByb290LjBJbnZhbGlkUHJvb2YAAgRUVGhlIHByb29mIGlzIGludmFsaWQuKEluY29tcGxldGUAAwQFAVRoZSByb290IGNhbm5vdCBiZSBmaW5hbGl6ZWQgYXMgdGhlcmUgYXJlIHN0aWxsIHVucHVzaGVkIG1lbWJlcnMuOFRvb01hbnlNZW1iZXJzAAQEiFRvbyBtYW55IG1lbWJlcnMgaGF2ZSBiZWVuIHB1c2hlZC48S2V5QWxyZWFkeUluVXNlAAUElEtleSBhbHJlYWR5IGluIHVzZSBieSBhbm90aGVyIG1lbWJlci4sS2V5Tm90Rm91bmQABgSgVGhlIG9sZCBrZXkgd2FzIG5vdCBmb3VuZCB3aGVuIGV4cGVjdGVkLjBDb3VsZE5vdFB1c2gABwSQQ291bGQgbm90IHB1c2ggbWVtYmVyIGludG8gdGhlIHJpbmcuLEludmFsaWRSaW5nAAgIUQFUaGUgcmluZyBpbmRleCBpcyBub3QgdmFsaWQgZm9yIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uOiBpdCBpcyB0aGUgdG9wIHJpbmcgdXNlZCBmb3Kkb25ib2FyZGluZyBvciBpdCByZWZlcnMgdG8gYW4gZW1wdHkgcmluZy5IU3VzcGVuc2lvbnNQZW5kaW5nAAkE5FJpbmcgY2Fubm90IGJlIGJ1aWx0IHdoaWxlIHRoZXJlIGFyZSBzdXNwZW5zaW9ucyBwZW5kaW5nLlxSaW5nQWJvdmVNZXJnZVRocmVzaG9sZAAKBNRSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyBub3QgYmVsb3cgMS8yIGNhcGFjaXR5LkhJbnZhbGlkU3VzcGVuc2lvbnMACwSgU3VzcGVuc2lvbiBpbmRpY2VzIHByb3ZpZGVkIGFyZSBpbnZhbGlkLkBOb1JlbW92YWxTZXNzaW9uAAwELQFBIG11dGF0aW5nIGFjdGlvbiB3YXMgcXVldWVkIHdoZW4gdGhlcmUgd2FzIG5vIHJlbW92YWwgc2Vzc2lvbiBpbiBwcm9ncmVzcy5sQ291bGROb3RTdGFydFJlbW92YWxTZXNzaW9uAA0EnEEgcmVtb3ZhbCBzZXNzaW9uIGNvdWxkIG5vdCBiZSBzdGFydGVkLmBSZW1vdmFsU2Vzc2lvbkluUHJvZ3Jlc3MADgToQ2Fubm90IG1lcmdlIHJpbmdzIHdoaWxlIGEgcmVtb3ZhbCBzZXNzaW9uIGlzIGluIHByb2dyZXNzLkxLZXlBbHJlYWR5U3VzcGVuZGVkAA8IVQFJbnZhbGlkIHN1c3BlbnNpb24gb2YgYSBrZXkgYmVsb25naW5nIHRvIGEgbWVtYmVyIHdob3NlIGluZGV4IGluIHRoZSByaW5nIGhhcyBhbHJlYWR5uGJlZW4gaW5jbHVkZWQgaW4gdGhlIHBlbmRpbmcgc3VzcGVuc2lvbnMgbGlzdC5USW52YWxpZE9uYm9hcmRpbmdTaXplABAE6FRoZSBvbmJvYXJkaW5nIHNpemUgbXVzdCBub3QgZXhjZWVkIHRoZSBtYXhpbXVtIHJpbmcgc2l6ZS5ASW52YWxpZE1lbWJlcktleQARBKxUaGUgbWVtYmVyIGtleSBpcyBub3QgdmFsaWQgZm9yIHRoZSBjcnlwdG8uSENvbGxlY3Rpb25Ob3RGb3VuZAASBHhUaGUgY29sbGVjdGlvbiBkb2VzIG5vdCBleGlzdC5cQ29sbGVjdGlvbkFscmVhZHlFeGlzdHMAEwR4VGhlIGNvbGxlY3Rpb24gYWxyZWFkeSBleGlzdHMuSFRvb01hbnlDb2xsZWN0aW9ucwAUBJBUb28gbWFueSBjb2xsZWN0aW9ucyBmb3IgdGhpcyBvd25lci5oSW52YWxpZFJpbmdTaXplRm9yRmxleGlibGUAFQQRAUZsZXhpYmxlIGNvbGxlY3Rpb25zIG11c3QgdXNlIHRoZSBNYXhGbGV4aWJsZVJpbmdFeHBvbmVudCByaW5nIHNpemUuTEludmFsaWRSaW5nRXhwb25lbnQAFgSMVGhlIHJpbmcgZXhwb25lbnQgaXMgbm90IHN1cHBvcnRlZC5MUHJlbWF0dXJlT25ib2FyZGluZwAXBLRJbnN1ZmZpY2llbnQgbWVtYmVycyBpbiB0aGUgcXVldWUgdG8gb25ib2FyZC5sQ29sbGVjdGlvbk1hcmtlZEZvckRlbGV0aW9uABgE9FRoZSBjb2xsZWN0aW9uIGlzIG1hcmtlZCBmb3IgZGVsZXRpb24gYW5kIGNhbm5vdCBiZSBtb2RpZmllZC5ITm90Q29sbGVjdGlvbk93bmVyABkEuFRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvZiB0aGUgY29sbGVjdGlvbi40Tm90T25ib2FyZGluZwAaBKhUaGUgbWVtYmVyIGlzIG5vdCBpbiB0aGUgb25ib2FyZGluZyBxdWV1ZS44Tm90aGluZ1RvQnVpbGQAGwR8VGhlcmUgaXMgbm8gcmluZyByb290IHRvIGJ1aWxkLlRDb2xsZWN0aW9uTm90RmxleGlibGUAHATYT25seSB0aGUgcmluZ3Mgb2YgYSBmbGV4aWJsZSBjb2xsZWN0aW9uIGNhbiBiZSBtZXJnZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvUMDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQgTG9ja0luZm8AAAgBGHJlYXNvbvkMAShMb2NrUmVhc29uAAEUdW50aWwoAQx1NjQAAPkMDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQoTG9ja1JlYXNvbgABBDhGYWlsZWREaXNwYXRjaAQBHHJldHJpZXMMAQh1OAAAAAD9DAAABAg4FQQAAQ0AAAQQOBUEOAgABQ0MUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldChBbGlhc1N0YXRlAAEIGExvY2tlZAQA9QwBIExvY2tJbmZvAAAAIFVubG9hZGVkAAEAAAkNAAAEDDgVBDgADQ0MUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldEBBcmNoaXZlZFJlY3ljbGVyAAAIAShjb21taXRtZW50PAEQSDI1NgABJHJlbWFpbmluZzgBDHUzMgAAEQ0MUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldDhJbnN0YW5jZVJlY29yZAQEVAAAGAEgYXNzZXRfaWRxAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEoYXNzZXRfdW5pdEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AARBtb2RlHQgBMEluc3RhbmNlTW9kZQABUGN1cnJlbnRfbG9hZF9kZXBvc2l0FQ0BBQFPcHRpb248RGVwb3NpdFRpZXI8RnVuZ2libGVzQXNzZXRJZE9mPFQ+LCBGdW5naWJsZXNCYWxhbmNlT2Y8VD4+PgABQG9sZF9sb2FkX2RlcG9zaXQVDQEFAU9wdGlvbjxEZXBvc2l0VGllcjxGdW5naWJsZXNBc3NldElkT2Y8VD4sIEZ1bmdpYmxlc0JhbGFuY2VPZjxUPj4+AAEcY3JlYXRvch0NAchPcHRpb248KFQ6OkFjY291bnRJZCwgVDo6SW5zdGFuY2VDcmVhdGlvbkRlcG9zaXQpPgAAFQ0EGE9wdGlvbgQEVAEZDQEIEE5vbmUAAAAQU29tZQQAGQ0AAAEAABkNDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQsRGVwb3NpdFRpZXIIHEFzc2V0SWQBcQEcQmFsYW5jZQFFAQAMASBhc3NldF9pZHEBARxBc3NldElkAAEUcHJpY2VFAQEcQmFsYW5jZQABFGNvdW50OAEMdTMyAAAdDQQYT3B0aW9uBARUASENAQgQTm9uZQAAABBTb21lBAAhDQAAAQAAIQ0AAAQIBCUNACUNFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAEUBAShGOjpCYWxhbmNlAAApDQAABAhxATgALQ0AAAQMOARxAQAxDQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0FEVycm9yBARUAAHAUE1lbWJlcktleUFscmVhZHlVc2VkAAAAQEludmFsaWRNZW1iZXJLZXkAAQA0SW50ZXJuYWxFcnJvcgACAFxSZWN5Y2xlckFscmVhZHlVbmxvYWRlZAADAFBJbnZhbGlkQ29uc29saWRhdGlvbgAEAExDb25zb2xpZGF0aW9uVG9vQmlnAAUASERlbm9taW5hdGlvblRvb0JpZwAGAFBEZW5vbWluYXRpb25Ub29TbWFsbAAHAEhDb2luQW1vdW50QmVsb3dGZWUACABYRGVub21pbmF0aW9uT3V0T2ZCb3VuZAAJAGxMb3NzeURlbm9taW5hdGlvbkNvbnZlcnNpb24ACgg5AVRoZSBkZW5vbWluYXRpb24gY2Fubm90IGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGFuIGFzc2V0IGFtb3VudCBiZWNhdXNlIHRoZfxpbnN0YW5jZSdzIGBhc3NldF91bml0YCBpcyBub3QgZXZlbmx5IGRpdmlzaWJsZSBieSBgMl58dmFsdWV8YC5ESW52YWxpZEFsaWFzUHJvb2YACwBMTm9VbmxvYWRpbmdSZWN5Y2xlcgAMAFRQcm9vZkFuZEFsaWFzTWlzbWF0Y2gADQA4Tm90aGluZ1RvQnVpbGQADgAwVG9vTWFueVJpbmdzAA8AVEFkZHJlc3NBbHJlYWR5SGFzQ29pbgAQAFxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAARACxFbXB0eUlucHV0cwASAEBSZWN5Y2xlck1pc21hdGNoABMECQFUaGUgZmVlIHJlY3ljbGVyIGluIHRoZSBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIGNhbGwncyByZWN5Y2xlci5gSW5zdWZmaWNpZW50VW5sb2FkRm9yRmVlABQEvFRoZSB0b3RhbCB1bmxvYWRlZCBhbW91bnQgaXMgbGVzcyB0aGFuIHRoZSBmZWUuREFsaWFzTm90UHJlbWFya2VkABUEOQFUaGUgZmlyc3QgYWxpYXMgd2FzIG5vdCBwcmUtbWFya2VkIGJ5IGV4dGVuc2lvbiAocmVxdWlyZWQgZm9yIEZyb21PdXRwdXQgZmVlKS5cSW52YWxpZFJlY3ljbGVyUmV2aXNpb24AFgRJAVRoZSByZWN5Y2xlciByZXZpc2lvbiBkb2VzIG5vdCBtYXRjaCAocmVjeWNsZXIgbWF5IG5vdCBleGlzdCBvciBoYXMgYmVlbiByZWJ1aWx0KS4wSW52YWxpZFNwbGl0ABcAaENhbm5vdENvbnZlcnRBc3NldFRvTmF0aXZlABgEGQFUaGUgYXNzZXQgY2Fubm90IGJlIGNvbnZlcnRlZCBpbnRvIHRoZSBuYXRpdmUgY3VycmVuY3kgdG8gcGF5IHRoZSBmZWUuWEFsaWFzVGVtcG9yYXJpbHlMb2NrZWQAGQBoTWF4RmVlTm90QWxsb3dlZEZvclByZXBhaWQAGghZAVtgQ2FsbDo6dW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbnNgXSB3aXRoIFtgVW5sb2FkRmVlOjpQcmVwYWlkYF0gcmVxdWlyZXMgYG1heF9mZWVgIHRvFGJlIDAuSE1heEZlZUV4Y2VlZHNJbnB1dAAbBKhUaGUgbWF4X2ZlZSBleGNlZWRzIHRoZSB0b3RhbCBpbnB1dCB2YWx1ZS40SW52YWxpZE1heEZlZQAcBNhUaGUgbWF4IGZlZSBhcmd1bWVudCBkb2Vzbid0IHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cy4wVW5rbm93bkFzc2V0AB0EAQFUaGUgdW5kZXJseWluZyBhc3NldCBpZCBkb2VzIG5vdCBleGlzdCBpbiBbYENvbmZpZzo6RnVuZ2libGVzYF0uQEluc3RhbmNlTm90Rm91bmQAHgTgTm8gY29pbmFnZSBpbnN0YW5jZSBleGlzdHMgZm9yIHRoZSBnaXZlbiBbYEluc3RhbmNlSWRgXS5ASW52YWxpZEFzc2V0VW5pdAAfCAUBVGhlIGFzc2V0IHVuaXQgaXMgemVybywgb3IgY2Fubm90IHJlcHJlc2VudCBldmVyeSBkZW5vbWluYXRpb24gaW7gYFtNaW5pbXVtRXhwb25lbnQsIE1heGltdW1FeHBvbmVudF1gIHdpdGhvdXQgdHJ1bmNhdGlvbi5gQXJjaGl2ZWRSZWN5Y2xlck5vdEZvdW5kACAERQFObyBhcmNoaXZlZCByZWN5Y2xlciBleGlzdHMgZm9yIHRoZSBnaXZlbiBgKGluc3RhbmNlLCBkZW5vbWluYXRpb24sIHJpbmcgaW5kZXgpYC5QSW52YWxpZEFyY2hpdmVkUm9vdHMAIQg1AVRoZSBzdXBwbGllZCBgcmVjeWNsZXJfcm9vdGAvYHVubG9hZGVkX3Jvb3RgIGRvIG5vdCBtYXRjaCB0aGUgc3RvcmVkIGFyY2hpdmFsLGNvbW1pdG1lbnQuTEludmFsaWRSaW5nRXhwb25lbnQAIgQdAVRoZSByZWN5Y2xlciByaW5nIGV4cG9uZW50IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGNyeXB0byBjb25maWcueEFsaWFzV2FzVW5sb2FkZWRPckludmFsaWRQcm9vZgAjBD0BVGhlIGFsaWFzIHdhcyBhbHJlYWR5IHVubG9hZGVkLCBvciB0aGUgc3VwcGxpZWQgbm9uLWluY2x1c2lvbiBwcm9vZiBpcyBpbnZhbGlkLihaZXJvQW1vdW50ACQE0EEgYGZ1bmRfcG90YCBvciBgd2l0aGRyYXdfcG90X2Z1bmRzYCBhbW91bnQgb2YgemVyby5QSW5zdGFuY2VOb3RTcG9uc29yZWQAJQTAVGhlIGluc3RhbmNlIGlzIG5vdCBzcG9uc29yZWQsIHNvIGl0IGhhcyBubyBwb3QubFdpdGhkcmF3RXhjZWVkc0NvbnRyaWJ1dGlvbgAmBD0BVGhlIHdpdGhkcmF3YWwgZXhjZWVkcyB0aGUgY2FsbGVyJ3MgcmVjb3JkZWQgcG90IGNvbnRyaWJ1dGlvbiBpbiB0aGF0IGN1cnJlbmN5LmRQb3RDYW5ub3RDb3ZlckxvYWREZXBvc2l0ACcE9FRoZSBzcG9uc29yZWQgaW5zdGFuY2UncyBwb3QgY2Fubm90IGZ1bmQgdGhpcyBsb2FkJ3MgZGVwb3NpdC5oTG9hZERlcG9zaXRPbGRUaWVyT2NjdXBpZWQAKAhZAVRoZSBsb2FkIGRlcG9zaXQgY2hhbmdlZCB3aGlsZSB0aGUgc3BvbnNvcmVkIGluc3RhbmNlJ3Mgb2xkIHRpZXIgc3RpbGwgaG9sZHMgZGVwb3NpdHMsSQFzbyB0aGUgaW5zdGFuY2UgbmVlZHMgW2BQYWxsZXQ6OmNvbGxhcHNlX2xvYWRfZGVwb3NpdHNgXSBiZWZvcmUgaXQgY2FuIGxvYWQgYWdhaW4uRE5vdGhpbmdUb0NvbGxhcHNlACkIXQFUaGUgbGVkZ2VyIGlzIGFscmVhZHkgYSBzaW5nbGUgdGllciBhdCB0aGUgY3VycmVudCBbYENvbmZpZzo6TG9hZERlcG9zaXRgXSwgc28gdGhlcmUgaXNQbm90aGluZyB0byBjb2xsYXBzZS5gSW5zdGFuY2VBbHJlYWR5U3BvbnNvcmVkACoEiFRoZSBpbnN0YW5jZSBpcyBhbHJlYWR5IHNwb25zb3JlZC5oU3BvbnNvcmVkSW5zdGFuY2VzRGlzYWJsZWQAKwRNAVtgQ29uZmlnOjpFbmFibGVQZXJtaXNzaW9ubGVzc2BdIGlzIGZhbHNlLCBzbyBubyBzcG9uc29yZWQgaW5zdGFuY2UgY2FuIGJlIGNyZWF0ZWQuXFBhbGxldEFjY291bnROb3RUb3VjaGVkACwMOQFUaGUgcGFsbGV0IGFjY291bnQgY2Fubm90IHJlY2VpdmUgdGhlIHVuZGVybHlpbmcgYXNzZXQgYmVjYXVzZSBpdCBoYXMgbm90IGJlZW5VAXRvdWNoZWQgZm9yIGl0LCB3aGljaCBbYFBhbGxldDo6Y3JlYXRlX3N1ZmZpY2llbnRfaW5zdGFuY2VgXSBleHBlY3RzIHRvIGhhdmUgaGFwcGVuZWQgYWxyZWFkeS6AUGFsbGV0QWNjb3VudEJlbG93TWluaW11bUJhbGFuY2UALQxBAVRoZSBwYWxsZXQgYWNjb3VudCBob2xkcyBsZXNzIHRoYW4gdGhlIHVuZGVybHlpbmcgYXNzZXQncyBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoUQFbYFBhbGxldDo6Y3JlYXRlX3N1ZmZpY2llbnRfaW5zdGFuY2VgXSBleHBlY3RzIGFzIGEgYnVmZmVyIGFnYWluc3QgdGhlIGFjY291bnQgYmVpbmccZHVzdGVkLmhGdW5kaW5nQmVsb3dNaW5pbXVtQmFsYW5jZQAuCEkBQSBgZnVuZF9wb3RgIGFtb3VudCBiZWxvdyB0aGUgY3VycmVuY3kncyBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHRoZSB0cmFuc2ZlciBjb3VsZEBkdXN0IHJpZ2h0IGF3YXkuQEZlZUV4Y2VlZHNNYXhGZWUALwRZAVBheWluZyB0aGUgZmVlIHdvdWxkIGNvc3QgbW9yZSB0aGFuIHRoZSBjYWxsZXIncyBgbWF4X2ZlZWAsIGluIHRoZSBjdXJyZW5jeSBwYXlpbmcgaXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjUNBBhPcHRpb24EBFQBOQ0BCBBOb25lAAAAEFNvbWUEADkNAAABAAA5DQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UMcG90HFBvdFZpZXcIHEFzc2V0SWQBcQEcQmFsYW5jZQFFAQAcATBsb2FkX2RlcG9zaXS9BQFIKEFzc2V0SWQsIEJhbGFuY2UpAAFUZnJlZV9pbl9kZXBvc2l0X2Fzc2V0RQEBHEJhbGFuY2UAAUBsb2Fkc19hZmZvcmRhYmxlOAEMdTMyAAE8cmVkZWVtYWJsZV9rZXlzOAEMdTMyAAEwY3VycmVudF90aWVyFQ0BlE9wdGlvbjxEZXBvc2l0VGllcjxBc3NldElkLCBCYWxhbmNlPj4AASBvbGRfdGllchUNAZRPcHRpb248RGVwb3NpdFRpZXI8QXNzZXRJZCwgQmFsYW5jZT4+AAE0bG9hZHNfYmxvY2tlZD0NAWBPcHRpb248Q3VzdG9tSW52YWxpZGl0eT4AAD0NBBhPcHRpb24EBFQBQQ0BCBBOb25lAAAAEFNvbWUEAEENAAABAABBDQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0QEN1c3RvbUludmFsaWRpdHkAAdQYTm9Db2luACMAKENvaW5Ub29PbGQAJABIU3BsaXRJbnRvTm90U29ydGVkACUAVFNwbGl0RXhwb25lbnRUb29TbWFsbAAmADRJbnRlcm5hbEVycm9yACcALFNwbGl0VG9vQmlnACgAMEludmFsaWRTcGxpdAApAChFbXB0eVNwbGl0ACoANFRvb01hbnlTcGxpdHMAKwBQTWVtYmVyS2V5QWxyZWFkeVVzZWQALQBcUmVjeWNsZXJBbHJlYWR5VW5sb2FkZWQALgBIRGVub21pbmF0aW9uVG9vQmlnAC8AUERlbm9taW5hdGlvblRvb1NtYWxsADAAWERlbm9taW5hdGlvbk91dE9mQm91bmQAMQBMTm9VbmxvYWRpbmdSZWN5Y2xlcgAyAEBJbnZhbGlkTWVtYmVyS2V5ADMALEludmFsaWRDYWxsADQAVEFkZHJlc3NBbHJlYWR5SGFzQ29pbgA1AGhPcmlnaW5Ub0FzQ29pbk11c3RCZVNpZ25lZAA2AFxJbnZhbGlkVW5sb2FkVG9rZW5Qcm9vZgA3AGBJbnZhbGlkVW5sb2FkVG9rZW5QZXJpb2QAOABoVW5sb2FkVG9rZW5BbHJlYWR5Q29uc3VtZWQAOQBwVW5sb2FkVG9rZW5Db3VudGVyT3V0T2ZSYW5nZQA6AFxJbnZhbGlkUmVjeWNsZXJSZXZpc2lvbgA7AChOb1JlY3ljbGVyADwATFRyYW5zYWN0aW9uTm90TG9jYWwAPQA4Tm90aGluZ1RvQnVpbGQAPgBMU3BsaXRFeHBvbmVudFRvb0JpZwA/AIxJbnZhbGlkVW5sb2FkVG9rZW5QZXJpb2RPclJpbmdJbmRleABAAHBEdXBsaWNhdGVEZXN0aW5hdGlvbnNJblNwbGl0AEEASENvaW5BbW91bnRCZWxvd0ZlZQBCAFxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcABDAExGZWVDb2luQmVsb3dNaW5pbXVtAEQAXEZyb21PdXRwdXRGZWVOb3RBbGxvd2VkAEUAQEVtcHR5QWxpYXNQcm9vZnMARgBwSW52YWxpZFBhaWRUb2tlblJpbmdSZXZpc2lvbgBHAGhDYW5ub3RDb252ZXJ0QXNzZXRUb05hdGl2ZQBJAFRDb2luVGVtcG9yYXJpbHlMb2NrZWQASgBESW52YWxpZEFsaWFzUHJvb2YASwBsTWF4RmVlSW5zdWZmaWNpZW50Rm9yVW5sb2FkAEwAaE1heEZlZU5vdEFsbG93ZWRGb3JQcmVwYWlkAE0AbExvc3N5RGVub21pbmF0aW9uQ29udmVyc2lvbgBOAFhGaXJzdENhbGxBbGlhc01pc21hdGNoAE8AoEluZmFsbGlibGVVbnBhaWRTaWduZWRPcmlnaW5NdXN0QmVTaWduZWQAUACkSW5mYWxsaWJsZVVucGFpZFNpZ25lZEluc3VmZmljaWVudEJhbGFuY2UAUQBARW1wdHlNaXhlZE91dHB1dABTAFBFbXB0eVVucGFpZExvYWRCYXRjaABUAEBJbnN0YW5jZU5vdEZvdW5kAFUAWEFsaWFzVGVtcG9yYXJpbHlMb2NrZWQAVgBkUG90Q2Fubm90Q292ZXJMb2FkRGVwb3NpdABXAGhMb2FkRGVwb3NpdE9sZFRpZXJPY2N1cGllZABYACxFbXB0eUlucHV0cwBZAFRVbmxvYWRlZFZhbHVlQmVsb3dGZWUAWgAARQ0AAAJJDQBJDQAABAxxAUUBRQEATQ0EGE9wdGlvbgQEVAHVDAEIEE5vbmUAAAAQU29tZQQA1QwAAAEAAFENBBhPcHRpb24EBFQBEQQBCBBOb25lAAAAEFNvbWUEABEEAAABAABVDQQYT3B0aW9uBARUAf0MAQgQTm9uZQAAABBTb21lBAD9DAAAAQAAWQ0EGE9wdGlvbgQEVAGpBQEIEE5vbmUAAAAQU29tZQQAqQUAAAEAAF0NDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlczhTdWJzY3JpYmVySW5mbwQEVAAADAEsY29sbGVjdGlvbnPFBQEZAUJvdW5kZWRWZWM8KElkZW50aWZpZXIsIFJpbmdFeHBvbmVudCksIFQ6Ok1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlcj4AAUhsYXN0X2luaXRfc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABMHBhbGxldF9pbmRleAwBCHU4AABhDQx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXNcV2hpdGVsaXN0ZWRTdWJzY3JpcHRpb24EBFQAAAgBLGNvbGxlY3Rpb25zxQUBGQFCb3VuZGVkVmVjPChJZGVudGlmaWVyLCBSaW5nRXhwb25lbnQpLCBUOjpNYXhDb2xsZWN0aW9uc1BlclN1YnNjcmliZXI+AAEwcGFsbGV0X2luZGV4DAEIdTgAAGUNDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlcyxQYWdpbmdTdGF0ZQQsQmxvY2tOdW1iZXIBOAAMASh3cml0ZV9wYWdlzQMBDHUxNgABJHNlbmRfcGFnZc0DAQx1MTYAAURsYXN0X3VwZGF0ZV9ibG9jazgBLEJsb2NrTnVtYmVyAABpDQAABAzNAwg4AG0NDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlc0BQZW5kaW5nSW5pdFN0YXRlBARUAAAYASxjb2xsZWN0aW9uc8UFARkBQm91bmRlZFZlYzwoSWRlbnRpZmllciwgUmluZ0V4cG9uZW50KSwgVDo6TWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyPgABYGN1cnJlbnRfY29sbGVjdGlvbl9pbmRleDgBDHUzMgABQGFmdGVyX3JpbmdfaW5kZXjkAURPcHRpb248UmluZ0luZGV4PgABIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAASxzb3VyY2VfdGltZSgBDHU2NAABMHBhbGxldF9pbmRleAwBCHU4AABxDQx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXNYQmF0Y2hEaXN0cmlidXRpb25TdGF0ZQQsQmxvY2tOdW1iZXIBOAAQASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAEsc291cmNlX3RpbWUoAQx1NjQAASRzZWFsZWRfYXQ4ASxCbG9ja051bWJlcgABVHJlbWFpbmluZ19zdWJzY3JpYmVyczgBDHUzMgAAdQ0AAAQInAgAeQ0MdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyGHBhbGxldBRFcnJvcgQEVAABOEhTdWJzY3JpYmVyTm90Rm91bmQAAARUU3Vic2NyaWJlciBub3QgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAEEaFN1YnNjcmliZXIgYWxyZWFkeSBleGlzdHMuSFRvb01hbnlTdWJzY3JpYmVycwACBHBNYXhpbXVtIHN1YnNjcmliZXJzIHJlYWNoZWQuWEludmFsaWRDb2xsZWN0aW9uc0xpc3QAAwQ9AUNvbGxlY3Rpb25zIGxpc3QgbXVzdCBiZSBzb3J0ZWQgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyIHdpdGggbm8gZHVwbGljYXRlcy44VG9vTWFueVVwZGF0ZXMABATQVG9vIG1hbnkgcmluZyByb290IHVwZGF0ZXMgdG8gZml0IGluIGEgc2luZ2xlIGJhdGNoLjRYY21TZW5kRmFpbGVkAAUEQFhDTSBzZW5kIGZhaWxlZC5kTm90U3Vic2NyaWJlZFRvQ29sbGVjdGlvbgAGBORTdWJzY3JpYmVyIGlzIG5vdCBzdWJzY3JpYmVkIHRvIHRoZSByZXF1ZXN0ZWQgY29sbGVjdGlvbi5ASW52YWxpZFJpbmdJbmRleAAHBIBSaW5nIHJvb3QgaW5kZXggaXMgb3V0IG9mIHJhbmdlLlhFeGNlZWRzQ2hhbm5lbENhcGFjaXR5AAgEAQFSZXF1ZXN0ZWQgdXBkYXRlcyBleGNlZWQgdGhlIHN1YnNjcmliZXIncyBIUk1QIGNoYW5uZWwgY2FwYWNpdHkuNE5vQmF0Y2hBY3RpdmUACQRcTm8gYWN0aXZlIGJhdGNoIGV4aXN0cy40Tm9QZW5kaW5nSW5pdAAKBLhObyBwZW5kaW5nIGluaXRpYWxpemF0aW9uIGZvciB0aGlzIHN1YnNjcmliZXIuUFJlcGxheUNvb2xkb3duQWN0aXZlAAsEDQFSZXBsYXkgY29vbGRvd24gaGFzIG5vdCBlbGFwc2VkIGZvciB0aGlzIHN1YnNjcmliZXIgYW5kIGNvbGxlY3Rpb24uQEVtcHR5UmluZ0luZGljZXMADATkUmVwbGF5IHJlcXVlc3RlZCB3aXRoIGFuIGVtcHR5IGxpc3Qgb2YgcmluZyByb290IGluZGljZXMuOE5vdFdoaXRlbGlzdGVkAA0E7FBhcmFjaGFpbiBoYXMgbm8gd2hpdGVsaXN0ZWQgc3Vic2NyaXB0aW9uIGxlZnQgdG8gYWN0aXZhdGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ln0NDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBR0eXBlcyxBY3RpdmVFdmVudAwkQWNjb3VudElkAQQcQXNzZXRJZAFxATBBc3NldEJhbGFuY2UBRQEAEAEIaWQIARxFdmVudElkAAEQaW5mb90FAYBFdmVudEluZm88QXNzZXRJZCwgQXNzZXRCYWxhbmNlPgABGHN0YXR1c4ENARhTdGF0dXMAARhzb3VyY2U1AQFET3B0aW9uPEFjY291bnRJZD4AAIENDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBR0eXBlcxhTdGF0dXMAASAkU2NoZWR1bGVkAAAALFJlZ2lzdGVyaW5nBAFIdG90YWxfcGFydGljaXBhbnRzOAEMdTMyAAEAPEF3YWl0aW5nRW50cm9weQwBSHRvdGFsX3BhcnRpY2lwYW50czgBDHUzMgABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAEsbGFzdF9tb21lbnQ4AQx1MzIAAgAsRHJhd1dpbm5lcnMQAUh0b3RhbF9wYXJ0aWNpcGFudHM4AQx1MzIAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABNHdpbm5lcnNfYWRkZWQ4AQx1MzIAATxmcm9tX3dpbm5lcl9rZXkpCAE0QmlnRW5kaWFuVTI1NgADACBDbGFpbWluZwwBSHRvdGFsX3BhcnRpY2lwYW50czgBDHUzMgABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAEcY2xhaW1lZDgBDHUzMgAEAFRDbGVhcmluZ1JlZ2lzdHJhdGlvbnMQAUh0b3RhbF9wYXJ0aWNpcGFudHM4AQx1MzIAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABHGNsYWltZWQ4AQx1MzIAAVRjbGVhbmVkX3JlZ2lzdHJhdGlvbnM4AQx1MzIABQA8Q2xlYXJpbmdXaW5uZXJzEAFIdG90YWxfcGFydGljaXBhbnRzOAEMdTMyAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIAARxjbGFpbWVkOAEMdTMyAAE8Y2xlYW5lZF93aW5uZXJzOAEMdTMyAAYAKEZpbmFsaXppbmcIAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABHGNsYWltZWQ4AQx1MzIABwAAhQ0AAAQIiQ0IAIkNDDRpbmRpdl9zdXBwb3J0FHV0aWxzMEJpZ0VuZGlhblU2NAADCAAAAAwEGQFBIHU2NCBlbmNvZGVkIGluIGJpZy1lbmRpYW4gZm9ybWF0IGZvciBjb3JyZWN0IGxleGljb2dyYXBoaWMgb3JkZXJpbmcujQ0AAAQICCkIAJENAAAECAgtCACVDQxQaW5kaXZfcGFsbGV0X2FpcmRyb3AYcGFsbGV0FEVycm9yBARUAAFUUFByaXplQmVsb3dNaW5CYWxhbmNlAAAATE5vV2lubmVyc0NvbmZpZ3VyZWQAAQA4VG9vTWFueVdpbm5lcnMAAgBESW52YWxpZEV2ZW50VGltZXMAAwBARHVwbGljYXRlRXZlbnRJZAAEAEBOb1NjaGVkdWxlZEV2ZW50AAUAMFVua25vd25FdmVudAAGACxXcm9uZ1N0YXR1cwAHBOBPcGVyYXRpb24gcmVxdWlyZXMgYSBzcGVjaWZpYyBzdGF0dXMgdGhlIGV2ZW50IGlzbid0IGluLmROb3RBY2NlcHRpbmdSZWdpc3RyYXRpb25zAAgALE5vdENsYWltaW5nAAkAUENsYWltaW5nV2luZG93Q2xvc2VkAAoEtENsYWltIGF0dGVtcHRlZCBhZnRlciB0aGUgZXZlbnQncyBgZW5kX3RpbWVgLkBFbnRyb3B5U2xvdFRha2VuAAsAPEludmFsaWRWcmZQcm9vZgAMAFRVbnN1cHBvcnRlZEFjY291bnRLZXkADQQJAVN1cHBsaWVkIGFjY291bnQgaWQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhbnkgc3IyNTUxOSBwdWJsaWMga2V5LlhJbnZhbGlkTWVtYmVyc2hpcFByb29mAA4AME5vU3VjaFdpbm5lcgAPAExQYXJ0aWNpcGFudE92ZXJmbG93ABAAXFByaXplQWxsb2NhdGlvbk92ZXJmbG93ABEAPEFzc2V0Tm90RW5hYmxlZAASBOBUaGUgcHJpemUgYXNzZXQgaGFzIG5vdCBiZWVuIGVuYWJsZWQgdmlhIGBlbmFibGVfYXNzZXRgLkxBc3NldEFscmVhZHlFbmFibGVkABME/GBlbmFibGVfYXNzZXRgIHdhcyBjYWxsZWQgZm9yIGFuIGFzc2V0IHRoYXQgaXMgYWxyZWFkeSBlbmFibGVkLjxFbnRyb3B5Tm90UmVhZHkAFAQJAU5vIHJhbmRvbW5lc3MgcHJvZHVjZWQgYWZ0ZXIgcmVnaXN0cmF0aW9uIGNsb3NlZCBpcyBhdmFpbGFibGUgeWV0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6ZDQxMaW5kaXZfcGFsbGV0X2hvbm91chR0eXBlcyRQb2ludEluZm8AABABHHN1YmplY3QIASRTdWJqZWN0SWQAATRzdWJqZWN0X2FsaWFzCAEwU3ViamVjdEFsaWFzAAEkZGlyZWN0aW9u6QUBJERpcmVjdGlvbgABMGxhc3RfdXNlZF9hdCgBHFNlY29uZHMAAJ0NDExpbmRpdl9wYWxsZXRfaG9ub3VyGHBhbGxldBRFcnJvcgQEVAABDChBcml0aG1ldGljAAAECQFBcml0aG1ldGljIGVycm9yIGxpa2Ugb3Zlci91bmRlcmZsb3csIGRpdmlzaW9uIGJ5IHplcm8gb3Igc2ltaWxhci5MU3ViamVjdEFscmVhZHlWb3RlZAABBPxUaGVyZSBpcyBhbHJlYWR5IGEgdm90ZSBieSB0aGUgc2FtZSB2b3RlciBmb3IgdGhlIHNhbWUgc3ViamVjdC4wSW52YWxpZFByb29mAAIEsFRoZSBwcm92aWRlZCByaW5nIHByb29mIGZhaWxlZCB2ZXJpZmljYXRpb24uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqENAAAECAgoAKUNDHBpbmRpdl9wYWxsZXRfcGVvcGxlX2FpcmRyb3BzGHBhbGxldBRFcnJvcgQEVAABDFRSYW5kb21uZXNzVW5hdmFpbGFibGUAAAQRAVRoZSByYW5kb21uZXNzIHNvdXJjZSBoYXMgbm8gdmFsdWUgdG8gc2FsdCB0aGUgc2NoZWR1bGVkIGRyYXdzIHdpdGguLFVua25vd25EcmF3AAEE4E5vIGRyYXcgd2l0aCB0aGlzIGV2ZW50IGlkIHdhcyBzY2hlZHVsZWQgYnkgdGhpcyBwYWxsZXQuREVtcHR5UmVnaXN0cmF0aW9uAAIEqGByZWdpc3RlcmAgd2FzIGNhbGxlZCB3aXRoIGFuIGVtcHR5IGJhdGNoLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6pDQxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0FEVycm9yBARUAAEEHE9uZ29pbmcAAAToVGhlIG9wZXJhdGlvbiBjYW5ub3QgY29tcGxldGUgc2luY2Ugc29tZSBNQk1zIGFyZSBvbmdvaW5nLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6tDQhEcGFsbGV0X21pZ3JhdGlvbnMwTWJtSXNPbmdvaW5nAAEMDFllcwAAAAhObwABABRTdHVjawACAACxDQQYT3B0aW9uBARUAbUNAQgQTm9uZQAAABBTb21lBAC1DQAAAQAAtQ0IRHBhbGxldF9taWdyYXRpb25zLE1ibVByb2dyZXNzAAAQAURjdXJyZW50X21pZ3JhdGlvbjgBDHUzMgABQHRvdGFsX21pZ3JhdGlvbnM4AQx1MzIAAVxjdXJyZW50X21pZ3JhdGlvbl9zdGVwczgBDHUzMgABbGN1cnJlbnRfbWlncmF0aW9uX21heF9zdGVwc+QBLE9wdGlvbjx1MzI+AAC5DQhEcGFsbGV0X21pZ3JhdGlvbnMkTWJtU3RhdHVzAAAMARxvbmdvaW5nrQ0BME1ibUlzT25nb2luZwABIHByb2dyZXNzsQ0BTE9wdGlvbjxNYm1Qcm9ncmVzcz4AASBwcmVmaXhlczQBMFZlYzxWZWM8dTg+PgAAvQ0ISHNwX2NvbnNlbnN1c19zbG90czBTbG90RHVyYXRpb24AAAQAKAEMdTY0AADBDRAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAZUIAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3PFDQFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AAMUNAAACyQ0AyQ0IKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AAM0NCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAANENCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AANUNBBhPcHRpb24EBFQB0Q0BCBBOb25lAAAAEFNvbWUEANENAAABAADZDQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uczhWaWV3RnVuY3Rpb25JZAAACAEYcHJlZml4ZQIBIFt1ODsgMTZdAAEYc3VmZml4ZQIBIFt1ODsgMTZdAADdDQQYUmVzdWx0CARUARgERQHhDQEICE9rBAAYAAAAAAxFcnIEAOENAAABAADhDQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uc2RWaWV3RnVuY3Rpb25EaXNwYXRjaEVycm9yAAEMOE5vdEltcGxlbWVudGVkAAAAIE5vdEZvdW5kBADZDQE4Vmlld0Z1bmN0aW9uSWQAAQAUQ29kZWMAAgAA5Q0EGFJlc3VsdAgEVAHNBwRFAekNAQgIT2sEAM0HAAAAAAxFcnIEAOkNAAABAADpDQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eWBUcmFuc2FjdGlvblZhbGlkaXR5RXJyb3IAAQgcSW52YWxpZAQA7Q0BSEludmFsaWRUcmFuc2FjdGlvbgAAABxVbmtub3duBADxDQFIVW5rbm93blRyYW5zYWN0aW9uAAEAAO0NDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5SEludmFsaWRUcmFuc2FjdGlvbgABNBBDYWxsAAAAHFBheW1lbnQAAQAYRnV0dXJlAAIAFFN0YWxlAAMAIEJhZFByb29mAAQAREFuY2llbnRCaXJ0aEJsb2NrAAUAREV4aGF1c3RzUmVzb3VyY2VzAAYAGEN1c3RvbQQADAEIdTgABwAwQmFkTWFuZGF0b3J5AAgATE1hbmRhdG9yeVZhbGlkYXRpb24ACQAkQmFkU2lnbmVyAAoAVEluZGV0ZXJtaW5hdGVJbXBsaWNpdAALADRVbmtub3duT3JpZ2luAAwAAPENDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5SFVua25vd25UcmFuc2FjdGlvbgABDDBDYW5ub3RMb29rdXAAAABMTm9VbnNpZ25lZFZhbGlkYXRvcgABABhDdXN0b20EAAwBCHU4AAIAAPUNCDBzcF9pbmhlcmVudHMwSW5oZXJlbnREYXRhAAAEARBkYXRh+Q0BlEJUcmVlTWFwPEluaGVyZW50SWRlbnRpZmllciwgVmVjPHU4Pj4AAPkNBCBCVHJlZU1hcAgESwFhAgRWARgABAD9DQAAAP0NAAACAQ4AAQ4AAAQIYQIYAAUOCDBzcF9pbmhlcmVudHNQQ2hlY2tJbmhlcmVudHNSZXN1bHQAAAwBEG9rYXlZAQEQYm9vbAABLGZhdGFsX2Vycm9yWQEBEGJvb2wAARhlcnJvcnP1DQEwSW5oZXJlbnREYXRhAAAJDgwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eURUcmFuc2FjdGlvblNvdXJjZQABDBxJbkJsb2NrAAAAFExvY2FsAAEAIEV4dGVybmFsAAIAAA0OBBhSZXN1bHQIBFQBEQ4ERQHpDQEICE9rBAARDgAAAAAMRXJyBADpDQAAAQAAEQ4MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlAVmFsaWRUcmFuc2FjdGlvbgAAFAEgcHJpb3JpdHkoAUxUcmFuc2FjdGlvblByaW9yaXR5AAEgcmVxdWlyZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEgcHJvdmlkZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEkbG9uZ2V2aXR5KAFQVHJhbnNhY3Rpb25Mb25nZXZpdHkAASRwcm9wYWdhdGVZAQEQYm9vbAAAFQ4MKHNwX3Nlc3Npb24scnVudGltZV9hcGloT3BhcXVlR2VuZXJhdGVkU2Vzc2lvbktleXMAAAgBEGtleXMYARxWZWM8dTg+AAEUcHJvb2YYARxWZWM8dTg+AAAZDgQYT3B0aW9uBARUAR0OAQgQTm9uZQAAABBTb21lBAAdDgAAAQAAHQ4AAAIhDgAhDgAABAgYEQoAJQ4MaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UBRQEYV2VpZ2h0AXkCAAwBGHdlaWdodHkCARhXZWlnaHQAARRjbGFzc+kGATREaXNwYXRjaENsYXNzAAEscGFydGlhbF9mZWVFAQEcQmFsYW5jZQAAKQ4MaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBRQEACAE0aW5jbHVzaW9uX2ZlZS0OAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcEUBARxCYWxhbmNlAAAtDgQYT3B0aW9uBARUATEOAQgQTm9uZQAAABBTb21lBAAxDgAAAQAAMQ4MaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzMEluY2x1c2lvbkZlZQQcQmFsYW5jZQFFAQAMASBiYXNlX2ZlZUUBARxCYWxhbmNlAAEcbGVuX2ZlZUUBARxCYWxhbmNlAAFMYWRqdXN0ZWRfd2VpZ2h0X2ZlZUUBARxCYWxhbmNlAAA1DgQYUmVzdWx0CARUATkOBEUBPQ4BCAhPawQAOQ4AAAAADEVycgQAPQ4AAAEAADkOAAACsQMAPQ4MQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAABBDgQYUmVzdWx0CARUAXkCBEUBPQ4BCAhPawQAeQIAAAAADEVycgQAPQ4AAAEAAEUOBBhSZXN1bHQIBFQBRQEERQE9DgEICE9rBABFAQAAAAAMRXJyBAA9DgAAAQAASQ4EGFJlc3VsdAgEVAF9AwRFAT0OAQgIT2sEAH0DAAAAAAxFcnIEAD0OAAABAABNDgQYUmVzdWx0CARUAVEOBEUBdQ4BCAhPawQAUQ4AAAAADEVycgQAdQ4AAAEAAFEODEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50Ad0GABABQGV4ZWN1dGlvbl9yZXN1bHRVDgFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAThlbWl0dGVkX2V2ZW50c2EOAShWZWM8RXZlbnQ+AAEkbG9jYWxfeGNtZQ4BYE9wdGlvbjxWZXJzaW9uZWRYY208KCk+PgABOGZvcndhcmRlZF94Y21zaQ4BvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AABVDgQYUmVzdWx0CARUAVkOBEUBXQ4BCAhPawQAWQ4AAAAADEVycgQAXQ4AAAEAAFkODDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBvc3REaXNwYXRjaEluZm8AAAgBNGFjdHVhbF93ZWlnaHRJAwE4T3B0aW9uPFdlaWdodD4AASBwYXlzX2ZlZe0GARBQYXlzAABdDggoc3BfcnVudGltZWREaXNwYXRjaEVycm9yV2l0aFBvc3RJbmZvBBBJbmZvAVkOAAgBJHBvc3RfaW5mb1kOARBJbmZvAAEUZXJyb3LxBgE0RGlzcGF0Y2hFcnJvcgAAYQ4AAALdBgBlDgQYT3B0aW9uBARUATkCAQgQTm9uZQAAABBTb21lBAA5AgAAAQAAaQ4AAAJtDgBtDgAABAjtAXEOAHEOAAACOQIAdQ4MQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bhRFcnJvcgABCDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAAeQ4EGFJlc3VsdAgEVAF9DgRFAXUOAQgIT2sEAH0OAAAAAAxFcnIEAHUOAAABAAB9DgxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuQFhjbURyeVJ1bkVmZmVjdHMEFEV2ZW50Ad0GAAwBQGV4ZWN1dGlvbl9yZXN1bHSxBwEcT3V0Y29tZQABOGVtaXR0ZWRfZXZlbnRzYQ4BKFZlYzxFdmVudD4AAThmb3J3YXJkZWRfeGNtc2kOAbxWZWM8KFZlcnNpb25lZExvY2F0aW9uLCBWZWM8VmVyc2lvbmVkWGNtPCgpPj4pPgAAgQ4EGFJlc3VsdAgEVAEEBEUBhQ4BCAhPawQABAAAAAAMRXJyBACFDgAAAQAAhQ4MQHhjbV9ydW50aW1lX2FwaXMsY29udmVyc2lvbnMURXJyb3IAAQgsVW5zdXBwb3J0ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAACJDgAAAo0OAI0OAAAECDj9BwCRDgQYUmVzdWx0CARUAZUOBEUBoQ4BCAhPawQAlQ4AAAAADEVycgQAoQ4AAAEAAJUOAAACmQ4AmQ4MYGluZGl2X3BhbGxldF9uZnRfY3JlZGl0cxR0eXBlc0xOZnRDbGFpbUNyZWRpdFByb29mAAAMARhjcmVkaXQIAThOZnRDbGFpbUNyZWRpdAABKGxlYWZfaW5kZXg4AQx1MzIAARRwcm9vZp0OAVBWZWM8Q3JlZGl0UHJvb2ZOb2RlPgAAnQ4AAAIBCAChDgxgaW5kaXZfcGFsbGV0X25mdF9jcmVkaXRzFHR5cGVzYE5mdENsYWltQ3JlZGl0UHJvb2ZFcnJvcgABFERVbmtub3duQXdhcmRCbG9jawAAADBBd2FyZHNQcnVuZWQAAQBETGVhZkNvdW50TWlzbWF0Y2gEASBleHBlY3RlZDgBDHUzMgACAFBMZWFmSW5kZXhPdXRPZkJvdW5kcwADADBSb290TWlzbWF0Y2gABAAApQ4EGFJlc3VsdAgEVAGZDgRFAaEOAQgIT2sEAJkOAAAAAAxFcnIEAKEOAAABAACpDghcY3VtdWx1c19wcmltaXRpdmVzX2NvcmU0Q29sbGF0aW9uSW5mbwAAGAE8dXB3YXJkX21lc3NhZ2VzNAFIVmVjPFVwd2FyZE1lc3NhZ2U+AAFMaG9yaXpvbnRhbF9tZXNzYWdlcxUJAWBWZWM8T3V0Ym91bmRIcm1wTWVzc2FnZT4AAUxuZXdfdmFsaWRhdGlvbl9jb2RlrQ4BjE9wdGlvbjxyZWxheV9jaGFpbjo6VmFsaWRhdGlvbkNvZGU+AAFscHJvY2Vzc2VkX2Rvd253YXJkX21lc3NhZ2VzOAEMdTMyAAE4aHJtcF93YXRlcm1hcms4AWByZWxheV9jaGFpbjo6QmxvY2tOdW1iZXIAASRoZWFkX2RhdGFMASBIZWFkRGF0YQAArQ4EGE9wdGlvbgQEVAGxDgEIEE5vbmUAAAAQU29tZQQAsQ4AAAEAALEODHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzOFZhbGlkYXRpb25Db2RlAAAEABgBHFZlYzx1OD4AALUOBBhSZXN1bHQIBFQBEARFAVkIAQgIT2sEABAAAAAADEVycgQAWQgAAAEAALkOBBhPcHRpb24EBFQBWQgBCBBOb25lAAAAEFNvbWUEAFkIAAABAAC9DgAAAlkIAMEOCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lMFJ1bnRpbWVFcnJvcgABkBhTeXN0ZW0EAIkIAXBmcmFtZV9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAJQkBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAEANE5ldHdvcmtTdWZmaXgEADUJAaxpbmRpdl9wYWxsZXRfbmV0d29ya19zdWZmaXg6OkVycm9yPFJ1bnRpbWU+AEoAIEJhbGFuY2VzBABtCQF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKAERPcmlnaW5SZXN0cmljdGlvbgQAgQkBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkVycm9yPFJ1bnRpbWU+AA0AGEFzc2V0cwQArQkBdHBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWU+AA4AMEFzc2V0c0hvbGRlcgQAuQkBkHBhbGxldF9hc3NldHNfaG9sZGVyOjpFcnJvcjxSdW50aW1lPgAPACRBc3NldFJhdGUEAL0JAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXJyb3I8UnVudGltZT4AEAA8QXNzZXRDb252ZXJzaW9uBADJCQGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkVycm9yPFJ1bnRpbWU+ABIAKFBvb2xBc3NldHMEAN0JAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ABMARENvbGxhdG9yU2VsZWN0aW9uBADxCQGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXJyb3I8UnVudGltZT4AFQAcU2Vzc2lvbgQAFQoBeHBhbGxldF9zZXNzaW9uOjpFcnJvcjxSdW50aW1lPgAWACRYY21wUXVldWUEAFEKAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQAuQoBaHBhbGxldF94Y206OkVycm9yPFJ1bnRpbWU+AB8AME1lc3NhZ2VRdWV1ZQQA2QoBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAiABxVdGlsaXR5BADdCgF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+ACgAIE11bHRpc2lnBADtCgF8cGFsbGV0X211bHRpc2lnOjpFcnJvcjxSdW50aW1lPgApABBTdWRvBADxCgFscGFsbGV0X3N1ZG86OkVycm9yPFJ1bnRpbWU+ACoAFFByb3h5BAAVCwFwcGFsbGV0X3Byb3h5OjpFcnJvcjxSdW50aW1lPgAsABhQZW9wbGUEAB0LAYxpbmRpdl9wYWxsZXRfcGVvcGxlOjpFcnJvcjxSdW50aW1lPgAzABxNb2JSdWxlBABhCwGUaW5kaXZfcGFsbGV0X21vYl9ydWxlOjpFcnJvcjxSdW50aW1lPgA0AChQcm9vZk9mSW5rBACdCwGkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luazo6RXJyb3I8UnVudGltZT4ANQAQR2FtZQQA8QsBhGluZGl2X3BhbGxldF9nYW1lOjpFcnJvcjxSdW50aW1lPgA3ABRTY29yZQQAHQwBiGluZGl2X3BhbGxldF9zY29yZTo6RXJyb3I8UnVudGltZT4AOAAoTmZ0Q3JlZGl0cwQARQwBoGluZGl2X3BhbGxldF9uZnRfY3JlZGl0czo6RXJyb3I8UnVudGltZT4AOQAgRHVtbXlEaW0EAE0MAZhpbmRpdl9wYWxsZXRfZHVtbXlfZGltOjpFcnJvcjxSdW50aW1lPgA7AChQZW9wbGVMaXRlBABZDAGgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlOjpFcnJvcjxSdW50aW1lPgA+ACRSZXNvdXJjZXMEAI0MAZhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzOjpFcnJvcjxSdW50aW1lPgA/ADRDaHVua3NNYW5hZ2VyBAClDAGsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyOjpFcnJvcjxSdW50aW1lPgBAABxNZW1iZXJzBADxDAGQaW5kaXZfcGFsbGV0X21lbWJlcnM6OkVycm9yPFJ1bnRpbWU+AEMAHENvaW5hZ2UEADENAZBpbmRpdl9wYWxsZXRfY29pbmFnZTo6RXJyb3I8UnVudGltZT4ARAA8TWVtYmVyc05vdGlmaWVyBAB5DQG0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXI6OkVycm9yPFJ1bnRpbWU+AEUAHEFpcmRyb3AEAJUNAZBpbmRpdl9wYWxsZXRfYWlyZHJvcDo6RXJyb3I8UnVudGltZT4ARgAYSG9ub3VyBACdDQGMaW5kaXZfcGFsbGV0X2hvbm91cjo6RXJyb3I8UnVudGltZT4ARwA4UGVvcGxlQWlyZHJvcHMEAKUNAbBpbmRpdl9wYWxsZXRfcGVvcGxlX2FpcmRyb3BzOjpFcnJvcjxSdW50aW1lPgBIAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAqQ0BhHBhbGxldF9taWdyYXRpb25zOjpFcnJvcjxSdW50aW1lPgBiAADEGFN5c3RlbQEYU3lzdGVtUBxBY2NvdW50AQEEAgTFBkEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAE6CBUaGUgZnVsbCBhY2NvdW50IGluZm9ybWF0aW9uIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudCBJRC4AOEV4dHJpbnNpY0NvdW50AAA4BAAEuCBUb3RhbCBleHRyaW5zaWNzIGNvdW50IGZvciB0aGUgY3VycmVudCBibG9jay4AQEluaGVyZW50c0FwcGxpZWQBAFkBBAAEpCBXaGV0aGVyIGFsbCBpbmhlcmVudHMgaGF2ZSBiZWVuIGFwcGxpZWQuACxCbG9ja1dlaWdodAEA0QYYAAAAAAAABIggVGhlIGN1cnJlbnQgd2VpZ2h0IGZvciB0aGUgYmxvY2suACRCbG9ja1NpemUAADgEAAywIFRvdGFsIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgY3VycmVudCBibG9jay4AyCBUcmFja3MgdGhlIHNpemUgb2YgdGhlIGhlYWRlciBhbmQgYWxsIGV4dHJpbnNpY3MuACRCbG9ja0hhc2gBAQQFODyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmCBNYXAgb2YgYmxvY2sgbnVtYmVycyB0byBibG9jayBoYXNoZXMuADRFeHRyaW5zaWNEYXRhAQEEBTgYBAAEPQEgRXh0cmluc2ljcyBkYXRhIGZvciB0aGUgY3VycmVudCBibG9jayAobWFwcyBhbiBleHRyaW5zaWMncyBpbmRleCB0byBpdHMgZGF0YSkuABhOdW1iZXIBADgQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLgAoUGFyZW50SGFzaAEAPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLgAYRGlnZXN0AQBkBAAE8CBEaWdlc3Qgb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGFsc28gcGFydCBvZiB0aGUgYmxvY2sgaGVhZGVyLgAYRXZlbnRzAQDVBgQAHKAgRXZlbnRzIGRlcG9zaXRlZCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgAtASBFdmVudHMgaGF2ZSBhIGxhcmdlIGluLW1lbW9yeSBzaXplLiBCb3ggdGhlIGV2ZW50cyB0byBub3QgZ28gb3V0LW9mLW1lbW9yefwganVzdCBpbiBjYXNlIHNvbWVvbmUgc3RpbGwgcmVhZHMgdGhlbSBmcm9tIHdpdGhpbiB0aGUgcnVudGltZS4AKEV2ZW50Q291bnQBADgQAAAAAAS4IFRoZSBudW1iZXIgb2YgZXZlbnRzIGluIHRoZSBgRXZlbnRzPFQ+YCBsaXN0LgAsRXZlbnRUb3BpY3MBAQQCPEkIBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC4ASExhc3RSdW50aW1lVXBncmFkZQAAUQgEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC4AREJsb2Nrc1RpbGxVcGdyYWRlAAAMBAAE7CBOdW1iZXIgb2YgYmxvY2tzIHRpbGwgdGhlIHBlbmRpbmcgY29kZSB1cGdyYWRlIGlzIGFwcGxpZWQuAFRVcGdyYWRlZFRvVTMyUmVmQ291bnQBAFkBBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQBZAQQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LgA4RXhlY3V0aW9uUGhhc2UAAEEIBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4AREF1dGhvcml6ZWRVcGdyYWRlAABdCAQABLggYFNvbWVgIGlmIGEgY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuAGBFeHRyaW5zaWNXZWlnaHRSZWNsYWltZWQBAHkCCAAAHKAgVGhlIHdlaWdodCByZWNsYWltZWQgZm9yIHRoZSBleHRyaW5zaWMuACEBIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uIQEgTW9yZSBwcmVjaXNlbHkgdGhpcyBpbmZvcm1hdGlvbiBpcyByZW1vdmVkIGluIGBub3RlX2FwcGxpZWRfZXh0cmluc2ljYC4AcQEgTG9naWMgZG9pbmcgc29tZSBwb3N0IGRpc3BhdGNoIHdlaWdodCByZWR1Y3Rpb24gbXVzdCB1cGRhdGUgdGhpcyBzdG9yYWdlIHRvIGF2b2lkIGR1cGxpY2F0ZSwgcmVkdWN0aW9uLgABJAAB4QYAGDBCbG9ja1dlaWdodHNhCIkBBwDyBSoBAAsAIEqp0QECAIACAmXNHQABC8BWDe9FAQIAwAEBCwCY9z5dAQIA4AEBAAACZc0dAAELwN5fWboBAgBgAgELACBKqdEBAgCAAgEHAIhSanQCAKAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3RobQg0AAA8AAAAUAAAAFAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGJsb2NrIChpbiBieXRlcykuADhCbG9ja0hhc2hDb3VudDgQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4AIERiV2VpZ2h0dQhAQHh9AQAAAAAA4fUFAAAAAAQJASBUaGUgd2VpZ2h0IG9mIHJ1bnRpbWUgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0aGUgcnVudGltZSBjYW4gaW52b2tlLgAcVmVyc2lvbnkIKQVEbmV4dC1wZW9wbGUtcGFzZW9EbmV4dC1wZW9wbGUtcGFzZW8BAAAAwMYtAAAAAABc3XGNXMUyYtQBAAAABOcFIaDT0vgCAAAAFivxkTerrL0BAAAA173YonLKDWUCAAAA32rLaJkHYJsFAAAAN+OX/HyR9eQCAAAAzNneY5bImcoBAAAAQP461AH4lZoGAAAA0ryYl+7QjxUDAAAA94sni+U/RUwCAAAAqzwFcikf64sCAAAAvJ2JkE9bkj8BAAAAN8i7E1CpoqgEAAAA8/8U1atScFkDAAAAb/Uu6Fjmxb0CAAAAkbHIsWMo65ICAAAAn/tQWqc41pwBAAAA0LrHvkprCSABAAAAkof7DgIbyFQBAAAAhDtvjOyAmMcBAAAAX00Hx2MP1rkBAAAA6pPj8W89aWIDAAAA+8V3uddH79YBAAAABQAAAAEEhCBHZXQgdGhlIGNoYWluJ3MgaW4tY29kZSB2ZXJzaW9uLgAoU1M1OFByZWZpeM0DCCoAFKggVGhlIGRlc2lnbmF0ZWQgU1M1OCBwcmVmaXggb2YgdGhpcyBjaGFpbi4AOQEgVGhpcyByZXBsYWNlcyB0aGUgInNzNThGb3JtYXQiIHByb3BlcnR5IGRlY2xhcmVkIGluIHRoZSBjaGFpbiBzcGVjLiBSZWFzb24gaXMxASB0aGF0IHRoZSBydW50aW1lIHNob3VsZCBrbm93IGFib3V0IHRoZSBwcmVmaXggaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2YgaXQgYXNwIGFuIGlkZW50aWZpZXIgb2YgdGhlIGNoYWluLgABiQgAHCxSdW50aW1lQ2FsbCAEjCBUaGUgYWdncmVnYXRlZCBgUnVudGltZUNhbGxgIHR5cGUuFE5vbmNlOARJASBUaGlzIHN0b3JlcyB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHRyYW5zYWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSBzZW5kZXIgYWNjb3VudC4QSGFzaDwEmCBUaGUgb3V0cHV0IG9mIHRoZSBgSGFzaGluZ2AgZnVuY3Rpb24uHEhhc2hpbmeNCAQhASBUaGUgaGFzaGluZyBzeXN0ZW0gKGFsZ29yaXRobSkgYmVpbmcgdXNlZCBpbiB0aGUgcnVudGltZSAoZS5nLiBCbGFrZTIpLiRBY2NvdW50SWQEBMggVGhlIHVzZXIgYWNjb3VudCBpZGVudGlmaWVyIHR5cGUgZm9yIHRoZSBydW50aW1lLhRCbG9ja5EICGEBIFRoZSBCbG9jayB0eXBlIHVzZWQgYnkgdGhlIHJ1bnRpbWUuIFRoaXMgaXMgdXNlZCBieSBgY29uc3RydWN0X3J1bnRpbWVgIHRvIHJldHJpZXZlIHRoZcwgZXh0cmluc2ljcyBvciBvdGhlciBibG9jayBzcGVjaWZpYyBkYXRhIGFzIG5lZWRlZC4sQWNjb3VudERhdGHJBghhASBEYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBhY2NvdW50IChvdGhlciB0aGFuIG5vbmNlL3RyYW5zYWN0aW9uIGNvdW50ZXIsIHdoaWNoIHRoaXNkIHBhbGxldCBkb2VzIHJlZ2FyZGxlc3MpLgAAAAA8UGFyYWNoYWluU3lzdGVtATxQYXJhY2hhaW5TeXN0ZW18PEJsb2NrV2VpZ2h0TW9kZQAAqQgEABh8IFRoZSBjdXJyZW50IGJsb2NrIHdlaWdodCBtb2RlLgB1ASBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgdGhlIG1heGltdW0gYWxsb3dlZCBibG9jayB3ZWlnaHQsIGZvciBtb3JlIGluZm9ybWF0aW9uIHNlZUggW2BibG9ja193ZWlnaHRgXS4AJQEgS2lsbGVkIGluIFtgU2VsZjo6b25faW5pdGlhbGl6ZWBdIGFuZCBzZXQgYnkgdGhlIFtgYmxvY2tfd2VpZ2h0YF0gbG9naWMuAERQcmV2aW91c0NvcmVDb3VudAAArQgEAAwFASBUaGUgY29yZSBjb3VudCBhdmFpbGFibGUgdG8gdGhlIHBhcmFjaGFpbiBpbiB0aGUgcHJldmlvdXMgYmxvY2suAHUBIFRoaXMgaXMgbWFpbmx5IHVzZWQgZm9yIG9mZmNoYWluIGZ1bmN0aW9uYWxpdHkgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHRhcmdldCBibG9jayB3ZWlnaHQuAERVbmluY2x1ZGVkU2VnbWVudAEAsQgEABhJASBMYXRlc3QgaW5jbHVkZWQgYmxvY2sgZGVzY2VuZGFudHMgdGhlIHJ1bnRpbWUgYWNjZXB0ZWQuIEluIG90aGVyIHdvcmRzLCB0aGVzZSBhcmVhASBhbmNlc3RvcnMgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgYmxvY2sgd2hpY2ggaGF2ZSBub3QgYmVlbiBpbmNsdWRlZCBpbiB0aGUgb2JzZXJ2ZWRMIHJlbGF5LWNoYWluIHN0YXRlLgB1ASBUaGUgc2VnbWVudCBsZW5ndGggaXMgbGltaXRlZCBieSB0aGUgY2FwYWNpdHkgcmV0dXJuZWQgZnJvbSB0aGUgW2BDb25zZW5zdXNIb29rYF0gY29uZmlndXJlZDwgaW4gdGhlIHBhbGxldC4AbEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudAAA2QgEAAxpASBTdG9yYWdlIGZpZWxkIHRoYXQga2VlcHMgdHJhY2sgb2YgYmFuZHdpZHRoIHVzZWQgYnkgdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBhbG9uZyB3aXRoIHRoZS0BIGxhdGVzdCBIUk1QIHdhdGVybWFyay4gVXNlZCBmb3IgbGltaXRpbmcgdGhlIGFjY2VwdGFuY2Ugb2YgbmV3IGJsb2NrcyB3aXRokCByZXNwZWN0IHRvIHJlbGF5IGNoYWluIGNvbnN0cmFpbnRzLgBUUGVuZGluZ1ZhbGlkYXRpb25Db2RlAQAYBAAYWQEgSW4gY2FzZSBvZiBhIHNjaGVkdWxlZCB1cGdyYWRlLCB0aGlzIHN0b3JhZ2UgZmllbGQgY29udGFpbnMgdGhlIHZhbGlkYXRpb24gY29kZSB0byBiZSQgYXBwbGllZC4APQEgQXMgc29vbiBhcyB0aGUgcmVsYXkgY2hhaW4gZ2l2ZXMgdXMgdGhlIGdvLWFoZWFkIHNpZ25hbCwgd2Ugd2lsbCBvdmVyd3JpdGUgdGhlZQEgW2A6cGVuZGluZ19jb2RlYF1bc3BfY29yZTo6c3RvcmFnZTo6d2VsbF9rbm93bl9rZXlzOjpQRU5ESU5HX0NPREVdIHdoaWNoIHdpbGwgcmVzdWx0IHRoZXUBIG5leHQgYmxvY2sgdG8gYmUgcHJvY2Vzc2VkIHdpdGggdGhlIG5ldyB2YWxpZGF0aW9uIGNvZGUuIFRoaXMgY29uY2x1ZGVzIHRoZSB1cGdyYWRlIHByb2Nlc3MuAEROZXdWYWxpZGF0aW9uQ29kZQAAGAQAFF0BIFZhbGlkYXRpb24gY29kZSB0aGF0IGlzIHNldCBieSB0aGUgcGFyYWNoYWluIGFuZCBpcyB0byBiZSBjb21tdW5pY2F0ZWQgdG8gY29sbGF0b3IgYW5keCBjb25zZXF1ZW50bHkgdGhlIHJlbGF5LWNoYWluLgBlASBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2sgaWYgbm8gb3RoZXIgcGFsbGV0IGFscmVhZHkgc2V0LCB0aGUgdmFsdWUuADhWYWxpZGF0aW9uRGF0YQAASAQADNAgVGhlIFtgUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGFgXSBzZXQgZm9yIHRoaXMgYmxvY2suAHEBIFRoaXMgdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgc2V0IG9ubHkgb25jZSBieSB0aGUgW2BQYWxsZXQ6OnNldF92YWxpZGF0aW9uX2RhdGFgXSBpbmhlcmVudC4AUERpZFNldFZhbGlkYXRpb25Db2RlAQBZAQQABOAgV2VyZSB0aGUgdmFsaWRhdGlvbiBkYXRhIHNldCB0byBub3RpZnkgdGhlIHJlbGF5IGNoYWluPwBkTGFzdFJlbGF5Q2hhaW5CbG9ja051bWJlcgEAOBAAAAAADB0BIFRoZSByZWxheSBjaGFpbiBibG9jayBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBsYXN0IHBhcmFjaGFpbiBibG9jay4AiCBUaGlzIGlzIHVwZGF0ZWQgaW4gYG9uX2ZpbmFsaXplYC4AYFVwZ3JhZGVSZXN0cmljdGlvblNpZ25hbAEA3QgEABx1ASBBbiBvcHRpb24gd2hpY2ggaW5kaWNhdGVzIGlmIHRoZSByZWxheS1jaGFpbiByZXN0cmljdHMgc2lnbmFsbGluZyBhIHZhbGlkYXRpb24gY29kZSB1cGdyYWRlLmEBIEluIG90aGVyIHdvcmRzLCBpZiB0aGlzIGlzIGBTb21lYCBhbmQgW2BOZXdWYWxpZGF0aW9uQ29kZWBdIGlzIGBTb21lYCB0aGVuIHRoZSBwcm9kdWNlZGwgY2FuZGlkYXRlIHdpbGwgYmUgaW52YWxpZC4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4AOFVwZ3JhZGVHb0FoZWFkAQDRCAQAFNwgT3B0aW9uYWwgdXBncmFkZSBnby1haGVhZCBzaWduYWwgZnJvbSB0aGUgcmVsYXktY2hhaW4uAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuADxSZWxheVN0YXRlUHJvb2YAAFAEABjEIFRoZSBzdGF0ZSBwcm9vZiBmb3IgdGhlIGxhc3QgcmVsYXkgcGFyZW50IGJsb2NrLgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuAFhSZWxldmFudE1lc3NhZ2luZ1N0YXRlAADlCAQAHGUBIFRoZSBzbmFwc2hvdCBvZiBzb21lIHN0YXRlIHJlbGF0ZWQgdG8gbWVzc2FnaW5nIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBhcyBwZXJIIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AREhvc3RDb25maWd1cmF0aW9uAAD5CAQAGCkBIFRoZSBwYXJhY2hhaW4gaG9zdCBjb25maWd1cmF0aW9uIHRoYXQgd2FzIG9idGFpbmVkIGZyb20gdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgA4TGFzdERtcU1xY0hlYWQBAAEJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEPQgVGhlIGxhc3QgZG93bndhcmQgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkIHdlIGhhdmUgb2JzZXJ2ZWQuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAEBMYXN0SHJtcE1xY0hlYWRzAQAFCQQAEEkBIFRoZSBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWRzIHdlIGhhdmUgb2JzZXJ2ZWQgcGVyIGVhY2ggY2hhbm5lbCBpbmNvbWluZyBjaGFubmVsLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LgBkUHJvY2Vzc2VkRG93bndhcmRNZXNzYWdlcwEAOBAAAAAADMggTnVtYmVyIG9mIGRvd253YXJkIG1lc3NhZ2VzIHByb2Nlc3NlZCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay4AcExhc3RQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2UAABEJBAAMlCBUaGUgbGFzdCBwcm9jZXNzZWQgZG93bndhcmQgbWVzc2FnZS4AXQEgV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgdG8gZmlsdGVyIHRoZSBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZC4ANEhybXBXYXRlcm1hcmsBADgQAAAAAASgIEhSTVAgd2F0ZXJtYXJrIHRoYXQgd2FzIHNldCBpbiBhIGJsb2NrLgBgTGFzdFByb2Nlc3NlZEhybXBNZXNzYWdlAAARCQQADIQgVGhlIGxhc3QgcHJvY2Vzc2VkIEhSTVAgbWVzc2FnZS4AXQEgV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgdG8gZmlsdGVyIHRoZSBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZC4AUEhybXBPdXRib3VuZE1lc3NhZ2VzAQAVCQQADKQgSFJNUCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay4AOFVwd2FyZE1lc3NhZ2VzAQA0BAAMrCBVcHdhcmQgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A8CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgZm9yIGVhY2ggbmV3IGJsb2NrLgBUUGVuZGluZ1Vwd2FyZE1lc3NhZ2VzAQA0BAAEMQEgVXB3YXJkIG1lc3NhZ2VzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgYW5kIG5vdCB5ZXQgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uAFBQZW5kaW5nVXB3YXJkU2lnbmFscwEANAQADC0BIFVwd2FyZCBzaWduYWxzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgYW5kIG5vdCB5ZXQgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uANggVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2ZpbmFsaXplYCBmb3IgZWFjaCBibG9jay4ATFBlbmRpbmdBcHByb3ZlZFBlZXIAAHgEAAQ5ASBUaGUgYXBwcm92ZWQgcGVlciBpZCB0byBiZSBzZW50IGFzIGEgVU1QIHNpZ25hbCBvbiB0aGUgbGFzdCBibG9jayBvZiB0aGUgUG9WLgBcVXB3YXJkRGVsaXZlcnlGZWVGYWN0b3IBAL0BQAAAZKeztuANAAAAAAAAAAAE5CBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieSBmb3IgVU1QLgCEQW5ub3VuY2VkSHJtcE1lc3NhZ2VzUGVyQ2FuZGlkYXRlAQA4EAAAAAAIZQEgVGhlIG51bWJlciBvZiBIUk1QIG1lc3NhZ2VzIHdlIG9ic2VydmVkIGluIGBvbl9pbml0aWFsaXplYCBhbmQgdGh1cyB1c2VkIHRoYXQgbnVtYmVyIGZvcvAgYW5ub3VuY2luZyB0aGUgd2VpZ2h0IG9mIGBvbl9pbml0aWFsaXplYCBhbmQgYG9uX2ZpbmFsaXplYC4AaFJlc2VydmVkWGNtcFdlaWdodE92ZXJyaWRlAAB5AgQACF0BIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBYQ01QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AZFJlc2VydmVkRG1wV2VpZ2h0T3ZlcnJpZGUAAHkCBAAIWQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIERNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGBDdXN0b21WYWxpZGF0aW9uSGVhZERhdGEAABgEAAwpASBBIGN1c3RvbSBoZWFkIGRhdGEgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYXMgcmVzdWx0IG9mIGB2YWxpZGF0ZV9ibG9ja2AuABEBIFNlZSBgUGFsbGV0OjpzZXRfY3VzdG9tX3ZhbGlkYXRpb25faGVhZF9kYXRhYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4ASFBvVk1lc3NhZ2VzVHJhY2tlcgAAHQkEAAxVASBUcmFja3MgY3VtdWxhdGl2ZSBgVU1QYCBhbmQgYEhSTVBgIG1lc3NhZ2VzIHNlbnQgYWNyb3NzIGJsb2NrcyBpbiB0aGUgY3VycmVudCBgUG9WYC4AdQEgQWNyb3NzIGRpZmZlcmVudCBjYW5kaWRhdGVzL1BvVnMgdGhlIGJ1ZGdldHMgYXJlIHRyYWNrZWQgYnkgW2BBZ2dyZWdhdGVkVW5pbmNsdWRlZFNlZ21lbnRgXS4AAUAAAQkHAAQoU2VsZlBhcmFJZJwQ3gUAAAS4IFJldHVybnMgdGhlIHBhcmFjaGFpbiBJRCB3ZSBhcmUgcnVubmluZyB3aXRoLgABJQkAAAABAAAkVGltZXN0YW1wASRUaW1lc3RhbXAIDE5vdwEAKCAAAAAAAAAAAASgIFRoZSBjdXJyZW50IHRpbWUgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAkRGlkVXBkYXRlAQBZAQQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbAAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgACAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAJwQZAAAAAAAAbgAAAAAAAADAAA0V2VpZ2h0UmVjbGFpbQAAAAAAAAAECIEBIFBhbGxldCB0byB1c2UgYWxvbmdzaWRlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW2BTdG9yYWdlV2VpZ2h0UmVjbGFpbWBdLCB0aGUgcGFsbGV0IHByb3ZpZGVzjCB3ZWlnaHQgaW5mb3JtYXRpb24gYW5kIGJlbmNobWFya3MuADxSZWxheVJhbmRvbW5lc3MBPFJlbGF5UmFuZG9tbmVzcwQoUmFuZG9tbmVzcwEAKQkIAAAYQQEgVGhlIGxhc3QgZGlzdGluY3QgcmVsYXkgY2hhaW4gcmFuZG9tbmVzcyB2YWx1ZXMsIHJlZnJlc2hlZCBmcm9tIHRoZSByZWxheSBjaGFpbjQgc3RhdGUgcHJvb2YuADUBIFRoZSB2YWx1ZXMgcGVyc2lzdCBiZXR3ZWVuIGJsb2NrczogdGhleSByZWZsZWN0IHRoZSByZWxheSBwYXJlbnQgb2YgdGhlIGxhc3RJASBibG9jayB3aG9zZSBpbmhlcmVudCByYW4uIENvZGUgcnVubmluZyBiZWZvcmUgdGhlIGluaGVyZW50IChlLmcuIGBvbl9pbml0aWFsaXplYCmIIHNlZXMgdGhlIHByZXZpb3VzIGJsb2NrJ3MgdmFsdWVzLgAAAAAAAAAFAAAoUGFyYW1ldGVycwEoUGFyYW1ldGVycwQoUGFyYW1ldGVycwABBAIRBykHBAAETCBTdG9yZWQgcGFyYW1ldGVycy4AAbwAAQ0HAAAAAABJAAA0TmV0d29ya1N1ZmZpeAE0TmV0d29ya1N1ZmZpeAQ0TmV0d29ya1N1ZmZpeAEATQEYFHBhc2VvBCUBIE5ldHdvcmsgc3VmZml4IGFwcGVuZGVkIHRvIHByb2R1Y3QgbmFtZXMgd2hlbiBkZXJpdmluZyBwcm9kdWN0IGNvbnRleHRzLgABSQEAAT0HAAABNQkAAABKAAAgQmFsYW5jZXMBIEJhbGFuY2VzHDRUb3RhbElzc3VhbmNlAQBFAUAAAAAAAAAAAAAAAAAAAAAABJggVGhlIHRvdGFsIHVuaXRzIGlzc3VlZCBpbiB0aGUgc3lzdGVtLgBASW5hY3RpdmVJc3N1YW5jZQEARQFAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIEyQYBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgQ5CQQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgRJCQQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBFUJBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIEYQkEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABUQEAAUEHABBIRXhpc3RlbnRpYWxEZXBvc2l0RQFAAMqaOwAAAAAAAAAAAAAAACBBASBUaGUgbWluaW11bSBhbW91bnQgcmVxdWlyZWQgdG8ga2VlcCBhbiBhY2NvdW50IG9wZW4uIE1VU1QgQkUgR1JFQVRFUiBUSEFOIFpFUk8hAFkBIElmIHlvdSAqcmVhbGx5KiBuZWVkIGl0IHRvIGJlIHplcm8sIHlvdSBjYW4gZW5hYmxlIHRoZSBmZWF0dXJlIGBpbnNlY3VyZV96ZXJvX2VkYCBmb3JhASB0aGlzIHBhbGxldC4gSG93ZXZlciwgeW91IGRvIHNvIGF0IHlvdXIgb3duIHJpc2s6IHRoaXMgd2lsbCBvcGVuIHVwIGEgbWFqb3IgRG9TIHZlY3Rvci5ZASBJbiBjYXNlIHlvdSBoYXZlIG11bHRpcGxlIHNvdXJjZXMgb2YgcHJvdmlkZXIgcmVmZXJlbmNlcywgeW91IG1heSBhbHNvIGdldCB1bmV4cGVjdGVkjCBiZWhhdmlvdXIgaWYgeW91IHNldCB0aGlzIHRvIHplcm8uAPAgQm90dG9tIGxpbmU6IERvIHlvdXJzZWxmIGEgZmF2b3VyIGFuZCBtYWtlIGl0IGF0IGxlYXN0IG9uZSEAIE1heExvY2tzOBAyAAAAEPQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2tzIHRoYXQgc2hvdWxkIGV4aXN0IG9uIGFuIGFjY291bnQu3CBOb3Qgc3RyaWN0bHkgZW5mb3JjZWQsIGJ1dCB1c2VkIGZvciB3ZWlnaHQgZXN0aW1hdGlvbi4ArQEgVXNlIG9mIGxvY2tzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGZyZWV6ZXMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAsTWF4UmVzZXJ2ZXM4EDIAAAAMDQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gAChNYXhGcmVlemVzOBAAAAAABGEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmRpdmlkdWFsIGZyZWV6ZSBsb2NrcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50IGF0IGFueSB0aW1lLgABbQkAEERSdW50aW1lSG9sZFJlYXNvbkkHBHQgVGhlIG92ZXJhcmNoaW5nIGhvbGQgcmVhc29uLhxCYWxhbmNlRQEEbCBUaGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LkRSZXNlcnZlSWRlbnRpZmllcmECDGggVGhlIElEIHR5cGUgZm9yIHJlc2VydmVzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYEBGcmVlemVJZGVudGlmaWVyEARkIFRoZSBJRCB0eXBlIGZvciBmcmVlemVzLgAKAABIVHJhbnNhY3Rpb25QYXltZW50AUhUcmFuc2FjdGlvblBheW1lbnQMRE5leHRGZWVNdWx0aXBsaWVyAQC9AUAAAGSns7bgDQAAAAAAAAAAAAA4U3RvcmFnZVZlcnNpb24BAHEJBAAAADxUeFBheW1lbnRDcmVkaXQAAHUJBAAM8CBUaGUgYE9uQ2hhcmdlVHJhbnNhY3Rpb25gIHN0b3JlcyB0aGUgd2l0aGRyYXduIHR4IGZlZSBoZXJlLgA1ASBVc2UgYHdpdGhkcmF3X3R4ZmVlYCBhbmQgYHJlbWFpbmluZ190eGZlZWAgdG8gYWNjZXNzIGZyb20gb3V0c2lkZSB0aGUgY3JhdGUuAAABdQcABGBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXIMBAVUWQEgQSBmZWUgbXVsdGlwbGllciBmb3IgYE9wZXJhdGlvbmFsYCBleHRyaW5zaWNzIHRvIGNvbXB1dGUgInZpcnR1YWwgdGlwIiB0byBib29zdCB0aGVpciwgYHByaW9yaXR5YABRASBUaGlzIHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgdGhlIGBmaW5hbF9mZWVgIHRvIG9idGFpbiBhICJ2aXJ0dWFsIHRpcCIgdGhhdCBpcyBsYXRlcvQgYWRkZWQgdG8gYSB0aXAgY29tcG9uZW50IGluIHJlZ3VsYXIgYHByaW9yaXR5YCBjYWxjdWxhdGlvbnMuTQEgSXQgbWVhbnMgdGhhdCBhIGBOb3JtYWxgIHRyYW5zYWN0aW9uIGNhbiBmcm9udC1ydW4gYSBzaW1pbGFybHktc2l6ZWQgYE9wZXJhdGlvbmFsYEEBIGV4dHJpbnNpYyAod2l0aCBubyB0aXApLCBieSBpbmNsdWRpbmcgYSB0aXAgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSB2aXJ0dWFsIHRpcC4APCBgYGBydXN0LGlnbm9yZUAgLy8gRm9yIGBOb3JtYWxgjCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCk7AFQgLy8gRm9yIGBPcGVyYXRpb25hbGARASBsZXQgdmlydHVhbF90aXAgPSAoaW5jbHVzaW9uX2ZlZSArIHRpcCkgKiBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXI7xCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCArIHZpcnR1YWxfdGlwKTsQIGBgYABRASBOb3RlIHRoYXQgc2luY2Ugd2UgdXNlIGBmaW5hbF9mZWVgIHRoZSBtdWx0aXBsaWVyIGFwcGxpZXMgYWxzbyB0byB0aGUgcmVndWxhciBgdGlwYF0BIHNlbnQgd2l0aCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBub3Qgb25seSBkb2VzIHRoZSB0cmFuc2FjdGlvbiBnZXQgYSBwcmlvcml0eSBidW1wIGJhc2VkYQEgb24gdGhlIGBpbmNsdXNpb25fZmVlYCwgYnV0IHdlIGFsc28gYW1wbGlmeSB0aGUgaW1wYWN0IG9mIHRpcHMgYXBwbGllZCB0byBgT3BlcmF0aW9uYWxgOCB0cmFuc2FjdGlvbnMuAAAAAAsAAEhTa2lwRmVlbGVzc1BheW1lbnQAAAF5BwAAAAAADAAARE9yaWdpblJlc3RyaWN0aW9uAURPcmlnaW5SZXN0cmljdGlvbgQYVXNhZ2VzAAEEAmkBfQkEAASMIFRoZSBjdXJyZW50IHVzYWdlIGZvciBlYWNoIGVudGl0eS4AAWUBAAF9BwAAAYEJAARAUmVzdHJpY3RlZEVudGl0eWkBJFEBIFRoZSB0eXBlIHRoYXQgcmVwcmVzZW50IHRoZSBlbnRpdGllcyB0cmFja2VkLCBpdHMgYWxsb3dhbmNlIGFuZCB0aGUgY29udmVyc2lvbiBmcm9trCBvcmlnaW4gaXMgYm91bmRlZCBpbiBbYFJlc3RyaWN0ZWRFbnRpdHlgXS4AHQEgVGhpcyBpcyB0aGUgY2Fub25pY2FsIG9yaWdpbiBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHVzYWdlIHRyYWNraW5nLowgRWFjaCBlbnRpdHkgaXMgdHJhY2tlZCBzZXBhcmF0ZWx5LgBJASBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIG9yaWdpbiBhcyBhIG11bHRpcGxlIG9yaWdpbiBjYW4gcmVwcmVzZW50IGEgc2luZ2xlIGVudGl0eS5hASBGb3IgZXhhbXBsZSwgaW1hZ2luZSBhIERBTyBvcmlnaW4gd2l0aCBhIHBlcmNlbnRhZ2Ugb2Ygdm90ZXJzLCB3ZSB3YW50IHRvIHRyYWNrIHRoZSBEQU+sIGVudGl0eSByZWdhcmRsZXNzIG9mIHRoZSB2b3RlciBwZXJjZW50YWdlLgANAAAYQXNzZXRzARhBc3NldHMYFEFzc2V0AAEEAnEBhQkEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgKNCZEJBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICnQmhCQQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCcQGlCVAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCcQGtAQQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAABxAQQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAFtAQABgQcAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXRFAUAAypo7AAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdEUBQAD0abMCAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlRQFAAKhb6QMAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZUUBQADh9QUAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdEUBQADKmjsAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABrQkAFBxCYWxhbmNlRQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkcQEEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXJxARxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhsQEE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBoKlnVGrnkioyMxBj/lwjSpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZHEBsQkEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkcQFBAQS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNIuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWRxAbUJBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0mT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkcQG1AQTUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4ADgAAMEFzc2V0c0hvbGRlcgEwQXNzZXRzSG9sZGVyCBRIb2xkcwEBCAICjQlVCQQABA0BIEEgbWFwIHRoYXQgc3RvcmVzIGhvbGRzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLgA4QmFsYW5jZXNPbkhvbGQAAQgCAo0JRQEEAARpASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBiYWxhbmNlIG9uIGhvbGQgZm9yIGV2ZXJ5IGFjY291bnQgb24gYSBnaXZlbiBBc3NldElkLgAAAYUHAAABuQkABERSdW50aW1lSG9sZFJlYXNvbkkHBHwgVGhlIG92ZXJhcmNoaW5nIGZyZWV6ZSByZWFzb24uAA8AACRBc3NldFJhdGUBJEFzc2V0UmF0ZQRYQ29udmVyc2lvblJhdGVUb05hdGl2ZQABBAJxAb0BBAAMHQEgTWFwcyBhbiBhc3NldCB0byBpdHMgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24gaW4gdGhlIG5hdGl2ZSBiYWxhbmNlLgBNASBFLmcuIGBuYXRpdmVfYW1vdW50ID0gYXNzZXRfYW1vdW50ICogQ29udmVyc2lvblJhdGVUb05hdGl2ZTo6PFQ+OjpnZXQoYXNzZXRfa2luZClgAAG5AQABiQcAAAG9CQAEJEFzc2V0S2luZHEBBEUBIFRoZSB0eXBlIGZvciBhc3NldCBraW5kcyBmb3Igd2hpY2ggdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBpcyBzZXQuABAAADhBc3NldFR4UGF5bWVudAAAAY0HAAAAAAARAAA8QXNzZXRDb252ZXJzaW9uATxBc3NldENvbnZlcnNpb24IFFBvb2xzAAEEApUHwQkEAAhpASBNYXAgZnJvbSBgUG9vbEFzc2V0SWRgIHRvIGBQb29sSW5mb2AuIFRoaXMgZXN0YWJsaXNoZXMgd2hldGhlciBhIHBvb2wgaGFzIGJlZW4gb2ZmaWNpYWxseT0BIGNyZWF0ZWQgcmF0aGVyIHRoYW4gcGVvcGxlIHNlbmRpbmcgdG9rZW5zIGRpcmVjdGx5IHRvIGEgcG9vbCdzIHB1YmxpYyBhY2NvdW50LgA8TmV4dFBvb2xBc3NldElkAAA4BAAIJQEgU3RvcmVzIHRoZSBgUG9vbEFzc2V0SWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgbHAgdG9rZW4u5CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgbHAgcG9vbCBpcyBjcmVhdGVkLgABwQEAAZEHABwUTFBGZWXZBBC4CwAABB0BIFRoZSBmcmFjdGlvbiBvZiBldmVyeSBzd2FwIHRoYXQgdGhlIGxpcXVpZGl0eSBwcm92aWRlcnMgdGFrZSBhcyBhIGZlZS4AMFBvb2xTZXR1cEZlZUUBQAAyfqcCAAAAAAAAAAAAAAAEiCBBIG9uZS10aW1lIGZlZSB0byBzZXR1cCB0aGUgcG9vbC4ARFBvb2xTZXR1cEZlZUFzc2V0cQEIAQAEOQEgQXNzZXQgY2xhc3MgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0gdXNlZCB0byBwYXkgdGhlIFtgQ29uZmlnOjpQb29sU2V0dXBGZWVgXS4AWExpcXVpZGl0eVdpdGhkcmF3YWxGZWXZBBAAAAAABIQgQSBmZWUgdG8gd2l0aGRyYXcgdGhlIGxpcXVpZGl0eS4AQE1pbnRNaW5MaXF1aWRpdHlFAUBkAAAAAAAAAAAAAAAAAAAABD0BIFRoZSBtaW5pbXVtIExQIHRva2VuIGFtb3VudCB0aGF0IGNvdWxkIGJlIG1pbnRlZC4gQW1lbGlvcmF0ZXMgcm91bmRpbmcgZXJyb3JzLgBETWF4U3dhcFBhdGhMZW5ndGg4EAMAAAAEiCBUaGUgbWF4IG51bWJlciBvZiBob3BzIGluIGEgc3dhcC4AIFBhbGxldElkxQkgcHkvYXNjb24E9CBUaGUgcGFsbGV0J3MgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AAckJAAgkQXNzZXRLaW5kcQEIXQEgVHlwZSBvZiBhc3NldCBjbGFzcywgc291cmNlZCBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSwgdXRpbGl6ZWQgdG8gb2ZmZXIgbGlxdWlkaXR5IHRvIGEYIHBvb2wuGFBvb2xJZJUHBGwgTGlxdWlkaXR5IHBvb2wgaWRlbnRpZmllci4MtSYG2oDQKrN0QoNppfJG8UtaZ1Zm3v/90xrRL9uq/+MwZ2V0X3Jlc2VydmVzCBhhc3NldDFxARhhc3NldDJxAc0JCLwgUmV0dXJucyB0aGUgYmFsYW5jZSBvZiBlYWNoIGFzc2V0IGluIHRoZSBwb29sLlUBIFRoZSB0dXBsZSByZXN1bHQgaXMgaW4gdGhlIG9yZGVyIHJlcXVlc3RlZCAobm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHBvb2wgb3JkZXIpLgC1JgbagNAqs3RCg2ml8kbxeOeDcL3VXJhkSbxs1VAQC4xxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2VucxAYYXNzZXQxcQEYYXNzZXQycQEYYW1vdW50RQEsaW5jbHVkZV9mZWVZAUEBHBEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGZvciBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AtSYG2oDQKrN0QoNppfJG8Sh5D++bLeNfRI0+w3OTaY2McXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MXEBGGFzc2V0MnEBGGFtb3VudEUBLGluY2x1ZGVfZmVlWQFBARxBASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGBhbW91bnRgIG9mIGBhc3NldDFgIGZvciBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AEgAAKFBvb2xBc3NldHMBKFBvb2xBc3NldHMYFEFzc2V0AAEEAjiFCQQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAtUJkQkEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgLZCaEJBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4pQlQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjjNAQQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAckBAAGdBwAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdEUBQAAAAAAAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0RQFAAAAAAAAAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2VFAUAAAAAAAAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlRQFAAAAAAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0RQFAAMqaOwAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAHdCQAUHEJhbGFuY2VFAQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQ4BIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVyOBxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhEAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEE2wa6HKbxix7bBv8ILSRAmnApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkOLEJBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECVMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZDhBAQS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAkuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWQ4tQkEwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQ40QEE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuABMAAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQDhCQQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBAOUJBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBAEUBQAAAAAAAAAAAAAAAAAAAAAAMuCBGaXhlZCBhbW91bnQgdG8gZGVwb3NpdCB0byBiZWNvbWUgYSBjb2xsYXRvci4AQQEgV2hlbiBhIGNvbGxhdG9yIGNhbGxzIGBsZWF2ZV9pbnRlbnRgIHRoZXkgaW1tZWRpYXRlbHkgcmVjZWl2ZSB0aGUgZGVwb3NpdCBiYWNrLgAB1QEAAaEHABgUUG90SWTFCSBQb3RTdGFrZQT0IEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSBpbnRlcm5hbCBQb3QgaXMgZ2VuZXJhdGVkLgA0TWF4Q2FuZGlkYXRlczgQZAAAAAzIIE1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgdGhhdCB3ZSBzaG91bGQgaGF2ZS4AzCBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBpbnZ1bG5lcmFibGVzLgBQTWluRWxpZ2libGVDb2xsYXRvcnM4EAQAAAAMVQEgTWluaW11bSBudW1iZXIgZWxpZ2libGUgY29sbGF0b3JzLiBTaG91bGQgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiBUaGlzIGluY2x1ZGVzUQEgSW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgb25lIGNvbGxhdG9yIHdobyBjYW5EIHByb2R1Y2UgYSBibG9jay4AQE1heEludnVsbmVyYWJsZXM4EBQAAAAEhCBNYXhpbXVtIG51bWJlciBvZiBpbnZ1bG5lcmFibGVzLgA0S2lja1RocmVzaG9sZDgQMCoAAAAALHBvdF9hY2NvdW50BIBtb2RsUG90U3Rha2UAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgAB8QkABCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuABUAABxTZXNzaW9uARxTZXNzaW9uIChWYWxpZGF0b3JzAQBdAQQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuADBDdXJyZW50SW5kZXgBADgQAAAAAAR4IEN1cnJlbnQgaW5kZXggb2YgdGhlIHNlc3Npb24uADRRdWV1ZWRDaGFuZ2VkAQBZAQQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQD1CQQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQD9CQQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBN0BBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQFDQoEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAHZAQABpQcABChLZXlEZXBvc2l0RQFAAAAAAAAAAAAAAAAAAAAAAASkIFRoZSBhbW91bnQgdG8gYmUgaGVsZCB3aGVuIHNldHRpbmcga2V5cy4AARUKAAgsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLhBLZXlz3QEEKCBUaGUga2V5cy4AFgAAEEF1cmEBEEF1cmEILEF1dGhvcml0aWVzAQAZCgQABGwgVGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4ALEN1cnJlbnRTbG90AQAhCiAAAAAAAAAAAAyAIFRoZSBjdXJyZW50IHNsb3Qgb2YgdGhpcyBibG9jay4AlCBUaGlzIHdpbGwgYmUgc2V0IGluIGBvbl9pbml0aWFsaXplYC4AAAAEMFNsb3REdXJhdGlvbigg4C4AAAAAAAAUDQEgVGhlIHNsb3QgZHVyYXRpb24gQXVyYSBzaG91bGQgcnVuIHdpdGgsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMuACEBIFRoZSBlZmZlY3RpdmUgdmFsdWUgb2YgdGhpcyB0eXBlIGNhbiBiZSBjaGFuZ2VkIHdpdGggYSBydW50aW1lIHVwZ3JhZGUuADUBIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBlaXRoZXIgdXNlIFtgTWluaW11bVBlcmlvZFRpbWVzVHdvYF0gb3IgYSBjb25zdC4AAAQsQXV0aG9yaXR5SWThAQSYIFRoZSBpZGVudGlmaWVyIHR5cGUgZm9yIGFuIGF1dGhvcml0eS4AFwAAHEF1cmFFeHQBHEF1cmFFeHQILEF1dGhvcml0aWVzAQAZCgQAFJQgU2VydmVzIGFzIGNhY2hlIGZvciB0aGUgYXV0aG9yaXRpZXMuAHEBIFRoZSBhdXRob3JpdGllcyBpbiBBdVJhIGFyZSBvdmVyd3JpdHRlbiBpbiBgb25faW5pdGlhbGl6ZWAgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBuZXcgc2Vzc2lvbixdASBidXQgd2UgcmVxdWlyZSB0aGUgb2xkIGF1dGhvcml0aWVzIHRvIHZlcmlmeSB0aGUgc2VhbCB3aGVuIHZhbGlkYXRpbmcgYSBQb1YuIFRoaXMgd2lsbA0BIGFsd2F5cyBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgQXVSYSBhdXRob3JpdGllcyBpbiBgb25fZmluYWxpemVgLgA0UmVsYXlTbG90SW5mbwAAJQoEABAJASBDdXJyZW50IHJlbGF5IGNoYWluIHNsb3QgcGFpcmVkIHdpdGggYSBudW1iZXIgb2YgYXV0aG9yZWQgYmxvY2tzLgBlASBUaGlzIGlzIHVwZGF0ZWQgaW4gW2BGaXhlZFZlbG9jaXR5Q29uc2Vuc3VzSG9vazo6b25fc3RhdGVfcHJvb2ZgXSB3aXRoIHRoZSBjdXJyZW50IHJlbGF53CBjaGFpbiBzbG90IGFzIHByb3ZpZGVkIGJ5IHRoZSByZWxheSBjaGFpbiBzdGF0ZSBwcm9vZi4AAAAAAAAAGAAAJFhjbXBRdWV1ZQEkWGNtcFF1ZXVlHFBJbmJvdW5kWGNtcFN1c3BlbmRlZAEAKQoEACANASBUaGUgc3VzcGVuZGVkIGluYm91bmQgWENNUCBjaGFubmVscy4gQWxsIG90aGVycyBhcmUgbm90IHN1c3BlbmRlZC4AcQEgVGhpcyBpcyBhIGBTdG9yYWdlVmFsdWVgIGluc3RlYWQgb2YgYSBgU3RvcmFnZU1hcGAgc2luY2Ugd2UgZXhwZWN0IG11bHRpcGxlIHJlYWRzIHBlciBibG9ja2kBIHRvIGRpZmZlcmVudCBrZXlzIHdpdGggYSBvbmUgYnl0ZSBwYXlsb2FkLiBUaGUgYWNjZXNzIHRvIGBCb3VuZGVkQlRyZWVTZXRgIHdpbGwgYmUgY2FjaGVkFQEgd2l0aGluIHRoZSBibG9jayBhbmQgdGhlcmVmb3JlIG9ubHkgaW5jbHVkZWQgb25jZSBpbiB0aGUgcHJvb2Ygc2l6ZS4AZQEgTk9URTogVGhlIFBvViBiZW5jaG1hcmtpbmcgY2Fubm90IGtub3cgdGhpcyBhbmQgd2lsbCBvdmVyLWVzdGltYXRlLCBidXQgdGhlIGFjdHVhbCBwcm9vZkQgd2lsbCBiZSBzbWFsbGVyLgBIT3V0Ym91bmRYY21wU3RhdHVzAQAxCgQAGF0BIFRoZSBub24tZW1wdHkgWENNUCBjaGFubmVscyBpbiBvcmRlciBvZiBiZWNvbWluZyBub24tZW1wdHksIGFuZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0UQEgYW5kIGxhc3Qgb3V0Ym91bmQgbWVzc2FnZS4gSWYgdGhlIHR3byBpbmRpY2VzIGFyZSBlcXVhbCwgdGhlbiBpdCBpbmRpY2F0ZXMgYW4gZW1wdHlZASBxdWV1ZSBhbmQgdGhlcmUgbXVzdCBiZSBhIG5vbi1gT2tgIGBPdXRib3VuZFN0YXR1c2AuIFdlIGFzc3VtZSBxdWV1ZXMgZ3JvdyBubyBncmVhdGVyWQEgdGhhbiA2NTUzNSBpdGVtcy4gUXVldWUgaW5kaWNlcyBmb3Igbm9ybWFsIG1lc3NhZ2VzIGJlZ2luIGF0IG9uZTsgemVybyBpcyByZXNlcnZlZCBpbhEBIGNhc2Ugb2YgdGhlIG5lZWQgdG8gc2VuZCBhIGhpZ2gtcHJpb3JpdHkgc2lnbmFsIG1lc3NhZ2UgdGhpcyBibG9jay4JASBUaGUgYm9vbCBpcyB0cnVlIGlmIHRoZXJlIGlzIGEgc2lnbmFsIG1lc3NhZ2Ugd2FpdGluZyB0byBiZSBzZW50LgBQT3V0Ym91bmRYY21wTWVzc2FnZXMBAQgCBUUKSQoEAAS8IFRoZSBtZXNzYWdlcyBvdXRib3VuZCBpbiBhIGdpdmVuIFhDTVAgY2hhbm5lbC4AOFNpZ25hbE1lc3NhZ2VzAQEEApxJCgQABKAgQW55IHNpZ25hbCBtZXNzYWdlcyB3YWl0aW5nIHRvIGJlIHNlbnQuACxRdWV1ZUNvbmZpZwEATQowIAAAADAAAAAIAAAABBUBIFRoZSBjb25maWd1cmF0aW9uIHdoaWNoIGNvbnRyb2xzIHRoZSBkeW5hbWljcyBvZiB0aGUgb3V0Ym91bmQgcXVldWUuADhRdWV1ZVN1c3BlbmRlZAEAWQEEAARBASBXaGV0aGVyIG9yIG5vdCB0aGUgWENNUCBxdWV1ZSBpcyBzdXNwZW5kZWQgZnJvbSBleGVjdXRpbmcgaW5jb21pbmcgWENNcyBvciBub3QuAEREZWxpdmVyeUZlZUZhY3RvcgEBBAWcvQFAAABkp7O24A0AAAAAAAAAAATEIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5LgAB5QEAAakHAAxMTWF4SW5ib3VuZFN1c3BlbmRlZDgQ6AMAABRJASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5ib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHN1c3BlbmRlZCBzaW11bHRhbmVvdXNseS4AXQEgQW55IGZ1cnRoZXIgY2hhbm5lbCBzdXNwZW5zaW9ucyB3aWxsIGZhaWwgYW5kIG1lc3NhZ2VzIG1heSBnZXQgZHJvcHBlZCB3aXRob3V0IGZ1cnRoZXJFASBub3RpY2UuIENob29zaW5nIGEgaGlnaCB2YWx1ZSAoMTAwMCkgaXMgb2theTsgdGhlIHRyYWRlLW9mZiB0aGF0IGlzIGRlc2NyaWJlZCBpbtggW2BJbmJvdW5kWGNtcFN1c3BlbmRlZGBdIHN0aWxsIGFwcGxpZXMgYXQgdGhhdCBzY2FsZS4AZE1heEFjdGl2ZU91dGJvdW5kQ2hhbm5lbHM4EIAAAAAgZQEgTWF4aW1hbCBudW1iZXIgb2Ygb3V0Ym91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBoYXZlIG1lc3NhZ2VzIHF1ZXVlZCBhdCB0aGUgc2FtZSB0aW1lLgBVASBJZiB0aGlzIGlzIHJlYWNoZWQsIHRoZW4gbm8gZnVydGhlciBtZXNzYWdlcyBjYW4gYmUgc2VudCB0byBjaGFubmVscyB0aGF0IGRvIG5vdCB5ZXRdASBoYXZlIGEgbWVzc2FnZSBxdWV1ZWQuIFRoaXMgc2hvdWxkIGJlIHNldCB0byB0aGUgZXhwZWN0ZWQgbWF4aW11bSBvZiBvdXRib3VuZCBjaGFubmVsc2EBIHdoaWNoIGlzIGRldGVybWluZWQgYnkgW2BTZWxmOjpDaGFubmVsSW5mb2BdLiBJdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoaXMgbGFyZ2UgZW5vdWdoLF0BIHNpbmNlIG90aGVyd2lzZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIHByb3RvY29sIHdpbGwgbm90IHdvcmsgYXMgaW50ZW5kZWQgYW5kIG1lc3NhZ2VzUQEgbWF5IGJlIGRyb3BwZWQuIFRoaXMgdmFsdWUgaW5jcmVhc2VzIHRoZSBQb1YgYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGJlIHBpY2tlZCB0b29NASBoaWdoLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIHBheSBhdHRlbnRpb24gdG8gbm90IG9wZW4gbW9yZSBjaGFubmVscyB0aGFuIHRoaXMgdmFsdWUuACxNYXhQYWdlU2l6ZTgQAJwBABS4IFRoZSBtYXhpbWFsIHBhZ2Ugc2l6ZSBmb3IgSFJNUCBtZXNzYWdlIHBhZ2VzLgBhASBBIGxvd2VyIGxpbWl0IGNhbiBiZSBzZXQgZHluYW1pY2FsbHksIGJ1dCB0aGlzIGlzIHRoZSBoYXJkLWxpbWl0IGZvciB0aGUgUG9WIHdvcnN0IGNhc2VVASBiZW5jaG1hcmtpbmcuIFRoZSBsaW1pdCBmb3IgdGhlIHNpemUgb2YgYSBtZXNzYWdlIGlzIHNsaWdodGx5IGJlbG93IHRoaXMsIHNpbmNlIHNvbWW4IG92ZXJoZWFkIGlzIGluY3VycmVkIGZvciBlbmNvZGluZyB0aGUgZm9ybWF0LgABUQoAAAAeAAAsUG9sa2Fkb3RYY20BLFBvbGthZG90WGNtPDBRdWVyeUNvdW50ZXIBACggAAAAAAAAAAAEiCBUaGUgbGF0ZXN0IGF2YWlsYWJsZSBxdWVyeSBpbmRleC4AHFF1ZXJpZXMAAQQCKFUKBAAEVCBUaGUgb25nb2luZyBxdWVyaWVzLgAoQXNzZXRUcmFwcwEBBAY8OBAAAAAAEGggVGhlIGV4aXN0aW5nIGFzc2V0IHRyYXBzLgBhASBLZXkgaXMgdGhlIGJsYWtlMiAyNTYgaGFzaCBvZiAob3JpZ2luLCB2ZXJzaW9uZWQgYEFzc2V0c2ApIHBhaXIuIFZhbHVlIGlzIHRoZSBudW1iZXIgb2YdASB0aW1lcyB0aGlzIHBhaXIgaGFzIGJlZW4gdHJhcHBlZCAodXN1YWxseSBqdXN0IDEgaWYgaXQgZXhpc3RzIGF0IGFsbCkuADhTYWZlWGNtVmVyc2lvbgAAOAQACGEBIERlZmF1bHQgdmVyc2lvbiB0byBlbmNvZGUgWENNIHdoZW4gbGF0ZXN0IHZlcnNpb24gb2YgZGVzdGluYXRpb24gaXMgdW5rbm93bi4gSWYgYE5vbmVgLD0BIHRoZW4gdGhlIGRlc3RpbmF0aW9ucyB3aG9zZSBYQ00gdmVyc2lvbiBpcyB1bmtub3duIGFyZSBjb25zaWRlcmVkIHVucmVhY2hhYmxlLgBAU3VwcG9ydGVkVmVyc2lvbgABCAUCaQo4BAAE8CBUaGUgTGF0ZXN0IHZlcnNpb25zIHRoYXQgd2Uga25vdyB2YXJpb3VzIGxvY2F0aW9ucyBzdXBwb3J0LgBAVmVyc2lvbk5vdGlmaWVycwABCAUCaQooBAAEBQEgQWxsIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgcmVxdWVzdGVkIHZlcnNpb24gbm90aWZpY2F0aW9ucyBmcm9tLgBQVmVyc2lvbk5vdGlmeVRhcmdldHMAAQgFAmkKbQoEAAhxASBUaGUgdGFyZ2V0IGxvY2F0aW9ucyB0aGF0IGFyZSBzdWJzY3JpYmVkIHRvIG91ciB2ZXJzaW9uIGNoYW5nZXMsIGFzIHdlbGwgYXMgdGhlIG1vc3QgcmVjZW50lCBvZiBvdXIgdmVyc2lvbnMgd2UgaW5mb3JtZWQgdGhlbSBvZi4AVFZlcnNpb25EaXNjb3ZlcnlRdWV1ZQEAcQoEAAxlASBEZXN0aW5hdGlvbnMgd2hvc2UgbGF0ZXN0IFhDTSB2ZXJzaW9uIHdlIHdvdWxkIGxpa2UgdG8ga25vdy4gRHVwbGljYXRlcyBub3QgYWxsb3dlZCwgYW5kcQEgdGhlIGB1MzJgIGNvdW50ZXIgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgc2VuZCB0byB0aGUgZGVzdGluYXRpb24gaGFzIGJlZW4gYXR0ZW1wdGVkLIwgd2hpY2ggaXMgdXNlZCBhcyBhIHByaW9yaXRpemF0aW9uLgBAQ3VycmVudE1pZ3JhdGlvbgAAfQoEAAScIFRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHN0YWdlLCBpZiBhbnkuAFRSZW1vdGVMb2NrZWRGdW5naWJsZXMAAQwFAgKBCoUKBAAE8CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIGEgcmVtb3RlIGNoYWluLgA8TG9ja2VkRnVuZ2libGVzAAEEAgSVCgQABOAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiB0aGlzIGNoYWluLgBUWGNtRXhlY3V0aW9uU3VzcGVuZGVkAQBZAQQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4APFNob3VsZFJlY29yZFhjbQEAWQEEABxZASBXaGV0aGVyIG9yIG5vdCBpbmNvbWluZyBYQ01zIChib3RoIGV4ZWN1dGVkIGxvY2FsbHkgYW5kIHJlY2VpdmVkKSBzaG91bGQgYmUgcmVjb3JkZWQuxCBPbmx5IG9uZSBYQ00gcHJvZ3JhbSB3aWxsIGJlIHJlY29yZGVkIGF0IGEgdGltZS4pASBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcnVudGltZSBBUElzLCBhbmQgaXQncyBhZHZpc2VkIGl0IHN0YXlzIGZhbHNlDQEgZm9yIGFsbCBvdGhlciB1c2UgY2FzZXMsIHNvIGFzIHRvIG5vdCBkZWdyYWRlIHJlZ3VsYXIgcGVyZm9ybWFuY2UuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4ALFJlY29yZGVkWGNtAAABAwQAGEkBIElmIFtgU2hvdWxkUmVjb3JkWGNtYF0gaXMgc2V0IHRvIHRydWUsIHRoZW4gdGhlIGxhc3QgWENNIHByb2dyYW0gZXhlY3V0ZWQgbG9jYWxseVQgd2lsbCBiZSBzdG9yZWQgaGVyZS4pASBSdW50aW1lIEFQSXMgY2FuIGZldGNoIHRoZSBYQ00gdGhhdCB3YXMgZXhlY3V0ZWQgYnkgYWNjZXNzaW5nIHRoaXMgdmFsdWUuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4AREF1dGhvcml6ZWRBbGlhc2VzAAEEAu0BoQoEAAxlASBNYXAgb2YgYXV0aG9yaXplZCBhbGlhc2VycyBvZiBsb2NhbCBvcmlnaW5zLiBFYWNoIGxvY2FsIGxvY2F0aW9uIGNhbiBhdXRob3JpemUgYSBsaXN0IG9mWQEgb3RoZXIgbG9jYXRpb25zIHRvIGFsaWFzIGludG8gaXQuIEVhY2ggYWxpYXNlciBpcyBvbmx5IHZhbGlkIHVudGlsIGl0cyBpbm5lciBgZXhwaXJ5YDggYmxvY2sgbnVtYmVyLgAB6QEIAQK5AVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF90ZWxlcG9ydF9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAIC2QFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAGtBwAQRFVuaXZlcnNhbExvY2F0aW9udQEYAgkCAHkXBIQgVGhpcyBjaGFpbidzIFVuaXZlcnNhbCBMb2NhdGlvbi4AUEFkdmVydGlzZWRYY21WZXJzaW9uOBAFAAAACCUBIFRoZSBsYXRlc3Qgc3VwcG9ydGVkIHZlcnNpb24gdGhhdCB3ZSBhZHZlcnRpc2UuIEdlbmVyYWxseSBqdXN0IHNldCBpdCB0b4QgYHBhbGxldF94Y206OkN1cnJlbnRYY21WZXJzaW9uYC4AKE1heExvY2tlcnM4EAgAAAAEGQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2FsIFhDTSBsb2NrcyB0aGF0IGEgc2luZ2xlIGFjY291bnQgbWF5IGhhdmUuAFhNYXhSZW1vdGVMb2NrQ29uc3VtZXJzOBAAAAAABPwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBhIHNpbmdsZSByZW1vdGUgbG9jayBtYXkgaGF2ZS4AAbkKBBgCvFVzZSBgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yYCBpbnN0ZWFkARgyMC4wLjAILFJ1bnRpbWVDYWxsIARkIFRoZSBydW50aW1lIGBDYWxsYCB0eXBlLnBSZW1vdGVMb2NrQ29uc3VtZXJJZGVudGlmaWVyEATEIFRoZSBJRCB0eXBlIGZvciBsb2NhbCBjb25zdW1lcnMgb2YgcmVtb3RlIGxvY2tzLgAfAAAoQ3VtdWx1c1hjbQABuQMAAb0HAAAAAAAgAAAwTWVzc2FnZVF1ZXVlATBNZXNzYWdlUXVldWUMMEJvb2tTdGF0ZUZvcgEBBAXBA8EKdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMwgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhbmQgbGFzdCAobm9uLWVtcHR5KSBwYWdlcy4ALFNlcnZpY2VIZWFkAADBAwQABLwgVGhlIG9yaWdpbiBhdCB3aGljaCB3ZSBzaG91bGQgYmVnaW4gc2VydmljaW5nLgAUUGFnZXMAAQgFBc0K0QoEAASIIFRoZSBtYXAgb2YgcGFnZSBpbmRpY2VzIHRvIHBhZ2VzLgABvQMAAcEHABAgSGVhcFNpemU4EACcAQAUPQEgVGhlIHNpemUgb2YgdGhlIHBhZ2U7IHRoaXMgaW1wbGllcyB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgd2hpY2ggY2FuIGJlIHNlbnQuAFkBIEEgZ29vZCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBleHBlY3RlZCBtZXNzYWdlIHNpemVzLCB0aGVpciB3ZWlnaHRzLCB0aGUgd2VpZ2h0IHRoYXQgaXNdASBhdmFpbGFibGUgZm9yIHByb2Nlc3NpbmcgdGhlbSBhbmQgdGhlIG1heGltYWwgbmVlZGVkIG1lc3NhZ2Ugc2l6ZS4gVGhlIG1heGltYWwgbWVzc2FnZREBIHNpemUgaXMgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGlzIGFzIGRlZmluZWQgYnkgW2BNYXhNZXNzYWdlTGVuT2ZgXS4AIE1heFN0YWxlOBAIAAAADF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFsZSBwYWdlcyAoaS5lLiBvZiBvdmVyd2VpZ2h0IG1lc3NhZ2VzKSBhbGxvd2VkIGJlZm9yZSBjdWxsaW5nUQEgY2FuIGhhcHBlbi4gT25jZSB0aGVyZSBhcmUgbW9yZSBzdGFsZSBwYWdlcyB0aGFuIHRoaXMsIHRoZW4gaGlzdG9yaWNhbCBwYWdlcyBtYXkgYmX8IGRyb3BwZWQsIGV2ZW4gaWYgdGhleSBjb250YWluIHVucHJvY2Vzc2VkIG92ZXJ3ZWlnaHQgbWVzc2FnZXMuADRTZXJ2aWNlV2VpZ2h0SQMsAQcAWED7ogIA4AAYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLgBQSWRsZU1heFNlcnZpY2VXZWlnaHRJAywBBwBYQPuiAgDgABRdASBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHRvIGJlIHVzZWQgZnJvbSByZW1haW5pbmcgd2VpZ2h0IGBvbl9pZGxlYCB3aGljaEEBIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3Igc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pZGxlYC49ASBVc2VmdWwgZm9yIHBhcmFjaGFpbnMgdG8gcHJvY2VzcyBtZXNzYWdlcyBhdCB0aGUgc2FtZSBibG9jayB0aGV5IGFyZSByZWNlaXZlZC4AKQEgSWYgYE5vbmVgLCBpdCB3aWxsIG5vdCBjYWxsIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgaW4gYG9uX2lkbGVgLgAB2QoABBBTaXplOARUIFBhZ2UvaGVhcCBzaXplIHR5cGUuACIAABxVdGlsaXR5AAHFAwAByQcABExiYXRjaGVkX2NhbGxzX2xpbWl0OBCqKgAABKggVGhlIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgYmF0Y2hlZCBjYWxscy4AAd0KAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS40UGFsbGV0c09yaWdpbtEDBPAgVGhlIGNhbGxlciBvcmlnaW4sIG92ZXJhcmNoaW5nIHR5cGUgb2YgYWxsIHBhbGxldHMgb3JpZ2lucy4AKAAAIE11bHRpc2lnASBNdWx0aXNpZwQkTXVsdGlzaWdzAAEIBQLhCuUKBAAElCBUaGUgc2V0IG9mIG9wZW4gbXVsdGlzaWcgb3BlcmF0aW9ucy4AATEEAAHRBwAMLERlcG9zaXRCYXNlRQFAADyRYAQAAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ANERlcG9zaXRGYWN0b3JFAUAAILy+AAAAAAAAAAAAAAAADFUBIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciB1bml0IHRocmVzaG9sZCB3aGVuIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uLgAlASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBtb3JlIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AOE1heFNpZ25hdG9yaWVzOBBkAAAABOwgVGhlIG1heGltdW0gYW1vdW50IG9mIHNpZ25hdG9yaWVzIGFsbG93ZWQgaW4gdGhlIG11bHRpc2lnLgAB7QoABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgApAAAQU3VkbwEQU3VkbwQMS2V5AAAEBAAEhCBUaGUgYEFjY291bnRJZGAgb2YgdGhlIHN1ZG8ga2V5LgABPQQAAdUHAAAB8QoABCxSdW50aW1lQ2FsbCAESCBBIHN1ZG8tYWJsZSBjYWxsLgAqAAA8VmVyaWZ5U2lnbmF0dXJlAAAAAAAEJFNpZ25hdHVyZXkEBPQgU2lnbmF0dXJlIHR5cGUgdGhhdCB0aGUgZXh0ZW5zaW9uIG9mIHRoaXMgcGFsbGV0IGNhbiB2ZXJpZnkuACsAABRQcm94eQEUUHJveHkIHFByb3hpZXMBAQQFBPUKRAAAAAAAAAAAAAAAAAAAAAAACEUBIFRoZSBzZXQgb2YgYWNjb3VudCBwcm94aWVzLiBNYXBzIHRoZSBhY2NvdW50IHdoaWNoIGhhcyBkZWxlZ2F0ZWQgdG8gdGhlIGFjY291bnRzIQEgd2hpY2ggYXJlIGJlaW5nIGRlbGVnYXRlZCB0bywgdG9nZXRoZXIgd2l0aCB0aGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdC4ANEFubm91bmNlbWVudHMBAQQFBAULRAAAAAAAAAAAAAAAAAAAAAAABKwgVGhlIGFubm91bmNlbWVudHMgbWFkZSBieSB0aGUgcHJveHkgKGtleSkuAAFBBAAB2QcAGEBQcm94eURlcG9zaXRCYXNlRQFAAAx3QgMAAAAAAAAAAAAAABARASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgcHJveHkuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpcyUBIGBzaXplb2YoQmFsYW5jZSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpcyBgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLgBIUHJveHlEZXBvc2l0RmFjdG9yRQFAAAGyxAAAAAAAAAAAAAAAABS8IFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBwcm94eSBhZGRlZC4ANQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgcGx1cyBhbiBpbnN0YW5jZSBvZiBgUHJveHlUeXBlYCBtb3JlIGludG8gYWEBIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLiBUaHVzLCB3aGVuIGNvbmZpZ3VyaW5nIGBQcm94eURlcG9zaXRGYWN0b3JgIG9uZSBzaG91bGQgdGFrZfQgaW50byBhY2NvdW50IGAzMiArIHByb3h5X3R5cGUuZW5jb2RlKCkubGVuKClgIGJ5dGVzIG9mIGRhdGEuAChNYXhQcm94aWVzOBAgAAAABPAgVGhlIG1heGltdW0gYW1vdW50IG9mIHByb3hpZXMgYWxsb3dlZCBmb3IgYSBzaW5nbGUgYWNjb3VudC4AKE1heFBlbmRpbmc4ECAAAAAERQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUtZGVsYXllZCBhbm5vdW5jZW1lbnRzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGVuZGluZy4AXEFubm91bmNlbWVudERlcG9zaXRCYXNlRQFAABQmcgMAAAAAAAAAAAAAABAxASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGFuIGFubm91bmNlbWVudC4ASQEgVGhpcyBpcyBoZWxkIHdoZW4gYSBuZXcgc3RvcmFnZSBpdGVtIGhvbGRpbmcgYSBgQmFsYW5jZWAgaXMgY3JlYXRlZCAodHlwaWNhbGx5IDE2ICBieXRlcykuAGRBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yRQFAAAJkiQEAAAAAAAAAAAAAABDUIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBhbm5vdW5jZW1lbnQgbWFkZS4AWQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgYW4gYEFjY291bnRJZGAsIGBIYXNoYCBhbmQgYEJsb2NrTnVtYmVyYCAodHlwaWNhbGx5IDY4IGJ5dGVzKYwgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgABFQsACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLiRQcm94eVR5cGVJBBBVASBBIGtpbmQgb2YgcHJveHk7IHNwZWNpZmllZCB3aXRoIHRoZSBwcm94eSBhbmQgcGFzc2VkIGluIHRvIHRoZSBgSXNQcm94eWFibGVgIGZpbHRlci5RASBUaGUgaW5zdGFuY2UgZmlsdGVyIGRldGVybWluZXMgd2hldGhlciBhIGdpdmVuIGNhbGwgbWF5IGJlIHByb3hpZWQgdW5kZXIgdGhpcyB0eXBlLgBNASBJTVBPUlRBTlQ6IGBEZWZhdWx0YCBtdXN0IGJlIHByb3ZpZGVkIGFuZCBNVVNUIEJFIHRoZSB0aGUgKm1vc3QgcGVybWlzc2l2ZSogdmFsdWUuCBgJ14NGcnoO9YwPoDuvoyPLxRSI2SoapxN7A7+1DvwXRGNoZWNrX3Blcm1pc3Npb25zCBBjYWxsIChwcm94eV90eXBlSQRZAQT0IENoZWNrIGlmIGEgYFJ1bnRpbWVDYWxsYCBpcyBhbGxvd2VkIGZvciBhIGdpdmVuIGBQcm94eVR5cGVgLgAYCdeDRnJ6DvWMD6A7r6MjFxSwYH1irwo7OwrSxdVcWCxpc19zdXBlcnNldAggdG9fY2hlY2tJBBxhZ2FpbnN0SQRZAQT0IENoZWNrIGlmIG9uZSBgUHJveHlUeXBlYCBpcyBhIHN1YnNldCBvZiBhbm90aGVyIGBQcm94eVR5cGVgLgAsAAAYUGVvcGxlARhQZW9wbGUkEEtleXMAAQQCCCgEABRJASBUaGUgY3VycmVudCBpbmRpdmlkdWFscyB3ZSByZWNvZ25pc2UsIGJ1dCBub3QgbmVjZXNzYXJpbHkgeWV0IGluY2x1ZGVkIGluIGEgcmluZy4AdQEgTG9vay11cCBmcm9tIHRoZSBjcnlwdG8gKHB1YmxpYykga2V5IHRvIHRoZSBpbW11dGFibGUgSUQgb2YgdGhlIGluZGl2aWR1YWwgKGBQZXJzb25hbElkYCkuIEFdASBwZXJzb24gY2FuIGhhdmUgdHdvIGRpZmZlcmVudCBlbnRyaWVzIGluIHRoaXMgbWFwIGlmIHRoZXkgcXVldWVkIGEga2V5IG1pZ3JhdGlvbiB3aGljaGQgaGFzbid0IGJlZW4gZW5hY3RlZCB5ZXQuADhDb3VudGVyRm9yS2V5cwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwABhQZW9wbGUAAQQCKBkLBAAMSQEgVGhlIGN1cnJlbnQgaW5kaXZpZHVhbHMgd2UgcmVjb2duaXNlLCBidXQgbm90IG5lY2Vzc2FyaWx5IHlldCBpbmNsdWRlZCBpbiBhIHJpbmcuAGUBIEltbXV0YWJsZSBJRCBvZiB0aGUgaW5kaXZpZHVhbCAoYFBlcnNvbmFsSWRgKSB0byBpbmZvcm1hdGlvbiBhYm91dCB0aGVpciBrZXkgYW5kIHN0YXR1cy4AOEFsaWFzVG9BY2NvdW50AAEEAukDBAQABMwgQ29udmVyc2lvbiBvZiBhIGNvbnRleHR1YWwgYWxpYXMgdG8gYW4gYWNjb3VudCBJRC4AOEFjY291bnRUb0FsaWFzAAEEAgTlAwQABMwgQ29udmVyc2lvbiBvZiBhbiBhY2NvdW50IElEIHRvIGEgY29udGV4dHVhbCBhbGlhcy4ATEFjY291bnRUb1BlcnNvbmFsSWQAAQQCBCgEABC8IEFzc29jaWF0aW9uIG9mIGFuIGFjY291bnQgSUQgdG8gYSBwZXJzb25hbCBJRC4AIQEgTWFuYWdlZCB3aXRoIGBzZXRfcGVyc29uYWxfaWRfYWNjb3VudGAgYW5kIGB1bnNldF9wZXJzb25hbF9pZF9hY2NvdW50YC74IFJldmVyc2UgbG9va3VwIGlzIGluc2lkZSBgUGVvcGxlYCBzdG9yYWdlLCBpbnNpZGUgdGhlIHJlY29yZC4AOE5leHRQZXJzb25hbElkAQAoIAAAAAAAAAAABLggVGhlIG5leHQgZnJlZSBhbmQgbmV2ZXIgcmVzZXJ2ZWQgcGVyc29uYWwgSUQuAFxQZW9wbGVDb2xsZWN0aW9uQ3JlYXRlZAEAWQEEAATAIFdoZXRoZXIgdGhlIHBlb3BsZSBjb2xsZWN0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuAEhSZXNlcnZlZFBlcnNvbmFsSWQAAQQFKBAEAATAIENhbmRpZGF0ZXMnIHJlc2VydmVkIGlkZW50aXRpZXMgd2hpY2ggd2UgdHJhY2suAAFNBAAB4QcAEDBSaW5nRXhwb25lbnRRBQQJBE0BIFRoZSByaW5nIGV4cG9uZW50IHVzZWQgdG8gb3BlcmF0ZSB0aGUgcGVvcGxlIG1lbWJlciBjb2xsZWN0aW9uIGluIGBNZW1iZXJTZXJ2aWNlYC4AXE9uYm9hcmRpbmdRdWV1ZVBhZ2VTaXplOBAeAAAACEkBIE1heGltdW0gbnVtYmVyIG9mIHBlb3BsZSBpbmNsdWRlZCBpbiBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYmVmb3JlIGEgbmV3IG9uZSBpcyQgY3JlYXRlZC4AZFN0YWxlQWxpYXNDbGVhbnVwSW50ZXJ2YWw4EJYAAAAEMQEgSW50ZXJ2YWwgKGluIGJsb2NrcykgYXQgd2hpY2ggdGhlIG9mZmNoYWluIHdvcmtlciBydW5zIHN0YWxlIGFsaWFzIGNsZWFudXAuAHBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlOBBYAgAAFD0BIFRoZSBhbW91bnQgb2YgYmxvY2sgbnVtYmVyIHRvbGVyYW5jZSB3ZSBhbGxvdyBmb3IgYSBzZXR1cCBhY2NvdW50IHRyYW5zYWN0aW9uLgAFASBgc2V0X2FsaWFzX2FjY291bnRgIGFuZCBgc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgIGNhbGxzIGNvbnRhaW5zUQEgYGNhbGxfdmFsaWRfYXRgIGFzIGEgcGFyYW1ldGVyLCB0aG9zZSBjYWxscyBhcmUgdmFsaWQgaWYgdGhlIGJsb2NrIG51bWJlciBpcyB3aXRoaW5YIHRoZSB0b2xlcmFuY2UgcGVyaW9kLgABHQsAAAAzAAAcTW9iUnVsZQEcTW9iUnVsZTAcQ3JlZGl0cwEBBAIIIQtwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASMIFRoZSB2b3RpbmcgcmVjb3JkcyBvZiBhbGwgYWxpYXNlcy4APFZvdGluZ1BlbmFsdGllcwABBAIIOAQACHEBIFRoZSB2b3RlIHBlbmFsdGllcyBvZiB1c2VycyBhbmQgdGhlaXIgc3RhcnRpbmcgbW9tZW50LiBWb3RlcnMgd2l0aCBwZW5hbHRpZXMgY2Fubm90IHZvdGUgaW7MIGNvbnRlbXB0IHVudGlsIHRoZSBwZW5hbHR5IGV4cGlyZXMgYW5kIGlzIHJlbW92ZWQuADBWb3RpbmdQb2ludHMBAQgGAiULOBAAAAAACGUBIFRoZSBhY2N1bXVsYXRlZCBwb2ludHMgb2YgYWxsIGFsaWFzZXMsIGR1cmluZyBlYWNoIGZ1bmRpbmcgcm91bmQuIFRoZSBwb2ludHMgYWNjdW11bGF0ZWQhASBkdXJpbmcgcm91bmQgYE5gIGNhbiBiZSByZWRlZW1lZCBmb3IgcmV3YXJkcyBvbmx5IGR1cmluZyByb3VuZCBgTiArIDFgLgAUVm90ZXMAAQgCAiULYQQEAAS4IEFsbCB2b3RlcyBjYXN0LCBzZWdyZWdhdGVkIGJ5IGNhc2UgYW5kIHZvdGVyLgAkQ2FzZUNvdW50AQA4EAAAAAAEEQEgVGhlIG51bWJlciBvZiBjYXNlcywgb3BlbiBvciByZWNlbnRseSBjbG9zZWQsIHN0b3JlZCBpbiB0aGUgcGFsbGV0LgAkT3BlbkNhc2VzAAEEAjgpCwQABCkBIFRoZSBvcGVuIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGNhbiBzdGlsbCBiZSB2b3RlZCBvbi4AJFJpcGVDYXNlcwABBAI4RQsEAAx1ASBUaGUgcmlwZSBjYXNlcyByZWNvcmRlZCBpbiB0aGUgcGFsbGV0LiBUaGUgdm90aW5nIGhhcyBjb25jbHVkZWQgb24gdGhlc2UgY2FzZXMgYW5kIGEgdmVyZGljdGUBIGhhcyBiZWVuIHJlYWNoZWQsIGJ1dCB0aGV5IGNhbm5vdCBiZSByZW1vdmVkIHlldCBpbiBvcmRlciB0byBhbGxvdyBwZW9wbGUgdG8gY2xhaW0gdGhlaXIcIHZvdGVzLgAkRG9uZUNhc2VzAAEEAjhJCwQACGEBIFRoZSBkb25lIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGFyZSBvYnNvbGV0ZSBhbmQgY2FuIGJlIHJlbW92ZWQgZnJvbSQgc3RvcmFnZS4AREFjY3VtdWxhdGVkUG9pbnRzAQAoIAAAAAAAAAAACHUBIFRoZSBudW1iZXIgb2YgcG9pbnRzIGFjY3VtdWxhdGVkIHRocm91Z2ggY29ycmVjdCB2b3RlcyBkdXJpbmcgdGhlIGN1cnJlbnQgcGF5b3V0IHJvdW5kLiBUaGlzdQEgYW1vdW50IGlzIGdvaW5nIHRvIGRldGVybWluZSB0aGUgcG9pbnQvcmV3YXJkIGV4Y2hhbmdlIHJhdGUgb2YgdGhlIG5leHQgcmV3YXJkIHBheW91dCByb3VuZC4ASFBheW91dERpc3RyaWJ1dGlvbgAATQsEAATYIERlc2NyaWJlcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgY3VycmVudCBwYXlvdXQgcm91bmQuADhSb3VuZFNjaGVkdWxlcwEAUQsEAAS4IERlc2NyaWJlcyB0aGUgc2NoZWR1bGVzIG9mIHRoZSBwYXlvdXQgcm91bmRzLgAsQWN0aXZlU2luY2UAACgEAAhtASBUaGUgdGltZXN0YW1wLCBpbiBzZWNvbmRzLCBvZiB0aGUgbW9tZW50IGVub3VnaCBhY3RpdmUgdm90ZXJzIHdlcmUgZGV0ZWN0ZWQgYW5kIHZvdGluZyB3YXMxASBlbmFibGVkLiBUaGlzIHZhbHVlIHdpbGwgbm90IGJlIHByZXNlbnQgaWYgdGhlcmUgYXJlIHRvbyBmZXcgYWN0aXZlIHZvdGVycy4AAV0EAAHlBwA4UEN1cnJlbmN5TG9jYXRpb25JbmZvcQEwAQMAcRcEMgV2yOsLBPQgVGhlIGxvY2F0aW9uIG9mIHRoZSB1c2VkIGN1cnJlbmN5LiBJdCBpcyBpbmZvcm1hdGlvbmFsIG9ubHkuAFBNYXhWb3RlQ2xhaW1EdXJhdGlvbigggFEBAAAAAAAEBQEgVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSBhIGNhc2UgdGltZXMgb3V0IGFuZCBjYW4gYmUgcmVhcGVkLgA8TWluQ2FzZUR1cmF0aW9uOBBYAgAABEEBIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyBhIGNhc2UgbXVzdCBzdGF5IG9wZW4gZm9yIHZvdGluZyBiZWZvcmUgaXQgY2FuIGJlIGNsb3NlZC4ARE1heFZvdGluZ0R1cmF0aW9uOBCwBAAABC0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIGZvciB3aGljaCBhIGNhc2UgY291bGQgc3RheSBvcGVuIGZvciB2b3RpbmcuAERNaW5UdXJub3V0Tm9taW5hbDgQAQAAAARFASBUaGUgbWluaW11bSBudW1iZXIgb2Ygdm90ZXMgYSBjYXNlIG11c3QgcmVjZWl2ZSBiZWZvcmUgYSB2ZXJkaWN0IGNhbiBiZSByZWFjaGVkLgBQTWluVHVybm91dFBlcmNlbnRhZ2VdCwQKCGUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2b3RlcyBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHRvdGFsIHZvdGVyIGNvdW50IGEgY2FzZSBtdXN0IHJlY2VpdmWEIGJlZm9yZSBhIHZlcmRpY3QgY2FuIGJlIHJlYWNoZWQuAFRWb3RpbmdQZW5hbHR5RHVyYXRpb244EMCoAAAE0CBUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IGEgcGVuYWx0eSBpcyBhcHBsaWVkIGZvci4ARE1heFZvdGVzQ2xhaW1hYmxlOBAKAAAABPQgVGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGVzIGNsYWltYWJsZSBpbiBhIHNpbmdsZSBleHRyaW5zaWMuAFBPZmZjaGFpbldvcmtJbnRlcnZhbDgQlgAAAASwIFRoZSBpbnRlcnZhbCBhdCB3aGljaCBvZmZjaGFpbiB3b3JrZXIgcnVucy4ATENsZWFuVm90ZXNCYXRjaFNpemU4EOgDAAAEJQEgTWF4aW11bSBudW1iZXIgb2Ygdm90ZXMgdGhhdCB3aWxsIGJlIGNsZWFuZWQgZHVyaW5nIG9mZmNoYWluIHdvcmtlciBydW4uAGhWb3Rlc09wZW5Gb3JDbGFpbXNEdXJhdGlvbjgQWAIAAAgVASBUaGUgdGltZSBpbiBzZWNvbmRzIGR1cmluZyB3aGljaCB2b3RlcyBjYW4gYmUgY2xhaW1lZCBvbiBkb25lIGNhc2VzLsAgTWVhc3VyZWQgZnJvbSB0aGUgdGltZSB0aGUgY2FzZSBiZWNvbWVzICdEb25lJy4AVE1pbmltdW1Wb3RlclRocmVzaG9sZDgQAwAAAAhlASBUaGUgbWluaW11bSBudW1iZXIgb2YgYWN0aXZlIHZvdGVycyByZXF1aXJlZCB0byBhbGxvdyB2b3RpbmcuIFdoZW4gdGhpcyB0aHJlc2hvbGQgaXMgbm90hCBtZXQsIG9wZW4gY2FzZXMgY2Fubm90IHRpbWUgb3V0LgA8bW9iX3J1bGVfcG90X2lkBIBtb2RsTW9iUndyZHMAAAAAAAAAAAAAAAAAAAAAAAAAAATgIEdldCBhIHVuaXF1ZSwgaW5hY2Nlc3NpYmxlIGFjY291bnQgSUQgZnJvbSB0aGUgYFBvdElkYC4AQG1vYl9ydWxlX2NvbnRleHQIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL21vYi1ydWxlICAgCFEBIFRoZSBjb250ZXh0IHVzZWQgZm9yIHRoZSBwcm9vZnMgcmVxdWlyZWQgdG8gYXV0aGVudGljYXRlIGFzIGEgcGVyc29uYWwgYWxpYXMgaW4gbW9iGCBydWxlLgABYQsAAAA0AAAoUHJvb2ZPZkluawEoUHJvb2ZPZkluaywoQ2FuZGlkYXRlcwABBAIEZQsEAARJASBUaGUgY3VycmVudCBwZXJzb25hbCBpZGVudGl0aWVzIHdoaWNoIGFyZSBnb2luZyB0aHJvdWdoIHRoZSBwcm9vZi1vZi1pbmsgcHJvY2Vzcy4AGFBlb3BsZQABBAUodQsEAAhxASBUaGUgcGVyc29uYWwgaWRlbnRpdGllcyB3aGljaCB3ZSB0cmFjazsgYWxsIHdoaWNoIGhhdmUgYmVlbiByZWNvZ25pemVkIHRocm91Z2ggcHJvb2Ytb2YtaW5rNCBhcmUgaW4gaGVyZS4APFJlZmVycmFsVGlja2V0cwABBAUogQsEAAQJASBUaGUgdGlja2V0cyBzdG9yZWQgb24tY2hhaW4gcmVhZHkgdG8gYmUgdXNlZCB0byByZWZlciBjYW5kaWRhdGVzLgA4RGVzaWduRmFtaWxpZXMAAQQCzQONCwQABKggVGhlIGN1cnJlbnQgZGVzaWduIGZhbWlsaWVzIHdlIHJlY29nbmlzZS4AQENvbW1pdHRlZERlc2lnbnMAAQgCApELlQsEAATUIFRoZSBjb21taXR0ZWQgZGVzaWducyB3aGljaCBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZS4APEFsbG9jYXRpb25Db3VudAEAOBAAAAAABLAgVGhlIG51bWJlciBvZiBqdWRnZW1lbnRzIGN1cnJlbnRseSBvbmdvaW5nLgA0Q29uZmlndXJhdGlvbgEAhQSgQJ0EAAQAAADoAwAAAAAABAAAAAAgAAAAAAAgAAAAAAAIAAAAQJ0EAARMIFRoZSBjb25maWd1cmF0aW9uLgBAQXZhaWxhYmxlSW52aXRlcwEBBAIEOBAAAAAABPggTnVtYmVyIG9mIGludml0YXRpb25zIGF2YWlsYWJsZSB0byBkaXN0cmlidXRlIGZvciBhbiBhY2NvdW50LgA4UGVuZGluZ0ludml0ZXMAAQgCApkLEAQADB0BIFBlbmRpbmcgaW52aXRhdGlvbnMgZm9yIGVhY2ggaW52aXRlciAoYW4gYWNjb3VudCB0aGF0IGludml0ZXMgb3RoZXJzKS4AWQEgSWYgdGhlIGtleSBgKGludml0ZXIsIHRpY2tldClgIGV4aXN0cywgdGhlbiB0aGUgdGlja2V0IGlzIGN1cnJlbnRseSBhIHBlbmRpbmcgaW52aXRlLgBsUmVmZXJyZXJSZWltYnVyc2VtZW50VmFsdWVzAACJBAQAFGEBIFRoZSB2YWx1ZXMgb2YgdGhlIHJlaW1idXJzZW1lbnQgYXdhcmRlZCB0byByZWZlcnJlcnMsIGFsb25nIHdpdGggaG93IG1hbnkgb2YgZWFjaCB2YWx1ZW0BIHNob3VsZCBiZSBhd2FyZGVkLiBUaGVzZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiByZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGUgbGFzdEEBIHZhbHVlIGluIHRoZSBsaXN0IHdpbGwgYmUgdGhlIGZpcnN0IG9uZSB0byBiZSB1c2VkIGJ5IHRoZSByZWltYnVyc2VtZW50IHN5c3RlbS4ARQEgU3RvcmFnZSBpdGVtIG5hbWUga2VlcHMgdGhlIGxlZ2FjeSBwcmVmaXggZm9yIHN0b3JhZ2UgcmVhZGFiaWxpdHkgY29tcGF0aWJpbGl0eS4AbFJlZmVycmVkUmVpbWJ1cnNlbWVudFZhbHVlcwAAiQQEABRhASBUaGUgdmFsdWVzIG9mIHRoZSByZWltYnVyc2VtZW50IGF3YXJkZWQgdG8gcmVmZXJyZWQgcGVvcGxlLCBhbG9uZyB3aXRoIGhvdyBtYW55IG9mIGVhY2hxASB2YWx1ZSBzaG91bGQgYmUgYXdhcmRlZC4gVGhlc2UgdmFsdWVzIGFyZSBzdG9yZWQgaW4gcmV2ZXJzZSBvcmRlciBvZiB0aGVpciBwcmlvcml0eSwgc28gdGhlVQEgbGFzdCB2YWx1ZSBpbiB0aGUgbGlzdCB3aWxsIGJlIHRoZSBmaXJzdCBvbmUgdG8gYmUgdXNlZCBieSB0aGUgcmVpbWJ1cnNlbWVudCBzeXN0ZW0uAEUBIFN0b3JhZ2UgaXRlbSBuYW1lIGtlZXBzIHRoZSBsZWdhY3kgcHJlZml4IGZvciBzdG9yYWdlIHJlYWRhYmlsaXR5IGNvbXBhdGliaWxpdHkuAAFtBAAB7QcADEhNYXhBY3RpdmVSZWZlcnJhbHM4EAoAAAAI9CBUaGUgbWF4aW11bSBudW1iZXIgb2YgYWN0aXZlIHJlZmVycmFscyBhIHVzZXIgY2FuIGhhdmUgb3Blbi5YIEl0IGNhbm5vdCBleGNlZWQgMjAwLgAUUG90SWTFCSBQb0lQb3RfXyDsIEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSByZXdhcmQgcG90IGlzIGdlbmVyYXRlZC4AKQEgVGhlIGFjY291bnQgbXVzdCBiZSBmdW5kZWQgc28gcmV3YXJkcyBjYW4gYmUgcGFpZCBkdXJpbmcgcmVnaXN0cmF0aW9uIGFuZGAgcmVmZXJyYWwgcmV3YXJkIGNsYWltcy4AEQEgVGhlIGBQYWxsZXRJZGAgbXVzdCBiZSBhIGNvbnN0YW50IGFzIGl0IGlzIGV4cG9zZWQgaW4gdGhlIG1ldGFkYXRhLmUBIENoYW5naW5nIHRoaXMgdmFsdWUgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZSBjYW4gYmUgZG9uZSBhdCBhbnkgdGltZSwgdGhlIG5ldyBhY2NvdW50IHdpbGyQIHRoZW4gbmVlZCB0byBiZSBmdW5kZWQgYWNjb3JkaW5nbHkuAExwcm9vZl9vZl9pbmtfcG90X2lkBIBtb2RsUG9JUG90X18AAAAAAAAAAAAAAAAAAAAAAAAAAATUIFRoZSBhY2NvdW50IElEIG9mIHRoZSBwb3QgdXNlZCBmb3IgcmV3YXJkIHRyYW5zZmVycy4AAZ0LAAg8VGlja2V0U2lnbmF0dXJleQQMiCBTaWduYXR1cmUgdXNlZCB0byB2ZXJpZnkgdGlja2V0cy4AAQEgQ2FuIHZlcmlmeSB3aGV0aGVyIGFuIGBTZWxmOjpUaWNrZXRQdWJsaWNgIGNyZWF0ZWQgYSBzaWduYXR1cmUuGFRpY2tldAQEmCBUaWNrZXQgdHlwZSB1c2VkIHRvIHJlZmVyIGNhbmRpZGF0ZXMuADUAABBHYW1lARBHYW1lUFBTdG9yZWRQaGFzZUR1cmF0aW9ucwAA4QQEAAz0IFBoYXNlLWR1cmF0aW9uIG92ZXJyaWRlIHNldCBieSBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdIHZpYeAgYHNldF9nYW1lX3BoYXNlc2AuIGBOb25lYCBtZWFucyB0aGUgY2hhaW4gZmFsbHMgYmFjayB0b3AgYFQ6OkRlZmF1bHRQaGFzZUR1cmF0aW9uc2AuAERQbGF5RGVwb3NpdEFtb3VudAEARQFAAMgXqAQAAAAAAAAAAAAAABA9ASBUaGUgY29uZmlndXJlZCBuYXRpdmUgYmFsYW5jZSBoZWxkIGFzIGRlcG9zaXQgd2hlbiBhbiBhY2NvdW50IHBsYXllciBzaWducyB1cC4AMQEgVGhpcyB2YWx1ZSBpcyBvbmx5IHVzZWQgZm9yIG5ldyBkZXBvc2l0IGNyZWF0aW9uczsgZXhpc3RpbmcgYWN0aXZlIGRlcG9zaXRzqCByZXRhaW4gdGhlIGFtb3VudCB0aGV5IHdlcmUgY3JlYXRlZCB3aXRoLgA8QXJjaGl2ZWRQbGF5ZXJzAAEEAhEFoQsEAAQpASBBbGwgdGhlIHBsYXllciB3aXRoIHplcm8gc2NvcmUgYnV0IHN0aWxsIG9uYm9hcmRlZCBpbiBpbmRpdl9wYWxsZXRfc2NvcmUuABxQbGF5ZXJzAAEEAhEFpQsEABBwIEFsbCB0aGUgcGxheWVyIGluIHRoZSBnYW1lLgAhASBBY2NvdW50LWJhc2VkIHBsYXllciBhY2NvdW50cyBpbiB0aGlzIHN0b3JhZ2UgYW5kIHN0YXRlbWVudCBhY2NvdW50cyBpbqQgW2BTdG10QWNjb3VudFRvQWxpYXNgXSBtdXN0IG5vdCBvdmVybGFwLgAkR2FtZUluZGV4AQA4EAAAAAAEYCBUaGUgY3VycmVudCBnYW1lIGluZGV4LgAQR2FtZQAAvQsEAATMIFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIG5leHQgZ2FtZSBvciBvbmdvaW5nIGdhbWUuACxHYW1lSGlzdG9yeQABBAU4OAQACGEBIFRoZSBtYXBwaW5nIGZyb20gcGFzdCBnYW1lcywgaWRlbnRpZmllZCBieSB0aGVpciBnYW1lIGluZGV4LCB0byB0aGUgc3RhcnQgdGltZXN0YW1wLCBpbnggc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4AXFBsYXllckF0dGVuZGFuY2VIaXN0b3J5AQEEAhEF2QsEAAgxASBFbnRyaWVzIG9mIHByZXZpb3VzbHkgYXR0ZW5kZWQgZ2FtZXMgb2YgZWFjaCBwbGF5ZXIuIFJldGFpbmVkIG9uIGBvZmZib2FyZGAJASBhbmQgYGtpY2tvdXRgLiBCb3VuZGVkIGJ5IGBNYXhBdHRlbmRhbmNlSGlzdG9yeURlcHRoYCBwZXIgcGxheWVyLgBQR2FtZVBhcnRpY2lwYW50Q291bnQBAQQFODgQAAAAABDwIENvdW50IG9mIGNvbmZpcm1lZCBhdHRlbmRlZXMgcGVyIGdhbWUgaW5kZXguIEluY3JlbWVudGVkIGJ5GQEgW2BQYWxsZXQ6Om5vdGVfYXR0ZW5kYW5jZWBdIGZvciBldmVyeSBhdHRlbmRhbmNlIGVudHJ5LCByZWdhcmRsZXNzIG9m/CB3aGV0aGVyIHRoZSBwbGF5ZXIgaXMgcmVjb3JkZWQgYXMgYEFjY291bnRPclBlcnNvbjo6UGVyc29uYCBvcvQgYEFjY291bnRPclBlcnNvbjo6QWNjb3VudGAuIEV4cG9zZWQgZm9yIG9mZi1jaGFpbiBjb25zdW1lcnMuADRJbmRleFRvUGxheWVyAAEEBd0LEQUEAATkIFRoZSBtYXBwaW5nIGZyb20gcm91bmQgaW5kZXggYW5kIHBsYXllciBpbmRleCB0byBwbGF5ZXIuADRQbGF5ZXJUb0luZGV4AAEEAhEF4QsEAATgIFRoZSBtYXBwaW5nIGZyb20gcGxheWVyIHRvIHRoZWlyIGluZGljZXMgaW4gZWFjaCByb3VuZC4ARFNodWZmbGVSZWNvZ25pemVkAAEIBQblCxEFBAAEAQEgU3RvcmFnZSB1c2VkIHRvIGNvbXB1dGUgdGhlIHNodWZmbGUgb3JkZXIgb2YgcmVjb2duaXplZCBwZW9wbGUuAFBTaHVmZmxlTm90UmVjb2duaXplZAABCAUG5QsRBQQABFUBIFN0b3JhZ2UgdXNlZCB0byBjb21wdXRlIHRoZSBzaHVmZmxlIG9yZGVyIG9mIG5vdCByZWNvZ25pemVkIHBlb3BsZSwgaS5lLiBjYW5kaWRhdGVzLgA0R2FtZVNjaGVkdWxlcwEA6QsEAAAAQEF2YWlsYWJsZUludml0ZXMBAQQCBDgQAAAAAAToIE51bWJlciBvZiBpbnZpdGVzIGF2YWlsYWJsZSB0byBkaXN0cmlidXRlIGZvciBhbiBhY2NvdW50LgA4UGVuZGluZ0ludml0ZXMAAQgCApkLEAQAEIggUGVuZGluZyBpbnZpdGVzIGZvciBlYWNoIGludml0ZXIuAGkBIElmIHRoZSBrZXkgYChpbnZpdGVyLCB0aWNrZXQpYCBleGlzdHMgdGhlbiB0aGUgdGlja2V0IGlzIGN1cnJlbnRseSBhIHBlbmRpbmcgaW52aXRlLCBmcm9tNCB0aGUgaW52aXRlci4ALExpdGVJbnZpdGVzAAEEAggEBAAIaQEgVGhlIGFjY291bnQgZWFjaCBsaXRlIHBlcnNvbiBkZXNpZ25hdGVkIHRvIHBsYXkgd2l0aCwga2V5ZWQgYnkgdGhlIGxpdGUgcGVyc29uJ3MgYWxpYXMgaW68IFtgaW5kaXZfcGFsbGV0X3Njb3JlOjpQYWxsZXQ6OnNjb3JlX2NvbnRleHRgXS4ASEFsaWFzVG9TdG10QWNjb3VudAABBAIIBAQAHFkBIE1hcHBpbmcgZnJvbSBhbGlhcyB0byB0aGUgYWNjb3VudCBpZCB0byB1c2UgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIHN0YXRlbWVudCBzdG9yZS4AQQEgQWNjb3VudC1iYXNlZCBwbGF5ZXIgc2ltcGx5IHVzZSB0aGVpciBhY2NvdW50IGFuZCBhcmUgbm90IHBhcnQgb2YgdGhpcyBtYXBwaW5nLgEBIFJldmVyc2UgbWFwcGluZyBpcyBhdmFpbGFibGUgaW4gc3RvcmFnZSBbYFN0bXRBY2NvdW50VG9BbGlhc2BdLgDsIFRoaXMgaXMgcmVtb3ZlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgZ2V0cyBhcmNoaXZlZC5VASBUaGlzIGlzIHVwZGF0ZWQgd2hlbiB0aGUgYWxpYXMtYmFzZWQgcGxheWVyIHNpZ25zIHVwIHdpdGggYW5vdGhlciBzdGF0ZW1lbnQgYWNjb3VudC4ASFN0bXRBY2NvdW50VG9BbGlhcwABBAIECAQAJFkBIE1hcHBpbmcgZnJvbSB0aGUgYWNjb3VudCBpZCB0byB1c2UgZm9yIGludGVyYWN0aW5nIHdpdGggc3RhdGVtZW50IHN0b3JlIHRvIHRoZSBhbGlhcy4AQQEgQWNjb3VudC1iYXNlZCBwbGF5ZXIgc2ltcGx5IHVzZSB0aGVpciBhY2NvdW50IGFuZCBhcmUgbm90IHBhcnQgb2YgdGhpcyBtYXBwaW5nLgEBIFJldmVyc2UgbWFwcGluZyBpcyBhdmFpbGFibGUgaW4gc3RvcmFnZSBbYEFsaWFzVG9TdG10QWNjb3VudGBdLuwgVGhpcyBpcyByZW1vdmVkIHdoZW4gdGhlIGFsaWFzLWJhc2VkIHBsYXllciBnZXRzIGFyY2hpdmVkLlUBIFRoaXMgaXMgdXBkYXRlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgc2lnbnMgdXAgd2l0aCBhbm90aGVyIHN0YXRlbWVudCBhY2NvdW50LgBlASBTdGF0ZW1lbnQgYWNjb3VudHMgaW4gdGhpcyBzdG9yYWdlIGFuZCBhY2NvdW50LWJhc2VkIHBsYXllciBhY2NvdW50cyBpbiBbYFBsYXllcnNgXSBtdXN0NCBub3Qgb3ZlcmxhcC4AYENvbW11bmljYXRpb25JZGVudGlmaWVycwABBAIEfQQEAAxpASBUaGUgY29tbXVuaWNhdGlvbiBpZGVudGlmaWVycyB1c2VkIGJ5IHBsYXllcnMgdG8gZXN0YWJsaXNoIGFuIGVuY3J5cHRlZCBQMlAgY29ubmVjdGlvbiBpbm0BIG9yZGVyIHRvIHBsYXkgdGhlIGdhbWUuIFRoZSBhY2NvdW50IHVuZGVyIHdoaWNoIHRoZSBjb21tdW5pY2F0aW9uIGlkZW50aWZpZXIgaXMgcmVnaXN0ZXJlZBkBIHNob3VsZCBiZSB0aGUgc2FtZSBhY2NvdW50IHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgc3RhdGVtZW50IHN0b3JlLgABlQQAAfEHADQkTWF4Um91bmRzOBADAAAADKAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHJvdW5kcyBpbiBhIGdhbWUuAOggTm90ZTogdGhlIGFjdHVhbCBudW1iZXIgb2Ygcm91bmRzIGlzIGNvbmZpZ3VyZWQgcGVyIGdhbWUuADBNYXhHcm91cFNpemU4EAYAAAAMqCBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwLgAZASBOb3RlOiB0aGUgYWN0dWFsIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAgaXMgY29uZmlndXJlZCBwZXIgZ2FtZS4AME1pbkdyb3VwU2l6ZTgQAAAAACCoIFRoZSBtaW5pbXVtIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAuAGUBIFdoZW4gc2NoZWR1bGluZyBhIGdhbWUgdGhlIHZhbHVlIGZvciBgbWF4X2dyb3VwX3NpemVgIG11c3QgYmUgYXQgbGVhc3QgdGhpcyBtaW5pbXVtICsgMS4AJQEgSW4gb3JkZXIgdG8gaGF2ZSBubyBzaW5nbGUtcGxheWVyIGdyb3VwcywgdGhpcyB2YWx1ZSBtdXN0IGJlIGF0IGxlYXN0IDIuAFEBIE5vdGU6IHRoZSBhY3R1YWwgbWluaW11bSBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwIGlzIGNvbmZpZ3VyZWQgcGVyIGdhbWUsIGl0IGlzWCBgbWF4X2dyb3VwX3NpemUgLSAxYC4AVE5vblBsYXlpbmdLaWNrb3V0VGltZTgQgFM7AAwVASBUaGUgdGltZSBhZnRlciB3aGljaCBhIHBsYXllciB0aGF0IGlzIG5vdCBwbGF5aW5nIGNhbiBiZSBraWNrZWQgb3V0LgC8IFRoaXMgaXMgb25seSBmb3IgYWNjb3VudCBwbGF5ZXJzLCBub3QgcGVyc29ucy4ASERlZmF1bHRQbGF5RGVwb3NpdEUBQADIF6gEAAAAAAAAAAAAAAAIUQEgVGhlIGRlZmF1bHQgcGxheSBkZXBvc2l0IChuYXRpdmUgYmFsYW5jZSkgdXNlZCB3aGVuIFtgUGxheURlcG9zaXRBbW91bnRgXSBoYXMgbmV2ZXJwIGJlZW4gZXhwbGljaXRseSBjb25maWd1cmVkLgBURGVmYXVsdFBoYXNlRHVyYXRpb25z4QRQLAEAADwAAAAeAAAAWAIAADwAAAAQ7CBUaGUgZGVmYXVsdCBkdXJhdGlvbnMgb2YgZWFjaCBnYW1lIHBoYXNlLCBpbiBzZWNvbmRzLiBXaGVu/CBgU3RvcmVkUGhhc2VEdXJhdGlvbnNgIGlzIGBTb21lYCwgdGhvc2UgdmFsdWVzIHRha2UgcHJlY2VkZW5jZdggb3ZlciB0aGlzIGRlZmF1bHQ7IHRoZSBvdmVycmlkZSBpcyBzZXQgYXQgcnVudGltZSB2aWF0IFtgUGFsbGV0OjpzZXRfZ2FtZV9waGFzZXNgXS4AQE1heEdhbWVTY2hlZHVsZXM4EAwAAAAE7CBUaGUgTWF4aW11bSBudW1iZXIgb2YgZ2FtZSBzY2hlZHVsZXMgdGhlIHBhbGxldCBjYW4gc3RvcmUuAGRNYXhBdHRlbmRhbmNlSGlzdG9yeURlcHRoOBAMAAAACF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXN0IGdhbWVzIGZvciB3aGljaCBwbGF5ZXIgYXR0ZW5kYW5jZSBpcyBzdG9yZWQuIEFueSBhdHRlbmRhbmNlAQEgZW50cmllcyBvbGRlciB0aGFuIHRoaXMgd2lsbCBiZSBpbW1pbmVudGx5IHB1cmdlZCBmcm9tIHN0b3JhZ2UuADRBaXJkcm9wU291cmNlBIBtb2RscG9wL2dhZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAjkIEFjY291bnQgdGhhdCBmdW5kcyB0aGUgcGVyLWdhbWUgYWlyZHJvcCBwcml6ZSBhbGxvY2F0aW9uDQEgKGBtYXhfd2lubmVycyDDlyBhc3NldF9hbW91bnRgIGlzIHRyYW5zZmVycmVkIHBlciBzY2hlZHVsZWQgZ2FtZSkuAGxwcm9vZl9vZl9vd25lcnNoaXBfbXNnX2Jhc2UIgHBvcDpnYW1lOnN0bXRfYWNjb3VudF9mb3JfYWxpYXM6EBkBIFRoZSBiYXNlIG1lc3NhZ2Ugb2YgdGhlIHByb29mIG9mIG93bmVyc2hpcCBvZiBhbiBhY2NvdW50IGJ5IGFuIGFsaWFzLgA1ASBUaGUgZnVsbCBtZXNzYWdlIGlzIHRoaXMgYmFzZSBjb25jYXRlbmF0ZWQgdG8gdGhlIGFsaWFzIGFuZCB0aGVuIGhhc2hlZCB3aXRorCBgYmxha2UyXzI1NmAgKGJsYWtlMiB3aXRoIDI1NiBiaXQgb3V0cHV0KS4AOG1heF9lbmFjdG1lbnRzOBAQAAAAEDkBIE1heGltdW0gbnVtYmVyIG9mIGZ1bGwgZWFybHktYXR0ZW5kYW5jZSBlbmFjdG1lbnRzIGEgc2luZ2xlIGByZXBvcnRgIGNhbGwgY2FuGQEgdHJpZ2dlcjogZXZlcnkgdW5pcXVlIGNvLXBsYXllciBhY3Jvc3MgYWxsIHJvdW5kcywgcGx1cyB0aGUgcmVwb3J0ZXIuANwgVXNlZCBhcyB0aGUgcHJlLWRpc3BhdGNoIG92ZXJjaGFyZ2UgYm91bmQgb24gYHJlcG9ydGAuAEhtYXhfcmVjZWl2ZWRfdm90ZXM4EA8AAAAIVQEgW2BTZWxmOjptYXhfYXR0ZXN0YXRpb25zYF0gb3ZlciBhbnkgZ2FtZSB0aGUgcnVudGltZSBhbGxvd3M6IHRoZSBtb3N0IHZvdGVzIGEgc2luZ2xlIQEgcGxheWVyIGNhbiByZWNlaXZlLCBhbmQgZXF1YWxseSB0aGUgbW9zdCBjby1wbGF5ZXJzIHRoZXkgY2FuIHJlcG9ydCBvbi4AVGFpcmRyb3BfZXZlbnRfaWRfYmFzZe0LbHBvcDpnYW1lOmFpcmRyb3A6ICAgICAgICAgIAxZASBUaGUgYmFzZSBzdHJpbmcgZm9yIHRoZSBhaXJkcm9wIGV2ZW50IGlkIGRlcml2YXRpb24uIFRoZSBhY3R1YWwgZXZlbnQgaWQgaXMgdGhpcyBiYXNlHQEgY29uY2F0ZW5hdGVkIHdpdGggdGhlIGFpcmRyb3AgaW5kZXggYW5kIHRoZSBnYW1lIGluZGV4IEJFIGVuY29kZWQgKHNlZXwgW2BQYWxsZXQ6OmFpcmRyb3BfZXZlbnRfaWRgXSkuAAHxCwAQPFRpY2tldFNpZ25hdHVyZXkEBIggU2lnbmF0dXJlIHVzZWQgdG8gdmVyaWZ5IHRpY2tldHMuQEFjY291bnRTaWduYXR1cmV5BARgIFNpZ25hdHVyZSBmb3IgYWNjb3VudHMuOEFpcmRyb3BBc3NldElkcQEEkCBBc3NldCBpZCB1c2VkIGJ5IFtgU2VsZjo6QWlyZHJvcGBdLkxBaXJkcm9wQXNzZXRCYWxhbmNlRQEEpCBBc3NldCBiYWxhbmNlIHVzZWQgYnkgW2BTZWxmOjpBaXJkcm9wYF0uADcAABRTY29yZQEUU2NvcmUsMFBhcnRpY2lwYW50cwABBAIRBfULBAAEfCBUaGUgcGFydGljaXBhbnRzIGluZm9ybWF0aW9ucy4ATFBlcnNvbmhvb2RUaHJlc2hvbGQBAAwEAATIIFRoZSBzY29yZSB0aHJlc2hvbGQgcmVxdWlyZWQgdG8gcmVhY2ggcGVyc29uaG9vZC4AbFBlcnNvbmhvb2RUaHJlc2hvbGRTY2hlZHVsZQEA/QR8GIgTAAABECcAAAMgTgAABriIAAAKUMMAAA//////FSgdASBSdW50aW1lLWNvbmZpZ3VyYWJsZSBzY2hlZHVsZSBvZiBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVycywgc29ydGVkIGJ5HQEgYXNjZW5kaW5nIGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkYC4gRWFjaCB0aWVyIHNwZWNpZmllcyB0aGUgc2NvcmUgYR0BIHBhcnRpY2lwYW50IG11c3QgcmVhY2ggdG8gYmUgcmVjb2duaXplZCBhcyBhIHBlcnNvbiBhdCB0aGF0IHBvcHVsYXRpb24cIGxldmVsLgAFASBEZWZhdWx0cyB0byBbYERlZmF1bHRQZXJzb25ob29kVGhyZXNob2xkVGllcnNgXSB1bnRpbCBnb3Zlcm5hbmNlAQEgb3ZlcnJpZGVzIGl0IHZpYSBbYFBhbGxldDo6c2V0X3BlcnNvbmhvb2RfdGhyZXNob2xkX3NjaGVkdWxlYF0uABEBIEEgbmV3IHNjaGVkdWxlIHRha2VzIGVmZmVjdCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgcmVwb3J0IHNlc3Npb278IHdoZW4gYHVwZGF0ZV90aHJlc2hvbGRzKClgIHJlY2FsY3VsYXRlcyBgUGVyc29uaG9vZFRocmVzaG9sZGAuAFBBYnNlbmNlR3JhY2VTY2hlZHVsZQEA8QSUGIgTAAAGBRAnAAAFBCBOAAAEA7iIAAADAlDDAAACAf////8GASApASBSdW50aW1lLWNvbmZpZ3VyYWJsZSBzY2hlZHVsZSBvZiBhYnNlbmNlLWdyYWNlIHRpZXJzLCBzb3J0ZWQgYnkgYXNjZW5kaW5nDQEgcG9wdWxhdGlvbiBzaXplIHRocmVzaG9sZC4gRWFjaCB0aWVyIHNwZWNpZmllcyBob3cgbWFueSBtaXNzZXMgYXJlDQEgdG9sZXJhdGVkIHdpdGhpbiByZWNlbnQgZ2FtZXMgYmVmb3JlIGEgcGFydGljaXBhbnQncyBwZXJzb25ob29kIGlzLCBzdXNwZW5kZWQuAB0BIERlZmF1bHRzIHRvIFtgRGVmYXVsdEFic2VuY2VHcmFjZVRpZXJzYF0gdW50aWwgZ292ZXJuYW5jZSBvdmVycmlkZXMgaXQNASB2aWEgW2BQYWxsZXQ6OnNldF9hYnNlbmNlX2dyYWNlX3NjaGVkdWxlYF0uIEFuIGVtcHR5IHNjaGVkdWxlIChzZXT4IGV4cGxpY2l0bHkgYnkgZ292ZXJuYW5jZSkgZGlzYWJsZXMgdGhlIGdyYWNlIHBlcmlvZCBlbnRpcmVseS4AREFic2VuY2VHcmFjZVJhdGlvAQBhCggAABgVASBUaGUgY3VycmVudGx5IGFjdGl2ZSBhYnNlbmNlLWdyYWNlIHJhdGlvIGAoYWxsb3dlZF9taXNzZXMsIHdpbmRvdylgLCUBIGRlcml2ZWQgZnJvbSBgQWJzZW5jZUdyYWNlU2NoZWR1bGVgIGFuZCB0aGUgY3VycmVudCBhY3RpdmUtcGVyc29uIGNvdW50LgARASBVcGRhdGVkIGVhY2ggdGltZSBgdXBkYXRlX3RocmVzaG9sZHMoKWAgcnVucyAoYXQgdGhlIHN0YXJ0IG9mIGV2ZXJ5HQEgYXR0ZW5kYW5jZSByZXBvcnQgc2Vzc2lvbikuIFJlYWQgYnkgYHNldF9hdHRlbmRhbmNlYCB0byBkZWNpZGUgd2hldGhlcowgYSBwYXJ0aWNpcGFudCBzaG91bGQgYmUgc3VzcGVuZGVkLgBIQ3VycmVudFJvdW5kUG9pbnRzAQA4EAAAAAAEtCBUaGUgYWNjdW11bGF0ZWQgcG9pbnRzIGluIHRoZSBjdXJyZW50IHJvdW5kLgBEQ3VycmVudFJvdW5kSW5kZXgBADgQAAAAAByAIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCByb3VuZC4AXQEgVGhpcyBtdXN0IGJlIHRoZSBzdW0gb2YgYWxsIHBvaW50cyBhY2N1bXVsYXRlZCBpbiBgUm91bmRzUG9pbnRzRm9yUGFydGljaXBhbnRgIGZvciB0aGU8IGN1cnJlbnQgcm91bmQuAFEBICoqV0FSTklORyoqOiBUaGlzIHN0b3JhZ2UgbXVzdCBiZSBjb25zaXN0ZW50IHdpdGggYFJvdW5kc1BvaW50c0ZvclBhcnRpY2lwYW50YCwgdXNltCBgZm4gYWRkX3BvaW50c190b19wYXJ0aWNpcGFudGAgdG8gdXBkYXRlIGl0LgBoUm91bmRzUG9pbnRzRm9yUGFydGljaXBhbnQBAQgCAgUMOBAAAAAAGNAgVGhlIHBvaW50cyBhY2N1bXVsYXRlZCBieSBhIHBhcnRpY2lwYW50IGluIGEgcm91bmQuAFEBIEZvciB0aGUgY3VycmVudCByb3VuZCwgdGhpcyBzdG9yYWdlIG11c3QgYmUgdXBkYXRlZCBhbG9uZ3NpZGUgYEN1cnJlbnRSb3VuZFBvaW50c2AuADEBICoqV0FSTklORyoqOiBUaGlzIHN0b3JhZ2UgbXVzdCBiZSBjb25zaXN0ZW50IHdpdGggYEN1cnJlbnRSb3VuZFBvaW50c2AsIHVzZbQgYGZuIGFkZF9wb2ludHNfdG9fcGFydGljaXBhbnRgIHRvIHVwZGF0ZSBpdC4AMFJvdW5kUGF5b3V0cwABBAI4CQwEABCoIFRoZSByb3VuZHMgdGhhdCBhcmUgY3VycmVudGx5IHBheWluZyBvdXQuABEBIFJvdW5kcyBhcmUgcGF5aW5nIG91dCBhZnRlciB0aGV5IGhhdmUgZmluaXNoZWQgYWNjdW11bGF0aW5nIHBvaW50cy4lASBXaGVuIGFsbCB0aGVpciBwb2ludHMgaGF2ZSBiZWVuIHBhaWQgb3V0LCB0aGV5IGFyZSByZW1vdmVkIGZyb20gc3RvcmFnZS4ANFJvdW5kUGxhbm5pbmcAAA0MBAAM/CBUaGUgcGxhbm5pbmcgb2YgdGhlIGN1cnJlbnQgcm91bmQgdGhhdCBpcyBhY2N1bXVsYXRpbmcgcG9pbnRzLgA9ASBJZiBub25lIHRoZSBjdXJyZW50IHJvdW5kIGlzIG9uZ29pbmcgYW5kIHdpbGwgYmUgcGxhbm5lZCBvbiB0aGUgbmV4dCBzY2hlZHVsZS4AOFJvdW5kU2NoZWR1bGVzAQARDAQABLggRGVzY3JpYmVzIHRoZSBzY2hlZHVsZXMgb2YgdGhlIHBheW91dCByb3VuZHMuAAHlBAAB9QcAEFBDdXJyZW5jeUxvY2F0aW9uSW5mb3EBMAEDAHEXBDIFdsjrCwT0IFRoZSBsb2NhdGlvbiBvZiB0aGUgdXNlZCBjdXJyZW5jeS4gSXQgaXMgaW5mb3JtYXRpb25hbCBvbmx5LgBQT2ZmY2hhaW5Xb3JrSW50ZXJ2YWw4EAIAAAAEsCBUaGUgaW50ZXJ2YWwgYXQgd2hpY2ggb2ZmY2hhaW4gd29ya2VyIHJ1bnMuADBzY29yZV9wb3RfaWQEgG1vZGxzY29yZXBvdAAAAAAAAAAAAAAAAAAAAAAAAAAABOAgR2V0IGEgdW5pcXVlLCBpbmFjY2Vzc2libGUgYWNjb3VudCBJRCBmcm9tIHRoZSBgUG90SWRgLgA0c2NvcmVfY29udGV4dAiAmfGSDschenTwpoK1cTr5Fa6gmYQ7q2jnTNZGPl7G6EIIWQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiBzY29yZSAgcGFsbGV0LgABHQwAAAA4AAAoTmZ0Q3JlZGl0cwEoTmZ0Q3JlZGl0cyRYQXdhcmRlZE5mdENsYWltQ3JlZGl0cwEBCAUCBQwhDEAAAAAAAAAAAAAAAAAAAAAARF0BIFdoaWNoIGNyZWRpdHMgYSBnYW1lIGhhcyBhbHJlYWR5IGF3YXJkZWQgYSBjbGFpbWFudCwga2V5ZWQgYnkgZ2FtZSBpbmRleCBhbmQgY2xhaW1hbnQuFQEgVGhlIHZhbHVlIG1hcmtzIHRoZSBzbG90cyBvZiBbYFBhbGxldDo6Y3JlZGl0X3Nsb3RgXSB0aGF0IGFyZSB0YWtlbi4AXQEgQm9va2tlZXBpbmcgZm9yIFtgUGFsbGV0Ojphd2FyZF9uZnRfY2xhaW1fY3JlZGl0YF0sIGl0cyBvbmx5IHJlYWRlciwgYW5kIHdoYXQgbWFrZXMgYW4tASBhd2FyZCBpZGVtcG90ZW50OiBgcmVwb3J0YCBhd2FyZHMgYSBgUGVyc29uYCB2b3RlJ3MgY3JlZGl0IG9uIHRoZSBzcG90IGFuZGEBIGBhd2FyZF9hdHRlbmRhbmNlX2NyZWRpdHNgIGxhdGVyIHdhbGtzIHRoYXQgc2FtZSBjcmVkaXQsIHdoaWNoIHVuZ3VhcmRlZCB3b3VsZCBnaXZlIHRoZVUBIGNsYWltYW50IGEgc2Vjb25kIGxlYWYsIGluIGEgc2Vjb25kIGJsb2NrJ3MgdHJlZSwgYW5kIHR3byBtaW50cyBmcm9tIG9uZSBjcmVkaXQuIE9mZmUBIGNoYWluIGl0IGlzIG5vdCBuZWVkZWQsIEFzc2V0IEh1YiBtaW50aW5nIGFnYWluc3QgYSByb290IGl0IGlzIHNlbnQgYW5kIGEgd2FsbGV0IHJlYWRpbmdZASBbYE5mdENsYWltQ3JlZGl0QmxvY2tzYF0gYW5kIHRoZSBibG9ja3MnIGBOZnRDbGFpbUNyZWRpdEF3YXJkZWRgIGV2ZW50cy4gT25lIHdvcmQgcGVyaQEgY2xhaW1hbnQgcmF0aGVyIHRoYW4gYW4gZW50cnkgcGVyIGNyZWRpdCwgYmVjYXVzZSB0aGF0IGVudHJ5IGNvdW50IGlzIHdoYXQgdGhlIGJhY2tmaWxsJ3NcIHByb29mIHNpemUgaXMgbWFkZSBvZi4AEQEgT25seSB0aGUgY3VycmVudCBnYW1lIGlzIGV2ZXIgaW4gaGVyZSwgZW50cmllcyBiZWluZyBkcmFpbmVkIGJlZm9yZWEBIGBwbGF5ZXJfcHJvY2Vzc19zdGVwMmAga2lsbHMgdGhlIGdhbWUgYW5kIGBuZXdfZ2FtZWAgcmVmdXNpbmcgdG8gc3RhcnQgb25lIHdoaWxlIGEgZ2FtZWEBIGV4aXN0cy4gVGhlIGdhbWUga2V5IHN0aWxsIGVhcm5zIGl0cyBwbGFjZTogYSBzbG90IG1lYW5zIG5vdGhpbmcgb3V0c2lkZSB0aGUgZ2FtZSB3aG9zZVkBIGdyb3VwcyBpdCBpbmRleGVzLCBzbyB3ZXJlIGEgZHJhaW4gbGVmdCBoYWxmIGRvbmUsIGFuIHVua2V5ZWQgZW50cnkgd291bGQgcmVhZCBhcyB0aGX4IG5leHQgZ2FtZSdzIGF3YXJkZWQgc2xvdHMgYW5kIHNpbGVudGx5IHN3YWxsb3cgdGhvc2UgY3JlZGl0cy4AUE5mdENsYWltQ3JlZGl0QmxvY2tzAQEEAhEFDQUEAChdASBUaGUgYmxvY2tzIGEgY2xhaW1hbnQgd2FzIGF3YXJkZWQgYXQgbGVhc3Qgb25lIE5GVCBjbGFpbSBjcmVkaXQgaW4sIGluIGFzY2VuZGluZyBvcmRlclQgYW5kIHdpdGhvdXQgcmVwZWF0cy4AcQEgRWFjaCBlbnRyeSBrZXlzIGFuIFtgTmZ0Q2xhaW1DcmVkaXRSb290c2BdIGVudHJ5IHdob3NlIHRyZWUgaG9sZHMgYSBsZWFmIG9mIHRoZSBjbGFpbWFudCdzLGEBIHNvIHRoaXMgYW5zd2VycyB3aGljaCByb290cyB0aGUgY2xhaW1hbnQgaGFzIHNvbWV0aGluZyB0byBtaW50IGFnYWluc3Qgd2l0aG91dCBzY2FubmluZ3EBIGV2ZXJ5IGJsb2NrLiBUaGUgcHJvb2YgaXRzZWxmIHN0aWxsIGNvbWVzIGZyb20gdGhhdCBibG9jaydzIGBOZnRDbGFpbUNyZWRpdEF3YXJkZWRgIGV2ZW50czugIHRoZSBpbmRleCBzdGF0ZXMgd2hpY2ggYmxvY2tzIHRvIGZldGNoLgBZASBCbG9ja3MgYXJlIGFwcGVuZGVkIGFzIGNyZWRpdHMgYXJlIGF3YXJkZWQgYW5kIG5ldmVyIHJlbW92ZWQgb25jZSBtaW50ZWQuIFRoZSBsaXN0IGlzEQEgdGhlcmVmb3JlIGEgcmluZyBib3VuZGVkIGJ5IFtgQ29uZmlnOjpNYXhDcmVkaXRCbG9ja3NQZXJDbGFpbWFudGBdLgBQTmZ0Q2xhaW1DcmVkaXRBd2FyZHMBAQQFOCUMBAAwbQEgVGhlIE5GVCBjbGFpbSBjcmVkaXRzIGVhY2ggcmV0YWluZWQgYmxvY2sgYXdhcmRlZCwgaW4gYXdhcmQgb3JkZXIsIHdoaWNoIGFyZSB0aGUgcHJlaW1hZ2VzfCBvZiB0aGF0IGJsb2NrJ3MgTWVya2xlIGxlYXZlcy4AaQEgVGhlIGN1cnJlbnQgYmxvY2sncyBlbnRyeSBkb3VibGVzIGFzIHRoZSBidWZmZXIgdGhlIG5leHQgYmxvY2sncyBgb25faW5pdGlhbGl6ZWAgY29tcHV0ZXNRASB0aGUgcm9vdCBvdmVyOiBgUGFsbGV0Ojphd2FyZF9uZnRfY2xhaW1fY3JlZGl0YCBhcHBlbmRzIHRvIGl0LCBhbmQgb25jZSB0aGUgcm9vdCBpc2UBIHJlY29yZGVkIHRoZSBlbnRyeSBzdGF5cyBhcyBpdCBpcywgc28gYSBjbGFpbSBjYW4gYmUgcHJvdmVuIGZyb20gc3RhdGUgYWxvbmUuIFRoZSBvbGRlc3TYIGVudHJ5IGlzIHJlbW92ZWQgd2hlbiBhIG5ldyByb290IHB1c2hlcyBpdCBvdXQgb2YgdGhlJQEgW2BDb25maWc6Ok1heFJldGFpbmVkQXdhcmRCbG9ja3NgXSB3aW5kb3csIHdoaWNoIGlzIHdoYXQgYm91bmRzIHRoZSBtYXAuAGUBIFRoZSBhd2FyZHMgYXJlIGtlcHQgcmF0aGVyIHRoYW4gdGhlIGxlYXZlcyB0aGV5IGhhc2ggdG8sIGJlY2F1c2UgYSBtaW50IG5lZWRzIHRoZSBjcmVkaXRRASBpdHNlbGY6IEFzc2V0IEh1YiByZWNvbXB1dGVzIHRoZSBsZWFmIGZyb20gdGhlIGNsYWltYW50IGFuZCB0aGUgY3JlZGl0IHRoZSBjbGFpbWFudFEBIHByZXNlbnRzLCBzbyBhIGxlYWYgYWxvbmUgd291bGQgc3RpbGwgbGVhdmUgdGhlIGNyZWRpdCB0byBiZSByZWNvdmVyZWQgZnJvbSBldmVudHMuAGROZnRDbGFpbUNyZWRpdEF3YXJkQmxvY2tzAQAxDAQAGGEBIFRoZSBhd2FyZCBibG9ja3Mgd2hvc2UgW2BOZnRDbGFpbUNyZWRpdEF3YXJkc2BdIGFyZSBzdGlsbCBvbiBjaGFpbiwgaW4gYXNjZW5kaW5nIG9yZGVyLgBlASBBIHJpbmcgYm91bmRlZCBieSBbYENvbmZpZzo6TWF4UmV0YWluZWRBd2FyZEJsb2Nrc2BdOiByZWNvcmRpbmcgYSByb290IGFwcGVuZHMgaXRzIGJsb2NrZQEgYW5kLCB3aGVuIHRoYXQgZmlsbHMgdGhlIHJpbmcsIHJlbW92ZXMgdGhlIGF3YXJkcyBvZiB0aGUgYmxvY2sgdGhhdCBkcm9wcyBvZmYgdGhlIGZyb250LmkBIEtlZXBpbmcgdGhlIGxpc3QgcmF0aGVyIHRoYW4gcHJ1bmluZyBieSBibG9jayBhcml0aG1ldGljIG1lYW5zIG5vIGJsb2NrIGV2ZXIgcGF5cyBmb3IgdGhlFQEgcmVtb3ZhbCBvZiBhbiBlbnRyeSB0aGF0IHdhcyBuZXZlciB0aGVyZSwgYXdhcmQgYmxvY2tzIGJlaW5nIHNwYXJzZS4AdFBlbmRpbmdOZnRDbGFpbUNyZWRpdFJvb3RJbmZvAAA1DAQAHGUBIFRoZSBmaWVsZHMgdGhlIFtgTmZ0Q2xhaW1DcmVkaXRSb290c2BdIGVudHJ5IG9mIHRoZSBjdXJyZW50IGJsb2NrIHdpbGwgY2FycnkgYmVzaWRlcyB0aGVRASByb290LiBXcml0dGVuIHdoZW4gdGhlIGJsb2NrJ3MgZmlyc3QgY3JlZGl0IGlzIGF3YXJkZWQgYW5kIGNsZWFyZWQgb25jZSBpdHMgcm9vdCBpcyggcmVjb3JkZWQuAPQgYE5vbmVgIGV4YWN0bHkgd2hlbiB0aGUgY3VycmVudCBibG9jayBoYXMgYXdhcmRlZCBubyBjcmVkaXQuVQEgW2BQYWxsZXQ6OmJ1aWxkX2NyZWRpdF90cmVlYF0gcmVsaWVzIG9uIHRoYXQgdG8gZGVjaWRlIHdoZXRoZXIgYSBibG9jayBoYXMgYSByb290IHRvMQEgcmVjb3JkIHdpdGhvdXQgcmVhZGluZyB0aGUgYmxvY2sncyBhd2FyZHMsIHdoaWNoIGFyZSBjaGFyZ2VkIGF0IGBtYXhfc2l6ZWAuAExOZnRDbGFpbUNyZWRpdFJvb3RzAAEEBTj9BwQACGEBIFRoZSBNZXJrbGUgY29tbWl0bWVudCB0byBlYWNoIGJsb2NrJ3MgYXdhcmRlZCBORlQgY2xhaW0gY3JlZGl0cywga2V5ZWQgYnkgdGhlIGJsb2NrIHRoZRkBIGNyZWRpdHMgd2VyZSBhd2FyZGVkIGluLiBCbG9ja3MgdGhhdCBhd2FyZGVkIG5vIGNyZWRpdCBoYXZlIG5vIGVudHJ5LgBcQ3JlZGl0VHJlZURlbGl2ZXJ5UXVldWUBADkMBAAcZQEgVGhlIGF3YXJkIGJsb2NrcyB3aG9zZSBjcmVkaXQgdHJlZXMgaGF2ZSBub3QgYmVlbiBkZWxpdmVyZWQgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4geWV0LD0BIGluIGFzY2VuZGluZyBibG9jayBvcmRlciwgZWFjaCB3aXRoIHRoZSBzZXF1ZW5jZSBudW1iZXIgaXQgaXMgZGVsaXZlcmVkIHVuZGVyLgAhASBBcHBlbmRlZCBieSBbYFBhbGxldDo6YnVpbGRfY3JlZGl0X3RyZWVgXSBhbmQgZHJhaW5lZCBmcm9tIHRoZSBmcm9udCBieVEBIFtgUGFsbGV0OjpzZW5kX2NyZWRpdF90cmVlc2BdIG9uY2UgdGhlIFhDTSBjYXJyeWluZyB0aGUgdHJlZXMgaGFzIGJlZW4gYWNjZXB0ZWQgZm9yXQEgZGVsaXZlcnkuIFRoZSB0cmVlcyB0aGVtc2VsdmVzIHN0YXkgaW4gW2BOZnRDbGFpbUNyZWRpdFJvb3RzYF07IHRoaXMgb25seSByZWNvcmRzIHdoYXRcIHN0aWxsIG93ZXMgYSBkZWxpdmVyeS4AOExhc3RSZXBsYXlUaW1lAAAoBAAQ1CBUaGUgdGltZSBvZiB0aGUgbGFzdCBjcmVkaXQgdHJlZSByZXBsYXksIGluIHNlY29uZHMuAPAgW2BQYWxsZXQ6OnJlcGxheV9jcmVkaXRfdHJlZXNgXSByZWZ1c2VzIHRvIHJ1biBhZ2FpbiB3aXRoaW6kIFtgQ29uZmlnOjpSZXBsYXlDb29sZG93blNlY29uZHNgXSBvZiBpdC4AWE5leHRDcmVkaXRUcmVlU2VxdWVuY2UBACggAAAAAAAAAAAUEQEgVGhlIHNlcXVlbmNlIG51bWJlciB0aGUgbmV4dCBxdWV1ZWQgY3JlZGl0IHRyZWUgaXMgZGVsaXZlcmVkIHVuZGVyLgBxASBPbmx5IGEgdHJlZSB0aGF0IG1hZGUgaXQgaW50byBbYENyZWRpdFRyZWVEZWxpdmVyeVF1ZXVlYF0gY29uc3VtZXMgb25lLCBzbyB0aGUgc2VxdWVuY2UgdGhlYQEgY2xhaW1zIGNoYWluIHNlZXMgc3RheXMgY29udGlndW91cyBldmVuIHdoZW4gdGhlIHF1ZXVlIG92ZXJmbG93cy4gQSBnYXAgdGhlcmUgdGhlcmVmb3Jl3CBtZWFucyBhIG1lc3NhZ2Ugd2FzIGxvc3QsIG5ldmVyIHRoYXQgb25lIHdhcyBub3Qgc2VudC4AAQkFAAH5BwAkSE1heENyZWRpdHNQZXJCbG9jazgQsAQAAFhNASBUaGUgbWF4aW11bSBudW1iZXIgb2YgTkZUIGNsYWltIGNyZWRpdHMgdGhhdCBjYW4gYmUgYXdhcmRlZCBpbiBhIHNpbmdsZSBibG9jaywgYW5kCQEgaGVuY2UgdGhlIG1heGltdW0gbnVtYmVyIG9mIGxlYXZlcyBpbiBvbmUgW2BOZnRDbGFpbUNyZWRpdFRyZWVgXS4AUQEgT25lIGJsb2NrJ3MgYXdhcmRzIGFyZSBhIHNpbmdsZSBbYE5mdENsYWltQ3JlZGl0QXdhcmRzYF0gZW50cnksIHdob3NlIHByb29mIHNpemUgaXNVASBjaGFyZ2VkIGF0IGBtYXhfc2l6ZWAgb24gZXZlcnkgYXdhcmQgYW5kIG9uIGV2ZXJ5IHJvb3QgY29tcHV0YXRpb24sIHNvIHRoaXMgYm91bmQgaXMBASBwYWlkIGZvciBpbiBldmVyeSBgcmVwb3J0YCB3aGV0aGVyIHRoZSBhd2FyZHMgYXJlIHRoZXJlIG9yIG5vdC4AWQEgQW4gdW5yZWNvcmRlZCBjcmVkaXQgaXMgY29tbWl0dGVkIHRvIG5vIHJvb3QgYW5kIHN0YXlzIHVubWludGFibGUsIGFuZCB0aGUgcGFsbGV0IGNhblkBIG9ubHkgcmVwb3J0IHRoYXQgZGVmZW5zaXZlbHksIHNvIHRoZSBib3VuZCBtdXN0IGNvdmVyIHdoYXQgYSB3aG9sZSBibG9jayBvZiBgcmVwb3J0YHNhASBhd2FyZHMuIFRoZSBgaW50ZWdyaXR5X3Rlc3RgIGFzc2VydHMgdGhhdCBmbG9vciBmcm9tIHRoZSBydW50aW1lJ3Mgb3duIGJsb2NrIGxpbWl0cyBhbmRhASB3ZWlnaHRzLCBmYWlsaW5nIHRoZSBgcnVudGltZV9pbnRlZ3JpdHlfdGVzdHNgIHRoYXQgaXRzIGBjb25zdHJ1Y3RfcnVudGltZSFgIGdlbmVyYXRlcy5JASBUaGUgYmFja2ZpbGwgaW4gYHBsYXllcl9wcm9jZXNzX3N0ZXAxYCBuZWVkcyBubyBmbG9vcjogaXQgZGVmZXJzIGEgcGxheWVyIHRoYXQgbm80IGxvbmdlciBmaXRzLgBZASBTbGFjayBhYm92ZSB0aGUgZmxvb3IgYnV5cyBtYXJnaW4gYWdhaW5zdCBhIHdlaWdodCByZWdlbmVyYXRpb24gbGlmdGluZyBpdCwgYW5kIGNvc3RzZQEgcmVwb3J0cyBwZXIgYmxvY2ssIHNpbmNlIGl0IGlzIGNoYXJnZWQgdG8gZXZlcnkgb25lIG9mIHRoZW0uIFRoYXQgY2hhcmdlIGFsc28gbG93ZXJzIHRoZWUBIGZsb29yLCBzbyB0aGUgbWFyZ2luIGdyb3dzIGZhc3RlciB0aGFuIHRoZSBzbGFjay4gVGhlIGBpbnRlZ3JpdHlfdGVzdGAgd2FybnMgcmF0aGVyIHRoYW50IGZhaWxzIGFib3ZlIHR3aWNlIHRoZSBmbG9vci4ATQEgUmFpc2luZyB0aGUgYm91bmQgaW4gYSBydW50aW1lIHVwZ3JhZGUgaXMgc2FmZS4gTG93ZXJpbmcgaXQgc3RyYW5kcyBldmVyeSByZXRhaW5lZFUBIGJsb2NrJ3MgYXdhcmRzLCBzaW5jZSBbYE5mdENsYWltQ3JlZGl0QXdhcmRzYF0gbm8gbG9uZ2VyIGRlY29kZXMgYWdhaW5zdCB0aGUgc21hbGxlcnwgYm91bmQsIHNvIGNsZWFyIHRoZSBtYXAgZmlyc3QuADxOZnRDbGFpbXNQYXJhSWScENwFAAAMWQEgVGhlIHBhcmFjaGFpbiB0aGUgY3JlZGl0IHRyZWVzIGFyZSBkZWxpdmVyZWQgdG8sIHdoaWNoIG1pbnRzIHRoZSBORlRzIGNsYWltZWQgYWdhaW5zdF0BIHRoZW0uIFRoZXJlIGlzIGV4YWN0bHkgb25lLCBzbyB0aGUgcnVudGltZSBmaXhlcyBpdCByYXRoZXIgdGhhbiBnb3Zlcm5hbmNlIHJlZ2lzdGVyaW5nECBpdC4AUE5mdENsYWltc1BhbGxldEluZGV4DARgCEEBIFBhbGxldCBpbmRleCBvZiBpbmRpdi1wYWxsZXQtbmZ0LWNsYWltcyBvbiBbYENvbmZpZzo6TmZ0Q2xhaW1zUGFyYUlkYF0sIHVzZWQgdG/cIGVuY29kZSB0aGUgYFRyYW5zYWN0YCBjYWxsIHRoZSB0cmVlcyBhcmUgZGVsaXZlcmVkIGluLgBQTWF4UXVldWVkQ3JlZGl0VHJlZXM4EAABAAAcBQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNyZWRpdCB0cmVlcyB0aGF0IGNhbiB3YWl0IGZvciBkZWxpdmVyeSBpbmwgYENyZWRpdFRyZWVEZWxpdmVyeVF1ZXVlYC4AYQEgT25lIGJsb2NrIGJ1aWxkcyBhdCBtb3N0IG9uZSB0cmVlIGFuZCB0aGUgb2ZmY2hhaW4gd29ya2VyIGRyYWlucyB0aGUgcXVldWUgZXZlcnkgYmxvY2ssYQEgc28gdGhpcyBvbmx5IGhhcyB0byBjb3ZlciBhbiBvdXRhZ2UuIEEgdHJlZSB0aGF0IGRvZXMgbm90IGZpdCBpcyBuZXZlciBxdWV1ZWQgYW5kIG5lZWRz2CBbYFBhbGxldDo6cmVwbGF5X2NyZWRpdF90cmVlc2BdLCBzbyBzaXplIGl0IHdlbGwgcGFzdJggW2BDb25maWc6Ok1heENyZWRpdFRyZWVzUGVyTWVzc2FnZWBdLgBgTWF4Q3JlZGl0VHJlZXNQZXJNZXNzYWdlOBAgAAAAEPwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNyZWRpdCB0cmVlcyBjYXJyaWVkIGJ5IG9uZSBYQ00gbWVzc2FnZS4AVQEgVGhlIG5mdC1jbGFpbXMgcGFsbGV0J3Mgb3duIGJvdW5kIG11c3QgYmUgYXQgbGVhc3QgdGhpcyBsYXJnZSwgb3RoZXJ3aXNlIHRoZSBiYXRjaGVz+CBzZW50IHRvIGl0IGZhaWwgdG8gZGVjb2RlIGFuZCB0aGUgdHJlZXMgaW4gdGhlbSBuZXZlciBhcnJpdmUuAFRSZXBsYXlDb29sZG93blNlY29uZHMoIDwAAAAAAAAAEMwgQ29vbGRvd24sIGluIHNlY29uZHMsIGJldHdlZW4gY3JlZGl0IHRyZWUgcmVwbGF5cy4ATQEgW2BQYWxsZXQ6OnJlcGxheV9jcmVkaXRfdHJlZXNgXSBpcyBwZXJtaXNzaW9ubGVzcywgc28gdGhpcyBpcyB3aGF0IGJvdW5kcyB0aGUgWENNUFggdHJhZmZpYyBpdCBjYW4gY2F1c2UuAFROZnRDbGFpbXNSZW1vdGVXZWlnaHR5AhgCRsMjoSggCQEgUGVyLXRyZWUgd2VpZ2h0IHN1cmNoYXJnZSBmb3IgZXhlY3V0aW5nIGByZWNlaXZlX2NyZWRpdF90cmVlc2Agb27YIFtgQ29uZmlnOjpOZnRDbGFpbXNQYXJhSWRgXSwgY2hhcmdlZCB0byB0aGUgY2FsbGVyIG9mhCBbYFBhbGxldDo6cmVwbGF5X2NyZWRpdF90cmVlc2BdLgBdASBUaGlzIHByaWNlcyB0aGUgcmVtb3RlIHdvcmsgYSByZXBsYXkgY2F1c2VzOyBbYENvbmZpZzo6UmVwbGF5Q29vbGRvd25TZWNvbmRzYF0gaXMgd2hhdCUBIGJvdW5kcyBob3cgb2Z0ZW4gb25lIGNhbiBoYXBwZW4uIFNldCBpdCB0byBhdCBsZWFzdCB0aGUgcGVyLXRyZWUgY29zdCBvZj0BIGByZWNlaXZlX2NyZWRpdF90cmVlc2AgaW4gdGhlIGNsYWltcyBjaGFpbidzIG93biBnZW5lcmF0ZWQgd2VpZ2h0cywgcHJvb2Ygc2l6ZSggaW5jbHVkZWQuAFhNYXhSZXRhaW5lZEF3YXJkQmxvY2tzOBAAAQAAQFUBIFRoZSBudW1iZXIgb2YgbW9zdCByZWNlbnQgYXdhcmQgYmxvY2tzIHdob3NlIFtgTmZ0Q2xhaW1DcmVkaXRBd2FyZHNgXSBzdGF5IG9uIGNoYWluLgAxASBUaGlzIGlzIHRoZSB3aW5kb3cgaW4gd2hpY2ggYSBjbGFpbSBjYW4gYmUgcHJvdmVuIGZyb20gc3RhdGUgYWxvbmUsIHRocm91Z2hJASBbYFBhbGxldDo6bmZ0X2NsYWltX2NyZWRpdF9wcm9vZnNgXS4gT25jZSBhIGJsb2NrIGRyb3BzIG91dCBvZiBpdCwgaXRzIGF3YXJkcyBhcmVZASByZW1vdmVkIGFuZCBhIHByb29mIGhhcyB0byBiZSByZWJ1aWx0IGZyb20gdGhlIGJsb2NrJ3MgYE5mdENsYWltQ3JlZGl0QXdhcmRlZGAgZXZlbnRzWQEgYW5kIHBhc3NlZCB0byBbYFBhbGxldDo6bmZ0X2NsYWltX2NyZWRpdF9wcm9vZl9mcm9tX2F3YXJkc2BdLiBUaGUgcm9vdCBpdHNlbGYgaXMga2VwdEkBIGZvciBnb29kLCBzbyBkcm9wcGluZyBvdXQgZGVsYXlzIG5vIG1pbnQgdGhhdCBhIGNsYWltYW50LCBvciBhbiBpbmRleGVyLCBrZXB0IHRoZSwgYXdhcmRzIG9mLgBZASBJdCBjb3VudHMgYXdhcmQgYmxvY2tzLCBub3QgYmxvY2tzLCBiZWNhdXNlIG9ubHkgYmxvY2tzIHRoYXQgYXdhcmRlZCBhIGNyZWRpdCBoYXZlIGFuWQEgZW50cnkuIFNpemVkIGFnYWluc3QgaG93IGxvbmcgYSBjbGFpbWFudCBtYXkgdGFrZSB0byBtaW50LCBhbmQgcGFpZCBmb3IgaW4gc3RhdGU6IHRoZSUBIG1hcCBob2xkcyBhdCBtb3N0IHRoaXMgbWFueSBlbnRyaWVzIG9mIGBNYXhDcmVkaXRzUGVyQmxvY2tgIGF3YXJkcyBlYWNoLgBZASBSYWlzaW5nIHRoZSBib3VuZCBpbiBhIHJ1bnRpbWUgdXBncmFkZSBpcyBzYWZlLiBMb3dlcmluZyBpdCBvcnBoYW5zIHRoZSBhd2FyZHMgb2YgdGhlVQEgYmxvY2tzIGJleW9uZCB0aGUgbmV3IGJvdW5kLCBzaW5jZSBgTmZ0Q2xhaW1DcmVkaXRBd2FyZEJsb2Nrc2Agbm8gbG9uZ2VyIGRlY29kZXMgYW5kGQEgdGhlIHJpbmcgaXMgd2hhdCBuYW1lcyB0aGUgZW50cmllcyB0byByZW1vdmUsIHNvIGNsZWFyIHRoZSBtYXAgZmlyc3QuAGhNYXhDcmVkaXRCbG9ja3NQZXJDbGFpbWFudDgQIAAAACBBASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXdhcmQgYmxvY2tzIFtgTmZ0Q2xhaW1DcmVkaXRCbG9ja3NgXSBrZWVwcyBwZXIgY2xhaW1hbnQuAFUBIFRoZSBpbmRleCBpcyBhIGxvb2t1cCBhaWQsIG5vdCB0aGUgcmVjb3JkIG9mIHdoYXQgYSBjbGFpbWFudCBpcyBvd2VkLCBzbyBhIGZ1bGwgbGlzdEUBIGRyb3BzIGl0cyBvbGRlc3QgYmxvY2sgcmF0aGVyIHRoYW4gcmVqZWN0aW5nIGFuIGF3YXJkLiBTaXplIGl0IHBhc3QgdGhlIGJsb2NrcyBhQQEgY2xhaW1hbnQgY2FuIGVhcm4gY3JlZGl0cyBpbiBvdmVyIHRoZSBnYW1lcyB3aG9zZSB0cmVlcyBhcmUgc3RpbGwgd29ydGggbWludGluZ0UBIGFnYWluc3QsIGFuZCBhY2NvdW50IGZvciB0aGUgcHJvb2Ygc2l6ZTogYSByZWFkIGlzIGNoYXJnZWQgYXQgdGhlIGxpc3QncyBtYXhpbXVtUQEgZW5jb2RlZCBsZW5ndGgsIG9uZSBibG9jayBudW1iZXIgcGVyIGVudHJ5LCBvbmNlIHBlciBkaXN0aW5jdCBjbGFpbWFudCBhbiBleHRyaW5zaWMsIGF3YXJkcyB0by4AAUUMAAAAOQAAIER1bW15RGltASBEdW1teURpbQgsUmVzZXJ2ZWRJZHMAAQQCKBAEAATcIFRoZSBwZXJzb25hbCBJRHMgdGhhdCBhcmUgcmVzZXJ2ZWQgYnkgdW5wcm92ZW4gcGVvcGxlLgAYUGVvcGxlAAEEBShJDAQABLggVGhlIHBlb3BsZSB3ZSB0cmFjayBhbG9uZyB3aXRoIHRoZWlyIHJlY29yZHMuAAEVBQABBQgAAAFNDAAAADsAAChQZW9wbGVMaXRlAShQZW9wbGVMaXRlFChMaXRlUGVvcGxlAAEEAgRRDAQAAAA4QWxpYXNUb0FjY291bnQAAQQC6QMEBAAE4CBDb252ZXJzaW9uIG9mIGEgbGl0ZSBjb250ZXh0dWFsIGFsaWFzIHRvIGFuIGFjY291bnQgSUQuADhBY2NvdW50VG9BbGlhcwABBAIE5QMEAATgIENvbnZlcnNpb24gb2YgYW4gYWNjb3VudCBJRCB0byBhIGxpdGUgY29udGV4dHVhbCBhbGlhcy4AbExpdGVQZW9wbGVDb2xsZWN0aW9uQ3JlYXRlZAEAWQEEAATwIFdoZXRoZXIgdGhlIGxpdGUgcGVvcGxlIG1lbWJlciBjb2xsZWN0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuAFBBdHRlc3RhdGlvbkFsbG93YW5jZQEBBAIEOBAAAAAABCkBIE51bWJlciBvZiBhdHRlc3RhdGlvbnMgYXZhaWxhYmxlIHRvIGRpc3RyaWJ1dGUgZm9yIGEgdmVyaWZpZXIgYWNjb3VudCBpZC4AAS0FAAEJCAAYFFBvdElkxQkgcGxpdGVmZWUEPQEgQWNjb3VudCBpZGVudGlmaWVyIHVzZWQgdG8gZGVyaXZlIHRoZSBhY2NvdW50IHRoYXQgcmVjZWl2ZXMgcmVnaXN0cmF0aW9uIGZlZXMuAEBMaXRlUmluZ0V4cG9uZW50UQUECQTMIFJpbmcgZXhwb25lbnQgdXNlZCBmb3IgdGhlIGxpdGUgcGVvcGxlIGNvbGxlY3Rpb24uAEhMaXRlT25ib2FyZGluZ1NpemU4EAMAAAAE/CBPbmJvYXJkaW5nIHNpemUgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBsaXRlIHBlb3BsZSBjb2xsZWN0aW9uLgBIbGl0ZV9wZW9wbGVfcG90X2lkBIBtb2RscGxpdGVmZWUAAAAAAAAAAAAAAAAAAAAAAAAAAAQhASBUaGUgYWNjb3VudCB0aGF0IHJlY2VpdmVzIG5vbi1yZWZ1bmRhYmxlIGxpdGUtcGVyc29uIHJlZ2lzdHJhdGlvbiBmZWVzLgAwYXV0aF9jb250ZXh0CIAlyAp8L63wa06+G7m/B437Bzqg3y61FjMUYkmN4l1jEQS4IFRoZSBjb250ZXh0IHVzZWQgdG8gYXV0aGVudGljYXRlIGxpdGUgcGVvcGxlLgB0YWNjb3VudF9zZXR1cF9ibG9ja190b2xlcmFuY2U4EFgCAAAELQEgVGhlIG51bWJlciBvZiBibG9ja3Mgb2YgdG9sZXJhbmNlIHdlIGFsbG93IGZvciBhbiBhbGlhcyBzZXR1cCB0cmFuc2FjdGlvbi4AAVkMAARQQXR0ZXN0YXRpb25TaWduYXR1cmV5BAhhASBTaWduYXR1cmUgZ2VuZXJhdGVkIGJ5IGxpdGUgcGVvcGxlIGFuZCB1c2VkIGJ5IHZlcmlmaWVycyB0byBjbGFpbSBhdHRlc3RhdGlvbnMgb24gdGhlaXIgIGJlaGFsZi4APgAAJFJlc291cmNlcwEkUmVzb3VyY2VzLCRDb25zdW1lcnMAAQQCBF0MBAAEKQEgQWNjb3VudHMgdXNlZCB0byBpZGVudGlmeSBjb25zdW1lcnMgbWFwcGVkIHRvIHRoZWlyIGNvbnN1bWVyIGluZm9ybWF0aW9uLgBgU3RhdGVtZW50U3RvcmVBbGxvd2FuY2VzAAEIBgJlDG0MBAAUcQEgQWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgc3RhdGVtZW50IHN0b3JlIHNsb3QgdGhyb3VnaCBhbiBhbm9ueW1vdXMgYWxsb3dhbmNlLCBwZXIgcGVyaW9kLgBhASBUaGUgcGVyaW9kIGtleSBpcyBhIGJpZy1lbmRpYW4gZW5jb2RlZCBkYXkgbnVtYmVyIChzZWNvbmRzIHNpbmNlIFVuaXggZXBvY2ggLyA4NjQwMCkgc29xASB0aGF0IGBJZGVudGl0eWAtaGFzaGVkIGl0ZXJhdGlvbiB5aWVsZHMgZW50cmllcyBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyIHRvIGJlIHJlbW92ZWQgYnkgdGhlRCBvZmZjaGFpbiB3b3JrZXIuAGxTdG10U3RvcmVBbGxvd2FuY2VCeUFjY291bnQAAQgCAnEMEAQAFEEBIFJldmVyc2UgbG9va3VwIGZyb20gYSBzdGF0ZW1lbnQgYWNjb3VudCB0byBhbGwgaXRzIGFjdGl2ZSBhbm9ueW1vdXMgYWxsb3dhbmNlcy4ARQEgS2V5ZWQgYnkgYChBY2NvdW50SWQsIChCaWdFbmRpYW5VMzIgcGVyaW9kLCB1MzIgc2VxLCBBbGlhcykpYCDihpIgYCgpYC4gTXVsdGlwbGVJASBlbnRyaWVzIHBlciBhY2NvdW50IGFyZSBwb3NzaWJsZSB3aGVuIHRoZSBzYW1lIHN0YXRlbWVudCBhY2NvdW50IGlzIGF1dGhvcml6ZWQgYnnMIGRpZmZlcmVudCBhbGlhc2VzIG9yIGFjcm9zcyBncmFjZS13aW5kb3cgb3ZlcmxhcHMuAHxOb3RpZmljYXRpb25SZWdpc3RyYXRpb25CeUFsaWFzAAEEAgh5DAQABOAgTm90aWZpY2F0aW9uIGFsbG93YW5jZSByZWdpc3RyYXRpb24gYnkgYW5vbnltb3VzIGFsaWFzLgBoTm90aWZpY2F0aW9uQWxpYXNCeUFjY291bnQAAQQCBAgEAAQdASBSZXZlcnNlIGxvb2t1cCBmcm9tIG5vdGlmaWNhdGlvbiBzdGF0ZW1lbnQgYWNjb3VudCB0byBhbm9ueW1vdXMgYWxpYXMuAGxTcGVudExvbmdUZXJtU3RvcmFnZUFsaWFzZXMAAQgGAmUMEAQAIEkBIEFsaWFzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiB1c2VkIHRvIGNsYWltIGxvbmctdGVybSBzdG9yYWdlIGluIGEgZ2l2ZW4gcGVyaW9kLgBZASBLZXllZCBieSBgKHBlcmlvZCwgYWxpYXMpYC4gRWFjaCBjb3VudGVyIHZhbHVlIGluIHRoZSBwcm9vZiBjb250ZXh0IHByb2R1Y2VzIGEgdW5pcXVlXQEgYWxpYXMsIHNvIGEgcGVyc29uIGNhbiBoYXZlIHVwIHRvIGBMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2RgIGVudHJpZXMgcGVyIHBlcmlvZC41ASBPbGQgcGVyaW9kcyBjYW4gYmUgY2xlYW5lZCB1cCB2aWEgYGNsZWFyX2V4cGlyZWRfbG9uZ190ZXJtX3N0b3JhZ2VfYWxpYXNlc2AuAEEBIFRoZSBwZXJpb2Qga2V5IGlzIGBCaWdFbmRpYW5VMzJgIHdpdGggYElkZW50aXR5YCBzbyBpdGVyYXRpb24geWllbGRzIGVudHJpZXMgaW7oIGNocm9ub2xvZ2ljYWwgb3JkZXIsIG1hdGNoaW5nIGBTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZXNgLgA8VXNlcm5hbWVPd25lck9mAAEEAjkFBAQAGHEBIFJldmVyc2UgbG9va3VwIGZyb20gYHVzZXJuYW1lYCB0byB0aGUgYEFjY291bnRJZGAgdGhhdCBoYXMgcmVnaXN0ZXJlZCBpdC4gVGhlIGBvd25lcmAgdmFsdWVlASBzaG91bGQgYmUgYSBrZXkgaW4gdGhlIGBDb25zdW1lcnNgIG1hcC4gVGhlcmUgY2FuIGJlIGF0IG1vc3QgMiB1c2VybmFtZXMgcG9pbnRpbmcgdG8gdGhlOCBzYW1lIGBvd25lcmA6cQEgLSB1c2VybmFtZSBhc3NvY2lhdGVkIHdpdGggYSBjb25zdW1lcidzIGxpdGUgcGVyc29uIGlkZW50aXR5IC0gdGhpcyB3aWxsIGFsd2F5cyBiZSBwcmVzZW50O1kBIC0gb3B0aW9uYWxseSBhbm90aGVyIHVzZXJuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29uc3VtZXIncyBmdWxsIHBlcnNvbiBpZGVudGl0eSwgaWY4ICAgYXBwbGljYWJsZS4AOEFjY291bnRPZkFsaWFzAAEEAggEBAAEaQEgUmV2ZXJzZSBsb29rdXAgZnJvbSByZWdpc3RlcmVkIGFsaWFzZXMgdG8gdGhlIGBBY2NvdW50SWRgIHVzZWQgdG8gcmVnaXN0ZXIgYXMgYSBjb25zdW1lci4AbFVzZXJuYW1lUmVzZXJ2YXRpb25EdXJhdGlvbgEAKCAAAAAAAAAAAAhVASBUaGUgYW1vdW50IG9mIHRpbWUgZm9yIHdoaWNoIGEgdXNlcm5hbWUgcmVzZXJ2YXRpb24gaXMgdmFsaWQsIGluIHNlY29uZHMuIEFmdGVyIHRoaXPQIHRpbWUgcGVyaW9kIGVsYXBzZXMsIHRoZSByZXNlcnZhdGlvbiBjYW4gYmUgdm9pZGVkLgBgVXNlcm5hbWVSZXNlcnZhdGlvblF1ZXVlAAEEAjkFfQwEAAhxASBNYXAgZnJvbSBhIHJlc2VydmVkIGB1c2VybmFtZWAgdG8gYSBxdWV1ZSBvZiBgUmVzZXJ2YXRpb25RdWV1ZUVudHJ5YCBpdGVtcywgZWFjaCBob2xkaW5nIGFuYQEgYWNjb3VudCBhbmQgdGhlIHRpbWVzdGFtcCB3aGVuIGl0IGpvaW5lZC4gT2xkIHJlc2VydmF0aW9ucyBjYW4gYmUgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuADRSZXNlcnZhdGlvbk9mAAEEAgQ5BQQACGUBIFJldmVyc2UgbG9va3VwIGZyb20gYW4gYWNjb3VudCB0byB0aGUgdXNlcm5hbWUgaXQgaGFzIHJlc2VydmVkLiBFYWNoIGFjY291bnQgY2FuIGhhdmUgYXScIG1vc3Qgb25lIGFjdGl2ZSByZXNlcnZhdGlvbiBhdCBhIHRpbWUuAAFBBQABDQgAKERNaW5Vc2VybmFtZUxlbmd0aDgQBgAAAASIIFRoZSBtaW5pbXVtIGxlbmd0aCBvZiBhIHVzZXJuYW1lLgBIUGVyc29uQXV0aER1cmF0aW9uOBAAowIADFUBIFRoZSBkdXJhdGlvbiBvZiB0aW1lLCBpbiBzZWNvbmRzLCBmb3Igd2hpY2ggYSBwZXJzb24ncyBhdXRob3JpemF0aW9uIGlzIHZhbGlkLiBBZnRlclEBIHRoaXMgcGVyaW9kIGVsYXBzZXMsIHBlb3BsZSB3aWxsIG5vIGxvbmdlciBiZSBjb25zaWRlcmVkIGFjdGl2ZSwgYnV0IHRoZWlyIHJlc291cmNlDQEgYWxsb3dhbmNlcyBzaG91bGQgZGVmYXVsdCB0byB0aGUgc2FtZSB2YWx1ZXMgdXNlZCBmb3IgbGl0ZSBwZW9wbGUuAGxNaW5QZXJzb25BdXRoVXBkYXRlSW50ZXJ2YWw4EIBRAQAIVQEgVGhlIG1pbmltdW0gaW50ZXJ2YWwgb2YgdGltZSwgaW4gc2Vjb25kcywgd2hpY2ggbXVzdCBwYXNzIGJlZm9yZSB1cGRhdGluZyBhIHBlcnNvbidzPCBhdXRob3JpemF0aW9uLgBkTWF4UmVzZXJ2YXRpb25RdWV1ZUxlbmd0aDgQCgAAAAQpASBNYXhpbXVtIG51bWJlciBvZiBhY2NvdW50cyB0aGF0IGNhbiBxdWV1ZSBmb3IgYSBzaW5nbGUgcmVzZXJ2ZWQgdXNlcm5hbWUuAFBBY2NvdW50c0FwaUFsbG93YW5jZYkMIAIAAAAA0AcADNAgVGhlIFN0YXRlbWVudCBTdG9yZSBhbGxvd2FuY2UgZm9yIHRoZSBhY2NvdW50cyBBUEkuACkBIENoYW5naW5nIHRoaXMgdmFsdWUgcmVxdWlyZXMgYSBtaWdyYXRpb24gdGhhdCB1cGRhdGVzIHRoZSBleGlzdGluZyBzdGF0ZS4AVE5vdGlmaWNhdGlvbkFsbG93YW5jZYkMIAEAAAAAKAAADB0BIFRoZSBTdGF0ZW1lbnQgU3RvcmUgYWxsb3dhbmNlIGZvciBub3RpZmljYXRpb24gc3RhdGVtZW50IHJlZ2lzdHJhdGlvbi4AKQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSByZXF1aXJlcyBhIG1pZ3JhdGlvbiB0aGF0IHVwZGF0ZXMgdGhlIGV4aXN0aW5nIHN0YXRlLgBoTm90aWZpY2F0aW9uUGVyaW9kRHVyYXRpb244EIBRAQAsBQEgUm9sbGluZyB0aW1lIHdpbmRvdyBmb3IgcmF0ZS1saW1pdGluZyBub3RpZmljYXRpb25zLCBpbiBzZWNvbmRzLgA1ASBUaW1lIGlzIGRpdmlkZWQgaW50byBmaXhlZC1kdXJhdGlvbiBwZXJpb2RzLiBUaGUgcGVyaW9kIGluZGV4IGlzIGNvbXB1dGVkIGFzpCBgbm93X3NlY3MgLyBOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbmAuAGEBIEZvciBleGFtcGxlLCBpZiB0aGlzIGlzIGA4Nl80MDBgICgyNCBob3VycyksIHBlcmlvZCBgMGAgaXMgdGhlIGZpcnN0IDI0IGhvdXJzIHNpbmNlIHRoZRkBIFVuaXggZXBvY2gsIHBlcmlvZCBgMWAgaXMgdGhlIG5leHQgMjQgaG91cnMsIGFuZCBzbyBvbi4gQ29tYmluZWQgd2l0aFkBIGBOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZGAsIHRoaXMgZGVmaW5lcyBob3cgbWFueSBub3RpZmljYXRpb25zIGNhbiBiZSBzZW50IGluIGVhY2ggIHBlcmlvZC4AKQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSByZXF1aXJlcyBhIG1pZ3JhdGlvbiB0aGF0IHVwZGF0ZXMgdGhlIGV4aXN0aW5nIHN0YXRlLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQAQAAAATsIE51bWJlciBvZiBibG9ja3MgYmV0d2VlbiBvZmZjaGFpbi13b3JrZXIgbWFpbnRlbmFuY2UgcnVucy4AdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uOBAAdRIAHAUBIFRoZSBkdXJhdGlvbiBvZiBhIGxvbmctdGVybSBzdG9yYWdlIGNsYWltaW5nIHBlcmlvZCwgaW4gc2Vjb25kcy4ANQEgVGltZSBpcyBkaXZpZGVkIGludG8gZml4ZWQtZHVyYXRpb24gcGVyaW9kcy4gVGhlIHBlcmlvZCBpbmRleCBpcyBjb21wdXRlZCBhcyUBIGBub3dfc2VjcyAvIExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uYC4gRWFjaCBwZXJzb24gY2FuIHN1Ym1pdCB1cCB0b9AgYExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZGAgY2xhaW1zIHBlciBwZXJpb2QuACkBIENoYW5naW5nIHRoaXMgdmFsdWUgcmVxdWlyZXMgYSBtaWdyYXRpb24gdGhhdCB1cGRhdGVzIHRoZSBleGlzdGluZyBzdGF0ZS4AaExvbmdUZXJtU3RvcmFnZUdyYWNlV2luZG93OBAQDgAAHFEBIEV4dHJhIHRpbWUsIGluIHNlY29uZHMsIGR1cmluZyB3aGljaCB0aGUgcHJldmlvdXMgbG9uZy10ZXJtIHN0b3JhZ2UgcGVyaW9kIGlzIHN0aWxsbCBhY2NlcHRlZCBhZnRlciBhIHJvbGxvdmVyLgBdASBFeHRyYSB0aW1lLCBpbiBzZWNvbmRzLCBkdXJpbmcgd2hpY2ggdGhlIHByZXZpb3VzIGxvbmctdGVybSBzdG9yYWdlIHBlcmlvZCBpcyBhY2NlcHRlZEggYWZ0ZXIgYSByb2xsb3Zlci4AKQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSByZXF1aXJlcyBhIG1pZ3JhdGlvbiB0aGF0IHVwZGF0ZXMgdGhlIGV4aXN0aW5nIHN0YXRlLgABjQwABERPZmZjaGFpblNpZ25hdHVyZXkECFEBIFNpZ25hdHVyZSB0eXBlIGZvciBlbnN1cmluZyBvd25lcnNoaXAgb2YgcHJvdmlkZWQgYWNjb3VudHMgaW4gY2FzZSBvZiByZWdpc3RyYXRpb25zPCB0aHJvdWdoIGFsaWFzLjAhEeDfGd6VY7WDAeX34AdDNy0+pos6SqoYqViorNcaQ2RjdXJyZW50X3N0bXRfc3RvcmVfcGVyaW9kADgEUQEgUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIHBlcmlvZCAoZGF5IG51bWJlciBzaW5jZSBVbml4IGVwb2NoKS4AIRHg3xnelWO1gwHl9+AHQ6zIJchDXr2dNbwNtep2DpZsc3RtdF9zdG9yZV9zbG90X2NvbnRleHRfZm9yCBhwZXJpb2Q4DHNlcTgIECEBIFJldHVybnMgdGhlIHByb29mIGNvbnRleHQgZm9yIGEgc3RhdGVtZW50IHN0b3JlIHNsb3QgY2xhaW0gYXQgdGhlIGdpdmVuUCBgcGVyaW9kYCBhbmQgYHNlcWAuAPAgVXNlcyB0aGUgcHJvZHVjdC1vd25lZCBzdGF0ZW1lbnQtc3RvcmUgc2xvdCBjb250ZXh0IGZhbWlseS4AIRHg3xnelWO1gwHl9+AHQ+9aDSqFzv1JxUn959E3szFgbm90aWZpY2F0aW9uX2NvbnRleHRfZm9yCBhwZXJpb2Q4DHNlcQwICB0BIFJldHVybnMgdGhlIHByb29mIGNvbnRleHQgZm9yIGEgbm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbiBhdCB0aGUgZ2l2ZW5QIGBwZXJpb2RgIGFuZCBgc2VxYC4AIRHg3xnelWO1gwHl9+AHQ3LjZl0sw1Jj0iL2zJC2Xqp8Z2V0X3N0bXRfc3RvcmVfc2xvdHNfcGVyX3BlcmlvZAA4BAkBIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgW2BDb25maWc6OlN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kYF0uACER4N8Z3pVjtYMB5ffgB0MEnRrgCrcUoznIi5VaFtmJkGdldF9saXRlX3N0bXRfc3RvcmVfc2xvdHNfcGVyX3BlcmlvZAA4BBkBIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgW2BDb25maWc6OkxpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZGBdLgAhEeDfGd6VY7WDAeX34AdDvlLb5PAdXXmYXbx/2CAa9nBnZXRfc3RtdF9zdG9yZV9jbGVhbnVwX2xpbWl0ADgEAQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6U3RtdFN0b3JlQ2xlYW51cExpbWl0YF0uACER4N8Z3pVjtYMB5ffgB0PaUCIl3qvMqFwv+jqnZpjejGdldF9zdG10X3N0b3JlX3JlcGxhY2VtZW50X2Nvb2xkb3duADgEHQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6U3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bmBdLgAhEeDfGd6VY7WDAeX34AdDGtCaczBTnmtunz8Z6M+LPGxnZXRfc3RtdF9zdG9yZV9ncmFjZV93aW5kb3cAOAT8IFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgW2BDb25maWc6OlN0bXRTdG9yZUdyYWNlV2luZG93YF0uACER4N8Z3pVjtYMB5ffgB0OQQo0JvhuttIEy1y/JGcl6hGdldF9ub3RpZmljYXRpb25fc2xvdHNfcGVyX3BlcmlvZAAMBBUBIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgW2BDb25maWc6Ok5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kYF0uACER4N8Z3pVjtYMB5ffgB0MvpbPJ7TkbcZSGWzKiYpfVmGdldF9saXRlX25vdGlmaWNhdGlvbl9zbG90c19wZXJfcGVyaW9kAAwEJQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6TGl0ZU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kYF0uACER4N8Z3pVjtYMB5ffgB0O8ZWNRIDhUXjIRnMMoiYoznGdldF9sb25nX3Rlcm1fc3RvcmFnZV9jbGFpbXNfcGVyX3BlcmlvZAAMBCUBIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgW2BDb25maWc6OkxvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZGBdLgAhEeDfGd6VY7WDAeX34AdDNxIrYTXFKCwUCBTGuH9cEYxnZXRfbG9uZ190ZXJtX3N0b3JhZ2VfY2xlYW51cF9saW1pdAA4BBkBIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgW2BDb25maWc6OkxvbmdUZXJtU3RvcmFnZUNsZWFudXBMaW1pdGBdLgA/AAA0Q2h1bmtzTWFuYWdlcgE0Q2h1bmtzTWFuYWdlcggYQ2h1bmtzAAEIBQWRDJUMBAAEGQEgUGFnaW5hdGVkIGNvbGxlY3Rpb24gb2YgY2h1bmtzIChSaW5nRXhwb25lbnQgLT4gUGFnZUluZGV4IC0+IENodW5rcykuADxDaHVua1BhZ2VIYXNoZXMAAQgFBZEMCAQABIggVGhlIGhhc2ggZm9yIGVhY2ggcGFnZSBvZiBjaHVua3MuAAFNBQABEQgABCBQYWdlU2l6ZTgQ/wAAAATMIE51bWJlciBvZiBjaHVua3MgcGVyIHBhZ2UuIE11c3QgYmUgYSBwb3dlciBvZiB0d28uAAGlDAAEFENodW5rnQwEcCBUaGUgdHlwZSBvZiBhIHNpbmdsZSBjaHVuay4AQAAAHE1lbWJlcnMBHE1lbWJlcnNELENvbGxlY3Rpb25zAAEEBgipDAQABOAgSW5mb3JtYXRpb24gYWJvdXQgZWFjaCBjb2xsZWN0aW9uLCBrZXllZCBieSBpZGVudGlmaWVyLgBQU3VzcGVuZGVkQ29sbGVjdGlvbnMAAQQGCKkMBAAIIQEgQ29sbGVjdGlvbnMgdGhhdCBoYXZlIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbiBhbmQgYXJlIGJlaW5nIHByb2Nlc3NlZC5ZASBPbmNlIGEgY29sbGVjdGlvbiBpcyBtb3ZlZCBoZXJlLCBub3JtYWwgb3BlcmF0aW9ucyB3aWxsIGZhaWwgd2l0aCBDb2xsZWN0aW9uTm90Rm91bmQuADRJZGVudGlmaWVyc09mAAEEAq0MtQwEAATMIFRoZSBpZGVudGlmaWVycyBvZiBjb2xsZWN0aW9ucyBvd25lZCBieSBhbiBlbnRpdHkuABBSb290AAEIBgK5DL0MBAAEiCBUaGUgY3VycmVudCBtZW1iZXJzIHdlIHJlY29nbmlzZS4AIE9sZFJvb3RzAAEMBgYGxQzJDAQAJEEBIE9sZCByaW5nIHJvb3RzIGFyZSByZXRhaW5lZCBmb3IgYSBncmFjZSBwZXJpb2Qgc28gdGhhdCBwcm9vZnMgZ2VuZXJhdGVkIGFnYWluc3RlASBwcmV2aW91cyByZXZpc2lvbnMgcmVtYWluIHZhbGlkLiBFYWNoIHJvb3QgaW4gdGhlIG1hcCBpcyBpZGVudGlmaWVkIGJ5IHRoZSBjb21wb3NpdGUga2V5LQEgYChjb2xsZWN0aW9uLCByaW5nIGluZGV4LCByaW5nIHJldmlzaW9uKWAuIEVudHJpZXMgY2FuIGJlIGNsZWFuZWQgdXAgYWZ0ZXIlASBgT2xkUm9vdFJldGVudGlvbkR1cmF0aW9uYCBoYXMgcGFzc2VkIHNpbmNlIHRoZSBgYXJjaGl2ZWRfYXRgIHRpbWVzdGFtcC4AOQEgVGhpcyBzdG9yYWdlIGNhbiBjb250YWluIHNvbWUgcm9vdHMgZm9yIGRlbGV0ZWQgY29sbGVjdGlvbnMgb3IgcmVtb3ZlZCByaW5ncy5BASBUaGUgY2FsbCBgdmVyaWZ5X21lbWJlcnNoaXBgIGFuZCBvdGhlciBvcGVyYXRpb24gdXNpbmcgb2xkIHJvb3RzIG11c3QgY2hlY2sgdGhlQQEgZXhpc3RlbmNlIG9mIHRoZSBjb2xsZWN0aW9uIGFuZCB0aGUgcm9vdCBpbiBvcmRlciB0byBub3QgdmFsaWRhdGUgYWdhaW5zdCBkdXN0LvAgVGhlIG9sZCByb290cyB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgdGhlIHJldGVudGlvbiBkdXJhdGlvbi4AQEN1cnJlbnRSaW5nSW5kZXgBAQQGCDgQAAAAAATkIEtlZXBzIHRyYWNrIG9mIHRoZSByaW5nIGluZGV4IGN1cnJlbnRseSBiZWluZyBwb3B1bGF0ZWQuADhPbmJvYXJkaW5nU2l6ZQEBBAYIOBAAAAAABPggTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyBxdWV1ZWQgYmVmb3JlIG9uYm9hcmRpbmcgdG8gYSByaW5nLgAgUmluZ0tleXMBAQwGAgXNDNEMBAAQYQEgQm90aCB0aGUga2V5cyB0aGF0IGFyZSBpbmNsdWRlZCBpbiBidWlsdCByaW5ncyBhbmQgdGhlIGtleXMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gZnV0dXJlWQEgcmluZ3MuIFBhZ2luYXRlZCBieSAoSWRlbnRpZmllciwgUmluZ0luZGV4LCBQYWdlSW5kZXgpIHdoZXJlIGVhY2ggcGFnZSBjb250YWlucyB1cCB0b3UBIGBSaW5nQ2FwYWNpdHlGcm9tRXhwb25lbnRgIGtleXMuIFRoZSBwYWdlIHNpemUgZXF1YWxzIHRoZSBmbGV4aWJsZSByaW5nIGV4cG9uZW50J3MgY2FwYWNpdHks9CBlbnN1cmluZyBGbGV4aWJsZSBjb2xsZWN0aW9ucyBuZXZlciBuZWVkIG1vcmUgdGhhbiBvbmUgcGFnZS4AOFJpbmdLZXlzU3RhdHVzAQEIBgK5DNUMJAAAAAAAAAAAAAhhASBTdG9yZXMgdGhlIG1ldGEgaW5mb3JtYXRpb24gZm9yIGVhY2ggcmluZywgdGhlIG51bWJlciBvZiBrZXlzIGFuZCBob3cgbWFueSBhcmUgYWN0dWFsbHlYIGluY2x1ZGVkIGluIHRoZSByb290LgBIUGVuZGluZ1N1c3BlbnNpb25zAQEIBgW5DNkMBAAMaQEgQSBtYXAgb2YgYWxsIHJpbmdzIHdoaWNoIGN1cnJlbnRseSBoYXZlIHBlbmRpbmcgc3VzcGVuc2lvbnMgYW5kIG5lZWQgY2xlYW5pbmcsIGFsb25nIHdpdGgRASB0aGVpciByZXNwZWN0aXZlIG51bWJlciBvZiBzdXNwZW5kZWQga2V5cyB3aGljaCBuZWVkIHRvIGJlIHJlbW92ZWQubQEgTm90ZTogQ3VycmVudGx5IG9ubHkgc3VwcG9ydHMgc2luZ2xlLXBhZ2UgcmluZ3MsIHNvIGJvdW5kZWQgYnkgYFJpbmdDYXBhY2l0eUZyb21FeHBvbmVudGAuADRBY3RpdmVNZW1iZXJzAQEEBgg4EAAAAAAE0CBUaGUgbnVtYmVyIG9mIG1lbWJlcnMgY3VycmVudGx5IGluY2x1ZGVkIGluIGEgcmluZy4AHE1lbWJlcnMAAQgGAt0M4QwEABhdASBUaGUgY3VycmVudCBtZW1iZXJzIGluIGVhY2ggY29sbGVjdGlvbiAoZWl0aGVyIGluY2x1ZGVkIGluIHJpbmdzLCBzdXNwZW5kZWQgYW5kIHF1ZXVlZCEBIGZvciByZW1vdmFsIGZyb20gYSByaW5nLCBzdXNwZW5kZWQgYW5kIG5vdCBpbiBhbnkgcmluZywgb3Igb25ib2FyZGluZykuAA0BIENvbGxlY3Rpb24gaWRlbnRpZmllciB0byBtZW1iZXIgcHVibGljIGtleSB0byB0aGUgbWVtYmVyJ3Mgc3RhdHVzLgCoIEEga2V5IGNhbiBiZWxvbmcgdG8gbXVsdGlwbGUgY29sbGVjdGlvbnMuAChSaW5nc1N0YXRlAQEEBgjlDAQABPwgVGhlIGN1cnJlbnQgc3RhdGUgb2YgYWxsIHJpbmdzIG1hbmFnZWQgZm9yIGEgZ2l2ZW4gaWRlbnRpZmllci4AKFN0YWxlUmluZ3MAAQgGBbkMEAQABMwgU2V0IG9mIHJpbmdzIHdoaWNoIGFyZSBzdGFsZSBhbmQgcmVxdWlyZSBidWlsZGluZy4AQFF1ZXVlUGFnZUluZGljZXMBAQQGCE0IIAAAAAAAAAAABDkBIEtlZXBzIHRyYWNrIG9mIHRoZSBwYWdlIGluZGljZXMgb2YgdGhlIGhlYWQgYW5kIHRhaWwgb2YgdGhlIG9uYm9hcmRpbmcgcXVldWUuADxPbmJvYXJkaW5nUXVldWUBAQgGBbkM7QwEAAQtASBQYWdpbmF0ZWQgY29sbGVjdGlvbiBvZiBtZW1iZXIgcHVibGljIGtleXMgcmVhZHkgdG8gYmUgaW5jbHVkZWQgaW4gYSByaW5nLgBEUmluZ0RlbGV0aW9uUXVldWUAAQwGBQXNDBAEABSYIFF1ZXVlIG9mIHJpbmcgcGFnZXMgcGVuZGluZyBkZWxldGlvbi4AFQEgVGhpcyBpcyB1c2VkIGJvdGggYnkgYHJlbW92ZV9yaW5nYCAoaW5kaXZpZHVhbCByaW5nIGRlbGV0aW9uKSBhbmQgYnkZASBjb2xsZWN0aW9uIGRlbGV0aW9uLiBSaW5nIHBhZ2VzIGFyZSBwcm9jZXNzZWQgZnJvbSB0aGlzIHF1ZXVlIHZpYSBPQ1esIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggb3BlcmF0aW9uIHF1ZXVlZCB0aGVtLgABXQUAARUIABg4TWF4Q29sbGVjdGlvbnM4EGQAAAAExCBNYXhpbXVtIG51bWJlciBvZiBjb2xsZWN0aW9ucyBhbiBvd25lciBjYW4gaGF2ZS4AXE9uYm9hcmRpbmdRdWV1ZVBhZ2VTaXplOBD/AAAACE0BIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgaW5jbHVkZWQgaW4gYW4gb25ib2FyZGluZyBxdWV1ZSBwYWdlIGJlZm9yZSBhIG5ldyBvbmUgaXMkIGNyZWF0ZWQuAFxNYXhGbGV4aWJsZVJpbmdFeHBvbmVudFEFBAkMXQEgVGhlIG1heGltdW0gcmluZyBleHBvbmVudCB1c2VkIGZvciBGbGV4aWJsZSBjb2xsZWN0aW9ucy4gVGhpcyBhbHNvIGRldGVybWluZXMgdGhlIHBhZ2VVASBzaXplIGZvciBwYWdpbmF0ZWQgcmluZyBrZXkgc3RvcmFnZS4gRmxleGlibGUgY29sbGVjdGlvbnMgY2FuIG9ubHkgdXNlIHJpbmcgc2l6ZXMgdXA8IHRvIHRoaXMgdmFsdWUuAFxSaW5nQnVpbGRpbmdNZW1iZXJMaW1pdDgQZAAAAAhhASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgY2FuIGJlIGluY2x1ZGVkIGluIGEgcmluZyB0aHJvdWdoIGEgc2luZ2xlIHJvb3QgYnVpbGRpbmcYIGNhbGwuAGBPbGRSb290UmV0ZW50aW9uRHVyYXRpb24oIFgCAAAAAAAACFEBIER1cmF0aW9uIGluIHNlY29uZHMgdGhhdCBvbGQgcmluZyByb290cyBhcmUgcmV0YWluZWQgYmVmb3JlIHRoZXkgY2FuIGJlIGNsZWFuZWQgdXAuSQEgVGhpcyBhbGxvd3MgcHJvb2ZzIGdlbmVyYXRlZCB3aXRoIG9sZGVyIHJvb3RzIHRvIHJlbWFpbiB2YWxpZCBmb3IgYSBncmFjZSBwZXJpb2QuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABOQgVGhlIG51bWJlciBvZiBibG9ja3MgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgZXhlY3V0aW9ucy4AAfEMAAQgTG9jYXRpb25xAQQ5ASBMb2NhdGlvbiB0eXBlIGZvciBpZGVudGlmeWluZyBjb2xsZWN0aW9uIG93bmVycyBmcm9tIG90aGVyIGNoYWlucy9wYXJhY2hhaW5zLgBDAAAcQ29pbmFnZQEcQ29pbmFnZUwwQ29pbnNCeU93bmVyAAEEAgQRBAQADBkBIEFsbCB0aGUgY29pbnMgaW4gYWxsIGluc3RhbmNlcyBjdXJyZW50bHkgY2lyY3VsYXRpbmcsIGtleWVkIGJ5IG93bmVyLgBRASBBIGNvaW4gaXMgbWludGVkIHdoZW4gdW5sb2FkZWQgZnJvbSBhIHJlY3ljbGVyLCBhbmQgZGVzdHJveWVkIHdoZW4gbG9hZGVkIGludG8gb25lLgAsTG9ja2VkQ29pbnMAAQQCBPUMBAAQRQEgVGVtcG9yYXJ5IGxvY2sgZXhwaXJ5IGZvciBjb2lucyB0aGF0IHByZXZpb3VzbHkgZmFpbGVkIGRpc3BhdGNoLCBrZXllZCBieSBvd25lci4AYQEgQW4gZW50cnkgaXMgbG9ja2VkIHVudGlsIHRoZSBzdG9yZWQgVW5peCB0aW1lc3RhbXAsIHByZXZlbnRpbmcgcmVwZWF0ZWQgZmFpbGVkIGRpc3BhdGNocCBhdHRlbXB0cyBpbiBhIHNob3J0IHBlcmlvZC4AaFRvdGFsVmFsdWVPZkRlc3Ryb3llZENvaW5zAQEEBThFAUAAAAAAAAAAAAAAAAAAAAAAFPQgVGhlIHRvdGFsIHZhbHVlIG9mIGNvaW5zIHRoYXQgd2VyZSBidXJudCwga2V5ZWQgYnkgaW5zdGFuY2UuAGkBIFRoaXMgdHJhY2tzIHZhbHVlIHRoYXQgaXMgaW50ZW50aW9uYWxseSBkZXN0cm95ZWQgYXMgcGFydCBvZiBwcm90b2NvbCBmbG93cyAoZm9yIGV4YW1wbGU6ZQEgcmVjeWNsZXIgZXhwaXJhdGlvbiBjbGVhbnVwIGFuZCBmZWUgcmVtYWluZGVyIGJ1cm5pbmcpLiBUaGlzIHN0b3JhZ2UgaXRlbSBrZWVwcyB0cmFjayBvZqQgdGhlIHRvdGFsIHZhbHVlIG9mIHN1Y2ggZGVzdHJveWVkIGNvaW5zLgBgQ29uc3VtZWRGcmVlVW5sb2FkVG9rZW5zAAEIBQUlCxAEABjEIENvbnN1bWVkIGZyZWUgdW5sb2FkIHRva2VucyBieSBwZXJpb2QgYW5kIGFsaWFzLgBVASBUaGlzIHN0b3JhZ2Uga2VlcHMgdHJhY2sgb2YgdGhlIGZyZWUgdW5sb2FkIHRva2VucyB0aGF0IGhhdmUgYmVlbiBjb25zdW1lZCBieSBwZW9wbGWsIGFuZCBsaXRlIHBlb3BsZSwgdG8gYXZvaWQgZG91YmxlIHNwZW5kaW5nLgBwIEl0IGlzIGNsZWFyZWQgcGVyaW9kaWNhbGx5LgBkUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZAABCAUF/QwQBABUTQEgVHJhY2tzIHdoZXRoZXIgYSByZWN5Y2xlciBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBnaXZlbiBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uLgBtASBbYFBhbGxldDo6Y3JlYXRlX3N1ZmZpY2llbnRfaW5zdGFuY2VgXSBjcmVhdGVzIG9uZSByZWN5Y2xlciBjb2xsZWN0aW9uIHBlciBkZW5vbWluYXRpb24gaW6YIGBbTWluaW11bUV4cG9uZW50LCBNYXhpbXVtRXhwb25lbnRdYC4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkkBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGFuIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24uWQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24ubQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uMCAgIGl0IGlzIGluLm0BICogW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIC0gcGVyLWFsaWFzIGxvY2svdW5sb2FkZWQgc3RhdGUsIGluZGV4ZWQgYnkgaW5zdGFuY2UsIGRlbm9taW5hdGlvbkggICBhbmQgcmluZyBpbmRleC5BASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggZGVmZXJyZWQgcmVjeWNsZXIgZHVzdCBwZW5kaW5nIHJlbW92YWwubQEgKiBbUmVjeWNsZXJzQXJjaGl2ZXNdIC0gYXJjaGl2YWwgY29tbWl0bWVudHMgZm9yIGNsZWFuZWQgcmluZ3MgdGhhdCBzdGlsbCBob2xkIHJlY292ZXJhYmxlJCAgIGNvaW5zLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AdFJlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4AAEIBQX9DDgEAFQBASBMYXN0IHJlbW92ZWQgcmluZyBpbmRleCBwZXIgaW5zdGFuY2UgYW5kIHJlY3ljbGVyIGRlbm9taW5hdGlvbi4ARQEgUmluZ3MgYXJlIHJlbW92ZWQgc2VxdWVudGlhbGx5IHN0YXJ0aW5nIGZyb20gaW5kZXggMC4gVGhlIG5leHQgcmluZyB0byBjaGVjayBmb3ItASBleHBpcmF0aW9uIGlzIGBsYXN0X3JlbW92ZWQgKyAxYCAob3IgYDBgIGlmIG5vdGhpbmcgaGFzIGJlZW4gcmVtb3ZlZCB5ZXQpLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6SQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYW4gaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5ZASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5tASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24wICAgaXQgaXMgaW4ubQEgKiBbUmVjeWNsZXJBbGlhc1N0YXRlc10gLSBwZXItYWxpYXMgbG9jay91bmxvYWRlZCBzdGF0ZSwgaW5kZXhlZCBieSBpbnN0YW5jZSwgZGVub21pbmF0aW9uSCAgIGFuZCByaW5nIGluZGV4LkEBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCBkZWZlcnJlZCByZWN5Y2xlciBkdXN0IHBlbmRpbmcgcmVtb3ZhbC5tASAqIFtSZWN5Y2xlcnNBcmNoaXZlc10gLSBhcmNoaXZhbCBjb21taXRtZW50cyBmb3IgY2xlYW5lZCByaW5ncyB0aGF0IHN0aWxsIGhvbGQgcmVjb3ZlcmFibGUkICAgY29pbnMuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBcUmVjeWNsZXJzQ29pblRvUmVjeWNsZXIAAQQCCP0MBABUTQEgTWFwcGluZyBmcm9tIGEgcmVjeWNsZXIgbWVtYmVyIGtleSB0byB0aGUgaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbiBpdCBiZWxvbmdzIHRvLgBNASBXaGVuIGEgY29pbiBpcyBsb2FkZWQgaW50byBhIHJlY3ljbGVyLCB0aGUgbWVtYmVyIGtleSBpcyByZWNvcmRlZCBoZXJlIHNvIHRoYXQgdGhlSQEgcGFsbGV0IGNhbiBsb29rIHVwIHdoaWNoIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24gdGhlIG1lbWJlciBrZXkgY29ycmVzcG9uZHMgdG8uAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpJASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhbiBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLlkBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLm0BICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbjAgICBpdCBpcyBpbi5tASAqIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSAtIHBlci1hbGlhcyBsb2NrL3VubG9hZGVkIHN0YXRlLCBpbmRleGVkIGJ5IGluc3RhbmNlLCBkZW5vbWluYXRpb25IICAgYW5kIHJpbmcgaW5kZXguQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAExSZWN5Y2xlckFsaWFzU3RhdGVzAAEQBQUFBQENBQ0EAFRVASBTdGF0ZSBvZiByZWN5Y2xlciBhbGlhc2VzLCBpbmRleGVkIGJ5IGAoaW5zdGFuY2UsIGRlbm9taW5hdGlvbiwgcmluZyBpbmRleCwgYWxpYXMpYC4AVQEgRWFjaCBlbnRyeSByZWNvcmRzIGVpdGhlciBhIHRlbXBvcmFyeSBmYWlsZWQtZGlzcGF0Y2ggbG9jayBvciBhIHBlcm1hbmVudGx5IGNvbnN1bWVk6CBhbGlhcy4gQWJzZW5jZSBmcm9tIHRoZSBtYXAgbWVhbnMgdGhlIGFsaWFzIGlzIGF2YWlsYWJsZS4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkkBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGFuIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24uWQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24ubQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uMCAgIGl0IGlzIGluLm0BICogW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIC0gcGVyLWFsaWFzIGxvY2svdW5sb2FkZWQgc3RhdGUsIGluZGV4ZWQgYnkgaW5zdGFuY2UsIGRlbm9taW5hdGlvbkggICBhbmQgcmluZyBpbmRleC5BASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggZGVmZXJyZWQgcmVjeWNsZXIgZHVzdCBwZW5kaW5nIHJlbW92YWwubQEgKiBbUmVjeWNsZXJzQXJjaGl2ZXNdIC0gYXJjaGl2YWwgY29tbWl0bWVudHMgZm9yIGNsZWFuZWQgcmluZ3MgdGhhdCBzdGlsbCBob2xkIHJlY292ZXJhYmxlJCAgIGNvaW5zLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AQFJlY3ljbGVyc0R1c3RpbmcAAQQFCQ0QBABcHQEgTWFya3MgcmVjeWNsZXIgcmluZ3MgdGhhdCBoYXZlIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLgA1ASBXaGVuIGEgcmVjeWNsZXIgcmluZyBpcyByZW1vdmVkLCB0aGUgY2xlYW51cCBvZiBpdHMgbGVmdG92ZXIgYWxpYXMgc3RhdGVzIGluWQEgW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIGlzIHBlcmZvcm1lZCBncmFkdWFsbHkgdGhyb3VnaCB0aGlzIHN0b3JhZ2UgaXRlbS4gQW4gZW50cnkgaGVyZWUBIGluZGljYXRlcyB0aGF0IGVudHJpZXMgaW4gW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIGZvciB0aGUgZ2l2ZW4gaW5zdGFuY2UsIGRlbm9taW5hdGlvbiBhbmS0IHJpbmcgaW5kZXggc3RpbGwgZXhpc3QgYW5kIHNob3VsZCBiZSBkdXN0ZWQuAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpJASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhbiBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLlkBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLm0BICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbjAgICBpdCBpcyBpbi5tASAqIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSAtIHBlci1hbGlhcyBsb2NrL3VubG9hZGVkIHN0YXRlLCBpbmRleGVkIGJ5IGluc3RhbmNlLCBkZW5vbWluYXRpb25IICAgYW5kIHJpbmcgaW5kZXguQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAERSZWN5Y2xlcnNBcmNoaXZlcwABBAUJDQ0NBAB4TQEgQXJjaGl2YWwgY29tbWl0bWVudHMgZm9yIGNsZWFuZWQgcmVjeWNsZXIgcmluZ3MgdGhhdCBzdGlsbCBob2xkIHJlY292ZXJhYmxlIGNvaW5zLgBpASBXaGVuIGEgcmVjeWNsZXIgcmluZyBpcyBjbGVhbmVkIChzZWUgW2BSZWN5Y2xlck1hbmFnZXI6OmNsZWFuX3VuY2hlY2tlZGBdKSB3aGlsZSBpdCBzdGlsbF0BIGhhcyBhdCBsZWFzdCBvbmUgbm90LXVubG9hZGVkIGFsaWFzLCBhbiBbYEFyY2hpdmVkUmVjeWNsZXJgXSBpcyByZWNvcmRlZCBoZXJlIGtleWVkIGJ5XQEgYChpbnN0YW5jZSwgZGVub21pbmF0aW9uLCByaW5nIGluZGV4KWAuIEl0IGNvbW1pdHMgdG8gdGhlIHRyaWUgb2YgdW5sb2FkZWQgYWxpYXNlcyBhbmQFASB0aGUgcmVjeWNsZXIgcm9vdC4gTm90LXVubG9hZGVkIGNvaW5zIGNhbiBzdGlsbCBiZSB1bmxvYWRlZCB3aXRoZQEgW2BQYWxsZXQ6OnVubG9hZF9hcmNoaXZlZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0YF0sIHdoaWNoIHVwZGF0ZXMgdGhlIGFyY2hpdmUuIFRoZdggYXJjaGl2ZSBpcyByZW1vdmVkIG9uY2UgYWxsIGNvaW5zIGhhdmUgYmVlbiB1bmxvYWRlZC4AYQEgT25seSB0aGUgY29tbWl0bWVudHMgYXJlIHN0b3JlZCBvbi1jaGFpbi4gVGhlIHVubG9hZGVkLWFsaWFzZXMgdHJpZSBhbmQgdGhlIHJpbmcgY2FuIGJlIQEgcmVjb25zdHJ1Y3RlZCBvZmZjaGFpbiB0byBidWlsZCB0aGUgcmVjb3ZlcnkgcHJvb2ZzIGJ5IGxpc3RlbmluZyB0byB0aGUJASBbYEV2ZW50OjpSZWN5Y2xlckFsaWFzVW5sb2FkZWRgXSwgW2BFdmVudDo6UmVjeWNsZXJBcmNoaXZlZGBdIGFuZPQgW2BFdmVudDo6QXJjaGl2ZWRSZWN5Y2xlclVubG9hZGVkSW50b0V4dGVybmFsQXNzZXRgXSBldmVudHMuAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpJASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhbiBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLlkBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLm0BICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbjAgICBpdCBpcyBpbi5tASAqIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSAtIHBlci1hbGlhcyBsb2NrL3VubG9hZGVkIHN0YXRlLCBpbmRleGVkIGJ5IGluc3RhbmNlLCBkZW5vbWluYXRpb25IICAgYW5kIHJpbmcgaW5kZXguQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFhQYWlkVW5sb2FkVG9rZW5NZW1iZXJzAAEEAggQBAA4CQEgTWFwcGluZyBmcm9tIGEgcGFpZCB0b2tlbiBtZW1iZXIga2V5IHRvIHRoZSBwZXJpb2QgaXQgYmVsb25ncyB0by4ARQEgV2hlbiBhIHVzZXIgcGF5cyBmb3IgYSByZWN5Y2xlciB1bmxvYWQgdG9rZW4sIHRoZSBtZW1iZXIga2V5IGlzIHJlY29yZGVkIGhlcmUgc28hASB0aGF0IHRoZSBwYWxsZXQgY2FuIGxvb2sgdXAgd2hpY2ggcGVyaW9kIHRoZSBtZW1iZXIga2V5IGNvcnJlc3BvbmRzIHRvLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBcUGFpZFVubG9hZFRva2VuQ29uc3VtZWQAAQwGBQV1DBAEADj0IENvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VucyBieSBwZXJpb2QsIHJpbmcgaW5kZXggYW5kIGFsaWFzLgBJASBXaGVuIGEgcGFpZCB1bmxvYWQgdG9rZW4gaXMgY29uc3VtZWQsIHRoZSBhbGlhcyBwcm9kdWNlZCBieSB0aGUgcmluZy1WUkYgcHJvb2YgaXP0IHN0b3JlZCBoZXJlIHRvIHByZXZlbnQgZG91YmxlLXNwZW5kaW5nIHdpdGhpbiB0aGUgc2FtZSByaW5nLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBsUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkAAEEBmkMEAQAOAkBIFRyYWNrcyB3aGV0aGVyIGEgcGFpZCB0b2tlbiBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBnaXZlbiBwZXJpb2QuAFUBIFVzZXMgYElkZW50aXR5YCBoYXNoZXIgc28gdGhhdCBpdGVyYXRpb24geWllbGRzIHBlcmlvZHMgaW4gb3JkZXIsIGVuYWJsaW5nIGVmZmljaWVudHAgY2xlYW51cCBvZiBleHBpcmVkIHBlcmlvZHMuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFhQYWlkVW5sb2FkVG9rZW5EdXN0aW5nAAEEBmkMEAQAQC0BIE1hcmtzIHBhaWQgdW5sb2FkIHRva2VuIHBlcmlvZHMgdGhhdCBoYXZlIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAFkBIFdoZW4gYSBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9uIGlzIHJlbW92ZWQsIHRoZSBjbGVhbnVwIG9mIGl0cyBjb25zdW1lZCB0b2tlbnMgaW5VASBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIGlzIHBlcmZvcm1lZCBncmFkdWFsbHkgdGhyb3VnaCB0aGlzIHN0b3JhZ2UgaXRlbS4gQW4gZW50cnlNASBoZXJlIGluZGljYXRlcyB0aGF0IGNvbnN1bWVkIHRva2VucyBmb3IgdGhlIGdpdmVuIHBlcmlvZCBzdGlsbCBleGlzdCBhbmQgc2hvdWxkIGJlICBkdXN0ZWQuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAHhQYWlkVW5sb2FkVG9rZW5OZXh0UmluZ1RvQ2xlYW4AAQQGaQw4BABg9CBUcmFja3MgdGhlIG5leHQgcmluZyBpbmRleCB0byBjbGVhbiBmb3IgZWFjaCBleHBpcmVkIHBlcmlvZC4ANQEgVXNlZCBieSB0aGUgT0NXIHRvIGRldGVybWluZSBjbGVhbnVwIHByb2dyZXNzIGFuZCBieSB0aGUgY29sbGVjdGlvbiBkZWxldGlvbsQgZXh0cmluc2ljIHRvIHZlcmlmeSBhbGwgcmluZ3MgaGF2ZSBiZWVuIGNsZWFuZWQuAD0BIFJpbmdzIGFyZSBjbGVhbmVkIHNlcXVlbnRpYWxseSAob25lIHBlciBPQ1cgaW50ZXJ2YWwpIHJhdGhlciB0aGFuIGFsbCBhdCBvbmNlLj0BIFRoaXMgaXMgaW50ZW50aW9uYWw6IGEgc2luZ2xlIHN0b3JhZ2UgY3Vyc29yIGVuYWJsZXMgTygxKSBjb21wbGV0aW9uIGNoZWNrcyBpbswgYm90aCBbYFBhaWRUa25NYW5hZ2VyOjplbnN1cmVfY2FuX2NsZWFuX3JpbmdgXSBhbmRFASBbYFBhaWRUa25NYW5hZ2VyOjplbnN1cmVfY2FuX2RlbGV0ZV9jb2xsZWN0aW9uYF0uIFRoZSBhbHRlcm5hdGl2ZSDigJQgc3VibWl0dGluZ1UBIGFsbCByaW5nIGNsZWFucyBpbiBwYXJhbGxlbCDigJQgd291bGQgcmVxdWlyZSBmZXRjaGluZyByaW5nIG1lbWJlcnMgdG8gY2hlY2sgd2hldGhlck0BIGVhY2ggcmluZyB3YXMgYWxyZWFkeSBjbGVhbmVkIChzaW5jZSBgcmluZ19zdGF0dXNgIHN0aWxsIHJlcG9ydHMgYHRvdGFsID4gMGAgYWZ0ZXJVASBjbGVhbnVwIGJlY2F1c2UgcmluZ3MgYXJlIG5vdCByZW1vdmVkIHVudGlsIGNvbGxlY3Rpb24gZGVsZXRpb24pLiBDbGVhbnVwIG9mIGV4cGlyZWRNASBjb2xsZWN0aW9ucyBpcyBub3QgdGltZS1jcml0aWNhbCwgc28gdGhlIHNpbXBsZXIgc2VxdWVudGlhbCBhcHByb2FjaCBpcyBwcmVmZXJyZWQuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4dASAqIFtQYWlkVW5sb2FkVG9rZW5OZXh0UmluZ1RvQ2xlYW5dIC0gc2VxdWVudGlhbCByaW5nIGNsZWFudXAgcHJvZ3Jlc3MuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgAkSW5zdGFuY2VzAAEEBTgRDQQAEMAgVGhlIGNvaW5hZ2UgaW5zdGFuY2VzLCBrZXllZCBieSBbYEluc3RhbmNlSWRgXS4AcQEgQ3JlYXRlZCBieSBbYFBhbGxldDo6Y3JlYXRlX3N1ZmZpY2llbnRfaW5zdGFuY2VgXS4gRW50cmllcyBhcmUgbmV2ZXIgcmVtb3ZlZDogdGhlIGNvaW5zIGFuZOwgcmVjeWNsZXJzIG9mIGFuIGluc3RhbmNlIGNhbiBvdXRsaXZlIGFueSBzaW5nbGUgb3BlcmF0aW9uLgA4TmV4dEluc3RhbmNlSWQBADgQAAAAAAQ9ASBUaGUgW2BJbnN0YW5jZUlkYF0gdGhhdCBbYFBhbGxldDo6Y3JlYXRlX3N1ZmZpY2llbnRfaW5zdGFuY2VgXSBhbGxvY2F0ZXMgbmV4dC4APEFzc2V0VG9JbnN0YW5jZQABCAIFKQ0QBAAQQQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBhbiB1bmRlcmx5aW5nIGFzc2V0IHRvIHRoZSBpbnN0YW5jZXMgd3JhcHBpbmcgaXQsIGFzIGEgc2V0LgD0IEFuIGFzc2V0IG1heSBiZSB3cmFwcGVkIGJ5IG11bHRpcGxlIGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudIQgW2BJbnN0YW5jZVJlY29yZDo6YXNzZXRfdW5pdGBdcy4AQFBvdENvbnRyaWJ1dGlvbnMBAQwFAgItDUUBQAAAAAAAAAAAAAAAAAAAAAAEOQEgV2hhdCBlYWNoIGZ1bmRlciBoYXMgcHV0IGludG8gYW4gaW5zdGFuY2UncyBwb3QgdGhyb3VnaCBbYFBhbGxldDo6ZnVuZF9wb3RgXS4AAWUFAAEZCAA8UFJlY3ljbGVyUmluZ0V4cG9uZW50UQUECgywIFRoZSByaW5nIGV4cG9uZW50IGZvciByZWN5Y2xlciBjb2xsZWN0aW9ucy4APQEgTk9URTogQ2hhbmdpbmcgdGhpcyB2YWx1ZSBvbiBhIGxpdmUgY2hhaW4gcmVxdWlyZXMgc3Vic3RhbnRpYWwgbWlncmF0aW9uIHdvcmsuAGxQYWlkVW5sb2FkVG9rZW5SaW5nRXhwb25lbnRRBQQKBNQgVGhlIHJpbmcgZXhwb25lbnQgZm9yIHBhaWQgdW5sb2FkIHRva2VuIGNvbGxlY3Rpb25zLgA8TWluaW11bUV4cG9uZW50FQQEAASsIFRoZSBtaW5pbXVtIGV4cG9uZW50IGZvciB0aGUgZGVub21pbmF0aW9uLgA8TWF4aW11bUV4cG9uZW50FQQEDgSsIFRoZSBtYXhpbXVtIGV4cG9uZW50IGZvciB0aGUgZGVub21pbmF0aW9uLgCETWluaW11bUV4cG9uZW50Rm9yT3V0cHV0VW5sb2FkRmVlFQQEADBdASBUaGUgbWluaW11bSBjb2luIGV4cG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gZGlzcGF0Y2ggYSBjYWxsIGB1bmxvYWRfcmVjeWNsZXJfKmAgd2l0aNQgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBgQXNVbmxvYWRUb2tlbkZyb21PdXRwdXRgLgBhASBUaGlzIGVuc3VyZXMgdGhlIGZlZSBjb2luIGlzIGxhcmdlIGVub3VnaCB0byBwZW5hbGl6ZSBmYWlsaW5nIHRyYW5zYWN0aW9ucywgYnV0IGl0IGRvZXO4IG5vdCBuZWVkIHRvIGNvdmVyIHRoZSB3aG9sZSB1bmxvYWQgdG9rZW4gZmVlLgBRASBUaGUgZXhwb25lbnQgaXMgZ2xvYmFsLCBzbyB0aGUgY29pbiB2YWx1ZSBpdCByZXByZXNlbnRzIHNjYWxlcyB3aXRoIGVhY2ggaW5zdGFuY2Unc2UBIFtgSW5zdGFuY2VSZWNvcmQ6OmFzc2V0X3VuaXRgXS4gQW4gaW5zdGFuY2Ugd2hvc2UgdW5pdCBpcyB3b3J0aCBsZXNzIHRoZXJlZm9yZSBwZW5hbGl6ZXNsIGZhaWxpbmcgdHJhbnNhY3Rpb25zIGxlc3MuAFEBIFRoZSBoZWxwZXIgZnVuY3Rpb24gYHdlaWdodF9mb3JfdW5sb2FkX3JlY3ljbGVyX3BheWluZ191c2luZ19vdXRwdXRgIGNhbiBiZSB1c2VkIHRvzCBldmFsdWF0ZSB0aGUgd29yc3QtY2FzZSB3ZWlnaHQgZm9yIHRoaXMgb3BlcmF0aW9uLgA8TWF4U3BsaXRPdXRwdXRzOBAgAAAABKwgVGhlIG1heGltdW0gbnVtYmVyIG9mIG91dHB1dHMgZm9yIGEgc3BsaXQuAEBNYXhDb25zb2xpZGF0aW9uOBBAAAAABNwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFsaWFzIHByb29mcyBpbiBhIGNvbnNvbGlkYXRpb24uAEhNYXhCYXRjaFVucGFpZExvYWQ4EAoAAAAIuCBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5uZXIgY2FsbHMgaW4gYSBzaW5nbGUNASBbYENhbGw6OmxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRfYmF0Y2hgXSBkaXNwYXRjaC4AlFVubG9hZFRva2VuVGltZVBlcmlvZFBlb3BsZUxpdGVQZW9wbGU4EIBRAQAE4CBUaGUgdGltZSBwZXJpb2QgZHVyYXRpb24gZm9yIHVubG9hZCB0b2tlbnMsIGluIHNlY29uZHMuAKhVbmxvYWRUb2tlbkFsbG93YW5jZVBlclRpbWVQZXJpb2RGb3JQZW9wbGVFAUAA0O2QLgAAAAAAAAAAAAAAIF0BIFRoZSBhbGxvd2FuY2Ugb2YgdW5sb2FkIHRva2VucyB0aGF0IGEgcGVyc29uIGNhbiB1c2UgcGVyIHRpbWUgcGVyaW9kLCBleHByZXNzZWQgaW4gdGhlRCBuYXRpdmUgY3VycmVuY3kuAFkBIFRoZSBhbGxvd2FuY2UgaXMgbmF0aXZlIHJhdGhlciB0aGFuIHBlci1hc3NldCBiZWNhdXNlIHRoZSBidWRnZXQgaXMgc2hhcmVkIGFjcm9zcyBhbGwdASBpbnN0YW5jZXMsIHNvIHRoZXJlIGlzIG5vIHNpbmdsZSB1bmRlcmx5aW5nIGFzc2V0IHRvIGRlbm9taW5hdGUgaXQgaW4uAFUBIFVzZSBwYWxsZXQgdmlldyB0byBmZXRjaCB0aGUgY29ycmVzcG9uZGluZyBudW1iZXIgb2YgdW5sb2FkIHRva2VucyBnaXZlbiB0aGUgY3VycmVudGQgcHJpY2UgZm9yIHVubG9hZCB0b2tlbnMuALhVbmxvYWRUb2tlbkFsbG93YW5jZVBlclRpbWVQZXJpb2RGb3JMaXRlUGVvcGxlRQFAAOh2SBcAAAAAAAAAAAAAABRhASBUaGUgYWxsb3dhbmNlIG9mIHVubG9hZCB0b2tlbnMgdGhhdCBhIGxpdGUgcGVyc29uIGNhbiB1c2UgcGVyIHRpbWUgcGVyaW9kLCBleHByZXNzZWQgaW5UIHRoZSBuYXRpdmUgY3VycmVuY3kuAFkBIFVzZSBwYWxsZXQncyBnZXRfZnJlZV91bmxvYWRfdG9rZW5faW5mbygpIHRvIGZldGNoIHRoZSBjb3JyZXNwb25kaW5nIG51bWJlciBvZiB1bmxvYWTIIHRva2VucyBnaXZlbiB0aGUgY3VycmVudCBwcmljZSBmb3IgdW5sb2FkIHRva2Vucy4AgE1heEZyZWVVbmxvYWRUb2tlbnNQZXJUaW1lUGVyaW9kOBDoAwAAEBkBIEhhcmQgdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBmcmVlIHVubG9hZCB0b2tlbnMgcGVyIHRpbWUgcGVyaW9kLgCMIFRoZSBlZmZlY3RpdmUgZnJlZSB0b2tlbiBsaW1pdCBpczoJASBgbWluKGFsbG93YW5jZSAvIGN1cnJlbnRfZmVlLCBNYXhGcmVlVW5sb2FkVG9rZW5zUGVyVGltZVBlcmlvZClgLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQBAAAAATkIFRoZSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gb2ZmY2hhaW4gd29ya2VyIGV4ZWN1dGlvbnMuAFRDb2luRmFpbHVyZUxvY2tQZXJpb2QoIDwAAAAAAAAAEFEBIFRoZSBiYXNlIG51bWJlciBvZiBzZWNvbmRzIHRvIGxvY2sgYSBjb2luIGFmdGVyIGEgZmFpbGVkIGRpc3BhdGNoIGluIGBBc0NvaW5gIGZsb3cuAD0BIFRoZSBhY3R1YWwgbG9jayBkdXJhdGlvbiBpcyBleHBvbmVudGlhbDogYDJecmV0cmllcyAqIGJhc2VgIHdoZXJlIGByZXRyaWVzYCBpc5AgdGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBmYWlsdXJlcy4AOHBhbGxldF9hY2NvdW50BIBtb2RsY29pbmFnZSAAAAAAAAAAAAAAAAAAAAAAAAAAAAR4IFRoZSBhY2NvdW50IGlkIG9mIHRoZSBwYWxsZXQuAAExDQAAYHrCcSyKdqUqw7oQopAh7Jm9aXdvCHqOVSmg2qI+NaB4QGdldF9pbnN0YW5jZV9pZHMEIGFzc2V0X2lkcQFpBBDgIEdldCBldmVyeSBpbnN0YW5jZSB3cmFwcGluZyB0aGUgZ2l2ZW4gdW5kZXJseWluZyBhc3NldC4AUQEgQW4gYXNzZXQgY2FuIGJlIHdyYXBwZWQgYnkgc2V2ZXJhbCBpbnN0YW5jZXMsIGVhY2ggd2l0aCBpdHMgb3duIGNvaW4gdW5pdDsgcmVhZCB0aGWAIHVuaXQgb2Ygb25lIGZyb20gW2BJbnN0YW5jZXNgXS4AesJxLIp2pSrDuhCikCHsmTWjwy5ELhqtHnH2hHlTJ4ZAZ2V0X2xvYWRfZGVwb3NpdAC9BQSkIEdldCB0aGUgbG9hZCBkZXBvc2l0IGN1cnJlbmN5IGFuZCBwcmljZS4AesJxLIp2pSrDuhCikCHsma+inX+zJU1DadCZCWzDHH08Z2V0X3BvdF9hY2NvdW50BCxpbnN0YW5jZV9pZDg1AQRVASBHZXQgdGhlIHBvdCBhY2NvdW50IG9mIGEgc3BvbnNvcmVkIGluc3RhbmNlLCBgTm9uZWAgZm9yIGEgc3VmZmljaWVudCBvciBtaXNzaW5nIG9uZS4AesJxLIp2pSrDuhCikCHsmUPC8OhejmIgVmKT9UGokPU4Z2V0X3BvdF9zdGF0dXMELGluc3RhbmNlX2lkODUNCEUBIEdldCB0aGUgc3RhdHVzIG9mIGEgc3BvbnNvcmVkIGluc3RhbmNlJ3MgcG90LCBgTm9uZWAgZm9yIGEgc3VmZmljaWVudCBvciBtaXNzaW5nKCBpbnN0YW5jZS4AesJxLIp2pSrDuhCikCHsme0F4sg0JfH1r3sGrGnlJG1UZ2V0X3BvdF9jb250cmlidXRpb25zCCxpbnN0YW5jZV9pZDgYZnVuZGVyBEUNDC0BIFBlciBhc3NldCBpZDogdGhlIGZ1bmRlcidzIHJlY29yZGVkIHBvdCBjb250cmlidXRpb24gYW5kIGhvdyBtdWNoIG9mIGl0IGlzBQEgd2l0aGRyYXdhYmxlIHJpZ2h0IG5vdywgd2hpY2ggaXMgdGhlIGNvbnRyaWJ1dGlvbiBjYXBwZWQgYnkgd2hhdFEBIFtgUGFsbGV0Ojp3aXRoZHJhd19wb3RfZnVuZHNgXSBjb3VsZCBhY3R1YWxseSBtb3ZlIG91dCBvZiB0aGUgcG90IGluIHRoYXQgY3VycmVuY3kuAHrCcSyKdqUqw7oQopAh7JmhCw1N7JASjXdVsf63Iy2CaGdldF9mcmVlX3VubG9hZF90b2tlbl9pbmZvAE0IEE0BIEdldCB0aGUgY3VycmVudCBudW1iZXIgb2YgZnJlZSB1bmxvYWQgdG9rZW5zIGRpc3RyaWJ1dGVkIHRvIHBlb3BsZSBhbmQgbGl0ZSBwZW9wbGWsIGdpdmVuIHRoZSBjdXJyZW50IHByaWNlIGZvciB1bmxvYWQgdG9rZW5zLgC4IFJldHVybnM6IGAobGltaXRfcGVvcGxlLCBsaW1pdF9saXRlX3Blb3BsZSlgLgB6wnEsinalKsO6EKKQIeyZjQar9qR/ewGJbJVFirVpF2BnZXRfcmVjeWNsZXJfcmluZ19zdGF0dXMMLGluc3RhbmNlX2lkOBR2YWx1ZRUEFGluZGV4OE0NBOggR2V0IHRoZSByaW5nIHN0YXR1cyBmb3IgYSByZWN5Y2xlciBhdCBhIGdpdmVuIHJpbmcgaW5kZXguAHrCcSyKdqUqw7oQopAh7Jnrt65jyEdGIFYVqh9fjiW0aGdldF9yZWN5Y2xlcl9yaW5nX3JldmlzaW9uDCxpbnN0YW5jZV9pZDgUdmFsdWUVBBRpbmRleDjkBPAgR2V0IHRoZSByaW5nIHJldmlzaW9uIGZvciBhIHJlY3ljbGVyIGF0IGEgZ2l2ZW4gcmluZyBpbmRleC4AesJxLIp2pSrDuhCikCHsmbXvxoCaa/NrA65X9MZsBIloZ2V0X3BhaWRfdG9rZW5fcmluZ19zdGF0dXMIGHBlcmlvZDgUaW5kZXg4TQ0EHQEgR2V0IHRoZSByaW5nIHN0YXR1cyBmb3IgYSBwYWlkIHRva2VuIGF0IGEgZ2l2ZW4gcGVyaW9kIGFuZCByaW5nIGluZGV4LgB6wnEsinalKsO6EKKQIeyZoPbDEPaoKp98du8gf/2eNXBnZXRfcGFpZF90b2tlbl9yaW5nX3JldmlzaW9uCBhwZXJpb2Q4FGluZGV4OOQEJQEgR2V0IHRoZSByaW5nIHJldmlzaW9uIGZvciBhIHBhaWQgdG9rZW4gYXQgYSBnaXZlbiBwZXJpb2QgYW5kIHJpbmcgaW5kZXguAHrCcSyKdqUqw7oQopAh7JkwjExbJAe6lOwrcc2/jXA7iGdldF9wYWlkX3VubG9hZF90b2tlbl9mZWVfaW5fYXNzZXQELGluc3RhbmNlX2lkOEEBFGUBIEdldCB0aGUgYW1vdW50IG9mIGFuIGluc3RhbmNlJ3MgdW5kZXJseWluZyBhc3NldCB0aGF0IGN1cnJlbnRseSBwYXlzIGZvciBvbmUgcGFpZCB1bmxvYWQcIHRva2VuLgBNASBSZXR1cm5zIGBOb25lYCBpZiB0aGUgaW5zdGFuY2UgZG9lcyBub3QgZXhpc3QsIG9yIGlmIGl0cyBhc3NldCBjYW5ub3QgY3VycmVudGx5IGJlYQEgY29udmVydGVkIGludG8gdGhlIG5hdGl2ZSBjdXJyZW5jeSwgaW4gd2hpY2ggY2FzZSBvbmx5IG5hdGl2ZSBmZWUgcGF5bWVudCBpcyBhdmFpbGFibGUuAHrCcSyKdqUqw7oQopAh7Jl9ZrKLdQTnVQpJPM4LDH19oGdldF9wYWlkX3VubG9hZF90b2tlbl9mZWVfcXVvdGVfaW5fYXNzZXQILGluc3RhbmNlX2lkOBRjb3VudDhBARxZASBHZXQgdGhlIGFtb3VudCBvZiBhbiBpbnN0YW5jZSdzIHVuZGVybHlpbmcgYXNzZXQgdGhhdCBjdXJyZW50bHkgcGF5cyBmb3IgYGNvdW50YCBwYWlkPCB1bmxvYWQgdG9rZW5zLgBZASBUaGUgYmF0Y2ggaXMgcXVvdGVkIGFzIGEgc2luZ2xlIHN3YXAgaW50byB0aGUgbmF0aXZlIGN1cnJlbmN5LCBzbyBwb29sIHNsaXBwYWdlIG1ha2VzTQEgdGhlIHJlc3VsdCBkaWZmZXIgZnJvbSBgY291bnRgIHRpbWVzIHRoZSBzaW5nbGUtdG9rZW4gcXVvdGUuIFJldHVybnMgYE5vbmVgIGlmIHRoZV0BIGluc3RhbmNlIGRvZXMgbm90IGV4aXN0LCBvciBpZiBpdHMgYXNzZXQgY2Fubm90IGN1cnJlbnRseSBiZSBjb252ZXJ0ZWQgaW50byB0aGUgbmF0aXZl+CBjdXJyZW5jeSwgaW4gd2hpY2ggY2FzZSBvbmx5IG5hdGl2ZSBmZWUgcGF5bWVudCBpcyBhdmFpbGFibGUuAHrCcSyKdqUqw7oQopAh7JnOvUSgz1HVuplPbA/gLOnqjGdldF9wYWlkX3VubG9hZF90b2tlbl9mZWVfaW5fbmF0aXZlAEUBBA0BIEdldCB0aGUgY3VycmVudCBmZWUgaW4gdGhlIG5hdGl2ZSBjdXJyZW5jeSBmb3IgcGFpZCB1bmxvYWQgdG9rZW5zLgB6wnEsinalKsO6EKKQIeyZnl6QXlmqQJ+xgGt4maYXhURnZXRfY29pbl9ieV9vd25lcgQUb3duZXIEUQ0EhCBHZXQgY29pbiBkZXRhaWxzIGZvciBhbiBhY2NvdW50LgB6wnEsinalKsO6EKKQIeyZ2pwW6SSCpfejl/Gf/KR/GkxnZXRfY29pbl9sb2NrX3VudGlsBBRvd25lcgS1AwxVASBHZXQgdGhlIFVuaXggdGltZXN0YW1wIHVudGlsIHdoaWNoIGEgY29pbiBpcyBjdXJyZW50bHkgbG9ja2VkIGFmdGVyIGZhaWxlZCBkaXNwYXRjaC4ASQEgUmV0dXJucyBgTm9uZWAgd2hlbiB0aGVyZSBpcyBubyBsb2NrIG9yIHdoZW4gdGhlIHN0b3JlZCBsb2NrIGhhcyBhbHJlYWR5IGV4cGlyZWQuAHrCcSyKdqUqw7oQopAh7JnWPsQ8SECUYq0X+Uf5QXXYYGdldF9yZWN5Y2xlcl9tZW1iZXJfaW5mbwQYbWVtYmVyCFUNBBkBIEdldCB0aGUgaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbiBmb3IgYSBzcGVjaWZpYyByZWN5Y2xlciBtZW1iZXIga2V5LgB6wnEsinalKsO6EKKQIeyZTyIHCkN80VRC5T6JoCpodFBpc19wYWlkX3Rva2VuX21lbWJlcgQYbWVtYmVyCFkBBNQgQ2hlY2sgd2hldGhlciBhIHBhaWQgdG9rZW4gbWVtYmVyIGtleSBpcyByZWdpc3RlcmVkLgB6wnEsinalKsO6EKKQIeyZgcJ+1T/RosXyS822HZfw6lBnZXRfcmVjeWNsZXJfbWVtYmVycwwsaW5zdGFuY2VfaWQ4FHZhbHVlFQQUaW5kZXg4UQQIkCBHZXQgdGhlIG1lbWJlcnMgb2YgYSByZWN5Y2xlciByaW5nLg0BIFJlcXVpcmVkIHRvIGJ1aWxkIHRoZSByaW5nIGNvbW1pdG1lbnQgKGFjY3VtdWxhdG9yKSBmb3IgdGhlIHByb29mLgB6wnEsinalKsO6EKKQIeyZTo5qhTYGfnK+UpKKpckNxEhyZWN5Y2xlcl9yaW5nX3Jvb3QMLGluc3RhbmNlX2lkOBR2YWx1ZRUEFGluZGV4OFkNBFkBIEdldCB0aGUgcmluZy1WUkYgcm9vdCAodGhlICJyZWN5Y2xlciByb290Iikgb2YgYSByZWN5Y2xlciByaW5nLCBpZiBpdCBoYXMgYmVlbiBidWlsdC4AesJxLIp2pSrDuhCikCHsmfE4/CBo8j4A9lUO7c5iT2FsZ2V0X3BhaWRfdG9rZW5fcmluZ19tZW1iZXJzCBhwZXJpb2Q4FGluZGV4OFEECJggR2V0IHRoZSBtZW1iZXJzIG9mIGEgcGFpZCB0b2tlbiByaW5nLg0BIFJlcXVpcmVkIHRvIGJ1aWxkIHRoZSByaW5nIGNvbW1pdG1lbnQgKGFjY3VtdWxhdG9yKSBmb3IgdGhlIHByb29mLgB6wnEsinalKsO6EKKQIeyZytLGMtBJdQa4oPYY/7Krlmhpc19yZWN5Y2xlcl9hbGlhc191bmxvYWRlZBAsaW5zdGFuY2VfaWQ4FHZhbHVlFQQUaW5kZXg4FGFsaWFzCFkBDPQgQ2hlY2sgaWYgYSByZWN5Y2xlciBhbGlhcyBoYXMgYWxyZWFkeSBiZWVuIHVubG9hZGVkIChzcGVudCkuAPAgSWYgdGhlIHJlY3ljbGVyIGlzIG5vdCBsaXZlLCB0aGUgcmVzdWx0IGlzIG5vdCBzaWduaWZpY2FudC4AesJxLIp2pSrDuhCikCHsmS6NiyqbxAjIWuSgBYhX0I9waXNfcGFpZF90b2tlbl9hbGlhc19jb25zdW1lZAwYcGVyaW9kOBRpbmRleDgUYWxpYXMIWQEMwCBDaGVjayBpZiBhIHBhaWQgdW5sb2FkIHRva2VuIGhhcyBiZWVuIGNvbnN1bWVkLgD0IElmIHRoZSBwZXJpb2QgaXMgbm90IGN1cnJlbnQsIHRoZSByZXN1bHQgaXMgbm90IHNpZ25pZmljYW50LgB6wnEsinalKsO6EKKQIeyZvxLQeog2HQ71NeyLXBnl03Bpc19mcmVlX3Rva2VuX2FsaWFzX2NvbnN1bWVkCBhwZXJpb2Q4FGFsaWFzCFkBDMAgQ2hlY2sgaWYgYSBmcmVlIHVubG9hZCB0b2tlbiBoYXMgYmVlbiBjb25zdW1lZC4A9CBJZiB0aGUgcGVyaW9kIGlzIG5vdCBjdXJyZW50LCB0aGUgcmVzdWx0IGlzIG5vdCBzaWduaWZpY2FudC4AesJxLIp2pSrDuhCikCHsmZGzLy68Hyv53pXKQlnduMW4d2VpZ2h0X2Zvcl91bmxvYWRfcmVjeWNsZXJfcGF5aW5nX3VzaW5nX291dHB1dAB5AhQxASBHZXQgdGhlIHdvcnN0LWNhc2Ugd2VpZ2h0IGZvciBhIHRyYW5zYWN0aW9uIHVzaW5nIG91dHB1dC1iYXNlZCBmZWUgcGF5bWVudC4AKQEgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBtYXhpbXVtIHdlaWdodCBmb3IgdHJhbnNhY3Rpb25zIGRpc3BhdGNoZWQgd2l0aFUBIGBBc1VubG9hZFRva2VuRnJvbU91dHB1dGAsIHVzZWZ1bCBmb3IgcnVudGltZSBjb25maWd1cmF0aW9uIHRvIGZpbmQgYSBnb29kIHZhbHVlIGZvcpQgYE1pbmltdW1FeHBvbmVudEZvck91dHB1dFVubG9hZEZlZWAuAEQAADxNZW1iZXJzTm90aWZpZXIBPE1lbWJlcnNOb3RpZmllcjgsU3Vic2NyaWJlcnMAAQQGnF0NBAAEQQEgU3Vic2NyaWJlciByZWdpc3RyeSB3aXRoIHRoZWlyIHN1YnNjcmliZWQgY29sbGVjdGlvbnMgYW5kIGluaXRpYWxpemF0aW9uIHN0YXRlLgBUQ291bnRlckZvclN1YnNjcmliZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAVFN1YnNjcmlwdGlvbldoaXRlbGlzdAABBAacYQ0EABSMIFN1YnNjcmlwdGlvbnMgYW55b25lIG1heSBhY3RpdmF0ZS4ANQEgQW4gZW50cnkgaXMgY29uc3VtZWQgdGhlIGZpcnN0IHRpbWUgdGhlIHBhcmFjaGFpbiBzdWJzY3JpYmVzLCB0aHJvdWdoIGVpdGhlcj0BIGBzdWJzY3JpYmVfd2hpdGVsaXN0ZWRgIG9yIGBzdWJzY3JpYmVgLiBPbmNlIGNvbnN1bWVkLCBvbmx5IGBNYW5hZ2VPcmlnaW5gIGNhboAgc3Vic2NyaWJlIHRoYXQgcGFyYWNoYWluIGFnYWluLgBUU3Vic2NyaWJlZENvbGxlY3Rpb25zAAEEBggQBAAE2CBDb2xsZWN0aW9ucyBhdCBsZWFzdCBvbmUgc3Vic2NyaWJlciBpcyBzdWJzY3JpYmVkIHRvLgBMU2VhbGVkQmF0Y2hTZXF1ZW5jZQEAKCAAAAAAAAAAAAyIIFNlcXVlbmNlIG51bWJlciBmb3Igc2VhbGVkIGJhdGNoLvQgSW5jcmVtZW50ZWQgd2hlbiBhIGJhdGNoIGlzIHNlYWxlZCAtIHJlYWR5IGZvciBkaXN0cmlidXRpb24u8CBTZXJ2ZXMgYXMgdGhlIGJhdGNoIGlkZW50aWZpZXIgZm9yIHJlcGxheSBhbmQgZGlzdHJpYnV0aW9uLgAkUGFnZVN0YXRlAQBlDSAAAAAAAAAAAATwIFBhZ2luZyBzdGF0ZTogd3JpdGUgcGFnZSwgc2VuZCBwYWdlLCBhbmQgbGFzdCB1cGRhdGUgYmxvY2suADhQZW5kaW5nVXBkYXRlcwABDAYGBmkNEAQADHwgQ2hhbmdlZCByaW5nIHJvb3Qga2V5cywgcGFnZWQuMQEgS2V5OiAocGFnZV9pbmRleCwgaWRlbnRpZmllciwgcmluZ19pbmRleCkuIFBvcHVsYXRlZCBieSBgT25SaW5nUm9vdENoYW5nZWAsOQEgY29uc3VtZWQgYnkgYGVucXVldWVfdXBkYXRlc2Agb25lIHBhZ2UgYXQgYSB0aW1lIGZyb20gYFBhZ2VTdGF0ZTo6c2VuZF9wYWdlYC4AQFBhZ2VVcGRhdGVzQ291bnQBAQQGzQM4EAAAAAAEtCBQZXItcGFnZSBjb3VudCBvZiBlbnRyaWVzIGluIFBlbmRpbmdVcGRhdGVzLgAsUGVuZGluZ0luaXQAAQQGnG0NBAAEvCBTdGF0ZSBmb3IgcGFnaW5hdGVkIHN1YnNjcmliZXIgaW5pdGlhbGl6YXRpb24uAFRDb3VudGVyRm9yUGVuZGluZ0luaXQBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABIU2VhbGVkQmF0Y2hJbmRpY2VzAAEEBgjVBQQABNwgSW5kaWNlcyBwZXIgY29sbGVjdGlvbiBmb3IgdGhlIHNlYWxlZCAoY3VycmVudCkgYmF0Y2guADBDdXJyZW50QmF0Y2gAAHENBAAEiCBDdXJyZW50IGJhdGNoIGRpc3RyaWJ1dGlvbiBzdGF0ZS4AbFN1YnNjcmliZXJzV2l0aEN1cnJlbnRCYXRjaAABBAacEAQABOggVHJhY2tzIHdoaWNoIHN1YnNjcmliZXJzIGhhdmUgcmVjZWl2ZWQgdGhlIGN1cnJlbnQgYmF0Y2guADhMYXN0UmVwbGF5VGltZQABCAYGdQ0oBAAI0CBMYXN0IHJlcGxheSB0aW1lIHBlciAoc3Vic2NyaWJlciwgY29sbGVjdGlvbikgcGFpci7QIFVzZWQgdG8gZW5mb3JjZSBhIGNvb2xkb3duIGJldHdlZW4gcmVwbGF5IHJlcXVlc3RzLgABwQUAASEIACg4TWF4U3Vic2NyaWJlcnM4EAoAAAAEnCBNYXhpbXVtIG51bWJlciBvZiBzdWJzY3JpYmVycyBhbGxvd2VkLgBITWF4VXBkYXRlc1BlckJhdGNoOBAKAAAABGwgTWF4aW11bSB1cGRhdGVzIHBlciBiYXRjaC4AbE1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlcjgQAwAAAATMIE1heGltdW0gY29sbGVjdGlvbnMgYSBzdWJzY3JpYmVyIGNhbiBzdWJzY3JpYmUgdG8uADhNYXhDb2xsZWN0aW9uczgQZAAAAASQIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgY29sbGVjdGlvbnMuAExVcGRhdGVUcmlnZ2VyQmxvY2tzOBABAAAABMQgTWluaW11bSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gdXBkYXRlIGJhdGNoZXMuAFhVcGRhdGVUcmlnZ2VyVGhyZXNob2xkOBABAAAABOwgTWluaW11bSBudW1iZXIgb2YgdXBkYXRlcyB0byB0cmlnZ2VyIGltbWVkaWF0ZSBiYXRjaCBzZW5kLgBkUmVxdWVzdFJlcGxheVJlbW90ZVdlaWdodHkCDEGcAAQlASBQZXItaW5kZXggd2VpZ2h0IHN1cmNoYXJnZSBmb3IgcmVtb3RlIGV4ZWN1dGlvbiBvbiB0aGUgc3Vic2NyaWJlciBjaGFpbi4AWE9mZmNoYWluV29ya2VySW50ZXJ2YWw4EAEAAAAE3CBNaW5pbXVtIG51bWJlciBvZiBibG9ja3MgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgcnVucy4ARFN0dWNrQmF0Y2hUaW1lb3V0OBBkAAAABOQgTnVtYmVyIG9mIGJsb2NrcyBhZnRlciB3aGljaCBhIHN0dWNrIGJhdGNoIGlzIGFiYW5kb25lZC4AVFJlcGxheUNvb2xkb3duU2Vjb25kcyggPAAAAAAAAAAEWQEgQ29vbGRvd24sIGluIHNlY29uZHMsIGJldHdlZW4gcmVwbGF5IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBzdWJzY3JpYmVyIGFuZCBjb2xsZWN0aW9uLgABeQ0AAABFAAAcQWlyZHJvcAEcQWlyZHJvcBgYRXZlbnRzAAEEBQh9DQQABNggUmVnaXN0ZXJlZCBhaXJkcm9wIGV2ZW50cywga2V5ZWQgYnkgdGhlaXIgaWRlbnRpZmllci4AOEFjdGlvblNjaGVkdWxlAAEIBgaFDRAEAAhdASBQZW5kaW5nIGxpZmVjeWNsZSBhY3Rpb25zIGZvciByZWdpc3RlcmVkIGV2ZW50cywgb3JkZXJlZCBieSB0aGUgdGltZXN0YW1wIGF0IHdoaWNoIHRoZWggYWN0aW9uIHNob3VsZCB0YWtlIHBsYWNlLgA0UmVnaXN0cmF0aW9ucwABCAUGjQ0tCAQACA0BIFBlci1ldmVudCBwYXJ0aWNpcGFudCByZWdpc3RyYXRpb25zLCBrZXllZCBieSAzMi1ieXRlIGVudHJvcHkgc2xvdJggaW4gYmlnLWVuZGlhbiBvcmRlciB1bmRlciBgSWRlbnRpdHlgLgAcV2lubmVycwABCAUCkQ0pCAQACHEBIFdpbm5lcnMgZm9yIGFuIGV2ZW50LCBrZXllZCBieSB0aGUgZXZlbnQgaWRlbnRpZmllciBhbmQgdGhlaXIgcmVnaXN0cmF0aW9uIGVudHJ5LiBUaGlzIG1hcHPoIHRvIHRoZSBwYXJ0aWNpcGFudCdzIHRpY2tldCBmb3Igb2ZmY2hhaW4gbG9va3VwIHB1cnBvc2VzLgAwRXZlbnRFbnRyb3B5AAEEBQgpCAQACF0BIEVudHJvcHkgc2VlZCBjYXB0dXJlZCBhdCBkcmF3IHRpbWUsIHBlciBldmVudC4gVGhpcyBzZXJ2ZXMgYXMgYSBwYXJ0aXRpb24gcG9pbnQgaW4gdGhl8CBwYXJ0aWNpcGF0aW9uIHRpY2tldCBvcmRlcmVkIGxpc3QgaW4gb3JkZXIgdG8gcGljayB3aW5uZXJzLgA8U3VwcG9ydGVkQXNzZXRzAAEEBXEBRQEEABBlASBQZXItYXNzZXQgZW5hYmxlbWVudCBnYXRlLiBBbiBhc3NldCBpcyB1c2FibGUgZm9yIHNjaGVkdWxpbmcgZXZlbnRzIGlmZiBpdCBpcyBwcmVzZW50IGluZQEgdGhpcyBtYXA7IHRoZSBzdG9yZWQgdmFsdWUgaXMgdGhlIGFtb3VudCB0aGUgcGFsbGV0IHRyYW5zZmVycmVkIGludG8gaXRzIHBvdCB0byBrZWVwIHRoZVUBIHBvdCdzIGFzc2V0IGFjY291bnQgYWxpdmUgKHRoZSBhc3NldCdzIEVEIGF0IHRoZSB0aW1lIG9mIGVuYWJsaW5nKS4gYGVuYWJsZV9hc3NldGAgL8ggYGRpc2FibGVfYXNzZXRgIGFyZSB0aGUgb25seSB3YXlzIHRvIG11dGF0ZSB0aGlzLgAB2QUAASUIABQgUGFsbGV0SWTFCSBwb3AvYWRycATAIFBhbGxldCBpZCB1c2VkIHRvIGRlcml2ZSB0aGUgcHJpemUgcG90IGFjY291bnQuAChDbGVhckxpbWl0OBBkAAAACNQgTWF4aW11bSBudW1iZXIgb2YgcmVnaXN0cmF0aW9uIGVudHJpZXMgcHJvY2Vzc2VkIHBlcuggYGNsZWFuX3VwX3tyZWdpc3RyYXRpb25zLHdpbm5lcnN9X2F1dGhvcml6ZWRgIGludm9jYXRpb24uACREcmF3TGltaXQ4EGQAAAAEMQEgTWF4aW11bSBudW1iZXIgb2Ygd2lubmVyIHNsb3RzIGluc2VydGVkIHBlciBgZHJhd193aW5uZXJzX2F1dGhvcml6ZWRgIGNhbGwuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABNggSG93IGZyZXF1ZW50bHkgdGhlIG9mZmNoYWluIHdvcmtlciBmaXJlcyAoaW4gYmxvY2tzKS4AOGFpcmRyb3BfcG90X2lkBIBtb2RscG9wL2FkcnAAAAAAAAAAAAAAAAAAAAAAAAAAAAR0IEFjY291bnQgaWQgb2YgdGhlIHByaXplIHBvdC4AAZUNAAAARgAAGEhvbm91cgEYSG9ub3VyDBhQb2ludHMAAQQCCJkNBAAQmCBQb2ludHMgdGhhdCBoYXZlIGJlZW4gdXNlZCBieSB2b3RlcnMuAHUBIFJlY29yZHMgaW4gW2BQb2ludHNgXSB0cmFjayB1c2VkIHBvaW50cyB0byBwcmV2ZW50IGRvdWJsZS1zcGVuZGluZyBhbmQgZW5mb3JjZSByYXRlLWxpbWl0aW5neCBiYXNlZCBvbiB0aGUgbGFzdCB1c2FnZSB0aW1lLgAUVm90ZXMAAQQCCBAEABB8IFZvdGVzIHRoYXQgaGF2ZSBiZWVuIGJlc3Rvd2VkLgBVASBQcmV2ZW50cyBkb3VibGUtdm90aW5nIG9uIHRoZSBzYW1lIHN1YmplY3QgYnkgdGhlIHNhbWUgdm90ZXIsIGFzIFtgU3ViamVjdEFsaWFzYF0gaXPQIHVuaXF1ZWx5IGRlcml2ZWQgZnJvbSBbYFN1YmplY3RJZGBdIGZvciBlYWNoIHZvdGVyLgAUVGFsbHkAAQQCCDUIBAAEMQEgQWJzb2x1dGUgaG9ub3VyIHNjb3JlIG9mIGEgc3ViamVjdC4gSW5pdGlhbGl6ZWQgdG8gLTEgdG8gb2Zmc2V0IHNlbGYtdm90ZXMuAAHhBQABMQgACExQb2ludEZyZWV6ZUR1cmF0aW9uKCCAUQEAAAAAAAQFASBEdXJhdGlvbiBpbiBzZWNvbmRzIHRoYXQgbXVzdCBwYXNzIGJlZm9yZSBhIHBvaW50IGNhbiBiZSByZXVzZWQuADRDYWxsTW9ydGFsaXR5KCAsAQAAAAAAAAQ9ASBEdXJhdGlvbiBpbiBzZWNvbmRzIGEgYGJlc3Rvd2AgY2FsbCByZW1haW5zIHZhbGlkIGFmdGVyIGl0cyBgY2FsbF92YWxpZF9mcm9tYC4AAZ0NAAAARwAAOFBlb3BsZUFpcmRyb3BzAThQZW9wbGVBaXJkcm9wcwg0TmV4dERyYXdJbmRleAEAKCAAAAAAAAAAAAQVASBJbmRleCBvZiB0aGUgbmV4dCBkcmF3IHRvIHNjaGVkdWxlLiBGZWVkcyBbYFBhbGxldDo6ZHJhd19ldmVudF9pZGBdLgAkRHJhd1NhbHRzAAEEBQihDQQAEGkBIFBlci1kcmF3IHNsb3Qgc2FsdCwgY2FwdHVyZWQgZnJvbSB0aGUgcmFuZG9tbmVzcyBzb3VyY2UgYXQgc2NoZWR1bGluZyB0aW1lLCB0b2dldGhlciB3aXRoWQEgdGhlIGRyYXcncyBlbmQgdGltZS4gVGhlIHNhbHQgaXMgb25seSByZWFkIGR1cmluZyByZWdpc3RyYXRpb24sIHdoaWNoIGNsb3NlcyBzdHJpY3RseWUBIGJlZm9yZSB0aGUgZW5kIHRpbWUsIHNvIGFuIGVudHJ5IHdob3NlIGVuZCB0aW1lIGhhcyBwYXNzZWQgaXMgZGVhZCBhbmQgaXMgcmVtb3ZlZCBieSB0aGXQIG9mZmNoYWluIHdvcmtlciB2aWEgW2BQYWxsZXQ6OmNsZWFuX3VwX2RyYXdfc2FsdGBdLgAB7QUAATkIAAxATWF4U2NoZWR1bGVCYXRjaDgQEAAAAAT0IE1heGltdW0gbnVtYmVyIG9mIGRyYXdzIHNjaGVkdWxlZCBwZXIgYHNjaGVkdWxlX2RyYXdzYCBjYWxsLgBATWF4UmVnaXN0ZXJCYXRjaDgQEAAAAATwIE1heGltdW0gbnVtYmVyIG9mIGRyYXdzIHJlZ2lzdGVyZWQgZm9yIHBlciBgcmVnaXN0ZXJgIGNhbGwuAFxwZW9wbGVfYWlyZHJvcHNfY29udGV4dAiAHyMbgIKkblJgh9mPUQ5qjDBfxvKLExcOpiFPuDFeKW8EDQEgVGhlIGNvbnRleHQgdXNlZCB0byBhdXRoZW50aWNhdGUgcGVvcGxlIHBhcnRpY2lwYXRpbmcgaW4gYWlyZHJvcHMuAAGlDQAIOEFpcmRyb3BBc3NldElkcQEEkCBBc3NldCBpZCB1c2VkIGJ5IFtgU2VsZjo6QWlyZHJvcGBdLkxBaXJkcm9wQXNzZXRCYWxhbmNlRQEEpCBBc3NldCBiYWxhbmNlIHVzZWQgYnkgW2BTZWxmOjpBaXJkcm9wYF0uAEgAAFBNdWx0aUJsb2NrTWlncmF0aW9ucwFQTXVsdGlCbG9ja01pZ3JhdGlvbnMIGEN1cnNvcgAABQYEAAzYIFRoZSBjdXJyZW50bHkgYWN0aXZlIG1pZ3JhdGlvbiB0byBydW4gYW5kIGl0cyBjdXJzb3IuALwgYE5vbmVgIGluZGljYXRlcyB0aGF0IG5vIG1pZ3JhdGlvbiBpcyBydW5uaW5nLgAgSGlzdG9yaWMAAQQFGQYQBAAQtCBTZXQgb2YgYWxsIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCBtaWdyYXRpb25zLgBxASBUaGlzIGlzIHVzZWQgYXMgYmxhY2tsaXN0LCB0byBub3QgcmUtZXhlY3V0ZSBtaWdyYXRpb25zIHRoYXQgaGF2ZSBub3QgYmVlbiByZW1vdmVkIGZyb20gdGhlMQEgY29kZWJhc2UgeWV0LiBHb3Zlcm5hbmNlIGNhbiByZWd1bGFybHkgY2xlYXIgdGhpcyBvdXQgdmlhIGBjbGVhcl9oaXN0b3JpY2AuAAH9BQABPQgACDBDdXJzb3JNYXhMZW44EAAAAQAQpCBUaGUgbWF4aW1hbCBsZW5ndGggb2YgYW4gZW5jb2RlZCBjdXJzb3IuAGUBIEEgZ29vZCBkZWZhdWx0IG5lZWRzIHRvIHNlbGVjdGVkIHN1Y2ggdGhhdCBubyBtaWdyYXRpb24gd2lsbCBldmVyIGhhdmUgYSBjdXJzb3Igd2l0aCBNRUwJASBhYm92ZSB0aGlzIGxpbWl0LiBUaGlzIGlzIHN0YXRpY2FsbHkgY2hlY2tlZCBpbiBgaW50ZWdyaXR5X3Rlc3RgLgBASWRlbnRpZmllck1heExlbjgQAAEAABC0IFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGlkZW50aWZpZXIuAFUBIEEgZ29vZCBkZWZhdWx0IG5lZWRzIHRvIHNlbGVjdGVkIHN1Y2ggdGhhdCBubyBtaWdyYXRpb24gd2lsbCBldmVyIGhhdmUgYW4gaWRlbnRpZmllci0BIHdpdGggTUVMIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAAGpDQAAEAsgGZrONWTQlk4sTUqbpGmUTbz/amzhpNCyfG/MAtJMOG9uZ29pbmdfc3RhdHVzAK0NBKggUmV0dXJucyB0aGUgb25nb2luZyBzdGF0dXMgb2YgbWlncmF0aW9ucy4ACyAZms41ZNCWTixNSpukaV69d2yxXZuRLieNTS1ixaEgcHJvZ3Jlc3MAsQ0QCQEgUmV0dXJucyBwcm9ncmVzcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBtaWdyYXRpb24sIGlmIGFueS4AUQEgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBtaWdyYXRpb24ncyBwcm9ncmVzcywdASBpbmNsdWRpbmcgdGhlIG51bWJlciBvZiBzdGVwcyBjb21wbGV0ZWQgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3RlcHMuAAsgGZrONWTQlk4sTUqbpGlGr0vOxvNae7vunZ/BCVvhRGFmZmVjdGVkX3ByZWZpeGVzADQMAQEgUmV0dXJucyB0aGUgc3RvcmFnZSBwcmVmaXhlcyBhZmZlY3RlZCBieSB0aGUgY3VycmVudCBtaWdyYXRpb24uABkBIENhbiBiZSBlbXB0eSBpZiB0aGUgbWlncmF0aW9uIGRvZXMgbm90IGtub3cgb3IgdGhlcmUgYXJlIG5vIHByZWZpeGVzLgALIBmazjVk0JZOLE1Km6RpqkwooG8ZiEW9G7KexiBd3RhzdGF0dXMAuQ0E8CBSZXR1cm5zIHRoZSBjb21wcmVoZW5zaXZlIHN0YXR1cyBvZiBtdWx0aS1ibG9jayBtaWdyYXRpb25zLgBiAAAIBAUAIHkEBABYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhgVW5pdFRyYW5zYWN0aW9uRXh0ZW5zaW9uEBBQVmVyaWZ5TXVsdGlTaWduYXR1cmUlBhAgQXNQZXJzb24pBhBcQXNQcm9vZk9mSW5rUGFydGljaXBhbnQ1BhBIU2NvcmVBc1BhcnRpY2lwYW50QQYQNEdhbWVBc0ludml0ZWRNBhA4UGVvcGxlTGl0ZUF1dGhZBhAgQXNNZW1iZXJlBhAkQXNDb2luYWdlcQYQLEFzUmVzb3VyY2VzgQYQKEhvbm91ckF1dGiNBhA0QXV0aG9yaXplQ2FsbJkGEDxSZXN0cmljdE9yaWdpbnOdBhBIQ2hlY2tOb25aZXJvU2VuZGVyoQYQQENoZWNrU3BlY1ZlcnNpb26lBjg4Q2hlY2tUeFZlcnNpb26pBjgwQ2hlY2tHZW5lc2lzrQY8OENoZWNrTW9ydGFsaXR5sQY8KENoZWNrTm9uY2W5BhAsQ2hlY2tXZWlnaHS9BhBQQ2hhcmdlQXNzZXRUeFBheW1lbnTBBhBQU3RvcmFnZVdlaWdodFJlY2xhaW0QEFwcQXVyYUFwaQg0c2xvdF9kdXJhdGlvbgC9DQyQIFJldHVybnMgdGhlIHNsb3QgZHVyYXRpb24gZm9yIEF1cmEuACUBIEN1cnJlbnRseSwgb25seSB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhpcyB0eXBlIGF0IGdlbmVzaXMgd2lsbCBiZSB1c2VkLgAsYXV0aG9yaXRpZXMAHQoEnCBSZXR1cm4gdGhlIGN1cnJlbnQgc2V0IG9mIGF1dGhvcml0aWVzLgAEuCBBUEkgbmVjZXNzYXJ5IGZvciBibG9jayBhdXRob3JzaGlwIHdpdGggYXVyYS4EAFBSZWxheVBhcmVudE9mZnNldEFwaQhMcmVsYXlfcGFyZW50X29mZnNldAA4DBUBIEZldGNoIHRoZSByZWxheSBwYXJlbnQgb2Zmc2V0IHRoYXQgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVsYXkgY2hhaW4uAF0BIFRoaXMgZGV0ZXJtaW5lcyBob3cgbWFueSBibG9ja3MgYmVoaW5kIHRoZSByZWxheSBjaGFpbiB0aXAgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgYmUuAFhtYXhfY2xhaW1fcXVldWVfb2Zmc2V0AAyI6CBNYXhpbXVtIGNsYWltIHF1ZXVlIG9mZnNldCBmb3IgYXN5bmMgYmFja2luZyBmbGV4aWJpbGl0eS4AOQEgQm91bmRzIGhvdyBmYXIgImludG8gdGhlIGZ1dHVyZSIgYSBjYW5kaWRhdGUgbWF5IGxvb2sgaW4gdGhlIGNsYWltIHF1ZXVlIHdoZW5RASBzZWxlY3RpbmcgYSBjb3JlLiBUaGUgZWZmZWN0aXZlIGNsYWltIHF1ZXVlIGRlcHRoIGRlcGVuZHMgb24gdGhlIGNhbmRpZGF0ZSB2ZXJzaW9uOgBhASAtICoqVjEvVjIgY2FuZGlkYXRlcyoqOiB0aGUgY2xhaW0gcXVldWUgaXMgbG9va2VkIHVwIGF0IHRoZSBjYW5kaWRhdGUncyBgcmVsYXlfcGFyZW50YCxJASAgIHdoaWNoIGlzIGByZWxheV9wYXJlbnRfb2Zmc2V0YCBibG9ja3MgYmVoaW5kIHRoZSByZWxheS1jaGFpbiB0aXAuIFRoZSBlZmZlY3RpdmXsICAgZGVwdGggaXMgYHJlbGF5X3BhcmVudF9vZmZzZXQgKyBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0YC4AFQEgLSAqKlYzIGNhbmRpZGF0ZXMqKjogdGhlIGNsYWltIHF1ZXVlIGlzIGxvb2tlZCB1cCBhdCB0aGUgY2FuZGlkYXRlJ3NdASAgIGBzY2hlZHVsaW5nX3BhcmVudGAg4oCUIHRoZSByZWxheS1jaGFpbiBibG9jayBvZiB0aGUgKmxhc3QgZmluaXNoZWQqIHNsb3QsIGRlY291cGxlZCUBICAgZnJvbSB0aGUgZXhlY3V0aW9uLWNvbnRleHQgYHJlbGF5X3BhcmVudGAuIFRoZSBlZmZlY3RpdmUgZGVwdGggaXMganVzdHAgICBgbWF4X2NsYWltX3F1ZXVlX29mZnNldGAuACEBIENvbGxhdG9ycyBzZWxlY3QgYSBjb3JlIHZpYSBhbiBvZmZzZXQgaW4gYFswLCBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0XWAuAFEBIC0gKipWMiBjYW5kaWRhdGVzKio6IGBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0ID0gMWAgaXMgc3VmZmljaWVudC4gVGhlIGNsYWltIHF1ZXVlIGlzWQEgICBsb29rZWQgdXAgYXQgYHJlbGF5X3BhcmVudGAsIHdoaWNoIHNpdHMgYmVoaW5kIHRoZSB0aXAuIE9mZnNldCAwIGNvdmVycyBzeW5jaHJvbm91c1UBICAgYmFja2luZyBpbiB0aGUgbmV4dCByZWxheSBibG9jazsgb2Zmc2V0IDEgY292ZXJzIGFzeW5jaHJvbm91cyBiYWNraW5nIGluIHRoZSByZWxheVAgICBibG9jayBhZnRlciB0aGF0LgAtASAtICoqVjMgY2FuZGlkYXRlcyoqOiBvZmZzZXQgMCBpcyBub3QgcmVhY2hhYmxlIOKAlCB0aGUgYHNjaGVkdWxpbmdfcGFyZW50YFUBICAgaXMgdXN1YWxseSB0aGUgbGVhZiB3aGVuIHBpY2tlZCwgYnV0IGl0cyBjaGlsZCBpcyBhbHJlYWR5IGJlaW5nIGJ1aWx0LCBzbyB0aGVyZSBpczkBICAgbm8gb3Bwb3J0dW5pdHkgdG8gbGFuZCBpbiB0aGUgbmV4dCByZWxheSBibG9jay4gT2Zmc2V0IDEgaXMgcmVhY2hhYmxlIHVuZGVyVQEgICBzeW5jaHJvbm91cy1iYWNraW5nIHNlbWFudGljcy4gRm9yIGVsYXN0aWMgc2NhbGluZyB0aGUgbGFzdCBibG9jayBpbiB0aGUgYnVuZGxlIGlzNQEgICBidWlsdCBuZWFyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc2xvdCwgd2hpY2ggbWFrZXMgb2Zmc2V0IDEgdG9vIHRpZ2h0IOKAlFUBICAgYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXQgPSAyYCBpcyB0aGUgbWluaW11bSBjYXAgdGhhdCBrZWVwcyBlbGFzdGljIHNjYWxpbmcgdmlhYmxlLgBVASBOb3RlOiB0aGlzIG1ldGhvZCB3YXMgYWRkZWQgaW4gYGFwaV92ZXJzaW9uID0gMmAuIENvbGxhdG9ycyBjYWxsaW5nIG9uIHJ1bnRpbWVzIHRoYXRNASBvbmx5IGltcGxlbWVudCBgYXBpX3ZlcnNpb24gPSAxYCBvZiBbYFJlbGF5UGFyZW50T2Zmc2V0QXBpYF0gd2lsbCByZWNlaXZlIGFuIGVycm9ySQEgYW5kIHNob3VsZCBmYWxsIGJhY2sgdG8gYSBzZW5zaWJsZSBkZWZhdWx0IChjdXJyZW50IGNvbGxhdG9yIGRlZmF1bHRzOiBgMWAgb24gdGhlhCBWMyBwYXRoLCBgMGAgb24gdGhlIFYxL1YyIHBhdGgpLgD4IFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9pc3N1ZXMvODg5Mz4APFEBIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgaG93IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlIGNob3NlbiBhbmQgaG93IGNsYWltIHF1ZXVlYCBvZmZzZXRzIGFyZSBkZXRlcm1pbmVkLgBZASBBIGxhcmdlciByZWxheSBwYXJlbnQgb2Zmc2V0IGluZGljYXRlcyB0aGF0IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIG5vdCBiZSB0aGUgdGlwIG9mUQEgdGhlIHJlbGF5IGNoYWluLCBidXQgYE5gIGJsb2NrcyBiZWhpbmQgdGhlIHRpcC4gVGhpcyBvZmZzZXQgaXMgdGhlbiBlbmZvcmNlZCBieSB0aGUkIHJ1bnRpbWUuAFkBIFRoZSBtYXggY2xhaW0gcXVldWUgb2Zmc2V0IGRldGVybWluZXMgaG93IGZhciAiaW50byB0aGUgZnV0dXJlIiBjb2xsYXRvcnMgdGFyZ2V0IHdoZW5RASBzZWxlY3RpbmcgY29yZXMgZnJvbSB0aGUgY2xhaW0gcXVldWUuIFRoaXMgcHJvdmlkZXMgYXN5bmMgYmFja2luZyBmbGV4aWJpbGl0eSB3aGlsZaggcHJldmVudGluZyBjb2xsYXRvcnMgZnJvbSBza2lwcGluZyBzbG90cy74IFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9pc3N1ZXMvODg5Mz4ARCBWZXJzaW9uIGhpc3Rvcnk69CAtIFZlcnNpb24gMTogSW5pdGlhbCB2ZXJzaW9uIHdpdGggYHJlbGF5X3BhcmVudF9vZmZzZXRgIG9ubHnMIC0gVmVyc2lvbiAyOiBBZGRlZCBgbWF4X2NsYWltX3F1ZXVlX29mZnNldGAgbWV0aG9kCABYU2NoZWR1bGluZ1YzRW5hYmxlZEFwaQRUc2NoZWR1bGluZ192M19lbmFibGVkAFkBBPQgUmV0dXJucyB0cnVlIGlmIFYzIHNjaGVkdWxpbmcgaXMgZW5hYmxlZCBmb3IgdGhpcyBwYXJhY2hhaW4uACTwIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgd2hldGhlciBWMyBzY2hlZHVsaW5nIGlzIGVuYWJsZWQuAOQgV2hlbiBlbmFibGVkLCBjb2xsYXRvcnMgbXVzdCBwcm9kdWNlIFYzIGNhbmRpZGF0ZXMgd2l0aDrkIC0gUGFyYWNoYWluQmxvY2tEYXRhOjpWMiBjb250YWluaW5nIHRoZSBzY2hlZHVsaW5nIHByb29mvCAtIENhbmRpZGF0ZURlc2NyaXB0b3JWMyB3aXRoIHNjaGVkdWxpbmdfcGFyZW50AB0BIFRoaXMgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggcmVsYXkgcGFyZW50IG9mZnNldCAoYnVpbGRpbmcgb24gb2xkZXIdASByZWxheSBwYXJlbnRzKS4gQSBwYXJhY2hhaW4gZW5hYmxlcyBWMyB3aGVuIGl0IHdhbnRzIGxvdy1sYXRlbmN5IGJsb2NrnCBwcm9kdWN0aW9uIHdpdGggdGhlIGR1YWwtcGFyZW50IG1vZGVsLgQAYEF1cmFVbmluY2x1ZGVkU2VnbWVudEFwaQQ4Y2FuX2J1aWxkX3Vwb24INGluY2x1ZGVkX2hhc2g8EHNsb3QhClkBKDkBIFdoZXRoZXIgaXQgaXMgbGVnYWwgdG8gZXh0ZW5kIHRoZSBjaGFpbiwgYXNzdW1pbmcgdGhlIGdpdmVuIGJsb2NrIGlzIHRoZSBtb3N0NQEgcmVjZW50bHkgaW5jbHVkZWQgb25lIGFzLW9mIHRoZSByZWxheSBwYXJlbnQgdGhhdCB3aWxsIGJlIGJ1aWx0IGFnYWluc3QsIGFuZHAgdGhlIGdpdmVuIHJlbGF5IGNoYWluIHNsb3QuAFEBIFRoaXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9naWMgdGhlIHJ1bnRpbWUgdXNlcyB3aGVuIHZhbGlkYXRpbmcgYmxvY2tzIHRvOCBhdm9pZCBpc3N1ZXMuAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBlbXB0eSwgaS5lLiBgaW5jbHVkZWRfaGFzaCA9PSBhdGAsIHdoZXJlIGF0IGlzIHRoZSBibG9ja2EBIHdob3NlIHN0YXRlIHdlIGFyZSBxdWVyeWluZyBhZ2FpbnN0LCB0aGlzIG11c3QgYWx3YXlzIHJldHVybiBgdHJ1ZWAgYXMgbG9uZyBhcyB0aGUgc2xvdLwgaXMgbW9yZSByZWNlbnQgdGhhbiB0aGUgaW5jbHVkZWQgYmxvY2sgaXRzZWxmLgA0NQEgVGhpcyBydW50aW1lIEFQSSBpcyB1c2VkIHRvIGluZm9ybSBwb3RlbnRpYWwgYmxvY2sgYXV0aG9ycyB3aGV0aGVyIHRoZXkgd2lsbCUBIGhhdmUgdGhlIHJpZ2h0IHRvIGF1dGhvciBhdCBhIHNsb3QsIGFzc3VtaW5nIHRoZXkgaGF2ZSBjbGFpbWVkIHRoZSBzbG90LgB1ASBJbiBwYXJ0aWN1bGFyLCB0aGlzIEFQSSBhbGxvd3MgQXVyYS1iYXNlZCBwYXJhY2hhaW5zIHRvIHJlZ3VsYXRlIHRoZWlyICJ1bmluY2x1ZGVkIHNlZ21lbnQiLG0BIHdoaWNoIGlzIHRoZSBzZWN0aW9uIG9mIHRoZSBoZWFkIG9mIHRoZSBjaGFpbiB3aGljaCBoYXMgbm90IHlldCBiZWVuIG1hZGUgYXZhaWxhYmxlIGluIHRoZTQgcmVsYXkgY2hhaW4uAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBzaG9ydCwgQXVyYSBjaGFpbnMgd2lsbCBhbGxvdyBhdXRob3JzIHRvIGNyZWF0ZSBtdWx0aXBsZV0BIGJsb2NrcyBwZXIgc2xvdCBpbiBvcmRlciB0byBidWlsZCBhIGJhY2tsb2cuIFdoZW4gaXQgaXMgc2F0dXJhdGVkLCB0aGlzIEFQSSB3aWxsIGxpbWl0qCB0aGUgYW1vdW50IG9mIGJsb2NrcyB0aGF0IGNhbiBiZSBjcmVhdGVkLgAkIENoYW5nZXM6kQEgLSBWZXJzaW9uIDI6IFVwZGF0ZSB0byBgY2FuX2J1aWxkX3Vwb25gIHRvIHRha2UgYSByZWxheSBjaGFpbiBgU2xvdGAgaW5zdGVhZCBvZiBhIHBhcmFjaGFpbiBgU2xvdGAuCAAQQ29yZQwcdmVyc2lvbgB5CASQIFJldHVybnMgdGhlIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuADRleGVjdXRlX2Jsb2NrBBRibG9ja8ENEARkIEV4ZWN1dGUgdGhlIGdpdmVuIGJsb2NrLgBAaW5pdGlhbGl6ZV9ibG9jawQYaGVhZGVyXM0NBEEBIEluaXRpYWxpemUgYSBibG9jayB3aXRoIHRoZSBnaXZlbiBoZWFkZXIgYW5kIHJldHVybiB0aGUgcnVudGltZSBleGVjdXRpdmUgbW9kZS4ABCEBIFRoZSBgQ29yZWAgcnVudGltZSBhcGkgdGhhdCBldmVyeSBTdWJzdHJhdGUgcnVudGltZSBuZWVkcyB0byBpbXBsZW1lbnQuFAAgTWV0YWRhdGEMIG1ldGFkYXRhANENBIwgUmV0dXJucyB0aGUgbWV0YWRhdGEgb2YgYSBydW50aW1lLgBMbWV0YWRhdGFfYXRfdmVyc2lvbgQcdmVyc2lvbjjVDRCkIFJldHVybnMgdGhlIG1ldGFkYXRhIGF0IGEgZ2l2ZW4gdmVyc2lvbi4ABQEgSWYgdGhlIGdpdmVuIGB2ZXJzaW9uYCBpc24ndCBzdXBwb3J0ZWQsIHRoaXMgd2lsbCByZXR1cm4gYE5vbmVgLnUBIFVzZSBbYFNlbGY6Om1ldGFkYXRhX3ZlcnNpb25zYF0gdG8gZmluZCBvdXQgYWJvdXQgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuAERtZXRhZGF0YV92ZXJzaW9ucwBpBAykIFJldHVybnMgdGhlIHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9ucy4AwCBUaGlzIGNhbiBiZSB1c2VkIHRvIGNhbGwgYG1ldGFkYXRhX2F0X3ZlcnNpb25gLgAEAQEgVGhlIGBNZXRhZGF0YWAgYXBpIHRyYWl0IHRoYXQgcmV0dXJucyBtZXRhZGF0YSBmb3IgdGhlIHJ1bnRpbWUuCABMUnVudGltZVZpZXdGdW5jdGlvbgRUZXhlY3V0ZV92aWV3X2Z1bmN0aW9uCCBxdWVyeV9pZNkNFGlucHV0GN0NBHwgRXhlY3V0ZSBhIHZpZXcgZnVuY3Rpb24gcXVlcnkuAASkIFJ1bnRpbWUgQVBJIGZvciBleGVjdXRpbmcgdmlldyBmdW5jdGlvbnMEADBCbG9ja0J1aWxkZXIQPGFwcGx5X2V4dHJpbnNpYwQkZXh0cmluc2ljlQjlDRBsIEFwcGx5IHRoZSBnaXZlbiBleHRyaW5zaWMuADkBIFJldHVybnMgYW4gaW5jbHVzaW9uIG91dGNvbWUgd2hpY2ggc3BlY2lmaWVzIGlmIHRoaXMgZXh0cmluc2ljIGlzIGluY2x1ZGVkIGluTCB0aGlzIGJsb2NrIG9yIG5vdC4AOGZpbmFsaXplX2Jsb2NrAFwEaCBGaW5pc2ggdGhlIGN1cnJlbnQgYmxvY2suAExpbmhlcmVudF9leHRyaW5zaWNzBCBpbmhlcmVudPUNpQgEPQEgR2VuZXJhdGUgaW5oZXJlbnQgZXh0cmluc2ljcy4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uADxjaGVja19pbmhlcmVudHMIFGJsb2NrwQ0QZGF0YfUNBQ4EVQEgQ2hlY2sgdGhhdCB0aGUgaW5oZXJlbnRzIGFyZSB2YWxpZC4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uAARxASBUaGUgYEJsb2NrQnVpbGRlcmAgYXBpIHRyYWl0IHRoYXQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIGEgYmxvY2suGABYVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZQRQdmFsaWRhdGVfdHJhbnNhY3Rpb24MGHNvdXJjZQkOCHR4lQgoYmxvY2tfaGFzaDwNDiRoIFZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbi4AZQEgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gcG9vbCB0byBsZWFybiBkZXRhaWxzIGFib3V0IGdpdmVuIHRyYW5zYWN0aW9uLkUBIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHRyYW5zYWN0aW9uTQEgYWdhaW5zdCBjdXJyZW50IHN0YXRlLiBUaGUgZ2l2ZW4gYGJsb2NrX2hhc2hgIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIG9mIHRoZSBibG9ja3wgdGhhdCBpcyB1c2VkIGFzIGN1cnJlbnQgc3RhdGUuAEUBIE5vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJlIHBlcmZvcm1lZCBieSB0aGUgcG9vbCBtdWx0aXBsZSB0aW1lcyBhbmQgdHJhbnNhY3Rpb25zpCBtaWdodCBiZSB2ZXJpZmllZCBpbiBhbnkgcG9zc2libGUgb3JkZXIuAARNASBUaGUgYFRhZ2dlZFRyYW5zYWN0aW9uUXVldWVgIGFwaSB0cmFpdCBmb3IgaW50ZXJmZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gcXVldWUuDABET2ZmY2hhaW5Xb3JrZXJBcGkEPG9mZmNoYWluX3dvcmtlcgQYaGVhZGVyXBAEyCBTdGFydHMgdGhlIG9mZi1jaGFpbiB0YXNrIGZvciBnaXZlbiBibG9jayBoZWFkZXIuAARkIFRoZSBvZmZjaGFpbiB3b3JrZXIgYXBpLggALFNlc3Npb25LZXlzCFRnZW5lcmF0ZV9zZXNzaW9uX2tleXMIFG93bmVyGBBzZWVkIQYVDhwVASBHZW5lcmF0ZSBhIHNldCBvZiBzZXNzaW9uIGtleXMgd2l0aCBvcHRpb25hbGx5IHVzaW5nIHRoZSBnaXZlbiBzZWVkLgkBIFRoZSBrZXlzIHNob3VsZCBiZSBzdG9yZWQgd2l0aGluIHRoZSBrZXlzdG9yZSBleHBvc2VkIHZpYSBydW50aW1lPCBleHRlcm5hbGl0aWVzLgCwIFRoZSBzZWVkIG5lZWRzIHRvIGJlIGEgdmFsaWQgYHV0ZjhgIHN0cmluZy4A0CBSZXR1cm5zIHRoZSBjb25jYXRlbmF0ZWQgU0NBTEUgZW5jb2RlZCBwdWJsaWMga2V5cy4ATGRlY29kZV9zZXNzaW9uX2tleXMEHGVuY29kZWQYGQ4MmCBEZWNvZGUgdGhlIGdpdmVuIHB1YmxpYyBzZXNzaW9uIGtleXMuANwgUmV0dXJucyB0aGUgbGlzdCBvZiBwdWJsaWMgcmF3IHB1YmxpYyBrZXlzICsga2V5IHR5cGUuAARoIFNlc3Npb24ga2V5cyBydW50aW1lIGFwaS4IADxBY2NvdW50Tm9uY2VBcGkENGFjY291bnRfbm9uY2UEHGFjY291bnQEOATAIEdldCBjdXJyZW50IGFjY291bnQgbm9uY2Ugb2YgZ2l2ZW4gYEFjY291bnRJZGAuAASAIFRoZSBBUEkgdG8gcXVlcnkgYWNjb3VudCBub25jZS4EAFRUcmFuc2FjdGlvblBheW1lbnRBcGkQKHF1ZXJ5X2luZm8IDHV4dJUIDGxlbjglDgAARHF1ZXJ5X2ZlZV9kZXRhaWxzCAx1eHSVCAxsZW44KQ4AAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHR5AkUBAABMcXVlcnlfbGVuZ3RoX3RvX2ZlZQQYbGVuZ3RoOEUBAAAAEABkVHJhbnNhY3Rpb25QYXltZW50Q2FsbEFwaRA8cXVlcnlfY2FsbF9pbmZvCBBjYWxsIAxsZW44JQ4ESQEgUXVlcnkgaW5mb3JtYXRpb24gb2YgYSBkaXNwYXRjaCBjbGFzcywgd2VpZ2h0LCBhbmQgZmVlIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuAFhxdWVyeV9jYWxsX2ZlZV9kZXRhaWxzCBBjYWxsIAxsZW44KQ4EtCBRdWVyeSBmZWUgZGV0YWlscyBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0eQJFAQQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBXZWlnaHRUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4ATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDhFAQQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBMZW5ndGhUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4AAAwANFhjbVBheW1lbnRBcGkQfHF1ZXJ5X2FjY2VwdGFibGVfcGF5bWVudF9hc3NldHMELHhjbV92ZXJzaW9uODUOFLQgUmV0dXJucyBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBwYXltZW50IGFzc2V0cy4AMCAjIEFyZ3VtZW50cwBoICogYHhjbV92ZXJzaW9uYDogVmVyc2lvbi4AQHF1ZXJ5X3hjbV93ZWlnaHQEHG1lc3NhZ2U5AkEOFKggUmV0dXJucyBhIHdlaWdodCBuZWVkZWQgdG8gZXhlY3V0ZSBhIFhDTS4AMCAjIEFyZ3VtZW50cwB0ICogYG1lc3NhZ2VgOiBgVmVyc2lvbmVkWGNtYC4AZHF1ZXJ5X3dlaWdodF90b19hc3NldF9mZWUIGHdlaWdodHkCFGFzc2V0sQNFDhjoIENvbnZlcnRzIGEgd2VpZ2h0IGludG8gYSBmZWUgZm9yIHRoZSBzcGVjaWZpZWQgYEFzc2V0SWRgLgAwICMgQXJndW1lbnRzAIggKiBgd2VpZ2h0YDogY29udmVydGlibGUgYFdlaWdodGAufCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldElkYC4ATHF1ZXJ5X2RlbGl2ZXJ5X2ZlZXMMLGRlc3RpbmF0aW9u7QEcbWVzc2FnZTkCIGFzc2V0X2lksQNJDihgIFF1ZXJ5IGRlbGl2ZXJ5IGZlZXMgVjIuAB0BIEdldCBkZWxpdmVyeSBmZWVzIGZvciBzZW5kaW5nIGEgc3BlY2lmaWMgYG1lc3NhZ2VgIHRvIGEgYGRlc3RpbmF0aW9uYC70IFRoZXNlIGFsd2F5cyBjb21lIGluIGEgc3BlY2lmaWMgYXNzZXQsIGRlZmluZWQgYnkgdGhlIGNoYWluLgAwICMgQXJndW1lbnRzgQEgKiBgbWVzc2FnZWA6IFRoZSBtZXNzYWdlIHRoYXQnbGwgYmUgc2VudCwgbmVjZXNzYXJ5IGJlY2F1c2UgbW9zdCBkZWxpdmVyeSBmZWVzIGFyZSBiYXNlZCBvbiB0aGVcICAgc2l6ZSBvZiB0aGUgbWVzc2FnZS5hASAqIGBkZXN0aW5hdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0byBzZW5kIHRoZSBtZXNzYWdlIHRvLiBEaWZmZXJlbnQgZGVzdGluYXRpb25zIG1heSB1c2XAICAgZGlmZmVyZW50IHNlbmRlcnMgdGhhdCBjaGFyZ2UgZGlmZmVyZW50IGZlZXMuACxwIEEgdHJhaXQgb2YgWENNIHBheW1lbnQgQVBJLgCoIEFQSSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBvYnRhaW5pbmc6AMQgKiB0aGUgd2VpZ2h0IHJlcXVpcmVkIHRvIGV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UsBQEgKiBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBgQXNzZXRJZGBzIGZvciBtZXNzYWdlIGV4ZWN1dGlvbiBwYXltZW50LAEBICogdGhlIGNvc3Qgb2YgdGhlIHdlaWdodCBpbiB0aGUgc3BlY2lmaWVkIGFjY2VwdGFibGUgYEFzc2V0SWRgLqAgKiB0aGUgZmVlcyBmb3IgYW4gWENNIG1lc3NhZ2UgZGVsaXZlcnkuAPAgVG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRpb24gd2VpZ2h0IG9mIHRoZSBjYWxscyByZXF1aXJlZCBmb3J1ASBbYHhjbTo6bGF0ZXN0OjpJbnN0cnVjdGlvbjo6VHJhbnNhY3RgXSBpbnN0cnVjdGlvbiwgYFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGlgIGNhbiBiZSB1c2VkLggAJERyeVJ1bkFwaQgwZHJ5X3J1bl9jYWxsDBhvcmlnaW7RAxBjYWxsIExyZXN1bHRfeGNtc192ZXJzaW9uOE0OBEQgRHJ5IHJ1biBjYWxsIFYyLgAsZHJ5X3J1bl94Y20IPG9yaWdpbl9sb2NhdGlvbu0BDHhjbYEDeQ4EUCBEcnkgcnVuIFhDTSBwcm9ncmFtACSxASBBUEkgZm9yIGRyeS1ydW5uaW5nIGV4dHJpbnNpY3MgYW5kIFhDTSBwcm9ncmFtcyB0byBnZXQgdGhlIHByb2dyYW1zIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIGZlZXMgQVBJLgCBASBBbGwgY2FsbHMgcmV0dXJuIGEgdmVjdG9yIG9mIHR1cGxlcyAobG9jYXRpb24sIHhjbSkgd2hlcmUgZWFjaCAieGNtIiBpcyBleGVjdXRlZCBpbiAibG9jYXRpb24iLuQgSWYgdGhlcmUncyBsb2NhbCBleGVjdXRpb24sIHRoZSBsb2NhdGlvbiB3aWxsIGJlICJIZXJlIi4dASBUaGlzIHZlY3RvciBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgYm90aCBleGVjdXRpb24gYW5kIGRlbGl2ZXJ5IGZlZXMuAJkBIENhbGxzIG9yIFhDTXMgbWlnaHQgZmFpbCB3aGVuIGV4ZWN1dGVkLCB0aGlzIGRvZXNuJ3QgbWVhbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNhbGxzIHdpbGwgYmUgYW4gYEVycmAuZQEgSW4gdGhvc2UgY2FzZXMsIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgdmFsaWQgcmVzdWx0LCB3aXRoIHRoZSBleGVjdXRpb24gZXJyb3IgaW5zaWRlIGl0LmUBIFRoZSBvbmx5IHJlYXNvbnMgd2h5IHRoZXNlIGNhbGxzIG1pZ2h0IHJldHVybiBhbiBlcnJvciBhcmUgbGlzdGVkIGluIHRoZSBbYEVycm9yYF0gZW51bS4IAFBMb2NhdGlvblRvQWNjb3VudEFwaQRAY29udmVydF9sb2NhdGlvbgQgbG9jYXRpb27tAYEOBJAgQ29udmVydHMgYExvY2F0aW9uYCB0byBgQWNjb3VudElkYC4ABA0BIEFQSSBmb3IgdXNlZnVsIGNvbnZlcnNpb25zIGJldHdlZW4gWENNIGBMb2NhdGlvbmAgYW5kIGBBY2NvdW50SWRgLgQAKE1vYlJ1bGVBcGkEIHZvdGVkX29uCBR2b3RlcggkZG9uZV9vbmx5WQFpBAxZASBSZXR1cm5zIGEgbGlzdCBvZiBjYXNlcyB3aGVyZSB0aGUgdXNlciBoYXMgYSB2b3RlIHN0b3JlZCBvbiBjaGFpbi4gSWYgdGhlIGBkb25lX29ubHlgVQEgZmxhZyBpcyBzZXQsIG9ubHkgY2FzZXMgdGhhdCBhcmUgZG9uZSBhbmQgcmVhZHkgdG8gYmUgY2xhaW1lZCB3aWxsIGJlIHJldHVybmVkLiBUaGlzBQEgZnVuY3Rpb24gZG9lcyBub3QgdGFrZSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHZvdGUgaW50byBhY2NvdW50LgAEtCBUaGUgQVBJIHRvIHF1ZXJ5IHRoZSByZXdhcmRzIGZvciBtb2IgY3JlZGl0LgQANFByb29mT2ZJbmtBcGkERGNhbmRpZGFjeV9kZXBvc2l0AEUBBNQgUmV0dXJucyB0aGUgZGVwb3NpdCBuZWNlc3NhcnkgdG8gYmVjb21lIGEgY2FuZGlkYXRlLgAE7CBUaGUgQVBJIHRvIHF1ZXJ5IHRoZSBkZXBvc2l0IGZvciBhIHByb29mIG9mIGluayBjYW5kaWRhY3kuBAA0UGFsbGV0R2FtZUFwaQQwcGxheV9kZXBvc2l0AEUBBLggUmV0dXJucyB0aGUgZGVwb3NpdCBuZWNlc3NhcnkgdG8gcGxheSBhIGdhbWUuAASsIFRoZSBBUEkgdG8gcXVlcnkgdGhlIGRlcG9zaXQgZm9yIGdhbWVwbGF5LgQANE5mdENyZWRpdHNBcGkMWG5mdF9jbGFpbV9jcmVkaXRfcm9vdHMEIGNsYWltYW50EQWJDhhZASBSZXR1cm5zIHRoZSBORlQgY2xhaW0gY3JlZGl0IHJvb3RzIGBjbGFpbWFudGAgaGFzIGF0IGxlYXN0IG9uZSBjcmVkaXQgdW5kZXIsIGtleWVkIGJ5BQEgdGhlIGJsb2NrIHRoZSBjcmVkaXRzIHdlcmUgYXdhcmRlZCBpbiwgaW4gYXNjZW5kaW5nIGJsb2NrIG9yZGVyLgBdASBBIHdhbGxldCBzdGFydHMgaGVyZSBhbmQgYXNrcyBgbmZ0X2NsYWltX2NyZWRpdF9wcm9vZnNgIGFib3V0IGVhY2ggYmxvY2sgcmV0dXJuZWQuIFRoZUkBIGJsb2NrIGEgY3JlZGl0IHdhcyBhd2FyZGVkIGluIGdldHMgaXRzIHJvb3Qgb25seSBpbiB0aGUgbmV4dCBibG9jaywgc28gdGhlIG5ld2VzdJAgYXdhcmQgYmxvY2sgaXMgbGVmdCBvdXQgdW50aWwgdGhlbi4AXG5mdF9jbGFpbV9jcmVkaXRfcHJvb2ZzCCxhd2FyZF9ibG9jazggY2xhaW1hbnQRBZEOOFEBIFJldHVybnMgdGhlIGluY2x1c2lvbiBwcm9vZiBvZiBlYWNoIGNyZWRpdCBgY2xhaW1hbnRgIHdhcyBhd2FyZGVkIGluIGBhd2FyZF9ibG9ja2AsxCB3aGljaCBpcyB3aGF0IEFzc2V0IEh1YiB2ZXJpZmllcyBhIG1pbnQgYWdhaW5zdC4AYQEgRXZlcnl0aGluZyBjb21lcyBmcm9tIGNoYWluIHN0YXRlLCBzbyBhIGNhbGxlciBuZWVkcyBubyBldmVudCBoaXN0b3J5OiB0aGUgcHJvb2ZzIGNhcnJ5OQEgdGhlIGNyZWRpdCwgaXRzIGxlYWYgaW5kZXggYW5kIHRoZSBzaWJsaW5nIGhhc2hlcy4gRW1wdHkgaWYgdGhlIGJsb2NrIGF3YXJkZWRQIGBjbGFpbWFudGAgbm90aGluZy4AOQEgT25seSBibG9ja3Mgd2hvc2UgYXdhcmRzIGFyZSBzdGlsbCByZXRhaW5lZCBjYW4gYmUgc2VydmVkLiBBbiBvbGRlciBvbmUgZ2l2ZXMBASBgTmZ0Q2xhaW1DcmVkaXRQcm9vZkVycm9yOjpBd2FyZHNQcnVuZWRgLCBhbmQgaGFzIHRvIGdvIHRocm91Z2iYIGBuZnRfY2xhaW1fY3JlZGl0X3Byb29mX2Zyb21fYXdhcmRzYC4AYQEgT25lIGNhbGwgcmVidWlsZHMgdGhlIGJsb2NrJ3MgdHJlZSBvbmNlLCBob3dldmVyIG1hbnkgcHJvb2ZzIGl0IHJldHVybnMsIHNvIHRoZSBjb3N0IGlzTQEgYm91bmRlZCBieSB0aGUgcnVudGltZSdzIGBNYXhDcmVkaXRzUGVyQmxvY2tgLiBBIG5vZGUgc2VydmVzIHRoaXMgdW5tZXRlcmVkLCBzbyBhbikBIG9wZXJhdG9yIGV4cG9zaW5nIGl0IHB1YmxpY2x5IG11c3QgcmF0ZS1saW1pdCBSUEMgYXMgZm9yIGFueSBydW50aW1lIEFQSS4AiG5mdF9jbGFpbV9jcmVkaXRfcHJvb2ZfZnJvbV9hd2FyZHMMLGF3YXJkX2Jsb2NrOBhhd2FyZHMtDChsZWFmX2luZGV4OKUOJEUBIFJldHVybnMgdGhlIGluY2x1c2lvbiBwcm9vZiBvZiB0aGUgY3JlZGl0IGF0IGBsZWFmX2luZGV4YCBvZiBgYXdhcmRfYmxvY2tgLCBmcm9thCBgYXdhcmRzYCBzdXBwbGllZCBieSB0aGUgY2FsbGVyLgBNASBUaGUgZmFsbGJhY2sgZm9yIGEgYmxvY2sgd2hvc2UgYXdhcmRzIGFyZSBubyBsb25nZXIgcmV0YWluZWQ6IGBhd2FyZHNgIGFyZSBhbGwgdGhlUQEgY3JlZGl0cyB0aGUgYmxvY2sgYXdhcmRlZCwgaW4gYXdhcmQgb3JkZXIsIHJlYnVpbHQgZnJvbSBpdHMgYE5mdENsYWltQ3JlZGl0QXdhcmRlZGBZASBldmVudHMuIExlYWYgaGFzaGluZyBhbmQgdGhlIHRyZWUgbGF5b3V0IHN0YXkgaW4gdGhlIHJ1bnRpbWUsIGFuZCB0aGUgcmVjb21wdXRlZCByb290TQEgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZSByZWNvcmRlZCBvbmUsIHNvIGF3YXJkcyB0aGF0IGFyZSBpbmNvbXBsZXRlIG9yIG91dCBvZiBvcmRlclkBIGZhaWwgd2l0aCBgTmZ0Q2xhaW1DcmVkaXRQcm9vZkVycm9yOjpSb290TWlzbWF0Y2hgIHJhdGhlciB0aGFuIHlpZWxkaW5nIGEgcHJvb2YgQXNzZXQ0IEh1YiByZWplY3RzLgAE0CBUaGUgQVBJIGEgd2FsbGV0IG1pbnRzIGFuIE5GVCBjbGFpbSBjcmVkaXQgdGhyb3VnaC4EAFBDb2xsZWN0Q29sbGF0aW9uSW5mbwRYY29sbGVjdF9jb2xsYXRpb25faW5mbwQYaGVhZGVyXKkOEJwgQ29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4A9CBUaGUgZ2l2ZW4gYGhlYWRlcmAgaXMgdGhlIGhlYWRlciBvZiB0aGUgYnVpbHQgYmxvY2sgZm9yIHRoYXSoIHdlIGFyZSBjb2xsZWN0aW5nIHRoZSBjb2xsYXRpb24gaW5mbyBmb3IuABTYIFJ1bnRpbWUgYXBpIHRvIGNvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAEQgVmVyc2lvbiBoaXN0b3J5OgEBIC0gVmVyc2lvbiAyOiBDaGFuZ2VkIFtgU2VsZjo6Y29sbGVjdF9jb2xsYXRpb25faW5mb2BdIHNpZ25hdHVyZTUBIC0gVmVyc2lvbiAzOiBTaWduYWxzIHRvIHRoZSBub2RlIHRvIHVzZSB2ZXJzaW9uIDEgb2YgW2BQYXJhY2hhaW5CbG9ja0RhdGFgXS4MADhHZW5lc2lzQnVpbGRlcgwsYnVpbGRfc3RhdGUEEGpzb24YtQ4oZQEgQnVpbGQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIGEgSlNPTiBibG9iIG5vdCB1c2luZyBhbnkgZGVmYXVsdHMgYW5kIHN0b3JlIGl0IGluIHRoZSQgc3RvcmFnZS4AKQEgSW4gdGhlIGNhc2Ugb2YgYSBGUkFNRS1iYXNlZCBydW50aW1lLCB0aGlzIGZ1bmN0aW9uIGRlc2VyaWFsaXplcyB0aGUgZnVsbFUBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSB0aGUgZ2l2ZW4gSlNPTiBibG9iIGFuZCBwdXRzIGl0IGludG8gdGhlIHN0b3JhZ2UuIElmIHRoZVUBIHByb3ZpZGVkIEpTT04gYmxvYiBpcyBpbmNvcnJlY3Qgb3IgaW5jb21wbGV0ZSBvciB0aGUgZGVzZXJpYWxpemF0aW9uIGZhaWxzLCBhbiBlcnJvcjQgaXMgcmV0dXJuZWQuAF0BIFBsZWFzZSBub3RlIHRoYXQgcHJvdmlkZWQgSlNPTiBibG9iIG11c3QgY29udGFpbiBhbGwgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmaWVsZHMsIG5vXCBkZWZhdWx0cyB3aWxsIGJlIHVzZWQuAChnZXRfcHJlc2V0BAhpZLkOIQY4YQEgUmV0dXJucyBhIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBpZGVudGlmaWVkIGJ5GCBgaWRgLgBVASBJZiBgaWRgIGlzIGBOb25lYCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlZmF1bHRJASBgUnVudGltZUdlbmVzaXNDb25maWdgIHN0cnVjdCBvZiB0aGUgcnVudGltZS4gSW1wbGVtZW50YXRpb24gbXVzdCBwcm92aWRlIGRlZmF1bHRgIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AuACEBIE90aGVyd2lzZSBmdW5jdGlvbiByZXR1cm5zIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4sIG5hbWVkUQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXQgaWRlbnRpZmllZCBieSBgaWRgLCBvciBgTm9uZWAgaWYgc3VjaCBwcmVzZXQgZG9lcyBub3RhASBleGlzdC4gUmV0dXJuZWQgYFZlYzx1OD5gIGNvbnRhaW5zIGJ5dGVzIG9mIEpTT04gYmxvYiAocGF0Y2gpIHdoaWNoIGNvbXByaXNlcyBhIGxpc3Qgb2ZNASAocG90ZW50aWFsbHkgbmVzdGVkKSBrZXktdmFsdWUgcGFpcnMgdGhhdCBhcmUgaW50ZW5kZWQgZm9yIGN1c3RvbWl6aW5nIHRoZSBkZWZhdWx0ZQEgcnVudGltZSBnZW5lc2lzIGNvbmZpZy4gVGhlIHBhdGNoIHNoYWxsIGJlIG1lcmdlZCAocmZjNzM4Nikgd2l0aCB0aGUgSlNPTiByZXByZXNlbnRhdGlvbmEBIG9mIHRoZSBkZWZhdWx0IGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgdG8gY3JlYXRlIGEgY29tcHJlaGVuc2l2ZSBnZW5lc2lzIGNvbmZpZyB0aGF0IGNhboQgYmUgdXNlZCBpbiBgYnVpbGRfc3RhdGVgIG1ldGhvZC4AMHByZXNldF9uYW1lcwC9DhBRASBSZXR1cm5zIGEgbGlzdCBvZiBpZGVudGlmaWVycyBmb3IgYXZhaWxhYmxlIGJ1aWx0aW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXRzLgBhASBUaGUgcHJlc2V0cyBmcm9tIHRoZSBsaXN0IGNhbiBiZSBxdWVyaWVkIHdpdGggW2BHZW5lc2lzQnVpbGRlcjo6Z2V0X3ByZXNldGBdIG1ldGhvZC4gSWYBASBubyBuYW1lZCBwcmVzZXRzIGFyZSBwcm92aWRlZCBieSB0aGUgcnVudGltZSB0aGUgbGlzdCBpcyBlbXB0eS4ABPAgQVBJIHRvIGludGVyYWN0IHdpdGggYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmb3IgdGhlIHJ1bnRpbWUEACDdBsEOAA==";
2
+
3
+ export { binMeta as default };